package Ġme . anno . mesh . assimp . io Ċ Ċ import Ġme . anno . io . files . File Reference Ċ import Ġorg . lwjgl . system . Memory Util Ċ import Ġjava . io . InputStream Ċ import Ġkotlin . math . min Ċ Ċ class ĠAI File IO Stream ( val Ġfile : ĠFile Reference ) Ġ: ĠI File IO Stream Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSEEK _ SET Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSEEK _ CUR Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSEEK _ END Ġ= Ġ 2 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġinput : ĠInputStream ? Ġ= Ġnull ĊĠĠĠ Ġoverride Ġvar Ġposition : ĠLong Ġ= Ġ 0 L ĊĊĠĠĠ Ġoverride Ġval Ġlength Ġ= Ġfile . length () ĊĊĠĠĠ Ġoverride Ġfun Ġclose () Ġ{ ĊĠĠĠĠĠĠĠ Ġinput ?. close () ĊĠĠĠĠĠĠĠ Ġinput Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġwh ence Ġ= Ġfrom Ġwhere Ġ/ Ġwhere Ġto Ġadd Ġthe Ġoffset ĊĠĠĠ Ġoverride Ġfun Ġseek ( offset : ĠLong , Ġwh ence : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġensure Input () ĊĠĠĠĠĠĠĠ Ġval Ġtarget Ġ= Ġwhen Ġ( wh ence ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSEEK _ SET Ġ-> Ġ 0 L ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSEEK _ CUR Ġ-> Ġposition ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSEEK _ END Ġ-> Ġfile . length () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠRuntimeException (" Unknown Ġmode Ġ$ wh ence ") ĊĠĠĠĠĠĠĠ Ġ} Ġ+ Ġoffset ĊĠĠĠĠĠĠĠ Ġval Ġdelta Ġ= Ġtarget Ġ- Ġposition ĊĠĠĠĠĠĠĠ Ġif Ġ( delta Ġ< Ġ 0 L ) Ġthrow ĠRuntimeException (" Skipping Ġback Ġhasn 't Ġyet Ġbeen Ġimplemented ") ĊĠĠĠĠĠĠĠ Ġval Ġinput Ġ= Ġinput !! ĊĠĠĠĠĠĠĠ Ġvar Ġdone Ġ= Ġ 0 L ĊĠĠĠĠĠĠĠ Ġwhile Ġ( done Ġ< Ġdelta ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġskipped Ġ= Ġinput . skip ( delta ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" Kotlin Constant Conditions ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( skipped Ġ< Ġ 0 L ) Ġreturn Ġ- 1 Ġ// Ġeof ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdone Ġ+= Ġskipped ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġposition Ġ= Ġtarget ĊĠĠĠĠĠĠĠ Ġ// Ġ 0 Ġ= Ġsuccess ĊĠĠĠĠĠĠĠ Ġreturn Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġensure Input () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( input Ġ== Ġnull ) Ġinput Ġ= Ġfile . inputStream () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġread ( buffer : ĠLong , Ġsize : ĠLong , Ġcount : ĠLong ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġensure Input () ĊĠĠĠĠĠĠĠ Ġval Ġreadable Items Ġ= Ġmin ( count , Ġ( length Ġ- Ġposition ) Ġ/ Ġsize ) ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( readable Items Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnum Bytes Ġ= Ġreadable Items Ġ* Ġsize ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġwrite Ptr Ġ= Ġbuffer ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġnum Bytes ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMemory Util . mem Put Byte ( write Ptr ++, Ġinput !!. read (). to Byte ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . position Ġ+= Ġnum Bytes ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreadable Items ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ 0 ĊĠĠĠ Ġ} Ċ Ċ }