- simplify outer interface slightly

This commit is contained in:
Magnus Norddahl 2018-11-10 00:47:20 +01:00
parent ce7074f646
commit 2555eec131
5 changed files with 21 additions and 31 deletions

View file

@ -320,24 +320,20 @@ struct FLevel
TArray<UDMFKey> props; TArray<UDMFKey> props;
TArray<ThingLight> ThingLights;
TArray<SurfaceLightDef> SurfaceLights;
void FindMapBounds (); void FindMapBounds ();
void RemoveExtraLines (); void RemoveExtraLines ();
void RemoveExtraSides (); void RemoveExtraSides ();
void RemoveExtraSectors (); void RemoveExtraSectors ();
void SetupLights();
int NumSides() const { return Sides.Size(); } int NumSides() const { return Sides.Size(); }
int NumLines() const { return Lines.Size(); } int NumLines() const { return Lines.Size(); }
int NumSectors() const { return Sectors.Size(); } int NumSectors() const { return Sectors.Size(); }
int NumThings() const { return Things.Size(); } int NumThings() const { return Things.Size(); }
// Dlight helpers
TArray<ThingLight> ThingLights;
TArray<SurfaceLightDef> SurfaceLights;
void SetupDlight();
void CreateLights();
const Vec3 &GetSunColor() const; const Vec3 &GetSunColor() const;
const Vec3 &GetSunDirection() const; const Vec3 &GetSunDirection() const;
IntSector *GetFrontSector(const IntSideDef *side); IntSector *GetFrontSector(const IntSideDef *side);
@ -348,6 +344,7 @@ struct FLevel
private: private:
void CheckSkySectors(); void CheckSkySectors();
void CreateLights();
}; };
const int BLOCKSIZE = 128; const int BLOCKSIZE = 128;

View file

@ -615,19 +615,8 @@ void FProcessor::BuildNodes()
void FProcessor::BuildLightmaps() void FProcessor::BuildLightmaps()
{ {
LMBuilder.ambience = 0.0f; Level.SetupLights();
LMBuilder.samples = Samples; LMBuilder.CreateLightmaps(Level, Samples, LMDims);
LMBuilder.textureWidth = LMDims;
LMBuilder.textureHeight = LMDims;
Level.SetupDlight();
Level.CreateLights();
LMBuilder.CreateLightmaps(Level);
//LMBuilder.WriteTexturesToTGA();
//LMBuilder.WriteMeshToOBJ();
LightmapsBuilt = true; LightmapsBuilt = true;
} }

View file

@ -41,7 +41,7 @@
static const Vec3 defaultSunColor(1, 1, 1); static const Vec3 defaultSunColor(1, 1, 1);
static const Vec3 defaultSunDirection(0.45f, 0.3f, 0.9f); static const Vec3 defaultSunDirection(0.45f, 0.3f, 0.9f);
void FLevel::SetupDlight() void FLevel::SetupLights()
{ {
CheckSkySectors(); CheckSkySectors();
@ -79,6 +79,8 @@ void FLevel::SetupDlight()
} }
} }
} }
CreateLights();
} }
void FLevel::CheckSkySectors() void FLevel::CheckSkySectors()

View file

@ -719,9 +719,13 @@ void LightmapBuilder::CreateSurfaceLights()
} }
} }
void LightmapBuilder::CreateLightmaps(FLevel &doomMap) void LightmapBuilder::CreateLightmaps(FLevel &doomMap, int sampleDistance, int textureSize)
{ {
map = &doomMap; map = &doomMap;
samples = sampleDistance;
textureWidth = textureSize;
textureHeight = textureSize;
mesh = std::make_unique<LevelMesh>(doomMap); mesh = std::make_unique<LevelMesh>(doomMap);
CreateSurfaceLights(); CreateSurfaceLights();

View file

@ -61,15 +61,9 @@ public:
LightmapBuilder(); LightmapBuilder();
~LightmapBuilder(); ~LightmapBuilder();
void CreateLightmaps(FLevel &doomMap); void CreateLightmaps(FLevel &doomMap, int sampleDistance, int textureSize);
//void WriteTexturesToTGA();
void AddLightmapLump(FWadWriter &wadFile); void AddLightmapLump(FWadWriter &wadFile);
int samples = 16;
float ambience = 0.0f;
int textureWidth = 128;
int textureHeight = 128;
private: private:
void NewTexture(); void NewTexture();
bool MakeRoomForBlock(const int width, const int height, int *x, int *y, int *num); bool MakeRoomForBlock(const int width, const int height, int *x, int *y, int *num);
@ -87,8 +81,12 @@ private:
void CreateSurfaceLights(); void CreateSurfaceLights();
std::unique_ptr<LevelMesh> mesh;
FLevel *map; FLevel *map;
int samples = 16;
int textureWidth = 128;
int textureHeight = 128;
std::unique_ptr<LevelMesh> mesh;
std::vector<std::unique_ptr<SurfaceLight>> surfaceLights; std::vector<std::unique_ptr<SurfaceLight>> surfaceLights;
std::vector<std::vector<uint16_t>> textures; std::vector<std::vector<uint16_t>> textures;
std::vector<uint16_t> indirectoutput; std::vector<uint16_t> indirectoutput;