 						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;
 				

					localToWorldTransformChanged.execute(child, childLocalToWorld);
				
				localToWorld = childLocalToWorld;
			}
		}
		

			{
				if ((_transforms[tmpNodeId] as Matrix4x4)._hasChanged 
					|| (tmpNodeId != nodeId && _localToWorldTransforms[tmpNodeId]._hasChanged)
					|| !(_flags[nodeId] & FLAG_INIT_LOCAL_TO_WORLD)
					|| !_worldToLocalUpToDate[tmpNodeId])
					dirtyRoot = tmpNodeId;
				
				path[numNodes] = tmpNodeId;
