void updateGrid(int startX, int startY)
    {
        // Go up 1 if these are odd nums (ext tiles)
        if (startX % 2 != 0)
        {
            startX--;
        }
        if (startY % 2 != 0)
        {
            startY--;
        }

        var layer = CurrentAffectMode == AffectMode.Layer1 ? fieldManager.Layer1 : fieldManager.Layer2;
        var tiles = fieldManager.Layer1.Tiles;
        int index = 0;

        for (int i = startX; i < startX + 16; i += 2)
        {
            var ix = i * MapItemsHeightMax;
            for (int j = startY; j < startY + 16; j += 2)
            {
                var indexTile = ((index * 8) % 64) + Mathf.FloorToInt(index / 8f);
                var bgColor   = graphicGenerator.GetBackgroudPixel(i / 2, j / 2);
                var block     = new FieldItemBlock(layer, i, j);
                itemTiles[indexTile].SetItem(block, bgColor, this);
                index++;
            }
        }

        lastCursorX = startX;
        lastCursorY = startY;
        updatePositionText();
    }
    public void SetItem(FieldItemBlock block, Color bg, UI_MapTerrain editorCallback)
    {
        if (Recipes == null)
        {
            Recipes = GameInfo.Strings.CreateItemDataSource(RecipeList.Recipes, false);
            Fossils = GameInfo.Strings.CreateItemDataSource(GameLists.Fossils, false);
        }
        // Manually destroy any cached images
        if (Image.texture)
        {
            if (Image.texture != ResourceLoader.GetLeafImage())
            {
                Destroy(Image.texture);
            }
        }

        callback = editorCallback;
        var rootItem = block.SelectedItem;
        var isNone   = rootItem.IsNone;

        OverlayText.text = string.Empty;
        item             = block;

        Texture2D tex;
        Color     c = Color.white;

        if (rootItem.SystemParam == 0x20)
        {
            // use menuicon for fish/bugs that are "placed"
            var kind = ItemInfo.GetItemKind(rootItem);
            if (kind == ItemKind.Kind_Insect || ItemKindExtensions.IsFish(kind))
            {
                tex = MenuSpriteHelper.CurrentInstance.GetIconTexture(rootItem.ItemId);
            }
            else
            {
                tex = SpriteBehaviour.ItemToTexture2D(rootItem, out c);
            }
        }
        else
        {
            tex = SpriteBehaviour.ItemToTexture2D(rootItem, out c);
        }
        Image.texture    = tex;
        Background.color = isNone ? bg : c;
        Image.gameObject.SetActive(!isNone);

        if (tex != null)
        {
            if (tex.name.StartsWith("leaf")) // all defaults are "leaf"
            {
                // default image/no sprites loaded/field item
                OverlayText.text = GetName(rootItem.DisplayItemId);
                Image.gameObject.SetActive(false);
            }
        }

        if (rootItem.ItemId >= 60_000 && !isNone)
        {
            OverlayText.text = GetName(rootItem.DisplayItemId);
        }
        if (rootItem.ItemId == Item.MessageBottle || rootItem.ItemId == Item.DIYRecipe || rootItem.ItemId == Item.MessageBottleEgg)
        {
            OverlayText.text = Recipes.Find(x => x.Value == rootItem.Count).Text;
        }
        if (rootItem.ItemId == UI_SearchWindow.FOSSILITEM)
        {
            OverlayText.text = Fossils.Find(x => x.Value == rootItem.Count).Text;
        }

        ViewId = rootItem.ItemId;
    }