diff --git a/src/game/g_gfx.pas b/src/game/g_gfx.pas
index 8094c4e4e1af00e578f2f6d82d70340e75c565f0..bf8fc5aa2fd8a5e4d90b3dbd8ca47cbfb13ecfaa 100644 (file)
--- a/src/game/g_gfx.pas
+++ b/src/game/g_gfx.pas
PParticle = ^TParticle;
TParticle = record
x, y: Integer;
+ oldX, oldY: Integer;
velX, velY: Single;
accelX, accelY: Single;
state: TPartState;
TOnceAnim = record
AnimType: Byte;
x, y: Integer;
+ oldX, oldY: Integer;
Animation: TAnimation;
end;
end;
begin
+ oldx := x;
+ oldy := y;
// awake sleeping particle, if necessary
if awakeDirty then
begin
begin
x := fX-devX1+Random(devX2);
y := fY-devY1+Random(devY2);
+ oldx := x;
+ oldy := y;
// check for level bounds
if (x < g_Map_MinX) or (y < g_Map_MinY) or (x > g_Map_MaxX) or (y > g_Map_MaxY) then continue;
accelY := 0.8;
end;
+ oldx := x;
+ oldy := y;
+
// check for level bounds
if (x < g_Map_MinX) or (y < g_Map_MinY) or (x > g_Map_MaxX) or (y > g_Map_MaxY) then continue;
begin
x := fX-devX1+Random(devX2);
y := fY-devY1+Random(devY2);
+ oldx := x;
+ oldy := y;
// check for level bounds
if (x < g_Map_MinX) or (y < g_Map_MinY) or (x > g_Map_MaxX) or (y > g_Map_MaxY) then continue;
begin
x := fX-devX1+Random(devX2);
y := fY-devY1+Random(devY2);
+ oldx := x;
+ oldy := y;
// check for level bounds
if (x < g_Map_MinX) or (y < g_Map_MinY) or (x > g_Map_MaxX) or (y > g_Map_MaxY) then continue;
begin
x := fX-devX1+Random(devX2);
y := fY-devY1+Random(devY2);
+ oldx := x;
+ oldy := y;
// check for level bounds
if (x < g_Map_MinX) or (y < g_Map_MinY) or (x > g_Map_MaxX) or (y > g_Map_MaxY) then continue;
for a := 0 to High(OnceAnims) do
if OnceAnims[a].Animation <> nil then
begin
+ OnceAnims[a].oldx := OnceAnims[a].x;
+ OnceAnims[a].oldy := OnceAnims[a].y;
+
case OnceAnims[a].AnimType of
ONCEANIM_SMOKE:
begin
procedure g_GFX_Draw ();
var
- a, len: Integer;
+ a, len, fx, fy: Integer;
begin
if not gpart_dbg_enabled then exit;
if not alive then continue;
if (x >= sX) and (y >= sY) and (x <= sX+sWidth) and (sY <= sY+sHeight) then
begin
+ fx := nlerp(oldx, x, gLerpFactor);
+ fy := nlerp(oldy, y, gLerpFactor);
glColor4ub(red, green, blue, alpha);
- glVertex2f(x+0.37, y+0.37);
+ glVertex2f(fx+0.37, fy+0.37);
end;
end;
end;
begin
if (OnceAnims[a].Animation <> nil) then
begin
- with OnceAnims[a] do Animation.Draw(x, y, TMirrorType.None);
+ with OnceAnims[a] do
+ begin
+ fx := nlerp(oldx, x, gLerpFactor);
+ fy := nlerp(oldy, y, gLerpFactor);
+ Animation.Draw(x, y, TMirrorType.None);
+ end;
end;
end;
end;