diff options
Diffstat (limited to 'src/World/Generation/Lighting.hpp')
| -rw-r--r-- | src/World/Generation/Lighting.hpp | 30 |
1 files changed, 25 insertions, 5 deletions
diff --git a/src/World/Generation/Lighting.hpp b/src/World/Generation/Lighting.hpp index 7bb8fcc..72af0e1 100644 --- a/src/World/Generation/Lighting.hpp +++ b/src/World/Generation/Lighting.hpp @@ -1,13 +1,33 @@ #pragma once +#include <queue> #include "../Chunk.hpp" -#include "ChunkNeighbors.hpp" +#include "../ChunkIndex.hpp" +#include "../ChunkRegistry.hpp" +#include "../Position.hpp" -namespace MC::World::Generation::Lighting { +namespace MC::World::Generation { -constexpr U8 LightSun = 200; -constexpr U8 LightTorch = 100; +class Lighting { +public: + void add_chunk(Chunk& chunk); + void add_block(Chunk& chunk, Position::BlockLocal position, U8 light); -void light_chunk(Chunk& chunk, ChunkNeighbors& neighbors); + void illuminate(ChunkRegistry& chunks); +private: + static constexpr U8 SunBrightness = 200; + static constexpr U8 DefaultFalloff = 10; + + struct Operation { + ChunkIndex chunk; + Position::BlockLocal position; + U8 origin; + }; + + void enqueue(ChunkIndex chunk, Position::BlockLocal position, U8 origin); + void process(ChunkRegistry& chunks, Operation op); + + std::queue<Operation> m_queue; +}; } |
