From 801fbc43b90076afc362a3a67e659c3423a641a9 Mon Sep 17 00:00:00 2001 From: fallenoak Date: Mon, 13 Oct 2025 20:32:08 -0500 Subject: [PATCH] feat(model): load skin sections in CM2Model::InitializeLoaded --- src/model/CM2Model.cpp | 19 ++++++++++++++++++- src/model/CM2Model.hpp | 1 + 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/model/CM2Model.cpp b/src/model/CM2Model.cpp index b220b74..64f20c9 100644 --- a/src/model/CM2Model.cpp +++ b/src/model/CM2Model.cpp @@ -990,7 +990,24 @@ int32_t CM2Model::InitializeLoaded() { } } - // TODO + + if (this->m_shared->skinProfile->skinSections.Count()) { + this->m_skinSections = reinterpret_cast(&data[0]); + data += (sizeof(uint32_t) * this->m_shared->skinProfile->skinSections.Count()); + + if (this->model30) { + memcpy(this->m_skinSections, model30->m_skinSections, sizeof(uint32_t) * this->m_shared->skinProfile->skinSections.Count()); + } else { + // Mark all skin sections as visible by default + for (int32_t i = 0; i < this->m_shared->skinProfile->skinSections.Count(); i++) { + auto modelSkinSection = &this->m_skinSections[i]; + + if (modelSkinSection) { + *modelSkinSection = 1; + } + } + } + } if (this->m_shared->m_data->colors.Count()) { this->m_colors = reinterpret_cast(&data[0]); diff --git a/src/model/CM2Model.hpp b/src/model/CM2Model.hpp index d035441..fba4c20 100644 --- a/src/model/CM2Model.hpp +++ b/src/model/CM2Model.hpp @@ -99,6 +99,7 @@ class CM2Model { M2ModelBone* m_bones = nullptr; C44Matrix* m_boneMatrices = nullptr; M2ModelColor* m_colors = nullptr; + uint32_t* m_skinSections = nullptr; HTEXTURE* m_textures = nullptr; M2ModelTextureWeight* m_textureWeights = nullptr; C44Matrix* m_textureMatrices = nullptr;