diff --git a/src/acs/call-funcs.cpp b/src/acs/call-funcs.cpp index 17e6474f7..332c9eaeb 100644 --- a/src/acs/call-funcs.cpp +++ b/src/acs/call-funcs.cpp @@ -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) diff --git a/src/r_defs.h b/src/r_defs.h index 305fcecde..089d41851 100644 --- a/src/r_defs.h +++ b/src/r_defs.h @@ -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;