mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-08-12 03:39:10 +00:00
1
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user