package Ġc ga . exercise . game . game Objects Ċ Ċ import Ġc ga . exercise . components . geometry .* Ċ import Ġc ga . exercise . components . material . Material Ċ import Ġc ga . exercise . components . texture . Texture 2 D Ċ import Ġc ga . framework . OBJ Loader Ċ import Ġorg . j om l . Vector 2 f Ċ import Ġorg . lwjgl . opengl . GL 3 3 .* Ċ Ċ /** Ċ Ġ* ĠClass Ġthat Ġloads Ġthis Ġspecific ĠFile ĠFormat : Ċ Ġ* Ġname Ċ Ġ* Ġ Ġ- Ġmesh . obj Ċ Ġ* Ġ Ġ- Ġdiff . png Ċ Ġ* Ġ Ġ- Ġemit . png Ċ Ġ* Ġ Ġ- Ġspec . png Ċ Ġ*/ Ċ open Ġclass ĠCustom Model ( ĊĠĠĠ Ġname : ĠString Ċ Ġ) Ġ{ ĊĠĠĠ Ġval Ġobj Path Ġ= Ġ" assets / models /$ name / mesh . obj " ĊĠĠĠ Ġval Ġemit Path Ġ= Ġ" assets / models /$ name / emit . png " ĊĠĠĠ Ġval Ġdiff Path Ġ= Ġ" assets / models /$ name / diff . png " ĊĠĠĠ Ġval Ġspec Path Ġ= Ġ" assets / models /$ name / spec . png " ĊĠĠĠ Ġopen Ġval Ġrender able : ĠRender able Ġ= Ġload Render able ( obj Path , Ġemit Path , Ġdiff Path , Ġspec Path ) ĊĊĠĠĠ Ġfun Ġload Render able ( obj Path : String , Ġemit Path : ĠString , Ġdiff Path : ĠString , Ġspec Path : ĠString ): ĠRender able Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġground OBJ Ġ= ĠOBJ Loader . load OBJ ( obj Path ) ĊĊĠĠĠĠĠĠĠ Ġval Ġground OBJ Mesh Ġ= Ġground OBJ . objects . first (). meshes . first () ĊĊĠĠĠĠĠĠĠ Ġval Ġemit Ġ= ĠTexture 2 D . invoke ( emit Path , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġemit . set Tex Params ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGL _ REPEAT , ĠGL _ REPEAT , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGL _ LINEAR _ MIP MAP _ LINEAR , ĠGL _ LINEAR , ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġdiff Ġ= ĠTexture 2 D . invoke ( diff Path , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġdiff . set Tex Params ( GL _ REPEAT , ĠGL _ REPEAT , ĠGL _ LINEAR _ MIP MAP _ LINEAR , ĠGL _ LINEAR ) ĊĠĠĠĠĠĠĠ Ġval Ġspec Ġ= ĠTexture 2 D . invoke ( spec Path , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġspec . set Tex Params ( GL _ REPEAT , ĠGL _ REPEAT , ĠGL _ LINEAR _ MIP MAP _ LINEAR , ĠGL _ LINEAR ) ĊĠĠĠĠĠĠĠ Ġval Ġmaterial Ġ= ĠMaterial ( diff , Ġemit , Ġspec , Ġtc Multiplier Ġ= ĠVector 2 f ( 6 4 f )) ĊĊĠĠĠĠĠĠĠ Ġval Ġdefault OBJ Attributes Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠVertex Attribute ( 3 , ĠGL _ FLOAT , ĠĠ 3 2 , Ġ 0 ), Ġ Ġ// Position ĊĠĠĠĠĠĠĠĠĠĠĠ ĠVertex Attribute ( 2 , ĠGL _ FLOAT , ĠĠ 3 2 , Ġ 1 2 ), Ġ Ġ// Tex ĊĠĠĠĠĠĠĠĠĠĠĠ ĠVertex Attribute ( 3 , ĠGL _ FLOAT , ĠĠ 3 2 , Ġ 2 0 ), Ġ Ġ// Normals ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġground Mesh Ġ= ĠMesh ( ground OBJ Mesh . vertex Data , Ġground OBJ Mesh . index Data , Ġdefault OBJ Attributes , Ġmaterial ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠRender able ( mutable ListOf ( ground Mesh )) ĊĠĠĠ Ġ} Ċ } Ċ