diff options
author | Kae <80987908+Novaenia@users.noreply.github.com> | 2025-02-28 17:21:31 +1100 |
---|---|---|
committer | Kae <80987908+Novaenia@users.noreply.github.com> | 2025-02-28 17:21:31 +1100 |
commit | 3e89b9cabf9b56f337b6b953d2222b56969d7375 (patch) | |
tree | e75b75d349acee7b318742a6f543af7ce2651c05 | |
parent | ccb19f589cac0dae73a70445e39111200fcd78ed (diff) |
fix ArmorWearer not updating humanoid drawables when gender changes
-rw-r--r-- | source/game/StarArmorWearer.cpp | 17 | ||||
-rw-r--r-- | source/game/StarArmorWearer.hpp | 3 |
2 files changed, 13 insertions, 7 deletions
diff --git a/source/game/StarArmorWearer.cpp b/source/game/StarArmorWearer.cpp index 0cbb272..c95eaad 100644 --- a/source/game/StarArmorWearer.cpp +++ b/source/game/StarArmorWearer.cpp @@ -31,13 +31,16 @@ ArmorWearer::ArmorWearer() : m_lastNude(true) { void ArmorWearer::setupHumanoidClothingDrawables(Humanoid& humanoid, bool forceNude) { bool nudeChanged = m_lastNude != forceNude; - if (nudeChanged) - m_lastNude = forceNude; - - bool headNeedsSync = nudeChanged || m_headNeedsSync; - bool chestNeedsSync = nudeChanged || m_chestNeedsSync; - bool legsNeedsSync = nudeChanged || m_legsNeedsSync; - bool backNeedsSync = nudeChanged || m_backNeedsSync; + auto gender = humanoid.identity().gender; + bool genderChanged = !m_lastGender || m_lastGender.value() != gender; + m_lastNude = forceNude; + m_lastGender = gender; + + bool allNeedsSync = nudeChanged || genderChanged; + bool headNeedsSync = allNeedsSync || m_headNeedsSync; + bool chestNeedsSync = allNeedsSync || m_chestNeedsSync; + bool legsNeedsSync = allNeedsSync || m_legsNeedsSync; + bool backNeedsSync = allNeedsSync || m_backNeedsSync; bool bodyHidden = false; HeadArmorPtr const& headArmor = m_headCosmeticItem ? m_headCosmeticItem : m_headItem; diff --git a/source/game/StarArmorWearer.hpp b/source/game/StarArmorWearer.hpp index c52de9b..ceb98b0 100644 --- a/source/game/StarArmorWearer.hpp +++ b/source/game/StarArmorWearer.hpp @@ -84,6 +84,9 @@ private: NetElementData<ItemDescriptor> m_legsCosmeticItemDataNetState; NetElementData<ItemDescriptor> m_backCosmeticItemDataNetState; + // only works under the assumption that this ArmorWearer + // will only ever touch one Humanoid (which is true!) + Maybe<Gender> m_lastGender; bool m_lastNude; bool m_headNeedsSync; bool m_chestNeedsSync; |