diff --git a/configure.py b/configure.py index 70ad8691f..9f5603ed7 100644 --- a/configure.py +++ b/configure.py @@ -875,7 +875,7 @@ config.libs = [ Object(NonMatching, "JSystem/J3DGraphAnimator/J3DModel.cpp"), Object(NonMatching, "JSystem/J3DGraphAnimator/J3DAnimation.cpp"), Object(NonMatching, "JSystem/J3DGraphAnimator/J3DMaterialAnm.cpp"), - Object(NonMatching, "JSystem/J3DGraphAnimator/J3DVisibility.cpp"), + Object(Matching, "JSystem/J3DGraphAnimator/J3DVisibility.cpp"), Object(NonMatching, "JSystem/J3DGraphAnimator/J3DCluster.cpp"), Object(NonMatching, "JSystem/J3DGraphAnimator/J3DJoint.cpp"), Object(Matching, "JSystem/J3DGraphAnimator/J3DNode.cpp"), diff --git a/include/JSystem/J3DGraphAnimator/J3DModel.h b/include/JSystem/J3DGraphAnimator/J3DModel.h index 2faabea94..58ac20a45 100644 --- a/include/JSystem/J3DGraphAnimator/J3DModel.h +++ b/include/JSystem/J3DGraphAnimator/J3DModel.h @@ -38,13 +38,13 @@ class J3DVisibilityManager { public: J3DVisibilityManager(J3DAnmVisibilityFull* visibility) { mAnmVisibility = visibility; - field_0x8 = 1; + mbActive = 1; } virtual ~J3DVisibilityManager(); virtual void setVisibility(J3DModelData*); /* 0x04 */ J3DAnmVisibilityFull* mAnmVisibility; - /* 0x08 */ int field_0x8; + /* 0x08 */ int mbActive; }; class J3DUnkCallBack { diff --git a/src/JSystem/J3DGraphAnimator/J3DVisibility.cpp b/src/JSystem/J3DGraphAnimator/J3DVisibility.cpp index 52a9da0f9..a9365b342 100644 --- a/src/JSystem/J3DGraphAnimator/J3DVisibility.cpp +++ b/src/JSystem/J3DGraphAnimator/J3DVisibility.cpp @@ -1,17 +1,24 @@ -// -// Generated by dtk -// Translation Unit: J3DVisibility.cpp -// +/* + * J3DVisibility.cpp + */ +#include "JSystem/J3DGraphAnimator/J3DModel.h" +#include "JSystem/J3DGraphAnimator/J3DModelData.h" +#include "JSystem/J3DGraphAnimator/J3DAnimation.h" -#include "JSystem/J3DGraphAnimator/J3DVisibility.h" -#include "dolphin/types.h" +void J3DVisibilityManager::setVisibility(J3DModelData* pModel) { + u8 visibility; -/* 802F36BC-802F377C .text setVisibility__20J3DVisibilityManagerFP12J3DModelData */ -void J3DVisibilityManager::setVisibility(J3DModelData*) { - /* Nonmatching */ + if ((mbActive & 1) != 0 && mAnmVisibility != NULL) { + for (u16 index = 0; index < pModel->getShapeNum(); index++) { + visibility = 0; + mAnmVisibility->getVisibility(index, &visibility); + if (visibility != 0) { + pModel->getShapeNodePointer(index)->offFlag(1); + } else { + pModel->getShapeNodePointer(index)->onFlag(1); + } + } + } } -/* 802F377C-802F37C4 .text __dt__20J3DVisibilityManagerFv */ -J3DVisibilityManager::~J3DVisibilityManager() { - /* Nonmatching */ -} +J3DVisibilityManager::~J3DVisibilityManager() {}