package Ġcom . dark gravity . k hex grid . math Ċ Ċ import Ġcom . badlogic . gdx . math .* Ċ import Ġk tx . math . Immutable Vector 2 Ċ import Ġkotlin . math . abs Ċ import Ġkotlin . math . round ToInt Ċ Ċ fun ĠFloat . abs (): ĠFloat Ġ= Ġabs ( this ) Ċ fun ĠFloat . floor (): ĠFloat Ġ= Ġkotlin . math . floor ( this ) Ċ fun ĠFloat . floor ToInt (): ĠInt Ġ= ĠMath Utils . floor ( this ) Ċ fun ĠFloat . round (): ĠFloat Ġ= Ġkotlin . math . round ( this ) Ċ fun ĠFloat . ceil (): ĠFloat Ġ= Ġkotlin . math . ceil ( this ) Ċ fun ĠFloat . ceil ToInt (): ĠInt Ġ= ĠMath Utils . ceil ( this ) Ċ Ċ operator Ġfun ĠGrid Point 2 . plus ( vector : ĠImmutable Vector 2 ): ĠImmutable Vector 2 Ġ= ĠImmutable Vector 2 ( x Ġ+ Ġvector . x , Ġy Ġ+ Ġvector . y ) Ċ operator Ġfun ĠGrid Point 2 . minus ( vector : ĠImmutable Vector 2 ): ĠImmutable Vector 2 Ġ= ĠImmutable Vector 2 ( x Ġ- Ġvector . x , Ġy Ġ- Ġvector . y ) Ċ fun ĠGrid Point 2 . to Vector 2 (): ĠImmutable Vector 2 Ġ= ĠImmutable Vector 2 ( x . toFloat (), Ġy . toFloat ()) Ċ Ċ fun ĠGrid Point 3 . to Cube Coordinate (): ĠCube Coordinate Ġ= ĠCube Coordinate ( x , Ġy , Ġz ) Ċ Ċ operator Ġfun ĠImmutable Vector 2 . div ( vector : ĠImmutable Vector 2 ): ĠImmutable Vector 2 Ġ= ĊĠĠĠ Ġthis Ġ* ĠImmutable Vector 2 ( 1 f Ġ/ Ġvector . x , Ġ 1 f Ġ/ Ġvector . y ) Ċ Ċ operator Ġfun ĠImmutable Vector 2 . div ( number : ĠNumber ): ĠImmutable Vector 2 Ġ= ĊĠĠĠ Ġthis Ġ* ĠImmutable Vector 2 ( 1 f Ġ/ Ġnumber . toFloat (), Ġ 1 f Ġ/ Ġnumber . toFloat ()) Ċ Ċ fun ĠImmutable Vector 2 . to Grid Point 2 (): ĠGrid Point 2 Ġ= ĠGrid Point 2 ( x . round ToInt (), Ġy . round ToInt ()) Ċ fun ĠImmutable Vector 2 . to Cube Coordinate (): ĠCube Coordinate Ġ= ĠCube Coordinate ( x . round ToInt (), Ġy . round ToInt ()) Ċ fun ĠImmutable Vector 2 . to Vector 3 (): ĠVector 3 Ġ= ĠVector 3 ( x , Ġy , Ġ 0 f ) Ċ Ċ operator Ġfun ĠVector 3 . plus ( vector : ĠVector 3 ): ĠVector 3 Ġ= Ġc py (). add ( vector ) Ċ operator Ġfun ĠVector 3 . plus ( grid Point : ĠGrid Point 3 ): ĠVector 3 Ġ= ĊĠĠĠ Ġc py (). add ( grid Point . x . toFloat (), Ġgrid Point . y . toFloat (), Ġgrid Point . z . toFloat ()) Ċ Ċ operator Ġfun ĠVector 3 . minus ( vector : ĠVector 3 ): ĠVector 3 Ġ= Ġc py (). sub ( vector ) Ċ operator Ġfun ĠVector 3 . minus ( grid Point : ĠGrid Point 3 ): ĠVector 3 Ġ= ĊĠĠĠ Ġc py (). sub ( grid Point . x . toFloat (), Ġgrid Point . y . toFloat (), Ġgrid Point . z . toFloat ()) Ċ Ċ operator Ġfun ĠVector 3 . times ( vector : ĠVector 3 ): ĠVector 3 Ġ= Ġc py (). scl ( vector ) Ċ operator Ġfun ĠVector 3 . times ( number : ĠNumber ): ĠVector 3 Ġ= Ġc py (). scl ( number . toFloat (), Ġnumber . toFloat (), Ġnumber . toFloat ()) Ċ operator Ġfun ĠVector 3 . div ( vector : ĠVector 3 ): ĠVector 3 Ġ= Ġc py (). scl ( 1 f Ġ/ Ġvector . x , Ġ 1 f Ġ/ Ġvector . y , Ġ 1 f Ġ/ Ġvector . z ) Ċ operator Ġfun ĠVector 3 . div ( number : ĠNumber ): ĠVector 3 Ġ= ĊĠĠĠ Ġc py (). scl ( 1 f Ġ/ Ġnumber . toFloat (), Ġ 1 f Ġ/ Ġnumber . toFloat (), Ġ 1 f Ġ/ Ġnumber . toFloat ()) Ċ Ċ operator Ġfun ĠVector 3 . plus Assign ( vector : ĠVector 3 ) Ġ{ ĊĠĠĠ Ġadd ( vector ) Ċ } Ċ Ċ operator Ġfun ĠVector 3 . minus Assign ( vector : ĠVector 3 ) Ġ{ ĊĠĠĠ Ġsub ( vector ) Ċ } Ċ Ċ operator Ġfun ĠVector 3 . times Assign ( vector : ĠVector 3 ) Ġ{ ĊĠĠĠ Ġs cl ( vector ) Ċ } Ċ Ċ operator Ġfun ĠVector 3 . times Assign ( number : ĠNumber ) Ġ{ ĊĠĠĠ Ġs cl ( number . toFloat (), Ġnumber . toFloat (), Ġnumber . toFloat ()) Ċ } Ċ Ċ operator Ġfun ĠVector 3 . div Assign ( vector : ĠVector 3 ) Ġ{ ĊĠĠĠ Ġs cl ( 1 Ġ/ Ġvector . x , Ġ 1 Ġ/ Ġvector . y , Ġ 1 Ġ/ Ġvector . z ) Ċ } Ċ Ċ operator Ġfun ĠVector 3 . div Assign ( number : ĠNumber ) Ġ{ ĊĠĠĠ Ġs cl ( 1 Ġ/ Ġnumber . toFloat (), Ġ 1 Ġ/ Ġnumber . toFloat (), Ġ 1 Ġ/ Ġnumber . toFloat ()) Ċ } Ċ Ċ fun ĠVector 3 . abs (): ĠVector 3 Ġ= ĠVector 3 ( abs ( x ), Ġabs ( y ), Ġabs ( z )) Ċ fun ĠVector 3 . round (): ĠGrid Point 3 Ġ= ĠGrid Point 3 ( x . round ToInt (), Ġy . round ToInt (), Ġz . round ToInt ()) Ċ fun ĠVector 3 . to Vector 2 (): ĠVector 2 Ġ= ĠVector 2 ( x , Ġy ) Ċ Ċ fun ĠVector 3 . to Cube Coordinate (): ĠCube Coordinate Ġ{ ĊĠĠĠ Ġval Ġrounded Ġ= Ġround () ĊĠĠĠ Ġval Ġdiff Ġ= Ġ( this Ġ- Ġrounded ). abs () ĊĠĠĠ Ġif Ġ( diff . x Ġ> Ġdiff . y Ġ&& Ġdiff . x Ġ> Ġdiff . z ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrounded . x Ġ= Ġ- rounded . y Ġ- Ġrounded . z ĊĠĠĠ Ġ} Ġelse Ġif Ġ( diff . y Ġ> Ġdiff . z ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrounded . y Ġ= Ġ- rounded . x Ġ- Ġrounded . z ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġrounded . z Ġ= Ġ- rounded . x Ġ- Ġrounded . y ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġrounded . to Cube Coordinate () Ċ }