source-engine/game/shared/portal/env_lightrail_endpoint_shared.h
2022-04-16 12:05:19 +03:00

70 lines
2.4 KiB
C++

//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
//=============================================================================//
#ifndef ENV_LIGHTRAIL_ENDPOINT_SHARED_H
#define ENV_LIGHTRAIL_ENDPOINT_SHARED_H
#ifdef _WIN32
#pragma once
#endif
#define SF_ENDPOINT_START_SMALLFX (1<<0) //Define spawnflags
//#define SF_ENDPOINT_START_LARGEFX (1<<1)
enum //Enumeration of the 4 states the endpoints can be in.
{
ENDPOINT_STATE_OFF, //No FX displayed
ENDPOINT_STATE_SMALLFX, //Just the small particle trail is displayed and a faint glow
ENDPOINT_STATE_CHARGING, //Ramp up over a certain amount of time to the large bright glow
ENDPOINT_STATE_LARGEFX, //Shows a particle trail and a large bright glow
ENDPOINT_STATE_COUNT,
};
#ifndef CLIENT_DLL
// ============================================================================
//
// Energy core - charges up and then releases energy from its position
//
// ============================================================================
class CEnv_Lightrail_Endpoint : public CBaseEntity
{
DECLARE_CLASS( CEnv_Lightrail_Endpoint, CBaseEntity );
DECLARE_SERVERCLASS();
DECLARE_DATADESC();
public:
void InputStartCharge( inputdata_t &inputdata );
void InputStartSmallFX(inputdata_t &inputdata );
void InputStartLargeFX( inputdata_t &inputdata );
void InputStop( inputdata_t &inputdata );
void SetSmallFXScale( float flSmallScale ) { m_flSmallScale = flSmallScale; }
void SetLargeFXScale( float flLargeScale ) { m_flLargeScale = flLargeScale; }
void StartCharge( float flWarmUpTime ); //Charging difference between the small and large fx
void StartSmallFX(); //Start discharging the scaled down version of the FX
void StartLargeFX(); //Start discharging the larger brighter version of the FX
void StopSmallFX( float flCoolDownTime ); //Stop discharging the small fx
void StopLargeFX( float flCoolDownTime ); //Stop discharging the small fx
virtual int ShouldTransmit( const CCheckTransmitInfo *pInfo );
virtual int UpdateTransmitState( void );
virtual void Precache();
void Spawn( void );
private:
CNetworkVar( float, m_flSmallScale ); //Scale of the small fx
CNetworkVar( float, m_flLargeScale ); //Scale of the large fx
CNetworkVar( int, m_nState ); //Current state of the fx
CNetworkVar( float, m_flDuration );
CNetworkVar( float, m_flStartTime );
};
#endif
#endif // ENV_LIGHTRAIL_ENDPOINT_SHARED_H