From cbae18480b75ae224b4530da30d0aee2d551a212 Mon Sep 17 00:00:00 2001 From: havoc Date: Thu, 24 May 2007 20:12:21 +0000 Subject: [PATCH] added parsing of rgbgen wave and alphagen wave git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@7365 d7cf8633-e32d-0410-b094-e92efae38249 --- model_shared.c | 20 +++++++++++++++++--- model_shared.h | 4 ++++ 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/model_shared.c b/model_shared.c index 05432325..fd172653 100644 --- a/model_shared.c +++ b/model_shared.c @@ -1267,7 +1267,13 @@ void Mod_LoadQ3Shaders(void) else if (!strcasecmp(parameter[1], "oneminusentity")) layer->rgbgen = Q3RGBGEN_ONEMINUSENTITY; else if (!strcasecmp(parameter[1], "oneminusvertex")) layer->rgbgen = Q3RGBGEN_ONEMINUSVERTEX; else if (!strcasecmp(parameter[1], "vertex")) layer->rgbgen = Q3RGBGEN_VERTEX; - else if (!strcasecmp(parameter[1], "wave")) layer->rgbgen = Q3RGBGEN_WAVE; + else if (!strcasecmp(parameter[1], "wave")) + { + layer->rgbgen = Q3RGBGEN_WAVE; + layer->rgbgen_wavefunc = Mod_LoadQ3Shaders_EnumerateWaveFunc(parameter[2]); + for (i = 0;i < numparameters - 3 && i < Q3RGBGEN_MAXPARMS;i++) + layer->rgbgen_parms[i] = atof(parameter[i+3]); + } else Con_DPrintf("%s parsing warning: unknown rgbgen %s\n", search->filenames[fileindex], parameter[1]); } else if (numparameters >= 2 && !strcasecmp(parameter[0], "alphagen")) @@ -1283,7 +1289,13 @@ void Mod_LoadQ3Shaders(void) else if (!strcasecmp(parameter[1], "oneminusvertex")) layer->alphagen = Q3ALPHAGEN_ONEMINUSVERTEX; else if (!strcasecmp(parameter[1], "portal")) layer->alphagen = Q3ALPHAGEN_PORTAL; else if (!strcasecmp(parameter[1], "vertex")) layer->alphagen = Q3ALPHAGEN_VERTEX; - else if (!strcasecmp(parameter[1], "wave")) layer->alphagen = Q3ALPHAGEN_WAVE; + else if (!strcasecmp(parameter[1], "wave")) + { + layer->alphagen = Q3RGBGEN_WAVE; + layer->alphagen_wavefunc = Mod_LoadQ3Shaders_EnumerateWaveFunc(parameter[2]); + for (i = 0;i < numparameters - 3 && i < Q3ALPHAGEN_MAXPARMS;i++) + layer->alphagen_parms[i] = atof(parameter[i+3]); + } else Con_DPrintf("%s parsing warning: unknown alphagen %s\n", search->filenames[fileindex], parameter[1]); } else if (numparameters >= 2 && (!strcasecmp(parameter[0], "texgen") || !strcasecmp(parameter[0], "tcgen"))) @@ -1327,9 +1339,9 @@ void Mod_LoadQ3Shaders(void) else if (!strcasecmp(parameter[1], "stretch")) { layer->tcmod[tcmodindex] = Q3TCMOD_STRETCH; + layer->tcmod_wavefunc[tcmodindex] = Mod_LoadQ3Shaders_EnumerateWaveFunc(parameter[2]); for (i = 0;i < numparameters - 3 && i < Q3TCMOD_MAXPARMS;i++) layer->tcmod_parms[tcmodindex][i] = atof(parameter[i+3]); - layer->tcmod_wavefunc[tcmodindex] = Mod_LoadQ3Shaders_EnumerateWaveFunc(parameter[2]); } else if (!strcasecmp(parameter[1], "transform")) layer->tcmod[tcmodindex] = Q3TCMOD_TRANSFORM; else if (!strcasecmp(parameter[1], "turb")) layer->tcmod[tcmodindex] = Q3TCMOD_TURBULENT; @@ -1598,7 +1610,9 @@ nothing GL_ZERO GL_ONE { // copy over many shader->primarylayer parameters texture->rgbgen = shader->primarylayer->rgbgen; + texture->rgbgen_wavefunc = shader->primarylayer->rgbgen_wavefunc; texture->alphagen = shader->primarylayer->alphagen; + texture->alphagen_wavefunc = shader->primarylayer->alphagen_wavefunc; texture->tcgen = shader->primarylayer->tcgen; memcpy(texture->tcmod , shader->primarylayer->tcmod , sizeof(texture->tcmod)); memcpy(texture->rgbgen_parms , shader->primarylayer->rgbgen_parms , sizeof(texture->rgbgen_parms)); diff --git a/model_shared.h b/model_shared.h index 5e1e54ce..59fe7424 100644 --- a/model_shared.h +++ b/model_shared.h @@ -273,7 +273,9 @@ typedef struct q3shaderinfo_layer_s q3tcgen_t tcgen; q3tcmod_t tcmod[Q3MAXTCMODS]; float rgbgen_parms[Q3RGBGEN_MAXPARMS]; + q3wavefunc_t rgbgen_wavefunc; float alphagen_parms[Q3ALPHAGEN_MAXPARMS]; + q3wavefunc_t alphagen_wavefunc; float tcgen_parms[Q3TCGEN_MAXPARMS]; float tcmod_parms[Q3MAXTCMODS][Q3TCMOD_MAXPARMS]; q3wavefunc_t tcmod_wavefunc[Q3MAXTCMODS]; @@ -375,7 +377,9 @@ typedef struct texture_s q3tcgen_t tcgen; q3tcmod_t tcmod[Q3MAXTCMODS]; float rgbgen_parms[Q3RGBGEN_MAXPARMS]; + q3wavefunc_t rgbgen_wavefunc; float alphagen_parms[Q3ALPHAGEN_MAXPARMS]; + q3wavefunc_t alphagen_wavefunc; float tcgen_parms[Q3TCGEN_MAXPARMS]; float tcmod_parms[Q3MAXTCMODS][Q3TCMOD_MAXPARMS]; q3wavefunc_t tcmod_wavefunc[Q3MAXTCMODS]; -- 2.39.2