mirror of
https://github.com/ZDoom/raze-gles.git
synced 2024-12-31 22:00:46 +00:00
- use all available precision to render Blood's weapon animations mpre smoothly, instead of throwing it away by needlessly storing it in some integer fields.
This commit is contained in:
parent
be9402c4e0
commit
8a31e96602
7 changed files with 20 additions and 14 deletions
|
@ -106,9 +106,8 @@ void hudDraw(PLAYER *gView, int nSectnum, int defaultHoriz, int bobx, int boby,
|
||||||
DTA_FullscreenScale, 3, DTA_VirtualWidth, 320, DTA_VirtualHeight, 200, DTA_ScaleX, crosshair_scale, DTA_ScaleY, crosshair_scale, DTA_CenterOffsetRel, true,
|
DTA_FullscreenScale, 3, DTA_VirtualWidth, 320, DTA_VirtualHeight, 200, DTA_ScaleX, crosshair_scale, DTA_ScaleY, crosshair_scale, DTA_CenterOffsetRel, true,
|
||||||
DTA_ViewportX, windowxy1.x, DTA_ViewportY, windowxy1.y, DTA_ViewportWidth, windowxy2.x - windowxy1.x + 1, DTA_ViewportHeight, windowxy2.y - windowxy1.y + 1, TAG_DONE);
|
DTA_ViewportX, windowxy1.x, DTA_ViewportY, windowxy1.y, DTA_ViewportWidth, windowxy2.x - windowxy1.x + 1, DTA_ViewportHeight, windowxy2.y - windowxy1.y + 1, TAG_DONE);
|
||||||
}
|
}
|
||||||
// This is dumb. Todo: Preserve full precision here!
|
double cX = (bobx / 256.) + 160;
|
||||||
int cX = (bobx >> 8) + 160;
|
double cY = (boby / 256.) + 220 + (zDelta / 128.);
|
||||||
int cY = (boby >> 8) + 220 + (zDelta >> 7);
|
|
||||||
int nShade = sector[nSectnum].floorshade;
|
int nShade = sector[nSectnum].floorshade;
|
||||||
int nPalette = 0;
|
int nPalette = 0;
|
||||||
if (sector[gView->pSprite->sectnum].extra > 0) {
|
if (sector[gView->pSprite->sectnum].extra > 0) {
|
||||||
|
|
|
@ -52,7 +52,7 @@ struct PLAYER;
|
||||||
extern QAV* weaponQAV[];
|
extern QAV* weaponQAV[];
|
||||||
|
|
||||||
void WeaponInit(void);
|
void WeaponInit(void);
|
||||||
void WeaponDraw(PLAYER *pPlayer, int a2, int a3, int a4, int a5, int basepal);
|
void WeaponDraw(PLAYER *pPlayer, int a2, double a3, double a4, int a5, int basepal);
|
||||||
void WeaponRaise(PLAYER *pPlayer);
|
void WeaponRaise(PLAYER *pPlayer);
|
||||||
void WeaponLower(PLAYER *pPlayer);
|
void WeaponLower(PLAYER *pPlayer);
|
||||||
char WeaponUpgrade(PLAYER *pPlayer, char newWeapon);
|
char WeaponUpgrade(PLAYER *pPlayer, char newWeapon);
|
||||||
|
|
|
@ -4793,7 +4793,7 @@ void playerQavSceneProcess(PLAYER* pPlayer, QAVSCENE* pQavScene) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void playerQavSceneDraw(PLAYER* pPlayer, int a2, int a3, int a4, int a5, int basepal) {
|
void playerQavSceneDraw(PLAYER* pPlayer, int a2, double a3, double a4, int a5, int basepal) {
|
||||||
if (pPlayer == NULL || pPlayer->sceneQav == -1) return;
|
if (pPlayer == NULL || pPlayer->sceneQav == -1) return;
|
||||||
|
|
||||||
QAVSCENE* pQavScene = &gPlayerCtrl[pPlayer->nPlayer].qavScene;
|
QAVSCENE* pQavScene = &gPlayerCtrl[pPlayer->nPlayer].qavScene;
|
||||||
|
@ -4812,8 +4812,8 @@ void playerQavSceneDraw(PLAYER* pPlayer, int a2, int a3, int a4, int a5, int bas
|
||||||
// draw as weapon
|
// draw as weapon
|
||||||
if (!(pSprite->flags & kModernTypeFlag1)) {
|
if (!(pSprite->flags & kModernTypeFlag1)) {
|
||||||
|
|
||||||
pQAV->x = a3; pQAV->y = a4;
|
pQAV->x = int(a3); pQAV->y = int(a4);
|
||||||
pQAV->Draw(&twodpsp, v4, flags, a2, a5, basepal, true);
|
pQAV->Draw(&twodpsp, a3, a4, v4, flags, a2, a5, basepal, true);
|
||||||
|
|
||||||
// draw fullscreen (currently 4:3 only)
|
// draw fullscreen (currently 4:3 only)
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -314,7 +314,7 @@ void playerDeactivateShrooms(PLAYER* pPlayer);
|
||||||
QAV* playerQavSceneLoad(int qavId);
|
QAV* playerQavSceneLoad(int qavId);
|
||||||
void playerQavSceneProcess(PLAYER* pPlayer, QAVSCENE* pQavScene);
|
void playerQavSceneProcess(PLAYER* pPlayer, QAVSCENE* pQavScene);
|
||||||
void playerQavScenePlay(PLAYER* pPlayer);
|
void playerQavScenePlay(PLAYER* pPlayer);
|
||||||
void playerQavSceneDraw(PLAYER* pPlayer, int a2, int a3, int a4, int a5, int basepal);
|
void playerQavSceneDraw(PLAYER* pPlayer, int a2, double a3, double a4, int a5, int basepal);
|
||||||
void playerQavSceneReset(PLAYER* pPlayer);
|
void playerQavSceneReset(PLAYER* pPlayer);
|
||||||
// ------------------------------------------------------------------------- //
|
// ------------------------------------------------------------------------- //
|
||||||
void callbackUniMissileBurst(int nSprite);
|
void callbackUniMissileBurst(int nSprite);
|
||||||
|
|
|
@ -45,7 +45,7 @@ int qavRegisterClient(void(*pClient)(int, void *))
|
||||||
return nClients++;
|
return nClients++;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DrawFrame(F2DDrawer *twod, int x, int y, TILE_FRAME *pTile, int stat, int shade, int palnum, int basepal, bool to3dview)
|
void DrawFrame(F2DDrawer *twod, double x, double y, TILE_FRAME *pTile, int stat, int shade, int palnum, int basepal, bool to3dview)
|
||||||
{
|
{
|
||||||
stat |= pTile->stat;
|
stat |= pTile->stat;
|
||||||
x += pTile->x;
|
x += pTile->x;
|
||||||
|
@ -78,7 +78,7 @@ void DrawFrame(F2DDrawer *twod, int x, int y, TILE_FRAME *pTile, int stat, int s
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void QAV::Draw(F2DDrawer* twod, int ticks, int stat, int shade, int palnum, int basepal, bool to3dview)
|
void QAV::Draw(F2DDrawer* twod, double x, double y, int ticks, int stat, int shade, int palnum, int basepal, bool to3dview)
|
||||||
{
|
{
|
||||||
dassert(ticksPerFrame > 0);
|
dassert(ticksPerFrame > 0);
|
||||||
int nFrame = ticks / ticksPerFrame;
|
int nFrame = ticks / ticksPerFrame;
|
||||||
|
@ -91,6 +91,12 @@ void QAV::Draw(F2DDrawer* twod, int ticks, int stat, int shade, int palnum, int
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QAV::Draw(F2DDrawer* twod, int ticks, int stat, int shade, int palnum, int basepal, bool to3dview)
|
||||||
|
{
|
||||||
|
Draw(twod, x, y, ticks, stat, shade, palnum, basepal, to3dview);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void QAV::Play(int start, int end, int nCallback, void *pData)
|
void QAV::Play(int start, int end, int nCallback, void *pData)
|
||||||
{
|
{
|
||||||
dassert(ticksPerFrame > 0);
|
dassert(ticksPerFrame > 0);
|
||||||
|
|
|
@ -82,6 +82,7 @@ struct QAV
|
||||||
char pad3[4]; // 20
|
char pad3[4]; // 20
|
||||||
FRAMEINFO frames[1]; // 24
|
FRAMEINFO frames[1]; // 24
|
||||||
void Draw(F2DDrawer *twod, int ticks, int stat, int shade, int palnum, int basepal, bool inviewport);
|
void Draw(F2DDrawer *twod, int ticks, int stat, int shade, int palnum, int basepal, bool inviewport);
|
||||||
|
void Draw(F2DDrawer* twod, double x, double y, int ticks, int stat, int shade, int palnum, int basepal, bool inviewport);
|
||||||
void Play(int, int, int, void *);
|
void Play(int, int, int, void *);
|
||||||
void Preload(void);
|
void Preload(void);
|
||||||
void Precache(void);
|
void Precache(void);
|
||||||
|
|
|
@ -232,7 +232,7 @@ void WeaponPrecache(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void WeaponDraw(PLAYER *pPlayer, int a2, int a3, int a4, int a5, int basepal)
|
void WeaponDraw(PLAYER *pPlayer, int a2, double a3, double a4, int a5, int basepal)
|
||||||
{
|
{
|
||||||
dassert(pPlayer != NULL);
|
dassert(pPlayer != NULL);
|
||||||
if (pPlayer->weaponQav == -1)
|
if (pPlayer->weaponQav == -1)
|
||||||
|
@ -243,8 +243,8 @@ void WeaponDraw(PLAYER *pPlayer, int a2, int a3, int a4, int a5, int basepal)
|
||||||
v4 = (int)totalclock % pQAV->at10;
|
v4 = (int)totalclock % pQAV->at10;
|
||||||
else
|
else
|
||||||
v4 = pQAV->at10 - pPlayer->weaponTimer;
|
v4 = pQAV->at10 - pPlayer->weaponTimer;
|
||||||
pQAV->x = a3;
|
pQAV->x = int(a3);
|
||||||
pQAV->y = a4;
|
pQAV->y = int(a4);
|
||||||
int flags = 2;
|
int flags = 2;
|
||||||
int nInv = powerupCheck(pPlayer, kPwUpShadowCloak);
|
int nInv = powerupCheck(pPlayer, kPwUpShadowCloak);
|
||||||
if (nInv >= 120 * 8 || (nInv != 0 && ((int)totalclock & 32)))
|
if (nInv >= 120 * 8 || (nInv != 0 && ((int)totalclock & 32)))
|
||||||
|
@ -252,7 +252,7 @@ void WeaponDraw(PLAYER *pPlayer, int a2, int a3, int a4, int a5, int basepal)
|
||||||
a2 = -128;
|
a2 = -128;
|
||||||
flags |= 1;
|
flags |= 1;
|
||||||
}
|
}
|
||||||
pQAV->Draw(&twodpsp, v4, flags, a2, a5, basepal, true);
|
pQAV->Draw(&twodpsp, a3, a4, v4, flags, a2, a5, basepal, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void WeaponPlay(PLAYER *pPlayer)
|
void WeaponPlay(PLAYER *pPlayer)
|
||||||
|
|
Loading…
Reference in a new issue