void UpdateSelection() { for (int i = 0, len = conveyorButtons.Count; i < len; ++i) { conveyorButtons[i].Recycle(); } conveyorButtons.Clear(); if (selectionHighlighter) { selectionHighlighter.Recycle(); selectionHighlighter = null; } if (selectionState.isSelected) { selectionHighlighter = ObjectPooler.instance.Get <SelectionHighlighter>(); selectionHighlighter.Initialize(selectionState.bounds); if (TouchInput.inputMode == InputMode.Touch) { foreach ((Vector3Int outerTile, Vector3Int innerTile) in selectionState.bounds.EnumeratePerimeter()) { if (ConveyorSystem.instance.CanLink(innerTile, outerTile)) { UILinkConveyorButton conveyorButton = ObjectPooler.instance.Get <UILinkConveyorButton>(); conveyorButton.position = outerTile; conveyorButton.sourcePosition = innerTile; conveyorButton.transform.SetParent(canvas.transform, false); conveyorButton.Initialize(); conveyorButtons.Add(conveyorButton); } } } } Events.TileSelectionChanged?.Invoke(selectionState); }