]> git.rm.cloudns.org Git - xonotic/darkplaces.git/commitdiff
PRVM: reset GETTIME_FRAMESTART at VM startup, improve documentation
authorbones_was_here <bones_was_here@xonotic.au>
Fri, 23 Aug 2024 09:26:31 +0000 (19:26 +1000)
committerbones_was_here <bones_was_here@xonotic.au>
Fri, 23 Aug 2024 10:17:43 +0000 (20:17 +1000)
Avoids precision issues on servers with long GETTIME_UPTIME.

Signed-off-by: bones_was_here <bones_was_here@xonotic.au>
dpdefs/csprogsdefs.qc
dpdefs/dpextensions.qc
prvm_cmds.c

index b5c057462ca87037c2a069f79f849cad0d2d735a..2d91779111f76f0b2c407a77178bc4e728fc17b6 100644 (file)
@@ -1008,10 +1008,10 @@ string(string format, ...) sprintf = #627;
 //idea: tZork
 //darkplaces implementation: tZork, divVerent
 //constant definitions:
-float GETTIME_FRAMESTART = 0; // time of start of frame
+float GETTIME_FRAMESTART = 0; // time of start of frame relative to an arbitrary point in time (time of worldspawn)
 float GETTIME_REALTIME = 1; // current time (may be OS specific)
-float GETTIME_HIRES = 2; // like REALTIME, but may reset between QC invocations and thus can be higher precision
-float GETTIME_UPTIME = 3; // time since start of the engine
+float GETTIME_HIRES = 2; // like REALTIME, but relative to time at start of frame (thus can be higher precision)
+float GETTIME_UPTIME = 3; // time of start of frame relative to start of the engine
 //builtin definitions:
 float(float tmr) gettime = #519;
 //description:
index d72666dcb8de48757f9fd747843057f590cf7ca1..084555172220752e24210a053efb30aef0ce5ec4 100644 (file)
@@ -896,10 +896,10 @@ vector gettaginfo_up;
 //idea: tZork
 //darkplaces implementation: tZork, divVerent
 //constant definitions:
-float GETTIME_FRAMESTART = 0; // time of start of frame relative to an arbitrary point in time
+float GETTIME_FRAMESTART = 0; // time of start of frame relative to an arbitrary point in time (time of worldspawn)
 float GETTIME_REALTIME = 1; // current absolute time (OS specific)
-float GETTIME_HIRES = 2; // like REALTIME, but may reset between QC invocations and thus can be higher precision
-float GETTIME_UPTIME = 3; // time of start of frame since start of the engine
+float GETTIME_HIRES = 2; // like REALTIME, but relative to time at start of frame (thus can be higher precision)
+float GETTIME_UPTIME = 3; // time of start of frame relative to start of the engine
 //builtin definitions:
 float(float tmr) gettime = #519;
 //description:
index 03eb39a8f3f48a427fce9185ffbb29fd72aed94b..e540e8517da3a991c8070ab1a0515ad953600139 100644 (file)
@@ -2961,7 +2961,7 @@ void VM_gettime(prvm_prog_t *prog)
                switch(timer_index)
                {
                        case 0: // GETTIME_FRAMESTART
-                               PRVM_G_FLOAT(OFS_RETURN) = host.realtime;
+                               PRVM_G_FLOAT(OFS_RETURN) = host.realtime - prog->starttime;
                                break;
                        case 1: // GETTIME_REALTIME
                                PRVM_G_FLOAT(OFS_RETURN) = Sys_DirtyTime();