mirror of
https://github.com/DrBeef/Raze.git
synced 2024-11-16 01:11:28 +00:00
Add bit 1 to action flags: use the viewpoint's position relative to the actor when calculating which rotation to display, instead of the viewpoint's angle, for viewtypes 2/3/4/8. 5/7 already do this.
git-svn-id: https://svn.eduke32.com/eduke32@5850 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
d8ce0f042d
commit
d466b2ae51
2 changed files with 23 additions and 6 deletions
|
@ -110,6 +110,11 @@ enum actionparams
|
|||
ACTION_PARAM_COUNT,
|
||||
};
|
||||
|
||||
enum actionflags
|
||||
{
|
||||
AF_VIEWPOINT = 1u<<0u,
|
||||
};
|
||||
|
||||
#ifdef LUNATIC
|
||||
struct action
|
||||
{
|
||||
|
|
|
@ -4077,8 +4077,10 @@ PALONLY:
|
|||
goto skip;
|
||||
|
||||
l = apScript[scrofs_action + ACTION_VIEWTYPE];
|
||||
uint16_t const action_flags = apScript[scrofs_action + ACTION_FLAGS];
|
||||
#else
|
||||
l = viewtype;
|
||||
uint16_t const action_flags = actor[i].ac.flags;
|
||||
#endif
|
||||
|
||||
#ifdef USE_OPENGL
|
||||
|
@ -4092,19 +4094,26 @@ PALONLY:
|
|||
switch (l)
|
||||
{
|
||||
case 2:
|
||||
frameOffset = (((pSprite->ang+3072+128-oura)&2047)>>8)&1;
|
||||
{
|
||||
int const viewAng = (action_flags & AF_VIEWPOINT) ? getangle(pSprite->x-ourx, pSprite->y-oury) : oura;
|
||||
frameOffset = (((pSprite->ang + 3072 + 128 - viewAng) & 2047) >> 8) & 1;
|
||||
break;
|
||||
}
|
||||
|
||||
case 3:
|
||||
case 4:
|
||||
frameOffset = (((pSprite->ang+3072+128-oura)&2047)>>7)&7;
|
||||
{
|
||||
int const viewAng = (action_flags & AF_VIEWPOINT) ? getangle(pSprite->x-ourx, pSprite->y-oury) : oura;
|
||||
frameOffset = (((pSprite->ang + 3072 + 128 - viewAng) & 2047) >> 7) & 7;
|
||||
if (frameOffset > 3)
|
||||
{
|
||||
t->cstat |= 4;
|
||||
frameOffset = 7-frameOffset;
|
||||
frameOffset = 7 - frameOffset;
|
||||
}
|
||||
else t->cstat &= ~4;
|
||||
else
|
||||
t->cstat &= ~4;
|
||||
break;
|
||||
}
|
||||
|
||||
case 5:
|
||||
case -5:
|
||||
|
@ -4116,10 +4125,13 @@ PALONLY:
|
|||
break;
|
||||
case 8:
|
||||
case -8:
|
||||
frameOffset = (l > 0) ? (((pSprite->ang + 3072 + 128 - oura) & 2047) >> 8) & 7
|
||||
: (((oura + 3072 + 128 - pSprite->ang) & 2047) >> 8) & 7;
|
||||
{
|
||||
int const viewAng = (action_flags & AF_VIEWPOINT) ? getangle(pSprite->x-ourx, pSprite->y-oury) : oura;
|
||||
int const angDiff = l > 0 ? pSprite->ang - viewAng : viewAng - pSprite->ang;
|
||||
frameOffset = (((angDiff + 3072 + 128) & 2047) >> 8) & 7;
|
||||
t->cstat &= ~4;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
frameOffset = 0;
|
||||
break;
|
||||
|
|
Loading…
Reference in a new issue