// CLASS HEADER
#include <dali/internal/update/manager/update-proxy-impl.h>
+// INTERNAL INCLUDES
+#include <dali/internal/update/manager/update-proxy-property-modifier.h>
+
namespace Dali
{
SceneGraph::Node* FindNodeInSceneGraph( uint32_t id, SceneGraph::Node& node )
{
- SceneGraph::Node* matchingNode = NULL;
+ SceneGraph::Node* matchingNode = nullptr;
if( node.mId == id )
{
} // unnamed namespace
-UpdateProxy::UpdateProxy( SceneGraph::TransformManager& transformManager, SceneGraph::Node& rootNode )
+UpdateProxy::UpdateProxy( SceneGraph::UpdateManager& updateManager, SceneGraph::TransformManager& transformManager, SceneGraph::Node& rootNode )
: mNodeContainer(),
- mLastCachedIdNodePair( { 0u, NULL } ),
+ mLastCachedIdNodePair( { 0u, nullptr } ),
mCurrentBufferIndex( 0u ),
+ mUpdateManager( updateManager ),
mTransformManager( transformManager ),
- mRootNode( rootNode )
+ mRootNode( rootNode ),
+ mPropertyModifier( nullptr )
{
}
-UpdateProxy::~UpdateProxy()
-{
-}
+UpdateProxy::~UpdateProxy() = default;
bool UpdateProxy::GetPosition( uint32_t id, Vector3& position ) const
{
return success;
}
-bool UpdateProxy::SetColor( uint32_t id, const Vector4& color ) const
+bool UpdateProxy::SetColor( uint32_t id, const Vector4& color )
{
bool success = false;
SceneGraph::Node* node = GetNodeWithId( id );
if( node )
{
node->mColor.Set( mCurrentBufferIndex, color );
+ node->SetDirtyFlag( SceneGraph::NodePropertyFlags::COLOR );
+ AddResetter( *node, node->mColor );
success = true;
}
return success;
}
-bool UpdateProxy::BakeColor( uint32_t id, const Vector4& color ) const
+bool UpdateProxy::BakeColor( uint32_t id, const Vector4& color )
{
bool success = false;
SceneGraph::Node* node = GetNodeWithId( id );
void UpdateProxy::NodeHierarchyChanged()
{
- mLastCachedIdNodePair = { 0u, NULL };
+ mLastCachedIdNodePair = { 0u, nullptr };
mNodeContainer.clear();
+ mPropertyModifier.reset();
}
SceneGraph::Node* UpdateProxy::GetNodeWithId( uint32_t id ) const
{
- SceneGraph::Node* node = NULL;
+ SceneGraph::Node* node = nullptr;
// Cache the last accessed node so we don't have to traverse
if( mLastCachedIdNodePair.node && mLastCachedIdNodePair.id == id )
return node;
}
+void UpdateProxy::AddResetter( SceneGraph::Node& node, SceneGraph::PropertyBase& propertyBase )
+{
+ if( ! mPropertyModifier )
+ {
+ mPropertyModifier = PropertyModifierPtr( new PropertyModifier( mUpdateManager ) );
+ }
+ mPropertyModifier->AddResetter( node, propertyBase );
+}
+
} // namespace Internal
} // namespace Dali