@@ -18,8 +18,15 @@ var transient float RenderTime;
1818
1919function 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
2532final 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