package Ġrs . em ulate . legacy . model Ċ Ċ import Ġio . netty . buffer . Byte Buf Ċ import Ġrs . em ulate . legacy . model . Model Feature .* Ċ import Ġrs . em ulate . util . read Signed Smart Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠA Ġdecoder Ġfor Ġ[ Model ] s . Ċ Ġ* Ċ Ġ* Ġ@ param Ġbuffer ĠThe Ġun compressed Ġ[ Byte Buf ] Ġcontaining Ġthe Ġencoded Ġ` Model `. Ċ Ġ*/ Ċ class ĠModel Decoder ( private Ġval Ġbuffer : ĠByte Buf ) Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAn Ġindexed Ġarray Ġof Ġ[ Vertex ] es Ġin Ġthe Ġ[ Model ] Ġbeing Ġdecoded . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġvertices : ĠArray < Vertex ?> ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAn Ġindexed Ġarray Ġof Ġtexture Ġcoordinates Ġprojected Ġinto Ġview space . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtex Coords : ĠArray < TexCoord ?> ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġfaces Ġof Ġthe Ġgeometry Ġin Ġthe Ġ[ Model ] Ġbeing Ġdecoded . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġfaces : ĠArray < Face ?> ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠA Ġset Ġof Ġmodel Ġrendering Ġfeatures Ġenabled Ġfor Ġthe Ġ[ Model ] Ġbeing Ġdecoded . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġfeatures : ĠSet < Model Feature > Ġ= ĠHashSet () ĊĊĠĠĠ Ġfun Ġdecode (): ĠModel Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġheader Ġ= Ġbuffer . copy () ĊĠĠĠĠĠĠĠ Ġheader . reader Index ( buffer . readable Bytes () Ġ- ĠHEADER _ SIZE ) ĊĊĠĠĠĠĠĠĠ Ġvertices Ġ= ĠarrayOf Null s ( header . read Unsigned Short ()) ĊĠĠĠĠĠĠĠ Ġfaces Ġ= ĠarrayOf Null s ( header . read Unsigned Short ()) ĊĠĠĠĠĠĠĠ Ġtex Coords Ġ= ĠarrayOf Null s ( header . read Unsigned Byte (). toInt ()) ĊĊĠĠĠĠĠĠĠ Ġfeatures Ġ= ĠModel Feature . decode From ( header ) ĊĊĠĠĠĠĠĠĠ Ġval Ġx Data Length Ġ= Ġheader . read Unsigned Short () ĊĠĠĠĠĠĠĠ Ġval Ġy Data Length Ġ= Ġheader . read Unsigned Short () ĊĠĠĠĠĠĠĠ Ġval Ġz Data Length Ġ= Ġheader . read Unsigned Short () ĊĠĠĠĠĠĠĠ Ġval Ġface Data Length Ġ= Ġheader . read Unsigned Short () ĊĊĠĠĠĠĠĠĠ Ġvar Ġoffset Ġ= Ġvertices . size ĊĊĠĠĠĠĠĠĠ Ġval Ġface Types Offset Ġ= Ġoffset ĊĠĠĠĠĠĠĠ Ġoffset Ġ+= Ġfaces . size ĊĊĠĠĠĠĠĠĠ Ġval Ġface Render Prior ities Offset Ġ= Ġoffset ĊĠĠĠĠĠĠĠ Ġif Ġ( features . none Ġ{ Ġit Ġis ĠGlobal Face Render Priority Ġ}) Ġ{ Ġ// ĠTODO Ġfull Ġscan Ġis Ġst upid ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ+= Ġfaces . size ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġface B ones Offset Ġ= Ġoffset ĊĠĠĠĠĠĠĠ Ġif Ġ( Face Skin ning Ġin Ġfeatures ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ+= Ġfaces . size ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġface Texture Pointers Offset Ġ= Ġoffset ĊĠĠĠĠĠĠĠ Ġif Ġ( Face Textures Ġin Ġfeatures ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ+= Ġfaces . size ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġvertex B ones Offset Ġ= Ġoffset ĊĠĠĠĠĠĠĠ Ġif Ġ( Vertex Skin ning Ġin Ġfeatures ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ+= Ġvertices . size ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġface Al ph as Offset Ġ= Ġoffset ĊĠĠĠĠĠĠĠ Ġif Ġ( Face Transparency Ġin Ġfeatures ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ+= Ġfaces . size ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġface Data Offset Ġ= Ġoffset ĊĠĠĠĠĠĠĠ Ġoffset Ġ+= Ġface Data Length ĊĊĠĠĠĠĠĠĠ Ġval Ġface Colo urs Offset Ġ= Ġoffset ĊĠĠĠĠĠĠĠ Ġoffset Ġ+= Ġfaces . size Ġ* Ġ 2 ĊĊĠĠĠĠĠĠĠ Ġval Ġtex Coords Offset Ġ= Ġoffset ĊĠĠĠĠĠĠĠ Ġoffset Ġ+= Ġtex Coords . size Ġ* Ġ 6 ĊĊĠĠĠĠĠĠĠ Ġval Ġx Data Offset Ġ= Ġoffset ĊĠĠĠĠĠĠĠ Ġoffset Ġ+= Ġx Data Length ĊĊĠĠĠĠĠĠĠ Ġval Ġy Data Offset Ġ= Ġoffset ĊĠĠĠĠĠĠĠ Ġoffset Ġ+= Ġy Data Length ĊĊĠĠĠĠĠĠĠ Ġval Ġz Data Offset Ġ= Ġoffset ĊĠĠĠĠĠĠĠ Ġoffset Ġ+= Ġz Data Length ĊĊĠĠĠĠĠĠĠ Ġdecode Vertices ( x Data Offset , Ġy Data Offset , Ġz Data Offset , Ġvertex B ones Offset ) ĊĠĠĠĠĠĠĠ Ġdecode Faces ( face Data Offset , Ġface Types Offset , Ġface Colo urs Offset , Ġface Render Prior ities Offset , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġface Al ph as Offset , Ġface B ones Offset , Ġface Texture Pointers Offset ) ĊĠĠĠĠĠĠĠ Ġdecode Tex Coords ( tex Coords Offset ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠModel ( features , Ġfaces . require No Null s (), Ġvertices . require No Null s (), Ġtex Coords . require No Null s ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDecode Ġthe Ġprojected Ġtexture Ġcoordinates Ġfor Ġthe Ġ[ Model ] Ġbeing Ġdecoded . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġoffset ĠThe Ġoffset Ġinto Ġ` buffer ` Ġof Ġthe Ġtexture Ġcoordinate Ġdata . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġdecode Tex Coords ( offset : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtex Coords Buffer Ġ= Ġbuffer . copy () ĊĠĠĠĠĠĠĠ Ġtex Coords Buffer . reader Index ( offset ) ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( index Ġin Ġtex Coords . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġorigin Ġ= Ġtex Coords Buffer . read Unsigned Byte (). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġu Ġ= Ġtex Coords Buffer . read Unsigned Byte (). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġv Ġ= Ġtex Coords Buffer . read Unsigned Byte (). toInt () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtex Coords [ index ] Ġ= ĠTex Coord ( origin , Ġu , Ġv ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDecode Ġthe Ġtriangle Ġ[ Face ] s Ġthat Ġmake Ġup Ġthe Ġgeometry Ġof Ġthe Ġ[ Model ] Ġbeing Ġdecoded . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġdecode Faces ( ĊĠĠĠĠĠĠĠ Ġface Data Offset : ĠInt , ĊĠĠĠĠĠĠĠ Ġtypes Offset : ĠInt , ĊĠĠĠĠĠĠĠ Ġcolo urs Offset : ĠInt , ĊĠĠĠĠĠĠĠ Ġprior ities Offset : ĠInt , ĊĠĠĠĠĠĠĠ Ġal ph as Offset : ĠInt , ĊĠĠĠĠĠĠĠ Ġbones Offset : ĠInt , ĊĠĠĠĠĠĠĠ Ġtexture Pointers Offset : ĠInt ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck ( faces . isNotEmpty ()) Ġ{ Ġ" Must Ġbe Ġ 1 Ġor Ġmore Ġfaces Ġpresent ." Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġface Data Ġ= Ġbuffer . copy () ĊĠĠĠĠĠĠĠ Ġface Data . reader Index ( face Data Offset ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtypes Ġ= Ġbuffer . copy () ĊĠĠĠĠĠĠĠ Ġtypes . reader Index ( types Offset ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcolo urs Ġ= Ġbuffer . copy () ĊĠĠĠĠĠĠĠ Ġcolo urs . reader Index ( colo urs Offset ) ĊĊĠĠĠĠĠĠĠ Ġval Ġprior ities Ġ= Ġbuffer . copy () ĊĠĠĠĠĠĠĠ Ġprior ities . reader Index ( prior ities Offset ) ĊĊĠĠĠĠĠĠĠ Ġval Ġal ph as Ġ= Ġbuffer . copy () ĊĠĠĠĠĠĠĠ Ġal ph as . reader Index ( alph as Offset ) ĊĊĠĠĠĠĠĠĠ Ġval Ġbones Ġ= Ġbuffer . copy () ĊĠĠĠĠĠĠĠ Ġbones . reader Index ( bones Offset ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtexture Pointers Ġ= Ġbuffer . copy () ĊĠĠĠĠĠĠĠ Ġtexture Pointers . reader Index ( texture Pointers Offset ) ĊĊĠĠĠĠĠĠĠ Ġvar Ġface A Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġface B Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġface C Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġoffset Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġval Ġpriority Feature Ġ= Ġfeatures . find Ġ{ Ġit Ġis ĠGlobal Face Render Priority Ġ} Ġas ĠGlobal Face Render Priority ? ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( index Ġin Ġfaces . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġtypes . read Unsigned Byte (). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolour Ġ= Ġcolo urs . read Unsigned Short () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrender Priority Ġ= Ġpriority Feature ?. priority Ġ?: Ġprior ities . read Unsigned Byte (). toInt () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġalpha Ġ= Ġif Ġ( Face Transparency Ġin Ġfeatures ) Ġal ph as . read Unsigned Byte (). toInt () Ġelse Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbone Ġ= Ġif Ġ( Face Skin ning Ġin Ġfeatures ) Ġbones . read Unsigned Byte (). toInt () Ġelse Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtexture Pointer Ġ= Ġif Ġ( Face Textures Ġin Ġfeatures ) Ġbones . read Unsigned Byte (). toInt () Ġelse Ġ- 1 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( type Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġface A Ġ= Ġface Data . read Signed Smart () Ġ+ Ġoffset ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ= Ġface A ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġface B Ġ= Ġface Data . read Signed Smart () Ġ+ Ġoffset ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ= Ġface B ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġface C Ġ= Ġface Data . read Signed Smart () Ġ+ Ġoffset ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ= Ġface C ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( type Ġ== Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġface B Ġ= Ġface C ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġface C Ġ= Ġface Data . read Signed Smart () Ġ+ Ġoffset ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ= Ġface C ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( type Ġ== Ġ 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġface A Ġ= Ġface C ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġface C Ġ= Ġface Data . read Signed Smart () Ġ+ Ġoffset ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ= Ġface C ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( type Ġ== Ġ 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtemp Ġ= Ġface A ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġface A Ġ= Ġface B ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġface B Ġ= Ġtemp ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġface C Ġ= Ġface Data . read Signed Smart () Ġ+ Ġoffset ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ= Ġface C ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfaces [ index ] Ġ= ĠFace ( face A , Ġface B , Ġface C , Ġcolour , Ġrender Priority , Ġalpha , Ġbone , Ġtexture Pointer ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDecode Ġa Ġlist Ġof Ġ[ Vertex ] Ġobjects Ġfrom Ġthe Ġinput Ġ[ Model ] Ġfile . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġdecode Vertices ( x Data Offset : ĠInt , Ġy Data Offset : ĠInt , Ġz Data Offset : ĠInt , Ġvertex B ones Offset : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck ( vertices . isNotEmpty ()) Ġ{ Ġ" Vertex Ġcount Ġmust Ġbe Ġgreater Ġthan Ġ 0 ." Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġdirection Buffer Ġ= Ġbuffer . copy () ĊĠĠĠĠĠĠĠ Ġdirection Buffer . reader Index ( 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġvertices X Ġ= Ġbuffer . copy () ĊĠĠĠĠĠĠĠ Ġvertices X . reader Index ( x Data Offset ) ĊĊĠĠĠĠĠĠĠ Ġval Ġvertices Y Ġ= Ġbuffer . copy () ĊĠĠĠĠĠĠĠ Ġvertices Y . reader Index ( y Data Offset ) ĊĊĠĠĠĠĠĠĠ Ġval Ġvertices Z Ġ= Ġbuffer . copy () ĊĠĠĠĠĠĠĠ Ġvertices Z . reader Index ( z Data Offset ) ĊĊĠĠĠĠĠĠĠ Ġval Ġbones Ġ= Ġbuffer . copy () ĊĠĠĠĠĠĠĠ Ġbones . reader Index ( vertex B ones Offset ) ĊĊĠĠĠĠĠĠĠ Ġvar Ġbase X Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġbase Y Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġbase Z Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( index Ġin Ġvertices . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmask Ġ= Ġdirection Buffer . read Unsigned Byte (). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġx Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmask Ġand ĠV ERT EX _ X _ POSITION Ġ!= Ġ 0 Ġ-> Ġvertices X . read Signed Smart () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġy Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmask Ġand ĠV ERT EX _ Y _ POSITION Ġ!= Ġ 0 Ġ-> Ġvertices Y . read Signed Smart () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġz Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmask Ġand ĠV ERT EX _ Z _ POSITION Ġ!= Ġ 0 Ġ-> Ġvertices Z . read Signed Smart () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbone Ġ= Ġwhen Ġ( Vertex Skin ning ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin Ġfeatures Ġ-> Ġbones . read Unsigned Byte (). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ+= Ġbase X ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ+= Ġbase Y ĊĠĠĠĠĠĠĠĠĠĠĠ Ġz Ġ+= Ġbase Z ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase X Ġ= Ġx ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase Y Ġ= Ġy ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase Z Ġ= Ġz ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvertices [ index ] Ġ= ĠVertex ( x , Ġy , Ġz , Ġbone ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġsize Ġ( in Ġbytes ) Ġof Ġthe Ġmodel Ġheader Ġblock . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠHEADER _ SIZE Ġ= Ġ 1 8 ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġmask Ġfor Ġvertex Ġdata Ġblocks Ġthat Ġcontain Ġan ĠX Ġcoordinate . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠV ERT EX _ X _ POSITION Ġ= Ġ 0 x 1 ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġmask Ġfor Ġvertex Ġdata Ġblocks Ġthat Ġcontain Ġa ĠY Ġcoordinate . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠV ERT EX _ Y _ POSITION Ġ= Ġ 0 x 2 ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġmask Ġfor Ġvertex Ġdata Ġblocks Ġthat Ġcontain Ġa ĠZ Ġcoordinate . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠV ERT EX _ Z _ POSITION Ġ= Ġ 0 x 4 ĊĊĠĠĠ Ġ} Ċ } Ċ