tp/include/d/actor/d_a_obj_crope.h

78 lines
1.9 KiB
C++

#ifndef D_A_OBJ_CROPE_H
#define D_A_OBJ_CROPE_H
#include "f_op/f_op_actor_mng.h"
#include "d/d_cc_d.h"
/**
* @ingroup actors-objects
* @class daObjCrope_c
* @brief Wolf Tightrope
*
* @details
*
*/
class daObjCrope_c : public fopAc_ac_c {
public:
int createHeap();
int create();
~daObjCrope_c();
void setNormalRopePos();
void setRideRopePos();
int execute();
int draw();
cXyz* getRopeStartPos() { return mLineMat.getPos(0); }
cXyz* getRopeEndPos() { return &mLineMat.getPos(0)[99]; }
cXyz* getRopeVec() { return &mRopeVec; }
cXyz& getPlayerNearPos() { return mPlayerNearPos; }
void onOutFlg() { mOutFlg = true; }
void setFrontJoint(int i_jointNo) { mFrontJoint = i_jointNo; }
void setBackJoint(int i_jointNo) { mBackJoint = i_jointNo; }
f32 getStartRate(const cXyz* param_0) {
if (field_0x714) {
return field_0x724 * (param_0->x - getRopeStartPos()->x);
} else {
return field_0x724 * (param_0->z - getRopeStartPos()->z);
}
}
void rideKeep() {
setFrontJoint(-2);
setBackJoint(-1);
}
void offRide() {
setFrontJoint(-1);
setBackJoint(-1);
}
void setCoCancelTimer() {
mCoCancelTimer = 30;
}
private:
/* 0x0568 */ request_of_phase_process_class mPhase;
/* 0x0570 */ dCcD_Stts mCcStts;
/* 0x05AC */ dCcD_Sph mCollider;
/* 0x06E4 */ Mtx field_0x6e4;
/* 0x0714 */ u8 field_0x714;
/* 0x0715 */ u8 mOutFlg;
/* 0x0716 */ u8 mCoCancelTimer;
/* 0x0718 */ int mFrontJoint;
/* 0x071C */ int mBackJoint;
/* 0x0720 */ f32 field_0x720;
/* 0x0724 */ f32 field_0x724;
/* 0x0728 */ cXyz mRopeVec;
/* 0x0734 */ cXyz mPlayerNearPos;
/* 0x0740 */ cXyz field_0x740[98];
/* 0x0BD8 */ cXyz field_0xbd8[98];
/* 0x1070 */ mDoExt_3DlineMat1_c mLineMat;
};
STATIC_ASSERT(sizeof(daObjCrope_c) == 0x10ac);
#endif /* D_A_OBJ_CROPE_H */