Nikolay Suslov пре 7 година
родитељ
комит
b86cf8a68d

+ 9 - 3
support/client/lib/vwf/view/editor-new.js

@@ -206,8 +206,8 @@ define([
                                         "text": "Cube",
                                         "onclickfunc": function(){
                                             let avatarID = 'avatar-' + vwf.moniker_;
-                                            let cubeName = self.GUID();
-                                            vwf_view.kernel.callMethod(vwf.application(), "createCube", [cubeName, avatarID])
+                                            //let cubeName = self.GUID();
+                                            vwf_view.kernel.callMethod(vwf.application(), "createPrimitive", ["cube", avatarID])
                                         }
                                     }
                                 )
@@ -223,7 +223,13 @@ define([
                                         {
                                             "imgSrc": "vwf/view/lib/images/ui/sphere_normal.png",
                                             "imgHeight": "100px",
-                                            "text": "Sphere"
+                                            "addonClass": "create-card",
+                                            "text": "Sphere",
+                                            "onclickfunc": function(){
+                                                let avatarID = 'avatar-' + vwf.moniker_;
+                                                //let cubeName = self.GUID();
+                                                vwf_view.kernel.callMethod(vwf.application(), "createPrimitive", ["sphere", avatarID])
+                                            }
                                         }
                                     )
                                 ]

+ 85 - 13
support/proxy/vwf.example.com/aframe/ascene.js

@@ -51,27 +51,40 @@ this.clientWatch = function () {
     this.future(5).clientWatch(); 
 };
 
-this.createCube = function(name, avatar, node){
+this.sphereProto = function(){
 
-    let myAvatar = this.children[avatar];
-    let cursorNode = myAvatar.avatarNode.myHead.myCursor.vis;
-    var position = "0 0 0";
-
-    if (cursorNode){
-        position = cursorNode.worldPosition;
-        //console.log(position);
+    let node = {
+        "extends": "http://vwf.example.com/aframe/asphere.vwf",
+        "properties": {
+            "displayName": "sphere",
+            "color": "white",
+            "radius": 1
+        },
+        children: {
+            "interpolation":
+            {
+                "extends": "http://vwf.example.com/aframe/interpolation-component.vwf",
+                "type": "component",
+                "properties": {
+                    "enabled": true
+                }
+            }
     }
-   
+}
+
+    return node
+}
 
-    let cube = {
+this.cubeProto = function(){
+
+    let node = {
         "extends": "http://vwf.example.com/aframe/abox.vwf",
         "properties": {
             "displayName": "cube",
             "color": "white",
             "height": 1,
             "width": 1,
-            "depth": 1,
-            "position": position
+            "depth": 1
         },
         children: {
             "interpolation":
@@ -85,6 +98,65 @@ this.createCube = function(name, avatar, node){
     }
 }
 
-        this.children.create(name, cube);
+    return node
+}
+
+this.createPrimitive = function(type, avatar, name, node){
+
+    var position = "0 0 0";
+    var nodeName = name;
+    
+
+    let myAvatar = this.children[avatar];
+    let cursorNode = myAvatar.avatarNode.myHead.myCursor.vis;
+    
+    if (cursorNode){
+        position = cursorNode.worldPosition;
+        //console.log(position);
+    }
+   
+    if (!name) {
+        nodeName = this.GUID();
+    }
+
+    var newNode = {};
+
+    switch (type) {
+
+        case "cube":
+             newNode = this.cubeProto();
+            break;
+
+        case "sphere":
+            newNode = this.sphereProto();
+            break;
+
+        default:
+            newNode = undefined;
+            break;
+    }
+   
+    if (newNode) {
+    newNode.properties.position = position;
+    this.children.create(nodeName, newNode);
+    }
     
+}
+
+
+this.GUID = function () {
+    var self = this;
+    var S4 = function () {
+        return Math.floor(
+            self.random() * 0x10000 /* 65536 */
+        ).toString(16);
+    };
+
+    return (
+        S4() + S4() + "-" +
+        S4() + "-" +
+        S4() + "-" +
+        S4() + "-" +
+        S4() + S4() + S4()
+    );
 }

+ 4 - 2
support/proxy/vwf.example.com/aframe/ascene.vwf.yaml

@@ -9,10 +9,12 @@ properties:
   transparent:
 methods:
   clientWatch:
-  createCube:
+  GUID:
+  createPrimitive:
     parameters:
-      - name
+      - type
       - avatar
+      - name
       - node
 scripts:
 - source: "http://vwf.example.com/aframe/ascene.js"