package Ġcom . rsp si . game Ċ Ċ import Ġcom . badlogic . ash ley . core . Engine Ċ import Ġcom . badlogic . ash ley . core . Entity Ċ import Ġcom . badlogic . gdx . G dx Ċ import Ġcom . badlogic . gdx . Screen Ċ import Ġcom . badlogic . gdx . graphics .* Ċ import Ġcom . badlogic . gdx . graphics . g 2 d . Bitmap Font Ċ import Ġcom . badlogic . gdx . graphics . g 2 d . Sprite Ċ import Ġcom . badlogic . gdx . graphics . g 2 d . Sprite Batch Ċ import Ġcom . badlogic . gdx . graphics . g 3 d . Environment Ċ import Ġcom . badlogic . gdx . graphics . g 3 d . Material Ċ import Ġcom . badlogic . gdx . graphics . g 3 d . Model Batch Ċ import Ġcom . badlogic . gdx . graphics . g 3 d . attributes . Bl ending Attribute Ċ import Ġcom . badlogic . gdx . graphics . g 3 d . attributes . Color Attribute Ċ import Ġcom . badlogic . gdx . graphics . g 3 d . environment . Direction al Light Ċ import Ġcom . badlogic . gdx . graphics . g 3 d . utils . Default Shader Provider Ċ import Ġcom . badlogic . gdx . graphics . g 3 d . utils . Model Builder Ċ import Ġcom . badlogic . gdx . math . Vector 3 Ċ import Ġcom . badlogic . gdx . math . collision . BoundingBox Ċ import Ġcom . badlogic . gdx . physics . bullet . Bullet Ċ import Ġcom . badlogic . gdx . physics . bullet . Debug Drawer Ċ import Ġcom . badlogic . gdx . physics . bullet . collision . Closest Ray Result Callback Ċ import Ġcom . badlogic . gdx . physics . bullet . collision . bt Collision Dispatcher Ċ import Ġcom . badlogic . gdx . physics . bullet . collision . bt Db vt Broad phase Ċ import Ġcom . badlogic . gdx . physics . bullet . collision . bt Default Collision Configuration Ċ import Ġcom . badlogic . gdx . physics . bullet . dynamics . bt Discrete Dynamics World Ċ import Ġcom . badlogic . gdx . physics . bullet . dynamics . bt Rigid Body Ċ import Ġcom . badlogic . gdx . physics . bullet . dynamics . bt Sequential Imp ulse Constraint Solver Ċ import Ġcom . badlogic . gdx . physics . bullet . linear math . bt I Debug Draw Ċ import Ġcom . badlogic . gdx . utils . Screen Utils Ċ import Ġcom . dis ple e . cache . Cache Library Ċ import Ġcom . dis ple e . cache . Progress Listener Ċ import Ġcom . kot cr ab . vis . ui . Vis UI Ċ import Ġcom . rsp si . ext .* Ċ import Ġcom . rsp si . game . Bounding Sphere . Companion . intersect s Ċ import Ġcom . rsp si . opengl . Pixel Buffer Object Ċ import Ġk tx . app . K tx Game Ċ import Ġk tx . app . K tx Screen Ċ import Ġk tx . ash ley .* Ċ import Ġk tx . assets . dispose S af ely Ċ import Ġk tx . async . K tx Async Ċ import Ġk tx . graphics . use Ċ import Ġk tx . log . info Ċ import Ġk tx . math . plus Ċ import Ġk tx . math . times Ċ import Ġk tx . scene 2 d . Scene 2 DS kin Ċ import Ġspace . early grey . sh aped raw er . Shape Drawer Ċ import Ġjava . io . File ĊĊ Ċ open Ġclass ĠGame Screen Ġ: ĠK tx Screen Ġ{ ĊĊĠĠĠ Ġvar Ġray Cast Request Ġ= Ġfalse ĊĠĠĠ Ġvar Ġmap Boundary : ĠBounding Box ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġvisible Plane Ġ= Ġ 0 ĊĊĠĠĠ Ġvar Ġp bo : ĠPixel Buffer Object ? Ġ= Ġnull ĊĊĠĠĠ Ġlateinit Ġvar Ġcollision Config : Ġbt Default Collision Configuration ĊĠĠĠ Ġlateinit Ġvar Ġdispatcher : Ġbt Collision Dispatcher ĊĠĠĠ Ġlateinit Ġvar Ġbroad phase : Ġbt Db vt Broad phase ĊĠĠĠ Ġlateinit Ġvar Ġconstraint Solver : Ġbt Sequential Imp ulse Constraint Solver ĊĠĠĠ Ġlateinit Ġvar Ġdynamics World : Ġbt Discrete Dynamics World ĊĠĠĠ Ġvar Ġcontact Listener : ĠMy Contact Listener ? Ġ= Ġnull ĊĊĠĠĠ Ġlateinit Ġvar Ġdebug Drawer : ĠDebug Drawer ĊĊĠĠĠ Ġval Ġengine : ĠEngine Ġ= Ġcontext . inject () ĊĠĠĠ Ġval Ġsprite Batch Ġ= ĠSprite Batch () ĊĠĠĠ Ġvar Ġglobal Environment Ġ= ĠEnvironment () ĊĠĠĠ Ġvar Ġhighlighted Environment Ġ= ĠEnvironment () ĊĠĠĠ Ġvar Ġcamera Ġ= ĠPers pective Camera () ĊĠĠĠ Ġval Ġmodel Batch Ġ= ĠModel Batch ( Default Shader Provider (), ĠMaterial Sorter ()) ĊĊĠĠĠ Ġvar Ġdirection al Light Ġ= ĠDirection al Light () ĊĊĠĠĠ Ġval Ġshape Renderer Ġ= ĠShape Drawer ( sprite Batch , Ġempty Texture Region ()) ĊĊĠĠĠ Ġinit Ġ{ ĊĊĠĠĠĠĠĠĠ Ġcontext . bind Singleton Ġ{ Ġthis Ġ} ĊĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval ĠmodelBuilder Ġ= ĠModel Builder () ĊĠĠĠ Ġval Ġempty Material Ġ= ĠMaterial ( Bl ending Attribute ( GL 2 0 . GL _ SRC _ ALPHA , ĠGL 2 0 . GL _ ONE _ MINUS _ SRC _ ALPHA , Ġ 1 f )) ĊĊĠĠĠ Ġfun Ġparse Entities (): ĠList < Render able GameObject > Ġ= Ġengine . entities . map Ġ{ ĠRender able GameObject ( it ) Ġ} ĊĊĠĠĠ Ġvar Ġfont Ġ= ĠBitmap Font () ĊĠĠĠ Ġvar Ġdirty Ġ= Ġfalse ĊĠĠĠ Ġvar Ġtransparent Objects Ġ= ĠOpen Model Cache () ĊĠĠĠ Ġval Ġcompound Models Ġ= Ġmutable ListOf < Render able GameObject >() ĊĊĠĠĠ Ġval Ġmodel Clusters Ġ= Ġmutable ListOf < GameObject Cluster >() ĊĊĠĠĠ Ġfun Ġupdate Models () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( dirty ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompound Models . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġterrain Instances . clear () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġterrain Instances . addAll ( under lay Entities . map Ġ{ ĠRender able GameObject ( it ) Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġterrain Instances . addAll ( overlay Entities . map Ġ{ ĠRender able GameObject ( it ) Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġterrain Instances . forEach Indexed Ġ{ Ġindex , Ġterrain Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġterrain . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Render ables () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrs 2 Tile Map Component Ġ= Ġterrain . entity ?. get ( mapper For < RS 2 Tile Map Component >()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrs 2 Tile Map Component ?. tile Map ?. let Ġ{ Ġtile Map Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* simple Body ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontact Callback Filter Ġ= ĠComp anion . OBJECT _ FLAG ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdynamics World . add Rigid Body ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomplex Body ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdynamics World . add Rigid Body ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentity Index Ġ= ĠShort . MAX _ VALUE Ġ+ Ġindex ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġentities Ġ= Ġengine . entities ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Not Ġ{ Ġit . has ( mapper For < RS 2 Tile Map Component >()) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. associate With Ġ{ ĠRender able GameObject ( it ) Ġ} ĊĊ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompound Models . addAll ( entities . values ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompound Models . forEach Apply Ġ{ Ġbuild Render ables () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCustom Render able Sorter . sort ( camera , Ġcompound Models ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompound Models . forEach Indexed Ġ{ Ġindex , ĠgameObject Ġ-> ĠgameObject . entity Index Ġ= Ġindex Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompound Models . forEach Apply Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* simple Body ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontact Callback Flag Ġ= ĠOBJECT _ FLAG ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdynamics World . add Rigid Body ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomplex Body ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdynamics World . add Rigid Body ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Clusters () ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġinfo Ġ{ Ġ" Added Ġ${ compound Models . size } Ġentities Ġto Ġthe Ġrender Ġpipeline " Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdirty Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġbuild Clusters () Ġ{ ĊĠĠĠĠĠĠĠ Ġcompound Models . forEach Ġ{ ĠgameObject Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcluster Ġ= Ġmodel Clusters ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ ĠgameObject . type Ġin Ġit . valid Types Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. first OrNull Ġ{ Ġit . instances . values . any Ġ{ Ġit . bounding Sphere . intersect s ( gameObject . bounding Sphere ) Ġ} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠGameObject Cluster ( camera , ĠRS 2 Object . Types . getGroup ( gameObject . type )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcluster . instances [ gameObject . name ] Ġ= ĠgameObject ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cluster Ġ! in Ġmodel Clusters ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel Clusters . add ( cluster ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġinfo Ġ{ Ġ" Cluster ed Ġ${ compound Models . size } Ġgame Ġobjects Ġinto Ġ${ model Clusters . size } Ġclusters !" Ġ} ĊĠĠĠĠĠĠĠ Ġmodel Clusters . forEach Apply Ġ{ Ġupdate () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġcached Sprites Ġ= ĠarrayOf < Sprite >() ĊĊĠĠĠ Ġvar Ġdirty Sprites Ġ= Ġfalse ĊĠĠĠ Ġfun Ġget Sprites (): ĠArray < Sprite > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! dirty Sprites ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcached Sprites ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġlandscape Decoder : ĠRS 2 Land scape Decoder Ġ= Ġcontext . inject () ĊĠĠĠĠĠĠĠ Ġval Ġtexture Provider : ĠRS 2 Texture Provider Ġ= Ġcontext . inject () ĊĊĠĠĠĠĠĠĠ Ġval Ġtexture Atlas Ġ= Ġtexture Provider . build Texture Atlas () ĊĊĠĠĠĠĠĠĠ Ġcached Sprites Ġ= Ġtexture Atlas . create Sprites (). toArray () ĊĠĠĠĠĠĠĠ Ġcached Sprites . forEach Ġ{ Ġit . set Scale ( 0 . 1 f , Ġ 0 . 1 f ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġdirty Sprites Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġreturn Ġcached Sprites ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġterrain Instances Ġ= Ġmutable ListOf < Render able GameObject >() ĊĠĠĠ Ġvar Ġunder lay Entities : ĠArray < Entity ?> Ġ= ĠarrayOf Null s ( 4 ) ĊĠĠĠ Ġvar Ġoverlay Entities : ĠArray < Entity ?> Ġ= ĠarrayOf Null s ( 4 ) ĊĊĠĠĠ Ġvar Ġgame UI : ĠGame UI ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġkey Input Controller : ĠMain Input Controller ? Ġ= Ġnull ĊĊĊĠĠĠ Ġvar Ġhover Id Ġ= Ġ- 1 ĊĠĠĠ Ġvar Ġbackground Colour Ġ= ĠImmutable Color . YELLOW ĊĊĠĠĠ Ġvar Ġangle Ġ= Ġ 9 0 f ĊĠĠĠ Ġvar Ġspeed Ġ= Ġ 9 0 f ĊĠĠĠ Ġoverride Ġfun Ġrender ( delta : ĠFloat ) Ġ{ ĊĊĊĠĠĠĠĠĠĠ Ġ// dynamics World . step Simulation ( delta , Ġ 1 , Ġ 1 f Ġ/ Ġ 3 0 f ) ĊĊĠĠĠĠĠĠĠ Ġcompound Models . forEach Ġ{ Ġit . update () Ġ} ĊĠĠĠĠĠĠĠ Ġkey Input Controller ?. update () ĊĊĠĠĠĠĠĠĠ ĠG dx . gl . gl Viewport ( 0 , Ġ 0 , ĠG dx . graphics . width , ĠG dx . graphics . height ) ĊĠĠĠĠĠĠĠ ĠScreen Utils . clear ( background Colour . to Mutable ()) ĊĠĠĠĠĠĠĠ Ġ// G dx . gl . gl Front Face ( GL 2 0 . GL _ CC W ) ĊĠĠĠĠĠĠĠ Ġ// G dx . gl . gl Disable ( GL 2 0 . GL _ C ULL _ FACE ) ĊĊĊĠĠĠĠĠĠĠ Ġupdate Models () ĊĠĠĠĠĠĠĠ Ġget Sprites () ĊĊĠĠĠĠĠĠĠ ĠScreen Utils . clear ( background Colour . to Mutable ()) ĊĊĠĠĠĠĠĠĠ Ġmodel Batch . use ( camera ) Ġ{ Ġmodel Batch Ġ-> ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġterrain Instances . forEach Ġ{ Ġterrain Instance Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġterrain Instance . update () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel Batch . render ( terrain Instance , Ġglobal Environment ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel Batch . render ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompound Models ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* model Clusters . filter Ġ{ Ġit . model Instances . values . any Ġ{ Ġis Visible ( it ) Ġ} Ġ} */, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġglobal Environment ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġif Ġ( hover Id Ġin Ġcompound Models . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel Batch . use ( camera ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel Batch . render ( compound Models [ hover Id ], Ġhighlighted Environment ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġdebug Drawer . begin ( camera ) ĊĊĠĠĠĠĠĠĠ Ġkey Input Controller ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdynamics World . debug Draw World () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( mouse Moved Ġ&& Ġ! drag ging ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhover Id Ġ= Ġray cast Result ( mouse X , ĠmouseY ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinfo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Hover Ġid Ġis Ġ$ hover Id " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġray Cast Request Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmouse Moved Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġray Test CB ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġray From Ġ= ĠVector 3 () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġray To Ġ= ĠVector 3 () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Ray From World ( ray From ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Ray To World ( ray To ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdynamics World . debug Drawer . draw Line ( ray From . to Immutable (), Ġray To . to Immutable (), ĠImmutable Color . PUR PLE ) ĊĠĠĠĠĠĠĠ Ġ} Ċ Ċ // Ġdynamics World . debug Draw World () ĊĠĠĠĠĠĠĠ Ġif Ġ( hover Id Ġin Ġcompound Models . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompound Models [ hover Id ]. let Ġ{ Ċ /* dynamics World . debug Draw Object ( ĊĠĠĠ Ġit . transform , ĊĠĠĠ Ġit . complex Collision Shape , ĊĠĠĠ ĠImmutable Color . GREEN . vec 3 (). to Mutable () Ċ ) */ Ċ // Ġinfo Ġ{ Ġ" At tempting Ġto Ġdraw Ġbounding Ġsphere Ġ${ it . bounding Sphere } "} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdynamics World . debug Drawer . draw Sphere ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . bounding Sphere . let Ġ{ Ġit . origin Ġ+ Ġit . position Ġ}. to Mutable (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . bounding Sphere . radius , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImmutable Color . RED . vec 3 (). to Mutable () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdebug Drawer . draw Box ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . transform . get Translation (). to Mutable () Ġ+ Ġit . bounding Box . min , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . transform . get Translation (). to Mutable () Ġ+ Ġit . bounding Box . max , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImmutable Color . RED . vec 3 (). to Mutable () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdebug Drawer . draw Box ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( it . transform . get Translation () Ġ+ Ġit . bounding Box . get Center Immutable () Ġ- ĠImmutable Vector 3 ( 0 . 1 f )). to Mutable (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( it . transform . get Translation () Ġ+ Ġit . bounding Box . get Center Immutable () Ġ+ ĠImmutable Vector 3 ( 0 . 1 f )). to Mutable (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImmutable Color . GREEN . vec 3 (). to Mutable () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( hover Id Ġ- ĠShort . MAX _ VALUE Ġin Ġterrain Instances . indices ) Ġ{ Ċ /* terrain Instances [ hover Id Ġ- ĠShort . MAX _ VALUE ]. let Ġ{ ĠgameObject Ġ-> Ċ dynamics World . debug Draw Object ( ĊĠĠĠ ĠgameObject . transform , ĊĠĠĠ ĠgameObject . complex Collision Shape , ĊĠĠĠ ĠImmutable Color . GREEN . vec 3 (). to Mutable () Ċ ) Ċ }*/ ĊĠĠĠĠĠĠĠ Ġ} Ċ Ċ /* Ġterrain Instances . forEach Ġ{ ĠgameObject Ġ-> Ċ dynamics World . debug Draw Object ( Ċ ĠgameObject . transform , Ċ ĠgameObject . collision Shape , Ċ ĠImmutable Color . GREEN . vec 3 (). to Mutable () Ċ ) Ċ }*/ ĊĠĠĠĠĠĠĠ Ġdebug Drawer . end () ĊĊĠĠĠĠĠĠĠ Ġsprite Batch . use Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfont . draw ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsprite Batch , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" x Ġ${ camera . position . x . toInt ()} Ġ Ġ| Ġy Ġ${ camera . position . y . toInt ()} Ġ| Ġz Ġ${ camera . position . z . toInt () }", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcamera . viewport Width Ġ- Ġ 1 4 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcamera . viewport Height Ġ- Ġ 3 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfont . draw ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsprite Batch , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" x Ġ${ ( camera . direction . x )} Ġ Ġ| Ġy Ġ${ ( camera . direction . y )} Ġ| Ġz Ġ${ ( camera . direction . z )} Ġ| ĠF PS : Ġ${ G dx . graphics . frames PerSecond } Ġ| ĠGr avity : Ġ${ dynamics World . gravity }", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcamera . viewport Height Ġ- Ġ 8 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġkey Input Controller ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshape Renderer . setColor ( Color . BLACK ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshape Renderer . filled Rectangle ( mouse X . toFloat () Ġ- Ġ 3 f , ĠG dx . graphics . height Ġ- ĠmouseY . toFloat (), Ġ 6 f , Ġ 1 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshape Renderer . filled Rectangle ( mouse X . toFloat (), ĠG dx . graphics . height Ġ- ĠmouseY . toFloat () Ġ- Ġ 3 f , Ġ 1 f , Ġ 6 f ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġgame UI ?. draw ( delta ) ĊĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġvar Ġray Test CB : ĠClose st Ray Result Callback ? Ġ= Ġnull ĊĠĠĠ Ġfun Ġray cast Result ( mouse X : ĠInt , ĠmouseY : ĠInt ): ĠInt Ġ{ ĊĊĊĠĠĠĠĠĠĠ Ġvar Ġray Ġ= Ġcamera . get Pick Ray ( mouse X . toFloat (), ĠmouseY . toFloat ()) // TODO ĠMake ĠImmutable Ray ĊĠĠĠĠĠĠĠ Ġvar Ġray From Ġ= Ġray . origin . cpy () ĊĠĠĠĠĠĠĠ Ġvar Ġray To Ġ= Ġ( ray . direction . cpy () Ġ* Ġ 5 0 f ) Ġ+ Ġray From ĊĊĠĠĠĠĠĠĠ Ġray Test CB ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcollision Object Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclosest Hit Fraction Ġ= Ġ 1 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Ray From World ( ray From ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Ray To World ( ray To ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdynamics World . ray Test ( ray From , Ġray To , Ġthis ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( has Hit ()) Ġ{ Ċ // if Ġ(! obj . is Static Or Kin ematic Object ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġbody Ġ= Ġcollision Object Ġas ? Ġbt Rigid Body ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ray Cast Request ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapply Central Imp ulse ( ray . direction Ġ* Ġ 3 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcollision Object . user Value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġ- 1 ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġvar Ġfr ustum Cull ing Ġ= Ġtrue ĊĠĠĠ Ġprotected Ġfun Ġis Visible ( instance : ĠRender able GameObject ): ĠBoolean Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! fr ustum Cull ing ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġvar Ġposition Ġ= Ġinstance . transform . get Translation () ĊĠĠĠĠĠĠĠ Ġposition Ġ+= Ġinstance . bounding Box . get Center Immutable () ĊĠĠĠĠĠĠĠ Ġreturn Ġcamera . fr ustum . sphere In Fr ustum ( position . to Mutable (), Ġinstance . bounding Sphere . radius ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdispose () Ġ{ ĊĠĠĠĠĠĠĠ Ġclear Entities () ĊĠĠĠĠĠĠĠ Ġdynamics World . dispose S af ely () ĊĠĠĠĠĠĠĠ Ġbroad phase . dispose S af ely () ĊĠĠĠĠĠĠĠ Ġdispatcher . dispose S af ely () ĊĠĠĠĠĠĠĠ Ġcollision Config . dispose S af ely () ĊĠĠĠĠĠĠĠ Ġcontact Listener . dispose S af ely () ĊĠĠĠĠĠĠĠ Ġmodel Batch . dispose S af ely () ĊĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġresize ( width : ĠInt , Ġheight : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinfo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Res ized Ġto Ġ$ width Ġ$ height " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠG dx . gl . gl Viewport ( 0 , Ġ 0 , Ġwidth , Ġheight ) ĊĠĠĠĠĠĠĠ Ġcamera . viewport Width Ġ= Ġwidth . toFloat () ĊĠĠĠĠĠĠĠ Ġcamera . viewport Height Ġ= Ġheight . toFloat () ĊĠĠĠĠĠĠĠ Ġcamera . update () ĊĊĠĠĠĠĠĠĠ Ġgame UI ?. resize ( width , Ġheight ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġclear Entities () Ġ{ ĊĠĠĠĠĠĠĠ Ġcompound Models . forEach Ġ{ Ġdynamics World . remove Rigid Body ( it . complex Body ) Ġ} ĊĠĠĠĠĠĠĠ Ġcompound Models . forEach Ġ{ Ġit . dispose S af ely () Ġ} ĊĠĠĠĠĠĠĠ Ġcompound Models . clear () ĊĊĠĠĠĠĠĠĠ Ġmodel Clusters . forEach Ġ{ Ġit . dispose S af ely () Ġ} ĊĠĠĠĠĠĠĠ Ġmodel Clusters . clear () ĊĊĠĠĠĠĠĠĠ Ġtransparent Objects . render ables . clear () ĊĠĠĠĠĠĠĠ Ġterrain Instances . forEach Ġ{ Ġdynamics World . remove Rigid Body ( it . complex Body ) Ġ} ĊĠĠĠĠĠĠĠ Ġterrain Instances . forEach Ġ{ Ġit . dispose S af ely () Ġ} ĊĠĠĠĠĠĠĠ Ġterrain Instances . clear () ĊĠĠĠĠĠĠĠ Ġengine . removeAll Entities () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsetup Environment () Ġ{ ĊĊĊĠĠĠĠĠĠĠ Ġdirection al Light . set ( 0 . 6 f , Ġ 0 . 6 f , Ġ 0 . 6 f , Ġ- 1 0 f , Ġ- 5 0 f , Ġ- 1 0 f ) ĊĠĠĠĠĠĠĠ Ġglobal Environment . set ( Color Attribute ( Color Attribute . Ambient Light , Ġ 0 . 6 f , Ġ 0 . 6 f , Ġ 0 . 6 f , Ġ 1 f )) ĊĠĠĠĠĠĠĠ Ġglobal Environment . add ( direction al Light ) ĊĊĊĠĠĠĠĠĠĠ Ġhighlighted Environment . set ( Color Attribute ( Color Attribute . Ambient Light , Ġ 0 f , Ġ 0 f , Ġ 0 . 6 f , Ġ 0 . 5 f )) ĊĠĠĠĠĠĠĠ Ġhighlighted Environment . set ( Bl ending Attribute ( GL 2 0 . GL _ SRC _ ALPHA , ĠGL 2 0 . GL _ ONE _ MINUS _ SRC _ ALPHA , Ġ 0 . 5 f )) Ċ // global Environment . add ( shadow Light ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsetup Camera () Ġ{ ĊĠĠĠĠĠĠĠ Ġcamera . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġviewport Width Ġ= ĠG dx . graphics . width . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġviewport Height Ġ= ĠG dx . graphics . height . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Of View Ġ= Ġ 6 7 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnear Ġ= Ġ 0 . 1 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfar Ġ= Ġ 2 0 0 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsetup Physics () Ġ{ ĊĠĠĠĠĠĠĠ Ġcollision Config Ġ= Ġbt Default Collision Configuration () ĊĠĠĠĠĠĠĠ Ġdispatcher Ġ= Ġbt Collision Dispatcher ( collision Config ) ĊĠĠĠĠĠĠĠ Ġbroad phase Ġ= Ġbt Db vt Broad phase () ĊĠĠĠĠĠĠĠ Ġconstraint Solver Ġ= Ġbt Sequential Imp ulse Constraint Solver () ĊĊĠĠĠĠĠĠĠ Ġdynamics World Ġ= Ġbt Discrete Dynamics World ( dispatcher , Ġbroad phase , Ġconstraint Solver , Ġcollision Config ) ĊĠĠĠĠĠĠĠ Ġdynamics World . gravity Ġ= ĠImmutable Vector 3 ( 0 , Ġ- 1 0 f , Ġ 0 ). to Mutable () ĊĠĠĠĠĠĠĠ Ġdynamics World . latency Motion State Interpolation Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġray Test CB Ġ= ĠClose st Ray Result Callback ( Immutable Vector 3 . ZERO . to Mutable (), ĠImmutable Vector 3 . Z . to Mutable ()) ĊĠĠĠĠĠĠĠ Ġdebug Drawer Ġ= ĠDebug Drawer () ĊĠĠĠĠĠĠĠ Ġdynamics World . debug Drawer Ġ= Ġdebug Drawer ĊĠĠĠĠĠĠĠ Ġdebug Drawer . debug Mode Ġ= Ġbt I Debug Draw . Debug Draw Modes . DBG _ Draw Normals ĊĊĠĠĠĠĠĠĠ Ġcontact Listener Ġ= ĠMy Contact Listener ( compound Models , Ġterrain Instances ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsetup () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġsetup Environment () ĊĠĠĠĠĠĠĠ Ġsetup Camera () ĊĠĠĠĠĠĠĠ Ġsetup Physics () ĊĊĠĠĠĠĠĠĠ Ġp bo Ġ= ĠPixel Buffer Object ( G dx . graphics . width , ĠG dx . graphics . height , ĠP ix map . Format . RGBA 8 8 8 8 ) ĊĠĠĠĠĠĠĠ Ġp bo ?. bind () ĊĊĠĠĠĠĠĠĠ Ġinfo Ġ{ Ġ" Supports : Ġ${ G dx . graphics . supports Extension (" GL _ ARB _ pixel _ buffer _ object ") }" Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġfont Manager Ġ= ĠFont Manager () ĊĠĠĠĠĠĠĠ Ġfont Manager . load Fonts () ĊĊĠĠĠĠĠĠĠ Ġval Ġvar bit Decoder Ġ= ĠRS 2 Var bit Decoder () ĊĠĠĠĠĠĠĠ Ġval Ġarea Decoder Ġ= ĠRS 2 Area Decoder () ĊĊĠĠĠĠĠĠĠ Ġvar bit Decoder . decode () ĊĠĠĠĠĠĠĠ Ġarea Decoder . decode () ĊĊĠĠĠĠĠĠĠ Ġval Ġx tea Provider Ġ= ĠX TE A Provider () ĊĠĠĠĠĠĠĠ Ġval Ġsprite Decoder Ġ= ĠRS 2 Sprite Provider () ĊĠĠĠĠĠĠĠ Ġval Ġtexture Provider Ġ= ĠRS 2 Texture Provider () ĊĊĊĠĠĠĠĠĠĠ Ġval Ġmodel Decoder Ġ= ĠRS 2 Model Decoder () ĊĠĠĠĠĠĠĠ Ġval Ġobject Def Loader Ġ= ĠO SRS Object Def () ĊĠĠĠĠĠĠĠ Ġval Ġfloor Decoder Ġ= ĠRS 2 Floor Decoder () ĊĠĠĠĠĠĠĠ Ġval Ġobjects Decoder Ġ= ĠRS 2 Objects Decoder () ĊĠĠĠĠĠĠĠ Ġval Ġlandscape Decoder Ġ= ĠRS 2 Land scape Decoder () ĊĊĊĠĠĠĠĠĠĠ Ġval Ġchat Manager Ġ= ĠChat Manager () ĊĠĠĠĠĠĠĠ Ġgame UI Ġ= ĠGame UI ( camera ) ĊĊĊĊĠĠĠĠĠĠĠ Ġkey Input Controller Ġ= ĠMain Input Controller ( camera ) ĊĊĠĠĠĠĠĠĠ ĠG dx . input . input Processor Ġ= Ġkey Input Controller ĊĊĠĠĠĠĠĠĠ Ġsprite Decoder . load () ĊĠĠĠĠĠĠĠ Ġload Textures () ĊĊĠĠĠĠĠĠĠ Ġfloor Decoder . load () ĊĠĠĠĠĠĠĠ Ġx tea Provider . decode ( File (" C :/ Users / James / Desktop / RS / 1 9 3 / x te as . json ")) ĊĊĠĠĠĠĠĠĠ Ġchat Manager . init () ĊĠĠĠĠĠĠĠ Ġgame UI ?. init () ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġload Textures () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtexture Provider : ĠRS 2 Texture Provider Ġ= Ġcontext . inject () ĊĠĠĠĠĠĠĠ Ġtexture Provider . load () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġload Region () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġclear Entities () ĊĊĠĠĠĠĠĠĠ Ġval Ġcache Library : ĠCache Library Ġ= Ġcontext . inject () ĊĠĠĠĠĠĠĠ Ġval Ġlandscape Decoder : ĠRS 2 Land scape Decoder Ġ= Ġcontext . inject () ĊĠĠĠĠĠĠĠ Ġval Ġobjects Decoder : ĠRS 2 Objects Decoder Ġ= Ġcontext . inject () ĊĠĠĠĠĠĠĠ Ġval Ġtexture Provider : ĠRS 2 Texture Provider Ġ= Ġcontext . inject () ĊĠĠĠĠĠĠĠ Ġval Ġx tea Provider : ĠX TE A Provider Ġ= Ġcontext . inject () ĊĊĠĠĠĠĠĠĠ Ġval Ġsize X Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġval Ġsize Y Ġ= Ġ 1 ĊĊĠĠĠĠĠĠĠ Ġval Ġstart X Ġ= Ġ 3 0 8 8 ĊĠĠĠĠĠĠĠ Ġval Ġstart Y Ġ= Ġ 3 4 8 8 ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( global X Ġin Ġstart X Ġuntil Ġstart X Ġ+ Ġ( 6 4 Ġ* Ġsize X ) Ġstep Ġ 6 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( global Y Ġin Ġstart Y Ġuntil Ġstart Y Ġ+ Ġ( 6 4 Ġ* Ġsize Y ) Ġstep Ġ 6 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġregion Id Ġ= Ġ( global X Ġ/ Ġ 6 4 Ġshl Ġ 8 ) Ġor Ġ( global Y Ġ/ Ġ 6 4 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlandscape Decoded Ġ= Ġlandscape Decoder . request ( region Id ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( land scape Decoded ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmap Width Ġ= Ġlandscape Decoder . width ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmap Height Ġ= Ġlandscape Decoder . height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( z Ġin Ġ 0 Ġuntil Ġ 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunder lay Entities [ z ] Ġ= Ġengine . entity Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith < Name Component > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" land scape _${ region Id }_ under lay _$ z " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith < World Position Component > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvector 3 Ġ= ĠImmutable Vector 3 ( global X Ġ- Ġstart X , Ġz , Ġglobal Y Ġ- Ġstart Y ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith < Mesh Provider Component > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . provider Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġlandscape Decoder . build Under lay ( z )?. let Ġ{ Ġmutable Map Of (" under lay _$ z " Ġto Ġit ) Ġ} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith < Weight Component > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . weight Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith < RS 2 Tile Map Component > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtile Map . put All ( land scape Decoder . tile Map ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* with < Collision Shape Component > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . shape Provider Ġ= Ġ{ Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinfo Ġ{ Ġ" Collision Ġsetup Ġfor Ġterrain Ġ"} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtile Map Ġ= Ġlandscape Decoder . tile Map aaaaaaaa aaaa aa ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheight Buffer Ġ= ĠBuffer Utils . new Float Buffer ( map Width Ġ* Ġmap Height ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtile Map ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . key . z Ġ== Ġz . toFloat () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ Ġ( position , Ġtile ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheight Buffer . put ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( position . x . toInt () Ġ+ Ġ( position . y . toInt () Ġ* Ġmap Width )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtile . data . tile Height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbt Height field Terrain Shape ( map Width , Ġmap Height , Ġheight Buffer , Ġ 1 f , Ġ 0 f , Ġ 4 0 9 6 f , Ġ 1 , Ġfalse ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}*/ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( z Ġin Ġ 0 Ġuntil Ġ 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverlay Entities [ z ] Ġ= Ġengine . entity Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith < Name Component > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" land scape _${ region Id }_ overlay _$ z " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith < World Position Component > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvector 3 Ġ= ĠImmutable Vector 3 ( global X Ġ- Ġstart X , Ġz , Ġglobal Y Ġ- Ġstart Y ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith < Mesh Provider Component > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . provider Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġlandscape Decoder . build Overlay ( z )?. let Ġ{ Ġmutable Map Of (" overlay _$ z " Ġto Ġit ) Ġ} Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith < Weight Component > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . weight Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith < RS 2 Tile Map Component > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtile Map . put All ( land scape Decoder . tile Map ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobjects Decoder . request ( region Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġengine . entity Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith < Name Component > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" xyz Axis " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith < Weight Component > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . weight Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith < Mesh Provider Component > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . provider Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġxyz Ġ= ĠmodelBuilder . create XYZ Coordinates ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġempty Material , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( Vertex Attributes . Usage . Position Ġor ĠVertex Attributes . Usage . Color Packed ). to Long () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmutable Map Of (" xyz G dx " Ġto ĠmodelBuilder . use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġxyz . meshes . forEach Indexed Ġ{ Ġindex , Ġmesh Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmodelBuilder . part (" xyz _$ index ", Ġmesh , ĠGL 2 0 . GL _ TRI ANG LES , Ġempty Material ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġdirty Sprites Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġdirty Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠOBJECT _ FLAG Ġ= Ġ 4 ĊĠĠĠĠĠĠĠ Ġval ĠGRO UND _ FLAG Ġ= Ġ 2 ĊĠĠĠ Ġ} Ċ Ċ } ĊĊ Ċ class ĠGame View Ġ: ĠK tx Game < Screen >() Ġ{ ĊĊĠĠĠ Ġval Ġengine Ġ= ĠEngine () ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext . bind Singleton ( engine ) ĊĊĠĠĠĠĠĠĠ Ġval Ġprogress Listener Ġ= Ġobject Ġ: ĠProgress Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġnotify ( progress : ĠDouble , Ġmessage : ĠString ?) Ġ{ Ċ // Ġinfo Ġ{ Ċ // ĠĠĠ Ġ"$ progress Ġ$ message " Ċ //} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġcache Path Ġ= Ġ" C :/ Users / James / Desktop / RS / 1 9 3 / cache /" ĊĠĠĠĠĠĠĠ Ġcontext . bind Singleton ( Cache Library ( cache Path , Ġfalse , Ġprogress Listener )) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate () Ġ{ ĊĊĠĠĠĠĠĠĠ ĠBullet . init ( false , Ġtrue ) ĊĊĠĠĠĠĠĠĠ ĠVis UI . load ( Vis UI . Skin Scale . X 2 ) ĊĠĠĠĠĠĠĠ ĠScene 2 DS kin . default Skin Ġ= ĠVis UI . get Skin () ĊĠĠĠĠĠĠĠ ĠK tx Async . init iate () ĊĊĠĠĠĠĠĠĠ Ġval Ġgame Screen Ġ= ĠGame Screen () ĊĠĠĠĠĠĠĠ Ġinfo Ġ{ Ġ" eat Ġme " Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġadd Screen ( game Screen ) ĊĠĠĠĠĠĠĠ Ġset Screen < Game Screen >() ĊĊĠĠĠĠĠĠĠ Ġgame Screen . setup () ĊĊĠĠĠĠĠĠĠ ĠG dx . gl . gl Enable ( GL 2 0 . GL _ C ULL _ FACE ) ĊĠĠĠĠĠĠĠ ĠG dx . gl . gl Cull Face ( GL 2 0 . GL _ BACK ) ĊĠĠĠ Ġ} Ċ }