diff options
| author | Jasper St. Pierre <jstpierre@mecheye.net> | 2021-12-06 06:51:53 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-12-06 12:51:53 +0100 |
| commit | c15d8fcb3e91890c3aa779b391258ff9d6ce1e61 (patch) | |
| tree | 0bc477448f6b4c64925d2480b6a66f1a63a090be /include/JSystem/J3DGraphAnimator | |
| parent | f7916ebde17cb384c75921cf55878f5b7b305366 (diff) | |
more simple J2D/J3D funcs (#166)
* more simple J2D/J3D funcs
* JPABaseShape constructor
* fmt
Co-authored-by: lepelog <25211966+lepelog@users.noreply.github.com>
Diffstat (limited to 'include/JSystem/J3DGraphAnimator')
| -rw-r--r-- | include/JSystem/J3DGraphAnimator/J3DJoint.h | 7 | ||||
| -rw-r--r-- | include/JSystem/J3DGraphAnimator/J3DJointTree.h | 10 | ||||
| -rw-r--r-- | include/JSystem/J3DGraphAnimator/J3DModel.h | 27 | ||||
| -rw-r--r-- | include/JSystem/J3DGraphAnimator/J3DModelData.h | 13 | ||||
| -rw-r--r-- | include/JSystem/J3DGraphAnimator/J3DMtxBuffer.h | 29 |
5 files changed, 61 insertions, 25 deletions
diff --git a/include/JSystem/J3DGraphAnimator/J3DJoint.h b/include/JSystem/J3DGraphAnimator/J3DJoint.h index 25a21bad57..28cc3b92f0 100644 --- a/include/JSystem/J3DGraphAnimator/J3DJoint.h +++ b/include/JSystem/J3DGraphAnimator/J3DJoint.h @@ -10,7 +10,7 @@ class J3DMtxBuffer; class J3DMtxCalc { public: - /* 80325D1C */ void setMtxBuffer(J3DMtxBuffer*); + /* 80325D1C */ static void setMtxBuffer(J3DMtxBuffer*); /* 8000D948 */ virtual ~J3DMtxCalc(); /* 80014E90 */ virtual void setAnmTransform(J3DAnmTransform*); @@ -52,11 +52,12 @@ public: u8 getScaleCompensate() const { return mScaleCompensate; } J3DJoint* getYounger() { return mYounger; } void setYounger(J3DJoint* pYounger) { mYounger = pYounger; } + void setCurrentMtxCalc(J3DMtxCalc* pMtxCalc) { mCurrentMtxCalc = pMtxCalc; } static J3DMtxCalc* mCurrentMtxCalc; private: - /* 0x00 */ void* field_0x0; + /* 0x00 */ void* mCallBackUserData; /* 0x04 */ J3DJointCallBack mCallBack; /* 0x08 */ void* field_0x8; /* 0x0C */ J3DJoint* mChild; @@ -65,7 +66,7 @@ private: /* 0x16 */ u8 mMtxType; /* 0x17 */ u8 mScaleCompensate; /* 0x18 */ J3DTransformInfo mTransformInfo; - /* 0x38 */ f32 field_0x38; + /* 0x38 */ f32 mBoundingSphereRadius; /* 0x3C */ Vec mMin; /* 0x48 */ Vec mMax; /* 0x54 */ J3DMtxCalc* mMtxCalc; diff --git a/include/JSystem/J3DGraphAnimator/J3DJointTree.h b/include/JSystem/J3DGraphAnimator/J3DJointTree.h index 006c930849..181d3554f5 100644 --- a/include/JSystem/J3DGraphAnimator/J3DJointTree.h +++ b/include/JSystem/J3DGraphAnimator/J3DJointTree.h @@ -32,7 +32,11 @@ public: /* 80325D24 */ virtual ~J3DJointTree(); u16 getWEvlpMtxNum() const { return mWEvlpMtxNum; } + u16 getJointNum() const { return mJointNum; } + u16 getDrawMtxNum() const { return mDrawMtxData.mEntryNum; } + J3DJoint* getRootNode() { return mRootNode; } J3DJoint* getJointNodePointer(u16 idx) const { return mJointNodePointer[idx]; } + J3DMtxCalc* getBasicMtxCalc() const { return mBasicMtxCalc; } private: /* 0x04 */ J3DModelHierarchy* mHierarchy; @@ -43,13 +47,13 @@ private: /* 0x18 */ J3DJoint** mJointNodePointer; /* 0x1C */ u16 mJointNum; /* 0x1E */ u16 mWEvlpMtxNum; - /* 0x20 */ u8 mWEvlpMixMtxNum; + /* 0x20 */ u32 mWEvlpMixMtxNum; /* 0x24 */ s32 mWEvlpMixIndex; /* 0x28 */ s32 mWEvlpMixWeight; /* 0x2C */ Mtx* mInvJointMtx; /* 0x30 */ s32 mWEvlpImportantMtxIdx; - /* 0x34 */ J3DDrawMtxData mDrawMtxNum; - /* 0x40 */ u8 field_0x40[4]; + /* 0x34 */ J3DDrawMtxData mDrawMtxData; + /* 0x40 */ u32 field_0x40; /* 0x44 */ JUTNameTab* mJointName; }; // Size: 0x48 diff --git a/include/JSystem/J3DGraphAnimator/J3DModel.h b/include/JSystem/J3DGraphAnimator/J3DModel.h index 02c71511b1..7cadb05f28 100644 --- a/include/JSystem/J3DGraphAnimator/J3DModel.h +++ b/include/JSystem/J3DGraphAnimator/J3DModel.h @@ -15,6 +15,17 @@ enum J3DMdlFlag { /* 0x8 */ J3DMdlFlag_SkinNrmCpu = 0x8, }; +struct J3DUnkCalc1 { + virtual void calc(J3DModel* model); +}; + +struct J3DUnkCalc2 { + virtual void unk(); + virtual void calc(J3DModelData* mpModelData); +}; + +typedef void (*J3DCalcCallBack)(J3DModel*, u32 timing); + class J3DModel { public: /* 800CFFF4 */ void setBaseTRMtx(f32 (*)[4]); @@ -45,19 +56,25 @@ public: /* 80328350 */ virtual ~J3DModel(); J3DModelData* getModelData() { return mModelData; } + void onFlag(u32 flag) { mFlags |= flag; } void offFlag(u32 flag) { mFlags &= ~flag; } bool checkFlag(u32 flag) const { return (mFlags & flag) ? true : false; } Mtx& getBaseTRMtx() { return mBaseTransformMtx; } void i_setBaseTRMtx(Mtx m) { PSMTXCopy(m, mBaseTransformMtx); } + u32 getMtxCalcMode() const { return mFlags & 0x03; } + J3DVertexBuffer* getVertexBuffer() const { return (J3DVertexBuffer*)&mVertexBuffer; } + J3DShapePacket* getShapePacket(u16 idx) const { return &mShapePacket[idx]; } + Mtx33* getBumpMtxPtr(int idx) const { return mMtxBuffer->getBumpMtxPtr(idx); } + Mtx33* getNrmMtxPtr() const { return mMtxBuffer->getNrmMtxPtr(); } // is there a better way to handle inlines with same name as non-inlines? MtxP i_getAnmMtx(int p1) { return mMtxBuffer->getAnmMtx(p1); } /* 0x04 */ J3DModelData* mModelData; /* 0x08 */ u32 mFlags; - /* 0x0C */ u32 field_0x0c; - /* 0x10 */ int field_0x10; + /* 0x0C */ u32 mDiffFlag; + /* 0x10 */ J3DCalcCallBack mCalcCallBack; /* 0x14 */ u32 mUserArea; /* 0x18 */ Vec mBaseScale; /* 0x24 */ Mtx mBaseTransformMtx; @@ -65,12 +82,12 @@ public: /* 0x84 */ J3DMtxBuffer* mMtxBuffer; /* 0x88 */ J3DVertexBuffer mVertexBuffer; /* 0xC0 */ J3DMatPacket* mMatPacket; - /* 0xC4 */ J3DShapePacket** mShapePacket; + /* 0xC4 */ J3DShapePacket* mShapePacket; /* 0xC8 */ J3DDeformData* mDeformData; /* 0xCC */ J3DSkinDeform* mSkinDeform; /* 0xD0 */ J3DVtxColorCalc* mVtxColorCalc; - /* 0xD4 */ int field_0xd4; - /* 0xD8 */ int field_0xd8; + /* 0xD4 */ J3DUnkCalc1* mUnkCalc1; + /* 0xD8 */ J3DUnkCalc2* mUnkCalc2; }; #endif /* J3DMODEL_H */ diff --git a/include/JSystem/J3DGraphAnimator/J3DModelData.h b/include/JSystem/J3DGraphAnimator/J3DModelData.h index 4265ef16d6..d20d6de50a 100644 --- a/include/JSystem/J3DGraphAnimator/J3DModelData.h +++ b/include/JSystem/J3DGraphAnimator/J3DModelData.h @@ -25,6 +25,8 @@ public: J3DVertexData& getVertexData() { return mVertexData; } u16 getShapeNum() const { return mShapeTable.getShapeNum(); } u16 getMaterialNum() const { return mMaterialTable.getMaterialNum(); } + u16 getJointNum() const { return mJointTree.getJointNum(); } + u16 getDrawMtxNum() const { return mJointTree.getDrawMtxNum(); } J3DMaterial* getMaterialNodePointer(u16 idx) const { return mMaterialTable.getMaterialNodePointer(idx); } @@ -36,14 +38,15 @@ public: void* getVtxPosArray() const { return mVertexData.getVtxPosArray(); } void* getVtxNrmArray() const { return mVertexData.getVtxNrmArray(); } _GXColor* getVtxColorArray(u8 idx) const { return mVertexData.getVtxColorArray(idx); } - bool checkFlag(u32 flag) const { return (mFlags & flag) ? true : false; } - bool checkBBoardFlag() const { return field_0xe == 1; } + bool checkFlag(u32 flag) const { return !!(mFlags & flag); } + bool checkBumpFlag() const { return mbHasBumpArray; } + bool checkBBoardFlag() const { return mbHasBillboard == 1; } private: - /* 0x04 */ u32 field_0x4; + /* 0x04 */ void* mpRawData; /* 0x08 */ u32 mFlags; - /* 0x0C */ u16 field_0xc; - /* 0x0E */ u16 field_0xe; + /* 0x0C */ u16 mbHasBumpArray; + /* 0x0E */ u16 mbHasBillboard; /* 0x10 */ J3DJointTree mJointTree; /* 0x58 */ J3DMaterialTable mMaterialTable; /* 0x78 */ J3DShapeTable mShapeTable; diff --git a/include/JSystem/J3DGraphAnimator/J3DMtxBuffer.h b/include/JSystem/J3DGraphAnimator/J3DMtxBuffer.h index 3ff9b52cd8..8aab568306 100644 --- a/include/JSystem/J3DGraphAnimator/J3DMtxBuffer.h +++ b/include/JSystem/J3DGraphAnimator/J3DMtxBuffer.h @@ -24,9 +24,16 @@ public: /* 80326D3C */ void calcNrmMtx(); /* 80326EF0 */ void calcBBoardMtx(); - MtxP getAnmMtx(int idx) const { return *(mMatrices[0] + idx); } + MtxP getAnmMtx(int idx) const { return mpAnmMtx[idx]; } - void setScaleFlag(int idx, u8 flag) { mScaleFlag[idx] = flag; } + void setScaleFlag(int idx, u8 flag) { mScaleFlagArray[idx] = flag; } + u32* getCurrentViewNoPtr() { return &mCurrentViewNo; } + u8* getScaleFlagArray() const { return mScaleFlagArray; } + Mtx** getDrawMtxPtrPtr() const { return mpDrawMtxArr; } + Mtx33** getNrmMtxPtrPtr() const { return mpNrmMtxArr; } + Mtx33* getNrmMtxPtr() const { return mpNrmMtxArr[mCurrentViewNo]; } + Mtx33** getBumpMtxPtrPtr() const { return mpBumpMtxArr; } + Mtx33* getBumpMtxPtr(int idx) const { return mpBumpMtxArr[idx]; } static Mtx sNoUseDrawMtx; static Mtx33 sNoUseNrmMtx; @@ -35,14 +42,18 @@ public: private: /* 0x00 */ J3DJointTree* mJointTree; - /* 0x04 */ u8* mScaleFlag; + /* 0x04 */ u8* mScaleFlagArray; /* 0x08 */ u8* mEnvScaleFlag; - /* 0x0C */ Mtx* mMatrices[5]; // fix this later - /* 0x20 */ Mtx33* mpNrmMtxPtrPtr; - /* 0x24 */ Mtx** field_0x24; - /* 0x28 */ Mtx** mpBumpMtxPtr; - /* 0x2C */ u32 field_0x2c; - /* 0x30 */ u32* mCurrentViewNoPtr; + /* 0x0C */ Mtx* mpAnmMtx; + /* 0x10 */ Mtx* mpWeightEnvMtx; + /* 0x14 */ Mtx** mpOldDrawMtxArr; + /* 0x18 */ Mtx** mpDrawMtxArr; + /* 0x1C */ Mtx33** mpOldNrmMtxArr; + /* 0x20 */ Mtx33** mpNrmMtxArr; + /* 0x24 */ u32 field_0x24; + /* 0x28 */ Mtx33** mpBumpMtxArr; + /* 0x2C */ u32 mFlags; + /* 0x30 */ u32 mCurrentViewNo; /* 0x34 */ Mtx** mUserAnmMtx; public: |
