using Godot; using System; public partial class HoverableNode : Node2D { [Signal] public delegate void HoverEventHandler(HoverableNode THIS, bool IS_HOVERED); [Signal] public delegate void ClickEventHandler(HoverableNode THIS, int CLICK_TYPE); public bool _hovered; public Area2D _bounds; public override void _Ready() { base._Ready(); _bounds = GetNode("HoverBounds"); _bounds.MouseEntered += OnMouseEntered; _bounds.MouseExited += OnMouseExited; } public override void _Process(double delta) { base._Process(delta); if (_hovered) { if (Input.IsActionJustPressed("leftClick")) { EmitSignal(SignalName.Click, this, 0); } if (Input.IsActionJustPressed("rightClick")) { EmitSignal(SignalName.Click, this, 2); } } } public virtual void OnMouseEntered() { _hovered = true; EmitSignal(SignalName.Hover, this,_hovered); } public virtual void OnMouseExited() { _hovered = false; EmitSignal(SignalName.Hover, this, _hovered); } }