/* ============================== G_FireAllTargetsOf "activator" should be set to the entity that initiated the firing. For all t in the entities, where t.targetnames[i] matches ent.targets[j] for any (i,j) pairs, call the t.use function. ============================== */ void G_EventFireEntity( gentity_t *self, gentity_t *activator, gentityCallEvent_t eventType ) { gentity_t *currentTarget = NULL; int targetIndex; gentityCall_t call; call.activator = activator; if ( self->shaderKey && self->shaderReplacement ) { G_SetShaderRemap( self->shaderKey, self->shaderReplacement, level.time * 0.001 ); trap_SetConfigstring( CS_SHADERSTATE, BuildShaderStateConfig() ); } while( ( currentTarget = G_IterateCallEndpoints( currentTarget, &targetIndex, self ) ) != NULL ) { if( eventType && self->calltargets[ targetIndex ].eventType != eventType ) { continue; } call.caller = self; //reset the caller in case there have been nested calls call.definition = &self->calltargets[ targetIndex ]; G_CallEntity(currentTarget, &call); if ( !self->inuse ) { G_Printf( S_WARNING "entity was removed while using targets\n" ); return; } } }
void gfx_shader_mod_act( gentity_t *self, gentity_t *other, gentity_t *activator ) { if ( !self->shaderKey || !self->shaderReplacement || !self->enabled ) { return; } G_SetShaderRemap( self->shaderKey, self->shaderReplacement, level.time * 0.001 ); trap_SetConfigstring( CS_SHADERSTATE, BuildShaderStateConfig() ); self->active = true; }
void gfx_shader_mod_reset( gentity_t *self ) { if ( !self->shaderKey || !self->shaderReplacement ) { return; } if( !self->active ) // initial reset doesnt need a remap { return; } G_SetShaderRemap( self->shaderKey, self->shaderKey, level.time * 0.001 ); trap_SetConfigstring( CS_SHADERSTATE, BuildShaderStateConfig() ); self->active = false; }