mirror of
https://github.com/encounter/tww.git
synced 2026-03-30 11:41:09 -07:00
244 lines
6.0 KiB
C++
244 lines
6.0 KiB
C++
#ifndef J3DSTRUCT_H
|
|
#define J3DSTRUCT_H
|
|
|
|
#include "dolphin/gx/GXStruct.h"
|
|
#include "dolphin/mtx/mtx.h"
|
|
#include "dolphin/mtx/mtx44.h"
|
|
#include "dolphin/mtx/vec.h"
|
|
#include "global.h"
|
|
|
|
class J3DLightInfo {
|
|
public:
|
|
void operator=(J3DLightInfo const& other) {
|
|
mLightPosition = other.mLightPosition;
|
|
mLightDirection = other.mLightDirection;
|
|
mColor = other.mColor;
|
|
mCosAtten = other.mCosAtten;
|
|
mDistAtten = other.mDistAtten;
|
|
}
|
|
|
|
/* 0x00 */ Vec mLightPosition;
|
|
/* 0x0C */ Vec mLightDirection;
|
|
/* 0x18 */ GXColor mColor;
|
|
/* 0x1C */ Vec mCosAtten;
|
|
/* 0x28 */ Vec mDistAtten;
|
|
}; // Size = 0x34
|
|
|
|
struct J3DTextureSRTInfo {
|
|
/* 0x00 */ f32 mScaleX;
|
|
/* 0x04 */ f32 mScaleY;
|
|
/* 0x08 */ s16 mRotation;
|
|
/* 0x0C */ f32 mTranslationX;
|
|
/* 0x10 */ f32 mTranslationY;
|
|
}; // Size: 0x14
|
|
|
|
enum J3DTexMtxMode {
|
|
J3DTexMtxMode_None,
|
|
J3DTexMtxMode_EnvmapBasic,
|
|
J3DTexMtxMode_ProjmapBasic,
|
|
J3DTexMtxMode_ViewProjmapBasic,
|
|
J3DTexMtxMode_Unknown4,
|
|
J3DTexMtxMode_Unknown5,
|
|
J3DTexMtxMode_EnvmapOld,
|
|
J3DTexMtxMode_Envmap,
|
|
J3DTexMtxMode_Projmap,
|
|
J3DTexMtxMode_ViewProjmap,
|
|
J3DTexMtxMode_EnvmapOldEffectMtx,
|
|
J3DTexMtxMode_EnvmapEffectMtx,
|
|
};
|
|
|
|
struct J3DTexMtxInfo {
|
|
void operator=(J3DTexMtxInfo const& other) {
|
|
for (int i = 0; i < 4; i++) {
|
|
for (int j = 0; j < 4; j++) {
|
|
mEffectMtx[i][j] = other.mEffectMtx[i][j];
|
|
}
|
|
}
|
|
mCenter = other.mCenter;
|
|
mProjection = other.mProjection;
|
|
mInfo = other.mInfo;
|
|
mSRT = other.mSRT;
|
|
}
|
|
void setEffectMtx(Mtx m) {
|
|
mEffectMtx[0][0] = m[0][0];
|
|
mEffectMtx[0][1] = m[0][1];
|
|
mEffectMtx[0][2] = m[0][2];
|
|
mEffectMtx[0][3] = m[0][3];
|
|
mEffectMtx[1][0] = m[1][0];
|
|
mEffectMtx[1][1] = m[1][1];
|
|
mEffectMtx[1][2] = m[1][2];
|
|
mEffectMtx[1][3] = m[1][3];
|
|
mEffectMtx[2][0] = m[2][0];
|
|
mEffectMtx[2][1] = m[2][1];
|
|
mEffectMtx[2][2] = m[2][2];
|
|
mEffectMtx[2][3] = m[2][3];
|
|
mEffectMtx[3][2] = 0.0f;
|
|
mEffectMtx[3][1] = 0.0f;
|
|
mEffectMtx[3][0] = 0.0f;
|
|
mEffectMtx[3][3] = 1.0f;
|
|
}
|
|
|
|
/* 0x00 */ u8 mProjection;
|
|
/* 0x01 */ u8 mInfo;
|
|
/* 0x02 */ u8 padding[2];
|
|
/* 0x04 */ Vec mCenter;
|
|
/* 0x10 */ J3DTextureSRTInfo mSRT;
|
|
/* 0x24 */ Mtx44 mEffectMtx;
|
|
}; // Size: 0x64
|
|
|
|
struct J3DIndTexMtxInfo {
|
|
void operator=(const J3DIndTexMtxInfo& other) {
|
|
for (int i = 0; i < 2; i++) {
|
|
for (int j = 0; j < 3; j++) {
|
|
mOffsetMtx[i][j] = other.mOffsetMtx[i][j];
|
|
}
|
|
}
|
|
mScaleExp = other.mScaleExp;
|
|
}
|
|
/* 0x00 */ Mtx23 mOffsetMtx;
|
|
/* 0x18 */ s8 mScaleExp;
|
|
}; // Size: 0x1C
|
|
|
|
struct J3DFogInfo {
|
|
void operator=(const J3DFogInfo& other) {
|
|
mType = other.mType;
|
|
mAdjEnable = other.mAdjEnable;
|
|
mCenter = other.mCenter;
|
|
mStartZ = other.mStartZ;
|
|
mEndZ = other.mEndZ;
|
|
mNearZ = other.mNearZ;
|
|
mFarZ = other.mFarZ;
|
|
mColor = other.mColor;
|
|
for (int i = 0; i < 10; i++) {
|
|
mFogAdjTable[i] = other.mFogAdjTable[i];
|
|
}
|
|
}
|
|
|
|
/* 0x00 */ u8 mType;
|
|
/* 0x01 */ u8 mAdjEnable;
|
|
/* 0x02 */ u16 mCenter;
|
|
/* 0x04 */ f32 mStartZ;
|
|
/* 0x08 */ f32 mEndZ;
|
|
/* 0x0C */ f32 mNearZ;
|
|
/* 0x10 */ f32 mFarZ;
|
|
/* 0x14 */ GXColor mColor;
|
|
/* 0x18 */ u16 mFogAdjTable[10];
|
|
}; // Size: 0x2C
|
|
|
|
struct J3DNBTScaleInfo {
|
|
/* 0x0 */ u8 mbHasScale;
|
|
/* 0x4 */ Vec mScale;
|
|
|
|
inline void operator=(const J3DNBTScaleInfo & other) { mbHasScale = other.mbHasScale; mScale = other.mScale; }
|
|
}; // Size: 0x10
|
|
|
|
struct J3DIndTexOrderInfo {
|
|
void operator=(const J3DIndTexOrderInfo& other) {
|
|
mCoord = other.mCoord;
|
|
mMap = other.mMap;
|
|
}
|
|
|
|
/* 0x0 */ u8 mCoord;
|
|
/* 0x1 */ u8 mMap;
|
|
/* 0x2 */ u8 field_0x2;
|
|
/* 0x3 */ u8 field_0x3;
|
|
};
|
|
|
|
struct J3DTevSwapModeInfo {
|
|
/* 0x0 */ u8 mRasSel ALIGN_DECL(4);
|
|
/* 0x1 */ u8 mTexSel;
|
|
};
|
|
|
|
struct J3DTevSwapModeTableInfo {
|
|
/* 0x0 */ u8 field_0x0;
|
|
/* 0x1 */ u8 field_0x1;
|
|
/* 0x2 */ u8 field_0x2;
|
|
/* 0x3 */ u8 field_0x3;
|
|
};
|
|
|
|
struct J3DTevStageInfo {
|
|
/* 0x0 */ u8 field_0x0;
|
|
/* 0x1 */ u8 field_0x1;
|
|
/* 0x2 */ u8 field_0x2;
|
|
/* 0x3 */ u8 field_0x3;
|
|
/* 0x4 */ u8 field_0x4;
|
|
/* 0x5 */ u8 field_0x5;
|
|
/* 0x6 */ u8 field_0x6;
|
|
/* 0x7 */ u8 field_0x7;
|
|
/* 0x8 */ u8 field_0x8;
|
|
/* 0x9 */ u8 field_0x9;
|
|
/* 0xA */ u8 field_0xa;
|
|
/* 0xB */ u8 field_0xb;
|
|
/* 0xC */ u8 field_0xc;
|
|
/* 0xD */ u8 field_0xd;
|
|
/* 0xE */ u8 field_0xe;
|
|
/* 0xF */ u8 field_0xf;
|
|
/* 0x10 */ u8 field_0x10;
|
|
/* 0x11 */ u8 field_0x11;
|
|
/* 0x12 */ u8 field_0x12;
|
|
/* 0x13 */ u8 field_0x13;
|
|
};
|
|
|
|
struct J3DIndTevStageInfo {
|
|
/* 0x0 */ u8 mIndStage ALIGN_DECL(4);
|
|
/* 0x1 */ u8 mIndFormat;
|
|
/* 0x2 */ u8 mBiasSel;
|
|
/* 0x3 */ u8 mMtxSel;
|
|
/* 0x4 */ u8 mWrapS;
|
|
/* 0x5 */ u8 mWrapT;
|
|
/* 0x6 */ u8 mPrev;
|
|
/* 0x7 */ u8 mLod;
|
|
/* 0x8 */ u8 mAlphaSel;
|
|
};
|
|
|
|
struct J3DTexCoordInfo {
|
|
/* 0x0 */ u8 mTexGenType ALIGN_DECL(4);
|
|
/* 0x1 */ u8 mTexGenSrc;
|
|
/* 0x2 */ u8 mTexGenMtx;
|
|
};
|
|
|
|
struct J3DIndTexCoordScaleInfo {
|
|
void operator=(const J3DIndTexCoordScaleInfo& other) {
|
|
mScaleS = other.mScaleS;
|
|
mScaleT = other.mScaleT;
|
|
}
|
|
|
|
/* 0x0 */ u8 mScaleS;
|
|
/* 0x1 */ u8 mScaleT;
|
|
/* 0x2 */ u8 field_0x2;
|
|
/* 0x3 */ u8 field_0x3;
|
|
};
|
|
|
|
struct J3DBlendInfo {
|
|
/* 0x0 */ u8 mBlendMode;
|
|
/* 0x1 */ u8 mSrcFactor;
|
|
/* 0x2 */ u8 mDstFactor;
|
|
/* 0x3 */ u8 mLogicOp;
|
|
};
|
|
|
|
struct J3DTevOrderInfo {
|
|
/* 0x0 */ u8 mTexCoord ALIGN_DECL(2);
|
|
/* 0x1 */ u8 mTexMap;
|
|
/* 0x2 */ u8 mColorChan;
|
|
};
|
|
|
|
struct J3DColorChanInfo {
|
|
/* 0x0 */ u8 mEnable;
|
|
/* 0x1 */ u8 mMatSrc;
|
|
/* 0x2 */ u8 mLightMask;
|
|
/* 0x3 */ u8 mDiffuseFn;
|
|
/* 0x4 */ u8 mAttnFn;
|
|
/* 0x5 */ u8 mAmbSrc;
|
|
/* 0x6 */ u8 field_0x6;
|
|
/* 0x7 */ u8 field_0x7;
|
|
};
|
|
|
|
struct J3DZModeInfo {
|
|
/* 0x00 */ u8 mCompareEnable;
|
|
/* 0x01 */ u8 mFunc;
|
|
/* 0x02 */ u8 mUpdateEnable;
|
|
/* 0x03 */ u8 pad;
|
|
};
|
|
|
|
#endif /* J3DSTRUCT_H */
|