Fix the local matrix dirty flags for transform components 45/265845/4
authorRichard Huang <r.huang@samsung.com>
Fri, 29 Oct 2021 13:08:11 +0000 (14:08 +0100)
committerRichard <r.huang@samsung.com>
Thu, 18 Nov 2021 16:10:49 +0000 (16:10 +0000)
Change-Id: I0e54461468d2e0c923757ab9dc2a7d79f93ea2fe

dali/internal/update/manager/transform-manager.cpp

index bde727d..d61acc2 100644 (file)
@@ -285,6 +285,8 @@ bool TransformManager::Update()
           localOrientation = parentOrientation * mTxComponentAnimatable[i].mOrientation;
         }
 
+        Matrix localMatrix = mLocal[i];
+
         if((mInheritanceMode[i] & INHERIT_POSITION) == 0)
         {
           //Don't inherit position
@@ -301,16 +303,17 @@ bool TransformManager::Update()
           Matrix::Multiply(mWorld[i], mLocal[i], parentMatrix);
         }
 
-        mLocalMatrixDirty[i] = true;
+        mLocalMatrixDirty[i] = (localMatrix != mLocal[i]);
       }
     }
     else //Component has no parent or doesn't inherit transform
     {
+      Matrix localMatrix = mLocal[i];
       CalculateCenterPosition(centerPosition, mTxComponentStatic[i], mTxComponentAnimatable[i], mSize[i], half, topLeft);
       localPosition = mTxComponentAnimatable[i].mPosition + centerPosition;
       mLocal[i].SetTransformComponents(mTxComponentAnimatable[i].mScale, mTxComponentAnimatable[i].mOrientation, localPosition);
       mWorld[i]            = mLocal[i];
-      mLocalMatrixDirty[i] = true;
+      mLocalMatrixDirty[i] = (localMatrix != mLocal[i]);
     }
 
     //Update the bounding sphere