This repository has been archived on 2024-06-13. You can view files and clone it, but cannot push or open issues or pull requests.
nekohook/modules/source2013/sdk/game/server/AI_Interest_Target.h
2020-08-04 13:13:01 -04:00

82 lines
2.2 KiB
C++

//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose: Hooks and classes for the support of humanoid NPCs with
// groovy facial animation capabilities, aka, "Actors"
//
//=============================================================================//
#ifndef AI_INTEREST_TARGET_H
#define AI_INTEREST_TARGET_H
#if defined(_WIN32)
#pragma once
#endif
//-----------------------------------------------------------------------------
// CAI_BaseActor
//
// Purpose: The base class for all facially expressive NPCS.
//
//-----------------------------------------------------------------------------
class CAI_InterestTarget_t {
public:
enum CAI_InterestTarget_e {
LOOKAT_ENTITY = 0,
LOOKAT_POSITION,
LOOKAT_BOTH
};
public:
bool IsThis(CBaseEntity *pThis);
const Vector &GetPosition(void);
bool IsActive(void);
float Interest(void);
public:
CAI_InterestTarget_e m_eType; // ????
EHANDLE m_hTarget;
Vector m_vecPosition;
float m_flStartTime;
float m_flEndTime;
float m_flRamp;
float m_flInterest;
DECLARE_SIMPLE_DATADESC();
};
class CAI_InterestTarget : public CUtlVector<CAI_InterestTarget_t> {
public:
void Add(CBaseEntity *pTarget, float flImportance, float flDuration,
float flRamp);
void Add(const Vector &vecPosition, float flImportance, float flDuration,
float flRamp);
void Add(CBaseEntity *pTarget, const Vector &vecPosition,
float flImportance, float flDuration, float flRamp);
int Find(CBaseEntity *pTarget) {
int i;
for (i = 0; i < Count(); i++) {
if (pTarget == (*this)[i].m_hTarget) return i;
}
return InvalidIndex();
}
void Cleanup(void) {
int i;
for (i = Count() - 1; i >= 0; i--) {
if (!Element(i).IsActive()) {
Remove(i);
}
}
};
private:
void Add(CAI_InterestTarget_t::CAI_InterestTarget_e type,
CBaseEntity *pTarget, const Vector &vecPosition,
float flImportance, float flDuration, float flRamp);
};
//-----------------------------------------------------------------------------
#endif // AI_INTEREST_TARGET_H