mirror of
https://github.com/zeldaret/ss
synced 2026-05-25 07:23:00 -04:00
84 lines
2.6 KiB
C++
84 lines
2.6 KiB
C++
#ifndef D_CC_S_H
|
|
#define D_CC_S_H
|
|
|
|
#include "common.h"
|
|
#include "d/col/c/c_cc_d.h"
|
|
#include "d/col/cc/d_cc_mass_s.h"
|
|
#include "m/m_angle.h"
|
|
#include "m/m_mtx.h"
|
|
#include "m/m_vec.h"
|
|
|
|
struct mMtxPair {
|
|
mMtx_c mMtx;
|
|
mMtx_c mInv;
|
|
};
|
|
|
|
class dCcS {
|
|
private:
|
|
/* 0x0000 */ cCcD_Obj *mpObjAt[0x200];
|
|
/* 0x0800 */ cCcD_Obj *mpObjTg[0x300];
|
|
/* 0x1400 */ cCcD_Obj *mpObjCo[0x200];
|
|
/* 0x1c00 */ cCcD_Obj *mpObj[0x340];
|
|
/* 0x2900 */ UNKTYPE *mpUnk[0x100];
|
|
/* 0x2D00 */ u16 mObjAtCount;
|
|
/* 0x2d02 */ u16 mObjTgCount;
|
|
/* 0x2D04 */ u16 mObjCoCount;
|
|
/* 0x2D06 */ u16 mObjCount;
|
|
/* 0x2D08 */ u32 mUnkCount;
|
|
/* 0x2D0C */ cCcD_DivideArea mDivideArea;
|
|
/* 0x2D4C */ bool mbAreaSet;
|
|
/* 0x2D50 */ mMtxPair mAreas[16]; // could be a structure?
|
|
/* 0x3350 */ int mAreaCount;
|
|
/* 0x3354*/ dCcMassS_Mng mMassMng;
|
|
|
|
public:
|
|
dCcS();
|
|
virtual ~dCcS();
|
|
|
|
// This is a remnant of cCcS, which dCcS::Ct calls. Idk the correct layout
|
|
void Ct_cCcS();
|
|
|
|
void Ct();
|
|
void Dt();
|
|
|
|
static bool ChkRemoveActor(dAcObjBase_c *pActor);
|
|
static bool ChkNoHitAtTg(cCcD_Obj *, cCcD_Obj *);
|
|
static bool ChkAtTgCommonHitInf(cCcD_Obj *, cCcD_Obj *);
|
|
void ChkAtTg();
|
|
|
|
static bool ChkNoHitCo(cCcD_Obj *, cCcD_Obj *);
|
|
static void SetCoCommonHitInf(cCcD_Obj *, mVec3_c *, cCcD_Obj *, mVec3_c *, f32);
|
|
void ChkCo();
|
|
|
|
static bool ChkSheildFrontRange(cCcD_Obj *, cCcD_Obj *);
|
|
static bool ChkShield(cCcD_Obj *, cCcD_Obj *, cCcD_ShieldChkCallback *);
|
|
static bool ChkAtTgHitAfterCross(bool, bool, cCcD_Obj *, cCcD_Obj *);
|
|
static void SetCoObjInf(bool, bool, cCcD_Obj *, cCcD_Obj *);
|
|
static void SetPosCorrect(cCcD_Obj *, mVec3_c *, cCcD_Obj *, mVec3_c *, f32);
|
|
static void CalcParticleAngle(cCcD_Obj *, cCcD_Obj *, mAng3_c *, bool);
|
|
static void fn_80356fd0(mVec3_c *, cCcD_Obj *, cCcD_Obj *);
|
|
static u32 ProcAtTgHitmark(cCcD_Obj *, cCcD_Obj *, mVec3_c *, u32, mVec3_c *);
|
|
static void SetAtTgObjInf(bool, bool, cCcD_Obj *, cCcD_Obj *, mVec3_c *, bool);
|
|
|
|
bool ChkCamera(mVec3_c &, mVec3_c &, dAcObjBase_c *, dAcObjBase_c *, dAcObjBase_c *, f32);
|
|
bool
|
|
ChkCameraPoint(const mVec3_c &, const mVec3_c &, mVec3_c &, dAcObjBase_c *, dAcObjBase_c *, dAcObjBase_c *, f32);
|
|
|
|
bool ChkCo(const mVec3_c &, dAcObjBase_c *);
|
|
bool fn_80357c90(const mVec3_c &, const mVec3_c &, u32, cCcD_ShapeAttr **, f32);
|
|
void Set(cCcD_Obj *);
|
|
void MoveAfterCheck();
|
|
void RemoveDeadObj();
|
|
void CalcArea();
|
|
void Move();
|
|
void MassClear();
|
|
void SetArea(mMtx_c *);
|
|
void ClearArea();
|
|
void AdjustHitPos();
|
|
|
|
static dCcS *GetInstance();
|
|
static dCcS *sInstance;
|
|
};
|
|
|
|
#endif
|