mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-08-14 04:31:05 +00:00
1
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
// $NoKeywords: $
|
||||
//=============================================================================//
|
||||
|
||||
// copied from portal2 code; original code came with client-predicted counterpart,
|
||||
// but implementing predictable triggers in tf2 wasn't trivial so this is just the
|
||||
// server component. it works but causes prediction errors.
|
||||
#ifndef TRIGGER_CATAPULT_H
|
||||
#define TRIGGER_CATAPULT_H
|
||||
#ifdef _WIN32
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
#include "triggers.h"
|
||||
|
||||
|
||||
class CTriggerCatapult : public CBaseTrigger
|
||||
{
|
||||
DECLARE_CLASS( CTriggerCatapult, CBaseTrigger );
|
||||
DECLARE_DATADESC();
|
||||
//DECLARE_SERVERCLASS();
|
||||
|
||||
public:
|
||||
|
||||
CTriggerCatapult( void );
|
||||
|
||||
virtual void Spawn( void );
|
||||
virtual void StartTouch( CBaseEntity *pOther );
|
||||
virtual void EndTouch( CBaseEntity *pOther );
|
||||
virtual int DrawDebugTextOverlays(void);
|
||||
virtual void DrawDebugGeometryOverlays( void );
|
||||
|
||||
void LaunchThink( void );
|
||||
|
||||
void PlayerPassesTriggerFiltersThink( void );
|
||||
static const char *s_szPlayerPassesTriggerFiltersThinkContext;
|
||||
|
||||
private:
|
||||
void InputSetPlayerSpeed( inputdata_t &in );
|
||||
void InputSetPhysicsSpeed( inputdata_t &in );
|
||||
void InputSetLaunchTarget( inputdata_t &in );
|
||||
void InputSetExactVelocityChoiceType( inputdata_t &in );
|
||||
|
||||
void LaunchByTarget( CBaseEntity *pVictim, CBaseEntity *pTarget );
|
||||
Vector CalculateLaunchVector( CBaseEntity *pVictim, CBaseEntity *pTarget );
|
||||
Vector CalculateLaunchVectorPreserve( Vector vecInitialVelocity, CBaseEntity *pVictim, CBaseEntity *pTarget, bool bForcePlayer = false );
|
||||
|
||||
void LaunchByDirection( CBaseEntity *pVictim );
|
||||
void OnLaunchedVictim( CBaseEntity *pVictim );
|
||||
|
||||
float m_flRefireDelay[MAX_PLAYERS + 1];
|
||||
float m_flPlayerVelocity;
|
||||
float m_flPhysicsVelocity;
|
||||
QAngle m_vecLaunchAngles;
|
||||
string_t m_strLaunchTarget;
|
||||
int m_ExactVelocityChoice;
|
||||
bool m_bUseExactVelocity;
|
||||
bool m_bUseThresholdCheck;
|
||||
float m_flLowerThreshold;
|
||||
float m_flUpperThreshold;
|
||||
float m_flEntryAngleTolerance;
|
||||
EHANDLE m_hLaunchTarget;
|
||||
bool m_bOnlyVelocityCheck;
|
||||
bool m_bApplyAngularImpulse;
|
||||
bool m_bPlayersPassTriggerFilters;
|
||||
float m_flAirControlSupressionTime;
|
||||
bool m_bDirectionSuppressAirControl;
|
||||
|
||||
//CNetworkArray( float, m_flRefireDelay, MAX_PLAYERS + 1 ); // 0 for physics object the rest for each player userid
|
||||
//CNetworkVar( float, m_flPlayerVelocity );
|
||||
//CNetworkVar( float, m_flPhysicsVelocity );
|
||||
//CNetworkQAngle( m_vecLaunchAngles );
|
||||
////CNetworkVar( string_t, m_strLaunchTarget );
|
||||
//string_t m_strLaunchTarget;
|
||||
|
||||
//CNetworkVar( int, m_ExactVelocityChoice );
|
||||
//CNetworkVar( bool, m_bUseExactVelocity );
|
||||
|
||||
//CNetworkVar( bool, m_bUseThresholdCheck );
|
||||
//CNetworkVar( float, m_flLowerThreshold );
|
||||
//CNetworkVar( float, m_flUpperThreshold );
|
||||
//CNetworkVar( float, m_flEntryAngleTolerance );
|
||||
|
||||
//CNetworkHandle( CBaseEntity, m_hLaunchTarget );
|
||||
|
||||
//CNetworkVar( bool, m_bOnlyVelocityCheck );
|
||||
//CNetworkVar( bool, m_bApplyAngularImpulse );
|
||||
//CNetworkVar( bool, m_bPlayersPassTriggerFilters );
|
||||
|
||||
//CNetworkVar( float, m_flAirControlSupressionTime ); // After catapult, stop air control for this long (or default of quarter second if this value is negative)
|
||||
//CNetworkVar( bool, m_bDirectionSuppressAirControl ); // Do we want to use air control suppression for directional catapults.
|
||||
|
||||
COutputEvent m_OnCatapulted;
|
||||
|
||||
CUtlVector< EHANDLE > m_hAbortedLaunchees;
|
||||
};
|
||||
|
||||
#endif // TRIGGER_CATAPULT_H
|
||||
Reference in New Issue
Block a user