You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
163 lines
3.4 KiB
163 lines
3.4 KiB
//========= 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
|
|
|