This commit is contained in:
robojumper
2025-05-23 19:57:58 +02:00
parent f2330a667e
commit fa855a5363
3 changed files with 539 additions and 28 deletions
+512 -2
View File
@@ -23,7 +23,7 @@ class daPlayerModelBase_c;
class daPlBaseScnObjCallback_c : public dScnCallback_c {
public:
daPlBaseScnObjCallback_c(dAcObjBase_c *b) : dScnCallback_c(b), field_0x0C(b) {}
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;
@@ -31,7 +31,7 @@ public:
/* 0x18 */ virtual void ExecCallback_DRAW_OPA(nw4r::g3d::ScnObj::Timing, nw4r::g3d::ScnObj *, u32, void *) override;
private:
/* 0x0C */ dAcObjBase_c *field_0x0C;
/* 0x0C */ dAcObjBase_c *mpPlayer;
};
class daPlBaseMdlCallback_c : public m3d::mdl_c::mdlCallback_c {
@@ -170,6 +170,516 @@ public:
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,
+1 -3
View File
@@ -96,9 +96,7 @@ void daPlayerActBase_c::setPosYRot(const mVec3_c &pos, mAng rot, bool force, UNK
void daPlayerActBase_c::setTransform(const mMtx_c &mtx, bool force, UNKWORD a4, UNKWORD a5) {
mVec3_c translate;
translate.x = mtx.m[0][3];
translate.y = mtx.m[1][3];
translate.z = mtx.m[2][3];
mtx.getTranslation(translate);
mAng3_c rot;
mtx.toRot(rot);
setPosRot(&translate, &rot, force, a4, a5);
+26 -23
View File
@@ -573,7 +573,7 @@ void daPlBaseScnObjCallback_c::ExecCallback_DRAW_OPA(
for (int i = 0; i < 2; i++) {
u8 defaultMat = sSavedHandMats[i];
// TODO: Is there a way to avoid this cast?
u8 playerHandMat = static_cast<daPlayerModelBase_c *>(field_0x0C)->getHandMat(i);
u8 playerHandMat = static_cast<daPlayerModelBase_c *>(mpPlayer)->getHandMat(i);
if (playerHandMat != defaultMat) {
if (defaultMat != 0xFE) {
shp = mdl.GetResShp(sHandMats[defaultMat]);
@@ -604,8 +604,10 @@ void daPlBaseMdlCallback_c::ExecCallbackA(
nw4r::g3d::ChrAnmResult *result, nw4r::g3d::ResMdl mdl, nw4r::g3d::FuncObjCalcWorld *calcWorld
) {
u16 nodeId = calcWorld->GetCallbackNodeID();
// Only run the full callback for certain specified nodes - TODO which ones?
if ((nodeId >= mNodeIdMin && nodeId < mNodeIdMax) || (mNodeIdMin == 16 && nodeId == 0)) {
// Only run the full callback for certain specified nodes - but under which conditions is
// mNodeIdMin == daPlayerModelBase_c::PLAYER_MAIN_NODE_WAIST?
if ((nodeId >= mNodeIdMin && nodeId < mNodeIdMax) || (mNodeIdMin == daPlayerModelBase_c::PLAYER_MAIN_NODE_WAIST &&
nodeId == daPlayerModelBase_c::PLAYER_MAIN_NODE_CENTER)) {
m3d::mdl_c::mdlCallback_c::ExecCallbackA(result, mdl, calcWorld);
return;
}
@@ -1667,13 +1669,13 @@ bool daPlayerModelBase_c::canStart(bool force, u16 faceIdx, u16 invalidValue, u1
void daPlayerModelBase_c::setFaceTexPat(s32 faceIdx, bool force) {
if ((!force && ((mFaceAnmTexPatIdx1 == faceIdx && mFaceAnmTexPatIdx1 == 1) ||
(checkFaceUpdateFlags(0x40000000) && (faceIdx == 1))))) {
(checkFaceUpdateFlags(0x40000000) && (faceIdx == PLAYER_FACEMABA01))))) {
return;
}
if (faceIdx != 0x38) {
offFaceUpdateFlags(0x40000000);
if (canStart(force, faceIdx, 0x39, &mFaceAnmTexPatIdx1, &mFaceAnmTexPatIdx2)) {
if (canStart(force, faceIdx, PLAYER_FACE_MAX, &mFaceAnmTexPatIdx1, &mFaceAnmTexPatIdx2)) {
nw4r::g3d::ResAnmTexPat anm = getExternalAnmTexPat(sFaceResNames[faceIdx], mpTexPatBuffer, 0x1000);
mFaceTexPat.setAnm(mFaceMdl, anm, 0, m3d::PLAY_MODE_4);
mFaceTexPat.setFrame(0.0f, 0);
@@ -1682,21 +1684,21 @@ void daPlayerModelBase_c::setFaceTexPat(s32 faceIdx, bool force) {
}
void daPlayerModelBase_c::checkFaceTexPat() {
if (mFaceAnmTexPatIdx2 == 0x39) {
if (mFaceAnmTexPatIdx2 == PLAYER_FACE_MAX) {
return;
}
s32 prev = mFaceAnmTexPatIdx1;
mFaceAnmTexPatIdx2 = 0x39;
if (prev >= 0x1F) {
mFaceAnmTexPatIdx2 = PLAYER_FACE_MAX;
if (prev >= PLAYER_FACE_BEDSLEEP) {
prev = 1;
}
mFaceAnmTexPatIdx1 = 0x39;
mFaceAnmTexPatIdx1 = PLAYER_FACE_MAX;
setFaceTexPat(prev, false);
}
void daPlayerModelBase_c::setFaceTexSrt(s32 faceIdx, bool force) {
offFaceUpdateFlags(0x80000000);
if (canStart(force, faceIdx, 0x39, &mFaceAnmTexSrtIdx1, &mFaceAnmTexSrtIdx2)) {
if (canStart(force, faceIdx, PLAYER_FACE_MAX, &mFaceAnmTexSrtIdx1, &mFaceAnmTexSrtIdx2)) {
nw4r::g3d::ResAnmTexSrt anm = getExternalAnmTexSrt(sFaceResNames[faceIdx], mpTexSrtBuffer, 0x1000);
mFaceTexSrt.setAnm(mFaceMdl, anm, 0, m3d::PLAY_MODE_4);
mFaceTexSrt.setFrame(0.0f, 0);
@@ -1704,24 +1706,25 @@ void daPlayerModelBase_c::setFaceTexSrt(s32 faceIdx, bool force) {
}
void daPlayerModelBase_c::checkFaceTexSrt() {
if (mFaceAnmTexSrtIdx2 == 0x39) {
if (mFaceAnmTexSrtIdx2 == PLAYER_FACE_MAX) {
return;
}
s32 prev = mFaceAnmTexSrtIdx1;
mFaceAnmTexSrtIdx2 = 0x39;
if (prev >= 0x1F) {
mFaceAnmTexSrtIdx2 = PLAYER_FACE_MAX;
if (prev >= PLAYER_FACE_BEDSLEEP) {
prev = 0;
}
mFaceAnmTexSrtIdx1 = 0x39;
mFaceAnmTexSrtIdx1 = PLAYER_FACE_MAX;
setFaceTexSrt(prev, false);
}
void daPlayerModelBase_c::setFaceAnmChr(s32 faceIdx, bool force) {
if (faceIdx == 0x38 || (!force && (checkFaceUpdateFlags(0x20000000) && (faceIdx == 0 || faceIdx == 2)))) {
if (faceIdx == PLAYER_FACE_NONE || (!force && (checkFaceUpdateFlags(0x20000000) &&
(faceIdx == PLAYER_FACE_DEFAULT || faceIdx == PLAYER_FACE_M)))) {
return;
}
offFaceUpdateFlags(0x20000000);
if (canStart(force, faceIdx, 0x39, &mFaceAnmChrIdx1, &mFaceAnmChrIdx2)) {
if (canStart(force, faceIdx, PLAYER_FACE_MAX, &mFaceAnmChrIdx1, &mFaceAnmChrIdx2)) {
nw4r::g3d::ResAnmChr anm = getExternalAnmChr(sFaceResNames[faceIdx], mpAnmCharBuffer, 0x1000);
mFaceAnmChr.setAnm(mFaceMdl, anm, m3d::PLAY_MODE_4);
mFaceAnmChr.setFrameOnly(0.0f);
@@ -1730,15 +1733,15 @@ void daPlayerModelBase_c::setFaceAnmChr(s32 faceIdx, bool force) {
}
void daPlayerModelBase_c::checkFaceAnmChr() {
if (mFaceAnmChrIdx2 == 0x39) {
if (mFaceAnmChrIdx2 == PLAYER_FACE_MAX) {
return;
}
s32 prev = mFaceAnmChrIdx1;
mFaceAnmChrIdx2 = 0x39;
if (prev >= 0x1F) {
mFaceAnmChrIdx2 = PLAYER_FACE_MAX;
if (prev >= PLAYER_FACE_BEDSLEEP) {
prev = 0;
}
mFaceAnmChrIdx1 = 0x39;
mFaceAnmChrIdx1 = PLAYER_FACE_MAX;
setFaceAnmChr(prev, false);
}
@@ -1763,7 +1766,7 @@ void daPlayerModelBase_c::loadAnmChr(s32 childIdx, s32 animIdx, void *dest, u32
void daPlayerModelBase_c::removeAnmChr(s32 childIdx) {
mAnmChrs[childIdx].getAnimObj()->Release();
mAnmChrBlend.detach(childIdx);
mAnimations[childIdx] = 443;
mAnimations[childIdx] = PLAYER_ANIM_MAX;
}
void daPlayerModelBase_c::loadSound(nw4r::g3d::ResFile &file, const char *name, s32 childIdx) {
@@ -1906,7 +1909,7 @@ void daPlayerModelBase_c::setPosCopy3() {
switch (getCurrentAction()) {
case 0x82:
case 0x83:
case 0x84: {
case 0x84: /* CLIMBING_ONTO_TIGHTROPE */ {
label:
const nw4r::math::MTX34 *c = mHeadMdl.getLocalMtx();
poscopy3.x = c->_03;
@@ -1954,6 +1957,6 @@ bool daPlayerModelBase_c::fn_80061410() {
// and this causes the vtable and all other weak functions to be here
/* vt 0x114 */ void daPlayerModelBase_c::somethingWithCarriedActorFlags() {
if (mCarriedActorRef.get() != nullptr) {
mCarriedActorRef.get()->mObjectActorFlags |= 0x200;
mCarriedActorRef.get()->setObjectProperty(0x200);
}
}