ACS: interpolate changes to sidedef offsets

This commit is contained in:
James R 2024-04-04 03:09:27 -07:00
parent de651b6d6c
commit c9b57548e9
2 changed files with 24 additions and 2 deletions

View file

@ -49,6 +49,7 @@
#include "../r_draw.h"
#include "../k_dialogue.hpp"
#include "../k_hud.h"
#include "../r_fps.h"
#include "call-funcs.hpp"
@ -2883,10 +2884,28 @@ bool CallFunc_SetSideProperty(ACSVM::Thread *thread, const ACSVM::Word *argV, AC
break; \
}
auto install_interpolator = [side]
{
if (side->acs_interpolated)
return;
side->acs_interpolated = true;
R_CreateInterpolator_SideScroll(nullptr, side);
};
switch (property)
{
PROP_INT(SIDE_PROP_XOFFSET, textureoffset)
PROP_INT(SIDE_PROP_YOFFSET, rowoffset)
case SIDE_PROP_XOFFSET:
{
side->textureoffset = static_cast< decltype(side->textureoffset) >(value);
install_interpolator();
break;
}
case SIDE_PROP_YOFFSET:
{
side->rowoffset = static_cast< decltype(side->rowoffset) >(value);
install_interpolator();
break;
}
PROP_TEXTURE(SIDE_PROP_TOPTEXTURE, toptexture)
PROP_TEXTURE(SIDE_PROP_BOTTOMTEXTURE, bottomtexture)
PROP_TEXTURE(SIDE_PROP_MIDTEXTURE, midtexture)

View file

@ -644,6 +644,9 @@ struct side_t
// We do not maintain names here.
INT32 toptexture, bottomtexture, midtexture;
// Interpolator installed? (R_CreateInterpolator_SideScroll)
boolean acs_interpolated;
// Linedef the sidedef belongs to
line_t *line;