Sfoglia il codice sorgente

rename wmrvr to general xrcontroller

Nikolay Suslov 4 anni fa
parent
commit
72d78cb9c6

+ 27 - 16
public/defaults/proxy/vwf.example.com/aframe/ascene.js

@@ -26,22 +26,33 @@ this.clientWatch = function () {
                         //console.log(node.id + 'is here!');
                     } else {
                         //console.log(node.id + " needed to delete!");
-                        self.children.delete(self.children[node.id]);
-                        //'gearvr-'
-                        let controllerVR = self.children['gearvr-' + node.id.slice(7)];
-                        if (controllerVR) {
-                            self.children.delete(controllerVR);
-                        }
-
-                        let wmrvR = self.children['wmrvr-right-' + node.id.slice(7)];
-                        if (wmrvR) {
-                            self.children.delete(wmrvR);
-                        }
-
-                        let wmrvL = self.children['wmrvr-left-' + node.id.slice(7)];
-                        if (wmrvL) {
-                            self.children.delete(wmrvL);
-                        }
+                        let idToDelete = node.id.slice(7);
+                        let nodes = self.children.filter(el=>
+                            (el.id.includes(idToDelete) && 
+                            (   el.id.includes('avatar') ||
+                                el.id.includes('xrcontroller') ||
+                                el.id.includes('gearvr')))
+                            );
+
+                        nodes.forEach(el => {
+                            self.children.delete(self.children[el.id])
+                        })
+                        // self.children.delete(self.children[node.id]);
+                        // //'gearvr-'
+                        // let controllerVR = self.children['gearvr-' + node.id.slice(7)];
+                        // if (controllerVR) {
+                        //     self.children.delete(controllerVR);
+                        // }
+
+                        // let wmrvR = self.children['wmrvr-right-' + node.id.slice(7)];
+                        // if (wmrvR) {
+                        //     self.children.delete(wmrvR);
+                        // }
+
+                        // let wmrvL = self.children['wmrvr-left-' + node.id.slice(7)];
+                        // if (wmrvL) {
+                        //     self.children.delete(wmrvL);
+                        // }
 
                     }
                 }

+ 146 - 0
public/defaults/proxy/vwf.example.com/aframe/xrcontroller.js

@@ -0,0 +1,146 @@
+this.simpleDef = {
+    "extends": "http://vwf.example.com/aframe/abox.vwf",
+    children: {
+        "material": {
+            "extends": "http://vwf.example.com/aframe/aMaterialComponent.vwf",
+            "type": "component",
+            "properties":{
+                "color": "white"
+            }
+        }
+    },
+    "properties": {
+        "position": "0 0 0",
+        "height": 0.01,
+        "width": 0.01,
+        "depth": 1
+    },
+    children: {
+        "pointer": {
+            "extends": "http://vwf.example.com/aframe/abox.vwf",
+            "properties": {
+                "position": "0 0 -0.7",
+                "height": 0.1,
+                "width": 0.1,
+                "depth": 0.1
+            },
+            children: {
+                "material": {
+                    "extends": "http://vwf.example.com/aframe/aMaterialComponent.vwf",
+                    "type": "component",
+                    "properties":{
+                        "color": "green"
+                    }
+                }
+            }
+        }
+        // "interpolation":
+        //     {
+        //         "extends": "http://vwf.example.com/aframe/interpolation-component.vwf",
+        //         "type": "component",
+        //         "properties": {
+        //             "enabled": true
+        //         }
+        //     }
+    }
+}
+
+this.modelDef = {
+    "extends": "http://vwf.example.com/aframe/agltfmodel.vwf",
+    "properties": {
+        "src": "#xrcontroller",
+        "position": "0 0 0",
+        "rotation": "0 180 0"
+    },
+    "children": {
+        "animation-mixer": {
+            "extends": "http://vwf.example.com/aframe/anim-mixer-component.vwf",
+            "properties": {
+                "clip": "*",
+                "duration": 1
+            }
+        }
+
+    }
+}
+
+this.createController = function (modelSrc) {
+
+    let controllerDef = this.simpleDef;
+
+    var newNode = {
+        "extends": "http://vwf.example.com/aframe/aentity.vwf",
+        "properties": {
+            "position": [0, 0, -0.4]
+        },
+        children: {
+            "controller": controllerDef
+        }
+    }
+
+    if (modelSrc) {
+
+        let controllerDef = this.modelDef;
+        controllerDef.properties.src = modelSrc;
+        newNode.children.controller = controllerDef;
+    }
+
+
+    let interpolation =  {
+        "extends": "http://vwf.example.com/aframe/interpolation-component.vwf",
+        "type": "component",
+        "properties": {
+            "enabled": true
+        }
+    }
+
+
+    this.children.create( "interpolation", interpolation );
+    this.children.create("handVRNode", newNode);
+
+}
+
+
+this.updateVRControl = function(position, rotation){
+
+    this.rotation = rotation;
+    this.position = position;
+
+}
+
+
+this.createSimpleController = function(){
+       if (this.handVRNode.controller) {
+        this.handVRNode.children.delete(this.handVRNode.controller);
+
+        let controllerDef = this.simpleDef;
+
+        this.handVRNode.children.create("controller", controllerDef);
+
+       }
+}
+
+this.createAvatarFromGLTF = function(modelSrc){
+
+    if (this.handVRNode.controller) {
+        this.handVRNode.children.delete(this.handVRNode.controller);
+        
+        let controllerDef = this.modelDef;
+        controllerDef.properties.src = modelSrc;
+
+        this.handVRNode.children.create("controller", controllerDef);
+
+       }
+}
+
+this.initialize = function() {
+   // this.future(0).update();
+}
+
+this.triggerdown = function() {
+    this.handVRNode.controller.pointer.material.color = 'red'
+ }
+
+ this.triggerup = function() {
+    this.handVRNode.controller.pointer.material.color = 'green'
+ }

+ 1 - 1
public/defaults/proxy/vwf.example.com/aframe/xrcontroller.vwf.yaml

@@ -1,4 +1,4 @@
-# wmrvr controller
+# xrcontroller controller
 # Copyright 2017 Krestianstvo.org project
 ---
 extends: http://vwf.example.com/aframe/aentity.vwf

+ 26 - 0
public/vwf/model/aframe/addon/aframe-components.js

@@ -517,6 +517,32 @@ AFRAME.registerComponent('gearvrcontrol', {
     // }
 })
 
+AFRAME.registerComponent('xrcontroller', {
+
+    schema: {
+        hand: { default: 'right' }
+    },
+
+    update: function (old) {
+        this.hand = this.data.hand;
+    },
+
+    init: function () {
+        var self = this;
+        this.hand = this.data.hand;
+        this.controllerID = 'xrcontroller-' + this.hand + '-' + vwf_view.kernel.moniker();
+        //this.gearel = document.querySelector('#gearvrcontrol');
+        this.el.addEventListener('triggerdown', function (event) { //pointdown 'triggerdown'
+            vwf_view.kernel.callMethod(self.controllerID, "triggerdown", []);
+        });
+        this.el.addEventListener('triggerup', function (event) { //pointup 'triggerup'
+            vwf_view.kernel.callMethod(self.controllerID, "triggerup", []);
+        });
+    },
+
+    // tick: function (t) {
+    // }
+})
 
 AFRAME.registerComponent('wmrvrcontrol', {
 

+ 23 - 28
public/vwf/view/aframe.js

@@ -100,20 +100,20 @@ define(["module", "vwf/view"], function (module, view) {
                             createGearVRController.call(self, childID, nodeName);
                         }
                     
-                        console.log("CREATE WMR RIGHT HERE!!");
+                        console.log("CREATE XRController RIGHT HERE!!");
                        // if (!AFRAME.utils.device.isMobileVR()) {
                             if (self.sixDoFMobile || self.sixDoFDesktop || _app.config.d6DoF  ) {
 
-                                let nodeRight = 'wmrvr-right-' + self.kernel.moniker();
-                                createWMRVRControls('right');
-                                createWMRVR.call(this, childID, nodeRight);
+                                let nodeRight = 'xrcontroller-right-' + self.kernel.moniker();
+                                createXRControls('right');
+                                createXR.call(this, childID, nodeRight);
 
-                                console.log("CREATE WMR LEFT HERE!!");
+                                console.log("CREATE XRController LEFT HERE!!");
                        // if (!AFRAME.utils.device.isMobileVR()) {
   
-                                let nodeLeft = 'wmrvr-left-' + self.kernel.moniker();
-                                createWMRVRControls('left');
-                                createWMRVR.call(this, childID, nodeLeft);
+                                let nodeLeft = 'xrcontroller-left-' + self.kernel.moniker();
+                                createXRControls('left');
+                                createXR.call(this, childID, nodeLeft);
                             }
                        // }
                     
@@ -475,8 +475,8 @@ define(["module", "vwf/view"], function (module, view) {
                         updateHandControllerVR('gearvr-', '#gearvrcontrol');
 
                 if(this.sixDoF ) {
-                        updateHandControllerVR('wmrvr-right-', '#wmrvrcontrolright');
-                        updateHandControllerVR('wmrvr-left-', '#wmrvrcontrolleft');
+                        updateHandControllerVR('xrcontroller-right-', '#xrcontrollerright');
+                        updateHandControllerVR('xrcontroller-left-', '#xrcontrollerleft');
                 }
             }
 
@@ -915,12 +915,12 @@ define(["module", "vwf/view"], function (module, view) {
 
     }
 
-    function createWMRVR(nodeID, nodeName) {
+    function createXR(nodeID, nodeName) {
 
         var newNode = {
             "id": nodeName,
             "uri": nodeName,
-            "extends": "http://vwf.example.com/aframe/wmrvrcontroller.vwf",
+            "extends": "http://vwf.example.com/aframe/xrcontroller.vwf",
             "properties": {
             }
         }
@@ -1075,35 +1075,31 @@ define(["module", "vwf/view"], function (module, view) {
 
     function createGearVRControls() {
 
-        let sceneEl = document.querySelector('a-scene');
-
         let avatarControl = document.querySelector('#avatarControlParent');
 
-        let gearvr = document.createElement('a-entity');
-        gearvr.setAttribute('id', 'gearvrcontrol');
+        let el = document.createElement('a-entity');
+        el.setAttribute('id', 'gearvrcontrol');
 
-        gearvr.setAttribute('gearvr-controls', {
+        el.setAttribute('gearvr-controls', {
             'hand': 'right',
             'model': true
         });
     
         // gearvr.setAttribute('gearvr-controls', 'hand', 'right');
 
-        gearvr.setAttribute('gearvrcontrol', {});
-        avatarControl.appendChild(gearvr);
+        el.setAttribute('gearvrcontrol', {});
+        avatarControl.appendChild(el);
 
     }
 
-    function createWMRVRControls(hand) {
-
-        let sceneEl = document.querySelector('a-scene');
+    function createXRControls(hand) {
 
         let avatarControl = document.querySelector('#avatarControlParent');
 
-        let wmrvr = document.createElement('a-entity');
-        wmrvr.setAttribute('id', 'wmrvrcontrol' + hand);
+        let el = document.createElement('a-entity');
+        el.setAttribute('id', 'xrcontroller' + hand);
 
-        wmrvr.setAttribute('hand-controls', {
+        el.setAttribute('hand-controls', {
             'hand': hand,
             'handModelStyle': 'lowPoly',
             'color': '#ffcccc'
@@ -1112,9 +1108,8 @@ define(["module", "vwf/view"], function (module, view) {
         // wmrvr.setAttribute('windows-motion-controls', '');
         // wmrvr.setAttribute('windows-motion-controls', 'hand', hand);
 
-
-        wmrvr.setAttribute('wmrvrcontrol', { 'hand': hand });
-        avatarControl.appendChild(wmrvr);
+        el.setAttribute('xrcontroller', { 'hand': hand });
+        avatarControl.appendChild(el);
     }