void AddSightEvent( gentity_t *owner, vec3_t position, float radius, alertEventLevel_e alertLevel, float addLight ) { //FIXME: Handle this in another manner? if ( level.numAlertEvents >= MAX_ALERT_EVENTS ) { if ( !RemoveOldestAlert() ) {//how could that fail? return; } } if ( owner == NULL && alertLevel < AEL_DANGER ) //allows un-owned danger alerts return; //FIXME: if owner is not a player or player ally, and there are no player allies present, // perhaps we don't need to store the alert... unless we want the player to // react to enemy alert events in some way? #ifdef _DEBUG assert( !Q_isnan(position[0]) && !Q_isnan(position[1]) && !Q_isnan(position[2]) ); #endif VectorCopy( position, level.alertEvents[ level.numAlertEvents ].position ); level.alertEvents[ level.numAlertEvents ].radius = radius; level.alertEvents[ level.numAlertEvents ].level = alertLevel; level.alertEvents[ level.numAlertEvents ].type = AET_SIGHT; level.alertEvents[ level.numAlertEvents ].owner = owner; level.alertEvents[ level.numAlertEvents ].addLight = addLight; //will get added to actual light at that point when it's checked level.alertEvents[ level.numAlertEvents ].ID = level.curAlertID++; level.alertEvents[ level.numAlertEvents ].timestamp = level.time; level.numAlertEvents++; }
void AddSoundEvent( gentity_t *owner, vec3_t position, float radius, alertEventLevel_e alertLevel, qboolean needLOS, qboolean onGround ) { //FIXME: Handle this in another manner? if ( level.numAlertEvents >= MAX_ALERT_EVENTS ) { if ( !RemoveOldestAlert() ) {//how could that fail? return; } } if ( owner == NULL && alertLevel < AEL_DANGER ) //allows un-owned danger alerts return; //FIXME: why are Sand creatures suddenly crashlanding? if ( owner && owner->client && owner->client->NPC_class == CLASS_SAND_CREATURE ) { return; } //FIXME: if owner is not a player or player ally, and there are no player allies present, // perhaps we don't need to store the alert... unless we want the player to // react to enemy alert events in some way? #ifdef _DEBUG assert( !Q_isnan(position[0]) && !Q_isnan(position[1]) && !Q_isnan(position[2]) ); #endif VectorCopy( position, level.alertEvents[ level.numAlertEvents ].position ); level.alertEvents[ level.numAlertEvents ].radius = radius; level.alertEvents[ level.numAlertEvents ].level = alertLevel; level.alertEvents[ level.numAlertEvents ].type = AET_SOUND; level.alertEvents[ level.numAlertEvents ].owner = owner; if ( needLOS ) {//a very low-level sound, when check this sound event, check for LOS level.alertEvents[ level.numAlertEvents ].addLight = 1; //will force an LOS trace on this sound } else { level.alertEvents[ level.numAlertEvents ].addLight = 0; //will force an LOS trace on this sound } level.alertEvents[ level.numAlertEvents ].onGround = onGround; level.alertEvents[ level.numAlertEvents ].ID = ++level.curAlertID; level.alertEvents[ level.numAlertEvents ].timestamp = level.time; level.numAlertEvents++; }
void AddSoundEvent( gentity_t *owner, vec3_t position, float radius, alertEventLevel_e alertLevel, qboolean needLOS ) { //FIXME: Handle this in another manner? if ( level.numAlertEvents >= MAX_ALERT_EVENTS ) { if ( !RemoveOldestAlert() ) {//how could that fail? return; } } if ( owner == NULL && alertLevel < AEL_DANGER ) //allows un-owned danger alerts return; //FIXME: if owner is not a player or player ally, and there are no player allies present, // perhaps we don't need to store the alert... unless we want the player to // react to enemy alert events in some way? VectorCopy( position, level.alertEvents[ level.numAlertEvents ].position ); level.alertEvents[ level.numAlertEvents ].radius = radius; level.alertEvents[ level.numAlertEvents ].level = alertLevel; level.alertEvents[ level.numAlertEvents ].type = AET_SOUND; level.alertEvents[ level.numAlertEvents ].owner = owner; if ( needLOS ) {//a very low-level sound, when check this sound event, check for LOS level.alertEvents[ level.numAlertEvents ].addLight = 1; //will force an LOS trace on this sound } else { level.alertEvents[ level.numAlertEvents ].addLight = 0; //will force an LOS trace on this sound } level.alertEvents[ level.numAlertEvents ].ID = level.curAlertID++; level.alertEvents[ level.numAlertEvents ].timestamp = level.time; level.numAlertEvents++; }