/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 - 2 0 2 1 ĠAnt on ĠTr ush kov Ċ Ġ* Ċ Ġ* Ġ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 . Ċ Ġ*/ Ċ Ċ package Ġapp . the le ma . test . phys Ċ Ċ import Ġapp . the le ma . app . APP Ċ import Ġapp . the le ma . ecs . Entity Ċ import Ġapp . the le ma . g 3 d . cam . orbit Camera Control Ċ import Ġapp . the le ma . g 3 d . mesh . plane Mesh Ċ import Ġapp . the le ma . g 3 d . mesh . sphere Mesh Ċ import Ġapp . the le ma . g 3 d . scene Ċ import Ġapp . the le ma . gl . mesh Instance Ċ import Ġapp . the le ma . phys .* Ċ import Ġapp . the le ma . test . Test Ċ import Ġapp . the le ma . utils . LOG Ċ import Ġkotlin . random . Random Ċ Ċ /** Ġ@ author Ġz eg an styl Ġ*/ Ċ class ĠTri mesh Shape Test : ĠTest Ġ{ ĊĠĠĠ Ġoverride Ġval Ġname : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ" Tri mesh Ġshape " ĊĊĠĠĠ Ġoverride Ġfun Ġtest Main () Ġ{ ĊĠĠĠĠĠĠĠ ĠEntity Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmake Current () ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠAPP . setup Physics Components () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġscene () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġorbit Camera Control Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Distance Ġ= Ġ 1 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsphere Ġ= Ġsphere Mesh Ġ{ Ġset Size ( 1 f ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġentity (" dynamic ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmesh Instance ( sphere . mesh ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsphere Shape Ġ{ Ġset Size ( sphere . radius ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrigid Body Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnode . setPosition ( 0 f , Ġ 5 f , Ġ 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġentity (" tri mesh ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplane Mesh Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . calculate Normals Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Size ( 2 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Div isions ( 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheight Provider Ġ= Ġ{ Ġ_, Ġ_ Ġ-> ĠRandom . next Float () Ġ* Ġ 5 f Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmesh Instance () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtri mesh Shape () Ġ// Ġwill Ġautomatically Ġtake Ġsibling Ġmesh Ġcomponent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrigid Body Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnode . setPosition ( 0 f , Ġ 0 f , Ġ 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Static Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrigid Body Physics World Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Simulation () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Physics World Listener ( object : ĠI Physics World Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcontact Begin ( contact : ĠI Body Contact ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLOG . info (" begin Ġcontact Ġ${ contact . body 1 . entity . name } Ġwith Ġ${ contact . body 2 . entity . name }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcontact End ( contact : ĠI Body Contact ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLOG . info (" end Ġcontact Ġ${ contact . body 1 . entity . name } Ġwith Ġ${ contact . body 2 . entity . name }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }