diff --git a/polymer/eduke32/build/include/osd.h b/polymer/eduke32/build/include/osd.h index 970dfd945..834deeb85 100644 --- a/polymer/eduke32/build/include/osd.h +++ b/polymer/eduke32/build/include/osd.h @@ -31,16 +31,19 @@ const char *OSD_StripColors(char *out, const char *in); enum cvartype_t { - CVAR_FLOAT = 0x00000001, - CVAR_INT = 0x00000002, - CVAR_UINT = 0x00000004, - CVAR_BOOL = 0x00000008, - CVAR_STRING = 0x00000010, - CVAR_DOUBLE = 0x00000020, - CVAR_LOCKED = 0x00000040, - CVAR_MULTI = 0x00000080, - CVAR_NOSAVE = 0x00000100, - CVAR_FUNCPTR = 0x00000200, + CVAR_FLOAT = 0x00000001, + CVAR_INT = 0x00000002, + CVAR_UINT = 0x00000004, + CVAR_BOOL = 0x00000008, + CVAR_STRING = 0x00000010, + CVAR_DOUBLE = 0x00000020, + CVAR_LOCKED = 0x00000040, + CVAR_MULTI = 0x00000080, + CVAR_NOSAVE = 0x00000100, + CVAR_FUNCPTR = 0x00000200, + CVAR_RESTARTVID = 0x00000400, + CVAR_INVALIDATE = 0x00000800, + CVAR_INVALIDATE8 = 0x00001000, }; typedef struct @@ -194,6 +197,8 @@ extern char osdhistorybuf[OSD_HISTORYDEPTH][OSD_EDITLENGTH+1]; // history strin extern int32_t osdhistorysize; // number of entries in history extern int32_t osdhistorytotal; // number of total history entries +extern int32_t osdcmd_restartvid(const osdfuncparm_t *parm); + #ifdef EXTERNC } #endif diff --git a/polymer/eduke32/build/src/build.c b/polymer/eduke32/build/src/build.c index 712bede93..b90e9aa0d 100644 --- a/polymer/eduke32/build/src/build.c +++ b/polymer/eduke32/build/src/build.c @@ -233,7 +233,7 @@ void clearkeys(void) } #ifdef USE_OPENGL -static int32_t osdcmd_restartvid(const osdfuncparm_t *parm) +int32_t osdcmd_restartvid(const osdfuncparm_t *parm) { UNREFERENCED_PARAMETER(parm); diff --git a/polymer/eduke32/build/src/osd.c b/polymer/eduke32/build/src/osd.c index c1d254dff..00a2a3db4 100644 --- a/polymer/eduke32/build/src/osd.c +++ b/polymer/eduke32/build/src/osd.c @@ -2100,6 +2100,27 @@ int32_t osdcmd_cvar_set(const osdfuncparm_t *parm) default: break; } + +#ifdef USE_OPENGL + if (!OSD_ParsingScript()) + { + switch (cvars[i].c.type&(CVAR_RESTARTVID|CVAR_INVALIDATE|CVAR_INVALIDATE8)) + { + case CVAR_RESTARTVID: + osdcmd_restartvid(NULL); + break; + case CVAR_INVALIDATE: + gltexinvalidateall(); + case CVAR_INVALIDATE8: + gltexinvalidate8(); +#ifdef POLYMER + if (getrendermode() == REND_POLYMER) + polymer_texinvalidate(); +#endif + break; + } + } +#endif } if (!OSD_ParsingScript()) diff --git a/polymer/eduke32/build/src/polymost.c b/polymer/eduke32/build/src/polymost.c index e65003aad..0e84a7f81 100644 --- a/polymer/eduke32/build/src/polymost.c +++ b/polymer/eduke32/build/src/polymost.c @@ -6074,7 +6074,7 @@ void polymost_initosdfuncs(void) #ifdef POLYMER // polymer cvars - { "r_pr_lighting", "r_pr_lighting: enable/disable dynamic lights", (void *) &pr_lighting, CVAR_BOOL, 0, 1 }, + { "r_pr_lighting", "r_pr_lighting: enable/disable dynamic lights - restarts renderer", (void *) &pr_lighting, CVAR_BOOL | CVAR_RESTARTVID, 0, 1 }, { "r_pr_normalmapping", "r_pr_normalmapping: enable/disable virtual displacement mapping", (void *) &pr_normalmapping, CVAR_BOOL, 0, 1 }, { "r_pr_specularmapping", "r_pr_specularmapping: enable/disable specular mapping", (void *) &pr_specularmapping, CVAR_BOOL, 0, 1 }, { "r_pr_shadows", "r_pr_shadows: enable/disable dynamic shadows", (void *) &pr_shadows, CVAR_BOOL, 0, 1 }, @@ -6088,7 +6088,7 @@ void polymost_initosdfuncs(void) { "r_pr_billboardingmode", "r_pr_billboardingmode: face sprite display method. 0: classic mode; 1: polymost mode", (void *) &pr_billboardingmode, CVAR_INT, 0, 1 }, { "r_pr_verbosity", "r_pr_verbosity: verbosity level of the polymer renderer", (void *) &pr_verbosity, CVAR_INT, 0, 3 }, { "r_pr_wireframe", "r_pr_wireframe: toggles wireframe mode", (void *) &pr_wireframe, CVAR_INT | CVAR_NOSAVE, 0, 1 }, - { "r_pr_vbos", "r_pr_vbos: contols Vertex Buffer Object usage. 0: no VBOs. 1: VBOs for map data. 2: VBOs for model data.", (void *) &pr_vbos, CVAR_INT, 0, 2 }, + { "r_pr_vbos", "r_pr_vbos: contols Vertex Buffer Object usage. 0: no VBOs. 1: VBOs for map data. 2: VBOs for model data.", (void *) &pr_vbos, CVAR_INT | CVAR_RESTARTVID, 0, 2 }, { "r_pr_gpusmoothing", "r_pr_gpusmoothing: toggles model animation interpolation", (void *) &pr_gpusmoothing, CVAR_INT, 0, 1 }, { "r_pr_overrideparallax", "r_pr_overrideparallax: overrides parallax mapping scale and bias values with values from the pr_parallaxscale and pr_parallaxbias cvars; use it to fine-tune DEF tokens", (void *) &pr_overrideparallax, CVAR_BOOL | CVAR_NOSAVE, 0, 1 }, { "r_pr_parallaxscale", "r_pr_parallaxscale: overriden parallax mapping offset scale", (void *) &pr_parallaxscale, CVAR_FLOAT | CVAR_NOSAVE, -10, 10 }, @@ -6097,7 +6097,7 @@ void polymost_initosdfuncs(void) { "r_pr_specularpower", "r_pr_specularpower: overriden specular material power", (void *) &pr_specularpower, CVAR_FLOAT | CVAR_NOSAVE, -10, 1000 }, { "r_pr_specularfactor", "r_pr_specularfactor: overriden specular material factor", (void *) &pr_specularfactor, CVAR_FLOAT | CVAR_NOSAVE, -10, 1000 }, { "r_pr_highpalookups", "r_pr_highpalookups: enable/disable highpalookups", (void *) &pr_highpalookups, CVAR_BOOL, 0, 1 }, - { "r_pr_artmapping", "r_pr_artmapping: enable/disable art mapping - you need to restart the renderer or you'll destroy everything", (void *) &pr_artmapping, CVAR_BOOL, 0, 1 }, + { "r_pr_artmapping", "r_pr_artmapping: enable/disable art mapping", (void *) &pr_artmapping, CVAR_BOOL | CVAR_INVALIDATE8, 0, 1 }, { "r_pr_overridehud", "r_pr_overridehud: overrides hud model parameters with values from the pr_hud* cvars; use it to fine-tune DEF tokens", (void *) &pr_overridehud, CVAR_BOOL | CVAR_NOSAVE, 0, 1 }, { "r_pr_hudxadd", "r_pr_hudxadd: overriden HUD xadd; see r_pr_overridehud", (void *) &pr_hudxadd, CVAR_FLOAT | CVAR_NOSAVE, -100, 100 }, { "r_pr_hudyadd", "r_pr_hudyadd: overriden HUD yadd; see r_pr_overridehud", (void *) &pr_hudyadd, CVAR_FLOAT | CVAR_NOSAVE, -100, 100 }, diff --git a/polymer/eduke32/source/osdcmds.c b/polymer/eduke32/source/osdcmds.c index 4215f816e..0033937d6 100644 --- a/polymer/eduke32/source/osdcmds.c +++ b/polymer/eduke32/source/osdcmds.c @@ -388,7 +388,7 @@ static int32_t osdcmd_restartsound(const osdfuncparm_t *parm) return OSDCMD_OK; } -static int32_t osdcmd_restartvid(const osdfuncparm_t *parm) +int32_t osdcmd_restartvid(const osdfuncparm_t *parm) { UNREFERENCED_PARAMETER(parm); resetvideomode();