46 lines
932 B
C#
46 lines
932 B
C#
|
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;
|
||
|
}
|
||
|
}
|
||
|
}
|