- using Godot;
- using UI.TileSetEditor;
-
- /// <summary>
- /// 地图编辑器通用遮罩笔刷
- /// </summary>
- public partial class EditorMaskBrush : Control
- {
- /// <summary>
- /// 绑定的地图纹理节点
- /// </summary>
- public TextureRect TileTexture { get; private set; }
-
- /// <summary>
- /// 绑定的 TileSetEditorPanel Ui
- /// </summary>
- public TileSetEditorPanel TileSetEditorPanel { get; private set; }
-
- /// <summary>
- /// 初始化笔刷数绑定的节点
- /// </summary>
- public void Init(TextureRect tileTexture, TileSetEditorPanel tileSetEditorPanel)
- {
- TileTexture = tileTexture;
- TileSetEditorPanel = tileSetEditorPanel;
- }
-
- public override void _Process(double delta)
- {
- QueueRedraw();
- }
-
- public override void _Draw()
- {
- if (TileTexture == null)
- {
- return;
- }
- //绘制texture区域
- if (TileTexture.Texture != null)
- {
- DrawRect(
- new Rect2(Vector2.Zero, TileSetEditorPanel.CellHorizontal * GameConfig.TileCellSize, TileSetEditorPanel.CellVertical * GameConfig.TileCellSize),
- new Color(1, 1, 0, 0.5f), false,
- 2f / TileTexture.Scale.X
- );
- }
-
- //绘制鼠标悬停区域
- if (TileTexture.IsMouseInRect())
- {
- var pos = Utils.GetMouseCellPosition(TileTexture) * GameConfig.TileCellSize;
- DrawRect(
- new Rect2(pos,GameConfig.TileCellSizeVector2I),
- Colors.Green, false, 3f / TileTexture.Scale.X
- );
- }
- }
- }