From c7e2796e1d7c8508e3e0ced6c71ad99838383d0e Mon Sep 17 00:00:00 2001 From: fallenoak Date: Tue, 14 Oct 2025 23:38:49 -0500 Subject: [PATCH] feat(glue): implement CCharacterSelection::SetFacing --- src/glue/CCharacterSelection.cpp | 21 ++++++++++++++++++++- src/glue/CCharacterSelection.hpp | 1 + 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/glue/CCharacterSelection.cpp b/src/glue/CCharacterSelection.cpp index c32091a..687192a 100644 --- a/src/glue/CCharacterSelection.cpp +++ b/src/glue/CCharacterSelection.cpp @@ -10,6 +10,7 @@ #include "object/client/Player_C.hpp" #include "ui/CSimpleModelFFX.hpp" +int32_t CCharacterSelection::s_characterCount; TSGrowableArray CCharacterSelection::s_characterList; float CCharacterSelection::s_charFacing; int32_t CCharacterSelection::s_enterWorldIndex; @@ -118,7 +119,25 @@ void CCharacterSelection::SetBackgroundModel(const char* modelPath) { } void CCharacterSelection::SetFacing(float facing) { - // TODO + if (!CCharacterSelection::s_characterCount) { + return; + } + + CCharacterSelection::s_charFacing = facing; + + if (!CCharacterSelection::s_characterList.Count()) { + return; + } + + auto component = CCharacterSelection::s_characterList[CCharacterSelection::s_selectionIndex].component; + auto model = component->m_data.model; + + if (!model) { + return; + } + + C3Vector position = { 0.0f, 0.0f, 0.0f }; + model->SetWorldTransform(position, facing, 1.0f); } void CCharacterSelection::ShowCharacter() { diff --git a/src/glue/CCharacterSelection.hpp b/src/glue/CCharacterSelection.hpp index 4a4d778..bf335e7 100644 --- a/src/glue/CCharacterSelection.hpp +++ b/src/glue/CCharacterSelection.hpp @@ -18,6 +18,7 @@ struct CharacterSelectionDisplay { class CCharacterSelection { public: // Static variables + static int32_t s_characterCount; static TSGrowableArray s_characterList; static float s_charFacing; static int32_t s_enterWorldIndex;