diff options
Diffstat (limited to 'game/server/hl2/ai_spotlight.h')
| -rw-r--r-- | game/server/hl2/ai_spotlight.h | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/game/server/hl2/ai_spotlight.h b/game/server/hl2/ai_spotlight.h new file mode 100644 index 0000000..c8a2937 --- /dev/null +++ b/game/server/hl2/ai_spotlight.h @@ -0,0 +1,83 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +//=============================================================================// + +#ifndef AI_SPOTLIGHT_H +#define AI_SPOTLIGHT_H + +#ifdef _WIN32 +#pragma once +#endif + +#include "ai_component.h" + +class CBeam; +class CSprite; +class SmokeTrail; +class CSpotlightEnd; + + +//----------------------------------------------------------------------------- +// Parameters for how the scanner relates to citizens. +//----------------------------------------------------------------------------- +enum +{ + AI_SPOTLIGHT_NO_DLIGHTS = 0x1, +}; + + +class CAI_Spotlight : public CAI_Component +{ + DECLARE_SIMPLE_DATADESC(); + DECLARE_CLASS_NOBASE( CAI_Spotlight ); + +public: + CAI_Spotlight(); + ~CAI_Spotlight(); + + void Init( CAI_BaseNPC *pOuter, int nFlags, float flConstraintAngle, float flMaxLength ); + + // Create, destroy the spotlight + void SpotlightCreate( int nAttachment, const Vector &vecInitialDir ); + void SpotlightDestroy(void); + + // Controls the spotlight target position + direction + void SetSpotlightTargetPos( const Vector &vSpotlightTargetPos ); + void SetSpotlightTargetDirection( const Vector &vSpotlightTargetDir ); + + // Updates the spotlight. Call every frame! + void Update(void); + +private: + void Precache(void); + void CreateSpotlightEntities( void ); + void UpdateSpotlightDirection( void ); + void UpdateSpotlightEndpoint( void ); + + // Constrain to cone, returns true if it was constrained + bool ConstrainToCone( Vector *pDirection ); + + // Computes the spotlight endpoint + void ComputeEndpoint( const Vector &vecStartPoint, Vector *pEndPoint ); + +private: + CHandle<CBeam> m_hSpotlight; + CHandle<CSpotlightEnd> m_hSpotlightTarget; + + Vector m_vSpotlightTargetPos; + Vector m_vSpotlightDir; + float m_flSpotlightCurLength; + float m_flSpotlightMaxLength; + float m_flConstraintAngle; + int m_nHaloSprite; + int m_nSpotlightAttachment; + int m_nFlags; + Quaternion m_vAngularVelocity; +}; + + +#endif // AI_SPOTLIGHT_H + + |