42 lines
1.1 KiB
C#
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)
|
|
{
|
|
}
|
|
} |