123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- #include "common/world/World.h"
- World::World(IChunkProvider* chunks) : chunks(chunks)
- {
- }
- World::~World()
- {
-
- }
- void World::registerChunkListener(IChunkListener* listener)
- {
- chunkListener.push_back(listener);
- }
- void World::removeChunkListener(IChunkListener* listener)
- {
- //chunkListener.remove(listener);
- }
- void World::updateDirtyChunks()
- {
- chunks->forEachLoadedChunk(this, [](Chunk& c, void* world)
- {
- if(c.isDirty())
- {
- ((World*) world)->updateChunk(c);
- }
- });
- }
- void World::updateChunk(Chunk& c)
- {
- int x = c.getChunkX();
- int z = c.getChunkZ();
-
- Chunk* north = chunks->getChunk(x + 1, z);
- Chunk* east = chunks->getChunk(x, z + 1);
- Chunk* south = chunks->getChunk(x - 1, z);
- Chunk* west = chunks->getChunk(x, z - 1);
-
- for(unsigned long i = 0; i < chunkListener.size(); i++)
- {
- chunkListener[i]->updateChunk(c, north, east, south, west);
- }
- }
|