package Ġorg . val ky ri ens k ies . core . util Ċ Ċ import Ġorg . j om l . Vector 3 i Ċ import Ġorg . j om l . Vector 3 ic Ċ import Ġjava . nio . ByteBuffer Ċ Ċ fun Ġas Long ( x : ĠInt , Ġy : ĠInt ): ĠLong Ġ= Ġx . to Long () Ġor Ġ( y . to Long () Ġshl Ġ 3 2 ) Ċ fun Ġas Ints ( x : ĠLong ): ĠPair < Int , ĠInt > Ġ= ĠPair ( x . toInt (), Ġ( x Ġshr Ġ 3 2 ). toInt ()) Ċ Ċ inline Ġfun ĠByte . iterate Bits ( func : Ġ( Boolean , ĠInt ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġfor Ġ( i Ġin Ġ 8 Ġdown To Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmasked Ġ= Ġ( this . toInt () Ġand Ġ( 1 Ġshl Ġi )) ĊĠĠĠĠĠĠĠ Ġfunc ( masked Ġ!= Ġ 0 , Ġi ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ inline Ġfun ĠInt . iterate Bits ( func : Ġ( Boolean , ĠInt ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġfor Ġ( i Ġin Ġ 3 2 Ġdown To Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmasked Ġ= Ġthis Ġand Ġ( 1 Ġshl Ġi ) ĊĠĠĠĠĠĠĠ Ġfunc ( masked Ġ!= Ġ 0 , Ġi ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ inline Ġfun ĠLong . iterate Bits ( func : Ġ( Boolean , ĠInt ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġfor Ġ( i Ġin Ġ 6 4 Ġdown To Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmasked Ġ= Ġthis Ġand Ġ( 1 L Ġshl Ġi ) ĊĠĠĠĠĠĠĠ Ġfunc ( masked Ġ!= Ġ 0 L , Ġi ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠFor Ġexample ĠByteBuffer Ġis Ġ 0 1 1 1 0 Ġthen Ġthis Ġis Ġcalled Ġwith Ċ Ġ* Ġ( false , Ġ 0 ), Ġ( true , Ġ 1 ), Ġ( true , Ġ 2 ), Ġ( true , Ġ 3 ), Ġ( false , Ġ 4 ) Ċ Ġ*/ Ċ inline Ġfun ĠByteBuffer . iterate Bits ( func : Ġ( Boolean , ĠInt ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. this . capacity ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbyte Ġ= Ġthis . get ( i ) ĊĠĠĠĠĠĠĠ Ġbyte . iterate Bits Ġ{ Ġbit , Ġj Ġ-> Ġfunc ( bit , Ġi Ġ* Ġ 8 Ġ+ Ġj ) Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠTake Ġ( x , Ġy , Ġz ) Ġand Ġproduce Ġindex Ġ( i ) Ċ Ġ*/ Ċ fun Ġunwrap Index ( index : ĠInt , Ġdimensions : ĠVector 3 ic , Ġv : ĠVector 3 i ): ĠVector 3 i Ġ{ ĊĠĠĠ Ġval Ġz Ġ= Ġindex Ġ/ Ġ( dimensions . x Ġ* Ġdimensions . y ) ĊĠĠĠ Ġval Ġy Ġ= Ġ( index Ġ- Ġ( z Ġ* Ġdimensions . x Ġ* Ġdimensions . y )) Ġ/ Ġdimensions . x ĊĠĠĠ Ġval Ġx Ġ= Ġ( index Ġ- Ġ( z Ġ* Ġdimensions . x Ġ* Ġdimensions . y )) Ġ% Ġdimensions . x ĊĊĠĠĠ Ġreturn Ġv . set ( x , Ġy , Ġz ) Ċ } Ċ Ċ fun Ġwrap Index ( x : ĠInt , Ġy : ĠInt , Ġz : ĠInt , Ġdimensions : ĠVector 3 ic ): ĠInt Ġ= ĊĠĠĠ Ġx Ġ+ Ġ( y Ġ* Ġdimensions . x ) Ġ+ Ġ( z Ġ* Ġdimensions . x Ġ* Ġdimensions . y ) Ċ Ċ fun Ġwrap Index ( point : ĠVector 3 ic , Ġdimensions : ĠVector 3 ic ): ĠInt Ġ= ĊĠĠĠ Ġwrap Index ( point . x , Ġpoint . y , Ġpoint . z , Ġdimensions ) Ċ Ċ inline Ġfun Ġtime Nan os ( func : Ġ() Ġ-> ĠUnit ): ĠLong Ġ{ ĊĠĠĠ Ġval Ġstart Ġ= ĠSystem . nano Time () ĊĠĠĠ Ġfunc () ĊĠĠĠ Ġreturn ĠSystem . nano Time () Ġ- Ġstart Ċ } Ċ Ċ inline Ġfun Ġtime Millis ( func : Ġ() Ġ-> ĠUnit ): ĠLong Ġ{ ĊĠĠĠ Ġval Ġstart Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠ Ġfunc () ĊĠĠĠ Ġreturn ĠSystem . currentTimeMillis () Ġ- Ġstart Ċ } Ċ Ċ inline Ġfun Ġtry And Print ( func : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġfunc () ĊĠĠĠ Ġ} Ġcatch Ġ( ex : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġex . printStackTrace () ĊĠĠĠ Ġ} Ċ } Ċ