コード例 #1
0
 public TileData this[int x, int y, int z]
 {
     get
     {
         int i = extents.ToIndexAt(x, y, z);
         return(data[i]);
     }
     set
     {
         int i = extents.ToIndexAt(x, y, z);
         data[i] = value;
     }
 }
コード例 #2
0
            static private byte FindAdjacentDirections(int x, int y, int z, NativeArray <TileData> data, int filledValue, Extents extent)
            {
                int  i   = extent.ToIndexAt(x, y, z);
                byte res = 0;

                if (x > 0 && HasTop(i - 1, y, data, filledValue, extent))
                {
                    res |= AdjacentXMinus;
                }
                if (x < extent.X - 1 && HasTop(i + 1, y, data, filledValue, extent))
                {
                    res |= AdjacentXPlus;
                }

                if (z > 0 && HasTop(i - extent.X, y, data, filledValue, extent))
                {
                    res |= AdjacentZMinus;
                }
                if (z < extent.Z - 1 && HasTop(i + extent.X, y, data, filledValue, extent))
                {
                    res |= AdjacentZPlus;
                }

                if (x > 0 && z > 0 && HasTop(i - extent.X - 1, y, data, filledValue, extent))
                {
                    res |= AdjacentXMinusZMinus;
                }
                if (x > 0 && z < extent.Z - 1 && HasTop(i + extent.X - 1, y, data, filledValue, extent))
                {
                    res |= AdjacentXMinusZPlus;
                }
                if (x < extent.X - 1 && z > 0 && HasTop(i - extent.X + 1, y, data, filledValue, extent))
                {
                    res |= AdjacentXPlusZMinus;
                }
                if (x < extent.X - 1 && z < extent.Z - 1 && HasTop(i + extent.X + 1, y, data, filledValue, extent))
                {
                    res |= AdjacentXPlusZPlus;
                }

                return(res);
            }
コード例 #3
0
            static private bool HasTop(int x, int y, int z, NativeArray <TileData> data, int filledValue, Extents extent)
            {
                int i = extent.ToIndexAt(x, y, z);

                return(data[i].themeIndex == filledValue && (y == extent.Y - 1 || data[i + extent.XZ].themeIndex != filledValue));
            }