iFactory.Godot/BITKit/Scripts/UX/UXContextMenu.cs

46 lines
932 B
C#
Raw Normal View History

2023-07-17 04:10:14 +08:00
using System;
using Godot;
namespace BITKit;
public class UXContextMenuBuilder
{
public void Build()
{
UXContextMenu.Singleton.Position = UXContextMenu.MousePosition;
UXContextMenu.Singleton.Show();
}
}
public static class UXContextMenuExtensions
{
public static UXContextMenuBuilder AddAction(this UXContextMenuBuilder self,string name,Action action)
{
UXContextMenu.Singleton.AddItem(name);
return self;
}
}
[GlobalClass]
public partial class UXContextMenu:PopupMenu
{
public static UXContextMenu Singleton { get; private set; }
public static Vector2I MousePosition { get; private set; }
public override void _Ready()
{
Singleton = this;
}
public static UXContextMenuBuilder Create()
{
Singleton.Clear();
return new UXContextMenuBuilder();
}
public override void _Input(InputEvent @event)
{
if (@event is InputEventMouseMotion motion)
{
MousePosition = (Vector2I)motion.Position;
}
}
}