package Ġcom . github . w um o . v kg . graphics Ċ Ċ import Ġcom . github . w um o . v kg . graphics . V kg Native .* Ċ import Ġcom . github . w um o . v kg . graphics . model .* Ċ import Ġcom . github . w um o . v kg . graphics . util . notNull Ċ import Ġorg . byte deco . javac pp . Byte Pointer Ċ import Ġorg . byte deco . javac pp . Int Pointer Ċ Ċ class ĠScene ( internal Ġval Ġnative : ĠV kg Native . C Scene ) Ġ{ ĊĠ Ġval Ġcamera : ĠCamera Ġ= ĠCamera ( Scene Get Camera ( native . notNull ())) ĊĠ Ġval Ġat mosphere : ĠAt mosphere Ġ= ĠAt mosphere ( Scene Get At mosphere ( native . notNull ())) ĊĠ Ġval Ġshadow Map : ĠShadow Map Ġ= ĠShadow Map ( Scene Get Shadow map ( native . notNull ())) ĊĊĠ Ġfun Ġnew Primitive ( ĊĠĠĠ Ġpositions : ĠFloat Array , ĊĠĠĠ Ġnormals : ĠFloat Array , ĊĠĠĠ Ġu vs : ĠFloat Array , ĊĠĠĠ Ġindices : ĠInt Array , ĊĠĠĠ Ġa abb : ĠA ABB , ĊĠĠĠ Ġtopology : ĠPrimitive Topology Ġ= ĠPrimitive Topology . Tri ange ls , ĊĠĠĠ Ġper Frame : ĠBoolean Ġ= Ġfalse ĊĠ Ġ): ĠPrimitive Ġ{ ĊĠĠĠ Ġval Ġprim Ġ= ĠScene New Primitive ( ĊĠĠĠĠĠ Ġnative . notNull (), Ġpositions , Ġ 0 , Ġpositions . size Ġ/ Ġ 3 , ĊĠĠĠĠĠ Ġnormals , Ġ 0 , Ġnormals . size Ġ/ Ġ 3 , Ġu vs , Ġ 0 , Ġu vs . size Ġ/ Ġ 2 , Ġindices , Ġindices . size , Ġa abb . raw , ĊĠĠĠĠĠ Ġtopology . value , Ġper Frame ĊĠĠĠ Ġ) ĊĠĠĠ Ġreturn ĠPrimitive ( this , Ġprim ) ĊĠ Ġ} ĊĊĠ Ġfun Ġnew Primitives ( per Frame : ĠBoolean Ġ= Ġfalse , Ġblock : ĠPrimitive Builder . () Ġ-> ĠUnit ): ĠList < Primitive > Ġ{ ĊĠĠĠ Ġval Ġnative Builder Ġ= ĠNew Primitive Builder () ĊĠĠĠ Ġval Ġbuilder Ġ= ĠPrimitive Builder ( native Builder ) ĊĠĠĠ Ġblock ( builder ) ĊĠĠĠ Ġval Ġprimitive Indices Ġ= ĠInt Array ( builder . num Primitives ) ĊĠĠĠ ĠScene New Primitives ( native . notNull (), Ġnative Builder , Ġper Frame , Ġprimitive Indices ) ĊĠĠĠ Ġval Ġprimitives Ġ= ĠList ( primitive Indices . size ) Ġ{ ĊĠĠĠĠĠ ĠPrimitive ( this , Ġprimitive Indices [ it ]) ĊĠĠĠ Ġ} ĊĠĠĠ ĠDelete Primitive Builder ( native Builder ) ĊĠĠĠ Ġnative Builder . de allocate () ĊĠĠĠ Ġreturn Ġprimitives ĊĠ Ġ} ĊĊĠ Ġfun Ġnew Material ( type : ĠMaterial Type Ġ= ĠMaterial Type . None , Ġper Frame : ĠBoolean Ġ= Ġfalse ) ĊĠĠĠĠĠ Ġ: ĠMaterial Ġ{ ĊĠĠĠ Ġreturn ĠMaterial ( this , ĠScene New Material ( native . notNull (), Ġtype . value , Ġper Frame )) ĊĠ Ġ} ĊĊĠ Ġfun Ġnew Texture ( path : ĠString , Ġmip map : ĠBoolean Ġ= Ġtrue ): ĠTexture Ġ{ ĊĠĠĠ Ġval Ġbytes Ġ= Ġpath . toByteArray () ĊĠĠĠ Ġval Ġnative Tex Ġ= ĠScene New Texture ( native . notNull (), Ġbytes , Ġbytes . size , Ġmip map ) ĊĠĠĠ Ġreturn ĠTexture ( this , Ġnative Tex ) ĊĠ Ġ} ĊĊĠ Ġfun Ġnew Texture ( bytes : ĠByteArray , Ġmip map : ĠBoolean Ġ= Ġtrue ): ĠTexture Ġ{ ĊĠĠĠ Ġval Ġbyte Ptr Ġ= ĠByte Pointer (* bytes ) ĊĠĠĠ Ġval Ġnative Tex Ġ= ĠScene New Texture From Memory ( native . notNull (), Ġbyte Ptr , Ġbytes . size , Ġmip map ) ĊĠĠĠ Ġbyte Ptr . de allocate () ĊĠĠĠ Ġreturn ĠTexture ( this , Ġnative Tex ) ĊĠ Ġ} ĊĊĠ Ġfun Ġnew Texture ( ĊĠĠĠ Ġbytes : ĠInt Array , ĊĠĠĠ Ġwidth : ĠInt , Ġheight : ĠInt , ĊĠĠĠ Ġformat : ĠTexture Format Ġ= ĠTexture Format . R 8 G 8 B 8 A 8 Un orm , ĊĠĠĠ Ġmip map : ĠBoolean Ġ= Ġtrue ĊĠ Ġ): ĠTexture Ġ{ ĊĠĠĠ Ġcheck ( bytes . size Ġ== Ġwidth Ġ* Ġheight ) Ġ{ Ġ" only Ġsupport ĠR 8 G 8 B 8 A 8 Ġformat " Ġ} ĊĠĠĠ Ġval Ġint Ptr Ġ= ĠInt Pointer (* bytes ) ĊĠĠĠ Ġval Ġbyte Ptr Ġ= ĠByte Pointer ( int Ptr ) ĊĠĠĠ Ġbyte Ptr . capacity ( int Ptr . capacity () Ġ* Ġint Ptr . sizeof ()) ĊĠĠĠ Ġval Ġnative Tex Ġ= ĊĠĠĠĠĠ ĠScene New Texture From Bytes ( ĊĠĠĠĠĠĠĠ Ġnative . notNull (), Ġbyte Ptr , Ġbyte Ptr . capacity (). toInt (), ĊĠĠĠĠĠĠĠ Ġwidth , Ġheight , Ġformat . value , Ġmip map ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġint Ptr . de allocate () ĊĠĠĠ Ġreturn ĠTexture ( this , Ġnative Tex ) ĊĠ Ġ} ĊĊĠ Ġfun Ġnew Texture ( ĊĠĠĠ Ġbytes : ĠByteArray , ĊĠĠĠ Ġwidth : ĠInt , Ġheight : ĠInt , ĊĠĠĠ Ġformat : ĠTexture Format Ġ= ĠTexture Format . R 8 G 8 B 8 A 8 Un orm , ĊĠĠĠ Ġmip map : ĠBoolean Ġ= Ġtrue ĊĠ Ġ): ĠTexture Ġ{ ĊĠĠĠ Ġcheck ( bytes . size Ġ== Ġwidth Ġ* Ġheight Ġ* Ġ 4 ) Ġ{ Ġ" only Ġsupport ĠR 8 G 8 B 8 A 8 Ġformat " Ġ} ĊĠĠĠ Ġval Ġbyte Ptr Ġ= ĠByte Pointer (* bytes ) ĊĠĠĠ Ġval Ġnative Tex Ġ= ĠScene New Texture From Bytes ( ĊĠĠĠĠĠ Ġnative . notNull (), Ġbyte Ptr , Ġbytes . size , ĊĠĠĠĠĠ Ġwidth , Ġheight , Ġformat . value , Ġmip map ĊĠĠĠ Ġ) ĊĠĠĠ Ġbyte Ptr . de allocate () ĊĠĠĠ Ġreturn ĠTexture ( this , Ġnative Tex ) ĊĠ Ġ} ĊĊĠ Ġfun Ġnew Mesh ( primitive : ĠPrimitive , Ġmaterial : ĠMaterial ): ĠMesh Ġ{ ĊĠĠĠ Ġreturn ĠMesh ( this , ĠScene New Mesh ( native . notNull (), Ġprimitive . id , Ġmaterial . id )) ĊĠ Ġ} ĊĊĠ Ġfun ĠnewNode ( transform : ĠTransform Ġ= ĠTransform ()): ĠNode Ġ{ ĊĠĠĠ Ġval Ġnative Node Ġ= ĠScene New Node ( native . notNull (), Ġtransform . raw ) ĊĠĠĠ Ġreturn ĠNode ( this , Ġnative Node ) ĊĠ Ġ} ĊĊĠ Ġfun Ġnew Model ( var arg Ġnodes : ĠNode ): ĠModel Ġ{ ĊĠĠĠ Ġval Ġnode Indices Ġ= ĠInt Array ( nodes . size ) Ġ{ ĊĠĠĠĠĠ Ġnodes [ it ]. id ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġnative Model Ġ= ĠScene New Model ( native . notNull (), Ġnode Indices , Ġnode Indices . size ) ĊĠĠĠ Ġreturn ĠModel ( this , Ġnative Model ) ĊĠ Ġ} ĊĊĠ Ġfun Ġload Model ( path : ĠString , Ġtype : ĠMaterial Type Ġ= ĠMaterial Type . BR DF ): ĠModel Ġ{ ĊĠĠĠ Ġval Ġbytes Ġ= Ġpath . toByteArray () ĊĠĠĠ Ġval Ġnative Model Ġ= ĠScene Load Model ( native . notNull (), Ġbytes , Ġbytes . size , Ġtype . value ) ĊĠĠĠ Ġreturn ĠModel ( this , Ġnative Model ) ĊĠ Ġ} ĊĊĠ Ġfun Ġload Model ( bytes : ĠByteArray , Ġtype : ĠMaterial Type Ġ= ĠMaterial Type . BR DF ): ĠModel Ġ{ ĊĠĠĠ Ġval Ġbyte Ptr Ġ= ĠByte Pointer (* bytes ) ĊĠĠĠ Ġval Ġnative Model Ġ= ĠScene Load Model From Bytes ( native . notNull (), Ġbyte Ptr , Ġbytes . size , Ġtype . value ) ĊĠĠĠ Ġbyte Ptr . de allocate () ĊĠĠĠ Ġreturn ĠModel ( this , Ġnative Model ) ĊĠ Ġ} ĊĊĠ Ġfun Ġnew Model Instance ( ĊĠĠĠ Ġmodel : ĠModel , Ġtransform : ĠTransform Ġ= ĠTransform (), Ġper Frame : ĠBoolean Ġ= Ġfalse ĊĠ Ġ): ĠModel Instance Ġ{ ĊĠĠĠ Ġval Ġnative Inst an ve Ġ= ĠScene New Model Instance ( native . notNull (), Ġmodel . id , Ġtransform . raw , Ġper Frame ) ĊĠĠĠ Ġreturn ĠModel Instance ( this , Ġnative Inst an ve ) ĊĠ Ġ} ĊĊĠ Ġfun Ġnew Light ( per Frame : ĠBoolean Ġ= Ġfalse ): ĠLight Ġ{ ĊĠĠĠ Ġreturn ĠLight ( this , ĠScene New Light ( native . notNull (), Ġper Frame )) ĊĠ Ġ} Ċ }