Files
Polonium/Package/embedded/GlobalClasses/Nodes/TileMapLayers/SelectableTileMapLayer.cs

42 lines
1.1 KiB
C#

using Godot;
using Polonium.Attributes;
namespace GlobalClasses;
[ProxyNode]
[GlobalClass]
[Tool]
public partial class SelectableTileMapLayer : TileMapLayer
{
[Signal]
public delegate void CellSelectedEventHandler(Vector2I pos);
[Signal]
public delegate void CellEnteredEventHandler(Vector2I pos);
private Vector2I HoveredCell { get; set; } = new Vector2I(-1, -1);
public sealed override void _Process(double delta)
{
Vector2 mousePos = GetGlobalMousePosition();
Vector2 localMousePos = ToLocal(mousePos);
Vector2I cell = LocalToMap(localMousePos);
if(cell != HoveredCell)
{
EmitSignalCellEntered(cell);
HoveredCell = cell;
}
__Process(delta);
base._Process(delta);
}
public override void _UnhandledInput(InputEvent @event)
{
if (@event is InputEventMouseButton mouseEvent)
if (mouseEvent.ButtonIndex == MouseButton.Left && mouseEvent.Pressed)
EmitSignalCellSelected(HoveredCell);
}
[ProxyMethod]
public virtual void __Process(double delta)
{
}
}