Raanan Weber il y a 8 ans
Parent
commit
bcdd9d048a
1 fichiers modifiés avec 12 ajouts et 4 suppressions
  1. 12 4
      src/Tools/babylon.extendedGamepad.ts

+ 12 - 4
src/Tools/babylon.extendedGamepad.ts

@@ -89,7 +89,7 @@ module BABYLON {
 
 
     export abstract class WebVRController extends PoseEnabledController {
     export abstract class WebVRController extends PoseEnabledController {
 
 
-        public onTriggerChangedObservable = new Observable<{ state: ExtendedGamepadButton, changes: GamepadButtonChanges }>();
+        public onTriggerStateChangedObservable = new Observable<{ state: ExtendedGamepadButton, changes: GamepadButtonChanges }>();
 
 
         public onMainButtonStateChangedObservable = new Observable<{ state: ExtendedGamepadButton, changes: GamepadButtonChanges }>();
         public onMainButtonStateChangedObservable = new Observable<{ state: ExtendedGamepadButton, changes: GamepadButtonChanges }>();
 
 
@@ -138,6 +138,7 @@ module BABYLON {
                     touched: newState.touched,
                     touched: newState.touched,
                     value: newState.value
                     value: newState.value
                 }
                 }
+                return;
             }
             }
             this._checkChanges(newState, currentState);
             this._checkChanges(newState, currentState);
             if (this._changes.changed) {
             if (this._changes.changed) {
@@ -152,7 +153,12 @@ module BABYLON {
         }
         }
 
 
         // avoid GC, store state in a tmp object
         // avoid GC, store state in a tmp object
-        private _changes: GamepadButtonChanges;
+        private _changes: GamepadButtonChanges = {
+            pressChanged: false,
+            touchChanged: false,
+            valueChanged: false,
+            changed: false
+        };
 
 
         private _checkChanges(newState: ExtendedGamepadButton, currentState: ExtendedGamepadButton) {
         private _checkChanges(newState: ExtendedGamepadButton, currentState: ExtendedGamepadButton) {
             this._changes.pressChanged = newState.pressed !== currentState.pressed;
             this._changes.pressChanged = newState.pressed !== currentState.pressed;
@@ -220,8 +226,9 @@ module BABYLON {
             switch (buttonIdx) {
             switch (buttonIdx) {
                 case 0:
                 case 0:
                     this.onPadStateChangedObservable.notifyObservers(notifyObject);
                     this.onPadStateChangedObservable.notifyObservers(notifyObject);
+                    return;
                 case 1: // index trigger
                 case 1: // index trigger
-                    this.onTriggerChangedObservable.notifyObservers(notifyObject);
+                    this.onTriggerStateChangedObservable.notifyObservers(notifyObject);
                     return;
                     return;
                 case 2:  // secondary trigger
                 case 2:  // secondary trigger
                     this.onSecondaryTriggerChangedObservable.notifyObservers(notifyObject);
                     this.onSecondaryTriggerChangedObservable.notifyObservers(notifyObject);
@@ -272,8 +279,9 @@ module BABYLON {
             switch (buttonIdx) {
             switch (buttonIdx) {
                 case 0:
                 case 0:
                     this.onPadStateChangedObservable.notifyObservers(notifyObject);
                     this.onPadStateChangedObservable.notifyObservers(notifyObject);
+                    return;
                 case 1: // index trigger
                 case 1: // index trigger
-                    this.onTriggerChangedObservable.notifyObservers(notifyObject);
+                    this.onTriggerStateChangedObservable.notifyObservers(notifyObject);
                     return;
                     return;
                 case 2:  // left AND right button
                 case 2:  // left AND right button
                     this.onMainButtonStateChangedObservable.notifyObservers(notifyObject);
                     this.onMainButtonStateChangedObservable.notifyObservers(notifyObject);