private static byte EncodeItems(SurfaceItem item1, SurfaceItem item2)
        {
            var over1   = (byte)(item1.overrideExisting ? 1 : 0);
            var number1 = (byte)(over1 | (GetSurfaceCode(item1.surface) << 1));
            var over2   = (byte)(item2.overrideExisting ? 1 : 0);
            var number2 = (byte)(over2 | (GetSurfaceCode(item2.surface) << 1));

            return((byte)(number1 | (number2 << 4)));
        }
        public void SetSurfaceItem(int z, int x, TerrainModify.Surface surface, bool overrideExisting)
        {
            x = Mathf.Min(x, SurfaceManager.GRID_SIZE - 1);
            z = Mathf.Min(z, SurfaceManager.GRID_SIZE - 1);

            var item = new SurfaceItem
            {
                surface          = surface,
                overrideExisting = overrideExisting
            };

            if (isEightyOneEnabled)
            {
                Surfaces[z * GRID_SIZE + x] = item;
                return;
            }
            if (x < GRID_PER_AREA * 2 || x >= GRID_PER_AREA * 7 || z < GRID_PER_AREA * 2 || z >= GRID_PER_AREA * 7)
            {
                return;
            }
            Surfaces[(z - 2 * GRID_PER_AREA) * (GRID_SIZE - GRID_PER_AREA * 4) + x - 2 * GRID_PER_AREA] = item;
        }