private void SetNextSlotPosition(TileUnitElement element) { float x; float y; if (element.TileUnits > rowCapacity) { //PointToNextRow(); switch (startingAxis) { case Axis.Horizontal: currentSlotPosition = new Vector2(signMultiplier.x * startPadding.x, currentSlotPosition.y + signMultiplier.y * (unitMagnitude + spacing)); break; case Axis.Vertical: currentSlotPosition = new Vector2(currentSlotPosition.x + signMultiplier.x * (unitMagnitude + spacing), signMultiplier.y * startPadding.y); break; default: throw new ArgumentOutOfRangeException(); } rowCapacity = unitCount; } var unitEquipped = unitCount - rowCapacity; var offset = unitEquipped * (unitMagnitude + spacing); switch (startingAxis) { case Axis.Horizontal: x = signMultiplier.x * (startPadding.x + offset); y = currentSlotPosition.y; break; case Axis.Vertical: x = currentSlotPosition.x; y = signMultiplier.y * (startPadding.y + offset); break; default: throw new ArgumentOutOfRangeException(); } currentSlotPosition = new Vector2(x, y); rowCapacity -= element.TileUnits; }
internal void SetTile(TileModel tile, int height) { if (Element == null) { Element = new TileUnitElement { Tile = tile.Id, Height = height } } ; else { Element.Tile = tile.Id; Element.Height = height; } Updated?.Invoke(); }
private void SetElementSize(TileUnitElement element) { var extendedSize = element.TileUnits * unitMagnitude + (element.TileUnits - 1) * spacing; var elementRect = element.Rect.rect; switch (startingAxis) { case Axis.Horizontal: element.Rect.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, unitMagnitude); element.Rect.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, extendedSize); break; case Axis.Vertical: element.Rect.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, extendedSize); element.Rect.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, unitMagnitude); break; default: throw new ArgumentOutOfRangeException(); } }