Browse Source

next update

Nikolay Suslov 6 years ago
parent
commit
9380eba5c0

+ 5 - 0
public/defaults/proxy/vwf.example.com/aframe/aentity.js

@@ -1,3 +1,8 @@
+this.getChildByName = function(name){
+    let nodes = this.children.filter(el=>el.displayName == name);
+    return nodes[0]
+}
+
 this.setGizmoMode = function (mode) {
     if (this.gizmo) {
         this.gizmo.properties.mode = mode

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

@@ -50,5 +50,7 @@ methods:
   translationFromValue:
     parameters:
       - propertyValue
+  getChildByName:
+      - name
 scripts:
   - source: "http://vwf.example.com/aframe/aentity.js"

+ 9 - 4
public/defaults/proxy/vwf.example.com/aframe/ascene.js

@@ -528,10 +528,12 @@ this.createPrimitive = function (type, params, name, node, avatar) {
 
     var position = "0 0 0";
 
-    var nodeName = name;
-    if (!nodeName) {
-        nodeName = this.GUID();
-    }
+    var displayName = name;
+
+    let nodeName = this.GUID();
+    // if (!nodeName) {
+    //     nodeName = this.GUID();
+    // }
 
     if (avatar) {
 
@@ -586,6 +588,9 @@ this.createPrimitive = function (type, params, name, node, avatar) {
 
     if (newNode) {
         newNode.properties.position = position;
+        if (displayName) {
+            newNode.properties.displayName = displayName;
+        }
         this.children.create(nodeName, newNode, function( child ) {
             if (avatar) child.lookAt(self.children[avatar].worldPosition());
           });

+ 2 - 0
public/defaults/proxy/vwf.example.com/aframe/ascene.vwf.yaml

@@ -2,6 +2,8 @@
 --- 
 extends: http://vwf.example.com/aframe/node.vwf
 type: "a-scene"
+implements:
+- http://vwf.example.com/aframe/aentity.vwf
 properties:
   assets:
   color:

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

@@ -420,29 +420,20 @@ define(["module", "vwf/view"], function (module, view) {
             switch(methodName) {
                 case "translateBy":
                 case "translateTo":
+                    //resetInterpolationFromViewDriver(nodeID, methodParameters, 'position')
+                    break;
                 // No need for rotateBy or rotateTo because they call the quaternion methods
                 case "quaterniateBy":
                 case "quaterniateTo":
+                    //resetInterpolationFromViewDriver(nodeID, methodParameters, 'rotation')
+                    break;
                 case "scaleBy":
                 case "scaleTo":
                 // No need for transformBy or worldTransformBy because they call transformTo and worldTransformTo
                 case "transformTo":
                 case "worldTransformTo":
-                    // If the duration of the transform is 0, set the transforms to their final value so it doesn't interpolate
-                    if(methodParameters.length < 2 || methodParameters[1] == 0) {
-
-                        // let compDriver = vwf.views["vwf/view/aframeComponent"];
-                        // if (compDriver) {
-
-
-                        //     compDriver.nodes[nodeID].interpolate.position.lastTick = compDriver.getPosition(nodeID);
-                        //     compDriver.nodes[nodeID].interpolate.position.selfTick = goog.vec.Vec3.clone(compDriver.nodes[nodeID].lastTickTransform);
-
-                     
-                    //}
-                    break;
-            }
-
+                  //resetInterpolationFromViewDriver(nodeID, methodParameters, 'rotation')
+                  break;
         }
 
             if (this.nodes[nodeID].extends == "http://vwf.example.com/aframe/acamera.vwf") {
@@ -471,6 +462,23 @@ define(["module", "vwf/view"], function (module, view) {
     });
 
 
+    function resetInterpolationFromViewDriver(nodeID, methodParameters, propertyName) {
+
+        if(methodParameters.length < 2 || methodParameters[1] == 0) {
+
+            let viewNode = self.nodes[nodeID];
+
+            if(viewNode.components.interpolation){
+             let interID = viewNode.components.interpolation;
+             let viewComponentDriver = vwf.views["vwf/view/aframeComponent"];
+             viewComponentDriver.resetInterpolation(interID, propertyName);
+            }
+
+
+    }
+}
+
+
       // Receive Model Transform Changes algorithm 
     // 1.0 If (own view changes) then IGNORE (only if no external changes have occurred since the user’s view 
     //       requested this change – otherwise, will need to treat like 1.1 or 1.2)

+ 32 - 0
public/vwf/view/aframeComponent.js

@@ -33,6 +33,22 @@ define(["module", "vwf/view"], function (module, view) {
                         else {
                             this.rootSelector = options;
                         }
+
+                        
+
+        this.resetInterpolation = function(nodeID, propertyName){
+           
+            if(propertyName == 'position') {
+                self.nodes[nodeID].interpolate.position.lastTick = getPosition(nodeID);
+                self.nodes[nodeID].interpolate.position.selfTick =  goog.vec.Vec3.clone(self.nodes[nodeID].interpolate.position.lastTick);
+            }
+
+            if(propertyName == 'rotation') {
+            self.nodes[nodeID].interpolate.rotation.lastTick = getRotation(nodeID);
+            self.nodes[nodeID].interpolate.rotation.selfTick = self.nodes[nodeID].interpolate.rotation.lastTick;
+            }
+
+        }
          
         },
 
@@ -57,6 +73,21 @@ define(["module", "vwf/view"], function (module, view) {
                     extends:childExtendsID,
                     entityID: this.state.nodes[childID].parentID
                 };
+
+                let entityID = this.state.nodes[childID].parentID;
+                let viewDriver = vwf.views["vwf/view/aframe"];
+                let entityNode = Object.entries(viewDriver.nodes).find(el => 
+                    el[1].id == entityID
+                  )[1];
+
+                  if(!entityNode.components) 
+                    entityNode.components = {}
+
+            
+                    entityNode.components[this.state.nodes[childID].name] = childID;
+                  //console.log(entityNode);
+
+
             } 
             // else if (this.state.nodes[childID] && this.state.nodes[childID].aframeObj) {
             //     this.nodes[childID] = {
@@ -300,6 +331,7 @@ define(["module", "vwf/view"], function (module, view) {
 
     }
 
+
     function getRotation(id) {
         let r = new THREE.Euler();
         let rot = r.copy(self.state.nodes[id].aframeObj.el.object3D.rotation);

+ 24 - 2
public/vwf/view/editor-new.js

@@ -401,6 +401,26 @@ define([
                 ]
             }
 
+            function getUniqueDisplayName(newname, addcount) {
+                if (!addcount) addcount = 0;
+                if (!newname) newname = 'Object';
+                newname = newname.replace(/[0-9]*$/g, "");
+                var nodes = self.nodes; //vwf.models.object.objects;
+                var count = 1 + addcount;
+                for (var i in nodes) {
+                    if (nodes[i].id !== 0) {
+                        if (nodes[i].id !== "" && nodes[i].properties.length !== 0) {
+                            let thisname = vwf.getProperty(nodes[i].ID, 'displayName') || '';
+                            console.log(thisname);
+                            if (thisname.replace(/[0-9]*$/g, "") == newname)
+                                count++;
+                        }
+                    }
+                }
+                return newname + count;
+            }
+
+            
             function make3DPrimitiveList() {
                 let nodeNames = ['Plane', 'Cube', 'Sphere', 'Cylinder', 'Cone', 'Text'];
                 return nodeNames.map(el => {
@@ -411,7 +431,8 @@ define([
                         onclickfunc: function () {
                             let avatarID = 'avatar-' + vwf.moniker_;
                             //let cubeName = self.GUID();
-                            vwf_view.kernel.callMethod(vwf.application(), "createPrimitive", [el.toLowerCase(), null, null, null, avatarID])
+                            let displayName = getUniqueDisplayName.call(self, el.toLowerCase());
+                            vwf_view.kernel.callMethod(vwf.application(), "createPrimitive", [el.toLowerCase(), null, displayName, null, avatarID])
                         }
                     })
                 })
@@ -427,7 +448,8 @@ define([
                         onclickfunc: function () {
                             let avatarID = 'avatar-' + vwf.moniker_;
                             //let cubeName = self.GUID();
-                            vwf_view.kernel.callMethod(vwf.application(), "createPrimitive", ["light", el.toLowerCase(), null, null, avatarID])
+                            let displayName = getUniqueDisplayName.call(self, el.toLowerCase());
+                            vwf_view.kernel.callMethod(vwf.application(), "createPrimitive", ["light", el.toLowerCase(), displayName, null, avatarID])
                         }
                     })
                 })