package Ġopen vr . assets . steam VR . input Ċ Ċ import Ġopen vr . lib .* Ċ import Ġopen vr . plugin 2 . Steam VR _ Input _ Sources Ċ import Ġopen vr . unity . Time Ċ import Ġorg . lwjgl . open vr . Input Digital Action Data Ċ Ċ // ======= ĠCopyright Ġ( c ) ĠVal ve ĠCorporation , ĠAll Ġrights Ġreserved . Ġ= ============== Ċ Ċ type alias ĠSteam VR _ Action _ Boolean _ State Down Handler Ġ= Ġ( from Action : ĠSteam VR _ Action _ Boolean ?, Ġfrom Source : ĠSteam VR _ Input _ Sources ) Ġ-> ĠUnit Ċ type alias ĠSteam VR _ Action _ Boolean _ State Up Handler Ġ= Ġ( from Action : ĠSteam VR _ Action _ Boolean ?, Ġfrom Source : ĠSteam VR _ Input _ Sources ) Ġ-> ĠUnit Ċ type alias ĠSteam VR _ Action _ Boolean _ State Handler Ġ= Ġ( from Action : ĠSteam VR _ Action _ Boolean ?, Ġfrom Source : ĠSteam VR _ Input _ Sources ) Ġ-> ĠUnit Ċ type alias ĠSteam VR _ Action _ Boolean _ Active Change Handler Ġ= Ġ( from Action : ĠSteam VR _ Action _ Boolean ?, Ġfrom Source : ĠSteam VR _ Input _ Sources , Ġactive : ĠBoolean ) Ġ-> ĠUnit Ċ type alias ĠSteam VR _ Action _ Boolean _ Change Handler Ġ= Ġ( from Action : ĠSteam VR _ Action _ Boolean ?, Ġfrom Source : ĠSteam VR _ Input _ Sources , ĠnewState : ĠBoolean ) Ġ-> ĠUnit Ċ type alias ĠSteam VR _ Action _ Boolean _ Update Handler Ġ= Ġ( from Action : ĠSteam VR _ Action _ Boolean ?, Ġfrom Source : ĠSteam VR _ Input _ Sources , ĠnewState : ĠBoolean ) Ġ-> ĠUnit Ċ Ċ /** ĠBoolean Ġactions Ġare Ġeither Ġtrue Ġor Ġfalse . ĠThere Ġare Ġa Ġvariety Ġof Ġhelper Ġevents Ġincluded Ġthat Ġwill Ġfire Ġfor Ġthe Ġgiven Ġinput Ġsource . ĠThey 're Ġprefixed Ġwith Ġ" on ". Ġ*/ Ċ class ĠSteam VR _ Action _ Boolean Ġ: ĠSteam VR _ Action _ In < Steam VR _ Action _ Boolean _ Source _ Map , ĠSteam VR _ Action _ Boolean _ Source >(), ĊĠĠĠĠĠĠĠ ĠI Steam VR _ Action _ Boolean /* , ĠI Serialization Callback Receiver */ Ġ{ ĊĊĠĠĠ Ġ/** Ġ[ Shortcut Ġto : ĠSteam VR _ Input _ Sources . Any ] ĠThis Ġevent Ġfires Ġwhenever Ġa Ġstate Ġchanges Ġfrom Ġfalse Ġto Ġtrue Ġor Ġtrue Ġto Ġfalse Ġ*/ Ċ // ĠĠĠ Ġvar ĠonChange : ĠSteam VR _ Action _ Boolean _ Change Handler Ċ // ĠĠĠĠĠĠĠ Ġ{ Ġadd Ġ{ Ġsource Map [ Steam VR _ Input _ Sources . Any ]. onChange Ġ+= Ġvalue ; Ġ} Ġremove Ġ{ Ġsource Map [ Steam VR _ Input _ Sources . Any ]. onChange Ġ-= Ġvalue ; Ġ} Ġ} Ċ // Ċ // ĠĠĠ Ġ/// Ġ< summary >< strong >[ Shortcut Ġto : ĠSteam VR _ Input _ Sources . Any ]</ strong > ĠThis Ġevent Ġfires Ġwhenever Ġthe Ġaction Ġis Ġupdated </ summary > Ċ // ĠĠĠ Ġpublic Ġevent ĠUpdate Handler ĠonUpdate Ċ // ĠĠĠ Ġ{ Ġadd Ġ{ Ġsource Map [ Steam VR _ Input _ Sources . Any ]. on Update Ġ+= Ġvalue ; Ġ} Ġremove Ġ{ Ġsource Map [ Steam VR _ Input _ Sources . Any ]. on Update Ġ-= Ġvalue ; Ġ} Ġ} Ċ // Ċ // ĠĠĠ Ġ/// Ġ< summary >< strong >[ Shortcut Ġto : ĠSteam VR _ Input _ Sources . Any ]</ strong > ĠThis Ġevent Ġfires Ġwhenever Ġthe Ġboolean Ġaction Ġis Ġtrue Ġand Ġgets Ġupdated </ summary > Ċ // ĠĠĠ Ġpublic Ġevent ĠState Handler Ġon State Ċ // ĠĠĠ Ġ{ Ġadd Ġ{ Ġsource Map [ Steam VR _ Input _ Sources . Any ]. on State Ġ+= Ġvalue ; Ġ} Ġremove Ġ{ Ġsource Map [ Steam VR _ Input _ Sources . Any ]. on State Ġ-= Ġvalue ; Ġ} Ġ} Ċ // Ċ // ĠĠĠ Ġ/// Ġ< summary >< strong >[ Shortcut Ġto : ĠSteam VR _ Input _ Sources . Any ]</ strong > ĠThis Ġevent Ġfires Ġwhenever Ġthe Ġstate Ġof Ġthe Ġboolean Ġaction Ġhas Ġchanged Ġfrom Ġfalse Ġto Ġtrue Ġin Ġthe Ġmost Ġrecent Ġupdate </ summary > Ċ // ĠĠĠ Ġpublic Ġevent ĠState Down Handler Ġon State Down Ċ // ĠĠĠ Ġ{ Ġadd Ġ{ Ġsource Map [ Steam VR _ Input _ Sources . Any ]. on State Down Ġ+= Ġvalue ; Ġ} Ġremove Ġ{ Ġsource Map [ Steam VR _ Input _ Sources . Any ]. on State Down Ġ-= Ġvalue ; Ġ} Ġ} Ċ // Ċ // ĠĠĠ Ġ/// Ġ< summary >< strong >[ Shortcut Ġto : ĠSteam VR _ Input _ Sources . Any ]</ strong > ĠThis Ġevent Ġfires Ġwhenever Ġthe Ġstate Ġof Ġthe Ġboolean Ġaction Ġhas Ġchanged Ġfrom Ġtrue Ġto Ġfalse Ġin Ġthe Ġmost Ġrecent Ġupdate </ summary > Ċ // ĠĠĠ Ġpublic Ġevent ĠState Up Handler Ġon State Up Ċ // ĠĠĠ Ġ{ Ġadd Ġ{ Ġsource Map [ Steam VR _ Input _ Sources . Any ]. on State Up Ġ+= Ġvalue ; Ġ} Ġremove Ġ{ Ġsource Map [ Steam VR _ Input _ Sources . Any ]. on State Up Ġ-= Ġvalue ; Ġ} Ġ} Ċ // Ċ // ĠĠĠ Ġ/// Ġ< summary >< strong >[ Shortcut Ġto : ĠSteam VR _ Input _ Sources . Any ]</ strong > ĠEvent Ġfires Ġwhen Ġthe Ġactive Ġstate Ġ( Action Set Ġactive Ġand Ġbinding Ġactive ) Ġchanges </ summary > Ċ // ĠĠĠ Ġpublic Ġevent ĠActive Change Handler Ġon Active Change Ċ // ĠĠĠ Ġ{ Ġadd Ġ{ Ġsource Map [ Steam VR _ Input _ Sources . Any ]. on Active Change Ġ+= Ġvalue ; Ġ} Ġremove Ġ{ Ġsource Map [ Steam VR _ Input _ Sources . Any ]. on Active Change Ġ-= Ġvalue ; Ġ} Ġ} Ċ // Ċ // ĠĠĠ Ġ/// Ġ< summary >< strong >[ Shortcut Ġto : ĠSteam VR _ Input _ Sources . Any ]</ strong > ĠEvent Ġfires Ġwhen Ġthe Ġbound Ġstate Ġof Ġthe Ġbinding Ġchanges </ summary > Ċ // ĠĠĠ Ġpublic Ġevent ĠActive Change Handler Ġon Active Binding Change Ċ // ĠĠĠ Ġ{ Ġadd Ġ{ Ġsource Map [ Steam VR _ Input _ Sources . Any ]. on Active Binding Change Ġ+= Ġvalue ; Ġ} Ġremove Ġ{ Ġsource Map [ Steam VR _ Input _ Sources . Any ]. on Active Binding Change Ġ-= Ġvalue ; Ġ} Ġ} ĊĊĊĠĠĠ Ġ/** Ġ[ Shortcut Ġto : ĠSteam VR _ Input _ Sources . Any ] ĠTrue Ġwhen Ġthe Ġboolean Ġaction Ġis Ġtrue Ġ*/ ĊĠĠĠ Ġoverride Ġval Ġstate : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġsource Map ! ![ Steam VR _ Input _ Sources . Any ] !!. state ĊĊĠĠĠ Ġ/** Ġ[ Shortcut Ġto : ĠSteam VR _ Input _ Sources . Any ] ĠTrue Ġwhen Ġthe Ġboolean Ġaction Ġis Ġtrue Ġand Ġthe Ġlast Ġstate Ġwas Ġfalse Ġ*/ ĊĠĠĠ Ġoverride Ġval Ġstate Down : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġsource Map ! ![ Steam VR _ Input _ Sources . Any ] !!. state Down ĊĊĠĠĠ Ġ/** Ġ[ Shortcut Ġto : ĠSteam VR _ Input _ Sources . Any ] ĠTrue Ġwhen Ġthe Ġboolean Ġaction Ġis Ġfalse Ġand Ġthe Ġlast Ġstate Ġwas Ġtrue Ġ*/ ĊĠĠĠ Ġoverride Ġval Ġstate Up : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġsource Map ! ![ Steam VR _ Input _ Sources . Any ] !!. state Up ĊĊĊĠĠĠ Ġ/** Ġ[ Shortcut Ġto : ĠSteam VR _ Input _ Sources . Any ] Ġ( previous Ġupdate ) ĠTrue Ġwhen Ġthe Ġboolean Ġaction Ġis Ġtrue Ġ*/ ĊĠĠĠ Ġoverride Ġval Ġlast State : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġsource Map ! ![ Steam VR _ Input _ Sources . Any ] !!. last State ĊĊĠĠĠ Ġ/** Ġ[ Shortcut Ġto : ĠSteam VR _ Input _ Sources . Any ] Ġ( previous Ġupdate ) ĠTrue Ġwhen Ġthe Ġboolean Ġaction Ġis Ġtrue Ġand Ġthe Ġlast Ġstate Ġwas Ġfalse Ġ*/ ĊĠĠĠ Ġoverride Ġval Ġlast State Down : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġsource Map ! ![ Steam VR _ Input _ Sources . Any ] !!. last State Down ĊĊĠĠĠ Ġ/** Ġ[ Shortcut Ġto : ĠSteam VR _ Input _ Sources . Any ] Ġ( previous Ġupdate ) ĠTrue Ġwhen Ġthe Ġboolean Ġaction Ġis Ġfalse Ġand Ġthe Ġlast Ġstate Ġwas Ġtrue Ġ*/ ĊĠĠĠ Ġoverride Ġval Ġlast State Up : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġsource Map ! ![ Steam VR _ Input _ Sources . Any ] !!. last State Up ĊĊĊĠĠĠ Ġ/** Ġ@ Returns Ġtrue Ġif Ġthe Ġvalue Ġof Ġthe Ġaction Ġhas Ġbeen Ġchanged Ġto Ġtrue Ġ( from Ġfalse ) Ġin Ġthe Ġmost Ġrecent Ġupdate . ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġinput Source : ĠThe Ġdevice Ġyou Ġwould Ġlike Ġto Ġget Ġdata Ġfrom . ĠAny Ġif Ġthe Ġaction Ġis Ġnot Ġdevice Ġspecific . Ġ*/ ĊĠĠĠ Ġfun ĠgetState Down ( input Source : ĠSteam VR _ Input _ Sources ): ĠBoolean Ġ= Ġsource Map ! ![ input Source ] !!. state Down ĊĊĠĠĠ Ġ/** Ġ@ Returns Ġtrue Ġif Ġthe Ġvalue Ġof Ġthe Ġaction Ġhas Ġbeen Ġchanged Ġto Ġfalse Ġ( from Ġtrue ) Ġin Ġthe Ġmost Ġrecent Ġupdate . ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġinput Source : ĠThe Ġdevice Ġyou Ġwould Ġlike Ġto Ġget Ġdata Ġfrom . ĠAny Ġif Ġthe Ġaction Ġis Ġnot Ġdevice Ġspecific . Ġ*/ ĊĠĠĠ Ġfun ĠgetState Up ( input Source : ĠSteam VR _ Input _ Sources ): ĠBoolean Ġ= Ġsource Map ! ![ input Source ] !!. state Up ĊĊĠĠĠ Ġ/** Ġ@ Returns Ġtrue Ġif Ġthe Ġvalue Ġof Ġthe Ġaction Ġ( state ) Ġis Ġcurrently Ġtrue ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġinput Source : ĠThe Ġdevice Ġyou Ġwould Ġlike Ġto Ġget Ġdata Ġfrom . ĠAny Ġif Ġthe Ġaction Ġis Ġnot Ġdevice Ġspecific . Ġ*/ ĊĠĠĠ Ġfun ĠgetState ( input Source : ĠSteam VR _ Input _ Sources ): ĠBoolean Ġ= Ġsource Map ! ![ input Source ] !!. state ĊĊĠĠĠ Ġ/** Ġ[ For Ġthe Ġprevious Ġupdate ] ĠReturns Ġtrue Ġif Ġthe Ġvalue Ġof Ġthe Ġaction Ġhas Ġbeen Ġset Ġto Ġtrue Ġ( from Ġfalse ). ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġinput Source : ĠThe Ġdevice Ġyou Ġwould Ġlike Ġto Ġget Ġdata Ġfrom . ĠAny Ġif Ġthe Ġaction Ġis Ġnot Ġdevice Ġspecific . Ġ*/ ĊĠĠĠ Ġfun ĠgetLast State Down ( input Source : ĠSteam VR _ Input _ Sources ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsource Map ! ![ input Source ] !!. last State Down ĊĊĠĠĠ Ġ/** Ġ[ For Ġthe Ġprevious Ġupdate ] ĠReturns Ġtrue Ġif Ġthe Ġvalue Ġof Ġthe Ġaction Ġhas Ġbeen Ġset Ġto Ġfalse Ġ( from Ġtrue ). ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġinput Source : ĠThe Ġdevice Ġyou Ġwould Ġlike Ġto Ġget Ġdata Ġfrom . ĠAny Ġif Ġthe Ġaction Ġis Ġnot Ġdevice Ġspecific . Ġ*/ ĊĠĠĠ Ġfun ĠgetLast State Up ( input Source : ĠSteam VR _ Input _ Sources ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsource Map ! ![ input Source ] !!. last State Up ĊĊĠĠĠ Ġ/** Ġ[ For Ġthe Ġprevious Ġupdate ] ĠReturns Ġtrue Ġif Ġthe Ġvalue Ġof Ġthe Ġaction Ġwas Ġtrue . ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġinput Source : ĠThe Ġdevice Ġyou Ġwould Ġlike Ġto Ġget Ġdata Ġfrom . ĠAny Ġif Ġthe Ġaction Ġis Ġnot Ġdevice Ġspecific . Ġ*/ ĊĠĠĠ Ġfun ĠgetLast State ( input Source : ĠSteam VR _ Input _ Sources ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsource Map ! ![ input Source ] !!. last State ĊĊĠĠĠ Ġ/** ĠExec utes Ġa Ġfunction Ġwhen Ġthe Ġ* functional * Ġactive Ġstate Ġof Ġthis Ġaction Ġ( with Ġthe Ġspecified Ġinput Source ) Ġchanges . ĊĠĠĠĠ Ġ* Ġ ĠThis Ġhappens Ġwhen Ġthe Ġaction Ġis Ġbound Ġor Ġun bound , Ġor Ġwhen Ġthe ĠAction Set Ġchanges Ġstate . ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġfunction To Call : ĠA Ġlocal Ġfunction Ġthat Ġreceives Ġthe Ġboolean Ġaction Ġwho 's Ġactive Ġstate Ġchanges Ġand Ġthe Ġcorresponding Ġinput Ġsource ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġinput Source : ĠThe Ġdevice Ġyou Ġwould Ġlike Ġto Ġget Ġdata Ġfrom . ĠAny Ġif Ġthe Ġaction Ġis Ġnot Ġdevice Ġspecific . Ġ*/ ĊĠĠĠ Ġfun Ġadd On Active ChangeListener ( function To Call : ĠSteam VR _ Action _ Boolean _ Active Change Handler , Ġinput Source : ĠSteam VR _ Input _ Sources ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsource Map ! ![ input Source ] !!. on Active Change Ġ+= Ġfunction To Call ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠSto ps Ġexecuting Ġa Ġfunction Ġwhen Ġthe Ġ* functional * Ġactive Ġstate Ġof Ġthis Ġaction Ġ( with Ġthe Ġspecified Ġinput Source ) Ġchanges . ĊĠĠĠĠ Ġ* Ġ ĠThis Ġhappens Ġwhen Ġthe Ġaction Ġis Ġbound Ġor Ġun bound , Ġor Ġwhen Ġthe ĠAction Set Ġchanges Ġstate . ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġfunction To Stop Calling : ĠThe Ġlocal Ġfunction Ġthat Ġyou 've Ġsetup Ġto Ġreceive Ġupdate Ġevents ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġinput Source : ĠThe Ġdevice Ġyou Ġwould Ġlike Ġto Ġget Ġdata Ġfrom . ĠAny Ġif Ġthe Ġaction Ġis Ġnot Ġdevice Ġspecific . Ġ*/ ĊĠĠĠ Ġfun Ġremove On Active ChangeListener ( function To Stop Calling : ĠSteam VR _ Action _ Boolean _ Active Change Handler , Ġinput Source : ĠSteam VR _ Input _ Sources ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsource Map ! ![ input Source ] !!. on Active Change Ġ-= Ġfunction To Stop Calling ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠExec utes Ġa Ġfunction Ġwhen Ġthe Ġactive Ġstate Ġof Ġthis Ġaction Ġ( with Ġthe Ġspecified Ġinput Source ) Ġchanges . ĠThis Ġhappens Ġwhen Ġthe Ġaction Ġis Ġbound Ġor Ġun bound ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġfunction To Call : ĠA Ġlocal Ġfunction Ġthat Ġreceives Ġthe Ġboolean Ġaction Ġwho 's Ġactive Ġstate Ġchanges Ġand Ġthe Ġcorresponding Ġinput Ġsource ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġinput Source : ĠThe Ġdevice Ġyou Ġwould Ġlike Ġto Ġget Ġdata Ġfrom . ĠAny Ġif Ġthe Ġaction Ġis Ġnot Ġdevice Ġspecific . Ġ*/ ĊĠĠĠ Ġfun Ġadd On Active Binding ChangeListener ( function To Call : ĠSteam VR _ Action _ Boolean _ Active Change Handler , Ġinput Source : ĠSteam VR _ Input _ Sources ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsource Map ! ![ input Source ] !!. on Active Binding Change Ġ+= Ġfunction To Call ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠSto ps Ġexecuting Ġthe Ġfunction Ġsetup Ġby Ġthe Ġcorresponding ĠAdd Listener ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġfunction To Stop Calling : ĠThe Ġlocal Ġfunction Ġthat Ġyou 've Ġsetup Ġto Ġreceive Ġupdate Ġevents ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġinput Source : ĠThe Ġdevice Ġyou Ġwould Ġlike Ġto Ġget Ġdata Ġfrom . ĠAny Ġif Ġthe Ġaction Ġis Ġnot Ġdevice Ġspecific . Ġ*/ ĊĠĠĠ Ġfun Ġremove On Active Binding ChangeListener ( function To Stop Calling : ĠSteam VR _ Action _ Boolean _ Active Change Handler , Ġinput Source : ĠSteam VR _ Input _ Sources ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsource Map ! ![ input Source ] !!. on Active Binding Change Ġ-= Ġfunction To Stop Calling ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠExec utes Ġa Ġfunction Ġwhen Ġthe Ġstate Ġof Ġthis Ġaction Ġ( with Ġthe Ġspecified Ġinput Source ) Ġchanges ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġfunction To Call : ĠA Ġlocal Ġfunction Ġthat Ġreceives Ġthe Ġboolean Ġaction Ġwho 's Ġstate Ġhas Ġchanged , Ġthe Ġcorresponding Ġinput Ġsource , Ġand Ġthe Ġnew Ġvalue ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġinput Source : ĠThe Ġdevice Ġyou Ġwould Ġlike Ġto Ġget Ġdata Ġfrom . ĠAny Ġif Ġthe Ġaction Ġis Ġnot Ġdevice Ġspecific . Ġ*/ ĊĠĠĠ Ġfun Ġadd On ChangeListener ( function To Call : ĠSteam VR _ Action _ Boolean _ Change Handler , Ġinput Source : ĠSteam VR _ Input _ Sources ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsource Map ! ![ input Source ] !!. onChange Ġ+= Ġfunction To Call ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠSto ps Ġexecuting Ġthe Ġfunction Ġsetup Ġby Ġthe Ġcorresponding ĠAdd Listener ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġfunction To Stop Calling : ĠThe Ġlocal Ġfunction Ġthat Ġyou 've Ġsetup Ġto Ġreceive Ġon Ġchange Ġevents ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġinput Source : ĠThe Ġdevice Ġyou Ġwould Ġlike Ġto Ġget Ġdata Ġfrom . ĠAny Ġif Ġthe Ġaction Ġis Ġnot Ġdevice Ġspecific . Ġ*/ ĊĠĠĠ Ġfun Ġremove On ChangeListener ( function To Stop Calling : ĠSteam VR _ Action _ Boolean _ Change Handler , Ġinput Source : ĠSteam VR _ Input _ Sources ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsource Map ! ![ input Source ] !!. onChange Ġ-= Ġfunction To Stop Calling ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠExec utes Ġa Ġfunction Ġwhen Ġthe Ġstate Ġof Ġthis Ġaction Ġ( with Ġthe Ġspecified Ġinput Source ) Ġis Ġupdated . ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġfunction To Call : ĠA Ġlocal Ġfunction Ġthat Ġreceives Ġthe Ġboolean Ġaction Ġwho 's Ġstate Ġhas Ġchanged , Ġthe Ġcorresponding Ġinput Ġsource , Ġand Ġthe Ġnew Ġvalue ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġinput Source : ĠThe Ġdevice Ġyou Ġwould Ġlike Ġto Ġget Ġdata Ġfrom . ĠAny Ġif Ġthe Ġaction Ġis Ġnot Ġdevice Ġspecific . Ġ*/ ĊĠĠĠ Ġfun Ġadd On Update Listener ( function To Call : ĠSteam VR _ Action _ Boolean _ Update Handler , Ġinput Source : ĠSteam VR _ Input _ Sources ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsource Map ! ![ input Source ] !!. on Update Ġ+= Ġfunction To Call ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠSto ps Ġexecuting Ġthe Ġfunction Ġsetup Ġby Ġthe Ġcorresponding ĠAdd Listener ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġfunction To Stop Calling : ĠThe Ġlocal Ġfunction Ġthat Ġyou 've Ġsetup Ġto Ġreceive Ġupdate Ġevents ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġinput Source : ĠThe Ġdevice Ġyou Ġwould Ġlike Ġto Ġget Ġdata Ġfrom . ĠAny Ġif Ġthe Ġaction Ġis Ġnot Ġdevice Ġspecific . Ġ*/ ĊĠĠĠ Ġfun Ġremove On Update Listener ( function To Stop Calling : ĠSteam VR _ Action _ Boolean _ Update Handler , Ġinput Source : ĠSteam VR _ Input _ Sources ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsource Map ! ![ input Source ] !!. on Update Ġ-= Ġfunction To Stop Calling ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠExec utes Ġa Ġfunction Ġwhen Ġthe Ġstate Ġof Ġthis Ġaction Ġ( with Ġthe Ġspecified Ġinput Source ) Ġchanges Ġto Ġtrue Ġ( from Ġfalse ). ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġfunction To Call : ĠA Ġlocal Ġfunction Ġthat Ġreceives Ġthe Ġboolean Ġaction Ġwho 's Ġstate Ġhas Ġchanged , Ġthe Ġcorresponding Ġinput Ġsource , Ġand Ġthe Ġnew Ġvalue ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġinput Source : ĠThe Ġdevice Ġyou Ġwould Ġlike Ġto Ġget Ġdata Ġfrom . ĠAny Ġif Ġthe Ġaction Ġis Ġnot Ġdevice Ġspecific . Ġ*/ ĊĠĠĠ Ġfun Ġadd On State Down Listener ( function To Call : ĠSteam VR _ Action _ Boolean _ State Down Handler , Ġinput Source : ĠSteam VR _ Input _ Sources ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsource Map ! ![ input Source ] !!. on State Down Ġ+= Ġfunction To Call ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠSto ps Ġexecuting Ġthe Ġfunction Ġsetup Ġby Ġthe Ġcorresponding ĠAdd Listener ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġfunction To Stop Calling : ĠThe Ġlocal Ġfunction Ġthat Ġyou 've Ġsetup Ġto Ġreceive Ġupdate Ġevents ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġinput Source : ĠThe Ġdevice Ġyou Ġwould Ġlike Ġto Ġget Ġdata Ġfrom . ĠAny Ġif Ġthe Ġaction Ġis Ġnot Ġdevice Ġspecific . Ġ*/ ĊĠĠĠ Ġfun Ġremove On State Down Listener ( function To Stop Calling : ĠSteam VR _ Action _ Boolean _ State Down Handler , Ġinput Source : ĠSteam VR _ Input _ Sources ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsource Map ! ![ input Source ] !!. on State Down Ġ-= Ġfunction To Stop Calling ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠExec utes Ġa Ġfunction Ġwhen Ġthe Ġstate Ġof Ġthis Ġaction Ġ( with Ġthe Ġspecified Ġinput Source ) Ġchanges Ġto Ġfalse Ġ( from Ġtrue ). ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġfunction To Call : ĠA Ġlocal Ġfunction Ġthat Ġreceives Ġthe Ġboolean Ġaction Ġwho 's Ġstate Ġhas Ġchanged , Ġthe Ġcorresponding Ġinput Ġsource , Ġand Ġthe Ġnew Ġvalue ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġinput Source : ĠThe Ġdevice Ġyou Ġwould Ġlike Ġto Ġget Ġdata Ġfrom . ĠAny Ġif Ġthe Ġaction Ġis Ġnot Ġdevice Ġspecific . Ġ*/ ĊĠĠĠ Ġfun Ġadd On State Up Listener ( function To Call : ĠSteam VR _ Action _ Boolean _ State Up Handler , Ġinput Source : ĠSteam VR _ Input _ Sources ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsource Map ! ![ input Source ] !!. on State Up Ġ+= Ġfunction To Call ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠSto ps Ġexecuting Ġthe Ġfunction Ġsetup Ġby Ġthe Ġcorresponding ĠAdd Listener ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġfunction To Stop Calling : ĠThe Ġlocal Ġfunction Ġthat Ġyou 've Ġsetup Ġto Ġreceive Ġevents ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġinput Source : ĠThe Ġdevice Ġyou Ġwould Ġlike Ġto Ġget Ġdata Ġfrom . ĠAny Ġif Ġthe Ġaction Ġis Ġnot Ġdevice Ġspecific . Ġ*/ ĊĠĠĠ Ġfun Ġremove On State Up Listener ( function To Stop Calling : ĠSteam VR _ Action _ Boolean _ State Up Handler , Ġinput Source : ĠSteam VR _ Input _ Sources ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsource Map ! ![ input Source ] !!. on State Up Ġ-= Ġfunction To Stop Calling ĊĠĠĠ Ġ} Ċ Ċ // ĠĠĠ Ġvoid ĠI Serialization Callback Receiver . On Before Serialize () Ċ // ĠĠĠ Ġ{ Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġvoid ĠI Serialization Callback Receiver . On After Deserialize () Ċ // ĠĠĠ Ġ{ Ċ // ĠĠĠĠĠĠĠ ĠInit After Deserialize () Ċ // ĠĠĠ Ġ} Ċ } Ċ Ċ class ĠSteam VR _ Action _ Boolean _ Source _ Map Ġ: ĠSteam VR _ Action _ In _ Source _ Map < Steam VR _ Action _ Boolean _ Source >() Ċ Ċ class ĠSteam VR _ Action _ Boolean _ Source Ġ: ĠSteam VR _ Action _ In _ Source (), ĠI Steam VR _ Action _ Boolean Ġ{ ĊĊĠĠĠ Ġprotected Ġvar Ġaction DataSize Ġ= Ġ 0 ĊĊĠĠĠ Ġ/** ĠEvent Ġfires Ġwhen Ġthe Ġstate Ġof Ġthe Ġaction Ġchanges Ġfrom Ġfalse Ġto Ġtrue Ġ*/ ĊĠĠĠ Ġval Ġon State Down Ġ= ĠArrayList < Steam VR _ Action _ Boolean _ State Down Handler >() ĊĊĠĠĠ Ġ/** ĠEvent Ġfires Ġwhen Ġthe Ġstate Ġof Ġthe Ġaction Ġchanges Ġfrom Ġtrue Ġto Ġfalse Ġ*/ ĊĠĠĠ Ġval Ġon State Up Ġ= ĠArrayList < Steam VR _ Action _ Boolean _ State Up Handler >() ĊĊĠĠĠ Ġ/** ĠEvent Ġfires Ġwhen Ġthe Ġstate Ġof Ġthe Ġaction Ġis Ġtrue Ġand Ġthe Ġaction Ġgets Ġupdated Ġ*/ ĊĠĠĠ Ġval Ġon State Ġ= ĠArrayList < Steam VR _ Action _ Boolean _ State Handler >() ĊĊĠĠĠ Ġ/** ĠEvent Ġfires Ġwhen Ġthe Ġactive Ġstate Ġ( Action Set Ġactive Ġand Ġbinding Ġactive ) Ġchanges Ġ*/ ĊĠĠĠ Ġval Ġon Active Change Ġ= ĠArrayList < Steam VR _ Action _ Boolean _ Active Change Handler >() ĊĊĠĠĠ Ġ/** ĠEvent Ġfires Ġwhen Ġthe Ġactive Ġstate Ġof Ġthe Ġbinding Ġchanges Ġ*/ ĊĠĠĠ Ġval Ġon Active Binding Change Ġ= ĠArrayList < Steam VR _ Action _ Boolean _ Active Change Handler >() ĊĊĠĠĠ Ġ/** ĠEvent Ġfires Ġwhen Ġthe Ġstate Ġof Ġthe Ġaction Ġchanges Ġfrom Ġfalse Ġto Ġtrue Ġor Ġtrue Ġto Ġfalse Ġ*/ ĊĠĠĠ Ġval ĠonChange Ġ= ĠArrayList < Steam VR _ Action _ Boolean _ Change Handler >() ĊĊĠĠĠ Ġ/** ĠEvent Ġfires Ġwhen Ġthe Ġaction Ġis Ġupdated Ġ*/ ĊĠĠĠ Ġval ĠonUpdate Ġ= ĠArrayList < Steam VR _ Action _ Boolean _ Update Handler >() ĊĊĠĠĠ Ġ/** ĠThe Ġcurrent Ġvalue Ġof Ġthe Ġboolean Ġaction . ĠNote : ĠWill Ġonly Ġreturn Ġtrue Ġif Ġthe Ġaction Ġis Ġalso Ġactive . Ġ*/ ĊĠĠĠ Ġoverride Ġval Ġstate : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġactive Ġ&& Ġaction Data . state ĊĊĠĠĠ Ġ/** ĠTrue Ġwhen Ġthe Ġaction 's Ġstate Ġchanges Ġfrom Ġfalse Ġto Ġtrue . ĠNote : ĠWill Ġonly Ġreturn Ġtrue Ġif Ġthe Ġaction Ġis Ġalso Ġactive . ĊĠĠĠĠ Ġ* Ġ ĠWill Ġonly Ġreturn Ġtrue Ġif Ġthe Ġaction Ġis Ġalso Ġactive . Ġ*/ ĊĠĠĠ Ġoverride Ġval Ġstate Down : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġactive Ġ&& Ġaction Data . state Ġ&& Ġaction Data . changed ĊĊĠĠĠ Ġ/** ĠTrue Ġwhen Ġthe Ġaction 's Ġstate Ġchanges Ġfrom Ġtrue Ġto Ġfalse . ĠNote : ĠWill Ġonly Ġreturn Ġtrue Ġif Ġthe Ġaction Ġis Ġalso Ġactive . ĊĠĠĠĠ Ġ* Ġ ĠWill Ġonly Ġreturn Ġtrue Ġif Ġthe Ġaction Ġis Ġalso Ġactive . Ġ*/ ĊĠĠĠ Ġoverride Ġval Ġstate Up : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġactive Ġ&& Ġ! action Data . state Ġ&& Ġaction Data . changed ĊĊĠĠĠ Ġ/** ĠTrue Ġwhen Ġthe Ġaction 's Ġstate Ġchanged Ġduring Ġthe Ġmost Ġrecent Ġupdate . ĠNote : ĠWill Ġonly Ġreturn Ġtrue Ġif Ġthe Ġaction Ġis Ġalso Ġactive . ĊĠĠĠĠ Ġ* Ġ ĠAction Set Ġis Ġignored Ġsince Ġget Ġis Ġcoming Ġfrom Ġthe Ġnative Ġstruct . Ġ*/ ĊĠĠĠ Ġoverride Ġvar Ġchanged : ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġactive Ġ&& Ġaction Data . changed ĊĊĊĠĠĠ Ġ/** ĠThe Ġvalue Ġof Ġthe Ġaction 's Ġ' state ' Ġduring Ġthe Ġprevious Ġupdate ĊĠĠĠĠ Ġ* Ġ ĠAlways Ġreturns Ġthe Ġprevious Ġupdate Ġstate Ġ*/ ĊĠĠĠ Ġoverride Ġval Ġlast State : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġlast Action Data . state ĊĊĠĠĠ Ġ/** ĠThe Ġvalue Ġof Ġthe Ġaction 's Ġ' state Down ' Ġduring Ġthe Ġprevious Ġupdate ĊĠĠĠĠ Ġ* Ġ ĠAlways Ġreturns Ġthe Ġprevious Ġupdate Ġstate Ġ*/ ĊĠĠĠ Ġoverride Ġval Ġlast State Down : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġlast Action Data . state Ġ&& Ġlast Action Data . changed ĊĊĠĠĠ Ġ/** ĠThe Ġvalue Ġof Ġthe Ġaction 's Ġ' state Up ' Ġduring Ġthe Ġprevious Ġupdate ĊĠĠĠĠ Ġ* Ġ ĠAlways Ġreturns Ġthe Ġprevious Ġupdate Ġstate Ġ*/ ĊĠĠĠ Ġoverride Ġval Ġlast State Up : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ! last Action Data . state Ġ&& Ġlast Action Data . changed ĊĊĠĠĠ Ġ/** ĠThe Ġvalue Ġof Ġthe Ġaction 's Ġ' changed ' Ġduring Ġthe Ġprevious Ġupdate ĊĠĠĠĠ Ġ* Ġ ĠAlways Ġreturns Ġthe Ġprevious Ġupdate Ġstate . ĠSet Ġis Ġignored Ġsince Ġget Ġis Ġcoming Ġfrom Ġthe Ġnative Ġstruct . Ġ*/ ĊĠĠĠ Ġoverride Ġvar Ġlast Changed : ĠBoolean Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġlast Action Data . changed ĊĊĠĠĠ Ġ/** ĠThe Ġhandle Ġto Ġthe Ġorigin Ġof Ġthe Ġcomponent Ġthat Ġwas Ġused Ġto Ġupdate Ġthe Ġvalue Ġfor Ġthis Ġaction Ġ*/ ĊĠĠĠ Ġoverride Ġval Ġactive Origin : ĠVR Input Value Handle ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġif Ġ( active ) Ġaction Data . active Origin Ġelse Ġ 0 ĊĊĠĠĠ Ġ/** ĠThe Ġhandle Ġto Ġthe Ġorigin Ġof Ġthe Ġcomponent Ġthat Ġwas Ġused Ġto Ġupdate Ġthe Ġvalue Ġfor Ġthis Ġaction Ġ( for Ġthe Ġprevious Ġupdate ) Ġ*/ ĊĠĠĠ Ġoverride Ġval Ġlast Active Origin : ĠVR Input Value Handle ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġlast Action Data . active Origin ĊĊĠĠĠ Ġ/** Ġ@ Returns Ġtrue Ġif Ġthis Ġaction Ġis Ġbound Ġand Ġthe ĠAction Set Ġis Ġactive Ġ*/ ĊĠĠĠ Ġoverride Ġval Ġactive : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġactive Binding Ġ&& Ġaction . action Set !!. isActive ( input Source ) ĊĊĠĠĠ Ġ/** Ġ@ Returns Ġtrue Ġif Ġthe Ġaction Ġis Ġbound Ġ*/ ĊĠĠĠ Ġoverride Ġval Ġactive Binding : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġaction Data . active ĊĊĊĠĠĠ Ġ/** ĠReturns Ġtrue Ġif Ġthe Ġaction Ġwas Ġbound Ġand Ġthe ĠAction Set Ġwas Ġactive Ġduring Ġthe Ġprevious Ġupdate Ġ*/ ĊĠĠĠ Ġoverride Ġvar Ġlast Active : ĠBoolean Ġ= Ġtrue ĊĊĠĠĠ Ġ/** Ġ@ Returns Ġtrue Ġif Ġthe Ġaction Ġwas Ġbound Ġduring Ġthe Ġprevious Ġupdate Ġ*/ ĊĠĠĠ Ġoverride Ġval Ġlast Active Binding : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġlast Action Data . active ĊĊĊĠĠĠ Ġprotected Ġvar Ġaction Data Ġ= ĠInput Digital Action Data . calloc () ĊĠĠĠ Ġprotected Ġvar Ġlast Action Data Ġ= ĠInput Digital Action Data . calloc () ĊĊĠĠĠ Ġprotected Ġvar Ġboolean Action : ĠSteam VR _ Action _ Boolean ? Ġ= Ġnull ĊĊĠĠĠ Ġ/** Ġ[ Should Ġnot Ġbe Ġcalled Ġby Ġuser Ġcode ] ĠSets Ġup Ġthe Ġinternals Ġof Ġthe Ġaction Ġsource Ġbefore ĠSteam VR Ġhas Ġbeen Ġinitialized . Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġpre initialize ( wrapping Action : ĠSteam VR _ Action , Ġfor Input Source : ĠSteam VR _ Input _ Sources ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . pre initialize ( wrapping Action , Ġfor Input Source ) ĊĠĠĠĠĠĠĠ Ġboolean Action Ġ= Ġwrapping Action Ġas ĠSteam VR _ Action _ Boolean ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** Ġ[ Should Ġnot Ġbe Ġcalled Ġby Ġuser Ġcode ] ĊĠĠĠĠ Ġ* Ġ ĠInitializes Ġthe Ġhandle Ġfor Ġthe Ġinput Source , Ġthe Ġaction Ġdata Ġsize , Ġand Ġany Ġother Ġrelated ĠSteam VR Ġdata . Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġinitialize () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . initialize () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( action DataSize Ġ== Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction DataSize Ġ= ĠInput Digital Action Data . SIZE OF ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** Ġ[ Should Ġnot Ġbe Ġcalled Ġby Ġuser Ġcode ] ĊĠĠĠĠ Ġ* Ġ ĠUpdates Ġthe Ġdata Ġfor Ġthis Ġaction Ġand Ġthis Ġinput Ġsource . ĠSends Ġrelated Ġevents . Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġupdate Value () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġlast Action Data Ġ= Ġaction Data ĊĠĠĠĠĠĠĠ Ġlast Active Ġ= Ġactive ĊĊĠĠĠĠĠĠĠ Ġval Ġerr Ġ= Ġvr Input . get Digital Action Data ( action . handle , Ġaction Data , Ġinput Source Handle ) ĊĠĠĠĠĠĠĠ Ġif Ġ( err Ġ!= Ġvr Input . Error . None ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . println ("[ Steam VR ] ĠGet Digital Action Data Ġerror Ġ(${ action . fullPath }): Ġ$ err Ġhandle : Ġ${ action . handle }") ĊĊĠĠĠĠĠĠĠ Ġif Ġ( changed ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchanged Time Ġ= ĠTime . realtime Since Startup Ġ+ Ġaction Data . update Time ĊĊĠĠĠĠĠĠĠ Ġupdate Time Ġ= ĠTime . realtime Since Startup ĊĊĠĠĠĠĠĠĠ Ġif Ġ( active ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( state Down ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon State Down . forEach Ġ{ Ġit ( boolean Action , Ġinput Source ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( state Up ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon State Up . forEach Ġ{ Ġit ( boolean Action , Ġinput Source ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( state ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon State . forEach Ġ{ Ġit ( boolean Action , Ġinput Source ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( changed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonChange . forEach Ġ{ Ġit ( boolean Action , Ġinput Source , Ġstate ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠonUpdate . forEach Ġ{ Ġit ( boolean Action , Ġinput Source , Ġstate ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( last Active Binding Ġ!= Ġactive Binding ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Active Binding Change . forEach Ġ{ Ġit ( boolean Action , Ġinput Source , Ġactive Binding ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( last Active Ġ!= Ġactive ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Active Change . forEach Ġ{ Ġit ( boolean Action , Ġinput Source , Ġactive Binding ) Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ interface ĠI Steam VR _ Action _ Boolean Ġ: ĠI Steam VR _ Action _ In _ Source Ġ{ ĊĊĠĠĠ Ġ/** ĠThe Ġcurrent Ġvalue Ġof Ġthe Ġboolean Ġaction . ĠNote : ĠWill Ġonly Ġreturn Ġtrue Ġif Ġthe Ġaction Ġis Ġalso Ġactive . Ġ*/ ĊĠĠĠ Ġval Ġstate : ĠBoolean ĊĊĠĠĠ Ġ/** ĠTrue Ġwhen Ġthe Ġaction 's Ġstate Ġchanges Ġfrom Ġfalse Ġto Ġtrue . ĠNote : ĠWill Ġonly Ġreturn Ġtrue Ġif Ġthe Ġaction Ġis Ġalso Ġactive . Ġ*/ ĊĠĠĠ Ġval Ġstate Down : ĠBoolean ĊĊĠĠĠ Ġ/** ĠTrue Ġwhen Ġthe Ġaction 's Ġstate Ġchanges Ġfrom Ġtrue Ġto Ġfalse . ĠNote : ĠWill Ġonly Ġreturn Ġtrue Ġif Ġthe Ġaction Ġis Ġalso Ġactive . Ġ*/ ĊĠĠĠ Ġval Ġstate Up : ĠBoolean ĊĊĠĠĠ Ġ/** ĠThe Ġvalue Ġof Ġthe Ġaction 's Ġ' state ' Ġduring Ġthe Ġprevious Ġupdate ĊĠĠĠĠ Ġ* Ġ ĠAlways Ġreturns Ġthe Ġprevious Ġupdate Ġstate </ remarks > Ġ*/ ĊĠĠĠ Ġval Ġlast State : ĠBoolean ĊĊĠĠĠ Ġ/** ĠThe Ġvalue Ġof Ġthe Ġaction 's Ġ' state Down ' Ġduring Ġthe Ġprevious Ġupdate ĊĠĠĠĠ Ġ* Ġ ĠAlways Ġreturns Ġthe Ġprevious Ġupdate Ġstate Ġ*/ ĊĠĠĠ Ġval Ġlast State Down : ĠBoolean ĊĊĠĠĠ Ġ/** ĠThe Ġvalue Ġof Ġthe Ġaction 's Ġ' state Up ' Ġduring Ġthe Ġprevious Ġupdate ĊĠĠĠĠ Ġ* Ġ ĠAlways Ġreturns Ġthe Ġprevious Ġupdate Ġstate Ġ*/ ĊĠĠĠ Ġval Ġlast State Up : ĠBoolean Ċ }