 						childWorldToLocal.unlock();
 				}
 				
-				_flags[childId] = childFlags;
+				_flags[childId]					= childFlags;
+				_worldToLocalUpToDate[childId]	= true;
+				
+				if (child is Group)
+					setDescendantsAsDirty(child as Group, path);
 				
 				var localToWorldTransformChanged : Signal = child.localToWorldTransformChanged;
 				

				_nodeToId[node] = nodeId;
				_idToNode[nodeId] = node;
				_transforms[nodeId] = node.transform;
				
				if (oldNodeId >= 0 && oldNodeId < oldLocalToWorldTransforms.length)
				{

			_flags = new <uint>[];
			_localToWorldTransforms = new <Matrix4x4>[];
			_worldToLocalTransforms = new <Matrix4x4>[];
			_worldToLocalUpToDate = new Vector.<Boolean>();
			_numChildren.length = 0;
			_firstChildId.length = 0;
			_idToNode.length = 0;
