wateralpha: add hack in cvar system so setting r_wateralpha (or r_slimealpha, etc) to their current value will still fire the callback, so we switch from using the map's worldspawn value to the cvar value

This commit is contained in:
Eric Wasylishen 2014-08-16 22:29:44 -06:00
parent 1fb6a4d24c
commit d19dc43311
3 changed files with 10 additions and 5 deletions

View file

@ -396,7 +396,12 @@ void Cvar_SetQuick (cvar_t *var, const char *value)
int len;
if (!strcmp(var->string, value))
{
if (var->flags & CVAR_CALLBACK_IF_UNCHANGED && var->callback)
var->callback (var);
return; // no change
}
var->flags |= CVAR_CHANGED;
len = Q_strlen (value);

View file

@ -73,7 +73,7 @@ interface from being ambiguous.
#define CVAR_LOCKED (1U << 8) // locked temporarily
#define CVAR_REGISTERED (1U << 10) // the var is added to the list of variables
#define CVAR_CALLBACK (1U << 16) // var has a callback
#define CVAR_CALLBACK_IF_UNCHANGED (1U << 17) // invoke the callback when the cvar is set, even if setting it to the same value
typedef void (*cvarcallback_t) (struct cvar_s *);

View file

@ -67,7 +67,7 @@ cvar_t r_speeds = {"r_speeds","0",CVAR_NONE};
cvar_t r_fullbright = {"r_fullbright","0",CVAR_NONE};
cvar_t r_lightmap = {"r_lightmap","0",CVAR_NONE};
cvar_t r_shadows = {"r_shadows","0",CVAR_ARCHIVE};
cvar_t r_wateralpha = {"r_wateralpha","1",CVAR_ARCHIVE};
cvar_t r_wateralpha = {"r_wateralpha","1",CVAR_ARCHIVE | CVAR_CALLBACK_IF_UNCHANGED};
cvar_t r_dynamic = {"r_dynamic","1",CVAR_ARCHIVE};
cvar_t r_novis = {"r_novis","0",CVAR_ARCHIVE};
@ -102,9 +102,9 @@ extern cvar_t r_vfog;
//johnfitz
cvar_t gl_zfix = {"gl_zfix", "1", CVAR_ARCHIVE}; // QuakeSpasm z-fighting fix
cvar_t r_lavaalpha = {"r_lavaalpha","0",CVAR_NONE};
cvar_t r_telealpha = {"r_telealpha","0",CVAR_NONE};
cvar_t r_slimealpha = {"r_slimealpha","0",CVAR_NONE};
cvar_t r_lavaalpha = {"r_lavaalpha","0",CVAR_NONE | CVAR_CALLBACK_IF_UNCHANGED};
cvar_t r_telealpha = {"r_telealpha","0",CVAR_NONE | CVAR_CALLBACK_IF_UNCHANGED};
cvar_t r_slimealpha = {"r_slimealpha","0",CVAR_NONE | CVAR_CALLBACK_IF_UNCHANGED};
qboolean r_drawflat_cheatsafe, r_fullbright_cheatsafe, r_lightmap_cheatsafe, r_drawworld_cheatsafe; //johnfitz