package Ġno . n jo h . pulse engine . modules . scene . systems . physics Ċ Ċ import Ġcom . fasterxml . jackson . annotation . JsonIgnore Ċ import Ġno . n jo h . pulse engine . Pulse Engine Ċ import Ġno . n jo h . pulse engine . data . Mouse Ċ import Ġno . n jo h . pulse engine . data . Scene State . RUNNING Ċ import Ġno . n jo h . pulse engine . modules . scene . Scene Manager Ċ import Ġno . n jo h . pulse engine . modules . scene . systems . Scene System Ċ import Ġno . n jo h . pulse engine . modules . scene . systems . physics . bodies . Physics Body Ċ import Ġno . n jo h . pulse engine . util . forEach Fast Ċ import Ġno . n jo h . pulse engine . widgets . scene Editor . Value Range Ċ Ċ class ĠPhysics System Ġ: ĠScene System () Ċ { ĊĠĠĠ Ġvar Ġgravity Ġ= Ġ 1 5 0 0 f ĊĠĠĠ Ġvar Ġdraw Shapes Ġ= Ġfalse ĊĠĠĠ Ġvar Ġmouse Interaction Ġ= Ġfalse ĊĊĠĠĠ Ġ@ Value Range ( 0 f , Ġ 1 0 0 _ 0 0 0 _ 0 0 0 f ) ĊĠĠĠ Ġvar Ġworld Width Ġ= Ġ 1 0 0 _ 0 0 0 ĊĊĠĠĠ Ġ@ Value Range ( 0 f , Ġ 1 0 0 _ 0 0 0 _ 0 0 0 f ) ĊĠĠĠ Ġvar Ġworld Height Ġ= Ġ 1 0 0 _ 0 0 0 ĊĊĠĠĠ Ġ@ Value Range ( 0 f , Ġ 5 0 f ) ĊĠĠĠ Ġvar Ġphysics Iterations Ġ= Ġ 4 ĊĊĠĠĠ Ġ@ JsonIgnore ĊĠĠĠ Ġprivate Ġvar Ġpicked Body : ĠPhysics Body ? Ġ= Ġnull ĊĊĠĠĠ Ġ@ JsonIgnore ĊĠĠĠ Ġprivate Ġvar Ġpicked Point Index Ġ= Ġ 0 ĊĊĠĠĠ Ġoverride Ġfun ĠonStart ( engine : ĠPulse Engine ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġengine . scene . forEach Physics Entity Ġ{ Ġit . init ( engine ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Fixed Update ( engine : ĠPulse Engine ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( engine . scene . state Ġ!= ĠRUN NING ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĊĠĠĠĠĠĠĠ Ġengine . scene . forEach Physics Entity Ġ{ Ġit . begin Step ( engine , Ġengine . data . fixed Delta Time , Ġgravity ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġtotal Iterations Ġ= Ġphysics Iterations ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġtotal Iterations ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġengine . scene . forEach Physics Entity Ġ{ Ġit . iterate Step ( engine , Ġi , Ġtotal Iterations , Ġworld Width , Ġworld Height ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( mouse Interaction ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpick Body ( engine ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonUpdate ( engine : ĠPulse Engine ) Ġ{ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Render ( engine : ĠPulse Engine ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! draw Shapes ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval Ġsurface Ġ= Ġengine . gfx . main Surface ĊĠĠĠĠĠĠĠ Ġengine . scene . forEach Physics Entity Ġ{ Ġit . render ( engine , Ġsurface ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpick Body ( engine : ĠPulse Engine ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! engine . input . is Pressed ( Mouse . LEFT )) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpicked Body Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġif Ġ( pick ed Body Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpicked Body !!. shape . set Point ( pick ed Point Index , Ġengine . input . x World Mouse , Ġengine . input . y World Mouse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpicked Body !!. wake Up () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġmin Dist Ġ= Ġ 4 0 f Ġ* Ġ 4 0 f ĊĠĠĠĠĠĠĠ Ġval Ġx Mouse Ġ= Ġengine . input . x World Mouse ĊĠĠĠĠĠĠĠ Ġval Ġy Mouse Ġ= Ġengine . input . y World Mouse ĊĠĠĠĠĠĠĠ Ġengine . scene . forEach Near by Entity OfType < Physics Body >( x Mouse , Ġy Mouse , Ġ 5 0 0 f , Ġ 5 0 0 f ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġit . shape . get Point Count ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . shape . get Point ( i )?. let Ġ{ Ġpoint Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Delta Ġ= Ġpoint . x Ġ- Ġx Mouse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġy Delta Ġ= Ġpoint . y Ġ- Ġy Mouse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdist Ġ= Ġx Delta Ġ* Ġx Delta Ġ+ Ġy Delta Ġ* Ġy Delta ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( dist Ġ< Ġmin Dist ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpicked Point Index Ġ= Ġi ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpicked Body Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinline Ġfun ĠScene Manager . forEach Physics Entity ( block : Ġ( body : ĠPhysics Entity ) Ġ-> ĠUnit ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġactive Scene . entities . forEach Fast Ġ{ Ġentities Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( entities . isNotEmpty () Ġ&& Ġentities [ 0 ] Ġis ĠPhysics Entity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentities . forEach Fast Ġ{ Ġblock ( it Ġas ĠPhysics Entity ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }