- using Godot;
-
- namespace UI.EditorTileImage;
-
- public partial class RectBrush : Control, IUiNodeScript
- {
- private Control _parent;
- private EditorTileImage.Brush UiNode;
-
- public void SetUiNode(IUiNode uiNode)
- {
- UiNode = (EditorTileImage.Brush)uiNode;
- _parent = GetParent<Control>();
- }
-
- public void OnDestroy()
- {
-
- }
- public override void _Process(double delta)
- {
- if (UiNode.UiPanel.UseImage != null)
- {
- QueueRedraw();
- }
- }
-
- public override void _Draw()
- {
- var panel = UiNode.UiPanel;
- if (panel.UseImage != null)
- {
- var sx = _parent.Scale.X;
- var size = panel.ImageSize;
- var lineWidth = 2f / sx;
- var lineWidthHalf = new Vector2(lineWidth / 2f, lineWidth / 2f);
- DrawRect(new Rect2(Vector2.Zero, size), Colors.Yellow, false, lineWidth);
-
- var start = new Vector2(panel.StartXValue, panel.StartYValue);
- for (int i = 0; i < panel.HCountValue; i++)
- {
- for (int j = 0; j < panel.VCountValue; j++)
- {
- var offset = new Vector2(i * (panel.OffsetXValue + GameConfig.TileCellSize), j * (panel.OffsetYValue + GameConfig.TileCellSize));
- DrawRect(
- new Rect2(
- start + offset + lineWidthHalf,
- new Vector2(GameConfig.TileCellSize, GameConfig.TileCellSize) - new Vector2(lineWidth, lineWidth)
- ),
- new Color(0, 1, 0, 0.5f), false, lineWidth
- );
- }
- }
- }
- }
- }