mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-12-25 01:12:39 +00:00
Add R_SpriteRotationAngle function
Gets the rotation angle for the mobj's sprite. Meant for pitch & roll later, but that part is if'd out currently and just returns mobj->rollangle
This commit is contained in:
parent
875493d778
commit
fed0ed98de
4 changed files with 33 additions and 4 deletions
|
|
@ -4902,6 +4902,7 @@ static void HWR_ProjectSprite(mobj_t *thing)
|
|||
#ifdef ROTSPRITE
|
||||
patch_t *rotsprite = NULL;
|
||||
INT32 rollangle = 0;
|
||||
angle_t spriterotangle = 0;
|
||||
#endif
|
||||
|
||||
if (!thing)
|
||||
|
|
@ -5025,9 +5026,11 @@ static void HWR_ProjectSprite(mobj_t *thing)
|
|||
spr_topoffset = spritecachedinfo[lumpoff].topoffset;
|
||||
|
||||
#ifdef ROTSPRITE
|
||||
if (thing->rollangle)
|
||||
spriterotangle = R_SpriteRotationAngle(thing);
|
||||
|
||||
if (spriterotangle != 0)
|
||||
{
|
||||
rollangle = R_GetRollAngle(thing->rollangle);
|
||||
rollangle = R_GetRollAngle(spriterotangle);
|
||||
if (!(sprframe->rotsprite.cached & (1<<rot)))
|
||||
R_CacheRotSprite(thing->sprite, (thing->frame & FF_FRAMEMASK), sprinfo, sprframe, rot, flip);
|
||||
rotsprite = sprframe->rotsprite.patch[rot][rollangle];
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@
|
|||
#include "v_video.h"
|
||||
#include "z_zone.h"
|
||||
#include "w_wad.h"
|
||||
#include "r_main.h" // R_PointToAngle
|
||||
|
||||
#ifdef HWRENDER
|
||||
#include "hardware/hw_glob.h"
|
||||
|
|
@ -1605,6 +1606,27 @@ void R_LoadSpriteInfoLumps(UINT16 wadnum, UINT16 numlumps)
|
|||
}
|
||||
|
||||
#ifdef ROTSPRITE
|
||||
//
|
||||
// R_SpriteRotationAngle
|
||||
//
|
||||
// Gets the rollangle for the input object.
|
||||
//
|
||||
angle_t R_SpriteRotationAngle(mobj_t *mobj)
|
||||
{
|
||||
#if 0
|
||||
angle_t viewingAngle = R_PointToAngle(mobj->x, mobj->y);
|
||||
|
||||
fixed_t pitchMul = -FINESINE(viewingAngle >> ANGLETOFINESHIFT);
|
||||
fixed_t rollMul = FINECOSINE(viewingAngle >> ANGLETOFINESHIFT);
|
||||
|
||||
angle_t rollOrPitch = FixedMul(mobj->pitch, pitchMul) + FixedMul(mobj->roll, rollMul);
|
||||
|
||||
return (rollOrPitch + mobj->rollangle);
|
||||
#else
|
||||
return mobj->rollangle;
|
||||
#endif
|
||||
}
|
||||
|
||||
//
|
||||
// R_GetRollAngle
|
||||
//
|
||||
|
|
|
|||
|
|
@ -122,6 +122,7 @@ void R_ParseSPRTINFOLump(UINT16 wadNum, UINT16 lumpNum);
|
|||
|
||||
// Sprite rotation
|
||||
#ifdef ROTSPRITE
|
||||
angle_t R_SpriteRotationAngle(mobj_t *mobj);
|
||||
INT32 R_GetRollAngle(angle_t rollangle);
|
||||
void R_CacheRotSprite(spritenum_t sprnum, UINT8 frame, spriteinfo_t *sprinfo, spriteframe_t *sprframe, INT32 rot, UINT8 flip);
|
||||
void R_FreeSingleRotSprite(spritedef_t *spritedef);
|
||||
|
|
|
|||
|
|
@ -1446,6 +1446,7 @@ static void R_ProjectSprite(mobj_t *thing)
|
|||
#ifdef ROTSPRITE
|
||||
patch_t *rotsprite = NULL;
|
||||
INT32 rollangle = 0;
|
||||
angle_t spriterotangle = 0;
|
||||
#endif
|
||||
|
||||
// transform the origin point
|
||||
|
|
@ -1571,9 +1572,11 @@ static void R_ProjectSprite(mobj_t *thing)
|
|||
spr_topoffset = spritecachedinfo[lump].topoffset;
|
||||
|
||||
#ifdef ROTSPRITE
|
||||
if (thing->rollangle)
|
||||
spriterotangle = R_SpriteRotationAngle(thing);
|
||||
|
||||
if (spriterotangle != 0)
|
||||
{
|
||||
rollangle = R_GetRollAngle(thing->rollangle);
|
||||
rollangle = R_GetRollAngle(spriterotangle);
|
||||
if (!(sprframe->rotsprite.cached & (1<<rot)))
|
||||
R_CacheRotSprite(thing->sprite, frame, sprinfo, sprframe, rot, flip);
|
||||
rotsprite = sprframe->rotsprite.patch[rot][rollangle];
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue