X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=demoseeking.cfg;h=5dbaf86b3a783e886327afe150edbc6b148b0c90;hb=52cf94432bab3faf96fa075fd1f1a95283bddd54;hp=5ffad3a048d4e2afdd07fd973ca7699210bdb7a8;hpb=fc4b02feeb4268813ccf03313cdc380c0ca869a3;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/demoseeking.cfg b/demoseeking.cfg index 5ffad3a04..5dbaf86b3 100644 --- a/demoseeking.cfg +++ b/demoseeking.cfg @@ -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 " command directly +// 1. start a demo (ply/playdemo command or menu), and +// 2. while in a demo, use the "seekdemo " 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. @@ -26,9 +32,15 @@ // 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: // @@ -51,16 +63,18 @@ // - 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 ?}