mirror of
https://github.com/UberGames/EF2GameSource.git
synced 2024-11-10 06:31:42 +00:00
128 lines
3.8 KiB
C++
128 lines
3.8 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 "actorincludes.h"
|
|
|
|
//============================
|
|
// Class SensoryPerception
|
|
//============================
|
|
//
|
|
// Class used to handle all sensory perception by actors.
|
|
//
|
|
class SensoryPerception
|
|
{
|
|
public:
|
|
SensoryPerception();
|
|
explicit SensoryPerception(Actor *actor);
|
|
virtual ~SensoryPerception();
|
|
|
|
// Sense functions
|
|
void SenseEnemies();
|
|
|
|
|
|
// 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();
|
|
|
|
//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__ */
|