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;