mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-08-10 02:39:35 +00:00
1
This commit is contained in:
@@ -0,0 +1,124 @@
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
//=============================================================================//
|
||||
|
||||
#ifndef SPRITETRAIL_H
|
||||
#define SPRITETRAIL_H
|
||||
#ifdef _WIN32
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
#include "Sprite.h"
|
||||
|
||||
#if defined( CLIENT_DLL )
|
||||
#define CSpriteTrail C_SpriteTrail
|
||||
#endif
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Sprite trail
|
||||
//-----------------------------------------------------------------------------
|
||||
struct TrailPoint_t
|
||||
{
|
||||
DECLARE_SIMPLE_DATADESC();
|
||||
|
||||
Vector m_vecScreenPos;
|
||||
float m_flDieTime;
|
||||
float m_flTexCoord;
|
||||
float m_flWidthVariance;
|
||||
};
|
||||
|
||||
class CSpriteTrail : public CSprite
|
||||
{
|
||||
DECLARE_CLASS( CSpriteTrail, CSprite );
|
||||
DECLARE_DATADESC();
|
||||
DECLARE_NETWORKCLASS();
|
||||
DECLARE_PREDICTABLE();
|
||||
|
||||
public:
|
||||
CSpriteTrail( void );
|
||||
|
||||
// Sets parameters of the sprite trail
|
||||
void SetLifeTime( float time );
|
||||
void SetStartWidth( float flStartWidth );
|
||||
void SetEndWidth( float flEndWidth );
|
||||
void SetStartWidthVariance( float flStartWidthVariance );
|
||||
void SetTextureResolution( float flTexelsPerInch );
|
||||
void SetMinFadeLength( float flMinFadeLength );
|
||||
void SetSkybox( const Vector &vecSkyboxOrigin, float flSkyboxScale );
|
||||
|
||||
// Is the trail in the skybox?
|
||||
bool IsInSkybox() const;
|
||||
void Spawn( void );
|
||||
void Precache( void );
|
||||
void SetTransmit( bool bTransmit = true ) { m_bDrawForMoveParent = bTransmit; }
|
||||
|
||||
#if defined( CLIENT_DLL )
|
||||
// Client only code
|
||||
virtual int DrawModel( int flags );
|
||||
virtual const Vector &GetRenderOrigin( void );
|
||||
virtual const QAngle &GetRenderAngles( void );
|
||||
|
||||
// On data update
|
||||
virtual void OnPreDataChanged( DataUpdateType_t updateType );
|
||||
virtual void OnDataChanged( DataUpdateType_t updateType );
|
||||
virtual void GetRenderBounds( Vector& mins, Vector& maxs );
|
||||
virtual void ClientThink();
|
||||
|
||||
virtual bool ValidateEntityAttachedToPlayer( bool &bShouldRetry );
|
||||
|
||||
#else
|
||||
// Server only code
|
||||
|
||||
virtual int ShouldTransmit( const CCheckTransmitInfo *pInfo );
|
||||
static CSpriteTrail *SpriteTrailCreate( const char *pSpriteName, const Vector &origin, bool animate );
|
||||
|
||||
#endif
|
||||
|
||||
private:
|
||||
#if defined( CLIENT_DLL )
|
||||
enum
|
||||
{
|
||||
// NOTE: # of points max must be a power of two!
|
||||
MAX_SPRITE_TRAIL_POINTS = 256,
|
||||
MAX_SPRITE_TRAIL_MASK = MAX_SPRITE_TRAIL_POINTS - 1,
|
||||
};
|
||||
|
||||
TrailPoint_t *GetTrailPoint( int n );
|
||||
void UpdateTrail( void );
|
||||
void ComputeScreenPosition( Vector *pScreenPos );
|
||||
void ConvertSkybox();
|
||||
void UpdateBoundingBox( void );
|
||||
|
||||
TrailPoint_t m_vecSteps[MAX_SPRITE_TRAIL_POINTS];
|
||||
int m_nFirstStep;
|
||||
int m_nStepCount;
|
||||
float m_flUpdateTime;
|
||||
Vector m_vecPrevSkyboxOrigin;
|
||||
float m_flPrevSkyboxScale;
|
||||
Vector m_vecRenderMins;
|
||||
Vector m_vecRenderMaxs;
|
||||
#endif
|
||||
|
||||
CNetworkVar( float, m_flLifeTime ); // Amount of time before a new trail segment fades away
|
||||
CNetworkVar( float, m_flStartWidth ); // The starting scale
|
||||
CNetworkVar( float, m_flEndWidth ); // The ending scale
|
||||
CNetworkVar( float, m_flStartWidthVariance ); // The starting scale
|
||||
CNetworkVar( float, m_flTextureRes ); // Texture resolution along the trail
|
||||
CNetworkVar( float, m_flMinFadeLength ); // The end of the trail must fade out for this many units
|
||||
CNetworkVector( m_vecSkyboxOrigin ); // What's our skybox origin?
|
||||
CNetworkVar( float, m_flSkyboxScale ); // What's our skybox scale?
|
||||
|
||||
string_t m_iszSpriteName;
|
||||
bool m_bAnimate;
|
||||
bool m_bDrawForMoveParent;
|
||||
|
||||
#if defined( CLIENT_DLL )
|
||||
public:
|
||||
void SetUpdateTime(float setTo){ m_flUpdateTime = setTo; }
|
||||
#endif
|
||||
};
|
||||
|
||||
#endif // SPRITETRAIL_H
|
||||
Reference in New Issue
Block a user