Nikolay Suslov 6 years ago
parent
commit
bc3dd93390

+ 76 - 38
public/defaults/proxy/vwf.example.com/aframe/aentity.js

@@ -1,5 +1,5 @@
-this.getChildByName = function(name){
-    let nodes = this.children.filter(el=>el.displayName == name);
+this.getChildByName = function (name) {
+    let nodes = this.children.filter(el => el.displayName == name);
     return nodes[0]
 }
 
@@ -11,14 +11,14 @@ this.setGizmoMode = function (mode) {
 
 this.showCloseGizmo = function () {
     let gizmoNode =
+    {
+        "extends": "http://vwf.example.com/aframe/gizmoComponent.vwf",
+        "type": "component",
+        "properties":
         {
-            "extends": "http://vwf.example.com/aframe/gizmoComponent.vwf",
-            "type": "component",
-            "properties":
-            {
-                "mode": "translate"
-            }
+            "mode": "translate"
         }
+    }
     if (this.properties.edit) {
         this.children.create("gizmo", gizmoNode);
     } else {
@@ -28,19 +28,20 @@ this.showCloseGizmo = function () {
     }
 }
 
-  // Parse a parameter as a translation specification.
-  this.translationFromValue = function( propertyValue ) {
+// Parse a parameter as a translation specification.
+this.translationFromValue = function (propertyValue) {
 
-      var value = goog.vec.Vec3.create();
+    var value = goog.vec.Vec3.create();
     if (propertyValue.hasOwnProperty('x')) {
-        value = goog.vec.Vec3.createFromValues(propertyValue.x, propertyValue.y,  propertyValue.z)
-    } 
-    else if (Array.isArray(propertyValue) || propertyValue instanceof Float32Array ) {
-        value = goog.vec.Vec3.createFromArray(propertyValue);}
+        value = goog.vec.Vec3.createFromValues(propertyValue.x, propertyValue.y, propertyValue.z)
+    }
+    else if (Array.isArray(propertyValue) || propertyValue instanceof Float32Array) {
+        value = goog.vec.Vec3.createFromArray(propertyValue);
+    }
     else if (typeof propertyValue === 'string') {
         let val = AFRAME.utils.coordinates.parse(propertyValue);
         value = goog.vec.Vec3.createFromValues(val.x, val.y, val.z)
-        }
+    }
 
     return value
 
@@ -48,36 +49,73 @@ this.showCloseGizmo = function () {
     // return value && value.length >= 3 ?
     //   value :
     //   goog.vec.Vec3.create();
-  };
+};
+
+this.sendOSC = function (msg) {
+    //sending OSC msg
+
+    vwf_view.kernel.fireEvent(this.id, "sendOSC", [msg]);
 
-  this.sendOSC = function(msg){
-        //sending OSC msg
+    // if (_OSCManager.port !== null) {
+    //     _OSCManager.port.send(msg);
+    // }
 
-        vwf_view.kernel.fireEvent(this.id, "sendOSC", [msg]);
+    //on driver side
 
-        // if (_OSCManager.port !== null) {
-        //     _OSCManager.port.send(msg);
-        // }
-    
-        //on driver side
-    
-  }
+}
 
-  this.intersectEvent = function(){
+this.intersectEvent = function () {
     //this.intersectEventMethod();
-   }
-   this.clearIntersectEvent = function(){
+}
+this.clearIntersectEvent = function () {
     //this.clearIntersectEventMethod();
-   }
+}
+
+this.intersectEventMethod = function () {
+
+    //intersect method
+}
+
+
+this.clearIntersectEventMethod = function () {
 
-  this.intersectEventMethod = function(){
+    //clearIntersect method
+
+}
+
+this.setOwner = function (param) {
+
+    var clients = this.find("doc('http://vwf.example.com/clients.vwf')")[0];
+
+    if (clients !== undefined) {
+        //console.log(clients.children);
+
+        let clientsArray = [];
+
+        clients.children.forEach(function (element) {
+            clientsArray.push(element.name);
+
+        });
+
+        //console.log(clientsArray);
+
+        if (this.ownedBy) {
+            if (clientsArray.includes(this.ownedBy)) {
+                console.log(this.id + " already owned by: " + param);
+            } else {
+                this.ownedBy = param;
+                //console.log(this.id + ' set owner to: ' + param);
+            }
+
+
+        } else {
+            this.ownedBy = param;
+            //console.log(this.id + ' set owner to: ' + param);
+        }
+
+    }
 
-        //intersect method
-  }
 
 
-    this.clearIntersectEventMethod = function(){
-        
-         //clearIntersect method
 
-    }
+}

+ 4 - 0
public/defaults/proxy/vwf.example.com/aframe/aentity.vwf.yaml

@@ -71,6 +71,10 @@ methods:
     parameters:
       - propertyValue
   getChildByName:
+    parameters:
       - name
+  setOwner:
+    parameters:
+      - propertyValue
 scripts:
   - source: "http://vwf.example.com/aframe/aentity.js"

+ 3 - 2
public/defaults/worlds/aframe/index.vwf.yaml

@@ -49,6 +49,7 @@ children:
         extends: http://vwf.example.com/aframe/aMaterialComponent.vwf
         properties:
           color: "#3c7249"
+          transparent: true
       raycaster-listener:
         extends: http://vwf.example.com/aframe/app-raycaster-listener-component.vwf
         type: "component"
@@ -69,12 +70,12 @@ children:
       intersectEventMethod:
         body: |
           if (this.clickable) {
-          this.rotation = [0, -90, 0]
+          this.material.opacity = 0.7
             }
       clearIntersectEventMethod:
         body: |
           if (this.clickable) {
-          this.rotation = [0, -30, 0]
+          this.material.opacity = 1.0
             }
       generateColor:
         body: |

+ 6 - 5
public/defaults/worlds/aframe2/index.vwf.yaml

@@ -95,6 +95,7 @@ children:
         extends: http://vwf.example.com/aframe/aMaterialComponent.vwf
         properties:
           color: "#3c7249"
+          transparent: true
       raycaster-listener:
         extends: http://vwf.example.com/aframe/app-raycaster-listener-component.vwf
         type: "component"
@@ -118,12 +119,12 @@ children:
       intersectEventMethod:
         body: |
           if (this.clickable) {
-          this.rotation = [0, -90, 0]
+          this.material.opacity = 0.7
             }
       clearIntersectEventMethod:
         body: |
           if (this.clickable) {
-          this.rotation = [0, -30, 0]
+          this.material.opacity = 1.0
             }
       generateColor:
         body: |
@@ -159,9 +160,9 @@ children:
             type: "component"
             properties:
               recursive: false
-              interval: 1000
-              far: 3
-              objects: ".intersectable"      
+              interval: 10
+              far: 2
+              objects: ".intersectable"  
           material:
             extends: http://vwf.example.com/aframe/aMaterialComponent.vwf
             properties:

+ 19 - 20
public/vwf/model/aframe.js

@@ -75,7 +75,22 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
                                     aframeObject.setAttribute(propertyName, AFRAME.utils.coordinates.parse(propertyValue))
                                 }
                     
-                        }
+                        },
+                   setFromValue: function ( propertyValue ) {
+
+                            var value = goog.vec.Vec3.create();
+                          if (propertyValue.hasOwnProperty('x')) {
+                              value = goog.vec.Vec3.createFromValues(propertyValue.x, propertyValue.y,  propertyValue.z)
+                          } 
+                          else if (Array.isArray(propertyValue) || propertyValue instanceof Float32Array ) {
+                              value = goog.vec.Vec3.createFromArray(propertyValue);}
+                          else if (typeof propertyValue === 'string') {
+                              let val = AFRAME.utils.coordinates.parse(propertyValue);
+                              value = goog.vec.Vec3.createFromValues(val.x, val.y, val.z)
+                              }
+                      
+                          return value
+                            }
             };
 
             this.state.kernel = this.kernel.kernel.kernel;
@@ -361,7 +376,7 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 
                         case "position":
 
-                        var position = setFromValue(propertyValue || []); //goog.vec.Vec3.createFromArray( propertyValue || [] );
+                        var position = this.state.setFromValue(propertyValue || []); //goog.vec.Vec3.createFromArray( propertyValue || [] );
                             node.transform.position = goog.vec.Vec3.clone(position);
                             //value = propertyValue;
                             node.transform.storedPositionDirty = true; 
@@ -371,7 +386,7 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 
                         case "rotation":
 
-                            var rotation = setFromValue(propertyValue || []); //goog.vec.Vec3.createFromArray( propertyValue || [] );
+                            var rotation = this.state.setFromValue(propertyValue || []); //goog.vec.Vec3.createFromArray( propertyValue || [] );
                             node.transform.rotation = goog.vec.Vec3.clone(rotation);
                             //value = propertyValue;
                             node.transform.storedRotationDirty = true; 
@@ -381,7 +396,7 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 
                         case "scale":
 
-                        var scale = setFromValue(propertyValue || []); //goog.vec.Vec3.createFromArray( propertyValue || [] );
+                        var scale = this.state.setFromValue(propertyValue || []); //goog.vec.Vec3.createFromArray( propertyValue || [] );
                         node.transform.scale = goog.vec.Vec3.clone(scale);
                         //value = propertyValue;
                         node.transform.storedScaleDirty = true; 
@@ -1396,22 +1411,6 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
     }
 
 
-    function setFromValue ( propertyValue ) {
-
-        var value = goog.vec.Vec3.create();
-      if (propertyValue.hasOwnProperty('x')) {
-          value = goog.vec.Vec3.createFromValues(propertyValue.x, propertyValue.y,  propertyValue.z)
-      } 
-      else if (Array.isArray(propertyValue) || propertyValue instanceof Float32Array ) {
-          value = goog.vec.Vec3.createFromArray(propertyValue);}
-      else if (typeof propertyValue === 'string') {
-          let val = AFRAME.utils.coordinates.parse(propertyValue);
-          value = goog.vec.Vec3.createFromValues(val.x, val.y, val.z)
-          }
-  
-      return value
-        }
-
     function updateStoredTransform( node ) {
         
         if ( node && node.aframeObj) {

+ 46 - 10
public/vwf/view/aframe.js

@@ -68,6 +68,7 @@ define(["module", "vwf/view"], function (module, view) {
                   prepairAvatar.then(res=>{
                    // console.log(res);
                     createAvatar.call(self, childID);
+                    postLoadAction.call(self, childID);
 
                     if (this.gearvr == true) {
                         console.log("CREATE GEARVR HERE!!");
@@ -100,7 +101,6 @@ define(["module", "vwf/view"], function (module, view) {
                   })
                 // this.state.appInitialized  = true;
 
-
                 document.body.appendChild(scene); //append is not working in Edge browser
 
             }
@@ -160,6 +160,26 @@ define(["module", "vwf/view"], function (module, view) {
             }
 
 
+            if (node.prototypes.includes("http://vwf.example.com/aframe/aentity.vwf")) {
+                
+            var clientThatSatProperty = self.kernel.client();
+            var me = self.kernel.moniker();
+           
+
+            // If the transform property was initially updated by this view....
+            if ( clientThatSatProperty == me) {
+                self.kernel.callMethod(childID,"setOwner",[me]);
+            } 
+        }
+
+
+            // if (propertyName == 'ownedBy')
+            // {
+            //     // if (!node.aframeObj.el.getAttribute('ownedBy')){
+
+            //     // }
+            // }
+
         },
 
         createdProperty: function (nodeId, propertyName, propertyValue) {
@@ -193,11 +213,6 @@ define(["module", "vwf/view"], function (module, view) {
                 return;
             }
 
-            if (propertyName == 'ownedBy')
-            {
-                //debugger;
-            }
-
             if (propertyName == 'position')
             {
                 receiveModelTransformChanges( nodeId, 'position', propertyValue );
@@ -376,6 +391,16 @@ define(["module", "vwf/view"], function (module, view) {
 
             //var avatarID = vwf_view.kernel.find("", avatarName)
 
+            if (eventName == "postLoadAction") {
+
+                Object.entries(self.state.nodes).forEach(el => {
+                    if (el[1].prototypes.includes("http://vwf.example.com/aframe/aentity.vwf")) {
+                        vwf_view.kernel.callMethod(el[0],"setOwner",[self.kernel.moniker()]);
+                    }
+
+                    });
+             }
+
             var avatarName = 'avatar-' + self.kernel.moniker();
 
             if (eventName == "createAvatar") {
@@ -421,6 +446,10 @@ define(["module", "vwf/view"], function (module, view) {
                         vwf_view.kernel.callMethod(avatarName, "createAvatarBody", []);
                         //"/../assets/avatars/male/avatar1.gltf"
                     }
+
+                    //
+                    
+
                 }
 
 
@@ -617,11 +646,13 @@ define(["module", "vwf/view"], function (module, view) {
         } else {
            // adoptTransform( node, transformMatrix );
 
-           if(propertyName == 'position') {
-            let pos = goog.vec.Vec3.clone( propertyValue );
+           let prop = self.state.setFromValue(propertyValue); 
+
+           if(propertyName == 'position') {  
+            let pos = goog.vec.Vec3.clone( prop );
             node.aframeObj.object3D.position.set(pos[0], pos[1], pos[2]);
            } else if (propertyName == 'rotation') {
-            let rot = goog.vec.Vec3.clone( propertyValue );
+            let rot = goog.vec.Vec3.clone( prop );
 
             node.aframeObj.object3D.rotation.set(
                 THREE.Math.degToRad(rot[0]),
@@ -630,7 +661,7 @@ define(["module", "vwf/view"], function (module, view) {
             )
             //node.aframeObj.object3D.rotation.set(rot[0], rot[1], rot[2]);
            } else if (propertyName == 'scale') {
-            let scale = goog.vec.Vec3.clone( propertyValue );
+            let scale = goog.vec.Vec3.clone( prop);
             node.aframeObj.object3D.scale.set(scale[0], scale[1], scale[2]);
            }
           
@@ -894,6 +925,11 @@ define(["module", "vwf/view"], function (module, view) {
         }
     }
 
+    function postLoadAction(nodeID) {
+
+        vwf_view.kernel.fireEvent(nodeID, "postLoadAction")
+    }
+
     function createAvatar(nodeID) {
 
         vwf_view.kernel.fireEvent(nodeID, "createAvatar")