+void Node::AddUniformMapping( UniformPropertyMapping* map )
+{
+ PropertyOwner::AddUniformMapping( map );
+ mRegenerateUniformMap = 2;
+}
+
+void Node::RemoveUniformMapping( const std::string& uniformName )
+{
+ PropertyOwner::RemoveUniformMapping( uniformName );
+ mRegenerateUniformMap = 2;
+}
+
+void Node::PrepareRender( BufferIndex bufferIndex )
+{
+ if(mRegenerateUniformMap != 0 )
+ {
+ if( mRegenerateUniformMap == 2 )
+ {
+ CollectedUniformMap& localMap = mCollectedUniformMap[ bufferIndex ];
+ localMap.Resize(0);
+
+ for( unsigned int i=0, count=mUniformMaps.Count(); i<count; ++i )
+ {
+ localMap.PushBack( &mUniformMaps[i] );
+ }
+ }
+ else if( mRegenerateUniformMap == 1 )
+ {
+ CollectedUniformMap& localMap = mCollectedUniformMap[ bufferIndex ];
+ CollectedUniformMap& oldMap = mCollectedUniformMap[ 1-bufferIndex ];
+
+ localMap.Resize( oldMap.Count() );
+
+ unsigned int index=0;
+ for( CollectedUniformMap::Iterator iter = oldMap.Begin(), end = oldMap.End() ; iter != end ; ++iter, ++index )
+ {
+ localMap[index] = *iter;
+ }
+ }
+ --mRegenerateUniformMap;
+ mUniformMapChanged[bufferIndex] = 1u;
+ }
+}
+
+void Node::ConnectChild( Node* childNode )