raze-gles/source/core/sectorgeometry.h
Christoph Oelckers a4174352c7 - keep separate sector compare data for floor and ceiling.
Otherwise there can be problems if floor and ceiling change at the same time.
2021-03-30 20:43:52 +02:00

46 lines
No EOL
832 B
C++

#pragma once
#include "tarray.h"
#include "vectors.h"
#include "build.h"
struct SectorGeometryPlane
{
TArray<FVector3> vertices;
TArray<FVector2> texcoords;
FVector3 normal{};
};
struct SectorGeometryData
{
SectorGeometryPlane planes[2];
sectortype compare[2] = {};
vec2_t poscompare[2] = {};
vec2_t poscompare2[2] = {};
};
class SectorGeometry
{
TArray<SectorGeometryData> data;
void ValidateSector(unsigned sectnum, int plane);
void MakeVertices(unsigned sectnum, int plane);
public:
SectorGeometryPlane* get(unsigned sectnum, int plane)
{
if (sectnum >= data.Size()) return nullptr;
ValidateSector(sectnum, plane);
return &data[sectnum].planes[plane];
}
void SetSize(unsigned sectcount)
{
data.Clear(); // delete old content
data.Resize(sectcount);
}
};
extern SectorGeometry sectorGeometry;