rj-action-library/Runtime/Events/Signals.cs

47 lines
1.1 KiB
C#
Raw Normal View History

2025-07-22 14:08:22 +00:00
using System.Collections.Generic;
using Godot;
namespace Rokojori
{
public static class Signals
{
public static void OnFinished( this GpuParticles3D particles3D, System.Action action, bool once = false )
{
if ( once )
{
_OnSignalOnce( particles3D, GpuParticles3D.SignalName.Finished, action );
}
else
{
_OnSignal( particles3D, GpuParticles3D.SignalName.Finished, action );
}
}
public static void OnFinishedOnce( this GpuParticles3D particles3D, System.Action action )
{
OnFinished( particles3D, action, true );
}
public static void _OnSignal( Node node, string name, System.Action action )
{
node.Connect( name, Callable.From( action ) );
}
public static void _OnSignalOnce( Node node, string name, System.Action action )
{
Callable? onceAction = null;
onceAction = Callable.From(
()=>
{
action();
node.Disconnect( name, (Callable) onceAction );
}
);
node.Connect( name, (Callable)onceAction );
}
}
}