package Ġme . anno . re ms studio . ui Ċ Ċ import Ġme . anno . config . Default Config Ċ import Ġme . anno . config . Default Style Ċ import Ġme . anno . io . files . Invalid Ref Ċ import Ġme . anno . io . text . Text Writer Ċ import Ġme . anno . io . utils . String Map Ċ import Ġme . anno . language . translation . Dict Ċ import Ġme . anno . language . translation . Name Desc Ċ import Ġme . anno . math s . Math s . clamp Ċ import Ġme . anno . re ms studio . Rem s Studio Ċ import Ġme . anno . re ms studio . Rem s Studio . default Window Stack Ċ import Ġme . anno . re ms studio . Rem s Studio . last Tou ched Camera Ċ import Ġme . anno . re ms studio . Rem s Studio . null Camera Ċ import Ġme . anno . re ms studio . Selection Ċ import Ġme . anno . re ms studio . objects . Camera Ċ import Ġme . anno . re ms studio . objects . Rectangle Ċ import Ġme . anno . re ms studio . objects . Transform Ċ import Ġme . anno . re ms studio . objects . Transform . Companion . to Transform Ċ import Ġme . anno . re ms studio . objects . effects . Mask Layer Ċ import Ġme . anno . ui . base . menu . Menu Ċ import Ġme . anno . ui . base . menu . Menu Option Ċ import Ġme . anno . ui . editor . tree View . TreeView Ċ import Ġme . anno . ui . editor . tree View . TreeView Panel Ċ import Ġme . anno . ui . style . Style Ċ import Ġme . anno . utils . Color . to ARGB Ċ import Ġme . anno . utils . structures . lists . Updating List Ċ import Ġorg . apache . logging . log 4 j . Log Manager Ċ import Ġorg . j om l . Vector 3 f Ċ import Ġorg . j om l . Vector 4 f Ċ import Ġjava . util .* Ċ Ċ // Ġtodo Ġselect Ġmultiple Ġelements , Ġfilter Ġfor Ġcommon Ġproperties , Ġand Ġapply Ġthem Ġall Ġtogether Ġ:) Ċ Ċ class ĠStudio TreeView ( style : ĠStyle ) Ġ: ĊĠĠĠ ĠTree View < Transform >( ĊĠĠĠĠĠĠĠ ĠUpdating List Ġ{ ĠlistOf ( null Camera !! , ĠRem s Studio . root ) Ġ}, ĊĠĠĠĠĠĠĠ ĠStudio File Importer , Ġtrue , Ġstyle ĊĠĠĠ Ġ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġget Drag Type ( element : ĠTransform ): ĠString Ġ= Ġ" Transform " ĊĊĠĠĠ Ġoverride Ġfun Ġstringify For Copy ( element : ĠTransform ): ĠString Ġ= ĠText Writer . to Text ( element , ĠInvalid Ref ) ĊĊĠĠĠ Ġoverride Ġfun Ġget Symbol ( element : ĠTransform ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġelement . symbol ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġremove Child ( parent : ĠTransform , Ġchild : ĠTransform ) Ġ{ ĊĠĠĠĠĠĠĠ Ġparent . removeChild ( child ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Collapsed ( element : ĠTransform , Ġcollapsed : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġelement . is Collapsed I . value Ġ= Ġcollapsed ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Collapsed ( element : ĠTransform ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġelement . is Collapsed ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠsetName ( element : ĠTransform , Ġname : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġelement . name I . value Ġ= Ġname ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetName ( element : ĠTransform ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġelement . name . if Blank Ġ{ Ġelement . default DisplayName Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetParent ( element : ĠTransform ): ĠTransform ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġelement . parent ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Children ( element : ĠTransform ): ĠList < Transform > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġelement . children ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdestroy ( element : ĠTransform ) Ġ{ ĊĠĠĠĠĠĠĠ Ġelement . on Destroy () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcan Be Inserted ( parent : ĠTransform , Ġelement : ĠTransform , Ġindex : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġimmutable Ġ= Ġparent . listOf Inheritance . any Ġ{ Ġit . are Children Immutable Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġ! immutable ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcan Be Removed ( element : ĠTransform ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparent Ġ= Ġelement . parent Ġ?: Ġreturn Ġfalse Ġ// Ġroot Ġcannot Ġbe Ġremoved ĊĠĠĠĠĠĠĠ Ġval Ġimmutable Ġ= Ġparent . listOf Inheritance . any Ġ{ Ġit . are Children Immutable Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġ! immutable ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġselect Element ( element : ĠTransform ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠSelection . select Transform ( element ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġselect Element Maybe ( element : ĠTransform ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġif Ġalready Ġselected , Ġdon 't Ġinspect Ġthat Ġproperty / driver ĊĠĠĠĠĠĠĠ Ġif Ġ( Selection . selected Transform Ġ== Ġelement ) ĠSelection . clear () ĊĠĠĠĠĠĠĠ Ġselect Element ( element ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfocus On Element ( element : ĠTransform ) Ġ{ ĊĠĠĠĠĠĠĠ Ġzoom ToObject ( element ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġopen Add Menu ( parent : ĠTransform ) Ġ{ ĊĠĠĠĠĠĠĠ ĠComp anion . open Add Menu ( parent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġtmp Ġ= ĠVector 4 f () ĊĠĠĠ Ġprivate Ġval Ġaccent Color Ġ= Ġstyle . getColor (" accent Color ", ĠDefault Style . black ) ĊĠĠĠ Ġoverride Ġfun Ġget Local Color ( element : ĠTransform , Ġis Hover ed : ĠBoolean , ĠisIn Focus : ĠBoolean ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdst Ġ= Ġelement . getLocal Color ( tmp ) ĊĠĠĠĠĠĠĠ Ġdst . w Ġ= Ġ 0 . 5 f Ġ+ Ġ 0 . 5 f Ġ* Ġclamp ( dst . w , Ġ 0 f , Ġ 1 f ) ĊĠĠĠĠĠĠĠ Ġvar ĠtextColor Ġ= Ġdst . to ARGB () ĊĠĠĠĠĠĠĠ Ġif Ġ( is Hover ed ) ĠtextColor Ġ= Ġsample . run Ġ{ Ġui Symbol Ġ?: Ġtext Ġ}. hover Color ĊĠĠĠĠĠĠĠ Ġif Ġ( isIn Focus ) ĠtextColor Ġ= Ġaccent Color ĊĠĠĠĠĠĠĠ Ġreturn ĠtextColor ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Tooltip Text ( element : ĠTransform ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( element Ġis ĠCamera ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelement . default DisplayName Ġ+ ĠDict [ ", Ġdrag Ġonto Ġscene Ġto Ġview ", Ġ" ui . tree View . drag Camera To View "] ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġelement :: class . simple Name ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Paste ( x : ĠFloat , Ġy : ĠFloat , Ġdata : ĠString , Ġtype : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! try Paste Transform ( data )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Paste ( x , Ġy , Ġdata , Ġtype ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġreturns Ġtrue Ġon Ġsuccess ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġtry Paste Transform ( data : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtransform Ġ= Ġdata . to Transform () Ġ?: Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ ĠRem s Studio . large Change (" Past ed Ġ${ transform . name }") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRem s Studio . root . addChild ( transform ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* override Ġfun ĠonDelete Key ( x : ĠFloat , Ġy : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpanel Ġ= Ġlist . children . first OrNull Ġ{ Ġit . contains ( x , Ġy ) Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( panel Ġis ĠTree View Panel <* >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelement Ġ= Ġpanel . getElement () Ġas ĠTransform ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparent Ġ= ĠgetParent ( element ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( parent Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRem s Studio . large Change (" Deleted ĠComponent Ġ${ getName ( element )} ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremove Child ( parent , Ġelement ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( it Ġin Ġelement . listOf All . toList ()) Ġdestroy ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}*/ ĊĊĠĠĠ Ġoverride Ġfun ĠisValid Element ( element : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġelement Ġis ĠTransform ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġtoggle Collapsed ( element : ĠTransform ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= ĠgetName ( element ) ĊĠĠĠĠĠĠĠ Ġval Ġis Collapsed Ġ= Ġis Collapsed ( element ) ĊĠĠĠĠĠĠĠ ĠRem s Studio . large Change ( if Ġ( is Collapsed ) Ġ" Expanded Ġ$ name " Ġelse Ġ" Collapsed Ġ$ name ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtarget Ġ= Ġ! is Collapsed ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġremove Ġchildren Ġfrom Ġthe Ġselection ??? ... ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtargets Ġ= Ġwindow Stack . in Focus . filter Is Instance < TreeView Panel <* >>() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( it Ġin Ġtargets ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" unchecked _ cast ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelement 2 Ġ= Ġit . getElement () Ġas ĠTransform ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Collapsed ( element 2 , Ġtarget ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( targets . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Collapsed ( element , Ġtarget ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġzoom ToObject ( obj : ĠTransform ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġinstead Ġof Ġasking Ġfor Ġthe Ġname , Ġmove Ġthe Ġcamera Ġtowards Ġthe Ġtarget ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġtodo Ġalso Ġzoom Ġin / out Ġcorrectly Ġto Ġmatch Ġthe Ġobject ... ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġidentify Ġthe Ġcurrently Ġused Ġcamera ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcamera Ġ= Ġlast Tou ched Camera Ġ?: Ġnull Camera Ġ?: Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtime Ġ= ĠRem s Studio . editor Time ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcalculate Ġthe Ġmovement , Ġwhich Ġwould Ġbe Ġnecessary ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcamera To World Ġ= Ġcamera . parent ?. getGlobal Transform ( time ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġobject To World Ġ= Ġobj . getGlobal Transform ( time ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġobject World Position Ġ= Ġobject To World . transform Position ( Vector 3 f ( 0 f , Ġ 0 f , Ġ 0 f )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġobject Camera Position Ġ= Ġif Ġ( camera To World Ġ== Ġnull ) Ġobject World Position Ġelse Ġcamera To World . invert () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. transform Position ( object World Position ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOGGER . info ( object Camera Position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġapply Ġthis Ġmovement ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRem s Studio . large Change (" Move ĠCamera Ġto ĠObject ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcamera . position . add Keyframe ( camera . last Local Time , Ġobject Camera Position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* Ġask Name ( this . x , Ġthis . y , ĠName Desc (), Ġget Element (). name , ĠName Desc (" Change ĠName "), Ġ{ ĠtextColor Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Element (). name Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}*/ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠLOGGER Ġ= ĠLog Manager . getLogger ( Studio TreeView :: class ) ĊĠĠĠĠĠĠĠ Ġfun Ġopen Add Menu ( base Transform : ĠTransform ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġadd ( action : Ġ( Transform ) Ġ-> ĠTransform ): Ġ() Ġ-> ĠUnit Ġ= Ġ{ ĠSelection . select Transform ( action ( base Transform )) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoptions Ġ= ĠDefault Config [" createNew Instances List "] Ġas ? ĠString Map ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( options Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġextras Ġ= ĠArrayList < Menu Option >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( base Transform . parent Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġextras Ġ+= ĠMenu . menu Separator 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġextras Ġ+= ĠMenu Option ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠName Desc ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Add ĠMask ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Creates Ġa Ġmask Ġcomponent , Ġwhich Ġcan Ġbe Ġused Ġfor Ġmany Ġeffects ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ui . objects . add Mask " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparent Ġ= Ġbase Transform . parent !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġi Ġ= Ġparent . children . indexOf ( base Transform ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ< Ġ 0 ) Ġthrow ĠRuntimeException () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmask Ġ= ĠMask Layer . create ( listOf ( Rectangle . create ()), ĠlistOf ( base Transform )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmask . is Fullscreen Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent . set Child At ( mask , Ġi ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġadditional Ġ= Ġbase Transform . getAdditional Children Options (). map Ġ{ Ġoption Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMenu Option ( Name Desc ( option . title , Ġoption . description , Ġ"")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRem s Studio . large Change (" Added Ġ${ option . title }") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Ġ= Ġoption . generator () Ġas ĠTransform ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbase Transform . addChild ( new ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSelection . select Transform ( new ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( additional . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġextras Ġ+= ĠMenu . menu Separator 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġextras Ġ+= Ġadditional ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġws Ġ= Ġdefault Window Stack ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMenu . open Menu ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Window Stack , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġws . mouse X , Ġws . mouse Y , ĠName Desc (" Add ĠChild ", Ġ"", Ġ" ui . objects . add "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoptions . entries ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. sorted By Ġ{ Ġ( key , Ġ_) Ġ-> Ġkey . lowercase ( Locale . getDefault ()) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġ( key , Ġvalue ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsample Ġ= Ġif Ġ( value Ġis ĠTransform ) Ġvalue . clone () Ġelse Ġvalue . toString (). to Transform () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMenu Option ( Name Desc ( key , Ġsample ?. default DisplayName Ġ?: Ġ"", Ġ""), Ġadd Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew T Ġ= Ġif Ġ( value Ġis ĠTransform ) Ġvalue . clone () Ġelse Ġvalue . toString (). to Transform () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew T !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . addChild ( new T ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew T ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ+ Ġextras ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĠLOGGER . warn ( Dict [" Reset Ġthe Ġconfig Ġto Ġenable Ġthis Ġmenu !", Ġ" config . warn . needs Reset . for Menu "]) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġmove Change ( run : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ ĠRem s Studio . large Change (" Moved ĠComponent ", Ġrun ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval ĠclassName Ġget () Ġ= Ġ" Studio TreeView " ĊĠĠĠ Ġoverride Ġfun Ġget Index In Parent ( parent : ĠTransform , Ġchild : ĠTransform ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġchild . index In Parent ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġadd Child ( element : ĠTransform , Ġchild : ĠAny , Ġindex : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġelement . addChild ( index , Ġchild Ġas ĠTransform ) ĊĠĠĠ Ġ} Ċ Ċ }