Skip to content

Commit b0bc332

Browse files
committed
Fix gaps in deltatime causing number jumps
1 parent 99fec90 commit b0bc332

File tree

1 file changed

+17
-18
lines changed

1 file changed

+17
-18
lines changed

DmgHUD.uc

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,15 @@ var transient float RenderTime;
1818

1919
function PostRender(Canvas Canvas)
2020
{
21+
local float Dt;
22+
23+
if (RenderTime > 0) {
24+
Dt = LocalOwner.WorldInfo.TimeSeconds - RenderTime;
25+
}
26+
RenderTime = LocalOwner.WorldInfo.TimeSeconds;
27+
2128
if( Numbers.Length>0 )
22-
DrawNumberMsg(Canvas);
29+
DrawNumberMsg(Canvas, Dt);
2330
}
2431

2532
final function AddNumberMsg( int Amount, vector Pos )
@@ -30,8 +37,6 @@ final function AddNumberMsg( int Amount, vector Pos )
3037
i = Numbers.Length;
3138
while( i>18 ) // don't overflow this that much...
3239
{
33-
`Log("Removing entry: " $ Numbers.length);
34-
3540
Numbers.Remove(0,1);
3641
i = Numbers.Length;
3742
}
@@ -48,18 +53,13 @@ final function AddNumberMsg( int Amount, vector Pos )
4853
Numbers[i].Time = LocalOwner.WorldInfo.TimeSeconds;
4954
}
5055

51-
final function DrawNumberMsg( Canvas Canvas )
56+
final function DrawNumberMsg( Canvas Canvas, float Dt )
5257
{
5358
local int i;
54-
local float T,Dt,ThisDot,FontScale,XS,YS,CameraDot,AnimPercent;
59+
local float T,FontScale,XS,YS,CameraDot,AnimPercent,Dist,RenderSize;
5560
local vector V;
5661
local string S;
5762

58-
if (RenderTime > 0) {
59-
Dt = LocalOwner.WorldInfo.TimeSeconds - RenderTime;
60-
}
61-
62-
RenderTime = LocalOwner.WorldInfo.TimeSeconds;
6363
LocalOwner.GetPlayerViewPoint(PLCameraLoc,PLCameraRot);
6464
PLCameraDir = vector(PLCameraRot);
6565
CameraDot = (PLCameraDir Dot PLCameraLoc);
@@ -80,14 +80,14 @@ final function DrawNumberMsg( Canvas Canvas )
8080
AnimPercent = T/Duration;
8181
V = Numbers[i].Pos;
8282

83-
ThisDot = FMin((PLCameraDir Dot V) - CameraDot, 2000.f) / 2000.f;
83+
Dist = (PLCameraDir Dot V) - CameraDot;
8484

85-
if( ThisDot>0.f )
85+
if( Dist > 0.f )
8686
{
8787
V = Canvas.Project(V);
8888
if( V.X>0 && V.Y>0 && V.X<Canvas.ClipX && V.Y<Canvas.ClipY )
8989
{
90-
ThisDot = FontScale - ThisDot * FontScale * 0.5;
90+
RenderSize = FontScale - (FMin(Dist, 1500.f) / 1500.f) * FontScale * 0.5;
9191

9292
if( Numbers[i].Amount<0 )
9393
S = "+"$string(-Numbers[i].Amount);
@@ -96,9 +96,9 @@ final function DrawNumberMsg( Canvas Canvas )
9696
Canvas.SetDrawColor(0, 0, 0, 204);
9797
if(AnimPercent > 0.7 )
9898
Canvas.DrawColor.A = (1-AnimPercent)/0.3*204.f;
99-
Canvas.TextSize(S,XS,YS,ThisDot,ThisDot);
99+
Canvas.TextSize(S,XS,YS,RenderSize,RenderSize);
100100
Canvas.SetPos(V.X-XS*0.5 + 1,V.Y-YS*0.5 + 1);
101-
Canvas.DrawText(S,,ThisDot, ThisDot);
101+
Canvas.DrawText(S,,RenderSize,RenderSize);
102102

103103
if( Numbers[i].Amount==0 )
104104
Canvas.SetDrawColor(220,0,0,204);
@@ -108,12 +108,11 @@ final function DrawNumberMsg( Canvas Canvas )
108108

109109
if( AnimPercent > 0.7 )
110110
Canvas.DrawColor.A = (1-AnimPercent)/0.3*204.f;
111-
Canvas.TextSize(S,XS,YS,ThisDot,ThisDot);
112111
Canvas.SetPos(V.X-XS*0.5,V.Y-YS*0.5);
113-
Canvas.DrawText(S,,ThisDot,ThisDot);
112+
Canvas.DrawText(S,,RenderSize,RenderSize);
114113
}
115114
}
116-
115+
117116
Numbers[i].Pos += Numbers[i].Vel * Dt;
118117
Numbers[i].Vel.Z -= 700.f * Dt;
119118
}

0 commit comments

Comments
 (0)