repo: janusweb
action: commit
revision: 
path_from: 
revision_from: c00d631fd465feed03946060fc25e1df39dd98c4:
path_to: 
revision_to: 
git.thebackupbox.net
janusweb
git clone git://git.thebackupbox.net/janusweb
commit c00d631fd465feed03946060fc25e1df39dd98c4
Author: James Baicoianu 
Date:   Fri Jun 26 08:27:31 2020 -0700

    Control mapping tweaks

diff --git a/scripts/janusbase.js b/scripts/janusbase.js
index bb7dea96e9f072daf73f495c619d3b1bb143c094..
index ..319f22f76e240b7270cd4afe12106f3cffa8f526 100644
--- a/scripts/janusbase.js
+++ b/scripts/janusbase.js
@@ -1038,21 +1038,27 @@ console.log('clone', props);
     }
     this.addControlContext = function(name, defs) {
       let legacydefs = {};
-      let threshold_activate = .95,
+      let threshold_activate = .9,
           threshold_deactivate = .05;
+      let active = {};
       // TODO - instead of this compatibility layer, we should just support this object-style syntax and new events in the engine control system directly
       for (let k in defs) {
         let def = defs[k];
         legacydefs[k] = [def.defaultbindings, (ev) => {
           let absvalue = Math.abs(ev.value);
-          if (absvalue > threshold_activate && def.onactivate) {
-            def.onactivate(ev);
-          } else if (absvalue < threshold_deactivate && def.ondeactivate) {
-            def.ondeactivate(ev);
+          if (!active[k] && absvalue > threshold_activate) {
+            active[k] = true;
+            if (def.onactivate) def.onactivate(ev);
+          } else if (active[k] && absvalue < threshold_deactivate) {
+            active[k] = false;
+            if (def.ondeactivate) def.ondeactivate(ev);
+          }
+          if (def.onchange) {
+            def.onchange(ev);
           }
         }];
       }
-      this.engine.systems.controls.addContext(name, legacydefs);
+      return this.engine.systems.controls.addContext(name, legacydefs);
     }
     this.activateControlContext = function(name) {
       this.engine.systems.controls.activateContext(name, this);

-----END OF PAGE-----