From 6147f854002db071823cda0e0e49515c1f1cc330 Mon Sep 17 00:00:00 2001 From: fallenoak Date: Mon, 27 Oct 2025 22:41:17 -0500 Subject: [PATCH] feat(component): handle eye effects in CCharacterComponent::GeosRenderPrep --- src/component/CCharacterComponent.cpp | 31 +++++++++++++++++++++------ 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/src/component/CCharacterComponent.cpp b/src/component/CCharacterComponent.cpp index 0f5b0e0..cac13b9 100644 --- a/src/component/CCharacterComponent.cpp +++ b/src/component/CCharacterComponent.cpp @@ -682,19 +682,36 @@ void CCharacterComponent::CreateBaseTexture() { } void CCharacterComponent::GeosRenderPrep() { - // TODO + // Check for eye glow + + bool eyeGlow = false; + + if (this->m_data.classID == 6) { + eyeGlow = true; + } else { + auto sectionsRec = this->GetSectionsRecord(VARIATION_FACE, this->m_data.faceID, this->m_data.skinColorID, nullptr); + + if (sectionsRec && sectionsRec->m_flags & 0x4) { + eyeGlow = true; + } + } + + // Hide all geosets (0 - 2000) - // Default all sections (0 - 2000) to hidden this->m_data.model->SetGeometryVisible(0, 2000, 0); - // Show base "skin" section (0) + // Show base skin geoset (0) + this->m_data.model->SetGeometryVisible(0, 0, 1); - // Show selected geosets - for (int32_t i = 0; i < NUM_GEOSET; i++) { - // TODO handle 1703 + // Show all enabled geosets - this->m_data.model->SetGeometryVisible(this->m_data.geosets[i], this->m_data.geosets[i], 1); + for (int32_t geoset = 0; geoset < NUM_GEOSET; geoset++) { + if (geoset == GEOSET_EYE_EFFECTS && eyeGlow) { + this->m_data.model->SetGeometryVisible(1703, 1703, 1); + } else { + this->m_data.model->SetGeometryVisible(this->m_data.geosets[geoset], this->m_data.geosets[geoset], 1); + } } // TODO