Browse Source

update worlds examples

Nikolay Suslov 4 years ago
parent
commit
c2a3173edc
40 changed files with 2062 additions and 1492 deletions
  1. 10 10
      public/defaults/addon/sonic-pi_osc.txt
  2. 0 18
      public/defaults/worlds/aframe-ar/assets.json
  3. 13 0
      public/defaults/worlds/aframe-ar/index.vwf.config.json
  4. 0 8
      public/defaults/worlds/aframe-ar/index.vwf.config.yaml
  5. 216 0
      public/defaults/worlds/aframe-ar/index.vwf.json
  6. 0 101
      public/defaults/worlds/aframe-ar/index.vwf.yaml
  7. 196 0
      public/defaults/worlds/aframe/index.vwf.json
  8. 0 132
      public/defaults/worlds/aframe/index.vwf.yaml
  9. 0 3
      public/defaults/worlds/aframe2/assets.json
  10. 12 0
      public/defaults/worlds/aframe2/index.vwf.config.json
  11. 0 8
      public/defaults/worlds/aframe2/index.vwf.config.yaml
  12. 339 0
      public/defaults/worlds/aframe2/index.vwf.json
  13. 0 220
      public/defaults/worlds/aframe2/index.vwf.yaml
  14. 0 14
      public/defaults/worlds/gearvr/assets.json
  15. 12 0
      public/defaults/worlds/gearvr/index.vwf.config.json
  16. 0 8
      public/defaults/worlds/gearvr/index.vwf.config.yaml
  17. 115 0
      public/defaults/worlds/gearvr/index.vwf.json
  18. 0 63
      public/defaults/worlds/gearvr/index.vwf.yaml
  19. 0 18
      public/defaults/worlds/multipixel/assets.json
  20. 12 0
      public/defaults/worlds/multipixel/index.vwf.config.json
  21. 0 8
      public/defaults/worlds/multipixel/index.vwf.config.yaml
  22. 362 0
      public/defaults/worlds/multipixel/index.vwf.json
  23. 0 155
      public/defaults/worlds/multipixel/index.vwf.yaml
  24. 0 6
      public/defaults/worlds/ohmlang-calc/assets.json
  25. 12 0
      public/defaults/worlds/ohmlang-calc/index.vwf.config.json
  26. 0 8
      public/defaults/worlds/ohmlang-calc/index.vwf.config.yaml
  27. 140 0
      public/defaults/worlds/ohmlang-calc/index.vwf.json
  28. 0 155
      public/defaults/worlds/ohmlang-calc/index.vwf.yaml
  29. 0 6
      public/defaults/worlds/ohmlang-lsys/assets.json
  30. 12 0
      public/defaults/worlds/ohmlang-lsys/index.vwf.config.json
  31. 0 8
      public/defaults/worlds/ohmlang-lsys/index.vwf.config.yaml
  32. 227 0
      public/defaults/worlds/ohmlang-lsys/index.vwf.json
  33. 0 227
      public/defaults/worlds/ohmlang-lsys/index.vwf.yaml
  34. 0 3
      public/defaults/worlds/orchestra/assets.json
  35. 12 0
      public/defaults/worlds/orchestra/index.vwf.config.json
  36. 0 8
      public/defaults/worlds/orchestra/index.vwf.config.yaml
  37. 371 0
      public/defaults/worlds/orchestra/index.vwf.json
  38. 0 265
      public/defaults/worlds/orchestra/index.vwf.yaml
  39. 1 10
      public/defaults/worlds/osc-example/index.vwf.json
  40. 0 30
      public/defaults/worlds/osc-example/osclang.js

+ 10 - 10
public/defaults/addon/sonic-pi_osc.txt

@@ -5,7 +5,7 @@ oldT2 = 0
 set :tC3, current_time
 oldT3 = 0
 
-latency = 0.2
+latency = 0.3
 
 #use_sched_ahead_time 0.4
 #set_sched_ahead_time! 0.3
@@ -14,8 +14,8 @@ live_loop :sample01 do
   
   use_sched_ahead_time latency
   
-  a = sync "/osc/trigger/sample01"
-  nowT = a[0]
+  a, b, c = sync "/osc*/trigger/sample01"
+  nowT = a
   inc = nowT - oldT1
   oldT1 = nowT
   print inc
@@ -33,7 +33,7 @@ live_loop :sample01 do
   time_warp delta do
     t = current_time
     set :tC1, t
-    sample a[1], amp: a[2]
+    sample b, amp: c
   end
   
 end
@@ -42,8 +42,8 @@ live_loop :sample02 do
   
   use_sched_ahead_time latency
   
-  a = sync "/osc/trigger/sample02"
-  nowT = a[0]
+  a, b, c = sync "/osc*/trigger/sample02"
+  nowT = a
   inc = nowT - oldT2
   oldT2 = nowT
   print inc
@@ -61,7 +61,7 @@ live_loop :sample02 do
     t = current_time
     set :tC2, t
     print current_time
-    sample a[1], amp: a[2]
+    sample b, amp: c
   end
   
 end
@@ -70,8 +70,8 @@ live_loop :synth01 do
   
   use_sched_ahead_time latency
   
-  a = sync "/osc/trigger/synth01"
-  nowT = a[0]
+  a, b, c, d, e, f = sync "/osc*/trigger/synth01"
+  nowT = a
   inc = nowT - oldT3
   oldT3 = nowT
   print inc
@@ -89,7 +89,7 @@ live_loop :synth01 do
     t = current_time
     set :tC3, t
     print current_time
-    synth a[1], note: a[2], cutoff: a[3], sustain: a[4], amp: 0.15
+    synth b, note: c, cutoff: d, sustain: e, amp: f
   end
   
 end

+ 0 - 18
public/defaults/worlds/aframe-ar/assets.json

@@ -1,18 +0,0 @@
-{
-    "bg2":{
-        "tag": "img",
-        "src": "/defaults/assets/checker.jpg"
-    },
-    "sky":{
-        "tag": "img",
-        "src": "/defaults/assets/skyes/sky3.jpg"
-    },
-    "nwtree-obj":{
-        "tag": "a-asset-item",
-        "src": "/defaults/assets/models/nwtree/model.obj"
-    },
-    "nwtree-mtl":{
-        "tag": "a-asset-item",
-        "src": "/defaults/assets/models/nwtree/materials.mtl"
-    }
-}

+ 13 - 0
public/defaults/worlds/aframe-ar/index.vwf.config.json

@@ -0,0 +1,13 @@
+{
+  "info":{
+    "title": "VWF & AFrame Example App"
+  },
+  "model": {
+    "vwf/model/aframe": {}
+  },
+  "view": {
+    "vwf/view/aframe": null,
+    "vwf/view/aframe-ar-driver": null
+  }
+}
+  

+ 0 - 8
public/defaults/worlds/aframe-ar/index.vwf.config.yaml

@@ -1,8 +0,0 @@
----
-info:
-  title: "VWF & AFrame Example App - AR"
-model:
-  vwf/model/aframe:
-view:
-  vwf/view/aframe:
-  vwf/view/aframe-ar-driver:

+ 216 - 0
public/defaults/worlds/aframe-ar/index.vwf.json

@@ -0,0 +1,216 @@
+{
+  "extends": "proxy/aframe/ascene.vwf",
+  "properties": {
+    "transparent": true
+  },
+  "methods": {
+    "initialize": {
+      "body": "    var runModel = vwf_view.kernel.find(\"\", \"/aranchor/model\")[0];\n    vwf_view.kernel.callMethod(runModel, \"run\");\n",
+      "type": "application/javascript"
+    }
+  },
+  "children": {
+    "assetSky": {
+      "extends": "proxy/aframe/a-asset-image-item.vwf",
+      "properties": {
+        "itemID": "sky",
+        "itemSrc": "/defaults/assets/skyes/sky3.jpg"
+      }
+    },
+    "assetBG2": {
+      "extends": "proxy/aframe/a-asset-image-item.vwf",
+      "properties": {
+        "itemID": "bg2",
+        "itemSrc": "/defaults/assets/checker.jpg"
+      }
+    },
+    "assetNwreeObj": {
+      "extends": "proxy/aframe/a-asset-item.vwf",
+      "properties": {
+        "itemID": "nwtree-obj",
+        "itemSrc": "/defaults/assets/models/nwtree/model.obj"
+      }
+    },
+    "assetNwtreeMtl": {
+      "extends": "proxy/aframe/a-asset-item.vwf",
+      "properties": {
+        "itemID": "nwtree-mtl",
+        "itemSrc": "/defaults/assets/models/nwtree/materials.mtl"
+      }
+    },
+    "light1": {
+      "extends": "proxy/aframe/alight.vwf",
+      "properties": {
+        "type": "ambient",
+        "color": "#BBB"
+      }
+    },
+    "light2": {
+      "extends": "proxy/aframe/alight.vwf",
+      "properties": {
+        "type": "directional",
+        "color": "#FFF",
+        "intensity": "0.6",
+        "position": [
+          -0.5,
+          1,
+          1
+        ]
+      }
+    },
+    "arcamera": {
+      "extends": "proxy/aframe/abox.vwf",
+      "properties": {
+        "position": [
+          0,
+          0,
+          0
+        ],
+        "rotation": [
+          0,
+          0,
+          0
+        ],
+        "opacity": 0.5,
+        "depth": "0.3",
+        "width": "0.3",
+        "height": "0.5"
+      },
+      "children": {
+        "camera": {
+          "extends": "proxy/aframe/acamera.vwf",
+          "type": "ar",
+          "properties": {
+            "look-controls-enabled": "false",
+            "wasd-controls-enabled": "false",
+            "user-height": "0"
+          }
+        }
+      }
+    },
+    "aranchor": {
+      "extends": "proxy/aframe/a-arjs-anchor.vwf",
+      "properties": {
+        "position": [
+          0,
+          0,
+          -5
+        ],
+        "hit-testing-enabled": "true",
+        "changeMatrixMode": "modelViewMatrix",
+        "preset": "hiro"
+      },
+      "children": {
+        "model": {
+          "extends": "proxy/aframe/aobjmodel.vwf",
+          "properties": {
+            "src": "#nwtree-obj",
+            "mtl": "#nwtree-mtl",
+            "position": [
+              0,
+              0.5,
+              0
+            ],
+            "rotation": [
+              0,
+              2811,
+              0
+            ],
+            "scale": [
+              2,
+              2,
+              2
+            ]
+          },
+          "methods": {
+            "run": {
+              "body": "    var time = vwf.now;\n    let rot = this.rotation; //AFRAME.utils.coordinates.parse(this.rotation);\n    this.rotation = [rot[0], rot[1]+2, rot[2]];\n    this.future( 0.05 ).run();\n",
+              "type": "application/javascript"
+            }
+          },
+          "children": {
+            "interpolation": {
+              "extends": "proxy/aframe/interpolation-component.vwf",
+              "properties": {
+                "enabled": true
+              }
+            }
+          }
+        }
+      }
+    },
+    "aranchor2": {
+      "extends": "proxy/aframe/a-arjs-anchor.vwf",
+      "properties": {
+        "position": [
+          -5,
+          0,
+          -5
+        ],
+        "hit-testing-enabled": "true",
+        "changeMatrixMode": "modelViewMatrix",
+        "preset": "kanji"
+      },
+      "children": {
+        "alltext": {
+          "extends": "proxy/aframe/aentity.vwf",
+          "properties": {
+            "position": [
+              0,
+              -1,
+              0
+            ],
+            "rotation": [
+              -15,
+              0,
+              0
+            ]
+          },
+          "children": {
+            "spaceText": {
+              "extends": "proxy/aframe/atext.vwf",
+              "properties": {
+                "value": "Happy New Year 2019!",
+                "color": "#00ffa5",
+                "position": [
+                  -2,
+                  1,
+                  0
+                ],
+                "rotation": [
+                  0,
+                  0,
+                  15
+                ],
+                "scale": [
+                  4,
+                  4,
+                  4
+                ],
+                "side": "double"
+              }
+            },
+            "spaceText2": {
+              "extends": "proxy/aframe/atext.vwf",
+              "properties": {
+                "value": "Project by Krestianstvo.org",
+                "color": "#98b099",
+                "position": [
+                  0,
+                  0.5,
+                  0
+                ],
+                "scale": [
+                  2,
+                  2,
+                  2
+                ],
+                "side": "double"
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+}

+ 0 - 101
public/defaults/worlds/aframe-ar/index.vwf.yaml

@@ -1,101 +0,0 @@
-# A-Frame & VWF simple scene in AR
-# Copyright 2018 Krestianstvo.org project
----
-extends: http://vwf.example.com/aframe/ascene.vwf
-properties:
-  transparent: true
-  assets: "assets.json"
-children:
-  light1:
-    extends: http://vwf.example.com/aframe/alight.vwf
-    properties:
-      type: "ambient"
-      color: "#BBB"
-  light2:
-    extends: http://vwf.example.com/aframe/alight.vwf
-    properties:
-      type: "directional"
-      color: "#FFF"
-      intensity: 0.6
-      position: "-0.5 1 1"
-  arcamera:    
-    extends: http://vwf.example.com/aframe/abox.vwf
-    properties:
-      position: "0 0 0"
-      rotation: "0 0 0"
-      opacity: 0.5
-      depth: 0.3
-      width: 0.3
-      height: 0.5
-    children:
-      camera:
-        extends: http://vwf.example.com/aframe/acamera.vwf
-        type: "ar"
-        properties:
-          look-controls-enabled: false
-          wasd-controls-enabled: false
-          user-height: 0
-  aranchor:
-    extends: http://vwf.example.com/aframe/a-arjs-anchor.vwf
-    properties:
-      position: "0 0 -5"
-      hit-testing-enabled: true
-      changeMatrixMode: "modelViewMatrix"
-      preset: "hiro"
-    children:
-      model:
-        extends: http://vwf.example.com/aframe/aobjmodel.vwf
-        properties:
-          src: "#nwtree-obj"
-          mtl: "#nwtree-mtl"
-          position: "0 0.5 0"
-          rotation: "0 -45 0"
-          scale: "2 2 2"
-        children:
-          interpolation:
-            extends: http://vwf.example.com/aframe/interpolation-component.vwf
-            properties:
-              enabled: true
-        methods:
-          run:
-            body: |
-              var time = vwf.now;
-              let rot = this.rotation; //AFRAME.utils.coordinates.parse(this.rotation);
-              this.rotation = [rot[0], rot[1]+2, rot[2]];
-              this.future( 0.05 ).run();
-  aranchor2:
-    extends: http://vwf.example.com/aframe/a-arjs-anchor.vwf
-    properties:
-      position: "-5 0 -5"
-      hit-testing-enabled: true
-      changeMatrixMode: "modelViewMatrix"
-      preset: "kanji"
-    children:
-      alltext:
-        extends: http://vwf.example.com/aframe/aentity.vwf
-        properties:
-          position: [0,-1,0]
-          rotation: [-15,0,0]
-        children:
-          spaceText:
-            extends: http://vwf.example.com/aframe/atext.vwf
-            properties:
-              value: "Happy New Year 2019!"
-              color: "#00ffa5"
-              position: [-2,1,0]
-              rotation: "0 0 15"
-              scale: "4 4 4"
-              side: "double"
-          spaceText2:
-            extends: http://vwf.example.com/aframe/atext.vwf
-            properties:
-              value: "Project by Krestianstvo.org"
-              color: "#98b099"
-              position: [0,0.5,0]
-              scale: "2 2 2"
-              side: "double"
-methods:
-  initialize:
-    body: |
-      var runModel = vwf_view.kernel.find("", "/aranchor/model")[0];
-      vwf_view.kernel.callMethod(runModel, "run");

+ 196 - 0
public/defaults/worlds/aframe/index.vwf.json

@@ -0,0 +1,196 @@
+{
+  "extends": "proxy/aframe/ascene.vwf",
+  "properties": {
+    "transparent": true
+  },
+  "methods": {
+    "initialize": {
+      "body": "    var runBox = vwf.find(\"\", \"/sphere/box2\")[0];\n    console.log(runBox);\n    vwf.callMethod(runBox, \"run\");\n",
+      "type": "application/javascript"
+    }
+  },
+  "children": {
+    "fog": {
+      "extends": "proxy/aframe/aSceneFogComponent.vwf",
+      "type": "component",
+      "properties": {
+        "fogType": "linear",
+        "fogColor": "#ECECEC",
+        "far": 9,
+        "near": 0
+      }
+    },
+    "sky": {
+      "extends": "proxy/aframe/asky.vwf",
+      "children": {
+        "material": {
+          "extends": "proxy/aframe/aMaterialComponent.vwf",
+          "properties": {
+            "color": "#ECECEC",
+            "side": "back",
+            "fog": false
+          }
+        }
+      }
+    },
+    "light1": {
+      "extends": "proxy/aframe/alight.vwf",
+      "properties": {
+        "type": "ambient",
+        "color": "#BBB"
+      }
+    },
+    "light2": {
+      "extends": "proxy/aframe/alight.vwf",
+      "properties": {
+        "type": "directional",
+        "color": "#FFF",
+        "intensity": "0.6",
+        "position": [
+          -0.5,
+          1,
+          1
+        ]
+      }
+    },
+    "spaceText": {
+      "extends": "proxy/aframe/atext.vwf",
+      "properties": {
+        "value": "Virtual World Framework & A-Frame",
+        "color": "#b74217",
+        "position": [
+          -2,
+          2.5,
+          -2
+        ]
+      }
+    },
+    "spaceText2": {
+      "extends": "proxy/aframe/atext.vwf",
+      "properties": {
+        "value": "Project by Krestianstvo.org",
+        "color": "#305b32",
+        "position": [
+          1,
+          3,
+          -4
+        ]
+      }
+    },
+    "box": {
+      "extends": "proxy/aframe/abox.vwf",
+      "properties": {
+        "position": [
+          -1,
+          0.5,
+          -3
+        ],
+        "rotation": [
+          0,
+          -30,
+          0
+        ],
+        "depth": "2",
+        "height": "1",
+        "width": "1",
+        "class": "clickable intersectable"
+      },
+      "methods": {
+        "clickEventMethod": {
+          "body": "    let genColor = this.generateColor();\n    this.material.color = genColor\n",
+          "type": "application/javascript"
+        },
+        "intersectEventMethod": {
+          "body": "    this.material.opacity = 0.7\n",
+          "type": "application/javascript"
+        },
+        "clearIntersectEventMethod": {
+          "body": "    this.material.opacity = 1.0\n",
+          "type": "application/javascript"
+        },
+        "generateColor": {
+          "body": "    var letters = '0123456789ABCDEF';\n    var color = '#';\n    for (var i = 0; i < 6; i++) {\n    color += letters[Math.floor(this.random() * 16)];\n    } return color\n",
+          "type": "application/javascript"
+        }
+      },
+      "events": {
+        "clickEvent": {},
+        "intersectEvent": {},
+        "clearIntersectEvent": {}
+      },
+      "children": {
+        "material": {
+          "extends": "proxy/aframe/aMaterialComponent.vwf",
+          "properties": {
+            "color": "#3c7249",
+            "transparent": true
+          }
+        },
+        "raycaster-listener": {
+          "extends": "proxy/aframe/app-raycaster-listener-component.vwf",
+          "type": "component"
+        },
+        "cursor-listener": {
+          "extends": "proxy/aframe/app-cursor-listener-component.vwf",
+          "type": "component"
+        }
+      }
+    },
+    "sphere": {
+      "extends": "proxy/aframe/asphere.vwf",
+      "properties": {
+        "position": [
+          1,
+          1.25,
+          -4
+        ],
+        "radius": "1"
+      },
+      "children": {
+        "material": {
+          "extends": "proxy/aframe/aMaterialComponent.vwf",
+          "properties": {
+            "color": "#e0e014",
+            "wireframe": true
+          }
+        },
+        "box2": {
+          "extends": "proxy/aframe/abox.vwf",
+          "properties": {
+            "position": [
+              2,
+              -0.75,
+              -0.590282678604126
+            ],
+            "depth": "1",
+            "rotation": [
+              0,
+              0,
+              -59.02826690673828
+            ]
+          },
+          "methods": {
+            "run": {
+              "body": "    var time = vwf.now;\n    let rot = this.rotation; //AFRAME.utils.coordinates.parse(this.rotation);\n    let pos = this.position; //AFRAME.utils.coordinates.parse(this.position);\n    this.position = [pos[0], pos[1], Math.sin(time)];\n    this.rotation = [rot[0], rot[1], Math.sin(time)*100];\n    this.future( 0.01 ).run();\n",
+              "type": "application/javascript"
+            }
+          },
+          "children": {
+            "material": {
+              "extends": "proxy/aframe/aMaterialComponent.vwf",
+              "properties": {
+                "color": "#2167a5"
+              }
+            },
+            "interpolation": {
+              "extends": "proxy/aframe/interpolation-component.vwf",
+              "properties": {
+                "enabled": true
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+}

+ 0 - 132
public/defaults/worlds/aframe/index.vwf.yaml

@@ -1,132 +0,0 @@
-# A-Frame & VWF simple scene
-# Copyright 2017 Krestianstvo.org project
----
-extends: http://vwf.example.com/aframe/ascene.vwf
-properties:
-  transparent: true
-children:
-  fog:
-    extends: http://vwf.example.com/aframe/aSceneFogComponent.vwf
-    type: "component"
-    properties:
-      fogType: "linear"
-      fogColor: "#ECECEC"
-      far: 9
-      near: 0
-  sky:
-    extends: http://vwf.example.com/aframe/asky.vwf
-    properties:
-    children:
-      material:
-        extends: http://vwf.example.com/aframe/aMaterialComponent.vwf
-        properties:
-          color: "#ECECEC"
-          side: "back"
-          fog: false
-  light1:
-    extends: http://vwf.example.com/aframe/alight.vwf
-    properties:
-      type: "ambient"
-      color: "#BBB"
-  light2:
-    extends: http://vwf.example.com/aframe/alight.vwf
-    properties:
-      type: "directional"
-      color: "#FFF"
-      intensity: 0.6
-      position: "-0.5 1 1"
-  spaceText:
-    extends: http://vwf.example.com/aframe/atext.vwf
-    properties:
-      value: "Virtual World Framework & A-Frame"
-      color: "#b74217"
-      position: "-2 2.5 -2"
-  spaceText2:
-    extends: http://vwf.example.com/aframe/atext.vwf
-    properties:
-      value: "Project by Krestianstvo.org"
-      color: "#305b32"
-      position: "1 3 -4"
-  box:
-    extends: http://vwf.example.com/aframe/abox.vwf
-    properties:
-      position: "-1 0.5 -3"
-      rotation: "0 -30 0"
-      depth: 2
-      height: 1
-      width: 1
-      class: "clickable intersectable"
-    children:
-      material:
-        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"
-      cursor-listener:
-        extends: http://vwf.example.com/aframe/app-cursor-listener-component.vwf
-        type: "component"
-    events:
-      clickEvent:
-      intersectEvent:
-      clearIntersectEvent:
-    methods:
-      clickEventMethod:
-        body: |
-          let genColor = this.generateColor();
-          this.material.color = genColor 
-      intersectEventMethod:
-        body: |
-          this.material.opacity = 0.7
-      clearIntersectEventMethod:
-        body: |
-          this.material.opacity = 1.0
-      generateColor:
-        body: |
-          var letters = '0123456789ABCDEF';
-          var color = '#';
-          for (var i = 0; i < 6; i++) {
-          color += letters[Math.floor(this.random() * 16)];
-          } return color 
-  sphere:
-    extends: http://vwf.example.com/aframe/asphere.vwf
-    properties:
-      position: "1 1.25 -4"
-      radius: 1
-    children:
-      material:
-        extends: http://vwf.example.com/aframe/aMaterialComponent.vwf
-        properties:
-          color: "#e0e014"
-          wireframe: true
-      box2:
-        extends: http://vwf.example.com/aframe/abox.vwf
-        properties:
-          position: "2 -0.75 0"
-          depth: 1
-        children:
-          material:
-            extends: http://vwf.example.com/aframe/aMaterialComponent.vwf
-            properties:
-              color: "#2167a5"
-          interpolation:
-            extends: http://vwf.example.com/aframe/interpolation-component.vwf
-            properties:
-              enabled: true
-        methods:
-          run:
-            body: |
-              var time = vwf.now;
-              let rot = this.rotation; //AFRAME.utils.coordinates.parse(this.rotation);
-              let pos = this.position; //AFRAME.utils.coordinates.parse(this.position);
-              this.position = [pos[0], pos[1], Math.sin(time)];
-              this.rotation = [rot[0], rot[1], Math.sin(time)*100];
-              this.future( 0.01 ).run();
-methods:
-  initialize:
-    body: |
-      var runBox = vwf.find("", "/sphere/box2")[0];
-      console.log(runBox);
-      vwf.callMethod(runBox, "run");

+ 0 - 3
public/defaults/worlds/aframe2/assets.json

@@ -1,3 +0,0 @@
-{
-    
-}

+ 12 - 0
public/defaults/worlds/aframe2/index.vwf.config.json

@@ -0,0 +1,12 @@
+{
+  "info":{
+    "title": "VWF & AFrame Example App"
+  },
+  "model": {
+    "vwf/model/aframe": {}
+  },
+  "view": {
+    "vwf/view/aframe": null,
+    "vwf/view/editor-new": null
+  }
+}

+ 0 - 8
public/defaults/worlds/aframe2/index.vwf.config.yaml

@@ -1,8 +0,0 @@
----
-info:
-  title: "VWF & AFrame Example App"
-model:
-  vwf/model/aframe:
-view:
-  vwf/view/aframe:
-  vwf/view/editor-new:

+ 339 - 0
public/defaults/worlds/aframe2/index.vwf.json

@@ -0,0 +1,339 @@
+{
+  "extends": "proxy/aframe/ascene.vwf",
+  "properties": {
+    "transparent": true
+  },
+  "methods": {
+    "initialize": {
+      "body": "    var runBox = vwf.find(\"\", \"/sphere/box2\")[0];\n    console.log(runBox);\n    vwf.callMethod(runBox, \"run\");\n",
+      "type": "application/javascript"
+    }
+  },
+  "children": {
+    "assetBG": {
+      "extends": "proxy/aframe/a-asset-image-item.vwf",
+      "properties": {
+        "itemID": "bg",
+        "itemSrc": "/defaults/assets/bg.jpg"
+      }
+    },
+    "assetSky": {
+      "extends": "proxy/aframe/a-asset-image-item.vwf",
+      "properties": {
+        "itemID": "sky",
+        "itemSrc": "/defaults/assets/skyes/sky3.jpg"
+      }
+    },
+    "assetBG2": {
+      "extends": "proxy/aframe/a-asset-image-item.vwf",
+      "properties": {
+        "itemID": "bg2",
+        "itemSrc": "/defaults/assets/checker.jpg"
+      }
+    },
+    "assetPlaneObj": {
+      "extends": "proxy/aframe/a-asset-item.vwf",
+      "properties": {
+        "itemID": "plane-obj",
+        "itemSrc": "/defaults/assets/models/plane/PUSHILIN_Plane.obj"
+      }
+    },
+    "assetPlaneMtl": {
+      "extends": "proxy/aframe/a-asset-item.vwf",
+      "properties": {
+        "itemID": "plane-mtl",
+        "itemSrc": "/defaults/assets/models/plane/PUSHILIN_Plane.mtl"
+      }
+    },
+    "myLight": {
+      "extends": "proxy/aframe/alight.vwf",
+      "properties": {
+        "type": "directional",
+        "intensity": "0.5",
+        "position": [
+          0.5,
+          2,
+          1
+        ],
+        "castShadow": true
+      }
+    },
+    "myLight2": {
+      "extends": "proxy/aframe/alight.vwf",
+      "properties": {
+        "type": "ambient",
+        "intensity": "0.5"
+      }
+    },
+    "model": {
+      "extends": "proxy/aframe/aobjmodel.vwf",
+      "properties": {
+        "src": "#plane-obj",
+        "mtl": "#plane-mtl",
+        "position": [
+          -1.2000000476837158,
+          1.7000000476837158,
+          -2.5
+        ],
+        "rotation": [
+          0,
+          -45,
+          0
+        ],
+        "scale": [
+          0.5,
+          0.5,
+          0.5
+        ]
+      },
+      "children": {
+        "shadow": {
+          "extends": "proxy/aframe/shadowComponent.vwf",
+          "properties": {
+            "cast": true
+          }
+        }
+      }
+    },
+    "spaceText": {
+      "extends": "proxy/aframe/atext.vwf",
+      "properties": {
+        "value": "Virtual World Framework & A-Frame",
+        "color": "#ddd",
+        "position": [
+          -2,
+          2.5,
+          -2
+        ]
+      }
+    },
+    "spaceText2": {
+      "extends": "proxy/aframe/atext.vwf",
+      "properties": {
+        "value": "Project by Krestianstvo.org",
+        "color": "#aaa",
+        "position": [
+          1,
+          3,
+          -4
+        ]
+      }
+    },
+    "boxAnim": {
+      "extends": "proxy/aframe/abox.vwf",
+      "properties": {
+        "position": [
+          0,
+          0,
+          -3
+        ],
+        "rotation": [
+          0,
+          0,
+          0
+        ],
+        "depth": "2",
+        "height": "1",
+        "width": "1",
+        "class": "hit"
+      },
+      "methods": {
+        "hitstartEventMethod": {
+          "body": "    this.material.opacity = 0.7\n",
+          "type": "application/javascript"
+        },
+        "hitendEventMethod": {
+          "body": "    this.material.opacity = 1.0\n",
+          "type": "application/javascript"
+        }
+      },
+      "children": {
+        "aabb-collider-listener": {
+          "extends": "proxy/aframe/app-aabb-collider-listener-component.vwf",
+          "type": "component"
+        },
+        "material": {
+          "extends": "proxy/aframe/aMaterialComponent.vwf",
+          "properties": {
+            "color": "#3c7249"
+          }
+        }
+      }
+    },
+    "box": {
+      "extends": "proxy/aframe/abox.vwf",
+      "properties": {
+        "position": [
+          -1,
+          0.5,
+          -3
+        ],
+        "rotation": [
+          0,
+          -30,
+          0
+        ],
+        "depth": "2",
+        "height": "1",
+        "width": "1",
+        "class": "clickable intersectable"
+      },
+      "methods": {
+        "clickEventMethod": {
+          "body": "    let genColor = this.generateColor();\n    this.material.color = genColor\n",
+          "type": "application/javascript"
+        },
+        "intersectEventMethod": {
+          "body": "    this.material.opacity = 0.7\n",
+          "type": "application/javascript"
+        },
+        "clearIntersectEventMethod": {
+          "body": "    this.material.opacity = 1.0\n",
+          "type": "application/javascript"
+        },
+        "generateColor": {
+          "body": "    var letters = '0123456789ABCDEF';\n    var color = '#';\n    for (var i = 0; i < 6; i++) {\n    color += letters[Math.floor(this.random() * 16)];\n    } return color\n",
+          "type": "application/javascript"
+        }
+      },
+      "events": {
+        "clickEvent": {}
+      },
+      "children": {
+        "material": {
+          "extends": "proxy/aframe/aMaterialComponent.vwf",
+          "properties": {
+            "color": "#3c7249",
+            "transparent": true
+          }
+        },
+        "raycaster-listener": {
+          "extends": "proxy/aframe/app-raycaster-listener-component.vwf",
+          "type": "component"
+        },
+        "cursor-listener": {
+          "extends": "proxy/aframe/app-cursor-listener-component.vwf",
+          "type": "component"
+        },
+        "shadow": {
+          "extends": "proxy/aframe/shadowComponent.vwf",
+          "properties": {
+            "cast": true,
+            "receive": true
+          }
+        }
+      }
+    },
+    "sphere": {
+      "extends": "proxy/aframe/asphere.vwf",
+      "properties": {
+        "position": [
+          1,
+          1.25,
+          -4
+        ],
+        "radius": "1"
+      },
+      "children": {
+        "material": {
+          "extends": "proxy/aframe/aMaterialComponent.vwf",
+          "properties": {
+            "color": "#e0e014",
+            "wireframe": true
+          }
+        },
+        "box2": {
+          "extends": "proxy/aframe/abox.vwf",
+          "properties": {
+            "position": [
+              2,
+              -0.75,
+              0.948116660118103
+            ],
+            "depth": "1"
+          },
+          "methods": {
+            "run": {
+              "body": "    var time = vwf.now;\n    let pos = this.position; //AFRAME.utils.coordinates.parse(this.position);\n    this.position = [pos[0], pos[1], Math.sin(time)]\n    this.future( 0.01 ).run();\n",
+              "type": "application/javascript"
+            }
+          },
+          "children": {
+            "raycaster": {
+              "extends": "proxy/aframe/raycasterComponent.vwf",
+              "type": "component",
+              "properties": {
+                "recursive": false,
+                "interval": 10,
+                "far": 2,
+                "objects": ".intersectable"
+              }
+            },
+            "material": {
+              "extends": "proxy/aframe/aMaterialComponent.vwf",
+              "properties": {
+                "color": "#2167a5",
+                "src": "#bg"
+              }
+            },
+            "shadow": {
+              "extends": "proxy/aframe/shadowComponent.vwf",
+              "properties": {
+                "cast": true
+              }
+            },
+            "interpolation": {
+              "extends": "proxy/aframe/interpolation-component.vwf",
+              "properties": {
+                "enabled": true,
+                "deltaPos": 0.001,
+                "deltaRot": 0.1
+              }
+            }
+          }
+        }
+      }
+    },
+    "sky": {
+      "extends": "proxy/aframe/asky.vwf",
+      "children": {
+        "material": {
+          "extends": "proxy/aframe/aMaterialComponent.vwf",
+          "properties": {
+            "src": "#sky",
+            "side": "back",
+            "fog": false
+          }
+        }
+      }
+    },
+    "groundPlane": {
+      "extends": "proxy/aframe/aplane.vwf",
+      "properties": {
+        "height": "50",
+        "width": "50",
+        "rotation": [
+          -90,
+          0,
+          0
+        ]
+      },
+      "children": {
+        "material": {
+          "extends": "proxy/aframe/aMaterialComponent.vwf",
+          "properties": {
+            "repeat": "10 10",
+            "color": "white",
+            "src": "#bg2"
+          }
+        },
+        "shadow": {
+          "extends": "proxy/aframe/shadowComponent.vwf",
+          "properties": {
+            "receive": true
+          }
+        }
+      }
+    }
+  }
+}

+ 0 - 220
public/defaults/worlds/aframe2/index.vwf.yaml

@@ -1,220 +0,0 @@
-# A-Frame & VWF simple scene
-# Copyright 2017 Krestianstvo.org project
----
-extends: http://vwf.example.com/aframe/ascene.vwf
-properties:
-  transparent: true
-  assets: "assets.json"
-children:
-  assetBG:
-    extends: http://vwf.example.com/aframe/a-asset-image-item.vwf
-    properties:
-      itemID: "bg"
-      itemSrc: "/defaults/assets/bg.jpg"
-  assetSky:
-    extends: http://vwf.example.com/aframe/a-asset-image-item.vwf
-    properties:
-      itemID: "sky"
-      itemSrc: "/defaults/assets/skyes/sky3.jpg"
-  assetBG2:
-    extends: http://vwf.example.com/aframe/a-asset-image-item.vwf
-    properties:
-      itemID: "bg2"
-      itemSrc: "/defaults/assets/checker.jpg"
-  assetPlaneObj:
-    extends: http://vwf.example.com/aframe/a-asset-item.vwf
-    properties:
-      itemID: "plane-obj"
-      itemSrc: "/defaults/assets/models/plane/PUSHILIN_Plane.obj"
-  assetPlaneMtl:
-    extends: http://vwf.example.com/aframe/a-asset-item.vwf
-    properties:
-      itemID: "plane-mtl"
-      itemSrc: "/defaults/assets/models/plane/PUSHILIN_Plane.mtl"
-  myLight:
-    extends: http://vwf.example.com/aframe/alight.vwf
-    properties:
-      type: "directional"
-      intensity: 0.5
-      position: "0.5 2.0 1.0"
-      castShadow: true
-  myLight2:
-    extends: http://vwf.example.com/aframe/alight.vwf
-    properties:
-      type: "ambient"
-      intensity: 0.5
-  model:
-    extends: http://vwf.example.com/aframe/aobjmodel.vwf
-    properties:
-      src: "#plane-obj"
-      mtl: "#plane-mtl"
-      position: "-1.2 1.7 -2.5"
-      rotation: "0 -45 0"
-      scale: [0.5, 0.5, 0.5]
-    children:
-      shadow:
-        extends: http://vwf.example.com/aframe/shadowComponent.vwf
-        properties:
-          cast: true
-  spaceText:
-    extends: http://vwf.example.com/aframe/atext.vwf
-    properties:
-      value: "Virtual World Framework & A-Frame"
-      color: "#ddd"
-      position: "-2 2.5 -2"
-  spaceText2:
-    extends: http://vwf.example.com/aframe/atext.vwf
-    properties:
-      value: "Project by Krestianstvo.org"
-      color: "#aaa"
-      position: "1 3 -4"
-  boxAnim:
-    extends: http://vwf.example.com/aframe/abox.vwf
-    properties:
-      position: "0 0 -3"
-      rotation: "0 0 0"
-      depth: 2
-      height: 1
-      width: 1
-      class: "hit"
-    methods:
-      hitstartEventMethod:
-        body: |
-          this.material.opacity = 0.7
-      hitendEventMethod:
-        body: |
-          this.material.opacity = 1.0
-    children:
-      aabb-collider-listener:
-        extends: http://vwf.example.com/aframe/app-aabb-collider-listener-component.vwf
-        type: "component"
-      material:
-        extends: http://vwf.example.com/aframe/aMaterialComponent.vwf
-        properties:
-          color: "#3c7249"
-  box:
-    extends: http://vwf.example.com/aframe/abox.vwf
-    properties:
-      position: "-1 0.5 -3"
-      rotation: "0 -30 0"
-      depth: 2
-      height: 1
-      width: 1
-      class: "clickable intersectable"
-    children:
-      material:
-        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"
-      cursor-listener:
-        extends: http://vwf.example.com/aframe/app-cursor-listener-component.vwf
-        type: "component"
-      shadow:
-        extends: http://vwf.example.com/aframe/shadowComponent.vwf
-        properties:
-          cast: true
-          receive: true
-    events:
-      clickEvent:
-    methods:
-      clickEventMethod:
-        body: |
-            let genColor = this.generateColor();
-            this.material.color = genColor 
-      intersectEventMethod:
-        body: |
-          this.material.opacity = 0.7
-      clearIntersectEventMethod:
-        body: |
-          this.material.opacity = 1.0
-      generateColor:
-        body: |
-          var letters = '0123456789ABCDEF';
-          var color = '#';
-          for (var i = 0; i < 6; i++) {
-          color += letters[Math.floor(this.random() * 16)];
-          } return color 
-  sphere:
-    extends: http://vwf.example.com/aframe/asphere.vwf
-    properties:
-      position: "1 1.25 -4"
-      radius: 1
-    children:
-      material:
-        extends: http://vwf.example.com/aframe/aMaterialComponent.vwf
-        properties:
-          color: "#e0e014"
-          wireframe: true
-      box2:
-        extends: http://vwf.example.com/aframe/abox.vwf
-        properties:
-          position: "2 -0.75 0"
-          depth: 1
-        children:
-          raycaster:
-            extends: http://vwf.example.com/aframe/raycasterComponent.vwf
-            type: "component"
-            properties:
-              recursive: false
-              interval: 10
-              far: 2
-              objects: ".intersectable"  
-          material:
-            extends: http://vwf.example.com/aframe/aMaterialComponent.vwf
-            properties:
-              color: "#2167a5"
-              src: "#bg"
-          shadow:
-            extends: http://vwf.example.com/aframe/shadowComponent.vwf
-            properties:
-              cast: true
-          interpolation:
-            extends: http://vwf.example.com/aframe/interpolation-component.vwf
-            properties:
-              enabled: true
-              deltaPos: 0.001
-              deltaRot: 0.1
-        methods:
-          run:
-            body: |
-              var time = vwf.now;
-              let pos = this.position; //AFRAME.utils.coordinates.parse(this.position);
-              this.position = [pos[0], pos[1], Math.sin(time)]
-              this.future( 0.01 ).run();
-  sky:
-    extends: http://vwf.example.com/aframe/asky.vwf
-    properties:
-    children:
-      material:
-        extends: http://vwf.example.com/aframe/aMaterialComponent.vwf
-        properties:
-          src: "#sky"
-          side: "back"
-          fog: false
-  groundPlane:
-    extends: http://vwf.example.com/aframe/aplane.vwf
-    properties:
-      height: 50
-      width: 50
-      rotation: "-90 0 0"
-    children:
-      material:
-        extends: http://vwf.example.com/aframe/aMaterialComponent.vwf
-        properties:
-          repeat: "10 10"
-          color: "white"
-          src: "#bg2"
-      shadow:
-        extends: http://vwf.example.com/aframe/shadowComponent.vwf
-        properties:
-          receive: true
-methods:
-  initialize:
-    body: |
-      var runBox = vwf.find("", "/sphere/box2")[0];
-      console.log(runBox);
-      vwf.callMethod(runBox, "run");

+ 0 - 14
public/defaults/worlds/gearvr/assets.json

@@ -1,14 +0,0 @@
-{
-    "bg":{
-        "tag": "img",
-        "src": "/defaults/assets/bg.jpg"
-    },
-    "sky":{
-        "tag": "img",
-        "src": "/defaults/assets/skyes/sky3.jpg"
-    },
-     "bg2":{
-        "tag": "img",
-        "src": "/defaults/assets/checker.jpg"
-    }
-}

+ 12 - 0
public/defaults/worlds/gearvr/index.vwf.config.json

@@ -0,0 +1,12 @@
+{
+  "info":{
+    "title": "VWF & AFrame Example App"
+  },
+  "model": {
+    "vwf/model/aframe": {}
+  },
+  "view": {
+    "vwf/view/aframe": null,
+    "vwf/view/editor-new": null
+  }
+}

+ 0 - 8
public/defaults/worlds/gearvr/index.vwf.config.yaml

@@ -1,8 +0,0 @@
----
-info:
-  title: "GearVR Example App"
-model:
-  vwf/model/aframe:
-view:
-  vwf/view/aframe: {gearvr: true, wmrleft: true, wmrright: true}
-  vwf/view/editor-new:

+ 115 - 0
public/defaults/worlds/gearvr/index.vwf.json

@@ -0,0 +1,115 @@
+{
+  "extends": "proxy/aframe/ascene.vwf",
+  "properties": {
+    "fog": "type: linear; color: #ECECEC; far: 20; near: 0"
+  },
+  "children": {
+    "assetBG2": {
+      "extends": "proxy/aframe/a-asset-image-item.vwf",
+      "properties": {
+        "itemID": "bg2",
+        "itemSrc": "/defaults/assets/checker.jpg"
+      }
+    },
+    "myLight": {
+      "extends": "proxy/aframe/alight.vwf",
+      "properties": {
+        "type": "point",
+        "color": "white",
+        "position": [
+          0,
+          10,
+          5
+        ],
+        "rotation": [
+          0,
+          0,
+          0
+        ]
+      }
+    },
+    "groundPlane": {
+      "extends": "proxy/aframe/aplane.vwf",
+      "properties": {
+        "height": "50",
+        "width": "50",
+        "rotation": [
+          -90,
+          0,
+          0
+        ]
+      },
+      "children": {
+        "material": {
+          "extends": "proxy/aframe/aMaterialComponent.vwf",
+          "properties": {
+            "wireframe": false,
+            "src": "#bg2",
+            "repeat": "10 10"
+          }
+        }
+      }
+    },
+    "spaceText": {
+      "extends": "proxy/aframe/atext.vwf",
+      "properties": {
+        "value": "Virtual World Framework & VR Controllers",
+        "color": "#2b5d83",
+        "position": [
+          -2,
+          2.5,
+          -3
+        ]
+      }
+    },
+    "cube": {
+      "extends": "proxy/aframe/abox.vwf",
+      "properties": {
+        "position": [
+          0,
+          1,
+          -3
+        ],
+        "rotation": [
+          0,
+          0,
+          0
+        ],
+        "depth": "1",
+        "height": "1",
+        "width": "1",
+        "class": "gearvrhit"
+      },
+      "methods": {
+        "hitstartEventMethod": {
+          "body": "    this.material.opacity = 0.7\n",
+          "type": "application/javascript"
+        },
+        "hitendEventMethod": {
+          "body": "    this.material.opacity = 1.0\n",
+          "type": "application/javascript"
+        }
+      },
+      "children": {
+        "material": {
+          "extends": "proxy/aframe/aMaterialComponent.vwf",
+          "properties": {
+            "color": "#3c7249"
+          }
+        },
+        "aabb-collider-listener": {
+          "extends": "proxy/aframe/app-aabb-collider-listener-component.vwf",
+          "type": "component"
+        }
+      }
+    },
+    "newSky": {
+      "extends": "proxy/aframe/aentity.vwf",
+      "children": {
+        "skyshader": {
+          "extends": "proxy/aframe/app-skyshader-component.vwf"
+        }
+      }
+    }
+  }
+}

+ 0 - 63
public/defaults/worlds/gearvr/index.vwf.yaml

@@ -1,63 +0,0 @@
-# A-Frame & VWF simple scene
-# Copyright 2017 Krestianstvo.org project
----
-extends: http://vwf.example.com/aframe/ascene.vwf
-properties:
-  fog: "type: linear; color: #ECECEC; far: 20; near: 0"
-  assets: "assets.json"
-children:
-  myLight:
-    extends: http://vwf.example.com/aframe/alight.vwf
-    properties:
-      type: "point"
-      color: "white"
-      position: "0 10 5"
-      rotation: "0 0 0"
-  groundPlane:
-    extends: http://vwf.example.com/aframe/aplane.vwf
-    properties:
-        height: 50
-        width: 50
-        rotation: [-90, 0, 0]
-    children:    
-      material:
-        extends: http://vwf.example.com/aframe/aMaterialComponent.vwf
-        properties:
-          wireframe: false
-          src: "#bg2"
-          repeat: "10 10"
-  spaceText:
-    extends: http://vwf.example.com/aframe/atext.vwf
-    properties:
-      value: "Virtual World Framework & VR Controllers"
-      color: "#2b5d83"
-      position: [-2, 2.5, -3]
-  cube:
-    extends: http://vwf.example.com/aframe/abox.vwf
-    properties:
-      position: "0 1 -3"
-      rotation: "0 0 0"
-      depth: 1
-      height: 1
-      width: 1
-      class: "gearvrhit"
-    children:    
-      material:
-        extends: http://vwf.example.com/aframe/aMaterialComponent.vwf
-        properties:
-          color: "#3c7249"
-      aabb-collider-listener:
-        extends: http://vwf.example.com/aframe/app-aabb-collider-listener-component.vwf
-        type: "component"
-    methods:
-      hitstartEventMethod:
-        body: |
-          this.material.opacity = 0.7
-      hitendEventMethod:
-        body: |
-          this.material.opacity = 1.0
-  newSky:
-    extends: http://vwf.example.com/aframe/aentity.vwf
-    children:
-      skyshader:
-        extends: http://vwf.example.com/aframe/app-skyshader-component.vwf

+ 0 - 18
public/defaults/worlds/multipixel/assets.json

@@ -1,18 +0,0 @@
-{
-    "bg2":{
-        "tag": "img",
-        "src": "/defaults/assets/checker.jpg"
-    },
-    "sky":{
-        "tag": "img",
-        "src": "/defaults/assets/skyes/sky3.jpg"
-    },
-    "nwtree-obj":{
-        "tag": "a-asset-item",
-        "src": "/defaults/assets/models/nwtree/model.obj"
-    },
-    "nwtree-mtl":{
-        "tag": "a-asset-item",
-        "src": "/defaults/assets/models/nwtree/materials.mtl"
-    }
-}

+ 12 - 0
public/defaults/worlds/multipixel/index.vwf.config.json

@@ -0,0 +1,12 @@
+{
+  "info":{
+    "title": "VWF & AFrame Example App"
+  },
+  "model": {
+    "vwf/model/aframe": {}
+  },
+  "view": {
+    "vwf/view/aframe": null,
+    "vwf/view/editor-new": null
+  }
+}

+ 0 - 8
public/defaults/worlds/multipixel/index.vwf.config.yaml

@@ -1,8 +0,0 @@
----
-info:
-  title: "VWF & AFrame Example App"
-model:
-  vwf/model/aframe:
-view:
-  vwf/view/aframe:
-  vwf/view/editor-new:

+ 362 - 0
public/defaults/worlds/multipixel/index.vwf.json

@@ -0,0 +1,362 @@
+{
+  "extends": "proxy/aframe/ascene.vwf",
+  "properties": {
+    "transparent": true
+  },
+  "methods": {
+    "initialize": {
+      "body": "    console.log(\"initializing...\");\n    this.children.multicam.camera1.createCamera(3000, 2000, 0, 0, 1500, 2000);\n    this.children.multicam.camera2.createCamera(3000, 2000, 1500, 0, 1500, 2000);\n",
+      "type": "application/javascript"
+    }
+  },
+  "children": {
+    "assetSky": {
+      "extends": "proxy/aframe/a-asset-image-item.vwf",
+      "properties": {
+        "itemID": "sky",
+        "itemSrc": "/defaults/assets/skyes/sky3.jpg"
+      }
+    },
+    "assetBG2": {
+      "extends": "proxy/aframe/a-asset-image-item.vwf",
+      "properties": {
+        "itemID": "bg2",
+        "itemSrc": "/defaults/assets/checker.jpg"
+      }
+    },
+    "assetNwreeObj": {
+      "extends": "proxy/aframe/a-asset-item.vwf",
+      "properties": {
+        "itemID": "nwtree-obj",
+        "itemSrc": "/defaults/assets/models/nwtree/model.obj"
+      }
+    },
+    "assetNwtreeMtl": {
+      "extends": "proxy/aframe/a-asset-item.vwf",
+      "properties": {
+        "itemID": "nwtree-mtl",
+        "itemSrc": "/defaults/assets/models/nwtree/materials.mtl"
+      }
+    },
+    "sky": {
+      "extends": "proxy/aframe/asky.vwf",
+      "children": {
+        "material": {
+          "extends": "proxy/aframe/aMaterialComponent.vwf",
+          "properties": {
+            "color": "#ECECEC",
+            "side": "back",
+            "fog": false
+          }
+        }
+      }
+    },
+    "myLightSG": {
+      "extends": "proxy/aframe/alight.vwf",
+      "properties": {
+        "type": "directional",
+        "color": "white",
+        "position": [
+          6,
+          22,
+          6
+        ],
+        "rotation": [
+          -77,
+          85,
+          64
+        ]
+      }
+    },
+    "myLightSB": {
+      "extends": "proxy/aframe/alight.vwf",
+      "properties": {
+        "type": "spot",
+        "color": "blue",
+        "position": [
+          0,
+          5,
+          -25
+        ],
+        "rotation": [
+          0,
+          0,
+          150
+        ]
+      }
+    },
+    "myLightSR": {
+      "extends": "proxy/aframe/alight.vwf",
+      "properties": {
+        "type": "spot",
+        "color": "red",
+        "position": [
+          0,
+          5,
+          -25
+        ],
+        "rotation": [
+          0,
+          -3,
+          150
+        ]
+      }
+    },
+    "model": {
+      "extends": "proxy/aframe/aobjmodel.vwf",
+      "properties": {
+        "src": "#nwtree-obj",
+        "mtl": "#nwtree-mtl",
+        "position": [
+          -1,
+          6,
+          -25
+        ],
+        "rotation": [
+          0,
+          -45,
+          0
+        ],
+        "scale": [
+          20,
+          20,
+          20
+        ]
+      },
+      "methods": {
+        "run": {
+          "body": "    var time = vwf.now;\n    let rot = this.rotation; //AFRAME.utils.coordinates.parse(this.rotation);\n    this.rotation = [rot[0], Math.sin(time)*50, rot[2]];\n    this.future( 0.01 ).run();\n",
+          "type": "application/javascript"
+        }
+      },
+      "children": {
+        "interpolation": {
+          "extends": "proxy/aframe/interpolation-component.vwf",
+          "properties": {
+            "enabled": true
+          }
+        }
+      }
+    },
+    "spaceText": {
+      "extends": "proxy/aframe/atext.vwf",
+      "properties": {
+        "value": "Happy New Year 2018!",
+        "color": "#d5ebda",
+        "position": [
+          -19,
+          5,
+          -30
+        ],
+        "rotation": [
+          0,
+          0,
+          45
+        ],
+        "scale": [
+          9,
+          9,
+          9
+        ]
+      }
+    },
+    "spaceText2": {
+      "extends": "proxy/aframe/atext.vwf",
+      "properties": {
+        "value": "Project by Krestianstvo.org",
+        "color": "#305b32",
+        "position": [
+          5,
+          10,
+          -30
+        ],
+        "scale": [
+          5,
+          5,
+          5
+        ]
+      }
+    },
+    "box": {
+      "extends": "proxy/aframe/abox.vwf",
+      "properties": {
+        "position": [
+          10,
+          0.5,
+          0
+        ],
+        "rotation": [
+          0,
+          -30,
+          0
+        ],
+        "depth": "2",
+        "height": "5",
+        "width": "2"
+      },
+      "children": {
+        "material": {
+          "extends": "proxy/aframe/aMaterialComponent.vwf",
+          "properties": {
+            "color": "#3c7249"
+          }
+        }
+      }
+    },
+    "sphere": {
+      "extends": "proxy/aframe/asphere.vwf",
+      "properties": {
+        "position": [
+          7,
+          15,
+          -25
+        ],
+        "radius": "5"
+      },
+      "children": {
+        "material": {
+          "extends": "proxy/aframe/aMaterialComponent.vwf",
+          "properties": {
+            "color": "#e0e014",
+            "wireframe": true
+          }
+        }
+      }
+    },
+    "box2": {
+      "extends": "proxy/aframe/abox.vwf",
+      "properties": {
+        "position": [
+          0,
+          0,
+          -35
+        ],
+        "rotation": [
+          0,
+          0,
+          0
+        ],
+        "depth": "1",
+        "height": "50",
+        "width": "50"
+      },
+      "children": {
+        "material": {
+          "extends": "proxy/aframe/aMaterialComponent.vwf",
+          "properties": {
+            "color": "white"
+          }
+        }
+      }
+    },
+    "groundPlane": {
+      "extends": "proxy/aframe/aplane.vwf",
+      "properties": {
+        "height": "100",
+        "width": "100",
+        "rotation": [
+          -90,
+          0,
+          0
+        ]
+      },
+      "children": {
+        "material": {
+          "extends": "proxy/aframe/aMaterialComponent.vwf",
+          "properties": {
+            "color": "white",
+            "wireframe": false,
+            "src": "#bg2",
+            "repeat": "10 10"
+          }
+        }
+      }
+    },
+    "multicam": {
+      "extends": "proxy/aframe/abox.vwf",
+      "properties": {
+        "position": [
+          0,
+          4,
+          -2
+        ],
+        "rotation": [
+          0,
+          0,
+          0
+        ],
+        "depth": "0.5",
+        "height": "0.5",
+        "width": "0.5"
+      },
+      "children": {
+        "material": {
+          "extends": "proxy/aframe/aMaterialComponent.vwf",
+          "properties": {
+            "opacity": 0.5,
+            "transparent": true,
+            "color": "green"
+          }
+        },
+        "interpolation": {
+          "extends": "proxy/aframe/interpolation-component.vwf",
+          "properties": {
+            "enabled": true
+          }
+        },
+        "camera1": {
+          "extends": "proxy/aframe/offsetcamera.vwf",
+          "children": {
+            "cam": {
+              "extends": "proxy/aframe/acamera.vwf",
+              "properties": {
+                "look-controls-enabled": "false",
+                "wasd-controls-enabled": "false",
+                "user-height": "0"
+              },
+              "children": {
+                "viewoffset": {
+                  "extends": "proxy/aframe/viewOffsetCamera-component.vwf",
+                  "properties": {
+                    "fullWidth": 3000,
+                    "fullHeight": 2000,
+                    "xoffset": 0,
+                    "yoffset": 0,
+                    "subcamWidth": 1500,
+                    "subcamHeight": 2000
+                  }
+                }
+              }
+            }
+          }
+        },
+        "camera2": {
+          "extends": "proxy/aframe/offsetcamera.vwf",
+          "children": {
+            "cam": {
+              "extends": "proxy/aframe/acamera.vwf",
+              "properties": {
+                "look-controls-enabled": "false",
+                "wasd-controls-enabled": "false",
+                "user-height": "0"
+              },
+              "children": {
+                "viewoffset": {
+                  "extends": "proxy/aframe/viewOffsetCamera-component.vwf",
+                  "properties": {
+                    "fullWidth": 3000,
+                    "fullHeight": 2000,
+                    "xoffset": 1500,
+                    "yoffset": 0,
+                    "subcamWidth": 1500,
+                    "subcamHeight": 2000
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+}

+ 0 - 155
public/defaults/worlds/multipixel/index.vwf.yaml

@@ -1,155 +0,0 @@
-# A-Frame & VWF simple scene
-# Copyright 2017 Krestianstvo.org project
-# Christmas tree model by 14islands Lab Made with Blocks Public / Remixable (CC-BY) https://poly.google.com/view/2VSoAQN6JoH
----
-extends: http://vwf.example.com/aframe/ascene.vwf
-properties:
-  transparent: true
-  assets: "assets.json"
-children:
-  sky:
-    extends: http://vwf.example.com/aframe/asky.vwf
-    properties:
-    children:
-      material:
-        extends: http://vwf.example.com/aframe/aMaterialComponent.vwf
-        properties:
-          color: "#ECECEC"
-          side: "back"
-          fog: false
-  myLightSG:
-    extends: http://vwf.example.com/aframe/alight.vwf
-    properties:
-      type: "directional"
-      color: "white"
-      position: "6 22 6"
-      rotation: "-77 85 64"
-  myLightSB:
-    extends: http://vwf.example.com/aframe/alight.vwf
-    properties:
-      type: "spot"
-      color: "blue"
-      position: "0 5 -25"
-      rotation: "0 0 150"
-  myLightSR:
-    extends: http://vwf.example.com/aframe/alight.vwf
-    properties:
-      type: "spot"
-      color: "red"
-      position: "0 5 -25"
-      rotation: "0 -3 150"
-  model:
-    extends: http://vwf.example.com/aframe/aobjmodel.vwf
-    properties:
-      src: "#nwtree-obj"
-      mtl: "#nwtree-mtl"
-      position: "-1 6 -25"
-      rotation: "0 -45 0"
-      scale: "20 20 20"
-    children:
-      interpolation:
-        extends: http://vwf.example.com/aframe/interpolation-component.vwf
-        properties:
-          enabled: true
-    methods:
-          run:
-            body: |
-              var time = vwf.now;
-              let rot = this.rotation; //AFRAME.utils.coordinates.parse(this.rotation);
-              this.rotation = [rot[0], Math.sin(time)*50, rot[2]];
-              this.future( 0.01 ).run();
-  spaceText:
-    extends: http://vwf.example.com/aframe/atext.vwf
-    properties:
-      value: "Happy New Year 2018!"
-      color: "#d5ebda"
-      position: "-19 5 -30"
-      rotation: "0 0 45"
-      scale: "9 9 9"
-  spaceText2:
-    extends: http://vwf.example.com/aframe/atext.vwf
-    properties:
-      value: "Project by Krestianstvo.org"
-      color: "#305b32"
-      position: "5 10 -30"
-      scale: "5 5 5"
-  box:
-    extends: http://vwf.example.com/aframe/abox.vwf
-    properties:
-      position: "10 0.5 0"
-      rotation: "0 -30 0"
-      depth: 2
-      height: 5
-      width: 2
-    children:
-      material:
-        extends: http://vwf.example.com/aframe/aMaterialComponent.vwf
-        properties:
-          color: "#3c7249"
-  sphere:
-    extends: http://vwf.example.com/aframe/asphere.vwf
-    properties:
-      position: "7 15 -25"
-      radius: 5
-    children:
-      material:
-        extends: http://vwf.example.com/aframe/aMaterialComponent.vwf
-        properties:
-          color: "#e0e014"
-          wireframe: true
-  box2:
-    extends: http://vwf.example.com/aframe/abox.vwf
-    properties:
-      position: "0 0 -35"
-      rotation: "0 0 0"
-      depth: 1
-      height: 50
-      width: 50
-    children:
-      material:
-        extends: http://vwf.example.com/aframe/aMaterialComponent.vwf
-        properties:
-          color: "white"
-  groundPlane:
-    extends: http://vwf.example.com/aframe/aplane.vwf
-    properties:
-      height: 100
-      width: 100
-      rotation: "-90 0 0"
-    children:
-      material:
-        extends: http://vwf.example.com/aframe/aMaterialComponent.vwf
-        properties:
-          color: "white"
-          wireframe: false
-          src: "#bg2"
-          repeat: "10 10"
-  multicam:
-      extends: http://vwf.example.com/aframe/abox.vwf
-      properties:
-        position: "0 4 -2"
-        rotation: "0 0 0"
-        depth: 0.5
-        height: 0.5
-        width: 0.5
-      children:
-        material:
-          extends: http://vwf.example.com/aframe/aMaterialComponent.vwf
-          properties:
-            opacity: 0.5
-            transparent: true
-            color: "green"
-        interpolation:
-          extends: http://vwf.example.com/aframe/interpolation-component.vwf
-          properties:
-            enabled: true
-        camera1:
-          extends: http://vwf.example.com/aframe/offsetcamera.vwf
-        camera2:
-          extends: http://vwf.example.com/aframe/offsetcamera.vwf
-methods:
-  initialize:
-    body: |
-          console.log("initializing...");
-          this.children.multicam.camera1.createCamera(3000, 2000, 0, 0, 1500, 2000);
-          this.children.multicam.camera2.createCamera(3000, 2000, 1500, 0, 1500, 2000);

+ 0 - 6
public/defaults/worlds/ohmlang-calc/assets.json

@@ -1,6 +0,0 @@
-{
-     "bg2":{
-        "tag": "img",
-        "src": "/defaults/assets/checker.jpg"
-    }
-}

+ 12 - 0
public/defaults/worlds/ohmlang-calc/index.vwf.config.json

@@ -0,0 +1,12 @@
+{
+  "info":{
+    "title": "VWF & AFrame Example App"
+  },
+  "model": {
+    "vwf/model/aframe": {}
+  },
+  "view": {
+    "vwf/view/aframe": null,
+    "vwf/view/editor-new": null
+  }
+}

+ 0 - 8
public/defaults/worlds/ohmlang-calc/index.vwf.config.yaml

@@ -1,8 +0,0 @@
----
-info:
-  title: "Ohm calculator Example App"
-model:
-  vwf/model/aframe:
-view:
-  vwf/view/aframe:
-  vwf/view/editor-new:

+ 140 - 0
public/defaults/worlds/ohmlang-calc/index.vwf.json

@@ -0,0 +1,140 @@
+{
+  "extends": "proxy/aframe/ascene.vwf",
+  "methods": {
+    "initialize": {
+      "body": "    var calc = vwf_view.kernel.find(\"\", \"/calcText\")[0];\n    console.log(calc);\n    vwf_view.kernel.callMethod(calc, \"calcMe\");\n",
+      "type": "application/javascript"
+    }
+  },
+  "children": {
+    "assetBG2": {
+      "extends": "proxy/aframe/a-asset-image-item.vwf",
+      "properties": {
+        "itemID": "bg2",
+        "itemSrc": "/defaults/assets/checker.jpg"
+      }
+    },
+    "light1": {
+      "extends": "proxy/aframe/alight.vwf",
+      "properties": {
+        "type": "ambient",
+        "color": "#BBB"
+      }
+    },
+    "light2": {
+      "extends": "proxy/aframe/alight.vwf",
+      "properties": {
+        "type": "directional",
+        "color": "#FFF",
+        "intensity": "0.6",
+        "position": [
+          -0.5,
+          1,
+          1
+        ]
+      }
+    },
+    "groundPlane": {
+      "extends": "proxy/aframe/aplane.vwf",
+      "properties": {
+        "height": "50",
+        "width": "50",
+        "rotation": [
+          -90,
+          0,
+          0
+        ]
+      },
+      "children": {
+        "material": {
+          "extends": "proxy/aframe/aMaterialComponent.vwf",
+          "properties": {
+            "wireframe": false,
+            "src": "#bg2",
+            "repeat": "10 10"
+          }
+        }
+      }
+    },
+    "calcResult": {
+      "extends": "proxy/aframe/atext.vwf",
+      "properties": {
+        "value": "",
+        "color": "#1d7027",
+        "position": [
+          1,
+          2.5,
+          -2
+        ],
+        "scale": [
+          3,
+          3,
+          3
+        ],
+        "side": "double"
+      }
+    },
+    "calcText": {
+      "extends": "proxy/aframe/atext.vwf",
+      "properties": {
+        "value": {
+          "set": "this.value = value; this.calcMe()",
+          "get": "return this.value",
+          "value": "1 * pi"
+        },
+        "color": "#b74217",
+        "position": [
+          -1,
+          2.5,
+          -2
+        ],
+        "scale": [
+          2,
+          2,
+          2
+        ],
+        "side": "double"
+      },
+      "methods": {
+        "calcMe": {
+          "body": "    let match = this.calcLang.grammar.match(this.value);\n    if (match.succeeded()){\n      if (typeof this.calcLang.semantics === 'function'){\n    let result = this.calcLang.semantics(match).interpret(); \n if (this.parent.calcResult && (typeof this.parent.calcResult.value == 'string')) {\n this.parent.calcResult.value = result \n} \n   }}\n    //this.future( 0.1 ).calcMe();\n",
+          "type": "application/javascript"
+        }
+      },
+      "children": {
+        "calcLang": {
+          "extends": "proxy/ohm/node.vwf",
+          "properties": {
+            "ohmLang": "Arithmetic {\n      Exp\n        = AddExp\n\n      AddExp\n        = AddExp \"+\" MulExp  -- plus\n        | AddExp \"-\" MulExp  -- minus\n        | MulExp\n\n      MulExp\n        = MulExp \"*\" ExpExp  -- times\n        | MulExp \"/\" ExpExp  -- divide\n        | ExpExp\n\n      ExpExp\n        = PriExp \"^\" ExpExp  -- power\n        | PriExp\n\n      PriExp\n        = \"(\" Exp \")\"  -- paren\n        | \"+\" PriExp   -- pos\n        | \"-\" PriExp   -- neg\n        | ident\n        | number\n      ident  (an identifier)\n        = letter alnum*\n\n      number  (a number)\n        = digit* \".\" digit+  -- fract\n        | digit+             -- whole\n    }\n"
+          },
+          "methods": {
+            "initLang": {
+              "body": "    console.log(\"add operations to semantics\")\n    this.addOperationLang();\n",
+              "type": "application/javascript"
+            },
+            "addOperationLang": {
+              "body": "    var constants = {pi: Math.PI, e: Math.E};\n    this.semantics.addOperation('interpret', {\n    Exp: function(e) {\n         return e.interpret();  \n      },\n    AddExp: function(e) {\n      return e.interpret();\n    },\n    AddExp_plus: function(x, _, y) {\n      return x.interpret() + y.interpret();\n    },\n    AddExp_minus: function(x, _, y) {\n      return x.interpret() - y.interpret();\n    },\n    MulExp:        function(e)         { return e.interpret(); },\n    MulExp_times:  function(x, _, y)   { return x.interpret() * y.interpret(); },\n    MulExp_divide: function(x, _, y)   { return x.interpret() / y.interpret(); },\n    ExpExp:        function(e)         { return e.interpret(); },\n    ExpExp_power:  function(x, _, y)   { return Math.pow(x.interpret(), y.interpret()); },\n    PriExp:        function(e)         { return e.interpret(); },\n    PriExp_paren:  function(_l, e, _r) { return e.interpret(); },\n    PriExp_pos:    function(_, e)      { return e.interpret(); },\n    PriExp_neg:    function(_, e)      { return -e.interpret(); },\n    ident: function(_l, _ns) {\n    // Look up the value of a named constant, e.g., 'pi'.\n    return constants[this.sourceString] || 0;\n    },\n      number: function(_) {\n        // Use `parseFloat` to convert (e.g.) the string '123' to the number 123.\n        return parseFloat(this.sourceString);\n      }\n        })\n",
+              "type": "application/javascript"
+            },
+            "testLang": {
+              "body": "    var match = this.grammar.match('2+2');\n    console.log(match);\n    var res = this.semantics(match).interpret();\n    console.log(res);\n",
+              "type": "application/javascript"
+            }
+          }
+        }
+      }
+    },
+    "sky": {
+      "extends": "proxy/aframe/asky.vwf",
+      "children": {
+        "material": {
+          "extends": "proxy/aframe/aMaterialComponent.vwf",
+          "properties": {
+            "color": "#ECECEC",
+            "side": "back"
+          }
+        }
+      }
+    }
+  }
+}

+ 0 - 155
public/defaults/worlds/ohmlang-calc/index.vwf.yaml

@@ -1,155 +0,0 @@
-# A-Frame & VWF simple scene
-# Copyright 2017 Krestianstvo.org project
----
-extends: http://vwf.example.com/aframe/ascene.vwf
-properties:
-    assets: "assets.json"
-methods:
-  initialize:
-    body: |
-      var calc = vwf_view.kernel.find("", "/calcResult")[0];
-      console.log(calc);
-      vwf_view.kernel.callMethod(calc, "calcMe");
-children:
-  light1:
-    extends: http://vwf.example.com/aframe/alight.vwf
-    properties:
-      type: "ambient"
-      color: "#BBB"
-  light2:
-    extends: http://vwf.example.com/aframe/alight.vwf
-    properties:
-      type: "directional"
-      color: "#FFF"
-      intensity: 0.6
-      position: "-0.5 1 1"
-  groundPlane:
-    extends: http://vwf.example.com/aframe/aplane.vwf
-    properties:
-      height: 50
-      width: 50
-      rotation: [-90, 0, 0]
-    children:
-      material:
-        extends: http://vwf.example.com/aframe/aMaterialComponent.vwf
-        properties:
-          wireframe: false
-          src: "#bg2"
-          repeat: "10 10"
-  calcResult:
-    extends: http://vwf.example.com/aframe/atext.vwf
-    properties:
-      value: "no result"
-      color: "#1d7027"
-      position: [1, 2.5, -2]
-      scale: [3, 3, 3]
-      side: "double"
-    methods:
-      calcMe:
-        body: |
-          let match = this.parent.calcText.calcLang.grammar.match(this.parent.calcText.value);
-          if (match.succeeded()){
-            if (typeof this.parent.calcText.calcLang.semantics === 'function'){
-          this.value = this.parent.calcText.calcLang.semantics(match).interpret()}
-          }
-          this.future( 0.1 ).calcMe();
-  calcText:
-    extends: http://vwf.example.com/aframe/atext.vwf
-    properties:
-      value: "1 * pi"
-      color: "#b74217"
-      position: [-1, 2.5, -2]
-      scale: [2, 2, 2]
-      side: "double"
-    children:
-      calcLang:
-        extends: http://vwf.example.com/ohm/node.vwf
-        properties:
-          grammar:
-          semantics:
-          ohmLang: |
-              Arithmetic {
-                    Exp
-                      = AddExp
-
-                    AddExp
-                      = AddExp "+" MulExp  -- plus
-                      | AddExp "-" MulExp  -- minus
-                      | MulExp
-
-                    MulExp
-                      = MulExp "*" ExpExp  -- times
-                      | MulExp "/" ExpExp  -- divide
-                      | ExpExp
-
-                    ExpExp
-                      = PriExp "^" ExpExp  -- power
-                      | PriExp
-
-                    PriExp
-                      = "(" Exp ")"  -- paren
-                      | "+" PriExp   -- pos
-                      | "-" PriExp   -- neg
-                      | ident
-                      | number
-                    ident  (an identifier)
-                      = letter alnum*
-
-                    number  (a number)
-                      = digit* "." digit+  -- fract
-                      | digit+             -- whole
-                  }
-        methods:
-          initLang:
-            body: |
-              console.log("add operations to semantics")
-              this.addOperationLang();
-          addOperationLang:
-            body: |
-              var constants = {pi: Math.PI, e: Math.E};
-              this.semantics.addOperation('interpret', {
-              Exp: function(e) {
-                   return e.interpret();  
-                },
-              AddExp: function(e) {
-                return e.interpret();
-              },
-              AddExp_plus: function(x, _, y) {
-                return x.interpret() + y.interpret();
-              },
-              AddExp_minus: function(x, _, y) {
-                return x.interpret() - y.interpret();
-              },
-              MulExp:        function(e)         { return e.interpret(); },
-              MulExp_times:  function(x, _, y)   { return x.interpret() * y.interpret(); },
-              MulExp_divide: function(x, _, y)   { return x.interpret() / y.interpret(); },
-              ExpExp:        function(e)         { return e.interpret(); },
-              ExpExp_power:  function(x, _, y)   { return Math.pow(x.interpret(), y.interpret()); },
-              PriExp:        function(e)         { return e.interpret(); },
-              PriExp_paren:  function(_l, e, _r) { return e.interpret(); },
-              PriExp_pos:    function(_, e)      { return e.interpret(); },
-              PriExp_neg:    function(_, e)      { return -e.interpret(); },
-              ident: function(_l, _ns) {
-              // Look up the value of a named constant, e.g., 'pi'.
-              return constants[this.sourceString] || 0;
-              },
-                number: function(_) {
-                  // Use `parseFloat` to convert (e.g.) the string '123' to the number 123.
-                  return parseFloat(this.sourceString);
-                }
-                  })
-          testLang:
-            body: |
-              var match = this.grammar.match('2+2');
-              console.log(match);
-              var res = this.semantics(match).interpret();
-              console.log(res);
-  sky:
-    extends: http://vwf.example.com/aframe/asky.vwf
-    properties:
-    children:
-      material:
-        extends: http://vwf.example.com/aframe/aMaterialComponent.vwf
-        properties:
-          color: "#ECECEC"
-          side: "back"

+ 0 - 6
public/defaults/worlds/ohmlang-lsys/assets.json

@@ -1,6 +0,0 @@
-{
-     "bg2":{
-        "tag": "img",
-        "src": "/defaults/assets/checker.jpg"
-    }
-}

+ 12 - 0
public/defaults/worlds/ohmlang-lsys/index.vwf.config.json

@@ -0,0 +1,12 @@
+{
+  "info":{
+    "title": "VWF & AFrame Example App"
+  },
+  "model": {
+    "vwf/model/aframe": {}
+  },
+  "view": {
+    "vwf/view/aframe": null,
+    "vwf/view/editor-new": null
+  }
+}

+ 0 - 8
public/defaults/worlds/ohmlang-lsys/index.vwf.config.yaml

@@ -1,8 +0,0 @@
----
-info:
-  title: "Ohm L-System example app"
-model:
-  vwf/model/aframe:
-view:
-  vwf/view/aframe:
-  vwf/view/editor-new:

+ 227 - 0
public/defaults/worlds/ohmlang-lsys/index.vwf.json

@@ -0,0 +1,227 @@
+{
+	"extends": "proxy/aframe/ascene.vwf",
+	"methods": {
+		"initialize": {
+			"body": "    console.log(\"initialising scene\");\n",
+			"type": "application/javascript"
+		},
+		"drawLSys1": {
+			"body": "    this.turtle.makeLSys()\n",
+			"type": "application/javascript"
+		},
+		"testTurtle": {
+			"body": "    this.turtle.goForward(1);\n    this.turtle.goForward(1);\n    this.turtle.turn(45);\n    this.turtle.goForward(1);\n    this.turtle.goForward(1);\n    this.turtle.turn(45);\n    this.turtle.goForward(1);\n",
+			"type": "application/javascript"
+		}
+	},
+	"children": {
+		"assetBG2": {
+			"extends": "proxy/aframe/a-asset-image-item.vwf",
+			"properties": {
+				"itemID": "bg2",
+				"itemSrc": "/defaults/assets/checker.jpg"
+			}
+		},
+		"skySun": {
+			"extends": "proxy/aframe/aentity.vwf",
+			"children": {
+				"sun": {
+					"extends": "proxy/aframe/app-sun-component.vwf"
+				}
+			}
+		},
+		"newSky": {
+			"extends": "proxy/aframe/aentity.vwf",
+			"children": {
+				"skyshader": {
+					"extends": "proxy/aframe/app-skyshader-component.vwf"
+				}
+			}
+		},
+		"groundPlane": {
+			"extends": "proxy/aframe/aplane.vwf",
+			"properties": {
+				"height": "50",
+				"width": "50",
+				"rotation": [
+					-90,
+					0,
+					0
+				]
+			},
+			"children": {
+				"material": {
+					"extends": "proxy/aframe/aMaterialComponent.vwf",
+					"properties": {
+						"wireframe": false,
+						"src": "#bg2",
+						"repeat": "10 10"
+					}
+				}
+			}
+		},
+		"turtle": {
+			"extends": "proxy/aframe/asphere.vwf",
+			"properties": {
+				"position": [
+					1,
+					1.25,
+					-4
+				],
+				"radius": "0.2",
+				"angleInRadians": {
+					"value": 0,
+					"get": "",
+					"set": ""
+				},
+				"iteration": {
+					"value": 5,
+					"get": "",
+					"set": ""
+				},
+				"angle": {
+					"value": 60,
+					"get": "",
+					"set": ""
+				},
+				"stepLength": {
+					"value": 0.3,
+					"get": "",
+					"set": ""
+				},
+				"rule": {
+					"value": "F",
+					"get": "",
+					"set": ""
+				},
+				"axiomF": {
+					"value": "G-F-G",
+					"get": "",
+					"set": ""
+				},
+				"axiomG": {
+					"value": "F+G+F",
+					"get": "",
+					"set": ""
+				},
+				"lsys": {
+					"value": "",
+					"get": "",
+					"set": ""
+				},
+				"readyForDraw": {
+					"value": true,
+					"get": "",
+					"set": ""
+				}
+			},
+			"methods": {
+				"parseLSys": {
+					"body": "    var str = this.rule;\n    var axioms = {\"F\": this.axiomF, \"G\": this.axiomG};\n    for (var i = 1; i < this.iteration; i++)\n    {\n        var match = this.lsysLang.grammar.match(str, 'Gen<\"y\">');\n        if (match.succeeded()){\n        var res = this.lsysLang.semantics(match).gen(axioms);\n        str = res.join(\"\");\n        }\n    }\n    console.log(str);\n    this.lsys = str;\n",
+					"type": "application/javascript"
+				},
+				"makeLSys": {
+					"body": "    if (this.readyForDraw){\n    this.drawNode.position = [0, 0, 0]\n    this.angleInRadians = 0;\n    this.drawNode.linepath.path = [];\n    this.parseLSys();\n    this.drawLSys();\n    this.drawNode.position = [0, 0, 0]\n    }\n",
+					"type": "application/javascript"
+				},
+				"drawLSys": {
+					"body": "    var match = this.turtleLang.grammar.match(this.lsys, 'Draw<\"1\",\"1\">');\n    if (match.succeeded()){\n        var res = this.turtleLang.semantics(match).draw(this.stepLength, this.angle);\n    }\n",
+					"type": "application/javascript"
+				},
+				"turn": {
+					"parameters": [
+						"angle"
+					],
+					"body": "    var angle0 = this.angleInRadians;\n    var targetAngle = angle * Math.PI / 180.0;\n    this.angleInRadians = angle0 + targetAngle;\n",
+					"type": "application/javascript"
+				},
+				"goForward": {
+					"parameters": [
+						"step"
+					],
+					"body": "    let pos = this.drawNode.position;\n    var x0 = pos[0];\n    var y0 = pos[1];\n    var xx = Math.sin(this.angleInRadians);\n    var yy = Math.cos(this.angleInRadians);\n    let startPosition = {x: pos[0], y: pos[1], z:pos[2]};\n    let endPosition = {x: x0 + step * xx, y: y0 + step * yy, z: pos[2]};\n    var drawPath = this.drawNode.linepath.path.slice();\n    drawPath.push(startPosition);\n    drawPath.push(endPosition);\n    this.drawNode.linepath.path = drawPath;\n    this.drawNode.position = [endPosition.x, endPosition.y, endPosition.z];\n",
+					"type": "application/javascript"
+				},
+				"setTurtleParams": {
+					"parameters": [
+						"val"
+					],
+					"body": "    this.readyForDraw = false;\n    val.forEach(el => {\n        this[el[0]] = el[1]\n    })\n    this.readyForDraw = true;\n    this.makeLSys();\n",
+					"type": "application/javascript"
+				},
+				"initialize": {
+					"body": "    //this.redrawEvent = function(){this.makeLSys()}\n    vwf_view.kernel.callMethod(this.id, \"makeLSys\");\n    console.log(\"initialising turtle\");\n",
+					"type": "application/javascript"
+				}
+			},
+			"children": {
+				"interpolation": {
+					"extends": "proxy/aframe/interpolation-component.vwf",
+					"properties": {
+						"enabled": true
+					}
+				},
+				"material": {
+					"extends": "proxy/aframe/aMaterialComponent.vwf",
+					"properties": {
+						"wireframe": true,
+						"color": "#e0e014"
+					}
+				},
+				"drawNode": {
+					"extends": "proxy/aframe/aentity.vwf",
+					"properties": {
+						"position": [
+							0,
+							0,
+							0
+						]
+					},
+					"children": {
+						"linepath": {
+							"extends": "proxy/aframe/linepath.vwf",
+							"properties": {
+								"color": "#445447",
+								"path": [
+								],
+								"width": 0.02
+							}
+						}
+					}
+				},
+				"lsysLang": {
+					"extends": "proxy/ohm/node.vwf",
+					"properties": {
+						"ohmLang": "LSys { Gen<x> \n        = ReadRule+ \n        ReadRule \n        = letters | symbols\n        letters  = \"F\" | \"G\" \n        symbols  = \"-\" | \"+\" }\n"
+					},
+					"methods": {
+						"initLang": {
+							"body": "    console.log(\"add operations to semantics\")\n    this.addOperationLang();\n",
+							"type": "application/javascript"
+						},
+						"addOperationLang": {
+							"body": "    this.semantics.addOperation('gen(x)', {\n        Gen: function(e)\n        {\n            return e.gen(this.args.x);\n        },\n        ReadRule: function(e)\n        {\n            return e.gen(this.args.x);\n        },\n        letters: function(_)\n        {\n            for (var propName in this.args.x)\n            {\n                if (propName == this.sourceString)\n                    return this.args.x[propName]\n            }\n            return this.sourceString\n        },\n        symbols: function(_)\n        {\n            return this.sourceString;\n        }\n    });\n",
+							"type": "application/javascript"
+						}
+					}
+				},
+				"turtleLang": {
+					"extends": "proxy/ohm/node.vwf",
+					"properties": {
+						"ohmLang": "Turtle {\nDraw<x, y> \n    = (drawLetter | turn)+ \ndrawLetter \n    = letter\nturn \n    = \"+\" | \"-\" }\n"
+					},
+					"methods": {
+						"initLang": {
+							"body": "    console.log(\"add operations to semantics\")\n    this.addOperationLang();\n",
+							"type": "application/javascript"
+						},
+						"addOperationLang": {
+							"body": "    var turtleID = this.parent.id;\n    var self = this;\n    this.semantics.addOperation('draw(x,y)', {\n        Draw: function(e)\n        {\n            e.draw(this.args.x, this.args.y);\n        },\n        drawLetter: function(e)\n        {\n            //vwf_view.kernel.callMethod(turtleID, 'goForward', [this.args.x]);\n            self.parent.goForward(this.args.x);\n        },\n        turn: function(e)\n        {\n            if (this.sourceString == \"+\")\n                //vwf_view.kernel.callMethod(turtleID, 'turn', [this.args.y]);\n                self.parent.turn(this.args.y);\n            if (this.sourceString == \"-\")\n                //vwf_view.kernel.callMethod(turtleID, 'turn', [-1 * this.args.y]);\n                self.parent.turn(-1*this.args.y);\n            }\n    });\n",
+							"type": "application/javascript"
+						}
+					}
+				}
+			}
+		}
+	}
+}

+ 0 - 227
public/defaults/worlds/ohmlang-lsys/index.vwf.yaml

@@ -1,227 +0,0 @@
-# A-Frame & VWF simple scene
-# Copyright 2017 Krestianstvo.org project
----
-extends: http://vwf.example.com/aframe/ascene.vwf
-properties:
-    assets: "assets.json"
-children:
-    skySun:
-        extends: http://vwf.example.com/aframe/aentity.vwf
-        children:
-            sun:
-                extends: http://vwf.example.com/aframe/app-sun-component.vwf
-    newSky:
-        extends: http://vwf.example.com/aframe/aentity.vwf
-        children:
-            skyshader:
-                extends: http://vwf.example.com/aframe/app-skyshader-component.vwf
-    groundPlane:
-        extends: http://vwf.example.com/aframe/aplane.vwf
-        properties:
-            height: 50
-            width: 50
-            rotation: [-90, 0, 0]
-        children:
-            material:
-                extends: http://vwf.example.com/aframe/aMaterialComponent.vwf
-                properties:
-                    wireframe: false
-                    src: "#bg2"
-                    repeat: "10 10"
-    turtle:
-        extends: http://vwf.example.com/aframe/asphere.vwf
-        properties:
-            position: [1, 1.25, -4]
-            radius: 0.2
-            angleInRadians: 0
-            iteration: 3
-            angle: 60  
-            stepLength: 0.5  
-            rule: 'F++F++F'
-            axiomF: 'F-F++F-F'
-            axiomG: ''
-            lsys: ''
-            readyForDraw: true
-        children:
-            interpolation:
-                extends: http://vwf.example.com/aframe/interpolation-component.vwf
-                properties:
-                    enabled: true
-            material:
-                extends: http://vwf.example.com/aframe/aMaterialComponent.vwf
-                properties:
-                    wireframe: true
-                    color: "#e0e014"
-            drawNode:
-                extends: http://vwf.example.com/aframe/aentity.vwf
-                children:
-                    linepath:
-                        extends: http://vwf.example.com/aframe/linepath.vwf
-                        properties:
-                            color: "#445447"
-                            path: []
-                            width: 0.02
-            lsysLang:
-                extends: http://vwf.example.com/ohm/node.vwf
-                properties:
-                    grammar:
-                    semantics:
-                    ohmLang: |
-                        LSys { Gen<x> 
-                                = ReadRule+ 
-                                ReadRule 
-                                = letters | symbols
-                                letters  = "F" | "G" 
-                                symbols  = "-" | "+" }
-                methods:
-                    initLang:
-                        body: |
-                            console.log("add operations to semantics")
-                            this.addOperationLang();
-                    addOperationLang:
-                        body: |
-                            this.semantics.addOperation('gen(x)', {
-                                Gen: function(e)
-                                {
-                                    return e.gen(this.args.x);
-                                },
-                                ReadRule: function(e)
-                                {
-                                    return e.gen(this.args.x);
-                                },
-                                letters: function(_)
-                                {
-                                    for (var propName in this.args.x)
-                                    {
-                                        if (propName == this.sourceString)
-                                            return this.args.x[propName]
-                                    }
-                                    return this.sourceString
-                                },
-                                symbols: function(_)
-                                {
-                                    return this.sourceString;
-                                }
-                            });
-            turtleLang:
-                extends: http://vwf.example.com/ohm/node.vwf
-                properties:
-                    grammar:
-                    semantics:
-                    ohmLang: |
-                        Turtle {
-                        Draw<x, y> 
-                            = (drawLetter | turn)+ 
-                        drawLetter 
-                            = letter
-                        turn 
-                            = "+" | "-" }
-                methods:
-                    initLang:
-                        body: |
-                            console.log("add operations to semantics")
-                            this.addOperationLang();
-                    addOperationLang:
-                        body: |
-                            var turtleID = this.parent.id;
-                            var self = this;
-                            this.semantics.addOperation('draw(x,y)', {
-                                Draw: function(e)
-                                {
-                                    e.draw(this.args.x, this.args.y);
-                                },
-                                drawLetter: function(e)
-                                {
-                                    //vwf_view.kernel.callMethod(turtleID, 'goForward', [this.args.x]);
-                                    self.parent.goForward(this.args.x);
-                                },
-                                turn: function(e)
-                                {
-                                    if (this.sourceString == "+")
-                                        //vwf_view.kernel.callMethod(turtleID, 'turn', [this.args.y]);
-                                        self.parent.turn(this.args.y);
-                                    if (this.sourceString == "-")
-                                        //vwf_view.kernel.callMethod(turtleID, 'turn', [-1 * this.args.y]);
-                                        self.parent.turn(-1*this.args.y);
-                                    }
-                            });
-        methods:
-            parseLSys: |
-                var str = this.rule;
-                var axioms = {"F": this.axiomF, "G": this.axiomG};
-                for (var i = 1; i < this.iteration; i++)
-                {
-                    var match = this.lsysLang.grammar.match(str, 'Gen<"y">');
-                    if (match.succeeded()){
-                    var res = this.lsysLang.semantics(match).gen(axioms);
-                    str = res.join("");
-                    }
-                }
-                console.log(str);
-                this.lsys = str;
-            makeLSys: |
-                if (this.readyForDraw){
-                this.drawNode.position = [0, 0, 0]
-                this.angleInRadians = 0;
-                this.drawNode.linepath.path = [];
-                this.parseLSys();
-                this.drawLSys();
-                this.drawNode.position = [0, 0, 0]
-                }
-            drawLSys: |
-                var match = this.turtleLang.grammar.match(this.lsys, 'Draw<"1","1">');
-                if (match.succeeded()){
-                    var res = this.turtleLang.semantics(match).draw(this.stepLength, this.angle);
-                }
-            turn:
-                parameters:
-                    - angle
-                body: |
-                    var angle0 = this.angleInRadians;
-                    var targetAngle = angle * Math.PI / 180.0;
-                    this.angleInRadians = angle0 + targetAngle;
-            goForward:
-                parameters:
-                    - step
-                body: |
-                    let pos = this.drawNode.position;
-                    var x0 = pos[0];
-                    var y0 = pos[1];
-                    var xx = Math.sin(this.angleInRadians);
-                    var yy = Math.cos(this.angleInRadians);
-                    let startPosition = {x: pos[0], y: pos[1], z:pos[2]};
-                    let endPosition = {x: x0 + step * xx, y: y0 + step * yy, z: pos[2]};
-                    var drawPath = this.drawNode.linepath.path;
-                    drawPath.push(startPosition);
-                    drawPath.push(endPosition);
-                    vwf_view.kernel.setProperty(this.drawNode.linepath.id, 'path', drawPath);
-                    this.drawNode.position = [endPosition.x, endPosition.y, endPosition.z];
-            setTurtleParams:
-                parameters:
-                    - val
-                body: |
-                    this.readyForDraw = false;
-                    val.forEach(el => {
-                        this[el[0]] = el[1]
-                    })
-                    this.readyForDraw = true;
-                    this.makeLSys();
-            initialize:
-                body: |
-                    //this.redrawEvent = function(){this.makeLSys()}
-                    vwf_view.kernel.callMethod(this.id, "makeLSys");
-                    console.log("initialising turtle");
-methods:
-  initialize:
-    body: |
-        console.log("initialising scene");
-  drawLSys1: |
-    this.turtle.makeLSys()
-  testTurtle: |
-    this.turtle.goForward(1);
-    this.turtle.goForward(1);
-    this.turtle.turn(45);
-    this.turtle.goForward(1);
-    this.turtle.goForward(1);
-    this.turtle.turn(45);
-    this.turtle.goForward(1);

+ 0 - 3
public/defaults/worlds/orchestra/assets.json

@@ -1,3 +0,0 @@
-{
-    
-}

+ 12 - 0
public/defaults/worlds/orchestra/index.vwf.config.json

@@ -0,0 +1,12 @@
+{
+  "info":{
+    "title": "VWF & AFrame Example App"
+  },
+  "model": {
+    "vwf/model/aframe": {}
+  },
+  "view": {
+    "vwf/view/aframe": null,
+    "vwf/view/editor-new": null
+  }
+}

+ 0 - 8
public/defaults/worlds/orchestra/index.vwf.config.yaml

@@ -1,8 +0,0 @@
----
-info:
-  title: "VWF & AFrame Example App"
-model:
-  vwf/model/aframe:
-view:
-  vwf/view/aframe:
-  vwf/view/editor-new:

+ 371 - 0
public/defaults/worlds/orchestra/index.vwf.json

@@ -0,0 +1,371 @@
+{
+  "extends": "proxy/aframe/ascene.vwf",
+  "properties": {
+    "transparent": true
+  },
+  "methods": {
+    "initialize": {
+      "body": "    this.globalTransport.init();\n    console.log(\"INIT TRANSPORT!!!\");\n",
+      "type": "application/javascript"
+    }
+  },
+  "children": {
+    "assetBG": {
+      "extends": "proxy/aframe/a-asset-image-item.vwf",
+      "properties": {
+        "itemID": "bg",
+        "itemSrc": "/defaults/assets/bg.jpg"
+      }
+    },
+    "assetSky": {
+      "extends": "proxy/aframe/a-asset-image-item.vwf",
+      "properties": {
+        "itemID": "sky",
+        "itemSrc": "/defaults/assets/skyes/sky3.jpg"
+      }
+    },
+    "assetBG2": {
+      "extends": "proxy/aframe/a-asset-image-item.vwf",
+      "properties": {
+        "itemID": "bg2",
+        "itemSrc": "/defaults/assets/checker.jpg"
+      }
+    },
+    "myLight": {
+      "extends": "proxy/aframe/alight.vwf",
+      "properties": {
+        "type": "spot",
+        "position": [
+          -2.5,
+          1,
+          1.5
+        ],
+        "rotation": [
+          0,
+          -40,
+          0
+        ]
+      }
+    },
+    "myLight2": {
+      "extends": "proxy/aframe/alight.vwf",
+      "properties": {
+        "type": "spot",
+        "position": [
+          2,
+          1.7999999523162842,
+          6.5
+        ],
+        "rotation": [
+          25,
+          25,
+          -40
+        ]
+      }
+    },
+    "spaceText": {
+      "extends": "proxy/aframe/atext.vwf",
+      "properties": {
+        "value": "Collaborative Orchestra",
+        "color": "#ddd",
+        "position": [
+          -2,
+          2.5,
+          -2
+        ]
+      }
+    },
+    "spaceText2": {
+      "extends": "proxy/aframe/atext.vwf",
+      "properties": {
+        "value": "Project by LiveCoding.space",
+        "color": "#aaa",
+        "position": [
+          1,
+          3,
+          -4
+        ]
+      }
+    },
+    "globalTransport": {
+      "extends": "proxy/aframe/transport.vwf",
+      "properties": {
+        "position": [
+          2,
+          2,
+          -3
+        ],
+        "beat": 0,
+        "animationLoop": true,
+        "animationDuration": 1,
+        "animationDurationSIM": 1,
+        "animationRate": 1,
+        "animationTPS": 30
+      },
+      "children": {
+        "vis": {
+          "extends": "proxy/aframe/abox.vwf",
+          "properties": {
+            "height": "0.3",
+            "width": "0.3",
+            "depth": "0.3",
+            "class": "clickable"
+          },
+          "methods": {
+            "clickEventMethod": {
+              "body": "    if (this.parent.animationPlaying) {\n        this.parent.stop();\n    } else {\n        this.parent.play();\n    }\n",
+              "type": "application/javascript"
+            }
+          },
+          "children": {
+            "material": {
+              "extends": "proxy/aframe/aMaterialComponent.vwf",
+              "type": "component",
+              "properties": {
+                "color": "red"
+              }
+            },
+            "cursor-listener": {
+              "extends": "proxy/aframe/app-cursor-listener-component.vwf",
+              "type": "component"
+            }
+          }
+        }
+      }
+    },
+    "bdrum": {
+      "extends": "proxy/aframe/abox.vwf",
+      "properties": {
+        "position": [
+          0,
+          0,
+          -3
+        ],
+        "rotation": [
+          0,
+          0,
+          0
+        ],
+        "depth": "1",
+        "height": "1",
+        "width": "1",
+        "class": "hit clickable",
+        "globalBeat": true
+      },
+      "methods": {
+        "changeVisual": {
+          "body": "    this.material.color = \"white\";\n    this.scale = \"1.1 1.1 1.1\";\n    this.future(0.1).resetVisual();\n",
+          "type": "application/javascript"
+        },
+        "resetVisual": {
+          "body": "    this.material.color = \"red\";\n    this.scale = \"1 1 1\";\n",
+          "type": "application/javascript"
+        },
+        "onGlobalBeat": {
+          "parameters": [
+            "obj"
+          ],
+          "body": "    let transportNode = this.find('//' + obj.name)[0];\n    let rate = transportNode.animationRate; // 1 by default\n    let drumSeq = [\n      {beat:0, msg: 0},\n      {beat:15, msg: 0}\n    ];\n    drumSeq.forEach(el=>{\n      if(el.beat/rate == obj.beat){\n        let msg = {\n            address: \"/trigger/sample01\",\n            args: [this.time, 'bd_haus', 2]\n        };\n        this.sendOSC(msg); \n        this.changeVisual();\n      }\n    })\n",
+          "type": "application/javascript"
+        },
+        "hitstartEventMethod": {
+          "body": "    this.material.opacity = 0.7\n",
+          "type": "application/javascript"
+        },
+        "hitendEventMethod": {
+          "body": "    this.material.opacity = 1.0\n",
+          "type": "application/javascript"
+        },
+        "clickEventMethod": {
+          "body": "    this.globalBeat = !this.globalBeat\n",
+          "type": "application/javascript"
+        }
+      },
+      "children": {
+        "aabb-collider-listener": {
+          "extends": "proxy/aframe/app-aabb-collider-listener-component.vwf",
+          "type": "component"
+        },
+        "cursor-listener": {
+          "extends": "proxy/aframe/app-cursor-listener-component.vwf",
+          "type": "component"
+        },
+        "material": {
+          "extends": "proxy/aframe/aMaterialComponent.vwf",
+          "properties": {
+            "color": "red"
+          }
+        }
+      }
+    },
+    "hatt": {
+      "extends": "proxy/aframe/acone.vwf",
+      "properties": {
+        "position": [
+          -2,
+          0,
+          -3
+        ],
+        "rotation": [
+          0,
+          0,
+          0
+        ],
+        "radius": 0.5,
+        "height": "1",
+        "class": "hit clickable",
+        "globalBeat": true
+      },
+      "methods": {
+        "changeVisual": {
+          "body": "    this.material.color = \"white\";\n    this.scale = \"1.1 1.1 1.1\";\n    this.future(0.1).resetVisual();\n",
+          "type": "application/javascript"
+        },
+        "resetVisual": {
+          "body": "    this.material.color = \"blue\";\n    this.scale = \"1 1 1\";\n",
+          "type": "application/javascript"
+        },
+        "onGlobalBeat": {
+          "parameters": [
+            "obj"
+          ],
+          "body": "    let transportNode = this.find('//' + obj.name)[0];\n    let rate = transportNode.animationRate; // 1 by default\n    let drumSeq = [\n      {beat:10, msg: 0},\n      {beat:20, msg: 0}\n      ];\n    drumSeq.forEach(el=>{\n      if(el.beat/rate == obj.beat){\n        let msg = {\n            address: \"/trigger/sample02\",\n            args: [this.time, 'bass_hit_c', 1]\n        };\n        this.sendOSC(msg); \n        this.changeVisual();\n      }\n    })\n",
+          "type": "application/javascript"
+        },
+        "hitstartEventMethod": {
+          "body": "    this.material.opacity = 0.7\n",
+          "type": "application/javascript"
+        },
+        "hitendEventMethod": {
+          "body": "    this.material.opacity = 1.0\n",
+          "type": "application/javascript"
+        },
+        "clickEventMethod": {
+          "body": "    this.globalBeat = !this.globalBeat\n",
+          "type": "application/javascript"
+        }
+      },
+      "children": {
+        "aabb-collider-listener": {
+          "extends": "proxy/aframe/app-aabb-collider-listener-component.vwf",
+          "type": "component"
+        },
+        "cursor-listener": {
+          "extends": "proxy/aframe/app-cursor-listener-component.vwf",
+          "type": "component"
+        },
+        "material": {
+          "extends": "proxy/aframe/aMaterialComponent.vwf",
+          "properties": {
+            "color": "red"
+          }
+        }
+      }
+    },
+    "synth": {
+      "extends": "proxy/aframe/asphere.vwf",
+      "properties": {
+        "position": [
+          2,
+          0,
+          -3
+        ],
+        "rotation": [
+          0,
+          0,
+          0
+        ],
+        "radius": "0.5",
+        "class": "hit clickable",
+        "globalBeat": true
+      },
+      "methods": {
+        "changeVisual": {
+          "body": "    this.material.color = \"white\";\n    this.scale = \"1.1 1.1 1.1\";\n    this.future(0.1).resetVisual();\n",
+          "type": "application/javascript"
+        },
+        "resetVisual": {
+          "body": "    this.material.color = \"green\";\n    this.scale = \"1 1 1\";\n",
+          "type": "application/javascript"
+        },
+        "onGlobalBeat": {
+          "parameters": [
+            "obj"
+          ],
+          "body": "    let transportNode = this.find('//' + obj.name)[0];\n    let rate = transportNode.animationRate; // 1 by default\n    let drumSeq = [\n      {beat:0, msg: \"C3\"},\n      {beat:5, msg: \"D3\"},\n      {beat:10, msg: \"E3\"},\n      {beat:15, msg: \"G3\"},\n      {beat:20, msg: \"A3\"},\n      {beat:25, msg: \"B3\"}\n      ];\n    drumSeq.forEach(el=>{\n      if(el.beat/rate == obj.beat){\n        let msg = {\n          address: \"/trigger/synth01\",\n                args: [this.time, 'pluck', el.msg, 0.1, 0.01, 0.6]\n        };\n        this.sendOSC(msg); \n        this.changeVisual();\n      }\n    })\n",
+          "type": "application/javascript"
+        },
+        "hitstartEventMethod": {
+          "body": "    this.material.opacity = 0.7\n",
+          "type": "application/javascript"
+        },
+        "hitendEventMethod": {
+          "body": "    this.material.opacity = 1.0\n",
+          "type": "application/javascript"
+        },
+        "clickEventMethod": {
+          "body": "    this.globalBeat = !this.globalBeat\n",
+          "type": "application/javascript"
+        }
+      },
+      "children": {
+        "aabb-collider-listener": {
+          "extends": "proxy/aframe/app-aabb-collider-listener-component.vwf",
+          "type": "component"
+        },
+        "cursor-listener": {
+          "extends": "proxy/aframe/app-cursor-listener-component.vwf",
+          "type": "component"
+        },
+        "material": {
+          "extends": "proxy/aframe/aMaterialComponent.vwf",
+          "properties": {
+            "color": "#e0e014",
+            "wireframe": true
+          }
+        }
+      }
+    },
+    "sky": {
+      "extends": "proxy/aframe/asky.vwf",
+      "children": {
+        "material": {
+          "extends": "proxy/aframe/aMaterialComponent.vwf",
+          "properties": {
+            "src": "#sky",
+            "side": "back",
+            "fog": false
+          }
+        }
+      }
+    },
+    "groundPlane": {
+      "extends": "proxy/aframe/aplane.vwf",
+      "properties": {
+        "height": "50",
+        "width": "50",
+        "rotation": [
+          -90,
+          0,
+          0
+        ]
+      },
+      "children": {
+        "material": {
+          "extends": "proxy/aframe/aMaterialComponent.vwf",
+          "properties": {
+            "repeat": "10 10",
+            "color": "white",
+            "src": "#bg2"
+          }
+        },
+        "shadow": {
+          "extends": "proxy/aframe/shadowComponent.vwf",
+          "properties": {
+            "receive": true
+          }
+        }
+      }
+    }
+  }
+}

+ 0 - 265
public/defaults/worlds/orchestra/index.vwf.yaml

@@ -1,265 +0,0 @@
-# A-Frame & VWF simple scene
-# Copyright 2017 Krestianstvo.org project
----
-extends: http://vwf.example.com/aframe/ascene.vwf
-properties:
-  transparent: true
-  assets: "assets.json"
-children:
-  assetBG:
-    extends: http://vwf.example.com/aframe/a-asset-image-item.vwf
-    properties:
-      itemID: "bg"
-      itemSrc: "/defaults/assets/bg.jpg"
-  assetSky:
-    extends: http://vwf.example.com/aframe/a-asset-image-item.vwf
-    properties:
-      itemID: "sky"
-      itemSrc: "/defaults/assets/skyes/sky3.jpg"
-  assetBG2:
-    extends: http://vwf.example.com/aframe/a-asset-image-item.vwf
-    properties:
-      itemID: "bg2"
-      itemSrc: "/defaults/assets/checker.jpg"
-  myLight:
-    extends: http://vwf.example.com/aframe/alight.vwf
-    properties:
-      type: "spot"
-      position: [-2.5, 1, 1.5]
-      rotation: [0, -40, 0]
-  myLight2:
-    extends: http://vwf.example.com/aframe/alight.vwf
-    properties:
-      type: "spot"
-      position: [2, 1.8, 6.5]
-      rotation: [25, 25, -40]
-  spaceText:
-    extends: http://vwf.example.com/aframe/atext.vwf
-    properties:
-      value: "Collaborative Orchestra"
-      color: "#ddd"
-      position: "-2 2.5 -2"
-  spaceText2:
-    extends: http://vwf.example.com/aframe/atext.vwf
-    properties:
-      value: "Project by LiveCoding.space"
-      color: "#aaa"
-      position: "1 3 -4"
-  globalTransport:
-    extends: http://vwf.example.com/aframe/transport.vwf
-    properties:
-      position: "2 2 -3"
-  bdrum:
-    extends: http://vwf.example.com/aframe/abox.vwf
-    properties:
-      position: "0 0 -3"
-      rotation: "0 0 0"
-      depth: 1
-      height: 1
-      width: 1
-      class: "hit clickable"
-      globalBeat: true
-    methods:
-      changeVisual:
-        body: | 
-              this.material.color = "white";
-              this.scale = "1.1 1.1 1.1";
-              this.future(0.1).resetVisual();
-      resetVisual:
-        body: | 
-              this.material.color = "red";
-              this.scale = "1 1 1";  
-      onGlobalBeat:
-        parameters:
-          - obj
-        body: |
-                let transportNode = this.find('//' + obj.name)[0];
-                let rate = transportNode.animationRate; // 1 by default
-                let drumSeq = [
-                  {beat:0, msg: 0},
-                  {beat:15, msg: 0}
-                ];
-                drumSeq.forEach(el=>{
-                  if(el.beat/rate == obj.beat){
-                    let msg = {
-                        address: "/trigger/sample01",
-                        args: [this.time, 'bd_haus', 2]
-                    };
-                    this.sendOSC(msg); 
-                    this.changeVisual();
-                  }
-                })
-      hitstartEventMethod:
-        body: |
-              this.material.opacity = 0.7
-      hitendEventMethod:
-        body: |
-              this.material.opacity = 1.0
-      clickEventMethod:
-        body: |
-              this.globalBeat = !this.globalBeat
-    children:
-      aabb-collider-listener:
-        extends: http://vwf.example.com/aframe/app-aabb-collider-listener-component.vwf
-        type: "component"
-      cursor-listener:
-        extends: http://vwf.example.com/aframe/app-cursor-listener-component.vwf
-        type: "component"
-      material:
-        extends: http://vwf.example.com/aframe/aMaterialComponent.vwf
-        properties:
-          color: "red"
-  hatt:
-    extends: http://vwf.example.com/aframe/acone.vwf
-    properties:
-      position: "-2 0 -3"
-      rotation: "0 0 0"
-      radius: 0.5
-      height: 1
-      class: "hit clickable"
-      globalBeat: true
-    methods:
-      changeVisual:
-        body: | 
-              this.material.color = "white";
-              this.scale = "1.1 1.1 1.1";
-              this.future(0.1).resetVisual();
-      resetVisual:
-        body: | 
-              this.material.color = "blue";
-              this.scale = "1 1 1";  
-      onGlobalBeat:
-        parameters:
-          - obj
-        body: |
-                let transportNode = this.find('//' + obj.name)[0];
-                let rate = transportNode.animationRate; // 1 by default
-                let drumSeq = [
-                  {beat:10, msg: 0},
-                  {beat:20, msg: 0}
-                  ];
-                drumSeq.forEach(el=>{
-                  if(el.beat/rate == obj.beat){
-                    let msg = {
-                        address: "/trigger/sample02",
-                        args: [this.time, 'bass_hit_c', 1]
-                    };
-                    this.sendOSC(msg); 
-                    this.changeVisual();
-                  }
-                })
-      hitstartEventMethod:
-        body: |
-              this.material.opacity = 0.7
-      hitendEventMethod:
-        body: |
-              this.material.opacity = 1.0
-      clickEventMethod:
-        body: |
-              this.globalBeat = !this.globalBeat
-    children:
-      aabb-collider-listener:
-        extends: http://vwf.example.com/aframe/app-aabb-collider-listener-component.vwf
-        type: "component"
-      cursor-listener:
-        extends: http://vwf.example.com/aframe/app-cursor-listener-component.vwf
-        type: "component"
-      material:
-        extends: http://vwf.example.com/aframe/aMaterialComponent.vwf
-        properties:
-          color: "red"
-  synth:
-    extends: http://vwf.example.com/aframe/asphere.vwf
-    properties:
-      position: "2 0 -3"
-      rotation: "0 0 0"
-      radius: 0.5
-      class: "hit clickable"
-      globalBeat: true
-    methods:
-      changeVisual:
-        body: | 
-              this.material.color = "white";
-              this.scale = "1.1 1.1 1.1";
-              this.future(0.1).resetVisual();
-      resetVisual:
-        body: | 
-              this.material.color = "green";
-              this.scale = "1 1 1";  
-      onGlobalBeat:
-        parameters:
-          - obj
-        body: |
-              let transportNode = this.find('//' + obj.name)[0];
-              let rate = transportNode.animationRate; // 1 by default
-              let drumSeq = [
-                {beat:0, msg: "C3"},
-                {beat:5, msg: "D3"},
-                {beat:10, msg: "E3"},
-                {beat:15, msg: "G3"},
-                {beat:20, msg: "A3"},
-                {beat:25, msg: "B3"}
-                ];
-              drumSeq.forEach(el=>{
-                if(el.beat/rate == obj.beat){
-                  let msg = {
-                    address: "/trigger/synth01",
-                          args: [this.time, 'pluck', el.msg, 0.1, 0.01, 0.6]
-                  };
-                  this.sendOSC(msg); 
-                  this.changeVisual();
-                }
-              })
-      hitstartEventMethod:
-        body: |
-              this.material.opacity = 0.7
-      hitendEventMethod:
-        body: |
-              this.material.opacity = 1.0
-      clickEventMethod:
-        body: |
-              this.globalBeat = !this.globalBeat
-    children:
-      aabb-collider-listener:
-        extends: http://vwf.example.com/aframe/app-aabb-collider-listener-component.vwf
-        type: "component"
-      cursor-listener:
-        extends: http://vwf.example.com/aframe/app-cursor-listener-component.vwf
-        type: "component"
-      material:
-        extends: http://vwf.example.com/aframe/aMaterialComponent.vwf
-        properties:
-          color: "#e0e014"
-          wireframe: true
-  sky:
-    extends: http://vwf.example.com/aframe/asky.vwf
-    properties:
-    children:
-      material:
-        extends: http://vwf.example.com/aframe/aMaterialComponent.vwf
-        properties:
-          src: "#sky"
-          side: "back"
-          fog: false
-  groundPlane:
-    extends: http://vwf.example.com/aframe/aplane.vwf
-    properties:
-      height: 50
-      width: 50
-      rotation: "-90 0 0"
-    children:
-      material:
-        extends: http://vwf.example.com/aframe/aMaterialComponent.vwf
-        properties:
-          repeat: "10 10"
-          color: "white"
-          src: "#bg2"
-      shadow:
-        extends: http://vwf.example.com/aframe/shadowComponent.vwf
-        properties:
-          receive: true
-methods:
-  initialize:
-    body: |
-          this.globalTransport.init();
-          console.log("INIT TRANSPORT!!!");

+ 1 - 10
public/defaults/worlds/osc-example/index.vwf.json

@@ -117,19 +117,10 @@
       "osc": true,
       "grammar": null,
       "semantics": null,
-      "ohmLang": {
-        "set": "this.ohmLang_set(value)",
-        "get": "return this.ohmLang_get()",
-        "value": "grammar"
-      }
+      "ohmLang": "parseOSC {\n            all = address \":\" props\n            address = (\"/\" addr)*\n            addr = ~(\"/\") propSingle\n            props \n                = propSingle row  -- single\n                | \"rgb\" row       -- rgb\n                | propSingle number -- prop\n            row = \"[\" col rep \"]\"\n            rep = (\",\" col)*\n            col = colChar*\n            colChar = ~(\"[\" | \",\" | \"]\") number\n            propSingle = ~(\"rgb\") letter*\n            number  (a number)\n                = digit* \".\" digit+  -- fract\n                | digit+             -- whole\n            }\n"
       },
       "methods":{
         "initLang": {},
-        "ohmLang_grammar": {},
-        "ohmLang_get": {},
-        "ohmLang_set": {
-          "parameters":["val"]
-        },
         "addOperationLang": {},
         "getOSC":{
           "parameters":["msg"]

+ 0 - 30
public/defaults/worlds/osc-example/osclang.js

@@ -1,34 +1,4 @@
-this.ohmLang_get = function () {
-    return this.ohmLang;
-}
 
-this.ohmLang_set = function (val) {
-    if (val == "grammar") {
-        this.ohmLang = this.ohmLang_grammar();
-    } else {
-        this.ohmLang = val;
-    }
-}
-
-this.ohmLang_grammar = function () {
-    return 'parseOSC { \n' +
-        'all = address ":" props \n' +
-        'address = ("/" addr)* \n' +
-        'addr = ~("/") propSingle \n' +
-        'props \n' +
-        '    = propSingle row  -- single \n' +
-        '    | "rgb" row       -- rgb \n' +
-        '    | propSingle number -- prop \n' +
-        'row = "[" col rep "]" \n' +
-        'rep = ("," col)* \n' +
-        'col = colChar* \n' +
-        'colChar = ~("[" | "," | "]") number \n' +
-        'propSingle = ~("rgb") letter* \n' +
-        'number  (a number) \n' +
-        '    = digit* "." digit+  -- fract \n' +
-        '    | digit+             -- whole \n' +
-        '}'
-}
 this.initLang = function () {
     console.log("add operations to semantics")
     this.addOperationLang();