@ file : Suppress (" unused ") Ġ// ĠThere Ġwill Ġbe Ġmany Ġfunctions Ġhere Ġthat Ġgo Ġunused Ġmost Ġof Ġthe Ġtime Ċ Ċ package Ġcom . me chan ica . engine . util . extensions Ċ Ċ import Ġcom . c ave . library . vector . vec 2 . Inline Vector Ċ import Ġcom . c ave . library . vector . vec 2 . Vector 2 Ċ import Ġcom . me chan ica . engine . util . Vector Array Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġdom in Ġon Ġ 0 2 / 1 1 / 2 0 1 7 . Ċ Ġ*/ Ċ Ċ fun Ġ< T > ĠArray < T >. set ( setter : Ġ( Int ) Ġ-> ĠT ) Ġ{ ĊĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. this . size ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis [ i ] Ġ= Ġsetter ( i ) ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ fun ĠArray < Vector 2 >. contains Point ( point : ĠVector 2 ): ĠBoolean Ġ{ ĊĠĠĠ Ġval Ġlen Ġ= Ġthis . size ĊĠĠĠ Ġvar Ġresult Ġ= Ġfalse ĊĊĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġlen ){ ĊĠĠĠĠĠĠĠ Ġval Ġj Ġ= Ġ( i Ġ+ Ġlen Ġ- Ġ 1 )% len ĊĠĠĠĠĠĠĠ Ġif Ġ(( this [ i ]. y Ġ> Ġpoint . y ) Ġ!= Ġ( this [ j ]. y Ġ> Ġpoint . y ) Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( point . x Ġ< Ġ( this [ j ]. x Ġ- Ġthis [ i ]. x ) Ġ* Ġ( point . y Ġ- Ġthis [ i ]. y ) Ġ/ Ġ( this [ j ]. y - this [ i ]. y ) Ġ+ Ġthis [ i ]. x )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġ! result ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġresult Ċ } Ċ Ċ fun ĠArray < Vector 2 >. toFloat Array ( coordinate Size : ĠInt ): ĠFloat Array Ġ{ ĊĠĠĠ Ġval Ġfloats Ġ= ĠFloat Array ( this . size * coordinate Size ) ĊĠĠĠ Ġfor Ġ( i Ġin Ġthis . indices ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfloats Index Ġ= Ġi * coordinate Size ĊĠĠĠĠĠĠĠ Ġfloats [ float s Index ] Ġ= Ġthis [ i ]. x . toFloat () ĊĠĠĠĠĠĠĠ Ġfloats [ float s Index + 1 ] Ġ= Ġthis [ i ]. y . toFloat () ĊĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġ 2 Ġuntil Ġcoordinate Size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfloats [ float s Index Ġ+ Ġj ] Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġfloats Ċ } Ċ Ċ // fun ĠList < Vector 2 >. toFloat Buffer ( coordinate Size : ĠInt ): ĠFloat Buffer Ġ{ Ċ // ĠĠĠ Ġval Ġfloats Ġ= ĠFloat Array ( this . size * coordinate Size ) Ċ // ĠĠĠ Ġfor Ġ( i Ġin Ġthis . indices ) Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġval Ġfloats Index Ġ= Ġi * coordinate Size Ċ // ĠĠĠĠĠĠĠ Ġfloats [ float s Index ] Ġ= Ġthis [ i ]. x . toFloat () Ċ // ĠĠĠĠĠĠĠ Ġfloats [ float s Index + 1 ] Ġ= Ġthis [ i ]. y . toFloat () Ċ // ĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġ 2 Ġuntil Ġcoordinate Size ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġfloats [ float s Index Ġ+ Ġj ] Ġ= Ġ 1 f Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠ Ġ} Ċ // ĠĠĠ Ġreturn Ġfloats . to Buffer () Ċ //} Ċ Ċ inline Ġoperator Ġfun Ġ< re ified ĠT > ĠArray < T >. get ( range : ĠInt Range ): ĠArray < T >{ ĊĠĠĠ Ġreturn Ġrange . map Ġ{ Ġthis [ it ] Ġ}. to Typed Array () Ċ } Ċ Ċ fun ĠArray < Float >. mean (): ĠFloat Ġ{ ĊĠĠĠ Ġreturn Ġthis . sum ()/ this . size Ċ } Ċ Ċ fun ĠList < Float >. mean (): ĠFloat Ġ{ ĊĠĠĠ Ġreturn Ġthis . sum ()/ this . size Ċ } ĊĊ Ċ fun ĠList < Double >. mean (): ĠDouble Ġ{ ĊĠĠĠ Ġreturn Ġthis . sum ()/ this . size Ċ } ĊĊ Ċ fun ĠFloat Array . fill ( array List : ĠList < Vector 2 >, Ġstart : ĠInt Ġ= Ġ 0 , Ġend : ĠInt Ġ= Ġ( array List . size Ġ+ Ġstart )) Ġ{ ĊĠĠĠ Ġfor Ġ( i Ġin Ġstart Ġuntil Ġend ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis [ i * 3 ] Ġ= Ġarray List [ i ]. x . toFloat () ĊĠĠĠĠĠĠĠ Ġthis [ i * 3 Ġ+ Ġ 1 ] Ġ= Ġarray List [ i ]. y . toFloat () ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠFloat Array . fill ( array : ĠArray < out ĠVector 2 >, Ġstart : ĠInt Ġ= Ġ 0 , Ġend : ĠInt Ġ= Ġ( array . size Ġ+ Ġstart )) Ġ{ ĊĠĠĠ Ġfor Ġ( i Ġin Ġstart Ġuntil Ġend ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis [ i * 3 ] Ġ= Ġarray [ i ]. x . toFloat () ĊĠĠĠĠĠĠĠ Ġthis [ i * 3 Ġ+ Ġ 1 ] Ġ= Ġarray [ i ]. y . toFloat () ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠFloat Array . fill ( array : ĠVector Array , Ġstart : ĠInt Ġ= Ġ 0 , Ġend : ĠInt Ġ= Ġ( array . size Ġ+ Ġstart )) Ġ{ ĊĠĠĠ Ġfor Ġ( i Ġin Ġstart Ġuntil Ġend ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis [ i * 3 ] Ġ= Ġarray [ i ]. x . toFloat () ĊĠĠĠĠĠĠĠ Ġthis [ i * 3 Ġ+ Ġ 1 ] Ġ= Ġarray [ i ]. y . toFloat () ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠFloat Array . fill ( array List : ĠArray < Inline Vector >, Ġstart : ĠInt Ġ= Ġ 0 , Ġend : ĠInt Ġ= Ġ( array List . size Ġ+ Ġstart )) Ġ{ ĊĠĠĠ Ġfor Ġ( i Ġin Ġstart Ġuntil Ġend ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis [ i * 3 ] Ġ= Ġarray List [ i ]. x . toFloat () ĊĠĠĠĠĠĠĠ Ġthis [ i * 3 Ġ+ Ġ 1 ] Ġ= Ġarray List [ i ]. y . toFloat () ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠFloat Array . fill Light Weight ( iterator : ĠIterator < Inline Vector >) Ġ{ ĊĠĠĠ Ġfor Ġ(( i , Ġv ) Ġin Ġiterator . with Index ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis [ i * 3 ] Ġ= Ġv . x . toFloat () ĊĠĠĠĠĠĠĠ Ġthis [ i * 3 Ġ+ Ġ 1 ] Ġ= Ġv . y . toFloat () ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠFloat Array . fill ( iterator : ĠIterator < Vector 2 >) Ġ{ ĊĠĠĠ Ġfor Ġ(( i , Ġv ) Ġin Ġiterator . with Index ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis [ i * 3 ] Ġ= Ġv . x . toFloat () ĊĠĠĠĠĠĠĠ Ġthis [ i * 3 Ġ+ Ġ 1 ] Ġ= Ġv . y . toFloat () ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ /** Ċ Ġ* ĠA Ġversion Ġof Ġfor Ġeach Ġthat Ġshould Ġbe Ġmore Ġefficient Ġfor Ġlists Ġthat Ċ Ġ* Ġare Ġfast Ġat Ġgetting Ġelement Ġwith Ġrandom Ġaccess Ċ Ġ* Ċ Ġ* Ġ@ param Ġaction Ġaction Ġthat Ġshould Ġbe Ġperformed Ġon Ġeach Ġelement Ċ Ġ*/ Ċ inline Ġfun Ġ< E > ĠArray < E >. for i ( action : Ġ( E ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġfor Ġ( i Ġin Ġthis . indices ) Ġ{ ĊĠĠĠĠĠĠĠ Ġaction ( this [ i ]) ĊĠĠĠ Ġ} Ċ } Ċ Ċ inline Ġfun Ġ< E > ĠArray < E >. for i Indexed ( action : Ġ( E , ĠInt ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġfor Ġ( i Ġin Ġthis . indices ) Ġ{ ĊĠĠĠĠĠĠĠ Ġaction ( this [ i ], Ġi ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ inline Ġfun Ġ< E > Ġwith Each ( array : ĠArray < E >, Ġoperation : ĠE . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġfor Ġ( i Ġin Ġarray . indices ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoperation ( array [ i ]) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠList <* >. index Loop ed ( index : ĠInt ): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġindex . loop ed ( this . size ) Ċ } Ċ Ċ fun ĠInt . loop ed ( size : ĠInt ): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġthis Ġ< Ġ 0 Ġ-> Ġsize Ġ+ Ġthis ĊĠĠĠĠĠĠĠ Ġthis Ġ>= Ġsize Ġ-> Ġthis Ġ- Ġsize ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthis ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠList <* >. index Constr ained ( index : ĠInt ): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġindex Ġ< Ġ 0 Ġ-> Ġ 0 ĊĠĠĠĠĠĠĠ Ġindex Ġ> Ġthis . last Index Ġ-> Ġthis . last Index ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġindex ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġ< E > ĠList < E >. loop ed Get ( index : ĠInt ): ĠE Ġ= Ġthis [ index Loop ed ( index )] Ċ fun Ġ< E > ĠList < E >. get Constr ained ( index : ĠInt ): ĠE Ġ= Ġthis [ index Constr ained ( index )] ĊĊ