From 7136dc011549db2c74b8eacfb6e08d7d3ea67cd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Lam?= Date: Fri, 25 Mar 2022 00:14:24 +0100 Subject: [PATCH] ksys/phys: Rename ScRigidBodyGroup functions/members for clarity --- data/uking_functions.csv | 8 +- .../physStaticCompoundRigidBodyGroup.cpp | 90 +++++++++---------- .../physStaticCompoundRigidBodyGroup.h | 23 +++-- 3 files changed, 60 insertions(+), 61 deletions(-) diff --git a/data/uking_functions.csv b/data/uking_functions.csv index eaec0cdf..98108a5b 100644 --- a/data/uking_functions.csv +++ b/data/uking_functions.csv @@ -84266,11 +84266,11 @@ Address,Quality,Size,Name 0x0000007100fcca90,O,000108,_ZN4ksys4phys28StaticCompoundRigidBodyGroup18setInstanceEnabledENS0_13BodyLayerTypeEib 0x0000007100fccafc,O,000116,_ZN4ksys4phys28StaticCompoundRigidBodyGroup30enableAllInstancesAndShapeKeysEv 0x0000007100fccb70,O,000268,_ZN4ksys4phys28StaticCompoundRigidBodyGroup31resetMatricesAndUpdateTransformEv -0x0000007100fccc7c,O,000312,_ZN4ksys4phys28StaticCompoundRigidBodyGroup33restoreMatricesAndUpdateTransformEv +0x0000007100fccc7c,O,000312,_ZN4ksys4phys28StaticCompoundRigidBodyGroup20applyExtraTransformsEv 0x0000007100fccdb4,O,000944,_ZN4ksys4phys28StaticCompoundRigidBodyGroup14processUpdatesEv -0x0000007100fcd164,O,000244,_ZN4ksys4phys28StaticCompoundRigidBodyGroup15restoreMatricesEv -0x0000007100fcd258,O,000288,_ZN4ksys4phys28StaticCompoundRigidBodyGroup9setMatrixERKN4sead8Matrix34IfEEi -0x0000007100fcd378,O,000028,_ZNK4ksys4phys28StaticCompoundRigidBodyGroup9getMatrixEi +0x0000007100fcd164,O,000244,_ZN4ksys4phys28StaticCompoundRigidBodyGroup24recomputeTransformMatrixEv +0x0000007100fcd258,O,000288,_ZN4ksys4phys28StaticCompoundRigidBodyGroup17setExtraTransformERKN4sead8Matrix34IfEEi +0x0000007100fcd378,O,000028,_ZNK4ksys4phys28StaticCompoundRigidBodyGroup17getExtraTransformEi 0x0000007100fcd394,O,000144,_ZNK4ksys4phys28StaticCompoundRigidBodyGroup20getTransformedMatrixERKN4sead8Matrix34IfEE 0x0000007100fcd424,O,000164,_ZNK4ksys4phys28StaticCompoundRigidBodyGroup23getInvTransformedMatrixERKN4sead8Matrix34IfEE 0x0000007100fcd4c8,O,000136,_ZNK4ksys4phys28StaticCompoundRigidBodyGroup17getTransformedPosERKN4sead7Vector3IfEE diff --git a/src/KingSystem/Physics/StaticCompound/physStaticCompoundRigidBodyGroup.cpp b/src/KingSystem/Physics/StaticCompound/physStaticCompoundRigidBodyGroup.cpp index 2485dbe5..fddb16c1 100644 --- a/src/KingSystem/Physics/StaticCompound/physStaticCompoundRigidBodyGroup.cpp +++ b/src/KingSystem/Physics/StaticCompound/physStaticCompoundRigidBodyGroup.cpp @@ -13,7 +13,7 @@ namespace ksys::phys { // TODO: rename -constexpr int BodyGroupNumMatrices = 8; +constexpr int BodyGroupNumExtraTransforms = 8; static StaticCompoundRigidBodyGroup::Config sScRigidBodyGroupConfig; static StaticCompoundRigidBodyGroup::Epsilons sScRigidBodyGroupEpsilons; @@ -37,8 +37,8 @@ StaticCompoundRigidBodyGroup::~StaticCompoundRigidBodyGroup() { mRigidBodiesPerBodyLayerType.freeBuffer(); mShapesPerBodyLayerType.freeBuffer(); - mMatrices2.freeBuffer(); - mMatrices.freeBuffer(); + mExtraTransforms.freeBuffer(); + mPendingExtraTransforms.freeBuffer(); _e8.freeBuffer(); mRigidBodies.freeBuffer(); } @@ -96,9 +96,9 @@ void StaticCompoundRigidBodyGroup::init(const hkpPhysicsSystem& system, sead::Ma } } - mMatrices2.allocBufferAssert(BodyGroupNumMatrices, heap); - mMatrices.allocBufferAssert(BodyGroupNumMatrices, heap); - resetMatrices(); + mExtraTransforms.allocBufferAssert(BodyGroupNumExtraTransforms, heap); + mPendingExtraTransforms.allocBufferAssert(BodyGroupNumExtraTransforms, heap); + resetExtraTransforms(); mFlags.set(Flag::Initialised); } @@ -172,34 +172,34 @@ void StaticCompoundRigidBodyGroup::enableAllInstancesAndShapeKeys() { } } -void StaticCompoundRigidBodyGroup::resetMatrices() { - for (int i = 0, n = mMatrices2.size(); i < n; ++i) { - mMatrices2[i].makeIdentity(); - mMatrices[i].makeIdentity(); +void StaticCompoundRigidBodyGroup::resetExtraTransforms() { + for (int i = 0, n = mExtraTransforms.size(); i < n; ++i) { + mExtraTransforms[i].makeIdentity(); + mPendingExtraTransforms[i].makeIdentity(); } } void StaticCompoundRigidBodyGroup::resetMatricesAndUpdateTransform() { - resetMatrices(); - mModifiedMatrices = 0; + resetExtraTransforms(); + mPendingTransformChanges = 0; ScopedWorldLock lock_entity{ContactLayerType::Entity}; ScopedWorldLock lock_sensor{ContactLayerType::Sensor}; - restoreMatricesAndUpdateTransform(); + applyExtraTransforms(); } -void StaticCompoundRigidBodyGroup::restoreMatricesAndUpdateTransform() { - mFlags.set(Flag::_2); - mFlags.set(Flag::_4); +void StaticCompoundRigidBodyGroup::applyExtraTransforms() { + mFlags.set(Flag::ShouldRecomputeExtraTransform); + mFlags.set(Flag::ShouldRecomputeTransform); - if (mModifiedMatrices != 0) { - for (int i = 0, n = mMatrices.size(); i < n; ++i) { - if ((1 << i) & mModifiedMatrices) { - auto& dest = mMatrices2[i]; - dest = mMatrices[i]; + if (mPendingTransformChanges != 0) { + for (int i = 0, n = mPendingExtraTransforms.size(); i < n; ++i) { + if ((1 << i) & mPendingTransformChanges) { + auto& dest = mExtraTransforms[i]; + dest = mPendingExtraTransforms[i]; } } - mModifiedMatrices = 0; + mPendingTransformChanges = 0; } for (int i = 0, n = mRigidBodies.size(); i < n; ++i) { @@ -207,32 +207,32 @@ void StaticCompoundRigidBodyGroup::restoreMatricesAndUpdateTransform() { } } -void StaticCompoundRigidBodyGroup::restoreMatrices() { - if (mModifiedMatrices != 0) { - for (int i = 0, n = mMatrices.size(); i < n; ++i) { - if ((1 << i) & mModifiedMatrices) { - auto& dest = mMatrices2[i]; - dest = mMatrices[i]; +void StaticCompoundRigidBodyGroup::recomputeTransformMatrix() { + if (mPendingTransformChanges != 0) { + for (int i = 0, n = mPendingExtraTransforms.size(); i < n; ++i) { + if ((1 << i) & mPendingTransformChanges) { + auto& dest = mExtraTransforms[i]; + dest = mPendingExtraTransforms[i]; } } - mModifiedMatrices = 0; - mFlags.set(Flag::_2); - mFlags.set(Flag::_4); + mPendingTransformChanges = 0; + mFlags.set(Flag::ShouldRecomputeExtraTransform); + mFlags.set(Flag::ShouldRecomputeTransform); } mTransform = getTransform(); } -void StaticCompoundRigidBodyGroup::setMatrix(const sead::Matrix34f& matrix, int index) { - if (mMatrices[index] == matrix) +void StaticCompoundRigidBodyGroup::setExtraTransform(const sead::Matrix34f& matrix, int index) { + if (mPendingExtraTransforms[index] == matrix) return; - mMatrices[index] = matrix; - mModifiedMatrices |= 1 << index; + mPendingExtraTransforms[index] = matrix; + mPendingTransformChanges |= 1 << index; mFlags.set(Flag::ShouldMoveBody); } -const sead::Matrix34f& StaticCompoundRigidBodyGroup::getMatrix(int index) const { - return mMatrices[index]; +const sead::Matrix34f& StaticCompoundRigidBodyGroup::getExtraTransform(int index) const { + return mPendingExtraTransforms[index]; } sead::Matrix34f @@ -324,17 +324,17 @@ const sead::Matrix34f& StaticCompoundRigidBodyGroup::getTransform() const { if (!mFlags.isOn(Flag::Initialised)) return sead::Matrix34f::ident; - if (mFlags.isOn(Flag::_2)) { - mMtx0 = mMatrices2[0]; - for (int i = 1, n = mMatrices2.size(); i < n; ++i) - mMtx0 = mMatrices2[i] * mMtx0; + if (mFlags.isOn(Flag::ShouldRecomputeExtraTransform)) { + mCombinedExtraTransform = mExtraTransforms[0]; + for (int i = 1, n = mExtraTransforms.size(); i < n; ++i) + mCombinedExtraTransform = mExtraTransforms[i] * mCombinedExtraTransform; - mFlags.reset(Flag::_2); + mFlags.reset(Flag::ShouldRecomputeExtraTransform); } - if (mFlags.isOn(Flag::_4) && mMtxPtr) { - mTransform = *mMtxPtr * mMtx0; - mFlags.reset(Flag::_4); + if (mFlags.isOn(Flag::ShouldRecomputeTransform) && mMtxPtr) { + mTransform = *mMtxPtr * mCombinedExtraTransform; + mFlags.reset(Flag::ShouldRecomputeTransform); } return mTransform; diff --git a/src/KingSystem/Physics/StaticCompound/physStaticCompoundRigidBodyGroup.h b/src/KingSystem/Physics/StaticCompound/physStaticCompoundRigidBodyGroup.h index 94db5519..d4724c78 100644 --- a/src/KingSystem/Physics/StaticCompound/physStaticCompoundRigidBodyGroup.h +++ b/src/KingSystem/Physics/StaticCompound/physStaticCompoundRigidBodyGroup.h @@ -56,13 +56,13 @@ public: bool setInstanceEnabled(BodyLayerType body_layer_type, int instance_id, bool enabled); void enableAllInstancesAndShapeKeys(); - void resetMatrices(); + void resetExtraTransforms(); void resetMatricesAndUpdateTransform(); - void restoreMatricesAndUpdateTransform(); - void restoreMatrices(); + void applyExtraTransforms(); + void recomputeTransformMatrix(); - void setMatrix(const sead::Matrix34f& matrix, int index); - const sead::Matrix34f& getMatrix(int index) const; + void setExtraTransform(const sead::Matrix34f& matrix, int index); + const sead::Matrix34f& getExtraTransform(int index) const; sead::Matrix34f getTransformedMatrix(const sead::Matrix34f& mtx) const; sead::Matrix34f getInvTransformedMatrix(const sead::Matrix34f& mtx) const; @@ -77,8 +77,8 @@ public: private: enum class Flag { Initialised = 1 << 0, - _2 = 1 << 1, - _4 = 1 << 2, + ShouldRecomputeExtraTransform = 1 << 1, + ShouldRecomputeTransform = 1 << 2, ShouldMoveBody = 1 << 3, IsMovingBody = 1 << 4, HasEnabledOrDisabledInstance = 1 << 5, @@ -95,13 +95,12 @@ private: float getVelocityMultiplier() const; mutable sead::TypedBitFlag> mFlags; - sead::Atomic mModifiedMatrices; + sead::Atomic mPendingTransformChanges; sead::Buffer mRigidBodiesPerBodyLayerType; sead::Buffer mShapesPerBodyLayerType; - // TODO: rename - sead::Buffer mMatrices; - sead::Buffer mMatrices2; - mutable sead::Matrix34f mMtx0 = sead::Matrix34f::ident; + sead::Buffer mPendingExtraTransforms; + sead::Buffer mExtraTransforms; + mutable sead::Matrix34f mCombinedExtraTransform = sead::Matrix34f::ident; mutable sead::Matrix34f mTransform = sead::Matrix34f::ident; sead::Matrix34f* mMtxPtr{}; sead::PtrArray mRigidBodies;