/* Ċ Ġ* ĠCopyright Ġ 2 0 1 8 ĠN ich olas ĠB ily k Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . ac orn ui . io Ċ Ċ import Ġcom . ac orn ui . graphic . Color Ro Ċ import Ġcom . ac orn ui . math . Vector 2 Ċ import Ġcom . ac orn ui . math . Vector 2 Ro Ċ import Ġcom . ac orn ui . math . Vector 3 Ċ import Ġcom . ac orn ui . math . Vector 3 Ro ĊĊ Ċ // ĠCommon Ġbuffer Ġread / write Ġutility Ċ Ċ fun ĠRead Buffer < Float >. get Vector 3 ( out : ĠVector 3 ) Ġ{ Ċ ĉ out . x Ġ= Ġget () Ċ ĉ out . y Ġ= Ġget () Ċ ĉ out . z Ġ= Ġget () Ċ } Ċ Ċ fun ĠRead Buffer < Float >. get Vector 2 ( out : ĠVector 2 ) Ġ{ Ċ ĉ out . x Ġ= Ġget () Ċ ĉ out . y Ġ= Ġget () Ċ } Ċ Ċ fun ĠWrite Buffer < Float >. put Vector 3 ( value : ĠVector 3 Ro ) Ġ{ Ċ ĉ put ( value . x ) Ċ ĉ put ( value . y ) Ċ ĉ put ( value . z ) Ċ } Ċ Ċ fun ĠWrite Buffer < Float >. put Vector 2 ( value : ĠVector 2 Ro ) Ġ{ Ċ ĉ put ( value . x ) Ċ ĉ put ( value . y ) Ċ } Ċ Ċ fun ĠColor Ro . write Un packed ( buffer : ĠWrite Buffer < Float >) Ġ{ Ċ ĉ buffer . put ( r ) Ċ ĉ buffer . put ( g ) Ċ ĉ buffer . put ( b ) Ċ ĉ buffer . put ( a ) Ċ } Ċ Ċ /** Ċ Ġ* ĠConverts Ġthe Ġbytes Ġfrom Ġthe Ġcurrent Ġposition Ġuntil Ġthe Ġlimit Ġinto Ġa ĠByteArray . Ċ Ġ*/ Ċ fun ĠRead Buffer < Byte >. toByteArray (): ĠByteArray Ġ{ Ċ ĉ val Ġbytes Ġ= ĠByteArray ( limit Ġ- Ġposition ) Ċ ĉ var Ġi Ġ= Ġ 0 Ċ ĉ while Ġ( has Remaining ) Ċĉ ĉ bytes [ i ++] Ġ= Ġget () Ċ ĉ return Ġbytes Ċ } Ċ Ċ /** Ċ Ġ* ĠConverts Ġthe Ġshort s Ġfrom Ġthe Ġcurrent Ġposition Ġuntil Ġthe Ġlimit Ġinto Ġa ĠShort Array . Ċ Ġ*/ Ċ fun ĠRead Buffer < Short >. to Short Array (): ĠShort Array Ġ{ Ċ ĉ val Ġbytes Ġ= ĠShort Array ( limit Ġ- Ġposition ) Ċ ĉ var Ġi Ġ= Ġ 0 Ċ ĉ while Ġ( has Remaining ) Ċĉ ĉ bytes [ i ++] Ġ= Ġget () Ċ ĉ return Ġbytes Ċ } Ċ Ċ /** Ċ Ġ* ĠConverts Ġthe Ġints Ġfrom Ġthe Ġcurrent Ġposition Ġuntil Ġthe Ġlimit Ġinto Ġa ĠInt Array . Ċ Ġ*/ Ċ fun ĠRead Buffer < Int >. to IntArray (): ĠInt Array Ġ{ Ċ ĉ val Ġbytes Ġ= ĠInt Array ( limit Ġ- Ġposition ) Ċ ĉ var Ġi Ġ= Ġ 0 Ċ ĉ while Ġ( has Remaining ) Ċĉ ĉ bytes [ i ++] Ġ= Ġget () Ċ ĉ return Ġbytes Ċ } Ċ Ċ /** Ċ Ġ* ĠConverts Ġthe Ġfloats Ġfrom Ġthe Ġcurrent Ġposition Ġuntil Ġthe Ġlimit Ġinto Ġa ĠFloat Array . Ċ Ġ*/ Ċ fun ĠRead Buffer < Float >. toFloat Array (): ĠFloat Array Ġ{ Ċ ĉ val Ġfloats Ġ= ĠFloat Array ( limit Ġ- Ġposition ) Ċ ĉ var Ġi Ġ= Ġ 0 Ċ ĉ while Ġ( has Remaining ) Ċĉ ĉ float s [ i ++] Ġ= Ġget () Ċ ĉ return Ġfloats Ċ } Ċ Ċ /** Ċ Ġ* ĠConverts Ġthe Ġdouble s Ġfrom Ġthe Ġcurrent Ġposition Ġuntil Ġthe Ġlimit Ġinto Ġa ĠDouble Array . Ċ Ġ*/ Ċ fun ĠRead Buffer < Double >. toDouble Array (): ĠDouble Array Ġ{ Ċ ĉ val Ġdouble s Ġ= ĠDouble Array ( limit Ġ- Ġposition ) Ċ ĉ var Ġi Ġ= Ġ 0 Ċ ĉ while Ġ( has Remaining ) Ċĉ ĉ double s [ i ++] Ġ= Ġget () Ċ ĉ return Ġdouble s Ċ } Ċ Ċ /** Ċ Ġ* ĠReads Ġa ĠUTF - 8 Ġstring Ġfrom Ġthe Ġbyte Ġbuffer . Ċ Ġ*/ Ċ fun ĠRead ByteBuffer . getString 8 (): ĠString Ġ{ Ċ ĉ val Ġbuilder Ġ= ĠStringBuilder () Ċ ĉ val Ġstop : ĠChar Ġ= Ġ 0 . to Char () Ċ ĉ while Ġ( true ) Ġ{ Ċĉ ĉ val Ġchar Ġ= Ġget Char 8 () Ċĉ ĉ if Ġ( char Ġ== Ġstop ) Ġbreak Ċĉ ĉ else Ġbuilder . append ( char ) Ċ ĉ } Ċ ĉ return Ġbuilder . toString () Ċ } Ċ Ċ /** Ċ Ġ* ĠReads Ġa ĠUTF - 1 6 Ġstring Ġfrom Ġthe Ġbyte Ġbuffer . Ċ Ġ*/ Ċ fun ĠRead ByteBuffer . getString 1 6 (): ĠString Ġ{ Ċ ĉ val Ġbuilder Ġ= ĠStringBuilder () Ċ ĉ val Ġstop : ĠChar Ġ= Ġ 0 . to Char () Ċ ĉ while Ġ( true ) Ġ{ Ċĉ ĉ val Ġchar Ġ= Ġget Char 1 6 () Ċĉ ĉ if Ġ( char Ġ== Ġstop ) Ġbreak Ċĉ ĉ else Ġbuilder . append ( char ) Ċ ĉ } Ċ ĉ return Ġbuilder . toString () Ċ } Ċ Ċ /** Ċ Ġ* ĠWrites Ġa ĠUTF - 8 Ġstring Ġto Ġthe Ġbyte Ġbuffer . Ċ Ġ*/ Ċ fun ĠWrite ByteBuffer . putString 8 ( value : ĠString ) Ġ{ Ċ ĉ for Ġ( i Ġin Ġ 0 .. value . last Index ) Ġ{ Ċĉ ĉ put Char 8 ( value [ i ]) Ċ ĉ } Ċ ĉ put Char 8 ( 0 . to Char ()) Ċ } Ċ Ċ /** Ċ Ġ* ĠWrites Ġa ĠUTF - 1 6 Ġstring Ġto Ġthe Ġbyte Ġbuffer . Ċ Ġ*/ Ċ fun ĠWrite ByteBuffer . putString 1 6 ( value : ĠString ) Ġ{ Ċ ĉ for Ġ( i Ġin Ġ 0 .. value . last Index ) Ġ{ Ċĉ ĉ put Char 1 6 ( value [ i ]) Ċ ĉ } Ċ ĉ put Char 1 6 ( 0 . to Char ()) Ċ }