From: Richard Huang Date: Fri, 29 Oct 2021 13:08:11 +0000 (+0100) Subject: Fix the local matrix dirty flags for transform components X-Git-Tag: dali_2.1.0~7 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-core.git;a=commitdiff_plain;h=dc067f01c4ad59a9362640d8c48d1c81a7874a03 Fix the local matrix dirty flags for transform components Change-Id: I0e54461468d2e0c923757ab9dc2a7d79f93ea2fe --- 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