Table of Contents

Struct Callable

Namespace
Godot
Assembly
GodotSharp.dll

Callable is a first class object which can be held in variables and passed to functions. It represents a given method in an Object, and is typically used for signal callbacks.

public readonly struct Callable
Inherited Members

Examples

public void PrintArgs(object ar1, object arg2, object arg3 = null)
{
    GD.PrintS(arg1, arg2, arg3);
}

public void Test()
{
    // This Callable object will call the PrintArgs method defined above.
    Callable callable = new Callable(this, nameof(PrintArgs));
    callable.Call("hello", "world"); // Prints "hello world null".
    callable.Call(Vector2.Up, 42, callable); // Prints "(0, -1) 42 Node(Node.cs)::PrintArgs".
    callable.Call("invalid"); // Invalid call, should have at least 2 arguments.
}

Constructors

Callable(GodotObject, StringName)

Constructs a new Callable for the method called method in the specified target.

public Callable(GodotObject target, StringName method)

Parameters

target GodotObject

Object that contains the method.

method StringName

Name of the method that will be called.

Properties

Delegate

Delegate of the method that will be called.

public Delegate Delegate { get; }

Property Value

Delegate

Method

Name of the method that will be called.

public StringName Method { get; }

Property Value

StringName

Target

Object that contains the method.

public GodotObject Target { get; }

Property Value

GodotObject

Trampoline

Trampoline function pointer for dynamically invoking Delegate.

public delegate*<object, NativeVariantPtrArgs, out godot_variant, void> Trampoline { get; }

Property Value

delegate*<object, NativeVariantPtrArgs, out godot_variant, void>

Methods

Call(params Variant[])

Calls the method represented by this Callable. Arguments can be passed and should match the method's signature.

public Variant Call(params Variant[] args)

Parameters

args Variant[]

Arguments that will be passed to the method call.

Returns

Variant

The value returned by the method.

CallDeferred(params Variant[])

Calls the method represented by this Callable in deferred mode, i.e. during the idle frame. Arguments can be passed and should match the method's signature.

public void CallDeferred(params Variant[] args)

Parameters

args Variant[]

Arguments that will be passed to the method call.

CreateWithUnsafeTrampoline(Delegate, delegate*<object, NativeVariantPtrArgs, out godot_variant, void>)

Constructs a new Callable using the trampoline function pointer to dynamically invoke the given delegate.

The parameters passed to the trampoline function are:

  1. delegateObjThe given delegate, upcast to object.
  2. argsArray of godot_variant arguments.
  3. retReturn value of type godot_variant.

The delegate should be downcast to a more specific delegate type before invoking.

public static Callable CreateWithUnsafeTrampoline(Delegate @delegate, delegate*<object, NativeVariantPtrArgs, out godot_variant, void> trampoline)

Parameters

delegate Delegate

Delegate method that will be called.

trampoline delegate*<object, NativeVariantPtrArgs, out godot_variant, void>

Trampoline function pointer for invoking the delegate.

Returns

Callable

Examples

Usage example:

static void Trampoline(object delegateObj, NativeVariantPtrArgs args, out godot_variant ret)
{
    if (args.Count != 1)
        throw new ArgumentException($"Callable expected {1} arguments but received {args.Count}.");

    TResult res = ((Func<int, string>)delegateObj)(
        VariantConversionCallbacks.GetToManagedCallback<int>()(args[0])
    );

    ret = VariantConversionCallbacks.GetToVariantCallback<string>()(res);
}

var callable = Callable.CreateWithUnsafeTrampoline((int num) => "foo" + num.ToString(), &Trampoline);
var res = (string)callable.Call(10);
Console.WriteLine(res);

From(Action)

Constructs a new Callable for the given action.

public static Callable From(Action action)

Parameters

action Action

Action method that will be called.

Returns

Callable

From<T0>(Action<T0>)

Constructs a new Callable for the given action.

public static Callable From<T0>(Action<T0> action)

Parameters

action Action<T0>

Action method that will be called.

Returns

Callable

Type Parameters

T0

From<TResult>(Func<TResult>)

Constructs a new Callable for the given func.

public static Callable From<TResult>(Func<TResult> func)

Parameters

func Func<TResult>

Action method that will be called.

Returns

Callable

Type Parameters

TResult

From<T0, T1, T2, T3, T4, T5, T6, T7, T8, TResult>(Func<T0, T1, T2, T3, T4, T5, T6, T7, T8, TResult>)

Constructs a new Callable for the given func.

public static Callable From<T0, T1, T2, T3, T4, T5, T6, T7, T8, TResult>(Func<T0, T1, T2, T3, T4, T5, T6, T7, T8, TResult> func)

Parameters

func Func<T0, T1, T2, T3, T4, T5, T6, T7, T8, TResult>

Action method that will be called.

Returns

Callable

Type Parameters

T0
T1
T2
T3
T4
T5
T6
T7
T8
TResult

From<T0, T1>(Action<T0, T1>)

Constructs a new Callable for the given action.

public static Callable From<T0, T1>(Action<T0, T1> action)

Parameters

action Action<T0, T1>

Action method that will be called.

Returns

Callable

Type Parameters

T0
T1

From<T0, TResult>(Func<T0, TResult>)

Constructs a new Callable for the given func.

public static Callable From<T0, TResult>(Func<T0, TResult> func)

Parameters

func Func<T0, TResult>

Action method that will be called.

Returns

Callable

Type Parameters

T0
TResult

From<T0, T1, T2>(Action<T0, T1, T2>)

Constructs a new Callable for the given action.

public static Callable From<T0, T1, T2>(Action<T0, T1, T2> action)

Parameters

action Action<T0, T1, T2>

Action method that will be called.

Returns

Callable

Type Parameters

T0
T1
T2

From<T0, T1, TResult>(Func<T0, T1, TResult>)

Constructs a new Callable for the given func.

public static Callable From<T0, T1, TResult>(Func<T0, T1, TResult> func)

Parameters

func Func<T0, T1, TResult>

Action method that will be called.

Returns

Callable

Type Parameters

T0
T1
TResult

From<T0, T1, T2, T3>(Action<T0, T1, T2, T3>)

Constructs a new Callable for the given action.

public static Callable From<T0, T1, T2, T3>(Action<T0, T1, T2, T3> action)

Parameters

action Action<T0, T1, T2, T3>

Action method that will be called.

Returns

Callable

Type Parameters

T0
T1
T2
T3

From<T0, T1, T2, TResult>(Func<T0, T1, T2, TResult>)

Constructs a new Callable for the given func.

public static Callable From<T0, T1, T2, TResult>(Func<T0, T1, T2, TResult> func)

Parameters

func Func<T0, T1, T2, TResult>

Action method that will be called.

Returns

Callable

Type Parameters

T0
T1
T2
TResult

From<T0, T1, T2, T3, T4>(Action<T0, T1, T2, T3, T4>)

Constructs a new Callable for the given action.

public static Callable From<T0, T1, T2, T3, T4>(Action<T0, T1, T2, T3, T4> action)

Parameters

action Action<T0, T1, T2, T3, T4>

Action method that will be called.

Returns

Callable

Type Parameters

T0
T1
T2
T3
T4

From<T0, T1, T2, T3, TResult>(Func<T0, T1, T2, T3, TResult>)

Constructs a new Callable for the given func.

public static Callable From<T0, T1, T2, T3, TResult>(Func<T0, T1, T2, T3, TResult> func)

Parameters

func Func<T0, T1, T2, T3, TResult>

Action method that will be called.

Returns

Callable

Type Parameters

T0
T1
T2
T3
TResult

From<T0, T1, T2, T3, T4, T5>(Action<T0, T1, T2, T3, T4, T5>)

Constructs a new Callable for the given action.

public static Callable From<T0, T1, T2, T3, T4, T5>(Action<T0, T1, T2, T3, T4, T5> action)

Parameters

action Action<T0, T1, T2, T3, T4, T5>

Action method that will be called.

Returns

Callable

Type Parameters

T0
T1
T2
T3
T4
T5

From<T0, T1, T2, T3, T4, TResult>(Func<T0, T1, T2, T3, T4, TResult>)

Constructs a new Callable for the given func.

public static Callable From<T0, T1, T2, T3, T4, TResult>(Func<T0, T1, T2, T3, T4, TResult> func)

Parameters

func Func<T0, T1, T2, T3, T4, TResult>

Action method that will be called.

Returns

Callable

Type Parameters

T0
T1
T2
T3
T4
TResult

From<T0, T1, T2, T3, T4, T5, T6>(Action<T0, T1, T2, T3, T4, T5, T6>)

Constructs a new Callable for the given action.

public static Callable From<T0, T1, T2, T3, T4, T5, T6>(Action<T0, T1, T2, T3, T4, T5, T6> action)

Parameters

action Action<T0, T1, T2, T3, T4, T5, T6>

Action method that will be called.

Returns

Callable

Type Parameters

T0
T1
T2
T3
T4
T5
T6

From<T0, T1, T2, T3, T4, T5, TResult>(Func<T0, T1, T2, T3, T4, T5, TResult>)

Constructs a new Callable for the given func.

public static Callable From<T0, T1, T2, T3, T4, T5, TResult>(Func<T0, T1, T2, T3, T4, T5, TResult> func)

Parameters

func Func<T0, T1, T2, T3, T4, T5, TResult>

Action method that will be called.

Returns

Callable

Type Parameters

T0
T1
T2
T3
T4
T5
TResult

From<T0, T1, T2, T3, T4, T5, T6, T7>(Action<T0, T1, T2, T3, T4, T5, T6, T7>)

Constructs a new Callable for the given action.

public static Callable From<T0, T1, T2, T3, T4, T5, T6, T7>(Action<T0, T1, T2, T3, T4, T5, T6, T7> action)

Parameters

action Action<T0, T1, T2, T3, T4, T5, T6, T7>

Action method that will be called.

Returns

Callable

Type Parameters

T0
T1
T2
T3
T4
T5
T6
T7

From<T0, T1, T2, T3, T4, T5, T6, TResult>(Func<T0, T1, T2, T3, T4, T5, T6, TResult>)

Constructs a new Callable for the given func.

public static Callable From<T0, T1, T2, T3, T4, T5, T6, TResult>(Func<T0, T1, T2, T3, T4, T5, T6, TResult> func)

Parameters

func Func<T0, T1, T2, T3, T4, T5, T6, TResult>

Action method that will be called.

Returns

Callable

Type Parameters

T0
T1
T2
T3
T4
T5
T6
TResult

From<T0, T1, T2, T3, T4, T5, T6, T7, T8>(Action<T0, T1, T2, T3, T4, T5, T6, T7, T8>)

Constructs a new Callable for the given action.

public static Callable From<T0, T1, T2, T3, T4, T5, T6, T7, T8>(Action<T0, T1, T2, T3, T4, T5, T6, T7, T8> action)

Parameters

action Action<T0, T1, T2, T3, T4, T5, T6, T7, T8>

Action method that will be called.

Returns

Callable

Type Parameters

T0
T1
T2
T3
T4
T5
T6
T7
T8

From<T0, T1, T2, T3, T4, T5, T6, T7, TResult>(Func<T0, T1, T2, T3, T4, T5, T6, T7, TResult>)

Constructs a new Callable for the given func.

public static Callable From<T0, T1, T2, T3, T4, T5, T6, T7, TResult>(Func<T0, T1, T2, T3, T4, T5, T6, T7, TResult> func)

Parameters

func Func<T0, T1, T2, T3, T4, T5, T6, T7, TResult>

Action method that will be called.

Returns

Callable

Type Parameters

T0
T1
T2
T3
T4
T5
T6
T7
TResult