From 69961da169d939dc7b3d27bec60ac8ece701fc64 Mon Sep 17 00:00:00 2001 From: Subhransu Mohanty Date: Tue, 12 Jan 2021 13:35:27 +0900 Subject: [PATCH] Refactor Node class and TransformManagerproperty* class to optimize Object Size. Introduced TransformManagerData and keep a pointer instead of keeping {TxManager, TxId} pair. hence reducing 8bytes per member. Also templated TransformManagerPropertyVector3 based on TransformManagerProperty to avoid storing the Property type in the class object. This patch reduced the Node size from 976 byte to 896 byte, saving 80 bytes per object. Change-Id: Ib608dfe73c12861277379208a8506904eedfc6e9 --- .../update/manager/transform-manager-property.h | 152 ++++++++------------- dali/internal/update/manager/transform-manager.h | 13 ++ dali/internal/update/manager/update-proxy-impl.cpp | 22 +-- dali/internal/update/nodes/node.cpp | 48 +++---- dali/internal/update/nodes/node.h | 61 +++++---- 5 files changed, 133 insertions(+), 163 deletions(-) diff --git a/dali/internal/update/manager/transform-manager-property.h b/dali/internal/update/manager/transform-manager-property.h index 609cac7..5b8f7c4 100644 --- a/dali/internal/update/manager/transform-manager-property.h +++ b/dali/internal/update/manager/transform-manager-property.h @@ -34,10 +34,7 @@ struct TransformManagerPropertyHandler : public AnimatablePropertyBase /** * Constructor */ - TransformManagerPropertyHandler() - :mTxManager(nullptr), - mId( INVALID_TRANSFORM_ID ) - {} + TransformManagerPropertyHandler() = default; /** * @copydoc Dali::Internal::SceneGraph::PropertyBase::GetType() @@ -138,10 +135,10 @@ struct TransformManagerPropertyHandler : public AnimatablePropertyBase * @param[in] transformManager Pointer to the transform manager * @param[in] Id of the transformation the property is associated with */ - void Initialize( TransformManager* transformManager, TransformId id ) + void Initialize( TransformManagerData* data) { - mTxManager = transformManager; - mId = id; + DALI_ASSERT_ALWAYS( data != nullptr && data->Manager() != nullptr); + mTxManagerData = data; } /** @@ -152,17 +149,14 @@ struct TransformManagerPropertyHandler : public AnimatablePropertyBase return true; } - TransformManager* mTxManager; - TransformId mId; + TransformManagerData* mTxManagerData{nullptr}; }; -struct TransformManagerPropertyVector3 : public TransformManagerPropertyHandler +template +struct TransformManagerPropertyVector3 final : public TransformManagerPropertyHandler { - TransformManagerPropertyVector3(TransformManagerProperty property) - :TransformManagerPropertyHandler(), - mProperty( property ) - {} + TransformManagerPropertyVector3() = default; Dali::Property::Type GetType() const override { @@ -171,13 +165,12 @@ struct TransformManagerPropertyVector3 : public TransformManagerPropertyHandler< Vector3& Get( BufferIndex bufferIndex ) override { - return mTxManager->GetVector3PropertyValue( mId, mProperty ); + return mTxManagerData->Manager()->GetVector3PropertyValue( mTxManagerData->Id(), PropertyT ); } const Vector3& Get( BufferIndex bufferIndex ) const override { - const TransformManager* txManager = mTxManager; - return txManager->GetVector3PropertyValue( mId, mProperty ); + return mTxManagerData->Manager()->GetVector3PropertyValue( mTxManagerData->Id(), PropertyT ); } const Vector3& GetVector3( BufferIndex bufferIndex ) const override @@ -187,75 +180,70 @@ struct TransformManagerPropertyVector3 : public TransformManagerPropertyHandler< const float& GetFloatComponent( uint32_t component ) const override { - const TransformManager* txManager = mTxManager; - return txManager->GetVector3PropertyComponentValue( mId, mProperty, component ); + return mTxManagerData->Manager()->GetVector3PropertyComponentValue( mTxManagerData->Id(), PropertyT, component ); } void Set(BufferIndex bufferIndex, const Vector3& value) override { - mTxManager->SetVector3PropertyValue( mId, mProperty, value ); + mTxManagerData->Manager()->SetVector3PropertyValue( mTxManagerData->Id(), PropertyT, value ); } void SetComponent(BufferIndex bufferIndex, float value, uint32_t component) { - mTxManager->SetVector3PropertyComponentValue( mId, mProperty, value, component); + mTxManagerData->Manager()->SetVector3PropertyComponentValue( mTxManagerData->Id(), PropertyT, value, component); } void BakeComponent(BufferIndex bufferIndex, float value, uint32_t component) { - mTxManager->BakeVector3PropertyComponentValue( mId, mProperty, value, component); + mTxManagerData->Manager()->BakeVector3PropertyComponentValue( mTxManagerData->Id(), PropertyT, value, component); } void Bake(BufferIndex bufferIndex, const Vector3& value) override { - mTxManager->BakeVector3PropertyValue(mId, mProperty, value ); + mTxManagerData->Manager()->BakeVector3PropertyValue(mTxManagerData->Id(), PropertyT, value ); } void BakeX(BufferIndex bufferIndex, float value) override { - mTxManager->BakeXVector3PropertyValue(mId, mProperty, value ); + mTxManagerData->Manager()->BakeXVector3PropertyValue(mTxManagerData->Id(), PropertyT, value ); } void BakeY(BufferIndex bufferIndex, float value) override { - mTxManager->BakeYVector3PropertyValue(mId, mProperty, value ); + mTxManagerData->Manager()->BakeYVector3PropertyValue(mTxManagerData->Id(), PropertyT, value ); } void BakeZ(BufferIndex bufferIndex, float value) override { - mTxManager->BakeZVector3PropertyValue(mId, mProperty, value ); + mTxManagerData->Manager()->BakeZVector3PropertyValue(mTxManagerData->Id(), PropertyT, value ); } void SetFloatComponent( float value, uint32_t component) override { - mTxManager->SetVector3PropertyComponentValue( mId, mProperty, value, component); + mTxManagerData->Manager()->SetVector3PropertyComponentValue( mTxManagerData->Id(), PropertyT, value, component); } void BakeFloatComponent( float value, uint32_t component ) override { - mTxManager->BakeVector3PropertyComponentValue( mId, mProperty, value, component); + mTxManagerData->Manager()->BakeVector3PropertyComponentValue( mTxManagerData->Id(), PropertyT, value, component); } void BakeRelative(BufferIndex bufferIndex, const Vector3& value) override { - mTxManager->BakeRelativeVector3PropertyValue(mId, mProperty, value ); + mTxManagerData->Manager()->BakeRelativeVector3PropertyValue(mTxManagerData->Id(), PropertyT, value ); } void BakeRelativeMultiply(BufferIndex bufferIndex, const Vector3& value) override { - mTxManager->BakeMultiplyVector3PropertyValue(mId, mProperty, value ); + mTxManagerData->Manager()->BakeMultiplyVector3PropertyValue(mTxManagerData->Id(), PropertyT, value ); } - - TransformManagerProperty mProperty; }; -class TransformManagerPropertyQuaternion : public TransformManagerPropertyHandler +class TransformManagerPropertyQuaternion final : public TransformManagerPropertyHandler { public: - TransformManagerPropertyQuaternion() - :TransformManagerPropertyHandler() - {} + TransformManagerPropertyQuaternion() = default; Dali::Property::Type GetType() const override { @@ -264,28 +252,27 @@ public: Quaternion& Get( BufferIndex bufferIndex ) override { - return mTxManager->GetQuaternionPropertyValue( mId ); + return mTxManagerData->Manager()->GetQuaternionPropertyValue( mTxManagerData->Id() ); } const Quaternion& Get( BufferIndex bufferIndex ) const override { - const TransformManager* txManager = mTxManager; - return txManager->GetQuaternionPropertyValue( mId ); + return mTxManagerData->Manager()->GetQuaternionPropertyValue( mTxManagerData->Id() ); } void Set(BufferIndex bufferIndex, const Quaternion& value) override { - return mTxManager->SetQuaternionPropertyValue( mId, value ); + return mTxManagerData->Manager()->SetQuaternionPropertyValue( mTxManagerData->Id(), value ); } void Bake(BufferIndex bufferIndex, const Quaternion& value) override { - return mTxManager->BakeQuaternionPropertyValue( mId, value ); + return mTxManagerData->Manager()->BakeQuaternionPropertyValue( mTxManagerData->Id(), value ); } void BakeRelative(BufferIndex bufferIndex, const Quaternion& value) override { - return mTxManager->BakeRelativeQuaternionPropertyValue( mId, value ); + return mTxManagerData->Manager()->BakeRelativeQuaternionPropertyValue( mTxManagerData->Id(), value ); } const Quaternion& GetQuaternion( BufferIndex bufferIndex ) const override @@ -306,9 +293,7 @@ public: * Create an TransformManagerVector3Input */ TransformManagerVector3Input( TransformManagerProperty property, const Vector3& initialValue ) - :mTxManager(nullptr), - mId(INVALID_TRANSFORM_ID), - mProperty(property), + :mProperty(property), mValue(initialValue) {} @@ -356,10 +341,9 @@ public: */ void ComputeTransformComponent() const { - const TransformManager* txManager = mTxManager; - if( txManager ) + if( mTxManagerData ) { - const Matrix& worldMatrix = txManager->GetWorldMatrix(mId); + const Matrix& worldMatrix = mTxManagerData->Manager()->GetWorldMatrix(mTxManagerData->Id()); if( mProperty == TRANSFORM_PROPERTY_WORLD_POSITION ) { @@ -426,10 +410,10 @@ public: * @param[in] transformManager Pointer to the transform manager * @param[in] Id of the transformation the property is associated with */ - void Initialize( TransformManager* transformManager, TransformId id ) + void Initialize( TransformManagerData* data) { - mTxManager = transformManager; - mId = id; + DALI_ASSERT_ALWAYS( data != nullptr && data->Manager() != nullptr); + mTxManagerData = data; } /** @@ -450,8 +434,7 @@ private: public: - TransformManager* mTxManager; - TransformId mId; + TransformManagerData* mTxManagerData{nullptr}; TransformManagerProperty mProperty; mutable Vector3 mValue; }; @@ -459,24 +442,14 @@ public: /** * A Quaternion property used as input. */ -class TransformManagerQuaternionInput : public PropertyInputImpl +class TransformManagerQuaternionInput final : public PropertyInputImpl { public: /** * Constructor */ - TransformManagerQuaternionInput() - :mTxManager(nullptr), - mId(INVALID_TRANSFORM_ID), - mValue(1.0f,0.0f,0.0f,0.0f) - { - } - - /** - * Virtual destructor. - */ - ~TransformManagerQuaternionInput() override = default; + TransformManagerQuaternionInput() = default; /** * @copydoc Dali::Internal::SceneGraph::PropertyBase::GetType() @@ -517,10 +490,9 @@ public: */ void ComputeTransformComponent() const { - const TransformManager* txManager = mTxManager; - if( txManager ) + if( mTxManagerData ) { - const Matrix& worldMatrix = txManager->GetWorldMatrix(mId); + const Matrix& worldMatrix = mTxManagerData->Manager()->GetWorldMatrix(mTxManagerData->Id()); Vector3 position, scale; worldMatrix.GetTransformComponents(position, mValue, scale); } @@ -578,10 +550,10 @@ public: * @param[in] transformManager Pointer to the transform manager * @param[in] Id of the transformation the property is associated with */ - void Initialize( TransformManager* transformManager, TransformId id ) + void Initialize( TransformManagerData* data) { - mTxManager = transformManager; - mId = id; + DALI_ASSERT_ALWAYS( data != nullptr && data->Manager() != nullptr); + mTxManagerData = data; } /** @@ -602,31 +574,22 @@ private: public: - TransformManager* mTxManager; - TransformId mId; + TransformManagerData* mTxManagerData{nullptr}; mutable Quaternion mValue; }; /** * A Matrix property used as input. */ -class TransformManagerMatrixInput : public PropertyInputImpl +class TransformManagerMatrixInput final: public PropertyInputImpl { public: /** * Constructor */ - TransformManagerMatrixInput() - :mTxManager(nullptr), - mId(INVALID_TRANSFORM_ID) - { - } + TransformManagerMatrixInput() = default; - /** - * Virtual destructor. - */ - ~TransformManagerMatrixInput() override = default; /** * @copydoc Dali::Internal::SceneGraph::PropertyBase::GetType() @@ -666,10 +629,9 @@ public: */ const Matrix& GetMatrix( BufferIndex bufferIndex ) const override { - const TransformManager* txManager = mTxManager; - if( txManager ) + if( mTxManagerData ) { - return txManager->GetWorldMatrix(mId); + return mTxManagerData->Manager()->GetWorldMatrix(mTxManagerData->Id()); } return Matrix::IDENTITY; @@ -680,10 +642,9 @@ public: */ const Matrix& GetConstraintInputMatrix( BufferIndex bufferIndex ) const override { - const TransformManager* txManager = mTxManager; - if( txManager ) + if( mTxManagerData ) { - return txManager->GetWorldMatrix(mId); + return mTxManagerData->Manager()->GetWorldMatrix(mTxManagerData->Id()); } return Matrix::IDENTITY; @@ -694,8 +655,8 @@ public: */ Matrix& Get( BufferIndex bufferIndex ) { - DALI_ASSERT_ALWAYS( mTxManager != nullptr ); - return mTxManager->GetWorldMatrix(mId); + DALI_ASSERT_ALWAYS( mTxManagerData != nullptr ); + return mTxManagerData->Manager()->GetWorldMatrix(mTxManagerData->Id()); } /** @@ -716,10 +677,10 @@ public: return GetMatrix( bufferIndex ); } - void Initialize( TransformManager* transformManager, TransformId id ) + void Initialize( TransformManagerData* data) { - mTxManager = transformManager; - mId = id; + DALI_ASSERT_ALWAYS( data != nullptr && data->Manager() != nullptr); + mTxManagerData = data; } /** @@ -740,8 +701,7 @@ private: public: - TransformManager* mTxManager; - TransformId mId; + TransformManagerData* mTxManagerData{nullptr}; }; diff --git a/dali/internal/update/manager/transform-manager.h b/dali/internal/update/manager/transform-manager.h index 068c39ff..84c56a1 100644 --- a/dali/internal/update/manager/transform-manager.h +++ b/dali/internal/update/manager/transform-manager.h @@ -95,6 +95,19 @@ enum TransformManagerProperty using TransformId = uint32_t; // 4,294,967,295 transforms supported static const TransformId INVALID_TRANSFORM_ID = -1; +class TransformManager; + +struct TransformManagerData +{ + + TransformManager* Manager() const { return mManager; } + + TransformId Id() const { return mId; } + + TransformManager* mManager{nullptr}; + TransformId mId{INVALID_TRANSFORM_ID}; +}; + } //SceneGraph } //Internal diff --git a/dali/internal/update/manager/update-proxy-impl.cpp b/dali/internal/update/manager/update-proxy-impl.cpp index dc6bc77..5ce46d4 100644 --- a/dali/internal/update/manager/update-proxy-impl.cpp +++ b/dali/internal/update/manager/update-proxy-impl.cpp @@ -75,7 +75,7 @@ bool UpdateProxy::GetPosition( uint32_t id, Vector3& position ) const if( node ) { const SceneGraph::TransformManager& transformManager = mTransformManager; // To ensure we call the const getter - position = transformManager.GetVector3PropertyValue( node->mTransformId, SceneGraph::TRANSFORM_PROPERTY_POSITION ); + position = transformManager.GetVector3PropertyValue( node->GetTransformId(), SceneGraph::TRANSFORM_PROPERTY_POSITION ); success = true; } return success; @@ -87,7 +87,7 @@ bool UpdateProxy::SetPosition( uint32_t id, const Vector3& position ) SceneGraph::Node* node = GetNodeWithId( id ); if( node ) { - mTransformManager.SetVector3PropertyValue( node->mTransformId, SceneGraph::TRANSFORM_PROPERTY_POSITION, position ); + mTransformManager.SetVector3PropertyValue( node->GetTransformId(), SceneGraph::TRANSFORM_PROPERTY_POSITION, position ); success = true; } return success; @@ -99,7 +99,7 @@ bool UpdateProxy::BakePosition( uint32_t id, const Vector3& position ) SceneGraph::Node* node = GetNodeWithId( id ); if( node ) { - mTransformManager.BakeVector3PropertyValue( node->mTransformId, SceneGraph::TRANSFORM_PROPERTY_POSITION, position ); + mTransformManager.BakeVector3PropertyValue( node->GetTransformId(), SceneGraph::TRANSFORM_PROPERTY_POSITION, position ); success = true; } return success; @@ -112,7 +112,7 @@ bool UpdateProxy::GetSize( uint32_t id, Vector3& size ) const if( node ) { const SceneGraph::TransformManager& transformManager = mTransformManager; // To ensure we call the const getter - size = transformManager.GetVector3PropertyValue( node->mTransformId, SceneGraph::TRANSFORM_PROPERTY_SIZE ); + size = transformManager.GetVector3PropertyValue( node->GetTransformId(), SceneGraph::TRANSFORM_PROPERTY_SIZE ); success = true; } return success; @@ -124,7 +124,7 @@ bool UpdateProxy::SetSize( uint32_t id, const Vector3& size ) SceneGraph::Node* node = GetNodeWithId( id ); if( node ) { - mTransformManager.SetVector3PropertyValue( node->mTransformId, SceneGraph::TRANSFORM_PROPERTY_SIZE, size ); + mTransformManager.SetVector3PropertyValue( node->GetTransformId(), SceneGraph::TRANSFORM_PROPERTY_SIZE, size ); success = true; } return success; @@ -136,7 +136,7 @@ bool UpdateProxy::BakeSize( uint32_t id, const Vector3& size ) SceneGraph::Node* node = GetNodeWithId( id ); if( node ) { - mTransformManager.BakeVector3PropertyValue( node->mTransformId, SceneGraph::TRANSFORM_PROPERTY_SIZE, size ); + mTransformManager.BakeVector3PropertyValue( node->GetTransformId(), SceneGraph::TRANSFORM_PROPERTY_SIZE, size ); success = true; } return success; @@ -149,8 +149,8 @@ bool UpdateProxy::GetPositionAndSize( uint32_t id, Vector3& position, Vector3& s if( node ) { const SceneGraph::TransformManager& transformManager = mTransformManager; // To ensure we call the const getter - position = transformManager.GetVector3PropertyValue( node->mTransformId, SceneGraph::TRANSFORM_PROPERTY_POSITION ); - size = transformManager.GetVector3PropertyValue( node->mTransformId, SceneGraph::TRANSFORM_PROPERTY_SIZE ); + position = transformManager.GetVector3PropertyValue( node->GetTransformId(), SceneGraph::TRANSFORM_PROPERTY_POSITION ); + size = transformManager.GetVector3PropertyValue( node->GetTransformId(), SceneGraph::TRANSFORM_PROPERTY_SIZE ); success = true; } return success; @@ -163,7 +163,7 @@ bool UpdateProxy::GetScale( uint32_t id, Vector3& scale ) const if( node ) { const SceneGraph::TransformManager& transformManager = mTransformManager; // To ensure we call the const getter - scale = transformManager.GetVector3PropertyValue( node->mTransformId, SceneGraph::TRANSFORM_PROPERTY_SCALE ); + scale = transformManager.GetVector3PropertyValue( node->GetTransformId(), SceneGraph::TRANSFORM_PROPERTY_SCALE ); success = true; } @@ -176,7 +176,7 @@ bool UpdateProxy::SetScale( uint32_t id, const Vector3& scale ) SceneGraph::Node* node = GetNodeWithId( id ); if( node ) { - mTransformManager.SetVector3PropertyValue( node->mTransformId, SceneGraph::TRANSFORM_PROPERTY_SCALE, scale ); + mTransformManager.SetVector3PropertyValue( node->GetTransformId(), SceneGraph::TRANSFORM_PROPERTY_SCALE, scale ); success = true; } return success; @@ -188,7 +188,7 @@ bool UpdateProxy::BakeScale( uint32_t id, const Vector3& scale ) SceneGraph::Node* node = GetNodeWithId( id ); if( node ) { - mTransformManager.BakeVector3PropertyValue( node->mTransformId, SceneGraph::TRANSFORM_PROPERTY_SCALE, scale ); + mTransformManager.BakeVector3PropertyValue( node->GetTransformId(), SceneGraph::TRANSFORM_PROPERTY_SCALE, scale ); success = true; } return success; diff --git a/dali/internal/update/nodes/node.cpp b/dali/internal/update/nodes/node.cpp index 86b4864..6864526 100644 --- a/dali/internal/update/nodes/node.cpp +++ b/dali/internal/update/nodes/node.cpp @@ -79,14 +79,7 @@ void Node::Delete( Node* node ) } Node::Node() -: mTransformManager( nullptr ), - mTransformId( INVALID_TRANSFORM_ID ), - mParentOrigin( TRANSFORM_PROPERTY_PARENT_ORIGIN ), - mAnchorPoint( TRANSFORM_PROPERTY_ANCHOR_POINT ), - mSize( TRANSFORM_PROPERTY_SIZE ), // Zero initialized by default - mPosition( TRANSFORM_PROPERTY_POSITION ), // Zero initialized by default - mOrientation(), // Initialized to identity by default - mScale( TRANSFORM_PROPERTY_SCALE ), +: mOrientation(), // Initialized to identity by default mVisible( true ), mCulled( false ), mColor( Color::WHITE ), @@ -119,14 +112,13 @@ Node::Node() #ifdef DEBUG_ENABLED gNodeCount++; #endif - } Node::~Node() { - if( mTransformId != INVALID_TRANSFORM_ID ) + if( mTransformManagerData.Id() != INVALID_TRANSFORM_ID ) { - mTransformManager->RemoveTransform(mTransformId); + mTransformManagerData.Manager()->RemoveTransform(mTransformManagerData.Id()); } #ifdef DEBUG_ENABLED @@ -148,25 +140,25 @@ uint32_t Node::GetId() const void Node::CreateTransform( SceneGraph::TransformManager* transformManager ) { //Create a new transform - mTransformManager = transformManager; - mTransformId = transformManager->CreateTransform(); + mTransformManagerData.mManager = transformManager; + mTransformManagerData.mId = transformManager->CreateTransform(); //Initialize all the animatable properties - mPosition.Initialize( transformManager, mTransformId ); - mScale.Initialize( transformManager, mTransformId ); - mOrientation.Initialize( transformManager, mTransformId ); - mSize.Initialize( transformManager, mTransformId ); - mParentOrigin.Initialize( transformManager, mTransformId ); - mAnchorPoint.Initialize( transformManager, mTransformId ); + mPosition.Initialize( &mTransformManagerData ); + mScale.Initialize( &mTransformManagerData ); + mOrientation.Initialize( &mTransformManagerData ); + mSize.Initialize( &mTransformManagerData ); + mParentOrigin.Initialize( &mTransformManagerData ); + mAnchorPoint.Initialize( &mTransformManagerData ); //Initialize all the input properties - mWorldPosition.Initialize( transformManager, mTransformId ); - mWorldScale.Initialize( transformManager, mTransformId ); - mWorldOrientation.Initialize( transformManager, mTransformId ); - mWorldMatrix.Initialize( transformManager, mTransformId ); + mWorldPosition.Initialize( &mTransformManagerData ); + mWorldScale.Initialize( &mTransformManagerData ); + mWorldOrientation.Initialize( &mTransformManagerData ); + mWorldMatrix.Initialize( &mTransformManagerData); //Set whether the position should use the anchor point - transformManager->SetPositionUsesAnchorPoint( mTransformId, mPositionUsesAnchorPoint ); + transformManager->SetPositionUsesAnchorPoint( mTransformManagerData.Id(), mPositionUsesAnchorPoint ); } void Node::SetRoot(bool isRoot) @@ -347,9 +339,9 @@ void Node::SetParent( Node& parentNode ) mParent = &parentNode; - if( mTransformId != INVALID_TRANSFORM_ID ) + if( mTransformManagerData.Id() != INVALID_TRANSFORM_ID ) { - mTransformManager->SetParent( mTransformId, parentNode.GetTransformId() ); + mTransformManagerData.Manager()->SetParent( mTransformManagerData.Id(), parentNode.GetTransformId() ); } } @@ -373,9 +365,9 @@ void Node::RecursiveDisconnectFromSceneGraph( BufferIndex updateBufferIndex ) // Remove all child pointers mChildren.Clear(); - if( mTransformId != INVALID_TRANSFORM_ID ) + if( mTransformManagerData.Id() != INVALID_TRANSFORM_ID ) { - mTransformManager->SetParent( mTransformId, INVALID_TRANSFORM_ID ); + mTransformManagerData.Manager()->SetParent( mTransformManagerData.Id(), INVALID_TRANSFORM_ID ); } } diff --git a/dali/internal/update/nodes/node.h b/dali/internal/update/nodes/node.h index 77bd5ac..27f8fbd 100644 --- a/dali/internal/update/nodes/node.h +++ b/dali/internal/update/nodes/node.h @@ -396,7 +396,7 @@ public: */ const Vector3& GetPosition(BufferIndex bufferIndex) const { - if( mTransformId != INVALID_TRANSFORM_ID ) + if( mTransformManagerData.Id() != INVALID_TRANSFORM_ID ) { return mPosition.Get(bufferIndex); } @@ -419,9 +419,9 @@ public: */ void SetInheritPosition(bool inherit) { - if( mTransformId != INVALID_TRANSFORM_ID ) + if( mTransformManagerData.Id() != INVALID_TRANSFORM_ID ) { - mTransformManager->SetInheritPosition( mTransformId, inherit ); + mTransformManagerData.Manager()->SetInheritPosition( mTransformManagerData.Id(), inherit ); } } @@ -432,7 +432,7 @@ public: */ const Quaternion& GetOrientation(BufferIndex bufferIndex) const { - if( mTransformId != INVALID_TRANSFORM_ID ) + if( mTransformManagerData.Id() != INVALID_TRANSFORM_ID ) { return mOrientation.Get(0); } @@ -456,9 +456,9 @@ public: */ void SetInheritOrientation(bool inherit) { - if( mTransformId != INVALID_TRANSFORM_ID ) + if( mTransformManagerData.Id() != INVALID_TRANSFORM_ID ) { - mTransformManager->SetInheritOrientation(mTransformId, inherit ); + mTransformManagerData.Manager()->SetInheritOrientation(mTransformManagerData.Id(), inherit ); } } @@ -469,7 +469,7 @@ public: */ const Vector3& GetScale(BufferIndex bufferIndex) const { - if( mTransformId != INVALID_TRANSFORM_ID ) + if( mTransformManagerData.Id() != INVALID_TRANSFORM_ID ) { return mScale.Get(0); } @@ -494,9 +494,9 @@ public: */ void SetInheritScale( bool inherit ) { - if( mTransformId != INVALID_TRANSFORM_ID ) + if( mTransformManagerData.Id() != INVALID_TRANSFORM_ID ) { - mTransformManager->SetInheritScale(mTransformId, inherit ); + mTransformManagerData.Manager()->SetInheritScale(mTransformManagerData.Id(), inherit ); } } @@ -620,7 +620,7 @@ public: */ const Vector3& GetSize(BufferIndex bufferIndex) const { - if( mTransformId != INVALID_TRANSFORM_ID ) + if( mTransformManagerData.Id() != INVALID_TRANSFORM_ID ) { return mSize.Get(0); } @@ -634,7 +634,7 @@ public: */ const Vector3& GetUpdateSizeHint() const { - if( mTransformId != INVALID_TRANSFORM_ID ) + if( mTransformManagerData.Id() != INVALID_TRANSFORM_ID ) { return mUpdateSizeHint.Get(0); } @@ -648,9 +648,9 @@ public: */ const Vector4& GetBoundingSphere() const { - if( mTransformId != INVALID_TRANSFORM_ID ) + if( mTransformManagerData.Id() != INVALID_TRANSFORM_ID ) { - return mTransformManager->GetBoundingSphere( mTransformId ); + return mTransformManagerData.Manager()->GetBoundingSphere( mTransformManagerData.Id() ); } return Vector4::ZERO; @@ -663,9 +663,9 @@ public: */ void GetWorldMatrixAndSize( Matrix& worldMatrix, Vector3& size ) const { - if( mTransformId != INVALID_TRANSFORM_ID ) + if( mTransformManagerData.Id() != INVALID_TRANSFORM_ID ) { - mTransformManager->GetWorldMatrixAndSize( mTransformId, worldMatrix, size ); + mTransformManagerData.Manager()->GetWorldMatrixAndSize( mTransformManagerData.Id(), worldMatrix, size ); } } @@ -675,8 +675,8 @@ public: */ bool IsLocalMatrixDirty() const { - return (mTransformId != INVALID_TRANSFORM_ID) && - (mTransformManager->IsLocalMatrixDirty( mTransformId )); + return (mTransformManagerData.Id() != INVALID_TRANSFORM_ID) && + (mTransformManagerData.Manager()->IsLocalMatrixDirty( mTransformManagerData.Id() )); } /** @@ -731,7 +731,7 @@ public: */ TransformId GetTransformId() const { - return mTransformId; + return mTransformManagerData.Id(); } /** @@ -767,10 +767,10 @@ public: */ void SetPositionUsesAnchorPoint( bool positionUsesAnchorPoint ) { - if( mTransformId != INVALID_TRANSFORM_ID && mPositionUsesAnchorPoint != positionUsesAnchorPoint ) + if( mTransformManagerData.Id() != INVALID_TRANSFORM_ID && mPositionUsesAnchorPoint != positionUsesAnchorPoint ) { mPositionUsesAnchorPoint = positionUsesAnchorPoint; - mTransformManager->SetPositionUsesAnchorPoint( mTransformId, mPositionUsesAnchorPoint ); + mTransformManagerData.Manager()->SetPositionUsesAnchorPoint( mTransformManagerData.Id(), mPositionUsesAnchorPoint ); } } @@ -902,15 +902,20 @@ private: void RecursiveDisconnectFromSceneGraph( BufferIndex updateBufferIndex ); public: // Default properties - - TransformManager* mTransformManager; - TransformId mTransformId; - TransformManagerPropertyVector3 mParentOrigin; ///< Local transform; the position is relative to this. Sets the Transform flag dirty when changed - TransformManagerPropertyVector3 mAnchorPoint; ///< Local transform; local center of rotation. Sets the Transform flag dirty when changed - TransformManagerPropertyVector3 mSize; ///< Size is provided for layouting - TransformManagerPropertyVector3 mPosition; ///< Local transform; distance between parent-origin & anchor-point + using TransformManagerParentsOrigin = TransformManagerPropertyVector3; + using TransformManagerAnchorPoint = TransformManagerPropertyVector3; + using TransformManagerSize = TransformManagerPropertyVector3; + using TransformManagerPosition = TransformManagerPropertyVector3; + using TransformManagerScale = TransformManagerPropertyVector3; + + + TransformManagerData mTransformManagerData; + TransformManagerParentsOrigin mParentOrigin; ///< Local transform; the position is relative to this. Sets the Transform flag dirty when changed + TransformManagerAnchorPoint mAnchorPoint; ///< Local transform; local center of rotation. Sets the Transform flag dirty when changed + TransformManagerSize mSize; ///< Size is provided for layouting + TransformManagerPosition mPosition; ///< Local transform; distance between parent-origin & anchor-point + TransformManagerScale mScale; ///< Local transform; scale relative to parent node TransformManagerPropertyQuaternion mOrientation; ///< Local transform; rotation relative to parent node - TransformManagerPropertyVector3 mScale; ///< Local transform; scale relative to parent node AnimatableProperty mVisible; ///< Visibility can be inherited from the Node hierachy AnimatableProperty mCulled; ///< True if the node is culled. This is not animatable. It is just double-buffered. -- 2.7.4