public Color GetBlock(Vector3 localPos) { Vector3i pos = new Vector3i(localPos); if (pos.y < 0) { return(Color.black); } if (pos.x < 0 || pos.z < 0 || pos.y >= size || pos.x >= size || pos.z >= size) { VoxelChunk c = VoxelChunk.GetChunck(chunk.myPosition + (localPos / VoxelChunk.blocksPerUnit)); if (c == null || c == chunk) { return(new Color()); // return Color.white; } else { Vector3 local = (chunk.myPosition + (localPos / VoxelChunk.blocksPerUnit)) - c.myPosition; local *= VoxelChunk.blocksPerUnit; return(c.map.GetBlock(local)); } } return(map[pos.x, pos.y, pos.z]); }