From ef164cc8aac3a4d1729d3cbf722dec9b30a0c147 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Lam?= Date: Fri, 16 Oct 2026 00:18:41 +0100 Subject: [PATCH] ksys/phys: move motionTypeFromText to physUtil motionTypeFromText isn't part of physDefines: its "Keyframed" string (only used there) sits between the StaticCompound and PlayReport strings in .rodata, far from physDefines' enum text, and the function is linked right after the contact listener's inline virtuals, so it most likely starts a new TU at 0x7100fd069c. Nothing separates it from getMaterialMaskFromShape and the other helpers in physUtil, so it goes in the same file and its declaration moves to physUtil.h. That part is a guess: neither function has data that would show a boundary. (AI assisted using Claude Opus 5.5) --- .../Physics/RigidBody/physRigidBodyParam.cpp | 1 + src/KingSystem/Physics/System/physUtil.cpp | 24 +++++++++++++++++++ src/KingSystem/Physics/System/physUtil.h | 5 ++++ src/KingSystem/Physics/physDefines.cpp | 19 --------------- src/KingSystem/Physics/physDefines.h | 2 -- 5 files changed, 30 insertions(+), 21 deletions(-) diff --git a/src/KingSystem/Physics/RigidBody/physRigidBodyParam.cpp b/src/KingSystem/Physics/RigidBody/physRigidBodyParam.cpp index 73021829..ffca4698 100644 --- a/src/KingSystem/Physics/RigidBody/physRigidBodyParam.cpp +++ b/src/KingSystem/Physics/RigidBody/physRigidBodyParam.cpp @@ -19,6 +19,7 @@ #include "KingSystem/Physics/RigidBody/physRigidBodyPolytope.h" #include "KingSystem/Physics/RigidBody/physRigidBodySphere.h" #include "KingSystem/Physics/System/physEntityGroupFilter.h" +#include "KingSystem/Physics/System/physUtil.h" #include "KingSystem/Utils/SafeDelete.h" namespace ksys::phys { diff --git a/src/KingSystem/Physics/System/physUtil.cpp b/src/KingSystem/Physics/System/physUtil.cpp index 95e685be..d5ed8af5 100644 --- a/src/KingSystem/Physics/System/physUtil.cpp +++ b/src/KingSystem/Physics/System/physUtil.cpp @@ -1 +1,25 @@ #include "KingSystem/Physics/System/physUtil.h" +#include "KingSystem/Physics/physDefines.h" + +namespace ksys::phys { + +MotionType motionTypeFromText(const sead::SafeString& text) { + static constexpr const char* texts[] = { + "Dynamic", + "Fixed", + "Keyframed", + }; + static_assert(int(MotionType::Dynamic) == 0); + static_assert(int(MotionType::Fixed) == 1); + static_assert(int(MotionType::Keyframed) == 2); + + int type = 0; + for (const char* type_text : texts) { + if (text == type_text) + return static_cast(type); + ++type; + } + return MotionType::Unknown; +} + +} // namespace ksys::phys diff --git a/src/KingSystem/Physics/System/physUtil.h b/src/KingSystem/Physics/System/physUtil.h index 976a6889..94d56ee6 100644 --- a/src/KingSystem/Physics/System/physUtil.h +++ b/src/KingSystem/Physics/System/physUtil.h @@ -2,6 +2,7 @@ #include #include +#include class hkpCollidable; class hkpShape; @@ -14,6 +15,10 @@ namespace ksys::phys { class StaticCompoundRigidBodyGroup; struct RigidBodyCollisionMasks; +enum class MotionType; + +// 0x0000007100fd069c +MotionType motionTypeFromText(const sead::SafeString& text); // 0x0000007100fd0810 u32 getMaterialMaskFromShape(const hkpShape& shape, const u32* shape_key, diff --git a/src/KingSystem/Physics/physDefines.cpp b/src/KingSystem/Physics/physDefines.cpp index 079b5c72..06938e95 100644 --- a/src/KingSystem/Physics/physDefines.cpp +++ b/src/KingSystem/Physics/physDefines.cpp @@ -84,23 +84,4 @@ WallCode wallCodeFromText(const sead::SafeString& text) { return 0; } -MotionType motionTypeFromText(const sead::SafeString& text) { - static constexpr const char* texts[] = { - "Dynamic", - "Fixed", - "Keyframed", - }; - static_assert(int(MotionType::Dynamic) == 0); - static_assert(int(MotionType::Fixed) == 1); - static_assert(int(MotionType::Keyframed) == 2); - - int type = 0; - for (const char* type_text : texts) { - if (text == type_text) - return static_cast(type); - ++type; - } - return MotionType::Unknown; -} - } // namespace ksys::phys diff --git a/src/KingSystem/Physics/physDefines.h b/src/KingSystem/Physics/physDefines.h index a7bd1464..3625d1b3 100644 --- a/src/KingSystem/Physics/physDefines.h +++ b/src/KingSystem/Physics/physDefines.h @@ -401,6 +401,4 @@ FloorCode floorCodeFromText(const sead::SafeString& text); const char* wallCodeToText(WallCode code); WallCode wallCodeFromText(const sead::SafeString& text); -MotionType motionTypeFromText(const sead::SafeString& text); - } // namespace ksys::phys