repo: janusweb
action: commit
revision: 
path_from: 
revision_from: 7d7a4644fbe5bcd69c13f4a038356e7a12fd573a:
path_to: 
revision_to: 
git.thebackupbox.net
janusweb
git clone git://git.thebackupbox.net/janusweb
commit 7d7a4644fbe5bcd69c13f4a038356e7a12fd573a
Author: James Baicoianu 
Date:   Wed May 8 12:21:22 2019 -0700

    .addControlContext() / .activateControlContext() / .deactivateControlContext()

diff --git a/scripts/janusbase.js b/scripts/janusbase.js
index 33b5276072f1818b611100046804afcc8603d077..
index ..3e061e956164ddd963059ab50a0d762487ee3733 100644
--- a/scripts/janusbase.js
+++ b/scripts/janusbase.js
@@ -900,6 +900,30 @@ console.log('clone', props);
       });
 */
     }
+    this.addControlContext = function(name, defs) {
+      let legacydefs = {};
+      let threshold_activate = .95,
+          threshold_deactivate = .05;
+      // 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);
+          }
+        }];
+      }
+      this.engine.systems.controls.addContext(name, legacydefs);
+    }
+    this.activateControlContext = function(name) {
+      this.engine.systems.controls.activateContext(name, this);
+    }
+    this.deactivateControlContext = function(name) {
+      this.engine.systems.controls.deactivateContext(name);
+    }
     this.traverseObjects = function(callback, root) {
       if (!root) root = this.objects['3d'];
       callback(root);

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