raze/source/core/interpolate.h
Christoph Oelckers e223466f4a - removed Interp_Sprite_Z.
This was redundant and interfered with the reworked automatic sprite interpolation.
2021-12-26 23:09:49 +01:00

60 lines
2 KiB
C

#pragma once
#include "gamefuncs.h"
enum EInterpolationType
{
Interp_Invalid = -1,
Interp_Sect_Floorz = 0,
Interp_Sect_Ceilingz,
Interp_Sect_Floorheinum,
Interp_Sect_Ceilingheinum,
Interp_Wall_X,
Interp_Wall_Y,
Interp_Pan_First,
Interp_Sect_FloorPanX = Interp_Pan_First,
Interp_Sect_FloorPanY,
Interp_Sect_CeilingPanX,
Interp_Sect_CeilingPanY,
Interp_Wall_PanX,
Interp_Wall_PanY,
};
void StartInterpolation(int index, int type);
void StopInterpolation(int index, int type);
void UpdateInterpolations();
void ClearInterpolations();
void ClearMovementInterpolations();
void DoInterpolations(double smoothratio);
void RestoreInterpolations();
void SerializeInterpolations(FSerializer& arc);
void clearsectinterpolate(sectortype* sectnum);
void setsectinterpolate(sectortype* sectnum);
inline void StartInterpolation(walltype* wall, int type)
{
assert(type == Interp_Wall_X || type == Interp_Wall_Y || type == Interp_Wall_PanX || type == Interp_Wall_PanY);
return StartInterpolation(wallnum(wall), type);
}
inline void StartInterpolation(sectortype* sect, int type)
{
assert(type == Interp_Sect_Floorz || type == Interp_Sect_Ceilingz || type == Interp_Sect_Floorheinum || type == Interp_Sect_Ceilingheinum ||
type == Interp_Sect_FloorPanX || type == Interp_Sect_FloorPanY || type == Interp_Sect_CeilingPanX || type == Interp_Sect_CeilingPanY);
return StartInterpolation(sectnum(sect), type);
}
inline void StopInterpolation(walltype* wall, int type)
{
assert(type == Interp_Wall_X || type == Interp_Wall_Y || type == Interp_Wall_PanX || type == Interp_Wall_PanY);
return StopInterpolation(wallnum(wall), type);
}
inline void StopInterpolation(sectortype* sect, int type)
{
assert(type == Interp_Sect_Floorz || type == Interp_Sect_Ceilingz || type == Interp_Sect_Floorheinum || type == Interp_Sect_Ceilingheinum ||
type == Interp_Sect_FloorPanX || type == Interp_Sect_FloorPanY || type == Interp_Sect_CeilingPanX || type == Interp_Sect_CeilingPanY);
return StopInterpolation(sectnum(sect), type);
}