Avoid Heap allocation in UniformMap.
[platform/core/uifw/dali-core.git] / dali / internal / update / nodes / node.cpp
old mode 100755 (executable)
new mode 100644 (file)
index 813a99a..86b4864
@@ -51,7 +51,6 @@ namespace Internal
 namespace SceneGraph
 {
 
-const PositionInheritanceMode Node::DEFAULT_POSITION_INHERITANCE_MODE( INHERIT_PARENT_POSITION );
 const ColorMode Node::DEFAULT_COLOR_MODE( USE_OWN_MULTIPLY_PARENT_ALPHA );
 
 uint32_t Node::mNodeCounter = 0;        ///< A counter to provide unique node ids, up-to 4 billion
@@ -80,7 +79,7 @@ void Node::Delete( Node* node )
 }
 
 Node::Node()
-: mTransformManager( NULL ),
+: mTransformManager( nullptr ),
   mTransformId( INVALID_TRANSFORM_ID ),
   mParentOrigin( TRANSFORM_PROPERTY_PARENT_ORIGIN ),
   mAnchorPoint( TRANSFORM_PROPERTY_ANCHOR_POINT ),
@@ -91,6 +90,7 @@ Node::Node()
   mVisible( true ),
   mCulled( false ),
   mColor( Color::WHITE ),
+  mUpdateSizeHint( Vector3::ZERO ),
   mWorldPosition( TRANSFORM_PROPERTY_WORLD_POSITION, Vector3( 0.0f,0.0f,0.0f ) ), // Zero initialized by default
   mWorldScale( TRANSFORM_PROPERTY_WORLD_SCALE, Vector3( 1.0f,1.0f,1.0f ) ),
   mWorldOrientation(),                                                            // Initialized to identity by default
@@ -98,8 +98,8 @@ Node::Node()
   mWorldColor( Color::WHITE ),
   mClippingSortModifier( 0u ),
   mId( ++mNodeCounter ),
-  mParent( NULL ),
-  mExclusiveRenderTask( NULL ),
+  mParent( nullptr ),
+  mExclusiveRenderTask( nullptr ),
   mChildren(),
   mClippingDepth( 0u ),
   mScissorDepth( 0u ),
@@ -176,18 +176,23 @@ void Node::SetRoot(bool isRoot)
   mIsRoot = isRoot;
 }
 
-void Node::AddUniformMapping( OwnerPointer< UniformPropertyMapping >& map )
+void Node::AddUniformMapping(const UniformPropertyMapping& map)
 {
   PropertyOwner::AddUniformMapping( map );
   mRegenerateUniformMap = 2;
 }
 
-void Node::RemoveUniformMapping( const std::string& uniformName )
+void Node::RemoveUniformMapping( const ConstString& uniformName )
 {
   PropertyOwner::RemoveUniformMapping( uniformName );
   mRegenerateUniformMap = 2;
 }
 
+bool Node::IsAnimationPossible() const
+{
+  return mIsConnectedToSceneGraph;
+}
+
 void Node::PrepareRender( BufferIndex bufferIndex )
 {
   if( mRegenerateUniformMap != 0 )
@@ -199,7 +204,7 @@ void Node::PrepareRender( BufferIndex bufferIndex )
 
       for( UniformMap::SizeType i = 0, count=mUniformMaps.Count(); i<count; ++i )
       {
-        localMap.PushBack( &mUniformMaps[i] );
+        localMap.PushBack(mUniformMaps[i]);
       }
     }
     else if( mRegenerateUniformMap == 1 )
@@ -223,8 +228,8 @@ void Node::PrepareRender( BufferIndex bufferIndex )
 void Node::ConnectChild( Node* childNode )
 {
   DALI_ASSERT_ALWAYS( this != childNode );
-  DALI_ASSERT_ALWAYS( IsRoot() || NULL != mParent ); // Parent should be connected first
-  DALI_ASSERT_ALWAYS( !childNode->IsRoot() && NULL == childNode->GetParent() ); // Child should be disconnected
+  DALI_ASSERT_ALWAYS( IsRoot() || nullptr != mParent ); // Parent should be connected first
+  DALI_ASSERT_ALWAYS( !childNode->IsRoot() && nullptr == childNode->GetParent() ); // Child should be disconnected
 
   childNode->SetParent( *this );
 
@@ -244,7 +249,7 @@ void Node::DisconnectChild( BufferIndex updateBufferIndex, Node& childNode )
   DALI_ASSERT_ALWAYS( childNode.GetParent() == this );
 
   // Find the childNode and remove it
-  Node* found( NULL );
+  Node* found( nullptr );
 
   const NodeIter endIter = mChildren.End();
   for ( NodeIter iter = mChildren.Begin(); iter != endIter; ++iter )
@@ -257,7 +262,7 @@ void Node::DisconnectChild( BufferIndex updateBufferIndex, Node& childNode )
       break; // iter is no longer valid
     }
   }
-  DALI_ASSERT_ALWAYS( NULL != found );
+  DALI_ASSERT_ALWAYS( nullptr != found );
 
   found->RecursiveDisconnectFromSceneGraph( updateBufferIndex );
 }
@@ -286,7 +291,7 @@ void Node::AddRenderer( Renderer* renderer )
   mRenderer.PushBack( renderer );
 }
 
-void Node::RemoveRenderer( Renderer* renderer )
+void Node::RemoveRenderer( const Renderer* renderer )
 {
   RendererContainer::SizeType rendererCount( mRenderer.Size() );
   for( RendererContainer::SizeType i = 0; i < rendererCount; ++i )
@@ -338,7 +343,7 @@ void Node::SetParent( Node& parentNode )
 {
   DALI_ASSERT_ALWAYS(this != &parentNode);
   DALI_ASSERT_ALWAYS(!mIsRoot);
-  DALI_ASSERT_ALWAYS(mParent == NULL);
+  DALI_ASSERT_ALWAYS(mParent == nullptr);
 
   mParent = &parentNode;
 
@@ -351,7 +356,7 @@ void Node::SetParent( Node& parentNode )
 void Node::RecursiveDisconnectFromSceneGraph( BufferIndex updateBufferIndex )
 {
   DALI_ASSERT_ALWAYS(!mIsRoot);
-  DALI_ASSERT_ALWAYS(mParent != NULL);
+  DALI_ASSERT_ALWAYS(mParent != nullptr);
 
   const NodeIter endIter = mChildren.End();
   for ( NodeIter iter = mChildren.Begin(); iter != endIter; ++iter )
@@ -363,7 +368,7 @@ void Node::RecursiveDisconnectFromSceneGraph( BufferIndex updateBufferIndex )
   PropertyOwner::DisconnectFromSceneGraph( updateBufferIndex );
 
   // Remove back-pointer to parent
-  mParent = NULL;
+  mParent = nullptr;
 
   // Remove all child pointers
   mChildren.Clear();