46 lines
1.2 KiB
C#
46 lines
1.2 KiB
C#
using Godot;
|
|
|
|
[Tool]
|
|
public partial class UNI_GridItem : PanelContainer
|
|
{
|
|
private string path;
|
|
public int index;
|
|
[Signal] public delegate void ResourceChangedEventHandler(string path, int index);
|
|
public void SetData(string data)
|
|
{
|
|
path = data;
|
|
UpdateContent();
|
|
}
|
|
private void UpdateContent()
|
|
{
|
|
if (path == null || path == "")
|
|
{
|
|
GetNode<TextureRect>("Texture").Texture = null;
|
|
return;
|
|
}
|
|
GetNode<TextureRect>("Texture").Call("set_path", path);
|
|
}
|
|
|
|
public override Variant _GetDragData(Vector2 atPosition)
|
|
{
|
|
return path;
|
|
}
|
|
public override bool _CanDropData(Vector2 atPosition, Variant data)
|
|
{
|
|
return data.AsGodotDictionary<string, string>().ContainsKey("files") && ResourceLoader.Exists(data.AsGodotDictionary<string, Variant>()["files"].AsStringArray()[0]);
|
|
}
|
|
public override void _DropData(Vector2 atPosition, Variant data)
|
|
{
|
|
SetData(data.AsGodotDictionary<string, Variant>()["files"].AsStringArray()[0]);
|
|
EmitSignal(SignalName.ResourceChanged, path, index);
|
|
|
|
}
|
|
public override void _GuiInput(InputEvent @event)
|
|
{
|
|
if (@event is InputEventMouseButton buttonEvent && buttonEvent.ButtonIndex == MouseButton.Right )
|
|
{
|
|
SetData(null);
|
|
EmitSignal(SignalName.ResourceChanged, path, index);
|
|
}
|
|
}
|
|
}
|