Skip to content

Commit

Permalink
Fix SteamAudio mesh loader on HL25
Browse files Browse the repository at this point in the history
  • Loading branch information
LAGonauta committed Dec 12, 2023
1 parent 134592e commit 68a6103
Showing 1 changed file with 20 additions and 3 deletions.
23 changes: 20 additions & 3 deletions src/Loaders/SteamAudioMapMeshLoader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
#include "Utilities/VectorUtils.hpp"
#include "Loaders/SteamAudioMapMeshLoader.hpp"

extern int g_iEngineType;

namespace MetaAudio
{
constexpr const float EPSILON = 0.000001f;
Expand Down Expand Up @@ -67,13 +69,26 @@ namespace MetaAudio

for (int i = 0; i < mapModel->nummodelsurfaces; ++i)
{
auto surface = mapModel->surfaces[mapModel->firstmodelsurface + i];
glpoly_t* poly = surface.polys;
glpoly_t* firstPoly = nullptr;
if (g_iEngineType == ENGINE_GOLDSRC_HL25)
{
msurface_hl25_t* surfaces = reinterpret_cast<msurface_hl25_t*>(mapModel->surfaces);
msurface_hl25_t* surface = &surfaces[mapModel->firstmodelsurface + i];
firstPoly = surface->polys;
}
else
{
msurface_t* surface = &mapModel->surfaces[mapModel->firstmodelsurface + i];
firstPoly = surface->polys;
}
std::vector<alure::Vector3> surfaceVerts;
glpoly_t* poly = firstPoly;
while (poly)
{
if (poly->numverts <= 0)
{
continue;
}

for (int j = 0; j < poly->numverts; ++j)
{
Expand All @@ -83,8 +98,10 @@ namespace MetaAudio
poly = poly->next;

// escape rings
if (poly == surface.polys)
if (poly == firstPoly)
{
break;
}
}

// triangulation
Expand Down

0 comments on commit 68a6103

Please sign in to comment.