mirror of
https://github.com/zeldaret/ss
synced 2026-05-24 07:10:53 -04:00
4c62e01025
* d_jnt_col almost ok * OK: Thanks Robo!
69 lines
1.8 KiB
C++
69 lines
1.8 KiB
C++
#ifndef D_JNT_COL_H
|
|
#define D_JNT_COL_H
|
|
|
|
#include "d/col/c/c_m3d_g_lin.h"
|
|
#include "m/m3d/m_mdl.h"
|
|
#include "m/m_mtx.h"
|
|
#include "m/m_vec.h"
|
|
|
|
class dAcObjBase_c;
|
|
|
|
class dJntColData_c {
|
|
public:
|
|
/* 0x0 */ u8 field_0x0;
|
|
/* 0x1 */ u8 mType;
|
|
/* 0x2 */ s16 mJntNum;
|
|
/* 0x4 */ f32 field_0x4;
|
|
/* 0x8 */ Vec *field_0x8;
|
|
|
|
mVec3_c getVec(int i) const {
|
|
return field_0x8[i];
|
|
}
|
|
};
|
|
|
|
class dJntCol_c {
|
|
public:
|
|
dJntCol_c();
|
|
void getAnmMtx(s32, mMtx_c *) const;
|
|
int init(dAcObjBase_c *, dJntColData_c const *, m3d::mdl_c *, int);
|
|
static void setNowLine(cM3dGLin *, mVec3_c const *, mAng3_c const *, mVec3_c *);
|
|
int searchNearPos(cM3dGLin const *, mVec3_c const *, mVec3_c *, int) const;
|
|
int getArrowOffsetPosAndAngle(mVec3_c const *, mAng3_c const *, mVec3_c *, mVec3_c *, bool) const;
|
|
int getHitmarkPosAndAngle(mVec3_c const *, mAng3_c const *, mVec3_c *, mAng3_c *, int) const;
|
|
void setArrowPosAndAngle(mVec3_c const *, mVec3_c const *, int, mVec3_c *, mAng3_c *);
|
|
|
|
bool checkPassNum(int bit) const {
|
|
return field_0x10 & (1 << bit);
|
|
}
|
|
void onPassNum(int num) {
|
|
field_0x10 |= (1 << num);
|
|
}
|
|
void offPassNum(int num) {
|
|
field_0x10 &= ~(1 << num);
|
|
}
|
|
|
|
s8 getType(int i) const {
|
|
return mData[i].mType;
|
|
}
|
|
int getJntNum(int i) const {
|
|
return mData[i].mJntNum;
|
|
}
|
|
u8 getfield_0x0(int i) const {
|
|
return mData[i].field_0x0;
|
|
}
|
|
f32 getfield_0x4(int i) const {
|
|
return mData[i].field_0x4;
|
|
}
|
|
mVec3_c getVec(int i) const {
|
|
return mData->field_0x8[i];
|
|
}
|
|
|
|
/* 0x00 */ const dJntColData_c *mData;
|
|
/* 0x04 */ m3d::mdl_c *mpModel;
|
|
/* 0x08 */ dAcObjBase_c *mpActor;
|
|
/* 0x0C */ int field_0xC;
|
|
/* 0x10 */ int field_0x10;
|
|
};
|
|
|
|
#endif /* D_D_JNT_COL_H */
|