package Ġorg . j ren ner . lear ng l . utils čĊč Ċ import Ġcom . badlogic . gdx . math . Vector 3 č Ċ import Ġorg . j ren ner . lear ng l . cube . Cube DataGrid č Ċ import Ġorg . j ren ner . lear ng l . Direction č Ċ import Ġcom . badlogic . gdx . utils . StringBuilder č Ċ import Ġorg . j ren ner . lear ng l . game world . World č Ċ import Ġorg . j ren ner . lear ng l . game world . Cube Data č Ċ import Ġorg . j ren ner . lear ng l . game world . Cube Type č Ċ import Ġorg . j ren ner . lear ng l . hidden Faces Enabled č Ċ import Ġorg . j ren ner . lear ng l . world čĊč Ċ class ĠInt Vector 3 Ġ{ čĊĠĠĠ Ġvar Ġx : ĠInt Ġ= Ġ 0 čĊĠĠĠ Ġvar Ġy : ĠInt Ġ= Ġ 0 čĊĠĠĠ Ġvar Ġz : ĠInt Ġ= Ġ 0 čĊčĊĠĠĠ Ġfun Ġset ( x : ĠInt , Ġy : ĠInt , Ġz : ĠInt ): ĠInt Vector 3 Ġ{ čĊĠĠĠĠĠĠĠ Ġthis . x Ġ= Ġx čĊĠĠĠĠĠĠĠ Ġthis . y Ġ= Ġy čĊĠĠĠĠĠĠĠ Ġthis . z Ġ= Ġz čĊĠĠĠĠĠĠĠ Ġreturn Ġthis čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġset ( v : ĠInt Vector 3 ): ĠInt Vector 3 Ġ{ čĊĠĠĠĠĠĠĠ Ġreturn Ġset ( v . x , Ġv . y , Ġv . z ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġset ( v : ĠVector 3 ): ĠInt Vector 3 Ġ{ čĊĠĠĠĠĠĠĠ Ġreturn Ġset ( v . x . toInt (), Ġv . y . toInt (), Ġv . z . toInt ()) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġto Vector 3 ( v : ĠVector 3 ) Ġ{ čĊĠĠĠĠĠĠĠ Ġv . set ( x . toFloat (), Ġy . toFloat (), Ġz . toFloat ()) čĊĠĠĠ Ġ} č Ċ } čĊč Ċ fun ĠWorld . get ( v 3 : ĠVector 3 ): ĠCube Data Ġ{ čĊĠĠĠ Ġreturn Ġthis . getC ube At ( v 3 . x , Ġv 3 . y , Ġv 3 . z ) č Ċ } čĊč Ċ fun ĠCube DataGrid . refresh () Ġ{ čĊĠĠĠ Ġif Ġ( dirty ) Ġ{ čĊĠĠĠĠĠĠĠ Ġdirty Ġ= Ġfalse čĊĠĠĠĠĠĠĠ Ġcalculate Hidden Faces ( world ) čĊĠĠĠ Ġ} č Ċ } čĊč Ċ fun ĠCube DataGrid . calculate Hidden Faces ( wor : ĠWorld Ġ= Ġworld ) Ġ{ čĊĠĠĠ Ġfor Ġ( cube Data : ĠCube Data Ġin Ġthis ) Ġ{ čĊĠĠĠĠĠĠĠ Ġcube Data . hidden Faces Ġ= Ġ 0 čĊĠĠĠĠĠĠĠ Ġif Ġ(! hidden Faces Enabled ) Ġcontinue čĊĠĠĠĠĠĠĠ Ġif Ġ( cube Data . cube Type Ġ== ĠCube Type . Void ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// cube Data . hidden Faces Ġ= ĠDirection . ALL _ FAC ES čĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. Direction . all Size Ġ- Ġ 1 ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġx Ġ= Ġcube Data . xf čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġy Ġ= Ġcube Data . yf čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġz Ġ= Ġcube Data . zf čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdir Ġ= ĠDirection . all [ i ] čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( dir ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDirection . Up Ġ-> Ġy ++ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDirection . Down Ġ-> Ġy -- čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDirection . North Ġ-> Ġz ++ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDirection . South Ġ-> Ġz -- čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDirection . West Ġ-> Ġx -- čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDirection . East Ġ-> Ġx ++ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġonly Ġcare Ġabout Ġhidden Ġfaces Ġlocal Ġto Ġthis Ġcube čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this . has Cube At ( x , Ġy , Ġz )) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcube Ġ= Ġget Cube At ( x , Ġy , Ġz ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cube . cube Type Ġ!= ĠCube Type . Void ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠHID DEN čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcube Data . hidden Faces Ġ= Ġcube Data . hidden Faces Ġor Ġdir čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} č Ċ } čĊč Ċ operator Ġfun ĠStringBuilder . plus ( any : ĠAny ?): ĠStringBuilder Ġ{ čĊĠĠĠ Ġreturn Ġthis . append ( any ) č Ċ } čĊč Ċ val ĠFloat . fmt : ĠString Ġget () Ġ= Ġ"% . 2 f ". format ( this ) č Ċ val ĠVector 3 . fmt : ĠString Ġget () Ġ= Ġ"% . 2 f , Ġ%. 2 f , Ġ%. 2 f ". format ( x , Ġy , Ġz )