]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - demoseeking.cfg
Transifex autosync
[xonotic/xonotic-data.pk3dir.git] / demoseeking.cfg
index 5ffad3a048d4e2afdd07fd973ca7699210bdb7a8..5dbaf86b3a783e886327afe150edbc6b148b0c90 100644 (file)
@@ -7,17 +7,23 @@
 // hook to autoexec.cfg. If you already have a cl_hook_gamestart_all hook, add
 // the quoted command to your hook, separated with a semicolon:
 //
-//     exec input-demoseeking.cfg
+//     exec demoseeking.cfg
 //     alias cl_hook_gamestart_all "demoseeking_game_started"
 //
 // Usage:
-//     - start a demo (ply/playdemo command or menu)
-//     - use ,. (comma and dot) keys to seek -5/+5 seconds
-//     - use m/ (m and slash) keys to seek -30/+30 seconds, - (minus) also
-//       works instead of slash
-//     - or use the "seekdemo <seconds>" command directly
+//     1. start a demo (ply/playdemo command or menu), and
+//     2. while in a demo, use the "seekdemo <seconds>" command
 //
-// Options (persisted):
+// Alternatively, use input-demoseeking.cfg instead to restore the default
+// bindings:
+//
+//     * use ,. (comma and dot) keys to seek -5/+5 seconds
+//     * use m/ (m and slash) keys to seek -30/+30 seconds
+//     * - (minus) also works instead of slash
+//
+// Options:
+//
+// These options can be customized after "exec demoseeking.cfg".
 //
 // _demoseeking_min_speed
 //     Minimum seek speed. Default 1.5.
 //     much while seeking. If the framerate is still high while seeking, you
 //     may increase this, but increasing this with low framerate is unlikely to
 //     improve seek performance.
-// _demoseeking_bind_keys
-//     Whether to set default seekdemo bindings listed under "Usage" above.
-//     Default 1. Set to 0 to disable the bindings.
+// _demoseeking_speed_factor
+//     Factor of remaining time to seek speed. Default 10.
+//     The seek speed is defined by the formula
+//
+//       1.0 + [remaining seek seconds] * _demoseeking_speed_factor
+//
+//     bound by _demoseeking_min_speed and _demoseeking_max_speed.
+// _demoseeking_fast_speed
+//     Seek speed above which rendering is disabled. Default 80.
 //
 // Variables:
 //
 // - The alias seekdemo_getseektime can be used by scripts to get the current
 //   playback time or seek target time. See its usage below.
 
+// option initialization
+set _demoseeking_options_loaded 1
+set _demoseeking_min_speed 1.5
+set _demoseeking_max_speed 200
+set _demoseeking_fast_speed 80
+set _demoseeking_speed_factor 10
+
 // state initialization
 alias _demoseeking_init_vars "set _demoseeking_vars_loaded 1; set _demo_is_playing 0; set _current_demo_name \"\"; set _demoseeking_is_seeking 0; set _seekdemo_state idle; set _seekdemo_target 0; alias playdemo_hook \"\"; alias seekdemo_hook_seek_end"
 alias _demoseeking_init_vars1 ""
 _demoseeking_init_vars${_demoseeking_vars_loaded ?}
 
-// option initialization (persistent)
-alias _demoseeking_init_options "seta _demoseeking_options_loaded 1; seta _demoseeking_min_speed 1.5; seta _demoseeking_max_speed 200; seta _demoseeking_bind_keys 1"
-alias _demoseeking_init_options1 ""
-_demoseeking_init_options${_demoseeking_options_loaded ?}
-
 // Hook into game start to reset seekdemo state. This prevents reloading the
 // last demo when seekdemo is accidentally called during an actual game.
 alias demoseeking_game_started "set _demo_is_playing 0; set _current_demo_name \"\""
@@ -151,7 +165,7 @@ alias _seekdemo_check_continue_0 "_seekdemo_leave_seek; seekdemo_hook_seek_end"
 // - Adjust the playback speed by setting the slowmo cvar. The further the seek, the faster the playback speed.
 // - Compare the speed to different speed levels to maximize performance for long seeks while reducing screen flashes for short ones.
 // Then continue the loop with "defer 0", so the check is run on every rendered frame.
-alias _seekdemo_check_continue_1 "set _seekdemo_speed_level failed; cl_cmd rpn _seekdemo_target time sub 10 mul _demoseeking_min_speed max _demoseeking_max_speed min dup /slowmo exch def dup 80 gt exch 2 gt add /_seekdemo_speed_level exch def; _seekdemo_set_options; defer 0 _seekdemo_check_time"
+alias _seekdemo_check_continue_1 "set _seekdemo_speed_level failed; cl_cmd rpn _seekdemo_target time sub _demoseeking_speed_factor 0.01 max mul 1 add _demoseeking_min_speed max _demoseeking_max_speed min dup /slowmo exch def dup _demoseeking_fast_speed gt exch 2 gt add /_seekdemo_speed_level exch def; _seekdemo_set_options; defer 0 _seekdemo_check_time"
 alias _seekdemo_check_continue_failed "_seekdemo_failed \"(demo ended?)\""
 
 alias _seekdemo_failed "_seekdemo_leave_seek; echo SEEK FAILED ${1 ?}"
@@ -176,7 +190,3 @@ alias _seekdemo_set_options_2 "r_render 0; snd_startnonloopingsounds 0; _seekdem
 alias _seekdemo_save_options "set _seekdemo_sav_cl_decals \"$cl_decals\"; set _seekdemo_sav_cl_damagetext \"$cl_damagetext\"; set _seekdemo_sav_cl_particles \"$cl_particles\"; set _seekdemo_sav_cl_casings \"$cl_casings\"; set _seekdemo_sav_slowmo \"$slowmo\""
 alias _seekdemo_settemp_options "settemp cl_decals 0; settemp cl_damagetext 0; settemp cl_particles 0; settemp cl_casings 0"
 alias _seekdemo_restore_options "settemp cl_decals \"$_seekdemo_sav_cl_decals\"; settemp cl_damagetext \"$_seekdemo_sav_cl_damagetext\"; settemp cl_particles \"$_seekdemo_sav_cl_particles\"; settemp cl_casings \"$_seekdemo_sav_cl_casings\""
-
-alias _demoseeking_bind_keys_0 ""
-alias _demoseeking_bind_keys_1 "bind , \"seekdemo -5\"; bind . \"seekdemo +5\"; bind m \"seekdemo -30\"; bind - \"seekdemo +30\"; bind / \"seekdemo +30\""
-_demoseeking_bind_keys_${_demoseeking_bind_keys ?}