forgot
This commit is contained in:
parent
494c3a3418
commit
71893c1821
49
src/client/misc.zig
Normal file
49
src/client/misc.zig
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
const rl = @import("raylib");
|
||||||
|
|
||||||
|
const FPS_CAPTURE_FRAMES_COUNT : i32 = 30; // 30 captures
|
||||||
|
const FPS_AVERAGE_TIME_SECONDS : f32 = 0.5; // 500 milliseconds
|
||||||
|
const FPS_STEP : f32 = (FPS_AVERAGE_TIME_SECONDS / FPS_CAPTURE_FRAMES_COUNT);
|
||||||
|
|
||||||
|
var index : u32 = 0;
|
||||||
|
var history : [FPS_CAPTURE_FRAMES_COUNT]f32 = .{0} ** FPS_CAPTURE_FRAMES_COUNT;
|
||||||
|
var average : f32 = 0;
|
||||||
|
var last : f32 = 0;
|
||||||
|
|
||||||
|
pub fn drawFPS(posX : i32, posY : i32, fpsFrame : f32, frame : i32) void {
|
||||||
|
var color : rl.Color = .lime; // Good FPS
|
||||||
|
const fps : i32 = getFPS(fpsFrame, frame);
|
||||||
|
|
||||||
|
if ((fps < 30) and (fps >= 15)) {color = .orange;} // Warning FPS
|
||||||
|
else if (fps < 15) color = .red; // Low FPS
|
||||||
|
|
||||||
|
rl.drawText(rl.textFormat("%2i FPS", .{fps}), posX, posY, 20, color);
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn getFPS(fpsFrame : f32, frame : i32) i32 {
|
||||||
|
var fps : i32 = 0;
|
||||||
|
|
||||||
|
// if we reset the window, reset the FPS info
|
||||||
|
if (frame == 0)
|
||||||
|
{
|
||||||
|
average = 0;
|
||||||
|
last = 0;
|
||||||
|
index = 0;
|
||||||
|
|
||||||
|
for (0..FPS_CAPTURE_FRAMES_COUNT) |i| history[i] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fpsFrame == 0) return 0;
|
||||||
|
|
||||||
|
if ((rl.getTime() - last) > FPS_STEP)
|
||||||
|
{
|
||||||
|
last = @floatCast(rl.getTime());
|
||||||
|
index = (index + 1) % FPS_CAPTURE_FRAMES_COUNT;
|
||||||
|
average -= history[index];
|
||||||
|
history[index] = fpsFrame / FPS_CAPTURE_FRAMES_COUNT;
|
||||||
|
average += history[index];
|
||||||
|
}
|
||||||
|
|
||||||
|
fps = @intFromFloat(@round(1.0 / average));
|
||||||
|
|
||||||
|
return fps;
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user