@ file : Suppress (" NOTH ING _ TO _ INLINE ") Ċ Ċ package Ġk tx . math Ċ Ċ import Ġcom . badlogic . gdx . math . Interpolation Ċ import Ġcom . badlogic . gdx . math . Math Utils Ċ import Ġcom . badlogic . gdx . math . Vector Ċ import Ġjava . util .* Ċ import Ġkotlin . math . abs Ċ import Ġkotlin . math . sqrt Ċ Ċ /** Ċ Ġ* ĠRepresent Ġan Ġimmutable Ġvector . Ċ Ġ* Ċ Ġ* ĠThis Ġis Ġthe Ġroot Ġinterface Ġof Ġimmutable Ġalternatives Ġto Ġthe Ġdefault Ġmutable Ġvectors Ġprovided Ġby ĠLib DG X Ċ Ġ*/ Ċ interface ĠImmutable Vector < T Ġ: ĠImmutable Vector < T >> Ġ: ĠComparable < T > Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġsquared Ġe uclidean Ġlength ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġis Ġfaster Ġthan Ġ[ Vector . len ] Ġbecause Ġit Ġavoids Ġcalculating Ġa Ġsquare Ġroot . ĠIt Ġis Ġuseful Ġfor Ġcomparisons , ĊĠĠĠĠ Ġ* Ġbut Ġnot Ġfor Ġgetting Ġexact Ġlengths , Ġas Ġthe Ġreturn Ġvalue Ġis Ġthe Ġsquare Ġof Ġthe Ġactual Ġlength . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġlen 2 : ĠFloat ĊĊĠĠĠ Ġ/** ĠReturns Ġthe Ġe uclidean Ġlength Ġ*/ ĊĠĠĠ Ġval Ġlen : ĠFloat Ġget () Ġ= Ġsqrt ( len 2 ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġunit Ġvector Ġof Ġsame Ġdirection Ġor Ġthis Ġvector Ġif Ġit Ġis Ġzero . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġnor : ĠT ĊĊĠĠĠ Ġ/** ĠReturns Ġwhether Ġthe Ġlength Ġof Ġthis Ġvector Ġis Ġsmaller Ġthan Ġthe Ġgiven Ġ[ margin ] Ġ*/ ĊĠĠĠ Ġfun Ġis Zero ( margin : ĠFloat Ġ= ĠMath Utils . FLOAT _ ROUND ING _ ERROR ): ĠBoolean ĊĊĠĠĠ Ġ/** ĠReturns Ġwhether Ġthis Ġvector Ġis Ġa Ġunit Ġlength Ġvector Ġwithin Ġthe Ġgiven Ġ[ margin ]. Ġ( no Ġmargin Ġby Ġdefault ) Ġ*/ ĊĠĠĠ Ġfun Ġis Unit ( margin : ĠFloat Ġ= ĠMath Utils . FLOAT _ ROUND ING _ ERROR ): ĠBoolean Ġ= Ġabs ( 1 f Ġ- Ġlen 2 ) Ġ< Ġmargin ĊĊĠĠĠ Ġ/** ĠReturns Ġthe Ġopposite Ġvector Ġof Ġsame Ġlength Ġ*/ ĊĠĠĠ Ġoperator Ġfun Ġunary Minus (): ĠT ĊĊĠĠĠ Ġ/** ĠReturns Ġthe Ġresult Ġof Ġsubtract ing Ġthe Ġ[ other ] Ġvector Ġfrom Ġthis Ġvector Ġ*/ ĊĠĠĠ Ġoperator Ġfun Ġminus ( other : ĠT ): ĠT ĊĊĠĠĠ Ġ/** ĠReturns Ġthe Ġresult Ġof Ġadding Ġthe Ġ[ other ] Ġvector Ġto Ġthis Ġvector Ġ*/ ĊĠĠĠ Ġoperator Ġfun Ġplus ( other : ĠT ): ĠT ĊĊĠĠĠ Ġ/** ĠReturns Ġa Ġnew Ġvector Ġinstance Ġwith Ġall Ġmembers Ġincrement ed Ġby Ġ 1 Ġ*/ ĊĠĠĠ Ġoperator Ġfun Ġinc (): ĠT ĊĊĠĠĠ Ġ/** ĠReturns Ġa Ġnew Ġvector Ġinstance Ġwith Ġall Ġmembers Ġdecrement ed Ġby Ġ 1 Ġ*/ ĊĠĠĠ Ġoperator Ġfun Ġdec (): ĠT ĊĊĠĠĠ Ġ/** ĠReturns Ġa Ġnew Ġvector Ġinstance Ġscaled Ġby Ġthe Ġgiven Ġ[ scalar ] Ġ*/ ĊĠĠĠ Ġoperator Ġfun Ġtimes ( scalar : ĠFloat ): ĠT ĊĊĠĠĠ Ġ/** ĠReturns Ġa Ġnew Ġvector Ġinstance Ġscaled Ġby Ġthe Ġgiven Ġ[ vector ] Ġ*/ ĊĠĠĠ Ġoperator Ġfun Ġtimes ( vector : ĠT ): ĠT ĊĊĠĠĠ Ġ/** ĠReturns Ġa Ġvector Ġof Ġthe Ġsame Ġdirection Ġand Ġa Ġsquared Ġlength Ġof Ġ[ length 2 ] Ġ*/ ĊĠĠĠ Ġfun Ġwith Length 2 ( length 2 : ĠFloat ): ĠT ĊĊĠĠĠ Ġ/** ĠReturns Ġthe Ġdot Ġproduct Ġof Ġthis Ġvector Ġby Ġthe Ġgiven Ġ[ vector ] Ġ*/ ĊĠĠĠ Ġin fix Ġfun Ġdot ( vector : ĠT ): ĠFloat ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġsquared Ġdistance Ġbetween Ġthis Ġand Ġthe Ġother Ġ[ vector ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġis Ġfaster Ġthan Ġ[ dst ] Ġbecause Ġit Ġavoids Ġcalculating Ġa Ġsquare Ġroot . ĠIt Ġis Ġuseful Ġfor Ġcomparisons , ĊĠĠĠĠ Ġ* Ġbut Ġnot Ġfor Ġgetting Ġexact Ġdistance , Ġas Ġthe Ġreturn Ġvalue Ġis Ġthe Ġsquare Ġof Ġthe Ġactual Ġdistance . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġin fix Ġfun Ġdst 2 ( vector : ĠT ): ĠFloat ĊĊĠĠĠ Ġ/** ĠLinear ly Ġinterpol ates Ġbetween Ġthis Ġvector Ġand Ġthe Ġ[ target ] Ġvector Ġby Ġ[ alpha ] Ġ*/ ĊĠĠĠ Ġfun Ġwith Lerp ( target : ĠT , Ġalpha : ĠFloat ): ĠT ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġa Ġvector Ġof Ġsame Ġlength Ġand Ġa Ġrandom Ġdirection . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġrng ĠRandom Ġnumber Ġgenerator Ġto Ġuse Ġ([ Math Utils . random ] Ġby Ġdefault ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġwith Random Direction ( rng : ĠRandom Ġ= ĠMath Utils . random ): ĠT ĊĊĠĠĠ Ġ/** ĠReturns Ġa Ġvector Ġof Ġsame Ġdirection Ġand Ġthe Ġgiven Ġ[ length ] Ġ*/ ĊĠĠĠ Ġfun Ġwith Length ( length : ĠFloat ): ĠT Ġ= Ġwith Length 2 ( length Ġ* Ġlength ) ĊĊĠĠĠ Ġ/** ĠReturns Ġthis Ġvector Ġif Ġthe Ġ[ Immutable Vector . len ] Ġis Ġ<= Ġ[ limit ] Ġor Ġa Ġvector Ġwith Ġthe Ġsame Ġdirection Ġand Ġlength Ġ[ limit ] Ġotherwise Ġ*/ ĊĠĠĠ Ġfun Ġwith Limit ( limit : ĠFloat ): ĠT Ġ= Ġwith Limit 2 ( limit Ġ* Ġlimit ) ĊĊĠĠĠ Ġ/** ĠReturns Ġthis Ġvector Ġif Ġthe Ġ[ Immutable Vector . len 2 ] Ġis Ġ<= Ġ[ limit 2 ] Ġor Ġa Ġvector Ġwith Ġthe Ġsame Ġdirection Ġand Ġlength Ġ[ limit 2 ] Ġotherwise Ġ*/ ĊĠĠĠ Ġfun Ġwith Limit 2 ( limit 2 : ĠFloat ): ĠT ĊĊĠĠĠ Ġ/** ĠReturns Ġa Ġvector Ġof Ġsame Ġdirection Ġand Ġthe Ġlength Ġclamp ed Ġbetween Ġ[ min ] Ġand Ġ[ max ] Ġ*/ ĊĠĠĠ Ġfun Ġwith Clamp ( min : ĠFloat , Ġmax : ĠFloat ): ĠT Ġ= Ġwith Clamp 2 ( min Ġ* Ġmin , Ġmax Ġ* Ġmax ) ĊĊĠĠĠ Ġ/** ĠReturns Ġa Ġvector Ġof Ġsame Ġdirection Ġand Ġthe Ġsquared Ġlength Ġclamp ed Ġbetween Ġ[ min 2 ] Ġand Ġ[ max 2 ] Ġ*/ ĊĠĠĠ Ġfun Ġwith Clamp 2 ( min 2 : ĠFloat , Ġmax 2 : ĠFloat ): ĠT ĊĊĠĠĠ Ġ/** ĠReturns Ġthe Ġresult Ġof Ġinterpolation Ġbetween Ġthis Ġvector Ġand Ġthe Ġgiven Ġ[ target ] Ġvector Ġby Ġ[ alpha ] Ġ( within Ġrange Ġ[ 0 , 1 ]) Ġusing Ġthe Ġgiven Ġ[ interpolation ] Ġmethod . Ġ*/ ĊĠĠĠ Ġfun Ġwith Interpolation ( target : ĠT , Ġalpha : ĠFloat , Ġinterpolation : ĠInterpol ation ): ĠT Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Lerp ( target , Ġinterpolation . apply ( alpha )) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġtrue Ġif Ġthis Ġvector Ġis Ġon - line Ġwith Ġthe Ġ[ other ] Ġvector Ġ( either Ġin Ġthe Ġsame Ġor Ġthe Ġopposite Ġdirection ) ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġepsilon ĠAccept able Ġmargin . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġis On Line ( other : ĠT , Ġepsilon : ĠFloat Ġ= ĠMath Utils . FLOAT _ ROUND ING _ ERROR ): ĠBoolean ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠComp ares Ġthis Ġvector Ġwith Ġthe Ġ[ other ] Ġvector , Ġusing Ġthe Ġsupplied Ġ[ epsilon ] Ġfor Ġfuzzy Ġequality Ġtesting ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġepsilon ĠAccept able Ġdifference Ġfor Ġmembers . ĠA Ġsmall Ġvalue Ġmakes Ġequality Ġit Ġstrict er , Ġwhile Ġa Ġbig Ġvalue Ġmakes Ġequality Ġf uzz ier . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġepsilon Equals ( other : ĠT , Ġepsilon : ĠFloat ): ĠBoolean ĊĊĠĠĠ Ġoverride Ġfun Ġcompare To ( other : ĠT ): ĠInt Ġ= Ġlen 2 . compareTo ( other . len 2 ) ĊĊĠĠĠ Ġ@ Deprecated ( MUT ABLE _ METHOD _ DE PREC ATION _ MESSAGE , ĠReplace With (" with Lerp ( target , Ġalpha )"), ĠDeprec ation Level . ERROR ) ĊĠĠĠ Ġfun Ġl erp ( target : ĠT , Ġalpha : ĠFloat ): ĠT Ġ= Ġwith Lerp ( target , Ġalpha ) ĊĊĠĠĠ Ġ@ Deprecated ( MUT ABLE _ METHOD _ DE PREC ATION _ MESSAGE , ĠReplace With (" with Length 2 ( len 2 )"), ĠDeprec ation Level . ERROR ) ĊĠĠĠ Ġfun Ġset Length 2 ( len 2 : ĠFloat ): ĠT Ġ= Ġwith Length 2 ( len 2 ) ĊĊĠĠĠ Ġ@ Deprecated ( MUT ABLE _ METHOD _ DE PREC ATION _ MESSAGE , ĠReplace With (" this Ġ* Ġscalar "), ĠDeprec ation Level . ERROR ) ĊĠĠĠ Ġfun Ġs cl ( scalar : ĠFloat ): ĠT Ġ= Ġthis Ġ* Ġscalar ĊĊĠĠĠ Ġ@ Deprecated ( MUT ABLE _ METHOD _ DE PREC ATION _ MESSAGE , ĠReplace With (" this Ġ* Ġv "), ĠDeprec ation Level . ERROR ) ĊĠĠĠ Ġfun Ġs cl ( v : ĠT ): ĠT Ġ= Ġthis Ġ* Ġv ĊĊĠĠĠ Ġ@ Deprecated ( MUT ABLE _ METHOD _ DE PREC ATION _ MESSAGE , ĠReplace With (" this Ġ+ Ġv "), ĠDeprec ation Level . ERROR ) ĊĠĠĠ Ġfun Ġadd ( v : ĠT ): ĠT Ġ= Ġthis Ġ+ Ġv ĊĊĠĠĠ Ġ@ Deprecated ( MUT ABLE _ METHOD _ DE PREC ATION _ MESSAGE , ĠReplace With (" with Random Direction () "), ĠDeprec ation Level . ERROR ) ĊĠĠĠ Ġfun Ġset To Random Direction (): ĠT Ġ= Ġwith Random Direction () ĊĊĠĠĠ Ġ@ Deprecated ( MUT ABLE _ METHOD _ DE PREC ATION _ MESSAGE , ĠReplace With (" this Ġ+ Ġ( v Ġ* Ġscalar )"), ĠDeprec ation Level . ERROR ) ĊĠĠĠ Ġfun Ġmul Add ( v : ĠT , Ġscalar : ĠFloat ): ĠT Ġ= Ġthis Ġ+ Ġ( v Ġ* Ġscalar ) ĊĊĠĠĠ Ġ@ Deprecated ( MUT ABLE _ METHOD _ DE PREC ATION _ MESSAGE , ĠReplace With (" this Ġ+ Ġ( v Ġ* Ġmul Vec )"), ĠDeprec ation Level . ERROR ) ĊĠĠĠ Ġfun Ġmul Add ( v : ĠT , Ġmul Vec : ĠT ): ĠT Ġ= Ġthis Ġ+ Ġ( v Ġ* Ġmul Vec ) ĊĊĠĠĠ Ġ@ Deprecated ( MUT ABLE _ METHOD _ DE PREC ATION _ MESSAGE , ĠReplace With (" with Limit ( limit )"), ĠDeprec ation Level . ERROR ) ĊĠĠĠ Ġfun Ġlimit ( limit : ĠFloat ): ĠT Ġ= Ġwith Limit ( limit ) ĊĊĠĠĠ Ġ@ Deprecated ( MUT ABLE _ METHOD _ DE PREC ATION _ MESSAGE , ĠReplace With (" with Clamp ( min , Ġmax )"), ĠDeprec ation Level . ERROR ) ĊĠĠĠ Ġfun Ġclamp ( min : ĠFloat , Ġmax : ĠFloat ): ĠT Ġ= Ġwith Clamp ( min , Ġmax ) ĊĊĠĠĠ Ġ@ Deprecated ( MUT ABLE _ METHOD _ DE PREC ATION _ MESSAGE , ĠReplace With (" v "), ĠDeprec ation Level . ERROR ) ĊĠĠĠ Ġfun Ġset ( v : ĠT ): ĠT Ġ= Ġv ĊĊĠĠĠ Ġ@ Deprecated ( MUT ABLE _ METHOD _ DE PREC ATION _ MESSAGE , ĠReplace With (" with Interpolation ( target , Ġalpha , Ġinterpol ator )"), ĠDeprec ation Level . ERROR ) ĊĠĠĠ Ġfun Ġinterpolate ( target : ĠT , Ġalpha : ĠFloat , Ġinterpol ator : ĠInterpol ation ): ĠT Ġ= Ġwith Interpolation ( target , Ġalpha , Ġinterpol ator ) ĊĊĠĠĠ Ġ@ Deprecated ( MUT ABLE _ METHOD _ DE PREC ATION _ MESSAGE , ĠReplace With (" with Length ( len )"), ĠDeprec ation Level . ERROR ) ĊĠĠĠ Ġfun Ġset Length ( len : ĠFloat ): ĠT Ġ= Ġwith Length ( len ) ĊĊĠĠĠ Ġ@ Deprecated ( MUT ABLE _ METHOD _ DE PREC ATION _ MESSAGE , ĠReplace With (" with Limit 2 ( limit 2 )"), ĠDeprec ation Level . ERROR ) ĊĠĠĠ Ġfun Ġlimit 2 ( limit 2 : ĠFloat ): ĠT Ġ= Ġwith Limit 2 ( limit 2 ) ĊĊĠĠĠ Ġ@ Deprecated ( MUT ABLE _ METHOD _ DE PREC ATION _ MESSAGE , ĠReplace With (" this Ġ- Ġv "), ĠDeprec ation Level . ERROR ) ĊĠĠĠ Ġfun Ġsub ( v : ĠT ): ĠT Ġ= Ġthis Ġ- Ġv ĊĊĠĠĠ Ġ@ Deprecated ( MUT ABLE _ METHOD _ DE PREC ATION _ MESSAGE , ĠReplace With (" nor "), ĠDeprec ation Level . ERROR ) ĊĠĠĠ Ġfun Ġnor (): ĠT Ġ= Ġnor Ċ } Ċ Ċ /** ĠReturns Ġthe Ġdistance Ġbetween Ġthis Ġand Ġthe Ġ[ other ] Ġvector Ġ*/ Ċ inline Ġin fix Ġfun Ġ< T Ġ: ĠImmutable Vector < T >> ĠT . dst ( other : ĠT ): ĠFloat Ġ= Ġsqrt ( dst 2 ( other )) Ċ Ċ /** ĠReturns Ġthis Ġvector Ġscaled Ġby Ġ( 1 Ġ/ Ġ[ scalar ]) Ġ*/ Ċ inline Ġoperator Ġfun Ġ< T Ġ: ĠImmutable Vector < T >> ĠT . div ( scalar : ĠFloat ): ĠT Ġ= Ġtimes ( 1 Ġ/ Ġscalar ) Ċ Ċ /** Ċ Ġ* ĠReturns Ġtrue Ġif Ġthis Ġvector Ġis Ġcol linear Ġwith Ġthe Ġ[ other ] Ġvector Ċ Ġ* Ċ Ġ* Ġ@ param Ġepsilon ĠAccept able Ġmargin . Ċ Ġ*/ Ċ fun Ġ< T Ġ: ĠImmutable Vector < T >> ĠT . is Col linear ( other : ĠT , Ġepsilon : ĠFloat Ġ= ĠMath Utils . FLOAT _ ROUND ING _ ERROR ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġis On Line ( other , Ġepsilon ) Ġ&& Ġhas Same Direction ( other ) Ċ Ċ /** Ċ Ġ* ĠReturns Ġtrue Ġif Ġthis Ġvector Ġis Ġopposite Ġcol linear Ġwith Ġthe Ġ[ other ] Ġvector Ċ Ġ* Ċ Ġ* Ġ@ param Ġepsilon ĠAccept able Ġmargin . Ċ Ġ*/ Ċ fun Ġ< T Ġ: ĠImmutable Vector < T >> ĠT . is Col linear Opp osite ( other : ĠT , Ġepsilon : ĠFloat Ġ= ĠMath Utils . FLOAT _ ROUND ING _ ERROR ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġis On Line ( other , Ġepsilon ) Ġ&& Ġhas Opp osite Direction ( other ) Ċ Ċ /** Ċ Ġ* ĠReturns Ġtrue Ġif Ġthis Ġvector Ġis Ġopposite Ġper pend icular Ġwith Ġthe Ġ[ other ] Ġvector Ċ Ġ* Ċ Ġ* Ġ@ param Ġepsilon ĠAccept able Ġmargin . Ċ Ġ*/ Ċ fun Ġ< T Ġ: ĠImmutable Vector < T >> ĠT . is Per pend icular ( other : ĠT , Ġepsilon : ĠFloat Ġ= ĠMath Utils . FLOAT _ ROUND ING _ ERROR ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ ĠMath Utils . is Zero ( dot ( other ), Ġepsilon ) Ċ Ċ /** ĠReturns Ġwhether Ġthis Ġvector Ġhas Ġsimilar Ġdirection Ġcompared Ġto Ġthe Ġ[ other ] Ġvector . Ġ*/ Ċ fun Ġ< T Ġ: ĠImmutable Vector < T >> ĠT . has Same Direction ( other : ĠT ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġdot ( other ) Ġ> Ġ 0 f Ċ Ċ /** ĠReturns Ġwhether Ġthis Ġvector Ġhas Ġopposite Ġdirection Ġcompared Ġto Ġthe Ġ[ other ] Ġvector . Ġ*/ Ċ fun Ġ< T Ġ: ĠImmutable Vector < T >> ĠT . has Opp osite Direction ( other : ĠT ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġdot ( other ) Ġ< Ġ 0 f Ċ Ċ internal Ġconst Ġval ĠMUT ABLE _ METHOD _ DE PREC ATION _ MESSAGE Ġ= Ġ" Un like Ġits Ġequivalent Ġin ĠLib G DX , Ġthis Ġfunction Ġdoes Ġnot Ġchange Ġthe Ġinternal Ġstate Ġof Ġthe Ġvector Ġand Ġreturns Ġa Ġnew Ġinstance Ġinstead . ĠThis Ġmight Ġbreak Ġexisting Ġcode Ġdesigned Ġwith Ġmutable Ġvectors Ġin Ġmind ." Ċ