package Ġcom . ak uw al ink . ball . ui . game view Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . opengl . GLES 3 0 Ċ import Ġandroid . opengl . GL Surface View Ċ import Ġandroid . util . Log Ċ import Ġcom . ak uw al ink . ball . My Application Ċ import Ġcom . ak uw al ink . ball . logic . model . Light Ċ import Ġcom . ak uw al ink . ball . logic . model . Model Ċ import Ġcom . ak uw al ink . ball . logic . model . World Ċ import Ġcom . ak uw al ink . ball . logic . model . models . Ball Ċ import Ġcom . ak uw al ink . ball . logic . model . models . Wall Ċ import Ġcom . ak uw al ink . ball . logic . physical . basic . Collision Models Ċ import Ġcom . ak uw al ink . ball . logic . physical . basic . Vec 3 Ċ import Ġcom . ak uw al ink . ball . logic . physical . event . Collision Ċ import Ġcom . ak uw al ink . ball . util .* Ċ import Ġjavax . micro edition . kh ronos . e gl . EGL Config Ċ import Ġjavax . micro edition . kh ronos . openg les . GL 1 0 Ċ import Ġandroid . icu . lang . U Character . G rap heme Cluster Break . T Ċ import Ġandroid . view . KeyEvent Ċ import Ġandroid . view . Motion Event Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . LinearLayout Ċ import Ġcom . ak uw al ink . ball . My Application . Companion . back _ flag Ċ import Ġcom . ak uw al ink . ball . My Application . Companion . now _ user Ċ import Ġcom . ak uw al ink . ball . My Application . Companion . user Dao Ċ import Ġcom . ak uw al ink . ball . My Application . Companion . win _ flag Ċ import Ġkotlinx . android . synt hetic . main . game . view .* Ċ import Ġjava . lang . Exception Ċ import Ġkotlin . concurrent . thread ĊĊ Ċ class ĠGame Surface View Ġ( context : ĠContext , map _ number : Int , mode : Int , long : Int , width : ĠInt , rub : Int , world : ĠWorld ): GL Surface View ( context ){ ĊĊĠĠĠ Ġvar Ġlast _ x = 0 f ĊĠĠĠ Ġvar Ġlast _ y = 0 f ĊĠĠĠ Ġlateinit Ġvar Ġworld : ĠWorld ĊĠĠĠ Ġvar Ġflag = true ĊĠĠĠ Ġinit { ĊĠĠĠĠĠĠĠ Ġthis . set EGL Context Client Version ( 3 ) ĊĠĠĠĠĠĠĠ Ġthis . world = world ĊĠĠĠĠĠĠĠ Ġval Ġrenderer = Game Renderer ( world , map _ number , mode , long , width , rub , context ) ĊĠĠĠĠĠĠĠ Ġthis . set Renderer ( renderer ) ĊĠĠĠĠĠĠĠ Ġthis . render Mode = GL Surface View . RENDER MODE _ CONT IN UO US LY ĊĠĠĠĠĠĠĠ Ġthread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile ( win _ flag != true ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( world . light . vec 3 . x > 1 5 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflag = true ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( world . light . vec 3 . x <- 1 5 f ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflag = false ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( flag ) Ġworld . light . vec 3 . x -= 0 . 2 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġworld . light . vec 3 . x += 0 . 2 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 2 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Touch Event ( event : ĠMotion Event ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( event != null && world . model _ list . size > 0 ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġx = event . x ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġy = event . y ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( event . action ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ DOWN ->{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast _ x = x ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast _ y = y ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ MOVE ->{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( world . model _ list [ 1 ]. speed . x < 0 . 0 5 && world . model _ list [ 1 ]. speed . y < 0 . 0 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġdx Ġ= Ġx Ġ- Ġlast _ x ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġdy Ġ= Ġlast _ y Ġ- Ġy ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġworld . model _ list [ 1 ]. speed . x Ġ+= Ġdx Ġ/ Ġ 1 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġworld . model _ list [ 1 ]. speed . y Ġ+= Ġdy Ġ/ Ġ 1 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĠĠĠ Ġclass ĠGame Renderer ( world : ĠWorld , map _ number : ĠInt , mode : ĠInt , long : ĠInt , width : ĠInt , rub : ĠInt , c : ĠContext ) Ġ: GL Surface View . Renderer { ĊĠĠĠĠĠĠĠ Ġvar Ġcontext = c ĊĠĠĠĠĠĠĠ Ġvar Ġworld : World ĊĠĠĠĠĠĠĠ Ġvar Ġmap _ number = 1 ĊĠĠĠĠĠĠĠ Ġvar Ġmode = mode ĊĠĠĠĠĠĠĠ Ġvar Ġscale = 0 ĊĠĠĠĠĠĠĠ Ġvar Ġlong = long ĊĠĠĠĠĠĠĠ Ġvar Ġwidth = width ĊĠĠĠĠĠĠĠ Ġvar Ġrub = rub ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Draw Frame ( gl : ĠGL 1 0 ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 3 0 . gl Clear ( GLES 3 0 . GL _ DEPTH _ BUFFER _ BIT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 3 0 . gl Clear ( GLES 3 0 . GL _ COLOR _ BUFFER _ BIT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( world . model _ list . size Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCollision . collision Start ( world ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġax Ġ= Ġscale Ġ- Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġay Ġ= Ġ- scale Ġ+ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( world . model _ list [ 1 ]. collision _ model . center . x Ġ> Ġax Ġ&& Ġworld . model _ list [ 1 ]. collision _ model . center . y Ġ< Ġay ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwin _ flag Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnow _ user . star Ġ= Ġmap _ number ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnow _ user . now Ġ= Ġmap _ number ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Dao . up data User ( now _ user ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġworld . draw All ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} catch Ġ( e : Exception ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Error (" draw ") ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . world = world ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . map _ number = map _ number ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . mode = mode ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Surface Changed ( gl : ĠGL 1 0 ?, Ġwidth : ĠInt , Ġheight : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġratio =( width /( height * 1 . 0 f )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 3 0 . gl Viewport ( 0 , 0 , width , height ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġworld . camera . set Pre sp (- ratio * scale , ratio * scale ,- 1 f * scale , 1 f * scale , 2 8 f , 3 2 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġworld . light = ĠLight ( Vec 3 ( 1 5 f , 0 f , 2 0 f )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġworld . camera . set Camera ( 0 f , 0 f , 3 0 f , 0 f , 0 f , 0 f , 0 f , 1 f , 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Error (" game Surface View ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Surface Created ( gl : ĠGL 1 0 ?, Ġconfig : ĠE GL Config ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 3 0 . gl Clear Color ( 0 . 5 f , 0 . 5 f , 0 . 5 f , 0 . 5 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 3 0 . gl Enable ( GLES 3 0 . GL _ DEPTH _ TEST ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġdata : Array < IntArray >? = null ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( mode == 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġmap Ġ= Ġchoose Map ( map _ number ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= Ġload Map File ( context , Ġ" local map /$ map ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( data != null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscale = data . size / 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} else Ġif ( mode == 1 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata = Ġmake Map ( long , width , Ġint ArrayOf ( 1 , 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( long > width ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscale = long ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscale = width ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( data != null ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist = Ġload Model ( data !! , context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġlist ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( mode == 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi . rub Ġ/= Ġmap _ number ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else Ġif ( mode == 1 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi . rub = 0 . 1 f / rub ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġworld . add Model ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Error (" view Create ") ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġchoose Map ( map _ number : ĠInt )= when ( map _ number ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 ->" map _ one . txt " ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 ->" map _ two . txt " ĊĠĠĠĠĠĠĠĠĠĠĠĠ 3 ->" map _ three . txt " ĊĠĠĠĠĠĠĠĠĠĠĠĠ 4 ->" map _ four . txt " ĊĠĠĠĠĠĠĠĠĠĠĠĠ 5 ->" map _ five . txt " ĊĠĠĠĠĠĠĠĠĠĠĠĠ 6 ->" map _ six . txt " ĊĠĠĠĠĠĠĠĠĠĠĠĠ 7 ->" map _ se ven . txt " ĊĠĠĠĠĠĠĠĠĠĠĠĠ 8 ->" map _ eight . txt " ĊĠĠĠĠĠĠĠĠĠĠĠĠ 9 ->" map _ n ine . txt " ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 0 ->" map _ ten . txt " ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 1 ->" map _ ele ven . txt " ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 2 ->" map _ tw el ve . txt " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ->" map _ one . txt " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠ Ġ/* Ġfun Ġinit FR BU ffers (){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġt ia = IntArray ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 3 0 . gl Gen Frame buffers ( 1 , t ia , 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġframe Buffer Id = t ia [ 0 ] ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 3 0 . gl Gen Render buffers ( 1 , t ia , 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrender Depth Buffer Id = t ia [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 3 0 . glBind Render buffer ( GLES 3 0 . GL _ RENDER BUFFER , render Depth Buffer Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 3 0 . gl Render buffer Storage ( GLES 3 0 . GL _ RENDER BUFFER , GLES 3 0 . GL _ DEPTH _ COMPONENT 1 6 , 4 0 9 6 , 4 0 9 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtemp Ids = IntArray ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 3 0 . gl Gen Textures ( 1 , temp Ids , 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshadow Id = temp Ids [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 3 0 . glBind Texture ( GLES 3 0 . GL _ TEXTURE _ 2 D , shadow Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 3 0 . gl TexParameter i ( GLES 3 0 . GL _ TEXTURE _ 2 D , ĠGLES 3 0 . GL _ TEXTURE _ MIN _ FILTER , GLES 3 0 . GL _ LINEAR ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 3 0 . gl TexParameter i ( GLES 3 0 . GL _ TEXTURE _ 2 D , GLES 3 0 . GL _ TEXTURE _ MAG _ FILTER , GLES 3 0 . GL _ LINEAR ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 3 0 . gl TexParameter i ( GLES 3 0 . GL _ TEXTURE _ 2 D , ĠGLES 3 0 . GL _ TEXTURE _ WRAP _ S , GLES 3 0 . GL _ CLAMP _ TO _ EDGE ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 3 0 . gl TexParameter i ( GLES 3 0 . GL _ TEXTURE _ 2 D , ĠGLES 3 0 . GL _ TEXTURE _ WRAP _ T , GLES 3 0 . GL _ CLAMP _ TO _ EDGE ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 3 0 . gl TexImage 2 D ( GLES 3 0 . GL _ TEXTURE _ 2 D , Ġ 0 , ĠGLES 3 0 . GL _ R 1 6 F , Ġ 4 0 9 6 , Ġ 4 0 9 6 , Ġ 0 , ĠGLES 3 0 . GL _ RED , ĠGLES 3 0 . GL _ FLOAT , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 3 0 . glBind Framebuffer ( GLES 3 0 . GL _ FRAMEBUFFER , Ġframe Buffer Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 3 0 . gl Framebuffer Texture 2 D ( GLES 3 0 . GL _ FRAMEBUFFER , ĠGLES 3 0 . GL _ COLOR _ ATTACHMENT 0 , ĠGLES 3 0 . GL _ TEXTURE _ 2 D , Ġshadow Id , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 3 0 . gl Framebuffer Render buffer ( GLES 3 0 . GL _ FRAMEBUFFER , ĠGLES 3 0 . GL _ DEPTH _ ATTACHMENT , ĠGLES 3 0 . GL _ RENDER BUFFER , Ġrender Depth Buffer Id ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( GLES 3 0 . gl Check Framebuffer Status ( GLES 3 0 . GL _ FRAMEBUFFER )!= GLES 3 0 . GL _ FRAMEBUFFER _ COMPLETE ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" init Ġerror "," now Ġerror ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 3 0 . glBind Render buffer ( GLES 3 0 . GL _ RENDER BUFFER , 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Error (" init FR B Buffer ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġshadow Image (){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 3 0 . gl Viewport ( 0 , 0 , 4 0 9 6 , 4 0 9 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 3 0 . glBind Framebuffer ( GLES 3 0 . GL _ FRAMEBUFFER , frame Buffer Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 3 0 . gl Clear ( GLES 3 0 . GL _ DEPTH _ BUFFER _ BIT ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 3 0 . gl Clear ( GLES 3 0 . GL _ COLOR _ BUFFER _ BIT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Error (" shadow Image ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġworld . camera . set Shadow Matrix (- 1 f , 1 f ,- 1 f , 1 f , 2 f , 4 0 f , world . light ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġworld . draw All ( 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġdraw Sc ane ( gl : ĠGL 1 0 ? ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 3 0 . gl Viewport ( 0 , 0 , now _ width , now _ height ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 3 0 . glBind Framebuffer ( GLES 3 0 . GL _ FRAMEBUFFER , 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 3 0 . gl Clear ( GLES 3 0 . GL _ DEPTH _ BUFFER _ BIT ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 3 0 . gl Clear ( GLES 3 0 . GL _ COLOR _ BUFFER _ BIT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġworld . shadow Id = shadow Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Error (" draw Sc ane ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġworld . draw All ( 0 ) ĊĠĠĠĠĠĠĠ Ġ}*/ ĊĠĠĠ Ġ} Ċ } Ċ