package Ġlt . mark mer kk . app . box 2 d Ċ Ċ import Ġcom . badlogic . gdx . math . Vector 2 Ċ import Ġcom . badlogic . gdx . physics . box 2 d .* Ċ import Ġlt . mark mer kk . app . box 2 d . temp _ components . wheel . Re vol ving Wheel Impl Ċ import Ġlt . mark mer kk . app . box 2 d . temp _ components . wheel . Wheel Ċ import Ġlt . mark mer kk . app . box 2 d . temp _ components . wheel . Wheel Impl Ċ Ċ /** Ċ Ġ* Ġ@ author Ġm arius mer ke vic ius Ċ Ġ* Ġ@ since Ġ 2 0 1 6 - 0 6 - 0 4 Ċ Ġ*/ Ċ // Ġtodo Ġ: ĠProbably Ġwill Ġneed Ġlogic Ġseparation Ċ class ĠCar Box 2 DI mpl ( ĊĠĠĠĠĠĠĠ Ġval Ġworld : ĠWorld , ĊĠĠĠĠĠĠĠ Ġval Ġposition : ĠVector 2 Ċ ) Ġ: ĠCar Box 2 D Ġ{ ĊĠĠĠ Ġoverride Ġval Ġbody Ġ: ĠBody ĊĠĠĠ Ġprivate Ġval Ġwidth Ġ= Ġ 1 f ĊĠĠĠ Ġprivate Ġval Ġheight Ġ= Ġ 2 f ĊĠĠĠ Ġprivate Ġval Ġmax Ste er Angle Ġ= Ġ 3 0 f ĊĠĠĠ Ġprivate Ġval Ġmin Ste er Angle Ġ= Ġ 1 5 f ĊĠĠĠ Ġprivate Ġval Ġpower Ġ= Ġ 5 f ĊĠĠĠ Ġprivate Ġval Ġmax Speed Ġ= Ġ 2 0 f ĊĠĠĠ Ġprivate Ġval Ġangle Ġ= ĠMath . PI . toFloat () ĊĠĠĠ Ġprivate Ġval Ġwheel s : ĠList < Wheel > ĊĊĠĠĠ Ġoverride Ġvar Ġste er Ġ= ĠCar Box 2 D . STE ER _ NONE ĊĠĠĠ Ġoverride Ġvar Ġaccel erate Ġ= ĠCar Box 2 D . ACC _ NONE ĊĠĠĠ Ġvar Ġwheel Angle : ĠFloat Ġ= Ġ 0 f ĊĠĠĠ Ġvar Ġspeed Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġvelocity Ġ= Ġbody . linear Velocity ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvelocity Ġ= Ġvelocity . nor () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvelocity Ġ= ĠVector 2 ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvelocity . x Ġ* Ġ( speed Ġ* Ġ 1 0 0 0 . 0 f Ġ/ Ġ 3 6 0 0 . 0 f ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvelocity . y Ġ* Ġ( speed Ġ* Ġ 1 0 0 0 . 0 f Ġ/ Ġ 3 6 0 0 . 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . body . linear Velocity Ġ= Ġvelocity ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbody Def Ġ= ĠBody Def () ĊĠĠĠĠĠĠĠ Ġbody Def . type Ġ= ĠBody Def . Body Type . Dynamic Body ĊĠĠĠĠĠĠĠ Ġbody Def . position . set ( position ) ĊĠĠĠĠĠĠĠ Ġbody Def . angle Ġ= Ġangle ĊĠĠĠĠĠĠĠ Ġbody Ġ= Ġworld . create Body ( body Def ) ĊĊĠĠĠĠĠĠĠ Ġval Ġfixture Def Ġ= ĠFix ture Def () ĊĠĠĠĠĠĠĠ Ġfixture Def . density Ġ= Ġ 1 . 0 f ĊĠĠĠĠĠĠĠ Ġfixture Def . f riction Ġ= Ġ 0 . 1 f ĊĠĠĠĠĠĠĠ Ġfixture Def . rest itution Ġ= Ġ 0 . 2 f ĊĊĠĠĠĠĠĠĠ Ġval Ġcar Shape Ġ= ĠPolygon Shape () ĊĠĠĠĠĠĠĠ Ġcar Shape . set As Box ( width Ġ/ Ġ 2 , Ġheight Ġ/ Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġfixture Def . shape Ġ= Ġcar Shape ĊĠĠĠĠĠĠĠ Ġbody . create Fixture ( fixture Def ) ĊĊĠĠĠĠĠĠĠ Ġwheel s Ġ= ĠlistOf Ġ< Wheel >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRe vol ving Wheel Impl ( world Ġ= Ġworld , Ġcar Box 2 D Ġ= Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpos X Ġ= Ġ- 0 . 5 f , Ġpos Y Ġ= Ġ- 0 . 6 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= Ġ 0 . 2 f , Ġheight Ġ= Ġ 0 . 4 f ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRe vol ving Wheel Impl ( world Ġ= Ġworld , Ġcar Box 2 D Ġ= Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpos X Ġ= Ġ 0 . 5 f , Ġpos Y Ġ= Ġ- 0 . 6 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= Ġ 0 . 2 f , Ġheight Ġ= Ġ 0 . 4 f ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠW heel Impl ( world Ġ= Ġworld , Ġcar Box 2 D Ġ= Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpos X Ġ= Ġ- 0 . 5 f , Ġpos Y Ġ= Ġ 0 . 6 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= Ġ 0 . 2 f , Ġheight Ġ= Ġ 0 . 4 f ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠW heel Impl ( world Ġ= Ġworld , Ġcar Box 2 D Ġ= Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpos X Ġ= Ġ 0 . 5 f , Ġpos Y Ġ= Ġ 0 . 6 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= Ġ 0 . 2 f , Ġheight Ġ= Ġ 0 . 4 f ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Speed K MH (): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvelocity Ġ= Ġthis . body . linear Velocity ĊĠĠĠĠĠĠĠ Ġval Ġlen Ġ= Ġvelocity . len () ĊĠĠĠĠĠĠĠ Ġreturn Ġlen Ġ/ Ġ 1 0 0 0 Ġ* Ġ 3 6 0 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Local Velocity (): ĠVector 2 Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . body . getLocal Vector ( body . get Linear Velocity From Local Point ( Vector 2 ( 0 f , Ġ 0 f ))) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate ( deltaTime : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwheel s . forEach Ġ{ Ġit . kill Side way Vector () Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġincrease Ġ= Ġmax Ste er Angle Ġ* Ġdelta Time Ġ* Ġ 5 f ĊĠĠĠĠĠĠĠ Ġwhen Ġ( ste er ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCar Box 2 D . STE ER _ LEFT Ġ-> Ġwheel Angle Ġ= ĠMath . min (( Math . max ( wheel Angle , Ġ 0 f ) Ġ+ Ġincrease ). toFloat (), Ġmax Ste er Angle ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCar Box 2 D . STE ER _ RIGHT Ġ-> Ġwheel Angle Ġ= ĠMath . max ( Math . min ( wheel Angle , Ġ 0 f ) Ġ- Ġincrease , Ġ- max Ste er Angle ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġwheel Angle Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwheel s . filter Is Instance < Re vol ving Wheel Impl >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ Ġit . change Angle ( wheel Angle ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġbase Vector : ĠVector 2 ĊĠĠĠĠĠĠĠ Ġif Ġ( accel erate Ġ== ĠCar Box 2 D . ACC _ FORWARD Ġ&& Ġthis . get Speed K MH () Ġ< Ġthis . max Speed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase Vector Ġ= ĠVector 2 ( 0 f , Ġ- 1 f ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( accel erate Ġ== ĠCar Box 2 D . ACC _ BACK WARD ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( getLocal Velocity (). y Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbase Vector Ġ= ĠVector 2 ( 0 f , Ġ 1 . 3 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbase Vector Ġ= ĠVector 2 ( 0 f , Ġ 0 . 7 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( accel erate Ġ== ĠCar Box 2 D . ACC _ NONE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase Vector Ġ= ĠVector 2 ( 0 f , Ġ 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( get Speed K MH () Ġ< Ġ 7 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspeed Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( this . getLocal Velocity (). y Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbase Vector Ġ= ĠVector 2 ( 0 f , Ġ 0 . 7 f ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( this . getLocal Velocity (). y Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbase Vector Ġ= ĠVector 2 ( 0 f , Ġ- 0 . 7 f ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase Vector Ġ= ĠVector 2 ( 0 f , Ġ 0 f ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġforce Vector Ġ= ĠVector 2 ( power Ġ* Ġbase Vector . x , Ġpower Ġ* Ġbase Vector . y ) ĊĠĠĠĠĠĠĠ Ġwheel s . filter Is Instance < Re vol ving Wheel Impl >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposition Ġ= Ġit . body . world Center ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . body . apply Force ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . body . get World Vector ( Vector 2 ( force Vector . x , Ġforce Vector . y )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdestroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġworld . destroy Body ( body ) ĊĠĠĠĠĠĠĠ Ġwheel s . forEach Ġ{ Ġworld . destroy Body ( it . body ) Ġ} ĊĠĠĠ Ġ} Ċ Ċ }