diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /public/ScratchPadUtils.h | |
| download | archived-source-engine-2018-hl2-src-master.tar.xz archived-source-engine-2018-hl2-src-master.zip | |
Diffstat (limited to 'public/ScratchPadUtils.h')
| -rw-r--r-- | public/ScratchPadUtils.h | 163 |
1 files changed, 163 insertions, 0 deletions
diff --git a/public/ScratchPadUtils.h b/public/ScratchPadUtils.h new file mode 100644 index 0000000..9ff47fe --- /dev/null +++ b/public/ScratchPadUtils.h @@ -0,0 +1,163 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: This module contains helper functions for use with scratch pads. +// +// $NoKeywords: $ +//=============================================================================// + +#ifndef SCRATCHPADUTILS_H +#define SCRATCHPADUTILS_H +#ifdef _WIN32 +#pragma once +#endif + + +#include "iscratchpad3d.h" + + +// Use this to make a graph. +class CScratchPadGraph +{ +public: + + typedef int LineID; + + CScratchPadGraph(); + + // Initialze the orientation and scales of the two axes. + // Axis indices are 0, 1, or 2 for x, y, and z. + void Init( + IScratchPad3D *pPad, + + Vector vTimeAxis = Vector(0,-1,0), + float flInchesPerSecond=1, + Vector vTimeLineColor=Vector(0,0,1), + float flTimeOrigin=0, // Where the origin of the graph is. + + float flTimeLabelEveryNSeconds=1, + + Vector vValueAxis = Vector(0,0,1), + float flInchesPerValue=1, + Vector vValueLineColor=Vector(1,0,0), + float flValueOrigin=0 // Where the origin of the graph is. + + ); + + bool IsInitted() const; + + // Add another line into the graph. + LineID AddLine( Vector vColor ); + void AddSample( LineID iLine, float flTime, float flValue ); + void AddVerticalLine( float flTime, float flMinValue, float flMaxValue, const CSPColor &vColor ); + + // Get the 3D position of a sample on the graph (so you can draw other things there). + Vector GetSamplePosition( float flTime, float flValue ); + + +private: + + void UpdateTicksAndStuff( float flTime, float flValue ); + + + +private: + class CLineInfo + { + public: + bool m_bFirst; + float m_flLastTime; + float m_flLastValue; + Vector m_vColor; + }; + + IScratchPad3D *m_pPad; + + CUtlVector<CLineInfo> m_LineInfos; + + Vector m_vTimeAxis; + float m_flInchesPerSecond; + + Vector m_vValueAxis; + float m_flInchesPerValue; + + // How often to make a time label. + float m_flTimeLabelEveryNSeconds; + int m_nTimeLabelsDrawn; + + Vector m_vTimeLineColor; + Vector m_vValueLineColor; + + float m_flTimeOrigin; + float m_flValueOrigin; + + // Used to extend the value border. + float m_flHighestValue; + float m_flHighestTime; +}; + + + +// Draw a cone. +void ScratchPad_DrawLitCone( + IScratchPad3D *pPad, + const Vector &vBaseCenter, + const Vector &vTip, + const Vector &vBrightColor, + const Vector &vDarkColor, + const Vector &vLightDir, + float baseWidth, + int nSegments ); + + +// Draw a cylinder. +void ScratchPad_DrawLitCylinder( + IScratchPad3D *pPad, + const Vector &v1, + const Vector &v2, + const Vector &vBrightColor, + const Vector &vDarkColor, + const Vector &vLightDir, + float width, + int nSegments ); + + +// Draw an arrow. +void ScratchPad_DrawArrow( + IScratchPad3D *pPad, + const Vector &vPos, + const Vector &vDirection, + const Vector &vColor, + float flLength=20, + float flLineWidth=3, + float flHeadWidth=8, + int nCylinderSegments=5, + int nHeadSegments=8, + float flArrowHeadPercentage = 0.3f // How much of the line is the arrow head. + ); + + +// Draw an arrow with less parameters.. it generates parameters based on length +// automatically to make the arrow look good. +void ScratchPad_DrawArrowSimple( + IScratchPad3D *pPad, + const Vector &vPos, + const Vector &vDirection, + const Vector &vColor, + float flLength ); + +void ScratchPad_DrawSphere( + IScratchPad3D *pPad, + const Vector &vCenter, + float flRadius, + const Vector &vColor, + int nSubDivs=7 ); + + +void ScratchPad_DrawAABB( + IScratchPad3D *pPad, + const Vector &vMins, + const Vector &vMaxs, + const Vector &vColor = Vector( 1,1,1 ) ); + + +#endif // SCRATCHPADUTILS_H |