summaryrefslogtreecommitdiff
path: root/public/ScratchPadUtils.h
diff options
context:
space:
mode:
authorFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
committerFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
commit3bf9df6b2785fa6d951086978a3e66f49427166a (patch)
tree2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /public/ScratchPadUtils.h
downloadarchived-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.h163
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