/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 6 . ĠSee ĠAUTHORS Ġfile . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ @ file : Jvm Name (" Terrain Utils ") Ċ Ċ package Ġcom . m br labs . m und us . editor . utils Ċ Ċ import Ġcom . badlogic . gdx . graphics . g 3 d . utils . Mesh Part Builder . Vertex Info Ċ import Ġcom . badlogic . gdx . math . Vector 3 Ċ import Ġcom . badlogic . gdx . math . collision . Ray Ċ import Ġcom . badlogic . gdx . utils . Array Ċ import Ġcom . m br labs . m und us . commons . assets . Terrain Asset Ċ import Ġcom . m br labs . m und us . commons . scene 3 d . GameObject Ċ import Ġcom . m br labs . m und us . commons . scene 3 d . Scene Graph Ċ import Ġcom . m br labs . m und us . commons . shaders . Terrain Shader Ċ import Ġcom . m br labs . m und us . editor . scene 3 d . components . Pick able Terrain Component Ċ import Ġcom . m br labs . m und us . editor . shader . Shaders Ċ Ċ private Ġvar Ġtemp VI Ġ= ĠVertex Info () Ċ Ċ fun Ġcreate Terrain GO ( sg : ĠScene Graph , Ġshader : ĠT errain Shader , Ġgo ID : ĠInt , Ġgo Name : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġterrain : ĠT errain Asset ): ĠGameObject Ġ{ ĊĠĠĠ Ġval Ġterrain GO Ġ= ĠGameObject ( sg , Ġnull , Ġgo ID ) ĊĠĠĠ Ġterrain GO . name Ġ= Ġgo Name ĊĊĠĠĠ Ġterrain . terrain . set Transform ( terrain GO . transform ) ĊĠĠĠ Ġval Ġterrain Component Ġ= ĠPick able Terrain Component ( terrain GO , ĠSh aders . terrain Shader ) ĊĠĠĠ Ġterrain Component . terrain Ġ= Ġterrain ĊĠĠĠ Ġterrain GO . components . add ( terrain Component ) ĊĠĠĠ Ġterrain Component . shader Ġ= Ġshader ĊĠĠĠ Ġterrain Component . encode Ray pick Color Id () ĊĊĠĠĠ Ġreturn Ġterrain GO Ċ } Ċ Ċ fun Ġget Ray Intersection ( ter r ains : ĠArray < Terrain Asset >, Ġray : ĠRay , Ġout : ĠVector 3 ): ĠVector 3 ? Ġ{ ĊĠĠĠ Ġfor Ġ( terrain Ġin Ġt err ains ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġt err Ġ= Ġterrain . terrain ĊĠĠĠĠĠĠĠ Ġt err . get Ray Intersection ( out , Ġray ) ĊĠĠĠĠĠĠĠ Ġif Ġ( ter r . is On Terrain ( out . x , Ġout . z )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġout ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġnull Ċ } Ċ Ċ fun Ġget Ray Intersection And Up ( ter r ains : ĠArray < Terrain Asset >, Ġray : ĠRay ): ĠVertex Info ? Ġ{ ĊĠĠĠ Ġfor Ġ( terrain Ġin Ġt err ains ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġt err Ġ= Ġterrain . terrain ĊĠĠĠĠĠĠĠ Ġt err . get Ray Intersection ( temp VI . position , Ġray ) ĊĠĠĠĠĠĠĠ Ġif Ġ( ter r . is On Terrain ( temp VI . position . x , Ġtemp VI . position . z )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemp VI . normal . set ( ter r . get Normal At Word Coordinate ( temp VI . position . x , Ġtemp VI . position . z )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtemp VI ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġnull Ċ } ĊĊ