public SignalAwaiter(Object source, StringName signal, Object target) { var awaiterGcHandle = CustomGCHandle.AllocStrong(this); using godot_string_name signalSrc = NativeFuncs.godotsharp_string_name_new_copy( (godot_string_name)(signal?.NativeValue ?? default)); NativeFuncs.godotsharp_internal_signal_awaiter_connect(Object.GetPtr(source), in signalSrc, Object.GetPtr(target), GCHandle.ToIntPtr(awaiterGcHandle)); }
// Explicit name to make it very clear internal static StringName CreateTakingOwnershipOfDisposableValue(godot_string_name nativeValueToOwn) => new StringName(nativeValueToOwn);
private StringName(godot_string_name nativeValueToOwn) { NativeValue = (godot_string_name.movable)nativeValueToOwn; _weakReferenceToSelf = DisposablesTracker.RegisterDisposable(this); }