|  | @@ -71,6 +71,24 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 | 
	
		
			
				|  |  |                          }
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |                      return found;
 | 
	
		
			
				|  |  | +                },
 | 
	
		
			
				|  |  | +                 isAEntityComponent: function (prototypes) {
 | 
	
		
			
				|  |  | +                    var found = false;
 | 
	
		
			
				|  |  | +                    if (prototypes) {
 | 
	
		
			
				|  |  | +                        for (var i = 0; i < prototypes.length && !found; i++) {
 | 
	
		
			
				|  |  | +                            found = (prototypes[i] === "http://vwf.example.com/aframe/aentityComponent.vwf");
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    return found;
 | 
	
		
			
				|  |  | +                },
 | 
	
		
			
				|  |  | +                 isAFrameEntityComponent: function (prototypes) {
 | 
	
		
			
				|  |  | +                    var found = false;
 | 
	
		
			
				|  |  | +                    if (prototypes) {
 | 
	
		
			
				|  |  | +                        for (var i = 0; i < prototypes.length && !found; i++) {
 | 
	
		
			
				|  |  | +                            found = (prototypes[i] === "http://vwf.example.com/aframe/aentityComponent.vwf");
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    return found;
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |              };
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -110,7 +128,7 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 | 
	
		
			
				|  |  |              //var kernel = this.kernel.kernel.kernel;
 | 
	
		
			
				|  |  |              var node;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            if (this.state.isAFrameComponent(protos)) {
 | 
	
		
			
				|  |  | +            if (this.state.isAFrameComponent(protos) || this.state.isAEntityComponent(protos)) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  // Create the local copy of the node properties
 | 
	
		
			
				|  |  |                  if (this.state.nodes[childID] === undefined) {
 | 
	
	
		
			
				|  | @@ -121,14 +139,20 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 | 
	
		
			
				|  |  |                  node = this.state.nodes[childID];
 | 
	
		
			
				|  |  |                  node.prototypes = protos;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +                 if ( childType == "component" ){
 | 
	
		
			
				|  |  | +                       if ( nodeID !== undefined ) {
 | 
	
		
			
				|  |  | +                        setAFrameObjectComponents(node);
 | 
	
		
			
				|  |  | +                    } 
 | 
	
		
			
				|  |  | +                } else {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |                  node.aframeObj = createAFrameObject(node);
 | 
	
		
			
				|  |  |                  addNodeToHierarchy(node);
 | 
	
		
			
				|  |  |                  //notifyDriverOfPrototypeAndBehaviorProps();
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |          },
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // -- initializingProperty -----------------------------------------------------------------
 | 
	
	
		
			
				|  | @@ -198,6 +222,40 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 | 
	
		
			
				|  |  |                      
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +                var componentName = "wasd-controls";
 | 
	
		
			
				|  |  | +                 if ( value === undefined && aframeObject.attributes.hasOwnProperty(componentName)) {
 | 
	
		
			
				|  |  | +                    value = propertyValue;
 | 
	
		
			
				|  |  | +                    
 | 
	
		
			
				|  |  | +                    switch ( propertyName ) { 
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                         case "enabled":
 | 
	
		
			
				|  |  | +                            aframeObject.setAttribute(componentName, 'enabled', propertyValue);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                            if (propertyValue){
 | 
	
		
			
				|  |  | +                            //  aframeObject.addEventListener('componentchanged', function (evt) {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                                                // if (evt.detail.name === 'position') {
 | 
	
		
			
				|  |  | +                                                //     self.kernel.fireEvent(node.parentID, "setPosition", evt.detail.newData);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                                                // }
 | 
	
		
			
				|  |  | +                                                // if (evt.detail.name === 'rotation') {
 | 
	
		
			
				|  |  | +                                                //     self.kernel.fireEvent(node.ID, "setRotation", evt.detail.newData);
 | 
	
		
			
				|  |  | +                                                
 | 
	
		
			
				|  |  | +                                                // }
 | 
	
		
			
				|  |  | +                                        //    });
 | 
	
		
			
				|  |  | +                            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                                break;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                        default:
 | 
	
		
			
				|  |  | +                            value = undefined;
 | 
	
		
			
				|  |  | +                            break; 
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                 }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |                   if ( value === undefined && isAEntityDefinition( node.prototypes ) ) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                      value = propertyValue;
 | 
	
	
		
			
				|  | @@ -255,6 +313,14 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 | 
	
		
			
				|  |  |                                      aframeObject.setAttribute('repeat', propertyValue);
 | 
	
		
			
				|  |  |                                      break;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                                  case "look-controls-enabled":
 | 
	
		
			
				|  |  | +                                        aframeObject.setAttribute('look-controls', 'enabled', propertyValue);
 | 
	
		
			
				|  |  | +                                        break;
 | 
	
		
			
				|  |  | +                                 case "wasd-controls":
 | 
	
		
			
				|  |  | +                                        aframeObject.setAttribute('wasd-controls', 'enabled', propertyValue);
 | 
	
		
			
				|  |  | +                                        break;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |                          default:
 | 
	
		
			
				|  |  |                              value = undefined;
 | 
	
		
			
				|  |  |                              break; 
 | 
	
	
		
			
				|  | @@ -424,23 +490,23 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 | 
	
		
			
				|  |  |                           value = propertyValue;
 | 
	
		
			
				|  |  |                            switch (propertyName) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                                    case "look-controls-enabled":
 | 
	
		
			
				|  |  | -                                        aframeObject.setAttribute('look-controls', 'enabled', propertyValue);
 | 
	
		
			
				|  |  | -                                        break;
 | 
	
		
			
				|  |  | +                                    case "activeForAvatar":
 | 
	
		
			
				|  |  | +                                       console.log("set active camera to view");
 | 
	
		
			
				|  |  | +                                       break;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                                      case "forAvatar":
 | 
	
		
			
				|  |  |                                          if (propertyValue) {
 | 
	
		
			
				|  |  | -                                            aframeObject.addEventListener('componentchanged', function (evt) {
 | 
	
		
			
				|  |  | +                                            // aframeObject.addEventListener('componentchanged', function (evt) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                                                if (evt.detail.name === 'position') {
 | 
	
		
			
				|  |  | -                                                    self.kernel.fireEvent(node.ID, "setAvatarPosition", evt.detail.newData);
 | 
	
		
			
				|  |  | +                                            //     if (evt.detail.name === 'position') {
 | 
	
		
			
				|  |  | +                                            //         self.kernel.fireEvent(node.ID, "setAvatarPosition", evt.detail.newData);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                                                }
 | 
	
		
			
				|  |  | -                                                if (evt.detail.name === 'rotation') {
 | 
	
		
			
				|  |  | -                                                    self.kernel.fireEvent(node.ID, "setAvatarRotation", evt.detail.newData);
 | 
	
		
			
				|  |  | -                                                    //console.log('Entity has moved from', evt.detail.oldData, 'to', evt.detail.newData, '!');
 | 
	
		
			
				|  |  | -                                                }
 | 
	
		
			
				|  |  | -                                            });
 | 
	
		
			
				|  |  | +                                            //     }
 | 
	
		
			
				|  |  | +                                            //     if (evt.detail.name === 'rotation') {
 | 
	
		
			
				|  |  | +                                            //         self.kernel.fireEvent(node.ID, "setAvatarRotation", evt.detail.newData);
 | 
	
		
			
				|  |  | +                                                
 | 
	
		
			
				|  |  | +                                            //     }
 | 
	
		
			
				|  |  | +                                            // });
 | 
	
		
			
				|  |  |                                          }
 | 
	
		
			
				|  |  |                                          break;
 | 
	
		
			
				|  |  |                      
 | 
	
	
		
			
				|  | @@ -478,6 +544,22 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 | 
	
		
			
				|  |  |                           }
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                if ( value === undefined && aframeObject.attributes.hasOwnProperty("wasd-controls")) {
 | 
	
		
			
				|  |  | +                    value = propertyValue;
 | 
	
		
			
				|  |  | +                    
 | 
	
		
			
				|  |  | +                    switch ( propertyName ) { 
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                         case "enabled":
 | 
	
		
			
				|  |  | +                                        aframeObject.setAttribute('wasd-controls', 'enabled', propertyValue);
 | 
	
		
			
				|  |  | +                                        break;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                 }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |                  if ( value === undefined && isAEntityDefinition( node.prototypes ) ) {
 | 
	
		
			
				|  |  |                      
 | 
	
		
			
				|  |  |                      switch ( propertyName ) { 
 | 
	
	
		
			
				|  | @@ -537,6 +619,19 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 | 
	
		
			
				|  |  |                              case "repeat":
 | 
	
		
			
				|  |  |                                  value = aframeObject.getAttribute('repeat');
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +                             case "look-controls-enabled":
 | 
	
		
			
				|  |  | +                                 var look = aframeObject.getAttribute('look-controls-enabled');
 | 
	
		
			
				|  |  | +                            if (look !== null && look !== undefined) {
 | 
	
		
			
				|  |  | +                                    value = aframeObject.getAttribute('look-controls').enabled;
 | 
	
		
			
				|  |  | +                            }
 | 
	
		
			
				|  |  | +                                    break;
 | 
	
		
			
				|  |  | +                            case "wasd-controls":
 | 
	
		
			
				|  |  | +                              var wasd = aframeObject.getAttribute('wasd-controls');
 | 
	
		
			
				|  |  | +                            if (wasd !== null && wasd !== undefined) {
 | 
	
		
			
				|  |  | +                                    value = aframeObject.getAttribute('wasd-controls').enabled;
 | 
	
		
			
				|  |  | +                            }
 | 
	
		
			
				|  |  | +                                    break;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -623,9 +718,7 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 | 
	
		
			
				|  |  |                   if ( value === undefined && aframeObject.nodeName == "A-CAMERA" ) {
 | 
	
		
			
				|  |  |          
 | 
	
		
			
				|  |  |                             switch (propertyName) {
 | 
	
		
			
				|  |  | -                                case "look-controls-enabled":
 | 
	
		
			
				|  |  | -                                    value = aframeObject.getAttribute('look-controls').enabled;
 | 
	
		
			
				|  |  | -                                    break;
 | 
	
		
			
				|  |  | +                               
 | 
	
		
			
				|  |  |                                  }
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -648,6 +741,17 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      });
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +function setAFrameObjectComponents(node, config) {
 | 
	
		
			
				|  |  | +    let protos = node.prototypes;
 | 
	
		
			
				|  |  | +    let parentNode = self.state.nodes[node.parentID];
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    if (self.state.isAFrameClass(protos, "http://vwf.example.com/aframe/wasd-controls.vwf")) {
 | 
	
		
			
				|  |  | +        parentNode.aframeObj.setAttribute('wasd-controls', {});
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    node.aframeObj = parentNode.aframeObj;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  function createAFrameObject(node, config) {
 | 
	
		
			
				|  |  |      var protos = node.prototypes;
 | 
	
		
			
				|  |  |      var aframeObj = undefined;
 | 
	
	
		
			
				|  | @@ -678,7 +782,7 @@ function createAFrameObject(node, config) {
 | 
	
		
			
				|  |  |      } else if (self.state.isAFrameClass(protos, "http://vwf.example.com/aframe/aentity.vwf")) {
 | 
	
		
			
				|  |  |          aframeObj = document.createElement('a-entity');
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +    aframeObj.setAttribute('id', node.ID);
 | 
	
		
			
				|  |  |      return aframeObj;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 |