mirror of
https://github.com/zeldaret/tp
synced 2026-07-07 22:22:05 -04:00
Work on J3DSkinDeform
This commit is contained in:
@@ -45,13 +45,14 @@ public:
|
||||
u16 getJointNum() const { return mJointNum; }
|
||||
u16 getDrawMtxNum() const { return mDrawMtxData.mEntryNum; }
|
||||
u8 getDrawMtxFlag(u16 idx) const { return mDrawMtxData.mDrawMtxFlag[idx]; }
|
||||
u8 getDrawMtxIndex(u16 idx) const { return mDrawMtxData.mDrawMtxIndex[idx]; }
|
||||
u16 getDrawMtxIndex(u16 idx) const { return mDrawMtxData.mDrawMtxIndex[idx]; }
|
||||
JUTNameTab* getJointName() const { return mJointName; }
|
||||
J3DJoint* getRootNode() { return mRootNode; }
|
||||
J3DJoint* getJointNodePointer(u16 idx) const { return mJointNodePointer[idx]; }
|
||||
J3DMtxCalc* getBasicMtxCalc() const { return mBasicMtxCalc; }
|
||||
Mtx& getInvJointMtx(s32 idx) const { return mInvJointMtx[idx]; }
|
||||
u32 getModelDataType() const { return mModelDataType; }
|
||||
bool checkFlag(u32 flag) { return mFlags & flag; }
|
||||
|
||||
private:
|
||||
/* 0x04 */ J3DModelHierarchy* mHierarchy;
|
||||
|
||||
@@ -79,6 +79,7 @@ public:
|
||||
J3DVertexBuffer* getVertexBuffer() const { return (J3DVertexBuffer*)&mVertexBuffer; }
|
||||
J3DMatPacket* getMatPacket(u16 idx) const { return &mMatPacket[idx]; }
|
||||
J3DShapePacket* getShapePacket(u16 idx) const { return &mShapePacket[idx]; }
|
||||
J3DMtxBuffer* getMtxBuffer() const { return mMtxBuffer; }
|
||||
Mtx33* getBumpMtxPtr(int idx) const { return mMtxBuffer->getBumpMtxPtr(idx); }
|
||||
Mtx33* getNrmMtxPtr() const { return mMtxBuffer->getNrmMtxPtr(); }
|
||||
Mtx* getDrawMtxPtr() const { return mMtxBuffer->getDrawMtxPtr(); }
|
||||
|
||||
@@ -34,6 +34,10 @@ public:
|
||||
J3DMaterial* getMaterialNodePointer(u16 idx) const {
|
||||
return mMaterialTable.getMaterialNodePointer(idx);
|
||||
}
|
||||
u32 getVtxNum() const { return mVertexData.getVtxNum(); }
|
||||
u32 getNrmNum() const { return mVertexData.getNrmNum(); }
|
||||
u8 getDrawMtxFlag(u16 idx) const { return mJointTree.getDrawMtxFlag(idx); }
|
||||
u16 getDrawMtxIndex(u16 idx) const { return mJointTree.getDrawMtxIndex(idx); }
|
||||
J3DShape* getShapeNodePointer(u16 idx) const { return mShapeTable.getShapeNodePointer(idx); }
|
||||
J3DJoint* getJointNodePointer(u16 idx) const { return mJointTree.getJointNodePointer(idx); }
|
||||
J3DJointTree& getJointTree() { return mJointTree; }
|
||||
@@ -42,6 +46,9 @@ public:
|
||||
J3DTexture* getTexture() const { return mMaterialTable.getTexture(); }
|
||||
JUTNameTab* getTextureName() const { return mMaterialTable.getTextureName(); }
|
||||
u16 getWEvlpMtxNum() const { return mJointTree.getWEvlpMtxNum(); }
|
||||
u16* getWEvlpMixMtxIndex() const { return mJointTree.getWEvlpMixIndex(); }
|
||||
f32* getWEvlpMixWeight() const { return mJointTree.getWEvlpMixWeight(); }
|
||||
u8 getWEvlpMixMtxNum(u16 idx) const { return mJointTree.getWEvlpMixMtxNum(idx); }
|
||||
u32 getModelDataType() const { return mJointTree.getModelDataType(); }
|
||||
void* getVtxPosArray() const { return mVertexData.getVtxPosArray(); }
|
||||
void* getVtxNrmArray() const { return mVertexData.getVtxNrmArray(); }
|
||||
|
||||
@@ -26,11 +26,13 @@ public:
|
||||
|
||||
MtxP getAnmMtx(int idx) const { return mpAnmMtx[idx]; }
|
||||
void setAnmMtx(int i, Mtx m) { PSMTXCopy(m, (MtxP)mpAnmMtx[i]); }
|
||||
MtxP getWeightAnmMtx(int idx) const { return mpWeightEvlpMtx[idx]; }
|
||||
|
||||
void setScaleFlag(int idx, u8 flag) { mpScaleFlagArr[idx] = flag; }
|
||||
u32* getCurrentViewNoPtr() { return &mCurrentViewNo; }
|
||||
u8* getScaleFlagArray() const { return mpScaleFlagArr; }
|
||||
u8 getScaleFlag(u16 idx) const { return mpScaleFlagArr[idx]; }
|
||||
u8 getScaleFlag(int idx) const { return mpScaleFlagArr[idx]; }
|
||||
u8 getEnvScaleFlag(int idx) const { return mpEvlpScaleFlagArr[idx]; }
|
||||
Mtx** getDrawMtxPtrPtr() const { return mpDrawMtxArr[1]; }
|
||||
Mtx* getDrawMtxPtr() const { return mpDrawMtxArr[1][mCurrentViewNo]; }
|
||||
Mtx* getDrawMtx(u16 idx) const { return &mpDrawMtxArr[1][mCurrentViewNo][idx]; }
|
||||
@@ -39,6 +41,7 @@ public:
|
||||
Mtx33* getNrmMtx(u16 idx) const { return &mpNrmMtxArr[1][mCurrentViewNo][idx]; }
|
||||
Mtx33*** getBumpMtxPtrPtr() const { return mpBumpMtxArr[1]; }
|
||||
Mtx33* getBumpMtxPtr(int idx) const { return mpBumpMtxArr[1][idx][mCurrentViewNo]; }
|
||||
J3DJointTree* getJointTree() const { return mJointTree; }
|
||||
|
||||
void swapDrawMtx() {
|
||||
Mtx* tmp = mpDrawMtxArr[0][mCurrentViewNo];
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#include "JSystem/J3DGraphAnimator/J3DModelData.h"
|
||||
#include "JSystem/J3DGraphAnimator/J3DMtxBuffer.h"
|
||||
#include "JSystem/J3DGraphBase/J3DVertex.h"
|
||||
#include "JSystem/J3DGraphBase/J3DTransform.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
class J3DModel;
|
||||
@@ -38,10 +39,10 @@ struct J3DSkinNList {
|
||||
/* 8032C85C */ void calcSkin_VtxPosF32(f32 (*)[4], void*, void*);
|
||||
/* 8032C8E4 */ void calcSkin_VtxNrmF32(f32 (*)[4], void*, void*);
|
||||
|
||||
/* 0x00 */ int field_0x0;
|
||||
/* 0x04 */ int field_0x4;
|
||||
/* 0x08 */ int field_0x8;
|
||||
/* 0x0C */ int field_0xc;
|
||||
/* 0x00 */ u16* field_0x0;
|
||||
/* 0x04 */ u16* field_0x4;
|
||||
/* 0x08 */ f32* field_0x8;
|
||||
/* 0x0C */ f32* field_0xc;
|
||||
/* 0x10 */ u16 field_0x10;
|
||||
/* 0x12 */ u16 field_0x12;
|
||||
}; // Size: 0x14
|
||||
@@ -50,7 +51,7 @@ class J3DSkinDeform {
|
||||
public:
|
||||
/* 8032C96C */ J3DSkinDeform();
|
||||
/* 8032C9B0 */ void initSkinInfo(J3DModelData*);
|
||||
/* 8032CF44 */ void initMtxIndexArray(J3DModelData*);
|
||||
/* 8032CF44 */ int initMtxIndexArray(J3DModelData*);
|
||||
/* 8032D378 */ void changeFastSkinDL(J3DModelData*);
|
||||
/* 8032D5C4 */ void calcNrmMtx(J3DMtxBuffer*);
|
||||
/* 8032D738 */ void transformVtxPosNrm(J3DModelData*);
|
||||
@@ -62,25 +63,32 @@ public:
|
||||
/* 8032DDB8 */ void deformVtxNrm_F32(J3DVertexBuffer*) const;
|
||||
/* 8032DEBC */ void deformVtxNrm_S16(J3DVertexBuffer*) const;
|
||||
/* 8032DFDC */ void deform(J3DModel*);
|
||||
void setNrmMtx(int i, MtxP mtx) {
|
||||
J3DPSMtx33CopyFrom34(mtx, (Mtx3P)mNrmMtx[i]);
|
||||
}
|
||||
Mtx3P getNrmMtx(int i) { return mNrmMtx[i]; }
|
||||
void onFlag(u32 flag) { mFlags |= flag; }
|
||||
void offFlag(u32 flag) { mFlags &= ~flag; }
|
||||
bool checkFlag(u32 flag) { return mFlags & flag; }
|
||||
|
||||
/* 8032E064 */ virtual void deform(J3DVertexBuffer*, J3DMtxBuffer*);
|
||||
/* 8032E1B0 */ virtual ~J3DSkinDeform();
|
||||
|
||||
static u8 sWorkArea_WEvlpMixMtx[4096];
|
||||
static u8 sWorkArea_WEvlpMixWeight[4096];
|
||||
static u8 sWorkArea_MtxReg[2048 + 8 /* padding */];
|
||||
static u16* sWorkArea_WEvlpMixMtx[1024];
|
||||
static f32* sWorkArea_WEvlpMixWeight[1024];
|
||||
static u16 sWorkArea_MtxReg[1024 + 4 /* padding */];
|
||||
|
||||
private:
|
||||
/* 0x04 */ void** mPosData;
|
||||
/* 0x08 */ void** field_0x8;
|
||||
/* 0x0C */ void** field_0xc;
|
||||
/* 0x10 */ Mtx** mNrmMtx;
|
||||
/* 0x04 */ u16* mPosData;
|
||||
/* 0x08 */ u16* mNrmData;
|
||||
/* 0x0C */ Mtx* mPosMtx;
|
||||
/* 0x10 */ Mtx33* mNrmMtx;
|
||||
/* 0x14 */ u32 mFlags;
|
||||
/* 0x18 */ u8 field_0x18;
|
||||
/* 0x19 */ u8 field_0x19;
|
||||
/* 0x1C */ int field_0x1c;
|
||||
/* 0x20 */ int field_0x20;
|
||||
/* 0x24 */ J3DSkinNList** mSkinNList;
|
||||
/* 0x24 */ J3DSkinNList* mSkinNList;
|
||||
};
|
||||
|
||||
class J3DDeformer {
|
||||
@@ -100,4 +108,15 @@ private:
|
||||
/* 0x10 */ u32 mFlags;
|
||||
}; // Size: 0x14
|
||||
|
||||
inline void J3DFillZero32B(register void* param_0, register u32 param_1) {
|
||||
asm {
|
||||
srwi param_1, param_1, 5
|
||||
mtctr param_1
|
||||
lbl_8032D948:
|
||||
dcbz 0, param_0
|
||||
addi param_0, param_0, 0x20
|
||||
bdnz lbl_8032D948
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* J3DSKINDEFORM_H */
|
||||
|
||||
@@ -107,6 +107,7 @@ public:
|
||||
void setTexMtxLoadType(u32 type) { mFlags = (mFlags & 0xFFFF0FFF) | type; }
|
||||
bool getNBTFlag() const { return mHasNBT; }
|
||||
u32 getBumpMtxOffset() const { return mBumpMtxOffset; }
|
||||
GXVtxDescList* getVtxDesc() const { return mVtxDesc; }
|
||||
|
||||
J3DMaterial* getMaterial() const { return mMaterial; }
|
||||
u32 getIndex() const { return mIndex; }
|
||||
|
||||
@@ -14,6 +14,7 @@ public:
|
||||
|
||||
u8* getDisplayList() const { return (u8*)mDisplayList; }
|
||||
u32 getDisplayListSize() const { return mDisplayListSize; }
|
||||
void setDisplayListSize(u32 size) { mDisplayListSize = size; }
|
||||
|
||||
private:
|
||||
/* 0x04 */ u32 mDisplayListSize;
|
||||
|
||||
@@ -14,8 +14,201 @@ struct J3DTransformInfo {
|
||||
extern J3DTransformInfo const j3dDefaultTransformInfo;
|
||||
extern Vec const j3dDefaultScale;
|
||||
extern Mtx const j3dDefaultMtx;
|
||||
extern f32 PSMulUnit01[2];
|
||||
|
||||
void J3DGetTranslateRotateMtx(J3DTransformInfo const&, Mtx);
|
||||
void J3DGetTranslateRotateMtx(s16, s16, s16, f32, f32, f32, Mtx);
|
||||
void J3DPSCalcInverseTranspose(f32 (*param_0)[4], f32 (*param_1)[3]);
|
||||
void J3DGQRSetup7(u32 param_0, u32 param_1, u32 param_2, u32 param_3);
|
||||
|
||||
inline void J3DPSMtx33CopyFrom34(register MtxP src, register Mtx3P dst) {
|
||||
register f32 x_y1;
|
||||
register f32 z1;
|
||||
register f32 x_y2;
|
||||
register f32 z2;
|
||||
register f32 x_y3;
|
||||
register f32 z3;
|
||||
asm {
|
||||
psq_l x_y1, 0(src), 0, 0
|
||||
lfs z1, 8(src)
|
||||
psq_l x_y2, 16(src), 0, 0
|
||||
lfs z2, 0x18(src)
|
||||
psq_l x_y3, 32(src), 0, 0
|
||||
lfs z3, 0x28(src)
|
||||
psq_st x_y1, 0(dst), 0, 0
|
||||
stfs z1, 8(dst)
|
||||
psq_st x_y2, 12(dst), 0, 0
|
||||
stfs z2, 0x14(dst)
|
||||
psq_st x_y3, 24(dst), 0, 0
|
||||
stfs z3, 0x20(dst)
|
||||
}
|
||||
}
|
||||
|
||||
// regalloc issues
|
||||
inline void J3DPSMulMtxVec(register MtxP mtx, register Vec* vec, register Vec* dst) {
|
||||
register f32 fr12;
|
||||
register f32 fr11;
|
||||
register f32 fr10;
|
||||
register f32 fr9;
|
||||
register f32 fr8;
|
||||
register f32 fr6;
|
||||
register f32 fra6;
|
||||
register f32 fr5;
|
||||
register f32 fra5;
|
||||
register f32 fra4;
|
||||
register f32 fr4;
|
||||
register f32 fr3;
|
||||
register f32 fr2;
|
||||
register f32 fra2;
|
||||
register f32 fr01;
|
||||
register f32 fr00;
|
||||
asm {
|
||||
psq_l fr00, 0(vec), 0, 0
|
||||
psq_l fr2, 0(mtx), 0, 0
|
||||
psq_l fr01, 8(vec), 1, 0
|
||||
ps_mul fr4, fr2, fr00
|
||||
psq_l fr3, 8(mtx), 0, 0
|
||||
ps_madd fr5, fr3, fr01, fr4
|
||||
psq_l fr8, 16(mtx), 0, 0
|
||||
ps_sum0 fr6, fr5, fr6, fr5
|
||||
psq_l fr9, 24(mtx), 0, 0
|
||||
ps_mul fr10, fr8, fr00
|
||||
psq_st fr6, 0(dst), 1, 0
|
||||
ps_madd fr11, fr9, fr01, fr10
|
||||
psq_l fra2, 32(mtx), 0, 0
|
||||
ps_sum0 fr12, fr11, fr12, fr11
|
||||
psq_l fr3, 40(mtx), 0, 0
|
||||
ps_mul fra4, fra2, fr00
|
||||
psq_st fr12, 4(dst), 1, 0
|
||||
ps_madd fra5, fr3, fr01, fra4
|
||||
ps_sum0 fra6, fra5, fra6, fra5
|
||||
psq_st fra6, 8(dst), 1, 0
|
||||
}
|
||||
}
|
||||
|
||||
// regalloc issues
|
||||
inline void J3DPSMulMtxVec(register MtxP mtx, register SVec* vec, register SVec* dst) {
|
||||
register f32 fr12;
|
||||
register f32 fr11;
|
||||
register f32 fr10;
|
||||
register f32 fr9;
|
||||
register f32 fr8;
|
||||
register f32 fr6;
|
||||
register f32 fra6;
|
||||
register f32 fr5;
|
||||
register f32 fra5;
|
||||
register f32 fra4;
|
||||
register f32 fr4;
|
||||
register f32 fr3;
|
||||
register f32 fr2;
|
||||
register f32 fra2;
|
||||
register f32 fr01;
|
||||
register f32 fr00;
|
||||
asm {
|
||||
psq_l fr00, 0(vec), 0, 7
|
||||
psq_l fr2, 0(mtx), 0, 0
|
||||
psq_l fr01, 4(vec), 1, 7
|
||||
ps_mul fr4, fr2, fr00
|
||||
psq_l fr3, 8(mtx), 0, 0
|
||||
ps_madd fr5, fr3, fr01, fr4
|
||||
psq_l fr8, 16(mtx), 0, 0
|
||||
ps_sum0 fr6, fr5, fr6, fr5
|
||||
psq_l fr9, 24(mtx), 0, 0
|
||||
ps_mul fr10, fr8, fr00
|
||||
psq_st fr6, 0(dst), 1, 7
|
||||
ps_madd fr11, fr9, fr01, fr10
|
||||
psq_l fra2, 32(mtx), 0, 0
|
||||
ps_sum0 fr12, fr11, fr12, fr11
|
||||
psq_l fr3, 40(mtx), 0, 0
|
||||
ps_mul fra4, fra2, fr00
|
||||
psq_st fr12, 2(dst), 1, 7
|
||||
ps_madd fra5, fr3, fr01, fra4
|
||||
ps_sum0 fra6, fra5, fra6, fra5
|
||||
psq_st fra6, 4(dst), 1, 7
|
||||
}
|
||||
}
|
||||
|
||||
// regalloc issues
|
||||
inline void J3DPSMulMtxVec(register Mtx3P mtx, register Vec* vec, register Vec* dst) {
|
||||
register f32* punit;
|
||||
register f32 unit;
|
||||
register f32 fr12;
|
||||
register f32 fr11;
|
||||
register f32 fr10;
|
||||
register f32 fr9;
|
||||
register f32 fr8;
|
||||
register f32 fr6;
|
||||
register f32 fr5;
|
||||
register f32 fr4;
|
||||
register f32 fr3;
|
||||
register f32 fr2;
|
||||
register f32 fr01;
|
||||
register f32 fr00;
|
||||
asm {
|
||||
lis punit, PSMulUnit01@ha
|
||||
psq_l fr00, 0(vec), 0, 0
|
||||
addi punit, punit, PSMulUnit01@l
|
||||
psq_l fr2, 0(mtx), 0, 0
|
||||
psq_l unit, 0(punit), 0, 0
|
||||
psq_l fr01, 8(vec), 1, 0
|
||||
ps_add fr01, unit, fr01
|
||||
psq_l fr3, 8(mtx), 1, 0
|
||||
ps_mul fr4, fr2, fr00
|
||||
psq_l fr8, 12(mtx), 0, 0
|
||||
ps_madd fr5, fr3, fr01, fr4
|
||||
ps_sum0 fr6, fr5, fr6, fr5
|
||||
psq_l fr9, 20(mtx), 1, 0
|
||||
ps_mul fr10, fr8, fr00
|
||||
psq_st fr6, 0(dst), 1, 0
|
||||
ps_madd fr11, fr9, fr01, fr10
|
||||
psq_l fr2, 24(mtx), 0, 0
|
||||
ps_sum0 fr12, fr11, fr12, fr11
|
||||
psq_l fr3, 32(mtx), 1, 0
|
||||
ps_mul fr4, fr2, fr00
|
||||
psq_st fr12, 4(dst), 1, 0
|
||||
ps_madd fr5, fr3, fr01, fr4
|
||||
ps_sum0 fr6, fr5, fr6, fr5
|
||||
psq_st fr6, 8(dst), 1, 0
|
||||
}
|
||||
}
|
||||
|
||||
// regalloc issues
|
||||
inline void J3DPSMulMtxVec(register Mtx3P mtx, register SVec* vec, register SVec* dst) {
|
||||
register f32* punit;
|
||||
register f32 unit;
|
||||
register f32 fr6;
|
||||
register f32 fr5;
|
||||
register f32 fr4;
|
||||
register f32 fr3;
|
||||
register f32 fr2;
|
||||
register f32 fr01;
|
||||
register f32 fr00;
|
||||
asm {
|
||||
lis punit, PSMulUnit01@ha
|
||||
psq_l fr00, 0(vec), 0, 7
|
||||
addi punit, punit, PSMulUnit01@l
|
||||
psq_l fr2, 0(mtx), 0, 0
|
||||
psq_l unit, 0(punit), 0, 0
|
||||
psq_l fr01, 4(vec), 1, 7
|
||||
ps_add fr01, unit, fr01
|
||||
psq_l fr3, 8(mtx), 1, 0
|
||||
ps_mul fr4, fr2, fr00
|
||||
psq_l fr2, 12(mtx), 0, 0
|
||||
ps_madd fr5, fr3, fr01, fr4
|
||||
ps_sum0 fr6, fr5, fr6, fr5
|
||||
psq_l fr3, 20(mtx), 1, 0
|
||||
ps_mul fr4, fr2, fr00
|
||||
psq_st fr6, 0(dst), 1, 7
|
||||
ps_madd fr5, fr3, fr01, fr4
|
||||
psq_l fr2, 24(mtx), 0, 0
|
||||
ps_sum0 fr6, fr5, fr6, fr5
|
||||
psq_l fr3, 32(mtx), 1, 0
|
||||
ps_mul fr4, fr2, fr00
|
||||
psq_st fr6, 2(dst), 1, 7
|
||||
ps_madd fr5, fr3, fr01, fr4
|
||||
ps_sum0 fr6, fr5, fr6, fr5
|
||||
psq_st fr6, 4(dst), 1, 7
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* J3DTRANSFORM_H */
|
||||
|
||||
@@ -9,9 +9,11 @@
|
||||
typedef struct _GXColor GXColor;
|
||||
class J3DModel;
|
||||
struct J3DAnmVtxColor;
|
||||
struct J3DVertexBuffer;
|
||||
|
||||
struct J3DVtxColorCalc {
|
||||
/* 8032E180 */ void calc(J3DModel*);
|
||||
virtual void calc(J3DVertexBuffer*);
|
||||
|
||||
/* 0x0 */ void* vtable; // inlined vtable?
|
||||
/* 0x4 */ u32 mFlags;
|
||||
@@ -30,6 +32,10 @@ public:
|
||||
u32 getNrmNum() const { return mNrmNum; }
|
||||
u32 getVtxNum() const { return mVtxNum; }
|
||||
GXVtxAttrFmtList* getVtxAttrFmtList() { return mVtxAttrFmtList; }
|
||||
u8 getVtxPosFrac() { return mVtxPosFrac; }
|
||||
u8 getVtxNrmFrac() { return mVtxNrmFrac; }
|
||||
int getVtxPosType() { return mVtxPosType; }
|
||||
int getVtxNrmType() { return mVtxNrmType; }
|
||||
|
||||
void setVtxPosFrac(u8 frac) { mVtxPosFrac = frac; }
|
||||
void setVtxPosType(GXCompType type) { mVtxPosType = type; }
|
||||
@@ -69,8 +75,10 @@ public:
|
||||
/* 8031152C */ s32 allocTransformedVtxNrmArray();
|
||||
|
||||
void setCurrentVtxPos(void* pVtxPos) { mCurrentVtxPos = pVtxPos; }
|
||||
void* getCurrentVtxPos() { return mCurrentVtxPos; }
|
||||
|
||||
void setCurrentVtxNrm(void* pVtxNrm) { mCurrentVtxNrm = pVtxNrm; }
|
||||
void* getCurrentVtxNrm() { return mCurrentVtxNrm; }
|
||||
|
||||
void setCurrentVtxCol(GXColor* pVtxCol) { mCurrentVtxCol = pVtxCol; }
|
||||
|
||||
@@ -80,6 +88,22 @@ public:
|
||||
setCurrentVtxCol(mVtxColArray[0]);
|
||||
}
|
||||
|
||||
void* getTransformedVtxPos(int idx) { return mTransformedVtxPosArray[idx]; }
|
||||
void* getTransformedVtxNrm(int idx) { return mTransformedVtxNrmArray[idx]; }
|
||||
J3DVertexData* getVertexData() { return mVtxData; }
|
||||
|
||||
void swapTransformedVtxPos() {
|
||||
void* tmp = mTransformedVtxPosArray[0];
|
||||
mTransformedVtxPosArray[0] = mTransformedVtxPosArray[1];
|
||||
mTransformedVtxPosArray[1] = tmp;
|
||||
}
|
||||
|
||||
void swapTransformedVtxNrm() {
|
||||
void* tmp = mTransformedVtxNrmArray[0];
|
||||
mTransformedVtxNrmArray[0] = mTransformedVtxNrmArray[1];
|
||||
mTransformedVtxNrmArray[1] = tmp;
|
||||
}
|
||||
|
||||
private:
|
||||
/* 0x00 */ J3DVertexData* mVtxData;
|
||||
/* 0x04 */ void* mVtxPosArray[2];
|
||||
|
||||
@@ -14,6 +14,7 @@ typedef f32 Mtx[3][4];
|
||||
typedef f32 Mtx33[3][3];
|
||||
typedef f32 Mtx23[2][3];
|
||||
typedef f32 (*MtxP)[4];
|
||||
typedef f32 (*Mtx3P)[3];
|
||||
typedef const f32 (*CMtxP)[4]; // Change name later?
|
||||
|
||||
void PSMTXIdentity(Mtx m);
|
||||
|
||||
Reference in New Issue
Block a user