mirror of
https://github.com/DrBeef/Raze.git
synced 2024-11-15 17:01:51 +00:00
- expose animatesprite set of functions to new renderer as a callback.
This commit is contained in:
parent
0b1e81023f
commit
be7bca8e9e
10 changed files with 33 additions and 18 deletions
|
@ -102,7 +102,7 @@ struct GameInterface
|
||||||
virtual int chaseCamX(binangle ang) { return 0; }
|
virtual int chaseCamX(binangle ang) { return 0; }
|
||||||
virtual int chaseCamY(binangle ang) { return 0; }
|
virtual int chaseCamY(binangle ang) { return 0; }
|
||||||
virtual int chaseCamZ(fixedhoriz horiz) { return 0; }
|
virtual int chaseCamZ(fixedhoriz horiz) { return 0; }
|
||||||
virtual void processSprites(int viewx, int viewy, int viewz, binangle viewang, double smoothRatio) {}
|
virtual void processSprites(int viewx, int viewy, int viewz, binangle viewang, double smoothRatio) = 0;
|
||||||
|
|
||||||
virtual FString statFPS()
|
virtual FString statFPS()
|
||||||
{
|
{
|
||||||
|
|
|
@ -441,9 +441,10 @@ void BunchDrawer::ProcessSector(int sectnum)
|
||||||
|
|
||||||
int sx = spr->x - iview.x, sy = spr->y - int(iview.y);
|
int sx = spr->x - iview.x, sy = spr->y - int(iview.y);
|
||||||
|
|
||||||
if ((spr->cstat & CSTAT_SPRITE_ALIGNMENT_MASK) || (hw_models && tile2model[spr->picnum].modelid >= 0) || ((sx * gcosang) + (sy * gsinang) > 0)) // is it behind the camera? (fixme!)
|
// this checks if the sprite is it behind the camera, which will not work if the pitch is high enough to necessitate a FOV of more than 180°.
|
||||||
|
//if ((spr->cstat & CSTAT_SPRITE_ALIGNMENT_MASK) || (hw_models && tile2model[spr->picnum].modelid >= 0) || ((sx * gcosang) + (sy * gsinang) > 0))
|
||||||
{
|
{
|
||||||
if ((spr->cstat & (CSTAT_SPRITE_ONE_SIDED | CSTAT_SPRITE_ALIGNMENT_MASK)) != (CSTAT_SPRITE_ONE_SIDED | CSTAT_SPRITE_ALIGNMENT_WALL + 16) ||
|
if ((spr->cstat & (CSTAT_SPRITE_ONE_SIDED | CSTAT_SPRITE_ALIGNMENT_MASK)) != (CSTAT_SPRITE_ONE_SIDED | CSTAT_SPRITE_ALIGNMENT_WALL) ||
|
||||||
(r_voxels && tiletovox[spr->picnum] >= 0 && voxmodels[tiletovox[spr->picnum]]) ||
|
(r_voxels && tiletovox[spr->picnum] >= 0 && voxmodels[tiletovox[spr->picnum]]) ||
|
||||||
DMulScale(bcos(spr->ang), -sx, bsin(spr->ang), -sy, 6) > 0)
|
DMulScale(bcos(spr->ang), -sx, bsin(spr->ang), -sy, 6) > 0)
|
||||||
if (renderAddTsprite(z, sectnum))
|
if (renderAddTsprite(z, sectnum))
|
||||||
|
|
|
@ -65,6 +65,7 @@ struct GameInterface : public ::GameInterface
|
||||||
int chaseCamX(binangle ang) { return -ang.bcos(-4); }
|
int chaseCamX(binangle ang) { return -ang.bcos(-4); }
|
||||||
int chaseCamY(binangle ang) { return -ang.bsin(-4); }
|
int chaseCamY(binangle ang) { return -ang.bsin(-4); }
|
||||||
int chaseCamZ(fixedhoriz horiz) { return horiz.asq16() >> 9; }
|
int chaseCamZ(fixedhoriz horiz) { return horiz.asq16() >> 9; }
|
||||||
|
void processSprites(int viewx, int viewy, int viewz, binangle viewang, double smoothRatio) override;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -414,6 +414,10 @@ bool GameInterface::GenerateSavePic()
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GameInterface::processSprites(int viewx, int viewy, int viewz, binangle viewang, double smoothRatio)
|
||||||
|
{
|
||||||
|
fi.animatesprites(viewx, viewy, viewz, int(smoothRatio));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
END_DUKE_NS
|
END_DUKE_NS
|
||||||
|
|
|
@ -255,6 +255,7 @@ struct GameInterface : ::GameInterface
|
||||||
int chaseCamX(binangle ang) { return -ang.bcos() / 12; }
|
int chaseCamX(binangle ang) { return -ang.bcos() / 12; }
|
||||||
int chaseCamY(binangle ang) { return -ang.bsin() / 12; }
|
int chaseCamY(binangle ang) { return -ang.bsin() / 12; }
|
||||||
int chaseCamZ(fixedhoriz horiz) { return horiz.asq16() / 384; }
|
int chaseCamZ(fixedhoriz horiz) { return horiz.asq16() / 384; }
|
||||||
|
void processSprites(int viewx, int viewy, int viewz, binangle viewang, double smoothRatio) override;
|
||||||
|
|
||||||
::GameStats getStats() override;
|
::GameStats getStats() override;
|
||||||
};
|
};
|
||||||
|
|
|
@ -66,7 +66,7 @@ short enemy;
|
||||||
short nEnemyPal = 0;
|
short nEnemyPal = 0;
|
||||||
|
|
||||||
// NOTE - not to be confused with Ken's analyzesprites()
|
// NOTE - not to be confused with Ken's analyzesprites()
|
||||||
static void analyzesprites(double const smoothratio)
|
static void analyzesprites(int x, int y, int z, double const smoothratio)
|
||||||
{
|
{
|
||||||
tspritetype *pTSprite;
|
tspritetype *pTSprite;
|
||||||
|
|
||||||
|
@ -90,11 +90,6 @@ static void analyzesprites(double const smoothratio)
|
||||||
|
|
||||||
besttarget = -1;
|
besttarget = -1;
|
||||||
|
|
||||||
int x = pPlayerSprite->x;
|
|
||||||
int y = pPlayerSprite->y;
|
|
||||||
|
|
||||||
int z = pPlayerSprite->z - (GetSpriteHeight(nPlayerSprite) / 2);
|
|
||||||
|
|
||||||
short nSector = pPlayerSprite->sectnum;
|
short nSector = pPlayerSprite->sectnum;
|
||||||
|
|
||||||
int nAngle = (2048 - pPlayerSprite->ang) & kAngleMask;
|
int nAngle = (2048 - pPlayerSprite->ang) & kAngleMask;
|
||||||
|
@ -362,7 +357,7 @@ void DrawView(double smoothRatio, bool sceneonly)
|
||||||
{
|
{
|
||||||
renderSetRollAngle(rotscrnang.asbuildf());
|
renderSetRollAngle(rotscrnang.asbuildf());
|
||||||
renderDrawRoomsQ16(nCamerax, nCameray, viewz, nCameraa.asq16(), nCamerapan.asq16(), nSector);
|
renderDrawRoomsQ16(nCamerax, nCameray, viewz, nCameraa.asq16(), nCamerapan.asq16(), nSector);
|
||||||
analyzesprites(smoothRatio);
|
analyzesprites(nCamerax, nCameray, viewz, smoothRatio);
|
||||||
renderDrawMasks();
|
renderDrawMasks();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -467,6 +462,12 @@ bool GameInterface::GenerateSavePic()
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GameInterface::processSprites(int viewx, int viewy, int viewz, binangle viewang, double smoothRatio)
|
||||||
|
{
|
||||||
|
analyzesprites(viewx, viewy, viewz, smoothRatio);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void NoClip()
|
void NoClip()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
|
@ -177,7 +177,7 @@ void polymost_drawscreen(PLAYERp pp, int tx, int ty, int tz, binangle tang, fixe
|
||||||
if (!FAF_DebugView)
|
if (!FAF_DebugView)
|
||||||
FAF_DrawRooms(tx, ty, tz, tang.asq16(), thoriz.asq16(), tsectnum);
|
FAF_DrawRooms(tx, ty, tz, tang.asq16(), thoriz.asq16(), tsectnum);
|
||||||
|
|
||||||
analyzesprites(tx, ty, tz, false);
|
analyzesprites(tx, ty, tz, tang.asbuild());
|
||||||
post_analyzesprites();
|
post_analyzesprites();
|
||||||
renderDrawMasks();
|
renderDrawMasks();
|
||||||
|
|
||||||
|
@ -323,7 +323,7 @@ void JS_DrawMirrors(PLAYERp pp, int tx, int ty, int tz, fixed_t tpq16ang, fixed
|
||||||
|
|
||||||
renderDrawRoomsQ16(tposx, tposy, tz, (tang), tpq16horiz, mirror[cnt].mirrorsector + MAXSECTORS);
|
renderDrawRoomsQ16(tposx, tposy, tz, (tang), tpq16horiz, mirror[cnt].mirrorsector + MAXSECTORS);
|
||||||
|
|
||||||
analyzesprites(tposx, tposy, tz, true);
|
analyzesprites(tposx, tposy, tz, tang >> 16);
|
||||||
renderDrawMasks();
|
renderDrawMasks();
|
||||||
|
|
||||||
renderCompleteMirror(); // Reverse screen x-wise in this
|
renderCompleteMirror(); // Reverse screen x-wise in this
|
||||||
|
|
|
@ -265,7 +265,7 @@ DoShadowFindGroundPoint(tspriteptr_t sp)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
DoShadows(tspriteptr_t tsp, int viewz, bool mirror)
|
DoShadows(tspriteptr_t tsp, int viewz, int camang)
|
||||||
{
|
{
|
||||||
tspriteptr_t New = &tsprite[spritesortcnt];
|
tspriteptr_t New = &tsprite[spritesortcnt];
|
||||||
USERp tu = User[tsp->owner];
|
USERp tu = User[tsp->owner];
|
||||||
|
@ -553,7 +553,7 @@ void DoStarView(tspriteptr_t tsp, USERp tu, int viewz)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
analyzesprites(int viewx, int viewy, int viewz, bool mirror)
|
analyzesprites(int viewx, int viewy, int viewz, int camang)
|
||||||
{
|
{
|
||||||
int tSpriteNum;
|
int tSpriteNum;
|
||||||
short SpriteNum;
|
short SpriteNum;
|
||||||
|
@ -645,7 +645,7 @@ analyzesprites(int viewx, int viewy, int viewz, bool mirror)
|
||||||
|
|
||||||
if (r_shadows && TEST(tu->Flags, SPR_SHADOW))
|
if (r_shadows && TEST(tu->Flags, SPR_SHADOW))
|
||||||
{
|
{
|
||||||
DoShadows(tsp, viewz, mirror);
|
DoShadows(tsp, viewz, camang);
|
||||||
}
|
}
|
||||||
|
|
||||||
//#define UK_VERSION 1
|
//#define UK_VERSION 1
|
||||||
|
@ -1869,6 +1869,12 @@ bool GameInterface::DrawAutomapPlayer(int cposx, int cposy, int czoom, int cang,
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GameInterface::processSprites(int viewx, int viewy, int viewz, binangle viewang, double smoothRatio)
|
||||||
|
{
|
||||||
|
analyzesprites(viewx, viewy, viewz, viewang.asbuild());
|
||||||
|
post_analyzesprites();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
END_SW_NS
|
END_SW_NS
|
||||||
|
|
|
@ -1967,7 +1967,7 @@ int DoPickTarget(SPRITEp sp, uint32_t max_delta_ang, int skip_targets);
|
||||||
void change_sprite_stat(short, short);
|
void change_sprite_stat(short, short);
|
||||||
void SetOwner(short, short);
|
void SetOwner(short, short);
|
||||||
void SetAttach(short, short);
|
void SetAttach(short, short);
|
||||||
void analyzesprites(int,int,int,bool);
|
void analyzesprites(int,int,int,int);
|
||||||
void ChangeState(short SpriteNum, STATEp statep);
|
void ChangeState(short SpriteNum, STATEp statep);
|
||||||
void CollectPortals();
|
void CollectPortals();
|
||||||
|
|
||||||
|
@ -2248,7 +2248,8 @@ struct GameInterface : ::GameInterface
|
||||||
int chaseCamX(binangle ang) { return -ang.bcos(-3); }
|
int chaseCamX(binangle ang) { return -ang.bcos(-3); }
|
||||||
int chaseCamY(binangle ang) { return -ang.bsin(-3); }
|
int chaseCamY(binangle ang) { return -ang.bsin(-3); }
|
||||||
int chaseCamZ(fixedhoriz horiz) { return horiz.asq16() >> 8; }
|
int chaseCamZ(fixedhoriz horiz) { return horiz.asq16() >> 8; }
|
||||||
|
void processSprites(int viewx, int viewy, int viewz, binangle viewang, double smoothRatio) override;
|
||||||
|
|
||||||
|
|
||||||
GameStats getStats() override;
|
GameStats getStats() override;
|
||||||
};
|
};
|
||||||
|
|
|
@ -476,7 +476,7 @@ void drawroomstotile(int daposx, int daposy, int daposz,
|
||||||
if (!testnewrenderer)
|
if (!testnewrenderer)
|
||||||
{
|
{
|
||||||
renderDrawRoomsQ16(daposx, daposy, daposz, ang.asq16(), horiz.asq16(), dacursectnum);
|
renderDrawRoomsQ16(daposx, daposy, daposz, ang.asq16(), horiz.asq16(), dacursectnum);
|
||||||
analyzesprites(daposx, daposy, daposz, false);
|
analyzesprites(daposx, daposy, daposz, ang.asbuild());
|
||||||
renderDrawMasks();
|
renderDrawMasks();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in a new issue