X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fg_phys.pas;h=af569ea1e1784185f70f13aa5ae47f0ef955fa1d;hb=dffafd305d0df029f317cc92c1968ba0065c0cd8;hp=ce56afefa1612f45ed881936519955d5b3bc7a0e;hpb=6560a7fbc09aaefc7dea42de78d4336bbb42b532;p=d2df-sdl.git diff --git a/src/game/g_phys.pas b/src/game/g_phys.pas index ce56afe..af569ea 100644 --- a/src/game/g_phys.pas +++ b/src/game/g_phys.pas @@ -2,8 +2,7 @@ * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * the Free Software Foundation, version 3 of the License ONLY. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -32,6 +31,9 @@ type // this is purely visual change, it won't affect anything else slopeUpLeft: Integer; // left to go slopeFramesLeft: Integer; // frames left to go + // for frame interpolation + oldX, oldY: Integer; + procedure lerp(t: Single; out fX, fY: Integer); end; const @@ -83,6 +85,11 @@ uses const SmoothSlopeFrames = 4; +procedure TObj.lerp(t: Single; out fX, fY: Integer); +begin + fX := nlerp(oldX, X, t); + fY := nlerp(oldY, Y, t); +end; function g_Obj_StayOnStep(Obj: PObj): Boolean; inline; begin @@ -472,9 +479,10 @@ begin //writeln('velocity=(', Obj^.Vel.X, ',', Obj^.Vel.Y, '); acceleration=(', Obj^.Accel.X, ',', Obj^.Accel.Y, ')'); if (g_Obj_GetSpeedDirF(Obj, dirx, diry, speed)) then begin - if (speed > 4) then + //writeln('SPEED: ', speed); + if (speed > 5) then begin - speed := speed/2.0; + speed := speed/1.4; Obj^.Vel.X := round(dirx*speed); Obj^.Vel.Y := round(diry*speed); end; @@ -483,9 +491,9 @@ begin // acceleration if (g_Obj_GetAccelDirF(Obj, dirx, diry, speed)) then begin - if (speed > 4) then + if (speed > 5) then begin - speed := speed/2.0; + speed := speed/1.4; Obj^.Accel.X := round(dirx*speed); Obj^.Accel.Y := round(diry*speed); end;