mirror of
https://github.com/UberGames/EF2GameSource.git
synced 2024-11-10 06:31:42 +00:00
131 lines
4.1 KiB
C++
131 lines
4.1 KiB
C++
//-----------------------------------------------------------------------------
|
|
//
|
|
// $Logfile:: /Code/DLLs/game/actor_sensoryperception.h $
|
|
// $Revision:: 7 $
|
|
// $Author:: Steven $
|
|
// $Date:: 10/13/03 8:53a $
|
|
//
|
|
// Copyright (C) 2001 by Ritual Entertainment, Inc.
|
|
// All rights reserved.
|
|
//
|
|
// This source may not be distributed and/or modified without
|
|
// expressly written permission by Ritual Entertainment, Inc.
|
|
//
|
|
// DESCRIPTION:
|
|
// SensoryPerception class for Actors -- Handles all the sensory related funtionality
|
|
//
|
|
|
|
class SensoryPerception;
|
|
|
|
#ifndef __ACTOR_SENSORYPERCEPTION_H__
|
|
#define __ACTOR_SENSORYPERCEPTION_H__
|
|
|
|
#include "actor.h"
|
|
#include "actorincludes.h"
|
|
#include "weapon.h"
|
|
|
|
//============================
|
|
// Class SensoryPerception
|
|
//============================
|
|
//
|
|
// Class used to handle all sensory perception by actors.
|
|
//
|
|
class SensoryPerception
|
|
{
|
|
public:
|
|
SensoryPerception();
|
|
SensoryPerception(Actor *actor );
|
|
~SensoryPerception();
|
|
|
|
// Sense functions
|
|
void SenseEnemies();
|
|
void SearchForEnemies();
|
|
|
|
|
|
// Stimuli functions
|
|
void Stimuli( int stimuli );
|
|
void Stimuli( int stimuli, Entity *ent );
|
|
void Stimuli( int stimuli, const Vector &pos );
|
|
void Stimuli( int stimuli, const Vector &pos, int sound_Type );
|
|
void RespondTo( const str &stimuli_name , qboolean respond );
|
|
void RespondTo( int stimuli, qboolean respond );
|
|
void PermanentlyRespondTo( const str &stimuli_name , qboolean respond );
|
|
qboolean ShouldRespondToStimuli( int new_stimuli );
|
|
|
|
|
|
// Vision functions
|
|
qboolean WithinVisionDistance( const Entity *ent );
|
|
qboolean WithinVisionDistance( const Vector &pos );
|
|
qboolean InFOV( const Vector &pos, float check_fov, float check_fovdot );
|
|
qboolean InFOV( const Vector &pos );
|
|
qboolean InFOV( const Entity *ent );
|
|
|
|
// New Vision Functions -- Simplified Vision
|
|
qboolean CanSeeEntity( Entity *start , const Entity *target, qboolean useFOV, qboolean useVisionDistance );
|
|
qboolean CanSeeEntity( const Vector &start , const Entity *target, qboolean useFOV, qboolean useVisionDistance );
|
|
|
|
// New Vision Functions -- More Sophisticated Vision
|
|
qboolean CanSeeEntityComplex( Entity *start , Entity *target, qboolean useFOV, qboolean useVisionDistance );
|
|
qboolean CanSeeEntityComplex( Vector &start , Entity *target, qboolean useFOV, qboolean useVisionDistance );
|
|
|
|
qboolean CanSeePosition( const Vector &start, const Vector &position, qboolean useFOV, qboolean useVisionDistance );
|
|
|
|
qboolean isInLineOfSight( const Vector &position , const int entNum );
|
|
qboolean checkInLineOfSight( const Vector &position , const int entNum );
|
|
|
|
// Debugging Functions
|
|
void ShowInfo();
|
|
|
|
// Accessors and Mutators
|
|
void SetNoisePosition( const Vector &pos );
|
|
Vector GetNoisePosition();
|
|
|
|
void SetLastSoundType( int soundtype );
|
|
int GetLastSoundType();
|
|
|
|
void SetNoiseTime( float noisetime );
|
|
float GetNoiseTime();
|
|
|
|
void SetFOV( float fov );
|
|
float GetFOV();
|
|
|
|
void SetFOVdot( float fov_dot );
|
|
float GetFOVdot();
|
|
|
|
void SetVisionDistance( float vision_distance );
|
|
float GetVisionDistance();
|
|
|
|
// Archiving
|
|
virtual void Archive( Archiver &arc );
|
|
void DoArchive( Archiver &arc , Actor *actor );
|
|
|
|
private: //Functions
|
|
qboolean _CanSeeComplex( Vector &start , Entity *target , qboolean useFOV , qboolean useVisionDistance );
|
|
qboolean _SenseEntity( Entity *ent );
|
|
void _init();
|
|
|
|
private: //Member Variables
|
|
|
|
// Stimuli Variables
|
|
int _stimuli;
|
|
int _permanent_stimuli;
|
|
|
|
// Hearing Variables
|
|
Vector _noise_position;
|
|
int _last_soundType;
|
|
float _noise_time;
|
|
|
|
// Vision Stuff for "seeing"
|
|
float _fov;
|
|
float _fovdot;
|
|
float _vision_distance;
|
|
|
|
float _nextSenseTime;
|
|
|
|
LineOfSight_t _lineOfSight;
|
|
|
|
Actor *act;
|
|
|
|
};
|
|
|
|
#endif /* __ACTOR_SENSORYPERCEPTION_H__ */
|