mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-04-27 12:31:54 +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
|
#ifdef ROTSPRITE
|
||||||
patch_t *rotsprite = NULL;
|
patch_t *rotsprite = NULL;
|
||||||
INT32 rollangle = 0;
|
INT32 rollangle = 0;
|
||||||
|
angle_t spriterotangle = 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (!thing)
|
if (!thing)
|
||||||
|
|
@ -5025,9 +5026,11 @@ static void HWR_ProjectSprite(mobj_t *thing)
|
||||||
spr_topoffset = spritecachedinfo[lumpoff].topoffset;
|
spr_topoffset = spritecachedinfo[lumpoff].topoffset;
|
||||||
|
|
||||||
#ifdef ROTSPRITE
|
#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)))
|
if (!(sprframe->rotsprite.cached & (1<<rot)))
|
||||||
R_CacheRotSprite(thing->sprite, (thing->frame & FF_FRAMEMASK), sprinfo, sprframe, rot, flip);
|
R_CacheRotSprite(thing->sprite, (thing->frame & FF_FRAMEMASK), sprinfo, sprframe, rot, flip);
|
||||||
rotsprite = sprframe->rotsprite.patch[rot][rollangle];
|
rotsprite = sprframe->rotsprite.patch[rot][rollangle];
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,7 @@
|
||||||
#include "v_video.h"
|
#include "v_video.h"
|
||||||
#include "z_zone.h"
|
#include "z_zone.h"
|
||||||
#include "w_wad.h"
|
#include "w_wad.h"
|
||||||
|
#include "r_main.h" // R_PointToAngle
|
||||||
|
|
||||||
#ifdef HWRENDER
|
#ifdef HWRENDER
|
||||||
#include "hardware/hw_glob.h"
|
#include "hardware/hw_glob.h"
|
||||||
|
|
@ -1605,6 +1606,27 @@ void R_LoadSpriteInfoLumps(UINT16 wadnum, UINT16 numlumps)
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef ROTSPRITE
|
#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
|
// R_GetRollAngle
|
||||||
//
|
//
|
||||||
|
|
|
||||||
|
|
@ -122,6 +122,7 @@ void R_ParseSPRTINFOLump(UINT16 wadNum, UINT16 lumpNum);
|
||||||
|
|
||||||
// Sprite rotation
|
// Sprite rotation
|
||||||
#ifdef ROTSPRITE
|
#ifdef ROTSPRITE
|
||||||
|
angle_t R_SpriteRotationAngle(mobj_t *mobj);
|
||||||
INT32 R_GetRollAngle(angle_t rollangle);
|
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_CacheRotSprite(spritenum_t sprnum, UINT8 frame, spriteinfo_t *sprinfo, spriteframe_t *sprframe, INT32 rot, UINT8 flip);
|
||||||
void R_FreeSingleRotSprite(spritedef_t *spritedef);
|
void R_FreeSingleRotSprite(spritedef_t *spritedef);
|
||||||
|
|
|
||||||
|
|
@ -1446,6 +1446,7 @@ static void R_ProjectSprite(mobj_t *thing)
|
||||||
#ifdef ROTSPRITE
|
#ifdef ROTSPRITE
|
||||||
patch_t *rotsprite = NULL;
|
patch_t *rotsprite = NULL;
|
||||||
INT32 rollangle = 0;
|
INT32 rollangle = 0;
|
||||||
|
angle_t spriterotangle = 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// transform the origin point
|
// transform the origin point
|
||||||
|
|
@ -1571,9 +1572,11 @@ static void R_ProjectSprite(mobj_t *thing)
|
||||||
spr_topoffset = spritecachedinfo[lump].topoffset;
|
spr_topoffset = spritecachedinfo[lump].topoffset;
|
||||||
|
|
||||||
#ifdef ROTSPRITE
|
#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)))
|
if (!(sprframe->rotsprite.cached & (1<<rot)))
|
||||||
R_CacheRotSprite(thing->sprite, frame, sprinfo, sprframe, rot, flip);
|
R_CacheRotSprite(thing->sprite, frame, sprinfo, sprframe, rot, flip);
|
||||||
rotsprite = sprframe->rotsprite.patch[rot][rollangle];
|
rotsprite = sprframe->rotsprite.patch[rot][rollangle];
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue