From dc067f01c4ad59a9362640d8c48d1c81a7874a03 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Fri, 29 Oct 2021 14:08:11 +0100 Subject: [PATCH] Fix the local matrix dirty flags for transform components Change-Id: I0e54461468d2e0c923757ab9dc2a7d79f93ea2fe --- dali/internal/update/manager/transform-manager.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/dali/internal/update/manager/transform-manager.cpp b/dali/internal/update/manager/transform-manager.cpp index bde727d..d61acc2 100644 --- a/dali/internal/update/manager/transform-manager.cpp +++ b/dali/internal/update/manager/transform-manager.cpp @@ -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 -- 2.7.4