gzdoom/src/r_data/r_interpolate.h

72 lines
1.3 KiB
C
Raw Normal View History

2016-03-01 15:47:10 +00:00
#ifndef R_INTERPOLATE_H
#define R_INTERPOLATE_H
#include "dobject.h"
//==========================================================================
//
//
//
//==========================================================================
class DInterpolation : public DObject
{
friend struct FInterpolator;
DECLARE_ABSTRACT_CLASS(DInterpolation, DObject)
HAS_OBJECT_POINTERS
TObjPtr<DInterpolation> Next;
TObjPtr<DInterpolation> Prev;
protected:
int refcount;
DInterpolation();
public:
int AddRef();
int DelRef(bool force = false);
virtual void Destroy();
virtual void UpdateInterpolation() = 0;
virtual void Restore() = 0;
2016-03-30 15:11:31 +00:00
virtual void Interpolate(double smoothratio) = 0;
2016-03-01 15:47:10 +00:00
virtual void Serialize(FArchive &arc);
};
//==========================================================================
//
//
//
//==========================================================================
struct FInterpolator
{
TObjPtr<DInterpolation> Head;
bool didInterp;
int count;
int CountInterpolations ();
public:
FInterpolator()
{
Head = NULL;
didInterp = false;
count = 0;
}
void UpdateInterpolations();
void AddInterpolation(DInterpolation *);
void RemoveInterpolation(DInterpolation *);
2016-03-30 15:11:31 +00:00
void DoInterpolations(double smoothratio);
2016-03-01 15:47:10 +00:00
void RestoreInterpolations();
void ClearInterpolations();
};
extern FInterpolator interpolator;
#endif