Esempio n. 1
0
 /// <summary>
 /// Gets the physical chunk at a position, or null if it doesn't exist
 /// </summary>
 /// <param name="chunkPos"></param>
 /// <returns></returns>
 public PhysicalChunk GetPhysicalChunk(ChunkColumnPos chunkPos)
 {
     lock (_chunkMeshes)
     {
         return(_chunkMeshes.Find(cm => cm.Chunk.Position.Equals(chunkPos)));
     }
 }
Esempio n. 2
0
 /// <summary>
 /// Returns whether the client has a chunk loaded
 /// </summary>
 /// <param name="pos"></param>
 /// <returns></returns>
 public bool IsChunkLoaded(ChunkColumnPos pos)
 {
     lock (_chunks)
     {
         return(_chunks.Exists(c => c.Position.Equals(pos)));
     }
 }
Esempio n. 3
0
 /// <summary>
 /// Unloads a chunkmesh at the specified position
 /// </summary>
 /// <param name="pos"></param>
 public void UnloadChunk(ChunkColumnPos pos)
 {
     lock (_chunkMeshes)
     {
         UnloadChunkMesh(_chunkMeshes.Find(cm =>
                                           cm.Chunk.Position.Equals(pos)));
     }
 }
Esempio n. 4
0
 /// <summary>
 /// Unloads a chunk from the world.
 /// </summary>
 /// <param name="pos"></param>
 public void UnloadChunk(ChunkColumnPos pos)
 {
     lock (_chunks)
     {
         ChunkRenderer.UnloadChunk(pos);
         _chunks.RemoveAll(c => c.Position.Equals(pos));
     }
 }
Esempio n. 5
0
    /// <summary>
    /// Gets the positions of each of a chunk column's neighbors
    /// </summary>
    /// <param name="pos"></param>
    /// <returns></returns>
    public static ChunkColumnPos[] GetNeighbors(ChunkColumnPos pos)
    {
        // don't use linq here because it's slow and this function needs to run _fast_
        ChunkColumnPos[] neighbors = new ChunkColumnPos[4];
        for (int i = 0; i < 4; i++)
        {
            neighbors[i] = pos + _neighborChunkPositions[i];
        }

        return(neighbors);
    }
Esempio n. 6
0
 /// <summary>
 /// Returns the chunk at the specified position or null if it cannot be found
 /// </summary>
 /// <param name="pos"></param>
 /// <returns></returns>
 public Chunk GetChunk(ChunkColumnPos pos)
 {
     lock (_chunks)
     {
         if (IsChunkLoaded(pos))
         {
             return(_chunks.Find(c => c.Position.Equals(pos)));
         }
         else
         {
             return(null);
         }
     }
 }
Esempio n. 7
0
	/// <summary>
	/// Creates a new chunk and assigns it to chunk coordinates in the world
	/// </summary>
	/// <param name="x"></param>
	/// <param name="z"></param>
	public Chunk(int x, int z, World world)
	{
		Position = new ChunkColumnPos(x, z);
		World = world;
	}
 public ChunkSectionPos(ChunkColumnPos cPos, int y)
 {
     ChunkColumnPos = cPos;
     Y = y;
 }
 public ChunkSectionPos(int x, int y, int z)
 {
     ChunkColumnPos = new ChunkColumnPos(x, z);
     Y = y;
 }