Move every-tick logic from propsTick into backgroundable logic in propsTickPlayer where possible
This commit is contained in:
parent
c588072b28
commit
bd009f7290
|
|
@ -780,6 +780,14 @@ s32 botTick(struct prop *prop)
|
|||
updateable = (prop->flags & PROPFLAG_NOTYETTICKED) && g_Vars.lvupdate240;
|
||||
|
||||
if (aibot) {
|
||||
if (updateable && aibot->unk058 > 0) {
|
||||
if (aibot->unk058 > g_Vars.lvupdate60) {
|
||||
aibot->unk058 -= g_Vars.lvupdate60;
|
||||
} else {
|
||||
aibot->unk058 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (updateable && g_Vars.lvframe60 >= 145) {
|
||||
botTickUnpaused(chr);
|
||||
|
||||
|
|
|
|||
|
|
@ -2071,14 +2071,6 @@ bool chrTickBeams(struct prop *prop)
|
|||
beamTick(&g_Fireslots[chr->fireslots[1]].beam);
|
||||
}
|
||||
|
||||
if (chr->aibot && chr->aibot->unk058 > 0) {
|
||||
if (chr->aibot->unk058 > g_Vars.lvupdate60) {
|
||||
chr->aibot->unk058 -= g_Vars.lvupdate60;
|
||||
} else {
|
||||
chr->aibot->unk058 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1189,17 +1189,31 @@ u32 explosionTick(struct prop *prop)
|
|||
|
||||
u32 explosionTickPlayer(struct prop *prop)
|
||||
{
|
||||
Mtxf *matrix = camGetWorldToScreenMtxf();
|
||||
s32 tickop;
|
||||
|
||||
prop->z = -(matrix->m[0][2] * prop->pos.x + matrix->m[1][2] * prop->pos.y + matrix->m[2][2] * prop->pos.z + matrix->m[3][2]);
|
||||
if (prop->flags & PROPFLAG_NOTYETTICKED) {
|
||||
prop->flags &= ~PROPFLAG_NOTYETTICKED;
|
||||
|
||||
if (prop->z < 100) {
|
||||
prop->z *= 0.5f;
|
||||
} else {
|
||||
prop->z -= 100;
|
||||
tickop = explosionTick(prop);
|
||||
|
||||
if (tickop == TICKOP_FREE) {
|
||||
return tickop;
|
||||
}
|
||||
}
|
||||
|
||||
prop->flags |= PROPFLAG_ONANYSCREENTHISTICK | PROPFLAG_ONTHISSCREENTHISTICK;
|
||||
{
|
||||
Mtxf *matrix = camGetWorldToScreenMtxf();
|
||||
|
||||
prop->z = -(matrix->m[0][2] * prop->pos.x + matrix->m[1][2] * prop->pos.y + matrix->m[2][2] * prop->pos.z + matrix->m[3][2]);
|
||||
|
||||
if (prop->z < 100) {
|
||||
prop->z *= 0.5f;
|
||||
} else {
|
||||
prop->z -= 100;
|
||||
}
|
||||
|
||||
prop->flags |= PROPFLAG_ONANYSCREENTHISTICK | PROPFLAG_ONTHISSCREENTHISTICK;
|
||||
}
|
||||
|
||||
return TICKOP_NONE;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1775,6 +1775,10 @@ void propsTickPlayer(bool islastplayer)
|
|||
|
||||
splatTickChr(prop);
|
||||
|
||||
if (prop->flags & PROPFLAG_NOTYETTICKED) {
|
||||
chrTickBeams(prop);
|
||||
}
|
||||
|
||||
if (chr1 && chr1->aibot) {
|
||||
op = botTick(prop);
|
||||
} else {
|
||||
|
|
@ -1792,6 +1796,10 @@ void propsTickPlayer(bool islastplayer)
|
|||
} else if (prop->type == PROPTYPE_SMOKE) {
|
||||
op = smokeTickPlayer(prop);
|
||||
} else if (prop->type == PROPTYPE_PLAYER) {
|
||||
if (prop->flags & PROPFLAG_NOTYETTICKED) {
|
||||
playerTickBeams(prop);
|
||||
}
|
||||
|
||||
splatTickChr(prop);
|
||||
op = playerTickThirdPerson(prop);
|
||||
}
|
||||
|
|
@ -1837,6 +1845,10 @@ void propsTickPlayer(bool islastplayer)
|
|||
|
||||
splatTickChr(prop);
|
||||
|
||||
if (prop->flags & PROPFLAG_NOTYETTICKED) {
|
||||
chrTickBeams(prop);
|
||||
}
|
||||
|
||||
if (chr2 && chr2->aibot) {
|
||||
op = botTick(prop);
|
||||
} else {
|
||||
|
|
@ -1863,6 +1875,10 @@ void propsTickPlayer(bool islastplayer)
|
|||
} else if (prop->type == PROPTYPE_SMOKE) {
|
||||
op = smokeTickPlayer(prop);
|
||||
} else if (prop->type == PROPTYPE_PLAYER) {
|
||||
if (prop->flags & PROPFLAG_NOTYETTICKED) {
|
||||
playerTickBeams(prop);
|
||||
}
|
||||
|
||||
splatTickChr(prop);
|
||||
op = playerTickThirdPerson(prop);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10017,7 +10017,7 @@ void objInitMatrices(struct prop *prop)
|
|||
}
|
||||
}
|
||||
|
||||
u32 objTick(struct prop *prop)
|
||||
void objTick(struct prop *prop)
|
||||
{
|
||||
struct defaultobj *obj = prop->obj;
|
||||
bool silent = false;
|
||||
|
|
@ -10093,23 +10093,6 @@ u32 objTick(struct prop *prop)
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (obj->type == OBJTYPE_AUTOGUN) {
|
||||
struct autogunobj *autogun = (struct autogunobj *)prop->obj;
|
||||
|
||||
if (autogun->beam) {
|
||||
beamTick(autogun->beam);
|
||||
}
|
||||
} else if (obj->type == OBJTYPE_CHOPPER) {
|
||||
struct chopperobj *chopper = (struct chopperobj *)prop->obj;
|
||||
beamTick(chopper->fireslotthing->beam);
|
||||
} else if (obj->type == OBJTYPE_LIFT) {
|
||||
liftTick(prop);
|
||||
} else if (obj->type == OBJTYPE_ESCASTEP) {
|
||||
escastepTick(prop);
|
||||
}
|
||||
|
||||
return TICKOP_NONE;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -10176,6 +10159,19 @@ s32 objTickPlayer(struct prop *prop)
|
|||
prop->flags &= ~PROPFLAG_NOTYETTICKED;
|
||||
}
|
||||
|
||||
if (fulltick) {
|
||||
if (obj->type == OBJTYPE_AUTOGUN) {
|
||||
struct autogunobj *autogun = (struct autogunobj *)prop->obj;
|
||||
|
||||
if (autogun->beam) {
|
||||
beamTick(autogun->beam);
|
||||
}
|
||||
} else if (obj->type == OBJTYPE_CHOPPER) {
|
||||
struct chopperobj *chopper = (struct chopperobj *)prop->obj;
|
||||
beamTick(chopper->fireslotthing->beam);
|
||||
}
|
||||
}
|
||||
|
||||
if (obj->hidden & OBJHFLAG_PROJECTILE) {
|
||||
struct projectile *projectile = obj->projectile;
|
||||
|
||||
|
|
|
|||
|
|
@ -49,10 +49,6 @@ void propsTick(void)
|
|||
{
|
||||
s32 i;
|
||||
struct prop *prop;
|
||||
struct prop *next;
|
||||
struct prop *next2;
|
||||
s32 done;
|
||||
s32 tickop;
|
||||
|
||||
for (i = 0; i < PLAYERCOUNT(); i++) {
|
||||
g_Vars.players[i]->bondextrapos.x = 0;
|
||||
|
|
@ -63,44 +59,29 @@ void propsTick(void)
|
|||
shieldhitsTick();
|
||||
chraTickBg();
|
||||
|
||||
prop = g_Vars.activeprops;
|
||||
for (i = 0; g_Lifts[i] != NULL; i++) {
|
||||
liftTick(g_Lifts[i]);
|
||||
}
|
||||
|
||||
do {
|
||||
next = prop->next;
|
||||
done = next == g_Vars.pausedprops;
|
||||
tickop = TICKOP_NONE;
|
||||
if (g_Vars.stagenum == STAGE_AIRBASE) {
|
||||
prop = g_Vars.activeprops;
|
||||
|
||||
if (prop->type == PROPTYPE_CHR) {
|
||||
tickop = chrTickBeams(prop);
|
||||
} else if (prop->type & (PROPTYPE_OBJ | PROPTYPE_WEAPON | PROPTYPE_DOOR)) {
|
||||
tickop = objTick(prop);
|
||||
} else if (prop->type == PROPTYPE_EXPLOSION) {
|
||||
tickop = explosionTick(prop);
|
||||
} else if (prop->type == PROPTYPE_SMOKE) {
|
||||
tickop = smokeTick(prop);
|
||||
} else if (prop->type == PROPTYPE_PLAYER) {
|
||||
tickop = playerTickBeams(prop);
|
||||
}
|
||||
|
||||
if (tickop == TICKOP_CHANGEDLIST) {
|
||||
next2 = next;
|
||||
} else {
|
||||
next2 = prop->next;
|
||||
done = next2 == g_Vars.pausedprops;
|
||||
|
||||
if (tickop == TICKOP_RETICK) {
|
||||
propDelist(prop);
|
||||
propActivateThisFrame(prop);
|
||||
|
||||
if (done) {
|
||||
next2 = prop;
|
||||
done = false;
|
||||
}
|
||||
} else {
|
||||
propExecuteTickOperation(prop, tickop);
|
||||
do {
|
||||
if (prop->type == PROPTYPE_OBJ && prop->obj->type == OBJTYPE_ESCASTEP) {
|
||||
escastepTick(prop);
|
||||
}
|
||||
}
|
||||
|
||||
prop = next2;
|
||||
} while (!done);
|
||||
prop = prop->next;
|
||||
} while (prop != g_Vars.pausedprops);
|
||||
} else if (g_Vars.normmplayerisrunning) {
|
||||
prop = g_Vars.activeprops;
|
||||
|
||||
do {
|
||||
if (prop->type & (PROPTYPE_OBJ | PROPTYPE_WEAPON)) {
|
||||
objTick(prop);
|
||||
}
|
||||
|
||||
prop = prop->next;
|
||||
} while (prop != g_Vars.pausedprops);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -580,17 +580,31 @@ u32 smokeTick(struct prop *prop)
|
|||
|
||||
u32 smokeTickPlayer(struct prop *prop)
|
||||
{
|
||||
Mtxf *matrix = camGetWorldToScreenMtxf();
|
||||
s32 tickop;
|
||||
|
||||
prop->z = -(matrix->m[0][2] * prop->pos.x + matrix->m[1][2] * prop->pos.y + matrix->m[2][2] * prop->pos.z + matrix->m[3][2]);
|
||||
if (prop->flags & PROPFLAG_NOTYETTICKED) {
|
||||
prop->flags &= ~PROPFLAG_NOTYETTICKED;
|
||||
|
||||
if (prop->z < 100) {
|
||||
prop->z *= 0.5f;
|
||||
} else {
|
||||
prop->z -= 100;
|
||||
tickop = smokeTick(prop);
|
||||
|
||||
if (tickop == TICKOP_FREE) {
|
||||
return tickop;
|
||||
}
|
||||
}
|
||||
|
||||
prop->flags |= PROPFLAG_ONANYSCREENTHISTICK | PROPFLAG_ONTHISSCREENTHISTICK;
|
||||
{
|
||||
Mtxf *matrix = camGetWorldToScreenMtxf();
|
||||
|
||||
prop->z = -(matrix->m[0][2] * prop->pos.x + matrix->m[1][2] * prop->pos.y + matrix->m[2][2] * prop->pos.z + matrix->m[3][2]);
|
||||
|
||||
if (prop->z < 100) {
|
||||
prop->z *= 0.5f;
|
||||
} else {
|
||||
prop->z -= 100;
|
||||
}
|
||||
|
||||
prop->flags |= PROPFLAG_ONANYSCREENTHISTICK | PROPFLAG_ONTHISSCREENTHISTICK;
|
||||
}
|
||||
|
||||
return TICKOP_NONE;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -197,7 +197,7 @@ void weaponInitMatrices(struct prop *weapon);
|
|||
void hangingmonitorInitMatrices(struct prop *hangingmonitors);
|
||||
void objInitMatrices(struct prop *prop);
|
||||
bool propCanRegen(struct prop *prop);
|
||||
u32 objTick(struct prop *prop);
|
||||
void objTick(struct prop *prop);
|
||||
s32 objTickPlayer(struct prop *prop);
|
||||
Gfx *propsRenderBeams(Gfx *gdl);
|
||||
void tvscreenSetCmdlist(struct tvscreen *screen, u32 *cmdlist);
|
||||
|
|
|
|||
Loading…
Reference in New Issue