vkdoom_m/src/levelmeshhelper.h
2025-01-28 08:50:50 +08:00

48 lines
1.5 KiB
C++

#pragma once
// level mesh helper
// this is a minimal include to keep the other source files a little bit leaner
struct sector_t;
struct side_t;
class DLighting;
struct UpdateLevelMesh
{
//3d floor-aware
void FloorHeightChanged(sector_t *sector);
void CeilingHeightChanged(sector_t *sector);
void MidTex3DHeightChanged(sector_t *sector);
void FloorTextureChanged(sector_t *sector);
void CeilingTextureChanged(sector_t *sector);
void SectorChangedTexZ(sector_t *sector);
void SideTextureChanged(side_t *side, int section);
void SideDecalsChanged(side_t* side);
void SectorLightChanged(sector_t* sector);
void SectorLightThinkerCreated(sector_t* sector, DLighting* lightthinker);
void SectorLightThinkerDestroyed(sector_t* sector, DLighting* lightthinker);
//raw
virtual void OnFloorHeightChanged(sector_t *sector) = 0;
virtual void OnCeilingHeightChanged(sector_t *sector) = 0;
virtual void OnMidTex3DHeightChanged(sector_t *sector) = 0;
virtual void OnFloorTextureChanged(sector_t *sector) = 0;
virtual void OnCeilingTextureChanged(sector_t *sector) = 0;
virtual void OnSectorChangedTexZ(sector_t *sector) = 0;
virtual void OnSideTextureChanged(side_t *side, int section) = 0;
virtual void OnSideDecalsChanged(side_t* side) = 0;
virtual void OnSectorLightChanged(sector_t* sector) = 0;
virtual void OnSectorLightThinkerCreated(sector_t* sector, DLighting* lightthinker) = 0;
virtual void OnSectorLightThinkerDestroyed(sector_t* sector, DLighting* lightthinker) = 0;
};
extern UpdateLevelMesh* LevelMeshUpdater;
void SetNullLevelMeshUpdater();