Added target_shaderremap provided by Harry Young

Signed-off-by: UberGames <admin@ubergames.org>
This commit is contained in:
UberGames 2011-10-17 11:43:14 +02:00
parent e03c490c2f
commit 1c0613c59a
2 changed files with 55 additions and 1 deletions

View file

@ -181,6 +181,9 @@ void SP_target_warp(gentity_t *ent); //RPG-X | GSIO01 | 19/05/2009
void SP_target_deactivate(gentity_t *ent);
void SP_target_serverchange(gentity_t *ent);
void SP_target_levelchange(gentity_t *ent);
#ifdef XTRA
void SP_target_shaderremap(gentity_t *ent);
#endif
void SP_light (gentity_t *self);
void SP_info_null (gentity_t *self);
@ -370,6 +373,9 @@ spawn_t spawns[] = {
{"target_deactivate", SP_target_deactivate},
{"target_serverchange", SP_target_serverchange},
{"target_levelchange", SP_target_levelchange},
#ifdef XTRA
{"target_shaderremap", SP_target_shaderremap},
#endif
{"light", SP_light},
{"path_corner", SP_path_corner},

View file

@ -2827,4 +2827,52 @@ void SP_target_levelchange(gentity_t *ent) {
void SP_target_holodeck(gentity_t *ent) {
}
}
//RPG-X | Harry Young | 15/10/2011 | MOD START
#ifdef XTRA
/*QUAKED target_shaderremap (1 0 0) (-8 -8 -8) (8 8 8)
This will remap the shader "falsename" with shader "truename" and vice versa.
It will save you some vfx-usables.
This Entity only works on RPGXEF
*/
void target_shaderremap_think(gentity_t *ent) {
float f = 0;
if(!ent->spawnflags) {
f = level.time * 0.001;
AddRemap(ent->falsename, ent->truename, f);
ent->spawnflags = 1;
ent->nextthink = -1;
} else {
f = level.time * 0.001;
AddRemap(ent->falsename, ent->falsename, f);
ent->spawnflags = 0;
ent->nextthink = -1;
}
trap_SetConfigstring(CS_SHADERSTATE, BuildShaderStateConfig());
}
void target_shaderremap_use(gentity_t *ent, gentity_t *other, gentity_t *activator) {
ent->think = target_shaderremap_think;
ent->nextthink = level.time + 50; /* level.time + one frame */
}
void SP_target_shaderremap(gentity_t *ent) {
if(!ent->falsename) {
G_Printf(S_COLOR_RED "target_shaderremap without falsename-shader at %s!\n", vtos(ent->s.origin));
G_FreeEntity(ent);
return;
}
if(!ent->truename) {
G_Printf(S_COLOR_RED "target_shaderremap without truename-shader at %s!\n", vtos(ent->s.origin));
G_FreeEntity(ent);
return;
}
ent->use = target_shaderremap_use;
}
#endif
//RPG-X | Harry Young | 15/10/2011 | MOD END