package Ġgame . world . chunk Ċ Ċ import Ġengine . render . World Object 3 D Ċ import Ġgame . world . Block Ċ import Ġgame . world . Location Ċ import Ġorg . j om l . Vector 3 d Ċ Ċ class ĠChunk ( origin : ĠLocation < Int >, Ġval Ġblocks : ĠMap < Long , ĠBlock >) Ġ: ĠWorld Object 3 D ( null , ĠVector 3 d ( origin . x . toDouble (), Ġorigin . y . toDouble (), Ġorigin . z . toDouble ())) Ġ{ ĊĠĠĠ Ġvar Ġis Loaded : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġvar Ġis Re built : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġfun Ġload () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( mesh Ġ== Ġnull ) Ġmesh Ġ= ĠChunk Mesh ( this ) ĊĠĠĠĠĠĠĠ Ġ( mesh Ġas ĠChunk Mesh ). load () Ġ// Ġis Loaded Ġflag Ġchanged Ġinternally Ġwith Ġthis Ġcall ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Block At ( x : ĠInt , Ġy : ĠInt , Ġz : ĠInt ): ĠBlock ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġblocks [ pack Internal Chunk Location ( x . to Long (), Ġy . to Long (), Ġz . to Long ()) ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrebuild () Ġ{ ĊĠĠĠĠĠĠĠ Ġ( mesh Ġas ĠChunk Mesh ). rebuild () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġassign New Mesh () Ġ{ ĊĠĠĠĠĠĠĠ Ġ( mesh Ġas ĠChunk Mesh ). assign New Mesh () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġ=== Ġother ) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġif Ġ( java Class Ġ!= Ġother ?. java Class ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġother Ġas ĠChunk ĊĊĠĠĠĠĠĠĠ Ġif Ġ( blocks Ġ!= Ġother . blocks ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( is Loaded Ġ!= Ġother . is Loaded ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( is Re built Ġ!= Ġother . is Re built ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġblocks . hashCode () ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġis Loaded . hashCode () ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġis Re built . hashCode () ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġpack Internal Chunk Location ( a : ĠLong , Ġb : ĠLong , Ġc : ĠLong ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġa Ġ+ Ġb Ġ* Ġ 6 5 5 3 6 Ġ+ Ġc Ġ* Ġ 6 5 5 3 6 Ġ* Ġ 6 5 5 3 6 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġunpack Internal Chunk Location ( packed : ĠLong ): ĠLong Array Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġa : ĠLong Ġ= Ġpacked Ġshr Ġ 3 2 Ġand Ġ 0 xFFFF L ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġb : ĠLong Ġ= Ġpacked Ġshr Ġ 1 6 Ġand Ġ 0 xFFFF L ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġc : ĠLong Ġ= Ġpacked Ġand Ġ 0 xFFFF L ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġlong ArrayOf ( a , Ġb , Ġc ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠCH UNK _ X _ SIZE Ġ= Ġ 1 6 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠCH UNK _ Y _ SIZE Ġ= Ġ 1 6 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠCH UNK _ Z _ SIZE Ġ= Ġ 1 6 ĊĊĠĠĠ Ġ} Ċ }