diff --git a/source/games/duke/src/animatesprites_d.cpp b/source/games/duke/src/animatesprites_d.cpp index 6183b7e2d..2ba3e6cf0 100644 --- a/source/games/duke/src/animatesprites_d.cpp +++ b/source/games/duke/src/animatesprites_d.cpp @@ -175,6 +175,11 @@ void animatesprites_d(tspriteArray& tsprites, const DVector2& viewVec, DAngle vi t->pos = h->interpolatedpos(interpfrac); } + if (actorflag(h, SFLAG2_INTERPOLATEANGLE)) + { + t->angle = h->interpolatedangle(interpfrac); + } + auto sectp = h->sector(); t1 = h->temp_data[1]; t3 = h->temp_data[3]; diff --git a/source/games/duke/src/animatesprites_r.cpp b/source/games/duke/src/animatesprites_r.cpp index 96e74b4b7..d98f7d292 100644 --- a/source/games/duke/src/animatesprites_r.cpp +++ b/source/games/duke/src/animatesprites_r.cpp @@ -156,6 +156,11 @@ void animatesprites_r(tspriteArray& tsprites, const DVector2& viewVec, DAngle vi t->pos = h->interpolatedpos(interpfrac); } + if (actorflag(h, SFLAG2_INTERPOLATEANGLE)) + { + t->angle = h->interpolatedangle(interpfrac); + } + auto sectp = h->sector(); t1 = h->temp_data[1]; t3 = h->temp_data[3]; diff --git a/source/games/duke/src/constants.h b/source/games/duke/src/constants.h index 95df57167..a59825ae4 100644 --- a/source/games/duke/src/constants.h +++ b/source/games/duke/src/constants.h @@ -347,6 +347,7 @@ enum sflags2_t SFLAG2_BREAKMIRRORS = 0x00000080, SFLAG2_CAMERA = 0x00000100, SFLAG2_DONTANIMATE = 0x00000200, + SFLAG2_INTERPOLATEANGLE = 0x00000400, }; using EDukeFlags2 = TFlags; diff --git a/source/games/duke/src/flags_d.cpp b/source/games/duke/src/flags_d.cpp index a968a4e2f..4d8f24db1 100644 --- a/source/games/duke/src/flags_d.cpp +++ b/source/games/duke/src/flags_d.cpp @@ -223,6 +223,7 @@ void initactorflags_d() setflag(SFLAG2_BREAKMIRRORS, { RADIUSEXPLOSION, RPG, HYDRENT, HEAVYHBOMB, SEENINE, OOZFILTER, EXPLODINGBARREL }); setflag(SFLAG2_CAMERA, { CAMERA1 }); setflag(SFLAG2_DONTANIMATE, { TRIPBOMB, LASERLINE }); + setflag(SFLAG2_INTERPOLATEANGLE, { BEARINGPLATE }); if (isWorldTour()) { diff --git a/source/games/duke/src/namelist_d.h b/source/games/duke/src/namelist_d.h index 13b412945..676b4f4ba 100644 --- a/source/games/duke/src/namelist_d.h +++ b/source/games/duke/src/namelist_d.h @@ -123,6 +123,7 @@ x(DOORTILE22, 395) x(FANSPRITE, 407) x(FANSPRITEBROKE, 411) x(FANSHADOW, 412) +x(BEARINGPLATE, 418) x(FANSHADOWBROKE, 416) x(DOORTILE18, 447) x(DOORTILE19, 448)