|  | @@ -66,50 +66,51 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 | 
	
		
			
				|  |  |                  },
 | 
	
		
			
				|  |  |                  setAFrameProperty: function (propertyName, propertyValue, aframeObject) {
 | 
	
		
			
				|  |  |                      //console.log(propertyValue);
 | 
	
		
			
				|  |  | -                            if (propertyValue.hasOwnProperty('x')) {
 | 
	
		
			
				|  |  | -                                aframeObject.setAttribute(propertyName, propertyValue)
 | 
	
		
			
				|  |  | -                            } else
 | 
	
		
			
				|  |  | -                                if (Array.isArray(propertyValue)) {
 | 
	
		
			
				|  |  | -                                    aframeObject.setAttribute(propertyName, { x: propertyValue[0], y: propertyValue[1], z: propertyValue[2] })
 | 
	
		
			
				|  |  | -                                } else if (typeof propertyValue === 'string') {
 | 
	
		
			
				|  |  | -                                    aframeObject.setAttribute(propertyName, AFRAME.utils.coordinates.parse(propertyValue))
 | 
	
		
			
				|  |  | -                                }
 | 
	
		
			
				|  |  | -                    
 | 
	
		
			
				|  |  | -                        },
 | 
	
		
			
				|  |  | -                   setFromValue: function ( propertyValue ) {
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                            var value = goog.vec.Vec3.create();
 | 
	
		
			
				|  |  | -                          if (propertyValue.hasOwnProperty('x')) {
 | 
	
		
			
				|  |  | -                              value = goog.vec.Vec3.createFromValues(propertyValue.x, propertyValue.y,  propertyValue.z)
 | 
	
		
			
				|  |  | -                          } 
 | 
	
		
			
				|  |  | -                          else if (Array.isArray(propertyValue) || propertyValue instanceof Float32Array ) {
 | 
	
		
			
				|  |  | -                              value = goog.vec.Vec3.createFromArray(propertyValue);}
 | 
	
		
			
				|  |  | -                          else if (typeof propertyValue === 'string') {
 | 
	
		
			
				|  |  | -                              let val = AFRAME.utils.coordinates.parse(propertyValue);
 | 
	
		
			
				|  |  | -                              value = goog.vec.Vec3.createFromValues(val.x, val.y, val.z)
 | 
	
		
			
				|  |  | -                              }
 | 
	
		
			
				|  |  | -                      
 | 
	
		
			
				|  |  | -                          return value
 | 
	
		
			
				|  |  | -                            }
 | 
	
		
			
				|  |  | +                    if (propertyValue.hasOwnProperty('x')) {
 | 
	
		
			
				|  |  | +                        aframeObject.setAttribute(propertyName, propertyValue)
 | 
	
		
			
				|  |  | +                    } else
 | 
	
		
			
				|  |  | +                        if (Array.isArray(propertyValue)) {
 | 
	
		
			
				|  |  | +                            aframeObject.setAttribute(propertyName, { x: propertyValue[0], y: propertyValue[1], z: propertyValue[2] })
 | 
	
		
			
				|  |  | +                        } else if (typeof propertyValue === 'string') {
 | 
	
		
			
				|  |  | +                            aframeObject.setAttribute(propertyName, AFRAME.utils.coordinates.parse(propertyValue))
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                },
 | 
	
		
			
				|  |  | +                setFromValue: function (propertyValue) {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    var value = goog.vec.Vec3.create();
 | 
	
		
			
				|  |  | +                    if (propertyValue.hasOwnProperty('x')) {
 | 
	
		
			
				|  |  | +                        value = goog.vec.Vec3.createFromValues(propertyValue.x, propertyValue.y, propertyValue.z)
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    else if (Array.isArray(propertyValue) || propertyValue instanceof Float32Array) {
 | 
	
		
			
				|  |  | +                        value = goog.vec.Vec3.createFromArray(propertyValue);
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    else if (typeof propertyValue === 'string') {
 | 
	
		
			
				|  |  | +                        let val = AFRAME.utils.coordinates.parse(propertyValue);
 | 
	
		
			
				|  |  | +                        value = goog.vec.Vec3.createFromValues(val.x, val.y, val.z)
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    return value
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |              };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              this.state.kernel = this.kernel.kernel.kernel;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              this.aframeDef = {
 | 
	
		
			
				|  |  | -                'A-BOX':    [
 | 
	
		
			
				|  |  | +                'A-BOX': [
 | 
	
		
			
				|  |  |                      'depth', 'height', 'segments-depth',
 | 
	
		
			
				|  |  |                      'segments-height', 'segments-width',
 | 
	
		
			
				|  |  |                      'width'],
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  'A-SPHERE': [
 | 
	
		
			
				|  |  | -                    'phi-length', 'phi-start', 'radius', 
 | 
	
		
			
				|  |  | +                    'phi-length', 'phi-start', 'radius',
 | 
	
		
			
				|  |  |                      'segments-depth',
 | 
	
		
			
				|  |  |                      'segments-height', 'segments-width',
 | 
	
		
			
				|  |  |                      'theta-length', 'theta-start'
 | 
	
		
			
				|  |  |                  ],
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  'A-CYLINDER': [
 | 
	
		
			
				|  |  | -                   'height', 'radius',
 | 
	
		
			
				|  |  | +                    'height', 'radius',
 | 
	
		
			
				|  |  |                      'open-ended', 'radius-bottom', 'radius-top',
 | 
	
		
			
				|  |  |                      'segments-height', 'segments-radial',
 | 
	
		
			
				|  |  |                      'theta-length', 'theta-start'
 | 
	
	
		
			
				|  | @@ -123,36 +124,36 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 | 
	
		
			
				|  |  |                  ],
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  'A-PLANE': [
 | 
	
		
			
				|  |  | -                    'height', 'segments-height', 'segments-width','width'
 | 
	
		
			
				|  |  | +                    'height', 'segments-height', 'segments-width', 'width'
 | 
	
		
			
				|  |  |                  ],
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  'A-TEXT': [
 | 
	
		
			
				|  |  | -                        'align', 'alpha-test', 'anchor',
 | 
	
		
			
				|  |  | -                        'baseline', 'color', 'font',
 | 
	
		
			
				|  |  | -                        'font-image', 'height',
 | 
	
		
			
				|  |  | -                        'letter-spacing', 'line-height',
 | 
	
		
			
				|  |  | -                        'opacity', 'shader',
 | 
	
		
			
				|  |  | -                        'side', 'tab-size',
 | 
	
		
			
				|  |  | -                        'transparent', 'value',
 | 
	
		
			
				|  |  | -                        'white-space', 'width',
 | 
	
		
			
				|  |  | -                        'wrap-count', 'wrap-pixels',
 | 
	
		
			
				|  |  | -                        'z-offset'
 | 
	
		
			
				|  |  | -                    ],
 | 
	
		
			
				|  |  | +                    'align', 'alpha-test', 'anchor',
 | 
	
		
			
				|  |  | +                    'baseline', 'color', 'font',
 | 
	
		
			
				|  |  | +                    'font-image', 'height',
 | 
	
		
			
				|  |  | +                    'letter-spacing', 'line-height',
 | 
	
		
			
				|  |  | +                    'opacity', 'shader',
 | 
	
		
			
				|  |  | +                    'side', 'tab-size',
 | 
	
		
			
				|  |  | +                    'transparent', 'value',
 | 
	
		
			
				|  |  | +                    'white-space', 'width',
 | 
	
		
			
				|  |  | +                    'wrap-count', 'wrap-pixels',
 | 
	
		
			
				|  |  | +                    'z-offset'
 | 
	
		
			
				|  |  | +                ],
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  'A-SKY': [
 | 
	
		
			
				|  |  | -                    'phi-length', 'phi-start', 'radius','segments-height',
 | 
	
		
			
				|  |  | +                    'phi-length', 'phi-start', 'radius', 'segments-height',
 | 
	
		
			
				|  |  |                      'segments-width',
 | 
	
		
			
				|  |  |                      'theta-length', 'theta-start',
 | 
	
		
			
				|  |  | -                    ],
 | 
	
		
			
				|  |  | +                ],
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  'A-LIGHT': [
 | 
	
		
			
				|  |  |                      'angle', 'color', 'decay', 'distance',
 | 
	
		
			
				|  |  |                      'ground-color', 'intensity', 'penumbra',
 | 
	
		
			
				|  |  |                      'type', 'target'
 | 
	
		
			
				|  |  | -                    ]
 | 
	
		
			
				|  |  | +                ]
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -           
 | 
	
		
			
				|  |  | -            
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          },
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -212,9 +213,9 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  if (isAEntityDefinition(node.prototypes)) {
 | 
	
		
			
				|  |  |                      //updateStoredTransform( node );
 | 
	
		
			
				|  |  | -                    updateStoredTransformFor(node,'position');
 | 
	
		
			
				|  |  | -                    updateStoredTransformFor(node,'rotation');
 | 
	
		
			
				|  |  | -                    updateStoredTransformFor(node,'scale');
 | 
	
		
			
				|  |  | +                    updateStoredTransformFor(node, 'position');
 | 
	
		
			
				|  |  | +                    updateStoredTransformFor(node, 'rotation');
 | 
	
		
			
				|  |  | +                    updateStoredTransformFor(node, 'scale');
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  //notifyDriverOfPrototypeAndBehaviorProps();
 | 
	
	
		
			
				|  | @@ -259,30 +260,30 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // -- callingMethod ------------------------------------------------------------------------
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        callingMethod: function( nodeID, methodName, methodParameters ) {
 | 
	
		
			
				|  |  | +        callingMethod: function (nodeID, methodName, methodParameters) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              var node = this.state.nodes[nodeID];
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            if(!node) return;
 | 
	
		
			
				|  |  | +            if (!node) return;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            if (node && node.aframeObj ) {
 | 
	
		
			
				|  |  | +            if (node && node.aframeObj) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  if (methodName == 'lookAt') {
 | 
	
		
			
				|  |  | -                    console.log('lookAt: ' +  methodParameters[0]);
 | 
	
		
			
				|  |  | +                    console.log('lookAt: ' + methodParameters[0]);
 | 
	
		
			
				|  |  |                      let target = methodParameters[0];
 | 
	
		
			
				|  |  |                      node.aframeObj.object3D.lookAt(new THREE.Vector3(target.x, target.y, target.z));
 | 
	
		
			
				|  |  |                      let newRotation = node.aframeObj.getAttribute('rotation');
 | 
	
		
			
				|  |  | -                    self.kernel.setProperty(nodeID, "rotation", {x: 0, y: newRotation.y, z: 0}); 
 | 
	
		
			
				|  |  | +                    self.kernel.setProperty(nodeID, "rotation", { x: 0, y: newRotation.y, z: 0 });
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  if (methodName == 'worldRotation') {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                    var worldQuat =  new THREE.Quaternion();
 | 
	
		
			
				|  |  | -                    node.aframeObj.object3D.getWorldQuaternion(worldQuat); 
 | 
	
		
			
				|  |  | +                    var worldQuat = new THREE.Quaternion();
 | 
	
		
			
				|  |  | +                    node.aframeObj.object3D.getWorldQuaternion(worldQuat);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                      let angle = (new THREE.Euler()).setFromQuaternion(worldQuat, 'YXZ');
 | 
	
		
			
				|  |  |                      let rotation = (new THREE.Vector3(THREE.Math.radToDeg(angle.x),
 | 
	
		
			
				|  |  | -                    THREE.Math.radToDeg(angle.y), THREE.Math.radToDeg(angle.z) ));
 | 
	
		
			
				|  |  | +                        THREE.Math.radToDeg(angle.y), THREE.Math.radToDeg(angle.z)));
 | 
	
		
			
				|  |  |                      return rotation
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  }
 | 
	
	
		
			
				|  | @@ -298,7 +299,7 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -           
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          },
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -316,25 +317,25 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 | 
	
		
			
				|  |  |                  if (!childNode) return;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            if (childNode !== undefined) {
 | 
	
		
			
				|  |  | +                if (childNode !== undefined) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                if (childNode.children) {
 | 
	
		
			
				|  |  | +                    if (childNode.children) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                    for (var i = 0; i < childNode.children.length; i++) {
 | 
	
		
			
				|  |  | -                        this.deletingNode(childNode.children[i]);
 | 
	
		
			
				|  |  | +                        for (var i = 0; i < childNode.children.length; i++) {
 | 
	
		
			
				|  |  | +                            this.deletingNode(childNode.children[i]);
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    if (childNode.aframeObj !== undefined) {
 | 
	
		
			
				|  |  | +                        // removes and destroys object
 | 
	
		
			
				|  |  | +                        childNode.aframeObj.parentNode.removeChild(childNode.aframeObj);
 | 
	
		
			
				|  |  | +                        childNode.aframeObj = undefined;
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                if (childNode.aframeObj !== undefined) {
 | 
	
		
			
				|  |  | -                    // removes and destroys object
 | 
	
		
			
				|  |  | -                    childNode.aframeObj.parentNode.removeChild(childNode.aframeObj);
 | 
	
		
			
				|  |  | -                    childNode.aframeObj = undefined;
 | 
	
		
			
				|  |  | +                    delete this.state.nodes[nodeID];
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                delete this.state.nodes[nodeID];
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  |          },
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -376,10 +377,10 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                          case "position":
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                        var position = this.state.setFromValue(propertyValue || []); //goog.vec.Vec3.createFromArray( propertyValue || [] );
 | 
	
		
			
				|  |  | +                            var position = this.state.setFromValue(propertyValue || []); //goog.vec.Vec3.createFromArray( propertyValue || [] );
 | 
	
		
			
				|  |  |                              node.transform.position = goog.vec.Vec3.clone(position);
 | 
	
		
			
				|  |  |                              //value = propertyValue;
 | 
	
		
			
				|  |  | -                            node.transform.storedPositionDirty = true; 
 | 
	
		
			
				|  |  | +                            node.transform.storedPositionDirty = true;
 | 
	
		
			
				|  |  |                              //setTransformsDirty( threeObject );
 | 
	
		
			
				|  |  |                              //this.state.setAFrameProperty('position', propertyValue, aframeObject);
 | 
	
		
			
				|  |  |                              break;
 | 
	
	
		
			
				|  | @@ -389,32 +390,32 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 | 
	
		
			
				|  |  |                              var rotation = this.state.setFromValue(propertyValue || []); //goog.vec.Vec3.createFromArray( propertyValue || [] );
 | 
	
		
			
				|  |  |                              node.transform.rotation = goog.vec.Vec3.clone(rotation);
 | 
	
		
			
				|  |  |                              //value = propertyValue;
 | 
	
		
			
				|  |  | -                            node.transform.storedRotationDirty = true; 
 | 
	
		
			
				|  |  | +                            node.transform.storedRotationDirty = true;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                              //this.state.setAFrameProperty('rotation', propertyValue, aframeObject);
 | 
	
		
			
				|  |  |                              break;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                          case "scale":
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                        var scale = this.state.setFromValue(propertyValue || []); //goog.vec.Vec3.createFromArray( propertyValue || [] );
 | 
	
		
			
				|  |  | -                        node.transform.scale = goog.vec.Vec3.clone(scale);
 | 
	
		
			
				|  |  | -                        //value = propertyValue;
 | 
	
		
			
				|  |  | -                        node.transform.storedScaleDirty = true; 
 | 
	
		
			
				|  |  | -                        //setTransformsDirty( threeObject );
 | 
	
		
			
				|  |  | -                        //this.state.setAFrameProperty('position', propertyValue, aframeObject);
 | 
	
		
			
				|  |  | +                            var scale = this.state.setFromValue(propertyValue || []); //goog.vec.Vec3.createFromArray( propertyValue || [] );
 | 
	
		
			
				|  |  | +                            node.transform.scale = goog.vec.Vec3.clone(scale);
 | 
	
		
			
				|  |  | +                            //value = propertyValue;
 | 
	
		
			
				|  |  | +                            node.transform.storedScaleDirty = true;
 | 
	
		
			
				|  |  | +                            //setTransformsDirty( threeObject );
 | 
	
		
			
				|  |  | +                            //this.state.setAFrameProperty('position', propertyValue, aframeObject);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                        //this.state.setAFrameProperty('scale', propertyValue, aframeObject);
 | 
	
		
			
				|  |  | +                            //this.state.setAFrameProperty('scale', propertyValue, aframeObject);
 | 
	
		
			
				|  |  |                              break;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                          case "animationTimeUpdated":
 | 
	
		
			
				|  |  | -                                if (node.transform) {
 | 
	
		
			
				|  |  | -                                    node.transform.storedPositionDirty = true; 
 | 
	
		
			
				|  |  | -                                    node.transform.storedRotationDirty = true;
 | 
	
		
			
				|  |  | -                                    node.transform.storedScaleDirty = true;
 | 
	
		
			
				|  |  | -                                }
 | 
	
		
			
				|  |  | -                                
 | 
	
		
			
				|  |  | -                        break;
 | 
	
		
			
				|  |  | +                            if (node.transform) {
 | 
	
		
			
				|  |  | +                                node.transform.storedPositionDirty = true;
 | 
	
		
			
				|  |  | +                                node.transform.storedRotationDirty = true;
 | 
	
		
			
				|  |  | +                                node.transform.storedScaleDirty = true;
 | 
	
		
			
				|  |  | +                            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                            break;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                          case "clickable":
 | 
	
		
			
				|  |  |                              if (propertyValue) {
 | 
	
	
		
			
				|  | @@ -427,7 +428,7 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                          case "ownedBy":
 | 
	
		
			
				|  |  | -                                aframeObject.setAttribute('ownedby', propertyValue);
 | 
	
		
			
				|  |  | +                            aframeObject.setAttribute('ownedby', propertyValue);
 | 
	
		
			
				|  |  |                              break;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                          case "visible":
 | 
	
	
		
			
				|  | @@ -470,11 +471,11 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                          case "itemID":
 | 
	
		
			
				|  |  |                              aframeObject.setAttribute('id', propertyValue);
 | 
	
		
			
				|  |  | -                        break;
 | 
	
		
			
				|  |  | +                            break;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                          case "itemSrc":
 | 
	
		
			
				|  |  |                              aframeObject.setAttribute('src', propertyValue);
 | 
	
		
			
				|  |  | -                        break;
 | 
	
		
			
				|  |  | +                            break;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                          default:
 | 
	
		
			
				|  |  |                              value = undefined;
 | 
	
	
		
			
				|  | @@ -489,11 +490,11 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                          case "itemID":
 | 
	
		
			
				|  |  |                              aframeObject.setAttribute('id', propertyValue);
 | 
	
		
			
				|  |  | -                        break;
 | 
	
		
			
				|  |  | +                            break;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                          case "itemSrc":
 | 
	
		
			
				|  |  |                              aframeObject.setAttribute('src', propertyValue);
 | 
	
		
			
				|  |  | -                        break;
 | 
	
		
			
				|  |  | +                            break;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                          // case "width":
 | 
	
		
			
				|  |  |                          //     aframeObject.width = propertyValue;
 | 
	
	
		
			
				|  | @@ -516,11 +517,11 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                          case "itemID":
 | 
	
		
			
				|  |  |                              aframeObject.setAttribute('id', propertyValue);
 | 
	
		
			
				|  |  | -                        break;
 | 
	
		
			
				|  |  | +                            break;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                          case "itemSrc":
 | 
	
		
			
				|  |  |                              aframeObject.setAttribute('src', propertyValue);
 | 
	
		
			
				|  |  | -                        break;
 | 
	
		
			
				|  |  | +                            break;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                          default:
 | 
	
		
			
				|  |  |                              value = undefined;
 | 
	
	
		
			
				|  | @@ -535,11 +536,11 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                          case "itemID":
 | 
	
		
			
				|  |  |                              aframeObject.setAttribute('id', propertyValue);
 | 
	
		
			
				|  |  | -                        break;
 | 
	
		
			
				|  |  | +                            break;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                          case "itemSrc":
 | 
	
		
			
				|  |  |                              aframeObject.setAttribute('src', propertyValue);
 | 
	
		
			
				|  |  | -                        break;
 | 
	
		
			
				|  |  | +                            break;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                          default:
 | 
	
		
			
				|  |  |                              value = undefined;
 | 
	
	
		
			
				|  | @@ -563,7 +564,7 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 | 
	
		
			
				|  |  |                          element == propertyName ? aframeObject.setAttribute(element, propertyValue) :
 | 
	
		
			
				|  |  |                              value = undefined;
 | 
	
		
			
				|  |  |                      })
 | 
	
		
			
				|  |  | -                   
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  if (value === undefined && aframeObject.nodeName == "A-SCENE") {
 | 
	
	
		
			
				|  | @@ -572,12 +573,12 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 | 
	
		
			
				|  |  |                      switch (propertyName) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                          case "color":
 | 
	
		
			
				|  |  | -                        aframeObject.setAttribute('background', {'color': propertyValue} );
 | 
	
		
			
				|  |  | -                        break;
 | 
	
		
			
				|  |  | +                            aframeObject.setAttribute('background', { 'color': propertyValue });
 | 
	
		
			
				|  |  | +                            break;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                          case "transparent":
 | 
	
		
			
				|  |  | -                        aframeObject.setAttribute('background', {'transparent': propertyValue} );
 | 
	
		
			
				|  |  | -                        break;
 | 
	
		
			
				|  |  | +                            aframeObject.setAttribute('background', { 'transparent': propertyValue });
 | 
	
		
			
				|  |  | +                            break;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                          // case "fog":
 | 
	
		
			
				|  |  |                          //     aframeObject.setAttribute('fog', propertyValue);
 | 
	
	
		
			
				|  | @@ -591,28 +592,28 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 | 
	
		
			
				|  |  |                              var assetsElement = document.querySelector('a-assets');
 | 
	
		
			
				|  |  |                              if (propertyValue) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                                let path =  JSON.parse(localStorage.getItem('lcs_app')).path.public_path;
 | 
	
		
			
				|  |  | +                                let path = JSON.parse(localStorage.getItem('lcs_app')).path.public_path;
 | 
	
		
			
				|  |  |                                  let worldName = path.slice(1);
 | 
	
		
			
				|  |  |                                  let dbPath = propertyValue.split(".").join("_");
 | 
	
		
			
				|  |  | -                                
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                                  _LCS_WORLD_USER.get('worlds').get(worldName).get(dbPath).once().then(response => {
 | 
	
		
			
				|  |  |                                      if (response) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                                    console.log(JSON.parse(response.file));
 | 
	
		
			
				|  |  | -                                    let assets = JSON.parse(response.file);
 | 
	
		
			
				|  |  | -                                    for (var prop in assets) {
 | 
	
		
			
				|  |  | -                                        var elm = document.createElement(assets[prop].tag);
 | 
	
		
			
				|  |  | -                                        elm.setAttribute('id', prop);
 | 
	
		
			
				|  |  | -                                        elm.setAttribute('src', assets[prop].src);
 | 
	
		
			
				|  |  | -                                        assetsElement.appendChild(elm);
 | 
	
		
			
				|  |  | +                                        console.log(JSON.parse(response.file));
 | 
	
		
			
				|  |  | +                                        let assets = JSON.parse(response.file);
 | 
	
		
			
				|  |  | +                                        for (var prop in assets) {
 | 
	
		
			
				|  |  | +                                            var elm = document.createElement(assets[prop].tag);
 | 
	
		
			
				|  |  | +                                            elm.setAttribute('id', prop);
 | 
	
		
			
				|  |  | +                                            elm.setAttribute('src', assets[prop].src);
 | 
	
		
			
				|  |  | +                                            assetsElement.appendChild(elm);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                                    }
 | 
	
		
			
				|  |  | +                                        }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                                     }
 | 
	
		
			
				|  |  | +                                    }
 | 
	
		
			
				|  |  |                                  });
 | 
	
		
			
				|  |  | -                    
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                                  // httpGetJson(propertyValue).then(function (response) {
 | 
	
		
			
				|  |  |                                  //     console.log(JSON.parse(response));
 | 
	
	
		
			
				|  | @@ -639,9 +640,9 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -   
 | 
	
		
			
				|  |  | -   
 | 
	
		
			
				|  |  | -                
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  if (value === undefined && aframeObject.nodeName == "A-BOX") {
 | 
	
	
		
			
				|  | @@ -672,7 +673,7 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                          default:
 | 
	
		
			
				|  |  |                              value = undefined;
 | 
	
		
			
				|  |  | -                            break; 
 | 
	
		
			
				|  |  | +                            break;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -815,11 +816,11 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 | 
	
		
			
				|  |  |                              aframeObject.setAttribute('user-height', propertyValue);
 | 
	
		
			
				|  |  |                              break;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                            case "look-controls-enabled":
 | 
	
		
			
				|  |  | +                        case "look-controls-enabled":
 | 
	
		
			
				|  |  |                              aframeObject.setAttribute('look-controls-enabled', propertyValue);
 | 
	
		
			
				|  |  |                              break;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                            case "wasd-controls-enabled":
 | 
	
		
			
				|  |  | +                        case "wasd-controls-enabled":
 | 
	
		
			
				|  |  |                              aframeObject.setAttribute('wasd-controls-enabled', propertyValue);
 | 
	
		
			
				|  |  |                              break;
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -884,51 +885,51 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                              if (node.transform.position) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                            if ( node.transform.storedPositionDirty ) {
 | 
	
		
			
				|  |  | -                                updateStoredTransformFor( node, 'position' );
 | 
	
		
			
				|  |  | -                            }
 | 
	
		
			
				|  |  | +                                if (node.transform.storedPositionDirty) {
 | 
	
		
			
				|  |  | +                                    updateStoredTransformFor(node, 'position');
 | 
	
		
			
				|  |  | +                                }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                            value = goog.vec.Vec3.clone(node.transform.position);
 | 
	
		
			
				|  |  | -                            //value =  node.transform.position;
 | 
	
		
			
				|  |  | -                        }
 | 
	
		
			
				|  |  | +                                value = goog.vec.Vec3.clone(node.transform.position);
 | 
	
		
			
				|  |  | +                                //value =  node.transform.position;
 | 
	
		
			
				|  |  | +                            }
 | 
	
		
			
				|  |  |                              break;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                          case "rotation":
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                        if (node.transform.rotation) {
 | 
	
		
			
				|  |  | +                            if (node.transform.rotation) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                            if ( node.transform.storedRotationDirty ) {
 | 
	
		
			
				|  |  | -                                updateStoredTransformFor( node, 'rotation' );
 | 
	
		
			
				|  |  | -                            }
 | 
	
		
			
				|  |  | +                                if (node.transform.storedRotationDirty) {
 | 
	
		
			
				|  |  | +                                    updateStoredTransformFor(node, 'rotation');
 | 
	
		
			
				|  |  | +                                }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                            value = goog.vec.Vec3.clone(node.transform.rotation);
 | 
	
		
			
				|  |  | +                                value = goog.vec.Vec3.clone(node.transform.rotation);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                            // var rot = aframeObject.getAttribute('rotation');
 | 
	
		
			
				|  |  | -                            // if (rot !== undefined) {
 | 
	
		
			
				|  |  | -                            //     value = rot//AFRAME.utils.coordinates.stringify(rot);
 | 
	
		
			
				|  |  | -                            // }
 | 
	
		
			
				|  |  | -                        }
 | 
	
		
			
				|  |  | +                                // var rot = aframeObject.getAttribute('rotation');
 | 
	
		
			
				|  |  | +                                // if (rot !== undefined) {
 | 
	
		
			
				|  |  | +                                //     value = rot//AFRAME.utils.coordinates.stringify(rot);
 | 
	
		
			
				|  |  | +                                // }
 | 
	
		
			
				|  |  | +                            }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                              break;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                          case "scale":
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                        if (node.transform.scale) {
 | 
	
		
			
				|  |  | +                            if (node.transform.scale) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                            if ( node.transform.storedScaleDirty ) {
 | 
	
		
			
				|  |  | -                                updateStoredTransformFor( node, 'scale' );
 | 
	
		
			
				|  |  | -                            }
 | 
	
		
			
				|  |  | +                                if (node.transform.storedScaleDirty) {
 | 
	
		
			
				|  |  | +                                    updateStoredTransformFor(node, 'scale');
 | 
	
		
			
				|  |  | +                                }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                            value = goog.vec.Vec3.clone(node.transform.scale);
 | 
	
		
			
				|  |  | -                            // var scale = aframeObject.getAttribute('scale');
 | 
	
		
			
				|  |  | -                            // if (scale !== undefined) {
 | 
	
		
			
				|  |  | -                            //     value = scale//AFRAME.utils.coordinates.stringify(scale);
 | 
	
		
			
				|  |  | -                            // }
 | 
	
		
			
				|  |  | -                        }
 | 
	
		
			
				|  |  | +                                value = goog.vec.Vec3.clone(node.transform.scale);
 | 
	
		
			
				|  |  | +                                // var scale = aframeObject.getAttribute('scale');
 | 
	
		
			
				|  |  | +                                // if (scale !== undefined) {
 | 
	
		
			
				|  |  | +                                //     value = scale//AFRAME.utils.coordinates.stringify(scale);
 | 
	
		
			
				|  |  | +                                // }
 | 
	
		
			
				|  |  | +                            }
 | 
	
		
			
				|  |  |                              break;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                      
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                          case "clickable":
 | 
	
		
			
				|  |  |                              value = node.events.clickable;
 | 
	
	
		
			
				|  | @@ -959,81 +960,81 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -               
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  if (value === undefined && aframeObject.nodeName == "A-ASSET-ITEM") {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                      switch (propertyName) {
 | 
	
		
			
				|  |  | -                        
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |                          case "itemID":
 | 
	
		
			
				|  |  |                              value = aframeObject.getAttribute('id');
 | 
	
		
			
				|  |  | -                        break;
 | 
	
		
			
				|  |  | -                    
 | 
	
		
			
				|  |  | +                            break;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |                          case "itemSrc":
 | 
	
		
			
				|  |  |                              value = aframeObject.getAttribute('src');
 | 
	
		
			
				|  |  | -                        break;
 | 
	
		
			
				|  |  | +                            break;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                      
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  if (value === undefined && aframeObject.nodeName == "IMG") {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                      switch (propertyName) {
 | 
	
		
			
				|  |  | -                        
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |                          case "itemID":
 | 
	
		
			
				|  |  |                              value = aframeObject.getAttribute('id');
 | 
	
		
			
				|  |  | -                        break;
 | 
	
		
			
				|  |  | -                    
 | 
	
		
			
				|  |  | +                            break;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |                          case "itemSrc":
 | 
	
		
			
				|  |  |                              value = aframeObject.getAttribute('src');
 | 
	
		
			
				|  |  | -                        break;
 | 
	
		
			
				|  |  | +                            break;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                          case "width":
 | 
	
		
			
				|  |  |                              value = aframeObject.width;
 | 
	
		
			
				|  |  | -                        break;
 | 
	
		
			
				|  |  | +                            break;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                          case "height":
 | 
	
		
			
				|  |  |                              value = aframeObject.height;
 | 
	
		
			
				|  |  | -                        break;
 | 
	
		
			
				|  |  | -                      
 | 
	
		
			
				|  |  | +                            break;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  if (value === undefined && aframeObject.nodeName == "AUDIO") {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                      switch (propertyName) {
 | 
	
		
			
				|  |  | -                        
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |                          case "itemID":
 | 
	
		
			
				|  |  |                              value = aframeObject.getAttribute('id');
 | 
	
		
			
				|  |  | -                        break;
 | 
	
		
			
				|  |  | -                    
 | 
	
		
			
				|  |  | +                            break;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |                          case "itemSrc":
 | 
	
		
			
				|  |  |                              value = aframeObject.getAttribute('src');
 | 
	
		
			
				|  |  | -                        break;
 | 
	
		
			
				|  |  | +                            break;
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  if (value === undefined && aframeObject.nodeName == "VIDEO") {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                      switch (propertyName) {
 | 
	
		
			
				|  |  | -                        
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |                          case "itemID":
 | 
	
		
			
				|  |  |                              value = aframeObject.getAttribute('id');
 | 
	
		
			
				|  |  | -                        break;
 | 
	
		
			
				|  |  | -                    
 | 
	
		
			
				|  |  | +                            break;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |                          case "itemSrc":
 | 
	
		
			
				|  |  |                              value = aframeObject.getAttribute('src');
 | 
	
		
			
				|  |  | -                        break;
 | 
	
		
			
				|  |  | +                            break;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                          case "videoWidth":
 | 
	
		
			
				|  |  | -                        value = aframeObject.videoWidth;
 | 
	
		
			
				|  |  | -                        break;
 | 
	
		
			
				|  |  | +                            value = aframeObject.videoWidth;
 | 
	
		
			
				|  |  | +                            break;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                          case "videoHeight":
 | 
	
		
			
				|  |  |                              value = aframeObject.videoHeight;
 | 
	
		
			
				|  |  | -                        break;
 | 
	
		
			
				|  |  | -                      
 | 
	
		
			
				|  |  | +                            break;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -1043,23 +1044,23 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 | 
	
		
			
				|  |  |                          // case "fog":
 | 
	
		
			
				|  |  |                          //     value = aframeObject.getAttribute('fog');
 | 
	
		
			
				|  |  |                          //     break;
 | 
	
		
			
				|  |  | -                        
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |                          case "color":
 | 
	
		
			
				|  |  | -                        if (aframeObject.getAttribute('background')) {
 | 
	
		
			
				|  |  | -                            value = aframeObject.getAttribute('background').color;
 | 
	
		
			
				|  |  | -                        }
 | 
	
		
			
				|  |  | +                            if (aframeObject.getAttribute('background')) {
 | 
	
		
			
				|  |  | +                                value = aframeObject.getAttribute('background').color;
 | 
	
		
			
				|  |  | +                            }
 | 
	
		
			
				|  |  |                              break;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                          case "transparent":
 | 
	
		
			
				|  |  | -                        if (aframeObject.getAttribute('background')) {
 | 
	
		
			
				|  |  | -                            value = aframeObject.getAttribute('background').transparent;
 | 
	
		
			
				|  |  | -                        }
 | 
	
		
			
				|  |  | +                            if (aframeObject.getAttribute('background')) {
 | 
	
		
			
				|  |  | +                                value = aframeObject.getAttribute('background').transparent;
 | 
	
		
			
				|  |  | +                            }
 | 
	
		
			
				|  |  |                              break;
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  if (value === undefined && aframeObject.nodeName == "A-SKY") {
 | 
	
		
			
				|  |  | -                    
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |                      self.aframeDef['A-SKY'].forEach(element => {
 | 
	
		
			
				|  |  |                          if (element == propertyName) {
 | 
	
		
			
				|  |  |                              value = aframeObject.getAttribute(element);
 | 
	
	
		
			
				|  | @@ -1068,7 +1069,7 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -               
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  if (value === undefined && aframeObject.nodeName == "A-LIGHT") {
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -1080,11 +1081,11 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                      switch (propertyName) {
 | 
	
		
			
				|  |  |                          case "castShadow":
 | 
	
		
			
				|  |  | -                        value = aframeObject.getAttribute('light').castShadow;
 | 
	
		
			
				|  |  | +                            value = aframeObject.getAttribute('light').castShadow;
 | 
	
		
			
				|  |  |                              break;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                          case "shadowCameraVisible":
 | 
	
		
			
				|  |  | -                        value = aframeObject.getAttribute('light').shadowCameraVisible;
 | 
	
		
			
				|  |  | +                            value = aframeObject.getAttribute('light').shadowCameraVisible;
 | 
	
		
			
				|  |  |                              break;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                      }
 | 
	
	
		
			
				|  | @@ -1092,17 +1093,17 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  if (value === undefined && aframeObject.nodeName == "A-BOX") {
 | 
	
		
			
				|  |  | -    
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |                      self.aframeDef['A-BOX'].forEach(element => {
 | 
	
		
			
				|  |  |                          if (element == propertyName) {
 | 
	
		
			
				|  |  |                              value = aframeObject.getAttribute(element);
 | 
	
		
			
				|  |  |                          }
 | 
	
		
			
				|  |  |                      })
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  if (value === undefined && aframeObject.nodeName == "A-PLANE") {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                   self.aframeDef['A-PLANE'].forEach(element => {
 | 
	
		
			
				|  |  | +                    self.aframeDef['A-PLANE'].forEach(element => {
 | 
	
		
			
				|  |  |                          if (element == propertyName) {
 | 
	
		
			
				|  |  |                              value = aframeObject.getAttribute(element);
 | 
	
		
			
				|  |  |                          }
 | 
	
	
		
			
				|  | @@ -1211,20 +1212,20 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  if (value === undefined && aframeObject.nodeName == "A-SUN-SKY") {
 | 
	
		
			
				|  |  | -                    
 | 
	
		
			
				|  |  | -                    
 | 
	
		
			
				|  |  | -                                        switch (propertyName) {
 | 
	
		
			
				|  |  | -                                            case "sunPosition":
 | 
	
		
			
				|  |  | -                                                value = aframeObject.getAttribute('material').sunPosition;
 | 
	
		
			
				|  |  | -                                                break;
 | 
	
		
			
				|  |  | -                                        }
 | 
	
		
			
				|  |  | -                    
 | 
	
		
			
				|  |  | -                                        //    switch (propertyName) {
 | 
	
		
			
				|  |  | -                                        //         case "active":
 | 
	
		
			
				|  |  | -                                        //             value = aframeObject.getAttribute('camera').active;
 | 
	
		
			
				|  |  | -                                        //             break;
 | 
	
		
			
				|  |  | -                                        //         }
 | 
	
		
			
				|  |  | -                                    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    switch (propertyName) {
 | 
	
		
			
				|  |  | +                        case "sunPosition":
 | 
	
		
			
				|  |  | +                            value = aframeObject.getAttribute('material').sunPosition;
 | 
	
		
			
				|  |  | +                            break;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    //    switch (propertyName) {
 | 
	
		
			
				|  |  | +                    //         case "active":
 | 
	
		
			
				|  |  | +                    //             value = aframeObject.getAttribute('camera').active;
 | 
	
		
			
				|  |  | +                    //             break;
 | 
	
		
			
				|  |  | +                    //         }
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  if (value === undefined && aframeObject.nodeName == "A-COLLADA-MODEL") {
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -1249,13 +1250,13 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  if (value === undefined && aframeObject.nodeName == "A-GLTF-MODEL") {
 | 
	
		
			
				|  |  | -                    
 | 
	
		
			
				|  |  | -                                        switch (propertyName) {
 | 
	
		
			
				|  |  | -                                            case "src":
 | 
	
		
			
				|  |  | -                                                value = aframeObject.getAttribute('src');
 | 
	
		
			
				|  |  | -                                                break;
 | 
	
		
			
				|  |  | -                                        }
 | 
	
		
			
				|  |  | -                                    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    switch (propertyName) {
 | 
	
		
			
				|  |  | +                        case "src":
 | 
	
		
			
				|  |  | +                            value = aframeObject.getAttribute('src');
 | 
	
		
			
				|  |  | +                            break;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -1284,20 +1285,20 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 | 
	
		
			
				|  |  |          } else if (self.state.isAFrameClass(protos, "http://vwf.example.com/aframe/a-asset-item.vwf")) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              let assets = document.querySelector('a-assets');
 | 
	
		
			
				|  |  | -            if (assets){
 | 
	
		
			
				|  |  | +            if (assets) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  aframeObj = document.createElement('a-asset-item');
 | 
	
		
			
				|  |  | -                aframeObj.setAttribute('id', "item-"+GUID());
 | 
	
		
			
				|  |  | +                aframeObj.setAttribute('id', "item-" + GUID());
 | 
	
		
			
				|  |  |                  aframeObj.setAttribute('src', "");
 | 
	
		
			
				|  |  |                  aframeObj.setAttribute('crossorigin', "anonymous");
 | 
	
		
			
				|  |  |                  assets.appendChild(aframeObj);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -        
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          } else if (self.state.isAFrameClass(protos, "http://vwf.example.com/aframe/a-asset-image-item.vwf")) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              let assets = document.querySelector('a-assets');
 | 
	
		
			
				|  |  | -            if (assets){
 | 
	
		
			
				|  |  | -                let elID = "item-"+GUID();
 | 
	
		
			
				|  |  | +            if (assets) {
 | 
	
		
			
				|  |  | +                let elID = "item-" + GUID();
 | 
	
		
			
				|  |  |                  aframeObj = document.createElement('img');
 | 
	
		
			
				|  |  |                  aframeObj.setAttribute('id', elID);
 | 
	
		
			
				|  |  |                  aframeObj.setAttribute('src', "");
 | 
	
	
		
			
				|  | @@ -1308,10 +1309,10 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 | 
	
		
			
				|  |  |          } else if (self.state.isAFrameClass(protos, "http://vwf.example.com/aframe/a-asset-audio-item.vwf")) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              let assets = document.querySelector('a-assets');
 | 
	
		
			
				|  |  | -            if (assets){
 | 
	
		
			
				|  |  | +            if (assets) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  aframeObj = document.createElement('audio');
 | 
	
		
			
				|  |  | -                aframeObj.setAttribute('id', "item-"+GUID());
 | 
	
		
			
				|  |  | +                aframeObj.setAttribute('id', "item-" + GUID());
 | 
	
		
			
				|  |  |                  aframeObj.setAttribute('src', "");
 | 
	
		
			
				|  |  |                  aframeObj.setAttribute('crossorigin', "anonymous");
 | 
	
		
			
				|  |  |                  assets.appendChild(aframeObj);
 | 
	
	
		
			
				|  | @@ -1321,10 +1322,10 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 | 
	
		
			
				|  |  |          } else if (self.state.isAFrameClass(protos, "http://vwf.example.com/aframe/a-asset-video-item.vwf")) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              let assets = document.querySelector('a-assets');
 | 
	
		
			
				|  |  | -            if (assets){
 | 
	
		
			
				|  |  | +            if (assets) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  aframeObj = document.createElement('video');
 | 
	
		
			
				|  |  | -                aframeObj.setAttribute('id', "item-"+GUID());
 | 
	
		
			
				|  |  | +                aframeObj.setAttribute('id', "item-" + GUID());
 | 
	
		
			
				|  |  |                  aframeObj.setAttribute('src', "");
 | 
	
		
			
				|  |  |                  aframeObj.setAttribute('crossorigin', "anonymous");
 | 
	
		
			
				|  |  |                  aframeObj.setAttribute('autoplay', "");
 | 
	
	
		
			
				|  | @@ -1344,7 +1345,7 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 | 
	
		
			
				|  |  |          } else if (self.state.isAFrameClass(protos, "http://vwf.example.com/aframe/acursor.vwf")) {
 | 
	
		
			
				|  |  |              aframeObj = document.createElement('a-cursor');
 | 
	
		
			
				|  |  |          } else if (self.state.isAFrameClass(protos, "http://vwf.example.com/aframe/a-sun-sky.vwf")) {
 | 
	
		
			
				|  |  | -                aframeObj = document.createElement('a-sun-sky');
 | 
	
		
			
				|  |  | +            aframeObj = document.createElement('a-sun-sky');
 | 
	
		
			
				|  |  |          } else if (self.state.isAFrameClass(protos, "http://vwf.example.com/aframe/abox.vwf")) {
 | 
	
		
			
				|  |  |              aframeObj = document.createElement('a-box');
 | 
	
		
			
				|  |  |          } else if (self.state.isAFrameClass(protos, "http://vwf.example.com/aframe/aplane.vwf")) {
 | 
	
	
		
			
				|  | @@ -1359,7 +1360,7 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 | 
	
		
			
				|  |  |              aframeObj = document.createElement('a-collada-model');
 | 
	
		
			
				|  |  |          } else if (self.state.isAFrameClass(protos, "http://vwf.example.com/aframe/aobjmodel.vwf")) {
 | 
	
		
			
				|  |  |              aframeObj = document.createElement('a-obj-model');
 | 
	
		
			
				|  |  | -         } else if (self.state.isAFrameClass(protos, "http://vwf.example.com/aframe/agltfmodel.vwf")) {
 | 
	
		
			
				|  |  | +        } else if (self.state.isAFrameClass(protos, "http://vwf.example.com/aframe/agltfmodel.vwf")) {
 | 
	
		
			
				|  |  |              aframeObj = document.createElement('a-gltf-model');
 | 
	
		
			
				|  |  |          } else if (self.state.isAFrameClass(protos, "http://vwf.example.com/aframe/asphere.vwf")) {
 | 
	
		
			
				|  |  |              aframeObj = document.createElement('a-sphere');
 | 
	
	
		
			
				|  | @@ -1369,15 +1370,15 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 | 
	
		
			
				|  |  |              aframeObj = document.createElement('a-entity');
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        if (aframeObj.nodeName !== "A-ASSET-ITEM" && 
 | 
	
		
			
				|  |  | -            aframeObj.nodeName !== "IMG" && 
 | 
	
		
			
				|  |  | +        if (aframeObj.nodeName !== "A-ASSET-ITEM" &&
 | 
	
		
			
				|  |  | +            aframeObj.nodeName !== "IMG" &&
 | 
	
		
			
				|  |  |              aframeObj.nodeName !== "AUDIO" &&
 | 
	
		
			
				|  |  |              aframeObj.nodeName !== "VIDEO"
 | 
	
		
			
				|  |  | -        ){
 | 
	
		
			
				|  |  | +        ) {
 | 
	
		
			
				|  |  |              aframeObj.setAttribute('id', node.ID);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -       
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          return aframeObj;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -1395,10 +1396,10 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 | 
	
		
			
				|  |  |                      //console.info( "Adding child: " + childID + " to " + nodeID );
 | 
	
		
			
				|  |  |                      if (node.aframeObj.nodeName !== "A-ASSET-ITEM" &&
 | 
	
		
			
				|  |  |                          node.aframeObj.nodeName !== "IMG" &&
 | 
	
		
			
				|  |  | -                      node.aframeObj.nodeName !== "AUDIO" &&
 | 
	
		
			
				|  |  | -                      node.aframeObj.nodeName !== "VIDEO"
 | 
	
		
			
				|  |  | -                    ){
 | 
	
		
			
				|  |  | -                    parent.aframeObj.appendChild(node.aframeObj);
 | 
	
		
			
				|  |  | +                        node.aframeObj.nodeName !== "AUDIO" &&
 | 
	
		
			
				|  |  | +                        node.aframeObj.nodeName !== "VIDEO"
 | 
	
		
			
				|  |  | +                    ) {
 | 
	
		
			
				|  |  | +                        parent.aframeObj.appendChild(node.aframeObj);
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |              }
 | 
	
	
		
			
				|  | @@ -1411,9 +1412,9 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    function updateStoredTransform( node ) {
 | 
	
		
			
				|  |  | -        
 | 
	
		
			
				|  |  | -        if ( node && node.aframeObj) {
 | 
	
		
			
				|  |  | +    function updateStoredTransform(node) {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        if (node && node.aframeObj) {
 | 
	
		
			
				|  |  |              // Add a local model-side transform that can stay pure even if the view changes the
 | 
	
		
			
				|  |  |              // transform on the threeObject - this already happened in creatingNode for those nodes that
 | 
	
		
			
				|  |  |              // didn't need to load a model
 | 
	
	
		
			
				|  | @@ -1425,60 +1426,38 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              //node.transform.position = AFRAME.utils.coordinates.stringify(node.aframeObj.object3D.position);
 | 
	
		
			
				|  |  |              node.transform.rotation = AFRAME.utils.coordinates.stringify(node.aframeObj.object3D.rotation);
 | 
	
		
			
				|  |  | -            node.storedTransformDirty = false;             
 | 
	
		
			
				|  |  | +            node.storedTransformDirty = false;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -      
 | 
	
		
			
				|  |  | -    }    
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    // function updateStoredTransformFor( node, propertyName ) { 
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    //     if ( node && node.aframeObj) {
 | 
	
		
			
				|  |  | -    //         // Add a local model-side transform that can stay pure even if the view changes the
 | 
	
		
			
				|  |  | -    //         // transform on the threeObject - this already happened in creatingNode for those nodes that
 | 
	
		
			
				|  |  | -    //         // didn't need to load a model
 | 
	
		
			
				|  |  | -    //         if(!node.transform)
 | 
	
		
			
				|  |  | -    //             node.transform = {};
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    //         if (propertyName == 'position' || propertyName == 'rotation' || propertyName == 'scale') {
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    //             let data = (new THREE.Vector3()).copy(node.aframeObj.object3D[propertyName]);
 | 
	
		
			
				|  |  | -    //             node.transform[propertyName] = goog.vec.Vec3.createFromValues(data.x, data.y, data.z);
 | 
	
		
			
				|  |  | -    //             node.transform['stored' + propertyName + 'Dirty'] = false; 
 | 
	
		
			
				|  |  | -    //             //node.transform.storedPositionDirty = false;
 | 
	
		
			
				|  |  | -    //         }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    //     }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -   // }
 | 
	
		
			
				|  |  | +    function updateStoredTransformFor(node, propertyName) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    function updateStoredTransformFor( node, propertyName ) {
 | 
	
		
			
				|  |  | -        
 | 
	
		
			
				|  |  | -        if ( node && node.aframeObj) {
 | 
	
		
			
				|  |  | +        if (node && node.aframeObj) {
 | 
	
		
			
				|  |  |              // Add a local model-side transform that can stay pure even if the view changes the
 | 
	
		
			
				|  |  |              // transform on the threeObject - this already happened in creatingNode for those nodes that
 | 
	
		
			
				|  |  |              // didn't need to load a model
 | 
	
		
			
				|  |  | -            if(!node.transform)
 | 
	
		
			
				|  |  | +            if (!node.transform)
 | 
	
		
			
				|  |  |                  node.transform = {};
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            if (propertyName == 'position'){
 | 
	
		
			
				|  |  | +            if (propertyName == 'position') {
 | 
	
		
			
				|  |  |                  let pos = (new THREE.Vector3()).copy(node.aframeObj.object3D.position);
 | 
	
		
			
				|  |  |                  node.transform.position = goog.vec.Vec3.createFromValues(pos.x, pos.y, pos.z);
 | 
	
		
			
				|  |  | -                node.transform.storedPositionDirty = false; 
 | 
	
		
			
				|  |  | +                node.transform.storedPositionDirty = false;
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -           
 | 
	
		
			
				|  |  | -            if (propertyName == 'rotation'){
 | 
	
		
			
				|  |  | -               // let rot = (new THREE.Vector3()).copy(node.aframeObj.object3D.rotation);
 | 
	
		
			
				|  |  | -               let rot = node.aframeObj.getAttribute('rotation');
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            if (propertyName == 'rotation') {
 | 
	
		
			
				|  |  | +                // let rot = (new THREE.Vector3()).copy(node.aframeObj.object3D.rotation);
 | 
	
		
			
				|  |  | +                let rot = node.aframeObj.getAttribute('rotation');
 | 
	
		
			
				|  |  |                  node.transform.rotation = goog.vec.Vec3.createFromValues(rot.x, rot.y, rot.z);
 | 
	
		
			
				|  |  | -                node.transform.storedRotationDirty = false;   
 | 
	
		
			
				|  |  | +                node.transform.storedRotationDirty = false;
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            if (propertyName == 'scale'){
 | 
	
		
			
				|  |  | +            if (propertyName == 'scale') {
 | 
	
		
			
				|  |  |                  let scale = (new THREE.Vector3()).copy(node.aframeObj.object3D.scale);
 | 
	
		
			
				|  |  |                  node.transform.scale = goog.vec.Vec3.createFromValues(scale.x, scale.y, scale.z);
 | 
	
		
			
				|  |  | -                node.transform.storedScaleDirty = false; 
 | 
	
		
			
				|  |  | +                node.transform.storedScaleDirty = false;
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              //node.transform.position = AFRAME.utils.coordinates.stringify(node.aframeObj.object3D.position);
 | 
	
	
		
			
				|  | @@ -1486,8 +1465,8 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 | 
	
		
			
				|  |  |              // node.transform.rotation = AFRAME.utils.coordinates.stringify(node.aframeObj.object3D.rotation);
 | 
	
		
			
				|  |  |              // node.storedTransformDirty = false;             
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -      
 | 
	
		
			
				|  |  | -    }   
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -1524,8 +1503,6 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |      // Changing this function significantly from the GLGE code
 | 
	
		
			
				|  |  |      // Will search hierarchy down until encountering a matching child
 | 
	
		
			
				|  |  |      // Will look into nodes that don't match.... this might not be desirable
 |