Set names for headanim symbols

This commit is contained in:
Ryan Dwyer 2023-08-05 18:16:16 +10:00
parent aeca25d984
commit f1e1e6b204
11 changed files with 49 additions and 52 deletions

View File

@ -1038,7 +1038,7 @@ void bgrab0f0ce924(void)
g_Vars.currentplayer->speedforwards += sp70;
g_Vars.currentplayer->speedsideways += sp6c;
mult = var80075c00[1].unk0c * 0.5f * g_Vars.lvupdate60freal;
mult = g_HeadAnims[HEADANIM_MOVING].translateperframe * 0.5f * g_Vars.lvupdate60freal;
sp88 = mult * g_Vars.currentplayer->speedsideways;
speedsideways = g_Vars.currentplayer->speedsideways * 0.8f;
@ -1149,7 +1149,7 @@ void bgrab0f0ce924(void)
sp3c = -1.0f;
}
if (g_Vars.currentplayer->headanim == 1) {
if (g_Vars.currentplayer->headanim == HEADANIM_MOVING) {
breathing *= 1.2f;
}

View File

@ -11,13 +11,11 @@
#include "data.h"
#include "types.h"
struct var80075c00 var80075c00[] = {
struct headanim g_HeadAnims[] = {
{ ANIM_002B, 9.5, 27, 0, 0, 1.5 },
{ ANIM_0029, 7.5, 17, 0, 1.5, 100 },
};
struct coord var80075c30 = {0, 0, 0};
void bheadFlipAnimation(void)
{
g_Vars.currentplayer->model.anim->flip = !g_Vars.currentplayer->model.anim->flip;
@ -96,7 +94,7 @@ void bheadUpdateRot(struct coord *lookvel, struct coord *upvel)
g_Vars.currentplayer->headup.z = g_Vars.currentplayer->headupsum.z * (1.0f - g_Vars.currentplayer->headdamp);
}
void bheadSetdamp(f32 headdamp)
void bheadSetDamp(f32 headdamp)
{
if (headdamp != g_Vars.currentplayer->headdamp) {
f32 divisor = 1.0f - headdamp;
@ -112,7 +110,7 @@ void bheadSetdamp(f32 headdamp)
void bheadUpdate(f32 arg0, f32 arg1)
{
struct coord headpos = var80075c30;
struct coord headpos = {0, 0, 0};
struct coord lookvel = {0, 0, 1};
struct coord upvel = {0, 1, 0};
f32 animspeed = 0;
@ -120,7 +118,7 @@ void bheadUpdate(f32 arg0, f32 arg1)
if (animHasFrames(g_Vars.currentplayer->model.anim->animnum)) {
animspeed = modelGetAbsAnimSpeed(&g_Vars.currentplayer->model);
if (g_Vars.currentplayer->headanim == 0) {
if (g_Vars.currentplayer->headanim == HEADANIM_RESTING) {
if (animspeed > 0.69999998807907f) {
g_Vars.currentplayer->headamplitude = 1;
} else if (animspeed > 0.1f) {
@ -131,7 +129,7 @@ void bheadUpdate(f32 arg0, f32 arg1)
g_Vars.currentplayer->sideamplitude = g_Vars.currentplayer->headamplitude;
} else {
if (g_Vars.currentplayer->headanim == 1) {
if (g_Vars.currentplayer->headanim == HEADANIM_MOVING) {
g_Vars.currentplayer->headamplitude = 0.89999997615814f;
g_Vars.currentplayer->sideamplitude = 0.5f;
} else {
@ -197,9 +195,9 @@ void bheadUpdate(f32 arg0, f32 arg1)
g_Vars.currentplayer->headwalkingtime60 += g_Vars.lvupdate60;
if (g_Vars.currentplayer->headwalkingtime60 > TICKS(60)) {
bheadSetdamp(PAL ? 0.9785f : 0.982f);
bheadSetDamp(PAL ? 0.9785f : 0.982f);
} else {
bheadSetdamp(PAL ? 0.99699f : 0.99748998880386f);
bheadSetDamp(PAL ? 0.99699f : 0.99748998880386f);
}
} else {
lookvel.x = g_Vars.currentplayer->bondheadmatrices[0].m[2][0];
@ -210,7 +208,7 @@ void bheadUpdate(f32 arg0, f32 arg1)
upvel.y = g_Vars.currentplayer->bondheadmatrices[0].m[1][1];
upvel.z = g_Vars.currentplayer->bondheadmatrices[0].m[1][2];
bheadSetdamp(PAL ? 0.952f : 0.96f);
bheadSetDamp(PAL ? 0.952f : 0.96f);
}
} else {
g_Vars.currentplayer->headbodyoffset.x = g_Vars.currentplayer->standbodyoffset.x;
@ -222,7 +220,7 @@ void bheadUpdate(f32 arg0, f32 arg1)
headpos.z = 0;
g_Vars.currentplayer->headwalkingtime60 = 0;
bheadSetdamp(PAL ? 0.99699f : 0.99748998880386f);
bheadSetDamp(PAL ? 0.99699f : 0.99748998880386f);
if (bmoveGetCrouchPos() != CROUCHPOS_SQUAT) {
g_Vars.currentplayer->standfrac +=
@ -261,31 +259,31 @@ void bheadAdjustAnimation(f32 speed)
struct chrdata *chr = g_Vars.currentplayer->prop->chr;
s32 i;
speed *= var80075c00[1].unk0c;
speed *= g_HeadAnims[HEADANIM_MOVING].translateperframe;
for (i = 0; i < 2; i++) {
if (var80075c00[i].unk14 * var80075c00[i].unk0c >= speed) {
s32 headanim = g_Vars.currentplayer->headanim;
for (i = 0; i < ARRAYCOUNT(g_HeadAnims); i++) {
if (g_HeadAnims[i].maxspeed * g_HeadAnims[i].translateperframe >= speed) {
s32 prevheadanim = g_Vars.currentplayer->headanim;
if (i != headanim) {
if (i != prevheadanim) {
f32 startframe = 0.0f;
if (headanim >= 0) {
startframe = (g_Vars.currentplayer->model.anim->frame - var80075c00[headanim].loopframe)
/ (var80075c00[headanim].endframe - var80075c00[headanim].loopframe);
startframe = var80075c00[i].loopframe + (var80075c00[i].endframe - var80075c00[i].loopframe) * startframe;
if (prevheadanim >= 0) {
startframe = (g_Vars.currentplayer->model.anim->frame - g_HeadAnims[prevheadanim].loopframe)
/ (g_HeadAnims[prevheadanim].endframe - g_HeadAnims[prevheadanim].loopframe);
startframe = g_HeadAnims[i].loopframe + (g_HeadAnims[i].endframe - g_HeadAnims[i].loopframe) * startframe;
}
modelSetAnimation(&g_Vars.currentplayer->model, var80075c00[i].animnum,
modelSetAnimation(&g_Vars.currentplayer->model, g_HeadAnims[i].animnum,
g_Vars.currentplayer->model.anim->flip, startframe, 0.5f, 12);
modelSetAnimLooping(&g_Vars.currentplayer->model, var80075c00[i].loopframe, false);
modelSetAnimEndFrame(&g_Vars.currentplayer->model, var80075c00[i].endframe);
modelSetAnimLooping(&g_Vars.currentplayer->model, g_HeadAnims[i].loopframe, false);
modelSetAnimEndFrame(&g_Vars.currentplayer->model, g_HeadAnims[i].endframe);
modelSetAnimFlipFunction(&g_Vars.currentplayer->model, bheadFlipAnimation);
g_Vars.currentplayer->headanim = i;
}
speed = speed / var80075c00[i].unk0c;
speed = speed / g_HeadAnims[i].translateperframe;
modelSetAnimSpeed(&g_Vars.currentplayer->model, speed * 0.5f, 0);
break;
@ -309,11 +307,11 @@ void bheadSetSpeed(f32 speed)
f32 bheadGetBreathingValue(void)
{
if (g_Vars.currentplayer->headanim >= 0) {
f32 a = g_Vars.currentplayer->bondbreathing * 0.012500001f + 0.004166667f;
f32 a = g_Vars.currentplayer->bondbreathing * 0.012500001f + (1.0f / 240.0f);
f32 b = modelGetAbsAnimSpeed(&g_Vars.currentplayer->model);
if (b > 0) {
f32 c = b / (var80075c00[g_Vars.currentplayer->headanim].endframe - var80075c00[g_Vars.currentplayer->headanim].loopframe);
f32 c = b / (g_HeadAnims[g_Vars.currentplayer->headanim].endframe - g_HeadAnims[g_Vars.currentplayer->headanim].loopframe);
if (c < a) {
c = a;

View File

@ -39,7 +39,7 @@ void bheadReset(void)
modelSetScale(&g_Vars.currentplayer->model, 0.1000000089407f);
modelSetAnimPlaySpeed(&g_Vars.currentplayer->model, (PAL ? 1.2f : 1), 0);
g_Vars.currentplayer->headanim = 0;
g_Vars.currentplayer->headanim = HEADANIM_RESTING;
g_Vars.currentplayer->headdamp = (PAL ? 0.9166f : 0.93f);
g_Vars.currentplayer->headwalkingtime60 = 0;
g_Vars.currentplayer->headamplitude = 1;
@ -87,10 +87,10 @@ void bheadReset(void)
g_Vars.currentplayer->standup[1].z = 0;
g_Vars.currentplayer->standcnt = 0;
for (i = 0; i < 2; i++) {
for (i = 0; i < ARRAYCOUNT(g_HeadAnims); i++) {
s32 translate[3];
func0f0125a0(var80075c00[i].animnum, var80075c00[i].loopframe, var80075c00[i].endframe, translate);
var80075c00[i].unk0c = (translate[2] * 0.1000000089407f) / (var80075c00[i].endframe - var80075c00[i].loopframe);
func0f0125a0(g_HeadAnims[i].animnum, g_HeadAnims[i].loopframe, g_HeadAnims[i].endframe, translate);
g_HeadAnims[i].translateperframe = (translate[2] * 0.1000000089407f) / (g_HeadAnims[i].endframe - g_HeadAnims[i].loopframe);
}
{
@ -112,17 +112,13 @@ void bheadReset(void)
g_Vars.currentplayer->standbodyoffset.z = g_Vars.currentplayer->bondheadmatrices[1].m[3][2] - g_Vars.currentplayer->bondheadmatrices[0].m[3][2];
modelSetAnimation(&g_Vars.currentplayer->model,
var80075c00[g_Vars.currentplayer->headanim].animnum,
g_HeadAnims[g_Vars.currentplayer->headanim].animnum,
0,
var80075c00[g_Vars.currentplayer->headanim].loopframe,
g_HeadAnims[g_Vars.currentplayer->headanim].loopframe,
0.5f, 0);
modelSetAnimLooping(&g_Vars.currentplayer->model,
var80075c00[g_Vars.currentplayer->headanim].loopframe, 0);
modelSetAnimEndFrame(&g_Vars.currentplayer->model,
var80075c00[g_Vars.currentplayer->headanim].endframe);
modelSetAnimLooping(&g_Vars.currentplayer->model, g_HeadAnims[g_Vars.currentplayer->headanim].loopframe, 0);
modelSetAnimEndFrame(&g_Vars.currentplayer->model, g_HeadAnims[g_Vars.currentplayer->headanim].endframe);
modelSetAnimFlipFunction(&g_Vars.currentplayer->model, bheadFlipAnimation);
bheadUpdateIdleRoll();

View File

@ -1543,7 +1543,7 @@ void bwalk0f0c69b8(void)
g_Vars.currentplayer->bondbreathing = 1.0f;
}
mult = var80075c00[1].unk0c * 0.5f * g_Vars.lvupdate60freal;
mult = g_HeadAnims[HEADANIM_MOVING].translateperframe * 0.5f * g_Vars.lvupdate60freal;
spe0 = (g_Vars.currentplayer->speedsideways * spc0 + spc4) * mult;
#if VERSION >= VERSION_NTSC_1_0
@ -1728,7 +1728,7 @@ void bwalk0f0c69b8(void)
sp40 = -1.0f;
}
if (g_Vars.currentplayer->headanim == 1) {
if (g_Vars.currentplayer->headanim == HEADANIM_MOVING) {
breathing *= 1.2f;
}

View File

@ -640,8 +640,8 @@ bool chr0f01f378(struct model *model, struct coord *arg1, struct coord *arg2, f3
bmove0f0cb904(&chr->aibot->shotspeed);
arg2->x += chr->aibot->shotspeed.x * var80075c00[1].unk0c * VAR(lvupdate60freal) * 0.5f;
arg2->z += chr->aibot->shotspeed.z * var80075c00[1].unk0c * VAR(lvupdate60freal) * 0.5f;
arg2->x += chr->aibot->shotspeed.x * g_HeadAnims[HEADANIM_MOVING].translateperframe * VAR(lvupdate60freal) * 0.5f;
arg2->z += chr->aibot->shotspeed.z * g_HeadAnims[HEADANIM_MOVING].translateperframe * VAR(lvupdate60freal) * 0.5f;
}
if (chr->actiontype == ACT_DIE && chr->act_die.timeextra > 0.0f) {

View File

@ -5589,7 +5589,7 @@ void playerChooseThirdPersonAnimation(struct chrdata *chr, s32 crouchpos, f32 sp
}
} else if (turnspeed < 0.4f
|| (chr->prop->type == PROPTYPE_PLAYER
&& g_Vars.players[playermgrGetPlayerNumByProp(chr->prop)]->headanim == 0)) {
&& g_Vars.players[playermgrGetPlayerNumByProp(chr->prop)]->headanim == HEADANIM_RESTING)) {
turnmode = TURNMODE_STAND_SOFTTURN;
speed = 2.0f * turnspeed;

View File

@ -327,7 +327,7 @@ void playermgrAllocatePlayer(s32 index)
g_Vars.players[index]->resetheadrot = true;
g_Vars.players[index]->resetheadtick = true;
g_Vars.players[index]->headanim = 0;
g_Vars.players[index]->headanim = HEADANIM_RESTING;
g_Vars.players[index]->headdamp = (PAL ? 0.9166f : 0.93f);
g_Vars.players[index]->headwalkingtime60 = 0;
g_Vars.players[index]->headamplitude = 1;

View File

@ -1347,6 +1347,9 @@
#define HATTYPE_METAL 3
#define HATTYPE_CLOTH 5
#define HEADANIM_RESTING 0
#define HEADANIM_MOVING 1
#define HEADBODYTYPE_DEFAULT 0
#define HEADBODYTYPE_FEMALE 1
#define HEADBODYTYPE_FEMALEGUARD 2

View File

@ -302,7 +302,7 @@ extern struct menudialogdef g_MpEditSimulant4MbMenuDialog;
extern struct menudialogdef g_AdvancedSetup4MbMenuDialog;
extern struct filelist *g_FileLists[MAX_PLAYERS];
extern bool var80075bd0[];
extern struct var80075c00 var80075c00[];
extern struct headanim g_HeadAnims[2];
extern s32 var80075d60;
extern s32 var80075d64;
extern s32 var80075d68;

View File

@ -10,7 +10,7 @@ void bheadFlipAnimation(void);
void bheadUpdateIdleRoll(void);
void bheadUpdatePos(struct coord *vel);
void bheadUpdateRot(struct coord *lookvel, struct coord *upvel);
void bheadSetdamp(f32 headdamp);
void bheadSetDamp(f32 headdamp);
void bheadUpdate(f32 arg0, f32 arg1);
void bheadAdjustAnimation(f32 speed);
void bheadStartDeathAnimation(s16 animnum, u32 flip, f32 fstarttime, f32 speed);

View File

@ -4810,13 +4810,13 @@ struct animtable {
s32 injuryanimcount;
};
struct var80075c00 {
struct headanim {
s16 animnum;
f32 loopframe;
f32 endframe;
f32 unk0c;
f32 unk10;
f32 unk14;
f32 translateperframe;
f32 minspeed;
f32 maxspeed;
};
struct vimode {