public void BreakCube(CubeCoordinates coordinates) { var chunkCoordinates = CubeChunkHelper.FindBaseCoordinates(coordinates); var tookChunk = TakeChunkAt(chunkCoordinates); int cubePositionInChunk = CubeChunkHelper.GetIndexFromCoordinates(coordinates); tookChunk[cubePositionInChunk] = null; }
public CubeColor GetCubeColorAt(CubeCoordinates coordinates) // TODO: Redundance fix { var chunkCoordinates = CubeChunkHelper.FindBaseCoordinates(coordinates); var tookChunk = TakeChunkAt(chunkCoordinates); int cubePositionInChunk = CubeChunkHelper.GetIndexFromCoordinates(coordinates); return(tookChunk[cubePositionInChunk]); }
public void LayCube(Cube cube) { var chunkCoordinates = CubeChunkHelper.FindBaseCoordinates(cube.Coordinates); var tookChunk = TakeChunkAt(chunkCoordinates); int cubePositionInChunk = CubeChunkHelper.GetIndexFromCoordinates(cube.Coordinates); tookChunk[cubePositionInChunk] = cube.Color; }
public bool IsFreeSpace(CubeCoordinates coordinates) // TO-OPTIMIZE { var chunkCoordinates = CubeChunkHelper.FindBaseCoordinates(coordinates); var gotChunk = (from chunk in LoadedChunks where chunk.Coordinates == chunkCoordinates select chunk).FirstOrDefault(); if (gotChunk == null) // don't try to check in a not loaded chunk, or it will crash { return(false); } int cubePositionInChunk = CubeChunkHelper.GetIndexFromCoordinates(coordinates); if (!(gotChunk[cubePositionInChunk] == null)) { return(false); } return(true); }