package Ġopen vr . assets . steam VR . input Ċ Ċ import Ġcom . be ust . kl ax on . Kl ax on Ċ import Ġglm _. vec 2 . Vec 2 Ċ import Ġglm _. vec 3 . Vec 3 Ċ import Ġopen vr . lib . VR Input Value Handle Ċ import Ġopen vr . lib . vr Input Ċ import Ġopen vr . lib . vr Input . VR Input String Ċ import Ġopen vr . plugin 2 . Steam VR _ Input _ Source Ċ import Ġopen vr . plugin 2 . Steam VR _ Input _ Sources Ċ import Ġopen vr . assets . steam VR . script . Steam VR _ Behaviour Ċ import Ġopen vr . assets . steam VR . script . Steam VR _ Settings Ċ import Ġopen vr . assets . steam VR . script . Steam VR _ Utils Ċ import Ġopen vr . steam VR _ Input . Steam VR _ Actions Ċ import Ġopen vr . unity . Application Ċ import Ġopen vr . unity . Time Ċ Ċ // ======= ĠCopyright Ġ( c ) ĠVal ve ĠCorporation , ĠAll Ġrights Ġreserved . Ġ= ============== Ċ Ċ type alias ĠPo ses Updated Handler Ġ= Ġ( skip Sending Events : ĠBoolean ) Ġ-> ĠUnit Ċ type alias ĠS ke letons Updated Handler Ġ= Ġ( skip Sending Events : ĠBoolean ) Ġ-> ĠUnit Ċ type alias ĠAction Ġ= Ġ() Ġ-> ĠUnit Ċ Ċ fun Ġmain () Ġ{ ĊĠĠĠ Ġprintln ( org . lwjgl . open vr . VR . k _ n Steam VR Version Build ) Ċ } Ċ Ċ object ĠSteam VR _ Input Ġ{ ĊĊĠĠĠ Ġval Ġdefault Input Game ObjectName Ġ= Ġ"[ Steam VR ĠSteam VR _ Input ]" ĊĠĠĠ Ġprivate Ġval Ġlocalization KeyName Ġ= Ġ" localization " ĊĊĠĠĠ Ġvar Ġactions FilePath Ġ= ĠSteam VR _ Settings . actions FilePath ĊĊĠĠĠ Ġ/** ĠTrue Ġif Ġthe Ġactions Ġfile Ġhas Ġbeen Ġinitialized Ġ*/ ĊĠĠĠ Ġvar Ġfile Initialized Ġ= Ġfalse ĊĊĠĠĠ Ġ/** ĠTrue Ġif Ġthe Ġsteam vr Ġinput Ġsystem Ġinitialization Ġprocess Ġhas Ġcompleted Ġsuccessfully Ġ*/ ĊĠĠĠ Ġvar Ġinitialized Ġ= Ġfalse ĊĊĠĠĠ Ġ/** ĠTrue Ġif Ġthe Ġpre initialization Ġprocess Ġ( setting Ġup Ġdictionaries , Ġetc ) Ġhas Ġcompleted Ġsuccessfully Ġ*/ ĊĠĠĠ Ġvar Ġpre Initialized Ġ= Ġfalse ĊĊĠĠĠ Ġ/** ĠThe Ġserialized Ġversion Ġof Ġthe Ġactions Ġfile Ġwe 're Ġcurrently Ġusing Ġ( only Ġused Ġin Ġeditor ) Ġ*/ ĊĠĠĠ Ġlateinit Ġvar Ġaction File : ĠSteam VR _ Input _ Action File ĊĊĠĠĠ Ġ/** ĠThe Ġhash Ġof Ġthe Ġcurrent Ġaction Ġfile Ġon Ġdisk Ġ*/ ĊĠĠĠ Ġvar Ġaction File Hash : ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġ/** ĠAn Ġevent Ġthat Ġfires Ġwhen Ġthe Ġnon Ġvisual Ġactions Ġ( everything Ġexcept Ġpo ses Ġ/ Ġs ke letons ) Ġhave Ġbeen Ġupdated Ġ*/ ĊĠĠĠ Ġval Ġon Non Visual Actions Updated Ġ= ĠArrayList < Action >() ĊĊĠĠĠ Ġ/** ĠAn Ġevent Ġthat Ġfires Ġwhen Ġthe Ġpose Ġactions Ġhave Ġbeen Ġupdated Ġ*/ ĊĠĠĠ Ġval Ġon Po ses Updated Ġ= ĠArrayList < Po ses Updated Handler >() ĊĊĠĠĠ Ġ/** ĠAn Ġevent Ġthat Ġfires Ġwhen Ġthe Ġskeleton Ġactions Ġhave Ġbeen Ġupdated Ġ*/ ĊĠĠĠ Ġval Ġon S ke letons Updated Ġ= ĠArrayList < S ke letons Updated Handler >() ĊĊĊĠĠĠ Ġprivate Ġvar Ġinitializing Ġ= Ġfalse ĊĊĠĠĠ Ġprivate Ġvar Ġstartup Frame Ġ= Ġ 0 ĊĠĠĠ Ġval Ġis Startup Frame : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠTime . frame Count Ġ>= Ġ( startup Frame Ġ- Ġ 1 ) Ġ&& ĠTime . frame Count Ġ<= Ġ( startup Frame Ġ+ Ġ 1 ) ĊĊĠĠĠ Ġ/** ĠAn Ġarray Ġof Ġall Ġaction Ġsets Ġ*/ ĊĠĠĠ Ġlateinit Ġvar Ġaction Sets : ĠArray < Steam VR _ Action Set > ĊĊĠĠĠ Ġ/** ĠAn Ġarray Ġof Ġall Ġactions Ġ( in Ġall Ġaction Ġsets ) Ġ*/ ĊĠĠĠ Ġlateinit Ġvar Ġactions : ĠArray < Steam VR _ Action > ĊĊĠĠĠ Ġ/** ĠAn Ġarray Ġof Ġall Ġinput Ġactions Ġ*/ ĊĠĠĠ Ġlateinit Ġvar Ġactions In : ĠArray < I Steam VR _ Action _ In > ĊĊĠĠĠ Ġ/** ĠAn Ġarray Ġof Ġall Ġoutput Ġactions Ġ( h aptic ) Ġ*/ ĊĠĠĠ Ġlateinit Ġvar Ġactions Out : ĠArray < I Steam VR _ Action _ Out > ĊĊĠĠĠ Ġ/** ĠAn Ġarray Ġof Ġall Ġthe Ġboolean Ġactions Ġ*/ ĊĠĠĠ Ġlateinit Ġvar Ġactions Boolean : ĠArray < Steam VR _ Action _ Boolean > ĊĊĠĠĠ Ġ/** ĠAn Ġarray Ġof Ġall Ġthe Ġsingle Ġactions Ġ*/ ĊĠĠĠ Ġlateinit Ġvar Ġactions Single : ĠArray < Steam VR _ Action _ Single > ĊĊĠĠĠ Ġ/** ĠAn Ġarray Ġof Ġall Ġthe Ġvector 2 Ġactions Ġ*/ ĊĠĠĠ Ġlateinit Ġvar Ġactions Vector 2 : ĠArray < Steam VR _ Action _ Vector 2 > ĊĊĠĠĠ Ġ/** ĠAn Ġarray Ġof Ġall Ġthe Ġvector 3 Ġactions Ġ*/ ĊĠĠĠ Ġlateinit Ġvar Ġactions Vector 3 : ĠArray < Steam VR _ Action _ Vector 3 > ĊĊĠĠĠ Ġ/** ĠAn Ġarray Ġof Ġall Ġthe Ġpose Ġactions Ġ*/ ĊĠĠĠ Ġlateinit Ġvar Ġactions Pose : ĠArray < Steam VR _ Action _ Pose > ĊĊĠĠĠ Ġ/** ĠAn Ġarray Ġof Ġall Ġthe Ġskeleton Ġactions Ġ*/ ĊĠĠĠ Ġlateinit Ġvar Ġactions Skeleton : ĠArray < Steam VR _ Action _ Skeleton > ĊĊĠĠĠ Ġ/** ĠAn Ġarray Ġof Ġall Ġthe Ġvi br ation Ġ( h aptic ) Ġactions Ġ*/ ĊĠĠĠ Ġlateinit Ġvar Ġactions V ibration : ĠArray < Steam VR _ Action _ V ibration > ĊĊĠĠĠ Ġ/** ĠAn Ġarray Ġof Ġall Ġthe Ġinput Ġactions Ġthat Ġare Ġnot Ġpose Ġor Ġskeleton Ġactions Ġ( boolean , Ġsingle , Ġvector 2 , Ġvector 3 ) Ġ*/ ĊĠĠĠ Ġlateinit Ġvar Ġactions Non Pose Non Skeleton In : ĠArray < I Steam VR _ Action _ In > ĊĊĠĠĠ Ġprivate Ġval Ġaction Sets By Path : ĠMutable Map < String , ĠSteam VR _ Action Set > Ġ= Ġmutable Map Of () ĊĠĠĠ Ġprivate Ġval Ġaction Sets By Path Lower ed : ĠMutable Map < String , ĠSteam VR _ Action Set > Ġ= Ġmutable Map Of () ĊĠĠĠ Ġprivate Ġval Ġactions By Path : ĠMutable Map < String , ĠSteam VR _ Action > Ġ= Ġmutable Map Of () ĊĠĠĠ Ġprivate Ġval Ġactions By Path Lower ed : ĠMutable Map < String , ĠSteam VR _ Action > Ġ= Ġmutable Map Of () ĊĊĠĠĠ Ġprivate Ġval Ġaction Sets By Path Cache : ĠMutable Map < String , ĠSteam VR _ Action Set ?> Ġ= Ġmutable Map Of () ĊĠĠĠ Ġprivate Ġval Ġactions By Path Cache : ĠMutable Map < String , ĠSteam VR _ Action ?> Ġ= Ġmutable Map Of () ĊĊĠĠĠ Ġprivate Ġval Ġactions ByName Cache : ĠMutable Map < String , ĠSteam VR _ Action > Ġ= Ġmutable Map Of () ĊĠĠĠ Ġprivate Ġval Ġaction Sets ByName Cache : ĠMutable Map < String , ĠSteam VR _ Action > Ġ= Ġmutable Map Of () ĊĊĠĠĠ Ġinit Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġ# if Ġ! UN ITY _ EDITOR ĊĠĠĠĠĠĠĠ Ġ// If Ġyou Ġwant Ġa Ġsingle Ġframe Ġof Ġperformance Ġincrease Ġon Ġapplication Ġstart Ġand Ġhave Ġalready Ġgenerated Ġyour Ġactions Ġuncomment Ġthe Ġfollowing Ġtwo Ġlines ĊĠĠĠĠĠĠĠ ĠSteam VR _ Actions . pre Initialize () ĊĠĠĠĠĠĠĠ Ġ// return ; Ċ // ĠĠĠĠĠĠĠ Ġ# endif Ċ // ĠĠĠĠĠĠĠ ĠFind Pre initialize Method () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġforce Pre initialize () Ġ= Ġfind Pre initialize Method () ĊĊĠĠĠ Ġprivate Ġfun Ġfind Pre initialize Method () Ġ{ Ċ // ĠĠĠĠĠĠĠ ĠAssembly [] Ġassemblies Ġ= ĠApp Domain Ġ. ĠCurrent Domain Ġ. ĠGet As semblies Ġ() Ċ // ĠĠĠĠĠĠĠ Ġfor Ġ( int Ġassembly Index Ġ= Ġ 0 ; Ġassembly Index Ġ< Ġassemblies . Length ; Ġassembly Index ++) Ċ // ĠĠĠĠĠĠĠ Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠAssembly Ġassembly Ġ= Ġassemblies Ġ[ assembly Index ] Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠType Ġtype Ġ= Ġassembly Ġ. ĠGet Type Ġ( Steam VR _ Input _ Generator _ Names . full Actions ClassName ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( type Ġ!= Ġnull ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMethodInfo Ġpre init MethodInfo Ġ= Ġtype Ġ. ĠGet Method Ġ( Steam VR _ Input _ Generator _ Names . pre initialize MethodName ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( pre init MethodInfo Ġ!= Ġnull ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpre init MethodInfo . Invoke ( null , Ġnull ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠGet Ġall Ġthe Ġhandles Ġfor Ġactions Ġand Ġaction Ġsets . ĊĠĠĠĠ Ġ* Ġ ĠInitialize Ġour Ġdictionaries Ġof Ġaction Ġ/ Ġaction Ġset Ġnames . ĊĠĠĠĠ Ġ* Ġ ĠSetup Ġthe Ġtracking Ġspace Ġuniverse Ġorigin Ġ*/ ĊĠĠĠ Ġfun Ġinitialize ( force : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( initialized Ġ&& Ġ! force ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ċ Ċ // ĠĠĠĠĠĠĠ Ġ# if ĠUNITY _ EDITOR Ċ // ĠĠĠĠĠĠĠ ĠCheck Setup () Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( Is Opening Setup ()) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ċ // ĠĠĠĠĠĠĠ Ġ# endif ĊĊĠĠĠĠĠĠĠ Ġ// Debug . Log ("< b >[ Steam VR ]</ b > ĠInitial izing ĠSteam VR Ġinput ..."); ĊĠĠĠĠĠĠĠ Ġinitializing Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġstartup Frame Ġ= ĠTime . frame Count ĊĊĠĠĠĠĠĠĠ ĠSteam VR _ Action Set _ Manager . initialize () Ċ // ĠĠĠĠĠĠĠ ĠSteam VR _ Input _ Source . initialize () ĊĊĠĠĠĠĠĠĠ Ġactions . forEach Ġ{ Ġit . initialize ( true ) Ġ} ĊĠĠĠĠĠĠĠ Ġaction Sets . forEach Ġ{ Ġit . initialize ( true ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Steam VR _ Settings . activate First Action Set On Start ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( action Sets . isNotEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Sets [ 0 ]. activate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . println ("[ Steam VR ] ĠNo Ġaction Ġsets Ġto Ġactivate .") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠSteam VR _ Action _ Pose . set Tracking Un iverse Origin ( Steam VR _ Settings . tracking Space ) ĊĊĠĠĠĠĠĠĠ Ġinitialized Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġinitializing Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ// Debug . Log ("< b >[ Steam VR ]</ b > ĠInput Ġinitialization Ġcomplete ."); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġpre initialize Finish Action Sets () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( action Set Ġin Ġaction Sets ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Set . finish Pre Initialize () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġpre initialize Action Set Di ctionaries () Ġ{ ĊĠĠĠĠĠĠĠ Ġaction Sets By Path . clear () ĊĠĠĠĠĠĠĠ Ġaction Sets By Path Lower ed . clear () ĊĠĠĠĠĠĠĠ Ġaction Sets By Path Cache . clear () ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( action Set Ġin Ġaction Sets ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Sets By Path [ action Set . fullPath !! ] Ġ= Ġaction Set ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Sets By Path Lower ed [ action Set . fullPath !!. toLowerCase ()] Ġ= Ġaction Set ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġpre initialize Action Di ctionaries () Ġ{ ĊĠĠĠĠĠĠĠ Ġactions By Path . clear () ĊĠĠĠĠĠĠĠ Ġactions By Path Lower ed . clear () ĊĠĠĠĠĠĠĠ Ġactions By Path Cache . clear () ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( action Ġin Ġactions ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactions By Path [ action . fullPath ] Ġ= Ġaction ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactions By Path Lower ed [ action . fullPath . toLowerCase ()] Ġ= Ġaction ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠGets Ġcalled Ġby ĠSteam VR _ Behaviour Ġevery ĠUpdate Ġand Ġupdates Ġactions Ġif Ġthe Ġsteam vr Ġsettings Ġare Ġconfigured Ġto Ġupdate Ġthen . Ġ*/ ĊĠĠĠ Ġfun Ġupdate () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! initialized Ġ|| Ġis Startup Frame ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Steam VR _ Settings . is Input Update Mode ( Steam VR _ Update Modes . On Update )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Non Visual Actions () ĊĠĠĠĠĠĠĠ Ġif Ġ( Steam VR _ Settings . is Pose Update Mode ( Steam VR _ Update Modes . On Update )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Visual Actions () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠGets Ġcalled Ġby ĠSteam VR _ Behaviour Ġevery ĠL ate Update Ġand Ġupdates Ġactions Ġif Ġthe Ġsteam vr Ġsettings Ġare Ġconfigured Ġto Ġupdate Ġthen . ĊĠĠĠĠ Ġ* Ġ ĠAlso Ġupdates Ġs ke letons Ġregardless Ġof Ġsettings Ġare Ġconfigured Ġto Ġso Ġwe Ġcan Ġaccount Ġfor Ġanimations Ġon Ġthe Ġs ke letons . Ġ*/ ĊĠĠĠ Ġfun Ġlate Update () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! initialized Ġ|| Ġis Startup Frame ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Steam VR _ Settings . is Input Update Mode ( Steam VR _ Update Modes . On Late Update )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Non Visual Actions () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Steam VR _ Settings . is Pose Update Mode ( Steam VR _ Update Modes . On Late Update )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Visual Actions () Ġ// update Ġpo ses Ġand Ġskeleton ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Skeleton Actions ( true ) Ġ// force Ġskeleton Ġupdate Ġso Ġanimation Ġbl ending Ġst icks ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠGets Ġcalled Ġby ĠSteam VR _ Behaviour Ġevery ĠFixed Update Ġand Ġupdates Ġactions Ġif Ġthe Ġsteam vr Ġsettings Ġare Ġconfigured Ġto Ġupdate Ġthen . Ġ*/ ĊĠĠĠ Ġfun Ġfixed Update () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! initialized Ġ|| Ġis Startup Frame ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Steam VR _ Settings . is Input Update Mode ( Steam VR _ Update Modes . On Fixed Update )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Non Visual Actions () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Steam VR _ Settings . is Pose Update Mode ( Steam VR _ Update Modes . On Fixed Update )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Visual Actions () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠGets Ġcalled Ġby ĠSteam VR _ Behaviour Ġevery ĠOn Pre Cull Ġand Ġupdates Ġactions Ġif Ġthe Ġsteam vr Ġsettings Ġare Ġconfigured Ġto Ġupdate Ġthen . Ġ*/ ĊĠĠĠ Ġfun Ġon Pre Cull () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! initialized Ġ|| Ġis Startup Frame ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Steam VR _ Settings . is Input Update Mode ( Steam VR _ Update Modes . On Pre Cull )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Non Visual Actions () ĊĠĠĠĠĠĠĠ Ġif Ġ( Steam VR _ Settings . is Pose Update Mode ( Steam VR _ Update Modes . On Pre Cull )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Visual Actions () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠUpdates Ġthe Ġstates Ġof Ġall Ġthe Ġvisual Ġactions Ġ( pose Ġ/ Ġskeleton ) ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġskip State And Event Updates : ĠControls Ġwhether Ġor Ġnot Ġevents Ġare Ġfired Ġfrom Ġthis Ġupdate Ġcall Ġ*/ ĊĠĠĠ Ġfun Ġupdate Visual Actions ( skip State And Event Updates : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! initialized ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĊĠĠĠĠĠĠĠ ĠSteam VR _ Action Set _ Manager . update Action States () ĊĊĠĠĠĠĠĠĠ Ġupdate Pose Actions ( skip State And Event Updates ) ĊĊĠĠĠĠĠĠĠ Ġupdate Skeleton Actions ( skip State And Event Updates ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠUpdates Ġthe Ġstates Ġof Ġall Ġthe Ġpose Ġactions ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġskip Sending Events : ĠControls Ġwhether Ġor Ġnot Ġevents Ġare Ġfired Ġfrom Ġthis Ġupdate Ġcall Ġ*/ ĊĠĠĠ Ġfun Ġupdate Pose Actions ( skip Sending Events : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! initialized ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĊĠĠĠĠĠĠĠ Ġactions Pose . forEach Ġ{ Ġit . update Values ( skip Sending Events ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġon Po ses Updated . forEach Ġ{ Ġit . invoke ( false ) Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĠUpdates Ġthe Ġstates Ġof Ġall Ġthe Ġskeleton Ġactions ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġskip Sending Events : ĠControls Ġwhether Ġor Ġnot Ġevents Ġare Ġfired Ġfrom Ġthis Ġupdate Ġcall Ġ*/ ĊĠĠĠ Ġfun Ġupdate Skeleton Actions ( skip Sending Events : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! initialized ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĊĠĠĠĠĠĠĠ Ġactions Skeleton . forEach Ġ{ Ġit . update Value ( skip Sending Events ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġon S ke letons Updated . forEach Ġ{ Ġit . invoke ( skip Sending Events ) Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĠUpdates Ġthe Ġstates Ġof Ġall Ġthe Ġnon Ġvisual Ġactions Ġ( boolean , Ġsingle , Ġvector 2 , Ġvector 3 ) Ġ*/ ĊĠĠĠ Ġfun Ġupdate Non Visual Actions () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! initialized ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĊĠĠĠĠĠĠĠ ĠSteam VR _ Action Set _ Manager . update Action States () ĊĊĠĠĠĠĠĠĠ Ġactions Non Pose Non Skeleton In . forEach Ġ{ Ġit . update Values () Ġ} ĊĊĠĠĠĠĠĠĠ Ġon Non Visual Actions Updated . forEach Ġ{ Ġit . invoke () Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĠGet Ġan Ġaction 's Ġaction Ġdata Ġby Ġthe Ġfull Ġpath Ġto Ġthat Ġaction . ĠAction Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ]/ [ direction ]/ [ action Name ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġ@ param ĠT : ĠThe Ġtype Ġof Ġaction Ġyou 're Ġexpecting Ġto Ġget Ġback ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġpath : ĠThe Ġfull Ġpath Ġto Ġthe Ġaction Ġyou Ġwant Ġ( Action Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ]/ [ direction ]/ [ action Name ]) ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġcase Sensitive : Ġcase Ġsensitive Ġsearches Ġare Ġfaster Ġ*/ ĊĠĠĠ Ġfun Ġ< T Ġ: ĠSteam VR _ Action _ Source _ Map > Ġget Action Data From Path ( path : ĠString ?, Ġcase Sensitive : ĠBoolean Ġ= Ġfalse ): ĠT ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Base Action From Path ( path , Ġcase Sensitive )?. source Map Ġas ? ĠT ĊĊĠĠĠ Ġ/** ĠGet Ġan Ġaction Ġset 's Ġdata Ġby Ġthe Ġfull Ġpath Ġto Ġthat Ġaction . ĠAction Ġset Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġpath : ĠThe Ġfull Ġpath Ġto Ġthe Ġaction Ġyou Ġwant Ġ( Action Ġset Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ]) ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġcase Sensitive : Ġcase Ġsensitive Ġsearches Ġare Ġfaster Ġ*/ ĊĠĠĠ Ġfun Ġget Action SetData From Path ( path : ĠString ?, Ġcase Sensitive : ĠBoolean Ġ= Ġfalse ): ĠSteam VR _ Action Set _ Data ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Action Set From Path ( path , Ġcase Sensitive )?. setData ĊĊĠĠĠ Ġ/** ĠGet Ġan Ġaction Ġby Ġthe Ġfull Ġpath Ġto Ġthat Ġaction . ĠAction Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ]/ [ direction ]/ [ action Name ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġ@ param ĠT : ĠThe Ġtype Ġof Ġaction Ġyou 're Ġexpecting Ġto Ġget Ġback ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġpath : ĠThe Ġfull Ġpath Ġto Ġthe Ġaction Ġyou Ġwant Ġ( Action Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ]/ [ direction ]/ [ action Name ]) ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġcase Sensitive : Ġcase Ġsensitive Ġsearches Ġare Ġfaster Ġ*/ ĊĠĠĠ Ġfun Ġ< T Ġ: ĠSteam VR _ Action > Ġget Action From Path ( type : ĠAction Type , Ġpath : ĠString , Ġcase Sensitive : ĠBoolean Ġ= Ġfalse , Ġreturn Null s : ĠBoolean Ġ= Ġfalse ): ĠT ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfound Action Ġ= Ġget Base Action From Path ( path , Ġcase Sensitive ) ĊĠĠĠĠĠĠĠ Ġif Ġ( found Action Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfound Action . get Copy () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( return Null s ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠ Ġreturn Ġcreate Fake Action ( type , Ġpath , Ġcase Sensitive ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġnon - copy Ġversion ĊĠĠĠ Ġfun Ġget Base Action From Path ( path : ĠString ?, Ġcase Sensitive : ĠBoolean Ġ= Ġfalse ): ĠSteam VR _ Action ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( path . isNull OrEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcase Sensitive Ġ-> Ġactions By Path [ path ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġactions By Path Cache [ path ] Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( path Ġin Ġactions By Path ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactions By Path Cache [ path ] Ġ= Ġactions By Path [ path ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactions By Path [ path ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlower ed Path Ġ= Ġpath . toLowerCase () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactions By Path Cache [ path ] Ġ= Ġactions By Path Lower ed [ lower ed Path ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactions By Path [ lower ed Path ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġhas Action Path ( path : ĠString , Ġcase Sensitive : ĠBoolean Ġ= Ġfalse ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Base Action From Path ( path , Ġcase Sensitive ) Ġ!= Ġnull ĊĊĠĠĠ Ġfun Ġhas Action ( action Name : ĠString , Ġcase Sensitive : ĠBoolean Ġ= Ġfalse ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Base Action ( null , Ġaction Name , Ġcase Sensitive ) Ġ!= Ġnull ĊĊĠĠĠ Ġfun Ġhas Action ( action SetName : ĠString , Ġaction Name : ĠString , Ġcase Sensitive : ĠBoolean Ġ= Ġfalse ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Base Action ( action SetName , Ġaction Name , Ġcase Sensitive ) Ġ!= Ġnull ĊĊĠĠĠ Ġ/** ĠGet Ġan Ġaction Ġby Ġthe Ġfull Ġpath Ġto Ġthat Ġaction . ĠAction Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ]/ [ direction ]/ [ action Name ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġpath : ĠThe Ġfull Ġpath Ġto Ġthe Ġaction Ġyou Ġwant Ġ( Action Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ]/ [ direction ]/ [ action Name ]) ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġcase Sensitive : Ġcase Ġsensitive Ġsearches Ġare Ġfaster Ġ*/ ĊĠĠĠ Ġfun Ġget Boolean Action From Path ( path : ĠString , Ġcase Sensitive : ĠBoolean Ġ= Ġfalse ): ĠSteam VR _ Action _ Boolean ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Action From Path ( ActionType . Boolean , Ġpath , Ġcase Sensitive ) ĊĊĠĠĠ Ġ/** ĠGet Ġan Ġaction Ġby Ġthe Ġfull Ġpath Ġto Ġthat Ġaction . ĠAction Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ]/ [ direction ]/ [ action Name ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġpath : ĠThe Ġfull Ġpath Ġto Ġthe Ġaction Ġyou Ġwant Ġ( Action Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ]/ [ direction ]/ [ action Name ]) ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġcase Sensitive : Ġcase Ġsensitive Ġsearches Ġare Ġfaster Ġ*/ ĊĠĠĠ Ġfun Ġget Single Action From Path ( path : ĠString , Ġcase Sensitive : ĠBoolean Ġ= Ġfalse ): ĠSteam VR _ Action _ Single ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Action From Path ( ActionType . Single , Ġpath , Ġcase Sensitive ) ĊĊĠĠĠ Ġ/** ĠGet Ġan Ġaction Ġby Ġthe Ġfull Ġpath Ġto Ġthat Ġaction . ĠAction Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ]/ [ direction ]/ [ action Name ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġpath : ĠThe Ġfull Ġpath Ġto Ġthe Ġaction Ġyou Ġwant Ġ( Action Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ]/ [ direction ]/ [ action Name ]) ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġcase Sensitive : Ġcase Ġsensitive Ġsearches Ġare Ġfaster Ġ*/ ĊĠĠĠ Ġfun Ġget Vector 2 Action From Path ( path : ĠString , Ġcase Sensitive : ĠBoolean Ġ= Ġfalse ): ĠSteam VR _ Action _ Vector 2 ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Action From Path ( ActionType . Vector 2 , Ġpath , Ġcase Sensitive ) ĊĊĠĠĠ Ġ/** ĠGet Ġan Ġaction Ġby Ġthe Ġfull Ġpath Ġto Ġthat Ġaction . ĠAction Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ]/ [ direction ]/ [ action Name ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġpath : ĠThe Ġfull Ġpath Ġto Ġthe Ġaction Ġyou Ġwant Ġ( Action Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ]/ [ direction ]/ [ action Name ]) ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġcase Sensitive : Ġcase Ġsensitive Ġsearches Ġare Ġfaster Ġ*/ ĊĠĠĠ Ġfun Ġget Vector 3 Action From Path ( path : ĠString , Ġcase Sensitive : ĠBoolean Ġ= Ġfalse ): ĠSteam VR _ Action _ Vector 3 ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Action From Path ( ActionType . Vector 3 , Ġpath , Ġcase Sensitive ) ĊĊĠĠĠ Ġ/** ĠGet Ġan Ġaction Ġby Ġthe Ġfull Ġpath Ġto Ġthat Ġaction . ĠAction Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ]/ [ direction ]/ [ action Name ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġpath : ĠThe Ġfull Ġpath Ġto Ġthe Ġaction Ġyou Ġwant Ġ( Action Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ]/ [ direction ]/ [ action Name ]) ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġcase Sensitive : Ġcase Ġsensitive Ġsearches Ġare Ġfaster Ġ*/ ĊĠĠĠ Ġfun Ġget V ibration Action From Path ( path : ĠString , Ġcase Sensitive : ĠBoolean Ġ= Ġfalse ): ĠSteam VR _ Action _ V ibration ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Action From Path ( ActionType . V ibration , Ġpath , Ġcase Sensitive ) ĊĊĠĠĠ Ġ/** ĠGet Ġan Ġaction Ġby Ġthe Ġfull Ġpath Ġto Ġthat Ġaction . ĠAction Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ]/ [ direction ]/ [ action Name ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġpath : ĠThe Ġfull Ġpath Ġto Ġthe Ġaction Ġyou Ġwant Ġ( Action Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ]/ [ direction ]/ [ action Name ]) ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġcase Sensitive : Ġcase Ġsensitive Ġsearches Ġare Ġfaster Ġ*/ ĊĠĠĠ Ġfun Ġget Pose Action From Path ( path : ĠString , Ġcase Sensitive : ĠBoolean Ġ= Ġfalse ): ĠSteam VR _ Action _ Pose ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Action From Path ( ActionType . Pose , Ġpath , Ġcase Sensitive ) ĊĊĠĠĠ Ġ/** ĠGet Ġan Ġaction Ġby Ġthe Ġfull Ġpath Ġto Ġthat Ġaction . ĠAction Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ]/ [ direction ]/ [ action Name ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġpath : ĠThe Ġfull Ġpath Ġto Ġthe Ġaction Ġyou Ġwant Ġ( Action Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ]/ [ direction ]/ [ action Name ]) ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġcase Sensitive : Ġcase Ġsensitive Ġsearches Ġare Ġfaster Ġ*/ ĊĠĠĠ Ġfun Ġget Skeleton Action From Path ( path : ĠString , Ġcase Sensitive : ĠBoolean Ġ= Ġfalse ): ĠSteam VR _ Action _ Skeleton ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Action From Path ( ActionType . Skeleton , Ġpath , Ġcase Sensitive ) ĊĊĠĠĠ Ġ/** ĠGet Ġan Ġaction Ġby Ġthe Ġfull Ġpath Ġto Ġthat Ġaction . ĠAction Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ]/ [ direction ]/ [ action Name ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġ@ param ĠT : ĠThe Ġtype Ġof Ġaction Ġyou 're Ġexpecting Ġto Ġget Ġback ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġpath : ĠThe Ġfull Ġpath Ġto Ġthe Ġaction Ġyou Ġwant Ġ( Action Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ]/ [ direction ]/ [ action Name ]) ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġcase Sensitive : Ġcase Ġsensitive Ġsearches Ġare Ġfaster ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġreturn Null s : Ġreturns Ġnull Ġif Ġthe Ġaction Ġdoes Ġnot Ġexist Ġ*/ ĊĠĠĠ Ġfun Ġ< T Ġ: ĠSteam VR _ Action > Ġget Action ( type : ĠAction Type , Ġaction SetName : ĠString ?, Ġaction Name : ĠString , Ġcase Sensitive : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Null s : ĠBoolean Ġ= Ġfalse ): ĠT ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġaction Ġ= Ġget Base Action ( action SetName , Ġaction Name , Ġcase Sensitive ) ĊĠĠĠĠĠĠĠ Ġif Ġ( action Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġaction . get Copy () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( return Null s ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠ Ġreturn Ġcreate Fake Action ( type , Ġaction SetName , Ġaction Name , Ġcase Sensitive ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Base Action ( action SetName : ĠString ?, Ġaction Name : ĠString , Ġcase Sensitive : ĠBoolean Ġ= Ġfalse ): ĠSteam VR _ Action ? Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( actions Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠ Ġif Ġ( action SetName . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( action Ġin Ġactions ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( case Sensitive ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( action . short Name Ġ== Ġaction Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġaction ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( action . short Name . equals ( action Name , Ġignore Case Ġ= Ġtrue )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġaction ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaction Set Ġ= Ġget Action Set ( action SetName , Ġcase Sensitive , Ġtrue ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( action Set Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( action Ġin Ġaction Set . all Actions ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( case Sensitive ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( action . short Name Ġ== Ġaction Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġaction ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( action . short Name . equals ( action Name , Ġignore Case Ġ= Ġtrue )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġaction ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġ< T Ġ: ĠSteam VR _ Action > Ġcreate Fake Action ( type : ĠAction Type , Ġaction SetName : ĠString ?, Ġaction Name : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcase Sensitive : ĠBoolean ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdirection Ġ= Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAction Type . V ibration Ġ-> ĠSteam VR _ Action Directions . Out ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠSteam VR _ Action Directions . In ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠSteam VR _ Action . create Un initialized ( type , Ġaction SetName !! , Ġdirection , Ġaction Name , Ġcase Sensitive ) Ġ// ĠTODO Ġcheck Ġthe Ġf uck ing Ġnull ability ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġ< T Ġ: ĠSteam VR _ Action > Ġcreate Fake Action ( type : ĠAction Type , Ġaction Path : ĠString , Ġcase Sensitive : ĠBoolean ): ĠT Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSteam VR _ Action . create Un initialized ( type , Ġaction Path , Ġcase Sensitive ) ĊĊĠĠĠ Ġ/** ĠGet Ġan Ġaction Ġby Ġthe Ġfull Ġpath Ġto Ġthat Ġaction . ĠAction Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ]/ [ direction ]/ [ action Name ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġ@ param ĠT : ĠThe Ġtype Ġof Ġaction Ġyou 're Ġexpecting Ġto Ġget Ġback ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġpath : ĠThe Ġfull Ġpath Ġto Ġthe Ġaction Ġyou Ġwant Ġ( Action Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ]/ [ direction ]/ [ action Name ]) ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġcase Sensitive : Ġcase Ġsensitive Ġsearches Ġare Ġfaster Ġ*/ ĊĠĠĠ Ġfun Ġ< T Ġ: ĠSteam VR _ Action > Ġget Action ( type : ĠAction Type , Ġaction Name : ĠString , Ġcase Sensitive : ĠBoolean Ġ= Ġfalse ): ĠT ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Action ( type , Ġnull , Ġaction Name , Ġcase Sensitive ) ĊĊĠĠĠ Ġ/** ĠGet Ġan Ġaction Ġby Ġthe Ġfull Ġpath Ġto Ġthat Ġaction . ĠAction Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ]/ [ direction ]/ [ action Name ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġ@ param ĠT : ĠThe Ġtype Ġof Ġaction Ġyou 're Ġexpecting Ġto Ġget Ġback ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġpath : ĠThe Ġfull Ġpath Ġto Ġthe Ġaction Ġyou Ġwant Ġ( Action Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ]/ [ direction ]/ [ action Name ]) ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġcase Sensitive : Ġcase Ġsensitive Ġsearches Ġare Ġfaster Ġ*/ ĊĠĠĠ Ġfun Ġget Boolean Action ( action SetName : ĠString , Ġaction Name : ĠString , Ġcase Sensitive : ĠBoolean Ġ= Ġfalse ): ĠSteam VR _ Action _ Boolean ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Action ( ActionType . Boolean , Ġaction SetName , Ġaction Name , Ġcase Sensitive ) ĊĊĠĠĠ Ġ/** ĠGet Ġan Ġaction Ġby Ġthe Ġfull Ġpath Ġto Ġthat Ġaction . ĠAction Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ]/ [ direction ]/ [ action Name ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġ@ param ĠT : ĠThe Ġtype Ġof Ġaction Ġyou 're Ġexpecting Ġto Ġget Ġback ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġpath : ĠThe Ġfull Ġpath Ġto Ġthe Ġaction Ġyou Ġwant Ġ( Action Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ]/ [ direction ]/ [ action Name ]) ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġcase Sensitive : Ġcase Ġsensitive Ġsearches Ġare Ġfaster Ġ*/ ĊĠĠĠ Ġfun Ġget Boolean Action ( action Name : ĠString , Ġcase Sensitive : ĠBoolean Ġ= Ġfalse ): ĠSteam VR _ Action _ Boolean ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Action ( ActionType . Boolean , Ġnull , Ġaction Name , Ġcase Sensitive ) ĊĊĠĠĠ Ġ/** ĠGet Ġan Ġaction Ġby Ġthe Ġfull Ġpath Ġto Ġthat Ġaction . ĠAction Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ]/ [ direction ]/ [ action Name ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġ@ param ĠT : ĠThe Ġtype Ġof Ġaction Ġyou 're Ġexpecting Ġto Ġget Ġback ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġpath : ĠThe Ġfull Ġpath Ġto Ġthe Ġaction Ġyou Ġwant Ġ( Action Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ]/ [ direction ]/ [ action Name ]) ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġcase Sensitive : Ġcase Ġsensitive Ġsearches Ġare Ġfaster Ġ*/ ĊĠĠĠ Ġfun Ġget Single Action ( action SetName : ĠString , Ġaction Name : ĠString , Ġcase Sensitive : ĠBoolean Ġ= Ġfalse ): ĠSteam VR _ Action _ Single ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Action ( ActionType . Single , Ġaction SetName , Ġaction Name , Ġcase Sensitive ) ĊĊĠĠĠ Ġ/** ĠGet Ġan Ġaction Ġby Ġthe Ġfull Ġpath Ġto Ġthat Ġaction . ĠAction Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ]/ [ direction ]/ [ action Name ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġ@ param ĠT : ĠThe Ġtype Ġof Ġaction Ġyou 're Ġexpecting Ġto Ġget Ġback ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġpath : ĠThe Ġfull Ġpath Ġto Ġthe Ġaction Ġyou Ġwant Ġ( Action Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ]/ [ direction ]/ [ action Name ]) ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġcase Sensitive : Ġcase Ġsensitive Ġsearches Ġare Ġfaster Ġ*/ ĊĠĠĠ Ġfun Ġget Single Action ( action Name : ĠString , Ġcase Sensitive : ĠBoolean Ġ= Ġfalse ): ĠSteam VR _ Action _ Single ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Action ( ActionType . Single , Ġnull , Ġaction Name , Ġcase Sensitive ) ĊĊĠĠĠ Ġ/** ĠGet Ġan Ġaction Ġby Ġthe Ġfull Ġpath Ġto Ġthat Ġaction . ĠAction Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ]/ [ direction ]/ [ action Name ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġ@ param ĠT : ĠThe Ġtype Ġof Ġaction Ġyou 're Ġexpecting Ġto Ġget Ġback ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġpath : ĠThe Ġfull Ġpath Ġto Ġthe Ġaction Ġyou Ġwant Ġ( Action Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ]/ [ direction ]/ [ action Name ]) ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġcase Sensitive : Ġcase Ġsensitive Ġsearches Ġare Ġfaster Ġ*/ ĊĠĠĠ Ġfun Ġget Vector 2 Action ( action SetName : ĠString , Ġaction Name : ĠString , Ġcase Sensitive : ĠBoolean Ġ= Ġfalse ): ĠSteam VR _ Action _ Vector 2 ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Action ( ActionType . Vector 2 , Ġaction SetName , Ġaction Name , Ġcase Sensitive ) ĊĊĠĠĠ Ġ/** ĠGet Ġan Ġaction Ġby Ġthe Ġfull Ġpath Ġto Ġthat Ġaction . ĠAction Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ]/ [ direction ]/ [ action Name ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġ@ param ĠT : ĠThe Ġtype Ġof Ġaction Ġyou 're Ġexpecting Ġto Ġget Ġback ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġpath : ĠThe Ġfull Ġpath Ġto Ġthe Ġaction Ġyou Ġwant Ġ( Action Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ]/ [ direction ]/ [ action Name ]) ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġcase Sensitive : Ġcase Ġsensitive Ġsearches Ġare Ġfaster Ġ*/ ĊĠĠĠ Ġfun Ġget Vector 2 Action ( action Name : ĠString , Ġcase Sensitive : ĠBoolean Ġ= Ġfalse ): ĠSteam VR _ Action _ Vector 2 ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Action ( ActionType . Vector 2 , Ġnull , Ġaction Name , Ġcase Sensitive ) ĊĊĠĠĠ Ġ/** ĠGet Ġan Ġaction Ġby Ġthe Ġfull Ġpath Ġto Ġthat Ġaction . ĠAction Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ]/ [ direction ]/ [ action Name ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġ@ param ĠT : ĠThe Ġtype Ġof Ġaction Ġyou 're Ġexpecting Ġto Ġget Ġback ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġpath : ĠThe Ġfull Ġpath Ġto Ġthe Ġaction Ġyou Ġwant Ġ( Action Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ]/ [ direction ]/ [ action Name ]) ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġcase Sensitive : Ġcase Ġsensitive Ġsearches Ġare Ġfaster Ġ*/ ĊĠĠĠ Ġfun Ġget Vector 3 Action ( action SetName : ĠString , Ġaction Name : ĠString , Ġcase Sensitive : ĠBoolean Ġ= Ġfalse ): ĠSteam VR _ Action _ Vector 3 ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Action ( ActionType . Vector 3 , Ġaction SetName , Ġaction Name , Ġcase Sensitive ) ĊĊĠĠĠ Ġ/** ĠGet Ġan Ġaction Ġby Ġthe Ġfull Ġpath Ġto Ġthat Ġaction . ĠAction Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ]/ [ direction ]/ [ action Name ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġ@ param ĠT : ĠThe Ġtype Ġof Ġaction Ġyou 're Ġexpecting Ġto Ġget Ġback ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġpath : ĠThe Ġfull Ġpath Ġto Ġthe Ġaction Ġyou Ġwant Ġ( Action Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ]/ [ direction ]/ [ action Name ]) ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġcase Sensitive : Ġ> case Ġsensitive Ġsearches Ġare Ġfaster Ġ*/ ĊĠĠĠ Ġfun Ġget Vector 3 Action ( action Name : ĠString , Ġcase Sensitive : ĠBoolean Ġ= Ġfalse ): ĠSteam VR _ Action _ Vector 3 ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Action ( ActionType . Vector 3 , Ġnull , Ġaction Name , Ġcase Sensitive ) ĊĊĠĠĠ Ġ/** ĠGet Ġan Ġaction Ġby Ġthe Ġfull Ġpath Ġto Ġthat Ġaction . ĠAction Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ]/ [ direction ]/ [ action Name ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġ@ param ĠT : ĠThe Ġtype Ġof Ġaction Ġyou 're Ġexpecting Ġto Ġget Ġback ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġpath : ĠThe Ġfull Ġpath Ġto Ġthe Ġaction Ġyou Ġwant Ġ( Action Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ]/ [ direction ]/ [ action Name ]) ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġcase Sensitive : Ġcase Ġsensitive Ġsearches Ġare Ġfaster Ġ*/ ĊĠĠĠ Ġfun Ġget Pose Action ( action SetName : ĠString , Ġaction Name : ĠString , Ġcase Sensitive : ĠBoolean Ġ= Ġfalse ): ĠSteam VR _ Action _ Pose ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Action ( ActionType . Pose , Ġaction SetName , Ġaction Name , Ġcase Sensitive ) ĊĊĠĠĠ Ġ/** ĠGet Ġan Ġaction Ġby Ġthe Ġfull Ġpath Ġto Ġthat Ġaction . ĠAction Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ]/ [ direction ]/ [ action Name ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġ@ param ĠT : ĠThe Ġtype Ġof Ġaction Ġyou 're Ġexpecting Ġto Ġget Ġback ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġpath : ĠThe Ġfull Ġpath Ġto Ġthe Ġaction Ġyou Ġwant Ġ( Action Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ]/ [ direction ]/ [ action Name ]) ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġcase Sensitive : Ġcase Ġsensitive Ġsearches Ġare Ġfaster Ġ*/ ĊĠĠĠ Ġfun Ġget Pose Action ( action Name : ĠString , Ġcase Sensitive : ĠBoolean Ġ= Ġfalse ): ĠSteam VR _ Action _ Pose ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Action ( ActionType . Pose , Ġnull , Ġaction Name , Ġcase Sensitive ) ĊĊĠĠĠ Ġ/** ĠGet Ġan Ġaction Ġby Ġthe Ġfull Ġpath Ġto Ġthat Ġaction . ĠAction Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ]/ [ direction ]/ [ action Name ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġ@ param ĠT : ĠThe Ġtype Ġof Ġaction Ġyou 're Ġexpecting Ġto Ġget Ġback ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġpath : ĠThe Ġfull Ġpath Ġto Ġthe Ġaction Ġyou Ġwant Ġ( Action Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ]/ [ direction ]/ [ action Name ]) ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġcase Sensitive : Ġcase Ġsensitive Ġsearches Ġare Ġfaster Ġ*/ ĊĠĠĠ Ġfun Ġget Skeleton Action ( action SetName : ĠString , Ġaction Name : ĠString , Ġcase Sensitive : ĠBoolean Ġ= Ġfalse ): ĠSteam VR _ Action _ Skeleton ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Action ( ActionType . Skeleton , Ġaction SetName , Ġaction Name , Ġcase Sensitive ) ĊĊĠĠĠ Ġ/** ĠGet Ġan Ġaction Ġby Ġthe Ġfull Ġpath Ġto Ġthat Ġaction . ĠAction Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ]/ [ direction ]/ [ action Name ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġ@ param ĠT : ĠThe Ġtype Ġof Ġaction Ġyou 're Ġexpecting Ġto Ġget Ġback ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġpath : ĠThe Ġfull Ġpath Ġto Ġthe Ġaction Ġyou Ġwant Ġ( Action Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ]/ [ direction ]/ [ action Name ]) ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġcase Sensitive : Ġcase Ġsensitive Ġsearches Ġare Ġfaster Ġ*/ ĊĠĠĠ Ġfun Ġget Skeleton Action ( action Name : ĠString , Ġcase Sensitive : ĠBoolean Ġ= Ġfalse ): ĠSteam VR _ Action _ Skeleton ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Action ( ActionType . Skeleton , Ġnull , Ġaction Name , Ġcase Sensitive ) ĊĊĠĠĠ Ġ/** ĠGet Ġan Ġaction Ġby Ġthe Ġfull Ġpath Ġto Ġthat Ġaction . ĠAction Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ]/ [ direction ]/ [ action Name ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġ@ param ĠT : ĠThe Ġtype Ġof Ġaction Ġyou 're Ġexpecting Ġto Ġget Ġback ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġpath : ĠThe Ġfull Ġpath Ġto Ġthe Ġaction Ġyou Ġwant Ġ( Action Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ]/ [ direction ]/ [ action Name ]) ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġcase Sensitive : Ġcase Ġsensitive Ġsearches Ġare Ġfaster Ġ*/ ĊĠĠĠ Ġfun Ġget V ibration Action ( action SetName : ĠString , Ġaction Name : ĠString , Ġcase Sensitive : ĠBoolean Ġ= Ġfalse ): ĠSteam VR _ Action _ V ibration ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Action ( ActionType . V ibration , Ġaction SetName , Ġaction Name , Ġcase Sensitive ) ĊĊĠĠĠ Ġ/** ĠGet Ġan Ġaction Ġby Ġthe Ġfull Ġpath Ġto Ġthat Ġaction . ĠAction Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ]/ [ direction ]/ [ action Name ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġ@ param ĠT : ĠThe Ġtype Ġof Ġaction Ġyou 're Ġexpecting Ġto Ġget Ġback ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġpath : ĠThe Ġfull Ġpath Ġto Ġthe Ġaction Ġyou Ġwant Ġ( Action Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ]/ [ direction ]/ [ action Name ]) ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġcase Sensitive : Ġcase Ġsensitive Ġsearches Ġare Ġfaster Ġ*/ ĊĠĠĠ Ġfun Ġget V ibration Action ( action Name : ĠString , Ġcase Sensitive : ĠBoolean Ġ= Ġfalse ): ĠSteam VR _ Action _ V ibration ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Action ( ActionType . V ibration , Ġnull , Ġaction Name , Ġcase Sensitive ) ĊĊĠĠĠ Ġ/** ĠGet Ġan Ġaction Ġset Ġby Ġthe Ġfull Ġpath Ġto Ġthat Ġaction Ġset . ĠAction Ġset Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġ@ param ĠT : ĠThe Ġtype Ġof Ġaction Ġset Ġyou 're Ġexpecting Ġto Ġget Ġback ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġaction SetName : ĠThe Ġname Ġto Ġthe Ġaction Ġset Ġyou Ġwant ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġcase Sensitive : Ġcase Ġsensitive Ġsearches Ġare Ġfaster ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġreturn Null s : Ġreturns Ġa Ġnull Ġif Ġthe Ġset Ġdoes Ġnot Ġexist Ġ*/ ĊĠĠĠ Ġfun Ġ< T Ġ: ĠSteam VR _ Action Set > Ġget Action Set ( clazz : ĠClass < T >, Ġaction SetName : ĠString , Ġcase Sensitive : ĠBoolean Ġ= Ġfalse , Ġreturn Null s : ĠBoolean Ġ= Ġfalse ): ĠT ? Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( action Sets Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( return Null s ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSteam VR _ Action Set . create FromName ( clazz , Ġaction SetName ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( action Set Ġin Ġaction Sets ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( case Sensitive ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( action Set . short Name Ġ== Ġaction SetName ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġaction Set . get Copy () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( action Set . short Name . equals ( action SetName , Ġignore Case Ġ= Ġtrue )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġaction Set . get Copy () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( return Null s ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠ Ġreturn ĠSteam VR _ Action Set . create FromName ( clazz , Ġaction SetName ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠGet Ġan Ġaction Ġset Ġby Ġthe Ġfull Ġpath Ġto Ġthat Ġaction Ġset . ĠAction Ġset Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġ@ param ĠT : ĠThe Ġtype Ġof Ġaction Ġset Ġyou 're Ġexpecting Ġto Ġget Ġback ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġaction SetName : ĠThe Ġname Ġto Ġthe Ġaction Ġset Ġyou Ġwant ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġcase Sensitive : Ġcase Ġsensitive Ġsearches Ġare Ġfaster Ġ*/ ĊĠĠĠ Ġfun Ġget Action Set ( action SetName : ĠString , Ġcase Sensitive : ĠBoolean Ġ= Ġfalse , Ġreturns Null s : ĠBoolean Ġ= Ġfalse ): ĠSteam VR _ Action Set ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Action Set ( Steam VR _ Action Set :: class . java , Ġaction SetName , Ġcase Sensitive , Ġreturns Null s ) ĊĊĠĠĠ Ġprivate Ġfun Ġhas Action Set ( name : ĠString , Ġcase Sensitive : ĠBoolean Ġ= Ġfalse ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Action Set ( name , Ġcase Sensitive , Ġtrue ) Ġ!= Ġnull ĊĊĠĠĠ Ġ/** ĠGet Ġan Ġaction Ġset Ġby Ġthe Ġfull Ġpath Ġto Ġthat Ġaction Ġset . ĠAction Ġset Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġ@ typeparam Ġname =" T "> The Ġtype Ġof Ġaction Ġset Ġyou 're Ġexpecting Ġto Ġget Ġback </ typeparam > ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġpath : ĠThe Ġfull Ġpath Ġto Ġthe Ġaction Ġset Ġyou Ġwant Ġ( Action Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ]) ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġcase Sensitive : Ġcase Ġsensitive Ġsearches Ġare Ġfaster Ġ*/ ĊĠĠĠ Ġfun Ġ< T Ġ: ĠSteam VR _ Action Set > Ġget Action Set From Path ( clazz : ĠClass < T >, Ġpath : ĠString ?, Ġcase Sensitive : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturns Null s : ĠBoolean Ġ= Ġfalse ): ĠT ? Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( action Sets Ġ== Ġnull Ġ|| Ġaction Sets [ 0 ] Ġ== Ġnull Ġ|| Ġpath . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( returns Null s ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSteam VR _ Action Set . create ( clazz , Ġpath ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( case Sensitive ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Sets By Path [ path ]?. let Ġ{ Ġreturn Ġit . get Copy () Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( path Ġin Ġaction Sets By Path Cache ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġaction Sets By Path Cache [ path ]?. get Copy () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( path Ġin Ġaction Sets By Path ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Sets By Path Cache [ path ] Ġ= Ġaction Sets By Path [ path ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġaction Sets By Path [ path ] !!. get Copy () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlower ed Path Ġ= Ġpath . toLowerCase () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( lower ed Path Ġin Ġaction Sets By Path Lower ed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Sets By Path Cache [ path ] Ġ= Ġaction Sets By Path Lower ed [ lower ed Path ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġaction Sets By Path Lower ed [ lower ed Path ] !!. get Copy () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Sets By Path Cache [ path ] Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( returns Null s ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠ Ġreturn ĠSteam VR _ Action Set . create ( clazz , Ġpath ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠGet Ġan Ġaction Ġset Ġby Ġthe Ġfull Ġpath Ġto Ġthat Ġaction Ġset . ĠAction Ġset Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ] ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġpath : ĠThe Ġfull Ġpath Ġto Ġthe Ġaction Ġset Ġyou Ġwant Ġ( Action Ġpaths Ġare Ġin Ġthe Ġformat Ġ/ actions /[ action Set ]) ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġcase Sensitive : Ġcase Ġsensitive Ġsearches Ġare Ġfaster Ġ*/ ĊĠĠĠ Ġfun Ġget Action Set From Path ( path : ĠString ?, Ġcase Sensitive : ĠBoolean Ġ= Ġfalse ): ĠSteam VR _ Action Set ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Action Set From Path ( Steam VR _ Action Set :: class . java , Ġpath , Ġcase Sensitive ) ĊĊĠĠĠ Ġ/** ĠGet Ġthe Ġstate Ġof Ġan Ġaction Ġby Ġthe Ġaction Ġset Ġname , Ġaction Ġname , Ġand Ġinput Ġsource . ĠOptionally Ġcase Ġsensitive Ġ( for Ġfaster Ġresults ) ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġaction Set : ĠThe Ġname Ġof Ġthe Ġaction Ġset Ġthe Ġaction Ġis Ġcontained Ġin ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġaction : ĠThe Ġname Ġof Ġthe Ġaction Ġto Ġget Ġthe Ġstate Ġof ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġinput Source : ĠThe Ġinput Ġsource Ġto Ġget Ġthe Ġaction Ġstate Ġfrom ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġcase Sensitive : ĠWhether Ġor Ġnot Ġthe Ġaction Ġset Ġand Ġaction Ġname Ġsearches Ġshould Ġbe Ġcase Ġsensitive Ġ( case Ġsensitive Ġsearches Ġare Ġfaster ) Ġ*/ ĊĠĠĠ Ġfun ĠgetState ( action Set : ĠString ?, Ġaction : ĠString , Ġinput Source : ĠSteam VR _ Input _ Sources , Ġcase Sensitive : ĠBoolean Ġ= Ġfalse ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Action < Steam VR _ Action _ Boolean >( ActionType . Boolean , Ġaction Set , Ġaction , Ġcase Sensitive ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . getState ( input Source ) Ġ?: Ġfalse ĊĊĠĠĠ Ġ/** ĠGet Ġthe Ġstate Ġof Ġan Ġaction Ġby Ġthe Ġaction Ġname Ġand Ġinput Ġsource . ĠOptionally Ġcase Ġsensitive Ġ( for Ġfaster Ġresults ) ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġaction : ĠThe Ġname Ġof Ġthe Ġaction Ġto Ġget Ġthe Ġstate Ġof ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġinput Source : ĠThe Ġinput Ġsource Ġto Ġget Ġthe Ġaction Ġstate Ġfrom ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġcase Sensitive : ĠWhether Ġor Ġnot Ġthe Ġaction Ġset Ġand Ġaction Ġname Ġsearches Ġshould Ġbe Ġcase Ġsensitive Ġ( case Ġsensitive Ġsearches Ġare Ġfaster ) Ġ*/ ĊĠĠĠ Ġfun ĠgetState ( action : ĠString , Ġinput Source : ĠSteam VR _ Input _ Sources , Ġcase Sensitive : ĠBoolean Ġ= Ġfalse ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetState ( null , Ġaction , Ġinput Source , Ġcase Sensitive ) ĊĊĠĠĠ Ġ/** ĠGet Ġthe Ġstate Ġdown Ġof Ġan Ġaction Ġby Ġthe Ġaction Ġset Ġname , Ġaction Ġname , Ġand Ġinput Ġsource . ĠOptionally Ġcase Ġsensitive Ġ( for Ġfaster Ġresults ) ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġaction Set : ĠThe Ġname Ġof Ġthe Ġaction Ġset Ġthe Ġaction Ġis Ġcontained Ġin ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġaction : ĠThe Ġname Ġof Ġthe Ġaction Ġto Ġget Ġthe Ġstate Ġof ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġinput Source : ĠThe Ġinput Ġsource Ġto Ġget Ġthe Ġaction Ġstate Ġfrom ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġcase Sensitive : ĠWhether Ġor Ġnot Ġthe Ġaction Ġset Ġand Ġaction Ġname Ġsearches Ġshould Ġbe Ġcase Ġsensitive Ġ( case Ġsensitive Ġsearches Ġare Ġfaster ) ĊĠĠĠĠ Ġ* Ġ Ġ@ returns ĠTrue Ġwhen Ġthe Ġaction Ġwas Ġfalse Ġlast Ġupdate Ġand Ġis Ġnow Ġtrue . ĠReturns Ġfalse Ġagain Ġafterwards . Ġ*/ ĊĠĠĠ Ġfun ĠgetState Down ( action Set : ĠString ?, Ġaction : ĠString , Ġinput Source : ĠSteam VR _ Input _ Sources , Ġcase Sensitive : ĠBoolean Ġ= Ġfalse ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Action < Steam VR _ Action _ Boolean >( ActionType . Boolean , Ġaction Set , Ġaction , Ġcase Sensitive ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . getState Down ( input Source ) Ġ?: Ġfalse ĊĊĠĠĠ Ġ/** ĠGet Ġthe Ġstate Ġdown Ġof Ġan Ġaction Ġby Ġthe Ġaction Ġname Ġand Ġinput Ġsource . ĠOptionally Ġcase Ġsensitive Ġ( for Ġfaster Ġresults ) ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġaction : ĠThe Ġname Ġof Ġthe Ġaction Ġto Ġget Ġthe Ġstate Ġof ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġinput Source : ĠThe Ġinput Ġsource Ġto Ġget Ġthe Ġaction Ġstate Ġfrom ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġcase Sensitive : ĠWhether Ġor Ġnot Ġthe Ġaction Ġset Ġand Ġaction Ġname Ġsearches Ġshould Ġbe Ġcase Ġsensitive Ġ( case Ġsensitive Ġsearches Ġare Ġfaster ) ĊĠĠĠĠ Ġ* Ġ Ġ@ returns ĠTrue Ġwhen Ġthe Ġaction Ġwas Ġfalse Ġlast Ġupdate Ġand Ġis Ġnow Ġtrue . ĠReturns Ġfalse Ġagain Ġafterwards . Ġ*/ ĊĠĠĠ Ġfun ĠgetState Down ( action : ĠString , Ġinput Source : ĠSteam VR _ Input _ Sources , Ġcase Sensitive : ĠBoolean Ġ= Ġfalse ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetState Down ( null , Ġaction , Ġinput Source , Ġcase Sensitive ) ĊĊĠĠĠ Ġ/** ĠGet Ġthe Ġstate Ġup Ġof Ġan Ġaction Ġby Ġthe Ġaction Ġset Ġname , Ġaction Ġname , Ġand Ġinput Ġsource . ĠOptionally Ġcase Ġsensitive Ġ( for Ġfaster Ġresults ) ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġaction Set : ĠThe Ġname Ġof Ġthe Ġaction Ġset Ġthe Ġaction Ġis Ġcontained Ġin ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġaction : ĠThe Ġname Ġof Ġthe Ġaction Ġto Ġget Ġthe Ġstate Ġof ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġinput Source : ĠThe Ġinput Ġsource Ġto Ġget Ġthe Ġaction Ġstate Ġfrom ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġcase Sensitive : ĠWhether Ġor Ġnot Ġthe Ġaction Ġset Ġand Ġaction Ġname Ġsearches Ġshould Ġbe Ġcase Ġsensitive Ġ( case Ġsensitive Ġsearches Ġare Ġfaster ) ĊĠĠĠĠ Ġ* Ġ Ġ@ returns ĠTrue Ġwhen Ġthe Ġaction Ġwas Ġtrue Ġlast Ġupdate Ġand Ġis Ġnow Ġfalse . ĠReturns Ġfalse Ġagain Ġafterwards . Ġ*/ ĊĠĠĠ Ġfun ĠgetState Up ( action Set : ĠString ?, Ġaction : ĠString , Ġinput Source : ĠSteam VR _ Input _ Sources , Ġcase Sensitive : ĠBoolean Ġ= Ġfalse ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Action < Steam VR _ Action _ Boolean >( ActionType . Boolean , Ġaction Set , Ġaction , Ġcase Sensitive ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . getState Up ( input Source ) Ġ?: Ġfalse ĊĊĊĠĠĠ Ġ/** ĠGet Ġthe Ġstate Ġup Ġof Ġan Ġaction Ġby Ġthe Ġaction Ġname Ġand Ġinput Ġsource . ĠOptionally Ġcase Ġsensitive Ġ( for Ġfaster Ġresults ) ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġaction : ĠThe Ġname Ġof Ġthe Ġaction Ġto Ġget Ġthe Ġstate Ġof ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġinput Source : ĠThe Ġinput Ġsource Ġto Ġget Ġthe Ġaction Ġstate Ġfrom ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġcase Sensitive : ĠWhether Ġor Ġnot Ġthe Ġaction Ġset Ġand Ġaction Ġname Ġsearches Ġshould Ġbe Ġcase Ġsensitive Ġ( case Ġsensitive Ġsearches Ġare Ġfaster ) ĊĠĠĠĠ Ġ* Ġ Ġ@ returns ĠTrue Ġwhen Ġthe Ġaction Ġwas Ġtrue Ġlast Ġupdate Ġand Ġis Ġnow Ġfalse . ĠReturns Ġfalse Ġagain Ġafterwards . Ġ*/ ĊĠĠĠ Ġfun ĠgetState Up ( action : ĠString , Ġinput Source : ĠSteam VR _ Input _ Sources , Ġcase Sensitive : ĠBoolean Ġ= Ġfalse ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetState Up ( null , Ġaction , Ġinput Source , Ġcase Sensitive ) ĊĊĠĠĠ Ġ/** ĠGet Ġthe Ġfloat Ġvalue Ġof Ġan Ġaction Ġby Ġthe Ġaction Ġset Ġname , Ġaction Ġname , Ġand Ġinput Ġsource . ĠOptionally Ġcase Ġsensitive Ġ( for Ġfaster Ġresults ). Ġ( same Ġas ĠGet Single ) ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġaction Set : ĠThe Ġname Ġof Ġthe Ġaction Ġset Ġthe Ġaction Ġis Ġcontained Ġin ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġaction : ĠThe Ġname Ġof Ġthe Ġaction Ġto Ġget Ġthe Ġstate Ġof ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġinput Source : ĠThe Ġinput Ġsource Ġto Ġget Ġthe Ġaction Ġstate Ġfrom ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġcase Sensitive : ĠWhether Ġor Ġnot Ġthe Ġaction Ġset Ġand Ġaction Ġname Ġsearches Ġshould Ġbe Ġcase Ġsensitive Ġ( case Ġsensitive Ġsearches Ġare Ġfaster ) Ġ*/ ĊĠĠĠ Ġfun Ġget Float ( action Set : ĠString ?, Ġaction : ĠString , Ġinput Source : ĠSteam VR _ Input _ Sources , Ġcase Sensitive : ĠBoolean Ġ= Ġfalse ): ĠFloat Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Action < Steam VR _ Action _ Single >( ActionType . Single , Ġaction Set , Ġaction , Ġcase Sensitive )?. get Axis ( input Source ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġ 0 f ĊĊĠĠĠ Ġ/** ĠGet Ġthe Ġfloat Ġvalue Ġof Ġan Ġaction Ġby Ġthe Ġaction Ġname Ġand Ġinput Ġsource . ĠOptionally Ġcase Ġsensitive Ġ( for Ġfaster Ġresults ). Ġ( same Ġas ĠGet Single ) ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġaction : ĠThe Ġname Ġof Ġthe Ġaction Ġto Ġget Ġthe Ġstate Ġof ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġinput Source : ĠThe Ġinput Ġsource Ġto Ġget Ġthe Ġaction Ġstate Ġfrom ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġcase Sensitive : ĠWhether Ġor Ġnot Ġthe Ġaction Ġset Ġand Ġaction Ġname Ġsearches Ġshould Ġbe Ġcase Ġsensitive Ġ( case Ġsensitive Ġsearches Ġare Ġfaster ) Ġ*/ ĊĠĠĠ Ġfun Ġget Float ( action : ĠString , Ġinput Source : ĠSteam VR _ Input _ Sources , Ġcase Sensitive : ĠBoolean Ġ= Ġfalse ): ĠFloat Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Float ( null , Ġaction , Ġinput Source , Ġcase Sensitive ) ĊĊĠĠĠ Ġ/** ĠGet Ġthe Ġfloat Ġvalue Ġof Ġan Ġaction Ġby Ġthe Ġaction Ġset Ġname , Ġaction Ġname , Ġand Ġinput Ġsource . ĠOptionally Ġcase Ġsensitive Ġ( for Ġfaster Ġresults ). Ġ( same Ġas ĠGet Float ) ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġaction Set : ĠThe Ġname Ġof Ġthe Ġaction Ġset Ġthe Ġaction Ġis Ġcontained Ġin ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġaction : ĠThe Ġname Ġof Ġthe Ġaction Ġto Ġget Ġthe Ġstate Ġof ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġinput Source : ĠThe Ġinput Ġsource Ġto Ġget Ġthe Ġaction Ġstate Ġfrom ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġcase Sensitive : ĠWhether Ġor Ġnot Ġthe Ġaction Ġset Ġand Ġaction Ġname Ġsearches Ġshould Ġbe Ġcase Ġsensitive Ġ( case Ġsensitive Ġsearches Ġare Ġfaster ) Ġ*/ ĊĠĠĠ Ġfun Ġget Single ( action Set : ĠString ?, Ġaction : ĠString , Ġinput Source : ĠSteam VR _ Input _ Sources , Ġcase Sensitive : ĠBoolean Ġ= Ġfalse ): ĠFloat Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Action < Steam VR _ Action _ Single >( ActionType . Single , Ġaction Set , Ġaction , Ġcase Sensitive ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . get Axis ( input Source ) Ġ?: Ġ 0 f ĊĊĠĠĠ Ġ/** ĠGet Ġthe Ġfloat Ġvalue Ġof Ġan Ġaction Ġby Ġthe Ġaction Ġname Ġand Ġinput Ġsource . ĠOptionally Ġcase Ġsensitive Ġ( for Ġfaster Ġresults ). Ġ( same Ġas ĠGet Float ) ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġaction : ĠThe Ġname Ġof Ġthe Ġaction Ġto Ġget Ġthe Ġstate Ġof ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġinput Source : ĠThe Ġinput Ġsource Ġto Ġget Ġthe Ġaction Ġstate Ġfrom ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġcase Sensitive : ĠWhether Ġor Ġnot Ġthe Ġaction Ġset Ġand Ġaction Ġname Ġsearches Ġshould Ġbe Ġcase Ġsensitive Ġ( case Ġsensitive Ġsearches Ġare Ġfaster ) Ġ*/ ĊĠĠĠ Ġfun Ġget Single ( action : ĠString , Ġinput Source : ĠSteam VR _ Input _ Sources , Ġcase Sensitive : ĠBoolean Ġ= Ġfalse ): ĠFloat Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Float ( null , Ġaction , Ġinput Source , Ġcase Sensitive ) ĊĊĠĠĠ Ġ/** ĠGet Ġthe ĠVector 2 Ġvalue Ġof Ġan Ġaction Ġby Ġthe Ġaction Ġset Ġname , Ġaction Ġname , Ġand Ġinput Ġsource . ĠOptionally Ġcase Ġsensitive Ġ( for Ġfaster Ġresults ) ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġaction Set : ĠThe Ġname Ġof Ġthe Ġaction Ġset Ġthe Ġaction Ġis Ġcontained Ġin ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġaction : ĠThe Ġname Ġof Ġthe Ġaction Ġto Ġget Ġthe Ġstate Ġof ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġinput Source : ĠThe Ġinput Ġsource Ġto Ġget Ġthe Ġaction Ġstate Ġfrom ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġcase Sensitive : ĠWhether Ġor Ġnot Ġthe Ġaction Ġset Ġand Ġaction Ġname Ġsearches Ġshould Ġbe Ġcase Ġsensitive Ġ( case Ġsensitive Ġsearches Ġare Ġfaster ) Ġ*/ ĊĠĠĠ Ġfun Ġget Vector 2 ( action Set : ĠString ?, Ġaction : ĠString , Ġinput Source : ĠSteam VR _ Input _ Sources , Ġcase Sensitive : ĠBoolean Ġ= Ġfalse ): ĠVec 2 Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Action < Steam VR _ Action _ Vector 2 >( ActionType . Vector 2 , Ġaction Set , Ġaction , Ġcase Sensitive ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . get Axis ( input Source ) Ġ?: ĠVec 2 () ĊĊĠĠĠ Ġ/** ĠGet Ġthe ĠVector 2 Ġvalue Ġof Ġan Ġaction Ġby Ġthe Ġaction Ġname Ġand Ġinput Ġsource . ĠOptionally Ġcase Ġsensitive Ġ( for Ġfaster Ġresults ) ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġaction : ĠThe Ġname Ġof Ġthe Ġaction Ġto Ġget Ġthe Ġstate Ġof ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġinput Source : ĠThe Ġinput Ġsource Ġto Ġget Ġthe Ġaction Ġstate Ġfrom ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġcase Sensitive : ĠWhether Ġor Ġnot Ġthe Ġaction Ġset Ġand Ġaction Ġname Ġsearches Ġshould Ġbe Ġcase Ġsensitive Ġ( case Ġsensitive Ġsearches Ġare Ġfaster ) Ġ*/ ĊĠĠĠ Ġfun Ġget Vector 2 ( action : ĠString , Ġinput Source : ĠSteam VR _ Input _ Sources , Ġcase Sensitive : ĠBoolean Ġ= Ġfalse ): ĠVec 2 Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Vector 2 ( null , Ġaction , Ġinput Source , Ġcase Sensitive ) ĊĊĠĠĠ Ġ/** ĠGet Ġthe ĠVector 3 Ġvalue Ġof Ġan Ġaction Ġby Ġthe Ġaction Ġset Ġname , Ġaction Ġname , Ġand Ġinput Ġsource . ĠOptionally Ġcase Ġsensitive Ġ( for Ġfaster Ġresults ) ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġaction Set : ĠThe Ġname Ġof Ġthe Ġaction Ġset Ġthe Ġaction Ġis Ġcontained Ġin ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġaction : ĠThe Ġname Ġof Ġthe Ġaction Ġto Ġget Ġthe Ġstate Ġof ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġinput Source : ĠThe Ġinput Ġsource Ġto Ġget Ġthe Ġaction Ġstate Ġfrom ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġcase Sensitive : ĠWhether Ġor Ġnot Ġthe Ġaction Ġset Ġand Ġaction Ġname Ġsearches Ġshould Ġbe Ġcase Ġsensitive Ġ( case Ġsensitive Ġsearches Ġare Ġfaster ) Ġ*/ ĊĠĠĠ Ġfun Ġget Vector 3 ( action Set : ĠString ?, Ġaction : ĠString , Ġinput Source : ĠSteam VR _ Input _ Sources , Ġcase Sensitive : ĠBoolean Ġ= Ġfalse ): ĠVec 3 Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Action < Steam VR _ Action _ Vector 3 >( ActionType . Vector 3 , Ġaction Set , Ġaction , Ġcase Sensitive ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . get Axis ( input Source ) Ġ?: ĠVec 3 () ĊĊĠĠĠ Ġ/** ĠGet Ġthe ĠVector 3 Ġvalue Ġof Ġan Ġaction Ġby Ġthe Ġaction Ġname Ġand Ġinput Ġsource . ĠOptionally Ġcase Ġsensitive Ġ( for Ġfaster Ġresults ) ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġaction : ĠThe Ġname Ġof Ġthe Ġaction Ġto Ġget Ġthe Ġstate Ġof ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġinput Source : ĠThe Ġinput Ġsource Ġto Ġget Ġthe Ġaction Ġstate Ġfrom ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġcase Sensitive : ĠWhether Ġor Ġnot Ġthe Ġaction Ġset Ġand Ġaction Ġname Ġsearches Ġshould Ġbe Ġcase Ġsensitive Ġ( case Ġsensitive Ġsearches Ġare Ġfaster ) Ġ*/ ĊĠĠĠ Ġfun Ġget Vector 3 ( action : ĠString , Ġinput Source : ĠSteam VR _ Input _ Sources , Ġcase Sensitive : ĠBoolean Ġ= Ġfalse ): ĠVec 3 Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Vector 3 ( null , Ġaction , Ġinput Source , Ġcase Sensitive ) ĊĊĠĠĠ Ġ/** Ġ@ Returns Ġall Ġof Ġthe Ġactions Ġof Ġthe Ġspecified Ġtype . ĠIf Ġwe 're Ġin Ġthe Ġeditor , Ġdoesn 't Ġrely Ġon Ġthe Ġarrays Ġbeing Ġfilled . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġ@ param ĠT : ĠThe Ġtype Ġof Ġactions Ġyou Ġwant Ġto Ġget Ġ*/ ĊĠĠĠ Ġfun Ġ< T Ġ: ĠSteam VR _ Action > Ġget Actions ( clazz : ĠClass < T >): ĠArray < T >? Ġ= Ġwhen Ġ( clazz ) Ġ{ ĊĠĠĠĠĠĠĠ ĠSteam VR _ Action :: class . java Ġ-> Ġactions ĊĠĠĠĠĠĠĠ ĠI Steam VR _ Action _ In :: class . java Ġ-> Ġactions In ĊĠĠĠĠĠĠĠ ĠI Steam VR _ Action _ Out :: class . java Ġ-> Ġactions Out ĊĠĠĠĠĠĠĠ ĠSteam VR _ Action _ Boolean :: class . java Ġ-> Ġactions Boolean ĊĠĠĠĠĠĠĠ ĠSteam VR _ Action _ Single :: class . java Ġ-> Ġactions Single ĊĠĠĠĠĠĠĠ ĠSteam VR _ Action _ Vector 2 :: class . java Ġ-> Ġactions Vector 2 ĊĠĠĠĠĠĠĠ ĠSteam VR _ Action _ Vector 3 :: class . java Ġ-> Ġactions Vector 3 ĊĠĠĠĠĠĠĠ ĠSteam VR _ Action _ Pose :: class . java Ġ-> Ġactions Pose ĊĠĠĠĠĠĠĠ ĠSteam VR _ Action _ Skeleton :: class . java Ġ-> Ġactions Skeleton ĊĠĠĠĠĠĠĠ ĠSteam VR _ Action _ V ibration :: class . java Ġ-> Ġactions V ibration ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull . also Ġ{ Ġprintln ("[ Steam VR ] ĠWrong Ġtype .") Ġ} ĊĠĠĠ Ġ} Ġas ĠArray < T > ĊĊĠĠĠ Ġinternal Ġval Ġshould Make Copy : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ! Steam VR _ Behaviour . is Playing ĊĊĠĠĠ Ġ/** ĠGets Ġthe Ġlocalized Ġname Ġof Ġthe Ġdevice Ġthat Ġthe Ġaction Ġcorresponds Ġto . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġinput Source ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġlocalized Parts ĊĠĠĠĠ Ġ* ĠĠĠĠĠ ĠVR Input String . Hand Ġ- ĠWhich Ġhand Ġthe Ġorigin Ġis Ġin . ĠE . g . Ġ" Left ĠHand " ĊĠĠĠĠ Ġ* ĠĠĠĠĠ ĠVR Input String . Controller Type Ġ- ĠWhat Ġkind Ġof Ġcontroller Ġthe Ġuser Ġhas Ġin Ġthat Ġhand . E . g . Ġ" V ive ĠController " ĊĠĠĠĠ Ġ* ĠĠĠĠĠ ĠVR Input String . Input Source Ġ- ĠWhat Ġpart Ġof Ġthat Ġcontroller Ġis Ġthe Ġorigin . ĠE . g . Ġ" Track pad " ĊĠĠĠĠ Ġ* ĠĠĠĠĠ ĠVR Input String . All Ġ- ĠAll Ġof Ġthe Ġabove . ĠE . g . Ġ" Left ĠHand ĠV ive ĠController ĠTrack pad " Ġ*/ ĊĠĠĠ Ġfun Ġget Localized Name ( origin Handle : ĠVR Input Value Handle , Ġlocalized Parts : ĠArray < VR Input String >): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġlocalized Parts Mask Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( part Index Ġin Ġ 0 Ġuntil Ġlocalized Parts . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocalized Parts Mask Ġ= Ġlocalized Parts Mask Ġor Ġlocalized Parts [ part Index ]. i ĊĊĠĠĠĠĠĠĠ Ġreturn Ġvr Input . get Origin Localized Name ( origin Handle , Ġlocalized Parts Mask ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĠTell ĠSteam VR Ġthat Ġwe 're Ġusing Ġthe Ġactions Ġfile Ġat Ġthe Ġpath Ġdefined Ġin ĠSteam VR _ Settings . Ġ*/ ĊĠĠĠ Ġfun Ġidentify Actions File ( show Logs : ĠBoolean Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpath Ġ= ĠSteam VR _ Settings . actions FilePath ĊĠĠĠĠĠĠĠ Ġif Ġ( path Ġ!= Ġnull ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Open VR . Input Ġ== Ġnull ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDebug . LogError ("< b >[ Steam VR ]</ b > ĠCould Ġnot Ġinstantiate ĠOpen VR ĠInput Ġinterface ."); Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ; Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġerr Ġ= Ġvr Input . setAction Manifest Path ( path ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( err Ġ!= Ġvr Input . Error . None ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . println ("[ Steam VR ] ĠError Ġloading Ġaction Ġmanifest Ġinto ĠSteam VR : Ġ$ err ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Steam VR _ Input . actions Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnum Actions Ġ= ĠSteam VR _ Input . actions Single ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( show Logs ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ("[ Steam VR ] ĠSuccessfully Ġloaded Ġ$ num Actions Ġactions Ġfrom Ġaction Ġmanifest Ġinto ĠSteam VR Ġ($ path )") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( show Logs ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . println ("[ Steam VR ] ĠNo Ġactions Ġfound , Ġbut Ġthe Ġaction Ġmanifest Ġwas Ġloaded . ĠThis Ġusually Ġmeans Ġyou Ġhaven 't Ġgenerated Ġactions . ĠWindow Ġ-> ĠSteam VR ĠSteam VR _ Input Ġ-> ĠSave Ġand ĠGenerate .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( show Logs ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . println ("[ Steam VR ] ĠCould Ġnot Ġfind Ġactions Ġfile Ġat : Ġ$ path ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠDoes Ġthe Ġactions Ġfile Ġin Ġmemory Ġdiffer Ġfrom Ġthe Ġone Ġon Ġdisk Ġas Ġdetermined Ġby Ġa Ġmd 5 Ġhash Ġ*/ ĊĠĠĠ Ġfun Ġhas File InMemory Been Modified (): ĠBoolean Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġjson Text Ġ= Ġactions FilePath ?. read Text () Ġ?: Ġreturn Ġtrue ĊĊĠĠĠĠĠĠĠ Ġval Ġnew Hash FromFile Ġ= ĠSteam VR _ Utils . get Bad MD 5 Hash ( json Text ) ĊĊĠĠĠĠĠĠĠ Ġval Ġnew JSON Ġ= ĠK l ax on (). toJson String ( action File ) ĊĊĠĠĠĠĠĠĠ Ġval Ġnew Hash From Memory Ġ= ĠSteam VR _ Utils . get Bad MD 5 Hash ( new JSON ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġnew Hash FromFile Ġ!= Ġnew Hash From Memory ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcreate Empty Actions File ( comp let ely Empty : ĠBoolean Ġ= Ġfalse ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġproject Path Ġ= ĠApplication . data Path ĊĠĠĠĠĠĠĠ ĠTODO () Ċ // ĠĠĠĠĠĠĠ Ġint Ġlast Index Ġ= Ġproject Path Ġ. ĠLast IndexOf Ġ(" /") Ċ // ĠĠĠĠĠĠĠ Ġproject Path Ġ= Ġproject Path . Remove ( last Index , Ġproject Path . Length Ġ- Ġlast Index ) Ċ // ĠĠĠĠĠĠĠ Ġactions FilePath Ġ= ĠPath . Combine ( project Path , ĠSteam VR _ Settings . instance . actions FilePath ) Ċ // Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( File . Exists ( actions FilePath )) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠDebug . LogError Format ("< b >[ Steam VR ]</ b > ĠActions Ġfile Ġalready Ġexists Ġin Ġproject Ġroot : Ġ{ 0 }", Ġactions FilePath ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠĠĠĠĠ Ġaction File Ġ= Ġnew ĠSteam VR _ Input _ Action File Ġ() Ċ // Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( comp let ely Empty Ġ== Ġfalse ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġaction File . action _ sets . Add ( Steam VR _ Input _ Action File _ Action Set . Create New ()) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġaction File . actions . Add ( Steam VR _ Input _ Action File _ Action . Create New ( action File . action _ sets [ 0 ]. short Name , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSteam VR _ Action Directions . In , ĠSteam VR _ Input _ Action File _ Action Types . boolean )) Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠĠĠĠĠ Ġstring Ġnew JSON Ġ= ĠJsonConvert Ġ. ĠSerialize Object Ġ( action File , ĠFormat ting . Indent ed , Ġnew ĠJsonSerializer Settings Ġ{ ĠNull Value Handling Ġ= ĠNull Value Handling . Ignore Ġ}) Ċ // Ċ // ĠĠĠĠĠĠĠ ĠFile . Write All Text ( actions FilePath , Ġnew JSON ) Ċ // Ċ // ĠĠĠĠĠĠĠ Ġaction File . Initialize Helper Lists () Ċ // ĠĠĠĠĠĠĠ Ġfile Initialized Ġ= Ġtrue Ċ // ĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdoes Actions File Exist (): ĠBoolean Ġ= ĠSteam VR _ Settings . actions FilePath Ġ!= Ġnull ĊĊĠĠĠ Ġ/** ĠLoad Ġfrom Ġdisk Ġand Ġdeserialize Ġthe Ġactions Ġfile ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġforce : ĠForce Ġa Ġrefresh Ġof Ġthis Ġfile Ġfrom Ġdisk Ġ*/ ĊĠĠĠ Ġfun Ġinitialize File ( force : ĠBoolean Ġ= Ġfalse , Ġshow Errors : ĠBoolean Ġ= Ġtrue ): ĠBoolean Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġjson Text Ġ= ĠSteam VR _ Settings . actions FilePath ?. read Text () Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( show Errors ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . println ("[ Steam VR ] ĠActions Ġfile Ġdoes Ġnot Ġexist Ġin Ġproject Ġroot : Ġ${ Steam VR _ Settings . actions FilePath }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( file Initialized Ġ|| Ġ( file Initialized Ġ&& Ġ! force )) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Hash Ġ= ĠSteam VR _ Utils . get Bad MD 5 Hash ( json Text ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( new Hash Ġ== Ġaction File Hash ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction File Hash Ġ= Ġnew Hash ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġaction File Ġ= ĠK l ax on (). parse < Steam VR _ Input _ Action File >( json Text ) !! ĊĠĠĠĠĠĠĠ Ġaction File . initialize Helper Lists () ĊĠĠĠĠĠĠĠ Ġfile Initialized Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠDeletes Ġthe Ġaction Ġmanifest Ġfile Ġand Ġall Ġthe Ġdefault Ġbindings Ġit Ġhad Ġlisted Ġin Ġthe Ġdefault Ġbindings Ġsection ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġ@ returns ĠTrue Ġif Ġwe Ġdeleted Ġan Ġaction Ġfile , Ġfalse Ġif Ġnot . Ġ*/ ĊĠĠĠ Ġfun Ġdelete Manifest And Bindings (): ĠBoolean Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! does Actions File Exist ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġinitialize File () ĊĊĠĠĠĠĠĠĠ Ġval Ġfiles ToDelete Ġ= Ġaction File . get Files To Copy () ĊĠĠĠĠĠĠĠ ĠTODO () Ċ // ĠĠĠĠĠĠĠ Ġforeach ( string Ġbinding FilePath Ġin Ġfiles ToDelete ) Ċ // ĠĠĠĠĠĠĠ Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠFileInfo Ġbinding FileInfo Ġ= Ġnew ĠFileInfo ( binding FilePath ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġbinding FileInfo . Is ReadOnly Ġ= Ġfalse Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠFile . Delete ( binding FilePath ) Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( File . Exists ( actions FilePath )) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠFileInfo Ġaction FileInfo Ġ= Ġnew ĠFileInfo ( actions FilePath ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġaction FileInfo . Is ReadOnly Ġ= Ġfalse Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠFile . Delete ( actions FilePath ) Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġaction File Ġ= Ġnull Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġfile Initialized Ġ= Ġfalse Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue Ċ // ĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} Ċ Ċ // ĠĠĠ Ġ# if ĠUNITY _ EDITOR Ċ // ĠĠĠ Ġpublic Ġstatic Ġstring ĠGet Resources FolderPath ( bool Ġfrom Assets Directory Ġ= Ġfalse ) Ċ // ĠĠĠ Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġstring Ġinput Folder Ġ= Ġstring Ġ. ĠFormat Ġ(" Assets /{ 0 }", ĠSteam VR _ Settings . instance . steam VR Input Path ) Ċ // Ċ // ĠĠĠĠĠĠĠ Ġstring Ġpath Ġ= ĠPath Ġ. ĠCombine Ġ( input Folder , Ġ" Resources ") Ċ // Ċ // ĠĠĠĠĠĠĠ Ġbool Ġcreated Directory Ġ= Ġfalse Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( Directory . Exists ( input Folder ) Ġ== Ġfalse ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠDirectory . Create Directory ( input Folder ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġcreated Directory Ġ= Ġtrue Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( Directory . Exists ( path ) Ġ== Ġfalse ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠDirectory . Create Directory ( path ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġcreated Directory Ġ= Ġtrue Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( created Directory ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠUnity Editor . Asset Database . Refresh () Ċ // Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( from Assets Directory Ġ== Ġfalse ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġpath . Replace (" Assets /", Ġ"") Ċ // ĠĠĠĠĠĠĠ Ġelse Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġpath Ċ // ĠĠĠ Ġ} Ċ // Ċ // Ċ // Ċ // ĠĠĠ Ġprivate Ġstatic Ġbool Ġchecking Setup Ġ= Ġfalse Ċ // ĠĠĠ Ġprivate Ġstatic Ġbool Ġopening Setup Ġ= Ġfalse Ċ // ĠĠĠ Ġpublic Ġstatic Ġbool ĠIs Opening Setup () Ċ // ĠĠĠ Ġ{ Ġreturn Ġopening Setup ; Ġ} Ċ // ĠĠĠ Ġprivate Ġstatic Ġvoid ĠCheck Setup () Ċ // ĠĠĠ Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( checking Setup Ġ== Ġfalse Ġ&& Ġopening Setup Ġ== Ġfalse Ġ&& Ġ( Steam VR _ Input . actions Ġ== Ġnull Ġ|| ĠSteam VR _ Input . actions . Length Ġ== Ġ 0 )) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġchecking Setup Ġ= Ġtrue Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠDebug . Break () Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġbool Ġopen Ġ= ĠUnity Editor Ġ. ĠEditor Utility Ġ. ĠDisplay Dialog Ġ(" [ Steam VR ]", Ġ" It Ġlooks Ġlike Ġyou Ġhaven 't Ġgenerated Ġactions Ġfor ĠSteam VR ĠInput Ġyet . ĠWould Ġyou Ġlike Ġto Ġopen Ġthe ĠSteam VR ĠInput Ġwindow ?", Ġ" Yes ", Ġ" No ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( open ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopening Setup Ġ= Ġtrue Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUnity Editor . Editor Application . is Playing Ġ= Ġfalse Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠType Ġeditor Window Type Ġ= ĠFind Type Ġ(" Val ve . VR . Steam VR _ Input _ Editor Window ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( editor Window Type Ġ!= Ġnull ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġwindow Ġ= ĠUnity Editor . Editor Window . GetWindow ( editor Window Type , Ġfalse , Ġ" Steam VR ĠSteam VR _ Input ", Ġtrue ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( window Ġ!= Ġnull ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . Show () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDebug . LogError ("< b >[ Steam VR ]</ b > ĠThis Ġversion Ġof ĠSteam VR Ġwill Ġnot Ġwork Ġif Ġyou Ġdo Ġnot Ġnew Create Type Ġand Ġgenerate Ġactions . ĠPlease Ġopen Ġthe ĠSteam VR ĠSteam VR _ Input Ġwindow Ġor Ġdown grade Ġto Ġversion Ġ 1 . 2 . 3 Ġ( on Ġgithub )") Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġchecking Setup Ġ= Ġfalse Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġprivate Ġstatic ĠType ĠFind Type ( string ĠtypeName ) Ċ // ĠĠĠ Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġvar Ġtype Ġ= ĠType . GetType ( typeName ) Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( type Ġ!= Ġnull ) Ġreturn Ġtype Ċ // ĠĠĠĠĠĠĠ Ġforeach ( var Ġa Ġin ĠApp Domain Ġ. ĠCurrent Domain Ġ. ĠGet As semblies Ġ()) Ċ // ĠĠĠĠĠĠĠ Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġa . GetType ( typeName ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( type Ġ!= Ġnull ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtype Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġreturn Ġnull Ċ // ĠĠĠ Ġ} Ċ // ĠĠĠ Ġ# endif Ċ }