- using Godot;
-
- namespace UI.TileSetEditorCombination;
-
- public partial class RectBrush : Node2D
- {
- /// <summary>
- /// 所在的根节点
- /// </summary>
- public Control Root { get; set; }
-
- private bool _drawFlag = false;
- private int _x;
- private int _y;
- private int _w;
- private int _h;
-
- public override void _Process(double delta)
- {
- QueueRedraw();
- }
-
- /// <summary>
- /// 停止绘制
- /// </summary>
- public void ClearDrawRect()
- {
- _drawFlag = false;
- }
-
- /// <summary>
- /// 设置绘制的矩形区域
- /// </summary>
- public void SetDrawRect(int x, int y, int w, int h)
- {
- _drawFlag = true;
- _x = x;
- _y = y;
- _w = w;
- _h = h;
- }
-
- /// <summary>
- /// 获取原点坐标, 单位: 像素
- /// </summary>
- public Vector2I GetOriginPosition()
- {
- return new Vector2I(_x, _y);
- }
-
- /// <summary>
- /// 获取中心点坐标, 单位: 像素
- /// </summary>
- public Vector2I GetCenterPosition()
- {
- if (!_drawFlag)
- {
- return Vector2I.Zero;
- }
- return new Vector2I(_x + _w / 2, _y + _h / 2);
- }
-
- /// <summary>
- /// 获取绘制的矩形大小, 单位: 像素
- /// </summary>
- public Vector2I GetRectSize()
- {
- if (!_drawFlag)
- {
- return Vector2I.Zero;
- }
-
- return new Vector2I(_w, _h);
- }
-
- public override void _Draw()
- {
- if (Root != null && _drawFlag)
- {
- DrawRect(new Rect2(_x, _y, _w, _h), new Color(1, 1, 0, 0.5f), false, 2f / Root.Scale.X);
- }
- }
- }