mirror of
https://github.com/zeldaret/ss
synced 2026-05-23 15:01:38 -04:00
1025 lines
35 KiB
C++
1025 lines
35 KiB
C++
#ifndef D_A_PLAYER_MDL_H
|
|
#define D_A_PLAYER_MDL_H
|
|
|
|
#include "d/col/cc/d_cc_d.h"
|
|
#include "d/d_player_act.h"
|
|
#include "m/m3d/m_anmchr.h"
|
|
#include "m/m3d/m_anmchrblend.h"
|
|
#include "m/m3d/m_anmmatclr.h"
|
|
#include "m/m3d/m_anmtexpat.h"
|
|
#include "m/m3d/m_anmtexsrt.h"
|
|
#include "toBeSorted/stage_render_stuff.h"
|
|
|
|
struct PlayerAnimation {
|
|
/* 0x00 */ const char *animName;
|
|
/* 0x04 */ u8 field_0x04;
|
|
/* 0x05 */ u8 field_0x05;
|
|
/* 0x06 */ u16 mFaceTexPatIdx;
|
|
/* 0x08 */ u16 mFaceTexSrtIdx;
|
|
/* 0x0A */ u16 mFaceAnmChrIdx;
|
|
};
|
|
|
|
class daPlayerModelBase_c;
|
|
|
|
class daPlBaseScnObjCallback_c : public dScnCallback_c {
|
|
public:
|
|
daPlBaseScnObjCallback_c(dAcObjBase_c *b) : dScnCallback_c(b), mpPlayer(b) {}
|
|
|
|
/* vt 0x10 */ virtual void
|
|
ExecCallback_CALC_MAT(nw4r::g3d::ScnObj::Timing, nw4r::g3d::ScnObj *, u32, void *) override;
|
|
|
|
/* 0x18 */ virtual void ExecCallback_DRAW_OPA(nw4r::g3d::ScnObj::Timing, nw4r::g3d::ScnObj *, u32, void *) override;
|
|
|
|
private:
|
|
/* 0x0C */ dAcObjBase_c *mpPlayer;
|
|
};
|
|
|
|
class daPlBaseMdlCallback_c : public m3d::mdl_c::mdlCallback_c {
|
|
public:
|
|
virtual void ExecCallbackA(nw4r::g3d::ChrAnmResult *, nw4r::g3d::ResMdl, nw4r::g3d::FuncObjCalcWorld *) override;
|
|
|
|
void setNodeIds(u16 min, u16 max) {
|
|
mNodeIdMin = min;
|
|
mNodeIdMax = max;
|
|
}
|
|
|
|
private:
|
|
/* 0x30 */ u16 mNodeIdMin;
|
|
/* 0x32 */ u16 mNodeIdMax;
|
|
};
|
|
|
|
class daPlBaseMdl_c : public m3d::mdl_c {
|
|
public:
|
|
daPlBaseMdl_c() : mpSoundData(nullptr) {}
|
|
|
|
virtual bool setAnm(m3d::banm_c &anm) override;
|
|
virtual void remove() override;
|
|
|
|
bool create(
|
|
daPlayerModelBase_c *player, nw4r::g3d::ResMdl mdl, mAllocator_c *alloc, u32 bufferOption, u32 nView, u32 *pSize
|
|
);
|
|
void setBlendNodeRange(u16, u16, f32);
|
|
|
|
nw4r::g3d::ChrAnmResult *getNodeResult(u16 node) {
|
|
return mCallback.getNodeResult(node);
|
|
}
|
|
|
|
void setSoundRelated(u16 id, void *data) {
|
|
field_0x5A = id;
|
|
mpSoundData = data;
|
|
}
|
|
|
|
void setField_0x58(u8 val) {
|
|
field_0x58 = val;
|
|
}
|
|
|
|
u16 getField_0x5A() const {
|
|
return field_0x5A;
|
|
}
|
|
|
|
void *getSoundData() const {
|
|
return mpSoundData;
|
|
}
|
|
|
|
private:
|
|
/* 0x24 */ daPlBaseMdlCallback_c mCallback;
|
|
/* 0x58 */ u8 field_0x58;
|
|
/* 0x5A */ u16 field_0x5A;
|
|
/* 0x5C */ void *mpSoundData;
|
|
};
|
|
|
|
class daPlBaseMainCallback_c : public m3d::callback_c {
|
|
public:
|
|
virtual void timingA(u32, nw4r::g3d::ChrAnmResult *, nw4r::g3d::ResMdl) override;
|
|
virtual void timingB(u32, nw4r::g3d::WorldMtxManip *, nw4r::g3d::ResMdl) override;
|
|
virtual void timingC(nw4r::math::MTX34 *, nw4r::g3d::ResMdl) override;
|
|
|
|
void setPlayer(daPlayerModelBase_c *p) {
|
|
mpPlayer = p;
|
|
}
|
|
|
|
private:
|
|
daPlayerModelBase_c *mpPlayer;
|
|
};
|
|
|
|
class daPlBaseAnmChr_c : public m3d::anmChr_c {
|
|
public:
|
|
daPlBaseAnmChr_c() : field_0x35(0), field_0x36(0) {}
|
|
|
|
void play() override;
|
|
bool isFinished();
|
|
|
|
void setField_0x35(u8 value) {
|
|
field_0x35 = value;
|
|
}
|
|
|
|
private:
|
|
/* 0x35 */ u8 field_0x35;
|
|
/* 0x36 */ u8 field_0x36;
|
|
};
|
|
|
|
class daPlBaseHandsCallback_c : public nw4r::g3d::ICalcWorldCallback {
|
|
public:
|
|
virtual void ExecCallbackC(
|
|
nw4r::math::MTX34 *pMtxArray, nw4r::g3d::ResMdl mdl,
|
|
nw4r::g3d::FuncObjCalcWorld *pFuncObj
|
|
) override; // at 0x14
|
|
|
|
void setPlayer(daPlayerModelBase_c *p) {
|
|
mpPlayer = p;
|
|
}
|
|
|
|
private:
|
|
/* 0x04 */ daPlayerModelBase_c *mpPlayer;
|
|
};
|
|
|
|
class daPlBaseHeadCallback_c : public m3d::callback_c {
|
|
public:
|
|
virtual void timingB(u32, nw4r::g3d::WorldMtxManip *, nw4r::g3d::ResMdl) override;
|
|
|
|
void setPlayer(daPlayerModelBase_c *p) {
|
|
mpPlayer = p;
|
|
}
|
|
|
|
private:
|
|
daPlayerModelBase_c *mpPlayer;
|
|
};
|
|
|
|
// Vtable at 8050da00, dtor reveals two superclasses
|
|
// until dAcObjBase_c. Name unknown
|
|
class daPlayerModelBase_c : public daPlayerActBase_c {
|
|
public:
|
|
daPlayerModelBase_c()
|
|
: mSwordRes(nullptr),
|
|
mAlinkRes(nullptr),
|
|
mPlCommonAnimeRes(nullptr),
|
|
mPlCommonSoundRes(nullptr),
|
|
mCurrentRes(nullptr),
|
|
mAlink2Res(nullptr),
|
|
mScnObjCallback(this),
|
|
mScnCallback1(this),
|
|
mScnCallback2(this),
|
|
mScnCallback3(this),
|
|
mScnCallback4(this),
|
|
mScnCallback5(this) {}
|
|
virtual ~daPlayerModelBase_c() {}
|
|
|
|
enum TunicType_e {
|
|
TUNIC_0,
|
|
TUNIC_1,
|
|
TUNIC_SILENT,
|
|
};
|
|
|
|
enum PlayerMainModelFace_e {
|
|
PLAYER_FACE_DEFAULT = 0,
|
|
PLAYER_FACEMABA01 = 1,
|
|
PLAYER_FACE_M = 2,
|
|
PLAYER_FACE_HA = 3,
|
|
PLAYER_FACE_CUT = 4,
|
|
PLAYER_FACE_CUTAROUND = 5,
|
|
PLAYER_FACE_DAMAGE = 6,
|
|
PLAYER_FACE_DAMAGELARGE = 7,
|
|
PLAYER_FACE_DIE = 8,
|
|
PLAYER_FACE_DIELARGEDAMAGE = 9,
|
|
PLAYER_FACE_DIEMAGMA = 10,
|
|
PLAYER_FACE_PAIN = 11,
|
|
PLAYER_FACE_WA = 12,
|
|
PLAYER_FACE_DRINKST = 13,
|
|
PLAYER_FACE_DRINK = 14,
|
|
PLAYER_FACE_DRINKED = 15,
|
|
PLAYER_FACE_BREATH = 16,
|
|
PLAYER_FACE_CLOSE = 17,
|
|
PLAYER_FACE_ENTRANCE = 18,
|
|
PLAYER_FACE_BINOUT = 19,
|
|
PLAYER_FACE_GETBIGWAIT = 20,
|
|
PLAYER_FACE_GETAWAITNICE = 21,
|
|
PLAYER_FACE_WAITLOOKROUND = 22,
|
|
PLAYER_FACE_DANGER = 23,
|
|
PLAYER_FACE_BINSHIELD = 24,
|
|
PLAYER_FACE_SWIMDIEA = 25,
|
|
PLAYER_FACE_WAITSERVICEA = 26,
|
|
PLAYER_FACE_WAITSERVICEHOTA = 27,
|
|
PLAYER_FACE_BOXOP = 28,
|
|
PLAYER_FACE_NOTICE = 29,
|
|
PLAYER_FACE_SWIMP = 30,
|
|
PLAYER_FACE_BEDSLEEP = 31,
|
|
PLAYER_FACE_BEDAWAKE = 32,
|
|
PLAYER_FACE_SWORDPULLST = 33,
|
|
PLAYER_FACE_SWORDPULLWAIT = 34,
|
|
PLAYER_FACE_SWORDPULL = 35,
|
|
PLAYER_FACE_SWORDSIRENST = 36,
|
|
PLAYER_FACE_SWORDSIRENRAISE = 37,
|
|
PLAYER_FACE_SWORDSIRENSTICK = 38,
|
|
PLAYER_FACE_SWORDSIRENAFTER = 39,
|
|
PLAYER_FACE_BIRD_REACH = 40,
|
|
PLAYER_FACE_BIRD_GETWAIT = 41,
|
|
PLAYER_FACE_DIETRUCK = 42,
|
|
PLAYER_FACE_BIRD_FESTIVALSTART = 43,
|
|
PLAYER_FACE_GETSURPRISE = 44,
|
|
PLAYER_FACE_ASURACUT = 45,
|
|
PLAYER_FACE_ASURACUTST = 46,
|
|
PLAYER_FACE_ASURACUTED = 47,
|
|
PLAYER_FACE_CANNONWAIT = 48,
|
|
PLAYER_FACE_KRAKENAPPEARANCE = 49,
|
|
PLAYER_FACE_GETFLOWER = 50,
|
|
PLAYER_FACE_HARP = 51,
|
|
PLAYER_FACE_SITWAITSERVICEA = 52,
|
|
PLAYER_FACE_LIGHTNING = 53,
|
|
PLAYER_FACE_LASTATTACK = 54,
|
|
PLAYER_FACE_BIRD_CALL = 55,
|
|
PLAYER_FACE_NONE = 56,
|
|
|
|
PLAYER_FACE_MAX = 57,
|
|
};
|
|
|
|
enum PlayerMainAnim_e {
|
|
PLAYER_ANIM_ATRFW = 0,
|
|
PLAYER_ANIM_ATRFW_R = 1,
|
|
PLAYER_ANIM_ATRFD = 2,
|
|
PLAYER_ANIM_ATRFD_R = 3,
|
|
PLAYER_ANIM_ATRBW = 4,
|
|
PLAYER_ANIM_ATRBW_R = 5,
|
|
PLAYER_ANIM_ATRBD = 6,
|
|
PLAYER_ANIM_ATRBD_R = 7,
|
|
PLAYER_ANIM_ATRSWL = 8,
|
|
PLAYER_ANIM_ATRSDL = 9,
|
|
PLAYER_ANIM_ATRSWR = 10,
|
|
PLAYER_ANIM_ATRSDR = 11,
|
|
PLAYER_ANIM_ATSWL = 12,
|
|
PLAYER_ANIM_ATSDL = 13,
|
|
PLAYER_ANIM_ATSWR = 14,
|
|
PLAYER_ANIM_ATSDR = 15,
|
|
PLAYER_ANIM_ATSWL_RIGHT = 16,
|
|
PLAYER_ANIM_ATSDL_RIGHT = 17,
|
|
PLAYER_ANIM_ATL = 18,
|
|
PLAYER_ANIM_ATR = 19,
|
|
PLAYER_ANIM_DASHA = 20,
|
|
PLAYER_ANIM_DASHS = 21,
|
|
PLAYER_ANIM_ATRBWH = 22,
|
|
PLAYER_ANIM_ATBW = 23,
|
|
PLAYER_ANIM_ATBD = 24,
|
|
PLAYER_ANIM_WALKH = 25,
|
|
PLAYER_ANIM_WAITS = 26,
|
|
PLAYER_ANIM_WALKS = 27,
|
|
PLAYER_ANIM_STEPL = 28,
|
|
PLAYER_ANIM_STEPR = 29,
|
|
PLAYER_ANIM_ATSJLST = 30,
|
|
PLAYER_ANIM_ATSJLED = 31,
|
|
PLAYER_ANIM_ATSJRST = 32,
|
|
PLAYER_ANIM_ATSJRED = 33,
|
|
PLAYER_ANIM_ATSJFST = 34,
|
|
PLAYER_ANIM_ATSJFED = 35,
|
|
PLAYER_ANIM_ROLLBST = 36,
|
|
PLAYER_ANIM_ROLLBED = 37,
|
|
PLAYER_ANIM_WAITB = 38,
|
|
PLAYER_ANIM_WAITBTOA = 39,
|
|
PLAYER_ANIM_SJMPST = 40,
|
|
PLAYER_ANIM_SJMPED = 41,
|
|
PLAYER_ANIM_ROLLF = 42,
|
|
PLAYER_ANIM_ROLLFMIS = 43,
|
|
PLAYER_ANIM_JUMPST = 44,
|
|
PLAYER_ANIM_JUMPSED = 45,
|
|
PLAYER_ANIM_VJMP = 46,
|
|
PLAYER_ANIM_VJMPCHA = 47,
|
|
PLAYER_ANIM_VJMPCHB = 48,
|
|
PLAYER_ANIM_VJMPCL = 49,
|
|
PLAYER_ANIM_HANGL = 50,
|
|
PLAYER_ANIM_HANGR = 51,
|
|
PLAYER_ANIM_HANG = 52,
|
|
PLAYER_ANIM_CLIMBHANG = 53,
|
|
PLAYER_ANIM_CLIMBSLIDEL = 54,
|
|
PLAYER_ANIM_CLIMBSLIDER = 55,
|
|
PLAYER_ANIM_CLIMBHANGMISS = 56,
|
|
PLAYER_ANIM_CLIMBSTRUGGLE = 57,
|
|
PLAYER_ANIM_CLIMBIVYHANG = 58,
|
|
PLAYER_ANIM_CLIMBIVYL = 59,
|
|
PLAYER_ANIM_CLIMBIVYR = 60,
|
|
PLAYER_ANIM_CLIMBIVYL_ST = 61,
|
|
PLAYER_ANIM_CLIMBIVYR_ST = 62,
|
|
PLAYER_ANIM_CLIMBIVYSLIDEL = 63,
|
|
PLAYER_ANIM_CLIMBIVYSLIDER = 64,
|
|
PLAYER_ANIM_CLIMBIVYSLANTLU_RD = 65,
|
|
PLAYER_ANIM_CLIMBIVYSLIDERU_LD = 66,
|
|
PLAYER_ANIM_LADUPST = 67,
|
|
PLAYER_ANIM_LADUPEDL = 68,
|
|
PLAYER_ANIM_LADUPEDR = 69,
|
|
PLAYER_ANIM_LADDWST = 70,
|
|
PLAYER_ANIM_LADDWEDL = 71,
|
|
PLAYER_ANIM_LADDWEDR = 72,
|
|
PLAYER_ANIM_LADRTOL = 73,
|
|
PLAYER_ANIM_LADLTOR = 74,
|
|
PLAYER_ANIM_LADJUMPUPST = 75,
|
|
PLAYER_ANIM_LADJUMPDOWNST = 76,
|
|
PLAYER_ANIM_LADJUMPUPED = 77,
|
|
PLAYER_ANIM_LADJUMPDOWNED = 78,
|
|
PLAYER_ANIM_CUTT = 79,
|
|
PLAYER_ANIM_CUTTB = 80,
|
|
PLAYER_ANIM_CUTTL = 81,
|
|
PLAYER_ANIM_CUTTLB = 82,
|
|
PLAYER_ANIM_CUTJST = 83,
|
|
PLAYER_ANIM_CUTJED = 84,
|
|
PLAYER_ANIM_DAMF = 85,
|
|
PLAYER_ANIM_DAMB = 86,
|
|
PLAYER_ANIM_DAML = 87,
|
|
PLAYER_ANIM_DAMR = 88,
|
|
PLAYER_ANIM_DAMAGEMFRONT = 89,
|
|
PLAYER_ANIM_DAMAGEMBACK = 90,
|
|
PLAYER_ANIM_DAMAGEMLEFT = 91,
|
|
PLAYER_ANIM_DAMAGEMRIGHT = 92,
|
|
PLAYER_ANIM_DAMFF = 93,
|
|
PLAYER_ANIM_DAMFB = 94,
|
|
PLAYER_ANIM_DAMFL = 95,
|
|
PLAYER_ANIM_DAMFR = 96,
|
|
PLAYER_ANIM_DAMFFUP = 97,
|
|
PLAYER_ANIM_DAMFBUP = 98,
|
|
PLAYER_ANIM_DAMFLUP = 99,
|
|
PLAYER_ANIM_DAMFRUP = 100,
|
|
PLAYER_ANIM_DAMAGELFRONTSLIDE = 101,
|
|
PLAYER_ANIM_DAMAGELBACKSLIDE = 102,
|
|
PLAYER_ANIM_DAMAGELLEFTSLIDE = 103,
|
|
PLAYER_ANIM_DAMAGELRIGHTSLIDE = 104,
|
|
PLAYER_ANIM_DAM = 105,
|
|
PLAYER_ANIM_LANDDAMA = 106,
|
|
PLAYER_ANIM_LANDDAMAST = 107,
|
|
PLAYER_ANIM_CUTST = 108,
|
|
PLAYER_ANIM_ATDEFNG = 109,
|
|
PLAYER_ANIM_DIE = 110,
|
|
PLAYER_ANIM_DIELARGEDAMAGEFRONT = 111,
|
|
PLAYER_ANIM_DIELARGEDAMAGEBACK = 112,
|
|
PLAYER_ANIM_DIELARGEDAMAGELEFT = 113,
|
|
PLAYER_ANIM_DIELARGEDAMAGERIGHT = 114,
|
|
PLAYER_ANIM_SWIMWAIT = 115,
|
|
PLAYER_ANIM_SWIMINGA = 116,
|
|
PLAYER_ANIM_SWIMP = 117,
|
|
PLAYER_ANIM_ATSSWL = 118,
|
|
PLAYER_ANIM_ATSSWR = 119,
|
|
PLAYER_ANIM_ATBSW = 120,
|
|
PLAYER_ANIM_SWIMDIVE = 121,
|
|
PLAYER_ANIM_SWIMINGST = 122,
|
|
PLAYER_ANIM_SWIMINGB = 123,
|
|
PLAYER_ANIM_SWIMINGC = 124,
|
|
PLAYER_ANIM_SWIMATTACKMISS = 125,
|
|
PLAYER_ANIM_DAMSWF = 126,
|
|
PLAYER_ANIM_DAMSWB = 127,
|
|
PLAYER_ANIM_DAMSWL = 128,
|
|
PLAYER_ANIM_DAMSWR = 129,
|
|
PLAYER_ANIM_DAMSWW = 130,
|
|
PLAYER_ANIM_SWIMDIEA = 131,
|
|
PLAYER_ANIM_SWIMDIEP = 132,
|
|
PLAYER_ANIM_DIEMAGMA = 133,
|
|
PLAYER_ANIM_SLIDEF = 134,
|
|
PLAYER_ANIM_SLIDEB = 135,
|
|
PLAYER_ANIM_SLIDEFED = 136,
|
|
PLAYER_ANIM_SLIDEBED = 137,
|
|
PLAYER_ANIM_HSJMPL = 138,
|
|
PLAYER_ANIM_HSJMPR = 139,
|
|
PLAYER_ANIM_HSSHOOT = 140,
|
|
PLAYER_ANIM_HSHANGEDL = 141,
|
|
PLAYER_ANIM_HSHANGEDR = 142,
|
|
PLAYER_ANIM_HSHANGL = 143,
|
|
PLAYER_ANIM_HSHANGR = 144,
|
|
PLAYER_ANIM_HSHANGWAITL = 145,
|
|
PLAYER_ANIM_HSHANGWAITR = 146,
|
|
PLAYER_ANIM_HSHANGSHOOTL = 147,
|
|
PLAYER_ANIM_HSHANGSHOOTR = 148,
|
|
PLAYER_ANIM_HSWALLEDL = 149,
|
|
PLAYER_ANIM_HSWALLEDR = 150,
|
|
PLAYER_ANIM_HSWALLL = 151,
|
|
PLAYER_ANIM_HSWALLR = 152,
|
|
PLAYER_ANIM_HSWALLWAITL = 153,
|
|
PLAYER_ANIM_HSWALLWAITR = 154,
|
|
PLAYER_ANIM_HSWALLSHOOTL = 155,
|
|
PLAYER_ANIM_HSWALLSHOOTR = 156,
|
|
PLAYER_ANIM_LIE = 157,
|
|
PLAYER_ANIM_LIEF = 158,
|
|
PLAYER_ANIM_WAITST = 159,
|
|
PLAYER_ANIM_WAITSTRUGGLEDAMAGE = 160,
|
|
PLAYER_ANIM_WAITPP = 161,
|
|
PLAYER_ANIM_PUSHW = 162,
|
|
PLAYER_ANIM_PULLW = 163,
|
|
PLAYER_ANIM_JUMPBST = 164,
|
|
PLAYER_ANIM_JUMPB = 165,
|
|
PLAYER_ANIM_WAITD = 166,
|
|
PLAYER_ANIM_WAITATOD = 167,
|
|
PLAYER_ANIM_WAITSERVICEA = 168,
|
|
PLAYER_ANIM_WAITSERVICEHOTA = 169,
|
|
PLAYER_ANIM_DASHUPL = 170,
|
|
PLAYER_ANIM_DASHUPR = 171,
|
|
PLAYER_ANIM_CLIMBJUMPUST = 172,
|
|
PLAYER_ANIM_CLIMBJUMPDST = 173,
|
|
PLAYER_ANIM_CLIMBJUMPLST = 174,
|
|
PLAYER_ANIM_CLIMBJUMPRST = 175,
|
|
PLAYER_ANIM_CLIMBJUMPUED = 176,
|
|
PLAYER_ANIM_CLIMBJUMPDED = 177,
|
|
PLAYER_ANIM_CLIMBJUMPLED = 178,
|
|
PLAYER_ANIM_CLIMBJUMPRED = 179,
|
|
PLAYER_ANIM_HANGJUMPLST = 180,
|
|
PLAYER_ANIM_HANGJUMPRST = 181,
|
|
PLAYER_ANIM_HANGJUMPLED = 182,
|
|
PLAYER_ANIM_HANGJUMPRED = 183,
|
|
PLAYER_ANIM_DOORKNOBPULL = 184,
|
|
PLAYER_ANIM_DOORKNOBPUSH = 185,
|
|
PLAYER_ANIM_DOORKNOBPULLLOCK = 186,
|
|
PLAYER_ANIM_DOORKNOBPUSHLOCK = 187,
|
|
PLAYER_ANIM_DOOROPD = 188,
|
|
PLAYER_ANIM_DASHB = 189,
|
|
PLAYER_ANIM_MGDIG = 190,
|
|
PLAYER_ANIM_MPCUTU = 191,
|
|
PLAYER_ANIM_MPCUTU_RE = 192,
|
|
PLAYER_ANIM_MPCUTLU = 193,
|
|
PLAYER_ANIM_MPCUTLU_RE = 194,
|
|
PLAYER_ANIM_MPCUTL = 195,
|
|
PLAYER_ANIM_MPCUTL_RE = 196,
|
|
PLAYER_ANIM_MPCUTLD = 197,
|
|
PLAYER_ANIM_MPCUTLD_RE = 198,
|
|
PLAYER_ANIM_MPCUTRD = 199,
|
|
PLAYER_ANIM_MPCUTRD_RE = 200,
|
|
PLAYER_ANIM_MPCUTR = 201,
|
|
PLAYER_ANIM_MPCUTR_RE = 202,
|
|
PLAYER_ANIM_MPCUTRU = 203,
|
|
PLAYER_ANIM_MPCUTRU_RE = 204,
|
|
PLAYER_ANIM_MPCUTD_RIGHT = 205,
|
|
PLAYER_ANIM_MPCUTD_RIGHT_RE = 206,
|
|
PLAYER_ANIM_MPCUTD_LEFT = 207,
|
|
PLAYER_ANIM_MPCUTD_LEFT_RE = 208,
|
|
PLAYER_ANIM_CUTPUSH = 209,
|
|
PLAYER_ANIM_CUTPUSH_RE = 210,
|
|
PLAYER_ANIM_ENEMYGUARDJUST = 211,
|
|
PLAYER_ANIM_LIFTB_BEFORE = 212,
|
|
PLAYER_ANIM_LIFTM_BEFORE = 213,
|
|
PLAYER_ANIM_LIFTB = 214,
|
|
PLAYER_ANIM_LIFTS = 215,
|
|
PLAYER_ANIM_LIFTM = 216,
|
|
PLAYER_ANIM_LIFTL = 217,
|
|
PLAYER_ANIM_THROWBU = 218,
|
|
PLAYER_ANIM_THROWSU = 219,
|
|
PLAYER_ANIM_THROWMU = 220,
|
|
PLAYER_ANIM_THROWLU = 221,
|
|
PLAYER_ANIM_THROWBD = 222,
|
|
PLAYER_ANIM_THROWSD = 223,
|
|
PLAYER_ANIM_MPGUARDSHIELD = 224,
|
|
PLAYER_ANIM_MPGUARDSHIELD_IMPACT = 225,
|
|
PLAYER_ANIM_MPGUARDSHIELD_NORMAL = 226,
|
|
PLAYER_ANIM_VJMPCHA_2 = 227,
|
|
PLAYER_ANIM_ROPEHOLDWAIT = 228,
|
|
PLAYER_ANIM_ROPECLIMBL = 229,
|
|
PLAYER_ANIM_ROPEHOLDWAIT_2 = 230,
|
|
PLAYER_ANIM_ROPEPULL = 231,
|
|
PLAYER_ANIM_ROPETIGHTHOLD = 232,
|
|
PLAYER_ANIM_ROPEFRONT = 233,
|
|
PLAYER_ANIM_ROPEBACK = 234,
|
|
PLAYER_ANIM_ROPESTRUGGLE = 235,
|
|
PLAYER_ANIM_DIVEST = 236,
|
|
PLAYER_ANIM_DIVE = 237,
|
|
PLAYER_ANIM_STOLELAND = 238,
|
|
PLAYER_ANIM_DIVEDROP = 239,
|
|
PLAYER_ANIM_FLOAT = 240,
|
|
PLAYER_ANIM_FLOATAWAY = 241,
|
|
PLAYER_ANIM_DIVETOFLOAT = 242,
|
|
PLAYER_ANIM_ROCKETBEETLE_WAIT = 243,
|
|
PLAYER_ANIM_ROCKETBEETLE_SHOOT = 244,
|
|
PLAYER_ANIM_ROCKETBEETLE_RESET = 245,
|
|
PLAYER_ANIM_ROCKETBEETLE_BACK = 246,
|
|
PLAYER_ANIM_WHIPU = 247,
|
|
PLAYER_ANIM_WHIPLU = 248,
|
|
PLAYER_ANIM_WHIPL = 249,
|
|
PLAYER_ANIM_WHIPLD = 250,
|
|
PLAYER_ANIM_WHIPRD = 251,
|
|
PLAYER_ANIM_WHIPR = 252,
|
|
PLAYER_ANIM_WHIPRU = 253,
|
|
PLAYER_ANIM_WHIPBACKRD = 254,
|
|
PLAYER_ANIM_WHIPBACKR = 255,
|
|
PLAYER_ANIM_WHIPBACKRU = 256,
|
|
PLAYER_ANIM_WHIPBACKU = 257,
|
|
PLAYER_ANIM_WHIPBACKLU = 258,
|
|
PLAYER_ANIM_WHIPBACKL = 259,
|
|
PLAYER_ANIM_WHIPBACKLD = 260,
|
|
PLAYER_ANIM_TURNBACK = 261,
|
|
PLAYER_ANIM_ATLTOR = 262,
|
|
PLAYER_ANIM_ATRTOL = 263,
|
|
PLAYER_ANIM_CHUCHUSTRUGGLE = 264,
|
|
PLAYER_ANIM_CHUCHUSTRUGGLE_BIG = 265,
|
|
PLAYER_ANIM_CHUCHUSTRUGGLE_ACT = 266,
|
|
PLAYER_ANIM_CHUCHUSTRUGGLE_ESCAPE = 267,
|
|
PLAYER_ANIM_SURPRISE = 268,
|
|
PLAYER_ANIM_DANGER = 269,
|
|
PLAYER_ANIM_ROCKRIDE = 270,
|
|
PLAYER_ANIM_NOTICE = 271,
|
|
PLAYER_ANIM_WAITINSECT = 272,
|
|
PLAYER_ANIM_NUMBA = 273,
|
|
PLAYER_ANIM_NUMBB = 274,
|
|
PLAYER_ANIM_DAMFEF = 275,
|
|
PLAYER_ANIM_DAMFEB = 276,
|
|
PLAYER_ANIM_DAMFEL = 277,
|
|
PLAYER_ANIM_DAMFER = 278,
|
|
PLAYER_ANIM_GETA = 279,
|
|
PLAYER_ANIM_GETAWAIT = 280,
|
|
PLAYER_ANIM_GETBIG = 281,
|
|
PLAYER_ANIM_GETBIGWAIT = 282,
|
|
PLAYER_ANIM_BOXOPSMALL = 283,
|
|
PLAYER_ANIM_BOXOP = 284,
|
|
PLAYER_ANIM_CUTUST = 285,
|
|
PLAYER_ANIM_CUTU = 286,
|
|
PLAYER_ANIM_CUTUED = 287,
|
|
PLAYER_ANIM_CUTUNG = 288,
|
|
PLAYER_ANIM_WAITLOOKROUND = 289,
|
|
PLAYER_ANIM_ENTRANCE = 290,
|
|
PLAYER_ANIM_MPPOSEPOWER = 291,
|
|
PLAYER_ANIM_MPPOSEPOWERL = 292,
|
|
PLAYER_ANIM_BINSWINGS = 293,
|
|
PLAYER_ANIM_BINSWINGU = 294,
|
|
PLAYER_ANIM_BINOUT = 295,
|
|
PLAYER_ANIM_DRIFT = 296,
|
|
PLAYER_ANIM_SWIMDIEAREVIVE = 297,
|
|
PLAYER_ANIM_MGLIEFREVIVE = 298,
|
|
PLAYER_ANIM_CATCHL = 299,
|
|
PLAYER_ANIM_CATCHR = 300,
|
|
PLAYER_ANIM_BATTLEREADY = 301,
|
|
PLAYER_ANIM_ROLLJUMP = 302,
|
|
PLAYER_ANIM_TANSUOPEN = 303,
|
|
PLAYER_ANIM_TANSUCLOSE = 304,
|
|
PLAYER_ANIM_BEDSLEEPL = 305,
|
|
PLAYER_ANIM_BEDSLEEP = 306,
|
|
PLAYER_ANIM_BEDAWAKE = 307,
|
|
PLAYER_ANIM_BIRD_GLIDE = 308,
|
|
PLAYER_ANIM_BIRD_GLIDEAROUND = 309,
|
|
PLAYER_ANIM_BIRD_REACH = 310,
|
|
PLAYER_ANIM_BIRD_GETWAIT = 311,
|
|
PLAYER_ANIM_BIRD_ACCEL = 312,
|
|
PLAYER_ANIM_BIRD_DAMAGE = 313,
|
|
PLAYER_ANIM_BIRD_DAMAGESMALL = 314,
|
|
PLAYER_ANIM_BIRD_DAMAGETORNADO = 315,
|
|
PLAYER_ANIM_BIRD_CALL = 316,
|
|
PLAYER_ANIM_SWORDPULLST = 317,
|
|
PLAYER_ANIM_SWORDPULLWAIT = 318,
|
|
PLAYER_ANIM_SWORDPULL = 319,
|
|
PLAYER_ANIM_SWORDSIRENST = 320,
|
|
PLAYER_ANIM_SWORDSIRENSTWAIT = 321,
|
|
PLAYER_ANIM_SWORDSIRENRAISE = 322,
|
|
PLAYER_ANIM_SWORDSIRENRAISEWAIT = 323,
|
|
PLAYER_ANIM_SWORDSIRENSTICK = 324,
|
|
PLAYER_ANIM_SWORDSIRENAFTER = 325,
|
|
PLAYER_ANIM_SWITCHDIAL_ST = 326,
|
|
PLAYER_ANIM_SWITCHDIAL_STL = 327,
|
|
PLAYER_ANIM_SWITCHDIAL_LTOR = 328,
|
|
PLAYER_ANIM_SWITCHDIAL_PUSH = 329,
|
|
PLAYER_ANIM_TRUCKLTOR = 330,
|
|
PLAYER_ANIM_TRUCKFRONTTOBACK = 331,
|
|
PLAYER_ANIM_TRUCKJUMPST = 332,
|
|
PLAYER_ANIM_TRUCKJUMP = 333,
|
|
PLAYER_ANIM_TRUCKJUMPEND = 334,
|
|
PLAYER_ANIM_TRUCKBRAKE = 335,
|
|
PLAYER_ANIM_TRUCKIN = 336,
|
|
PLAYER_ANIM_TRUCKOUT = 337,
|
|
PLAYER_ANIM_DIETRUCK = 338,
|
|
PLAYER_ANIM_DIETRUCKREVIVE = 339,
|
|
PLAYER_ANIM_MGDIGIN = 340,
|
|
PLAYER_ANIM_MGDIGOUT = 341,
|
|
PLAYER_ANIM_MGLIEF_L = 342,
|
|
PLAYER_ANIM_MGLIEF_R = 343,
|
|
PLAYER_ANIM_MGATTACKL = 344,
|
|
PLAYER_ANIM_MGATTACKR = 345,
|
|
PLAYER_ANIM_MGDASHL = 346,
|
|
PLAYER_ANIM_MGDASHR = 347,
|
|
PLAYER_ANIM_MGDAMAGE = 348,
|
|
PLAYER_ANIM_MGWAITBREATH = 349,
|
|
PLAYER_ANIM_MGLIEUP = 350,
|
|
PLAYER_ANIM_LIFTREMLY = 351,
|
|
PLAYER_ANIM_THROWREMLYUP = 352,
|
|
PLAYER_ANIM_LIFTREMLYUTOM = 353,
|
|
PLAYER_ANIM_BIRD_FESTIVALSTART = 354,
|
|
PLAYER_ANIM_GETSURPRISE = 355,
|
|
PLAYER_ANIM_GIRAHIMGRAPPLE = 356,
|
|
PLAYER_ANIM_GIRAHIMPULL = 357,
|
|
PLAYER_ANIM_GIRAHIMPULLUP = 358,
|
|
PLAYER_ANIM_GIRAHIMCHANGE = 359,
|
|
PLAYER_ANIM_ROPEWALK = 360,
|
|
PLAYER_ANIM_ROPEBEND = 361,
|
|
PLAYER_ANIM_ROPEHANGBEND = 362,
|
|
PLAYER_ANIM_ROPEHANGUP = 363,
|
|
PLAYER_ANIM_ROPEBALANCE = 364,
|
|
PLAYER_ANIM_SETSEKIBANA = 365,
|
|
PLAYER_ANIM_SETSEKIBANB = 366,
|
|
PLAYER_ANIM_SETSEKIBANC = 367,
|
|
PLAYER_ANIM_PUSHTSWST = 368,
|
|
PLAYER_ANIM_PUSHTSW = 369,
|
|
PLAYER_ANIM_PUSHLOG = 370,
|
|
PLAYER_ANIM_ASURACUTRIGHT = 371,
|
|
PLAYER_ANIM_ASURACUTLEFT = 372,
|
|
PLAYER_ANIM_ASURACUTUP = 373,
|
|
PLAYER_ANIM_ASURACUTRIGHTST = 374,
|
|
PLAYER_ANIM_ASURACUTLEFTST = 375,
|
|
PLAYER_ANIM_ASURACUTUPST = 376,
|
|
PLAYER_ANIM_ASURACUTRIGHTED = 377,
|
|
PLAYER_ANIM_ASURACUTLEFTED = 378,
|
|
PLAYER_ANIM_ASURACUTUPED = 379,
|
|
PLAYER_ANIM_ASURASWORDWAIT = 380,
|
|
PLAYER_ANIM_ASURASWORDLIFT = 381,
|
|
PLAYER_ANIM_BINSCOOP = 382,
|
|
PLAYER_ANIM_FIRE = 383,
|
|
PLAYER_ANIM_CROUCH = 384,
|
|
PLAYER_ANIM_CANNONWAIT = 385,
|
|
PLAYER_ANIM_SEAL = 386,
|
|
PLAYER_ANIM_SEALLOOP = 387,
|
|
PLAYER_ANIM_SEALFINISH = 388,
|
|
PLAYER_ANIM_FINISHED = 389,
|
|
PLAYER_ANIM_SITDOWN = 390,
|
|
PLAYER_ANIM_SITWAIT = 391,
|
|
PLAYER_ANIM_SITWAITSERVICEA = 392,
|
|
PLAYER_ANIM_ROOFWAIT = 393,
|
|
PLAYER_ANIM_ROOFHANG = 394,
|
|
PLAYER_ANIM_MGSTRUGGLE = 395,
|
|
PLAYER_ANIM_MGSTRUGGLE_ACT = 396,
|
|
PLAYER_ANIM_MGSTRUGGLE_ESCAPE = 397,
|
|
PLAYER_ANIM_KRAKENAPPEARANCE = 398,
|
|
PLAYER_ANIM_MGBURY = 399,
|
|
PLAYER_ANIM_GETFLOWER = 400,
|
|
PLAYER_ANIM_DOORLARGEOPEN = 401,
|
|
PLAYER_ANIM_DOORLARGECLOSE = 402,
|
|
PLAYER_ANIM_HARPPLAYFINISH = 403,
|
|
PLAYER_ANIM_LIGHTNINGL = 404,
|
|
PLAYER_ANIM_LIGHTNINGR = 405,
|
|
PLAYER_ANIM_LASTATTACK = 406,
|
|
PLAYER_ANIM_AT = 407,
|
|
PLAYER_ANIM_TAKE = 408,
|
|
PLAYER_ANIM_TAKEL = 409,
|
|
PLAYER_ANIM_TAKER = 410,
|
|
PLAYER_ANIM_TAKE2 = 411,
|
|
PLAYER_ANIM_WAITATOS = 412,
|
|
PLAYER_ANIM_DAMD = 413,
|
|
PLAYER_ANIM_ASHOOTWAIT = 414,
|
|
PLAYER_ANIM_ARELORD = 415,
|
|
PLAYER_ANIM_ASHOOT = 416,
|
|
PLAYER_ANIM_ARELORDTAME = 417,
|
|
PLAYER_ANIM_ASHOOTWAIT_2 = 418,
|
|
PLAYER_ANIM_ARELORD_2 = 419,
|
|
PLAYER_ANIM_ASHOOT_2 = 420,
|
|
PLAYER_ANIM_DAMSW = 421,
|
|
PLAYER_ANIM_HSWAIT = 422,
|
|
PLAYER_ANIM_VACUUMWAIT = 423,
|
|
PLAYER_ANIM_MPPOSEFRONT = 424,
|
|
PLAYER_ANIM_MPPOSEAROUND = 425,
|
|
PLAYER_ANIM_MPPOSEAROUNDBACK = 426,
|
|
PLAYER_ANIM_MPPOSEDASHFRONT = 427,
|
|
PLAYER_ANIM_MPPOSEDASHAROUND = 428,
|
|
PLAYER_ANIM_MPPOSEDASHAROUNDBACK = 429,
|
|
PLAYER_ANIM_LIFTB_UTOD = 430,
|
|
PLAYER_ANIM_LIFTS_UTOD = 431,
|
|
PLAYER_ANIM_LIFTLWALK = 432,
|
|
PLAYER_ANIM_MPGUARDPOSE = 433,
|
|
PLAYER_ANIM_ROCKRIDE_2 = 434,
|
|
PLAYER_ANIM_BINDRINKST = 435,
|
|
PLAYER_ANIM_BINDRINK = 436,
|
|
PLAYER_ANIM_BINDRINKED = 437,
|
|
PLAYER_ANIM_HARPPOSE = 438,
|
|
PLAYER_ANIM_HARPPLAYGO = 439,
|
|
PLAYER_ANIM_HARPPLAYCOME = 440,
|
|
PLAYER_ANIM_BINHOLD = 441,
|
|
PLAYER_ANIM_BINSHIELD = 442,
|
|
|
|
PLAYER_ANIM_MAX = 443,
|
|
};
|
|
|
|
// Alink.arc > g3d > model.brres > 3DModels(NW4R) > al > Bones > ...
|
|
enum PlayerMainModelNode_e {
|
|
PLAYER_MAIN_NODE_CENTER = 0,
|
|
PLAYER_MAIN_NODE_BACKBONE_1 = 1,
|
|
PLAYER_MAIN_NODE_BACKBONE_2 = 2,
|
|
PLAYER_MAIN_NODE_HEAD = 4,
|
|
PLAYER_MAIN_NODE_POD = 5,
|
|
|
|
PLAYER_MAIN_NODE_SHOULDER_L = 6,
|
|
PLAYER_MAIN_NODE_ARM_L1 = 7,
|
|
PLAYER_MAIN_NODE_ARM_L2 = 8,
|
|
PLAYER_MAIN_NODE_HAND_L = 9,
|
|
PLAYER_MAIN_NODE_WEAPON_L = 10,
|
|
|
|
PLAYER_MAIN_NODE_SHOULDER_R = 11,
|
|
PLAYER_MAIN_NODE_ARM_R1 = 12,
|
|
PLAYER_MAIN_NODE_ARM_R2 = 13,
|
|
PLAYER_MAIN_NODE_HAND_R = 14,
|
|
PLAYER_MAIN_NODE_WEAPON_R = 15,
|
|
PLAYER_MAIN_NODE_WAIST = 16,
|
|
|
|
PLAYER_MAIN_NODE_CLOTCH_L = 17,
|
|
PLAYER_MAIN_NODE_LEG_L1 = 18,
|
|
PLAYER_MAIN_NODE_LEG_L2 = 19,
|
|
PLAYER_MAIN_NODE_FOOT_L = 20,
|
|
PLAYER_MAIN_NODE_TOE_L = 21,
|
|
|
|
PLAYER_MAIN_NODE_CLOTCH_R = 22,
|
|
PLAYER_MAIN_NODE_LEG_R1 = 23,
|
|
PLAYER_MAIN_NODE_LEG_R2 = 24,
|
|
PLAYER_MAIN_NODE_FOOT_R = 25,
|
|
PLAYER_MAIN_NODE_TOE_R = 26,
|
|
|
|
PLAYER_MAIN_NODE_FSKIRT_L1 = 27,
|
|
PLAYER_MAIN_NODE_FSKIRT_L2 = 28,
|
|
|
|
PLAYER_MAIN_NODE_FSKIRT_R1 = 29,
|
|
PLAYER_MAIN_NODE_FSKIRT_R2 = 30,
|
|
|
|
PLAYER_MAIN_NODE_RSKIRT_L1 = 31,
|
|
PLAYER_MAIN_NODE_RSKIRT_L2 = 32,
|
|
PLAYER_MAIN_NODE_RSKIRT_R1 = 33,
|
|
PLAYER_MAIN_NODE_RSKIRT_R2 = 34,
|
|
};
|
|
|
|
// Alink.arc > g3d > model.brres > 3DModels(NW4R) > al_head > Bones > ...
|
|
enum PlayerHeadModelNode_e {
|
|
PLAYER_HEAD_NODE_HAIR_L = 1,
|
|
PLAYER_HEAD_NODE_HAIR_R1 = 2,
|
|
PLAYER_HEAD_NODE_HAIR_R2 = 3,
|
|
PLAYER_HEAD_NODE_MOMI_L = 4,
|
|
PLAYER_HEAD_NODE_MOMI_R = 5,
|
|
PLAYER_HEAD_NODE_MOMI_Z_CAP_1 = 6,
|
|
};
|
|
|
|
// Alink.arc > g3d > model.brres > 3DModels(NW4R) > al_hands > Bones > ...
|
|
enum PlayerHandsModelNode_e {
|
|
PLAYER_HANDS_NODE_HAND_L = 1,
|
|
PLAYER_HANDS_NODE_HAND_R = 2,
|
|
};
|
|
|
|
void fn_8005F890(nw4r::math::MTX34 *);
|
|
void fn_8005FB90(nw4r::math::MTX34 *);
|
|
bool fn_80061410();
|
|
|
|
static void freeFrmHeap(mHeapAllocator_c *allocator);
|
|
static void allocFrmHeap(mHeapAllocator_c *allocator, u32 size, const char *name);
|
|
void allocExternalDataBuffers();
|
|
void initModelHeaps();
|
|
void updateSwordShieldModelsIfNeeded();
|
|
m3d::anmTexSrt_c *createAnmTexSrt(const char *resName, m3d::bmdl_c &mdl);
|
|
|
|
static bool createGenericMdl(nw4r::g3d::ResMdl resMdl, m3d::mdl_c &mdl, mAllocator_c *alloc, u32 bufferOption);
|
|
static bool createGenericSmdl(nw4r::g3d::ResMdl resMdl, m3d::smdl_c &mdl, mAllocator_c *alloc, u32 bufferOption);
|
|
static void setTransformAndCalc(m3d::scnLeaf_c &lf, const mMtx_c *mtx);
|
|
void setShieldTransform(bool inHand);
|
|
|
|
static nw4r::g3d::ResFile getItemResFile(const char *name, mAllocator_c &allocator);
|
|
nw4r::g3d::ResFile getExternalCompressedFile(const char *name, const char *extension, void *dest, u32 maxSize);
|
|
nw4r::g3d::ResAnmChr getExternalAnmChr(const char *name, void *dest, u32 maxSize);
|
|
nw4r::g3d::ResAnmTexPat getExternalAnmTexPat(const char *name, void *dest, u32 maxSize);
|
|
nw4r::g3d::ResAnmTexSrt getExternalAnmTexSrt(const char *name, void *dest, u32 maxSize);
|
|
|
|
static bool isBodyAnmPart_0_2_4(s32 part);
|
|
|
|
static u32 getCurrentShieldPouchSlot();
|
|
static s32 getShieldType(s32 item);
|
|
static s32 getCurrentlyEquippedShieldId();
|
|
|
|
void updateEarringsColor();
|
|
void loadBodyModels();
|
|
void loadBody();
|
|
void loadHandsModels();
|
|
void setSwordAnm(const char *name);
|
|
void initSwordModel();
|
|
void updateSwordModel();
|
|
void initShieldModel();
|
|
void updateShieldModel();
|
|
|
|
// Own virtual methods
|
|
|
|
/* vt 0x2E0 */ virtual void transformBackbone1(nw4r::g3d::WorldMtxManip *) {}
|
|
/* vt 0x2E4 */ virtual void transformModelCenter(mMtx_c *) {}
|
|
/* vt 0x2E8 */ virtual bool vt_0x2E8(nw4r::math::MTX34 *, const u16 *, bool) {
|
|
return true;
|
|
}
|
|
/* vt 0x2EC */ virtual void isOnClawTargetMaybe(s32 arm, mAng &a1, mAng &a2) {
|
|
a1 = 0;
|
|
a2 = 0;
|
|
}
|
|
/* vt 0x2F0 */ virtual bool isMPPose() {
|
|
return false;
|
|
}
|
|
/* vt 0x2F4 */ virtual bool isOnTightRope() {
|
|
return false;
|
|
}
|
|
/* vt 0x2F8 */ virtual bool isOnVines() {
|
|
return false;
|
|
}
|
|
/* vt 0x2FC */ virtual bool alwaysRet0() {
|
|
return 0;
|
|
}
|
|
/* vt 0x300 */ virtual bool canBlockAttack() {
|
|
return false;
|
|
}
|
|
/* vt 0x304 */ virtual const mVec3_c &vt_0x304() const {
|
|
return mVec3_c::Zero;
|
|
}
|
|
// r = 1, l = 0, backbone = 2
|
|
/* vt 0x308 */ virtual mAng getArmZRot(s32 which) {
|
|
return 0;
|
|
}
|
|
/* vt 0x30C */ virtual void vt_0x30C(mVec3_c &res) {
|
|
res = mVec3_c::Ex;
|
|
}
|
|
|
|
// Overrides
|
|
|
|
/* vt 0x0E4 */ virtual const mVec3_c &getCenterTranslation() const override {
|
|
return mCenterTranslation;
|
|
}
|
|
/* vt 0x0E8 */ virtual const mVec3_c &vt_0x0E8() const override {
|
|
return field_0x12F4;
|
|
}
|
|
/* vt 0x0EC */ virtual const mVec3_c &getHeadTranslation() const override {
|
|
return mHeadTranslation;
|
|
}
|
|
/* vt 0x0F0 */ virtual const mVec3_c &vt_0x0F0() const override {
|
|
return mTranslationHand[1];
|
|
}
|
|
/* vt 0x0F4 */ virtual const mVec3_c &vt_0x0F4() const override {
|
|
return mTranslationHand[0];
|
|
}
|
|
|
|
/* vt 0x114 */ virtual void somethingWithCarriedActorFlags() override;
|
|
/* vt 0x118 */ virtual dAcObjBase_c *getCurrentCarriedActor() override {
|
|
return mCarriedActorRef.get();
|
|
}
|
|
|
|
/* vt 0x18C */ virtual void getBodyMtx(mMtx_c *out_mtx, int boneIdx) override {
|
|
mMainMdl.getNodeWorldMtx(boneIdx, *out_mtx);
|
|
}
|
|
/* vt 0x190 */ virtual void getSheathModelMatrix(mMtx_c *out_mtx) override {
|
|
mSheathMdl.getLocalMtx(*out_mtx);
|
|
}
|
|
/* vt 0x194 */ virtual void getSwordModelMatrix(mMtx_c *out_mtx) override {
|
|
mSwordMdl.getLocalMtx(*out_mtx);
|
|
}
|
|
/* vt 0x198 */ virtual mAng vt_0x198() override {
|
|
return field_0x1268;
|
|
}
|
|
/* vt 0x19C */ virtual mAng vt_0x19C() override {
|
|
return field_0x126A;
|
|
}
|
|
|
|
u8 getHandMat(s32 idx) {
|
|
return field_0x1208[idx];
|
|
}
|
|
|
|
inline bool checkSwordAndMoreStates(u32 mask) const {
|
|
return (mSwordAndMoreStates & mask) != 0;
|
|
}
|
|
|
|
inline void offSwordAndMoreStates(u32 mask) {
|
|
mSwordAndMoreStates &= ~mask;
|
|
}
|
|
|
|
bool canStart(bool force, u16 newIdx, u16 invalidValue, u16 *out1, u16 *out2) const;
|
|
void setFaceTexPat(s32 faceIdx, bool force);
|
|
void checkFaceTexPat();
|
|
void setFaceTexSrt(s32 faceIdx, bool force);
|
|
void checkFaceTexSrt();
|
|
void setFaceAnmChr(s32 faceIdx, bool force);
|
|
void checkFaceAnmChr();
|
|
|
|
void setPosCopy3();
|
|
|
|
void loadTwoAnmChrs(s32 childIdx, s32 animIdx, s32 animIdx2, bool b);
|
|
void loadAnmChr(s32 childIdx, s32 animIdx, void *dest, u32 maxSize);
|
|
void removeAnmChr(s32 childIdx);
|
|
void loadSound(nw4r::g3d::ResFile &file, const char *name, s32 childIdx);
|
|
void loadSoundForAnim(s32 childIdx);
|
|
|
|
void syncSoundWithAnim();
|
|
static void registMassObj(cCcD_Obj *obj, u8 priority);
|
|
void updateModelColliders();
|
|
void updateCachedPositions();
|
|
|
|
// Model callbacks - dropping the mdl argument, apparently
|
|
void mainModelTimingA(u32 nodeId, nw4r::g3d::ChrAnmResult *result);
|
|
void adjustMainModelChrAnm(PlayerMainModelNode_e nodeId, nw4r::g3d::ChrAnmResult *result);
|
|
|
|
void mainModelTimingB(u32 nodeId, nw4r::g3d::WorldMtxManip *result);
|
|
void adjustMainModelWorldMtx(PlayerMainModelNode_e nodeId, nw4r::g3d::WorldMtxManip *result);
|
|
|
|
void mainModelTimingC(nw4r::math::MTX34 *result);
|
|
void headModelTimingB(u32 nodeId, nw4r::g3d::WorldMtxManip *result);
|
|
|
|
void handsCallbackC(nw4r::math::MTX34 *pMtxArray, nw4r::g3d::ResMdl mdl, nw4r::g3d::FuncObjCalcWorld *pFuncObj);
|
|
|
|
void updateBlendWeights(PlayerMainModelNode_e nodeId);
|
|
void updateMainBlend1(f32 blend);
|
|
void updateMainBlend2(f32 blend, bool save);
|
|
void applyWorldRotationMaybe(nw4r::math::MTX34 *result, mAng x, mAng y, mAng z, mVec3_c *off, bool order);
|
|
void applyWorldRotationMaybe(nw4r::g3d::WorldMtxManip *result, mAng x, mAng y, mAng z, mVec3_c *off, bool order);
|
|
|
|
static const PlayerAnimation sAnimations[443];
|
|
static const s32 sUnkDuration;
|
|
static const u8 sShieldDurabilities[10];
|
|
static const u8 sShieldRegenTimes[10];
|
|
static mColor sGuideColor1;
|
|
static mColor sGuideColor2;
|
|
static mColor sGuideColor3;
|
|
|
|
protected:
|
|
/* 0x370 */ mHeapAllocator_c mModelAllocator;
|
|
/* 0x38C */ mHeapAllocator_c mSwordAllocator;
|
|
/* 0x3A8 */ mHeapAllocator_c mShieldAllocator;
|
|
/* 0x3C4 */ void *mpExternalAnmCharBuffer;
|
|
/* 0x3C8 */ nw4r::g3d::ResFile mSwordRes;
|
|
/* 0x3CC */ nw4r::g3d::ResFile mAlinkRes;
|
|
/* 0x3D0 */ nw4r::g3d::ResFile mPlCommonAnimeRes;
|
|
/* 0x3D4 */ nw4r::g3d::ResFile mPlCommonSoundRes;
|
|
/* 0x3D8 */ nw4r::g3d::ResFile mCurrentRes;
|
|
/* 0x3DC */ nw4r::g3d::ResFile mAlink2Res;
|
|
/* 0x3E0 */ daPlBaseMdl_c mMainMdl;
|
|
/* 0x440 */ daPlBaseMainCallback_c mMainBodyCallback;
|
|
/* 0x448 */ m3d::mdl_c mHeadMdl;
|
|
/* 0x46C */ daPlBaseHeadCallback_c mHeadCallback;
|
|
/* 0x474 */ m3d::smdl_c mFaceMdl;
|
|
/* 0x490 */ m3d::anmChr_c mFaceAnmChr;
|
|
/* 0x4C8 */ void *mpAnmCharBuffer;
|
|
/* 0x4CC */ m3d::anmTexPat_c mFaceTexPat;
|
|
/* 0x4F8 */ void *mpTexPatBuffer;
|
|
/* 0x4FC */ m3d::anmTexSrt_c mFaceTexSrt;
|
|
/* 0x528 */ void *mpTexSrtBuffer;
|
|
/* 0x52C */ m3d::anmChr_c mHeadAnmChr;
|
|
/* 0x564 */ m3d::smdl_c mHandsMdl;
|
|
/* 0x580 */ daPlBaseHandsCallback_c mCalcWorldCallback;
|
|
/* 0x588 */ daPlBaseScnObjCallback_c mScnObjCallback;
|
|
/* 0x598 */ m3d::smdl_c mSwordMdl;
|
|
/* 0x5B4 */ m3d::anmMatClr_c mSwordAnmMatClr;
|
|
/* 0x5E0 */ m3d::smdl_c mShieldMdl;
|
|
/* 0x5FC */ m3d::anmTexPat_c mShieldAnmTexPat1;
|
|
/* 0x628 */ m3d::anmTexPat_c mShieldAnmTexPat2;
|
|
/* 0x654 */ m3d::smdl_c mSheathMdl;
|
|
/* 0x670 */ m3d::smdl_c mUnkMdl1;
|
|
/* 0x68C */ m3d::anmChr_c mAnmChr;
|
|
/* 0x6C4 */ m3d::anmChrBlend_c mAnmChrBlend;
|
|
/* 0x6EC */ dScnCallback_c mScnCallback1;
|
|
/* 0x6F8 */ dScnCallback_c mScnCallback2;
|
|
/* 0x704 */ dScnCallback_c mScnCallback3;
|
|
/* 0x710 */ dScnCallback_c mScnCallback4;
|
|
/* 0x71C */ dScnCallback_c mScnCallback5;
|
|
/* 0x728 */ daPlBaseAnmChr_c mAnmChrs[6];
|
|
/* 0x878 */ dCcD_Cyl mCcCyls[3];
|
|
/* 0xC68 */ dCcD_Cps mCcCpss[3];
|
|
/* 0x10B8 */ dCcD_Cyl mCcCyl;
|
|
/* 0x1208 */ u8 field_0x1208[2];
|
|
/* 0x120A */ u8 field_0x120A;
|
|
/* 0x120B */ u8 mTunicType;
|
|
/* 0x120C */ u8 mCurrentAnmChrIdx;
|
|
/* 0x120D */ u8 mShieldPouchSlot;
|
|
/* 0x120E */ s8 mPouchMatId;
|
|
/* 0x120F */ s8 mBeltMatId;
|
|
/* 0x1210 */ s8 mLowbodyMapId;
|
|
/* 0x1211 */ s8 mLowotherMapId;
|
|
/* 0x1212 */ s8 mPouch2MatId;
|
|
/* 0x1213 */ s8 mUpbodyMatId;
|
|
/* 0x1214 */ s8 mUpotherMatId;
|
|
/* 0x1215 */ s8 mBelt2MatId;
|
|
/* 0x1216 */ s8 mCapMatId;
|
|
/* 0x1217 */ s8 mSkinMatId;
|
|
/* 0x1218 */ u8 mSkywardStrikeChargeDuration;
|
|
/* 0x1219 */ u8 field_0x1219;
|
|
/* 0x121A */ u16 mAnimations[6];
|
|
/* 0x1226 */ u16 mFaceAnmChrIdx1;
|
|
/* 0x1228 */ u16 mFaceAnmChrIdx2;
|
|
/* 0x122A */ u16 mFaceAnmTexPatIdx1;
|
|
/* 0x122C */ u16 mFaceAnmTexPatIdx2;
|
|
/* 0x122E */ u16 mFaceAnmTexSrtIdx1;
|
|
/* 0x1230 */ u16 mFaceAnmTexSrtIdx2;
|
|
/* 0x1232 */ u16 mBreakingEffect;
|
|
/* 0x1234 */ mAng mWaistZRot;
|
|
/* 0x1236 */ mAng mWaistYRot;
|
|
/* 0x1238 */ mAng field_0x1238[5];
|
|
/* 0x1242 */ mAng field_0x1242[5];
|
|
/* 0x124C */ u8 _0x124C[0x1256 - 0x124C];
|
|
/* 0x1256 */ mAng field_0x1256;
|
|
/* 0x1258 */ mAng field_0x1258;
|
|
/* 0x125A */ mAng field_0x125A;
|
|
/* 0x125C */ mAng mRSkirtR1Rot;
|
|
/* 0x125E */ mAng mRSkirtL1Rot;
|
|
/* 0x1260 */ mAng mRightHandRotation;
|
|
/* 0x1262 */ mAng mHeadZRot;
|
|
/* 0x1264 */ mAng mHeadYRot;
|
|
/* 0x1266 */ mAng mHeadXRot;
|
|
/* 0x1268 */ mAng field_0x1268;
|
|
/* 0x126A */ mAng field_0x126A;
|
|
/* 0x126C */ mAng field_0x126C;
|
|
/* 0x1270 */ f32 field_0x1270;
|
|
/* 0x1274 */ f32 field_0x1274;
|
|
/* 0x1278 */ f32 field_0x1278;
|
|
/* 0x127C */ mVec3_c field_0x127C;
|
|
/* 0x1288 */ mVec3_c mCenterTranslation;
|
|
/* 0x1294 */ mVec3_c mHeadTranslation;
|
|
/* 0x12A0 */ mVec3_c mPositionAboveLink;
|
|
/* 0x12AC */ mVec3_c mTranslationHand[2];
|
|
/* 0x12C4 */ mVec3_c mTranslationWeapon[2];
|
|
/* 0x12DC */ mVec3_c mToeTranslation[2];
|
|
/* 0x12F4 */ mVec3_c field_0x12F4;
|
|
/* 0x1300 */ mQuat_c field_0x1300[4];
|
|
/* 0x1340 */ mQuat_c mQuat1;
|
|
/* 0x1350 */ mQuat_c mQuat2;
|
|
/* 0x1360 */ dAcRef_c<dAcObjBase_c> mCarriedActorRef; // not sure about the class
|
|
/* 0x136C */ mAng *field_0x136C;
|
|
/* 0x1370 */ mAng *field_0x1370;
|
|
/* 0x1374 */ mAng *field_0x1374; // x3
|
|
/* 0x1378 */ mAng *field_0x1378; // x3
|
|
};
|
|
|
|
#endif
|