示例#1
0
    public WorldChunkManager()
    {
        instance = this;

        chunkGenerator = new ChunkGenerator();

        chunkGenerator.GenerateWorld();

        Player.creatureManager.OnChunkPositionsVisibilityGained += (List <Vector2DInt> inSightedChunkPositions) => {
            foreach (Vector2DInt sightedChunkPosition in inSightedChunkPositions)
            {
                if (!_loadedChunks.ContainsKey(sightedChunkPosition))
                {
                    _loadedChunks.Add(sightedChunkPosition, chunkGenerator.LoadChunk(sightedChunkPosition));
                }
            }
        };

        Player.creatureManager.OnChunkPositionsVisibilityLost += (List <Vector2DInt> inLostVisibleChunks) => {
            foreach (Vector2DInt lostChunkPosition in inLostVisibleChunks)
            {
                if (_loadedChunks.ContainsKey(lostChunkPosition))
                {
                    chunkGenerator.UnloadChunk(_loadedChunks[lostChunkPosition]);
                    _loadedChunks.Remove(lostChunkPosition);
                }
            }
        };
    }