|  | @@ -199,6 +199,7 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 | 
	
		
			
				|  |  |                      //updateStoredTransform( node );
 | 
	
		
			
				|  |  |                      updateStoredTransformFor(node,'position');
 | 
	
		
			
				|  |  |                      updateStoredTransformFor(node,'rotation');
 | 
	
		
			
				|  |  | +                    updateStoredTransformFor(node,'scale');
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  //notifyDriverOfPrototypeAndBehaviorProps();
 | 
	
	
		
			
				|  | @@ -363,7 +364,7 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 | 
	
		
			
				|  |  |                          var position = 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;
 | 
	
	
		
			
				|  | @@ -373,20 +374,29 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 | 
	
		
			
				|  |  |                              var rotation = 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":
 | 
	
		
			
				|  |  | -                        this.state.setAFrameProperty('scale', propertyValue, aframeObject);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                        var scale = 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);
 | 
	
		
			
				|  |  |                              break;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                          case "animationTimeUpdated":
 | 
	
		
			
				|  |  |                                  if (node.transform) {
 | 
	
		
			
				|  |  | -                                    node.transform.storedPositionDirty = true; 
 | 
	
		
			
				|  |  | -                                    node.transform.storedRotationDirty = true;
 | 
	
		
			
				|  |  | +                                    node.transform.storedpositionDirty = true; 
 | 
	
		
			
				|  |  | +                                    node.transform.storedrotationDirty = true;
 | 
	
		
			
				|  |  | +                                    node.transform.storedscaleDirty = true;
 | 
	
		
			
				|  |  |                                  }
 | 
	
		
			
				|  |  |                                  
 | 
	
		
			
				|  |  |                          break;
 | 
	
	
		
			
				|  | @@ -854,7 +864,7 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                              if (node.transform.position) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                            if ( node.transform.storedPositionDirty ) {
 | 
	
		
			
				|  |  | +                            if ( node.transform.storedpositionDirty ) {
 | 
	
		
			
				|  |  |                                  updateStoredTransformFor( node, 'position' );
 | 
	
		
			
				|  |  |                              }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -867,7 +877,7 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                          if (node.transform.rotation) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                            if ( node.transform.storedRotationDirty ) {
 | 
	
		
			
				|  |  | +                            if ( node.transform.storedrotationDirty ) {
 | 
	
		
			
				|  |  |                                  updateStoredTransformFor( node, 'rotation' );
 | 
	
		
			
				|  |  |                              }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -883,10 +893,19 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                          case "scale":
 | 
	
		
			
				|  |  | -                            var scale = aframeObject.getAttribute('scale');
 | 
	
		
			
				|  |  | -                            if (scale !== undefined) {
 | 
	
		
			
				|  |  | -                                value = scale//AFRAME.utils.coordinates.stringify(scale);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                        if (node.transform.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);
 | 
	
		
			
				|  |  | +                            // }
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  |                              break;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                        
 | 
	
	
		
			
				|  | @@ -1403,6 +1422,28 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 | 
	
		
			
				|  |  |      }    
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    // 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 ) {
 | 
	
		
			
				|  |  |          
 | 
	
		
			
				|  |  |          if ( node && node.aframeObj) {
 | 
	
	
		
			
				|  | @@ -1425,6 +1466,12 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
 | 
	
		
			
				|  |  |                  node.transform.storedRotationDirty = false;   
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +            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.storedPositionDirty = false; 
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |              //node.transform.position = AFRAME.utils.coordinates.stringify(node.aframeObj.object3D.position);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              // node.transform.rotation = AFRAME.utils.coordinates.stringify(node.aframeObj.object3D.rotation);
 |