Move levelmeshhelper completely out of the Common folder
Connect the level updates to the level mesh
This commit is contained in:
parent
e80615e167
commit
e0cba77646
7 changed files with 78 additions and 23 deletions
|
|
@ -823,6 +823,7 @@ set (PCH_SOURCES
|
|||
st_stuff.cpp
|
||||
r_data/v_palette.cpp
|
||||
wi_stuff.cpp
|
||||
levelmeshhelper.cpp
|
||||
gamedata/a_keys.cpp
|
||||
gamedata/a_weapons.cpp
|
||||
gamedata/decallib.cpp
|
||||
|
|
|
|||
|
|
@ -1,29 +1,8 @@
|
|||
|
||||
#include "levelmeshhelper.h"
|
||||
#include "hw_meshbuilder.h"
|
||||
#include "hw_mesh.h"
|
||||
#include "v_video.h"
|
||||
|
||||
|
||||
struct NullLevelMeshUpdater : UpdateLevelMesh
|
||||
{
|
||||
virtual void FloorHeightChanged(struct sector_t *sector) {};
|
||||
virtual void CeilingHeightChanged(struct sector_t *sector) {};
|
||||
virtual void MidTex3DHeightChanged(struct sector_t *sector) {};
|
||||
|
||||
virtual void FloorTextureChanged(struct sector_t *sector) {};
|
||||
virtual void CeilingTextureChanged(struct sector_t *sector) {};
|
||||
|
||||
virtual void SectorChangedOther(struct sector_t *sector) {};
|
||||
|
||||
virtual void SideTextureChanged(struct side_t *side, int section) {};
|
||||
};
|
||||
|
||||
static NullLevelMeshUpdater nullUpdater;
|
||||
|
||||
UpdateLevelMesh* LevelMeshUpdater = &nullUpdater;
|
||||
|
||||
|
||||
MeshBuilder::MeshBuilder()
|
||||
{
|
||||
Reset();
|
||||
|
|
|
|||
25
src/levelmeshhelper.cpp
Normal file
25
src/levelmeshhelper.cpp
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
|
||||
#include "levelmeshhelper.h"
|
||||
|
||||
struct NullLevelMeshUpdater : UpdateLevelMesh
|
||||
{
|
||||
virtual void FloorHeightChanged(struct sector_t* sector) {};
|
||||
virtual void CeilingHeightChanged(struct sector_t* sector) {};
|
||||
virtual void MidTex3DHeightChanged(struct sector_t* sector) {};
|
||||
|
||||
virtual void FloorTextureChanged(struct sector_t* sector) {};
|
||||
virtual void CeilingTextureChanged(struct sector_t* sector) {};
|
||||
|
||||
virtual void SectorChangedOther(struct sector_t* sector) {};
|
||||
|
||||
virtual void SideTextureChanged(struct side_t* side, int section) {};
|
||||
};
|
||||
|
||||
static NullLevelMeshUpdater nullUpdater;
|
||||
|
||||
UpdateLevelMesh* LevelMeshUpdater = &nullUpdater;
|
||||
|
||||
void SetNullLevelMeshUpdater()
|
||||
{
|
||||
LevelMeshUpdater = &nullUpdater;
|
||||
}
|
||||
|
|
@ -17,3 +17,5 @@ struct UpdateLevelMesh
|
|||
};
|
||||
|
||||
extern UpdateLevelMesh* LevelMeshUpdater;
|
||||
|
||||
void SetNullLevelMeshUpdater();
|
||||
|
|
|
|||
|
|
@ -3203,6 +3203,8 @@ bool MapLoader::LoadLightmap(MapData* map)
|
|||
|
||||
void MapLoader::LoadLevel(MapData *map, const char *lumpname, int position)
|
||||
{
|
||||
SetNullLevelMeshUpdater();
|
||||
|
||||
const int *oldvertextable = nullptr;
|
||||
|
||||
// Reset defaults for lightmapping
|
||||
|
|
@ -3544,4 +3546,6 @@ void MapLoader::LoadLevel(MapData *map, const char *lumpname, int position)
|
|||
seg++;
|
||||
}
|
||||
}
|
||||
|
||||
LevelMeshUpdater = Level->levelMesh; // Start tracking level changes
|
||||
}
|
||||
|
|
|
|||
|
|
@ -381,6 +381,41 @@ void DoomLevelMesh::FreeFlat(FLevelLocals& doomMap, unsigned int sectorIndex)
|
|||
// To do: call FreeGeometry and FreeUniforms
|
||||
}
|
||||
|
||||
void DoomLevelMesh::FloorHeightChanged(struct sector_t* sector)
|
||||
{
|
||||
// UpdateFlat(level, sector->Index());
|
||||
}
|
||||
|
||||
void DoomLevelMesh::CeilingHeightChanged(struct sector_t* sector)
|
||||
{
|
||||
// UpdateFlat(level, sector->Index());
|
||||
}
|
||||
|
||||
void DoomLevelMesh::MidTex3DHeightChanged(struct sector_t* sector)
|
||||
{
|
||||
// UpdateFlat(level, sector->Index());
|
||||
}
|
||||
|
||||
void DoomLevelMesh::FloorTextureChanged(struct sector_t* sector)
|
||||
{
|
||||
// UpdateFlat(level, sector->Index());
|
||||
}
|
||||
|
||||
void DoomLevelMesh::CeilingTextureChanged(struct sector_t* sector)
|
||||
{
|
||||
// UpdateFlat(level, sector->Index());
|
||||
}
|
||||
|
||||
void DoomLevelMesh::SectorChangedOther(struct sector_t* sector)
|
||||
{
|
||||
// UpdateFlat(level, sector->Index());
|
||||
}
|
||||
|
||||
void DoomLevelMesh::SideTextureChanged(struct side_t* side, int section)
|
||||
{
|
||||
// UpdateSide(level, side->Index());
|
||||
}
|
||||
|
||||
void DoomLevelMesh::UpdateSide(FLevelLocals& doomMap, unsigned int sideIndex)
|
||||
{
|
||||
FreeSide(doomMap, sideIndex);
|
||||
|
|
@ -428,7 +463,7 @@ void DoomLevelMesh::UpdateSide(FLevelLocals& doomMap, unsigned int sideIndex)
|
|||
|
||||
void DoomLevelMesh::UpdateFlat(FLevelLocals& doomMap, unsigned int sectorIndex)
|
||||
{
|
||||
FreeSide(doomMap, sectorIndex);
|
||||
FreeFlat(doomMap, sectorIndex);
|
||||
|
||||
sector_t* sector = &doomMap.sectors[sectorIndex];
|
||||
for (FSection& section : doomMap.sections.SectionsForSector(sectorIndex))
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
#pragma once
|
||||
|
||||
#include "hw_levelmesh.h"
|
||||
#include "levelmeshhelper.h"
|
||||
#include "scene/hw_drawstructs.h"
|
||||
#include "common/rendering/hwrenderer/data/hw_meshbuilder.h"
|
||||
#include "tarray.h"
|
||||
|
|
@ -41,7 +42,7 @@ struct FlatSurfaceBlock
|
|||
int FirstSurface = -1;
|
||||
};
|
||||
|
||||
class DoomLevelMesh : public LevelMesh
|
||||
class DoomLevelMesh : public LevelMesh, public UpdateLevelMesh
|
||||
{
|
||||
public:
|
||||
DoomLevelMesh(FLevelLocals &doomMap);
|
||||
|
|
@ -66,6 +67,14 @@ public:
|
|||
|
||||
void CreateLights(FLevelLocals& doomMap);
|
||||
|
||||
void FloorHeightChanged(struct sector_t* sector) override;
|
||||
void CeilingHeightChanged(struct sector_t* sector) override;
|
||||
void MidTex3DHeightChanged(struct sector_t* sector) override;
|
||||
void FloorTextureChanged(struct sector_t* sector) override;
|
||||
void CeilingTextureChanged(struct sector_t* sector) override;
|
||||
void SectorChangedOther(struct sector_t* sector) override;
|
||||
void SideTextureChanged(struct side_t* side, int section) override;
|
||||
|
||||
private:
|
||||
void CreateSurfaces(FLevelLocals& doomMap);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue