Add baked offset parameters
This commit is contained in:
parent
a77f95dabc
commit
dc99014d2a
5 changed files with 26 additions and 7 deletions
|
|
@ -1806,7 +1806,7 @@ boolean HWR_DrawModel(gl_vissprite_t *spr)
|
|||
// x offset
|
||||
xx = FIXED_TO_FLOAT(FixedMul(FixedMul(
|
||||
FixedMul(xoffs,spr->mobj->spritexscale),
|
||||
hflipmul),
|
||||
hflipmul),
|
||||
FINECOSINE(pitchR >> ANGLETOFINESHIFT)
|
||||
));
|
||||
xy = FIXED_TO_FLOAT(FixedMul(FixedMul(
|
||||
|
|
@ -1818,7 +1818,7 @@ boolean HWR_DrawModel(gl_vissprite_t *spr)
|
|||
// y offset
|
||||
yx = FIXED_TO_FLOAT(FixedMul(FixedMul(
|
||||
FixedMul(yoffs,spr->mobj->spritexscale),
|
||||
hflipmul),
|
||||
hflipmul),
|
||||
FINECOSINE(rollR >> ANGLETOFINESHIFT)
|
||||
));
|
||||
|
||||
|
|
|
|||
|
|
@ -6752,7 +6752,6 @@ void P_RunOverlays(void)
|
|||
mo->bakezpiv = mo->target->bakezpiv;
|
||||
}
|
||||
|
||||
|
||||
if ((mo->flags & MF_DONTENCOREMAP) != (mo->target->flags & MF_DONTENCOREMAP))
|
||||
mo->flags ^= MF_DONTENCOREMAP;
|
||||
|
||||
|
|
|
|||
|
|
@ -3979,6 +3979,21 @@ static thinker_t* LoadMobjThinker(savebuffer_t *save, actionf_p1 thinker)
|
|||
mobj->bakexpiv = mobj->bakeypiv = mobj->bakezpiv = 0;
|
||||
}
|
||||
|
||||
if (diff3 & MD3_BAKEDOFFSET)
|
||||
{
|
||||
mobj->bakexoff = READFIXED(save->p);
|
||||
mobj->bakeyoff = READFIXED(save->p);
|
||||
mobj->bakezoff = READFIXED(save->p);
|
||||
mobj->bakexpiv = READFIXED(save->p);
|
||||
mobj->bakeypiv = READFIXED(save->p);
|
||||
mobj->bakezpiv = READFIXED(save->p);
|
||||
}
|
||||
else
|
||||
{
|
||||
mobj->bakexoff = mobj->bakeyoff = mobj->bakezoff = 0;
|
||||
mobj->bakexpiv = mobj->bakeypiv = mobj->bakezpiv = 0;
|
||||
}
|
||||
|
||||
// Reset some non-synch values
|
||||
mobj->sloperoll = 0;
|
||||
mobj->slopepitch = 0;
|
||||
|
|
|
|||
|
|
@ -54,6 +54,7 @@ vector2_t* R_RotateSpriteOffsetsByPitchRoll(
|
|||
mobj_t* mobj,
|
||||
boolean vflip,
|
||||
boolean hflip,
|
||||
interpmobjstate_t *interp,
|
||||
vector2_t* out);
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -857,7 +857,7 @@ boolean R_ThingIsFlashing(mobj_t *thing)
|
|||
boolean R_ThingIsUsingBakedOffsets(mobj_t* thing)
|
||||
{
|
||||
return ((thing->bakexoff) || (thing->bakeyoff) || (thing->bakezoff) ||
|
||||
(thing->bakexpiv) || (thing->bakeypiv) || (thing->bakezpiv));
|
||||
(thing->bakexpiv) || (thing->bakeypiv) || (thing->bakezpiv));
|
||||
}
|
||||
|
||||
UINT8 *R_GetSpriteTranslation(vissprite_t *vis)
|
||||
|
|
@ -1940,7 +1940,9 @@ static void R_ProjectSprite(mobj_t *thing)
|
|||
if (R_ThingIsUsingBakedOffsets(thing))
|
||||
{
|
||||
R_RotateSpriteOffsetsByPitchRoll(thing,
|
||||
vflip, hflip, &visoffs);
|
||||
vflip,
|
||||
hflip,
|
||||
&visoffs);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
@ -1948,7 +1950,8 @@ static void R_ProjectSprite(mobj_t *thing)
|
|||
{
|
||||
spr_offset = interp.spritexoffset;
|
||||
#ifdef ROTSPRITE
|
||||
spr_topoffset = (interp.spriteyoffset + FixedDiv((visoffs.y * visoffymul), mapobjectscale));
|
||||
spr_topoffset = (interp.spriteyoffset + FixedDiv((visoffs.y * visoffymul),
|
||||
mapobjectscale));
|
||||
#else
|
||||
spr_topoffset = interp.spriteyoffset;
|
||||
#endif
|
||||
|
|
@ -1963,7 +1966,8 @@ static void R_ProjectSprite(mobj_t *thing)
|
|||
spr_offset += (interp.spritexoffset) * flipoffset;
|
||||
#ifdef ROTSPRITE
|
||||
spr_topoffset += (interp.spriteyoffset + FixedDiv((visoffs.y * visoffymul),
|
||||
mapobjectscale)) * flipoffset;
|
||||
mapobjectscale))
|
||||
* flipoffset;
|
||||
#else
|
||||
spr_topoffset += interp.spriteyoffset * flipoffset;
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Reference in a new issue