package Ġcom . example . trip he o 2 4 1 0 . galax see . planet Rendering Ċ Ċ import Ġandroid . animation . Object Animator Ċ import Ġandroid . view . animation . Linear Interpolator Ċ import Ġcom . google . ar . scene form . Frame Time Ċ import Ġcom . google . ar . scene form . Node Ċ import Ġcom . google . ar . scene form . math . Quaternion Ċ import Ġcom . google . ar . scene form . math . Quaternion Evaluator Ċ import Ġcom . google . ar . scene form . math . Vector 3 Ċ Ċ class ĠRot ating Node ( private Ġval Ġsolar Settings : ĠSol ar Settings , Ġprivate Ġval Ġis Orbit : ĠBoolean ) Ġ: ĠNode () Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġorbit Animation : ĠObject Animator ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġdegrees PerSecond Ġ= Ġ 9 0 . 0 f ĊĠĠĠ Ġprivate Ġvar Ġlast Speed Multiplier Ġ= Ġ 1 . 0 f ĊĠĠĠ Ġprivate Ġval Ġanimation Duration : ĠLong ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ( 1 0 0 0 Ġ* Ġ 3 6 0 Ġ/ Ġ( degrees PerSecond Ġ* Ġspeed Multiplier )). to Long () ĊĠĠĠ Ġprivate Ġval Ġspeed Multiplier : ĠFloat ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġif Ġ( is Orbit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsolar Settings . orbit Speed Multiplier ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsolar Settings . rotation Speed Multiplier ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonUpdate ( frame Time : ĠFrame Time ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Update ( frame Time ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAnimation Ġhasn 't Ġbeen Ġset Ġup . ĊĠĠĠĠĠĠĠ Ġif Ġ( orbit Animation Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠCheck Ġif Ġwe Ġneed Ġto Ġchange Ġthe Ġspeed Ġof Ġrotation . ĊĠĠĠĠĠĠĠ Ġval Ġspeed Multiplier Ġ= Ġspeed Multiplier ĊĊĠĠĠĠĠĠĠ Ġ// ĠNothing Ġhas Ġchanged . ĠContinue Ġrot ating Ġat Ġthe Ġsame Ġspeed . ĊĠĠĠĠĠĠĠ Ġif Ġ( last Speed Multiplier Ġ== Ġspeed Multiplier ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( speed Multiplier Ġ== Ġ 0 . 0 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġorbit Animation !!. pause () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġorbit Animation !!. resume () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġanimated Fraction Ġ= Ġorbit Animation !!. animated Fraction ĊĠĠĠĠĠĠĠĠĠĠĠ Ġorbit Animation !!. duration Ġ= Ġanimation Duration ĊĠĠĠĠĠĠĠĠĠĠĠ Ġorbit Animation !!. setCurrent Fraction ( animated Fraction ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġlast Speed Multiplier Ġ= Ġspeed Multiplier ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠSets Ġrotation Ġspeed Ġ Ġ*/ ĊĠĠĠ Ġfun Ġset Degrees PerSecond ( degrees PerSecond : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . degrees PerSecond Ġ= Ġdegrees PerSecond ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activate () Ġ{ ĊĠĠĠĠĠĠĠ Ġstart Animation () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon De activate () Ġ{ ĊĠĠĠĠĠĠĠ Ġstop Animation () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstart Animation () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( orbit Animation Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġorbit Animation Ġ= Ġcreate Animator () ĊĠĠĠĠĠĠĠ Ġorbit Animation !!. target Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġorbit Animation !!. duration Ġ= Ġanimation Duration ĊĠĠĠĠĠĠĠ Ġorbit Animation !!. start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstop Animation () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( orbit Animation Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġorbit Animation !!. cancel () ĊĠĠĠĠĠĠĠ Ġorbit Animation Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠReturns Ġan ĠObject Animator Ġthat Ġmakes Ġthis Ġnode Ġrotate . Ġ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġcreate Animator (): ĠObject Animator Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠNode 's Ġset Local Rotation Ġmethod Ġaccepts ĠQu atern ions Ġas Ġparameters . ĊĠĠĠĠĠĠĠ Ġ// ĠFirst , Ġset Ġup Ġorient ations Ġthat Ġwill Ġanimate Ġa Ġcircle . ĊĠĠĠĠĠĠĠ Ġval Ġorientation 1 Ġ= ĠQuaternion . axis Angle ( Vector 3 ( 0 . 0 f , Ġ 1 . 0 f , Ġ 0 . 0 f ), Ġ 0 f ) ĊĠĠĠĠĠĠĠ Ġval Ġorientation 2 Ġ= ĠQuaternion . axis Angle ( Vector 3 ( 0 . 0 f , Ġ 1 . 0 f , Ġ 0 . 0 f ), Ġ 1 2 0 f ) ĊĠĠĠĠĠĠĠ Ġval Ġorientation 3 Ġ= ĠQuaternion . axis Angle ( Vector 3 ( 0 . 0 f , Ġ 1 . 0 f , Ġ 0 . 0 f ), Ġ 2 4 0 f ) ĊĠĠĠĠĠĠĠ Ġval Ġorientation 4 Ġ= ĠQuaternion . axis Angle ( Vector 3 ( 0 . 0 f , Ġ 1 . 0 f , Ġ 0 . 0 f ), Ġ 3 6 0 f ) ĊĊĠĠĠĠĠĠĠ Ġval Ġorbit Animation Ġ= ĠObject Animator () ĊĠĠĠĠĠĠĠ Ġorbit Animation . set Object Values ( orientation 1 , Ġorientation 2 , Ġorientation 3 , Ġorientation 4 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠNext , Ġgive Ġit Ġthe Ġlocal Rotation Ġproperty . ĊĠĠĠĠĠĠĠ Ġorbit Animation . propertyName Ġ= Ġ" local Rotation " ĊĊĠĠĠĠĠĠĠ Ġ// ĠUse ĠScene form 's ĠQuaternion Evaluator . ĊĠĠĠĠĠĠĠ Ġorbit Animation . set Evaluator ( Quaternion Evaluator ()) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ ĠAllow Ġorbit Animation Ġto Ġrepeat Ġforever ĊĠĠĠĠĠĠĠ Ġorbit Animation . repeat Count Ġ= ĠObject Animator . INF IN ITE ĊĠĠĠĠĠĠĠ Ġorbit Animation . repeat Mode Ġ= ĠObject Animator . RE START ĊĠĠĠĠĠĠĠ Ġorbit Animation . interpol ator Ġ= ĠLinear Interpolator () ĊĠĠĠĠĠĠĠ Ġorbit Animation . setAuto Cancel ( true ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġorbit Animation ĊĠĠĠ Ġ} Ċ }