qzdoom/src/gl/utility/gl_cycler.h
2013-06-23 09:49:34 +02:00

52 lines
933 B
C++

#ifndef __GL_CYCLER_H
#define __GL_CYCLER_H
#include "farchive.h"
typedef enum
{
CYCLE_Linear,
CYCLE_Sin,
CYCLE_Cos,
CYCLE_SawTooth,
CYCLE_Square
} CycleType;
inline FArchive &operator<< (FArchive &arc, CycleType &type)
{
BYTE val = (BYTE)type;
arc << val;
type = (CycleType)val;
return arc;
}
class FCycler
{
public:
FCycler();
void Update(float diff);
void SetParams(float start, float end, float cycle);
void ShouldCycle(bool sc) { m_shouldCycle = sc; }
void SetCycleType(CycleType ct) { m_cycleType = ct; }
float GetVal() { return m_current; }
inline operator float () const { return m_current; }
void Serialize(FArchive & arc);
protected:
float m_start, m_end, m_current;
float m_time, m_cycle;
bool m_increment, m_shouldCycle;
CycleType m_cycleType;
};
inline FArchive &operator<< (FArchive &arc, FCycler &type)
{
type.Serialize(arc);
return arc;
}
#endif