Xonotic QuakeC
The free, fast arena FPS with crisp movement and a wide array of weapons
engineinfo.qc
Go to the documentation of this file.
1#include "engineinfo.qh"
2
3#include <client/draw.qh>
4
5// Engine info (#13)
6
8{
9 // allow saving cvars that aesthetically change the panel into hud skin files
10}
11
12float prevfps;
15
17float frametimeavg1; // 1 frame ago
18float frametimeavg2; // 2 frames ago
22
24{
26 return;
27
29 vector pos = panel_pos;
30 vector mySize = panel_size;
31
34 else
38 {
39 pos += '1 1 0' * panel_bg_padding;
40 mySize -= '2 2 0' * panel_bg_padding;
41 }
42
43 float currentTime = gettime(GETTIME_FRAMESTART);
45 {
46 float currentframetime = currentTime - prevfps_time;
47 frametimeavg = (frametimeavg + frametimeavg1 + frametimeavg2 + currentframetime) * 0.25; // average three frametimes into framecounter for slightly more stable fps readings :P
50
52 if (currentframetime > 0.0001) // filter out insane values which sometimes seem to occur and throw off the average? If you are getting 10,000 fps or more, then you don't need a framerate counter.
53 {
54 if (fabs(prevfps - (1 / frametimeavg)) > prevfps * autocvar_hud_panel_engineinfo_framecounter_exponentialmovingaverage_instantupdate_change_threshold) // if there was a big jump in fps, just force prevfps at current (1 / currentframetime) to make big updates instant
55 prevfps = 1 / currentframetime;
56 prevfps = (1 - weight) * prevfps + weight * (1 / frametimeavg); // framecounter just used so there's no need for a new variable, think of it as "frametime average"
57 }
58 prevfps_time = currentTime;
59 }
60 else
61 {
64 {
65 prevfps = framecounter / (currentTime - prevfps_time);
66 framecounter = 0;
67 prevfps_time = currentTime;
68 }
69 }
70
73}
void drawstring_aspect(vector pos, string text, vector sz, vector color, float theAlpha, float drawflag)
Definition draw.qc:110
const float DRAWFLAG_NORMAL
float GETTIME_FRAMESTART
vector color
Definition dynlight.qc:15
float autocvar_hud_panel_engineinfo_framecounter_exponentialmovingaverage_new_weight
Definition engineinfo.qc:20
float prevfps
Definition engineinfo.qc:12
void HUD_EngineInfo_Export(int fh)
Definition engineinfo.qc:7
float prevfps_time
Definition engineinfo.qc:13
float frametimeavg
Definition engineinfo.qc:16
float autocvar_hud_panel_engineinfo_framecounter_exponentialmovingaverage
Definition engineinfo.qc:19
float autocvar_hud_panel_engineinfo_framecounter_exponentialmovingaverage_instantupdate_change_threshold
Definition engineinfo.qc:21
float frametimeavg2
Definition engineinfo.qc:18
float frametimeavg1
Definition engineinfo.qc:17
void HUD_EngineInfo()
Definition engineinfo.qc:23
int framecounter
Definition engineinfo.qc:14
float autocvar_hud_panel_engineinfo_framecounter_time
Definition engineinfo.qh:7
float autocvar_hud_panel_engineinfo_framecounter_decimals
Definition engineinfo.qh:6
bool autocvar_hud_panel_engineinfo_dynamichud
Definition engineinfo.qh:5
bool autocvar_hud_panel_engineinfo
Definition engineinfo.qh:4
void HUD_Panel_LoadCvars()
Definition hud.qc:215
void HUD_Scale_Enable()
Definition hud.qc:91
vector HUD_Get_Num_Color(float hp, float maxvalue, bool blink)
Definition hud.qc:123
void HUD_Scale_Disable()
Definition hud.qc:84
vector panel_size
Definition hud.qh:163
float panel_fg_alpha
Definition hud.qh:169
float panel_bg_padding
Definition hud.qh:174
#define HUD_Panel_DrawBg()
Definition hud.qh:55
vector panel_pos
Definition hud.qh:162
bool autocvar__hud_configure
Definition hud_config.qh:3
float gettime(void)
float fabs(float f)
vector
Definition self.qh:92