package Ġme . anno . ui . custom Ċ Ċ import Ġme . anno . config . Default Style . white Ċ import Ġme . anno . gpu . Texture Lib . white Texture Ċ import Ġme . anno . gpu . drawing . Draw Textures . draw Texture Ċ import Ġme . anno . image . Image GPU Cache . get Internal Texture Ċ import Ġme . anno . input . MouseButton Ċ import Ġme . anno . language . translation . Name Desc Ċ import Ġme . anno . ui . base . Panel Ċ import Ġme . anno . ui . base . components . Padding Ċ import Ġme . anno . ui . base . groups . Panel Container Ċ import Ġme . anno . ui . base . menu . Menu . open Menu Ċ import Ġme . anno . ui . base . menu . Menu Option Ċ import Ġme . anno . ui . editor . scene View . Scene View Ċ import Ġme . anno . ui . style . Style Ċ Ċ class ĠCustom Container ( default : ĠPanel , Ġval Ġlibrary : ĠUI Type Library , Ġstyle : ĠStyle ) Ġ: ĊĠĠĠ ĠPanel Container ( default , ĠPadding ( 0 ), Ġstyle ) Ġ{ ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( default Ġis ĠCustom Container ) Ġme . anno . utils . LOGGER . warn (" You Ġadded Ġa Ġcustom Ġcontainer Ġto Ġa Ġcustom Ġcontainer ." Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠYou Ġprobably Ġmade Ġa Ġmistake !") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcalculate Size ( w : ĠInt , Ġh : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġchild . calculate Size ( w , Ġh ) ĊĠĠĠĠĠĠĠ Ġmin W Ġ= Ġchild . min W ĊĠĠĠĠĠĠĠ Ġmin H Ġ= Ġchild . min H ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġplace In Parent ( x : ĠInt , Ġy : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġchild . place In Parent ( x , Ġy ) ĊĠĠĠĠĠĠĠ Ġthis . x Ġ= Ġx ĊĠĠĠĠĠĠĠ Ġthis . y Ġ= Ġy ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinvalidate Layout () Ġ{ ĊĠĠĠĠĠĠĠ Ġwindow !!. needs Layout Ġ+= Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdraw s Overlay s Over Children ( lx 0 : ĠInt , Ġly 0 : ĠInt , Ġlx 1 : ĠInt , Ġly 1 : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . lx 1 Ġ- Ġlx 1 Ġ< Ġcustom Container Cross Size Ġ&& Ġly 0 Ġ- Ġthis . ly 0 Ġ< Ġcustom Container Cross Size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Draw ( x 0 : ĠInt , Ġy 0 : ĠInt , Ġx 1 : ĠInt , Ġy 1 : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Draw ( x 0 , Ġy 0 , Ġx 1 , Ġy 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġicon Ġ= Ġget Internal Texture (" cross . png ", Ġtrue ) Ġ?: Ġwhite Texture ĊĠĠĠĠĠĠĠ Ġdraw Texture ( x Ġ+ Ġw Ġ- Ġ 1 4 , Ġy Ġ+ Ġ 2 , Ġ 1 2 , Ġ 1 2 , Ġicon , Ġwhite , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Before ( index : ĠInt , Ġparent : ĠCustom List ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġchildren Ġ= Ġparent . children ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= ĠCustom Container ( Scene View ( style ), Ġlibrary , Ġstyle ) ĊĠĠĠĠĠĠĠ Ġval Ġbar Ġ= ĠCustom izing Bar ( 0 , Ġ 3 , Ġ 0 , Ġstyle ) ĊĠĠĠĠĠĠĠ Ġbar . parent Ġ= Ġparent ĊĠĠĠĠĠĠĠ Ġview . parent Ġ= Ġparent ĊĠĠĠĠĠĠĠ Ġchildren . add ( index Ġ+ Ġ 0 , Ġview ) ĊĠĠĠĠĠĠĠ Ġchildren . add ( index Ġ+ Ġ 1 , Ġbar ) ĊĠĠĠĠĠĠĠ Ġview . weight Ġ= Ġ 1 f ĊĠĠĠĠĠĠĠ Ġparent . update () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd After ( index : ĠInt , Ġparent : ĠCustom List ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġchildren Ġ= Ġparent . children ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= ĠCustom Container ( Scene View ( style ), Ġlibrary , Ġstyle ) ĊĠĠĠĠĠĠĠ Ġval Ġbar Ġ= ĠCustom izing Bar ( 0 , Ġ 3 , Ġ 0 , Ġstyle ) ĊĠĠĠĠĠĠĠ Ġbar . parent Ġ= Ġparent ĊĠĠĠĠĠĠĠ Ġview . parent Ġ= Ġparent ĊĠĠĠĠĠĠĠ Ġchildren . add ( index Ġ+ Ġ 1 , Ġbar ) ĊĠĠĠĠĠĠĠ Ġchildren . add ( index Ġ+ Ġ 2 , Ġview ) ĊĠĠĠĠĠĠĠ Ġview . weight Ġ= Ġ 1 f ĊĠĠĠĠĠĠĠ Ġparent . update () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġreplace ( index : ĠInt , Ġparent : ĠCustom List , Ġis Y : ĠBoolean , Ġfirst This : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġchildren Ġ= Ġparent . children ĊĠĠĠĠĠĠĠ Ġval Ġreplaced Ġ= ĠCustom List ( is Y , Ġstyle ) ĊĠĠĠĠĠĠĠ Ġreplaced . parent Ġ= Ġparent ĊĠĠĠĠĠĠĠ Ġchildren [ index ] Ġ= Ġreplaced ĊĠĠĠĠĠĠĠ Ġreplaced . weight Ġ= Ġthis . weight ĊĠĠĠĠĠĠĠ Ġif Ġ( first This ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreplaced . add ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreplaced . add ( Custom Container ( Scene View ( style ), Ġlibrary , Ġstyle )) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreplaced . add ( Custom Container ( Scene View ( style ), Ġlibrary , Ġstyle )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreplaced . add ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġparent . update () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Panel ( is Y Action : ĠBoolean , Ġfirst This : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparent Ġ= Ġparent !! ĊĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġindex In Parent ĊĠĠĠĠĠĠĠ Ġparent Ġas ĠCustom List ĊĠĠĠĠĠĠĠ Ġif Ġ( is Y Action Ġ== Ġparent . is Y ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( first This ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd After ( index , Ġparent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Before ( index , Ġparent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġreplace ( index , Ġparent , Ġis Y Action , Ġfirst This ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġchange Type () Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġaction ( action : Ġ() Ġ-> ĠPanel ): Ġ() Ġ-> ĠUnit Ġ= Ġ{ Ġchange To ( action ()) Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġoptions Ġ= Ġlibrary . type List ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĠMenu Option ( Name Desc ( it . displayName , Ġ"", Ġ""), Ġaction Ġ{ Ġit . constructor () Ġ}) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Mutable List () ĊĠĠĠĠĠĠĠ Ġoptions Ġ+= ĠMenu Option ( Name Desc (" Remove ĠThis ĠElement ", Ġ"", Ġ" ui . customize . remove ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( parent Ġas ? ĠCustom List )?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremove ( index In Parent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUnit ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġoptions Ġ+= ĠMenu Option ( Name Desc (" Add ĠPanel ĠBefore ", Ġ"", Ġ" ui . customize . add Before ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Panel ( false , Ġfirst This Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġoptions Ġ+= ĠMenu Option ( Name Desc (" Add ĠPanel ĠAfter ", Ġ"", Ġ" ui . customize . add After ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Panel ( false , Ġfirst This Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġoptions Ġ+= ĠMenu Option ( Name Desc (" Add ĠPanel ĠA bove ", Ġ"", Ġ" ui . customize . add Above ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Panel ( true , Ġfirst This Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġoptions Ġ+= ĠMenu Option ( Name Desc (" Add ĠPanel ĠBelow ", Ġ"", Ġ" ui . customize . add Below ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Panel ( true , Ġfirst This Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġopen Menu ( x Ġ+ Ġw Ġ- Ġ 1 6 , Ġy , ĠName Desc (" Custom ize ĠUI ", Ġ"", Ġ" ui . customize . title "), Ġoptions ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġchange To ( panel : ĠPanel ) Ġ{ ĊĠĠĠĠĠĠĠ Ġchild Ġ= Ġpanel ĊĠĠĠĠĠĠĠ Ġchild . parent Ġ= Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Got Action ( x : ĠFloat , Ġy : ĠFloat , Ġdx : ĠFloat , Ġdy : ĠFloat , Ġaction : ĠString , Ġis Continuous : ĠBoolean ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Change Type " Ġ-> Ġchange Type () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Change Type ( Scene View )" Ġ-> Ġchange To ( Scene View ( style )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġreturn Ġsuper . on Got Action ( x , Ġy , Ġdx , Ġdy , Ġaction , Ġis Continuous ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonMouse Clicked ( x : ĠFloat , Ġy : ĠFloat , Ġbutton : ĠMouse Button , Ġlong : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġclicked ( x , Ġy ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclicked ( x : ĠFloat , Ġy : ĠFloat ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( is Cross ( x , Ġy )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchange Type () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcustom Container Cross Size Ġ= Ġ 1 6 f ĊĠĠĠĠĠĠĠ Ġfun ĠPanel . is Cross ( x : ĠFloat , Ġy : ĠFloat ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ- Ġ( this . x Ġ+ Ġw Ġ- Ġ 1 6 f ) Ġin Ġ 0 f .. custom Container Cross Size Ġ&& Ġy Ġ- Ġthis . y Ġin Ġ 0 f .. custom Container Cross Size ĊĠĠĠ Ġ} Ċ Ċ }