aboutsummaryrefslogtreecommitdiff
path: root/mp/src/game/client/beamdraw.h
diff options
context:
space:
mode:
Diffstat (limited to 'mp/src/game/client/beamdraw.h')
-rw-r--r--mp/src/game/client/beamdraw.h173
1 files changed, 173 insertions, 0 deletions
diff --git a/mp/src/game/client/beamdraw.h b/mp/src/game/client/beamdraw.h
new file mode 100644
index 00000000..a5d4c5e2
--- /dev/null
+++ b/mp/src/game/client/beamdraw.h
@@ -0,0 +1,173 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+// $NoKeywords: $
+//===========================================================================//
+#if !defined( BEAMDRAW_H )
+#define BEAMDRAW_H
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include "materialsystem/imaterial.h"
+#include "materialsystem/imesh.h"
+#include "mathlib/vector.h"
+#include "tier2/beamsegdraw.h"
+#include "c_pixel_visibility.h"
+
+#define NOISE_DIVISIONS 128
+
+//-----------------------------------------------------------------------------
+// Forward declarations
+//-----------------------------------------------------------------------------
+
+struct model_t;
+struct BeamTrail_t;
+
+//-----------------------------------------------------------------------------
+// Purpose: Beams fill out this data structure
+// This is also used for rendering
+//-----------------------------------------------------------------------------
+
+class Beam_t : public CDefaultClientRenderable
+{
+public:
+ Beam_t();
+
+ // Methods of IClientRenderable
+ virtual const Vector& GetRenderOrigin( void );
+ virtual const QAngle& GetRenderAngles( void );
+ virtual const matrix3x4_t &RenderableToWorldTransform();
+ virtual void GetRenderBounds( Vector& mins, Vector& maxs );
+ virtual bool ShouldDraw( void );
+ virtual bool IsTransparent( void );
+ virtual int DrawModel( int flags );
+ virtual void ComputeFxBlend( );
+ virtual int GetFxBlend( );
+
+ // Resets the beam state
+ void Reset();
+
+ // Method to computing the bounding box
+ void ComputeBounds();
+
+ // Bounding box...
+ Vector m_Mins;
+ Vector m_Maxs;
+ pixelvis_handle_t *m_queryHandleHalo;
+ float m_haloProxySize;
+
+ // Data is below..
+
+ // Next beam in list
+ Beam_t* next;
+
+ // Type of beam
+ int type;
+ int flags;
+
+ // Control points for the beam
+ int numAttachments;
+ Vector attachment[MAX_BEAM_ENTS];
+ Vector delta;
+
+ // 0 .. 1 over lifetime of beam
+ float t;
+ float freq;
+
+ // Time when beam should die
+ float die;
+ float width;
+ float endWidth;
+ float fadeLength;
+ float amplitude;
+ float life;
+
+ // Color
+ float r, g, b;
+ float brightness;
+
+ // Speed
+ float speed;
+
+ // Animation
+ float frameRate;
+ float frame;
+ int segments;
+
+ // Attachment entities for the beam
+ EHANDLE entity[MAX_BEAM_ENTS];
+ int attachmentIndex[MAX_BEAM_ENTS];
+
+ // Model info
+ int modelIndex;
+ int haloIndex;
+
+ float haloScale;
+ int frameCount;
+
+ float rgNoise[NOISE_DIVISIONS+1];
+
+ // Popcorn trail for beam follows to use
+ BeamTrail_t* trail;
+
+ // for TE_BEAMRINGPOINT
+ float start_radius;
+ float end_radius;
+
+ // for FBEAM_ONLYNOISEONCE
+ bool m_bCalculatedNoise;
+
+ float m_flHDRColorScale;
+
+#ifdef PORTAL
+ bool m_bDrawInMainRender;
+ bool m_bDrawInPortalRender;
+#endif //#ifdef PORTAL
+};
+
+
+int ScreenTransform( const Vector& point, Vector& screen );
+
+void DrawSegs( int noise_divisions, float *prgNoise, const model_t* spritemodel,
+ float frame, int rendermode, const Vector& source, const Vector& delta,
+ float startWidth, float endWidth, float scale, float freq, float speed, int segments,
+ int flags, float* color, float fadeLength, float flHDRColorScale = 1.0f );
+void DrawTeslaSegs( int noise_divisions, float *prgNoise, const model_t* spritemodel,
+ float frame, int rendermode, const Vector& source, const Vector& delta,
+ float startWidth, float endWidth, float scale, float freq, float speed, int segments,
+ int flags, float* color, float fadeLength, float flHDRColorScale = 1.0f );
+void DrawSplineSegs( int noise_divisions, float *prgNoise,
+ const model_t* beammodel, const model_t* halomodel, float flHaloScale,
+ float frame, int rendermode, int numAttachments, Vector* attachment,
+ float startWidth, float endWidth, float scale, float freq, float speed, int segments,
+ int flags, float* color, float fadeLength, float flHDRColorScale = 1.0f );
+void DrawHalo(IMaterial* pMaterial, const Vector& source, float scale, float const* color, float flHDRColorScale = 1.0f );
+void BeamDrawHalo( const model_t* spritemodel, float frame, int rendermode, const Vector& source,
+ float scale, float* color, float flHDRColorScale = 1.0f );
+void DrawDisk( int noise_divisions, float *prgNoise, const model_t* spritemodel,
+ float frame, int rendermode, const Vector& source, const Vector& delta,
+ float width, float scale, float freq, float speed,
+ int segments, float* color, float flHDRColorScale = 1.0f );
+void DrawCylinder( int noise_divisions, float *prgNoise, const model_t* spritemodel,
+ float frame, int rendermode, const Vector& source,
+ const Vector& delta, float width, float scale, float freq,
+ float speed, int segments, float* color, float flHDRColorScale = 1.0f );
+void DrawRing( int noise_divisions, float *prgNoise, void (*pfnNoise)( float *noise, int divs, float scale ),
+ const model_t* spritemodel, float frame, int rendermode,
+ const Vector& source, const Vector& delta, float width, float amplitude,
+ float freq, float speed, int segments, float* color, float flHDRColorScale = 1.0f );
+void DrawBeamFollow( const model_t* spritemodel, BeamTrail_t* pHead, int frame, int rendermode, Vector& delta,
+ Vector& screen, Vector& screenLast, float die, const Vector& source,
+ int flags, float width, float amplitude, float freq, float* color, float flHDRColorScale = 1.0f );
+
+void DrawBeamQuadratic( const Vector &start, const Vector &control, const Vector &end, float width, const Vector &color, float scrollOffset, float flHDRColorScale = 1.0f );
+class CEngineSprite *Draw_SetSpriteTexture( const model_t *pSpriteModel, int frame, int rendermode );
+
+//-----------------------------------------------------------------------------
+// Assumes the material has already been bound
+//-----------------------------------------------------------------------------
+void DrawSprite( const Vector &vecOrigin, float flWidth, float flHeight, color32 color );
+
+#endif // BEAMDRAW_H \ No newline at end of file