Team Fortress 2 Source Code as on 22/4/2020
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//========= 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
|