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.
52 lines
1.2 KiB
52 lines
1.2 KiB
//====== Copyright © 1996-2005, Valve Corporation, All rights reserved. =======
|
|
//
|
|
// Purpose:
|
|
//
|
|
//=============================================================================
|
|
|
|
#ifndef FX_INTERPVALUE_H
|
|
#define FX_INTERPVALUE_H
|
|
#ifdef _WIN32
|
|
#pragma once
|
|
#endif
|
|
|
|
// Types of supported interpolation
|
|
enum InterpType_t
|
|
{
|
|
INTERP_LINEAR = 0,
|
|
INTERP_SPLINE,
|
|
};
|
|
|
|
class CInterpolatedValue
|
|
{
|
|
public:
|
|
CInterpolatedValue( void );
|
|
CInterpolatedValue( float startTime, float endTime, float startValue, float endValue, InterpType_t type );
|
|
|
|
void SetTime( float start, float end );
|
|
void SetRange( float start, float end );
|
|
void SetType( InterpType_t type );
|
|
|
|
// Set the value with no range
|
|
void SetAbsolute( float value );
|
|
|
|
// Set the value with range and time supplied
|
|
void Init( float startValue, float endValue, float dt, InterpType_t type = INTERP_LINEAR );
|
|
|
|
// Start from the current value and move towards the end value
|
|
void InitFromCurrent( float endValue, float dt, InterpType_t type = INTERP_LINEAR );
|
|
|
|
// Find our interpolated value at the given point in time
|
|
float Interp( float curTime );
|
|
|
|
private:
|
|
|
|
float m_flStartTime;
|
|
float m_flEndTime;
|
|
float m_flStartValue;
|
|
float m_flEndValue;
|
|
|
|
int m_nInterpType;
|
|
};
|
|
|
|
#endif // FX_INTERPVALUE_H
|