summaryrefslogtreecommitdiff
path: root/include/JSystem/J3DGraphLoader
diff options
context:
space:
mode:
authorTakaRikka <38417346+TakaRikka@users.noreply.github.com>2022-10-19 00:38:01 -0700
committerGitHub <noreply@github.com>2022-10-19 00:38:01 -0700
commitf03b959831d308b63ba72d79f7814faaa6818481 (patch)
treee5b31e52e6755877e7402cd81f8f490565b1855c /include/JSystem/J3DGraphLoader
parent4913395dbd1a33d794028ceb82579b4baffe954d (diff)
parentc3a6d117295705a486bbd67cc0c84991b4d139c3 (diff)
Merge pull request #211 from TakaRikka/work1
d_attention / d_a_player / d_demo + misc
Diffstat (limited to 'include/JSystem/J3DGraphLoader')
-rw-r--r--include/JSystem/J3DGraphLoader/J3DJointFactory.h45
-rw-r--r--include/JSystem/J3DGraphLoader/J3DShapeFactory.h74
2 files changed, 117 insertions, 2 deletions
diff --git a/include/JSystem/J3DGraphLoader/J3DJointFactory.h b/include/JSystem/J3DGraphLoader/J3DJointFactory.h
index 2e992b48f3..98409802a7 100644
--- a/include/JSystem/J3DGraphLoader/J3DJointFactory.h
+++ b/include/JSystem/J3DGraphLoader/J3DJointFactory.h
@@ -1,6 +1,49 @@
#ifndef J3DJOINTFACTORY_H
#define J3DJOINTFACTORY_H
+#include "JSystem/J3DGraphBase/J3DTransform.h"
+#include "JSystem/JGeometry.h"
#include "dolphin/types.h"
-#endif /* J3DJOINTFACTORY_H */
+struct J3DJoint;
+struct ResNTAB;
+
+struct J3DJointInitData {
+ /* 0x00 */ u16 mKind;
+ /* 0x02 */ bool mScaleCompensate;
+ /* 0x04 */ J3DTransformInfo mTransformInfo;
+ /* 0x24 */ f32 mRadius;
+ /* 0x28 */ Vec mMin;
+ /* 0x2C */ Vec mMax;
+}; // Size: 0x30
+
+struct J3DJointBlock {
+ /* 0x00 */ u8 mMagic[4];
+ /* 0x04 */ u32 mSize;
+
+ /* 0x08 */ u16 mJointNum;
+ /* 0x0A */ u16 _pad;
+
+ /* 0x0C */ J3DJointInitData* mJointInitData;
+ /* 0x10 */ u16* mIndexTable;
+ /* 0x14 */ ResNTAB* mNameTable;
+};
+
+struct J3DJointFactory {
+ /* 80337178 */ J3DJointFactory(J3DJointBlock const&);
+ /* 803371D0 */ J3DJoint* create(int);
+
+ J3DJointInitData* mJointInitData;
+ u16* mIndexTable;
+
+ u16 getKind(int no) const { return mJointInitData[mIndexTable[no]].mKind; }
+ u8 getScaleCompensate(int no) const { return mJointInitData[mIndexTable[no]].mScaleCompensate; }
+ const J3DTransformInfo& getTransformInfo(int no) const {
+ return mJointInitData[mIndexTable[no]].mTransformInfo;
+ }
+ f32 getRadius(int no) const { return mJointInitData[mIndexTable[no]].mRadius; }
+ Vec& getMin(int no) const { return mJointInitData[mIndexTable[no]].mMin; }
+ Vec& getMax(int no) const { return mJointInitData[mIndexTable[no]].mMax; }
+};
+
+#endif /* J3DJOINTFACTORY_H */ \ No newline at end of file
diff --git a/include/JSystem/J3DGraphLoader/J3DShapeFactory.h b/include/JSystem/J3DGraphLoader/J3DShapeFactory.h
index 6f1f64ce13..385a217e25 100644
--- a/include/JSystem/J3DGraphLoader/J3DShapeFactory.h
+++ b/include/JSystem/J3DGraphLoader/J3DShapeFactory.h
@@ -1,6 +1,78 @@
#ifndef J3DSHAPEFACTORY_H
#define J3DSHAPEFACTORY_H
+#include "dolphin/gx/GX.h"
#include "dolphin/types.h"
-#endif /* J3DSHAPEFACTORY_H */
+struct J3DShape;
+struct J3DShapeMtx;
+struct J3DShapeDraw;
+struct ResNTAB;
+
+struct J3DShapeInitData {
+ /* 0x00 */ u8 mShapeMtxType;
+ /* 0x02 */ u16 mMtxGroupNum;
+ /* 0x04 */ u16 mVtxDescListIndex;
+ /* 0x06 */ u16 mMtxInitDataIndex;
+ /* 0x08 */ u16 mDrawInitDataIndex;
+ /* 0x0C */ f32 mRadius;
+ /* 0x10 */ Vec mMin;
+ /* 0x1C */ Vec mMax;
+};
+
+struct J3DShapeMtxInitData {
+ /* 0x00 */ u16 mUseMtxIndex;
+ /* 0x02 */ u16 mUseMtxCount;
+ /* 0x04 */ u32 mFirstUseMtxIndex;
+};
+
+struct J3DShapeDrawInitData {
+ /* 0x00 */ u32 mDisplayListSize;
+ /* 0x04 */ u32 mDisplayListIndex;
+};
+
+struct J3DShapeBlock {
+ /* 0x00 */ u8 mMagic[4];
+ /* 0x04 */ u32 mSize;
+
+ /* 0x08 */ u16 mShapeNum;
+ /* 0x0A */ u16 _pad;
+
+ /* 0x0C */ J3DShapeInitData* mShapeInitData;
+ /* 0x10 */ u16* mIndexTable;
+ /* 0x14 */ ResNTAB* mNameTable;
+ /* 0x18 */ GXVtxDescList* mVtxDescList;
+ /* 0x1C */ u16* mMtxTable;
+ /* 0x20 */ u8* mDisplayListData;
+ /* 0x24 */ J3DShapeMtxInitData* mMtxInitData;
+ /* 0x28 */ J3DShapeDrawInitData* mDrawInitData;
+};
+
+struct J3DShapeFactory {
+ /* 80337350 */ J3DShapeFactory(J3DShapeBlock const&);
+ /* 80337400 */ J3DShape* create(int, u32, GXVtxDescList*);
+ /* 803375BC */ J3DShapeMtx* newShapeMtx(u32, int, int) const;
+ /* 8033784C */ J3DShapeDraw* newShapeDraw(int, int) const;
+ /* 803378D8 */ void allocVcdVatCmdBuffer(u32);
+ /* 80337944 */ s32 calcSize(int, u32);
+ /* 803379D8 */ s32 calcSizeVcdVatCmdBuffer(u32);
+ /* 803379E8 */ s32 calcSizeShapeMtx(u32, int, int) const;
+
+ /* 0x00 */ J3DShapeInitData* mShapeInitData;
+ /* 0x04 */ u16* mIndexTable;
+ /* 0x08 */ GXVtxDescList* mVtxDescList;
+ /* 0x0C */ u16* mMtxTable;
+ /* 0x10 */ u8* mDisplayListData;
+ /* 0x14 */ J3DShapeMtxInitData* mMtxInitData;
+ /* 0x18 */ J3DShapeDrawInitData* mDrawInitData;
+ /* 0x1C */ u8* mVcdVatCmdBuffer;
+
+ u32 getMtxGroupNum(int no) const { return mShapeInitData[mIndexTable[no]].mMtxGroupNum; }
+ GXVtxDescList* getVtxDescList(int no) const { return (GXVtxDescList*)((u8*)mVtxDescList + mShapeInitData[mIndexTable[no]].mVtxDescListIndex); }
+ f32 getRadius(int no) const { return mShapeInitData[mIndexTable[no]].mRadius; }
+ Vec& getMin(int no) const { return mShapeInitData[mIndexTable[no]].mMin; }
+ Vec& getMax(int no) const { return mShapeInitData[mIndexTable[no]].mMax; }
+};
+
+
+#endif /* J3DSHAPEFACTORY_H */ \ No newline at end of file