/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 0 ĠMagic ĠLe ap , ĠInc . ĠAll ĠRights ĠReserved Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . mag icle ap . magic script . scene . nodes . prism Ċ Ċ import Ġandroid . animation . Animator Ċ import Ġandroid . animation . Value Animator Ċ import Ġandroid . content . Context Ċ import Ġcom . facebook . react . bridge . Java Only Map Ċ import Ġcom . google . ar . scene form . math . Vector 3 Ċ import Ġcom . mag icle ap . magic script . ar . Ar Resources Provider Ċ import Ġcom . mag icle ap . magic script . ar . clip . Texture Clip per Ċ import Ġcom . mag icle ap . magic script . ar . render able . View Render able Loader Impl Ċ import Ġcom . mag icle ap . magic script . font . providers . Android Font Provider Ċ import Ġcom . mag icle ap . magic script . font . providers . Font Provider Impl Ċ import Ġcom . mag icle ap . magic script . icons . Default Icons Provider Ċ import Ġcom . mag icle ap . magic script . icons . External Icons Provider Ċ import Ġcom . mag icle ap . magic script . icons . Icons Repository Impl Ċ import Ġcom . mag icle ap . magic script . scene . nodes . Group Node Ċ import Ġcom . mag icle ap . magic script . scene . nodes . Ui Text Node Ċ import Ġcom . mag icle ap . magic script . scene . nodes . button . Ui Button Node Ċ import Ġcom . mag icle ap . magic script . utils . Simple Animator Listener Ċ Ċ class ĠPrism Menu ( ĊĠĠĠ Ġcontext : ĠContext , ĊĠĠĠ Ġar Resources Provider : ĠAr Resources Provider , ĊĠĠĠ Ġprivate Ġvar Ġtitle : ĠString Ċ ) Ġ: ĠGroup Node ( Java Only Map ()) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠICON _ SIZE Ġ= Ġ 0 . 2 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTEXT _ SIZE Ġ= Ġ 0 . 1 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠICON _ TYPE Ġ= Ġ" generic _ three _ dimensional " ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSHOW _ DELAY Ġ= Ġ 1 0 0 0 L ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSHOW _ ANIM _ DURATION Ġ= Ġ 3 0 0 L ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġon Edit ClickListener : Ġ(() Ġ-> ĠUnit )? Ġ= Ġnull ĊĊĠĠĠ Ġvar Ġhard In visible Ġ= Ġfalse ĊĊĠĠĠ Ġprivate Ġval Ġlabel : ĠUi Text Node ĊĠĠĠ Ġprivate Ġval Ġbutton Edit : ĠUi Button Node ĊĠĠĠ Ġprivate Ġval Ġanim ator Ġ= ĠValue Animator . of Float ( 0 f , Ġ 1 . 2 f , Ġ 1 f ) ĊĊĠĠĠ Ġinit Ġ{ ĊĊĠĠĠĠĠĠĠ Ġlabel Ġ= ĠUi Text Node ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Props Ġ= Ġget Label Props (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Render able Loader Ġ= ĠView Render able Loader Impl ( context , Ġar Resources Provider ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnode Clip per Ġ= ĠTexture Clip per (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfont Provider Ġ= ĠFont Provider Impl ( context , ĠAndroid Font Provider ()) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġbutton Edit Ġ= ĠUi Button Node ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Props Ġ= Ġget Button Props (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Render able Loader Ġ= ĠView Render able Loader Impl ( context , Ġar Resources Provider ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnode Clip per Ġ= ĠTexture Clip per (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfont Provider Ġ= ĠFont Provider Impl ( context , ĠAndroid Font Provider ()), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġicons Repo Ġ= ĠIcons Repository Impl ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDefault Icons Provider ( context ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExternal Icons Provider ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow Animated () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( anim ator . is Started ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġanim ator . addListener ( object Ġ: ĠSimple Animator Listener () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Start ( animation : ĠAn imator ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isActive Ġ&& Ġ! hard In visible ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Visible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġanim ator . add Update Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscale Ġ= Ġit . animated Value Ġas ĠFloat ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocal Scale Ġ= ĠVector 3 ( scale , Ġscale , Ġscale ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġanim ator . start Delay Ġ= ĠSHOW _ DELAY ĊĠĠĠĠĠĠĠ Ġanim ator . duration Ġ= ĠSHOW _ ANIM _ DURATION ĊĠĠĠĠĠĠĠ Ġanim ator . start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbuild () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . build () ĊĊĠĠĠĠĠĠĠ Ġlabel . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuild () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposition Y Ġ= ĠICON _ SIZE . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocal Position Ġ= ĠVector 3 ( 0 f , Ġposition Y , Ġ 0 f ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbutton Edit . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuild () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġsale Ġdown Ġfor Ġbetter Ġquality ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocal Scale Ġ= ĠVector 3 ( 0 . 5 f , Ġ 0 . 5 f , Ġ 0 . 5 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposition Y Ġ= Ġ( ICON _ SIZE Ġ/ Ġ 2 ). toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocal Position Ġ= ĠVector 3 ( 0 f , Ġposition Y , Ġ 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Listener Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Edit ClickListener ?. invoke () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġadd Content ( label ) ĊĠĠĠĠĠĠĠ Ġadd Content ( button Edit ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Visibility Changed ( visibility : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Visibility Changed ( visibility ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! visibility ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstop Show Animation () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġstop Show Animation () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Title ( title : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . title Ġ= Ġtitle ĊĠĠĠĠĠĠĠ Ġlabel . update ( getLabel Props ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Label Props (): ĠJava Only Map Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠJava Only Map . of ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUi Text Node . PROP _ TEXT , Ġtitle , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUi Text Node . PROP _ TEXT _ SIZE , ĠTEXT _ SIZE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPROP _ ALIGNMENT , Ġ" bottom - center " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Button Props (): ĠJava Only Map Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠJava Only Map . of ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUi Button Node . PROP _ WIDTH , ĠICON _ SIZE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUi Button Node . PROP _ HEIGHT , ĠICON _ SIZE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUi Button Node . PROP _ ICON _ TYPE , ĠICON _ TYPE ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstop Show Animation () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( anim ator . is Started ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanim ator . cancel () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }