This commit is contained in:
Vicente Ferrari Smith 2026-01-12 18:29:32 +01:00
parent 494c3a3418
commit 71893c1821

49
src/client/misc.zig Normal file
View 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;
}