From c82ac35e191e27c9b7915b402672879b32a12bf9 Mon Sep 17 00:00:00 2001 From: fallenoak Date: Tue, 30 Dec 2025 10:34:40 -0600 Subject: [PATCH] feat(glue): implement Script_SetCharacterCreateFacing --- src/glue/CCharacterCreation.cpp | 11 +++++++++++ src/glue/CCharacterCreation.hpp | 1 + src/glue/CCharacterCreationScript.cpp | 11 ++++++++++- 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/glue/CCharacterCreation.cpp b/src/glue/CCharacterCreation.cpp index 84ae672..1bf8879 100644 --- a/src/glue/CCharacterCreation.cpp +++ b/src/glue/CCharacterCreation.cpp @@ -239,6 +239,17 @@ void CCharacterCreation::SetCharCustomizeModel(const char* filename) { } } +void CCharacterCreation::SetFacing(float orientation) { + CCharacterCreation::s_charFacing = orientation; + + auto characterModel = CCharacterCreation::s_character->m_data.model; + + if (characterModel) { + C3Vector position = { 0.0f, 0.0f, 0.0f }; + characterModel->SetWorldTransform(position, orientation, 1.0f); + } +} + void CCharacterCreation::SetSelectedClass(int32_t classID) { if (!CCharacterCreation::IsClassValid(classID)) { return; diff --git a/src/glue/CCharacterCreation.hpp b/src/glue/CCharacterCreation.hpp index 6a3f185..222d68e 100644 --- a/src/glue/CCharacterCreation.hpp +++ b/src/glue/CCharacterCreation.hpp @@ -31,6 +31,7 @@ class CCharacterCreation { static bool IsClassValid(int32_t classID); static void ResetCharCustomizeInfo(); static void SetCharCustomizeModel(const char* filename); + static void SetFacing(float orientation); static void SetSelectedClass(int32_t classID); }; diff --git a/src/glue/CCharacterCreationScript.cpp b/src/glue/CCharacterCreationScript.cpp index da2e6f4..859e5f4 100644 --- a/src/glue/CCharacterCreationScript.cpp +++ b/src/glue/CCharacterCreationScript.cpp @@ -273,7 +273,16 @@ int32_t Script_GetCharacterCreateFacing(lua_State* L) { } int32_t Script_SetCharacterCreateFacing(lua_State* L) { - WHOA_UNIMPLEMENTED(0); + if (!lua_isnumber(L, 1)) { + luaL_error(L, "Usage: SetCharacterCreateFacing(degrees)"); + return 0; + } + + auto orientation = lua_tonumber(L, 1) * 0.017453292; + + CCharacterCreation::SetFacing(orientation); + + return 1; } int32_t Script_GetRandomName(lua_State* L) {