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