mirror of
https://github.com/encounter/tp.git
synced 2026-07-11 06:18:46 -07:00
NPC work, obj_szbridge matching (#2757)
* Some NPC work * Fix impal * Hopefully fix regressions in debug * HIO work for more NPCs * fix regressions * obj_szbridge matching * Fix literals
This commit is contained in:
@@ -177,30 +177,30 @@ l_normal = .data:0x000013E0; // type:object size:0xC scope:global
|
||||
l_color = .data:0x000013EC; // type:object size:0x14 scope:global
|
||||
l_texCoord = .data:0x00001400; // type:object size:0xA0 scope:global
|
||||
l_M_Kusa_9qDL = .data:0x000014A0; // type:object size:0xCB scope:global
|
||||
l_M_Kusa_9q_cDL = .data:0x00001580; // type:object size:0xCB scope:global
|
||||
l_M_TenGusaDL = .data:0x00001660; // type:object size:0xD4 scope:global
|
||||
l_M_Kusa_9q_cDL = .data:0x00001580; // type:object size:0xCB scope:global align:32
|
||||
l_M_TenGusaDL = .data:0x00001660; // type:object size:0xD4 scope:global align:32
|
||||
l_Tengusa_matDL = .data:0x00001740; // type:object size:0xA8 scope:global
|
||||
l_kusa9q_matDL = .data:0x00001800; // type:object size:0xA8 scope:global
|
||||
l_kusa9q_l4_matDL = .data:0x000018C0; // type:object size:0xA8 scope:global
|
||||
@4620 = .data:0x00001968; // type:object size:0xC scope:local
|
||||
l_vtxDescList$4654 = .data:0x00001974; // type:object size:0x28 scope:local
|
||||
l_vtxAttrFmtList$4655 = .data:0x0000199C; // type:object size:0x50 scope:local
|
||||
l_J_Ohana00_64TEX = .data:0x00001A00; // type:object size:0x800 scope:global
|
||||
l_J_Ohana00_64TEX = .data:0x00001A00; // type:object size:0x800 scope:global align:32
|
||||
l_flowerPos = .data:0x00002200; // type:object size:0x2C4 scope:global
|
||||
l_flowerNormal = .data:0x000024C4; // type:object size:0xB4 scope:global
|
||||
l_flowerColor = .data:0x00002578; // type:object size:0x8 scope:global
|
||||
l_flowerTexCoord = .data:0x00002580; // type:object size:0x138 scope:global
|
||||
l_J_hana00DL = .data:0x000026C0; // type:object size:0x150 scope:global
|
||||
l_J_hana00_cDL = .data:0x00002820; // type:object size:0xDE scope:global
|
||||
l_J_hana00DL = .data:0x000026C0; // type:object size:0x150 scope:global align:32
|
||||
l_J_hana00_cDL = .data:0x00002820; // type:object size:0xDE scope:global align:32
|
||||
l_matDL = .data:0x00002900; // type:object size:0x99 scope:global
|
||||
l_matLight4DL = .data:0x000029A0; // type:object size:0x99 scope:global
|
||||
l_J_Ohana01_64128_0419TEX = .data:0x00002A40; // type:object size:0x1000 scope:global
|
||||
l_J_Ohana01_64128_0419TEX = .data:0x00002A40; // type:object size:0x1000 scope:global align:32
|
||||
l_flowerPos2 = .data:0x00003A40; // type:object size:0x4C8 scope:global
|
||||
l_flowerNormal2 = .data:0x00003F08; // type:object size:0x120 scope:global
|
||||
l_flowerColor2 = .data:0x00004028; // type:object size:0x8 scope:global
|
||||
l_flowerTexCoord2 = .data:0x00004030; // type:object size:0x120 scope:global
|
||||
l_J_hana01DL = .data:0x00004160; // type:object size:0x138 scope:global
|
||||
l_J_hana01_c_00DL = .data:0x000042A0; // type:object size:0xDE scope:global
|
||||
l_J_hana01DL = .data:0x00004160; // type:object size:0x138 scope:global align:32
|
||||
l_J_hana01_c_00DL = .data:0x000042A0; // type:object size:0xDE scope:global align:32
|
||||
l_J_hana01_c_01DL = .data:0x00004380; // type:object size:0x128 scope:global
|
||||
l_mat2DL = .data:0x000044C0; // type:object size:0x99 scope:global
|
||||
l_mat2Light4DL = .data:0x00004560; // type:object size:0x99 scope:global
|
||||
|
||||
@@ -88,6 +88,6 @@ __vt__8cM3dGAab = .data:0x0000018C; // type:object size:0xC scope:global
|
||||
__vt__12dBgS_ObjAcch = .data:0x00000198; // type:object size:0x24 scope:global
|
||||
__vt__14daObj_Gm_HIO_c = .data:0x000001BC; // type:object size:0xC scope:global
|
||||
__global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global
|
||||
lbl_460_bss_8 = .bss:0x00000008; // type:object size:0x1 data:byte
|
||||
l_initHIO = .bss:0x00000008; // type:object size:0x1 data:byte
|
||||
@3661 = .bss:0x0000000C; // type:object size:0xC scope:local
|
||||
l_HIO = .bss:0x00000018; // type:object size:0x8 scope:global data:byte
|
||||
|
||||
+4
-4
@@ -1839,7 +1839,7 @@ config.libs = [
|
||||
ActorRel(Equivalent, "d_a_myna"), # weird missing function issue
|
||||
ActorRel(MatchingFor("GZ2E01", "GZ2P01"), "d_a_ni"),
|
||||
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_aru"),
|
||||
ActorRel(NonMatching, "d_a_npc_ash", extra_cflags=[DANPCF_C_HACK]),
|
||||
ActorRel(NonMatching, "d_a_npc_ash", extra_cflags=[DANPCF_C_HACK]), # weak func order
|
||||
ActorRel(NonMatching, "d_a_npc_ashB", extra_cflags=[DANPCF_C_HACK]),
|
||||
ActorRel(NonMatching, "d_a_npc_bans"),
|
||||
ActorRel(NonMatching, "d_a_npc_blue_ns", extra_cflags=[DANPCF_C_HACK]),
|
||||
@@ -1981,7 +1981,7 @@ config.libs = [
|
||||
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_cho"),
|
||||
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_cowdoor"),
|
||||
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_crope"),
|
||||
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_crvfence"),
|
||||
ActorRel(MatchingFor("GZ2E01", "GZ2P01"), "d_a_obj_crvfence"),
|
||||
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_crvgate"),
|
||||
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_crvhahen"),
|
||||
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_crvlh_down"),
|
||||
@@ -1995,7 +1995,7 @@ config.libs = [
|
||||
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_digsnow"),
|
||||
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_dmelevator"),
|
||||
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_drop"),
|
||||
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_dust"),
|
||||
ActorRel(MatchingFor("GZ2E01", "GZ2P01"), "d_a_obj_dust"),
|
||||
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_enemy_create"),
|
||||
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_fallobj"),
|
||||
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_fan"),
|
||||
@@ -2204,7 +2204,7 @@ config.libs = [
|
||||
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_swspinner"),
|
||||
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_swturn"),
|
||||
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_syRock"),
|
||||
ActorRel(NonMatching, "d_a_obj_szbridge"),
|
||||
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_szbridge"),
|
||||
ActorRel(NonMatching, "d_a_obj_taFence"),
|
||||
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_table"),
|
||||
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_takaraDai"),
|
||||
|
||||
@@ -3,6 +3,32 @@
|
||||
|
||||
#include "d/actor/d_a_npc.h"
|
||||
|
||||
struct daNpcAsh_HIOParam {
|
||||
/* 0x00 */ daNpcF_HIOParam common;
|
||||
};
|
||||
|
||||
class daNpcAsh_Param_c {
|
||||
public:
|
||||
/* 8095D5D4 */ virtual ~daNpcAsh_Param_c() {}
|
||||
|
||||
static const daNpcAsh_HIOParam m;
|
||||
};
|
||||
|
||||
#if DEBUG
|
||||
class daNpcAsh_HIO_c : public mDoHIO_entry_c {
|
||||
public:
|
||||
daNpcAsh_HIO_c();
|
||||
|
||||
void genMessage(JORMContext*);
|
||||
|
||||
daNpcAsh_HIOParam m;
|
||||
};
|
||||
|
||||
#define NPC_ASH_HIO_CLASS daNpcAsh_HIO_c
|
||||
#else
|
||||
#define NPC_ASH_HIO_CLASS daNpcAsh_Param_c
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @ingroup actors-npcs
|
||||
* @class daNpcAsh_c
|
||||
@@ -66,28 +92,6 @@ public:
|
||||
/* 0x9 */ MOT_STEP,
|
||||
};
|
||||
|
||||
private:
|
||||
/* 0xB48 */ Z2Creature mCreatureSound;
|
||||
/* 0xBD8 */ J3DModel* mModelBow;
|
||||
/* 0xBDC */ J3DModel* mModelQuiver;
|
||||
/* 0xBE0 */ daNpcF_MatAnm_c* mpMatAnm;
|
||||
/* 0xBE4 */ daNpcF_Lookat_c mLookat;
|
||||
/* 0xC80 */ daNpcF_ActorMngr_c mActorMngr[6];
|
||||
/* 0xCB0 */ fopAc_ac_c* mTalkPartner;
|
||||
/* 0xCB4 */ u32 field_0xcb4; // unused
|
||||
/* 0xCB8 */ dCcD_Cyl mCcCyl[2];
|
||||
/* 0xF30 */ ActionFn mpActionFn;
|
||||
/* 0xF3C */ request_of_phase_process_class mPhase[2];
|
||||
/* 0xF4C */ u32 mItemPartnerId;
|
||||
/* 0xF50 */ u32 field_0xf50; // unused
|
||||
/* 0xF54 */ u32 field_0xf54;
|
||||
/* 0xF58 */ s16 mFlowID;
|
||||
/* 0xF5A */ s16 mLookMode;
|
||||
/* 0xF5C */ u16 mMode;
|
||||
/* 0xF5E */ u8 mMapToolId;
|
||||
/* 0xF5F */ u8 field_0xf5f;
|
||||
/* 0xF60 */ u8 mType;
|
||||
|
||||
public:
|
||||
/* 809582EC */ daNpcAsh_c();
|
||||
/* 80958610 */ ~daNpcAsh_c();
|
||||
@@ -112,23 +116,25 @@ public:
|
||||
/* 8095A8EC */ bool talk(void*);
|
||||
/* 8095AD28 */ bool demo(void*);
|
||||
/* 8095B164 */ bool leave(void*);
|
||||
/* 8095B48C */ BOOL EvCut_Introduction(int i_staffID);
|
||||
/* 8095B58C */ BOOL EvCut_Meeting(int i_staffID);
|
||||
/* 8095B83C */ BOOL EvCut_WiretapSponsor(int i_staffID);
|
||||
/* 8095BA80 */ BOOL EvCut_WiretapEntrant(int i_staffID);
|
||||
/* 8095BCF0 */ void setParam();
|
||||
/* 8095BF6C */ BOOL main();
|
||||
/* 8095C200 */ void playMotion();
|
||||
/* 8095C520 */ BOOL ctrlBtk();
|
||||
/* 8095C5C4 */ void setAttnPos();
|
||||
/* 8095C9BC */ void lookat();
|
||||
/* 8095CC8C */ BOOL drawDbgInfo();
|
||||
/* 8095B48C */ BOOL EvCut_Introduction(int);
|
||||
/* 8095B58C */ BOOL EvCut_Meeting(int);
|
||||
/* 8095B83C */ BOOL EvCut_WiretapSponsor(int);
|
||||
/* 8095BA80 */ BOOL EvCut_WiretapEntrant(int);
|
||||
/* 8095BCF0 */ inline void setParam();
|
||||
/* 8095BF6C */ inline BOOL main();
|
||||
/* 8095C200 */ inline void playMotion();
|
||||
/* 8095C520 */ inline BOOL ctrlBtk();
|
||||
/* 8095C5C4 */ inline void setAttnPos();
|
||||
/* 8095C9BC */ inline void lookat();
|
||||
/* 8095CC8C */ inline BOOL drawDbgInfo();
|
||||
|
||||
s16 getMessageNo() { return shape_angle.x; }
|
||||
/* dSv_event_flag_c::F_0268 - City in the Sky - City in the Sky clear */
|
||||
bool isMap() { return !(daNpcF_chkEvtBit(0x10c)
|
||||
bool isMap() {
|
||||
return !(daNpcF_chkEvtBit(0x10c)
|
||||
/* dSv_event_flag_c::F_0264 - Cutscene - Get master sword */
|
||||
|| !daNpcF_chkEvtBit(0x108)); }
|
||||
|| !daNpcF_chkEvtBit(0x108));
|
||||
}
|
||||
inline void setExpressionTalkAfter() { setExpression(7, -1.0f); }
|
||||
inline void setLookMode(int i_lookMode, fopAc_ac_c* i_talkPartner);
|
||||
inline void searchActors();
|
||||
@@ -137,50 +143,30 @@ public:
|
||||
inline void playExpression();
|
||||
|
||||
static EventFn mEvtSeqList[6];
|
||||
|
||||
private:
|
||||
/* 0xB48 */ Z2Creature mCreatureSound;
|
||||
/* 0xBD8 */ J3DModel* mModelBow;
|
||||
/* 0xBDC */ J3DModel* mModelQuiver;
|
||||
/* 0xBE0 */ daNpcF_MatAnm_c* mpMatAnm;
|
||||
/* 0xBE4 */ daNpcF_Lookat_c mLookat;
|
||||
/* 0xC80 */ daNpcF_ActorMngr_c mActorMngr[6];
|
||||
/* 0xCB0 */ fopAc_ac_c* mTalkPartner;
|
||||
/* 0xCB4 */ NPC_ASH_HIO_CLASS* mpHIO;
|
||||
/* 0xCB8 */ dCcD_Cyl mCcCyl[2];
|
||||
/* 0xF30 */ ActionFn mpActionFn;
|
||||
/* 0xF3C */ request_of_phase_process_class mPhase[2];
|
||||
/* 0xF4C */ u32 mItemPartnerId;
|
||||
/* 0xF50 */ u32 field_0xf50; // unused
|
||||
/* 0xF54 */ u32 field_0xf54;
|
||||
/* 0xF58 */ s16 mFlowID;
|
||||
/* 0xF5A */ s16 mLookMode;
|
||||
/* 0xF5C */ u16 mMode;
|
||||
/* 0xF5E */ u8 mMapToolId;
|
||||
/* 0xF5F */ u8 field_0xf5f;
|
||||
/* 0xF60 */ u8 mType;
|
||||
};
|
||||
|
||||
STATIC_ASSERT(sizeof(daNpcAsh_c) == 0xF64);
|
||||
|
||||
class daNpcAsh_Param_c {
|
||||
public:
|
||||
/* 8095D5D4 */ virtual ~daNpcAsh_Param_c() {}
|
||||
|
||||
struct param {
|
||||
/* 0x00 */ f32 mAttnOffsetY;
|
||||
/* 0x04 */ f32 mGravity;
|
||||
/* 0x08 */ f32 mScale;
|
||||
/* 0x0C */ f32 mShadowDepth;
|
||||
/* 0x10 */ f32 mCcWeight;
|
||||
/* 0x14 */ f32 mCylH;
|
||||
/* 0x18 */ f32 mWallH;
|
||||
/* 0x1C */ f32 mWallR;
|
||||
/* 0x20 */ f32 mBodyUpAngle;
|
||||
/* 0x24 */ f32 mBodyDownAngle;
|
||||
/* 0x28 */ f32 mBodyLeftAngle;
|
||||
/* 0x2C */ f32 mBodyRightAngle;
|
||||
/* 0x30 */ f32 mHeadUpAngle;
|
||||
/* 0x34 */ f32 mHeadDownAngle;
|
||||
/* 0x38 */ f32 mHeadLeftAngle;
|
||||
/* 0x3C */ f32 mHeadRightAngle;
|
||||
/* 0x40 */ f32 mNeckAngleScl;
|
||||
/* 0x44 */ f32 mMorfFrames;
|
||||
/* 0x48 */ s16 mSpeakDistIdx;
|
||||
/* 0x4A */ s16 mSpeakAngleIdx;
|
||||
/* 0x4C */ s16 mTalkDistIdx;
|
||||
/* 0x4E */ s16 mTalkAngleIdx;
|
||||
/* 0x50 */ f32 mAttnFovY;
|
||||
/* 0x54 */ f32 mAttnRadius;
|
||||
/* 0x58 */ f32 mAttnUpperY;
|
||||
/* 0x5C */ f32 mAttnLowerY;
|
||||
/* 0x60 */ s16 field_0x60;
|
||||
/* 0x62 */ s16 mDamageTimer;
|
||||
/* 0x64 */ s16 mTestExpression;
|
||||
/* 0x66 */ s16 mTestMotion;
|
||||
/* 0x68 */ s16 mTestLookMode;
|
||||
/* 0x6A */ bool mTest;
|
||||
};
|
||||
|
||||
static param const m;
|
||||
};
|
||||
|
||||
#endif /* D_A_NPC_ASH_H */
|
||||
|
||||
@@ -3,6 +3,33 @@
|
||||
|
||||
#include "d/actor/d_a_npc.h"
|
||||
|
||||
struct daNpcAshB_HIOParam {
|
||||
/* 0x00 */ daNpcF_HIOParam common;
|
||||
/* 0x6C */ f32 field_0x6c;
|
||||
};
|
||||
|
||||
class daNpcAshB_Param_c {
|
||||
public:
|
||||
/* 80962078 */ virtual ~daNpcAshB_Param_c() {}
|
||||
|
||||
static const daNpcAshB_HIOParam m;
|
||||
};
|
||||
|
||||
#if DEBUG
|
||||
class daNpcAshB_HIO_c : public mDoHIO_entry_c {
|
||||
public:
|
||||
daNpcAshB_HIO_c();
|
||||
|
||||
void genMessage(JORMContext*);
|
||||
|
||||
daNpcAshB_HIOParam m;
|
||||
};
|
||||
|
||||
#define NPC_ASHB_HIO_CLASS daNpcAshB_HIO_c
|
||||
#else
|
||||
#define NPC_ASHB_HIO_CLASS daNpcAshB_Param_c
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @ingroup actors-npcs
|
||||
* @class daNpcAshB_c
|
||||
@@ -92,31 +119,31 @@ public:
|
||||
/* 8095FD9C */ bool talk(void*);
|
||||
/* 809602E0 */ bool demo(void*);
|
||||
/* 809604C8 */ BOOL EvCut_Appear(int);
|
||||
/* 80960A60 */ void setParam();
|
||||
/* 80960AE8 */ BOOL main();
|
||||
/* 80960D64 */ void playMotion();
|
||||
/* 80961188 */ BOOL ctrlBtk();
|
||||
/* 80961264 */ void setAttnPos();
|
||||
/* 80961574 */ void lookat();
|
||||
/* 80961770 */ void drawOtherMdls();
|
||||
/* 809617F8 */ BOOL drawDbgInfo();
|
||||
/* 80960A60 */ inline void setParam();
|
||||
/* 80960AE8 */ inline BOOL main();
|
||||
/* 80960D64 */ inline void playMotion();
|
||||
/* 80961188 */ inline BOOL ctrlBtk();
|
||||
/* 80961264 */ inline void setAttnPos();
|
||||
/* 80961574 */ inline void lookat();
|
||||
/* 80961770 */ inline void drawOtherMdls();
|
||||
/* 809617F8 */ inline BOOL drawDbgInfo();
|
||||
|
||||
static EventFn mEvtSeqList[2];
|
||||
|
||||
s16 getMessageNo() { return (fopAcM_GetParam(this) >> 8) & 0xFFFF;}
|
||||
s16 getMessageNo() { return (fopAcM_GetParam(this) >> 8) & 0xFFFF; }
|
||||
inline void setExpressionTalkAfter() { setExpression(6, -1.0f); }
|
||||
inline void setLookMode(int i_lookMode);
|
||||
inline BOOL chkFindPlayer();
|
||||
inline bool step(s16, int, f32);
|
||||
inline void playExpression();
|
||||
|
||||
static EventFn mEvtSeqList[2];
|
||||
|
||||
private:
|
||||
/* 0xB48 */ Z2Creature mCreatureSound;
|
||||
/* 0xBD8 */ daNpcF_MatAnm_c* mpMatAnm;
|
||||
/* 0xBDC */ J3DModel* mpModel;
|
||||
/* 0xBE0 */ daNpcF_Lookat_c mLookat;
|
||||
/* 0xC7C */ daNpcF_ActorMngr_c mActorMngr[1];
|
||||
/* 0xC84 */ fopAc_ac_c* mpTalkPartner;
|
||||
/* 0xC84 */ NPC_ASHB_HIO_CLASS* mpHIO;
|
||||
/* 0xC88 */ dCcD_Cyl mCyl;
|
||||
/* 0xDC4 */ ActionFn mpActionFn;
|
||||
/* 0xDD0 */ request_of_phase_process_class mPhase[1];
|
||||
@@ -130,52 +157,8 @@ private:
|
||||
/* 0xDEC */ u8 field_0xdec;
|
||||
/* 0xDED */ u8 field_0xded;
|
||||
/* 0xDEE */ u8 field_0xdee;
|
||||
|
||||
};
|
||||
|
||||
STATIC_ASSERT(sizeof(daNpcAshB_c) == 0xdf0);
|
||||
|
||||
class daNpcAshB_Param_c {
|
||||
public:
|
||||
/* 80962078 */ virtual ~daNpcAshB_Param_c() {}
|
||||
|
||||
struct param {
|
||||
/* 0x00 */ f32 mAttnOffsetY;
|
||||
/* 0x04 */ f32 mGravity;
|
||||
/* 0x08 */ f32 mScale;
|
||||
/* 0x0C */ f32 mShadowDepth;
|
||||
/* 0x10 */ f32 mCcWeight;
|
||||
/* 0x14 */ f32 mCylH;
|
||||
/* 0x18 */ f32 mWallH;
|
||||
/* 0x1C */ f32 mWallR;
|
||||
/* 0x20 */ f32 mBodyUpAngle;
|
||||
/* 0x24 */ f32 mBodyDownAngle;
|
||||
/* 0x28 */ f32 mBodyLeftAngle;
|
||||
/* 0x2C */ f32 mBodyRightAngle;
|
||||
/* 0x30 */ f32 mHeadUpAngle;
|
||||
/* 0x34 */ f32 mHeadDownAngle;
|
||||
/* 0x38 */ f32 mHeadLeftAngle;
|
||||
/* 0x3C */ f32 mHeadRightAngle;
|
||||
/* 0x40 */ f32 mNeckAngleScl;
|
||||
/* 0x44 */ f32 mMorfFrames;
|
||||
/* 0x48 */ s16 mSpeakDistIdx;
|
||||
/* 0x4A */ s16 mSpeakAngleIdx;
|
||||
/* 0x4C */ s16 mTalkDistIdx;
|
||||
/* 0x4E */ s16 mTalkAngleIdx;
|
||||
/* 0x50 */ f32 mAttnFovY;
|
||||
/* 0x54 */ f32 mAttnRadius;
|
||||
/* 0x58 */ f32 mAttnUpperY;
|
||||
/* 0x5C */ f32 mAttnLowerY;
|
||||
/* 0x60 */ s16 field_0x60;
|
||||
/* 0x62 */ s16 mDamageTimer;
|
||||
/* 0x64 */ s16 mTestExpression;
|
||||
/* 0x66 */ s16 mTestMotion;
|
||||
/* 0x68 */ s16 mTestLookMode;
|
||||
/* 0x6A */ bool mTest;
|
||||
/* 0x6C */ f32 field_0x6c;
|
||||
};
|
||||
|
||||
static param const m;
|
||||
};
|
||||
|
||||
#endif /* D_A_NPC_ASHB_H */
|
||||
|
||||
@@ -3,6 +3,33 @@
|
||||
|
||||
#include "d/actor/d_a_npc.h"
|
||||
|
||||
struct daNpcImpal_HIOParam {
|
||||
/* 0x00 */ daNpcF_HIOParam common;
|
||||
/* 0x6C */ f32 field_0x6c;
|
||||
};
|
||||
|
||||
class daNpcImpal_Param_c {
|
||||
public:
|
||||
/* 80A0C204 */ virtual ~daNpcImpal_Param_c() {}
|
||||
|
||||
static const daNpcImpal_HIOParam m;
|
||||
};
|
||||
|
||||
#if DEBUG
|
||||
class daNpcImpal_HIO_c : public mDoHIO_entry_c {
|
||||
public:
|
||||
daNpcImpal_HIO_c();
|
||||
|
||||
void genMessage(JORMContext*);
|
||||
|
||||
daNpcImpal_HIOParam m;
|
||||
};
|
||||
|
||||
#define NPC_IMPAL_HIO_CLASS daNpcImpal_HIO_c
|
||||
#else
|
||||
#define NPC_IMPAL_HIO_CLASS daNpcImpal_Param_c
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @ingroup actors-npcs
|
||||
* @class daNpcImpal_c
|
||||
@@ -77,12 +104,12 @@ public:
|
||||
/* 80A0A1E0 */ BOOL EvCut_ImpalAppear1(int);
|
||||
/* 80A0A680 */ BOOL EvCut_ImpalAppear2(int);
|
||||
/* 80A0A950 */ BOOL EvCut_CopyRod(int);
|
||||
/* 80A0ADF8 */ void setParam();
|
||||
/* 80A0AEA8 */ BOOL main();
|
||||
/* 80A0B380 */ BOOL ctrlBtk();
|
||||
/* 80A0B45C */ void setAttnPos();
|
||||
/* 80A0B76C */ void lookat();
|
||||
/* 80A0B94C */ BOOL drawDbgInfo();
|
||||
/* 80A0ADF8 */ inline void setParam();
|
||||
/* 80A0AEA8 */ inline BOOL main();
|
||||
/* 80A0B380 */ inline BOOL ctrlBtk();
|
||||
/* 80A0B45C */ inline void setAttnPos();
|
||||
/* 80A0B76C */ inline void lookat();
|
||||
/* 80A0B94C */ inline BOOL drawDbgInfo();
|
||||
|
||||
s16 getMessageNo() { return shape_angle.x; }
|
||||
u8 getSwitchNo() { return (fopAcM_GetParam(this) >> 8) & 0xFF; }
|
||||
@@ -101,7 +128,7 @@ private:
|
||||
/* 0xBD8 */ daNpcF_MatAnm_c* mpMatAnm;
|
||||
/* 0xBDC */ daNpcF_Lookat_c mLookat;
|
||||
/* 0xC78 */ daNpcF_ActorMngr_c mActorMngr[1];
|
||||
/* 0xC80 */ fopAc_ac_c* mpTalkPartner;
|
||||
/* 0xC80 */ NPC_IMPAL_HIO_CLASS* mpHIO;
|
||||
/* 0xC84 */ dCcD_Cyl mCyl;
|
||||
/* 0xDC0 */ actionFunc mpActionFn;
|
||||
/* 0xDCC */ request_of_phase_process_class mPhase[1];
|
||||
@@ -118,47 +145,4 @@ private:
|
||||
|
||||
STATIC_ASSERT(sizeof(daNpcImpal_c) == 0xdec);
|
||||
|
||||
struct daNpc_Impal_HIOParam {
|
||||
/* 0x00 */ f32 mAttnOffsetY;
|
||||
/* 0x04 */ f32 mGravity;
|
||||
/* 0x08 */ f32 mScale;
|
||||
/* 0x0C */ f32 mShadowDepth;
|
||||
/* 0x10 */ f32 mCcWeight;
|
||||
/* 0x14 */ f32 mCylH;
|
||||
/* 0x18 */ f32 mWallH;
|
||||
/* 0x1C */ f32 mWallR;
|
||||
/* 0x20 */ f32 mBodyUpAngle;
|
||||
/* 0x24 */ f32 mBodyDownAngle;
|
||||
/* 0x28 */ f32 mBodyLeftAngle;
|
||||
/* 0x2C */ f32 mBodyRightAngle;
|
||||
/* 0x30 */ f32 mHeadUpAngle;
|
||||
/* 0x34 */ f32 mHeadDownAngle;
|
||||
/* 0x38 */ f32 mHeadLeftAngle;
|
||||
/* 0x3C */ f32 mHeadRightAngle;
|
||||
/* 0x40 */ f32 mNeckAngleScl;
|
||||
/* 0x44 */ f32 mMorfFrames;
|
||||
/* 0x48 */ s16 mSpeakDistIdx;
|
||||
/* 0x4A */ s16 mSpeakAngleIdx;
|
||||
/* 0x4C */ s16 mTalkDistIdx;
|
||||
/* 0x4E */ s16 mTalkAngleIdx;
|
||||
/* 0x50 */ f32 mAttnFovY;
|
||||
/* 0x54 */ f32 mAttnRadius;
|
||||
/* 0x58 */ f32 mAttnUpperY;
|
||||
/* 0x5C */ f32 mAttnLowerY;
|
||||
/* 0x60 */ s16 field_0x60;
|
||||
/* 0x62 */ s16 mDamageTimer;
|
||||
/* 0x64 */ s16 mTestExpression;
|
||||
/* 0x66 */ s16 mTestMotion;
|
||||
/* 0x68 */ s16 mTestLookMode;
|
||||
/* 0x6A */ bool mTest;
|
||||
/* 0x6C */ f32 field_0x6c;
|
||||
};
|
||||
|
||||
class daNpcImpal_Param_c {
|
||||
public:
|
||||
/* 80A0C204 */ virtual ~daNpcImpal_Param_c() {}
|
||||
|
||||
static daNpc_Impal_HIOParam const m;
|
||||
};
|
||||
|
||||
#endif /* D_A_NPC_IMPAL_H */
|
||||
|
||||
@@ -3,15 +3,6 @@
|
||||
|
||||
#include "d/actor/d_a_npc.h"
|
||||
|
||||
/**
|
||||
* @ingroup actors-npcs
|
||||
* @class daNpc_Lud_c
|
||||
* @brief Luda
|
||||
*
|
||||
* @details
|
||||
*
|
||||
*/
|
||||
|
||||
struct daNpc_Lud_HIOParam {
|
||||
/* 0x00 */ daNpcT_HIOParam common;
|
||||
/* 0x8C */ f32 play_speed;
|
||||
@@ -24,6 +15,30 @@ public:
|
||||
static const daNpc_Lud_HIOParam m;
|
||||
};
|
||||
|
||||
#if DEBUG
|
||||
class daNpc_Lud_HIO_c : public mDoHIO_entry_c {
|
||||
public:
|
||||
daNpc_Lud_HIO_c();
|
||||
|
||||
void listenPropertyEvent(const JORPropertyEvent*);
|
||||
void genMessage(JORMContext*);
|
||||
|
||||
daNpc_Lud_HIOParam m;
|
||||
};
|
||||
|
||||
#define NPC_LUD_HIO_CLASS daNpc_Lud_HIO_c
|
||||
#else
|
||||
#define NPC_LUD_HIO_CLASS daNpc_Lud_Param_c
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @ingroup actors-npcs
|
||||
* @class daNpc_Lud_c
|
||||
* @brief Luda
|
||||
*
|
||||
* @details
|
||||
*
|
||||
*/
|
||||
class daNpc_Lud_c : public daNpcT_c {
|
||||
public:
|
||||
typedef int (daNpc_Lud_c::*actionFunc)(void*);
|
||||
@@ -101,7 +116,7 @@ public:
|
||||
|
||||
private:
|
||||
/* 0xE40 */ mDoExt_McaMorfSO* mpBowlMorf;
|
||||
/* 0xE44 */ u8 field_0xe44[0xe48 - 0xe44];
|
||||
/* 0xE44 */ NPC_LUD_HIO_CLASS* mpHIO;
|
||||
/* 0xE48 */ J3DModel* mpModel[2];
|
||||
/* 0xE50 */ dCcD_Cyl mCyl;
|
||||
/* 0xF8C */ u8 mType;
|
||||
|
||||
@@ -3,18 +3,11 @@
|
||||
|
||||
#include "d/actor/d_a_npc.h"
|
||||
|
||||
/**
|
||||
* @ingroup actors-npcs
|
||||
* @class daNpc_Moi_c
|
||||
* @brief Rusl
|
||||
*
|
||||
* @details
|
||||
*
|
||||
*/
|
||||
|
||||
struct daNpc_Moi_HIOParam {
|
||||
/* 0x00 */ daNpcT_HIOParam common;
|
||||
/* 0x8C */ u8 field_0x70[12];
|
||||
/* 0x8C */ f32 field_0x8c;
|
||||
/* 0x90 */ f32 field_0x90;
|
||||
/* 0x94 */ f32 field_0x94;
|
||||
/* 0x98 */ s16 field_0x98;
|
||||
/* 0x9A */ s16 field_0x9a;
|
||||
/* 0x9C */ s16 field_0x9c;
|
||||
@@ -22,7 +15,9 @@ struct daNpc_Moi_HIOParam {
|
||||
/* 0xA0 */ s16 field_0xa0;
|
||||
/* 0xA2 */ s16 field_0xa2;
|
||||
/* 0xA4 */ f32 field_0xa4;
|
||||
/* 0xA8 */ u8 field_0xa8[12];
|
||||
/* 0xA8 */ f32 field_0xa8;
|
||||
/* 0xAC */ f32 field_0xac;
|
||||
/* 0xB0 */ f32 field_0xb0;
|
||||
/* 0xB4 */ f32 field_0xb4;
|
||||
/* 0xB8 */ f32 field_0xb8;
|
||||
};
|
||||
@@ -34,15 +29,30 @@ public:
|
||||
static const daNpc_Moi_HIOParam m;
|
||||
};
|
||||
|
||||
class daNpc_Moi_HIO_c
|
||||
#ifdef DEBUG
|
||||
: public mDoHIO_entry_c
|
||||
#endif
|
||||
{
|
||||
#if DEBUG
|
||||
class daNpc_Moi_HIO_c : public mDoHIO_entry_c {
|
||||
public:
|
||||
daNpc_Moi_HIO_c();
|
||||
|
||||
void listenPropertyEvent(const JORPropertyEvent*);
|
||||
void genMessage(JORMContext*);
|
||||
|
||||
daNpc_Moi_HIOParam m;
|
||||
};
|
||||
|
||||
#define NPC_MOI_HIO_CLASS daNpc_Moi_HIO_c
|
||||
#else
|
||||
#define NPC_MOI_HIO_CLASS daNpc_Moi_Param_c
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @ingroup actors-npcs
|
||||
* @class daNpc_Moi_c
|
||||
* @brief Rusl
|
||||
*
|
||||
* @details
|
||||
*
|
||||
*/
|
||||
class daNpc_Moi_c : public daNpcT_c {
|
||||
public:
|
||||
typedef int (daNpc_Moi_c::*cutFunc)(int);
|
||||
@@ -152,7 +162,7 @@ public:
|
||||
static cutFunc mCutList[5];
|
||||
|
||||
private:
|
||||
/* 0x0E40 */ daNpc_Moi_HIO_c* field_0xe40;
|
||||
/* 0x0E40 */ NPC_MOI_HIO_CLASS* mpHIO;
|
||||
/* 0x0E44 */ J3DModel* mpModel[6];
|
||||
/* 0x0E5C */ dCcD_Cyl mCyl[4];
|
||||
/* 0x134C */ dCcD_Cyl mCyl2;
|
||||
|
||||
@@ -3,6 +3,33 @@
|
||||
|
||||
#include "d/actor/d_a_npc.h"
|
||||
|
||||
struct daNpcShad_HIOParam {
|
||||
/* 0x00 */ daNpcF_HIOParam common;
|
||||
/* 0x6C */ f32 traveling_speed; // 走行速度 (Traveling Speed)
|
||||
};
|
||||
|
||||
class daNpcShad_Param_c : public JORReflexible {
|
||||
public:
|
||||
/* 80AE1F70 */ virtual ~daNpcShad_Param_c() {}
|
||||
|
||||
static const daNpcShad_HIOParam m;
|
||||
};
|
||||
|
||||
#if DEBUG
|
||||
class daNpcShad_HIO_c : public mDoHIO_entry_c {
|
||||
public:
|
||||
daNpcShad_HIO_c();
|
||||
|
||||
void genMessage(JORMContext*);
|
||||
|
||||
daNpcShad_HIOParam m;
|
||||
};
|
||||
|
||||
#define NPC_SHAD_HIO_CLASS daNpcShad_HIO_c
|
||||
#else
|
||||
#define NPC_SHAD_HIO_CLASS daNpcShad_Param_c
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @ingroup actors-npcs
|
||||
* @class daNpcShad_c
|
||||
@@ -10,24 +37,7 @@
|
||||
*
|
||||
* @details
|
||||
*
|
||||
*/
|
||||
|
||||
struct daNpcShad_HIOParam {
|
||||
/* 0x00 */ daNpcF_HIOParam common;
|
||||
/* 0x6C */ f32 traveling_speed; // 走行速度 (Traveling Speed)
|
||||
};
|
||||
|
||||
class daNpcShad_Param_c: public JORReflexible {
|
||||
public:
|
||||
/* 80AE1F70 */ virtual ~daNpcShad_Param_c() {}
|
||||
|
||||
#ifdef DEBUG
|
||||
void genMessage(JORMContext*);
|
||||
#endif
|
||||
|
||||
static const daNpcShad_HIOParam m;
|
||||
};
|
||||
|
||||
*/
|
||||
class daNpcShad_c : public daNpcF_c {
|
||||
public:
|
||||
typedef bool (daNpcShad_c::*ActionFn)(void*);
|
||||
@@ -219,8 +229,10 @@ public:
|
||||
mActorMngr[4].entry(getEvtAreaTagP(17, 0));
|
||||
}
|
||||
} else if (mMode == 1
|
||||
/* dSv_event_flag_c::F_0302 - Kakariko Village - Saw cutscene of Shad casting spells underneat Kakariko Village */
|
||||
&& daNpcF_chkEvtBit(0x12E) && mActorMngr[4].getActorP() == NULL) {
|
||||
/* dSv_event_flag_c::F_0302 - Kakariko Village - Saw cutscene of Shad casting
|
||||
spells underneat Kakariko Village */
|
||||
&& daNpcF_chkEvtBit(0x12E) && mActorMngr[4].getActorP() == NULL)
|
||||
{
|
||||
mActorMngr[4].entry(getEvtAreaTagP(18, 0));
|
||||
}
|
||||
}
|
||||
@@ -233,7 +245,7 @@ private:
|
||||
/* 0xBE4 */ daNpcF_Lookat_c mLookat;
|
||||
/* 0xC80 */ daNpcF_ActorMngr_c mActorMngr[5];
|
||||
/* 0xCA8 */ daPy_py_c* field_0xca8;
|
||||
/* 0xCAC */ u8 field_0xcac[0xcb0 - 0xcac];
|
||||
/* 0xCAC */ NPC_SHAD_HIO_CLASS* mpHIO;
|
||||
/* 0xCB0 */ dCcD_Cyl field_0xcb0;
|
||||
/* 0xDEC */ ActionFn mActionFn;
|
||||
/* 0xDF8 */ request_of_phase_process_class mPhases[2];
|
||||
|
||||
@@ -3,6 +3,34 @@
|
||||
|
||||
#include "d/actor/d_a_npc.h"
|
||||
|
||||
struct daNpcShoe_HIOParam {
|
||||
/* 0x00 */ daNpcF_HIOParam common;
|
||||
};
|
||||
|
||||
class daNpcShoe_Param_c {
|
||||
public:
|
||||
/* 80AEA344 */ virtual ~daNpcShoe_Param_c() {}
|
||||
|
||||
static const daNpcShoe_HIOParam m;
|
||||
};
|
||||
|
||||
STATIC_ASSERT(sizeof(daNpcShoe_Param_c::m) == 0x6C);
|
||||
|
||||
#if DEBUG
|
||||
class daNpcShoe_HIO_c : public mDoHIO_entry_c {
|
||||
public:
|
||||
daNpcShoe_HIO_c();
|
||||
|
||||
void genMessage(JORMContext*);
|
||||
|
||||
daNpcShoe_HIOParam m;
|
||||
};
|
||||
|
||||
#define NPC_SHOE_HIO_CLASS daNpcShoe_HIO_c
|
||||
#else
|
||||
#define NPC_SHOE_HIO_CLASS daNpcShoe_Param_c
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @ingroup actors-npcs
|
||||
* @class daNpcShoe_c
|
||||
@@ -52,10 +80,10 @@ public:
|
||||
/* 80AE92E8 */ void setParam();
|
||||
/* 80AE93A0 */ BOOL main();
|
||||
/* 80AE9624 */ void setAttnPos();
|
||||
/* 80AE9820 */ void lookat();
|
||||
/* 80AE9820 */ inline void lookat();
|
||||
/* 80AE9A00 */ void setMotionAnm(int, f32);
|
||||
/* 80AE9AD0 */ BOOL drawDbgInfo();
|
||||
/* 80AEA340 */ void adjustShapeAngle();
|
||||
/* 80AE9AD0 */ inline BOOL drawDbgInfo();
|
||||
/* 80AEA340 */ inline void adjustShapeAngle();
|
||||
|
||||
s16 getMessageNo() { return fopAcM_GetParam(this) >> 0x10; }
|
||||
|
||||
@@ -91,7 +119,7 @@ private:
|
||||
/* 0xBF4 */ u8 field_0xbf4[0xbf8 - 0xbf4];
|
||||
/* 0xBF8 */ daNpcF_Lookat_c mLookat;
|
||||
/* 0xC94 */ daNpcF_ActorMngr_c mActorMngr[1];
|
||||
/* 0xC9C */ u8 field_0xc9c[0xca0 - 0xc9c];
|
||||
/* 0xC9C */ NPC_SHOE_HIO_CLASS* mpHIO;
|
||||
/* 0xCA0 */ dCcD_Cyl mCcCyl;
|
||||
/* 0xDDC */ actionFunc mpActionFn;
|
||||
/* 0xDE8 */ request_of_phase_process_class mPhases[3];
|
||||
@@ -110,48 +138,4 @@ private:
|
||||
|
||||
STATIC_ASSERT(sizeof(daNpcShoe_c) == 0xe1c);
|
||||
|
||||
class daNpcShoe_Param_c {
|
||||
public:
|
||||
/* 8095D5D4 */ virtual ~daNpcShoe_Param_c() {}
|
||||
|
||||
struct param {
|
||||
/* 0x00 */ f32 mAttnOffsetY;
|
||||
/* 0x04 */ f32 mGravity;
|
||||
/* 0x08 */ f32 mScale;
|
||||
/* 0x0C */ f32 mShadowDepth;
|
||||
/* 0x10 */ f32 mCcWeight;
|
||||
/* 0x14 */ f32 mCylH;
|
||||
/* 0x18 */ f32 mWallH;
|
||||
/* 0x1C */ f32 mWallR;
|
||||
/* 0x20 */ f32 mBodyUpAngle;
|
||||
/* 0x24 */ f32 mBodyDownAngle;
|
||||
/* 0x28 */ f32 mBodyLeftAngle;
|
||||
/* 0x2C */ f32 mBodyRightAngle;
|
||||
/* 0x30 */ f32 mHeadUpAngle;
|
||||
/* 0x34 */ f32 mHeadDownAngle;
|
||||
/* 0x38 */ f32 mHeadLeftAngle;
|
||||
/* 0x3C */ f32 mHeadRightAngle;
|
||||
/* 0x40 */ f32 mNeckAngleScl;
|
||||
/* 0x44 */ f32 mMorfFrames;
|
||||
/* 0x48 */ s16 mSpeakDistIdx;
|
||||
/* 0x4A */ s16 mSpeakAngleIdx;
|
||||
/* 0x4C */ s16 mTalkDistIdx;
|
||||
/* 0x4E */ s16 mTalkAngleIdx;
|
||||
/* 0x50 */ f32 mAttnFovY;
|
||||
/* 0x54 */ f32 mAttnRadius;
|
||||
/* 0x58 */ f32 mAttnUpperY;
|
||||
/* 0x5C */ f32 mAttnLowerY;
|
||||
/* 0x60 */ s16 field_0x60;
|
||||
/* 0x62 */ s16 mDamageTimer;
|
||||
/* 0x64 */ s16 mTestExpression;
|
||||
/* 0x66 */ s16 mTestMotion;
|
||||
/* 0x68 */ s16 mTestLookMode;
|
||||
/* 0x6A */ bool mTest;
|
||||
};
|
||||
|
||||
static param const m;
|
||||
};
|
||||
|
||||
STATIC_ASSERT(sizeof(daNpcShoe_Param_c::param) == 0x6C);
|
||||
|
||||
#endif /* D_A_NPC_SHOE_H */
|
||||
|
||||
@@ -3,6 +3,35 @@
|
||||
|
||||
#include "d/actor/d_a_npc.h"
|
||||
|
||||
struct daNpcThe_HIOParam {
|
||||
/* 0x00 */ daNpcF_HIOParam common;
|
||||
};
|
||||
|
||||
class daNpcThe_Param_c {
|
||||
public:
|
||||
/* 80AFBDA0 */ virtual ~daNpcThe_Param_c() {}
|
||||
|
||||
static const daNpcThe_HIOParam m;
|
||||
};
|
||||
|
||||
STATIC_ASSERT(sizeof(daNpcThe_Param_c::m) == 0x6C);
|
||||
|
||||
#if DEBUG
|
||||
class daNpcThe_HIO_c : public mDoHIO_entry_c {
|
||||
public:
|
||||
daNpcThe_HIO_c();
|
||||
|
||||
void listenPropertyEvent(const JORPropertyEvent*);
|
||||
void genMessage(JORMContext*);
|
||||
|
||||
daNpcThe_HIOParam m;
|
||||
};
|
||||
|
||||
#define NPC_THE_HIO_CLASS daNpcThe_HIO_c
|
||||
#else
|
||||
#define NPC_THE_HIO_CLASS daNpcThe_Param_c
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @ingroup actors-npcs
|
||||
* @class daNpcThe_c
|
||||
@@ -103,16 +132,16 @@ public:
|
||||
/* 80AF9358 */ cPhs__Step create();
|
||||
/* 80AF9748 */ void reset();
|
||||
/* inline */ inline int Draw();
|
||||
/* 80AF99F4 */ void setParam();
|
||||
/* 80AF9CF0 */ BOOL main();
|
||||
/* 80AF9F94 */ void playMotion();
|
||||
/* 80AFA338 */ void playExpression();
|
||||
/* 80AF99F4 */ inline void setParam();
|
||||
/* 80AF9CF0 */ inline BOOL main();
|
||||
/* 80AF9F94 */ inline void playMotion();
|
||||
/* 80AFA338 */ inline void playExpression();
|
||||
/* inline */ inline void setExpressionTalkAfter();
|
||||
/* 80AFA6CC */ BOOL doEvent();
|
||||
/* 80AFADEC */ BOOL ctrlBtk();
|
||||
/* 80AFAEC8 */ void setAttnPos();
|
||||
/* 80AFB1C4 */ void lookat();
|
||||
/* 80AFB488 */ BOOL drawDbgInfo();
|
||||
/* 80AFA6CC */ inline BOOL doEvent();
|
||||
/* 80AFADEC */ inline BOOL ctrlBtk();
|
||||
/* 80AFAEC8 */ inline void setAttnPos();
|
||||
/* 80AFB1C4 */ inline void lookat();
|
||||
/* 80AFB488 */ inline BOOL drawDbgInfo();
|
||||
/* 80AFBD9C */ void adjustShapeAngle() {}
|
||||
|
||||
u8 getTypeFromParam() {
|
||||
@@ -143,16 +172,15 @@ public:
|
||||
}
|
||||
|
||||
bool isSneaking() {
|
||||
if (!strcmp(dComIfGp_getStartStageName(), "R_SP116") && dComIfGp_getStartStageRoomNo() == 5
|
||||
&& dComIfG_play_c::getLayerNo(0) == 2) {
|
||||
if (!strcmp(dComIfGp_getStartStageName(), "R_SP116") &&
|
||||
dComIfGp_getStartStageRoomNo() == 5 && dComIfG_play_c::getLayerNo(0) == 2)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool chkAction(ActionFn action) {
|
||||
return mpActionFn == action;
|
||||
}
|
||||
bool chkAction(ActionFn action) { return mpActionFn == action; }
|
||||
|
||||
BOOL setAction(ActionFn action) {
|
||||
if (mpActionFn != NULL) {
|
||||
@@ -184,7 +212,7 @@ private:
|
||||
/* 0xBD8 */ daNpcF_MatAnm_c* mpMatAnm;
|
||||
/* 0xBDC */ daNpcF_Lookat_c mLookat;
|
||||
/* 0xC78 */ daNpcF_ActorMngr_c mActorMngr[3];
|
||||
/* 0xC90 */ u8 field_0xc90[4];
|
||||
/* 0xC90 */ NPC_THE_HIO_CLASS* mpHIO;
|
||||
/* 0xC94 */ dCcD_Cyl mColCyl;
|
||||
/* 0xDD0 */ ActionFn mpNextActionFn;
|
||||
/* 0xDDC */ ActionFn mpActionFn;
|
||||
@@ -208,48 +236,4 @@ private:
|
||||
|
||||
STATIC_ASSERT(sizeof(daNpcThe_c) == 0xE20);
|
||||
|
||||
class daNpcThe_Param_c {
|
||||
public:
|
||||
struct param {
|
||||
/* 0x00 */ f32 mAttnOffsetY;
|
||||
/* 0x04 */ f32 mGravity;
|
||||
/* 0x08 */ f32 mScale;
|
||||
/* 0x0C */ f32 mShadowDepth;
|
||||
/* 0x10 */ f32 mCcWeight;
|
||||
/* 0x14 */ f32 mCylH;
|
||||
/* 0x18 */ f32 mWallH;
|
||||
/* 0x1C */ f32 mWallR;
|
||||
/* 0x20 */ f32 mBodyUpAngle;
|
||||
/* 0x24 */ f32 mBodyDownAngle;
|
||||
/* 0x28 */ f32 mBodyLeftAngle;
|
||||
/* 0x2C */ f32 mBodyRightAngle;
|
||||
/* 0x30 */ f32 mHeadUpAngle;
|
||||
/* 0x34 */ f32 mHeadDownAngle;
|
||||
/* 0x38 */ f32 mHeadLeftAngle;
|
||||
/* 0x3C */ f32 mHeadRightAngle;
|
||||
/* 0x40 */ f32 mNeckAngleScl;
|
||||
/* 0x44 */ f32 mMorfFrames;
|
||||
/* 0x48 */ s16 mSpeakDistIdx;
|
||||
/* 0x4A */ s16 mSpeakAngleIdx;
|
||||
/* 0x4C */ s16 mTalkDistIdx;
|
||||
/* 0x4E */ s16 mTalkAngleIdx;
|
||||
/* 0x50 */ f32 mAttnFovY;
|
||||
/* 0x54 */ f32 mAttnRadius;
|
||||
/* 0x58 */ f32 mAttnUpperY;
|
||||
/* 0x5C */ f32 mAttnLowerY;
|
||||
/* 0x60 */ s16 field_0x60;
|
||||
/* 0x62 */ s16 mDamageTimer;
|
||||
/* 0x64 */ s16 mTestExpression;
|
||||
/* 0x66 */ s16 mTestMotion;
|
||||
/* 0x68 */ s16 mTestLookMode;
|
||||
/* 0x6A */ bool mTest;
|
||||
};
|
||||
|
||||
/* 80AFBDA0 */ virtual ~daNpcThe_Param_c() {}
|
||||
|
||||
static daNpcThe_Param_c::param const m;
|
||||
};
|
||||
|
||||
STATIC_ASSERT(sizeof(daNpcThe_Param_c::param) == 0x6C);
|
||||
|
||||
#endif /* D_A_NPC_THE_H */
|
||||
|
||||
@@ -3,47 +3,8 @@
|
||||
|
||||
#include "d/actor/d_a_npc.h"
|
||||
|
||||
/**
|
||||
* @ingroup actors-npcs
|
||||
* @class daNpc_Uri_c
|
||||
* @brief Uli
|
||||
*
|
||||
* @details
|
||||
*
|
||||
*/
|
||||
|
||||
struct daNpc_Uri_HIOParam {
|
||||
/* 0x00 */ f32 field_0x00;
|
||||
/* 0x04 */ f32 field_0x04;
|
||||
/* 0x08 */ f32 field_0x08;
|
||||
/* 0x0C */ f32 field_0x0c;
|
||||
/* 0x10 */ f32 field_0x10;
|
||||
/* 0x14 */ f32 field_0x14;
|
||||
/* 0x18 */ f32 field_0x18;
|
||||
/* 0x1C */ f32 field_0x1c;
|
||||
/* 0x20 */ f32 field_0x20;
|
||||
/* 0x24 */ f32 field_0x24;
|
||||
/* 0x28 */ f32 field_0x28;
|
||||
/* 0x2C */ f32 field_0x2c;
|
||||
/* 0x30 */ f32 field_0x30;
|
||||
/* 0x34 */ f32 field_0x34;
|
||||
/* 0x38 */ f32 field_0x38;
|
||||
/* 0x3C */ f32 field_0x3c;
|
||||
/* 0x40 */ f32 field_0x40;
|
||||
/* 0x44 */ f32 field_0x44;
|
||||
/* 0x48 */ s16 field_0x48;
|
||||
/* 0x4A */ s16 field_0x4a;
|
||||
/* 0x4C */ s16 field_0x4c;
|
||||
/* 0x4E */ s16 field_0x4e;
|
||||
/* 0x50 */ f32 field_0x50;
|
||||
/* 0x54 */ f32 field_0x54;
|
||||
/* 0x58 */ f32 field_0x58;
|
||||
/* 0x5C */ f32 field_0x5c;
|
||||
/* 0x60 */ s16 field_0x60;
|
||||
/* 0x62 */ s16 field_0x62;
|
||||
/* 0x64 */ u8 field_0x64[8];
|
||||
/* 0x6C */ f32 field_0x6c;
|
||||
/* 0x70 */ u8 field_0x70[28];
|
||||
struct daNpc_Uri_HIOParam {
|
||||
/* 0x00 */ daNpcT_HIOParam common;
|
||||
/* 0x8C */ s16 field_0x8c;
|
||||
/* 0x8E */ s16 field_0x8e;
|
||||
/* 0x90 */ s16 field_0x90;
|
||||
@@ -59,20 +20,35 @@
|
||||
|
||||
class daNpc_Uri_Param_c {
|
||||
public:
|
||||
/* 80B2CD94 */ virtual ~daNpc_Uri_Param_c() {};
|
||||
/* 80B2CD94 */ virtual ~daNpc_Uri_Param_c() {}
|
||||
|
||||
static daNpc_Uri_HIOParam const m;
|
||||
static const daNpc_Uri_HIOParam m;
|
||||
};
|
||||
|
||||
class daNpc_Uri_HIO_c
|
||||
#ifdef DEBUG
|
||||
: public mDoHIO_entry_c
|
||||
#endif
|
||||
{
|
||||
#if DEBUG
|
||||
class daNpc_Uri_HIO_c : public mDoHIO_entry_c {
|
||||
public:
|
||||
daNpc_Uri_HIO_c();
|
||||
|
||||
void listenPropertyEvent(const JORPropertyEvent*);
|
||||
void genMessage(JORMContext*);
|
||||
|
||||
daNpc_Uri_HIOParam m;
|
||||
};
|
||||
|
||||
#define NPC_URI_HIO_CLASS daNpc_Uri_HIO_c
|
||||
#else
|
||||
#define NPC_URI_HIO_CLASS daNpc_Uri_Param_c
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @ingroup actors-npcs
|
||||
* @class daNpc_Uri_c
|
||||
* @brief Uli
|
||||
*
|
||||
* @details
|
||||
*
|
||||
*/
|
||||
class daNpc_Uri_c : public daNpcT_c {
|
||||
public:
|
||||
typedef int (daNpc_Uri_c::*cutFunc)(int);
|
||||
@@ -164,7 +140,7 @@ public:
|
||||
static cutFunc mCutList[7];
|
||||
|
||||
private:
|
||||
/* 0x0E40 */ daNpc_Uri_HIO_c* field_0xe40;
|
||||
/* 0x0E40 */ NPC_URI_HIO_CLASS* mpHIO;
|
||||
/* 0x0E44 */ J3DModel* mpModel[1];
|
||||
/* 0x0E48 */ dCcD_Cyl mCyl;
|
||||
/* 0x0F84 */ u8 mType;
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#ifndef D_A_OBJ_SZBRIDGE_H
|
||||
#define D_A_OBJ_SZBRIDGE_H
|
||||
|
||||
#include "d/d_bg_s_movebg_actor.h"
|
||||
#include "f_op/f_op_actor_mng.h"
|
||||
|
||||
/**
|
||||
@@ -11,24 +12,30 @@
|
||||
* @details
|
||||
*
|
||||
*/
|
||||
class daObjSZbridge_c : public fopAc_ac_c {
|
||||
class daObjSZbridge_c : public dBgS_MoveBgActor, request_of_phase_process_class {
|
||||
public:
|
||||
/* 80D04360 */ void rideActor(fopAc_ac_c*);
|
||||
/* 80D04424 */ void create1st();
|
||||
/* 80D04424 */ int create1st();
|
||||
/* 80D044B8 */ void setMtx();
|
||||
/* 80D04528 */ void CreateHeap();
|
||||
/* 80D04528 */ int CreateHeap();
|
||||
/* 80D04598 */ void chkBg();
|
||||
/* 80D048C4 */ void Create();
|
||||
/* 80D04974 */ void Execute(Mtx**);
|
||||
/* 80D049E4 */ void Draw();
|
||||
/* 80D04A88 */ void Delete();
|
||||
/* 80D04B90 */ ~daObjSZbridge_c();
|
||||
/* 80D048C4 */ int Create();
|
||||
/* 80D04974 */ int Execute(Mtx**);
|
||||
/* 80D049E4 */ int Draw();
|
||||
/* 80D04A88 */ int Delete();
|
||||
/* 80D04B90 */ virtual ~daObjSZbridge_c() {}
|
||||
|
||||
private:
|
||||
/* 0x568 */ u8 field_0x568[0x624 - 0x568];
|
||||
/* 0x5A8 */ Mtx mBgMtx;
|
||||
/* 0x5D8 */ Mtx field_0x5d8;
|
||||
/* 0x608 */ J3DModel* mpModel;
|
||||
/* 0x60C */ f32 mWaterY;
|
||||
/* 0x610 */ f32 mGroundY;
|
||||
/* 0x614 */ u8 field_0x614;
|
||||
/* 0x618 */ u32 field_0x618[2];
|
||||
/* 0x620 */ int field_0x620;
|
||||
};
|
||||
|
||||
STATIC_ASSERT(sizeof(daObjSZbridge_c) == 0x624);
|
||||
|
||||
|
||||
#endif /* D_A_OBJ_SZBRIDGE_H */
|
||||
|
||||
+177
-423
File diff suppressed because it is too large
Load Diff
+277
-527
File diff suppressed because it is too large
Load Diff
+132
-143
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* @file d_a_npc_impal.cpp
|
||||
* @file d_a_npc_impal.cpp
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -7,7 +7,55 @@
|
||||
|
||||
#include "d/actor/d_a_npc_impal.h"
|
||||
|
||||
static daNpcImpal_Param_c l_HIO;
|
||||
/* 80A0C270-80A0C2E0 000000 0070+00 12/12 0/0 0/0 .rodata m__18daNpcImpal_Param_c */
|
||||
daNpcImpal_HIOParam const daNpcImpal_Param_c::m = {
|
||||
135.0f, // attention_offset
|
||||
-3.0f, // gravity
|
||||
1.0f, // scale
|
||||
560.0f, // real_shadow_size
|
||||
255.0f, // weight
|
||||
130.0f, // height
|
||||
35.0f, // knee_length
|
||||
30.0f, // width
|
||||
0.0f, // body_angleX_max
|
||||
0.0f, // body_angleX_min
|
||||
10.0f, // body_angleY_max
|
||||
-10.0f, // body_angleY_min
|
||||
30.0f, // head_angleX_max
|
||||
-10.0f, // head_angleX_min
|
||||
45.0f, // head_angleY_max
|
||||
-45.0f, // head_angleY_min
|
||||
0.600000024f, // neck_rotation_ratio
|
||||
20.0f, // morf_frame
|
||||
3, // talk_distance
|
||||
6, // talk_angle
|
||||
5, // attention_distance
|
||||
6, // attention_angle
|
||||
80.0f, // fov
|
||||
500.0f, // search_distance
|
||||
300.0f, // search_height
|
||||
-300.0f, // search_depth
|
||||
60, // attention_time
|
||||
8, // damage_time
|
||||
0, // face_expression
|
||||
0, // motion
|
||||
0, // look_mode
|
||||
0, // debug_mode_ON
|
||||
0, // debug_info_ON
|
||||
300.0f, // field_0x6c
|
||||
};
|
||||
|
||||
#if DEBUG
|
||||
daNpcImpal_HIO_c::daNpcImpal_HIO_c() {
|
||||
m = daNpcImpal_Param_c::m;
|
||||
}
|
||||
|
||||
void daNpcImpal_HIO_c::genMessage(JORMContext* ctext) {
|
||||
// TODO
|
||||
}
|
||||
#endif
|
||||
|
||||
NPC_IMPAL_HIO_CLASS l_HIO;
|
||||
|
||||
/* 80A0C544-80A0C61C 000020 00D8+00 1/2 0/0 0/0 .data l_bckGetParamList */
|
||||
static daNpc_GetParam2 l_bckGetParamList[18] = {
|
||||
@@ -56,9 +104,7 @@ daNpcImpal_c::EventFn daNpcImpal_c::mEvtSeqList[4] = {
|
||||
};
|
||||
|
||||
/* 80A079EC-80A07B70 0000EC 0184+00 1/1 0/0 0/0 .text __ct__12daNpcImpal_cFv */
|
||||
daNpcImpal_c::daNpcImpal_c() {
|
||||
// NONMATCHING
|
||||
}
|
||||
daNpcImpal_c::daNpcImpal_c() {}
|
||||
|
||||
/* 80A07C00-80A07DC4 000300 01C4+00 1/0 0/0 0/0 .text __dt__12daNpcImpal_cFv */
|
||||
daNpcImpal_c::~daNpcImpal_c() {
|
||||
@@ -71,43 +117,6 @@ daNpcImpal_c::~daNpcImpal_c() {
|
||||
}
|
||||
}
|
||||
|
||||
/* 80A0C270-80A0C2E0 000000 0070+00 12/12 0/0 0/0 .rodata m__18daNpcImpal_Param_c */
|
||||
daNpc_Impal_HIOParam const daNpcImpal_Param_c::m = {
|
||||
135.0f, // mAttnOffsetY
|
||||
-3.0f, // mGravity
|
||||
1.0f, // mScale
|
||||
560.0f, // mShadowDepth
|
||||
255.0f, // mCcWeight
|
||||
130.0f, // mCylH
|
||||
35.0f, // mWallH
|
||||
30.0f, // mWallR
|
||||
0.0f, // mBodyUpAngle
|
||||
0.0f, // mBodyDownAngle
|
||||
10.0f, // mBodyLeftAngle
|
||||
-10.0f, // mBodyRightAngle
|
||||
30.0f, // mHeadUpAngle
|
||||
-10.0f, // mHeadDownAngle
|
||||
45.0f, // mHeadLeftAngle
|
||||
-45.0f, // mHeadRightAngle
|
||||
0.600000024f, // mNeckAngleScl
|
||||
20.0f, // mMorfFrames
|
||||
3, // mSpeakDistIdx
|
||||
6, // mSpeakAngleIdx
|
||||
5, // mTalkDistIdx
|
||||
6, // mTalkAngleIdx
|
||||
80.0f, // mAttnFovY
|
||||
500.0f, // mAttnRadius
|
||||
300.0f, // mAttnUpperY
|
||||
-300.0f, // mAttnLowerY
|
||||
60, // field_0x60
|
||||
8, // mDamageTimer
|
||||
0, // mTestExpression
|
||||
0, // mTestMotion
|
||||
0, // mTestLookMode
|
||||
false, // mTest
|
||||
300.0f, // field_0x6c
|
||||
};
|
||||
|
||||
/* 80A07DC4-80A080F8 0004C4 0334+00 1/1 0/0 0/0 .text Create__12daNpcImpal_cFv */
|
||||
int daNpcImpal_c::Create() {
|
||||
int phase;
|
||||
@@ -139,13 +148,13 @@ int daNpcImpal_c::Create() {
|
||||
fopAcM_SetMtx(this, mpMorf->getModel()->getBaseTRMtx());
|
||||
fopAcM_setCullSizeBox(this, -160.0f, -50.0f, -160.0f, 160.0f, 220.0f, 160.0f);
|
||||
mCreatureSound.init(¤t.pos, &eyePos, 3, 1);
|
||||
mAcchCir.SetWall(daNpcImpal_Param_c::m.mWallR, daNpcImpal_Param_c::m.mWallH);
|
||||
mAcchCir.SetWall(mpHIO->m.common.width, mpHIO->m.common.knee_length);
|
||||
mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir,
|
||||
fopAcM_GetSpeed_p(this), fopAcM_GetAngle_p(this), fopAcM_GetShapeAngle_p(this));
|
||||
mAcch.SetRoofNone();
|
||||
mAcch.SetWaterNone();
|
||||
mAcch.CrrPos(dComIfG_Bgsp());
|
||||
mCcStts.Init((int)daNpcImpal_Param_c::m.mCcWeight, 0, this);
|
||||
mCcStts.Init((int)mpHIO->m.common.weight, 0, this);
|
||||
mCyl.Set(daNpcF_c::mCcDCyl);
|
||||
mCyl.SetStts(&mCcStts);
|
||||
mCyl.SetTgType(0);
|
||||
@@ -222,7 +231,7 @@ int daNpcImpal_c::Draw() {
|
||||
}
|
||||
|
||||
mpMorf->getModel()->getModelData()->getMaterialNodePointer(2)->setMaterialAnm(mpMatAnm);
|
||||
draw(false, false, daNpcImpal_Param_c::m.mShadowDepth, NULL, false);
|
||||
draw(false, false, mpHIO->m.common.real_shadow_size, NULL, false);
|
||||
|
||||
return 1;
|
||||
}
|
||||
@@ -247,7 +256,7 @@ bool daNpcImpal_c::ctrlJoint(J3DJoint* i_joint, J3DModel* i_model) {
|
||||
case 1:
|
||||
case 3:
|
||||
case 4:
|
||||
setLookatMtx(jointNo, lookatJoints, daNpcImpal_Param_c::m.mNeckAngleScl);
|
||||
setLookatMtx(jointNo, lookatJoints, mpHIO->m.common.neck_rotation_ratio);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -314,21 +323,21 @@ s16 daNpcImpal_c::step(s16 i_angle, int i_animate) {
|
||||
}
|
||||
|
||||
void daNpcImpal_c::playExpression() {
|
||||
daNpcF_anmPlayData dat0 = {ANM_1, daNpcImpal_Param_c::m.mMorfFrames, 1};
|
||||
daNpcF_anmPlayData dat0 = {ANM_1, mpHIO->m.common.morf_frame, 1};
|
||||
daNpcF_anmPlayData* pDat0[1] = {&dat0};
|
||||
daNpcF_anmPlayData dat1 = {ANM_5, daNpcImpal_Param_c::m.mMorfFrames, 1};
|
||||
daNpcF_anmPlayData dat1 = {ANM_5, mpHIO->m.common.morf_frame, 1};
|
||||
daNpcF_anmPlayData* pDat1[1] = {&dat1};
|
||||
daNpcF_anmPlayData dat2 = {ANM_4, daNpcImpal_Param_c::m.mMorfFrames, 1};
|
||||
daNpcF_anmPlayData dat2 = {ANM_4, mpHIO->m.common.morf_frame, 1};
|
||||
daNpcF_anmPlayData* pDat2[1] = {&dat2};
|
||||
daNpcF_anmPlayData dat3 = {ANM_6, daNpcImpal_Param_c::m.mMorfFrames, 1};
|
||||
daNpcF_anmPlayData dat3 = {ANM_6, mpHIO->m.common.morf_frame, 1};
|
||||
daNpcF_anmPlayData* pDat3[1] = {&dat3};
|
||||
daNpcF_anmPlayData dat4 = {ANM_8, daNpcImpal_Param_c::m.mMorfFrames, 0};
|
||||
daNpcF_anmPlayData dat4 = {ANM_8, mpHIO->m.common.morf_frame, 0};
|
||||
daNpcF_anmPlayData* pDat4[1] = {&dat4};
|
||||
daNpcF_anmPlayData dat5 = {ANM_7, daNpcImpal_Param_c::m.mMorfFrames, 0};
|
||||
daNpcF_anmPlayData dat5 = {ANM_7, mpHIO->m.common.morf_frame, 0};
|
||||
daNpcF_anmPlayData* pDat5[1] = {&dat5};
|
||||
daNpcF_anmPlayData dat6 = {ANM_9, daNpcImpal_Param_c::m.mMorfFrames, 0};
|
||||
daNpcF_anmPlayData dat6 = {ANM_9, mpHIO->m.common.morf_frame, 0};
|
||||
daNpcF_anmPlayData* pDat6[1] = {&dat6};
|
||||
daNpcF_anmPlayData dat7 = {ANM_0, daNpcImpal_Param_c::m.mMorfFrames, 0};
|
||||
daNpcF_anmPlayData dat7 = {ANM_0, mpHIO->m.common.morf_frame, 0};
|
||||
daNpcF_anmPlayData* pDat7[1] = {&dat7};
|
||||
|
||||
daNpcF_anmPlayData** ppDat[8] = {
|
||||
@@ -340,21 +349,21 @@ void daNpcImpal_c::playExpression() {
|
||||
}
|
||||
|
||||
void daNpcImpal_c::playMotion() {
|
||||
daNpcF_anmPlayData dat0 = {0xA, daNpcImpal_Param_c::m.mMorfFrames, 0};
|
||||
daNpcF_anmPlayData dat0 = {0xA, mpHIO->m.common.morf_frame, 0};
|
||||
daNpcF_anmPlayData* pDat0[1] = {&dat0};
|
||||
|
||||
daNpcF_anmPlayData dat1a = {0xD, daNpcImpal_Param_c::m.mMorfFrames, 1};
|
||||
daNpcF_anmPlayData dat1b = {0xB, daNpcImpal_Param_c::m.mMorfFrames, 0};
|
||||
daNpcF_anmPlayData dat1a = {0xD, mpHIO->m.common.morf_frame, 1};
|
||||
daNpcF_anmPlayData dat1b = {0xB, mpHIO->m.common.morf_frame, 0};
|
||||
daNpcF_anmPlayData* pDat1[2] = {&dat1a, &dat1b};
|
||||
|
||||
daNpcF_anmPlayData dat2 = {0xB, daNpcImpal_Param_c::m.mMorfFrames, 0};
|
||||
daNpcF_anmPlayData dat2 = {0xB, mpHIO->m.common.morf_frame, 0};
|
||||
daNpcF_anmPlayData* pDat2[1] = {&dat2};
|
||||
|
||||
daNpcF_anmPlayData dat3 = {0xC, daNpcImpal_Param_c::m.mMorfFrames, 0};
|
||||
daNpcF_anmPlayData dat3 = {0xC, mpHIO->m.common.morf_frame, 0};
|
||||
daNpcF_anmPlayData* pDat3[1] = {&dat3};
|
||||
|
||||
daNpcF_anmPlayData dat4a = {0xE, daNpcImpal_Param_c::m.mMorfFrames, 1};
|
||||
daNpcF_anmPlayData dat4b = {0xA, daNpcImpal_Param_c::m.mMorfFrames, 0};
|
||||
daNpcF_anmPlayData dat4a = {0xE, mpHIO->m.common.morf_frame, 1};
|
||||
daNpcF_anmPlayData dat4b = {0xA, mpHIO->m.common.morf_frame, 0};
|
||||
daNpcF_anmPlayData* pDat4[2] = {&dat4a, &dat4b};
|
||||
|
||||
daNpcF_anmPlayData dat5a = {0x10, 0.0f, 1};
|
||||
@@ -459,7 +468,8 @@ bool daNpcImpal_c::setExpressionAnm(int i_idx, bool i_modify) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/* 80A08A68-80A08B48 001168 00E0+00 1/0 0/0 0/0 .text setExpressionBtp__12daNpcImpal_cFi */
|
||||
/* 80A08A68-80A08B48 001168 00E0+00 1/0 0/0 0/0 .text setExpressionBtp__12daNpcImpal_cFi
|
||||
*/
|
||||
bool daNpcImpal_c::setExpressionBtp(int i_idx) {
|
||||
J3DAnmTexPattern* btpAnm = getTexPtrnAnmP(l_arcNames[l_btpGetParamList[i_idx].arcIdx],
|
||||
l_btpGetParamList[i_idx].fileIdx);
|
||||
@@ -583,25 +593,57 @@ bool daNpcImpal_c::setAction(daNpcImpal_c::actionFunc i_actionFn) {
|
||||
return true;
|
||||
}
|
||||
|
||||
static u8 const lit_4589[12 + 4 /* padding */] = {
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
/* padding */
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
};
|
||||
/* 80A0B76C-80A0B94C 003E6C 01E0+00 1/1 0/0 0/0 .text lookat__12daNpcImpal_cFv */
|
||||
void daNpcImpal_c::lookat() {
|
||||
fopAc_ac_c* actor = NULL;
|
||||
J3DModel* model = mpMorf->getModel();
|
||||
BOOL snap = false;
|
||||
|
||||
f32 body_angleX_min = mpHIO->m.common.body_angleX_min;
|
||||
f32 body_angleX_max = mpHIO->m.common.body_angleX_max;
|
||||
f32 body_angleY_min = mpHIO->m.common.body_angleY_min;
|
||||
f32 body_angleY_max = mpHIO->m.common.body_angleY_max;
|
||||
f32 head_angleX_min = mpHIO->m.common.head_angleX_min;
|
||||
f32 head_angleX_max = mpHIO->m.common.head_angleX_max;
|
||||
f32 head_angleY_min = mpHIO->m.common.head_angleY_min;
|
||||
f32 head_angleY_max = mpHIO->m.common.head_angleY_max;
|
||||
|
||||
s16 angle_delta = mCurAngle.y - mOldAngle.y;
|
||||
|
||||
cXyz lookat_pos[3] = {mLookatPos[0], mLookatPos[1], mLookatPos[2]};
|
||||
csXyz* lookat_angle[3] = {&mLookatAngle[0], &mLookatAngle[1], &mLookatAngle[2]};
|
||||
|
||||
switch (mLookMode) {
|
||||
case LOOK_NONE:
|
||||
break;
|
||||
case LOOK_RESET:
|
||||
snap = true;
|
||||
break;
|
||||
case LOOK_PLAYER:
|
||||
case LOOK_PLAYER_TALK:
|
||||
actor = daPy_getPlayerActorClass();
|
||||
if (mLookMode == LOOK_PLAYER_TALK) {
|
||||
head_angleY_min = -80.0f;
|
||||
head_angleY_max = 80.0f;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (actor != NULL) {
|
||||
mLookPos = actor->attention_info.position;
|
||||
if (mLookMode != LOOK_PLAYER && mLookMode != LOOK_PLAYER_TALK) {
|
||||
mLookPos.y -= 40.0f;
|
||||
}
|
||||
mLookat.setAttnPos(&mLookPos);
|
||||
} else {
|
||||
mLookat.setAttnPos(NULL);
|
||||
}
|
||||
|
||||
mLookat.setParam(body_angleX_min, body_angleX_max, body_angleY_min, body_angleY_max, 0.0f, 0.0f,
|
||||
0.0f, 0.0f, head_angleX_min, head_angleX_max, head_angleY_min, head_angleY_max,
|
||||
mCurAngle.y, lookat_pos);
|
||||
mLookat.calc(this, model->getBaseTRMtx(), lookat_angle, snap, angle_delta, false);
|
||||
}
|
||||
|
||||
/* 80A08F60-80A090E8 001660 0188+00 1/1 0/0 0/0 .text s_sub1__FPvPv */
|
||||
static void* s_sub1(void* i_actor, void* i_data) {
|
||||
@@ -616,7 +658,7 @@ static void* s_sub1(void* i_actor, void* i_data) {
|
||||
BOOL daNpcImpal_c::chkFindPlayer() {
|
||||
BOOL ret;
|
||||
|
||||
if (!chkActorInSight(daPy_getPlayerActorClass(), daNpcImpal_Param_c::m.mAttnFovY)) {
|
||||
if (!chkActorInSight(daPy_getPlayerActorClass(), mpHIO->m.common.fov)) {
|
||||
mActorMngr[0].remove();
|
||||
ret = false;
|
||||
} else {
|
||||
@@ -1111,10 +1153,10 @@ static int daNpcImpal_IsDelete(void* i_this) {
|
||||
/* 80A0ADF8-80A0AEA8 0034F8 00B0+00 1/0 0/0 0/0 .text setParam__12daNpcImpal_cFv */
|
||||
void daNpcImpal_c::setParam() {
|
||||
attention_info.distances[0] =
|
||||
getDistTableIdx(daNpcImpal_Param_c::m.mTalkDistIdx, daNpcImpal_Param_c::m.mTalkAngleIdx);
|
||||
getDistTableIdx(mpHIO->m.common.attention_distance, mpHIO->m.common.attention_angle);
|
||||
attention_info.distances[1] = attention_info.distances[0];
|
||||
attention_info.distances[3] =
|
||||
getDistTableIdx(daNpcImpal_Param_c::m.mSpeakDistIdx, daNpcImpal_Param_c::m.mSpeakAngleIdx);
|
||||
getDistTableIdx(mpHIO->m.common.talk_distance, mpHIO->m.common.talk_angle);
|
||||
|
||||
if (field_0xde9) {
|
||||
attention_info.flags = fopAc_AttnFlag_SPEAK_e | fopAc_AttnFlag_TALK_e;
|
||||
@@ -1122,10 +1164,10 @@ void daNpcImpal_c::setParam() {
|
||||
attention_info.flags = 0;
|
||||
}
|
||||
|
||||
mAcchCir.SetWallR(daNpcImpal_Param_c::m.mWallR);
|
||||
mAcchCir.SetWallH(daNpcImpal_Param_c::m.mWallH);
|
||||
mAcchCir.SetWallR(mpHIO->m.common.width);
|
||||
mAcchCir.SetWallH(mpHIO->m.common.knee_length);
|
||||
|
||||
gravity = daNpcImpal_Param_c::m.mGravity;
|
||||
gravity = mpHIO->m.common.gravity;
|
||||
}
|
||||
|
||||
/* 80A0AEA8-80A0B380 0035A8 04D8+00 1/0 0/0 0/0 .text main__12daNpcImpal_cFv */
|
||||
@@ -1198,70 +1240,17 @@ void daNpcImpal_c::setAttnPos() {
|
||||
mEyeAngle.x = 0;
|
||||
}
|
||||
|
||||
attention_info.position.set(current.pos.x, current.pos.y + daNpcImpal_Param_c::m.mAttnOffsetY,
|
||||
attention_info.position.set(current.pos.x, current.pos.y + mpHIO->m.common.attention_offset,
|
||||
current.pos.z);
|
||||
|
||||
if (field_0xde9) {
|
||||
mCyl.SetC(current.pos);
|
||||
mCyl.SetH(daNpcImpal_Param_c::m.mCylH);
|
||||
mCyl.SetR(daNpcImpal_Param_c::m.mWallR);
|
||||
mCyl.SetH(mpHIO->m.common.height);
|
||||
mCyl.SetR(mpHIO->m.common.width);
|
||||
dComIfG_Ccsp()->Set(&mCyl);
|
||||
}
|
||||
}
|
||||
|
||||
/* 80A0B76C-80A0B94C 003E6C 01E0+00 1/1 0/0 0/0 .text lookat__12daNpcImpal_cFv */
|
||||
// Nonmatching - lookat_angle causing issues with literals
|
||||
void daNpcImpal_c::lookat() {
|
||||
fopAc_ac_c* actor = NULL;
|
||||
J3DModel* model = mpMorf->getModel();
|
||||
BOOL snap = false;
|
||||
|
||||
f32 body_down_angle = daNpcImpal_Param_c::m.mBodyDownAngle;
|
||||
f32 body_up_angle = daNpcImpal_Param_c::m.mBodyUpAngle;
|
||||
f32 body_right_angle = daNpcImpal_Param_c::m.mBodyRightAngle;
|
||||
f32 body_left_angle = daNpcImpal_Param_c::m.mBodyLeftAngle;
|
||||
f32 head_down_angle = daNpcImpal_Param_c::m.mHeadDownAngle;
|
||||
f32 head_up_angle = daNpcImpal_Param_c::m.mHeadUpAngle;
|
||||
f32 head_right_angle = daNpcImpal_Param_c::m.mHeadRightAngle;
|
||||
f32 head_left_angle = daNpcImpal_Param_c::m.mHeadLeftAngle;
|
||||
|
||||
s16 angle_delta = mCurAngle.y - mOldAngle.y;
|
||||
|
||||
cXyz lookat_pos[3] = {mLookatPos[0], mLookatPos[1], mLookatPos[2]};
|
||||
csXyz* lookat_angle[3] = {&mLookatAngle[0], &mLookatAngle[1], &mLookatAngle[2]};
|
||||
|
||||
switch (mLookMode) {
|
||||
case LOOK_NONE:
|
||||
break;
|
||||
case LOOK_RESET:
|
||||
snap = true;
|
||||
break;
|
||||
case LOOK_PLAYER:
|
||||
case LOOK_PLAYER_TALK:
|
||||
actor = daPy_getPlayerActorClass();
|
||||
if (mLookMode == LOOK_PLAYER_TALK) {
|
||||
head_right_angle = -80.0f;
|
||||
head_left_angle = 80.0f;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (actor != NULL) {
|
||||
mLookPos = actor->attention_info.position;
|
||||
if (mLookMode != LOOK_PLAYER && mLookMode != LOOK_PLAYER_TALK) {
|
||||
mLookPos.y -= 40.0f;
|
||||
}
|
||||
mLookat.setAttnPos(&mLookPos);
|
||||
} else {
|
||||
mLookat.setAttnPos(NULL);
|
||||
}
|
||||
|
||||
mLookat.setParam(body_down_angle, body_up_angle, body_right_angle, body_left_angle, 0.0f, 0.0f,
|
||||
0.0f, 0.0f, head_down_angle, head_up_angle, head_right_angle, head_left_angle,
|
||||
mCurAngle.y, lookat_pos);
|
||||
mLookat.calc(this, model->getBaseTRMtx(), lookat_angle, snap, angle_delta, false);
|
||||
}
|
||||
|
||||
/* 80A0B94C-80A0B954 00404C 0008+00 1/0 0/0 0/0 .text drawDbgInfo__12daNpcImpal_cFv */
|
||||
BOOL daNpcImpal_c::drawDbgInfo() {
|
||||
return FALSE;
|
||||
|
||||
+94
-46
@@ -1,13 +1,73 @@
|
||||
/**
|
||||
* @file d_a_npc_lud.cpp
|
||||
*
|
||||
*/
|
||||
*/
|
||||
|
||||
#include "d/dolzel_rel.h" // IWYU pragma: keep
|
||||
|
||||
#include "d/actor/d_a_npc_len.h"
|
||||
#include "d/actor/d_a_npc_lud.h"
|
||||
|
||||
/* 80A6FD7C-80A6FE0C 000000 0090+00 10/10 0/0 0/0 .rodata m__17daNpc_Lud_Param_c */
|
||||
const daNpc_Lud_HIOParam daNpc_Lud_Param_c::m = {
|
||||
160.0f, // attention_offset
|
||||
-3.0f, // gravity
|
||||
1.0f, // scale
|
||||
400.0f, // real_shadow_size
|
||||
255.0f, // weight
|
||||
150.0f, // height
|
||||
35.0f, // knee_length
|
||||
30.0f, // width
|
||||
0.0f, // body_angleX_max
|
||||
0.0f, // body_angleX_min
|
||||
30.0f, // body_angleY_max
|
||||
-30.0f, // body_angleY_min
|
||||
30.0f, // head_angleX_max
|
||||
-10.0f, // head_angleX_min
|
||||
45.0f, // head_angleY_max
|
||||
-45.0f, // head_angleY_min
|
||||
0.6f, // neck_rotation_ratio
|
||||
12.0f, // morf_frame
|
||||
3, // talk_distance
|
||||
6, // talk_angle
|
||||
5, // attention_distance
|
||||
6, // attention_angle
|
||||
110.0f, // fov
|
||||
0.0f, // search_distance
|
||||
0.0f, // search_height
|
||||
0.0f, // search_depth
|
||||
60, // attention_time
|
||||
8, // damage_time
|
||||
0, // face_expression
|
||||
0, // motion
|
||||
0, // look_mode
|
||||
0, // debug_mode_ON
|
||||
0, // debug_info_ON
|
||||
4.0f, // expression_morf_frame
|
||||
-15.0f, // box_min_x
|
||||
0.0f, // box_min_y
|
||||
-15.0f, // box_min_z
|
||||
15.0f, // box_max_x
|
||||
40.0f, // box_max_y
|
||||
15.0f, // box_max_z
|
||||
90.0f, // box_offset
|
||||
1.0f, // play_speed
|
||||
};
|
||||
|
||||
#if DEBUG
|
||||
daNpc_Lud_HIO_c::daNpc_Lud_HIO_c() {
|
||||
m = daNpc_Lud_Param_c::m;
|
||||
}
|
||||
|
||||
void daNpc_Lud_HIO_c::listenPropertyEvent(const JORPropertyEvent* event) {
|
||||
// TODO
|
||||
}
|
||||
|
||||
void daNpc_Lud_HIO_c::genMessage(JORMContext* ctext) {
|
||||
// TODO
|
||||
}
|
||||
#endif
|
||||
|
||||
enum Type {
|
||||
/* 0x0 */ TYPE_0,
|
||||
/* 0x1 */ TYPE_1,
|
||||
@@ -200,14 +260,6 @@ daNpc_Lud_c::~daNpc_Lud_c() {
|
||||
deleteRes(l_loadResPtrnList[mType], (const char**)l_resNameList);
|
||||
}
|
||||
|
||||
/* 80A6FD7C-80A6FE0C 000000 0090+00 10/10 0/0 0/0 .rodata m__17daNpc_Lud_Param_c */
|
||||
const daNpc_Lud_HIOParam daNpc_Lud_Param_c::m = {
|
||||
160.0f, -3.0f, 1.0f, 400.0f, 255.0f, 150.0f, 35.0f, 30.0f, 0.0f, 0.0f, 30.0f,
|
||||
-30.0f, 30.0f, -10.0f, 45.0f, -45.0f, 0.6f, 12.0f, 3, 6, 5, 6,
|
||||
110.0f, 0.0f, 0.0f, 0.0f, 60, 8, 0, 0, 0, 0, 0,
|
||||
4.0f, -15.0f, 0.0f, -15.0f, 15.0f, 40.0f, 15.0f, 90.0f, 1.0f,
|
||||
};
|
||||
|
||||
/* 80A6ACF4-80A6AFA8 000234 02B4+00 1/1 0/0 0/0 .text create__11daNpc_Lud_cFv */
|
||||
int daNpc_Lud_c::create() {
|
||||
static int const heapSize[9] = {
|
||||
@@ -239,7 +291,7 @@ int daNpc_Lud_c::create() {
|
||||
reset();
|
||||
mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir,
|
||||
fopAcM_GetSpeed_p(this), fopAcM_GetAngle_p(this), fopAcM_GetShapeAngle_p(this));
|
||||
mCcStts.Init(daNpc_Lud_Param_c::m.common.weight, 0, this);
|
||||
mCcStts.Init(mpHIO->m.common.weight, 0, this);
|
||||
mCyl.Set(mCcDCyl);
|
||||
mCyl.SetStts(&mCcStts);
|
||||
mCyl.SetTgHitCallback(tgHitCallBack);
|
||||
@@ -485,10 +537,10 @@ void daNpc_Lud_c::setParam() {
|
||||
selectAction();
|
||||
srchActors();
|
||||
|
||||
s16 talk_distance = daNpc_Lud_Param_c::m.common.talk_distance;
|
||||
s16 talk_angle = daNpc_Lud_Param_c::m.common.talk_angle;
|
||||
s16 attention_distance = daNpc_Lud_Param_c::m.common.attention_distance;
|
||||
s16 attention_angle = daNpc_Lud_Param_c::m.common.attention_angle;
|
||||
s16 talk_distance = mpHIO->m.common.talk_distance;
|
||||
s16 talk_angle = mpHIO->m.common.talk_angle;
|
||||
s16 attention_distance = mpHIO->m.common.attention_distance;
|
||||
s16 attention_angle = mpHIO->m.common.attention_angle;
|
||||
|
||||
switch (mType) {
|
||||
case TYPE_0:
|
||||
@@ -518,24 +570,23 @@ void daNpc_Lud_c::setParam() {
|
||||
daNpcT_getDistTableIdx(talk_distance, talk_angle);
|
||||
attention_info.flags = fopAc_AttnFlag_SPEAK_e | fopAc_AttnFlag_TALK_e;
|
||||
|
||||
scale.set(daNpc_Lud_Param_c::m.common.scale, daNpc_Lud_Param_c::m.common.scale,
|
||||
daNpc_Lud_Param_c::m.common.scale);
|
||||
mCcStts.SetWeight(daNpc_Lud_Param_c::m.common.weight);
|
||||
mCylH = daNpc_Lud_Param_c::m.common.height;
|
||||
mWallR = daNpc_Lud_Param_c::m.common.width;
|
||||
scale.set(mpHIO->m.common.scale, mpHIO->m.common.scale, mpHIO->m.common.scale);
|
||||
mCcStts.SetWeight(mpHIO->m.common.weight);
|
||||
mCylH = mpHIO->m.common.height;
|
||||
mWallR = mpHIO->m.common.width;
|
||||
if (mTwilight) {
|
||||
mCylH = 120.0f;
|
||||
}
|
||||
mAttnFovY = daNpc_Lud_Param_c::m.common.fov;
|
||||
mAttnFovY = mpHIO->m.common.fov;
|
||||
mAcchCir.SetWallR(mWallR);
|
||||
mAcchCir.SetWallH(daNpc_Lud_Param_c::m.common.knee_length);
|
||||
mRealShadowSize = daNpc_Lud_Param_c::m.common.real_shadow_size;
|
||||
mAcchCir.SetWallH(mpHIO->m.common.knee_length);
|
||||
mRealShadowSize = mpHIO->m.common.real_shadow_size;
|
||||
if (mType == TYPE_4 || mType == TYPE_5 || mType == TYPE_6) {
|
||||
mRealShadowSize = 500.0f;
|
||||
}
|
||||
mExpressionMorfFrame = daNpc_Lud_Param_c::m.common.expression_morf_frame;
|
||||
mMorfFrames = daNpc_Lud_Param_c::m.common.morf_frame;
|
||||
gravity = daNpc_Lud_Param_c::m.common.gravity;
|
||||
mExpressionMorfFrame = mpHIO->m.common.expression_morf_frame;
|
||||
mMorfFrames = mpHIO->m.common.morf_frame;
|
||||
gravity = mpHIO->m.common.gravity;
|
||||
}
|
||||
|
||||
/* 80A6BD44-80A6BE6C 001284 0128+00 1/0 0/0 0/0 .text checkChangeEvt__11daNpc_Lud_cFv */
|
||||
@@ -680,7 +731,7 @@ void daNpc_Lud_c::beforeMove() {
|
||||
}
|
||||
|
||||
/* 80A70B64-80A70B68 000014 0004+00 1/1 0/0 0/0 .bss l_HIO */
|
||||
static daNpc_Lud_Param_c l_HIO;
|
||||
NPC_LUD_HIO_CLASS l_HIO;
|
||||
|
||||
/* 80A6C3A8-80A6C8EC 0018E8 0544+00 1/0 0/0 0/0 .text setAttnPos__11daNpc_Lud_cFv */
|
||||
void daNpc_Lud_c::setAttnPos() {
|
||||
@@ -697,23 +748,23 @@ void daNpc_Lud_c::setAttnPos() {
|
||||
|
||||
if (mType == TYPE_4 || mType == TYPE_5 || mType == TYPE_6) {
|
||||
mJntAnm.setParam(this, mpMorf[0]->getModel(), &cStack_70, getBackboneJointNo(),
|
||||
getNeckJointNo(), getHeadJointNo(), l_HIO.m.common.body_angleX_min,
|
||||
l_HIO.m.common.body_angleX_max, 0.0f, 0.0f, l_HIO.m.common.head_angleX_min,
|
||||
l_HIO.m.common.head_angleX_max, l_HIO.m.common.head_angleY_min,
|
||||
l_HIO.m.common.head_angleY_max, l_HIO.m.common.neck_rotation_ratio, dVar8,
|
||||
NULL);
|
||||
getNeckJointNo(), getHeadJointNo(), mpHIO->m.common.body_angleX_min,
|
||||
mpHIO->m.common.body_angleX_max, 0.0f, 0.0f,
|
||||
mpHIO->m.common.head_angleX_min, mpHIO->m.common.head_angleX_max,
|
||||
mpHIO->m.common.head_angleY_min, mpHIO->m.common.head_angleY_max,
|
||||
mpHIO->m.common.neck_rotation_ratio, dVar8, NULL);
|
||||
} else {
|
||||
mJntAnm.setParam(this, mpMorf[0]->getModel(), &cStack_70, getBackboneJointNo(),
|
||||
getNeckJointNo(), getHeadJointNo(), l_HIO.m.common.body_angleX_min,
|
||||
l_HIO.m.common.body_angleX_max, l_HIO.m.common.body_angleY_min,
|
||||
l_HIO.m.common.body_angleY_max, l_HIO.m.common.head_angleX_min,
|
||||
l_HIO.m.common.head_angleX_max, l_HIO.m.common.head_angleY_min,
|
||||
l_HIO.m.common.head_angleY_max, l_HIO.m.common.neck_rotation_ratio, dVar8,
|
||||
NULL);
|
||||
getNeckJointNo(), getHeadJointNo(), mpHIO->m.common.body_angleX_min,
|
||||
mpHIO->m.common.body_angleX_max, mpHIO->m.common.body_angleY_min,
|
||||
mpHIO->m.common.body_angleY_max, mpHIO->m.common.head_angleX_min,
|
||||
mpHIO->m.common.head_angleX_max, mpHIO->m.common.head_angleY_min,
|
||||
mpHIO->m.common.head_angleY_max, mpHIO->m.common.neck_rotation_ratio,
|
||||
dVar8, NULL);
|
||||
}
|
||||
|
||||
mJntAnm.calcJntRad(0.2f, 1.0f, dVar8);
|
||||
mpMorf[0]->setPlaySpeed(l_HIO.m.play_speed);
|
||||
mpMorf[0]->setPlaySpeed(mpHIO->m.play_speed);
|
||||
setMtx();
|
||||
|
||||
if (mpBowlMorf != NULL) {
|
||||
@@ -746,7 +797,7 @@ void daNpc_Lud_c::setAttnPos() {
|
||||
mDoMtx_stack_c::multVec(&cStack_70, &attention_info.position);
|
||||
} else {
|
||||
cStack_70.set(0.0f, 0.0f, 0.0f);
|
||||
cStack_70.y = l_HIO.m.common.attention_offset;
|
||||
cStack_70.y = mpHIO->m.common.attention_offset;
|
||||
mDoMtx_stack_c::YrotS(mCurAngle.y);
|
||||
mDoMtx_stack_c::multVec(&cStack_70, &cStack_70);
|
||||
attention_info.position = current.pos + cStack_70;
|
||||
@@ -1309,13 +1360,10 @@ int daNpc_Lud_c::wait(void* param_0) {
|
||||
fopAc_ac_c* actor_p = (daNpc_Len_c*)mActorMngr[2].getActorP();
|
||||
if (actor_p != NULL &&
|
||||
((daNpc_Len_c*)actor_p)
|
||||
->checkStartDemo13StbEvt(this, daNpc_Lud_Param_c::m.common.box_min_x,
|
||||
daNpc_Lud_Param_c::m.common.box_min_y,
|
||||
daNpc_Lud_Param_c::m.common.box_min_z,
|
||||
daNpc_Lud_Param_c::m.common.box_max_x,
|
||||
daNpc_Lud_Param_c::m.common.box_max_y,
|
||||
daNpc_Lud_Param_c::m.common.box_max_z,
|
||||
daNpc_Lud_Param_c::m.common.box_offset))
|
||||
->checkStartDemo13StbEvt(this, mpHIO->m.common.box_min_x,
|
||||
mpHIO->m.common.box_min_y, mpHIO->m.common.box_min_z,
|
||||
mpHIO->m.common.box_max_x, mpHIO->m.common.box_max_y,
|
||||
mpHIO->m.common.box_max_z, mpHIO->m.common.box_offset))
|
||||
{
|
||||
mEvtNo = 2;
|
||||
field_0xfd5 = 1;
|
||||
|
||||
+108
-46
@@ -11,6 +11,80 @@
|
||||
#include "d/actor/d_a_npc_moi.h"
|
||||
#include "d/actor/d_a_npc_uri.h"
|
||||
|
||||
/* 80A7AEF0-80A7AFAC 000000 00BC+00 19/19 0/0 0/0 .rodata m__17daNpc_Moi_Param_c */
|
||||
const daNpc_Moi_HIOParam daNpc_Moi_Param_c::m = {
|
||||
200.0f, // attention_offset
|
||||
-3.0f, // gravity
|
||||
1.0f, // scale
|
||||
400.0f, // real_shadow_size
|
||||
255.0f, // weight
|
||||
180.0f, // height
|
||||
35.0f, // knee_length
|
||||
30.0f, // width
|
||||
0.0f, // body_angleX_max
|
||||
0.0f, // body_angleX_min
|
||||
10.0f, // body_angleY_max
|
||||
-10.0f, // body_angleY_min
|
||||
30.0f, // head_angleX_max
|
||||
-10.0f, // head_angleX_min
|
||||
45.0f, // head_angleY_max
|
||||
-45.0f, // head_angleY_min
|
||||
0.6f, // neck_rotation_ratio
|
||||
12.0f, // morf_frame
|
||||
3, // talk_distance
|
||||
6, // talk_angle
|
||||
5, // attention_distance
|
||||
6, // attention_angle
|
||||
110.0f, // fov
|
||||
0.0f, // search_distance
|
||||
0.0f, // search_height
|
||||
0.0f, // search_depth
|
||||
60, // attention_time
|
||||
8, // damage_time
|
||||
0, // face_expression
|
||||
0, // motion
|
||||
0, // look_mode
|
||||
0, // debug_mode_ON
|
||||
0, // debug_info_ON
|
||||
4.0f, // expression_morf_frame
|
||||
0.0f, // box_min_x
|
||||
0.0f, // box_min_y
|
||||
0.0f, // box_min_z
|
||||
0.0f, // box_max_x
|
||||
0.0f, // box_max_y
|
||||
0.0f, // box_max_z
|
||||
0.0f, // box_offset
|
||||
350.0f, // field_0x8c
|
||||
300.0f, // field_0x90
|
||||
-100.0f, // field_0x94
|
||||
90, // field_0x98
|
||||
200, // field_0x9a
|
||||
235, // field_0x9c
|
||||
125, // field_0x9e
|
||||
0, // field_0xa0
|
||||
0, // field_0xa2
|
||||
1.0f, // field_0xa4
|
||||
1000.0f, // field_0xa8
|
||||
300.0f, // field_0xac
|
||||
-300.0f, // field_0xb0
|
||||
30.0f, // field_0xb4
|
||||
60.0f, // field_0xb8
|
||||
};
|
||||
|
||||
#if DEBUG
|
||||
daNpc_Moi_HIO_c::daNpc_Moi_HIO_c() {
|
||||
m = daNpc_Moi_Param_c::m;
|
||||
}
|
||||
|
||||
void daNpc_Moi_HIO_c::listenPropertyEvent(const JORPropertyEvent* event) {
|
||||
// TODO
|
||||
}
|
||||
|
||||
void daNpc_Moi_HIO_c::genMessage(JORMContext* ctext) {
|
||||
// TODO
|
||||
}
|
||||
#endif
|
||||
|
||||
/* 80A7B17C-80A7B1BC 000020 0040+00 1/1 0/0 0/0 .data l_bmdData */
|
||||
static int l_bmdData[8][2] = {
|
||||
{11, 1}, {29, 3}, {30, 3}, {31, 3}, {13, 1}, {33, 3}, {12, 1}, {32, 3},
|
||||
@@ -193,17 +267,6 @@ daNpc_Moi_c::~daNpc_Moi_c() {
|
||||
deleteRes(l_loadResPtrnList[mType], (char const**)l_resNameList);
|
||||
}
|
||||
|
||||
/* 80A7AEF0-80A7AFAC 000000 00BC+00 19/19 0/0 0/0 .rodata m__17daNpc_Moi_Param_c */
|
||||
const daNpc_Moi_HIOParam daNpc_Moi_Param_c::m = {
|
||||
200.0f, -3.0f, 1.0f, 400.0f, 255.0f, 180.0f, 35.0f, 30.0f, 0.0f, 0.0f, 10.0f,
|
||||
-10.0f, 30.0f, -10.0f, 45.0f, -45.0f, 0.6f, 12.0f, 3, 6, 5, 6,
|
||||
110.0f, 0.0f, 0.0f, 0.0f, 60, 8, 0, 0, 0, 0, 0,
|
||||
4.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0x43, 0xAF, 0x00,
|
||||
0x00, 0x43, 0x96, 0x00, 0x00, 0xC2, 0xC8, 0x00, 0x00, 90, 200,
|
||||
235, 125, 0, 0, 1.0f, 0x44, 0x7A, 0x00, 0x00, 0x43, 0x96,
|
||||
0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 30.0f, 60.0f,
|
||||
};
|
||||
|
||||
/* 80A74150-80A74474 0002F0 0324+00 1/1 0/0 0/0 .text create__11daNpc_Moi_cFv */
|
||||
int daNpc_Moi_c::create() {
|
||||
static const int heapSize[] = {0, 0x5C70, 0x7CB0, 0x7CA0, 0x5C70, 0x5C80, 0};
|
||||
@@ -234,7 +297,7 @@ int daNpc_Moi_c::create() {
|
||||
reset();
|
||||
mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir,
|
||||
fopAcM_GetSpeed_p(this), fopAcM_GetAngle_p(this), fopAcM_GetShapeAngle_p(this));
|
||||
mCcStts.Init(daNpc_Moi_Param_c::m.common.weight, 0, this);
|
||||
mCcStts.Init(mpHIO->m.common.weight, 0, this);
|
||||
for (int i = 0; i < 4; i++) {
|
||||
mCyl[i].Set(mCcDCyl);
|
||||
mCyl[i].SetStts(&mCcStts);
|
||||
@@ -358,11 +421,11 @@ int daNpc_Moi_c::Draw() {
|
||||
actor->field_0x634 = field_0x1628;
|
||||
actor->current.pos = field_0x1628;
|
||||
GXColor color;
|
||||
color.r = daNpc_Moi_Param_c::m.field_0x9c;
|
||||
color.g = daNpc_Moi_Param_c::m.field_0x9e;
|
||||
color.b = daNpc_Moi_Param_c::m.field_0xa0;
|
||||
color.r = mpHIO->m.field_0x9c;
|
||||
color.g = mpHIO->m.field_0x9e;
|
||||
color.b = mpHIO->m.field_0xa0;
|
||||
color.a = (u8)actor->field_0x5c0;
|
||||
dKy_BossLight_set(&field_0x1628, &color, daNpc_Moi_Param_c::m.field_0xa4, 1);
|
||||
dKy_BossLight_set(&field_0x1628, &color, mpHIO->m.field_0xa4, 1);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -535,10 +598,10 @@ void daNpc_Moi_c::setParam() {
|
||||
srchActors();
|
||||
|
||||
int uVar5 = (fopAc_AttnFlag_SPEAK_e | fopAc_AttnFlag_TALK_e);
|
||||
s16 talk_distance = daNpc_Moi_Param_c::m.common.talk_distance;
|
||||
s16 talk_angle = daNpc_Moi_Param_c::m.common.talk_angle;
|
||||
s16 attention_distance = daNpc_Moi_Param_c::m.common.attention_distance;
|
||||
s16 attention_angle = daNpc_Moi_Param_c::m.common.attention_angle;
|
||||
s16 talk_distance = mpHIO->m.common.talk_distance;
|
||||
s16 talk_angle = mpHIO->m.common.talk_angle;
|
||||
s16 attention_distance = mpHIO->m.common.attention_distance;
|
||||
s16 attention_angle = mpHIO->m.common.attention_angle;
|
||||
|
||||
if (mType == TYPE_2) {
|
||||
if (field_0x166d) {
|
||||
@@ -584,18 +647,17 @@ void daNpc_Moi_c::setParam() {
|
||||
attention_info.flags = uVar5;
|
||||
}
|
||||
|
||||
scale.set(daNpc_Moi_Param_c::m.common.scale, daNpc_Moi_Param_c::m.common.scale,
|
||||
daNpc_Moi_Param_c::m.common.scale);
|
||||
mCcStts.SetWeight(daNpc_Moi_Param_c::m.common.weight);
|
||||
mCylH = daNpc_Moi_Param_c::m.common.height;
|
||||
mWallR = daNpc_Moi_Param_c::m.common.width;
|
||||
mAttnFovY = daNpc_Moi_Param_c::m.common.fov;
|
||||
scale.set(mpHIO->m.common.scale, mpHIO->m.common.scale, mpHIO->m.common.scale);
|
||||
mCcStts.SetWeight(mpHIO->m.common.weight);
|
||||
mCylH = mpHIO->m.common.height;
|
||||
mWallR = mpHIO->m.common.width;
|
||||
mAttnFovY = mpHIO->m.common.fov;
|
||||
if (mType == TYPE_2) {
|
||||
mAttnFovY = 135.0f;
|
||||
}
|
||||
mAcchCir.SetWallR(mWallR);
|
||||
mAcchCir.SetWallH(daNpc_Moi_Param_c::m.common.knee_length);
|
||||
mRealShadowSize = daNpc_Moi_Param_c::m.common.real_shadow_size;
|
||||
mAcchCir.SetWallH(mpHIO->m.common.knee_length);
|
||||
mRealShadowSize = mpHIO->m.common.real_shadow_size;
|
||||
if (mType == TYPE_1) {
|
||||
mRealShadowSize = 600.0f;
|
||||
} else if (mType == TYPE_2) {
|
||||
@@ -604,9 +666,9 @@ void daNpc_Moi_c::setParam() {
|
||||
mRealShadowSize = 800.0f;
|
||||
}
|
||||
}
|
||||
gravity = daNpc_Moi_Param_c::m.common.gravity;
|
||||
mExpressionMorfFrame = daNpc_Moi_Param_c::m.common.expression_morf_frame;
|
||||
mMorfFrames = daNpc_Moi_Param_c::m.common.morf_frame;
|
||||
gravity = mpHIO->m.common.gravity;
|
||||
mExpressionMorfFrame = mpHIO->m.common.expression_morf_frame;
|
||||
mMorfFrames = mpHIO->m.common.morf_frame;
|
||||
if (mType == TYPE_3) {
|
||||
mAcch.SetGrndNone();
|
||||
mAcch.SetWallNone();
|
||||
@@ -762,7 +824,7 @@ void daNpc_Moi_c::beforeMove() {
|
||||
}
|
||||
|
||||
/* 80A7BFF4-80A7BFF8 000054 0004+00 1/1 0/0 0/0 .bss l_HIO */
|
||||
static daNpc_Moi_Param_c l_HIO;
|
||||
NPC_MOI_HIO_CLASS l_HIO;
|
||||
|
||||
/* 80A75AB8-80A75E68 001C58 03B0+00 1/0 0/0 0/0 .text setAttnPos__11daNpc_Moi_cFv */
|
||||
void daNpc_Moi_c::setAttnPos() {
|
||||
@@ -775,15 +837,15 @@ void daNpc_Moi_c::setAttnPos() {
|
||||
if (mType == 3) {
|
||||
mJntAnm.setParam(this, mpMorf[0]->getModel(), &acStack_3c, getBackboneJointNo(),
|
||||
getNeckJointNo(), getHeadJointNo(), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,
|
||||
0.0f, 0.0f, l_HIO.m.common.neck_rotation_ratio, dVar6, NULL);
|
||||
0.0f, 0.0f, mpHIO->m.common.neck_rotation_ratio, dVar6, NULL);
|
||||
} else {
|
||||
mJntAnm.setParam(this, mpMorf[0]->getModel(), &acStack_3c, getBackboneJointNo(),
|
||||
getNeckJointNo(), getHeadJointNo(), l_HIO.m.common.body_angleX_min,
|
||||
l_HIO.m.common.body_angleX_max, l_HIO.m.common.body_angleY_min,
|
||||
l_HIO.m.common.body_angleY_max, l_HIO.m.common.head_angleX_min,
|
||||
l_HIO.m.common.head_angleX_max, l_HIO.m.common.head_angleY_min,
|
||||
l_HIO.m.common.head_angleY_max, l_HIO.m.common.neck_rotation_ratio, dVar6,
|
||||
NULL);
|
||||
getNeckJointNo(), getHeadJointNo(), mpHIO->m.common.body_angleX_min,
|
||||
mpHIO->m.common.body_angleX_max, mpHIO->m.common.body_angleY_min,
|
||||
mpHIO->m.common.body_angleY_max, mpHIO->m.common.head_angleX_min,
|
||||
mpHIO->m.common.head_angleX_max, mpHIO->m.common.head_angleY_min,
|
||||
mpHIO->m.common.head_angleY_max, mpHIO->m.common.neck_rotation_ratio,
|
||||
dVar6, NULL);
|
||||
}
|
||||
mJntAnm.calcJntRad(0.2f, 1.0f, dVar6);
|
||||
|
||||
@@ -795,7 +857,7 @@ void daNpc_Moi_c::setAttnPos() {
|
||||
mJntAnm.setEyeAngleY(eyePos, mCurAngle.y + field_0xd8a.y, 1, 1.0f, 0);
|
||||
|
||||
acStack_3c.set(0.0f, 0.0f, 0.0f);
|
||||
acStack_3c.y = l_HIO.m.common.attention_offset;
|
||||
acStack_3c.y = mpHIO->m.common.attention_offset;
|
||||
|
||||
if (mType == TYPE_3) {
|
||||
acStack_3c.set(0.0f, 140.0f, -60.0f);
|
||||
@@ -1052,10 +1114,10 @@ void daNpc_Moi_c::setSSlash(int param_1) {
|
||||
mSound.startCreatureVoice(JAISoundID(Z2SE_MOI_V_WOUND_SWING), -1);
|
||||
}
|
||||
field_0x1664 = fopAcM_searchPlayerAngleY(this);
|
||||
s16 iVar3 = cM_deg2s(daNpc_Moi_Param_c::m.field_0xb8);
|
||||
daPy_getPlayerActorClass()->setThrowDamage(
|
||||
fopAcM_searchPlayerAngleY(this), daNpc_Moi_Param_c::m.field_0xb4 * cM_scos(iVar3),
|
||||
daNpc_Moi_Param_c::m.field_0xb4 * cM_ssin(iVar3), 1, 0, 0);
|
||||
s16 iVar3 = cM_deg2s(mpHIO->m.field_0xb8);
|
||||
daPy_getPlayerActorClass()->setThrowDamage(fopAcM_searchPlayerAngleY(this),
|
||||
mpHIO->m.field_0xb4 * cM_scos(iVar3),
|
||||
mpHIO->m.field_0xb4 * cM_ssin(iVar3), 1, 0, 0);
|
||||
if (param_1 != 0) {
|
||||
field_0x1660 = 1;
|
||||
field_0x165c = 202;
|
||||
@@ -1679,7 +1741,7 @@ int daNpc_Moi_c::cutFindWolf(int param_1) {
|
||||
|
||||
/* 80A789D8-80A78E0C 004B78 0434+00 2/0 0/0 0/0 .text wait__11daNpc_Moi_cFPv */
|
||||
int daNpc_Moi_c::wait(void* param_1) {
|
||||
int iVar4 = daNpc_Moi_Param_c::m.field_0x98;
|
||||
int iVar4 = mpHIO->m.field_0x98;
|
||||
|
||||
switch (mMode) {
|
||||
case MODE_ENTER:
|
||||
@@ -1793,7 +1855,7 @@ int daNpc_Moi_c::walk(void* param_1) {
|
||||
|
||||
/* 80A78FF4-80A794C0 005194 04CC+00 1/0 0/0 0/0 .text walkOnEggshell__11daNpc_Moi_cFPv */
|
||||
int daNpc_Moi_c::walkOnEggshell(void* param_1) {
|
||||
int sVar1 = daNpc_Moi_Param_c::m.field_0x9a;
|
||||
int sVar1 = mpHIO->m.field_0x9a;
|
||||
|
||||
switch (mMode) {
|
||||
case MODE_ENTER:
|
||||
|
||||
+103
-93
@@ -11,6 +11,54 @@
|
||||
#include "d/actor/d_a_tag_evtarea.h"
|
||||
#include "d/d_msg_object.h"
|
||||
|
||||
/* 80AE1FDC-80AE204C 000000 0070+00 19/19 0/0 0/0 .rodata m__17daNpcShad_Param_c */
|
||||
const daNpcShad_HIOParam daNpcShad_Param_c::m = {
|
||||
35.0f, // attention_offset
|
||||
-3.0f, // gravity
|
||||
1.0f, // scale
|
||||
400.0f, // real_shadow_size
|
||||
255.0f, // weight
|
||||
200.0f, // height
|
||||
35.0f, // knee_length
|
||||
30.0f, // width
|
||||
0.0f, // body_angleX_max
|
||||
0.0f, // body_angleX_min
|
||||
45.0f, // body_angleY_max
|
||||
-45.0f, // body_angleY_min
|
||||
30.0f, // head_angleX_max
|
||||
-10.0f, // head_angleX_min
|
||||
40.0f, // head_angleY_max
|
||||
-40.0f, // head_angleY_min
|
||||
0.6f, // neck_rotation_ratio
|
||||
12.0f, // morf_frame
|
||||
3, // talk_distance
|
||||
6, // talk_angle
|
||||
5, // attention_distance
|
||||
6, // attention_angle
|
||||
80.0f, // fov
|
||||
500.0f, // search_distance
|
||||
300.0f, // search_height
|
||||
-300.0f, // search_depth
|
||||
60, // attention_time
|
||||
8, // damage_time
|
||||
0, // face_expression
|
||||
0, // motion
|
||||
0, // look_mode
|
||||
false, // debug_mode_ON
|
||||
false, // debug_info_ON
|
||||
12.0f, // traveling_speed
|
||||
};
|
||||
|
||||
#if DEBUG
|
||||
daNpcShad_HIO_c::daNpcShad_HIO_c() {
|
||||
m = daNpcShad_Param_c::m;
|
||||
}
|
||||
|
||||
void daNpcShad_HIO_c::genMessage(JORMContext* ctext) {
|
||||
// TODO
|
||||
}
|
||||
#endif
|
||||
|
||||
enum Shad_RES_File_ID {
|
||||
/* BCK */
|
||||
/* 0x07 */ BCK_SHAD_F_DISCOURAGED = 0x7,
|
||||
@@ -272,7 +320,7 @@ static char* l_evtArcs[14] = {
|
||||
static char* l_myName = "Shad";
|
||||
|
||||
/* 80AE2CC4-80AE2CC8 000014 0004+00 1/1 0/0 0/0 .bss l_HIO */
|
||||
static daNpcShad_Param_c l_HIO;
|
||||
NPC_SHAD_HIO_CLASS l_HIO;
|
||||
|
||||
/* 80AE2A00-80AE2AA8 0003E0 00A8+00 0/2 0/0 0/0 .data mEvtSeqList__11daNpcShad_c */
|
||||
daNpcShad_c::EventFn daNpcShad_c::mEvtSeqList[14] = {
|
||||
@@ -292,44 +340,6 @@ daNpcShad_c::EventFn daNpcShad_c::mEvtSeqList[14] = {
|
||||
&daNpcShad_c::EvCut_WiretapEntrant,
|
||||
};
|
||||
|
||||
/* 80AE1FDC-80AE204C 000000 0070+00 19/19 0/0 0/0 .rodata m__17daNpcShad_Param_c */
|
||||
const daNpcShad_HIOParam daNpcShad_Param_c::m = {
|
||||
35.0f,
|
||||
-3.0f,
|
||||
1.0f,
|
||||
400.0f,
|
||||
255.0f,
|
||||
200.0f,
|
||||
35.0f,
|
||||
30.0f,
|
||||
0.0f,
|
||||
0.0f,
|
||||
45.0f,
|
||||
-45.0f,
|
||||
30.0f,
|
||||
-10.0f,
|
||||
40.0f,
|
||||
-40.0f,
|
||||
0.6f,
|
||||
12.0f,
|
||||
3,
|
||||
6,
|
||||
5,
|
||||
6,
|
||||
80.0f,
|
||||
500.0f,
|
||||
300.0f,
|
||||
-300.0f,
|
||||
60,
|
||||
8,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
false,
|
||||
false,
|
||||
12.0f,
|
||||
};
|
||||
|
||||
daNpcShad_c::daNpcShad_c() {
|
||||
// empty function
|
||||
}
|
||||
@@ -447,13 +457,13 @@ cPhs__Step daNpcShad_c::Create() {
|
||||
fopAcM_SetMtx(this, mpMorf->getModel()->getBaseTRMtx());
|
||||
fopAcM_setCullSizeBox(this, -100.0f, -50.0f, -100.0f, 100.0f, 220.0f, 100.0f);
|
||||
mSound.init(¤t.pos, &eyePos, 3, 1);
|
||||
mAcchCir.SetWall(daNpcShad_Param_c::m.common.width, daNpcShad_Param_c::m.common.knee_length);
|
||||
mAcchCir.SetWall(mpHIO->m.common.width, mpHIO->m.common.knee_length);
|
||||
mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir,
|
||||
fopAcM_GetSpeed_p(this), fopAcM_GetAngle_p(this), fopAcM_GetShapeAngle_p(this));
|
||||
mAcch.SetRoofNone();
|
||||
mAcch.SetWaterNone();
|
||||
mAcch.CrrPos(dComIfG_Bgsp());
|
||||
mCcStts.Init(daNpcShad_Param_c::m.common.weight, 0, this);
|
||||
mCcStts.Init(mpHIO->m.common.weight, 0, this);
|
||||
|
||||
field_0xcb0.Set(mCcDCyl);
|
||||
field_0xcb0.SetStts(&mCcStts);
|
||||
@@ -567,7 +577,7 @@ int daNpcShad_c::Draw() {
|
||||
}
|
||||
|
||||
mpMorf->getModel()->getModelData()->getMaterialNodePointer(1)->setMaterialAnm(mpMatAnm);
|
||||
draw(FALSE, FALSE, daNpcShad_Param_c::m.common.real_shadow_size, NULL, FALSE);
|
||||
draw(FALSE, FALSE, mpHIO->m.common.real_shadow_size, NULL, FALSE);
|
||||
|
||||
if (mBookKnifeModel != NULL) {
|
||||
g_env_light.setLightTevColorType_MAJI(mBookKnifeModel, &tevStr);
|
||||
@@ -606,7 +616,7 @@ int daNpcShad_c::ctrlJoint(J3DJoint* i_joint, J3DModel* i_model) {
|
||||
case JNT_BACKBONE1:
|
||||
case JNT_NECK:
|
||||
case JNT_HEAD:
|
||||
setLookatMtx(jntNo, lookatJoints, daNpcShad_Param_c::m.common.neck_rotation_ratio);
|
||||
setLookatMtx(jntNo, lookatJoints, mpHIO->m.common.neck_rotation_ratio);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -825,9 +835,9 @@ void daNpcShad_c::reset() {
|
||||
attention_info.distances[fopAc_attn_TALK_e] = attention_info.distances[fopAc_attn_LOCK_e];
|
||||
attention_info.distances[fopAc_attn_SPEAK_e] = getDistTableIdx(2, 3);
|
||||
} else {
|
||||
attention_info.distances[fopAc_attn_LOCK_e] = getDistTableIdx(daNpcShad_Param_c::m.common.attention_distance, daNpcShad_Param_c::m.common.attention_angle);
|
||||
attention_info.distances[fopAc_attn_LOCK_e] = getDistTableIdx(mpHIO->m.common.attention_distance, mpHIO->m.common.attention_angle);
|
||||
attention_info.distances[fopAc_attn_TALK_e] = attention_info.distances[fopAc_attn_LOCK_e];
|
||||
attention_info.distances[fopAc_attn_SPEAK_e] = getDistTableIdx(daNpcShad_Param_c::m.common.talk_distance, daNpcShad_Param_c::m.common.talk_angle);
|
||||
attention_info.distances[fopAc_attn_SPEAK_e] = getDistTableIdx(mpHIO->m.common.talk_distance, mpHIO->m.common.talk_angle);
|
||||
}
|
||||
|
||||
current.pos = home.pos;
|
||||
@@ -898,18 +908,18 @@ inline bool daNpcShad_c::isSneaking() {
|
||||
|
||||
/* 80AE0B58-80AE0ED0 008A38 0378+00 1/1 0/0 0/0 .text playExpression__11daNpcShad_cFv */
|
||||
inline void daNpcShad_c::playExpression() {
|
||||
daNpcF_anmPlayData dat0 = {ANM_F_TALK_A, daNpcShad_Param_c::m.common.morf_frame, 0};
|
||||
daNpcF_anmPlayData dat0 = {ANM_F_TALK_A, mpHIO->m.common.morf_frame, 0};
|
||||
daNpcF_anmPlayData* pDat0[1] = {&dat0};
|
||||
daNpcF_anmPlayData dat1a = {ANM_F_HAPPY, daNpcShad_Param_c::m.common.morf_frame, 1};
|
||||
daNpcF_anmPlayData dat1a = {ANM_F_HAPPY, mpHIO->m.common.morf_frame, 1};
|
||||
daNpcF_anmPlayData dat1b = {ANM_FH_HAPPY, 0.0f, 0};
|
||||
daNpcF_anmPlayData* pDat1[2] = {&dat1a, &dat1b};
|
||||
daNpcF_anmPlayData dat2a = {ANM_F_ANGER, daNpcShad_Param_c::m.common.morf_frame, 1};
|
||||
daNpcF_anmPlayData dat2a = {ANM_F_ANGER, mpHIO->m.common.morf_frame, 1};
|
||||
daNpcF_anmPlayData dat2b = {ANM_FH_ANGER, 0.0f, 0};
|
||||
daNpcF_anmPlayData* pDat2[2] = {&dat2a, &dat2b};
|
||||
daNpcF_anmPlayData dat3a = {ANM_F_DISCOURAGED, daNpcShad_Param_c::m.common.morf_frame, 1};
|
||||
daNpcF_anmPlayData dat3a = {ANM_F_DISCOURAGED, mpHIO->m.common.morf_frame, 1};
|
||||
daNpcF_anmPlayData dat3b = {ANM_FH_DISCOURAGED, 0.0f, 0};
|
||||
daNpcF_anmPlayData* pDat3[2] = {&dat3a, &dat3b};
|
||||
daNpcF_anmPlayData dat4 = {ANM_F_KOMON, daNpcShad_Param_c::m.common.morf_frame, 0};
|
||||
daNpcF_anmPlayData dat4 = {ANM_F_KOMON, mpHIO->m.common.morf_frame, 0};
|
||||
daNpcF_anmPlayData* pDat4[1] = {&dat4};
|
||||
daNpcF_anmPlayData dat5 = {ANM_F_SURPRISE, 0.0f, 0};
|
||||
daNpcF_anmPlayData* pDat5[1] = {&dat5};
|
||||
@@ -923,9 +933,9 @@ inline void daNpcShad_c::playExpression() {
|
||||
daNpcF_anmPlayData* pDat9[1] = {&dat9};
|
||||
daNpcF_anmPlayData dat10 = {ANM_FH_DISCOURAGED, 0.0f, 0};
|
||||
daNpcF_anmPlayData* pDat10[1] = {&dat10};
|
||||
daNpcF_anmPlayData dat11 = {ANM_F_CHANT, daNpcShad_Param_c::m.common.morf_frame, 0};
|
||||
daNpcF_anmPlayData dat11 = {ANM_F_CHANT, mpHIO->m.common.morf_frame, 0};
|
||||
daNpcF_anmPlayData* pDat11[1] = {&dat11};
|
||||
daNpcF_anmPlayData dat12 = {ANM_NONE, daNpcShad_Param_c::m.common.morf_frame, 0};
|
||||
daNpcF_anmPlayData dat12 = {ANM_NONE, mpHIO->m.common.morf_frame, 0};
|
||||
daNpcF_anmPlayData* pDat12[1] = {&dat12};
|
||||
daNpcF_anmPlayData** ppDat[13] = {
|
||||
pDat0, pDat1, pDat2, pDat3, pDat4,
|
||||
@@ -940,52 +950,52 @@ inline void daNpcShad_c::playExpression() {
|
||||
|
||||
/* 80AE04D8-80AE0B58 0083B8 0680+00 1/1 0/0 0/0 .text playMotion__11daNpcShad_cFv */
|
||||
inline void daNpcShad_c::playMotion() {
|
||||
daNpcF_anmPlayData dat0 = {ANM_WAIT_A, daNpcShad_Param_c::m.common.morf_frame, 0};
|
||||
daNpcF_anmPlayData dat0 = {ANM_WAIT_A, mpHIO->m.common.morf_frame, 0};
|
||||
daNpcF_anmPlayData* pDat0[1] = {&dat0};
|
||||
daNpcF_anmPlayData dat1a = {ANM_BOOK_TALK_A, daNpcShad_Param_c::m.common.morf_frame, 1};
|
||||
daNpcF_anmPlayData dat1a = {ANM_BOOK_TALK_A, mpHIO->m.common.morf_frame, 1};
|
||||
daNpcF_anmPlayData dat1b = {ANM_BOOK_WAIT, 0.0f, 0};
|
||||
daNpcF_anmPlayData* pDat1[2] = {&dat1a, &dat1b};
|
||||
daNpcF_anmPlayData dat2 = {ANM_BOOK_WAIT, daNpcShad_Param_c::m.common.morf_frame, 0};
|
||||
daNpcF_anmPlayData dat2 = {ANM_BOOK_WAIT, mpHIO->m.common.morf_frame, 0};
|
||||
daNpcF_anmPlayData* pDat2[1] = {&dat2};
|
||||
daNpcF_anmPlayData dat3a = {ANM_HI, daNpcShad_Param_c::m.common.morf_frame, 1};
|
||||
daNpcF_anmPlayData dat3a = {ANM_HI, mpHIO->m.common.morf_frame, 1};
|
||||
daNpcF_anmPlayData dat3b = {ANM_WAIT_A, 0.0f, 0};
|
||||
daNpcF_anmPlayData* pDat3[2] = {&dat3a, &dat3b};
|
||||
daNpcF_anmPlayData dat4 = {ANM_SIT_A, daNpcShad_Param_c::m.common.morf_frame, 0};
|
||||
daNpcF_anmPlayData dat4 = {ANM_SIT_A, mpHIO->m.common.morf_frame, 0};
|
||||
daNpcF_anmPlayData* pDat4[1] = {&dat4};
|
||||
daNpcF_anmPlayData dat5a = {ANM_LOOKBACK, daNpcShad_Param_c::m.common.morf_frame, 1};
|
||||
daNpcF_anmPlayData dat5a = {ANM_LOOKBACK, mpHIO->m.common.morf_frame, 1};
|
||||
daNpcF_anmPlayData dat5b = {ANM_WAIT_A, 0.0f, 0};
|
||||
daNpcF_anmPlayData* pDat5[2] = {&dat5a, &dat5b};
|
||||
daNpcF_anmPlayData dat6a = {ANM_DISCOURAGED, daNpcShad_Param_c::m.common.morf_frame, 1};
|
||||
daNpcF_anmPlayData dat6a = {ANM_DISCOURAGED, mpHIO->m.common.morf_frame, 1};
|
||||
daNpcF_anmPlayData dat6b = {ANM_DISCOURAGED_WAIT, 0.0f, 0};
|
||||
daNpcF_anmPlayData* pDat6[2] = {&dat6a, &dat6b};
|
||||
daNpcF_anmPlayData dat7 = {ANM_DISCOURAGED_WAIT, daNpcShad_Param_c::m.common.morf_frame, 0};
|
||||
daNpcF_anmPlayData dat7 = {ANM_DISCOURAGED_WAIT, mpHIO->m.common.morf_frame, 0};
|
||||
daNpcF_anmPlayData* pDat7[1] = {&dat7};
|
||||
daNpcF_anmPlayData dat8a = {ANM_TALK_A, daNpcShad_Param_c::m.common.morf_frame, 1};
|
||||
daNpcF_anmPlayData dat8b = {ANM_WAIT_A, daNpcShad_Param_c::m.common.morf_frame, 0};
|
||||
daNpcF_anmPlayData dat8a = {ANM_TALK_A, mpHIO->m.common.morf_frame, 1};
|
||||
daNpcF_anmPlayData dat8b = {ANM_WAIT_A, mpHIO->m.common.morf_frame, 0};
|
||||
daNpcF_anmPlayData* pDat8[2] = {&dat8a, &dat8b};
|
||||
daNpcF_anmPlayData dat9a = {ANM_SITTALK_A, daNpcShad_Param_c::m.common.morf_frame, 1};
|
||||
daNpcF_anmPlayData dat9b = {ANM_SIT_A, daNpcShad_Param_c::m.common.morf_frame, 0};
|
||||
daNpcF_anmPlayData dat9a = {ANM_SITTALK_A, mpHIO->m.common.morf_frame, 1};
|
||||
daNpcF_anmPlayData dat9b = {ANM_SIT_A, mpHIO->m.common.morf_frame, 0};
|
||||
daNpcF_anmPlayData* pDat9[2] = {&dat9a, &dat9b};
|
||||
daNpcF_anmPlayData dat10a = {ANM_LOOK, daNpcShad_Param_c::m.common.morf_frame, 1};
|
||||
daNpcF_anmPlayData dat10a = {ANM_LOOK, mpHIO->m.common.morf_frame, 1};
|
||||
daNpcF_anmPlayData dat10b = {ANM_LOOK_WAIT, 0.0f, 0};
|
||||
daNpcF_anmPlayData* pDat10[2] = {&dat10a, &dat10b};
|
||||
daNpcF_anmPlayData dat11a = {ANM_TAKE_KOMON, daNpcShad_Param_c::m.common.morf_frame, 1};
|
||||
daNpcF_anmPlayData dat11a = {ANM_TAKE_KOMON, mpHIO->m.common.morf_frame, 1};
|
||||
daNpcF_anmPlayData dat11b = {ANM_READ_KOMON, 0.0f, 0};
|
||||
daNpcF_anmPlayData* pDat11[2] = {&dat11a, &dat11b};
|
||||
daNpcF_anmPlayData dat12 = {ANM_READ_KOMON, daNpcShad_Param_c::m.common.morf_frame, 0};
|
||||
daNpcF_anmPlayData dat12 = {ANM_READ_KOMON, mpHIO->m.common.morf_frame, 0};
|
||||
daNpcF_anmPlayData* pDat12[1] = {&dat12};
|
||||
daNpcF_anmPlayData dat13 = {ANM_LOOK_WAIT, daNpcShad_Param_c::m.common.morf_frame, 0};
|
||||
daNpcF_anmPlayData dat13 = {ANM_LOOK_WAIT, mpHIO->m.common.morf_frame, 0};
|
||||
daNpcF_anmPlayData* pDat13[1] = {&dat13};
|
||||
daNpcF_anmPlayData dat14a = {ANM_SURPRISE, daNpcShad_Param_c::m.common.morf_frame, 1};
|
||||
daNpcF_anmPlayData dat14a = {ANM_SURPRISE, mpHIO->m.common.morf_frame, 1};
|
||||
daNpcF_anmPlayData dat14b = {ANM_SURPRISE_WAIT, 0.0f, 0};
|
||||
daNpcF_anmPlayData* pDat14[2] = {&dat14a, &dat14b};
|
||||
daNpcF_anmPlayData dat15 = {ANM_SURPRISE_WAIT, daNpcShad_Param_c::m.common.morf_frame, 0};
|
||||
daNpcF_anmPlayData dat15 = {ANM_SURPRISE_WAIT, mpHIO->m.common.morf_frame, 0};
|
||||
daNpcF_anmPlayData* pDat15[1] = {&dat15};
|
||||
daNpcF_anmPlayData dat16 = {ANM_LOOKUP, daNpcShad_Param_c::m.common.morf_frame, 0};
|
||||
daNpcF_anmPlayData dat16 = {ANM_LOOKUP, mpHIO->m.common.morf_frame, 0};
|
||||
daNpcF_anmPlayData* pDat16[1] = {&dat16};
|
||||
daNpcF_anmPlayData dat17 = {ANM_SAD_WALK, daNpcShad_Param_c::m.common.morf_frame, 0};
|
||||
daNpcF_anmPlayData dat17 = {ANM_SAD_WALK, mpHIO->m.common.morf_frame, 0};
|
||||
daNpcF_anmPlayData* pDat17[1] = {&dat17};
|
||||
daNpcF_anmPlayData dat18 = {ANM_CHANT, daNpcShad_Param_c::m.common.morf_frame, 0};
|
||||
daNpcF_anmPlayData dat18 = {ANM_CHANT, mpHIO->m.common.morf_frame, 0};
|
||||
daNpcF_anmPlayData* pDat18[1] = {&dat18};
|
||||
daNpcF_anmPlayData dat19 = {ANM_RUN_A, 4.0f, 0};
|
||||
daNpcF_anmPlayData* pDat19[1] = {&dat19};
|
||||
@@ -1013,27 +1023,27 @@ inline void daNpcShad_c::lookat() {
|
||||
daPy_py_c* player = NULL;
|
||||
J3DModel* model = mpMorf->getModel();
|
||||
int iVar1 = 0;
|
||||
f32 body_angleX_min = daNpcShad_Param_c::m.common.body_angleX_min;
|
||||
f32 body_angleX_max = daNpcShad_Param_c::m.common.body_angleX_max;
|
||||
f32 body_angleX_min = mpHIO->m.common.body_angleX_min;
|
||||
f32 body_angleX_max = mpHIO->m.common.body_angleX_max;
|
||||
|
||||
f32 body_angleY_min;
|
||||
if (mMode == 1) {
|
||||
body_angleY_min = -30.0f;
|
||||
} else {
|
||||
body_angleY_min = daNpcShad_Param_c::m.common.body_angleY_min;
|
||||
body_angleY_min = mpHIO->m.common.body_angleY_min;
|
||||
}
|
||||
|
||||
f32 body_angleY_max;
|
||||
if (mMode == 1) {
|
||||
body_angleY_max = 30.0f;
|
||||
} else {
|
||||
body_angleY_max = daNpcShad_Param_c::m.common.body_angleY_max;
|
||||
body_angleY_max = mpHIO->m.common.body_angleY_max;
|
||||
}
|
||||
|
||||
f32 head_angleX_min = daNpcShad_Param_c::m.common.head_angleX_min;
|
||||
f32 head_angleX_max = daNpcShad_Param_c::m.common.head_angleX_max;
|
||||
f32 head_angleY_min = daNpcShad_Param_c::m.common.head_angleY_min;
|
||||
f32 head_angleY_max = daNpcShad_Param_c::m.common.head_angleY_max;
|
||||
f32 head_angleX_min = mpHIO->m.common.head_angleX_min;
|
||||
f32 head_angleX_max = mpHIO->m.common.head_angleX_max;
|
||||
f32 head_angleY_min = mpHIO->m.common.head_angleY_min;
|
||||
f32 head_angleY_max = mpHIO->m.common.head_angleY_max;
|
||||
|
||||
s16 sVar1 = mCurAngle.y - mOldAngle.y;
|
||||
cXyz spf0[3] = {mLookatPos[0], mLookatPos[1], mLookatPos[2]};
|
||||
@@ -1082,7 +1092,7 @@ inline BOOL daNpcShad_c::chkFindPlayer() {
|
||||
if (mMode == 0) {
|
||||
fVar1 = 135.0f;
|
||||
} else {
|
||||
fVar1 = daNpcShad_Param_c::m.common.fov;
|
||||
fVar1 = mpHIO->m.common.fov;
|
||||
}
|
||||
|
||||
if (!chkActorInSight(daPy_getPlayerActorClass(), fVar1)) {
|
||||
@@ -1288,7 +1298,7 @@ bool daNpcShad_c::wait_type1(void* param_1) {
|
||||
setLookMode(LOOK_PLAYER, NULL, NULL);
|
||||
|
||||
if (mCurAngle.y == field_0xe1c) {
|
||||
if (fopAcM_seenPlayerAngleY(this) > cM_deg2s(daNpcShad_Param_c::m.common.body_angleY_max + daNpcShad_Param_c::m.common.head_angleY_max)) {
|
||||
if (fopAcM_seenPlayerAngleY(this) > cM_deg2s(mpHIO->m.common.body_angleY_max + mpHIO->m.common.head_angleY_max)) {
|
||||
field_0xe1c = fopAcM_searchPlayerAngleY(this);
|
||||
}
|
||||
} else if (step(field_0xe1c, MOT_STEPB, 30.0f)) {
|
||||
@@ -1316,7 +1326,7 @@ bool daNpcShad_c::wait_type1(void* param_1) {
|
||||
setLookMode(LOOK_PLAYER, NULL, NULL);
|
||||
|
||||
if (mCurAngle.y == field_0xe1c) {
|
||||
if (fopAcM_seenPlayerAngleY(this) > cM_deg2s(daNpcShad_Param_c::m.common.body_angleY_max + daNpcShad_Param_c::m.common.head_angleY_max)) {
|
||||
if (fopAcM_seenPlayerAngleY(this) > cM_deg2s(mpHIO->m.common.body_angleY_max + mpHIO->m.common.head_angleY_max)) {
|
||||
field_0xe1c = fopAcM_searchPlayerAngleY(this);
|
||||
}
|
||||
} else if (step(field_0xe1c, MOT_STEPB, 30.0f)) {
|
||||
@@ -1622,7 +1632,7 @@ bool daNpcShad_c::leave(void* param_1) {
|
||||
setExpression(EXPR_NONE, -1.0f);
|
||||
setMotion(MOT_RUN_A, -1.0f, FALSE);
|
||||
mTurnMode = 0;
|
||||
speedF = daNpcShad_Param_c::m.traveling_speed;
|
||||
speedF = mpHIO->m.traveling_speed;
|
||||
field_0xe1a = 2;
|
||||
break;
|
||||
|
||||
@@ -2582,14 +2592,14 @@ void daNpcShad_c::setParam() {
|
||||
attention_info.distances[fopAc_attn_TALK_e] = attention_info.distances[fopAc_attn_LOCK_e];
|
||||
attention_info.distances[fopAc_attn_SPEAK_e] = getDistTableIdx(2, 5);
|
||||
} else {
|
||||
attention_info.distances[fopAc_attn_LOCK_e] = getDistTableIdx(daNpcShad_Param_c::m.common.attention_distance, daNpcShad_Param_c::m.common.attention_angle);
|
||||
attention_info.distances[fopAc_attn_LOCK_e] = getDistTableIdx(mpHIO->m.common.attention_distance, mpHIO->m.common.attention_angle);
|
||||
attention_info.distances[fopAc_attn_TALK_e] = attention_info.distances[fopAc_attn_LOCK_e];
|
||||
attention_info.distances[fopAc_attn_SPEAK_e] = getDistTableIdx(daNpcShad_Param_c::m.common.talk_distance, daNpcShad_Param_c::m.common.talk_angle);
|
||||
attention_info.distances[fopAc_attn_SPEAK_e] = getDistTableIdx(mpHIO->m.common.talk_distance, mpHIO->m.common.talk_angle);
|
||||
}
|
||||
|
||||
mAcchCir.SetWallR(daNpcShad_Param_c::m.common.width);
|
||||
mAcchCir.SetWallH(daNpcShad_Param_c::m.common.knee_length);
|
||||
gravity = daNpcShad_Param_c::m.common.gravity;
|
||||
mAcchCir.SetWallR(mpHIO->m.common.width);
|
||||
mAcchCir.SetWallH(mpHIO->m.common.knee_length);
|
||||
gravity = mpHIO->m.common.gravity;
|
||||
}
|
||||
|
||||
/* 80AE0438-80AE04D8 008318 00A0+00 1/0 0/0 0/0 .text main__11daNpcShad_cFv */
|
||||
@@ -2658,20 +2668,20 @@ inline void daNpcShad_c::setAttnPos() {
|
||||
mEyeAngle.x = 0;
|
||||
}
|
||||
|
||||
attention_info.position.set(mHeadPos.x, mHeadPos.y + daNpcShad_Param_c::m.common.attention_offset, mHeadPos.z);
|
||||
attention_info.position.set(mHeadPos.x, mHeadPos.y + mpHIO->m.common.attention_offset, mHeadPos.z);
|
||||
cXyz sp58;
|
||||
mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(JNT_BACKBONE2));
|
||||
mDoMtx_stack_c::multVecZero(&sp58);
|
||||
sp58.y = current.pos.y;
|
||||
|
||||
field_0xcb0.SetC(sp58);
|
||||
field_0xcb0.SetH(daNpcShad_Param_c::m.common.height);
|
||||
field_0xcb0.SetH(mpHIO->m.common.height);
|
||||
|
||||
f32 fVar1;
|
||||
if (mMode == 0) {
|
||||
fVar1 = 45.0f;
|
||||
} else {
|
||||
fVar1 = daNpcShad_Param_c::m.common.width;
|
||||
fVar1 = mpHIO->m.common.width;
|
||||
}
|
||||
field_0xcb0.SetR(fVar1);
|
||||
|
||||
|
||||
+152
-160
@@ -1,18 +1,60 @@
|
||||
/**
|
||||
* @file d_a_npc_shoe.cpp
|
||||
*
|
||||
*/
|
||||
*/
|
||||
|
||||
#include "d/dolzel_rel.h" // IWYU pragma: keep
|
||||
|
||||
#include "d/actor/d_a_npc_shoe.h"
|
||||
#include "dol2asm.h"
|
||||
|
||||
//
|
||||
// Declarations:
|
||||
//
|
||||
/* 80AEA3B0-80AEA41C 000000 006C+00 11/11 0/0 0/0 .rodata m__17daNpcShoe_Param_c */
|
||||
const daNpcShoe_HIOParam daNpcShoe_Param_c::m = {
|
||||
55.0f, // attention_offset
|
||||
-3.0f, // gravity
|
||||
1.0f, // scale
|
||||
300.0f, // real_shadow_size
|
||||
255.0f, // weight
|
||||
140.0f, // height
|
||||
35.0f, // knee_length
|
||||
30.0f, // width
|
||||
0.0f, // body_angleX_max
|
||||
0.0f, // body_angleX_min
|
||||
10.0f, // body_angleY_max
|
||||
-10.0f, // body_angleY_min
|
||||
30.0f, // head_angleX_max
|
||||
-10.0f, // head_angleX_min
|
||||
45.0f, // head_angleY_max
|
||||
-45.0f, // head_angleY_min
|
||||
0.6f, // neck_rotation_ratio
|
||||
12.0f, // morf_frame
|
||||
2, // talk_distance
|
||||
2, // talk_angle
|
||||
3, // attention_distance
|
||||
2, // attention_angle
|
||||
60.0f, // fov
|
||||
500.0f, // search_distance
|
||||
300.0f, // search_height
|
||||
-300.0f, // search_depth
|
||||
60, // attention_time
|
||||
0, // damage_time
|
||||
0, // face_expression
|
||||
0, // motion
|
||||
0, // look_mode
|
||||
0, // debug_mode_ON
|
||||
0, // debug_info_ON
|
||||
};
|
||||
|
||||
static daNpcShoe_Param_c l_HIO;
|
||||
#if DEBUG
|
||||
daNpcShoe_HIO_c::daNpcShoe_HIO_c() {
|
||||
m = daNpcShoe_Param_c::m;
|
||||
}
|
||||
|
||||
void daNpcShoe_HIO_c::genMessage(JORMContext* ctext) {
|
||||
// TODO
|
||||
}
|
||||
#endif
|
||||
|
||||
NPC_SHOE_HIO_CLASS l_HIO;
|
||||
|
||||
void daNpcShoe_c::setLookMode(int i_lookMode) {
|
||||
if (mLookMode != i_lookMode) {
|
||||
@@ -22,7 +64,7 @@ void daNpcShoe_c::setLookMode(int i_lookMode) {
|
||||
|
||||
bool daNpcShoe_c::chkFindPlayer() {
|
||||
bool ret;
|
||||
if (!chkActorInSight(daPy_getPlayerActorClass(), daNpcShoe_Param_c::m.mAttnFovY)) {
|
||||
if (!chkActorInSight(daPy_getPlayerActorClass(), mpHIO->m.common.fov)) {
|
||||
mActorMngr[0].remove();
|
||||
ret = false;
|
||||
} else {
|
||||
@@ -42,16 +84,16 @@ bool daNpcShoe_c::chkFindPlayer() {
|
||||
|
||||
/* 80AEA558-80AEA594 000020 003C+00 1/1 0/0 0/0 .data l_bckGetParamList */
|
||||
static daNpc_GetParam2 l_bckGetParamList[5] = {
|
||||
{ 17, 2, 1}, // m_sitwait_a
|
||||
{ 13, 0, 1}, // m_sittalk_a
|
||||
{ 14, 0, 1}, // m_sittalk_a_b
|
||||
{ 5, 0, 0}, // shoe_talk_a
|
||||
{ 11, 2, 1} // m_sit_to_wolf_a
|
||||
{17, 2, 1}, // m_sitwait_a
|
||||
{13, 0, 1}, // m_sittalk_a
|
||||
{14, 0, 1}, // m_sittalk_a_b
|
||||
{5, 0, 0}, // shoe_talk_a
|
||||
{11, 2, 1} // m_sit_to_wolf_a
|
||||
};
|
||||
|
||||
/* 80AEA594-80AEA5A0 00005C 000C+00 0/0 0/0 0/0 .data l_btpGetParamList */
|
||||
static daNpc_GetParam2 l_btpGetParamList[1] = {
|
||||
{ 12, 2, 0 }, // shoe
|
||||
{12, 2, 0}, // shoe
|
||||
};
|
||||
|
||||
/* 80AEA5A0-80AEA5AC -00001 000C+00 5/6 0/0 0/0 .data l_arcNames */
|
||||
@@ -62,22 +104,16 @@ static char* l_arcNames[3] = {
|
||||
};
|
||||
|
||||
/* 80AEA5AC-80AEA5B0 000074 0004+00 0/1 0/0 0/0 .data l_evtNames */
|
||||
static char* l_evtNames[1] = {
|
||||
l_arcNames[0]
|
||||
};
|
||||
static char* l_evtNames[1] = {l_arcNames[0]};
|
||||
|
||||
/* 80AEA5B0-80AEA5B4 -00001 0004+00 0/2 0/0 0/0 .data l_myName */
|
||||
static char* l_myName = "Shoe";
|
||||
|
||||
/* 80AEA5B4-80AEA5C0 00007C 000C+00 1/2 0/0 0/0 .data mEvtSeqList__11daNpcShoe_c */
|
||||
daNpcShoe_c::EventFn daNpcShoe_c::mEvtSeqList[1] = {
|
||||
NULL
|
||||
};
|
||||
daNpcShoe_c::EventFn daNpcShoe_c::mEvtSeqList[1] = {NULL};
|
||||
|
||||
/* 80AE794C-80AE7AD0 0000EC 0184+00 1/1 0/0 0/0 .text __ct__11daNpcShoe_cFv */
|
||||
daNpcShoe_c::daNpcShoe_c() {
|
||||
// NONMATCHING
|
||||
}
|
||||
daNpcShoe_c::daNpcShoe_c() {}
|
||||
|
||||
/* 80AE7B60-80AE7D48 000300 01E8+00 1/0 0/0 0/0 .text __dt__11daNpcShoe_cFv */
|
||||
daNpcShoe_c::~daNpcShoe_c() {
|
||||
@@ -89,43 +125,6 @@ daNpcShoe_c::~daNpcShoe_c() {
|
||||
}
|
||||
}
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80AEA3B0-80AEA41C 000000 006C+00 11/11 0/0 0/0 .rodata m__17daNpcShoe_Param_c */
|
||||
daNpcShoe_Param_c::param const daNpcShoe_Param_c::m = {
|
||||
55.0f,
|
||||
-3.0f,
|
||||
1.0f,
|
||||
300.0f,
|
||||
255.0f,
|
||||
140.0f,
|
||||
35.0f,
|
||||
30.0f,
|
||||
0.0f,
|
||||
0.0f,
|
||||
10.0f,
|
||||
-10.0f,
|
||||
30.0f,
|
||||
-10.0f,
|
||||
45.0f,
|
||||
-45.0f,
|
||||
0.6f,
|
||||
12.0f,
|
||||
2,
|
||||
2,
|
||||
3,
|
||||
2,
|
||||
60.0f,
|
||||
500.0f,
|
||||
300.0f,
|
||||
-300.0f,
|
||||
60,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
false,
|
||||
};
|
||||
|
||||
/* 80AE7D48-80AE7FD8 0004E8 0290+00 1/1 0/0 0/0 .text Create__11daNpcShoe_cFv */
|
||||
cPhs__Step daNpcShoe_c::Create() {
|
||||
cPhs__Step step;
|
||||
@@ -154,13 +153,13 @@ cPhs__Step daNpcShoe_c::Create() {
|
||||
mCreature.init(¤t.pos, &eyePos, 3, 1);
|
||||
mCreature.setMdlType(7, false, (BOOL)(dKy_darkworld_check() != 0));
|
||||
|
||||
mAcchCir.SetWall(daNpcShoe_Param_c::m.mWallR, daNpcShoe_Param_c::m.mWallH);
|
||||
mAcchCir.SetWall(mpHIO->m.common.width, mpHIO->m.common.knee_length);
|
||||
|
||||
mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir,
|
||||
fopAcM_GetSpeed_p(this), fopAcM_GetAngle_p(this), fopAcM_GetShapeAngle_p(this));
|
||||
|
||||
mAcch.CrrPos(dComIfG_Bgsp());
|
||||
mCcStts.Init((int)daNpcShoe_Param_c::m.mCcWeight, 0, this);
|
||||
mCcStts.Init((int)mpHIO->m.common.weight, 0, this);
|
||||
mCcCyl.Set(mCcDCyl);
|
||||
|
||||
mCcCyl.SetStts(&mCcStts);
|
||||
@@ -169,7 +168,7 @@ cPhs__Step daNpcShoe_c::Create() {
|
||||
|
||||
mGndChk = mAcch.m_gnd;
|
||||
mGroundH = mAcch.m_ground_h;
|
||||
gravity = daNpcShoe_Param_c::m.mGravity;
|
||||
gravity = mpHIO->m.common.gravity;
|
||||
|
||||
setEnvTevColor();
|
||||
setRoomNo();
|
||||
@@ -186,8 +185,8 @@ BOOL daNpcShoe_c::CreateHeap() {
|
||||
|
||||
JUT_ASSERT(292, NULL != mdlData_p)
|
||||
|
||||
mpMorf = new mDoExt_McaMorfSO(mdlData_p, NULL, NULL, NULL, -1, 1.0f, 0, -1,
|
||||
&mCreature, 0x80000, 0x11020084);
|
||||
mpMorf = new mDoExt_McaMorfSO(mdlData_p, NULL, NULL, NULL, -1, 1.0f, 0, -1, &mCreature, 0x80000,
|
||||
0x11020084);
|
||||
|
||||
if (mpMorf != NULL && mpMorf->mpModel == NULL) {
|
||||
mpMorf->stopZelAnime();
|
||||
@@ -267,14 +266,15 @@ int daNpcShoe_c::Draw() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
draw(false, false, daNpcShoe_Param_c::m.mShadowDepth, NULL, false);
|
||||
draw(false, false, mpHIO->m.common.real_shadow_size, NULL, false);
|
||||
g_env_light.setLightTevColorType_MAJI(mpModel1->mModelData, &tevStr);
|
||||
mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(11));
|
||||
mpModel1->setBaseTRMtx(mDoMtx_stack_c::get());
|
||||
mDoExt_modelUpdateDL(mpModel1);
|
||||
g_env_light.setLightTevColorType_MAJI(mpModel2->mModelData, &tevStr);
|
||||
mDoExt_modelUpdateDL(mpModel2);
|
||||
dComIfGd_setSimpleShadow(¤t.pos, mAcch.GetGroundH(), 50.0f, mAcch.m_gnd, 0, 1.0f, dDlst_shadowControl_c::getSimpleTex());
|
||||
dComIfGd_setSimpleShadow(¤t.pos, mAcch.GetGroundH(), 50.0f, mAcch.m_gnd, 0, 1.0f,
|
||||
dDlst_shadowControl_c::getSimpleTex());
|
||||
|
||||
return 1;
|
||||
}
|
||||
@@ -295,11 +295,11 @@ bool daNpcShoe_c::ctrlJoint(J3DJoint* i_joint, J3DModel* i_model) {
|
||||
}
|
||||
|
||||
mDoMtx_stack_c::copy(i_model->getAnmMtx(joint_no));
|
||||
switch(joint_no) {
|
||||
switch (joint_no) {
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
setLookatMtx(joint_no, lookat_joints, daNpcShoe_Param_c::m.mNeckAngleScl);
|
||||
setLookatMtx(joint_no, lookat_joints, mpHIO->m.common.neck_rotation_ratio);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -342,7 +342,6 @@ void daNpcShoe_c::setMotion(int i_motion, f32 i_morf, BOOL i_restart) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* 80AE864C-80AE895C 000DEC 0310+00 1/1 0/0 0/0 .text reset__11daNpcShoe_cFv */
|
||||
void daNpcShoe_c::reset() {
|
||||
initialize();
|
||||
@@ -410,28 +409,23 @@ void daNpcShoe_c::reset() {
|
||||
mMotionMorfOverride = 0.0f;
|
||||
}
|
||||
|
||||
|
||||
void daNpcShoe_c::playMotion() {
|
||||
daNpcF_anmPlayData dat0 = {ANM_M_SITWAIT_A, daNpcShoe_Param_c::m.mMorfFrames, 0};
|
||||
daNpcF_anmPlayData dat0 = {ANM_M_SITWAIT_A, mpHIO->m.common.morf_frame, 0};
|
||||
daNpcF_anmPlayData* pDat0[1] = {&dat0};
|
||||
daNpcF_anmPlayData dat1a = {ANM_M_SITTALK_A, daNpcShoe_Param_c::m.mMorfFrames, 1};
|
||||
daNpcF_anmPlayData dat1b = {ANM_M_SITWAIT_A, daNpcShoe_Param_c::m.mMorfFrames, 0};
|
||||
daNpcF_anmPlayData dat1a = {ANM_M_SITTALK_A, mpHIO->m.common.morf_frame, 1};
|
||||
daNpcF_anmPlayData dat1b = {ANM_M_SITWAIT_A, mpHIO->m.common.morf_frame, 0};
|
||||
daNpcF_anmPlayData* pDat1[2] = {&dat1a, &dat1b};
|
||||
daNpcF_anmPlayData dat2a = {ANM_M_SITTALK_A_B, daNpcShoe_Param_c::m.mMorfFrames, 1};
|
||||
daNpcF_anmPlayData dat2b = {ANM_M_SITWAIT_A, daNpcShoe_Param_c::m.mMorfFrames, 0};
|
||||
daNpcF_anmPlayData dat2a = {ANM_M_SITTALK_A_B, mpHIO->m.common.morf_frame, 1};
|
||||
daNpcF_anmPlayData dat2b = {ANM_M_SITWAIT_A, mpHIO->m.common.morf_frame, 0};
|
||||
daNpcF_anmPlayData* pDat2[2] = {&dat2a, &dat2b};
|
||||
daNpcF_anmPlayData dat3a = {ANM_SHOE_TALK_A, daNpcShoe_Param_c::m.mMorfFrames, 1};
|
||||
daNpcF_anmPlayData dat3b = {ANM_M_SITWAIT_A, daNpcShoe_Param_c::m.mMorfFrames, 0};
|
||||
daNpcF_anmPlayData dat3a = {ANM_SHOE_TALK_A, mpHIO->m.common.morf_frame, 1};
|
||||
daNpcF_anmPlayData dat3b = {ANM_M_SITWAIT_A, mpHIO->m.common.morf_frame, 0};
|
||||
daNpcF_anmPlayData* pDat3[2] = {&dat3a, &dat3b};
|
||||
daNpcF_anmPlayData dat4 = {ANM_M_SIT_TO_WOLF_A, daNpcShoe_Param_c::m.mMorfFrames, 0};
|
||||
daNpcF_anmPlayData dat4 = {ANM_M_SIT_TO_WOLF_A, mpHIO->m.common.morf_frame, 0};
|
||||
daNpcF_anmPlayData* pDat4[1] = {&dat4};
|
||||
|
||||
daNpcF_anmPlayData** ppDat[5] = {
|
||||
pDat0,
|
||||
pDat1,
|
||||
pDat2,
|
||||
pDat3,
|
||||
pDat4,
|
||||
pDat0, pDat1, pDat2, pDat3, pDat4,
|
||||
};
|
||||
if (mMotion >= 0 && mMotion < 5) {
|
||||
field_0xe16 = mMotionPhase;
|
||||
@@ -439,6 +433,57 @@ void daNpcShoe_c::playMotion() {
|
||||
}
|
||||
}
|
||||
|
||||
/* 80AE9820-80AE9A00 001FC0 01E0+00 1/1 0/0 0/0 .text lookat__11daNpcShoe_cFv */
|
||||
void daNpcShoe_c::lookat() {
|
||||
fopAc_ac_c* actor = NULL;
|
||||
J3DModel* model = mpMorf->getModel();
|
||||
|
||||
BOOL snap = false;
|
||||
f32 body_angleX_min = mpHIO->m.common.body_angleX_min;
|
||||
f32 body_angleX_max = mpHIO->m.common.body_angleX_max;
|
||||
f32 body_angleY_min = mpHIO->m.common.body_angleY_min;
|
||||
f32 body_angleY_max = mpHIO->m.common.body_angleY_max;
|
||||
f32 head_angleX_min = mpHIO->m.common.head_angleX_min;
|
||||
f32 head_angleX_max = mpHIO->m.common.head_angleX_max;
|
||||
f32 head_angleY_min = mpHIO->m.common.head_angleY_min;
|
||||
f32 head_angleY_max = mpHIO->m.common.head_angleY_max;
|
||||
|
||||
s16 angle_delta = mCurAngle.y - mOldAngle.y;
|
||||
cXyz lookat_pos[3] = {mLookatPos[0], mLookatPos[1], mLookatPos[2]};
|
||||
csXyz* lookat_angle[3] = {&mLookatAngle[0], &mLookatAngle[1], &mLookatAngle[2]};
|
||||
|
||||
switch (mLookMode) {
|
||||
case LOOK_NONE:
|
||||
break;
|
||||
case LOOK_RESET:
|
||||
snap = true;
|
||||
break;
|
||||
case LOOK_PLAYER:
|
||||
case LOOK_PLAYER_TALK:
|
||||
actor = daPy_getPlayerActorClass();
|
||||
if (mLookMode != LOOK_PLAYER_TALK) {
|
||||
break;
|
||||
}
|
||||
head_angleY_min = -80.0f;
|
||||
head_angleY_max = 80.0f;
|
||||
break;
|
||||
}
|
||||
|
||||
if (actor != NULL) {
|
||||
mLookPos = actor->attention_info.position;
|
||||
if (mLookMode != LOOK_PLAYER && mLookMode != LOOK_PLAYER_TALK) {
|
||||
mLookPos.y -= 40.0f;
|
||||
}
|
||||
mLookat.setAttnPos(&mLookPos);
|
||||
} else {
|
||||
mLookat.setAttnPos(NULL);
|
||||
}
|
||||
|
||||
mLookat.setParam(body_angleX_min, body_angleX_max, body_angleY_min, body_angleY_max, 0.0f, 0.0f,
|
||||
0.0f, 0.0f, head_angleX_min, head_angleX_max, head_angleY_min, head_angleY_max,
|
||||
mCurAngle.y, lookat_pos);
|
||||
mLookat.calc(this, model->getBaseTRMtx(), lookat_angle, snap, angle_delta, false);
|
||||
}
|
||||
|
||||
/* 80AE895C-80AE8A04 0010FC 00A8+00 1/1 0/0 0/0 .text
|
||||
* setAction__11daNpcShoe_cFM11daNpcShoe_cFPCvPvPv_b */
|
||||
@@ -458,7 +503,6 @@ int daNpcShoe_c::setAction(bool (daNpcShoe_c::*i_actionFunc)(void*)) {
|
||||
|
||||
/* 80AE8A04-80AE8E24 0011A4 0420+00 3/0 0/0 0/0 .text wait__11daNpcShoe_cFPv */
|
||||
bool daNpcShoe_c::wait(void* param_0) {
|
||||
// NONMATCHING
|
||||
switch (mMode) {
|
||||
case 0:
|
||||
setMotion(MOT_SITWAIT_A, -1.0f, false);
|
||||
@@ -513,7 +557,6 @@ bool daNpcShoe_c::wait(void* param_0) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
/* 80AE8E24-80AE8ED4 0015C4 00B0+00 1/0 0/0 0/0 .text fear__11daNpcShoe_cFPv */
|
||||
bool daNpcShoe_c::fear(void* param_0) {
|
||||
switch (mMode) {
|
||||
@@ -600,7 +643,9 @@ bool daNpcShoe_c::demo(void* param_0) {
|
||||
}
|
||||
}
|
||||
|
||||
if (eventInfo.checkCommandDemoAccrpt() && mEventIdx != -1 && eventManager.endCheck(mEventIdx)) {
|
||||
if (eventInfo.checkCommandDemoAccrpt() && mEventIdx != -1 &&
|
||||
eventManager.endCheck(mEventIdx))
|
||||
{
|
||||
dComIfGp_event_reset();
|
||||
mOrderEvtNo = 0;
|
||||
mEventIdx = -1;
|
||||
@@ -644,16 +689,19 @@ static bool daNpcShoe_IsDelete(void* param_0) {
|
||||
|
||||
/* 80AE92E8-80AE93A0 001A88 00B8+00 1/0 0/0 0/0 .text setParam__11daNpcShoe_cFv */
|
||||
void daNpcShoe_c::setParam() {
|
||||
attention_info.distances[0] = getDistTableIdx(daNpcShoe_Param_c::m.mTalkDistIdx, daNpcShoe_Param_c::m.mTalkAngleIdx);
|
||||
attention_info.distances[0] =
|
||||
getDistTableIdx(mpHIO->m.common.attention_distance, mpHIO->m.common.attention_angle);
|
||||
attention_info.distances[1] = attention_info.distances[0];
|
||||
attention_info.distances[3] = getDistTableIdx(daNpcShoe_Param_c::m.mSpeakDistIdx, daNpcShoe_Param_c::m.mSpeakAngleIdx);
|
||||
attention_info.distances[3] =
|
||||
getDistTableIdx(mpHIO->m.common.talk_distance, mpHIO->m.common.talk_angle);
|
||||
|
||||
attention_info.flags = (field_0xe1b != 0) ? (fopAc_AttnFlag_SPEAK_e | fopAc_AttnFlag_TALK_e) : 0;
|
||||
attention_info.flags =
|
||||
(field_0xe1b != 0) ? (fopAc_AttnFlag_SPEAK_e | fopAc_AttnFlag_TALK_e) : 0;
|
||||
|
||||
scale.setall(daNpcShoe_Param_c::m.mScale);
|
||||
mAcchCir.SetWallR(daNpcShoe_Param_c::m.mWallR);
|
||||
mAcchCir.SetWallH(daNpcShoe_Param_c::m.mWallH);
|
||||
gravity = daNpcShoe_Param_c::m.mGravity;
|
||||
scale.setall(mpHIO->m.common.scale);
|
||||
mAcchCir.SetWallR(mpHIO->m.common.width);
|
||||
mAcchCir.SetWallH(mpHIO->m.common.knee_length);
|
||||
gravity = mpHIO->m.common.gravity;
|
||||
}
|
||||
|
||||
/* 80AE93A0-80AE9624 001B40 0284+00 1/0 0/0 0/0 .text main__11daNpcShoe_cFv */
|
||||
@@ -671,7 +719,6 @@ BOOL daNpcShoe_c::main() {
|
||||
|
||||
/* 80AE9624-80AE9820 001DC4 01FC+00 1/0 0/0 0/0 .text setAttnPos__11daNpcShoe_cFv */
|
||||
void daNpcShoe_c::setAttnPos() {
|
||||
// NONMATCHING
|
||||
if (mLookMode == LOOK_RESET) {
|
||||
for (int i = 0; i < 3; i++) {
|
||||
mLookatAngle[i].setall(0);
|
||||
@@ -681,85 +728,34 @@ void daNpcShoe_c::setAttnPos() {
|
||||
setMtx();
|
||||
lookat();
|
||||
|
||||
cXyz vec(10.0f,15.0f,0.0f);
|
||||
cXyz vec(10.0f, 15.0f, 0.0f);
|
||||
mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(3));
|
||||
mDoMtx_stack_c::multVecZero(&mHeadPos);
|
||||
mDoMtx_stack_c::multVec(&vec, &eyePos);
|
||||
vec.x = 0.0f;
|
||||
mDoMtx_stack_c::multVec(&vec, &vec);
|
||||
|
||||
mHeadAngle.x = cLib_targetAngleX(&mHeadPos,&vec);
|
||||
mHeadAngle.y = cLib_targetAngleY(&mHeadPos,&vec);
|
||||
mHeadAngle.x = cLib_targetAngleX(&mHeadPos, &vec);
|
||||
mHeadAngle.y = cLib_targetAngleY(&mHeadPos, &vec);
|
||||
|
||||
mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(3));
|
||||
mDoMtx_stack_c::multVecZero(&attention_info.position);
|
||||
attention_info.position.y += daNpcShoe_Param_c::m.mAttnOffsetY;
|
||||
attention_info.position.y += mpHIO->m.common.attention_offset;
|
||||
|
||||
cXyz cStack28;
|
||||
mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(1));
|
||||
mDoMtx_stack_c::multVecZero(&cStack28);
|
||||
cStack28.y = current.pos.y;
|
||||
mCcCyl.SetC(cStack28);
|
||||
mCcCyl.SetH(daNpcShoe_Param_c::m.mCylH);
|
||||
mCcCyl.SetR(daNpcShoe_Param_c::m.mWallR);
|
||||
mCcCyl.SetH(mpHIO->m.common.height);
|
||||
mCcCyl.SetR(mpHIO->m.common.width);
|
||||
dComIfG_Ccsp()->Set(&mCcCyl);
|
||||
}
|
||||
|
||||
/* 80AE9820-80AE9A00 001FC0 01E0+00 1/1 0/0 0/0 .text lookat__11daNpcShoe_cFv */
|
||||
void daNpcShoe_c::lookat() {
|
||||
// NONMATCHING
|
||||
fopAc_ac_c* actor = NULL;
|
||||
J3DModel* model = mpMorf->getModel();
|
||||
BOOL snap = false;
|
||||
f32 body_down_angle = daNpcShoe_Param_c::m.mBodyDownAngle;
|
||||
f32 body_up_angle = daNpcShoe_Param_c::m.mBodyUpAngle;
|
||||
f32 body_right_angle = daNpcShoe_Param_c::m.mBodyRightAngle;
|
||||
f32 body_left_angle = daNpcShoe_Param_c::m.mBodyLeftAngle;
|
||||
f32 head_down_angle = daNpcShoe_Param_c::m.mHeadDownAngle;
|
||||
f32 head_up_angle = daNpcShoe_Param_c::m.mHeadUpAngle;
|
||||
f32 head_right_angle = daNpcShoe_Param_c::m.mHeadRightAngle;
|
||||
f32 head_left_angle = daNpcShoe_Param_c::m.mHeadLeftAngle;
|
||||
s16 angle_delta = mCurAngle.y - mOldAngle.y;
|
||||
cXyz lookat_pos[3] = {mLookatPos[0], mLookatPos[1], mLookatPos[2]};
|
||||
csXyz* lookat_angle[3] = {&mLookatAngle[0], &mLookatAngle[1], &mLookatAngle[2]};
|
||||
|
||||
switch (mLookMode) {
|
||||
case LOOK_NONE:
|
||||
break;
|
||||
case LOOK_RESET:
|
||||
snap = true;
|
||||
break;
|
||||
case LOOK_PLAYER:
|
||||
case LOOK_PLAYER_TALK:
|
||||
actor = daPy_getPlayerActorClass();
|
||||
if (mLookMode != LOOK_PLAYER_TALK) {
|
||||
break;
|
||||
}
|
||||
head_right_angle = -80.0f;
|
||||
head_left_angle = 80.0f;
|
||||
break;
|
||||
}
|
||||
|
||||
if (actor != NULL) {
|
||||
mLookPos = actor->attention_info.position;
|
||||
if (mLookMode != LOOK_PLAYER && mLookMode != LOOK_PLAYER_TALK) {
|
||||
mLookPos.y -= 40.0f;
|
||||
}
|
||||
mLookat.setAttnPos(&mLookPos);
|
||||
} else {
|
||||
mLookat.setAttnPos(NULL);
|
||||
}
|
||||
|
||||
mLookat.setParam(body_down_angle, body_up_angle, body_right_angle, body_left_angle,
|
||||
0.0f, 0.0f, 0.0f, 0.0f,
|
||||
head_down_angle, head_up_angle, head_right_angle, head_left_angle,
|
||||
mCurAngle.y, lookat_pos);
|
||||
mLookat.calc(this, model->getBaseTRMtx(), lookat_angle, snap, angle_delta, false);
|
||||
}
|
||||
|
||||
/* 80AE9A00-80AE9AD0 0021A0 00D0+00 1/0 0/0 0/0 .text setMotionAnm__11daNpcShoe_cFif */
|
||||
void daNpcShoe_c::setMotionAnm(int i_idx, f32 i_morf) {
|
||||
J3DAnmTransformKey* morfAnm = getTrnsfrmKeyAnmP(l_arcNames[l_bckGetParamList[i_idx].arcIdx], l_bckGetParamList[i_idx].fileIdx);
|
||||
J3DAnmTransformKey* morfAnm = getTrnsfrmKeyAnmP(l_arcNames[l_bckGetParamList[i_idx].arcIdx],
|
||||
l_bckGetParamList[i_idx].fileIdx);
|
||||
|
||||
int morfAttr = l_bckGetParamList[i_idx].attr;
|
||||
|
||||
@@ -780,16 +776,12 @@ BOOL daNpcShoe_c::drawDbgInfo() {
|
||||
|
||||
/* 80AEA340-80AEA344 002AE0 0004+00 1/0 0/0 0/0 .text adjustShapeAngle__11daNpcShoe_cFv
|
||||
*/
|
||||
void daNpcShoe_c::adjustShapeAngle() {
|
||||
/* empty function */
|
||||
}
|
||||
void daNpcShoe_c::adjustShapeAngle() {}
|
||||
|
||||
/* 80AEA608-80AEA628 -00001 0020+00 1/0 0/0 0/0 .data daNpcShoe_MethodTable */
|
||||
static actor_method_class daNpcShoe_MethodTable = {
|
||||
(process_method_func)daNpcShoe_Create,
|
||||
(process_method_func)daNpcShoe_Delete,
|
||||
(process_method_func)daNpcShoe_Execute,
|
||||
(process_method_func)daNpcShoe_IsDelete,
|
||||
(process_method_func)daNpcShoe_Create, (process_method_func)daNpcShoe_Delete,
|
||||
(process_method_func)daNpcShoe_Execute, (process_method_func)daNpcShoe_IsDelete,
|
||||
(process_method_func)daNpcShoe_Draw,
|
||||
};
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user