コード例 #1
0
        private static ChunkContent GetChunkContent(int x, int z)
        {
            x = x - mapSpace.minX;
            z = z - mapSpace.minY;

            ChunkContent result = map[x, z];

            if (result == null)
            {
                result    = new ChunkContent();
                map[x, z] = result;
            }
            return(result);
        }
コード例 #2
0
 private static bool TryGetChunkContent(int x, int z, out ChunkContent content)
 {
     if (x >= mapSpace.minX &&
         z >= mapSpace.minY &&
         x < mapSpace.maxX &&
         z < mapSpace.maxY)
     {
         content = GetChunkContent(x, z);
         return(content != null);
     }
     else
     {
         content = null;
         return(false);
     }
 }
コード例 #3
0
        private static void ResizeMap(Bounds2DInt newMapSpace)
        {
            if (newMapSpace.minX > mapSpace.minX ||
                newMapSpace.minY > mapSpace.minY ||
                newMapSpace.maxX < mapSpace.maxX ||
                newMapSpace.maxY < mapSpace.maxY)
            {
                throw new ArgumentException(
                          String.Format("Sizes of content map can only be expanded. Old: x {0}, New: x {1}", mapSpace, newMapSpace));
            }

            if (mapSpace == newMapSpace)
            {
                return;
            }

            int offsetX  = mapSpace.minX - newMapSpace.minX;
            int offsetZ  = mapSpace.minY - newMapSpace.minY;
            int newSizeX = newMapSpace.sizeX;
            int newSizeZ = newMapSpace.sizeZ;

            ChunkContent[,] newMap = new ChunkContent[newSizeX, newSizeZ];

            for (int x = 0; x < mapSpace.sizeX; x++)
            {
                for (int z = 0; z < mapSpace.sizeZ; z++)
                {
                    newMap[x + offsetX, z + offsetZ] = map[x, z];
                }
            }

            //Debug.Log("map resized to " + newMapSpace);

            mapSpace = newMapSpace;
            map      = newMap;
        }