diff --git a/source/build/include/buildtypes.h b/source/build/include/buildtypes.h index da0ca8a5a..ba4b4459b 100644 --- a/source/build/include/buildtypes.h +++ b/source/build/include/buildtypes.h @@ -94,6 +94,8 @@ struct walltype int xpan() const { return int(xpan_); } int ypan() const { return int(ypan_); } + void setxpan(float val) { xpan_ = fmod(val + 512, 256); } // +512 is for handling negative offsets + void setypan(float val) { ypan_ = fmod(val + 512, 256); } // +512 is for handling negative offsets void addxpan(float add) { xpan_ = fmod(xpan_ + add + 512, 256); } // +512 is for handling negative offsets void addypan(float add) { ypan_ = fmod(ypan_ + add + 512, 256); } // +512 is for handling negative offsets diff --git a/source/games/whaven/src/whfx.cpp b/source/games/whaven/src/whfx.cpp index 88d61e489..24aa3a985 100644 --- a/source/games/whaven/src/whfx.cpp +++ b/source/games/whaven/src/whfx.cpp @@ -302,7 +302,7 @@ void movewater(uint8_t* dapic) { void skypanfx() { for (int i = 0; i < skypancnt; i++) { - sector[skypanlist[i]].ceilingxpanning = (short) -((lockclock >> 2) & 255); + sector[skypanlist[i]].setceilingxpan(-((lockclock >> 2) & 255)); } } @@ -312,36 +312,36 @@ void panningfx() { switch (whichdir) { case 0: - sector[floorpanninglist[i]].floorypanning = (short) ((lockclock >> 2) & 255); + sector[floorpanninglist[i]].setfloorypan(((lockclock >> 2) & 255)); break; case 1: - sector[floorpanninglist[i]].floorxpanning = (short) -((lockclock >> 2) & 255); - sector[floorpanninglist[i]].floorypanning = (short) ((lockclock >> 2) & 255); + sector[floorpanninglist[i]].setfloorxpan(-((lockclock >> 2) & 255)); + sector[floorpanninglist[i]].setfloorypan(((lockclock >> 2) & 255)); break; case 2: - sector[floorpanninglist[i]].floorxpanning = (short) -((lockclock >> 2) & 255); + sector[floorpanninglist[i]].setfloorxpan(-((lockclock >> 2) & 255)); break; case 3: - sector[floorpanninglist[i]].floorxpanning = (short) -((lockclock >> 2) & 255); - sector[floorpanninglist[i]].floorypanning = (short) -((lockclock >> 2) & 255); + sector[floorpanninglist[i]].setfloorxpan(-((lockclock >> 2) & 255)); + sector[floorpanninglist[i]].setfloorypan(-((lockclock >> 2) & 255)); break; case 4: - sector[floorpanninglist[i]].floorypanning = (short) -((lockclock >> 2) & 255); + sector[floorpanninglist[i]].setfloorypan(-((lockclock >> 2) & 255)); break; case 5: - sector[floorpanninglist[i]].floorxpanning = (short) ((lockclock >> 2) & 255); - sector[floorpanninglist[i]].floorypanning = (short) -((lockclock >> 2) & 255); + sector[floorpanninglist[i]].setfloorxpan(((lockclock >> 2) & 255)); + sector[floorpanninglist[i]].setfloorypan(-((lockclock >> 2) & 255)); break; case 6: - sector[floorpanninglist[i]].floorxpanning = (short) ((lockclock >> 2) & 255); + sector[floorpanninglist[i]].setfloorxpan(((lockclock >> 2) & 255)); break; case 7: - sector[floorpanninglist[i]].floorxpanning = (short) ((lockclock >> 2) & 255); - sector[floorpanninglist[i]].floorypanning = (short) ((lockclock >> 2) & 255); + sector[floorpanninglist[i]].setfloorxpan(((lockclock >> 2) & 255)); + sector[floorpanninglist[i]].setfloorypan(((lockclock >> 2) & 255)); break; default: - sector[floorpanninglist[i]].floorxpanning = 0; - sector[floorpanninglist[i]].floorypanning = 0; + sector[floorpanninglist[i]].setfloorxpan(0); + sector[floorpanninglist[i]].setfloorypan(0); break; } } @@ -351,11 +351,11 @@ void panningfx() { int startwall = sector[dasector].wallptr; int endwall = startwall + sector[dasector].wallnum - 1; for (int s = startwall; s <= endwall; s++) - wall[s].xpanning = (short) ((lockclock >> 2) & 255); + wall[s].setxpan((lockclock >> 2) & 255); } for (int i = 0; i < ypanningwallcnt; i++) - wall[ypanningwalllist[i]].ypanning = (short) ~(lockclock & 255); + wall[ypanningwalllist[i]].setypan(~(lockclock & 255)); } void revolvefx() {