diff --git a/source/build/src/polymost.cpp b/source/build/src/polymost.cpp index 2bf705d50..c21e2417e 100644 --- a/source/build/src/polymost.cpp +++ b/source/build/src/polymost.cpp @@ -22,6 +22,7 @@ Ken Silverman's official web site: http://www.advsys.net/ken #include "texturemanager.h" #include "hw_renderstate.h" #include "printf.h" +#include "gamestruct.h" int checkTranslucentReplacement(FTextureID picnum, int pal); @@ -2201,6 +2202,7 @@ void polymost_scansector(int32_t sectnum) { if ((spr->cstat&(64+48))!=(64+16) || (r_voxels && tiletovox[spr->picnum] >= 0 && voxmodels[tiletovox[spr->picnum]]) || + (r_voxels && gi->Voxelize(spr->picnum)) || DMulScale(bcos(spr->ang), -s.x, bsin(spr->ang), -s.y, 6) > 0) if (renderAddTsprite(z, sectnum)) break; diff --git a/source/core/gamestruct.h b/source/core/gamestruct.h index 66359440e..664c878d3 100644 --- a/source/core/gamestruct.h +++ b/source/core/gamestruct.h @@ -101,6 +101,7 @@ struct GameInterface virtual int chaseCamX(binangle ang) { return 0; } virtual int chaseCamY(binangle ang) { return 0; } virtual int chaseCamZ(fixedhoriz horiz) { return 0; } + virtual bool Voxelize(int sprnum) { return false; } virtual FString statFPS() { diff --git a/source/games/sw/src/game.cpp b/source/games/sw/src/game.cpp index ec39e50a8..50583459a 100644 --- a/source/games/sw/src/game.cpp +++ b/source/games/sw/src/game.cpp @@ -801,4 +801,9 @@ void GameInterface::FreeLevelData() ::GameInterface::FreeLevelData(); } +bool GameInterface::Voxelize(int sprnum) +{ + return (aVoxelArray[sprnum].Voxel >= 0); +} + END_SW_NS diff --git a/source/games/sw/src/game.h b/source/games/sw/src/game.h index 0b1a5f583..799aa2065 100644 --- a/source/games/sw/src/game.h +++ b/source/games/sw/src/game.h @@ -2255,6 +2255,7 @@ struct GameInterface : ::GameInterface int chaseCamX(binangle ang) { return -ang.bcos(-3); } int chaseCamY(binangle ang) { return -ang.bsin(-3); } int chaseCamZ(fixedhoriz horiz) { return horiz.asq16() >> 8; } + bool Voxelize(int sprnum); GameStats getStats() override;