package Ġcom . ad ri en ben . tools . gl tf Ċ Ċ import Ġcom . ad ri en ben . tools . gl tf . models . Accessor Raw Ċ import Ġcom . ad ri en ben . tools . gl tf . models . Animation Raw Ċ import Ġcom . ad ri en ben . tools . gl tf . models . Animation Sampler Raw Ċ import Ġcom . ad ri en ben . tools . gl tf . models . Animation Target Raw Ċ import Ġcom . ad ri en ben . tools . gl tf . models . Asset Raw Ċ import Ġcom . ad ri en ben . tools . gl tf . models . Buffer Raw Ċ import Ġcom . ad ri en ben . tools . gl tf . models . Buffer View Raw Ċ import Ġcom . ad ri en ben . tools . gl tf . models . Camera Raw Ċ import Ġcom . ad ri en ben . tools . gl tf . models . Channel Raw Ċ import Ġcom . ad ri en ben . tools . gl tf . models . G lt f Accessor Ċ import Ġcom . ad ri en ben . tools . gl tf . models . G lt f Alpha Mode Ċ import Ġcom . ad ri en ben . tools . gl tf . models . G lt f Animation Ċ import Ġcom . ad ri en ben . tools . gl tf . models . G lt f Animation Sampler Ċ import Ġcom . ad ri en ben . tools . gl tf . models . G lt f Animation Target Ċ import Ġcom . ad ri en ben . tools . gl tf . models . G lt f Animation Target Path Ċ import Ġcom . ad ri en ben . tools . gl tf . models . G lt f Asset Ċ import Ġcom . ad ri en ben . tools . gl tf . models . G lt f Asset Raw Ċ import Ġcom . ad ri en ben . tools . gl tf . models . G lt f Buffer Ċ import Ġcom . ad ri en ben . tools . gl tf . models . G lt f Buffer Target Ċ import Ġcom . ad ri en ben . tools . gl tf . models . G lt f Buffer View Ċ import Ġcom . ad ri en ben . tools . gl tf . models . G lt f Camera Ċ import Ġcom . ad ri en ben . tools . gl tf . models . G lt f Camera Type Ċ import Ġcom . ad ri en ben . tools . gl tf . models . G lt f Channel Ċ import Ġcom . ad ri en ben . tools . gl tf . models . G lt f Color Ċ import Ġcom . ad ri en ben . tools . gl tf . models . G lt f ComponentType Ċ import Ġcom . ad ri en ben . tools . gl tf . models . G lt f Filter Ċ import Ġcom . ad ri en ben . tools . gl tf . models . G lt f Image Ċ import Ġcom . ad ri en ben . tools . gl tf . models . G lt f Indices Ċ import Ġcom . ad ri en ben . tools . gl tf . models . G lt f Interpolation Type Ċ import Ġcom . ad ri en ben . tools . gl tf . models . G lt f Mat 4 Ċ import Ġcom . ad ri en ben . tools . gl tf . models . G lt f Material Ċ import Ġcom . ad ri en ben . tools . gl tf . models . G lt f Mesh Ċ import Ġcom . ad ri en ben . tools . gl tf . models . G lt f Metadata Ċ import Ġcom . ad ri en ben . tools . gl tf . models . G lt f MimeType Ċ import Ġcom . ad ri en ben . tools . gl tf . models . G lt f Node Ċ import Ġcom . ad ri en ben . tools . gl tf . models . G lt f Normal Texture Info Ċ import Ġcom . ad ri en ben . tools . gl tf . models . G lt f Oc clusion Texture Info Ċ import Ġcom . ad ri en ben . tools . gl tf . models . G lt f Or tho graphic Ċ import Ġcom . ad ri en ben . tools . gl tf . models . G lt f P br Metal lic R ough ness Ċ import Ġcom . ad ri en ben . tools . gl tf . models . G lt f Perspective Ċ import Ġcom . ad ri en ben . tools . gl tf . models . G lt f Primitive Ċ import Ġcom . ad ri en ben . tools . gl tf . models . G lt f Primitive Mode Ċ import Ġcom . ad ri en ben . tools . gl tf . models . G lt f Quaternion Ċ import Ġcom . ad ri en ben . tools . gl tf . models . G lt f Raw Ċ import Ġcom . ad ri en ben . tools . gl tf . models . G lt f Sampler Ċ import Ġcom . ad ri en ben . tools . gl tf . models . G lt f Scene Ċ import Ġcom . ad ri en ben . tools . gl tf . models . G lt f Skin Ċ import Ġcom . ad ri en ben . tools . gl tf . models . G lt f Sparse Ċ import Ġcom . ad ri en ben . tools . gl tf . models . G lt f Texture Ċ import Ġcom . ad ri en ben . tools . gl tf . models . G lt f Texture Info Ċ import Ġcom . ad ri en ben . tools . gl tf . models . G lt f Type Ċ import Ġcom . ad ri en ben . tools . gl tf . models . G lt f Values Ċ import Ġcom . ad ri en ben . tools . gl tf . models . G lt f Vec 3 Ċ import Ġcom . ad ri en ben . tools . gl tf . models . G lt f Wrap Mode Ċ import Ġcom . ad ri en ben . tools . gl tf . models . Image Raw Ċ import Ġcom . ad ri en ben . tools . gl tf . models . Indices Raw Ċ import Ġcom . ad ri en ben . tools . gl tf . models . Material Raw Ċ import Ġcom . ad ri en ben . tools . gl tf . models . Mesh Raw Ċ import Ġcom . ad ri en ben . tools . gl tf . models . Node Raw Ċ import Ġcom . ad ri en ben . tools . gl tf . models . Normal Texture Info Raw Ċ import Ġcom . ad ri en ben . tools . gl tf . models . Oc clusion Texture Info Raw Ċ import Ġcom . ad ri en ben . tools . gl tf . models . Or tho graphic Raw Ċ import Ġcom . ad ri en ben . tools . gl tf . models . P br Metal lic R ough ness Raw Ċ import Ġcom . ad ri en ben . tools . gl tf . models . Perspective Raw Ċ import Ġcom . ad ri en ben . tools . gl tf . models . Primitive Raw Ċ import Ġcom . ad ri en ben . tools . gl tf . models . Sampler Raw Ċ import Ġcom . ad ri en ben . tools . gl tf . models . Scene Raw Ċ import Ġcom . ad ri en ben . tools . gl tf . models . Skin Raw Ċ import Ġcom . ad ri en ben . tools . gl tf . models . Sparse Raw Ċ import Ġcom . ad ri en ben . tools . gl tf . models . Texture Info Raw Ċ import Ġcom . ad ri en ben . tools . gl tf . models . Texture Raw Ċ import Ġcom . ad ri en ben . tools . gl tf . models . Values Raw Ċ Ċ /** Ċ Ġ* Ġ[ G lt f Asset ] Ġmapper . Ċ Ġ* Ċ Ġ* ĠOn Ġmapper Ġmust Ġbe Ġcreated Ġfor Ġeach Ġasset Ġto Ġmap . ĠEach Ġcall Ġto Ċ Ġ* Ġ[ Mapper . map ] Ġwill Ġgenerate Ġa Ġnew Ġmapped Ġinstance . Ċ Ġ*/ Ċ internal Ġclass ĠMapper ( private Ġval Ġg lt f Raw : ĠG lt f Raw ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġasset Ġ= Ġg lt f Raw . gl tf Asset Raw ĊĊĠĠĠ Ġprivate Ġval Ġbuffers : ĠList < G lt f Buffer > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġasset . buffers ?. map Indexed Ġ{ Ġindex , Ġbuffer Ġ-> Ġbuffer . map ( index , Ġg lt f Raw ) Ġ} Ġ?: Ġempty List () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġbuffer Views : ĠList < G lt f Buffer View > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġasset . buffer Views ?. map Indexed Ġ{ Ġindex , Ġview Ġ-> Ġview . map ( index , Ġbuffers ) Ġ} Ġ?: Ġempty List () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġaccessors : ĠList < G lt f Accessor > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġasset . access ors ?. map Indexed Ġ{ Ġindex , Ġaccessor Ġ-> Ġaccessor . map ( index , Ġbuffer Views ) Ġ} Ġ?: Ġempty List () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġsamp lers : ĠList < G lt f Sampler > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġasset . samp lers ?. map Indexed Ġ{ Ġindex , Ġsampler Ġ-> Ġsampler . map ( index ) Ġ} Ġ?: Ġempty List () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġimages : ĠList < G lt f Image > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġasset . images ?. map Indexed Ġ{ Ġindex , Ġimage Ġ-> Ġimage . map ( index , Ġbuffer Views ) Ġ} Ġ?: Ġempty List () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġtextures : ĠList < G lt f Texture > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġasset . textures ?. map Indexed Ġ{ Ġindex , Ġtexture Ġ-> Ġtexture . map ( index , Ġsamp lers , Ġimages ) Ġ} Ġ?: Ġempty List () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġmaterials : ĠList < G lt f Material > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġasset . materials ?. map Indexed Ġ{ Ġindex , Ġmaterial Ġ-> Ġmaterial . map ( index , Ġtextures ) Ġ} Ġ?: Ġempty List () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġmeshes : ĠList < G lt f Mesh > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġasset . meshes ?. map Indexed Ġ{ Ġindex , Ġmesh Ġ-> Ġmesh . map ( index , Ġaccessors , Ġmaterials ) Ġ} Ġ?: Ġempty List () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġcameras : ĠList < G lt f Camera > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġasset . cam eras ?. map Indexed Ġ{ Ġindex , Ġcamera Ġ-> Ġcamera . map ( index ) Ġ} Ġ?: Ġempty List () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġnodes : ĠList < G lt f Node > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠArray < G lt f Node ? >( asset . nodes ?. size Ġ?: Ġ 0 ) Ġ{ Ġnull Ġ}. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġasset . nodes ?. forEach Indexed Ġ{ Ġindex , Ġnode Raw Ġ-> Ġnode Raw . map ( index , Ġasset , Ġit , Ġcameras , Ġmeshes ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . require No Null s (). asList () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġsk ins : ĠList < G lt f Skin > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġasset . sk ins ?. map Indexed Ġ{ Ġindex , Ġskin Ġ-> Ġskin . map ( index , Ġaccessors , Ġnodes ) Ġ} Ġ?: Ġempty List () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMap Ġthe Ġasset . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġmap (): ĠG lt f Asset Ġ{ ĊĠĠĠĠĠĠĠ Ġasset . nodes ?. forEach Indexed Ġ{ Ġindex , Ġnode Raw Ġ-> Ġnodes [ index ]. skin Ġ= Ġnode Raw . skin ?. let Ġ{ Ġsk ins [ it ] Ġ} Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġanimations Ġ= Ġasset . animations ?. map Ġ{ Ġit . map ( access ors , Ġnodes ) Ġ} Ġ?: Ġempty List () ĊĠĠĠĠĠĠĠ Ġval Ġscenes Ġ= Ġasset . scenes ?. map Indexed Ġ{ Ġindex , Ġscene Ġ-> Ġscene . map ( index , Ġnodes ) Ġ} Ġ?: Ġempty List () ĊĊĠĠĠĠĠĠĠ Ġreturn ĠG lt f Asset ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġasset Ġ= Ġasset . asset . map (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġextensions Used Ġ= Ġasset . extensions Used ?. toList (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġextensions Required Ġ= Ġasset . extensions Required ?. toList (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġextensions Ġ= Ġasset . extensions ?. toMap () Ġ?: Ġempty Map (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffers Ġ= Ġbuffers , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer Views Ġ= Ġbuffer Views , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaccessors Ġ= Ġaccessors , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsamp lers Ġ= Ġsamp lers , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimages Ġ= Ġimages , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtextures Ġ= Ġtextures , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmaterials Ġ= Ġmaterials , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmeshes Ġ= Ġmeshes , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcameras Ġ= Ġcameras , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnodes Ġ= Ġnodes , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġskin Ġ= Ġsk ins , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanimations Ġ= Ġanimations , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscenes Ġ= Ġscenes , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscene Ġ= Ġasset . scene ?. let ( scenes :: get ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun ĠAsset Raw . map () Ġ= ĠG lt f Metadata ( ĊĠĠĠ Ġcopyright , ĊĠĠĠ Ġgenerator , ĊĠĠĠ Ġversion , ĊĠĠĠ Ġmin Version Ċ ) Ċ Ċ private Ġfun ĠBuffer Raw . map ( index : ĠInt , Ġg lt f Raw : ĠG lt f Raw ): ĠG lt f Buffer Ġ{ ĊĠĠĠ Ġreturn ĠG lt f Buffer ( index , Ġuri , Ġbyte Length , Ġg lt f Raw . data [ index ], Ġname ) Ċ } Ċ Ċ private Ġfun ĠBuffer View Raw . map ( index : ĠInt , Ġbuffers : ĠList < G lt f Buffer >) Ġ= ĠG lt f Buffer View ( ĊĠĠĠ Ġindex , ĊĠĠĠ Ġbuffers [ buffer ], ĊĠĠĠ Ġbyte Offset Ġ?: Ġ 0 , ĊĠĠĠ Ġbyte Length , ĊĠĠĠ Ġbyte Stride , ĊĠĠĠ Ġtarget ?. let ( G lt f Buffer Target . Factory :: from Code ), ĊĠĠĠ Ġname Ċ ) Ċ Ċ private Ġfun ĠInd ices Raw . map ( buffer Views : ĠList < G lt f Buffer View >) Ġ= ĠG lt f Indices ( ĊĠĠĠ Ġbuffer Views [ buffer View ], ĊĠĠĠ Ġbyte Offset Ġ?: Ġ 0 , ĊĠĠĠ ĠG lt f ComponentType . from Code ( component Type ) Ċ ) Ċ Ċ private Ġfun ĠValues Raw . map ( buffer Views : ĠList < G lt f Buffer View >) Ġ= ĠG lt f Values ( ĊĠĠĠ Ġbuffer Views [ buffer View ], ĊĠĠĠ Ġbyte Offset ĊĠĠĠĠĠĠĠ Ġ?: Ġ 0 Ċ ) Ċ Ċ private Ġfun ĠSparse Raw . map ( buffer Views : ĠList < G lt f Buffer View >) Ġ= ĠG lt f Sparse ( count , Ġindices . map ( buffer Views ), Ġvalues . map ( buffer Views )) Ċ Ċ private Ġfun ĠAccess or Raw . map ( index : ĠInt , Ġbuffer Views : ĠList < G lt f Buffer View >) Ġ= ĠG lt f Accessor ( ĊĠĠĠ Ġindex , ĊĠĠĠ Ġbuffer View ?. let ( buffer Views :: get ), ĊĠĠĠ Ġbyte Offset Ġ?: Ġ 0 , ĊĠĠĠ ĠG lt f ComponentType . from Code ( component Type ), ĊĠĠĠ Ġnormalized Ġ?: Ġfalse , ĊĠĠĠ Ġcount , ĊĠĠĠ ĠG lt f Type . from Code ( type ), ĊĠĠĠ Ġmax ?. map ( Number :: toFloat ), ĊĠĠĠ Ġmin ?. map ( Number :: toFloat ), ĊĠĠĠ Ġsparse ?. map ( buffer Views ), ĊĠĠĠ Ġname Ċ ) Ċ Ċ private Ġfun ĠSampler Raw . map ( index : ĠInt ) Ġ= ĠG lt f Sampler ( ĊĠĠĠ Ġindex , ĊĠĠĠ Ġmag Filter ?. let ( G lt f Filter . Factory :: from Code ), ĊĠĠĠ Ġmin Filter ?. let ( G lt f Filter . Factory :: from Code ), ĊĠĠĠ Ġwrap S ?. let ( G lt f Wrap Mode . Factory :: from Code ) Ġ?: ĠG lt f Wrap Mode . REPEAT , ĊĠĠĠ Ġwrap T ?. let ( G lt f Wrap Mode . Factory :: from Code ) Ġ?: ĠG lt f Wrap Mode . REPEAT , ĊĠĠĠ Ġname Ċ ) Ċ Ċ private Ġfun ĠImage Raw . map ( index : ĠInt , Ġbuffer Views : ĠList < G lt f Buffer View >) Ġ= ĠG lt f Image ( ĊĠĠĠ Ġindex , ĊĠĠĠ Ġuri , ĊĠĠĠ Ġuri ?. decode Data Uri (), ĊĠĠĠ ĠmimeType ?. let ( G lt f MimeType . Factory :: from Code ), ĊĠĠĠ Ġbuffer View ?. let ( buffer Views :: get ), ĊĠĠĠ Ġname Ċ ) Ċ Ċ private Ġfun ĠTexture Raw . map ( index : ĠInt , Ġsamp lers : ĠList < G lt f Sampler >, Ġimages : ĠList < G lt f Image >) Ġ= ĠG lt f Texture ( ĊĠĠĠ Ġindex , ĊĠĠĠ Ġsampler ?. let ( samp lers :: get ) Ġ?: ĠG lt f Sampler (- 1 ), ĊĠĠĠ Ġsource ?. let ( images :: get ), ĊĠĠĠ Ġname Ċ ) Ċ Ċ private Ġfun ĠTexture Info Raw . map ( textures : ĠList < G lt f Texture >) Ġ= ĠG lt f Texture Info ( ĊĠĠĠ Ġtextures [ index ], ĊĠĠĠ Ġtex Coord ĊĠĠĠĠĠĠĠ Ġ?: Ġ 0 Ċ ) Ċ Ċ private Ġfun ĠNormal Texture Info Raw . map ( textures : ĠList < G lt f Texture >) Ġ= ĠG lt f Normal Texture Info ( ĊĠĠĠ Ġtextures [ index ], ĊĠĠĠ Ġtex Coord Ġ?: Ġ 0 , ĊĠĠĠ Ġscale ?. let ( Number :: toFloat ) Ġ?: Ġ 1 f Ċ ) Ċ Ċ private Ġfun ĠO c clusion Texture Info Raw . map ( textures : ĠList < G lt f Texture >) Ġ= ĠG lt f Oc clusion Texture Info ( ĊĠĠĠ Ġtextures [ index ], ĊĠĠĠ Ġtex Coord Ġ?: Ġ 0 , ĊĠĠĠ Ġstrength ?. let ( Number :: toFloat ) Ġ?: Ġ 1 f Ċ ) Ċ Ċ private Ġfun ĠP br Metal lic R ough ness Raw . map ( textures : ĠList < G lt f Texture >) Ġ= ĠG lt f P br Metal lic R ough ness ( ĊĠĠĠ Ġbase Color Factor ?. let ( G lt f Color . Factory :: from Numbers ) Ġ?: ĠG lt f Color (), ĊĠĠĠ Ġbase Color Texture ?. map ( textures ), ĊĠĠĠ Ġmetal lic Factor ?. let ( Number :: toFloat ) Ġ?: Ġ 1 f , ĊĠĠĠ Ġrough ness Factor ?. let ( Number :: toFloat ) Ġ?: Ġ 1 f , ĊĠĠĠ Ġmetal lic R ough ness Texture ?. map ( textures ) Ċ ) Ċ Ċ private Ġfun ĠMaterial Raw . map ( index : ĠInt , Ġtextures : ĠList < G lt f Texture >) Ġ= ĠG lt f Material ( ĊĠĠĠ Ġindex , ĊĠĠĠ Ġp br Metal lic R ough ness ?. map ( textures ) Ġ?: ĠG lt f P br Metal lic R ough ness (), ĊĠĠĠ Ġnormal Texture ?. map ( textures ), ĊĠĠĠ Ġoc clusion Texture ?. map ( textures ), ĊĠĠĠ Ġem iss ive Texture ?. map ( textures ), ĊĠĠĠ Ġem iss ive Factor ?. let ( G lt f Color . Factory :: from Numbers ) Ġ?: ĠG lt f Color ( 0 f , Ġ 0 f , Ġ 0 f ), ĊĠĠĠ Ġalpha Mode ?. let ( G lt f Alpha Mode . Factory :: from Code ) Ġ?: ĠG lt f Alpha Mode . OP A QUE , ĊĠĠĠ Ġalpha Cutoff ?. let ( Number :: toFloat ) Ġ?: Ġ 0 . 5 f , ĊĠĠĠ Ġdouble Side d Ġ?: Ġfalse , ĊĠĠĠ Ġname Ċ ) Ċ Ċ private Ġfun ĠPrimitive Raw . map ( access ors : ĠList < G lt f Accessor >, Ġmaterials : ĠList < G lt f Material >) Ġ= ĠG lt f Primitive ( ĊĠĠĠ Ġattributes . map Values Ġ{ Ġ(_, Ġaccessor Id ) Ġ-> Ġaccessors [ accessor Id ] Ġ}, ĊĠĠĠ Ġindices ?. let ( access ors :: get ), ĊĠĠĠ Ġmaterial ?. let ( materials :: get ) Ġ?: ĠG lt f Material (- 1 ), ĊĠĠĠ Ġmode ?. let ( G lt f Primitive Mode . Factory :: from Code ) Ġ?: ĠG lt f Primitive Mode . TRI ANG LES , ĊĠĠĠ Ġtargets ?. map Ġ{ Ġit . map Values Ġ{ Ġ(_, Ġaccessor Id ) Ġ-> Ġaccessors [ accessor Id ] Ġ} Ġ} Ċ ) Ċ Ċ private Ġfun ĠMesh Raw . map ( index : ĠInt , Ġaccessors : ĠList < G lt f Accessor >, Ġmaterials : ĠList < G lt f Material >) Ġ= ĠG lt f Mesh ( ĊĠĠĠ Ġindex , ĊĠĠĠ Ġprimitives . map Ġ{ Ġit . map ( access ors , Ġmaterials ) Ġ}, ĊĠĠĠ Ġweights ?. map ( Number :: toFloat ), ĊĠĠĠ Ġname Ċ ) Ċ Ċ private Ġfun ĠOr tho graphic Raw . map () Ġ= ĠG lt f Or tho graphic ( ĊĠĠĠ Ġx mag . toFloat (), ĊĠĠĠ Ġy mag . toFloat (), ĊĠĠĠ Ġz far . toFloat (), ĊĠĠĠ Ġz near . toFloat () Ċ ) Ċ Ċ private Ġfun ĠPers pective Raw . map () Ġ= ĠG lt f Perspective ( ĊĠĠĠ Ġaspect Ratio ?. toFloat (), ĊĠĠĠ Ġy fo v . toFloat (), ĊĠĠĠ Ġz far ?. toFloat (), ĊĠĠĠ Ġz near . toFloat () Ċ ) Ċ Ċ private Ġfun ĠCamera Raw . map ( index : ĠInt ) Ġ= ĠG lt f Camera ( ĊĠĠĠ Ġindex , ĊĠĠĠ Ġor tho graphic ?. map (), ĊĠĠĠ Ġperspective ?. map (), ĊĠĠĠ ĠG lt f Camera Type . from Code ( type ), ĊĠĠĠ Ġname Ċ ) Ċ Ċ /** Ċ Ġ* ĠMap Ġa Ġnode Ċ Ġ* Ċ Ġ* ĠIf Ġthe Ġnode Ġhas Ġun mapped Ġchildren , Ġit Ġmaps Ġthem Ġfirst Ċ Ġ*/ Ċ private Ġfun ĠNode Raw . map ( index : ĠInt , Ġasset Raw : ĠG lt f Asset Raw , Ġnodes : ĠArray < G lt f Node ? >, Ġcameras : ĠList < G lt f Camera >, Ġmeshes : ĠList < G lt f Mesh >) Ġ{ ĊĠĠĠ Ġif Ġ( nodes [ index ] Ġ!= Ġnull ) Ġreturn ĊĊĠĠĠ Ġval Ġshould Map Children Ġ= Ġchildren ?. any Ġ{ Ġnodes [ it ] Ġ== Ġnull Ġ} Ġ?: Ġfalse ĊĠĠĠ Ġif Ġ( should Map Children ) Ġ{ ĊĠĠĠĠĠĠĠ Ġchildren ?. map NotNull Ġ{ ĠPair ( it , Ġasset Raw . nodes ?. get ( it ) Ġ?: Ġreturn @ map NotNull Ġnull ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . forEach Ġ{ Ġ( index , Ġchild ) Ġ-> Ġchild . map ( index , Ġasset Raw , Ġnodes , Ġcameras , Ġmeshes ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( nodes [ index ] Ġ== Ġnull ) Ġnodes [ index ] Ġ= Ġthis . map ( index , Ġnodes , Ġcameras , Ġmeshes ) Ċ } Ċ Ċ private Ġfun ĠNode Raw . map ( index : ĠInt , Ġnodes : ĠArray < G lt f Node ? >, Ġcameras : ĠList < G lt f Camera >, Ġmeshes : ĠList < G lt f Mesh >): ĠG lt f Node Ġ{ ĊĠĠĠ Ġval Ġmat Ġ= Ġmatrix ?. let ( G lt f Mat 4 . Factory :: from Numbers ) ĊĊĠĠĠ Ġreturn ĠG lt f Node ( ĊĠĠĠĠĠĠĠ Ġindex Ġ= Ġindex , ĊĠĠĠĠĠĠĠ Ġcamera Ġ= Ġcamera ?. let ( cam eras :: get ), ĊĠĠĠĠĠĠĠ Ġchildren Ġ= Ġchildren ?. map ( nodes :: get )?. require No Null s (), ĊĠĠĠĠĠĠĠ Ġmatrix Ġ= Ġmat Ġ?: ĠG lt f Mat 4 (), ĊĠĠĠĠĠĠĠ Ġmesh Ġ= Ġmesh ?. let ( meshes :: get ), ĊĠĠĠĠĠĠĠ Ġrotation Ġ= Ġmat ?. let ( G lt f Mat 4 :: rotation ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġrotation ?. let ( G lt f Quaternion . Factory :: from Numbers ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠG lt f Quaternion (), ĊĠĠĠĠĠĠĠ Ġscale Ġ= Ġmat ?. let ( G lt f Mat 4 :: scale ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġscale ?. let ( G lt f Vec 3 . Factory :: from Numbers ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠG lt f Vec 3 ( 1 f , Ġ 1 f , Ġ 1 f ), ĊĠĠĠĠĠĠĠ Ġtranslation Ġ= Ġmat ?. let ( G lt f Mat 4 :: translation ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġtranslation ?. let ( G lt f Vec 3 . Factory :: from Numbers ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠG lt f Vec 3 (), ĊĠĠĠĠĠĠĠ Ġweights Ġ= Ġweights ?. map ( Number :: toFloat ), ĊĠĠĠĠĠĠĠ Ġname Ġ= Ġname , ĊĠĠĠĠĠĠĠ Ġextensions Ġ= Ġextensions ĊĠĠĠ Ġ) Ċ } Ċ Ċ private Ġfun ĠSk in Raw . map ( index : ĠInt , Ġaccessors : ĠList < G lt f Accessor >, Ġnodes : ĠList < G lt f Node >) Ġ= ĠG lt f Skin ( ĊĠĠĠ Ġindex , ĊĠĠĠ Ġinverse Bind Mat rices ?. let ( access ors :: get ), ĊĠĠĠ Ġskeleton ?. let ( nodes :: get ), ĊĠĠĠ Ġjoint s . map ( nodes :: get ). require No Null s (), ĊĠĠĠ Ġname Ċ ) Ċ Ċ private Ġfun ĠAnimation Sampler Raw . map ( access ors : ĠList < G lt f Accessor >) Ġ= ĠG lt f Animation Sampler ( ĊĠĠĠ Ġaccessors [ input ], ĊĠĠĠ Ġinterpolation ?. let ( G lt f Interpolation Type . Factory :: from Code ) Ġ?: ĠG lt f Interpolation Type . LINEAR , ĊĠĠĠ Ġaccessors [ output ] Ċ ) Ċ Ċ private Ġfun ĠAnimation Target Raw . map ( nodes : ĠList < G lt f Node >) Ġ= ĠG lt f Animation Target ( ĊĠĠĠ Ġnode ?. let ( nodes :: get ), ĊĠĠĠ ĠG lt f Animation Target Path . from Code ( path ) Ċ ) Ċ Ċ private Ġfun ĠChannel Raw . map ( samp lers : ĠList < G lt f Animation Sampler >, Ġnodes : ĠList < G lt f Node >) Ġ= ĠG lt f Channel ( ĊĠĠĠ Ġsamp lers [ sampler ], ĊĠĠĠ Ġtarget . map ( nodes ) Ċ ) Ċ Ċ private Ġfun ĠAnimation Raw . map ( access ors : ĠList < G lt f Accessor >, Ġnodes : ĠList < G lt f Node >): ĠG lt f Animation Ġ{ ĊĠĠĠ Ġval Ġsamp lers Ġ= Ġsamp lers . map Ġ{ Ġit . map ( access ors ) Ġ} ĊĠĠĠ Ġreturn ĠG lt f Animation ( channels . map Ġ{ Ġit . map ( samp lers , Ġnodes ) Ġ}, Ġsamp lers , Ġname ) Ċ } Ċ Ċ private Ġfun ĠScene Raw . map ( index : ĠInt , Ġg lt f Nodes : ĠList < G lt f Node >) Ġ= ĠG lt f Scene ( ĊĠĠĠ Ġindex , ĊĠĠĠ Ġnodes ?. map ( gl tf Nodes :: get ), ĊĠĠĠ Ġname Ċ ) Ċ