C#: Rename SignalInfo to Signal and make awaitable
This commit is contained in:
parent
1ab4f26cc4
commit
1a4c8856ec
11 changed files with 35 additions and 30 deletions
|
@ -45,7 +45,7 @@ namespace Godot.SourceGenerators.Sample
|
||||||
[Export] private Color field_Color = Colors.Aquamarine;
|
[Export] private Color field_Color = Colors.Aquamarine;
|
||||||
[Export] private Plane field_Plane = Plane.PlaneXZ;
|
[Export] private Plane field_Plane = Plane.PlaneXZ;
|
||||||
[Export] private Callable field_Callable = new Callable(Engine.GetMainLoop(), "_process");
|
[Export] private Callable field_Callable = new Callable(Engine.GetMainLoop(), "_process");
|
||||||
[Export] private SignalInfo field_SignalInfo = new SignalInfo(Engine.GetMainLoop(), "property_list_changed");
|
[Export] private Signal field_Signal = new Signal(Engine.GetMainLoop(), "property_list_changed");
|
||||||
|
|
||||||
// Enums
|
// Enums
|
||||||
[SuppressMessage("ReSharper", "UnusedMember.Local")]
|
[SuppressMessage("ReSharper", "UnusedMember.Local")]
|
||||||
|
|
|
@ -133,7 +133,7 @@ namespace Godot.SourceGenerators.Sample
|
||||||
[Export] private Color property_Color { get; set; } = Colors.Aquamarine;
|
[Export] private Color property_Color { get; set; } = Colors.Aquamarine;
|
||||||
[Export] private Plane property_Plane { get; set; } = Plane.PlaneXZ;
|
[Export] private Plane property_Plane { get; set; } = Plane.PlaneXZ;
|
||||||
[Export] private Callable property_Callable { get; set; } = new Callable(Engine.GetMainLoop(), "_process");
|
[Export] private Callable property_Callable { get; set; } = new Callable(Engine.GetMainLoop(), "_process");
|
||||||
[Export] private SignalInfo property_SignalInfo { get; set; } = new SignalInfo(Engine.GetMainLoop(), "property_list_changed");
|
[Export] private Signal property_Signal { get; set; } = new Signal(Engine.GetMainLoop(), "property_list_changed");
|
||||||
|
|
||||||
// Enums
|
// Enums
|
||||||
[SuppressMessage("ReSharper", "UnusedMember.Local")]
|
[SuppressMessage("ReSharper", "UnusedMember.Local")]
|
||||||
|
|
|
@ -37,7 +37,7 @@ namespace Godot.SourceGenerators
|
||||||
Color,
|
Color,
|
||||||
Plane,
|
Plane,
|
||||||
Callable,
|
Callable,
|
||||||
SignalInfo,
|
Signal,
|
||||||
|
|
||||||
// Enums
|
// Enums
|
||||||
Enum,
|
Enum,
|
||||||
|
|
|
@ -56,7 +56,7 @@ namespace Godot.SourceGenerators
|
||||||
MarshalType.Color => VariantType.Color,
|
MarshalType.Color => VariantType.Color,
|
||||||
MarshalType.Plane => VariantType.Plane,
|
MarshalType.Plane => VariantType.Plane,
|
||||||
MarshalType.Callable => VariantType.Callable,
|
MarshalType.Callable => VariantType.Callable,
|
||||||
MarshalType.SignalInfo => VariantType.Signal,
|
MarshalType.Signal => VariantType.Signal,
|
||||||
MarshalType.Enum => VariantType.Int,
|
MarshalType.Enum => VariantType.Int,
|
||||||
MarshalType.ByteArray => VariantType.PackedByteArray,
|
MarshalType.ByteArray => VariantType.PackedByteArray,
|
||||||
MarshalType.Int32Array => VariantType.PackedInt32Array,
|
MarshalType.Int32Array => VariantType.PackedInt32Array,
|
||||||
|
@ -147,7 +147,7 @@ namespace Godot.SourceGenerators
|
||||||
{ Name: "Plane" } => MarshalType.Plane,
|
{ Name: "Plane" } => MarshalType.Plane,
|
||||||
{ Name: "RID" } => MarshalType.RID,
|
{ Name: "RID" } => MarshalType.RID,
|
||||||
{ Name: "Callable" } => MarshalType.Callable,
|
{ Name: "Callable" } => MarshalType.Callable,
|
||||||
{ Name: "SignalInfo" } => MarshalType.SignalInfo,
|
{ Name: "Signal" } => MarshalType.Signal,
|
||||||
{ Name: "Variant" } => MarshalType.Variant,
|
{ Name: "Variant" } => MarshalType.Variant,
|
||||||
_ => null
|
_ => null
|
||||||
};
|
};
|
||||||
|
|
|
@ -613,8 +613,8 @@ namespace Godot
|
||||||
return VariantUtils.CreateFrom(plane);
|
return VariantUtils.CreateFrom(plane);
|
||||||
case Callable callable:
|
case Callable callable:
|
||||||
return VariantUtils.CreateFrom(callable);
|
return VariantUtils.CreateFrom(callable);
|
||||||
case SignalInfo signalInfo:
|
case Signal signal:
|
||||||
return VariantUtils.CreateFrom(signalInfo);
|
return VariantUtils.CreateFrom(signal);
|
||||||
case string @string:
|
case string @string:
|
||||||
return VariantUtils.CreateFrom(@string);
|
return VariantUtils.CreateFrom(@string);
|
||||||
case byte[] byteArray:
|
case byte[] byteArray:
|
||||||
|
@ -705,7 +705,7 @@ namespace Godot
|
||||||
[typeof(Color)] = (in godot_variant variant) => VariantUtils.ConvertTo<Color>(variant),
|
[typeof(Color)] = (in godot_variant variant) => VariantUtils.ConvertTo<Color>(variant),
|
||||||
[typeof(Plane)] = (in godot_variant variant) => VariantUtils.ConvertTo<Plane>(variant),
|
[typeof(Plane)] = (in godot_variant variant) => VariantUtils.ConvertTo<Plane>(variant),
|
||||||
[typeof(Callable)] = (in godot_variant variant) => VariantUtils.ConvertTo<Callable>(variant),
|
[typeof(Callable)] = (in godot_variant variant) => VariantUtils.ConvertTo<Callable>(variant),
|
||||||
[typeof(SignalInfo)] = (in godot_variant variant) => VariantUtils.ConvertTo<SignalInfo>(variant),
|
[typeof(Signal)] = (in godot_variant variant) => VariantUtils.ConvertTo<Signal>(variant),
|
||||||
[typeof(string)] = (in godot_variant variant) => VariantUtils.ConvertTo<string>(variant),
|
[typeof(string)] = (in godot_variant variant) => VariantUtils.ConvertTo<string>(variant),
|
||||||
[typeof(byte[])] = (in godot_variant variant) => VariantUtils.ConvertTo<byte[]>(variant),
|
[typeof(byte[])] = (in godot_variant variant) => VariantUtils.ConvertTo<byte[]>(variant),
|
||||||
[typeof(int[])] = (in godot_variant variant) => VariantUtils.ConvertTo<int[]>(variant),
|
[typeof(int[])] = (in godot_variant variant) => VariantUtils.ConvertTo<int[]>(variant),
|
||||||
|
|
|
@ -99,7 +99,7 @@ namespace Godot.NativeInterop
|
||||||
if (type == typeof(Callable))
|
if (type == typeof(Callable))
|
||||||
return Variant.Type.Callable;
|
return Variant.Type.Callable;
|
||||||
|
|
||||||
if (type == typeof(SignalInfo))
|
if (type == typeof(Signal))
|
||||||
return Variant.Type.Signal;
|
return Variant.Type.Signal;
|
||||||
|
|
||||||
if (type.IsEnum)
|
if (type.IsEnum)
|
||||||
|
@ -288,9 +288,9 @@ namespace Godot.NativeInterop
|
||||||
return new Callable();
|
return new Callable();
|
||||||
}
|
}
|
||||||
|
|
||||||
// SignalInfo
|
// Signal
|
||||||
|
|
||||||
public static godot_signal ConvertSignalToNative(in SignalInfo p_managed_signal)
|
public static godot_signal ConvertSignalToNative(in Signal p_managed_signal)
|
||||||
{
|
{
|
||||||
ulong ownerId = p_managed_signal.Owner.GetInstanceId();
|
ulong ownerId = p_managed_signal.Owner.GetInstanceId();
|
||||||
godot_string_name name;
|
godot_string_name name;
|
||||||
|
@ -308,12 +308,12 @@ namespace Godot.NativeInterop
|
||||||
return new godot_signal(name, ownerId);
|
return new godot_signal(name, ownerId);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static SignalInfo ConvertSignalToManaged(in godot_signal p_signal)
|
public static Signal ConvertSignalToManaged(in godot_signal p_signal)
|
||||||
{
|
{
|
||||||
var owner = GD.InstanceFromId(p_signal.ObjectId);
|
var owner = GD.InstanceFromId(p_signal.ObjectId);
|
||||||
var name = StringName.CreateTakingOwnershipOfDisposableValue(
|
var name = StringName.CreateTakingOwnershipOfDisposableValue(
|
||||||
NativeFuncs.godotsharp_string_name_new_copy(p_signal.Name));
|
NativeFuncs.godotsharp_string_name_new_copy(p_signal.Name));
|
||||||
return new SignalInfo(owner, name);
|
return new Signal(owner, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Array
|
// Array
|
||||||
|
|
|
@ -102,7 +102,7 @@ namespace Godot.NativeInterop
|
||||||
=> new() { Type = Variant.Type.Signal, Signal = from };
|
=> new() { Type = Variant.Type.Signal, Signal = from };
|
||||||
|
|
||||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
public static godot_variant CreateFromSignalInfo(SignalInfo from)
|
public static godot_variant CreateFromSignal(Signal from)
|
||||||
=> CreateFromSignalTakingOwnershipOfDisposableValue(
|
=> CreateFromSignalTakingOwnershipOfDisposableValue(
|
||||||
Marshaling.ConvertSignalToNative(from));
|
Marshaling.ConvertSignalToNative(from));
|
||||||
|
|
||||||
|
@ -486,7 +486,7 @@ namespace Godot.NativeInterop
|
||||||
=> NativeFuncs.godotsharp_variant_as_signal(p_var);
|
=> NativeFuncs.godotsharp_variant_as_signal(p_var);
|
||||||
|
|
||||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
public static SignalInfo ConvertToSignalInfo(in godot_variant p_var)
|
public static Signal ConvertToSignalManaged(in godot_variant p_var)
|
||||||
=> Marshaling.ConvertSignalToManaged(ConvertToSignal(p_var));
|
=> Marshaling.ConvertSignalToManaged(ConvertToSignal(p_var));
|
||||||
|
|
||||||
public static godot_array ConvertToArray(in godot_variant p_var)
|
public static godot_array ConvertToArray(in godot_variant p_var)
|
||||||
|
|
|
@ -125,8 +125,8 @@ public partial class VariantUtils
|
||||||
if (typeof(T) == typeof(Callable))
|
if (typeof(T) == typeof(Callable))
|
||||||
return CreateFromCallable(UnsafeAs<Callable>(from));
|
return CreateFromCallable(UnsafeAs<Callable>(from));
|
||||||
|
|
||||||
if (typeof(T) == typeof(SignalInfo))
|
if (typeof(T) == typeof(Signal))
|
||||||
return CreateFromSignalInfo(UnsafeAs<SignalInfo>(from));
|
return CreateFromSignal(UnsafeAs<Signal>(from));
|
||||||
|
|
||||||
if (typeof(T) == typeof(string))
|
if (typeof(T) == typeof(string))
|
||||||
return CreateFromString(UnsafeAs<string>(from));
|
return CreateFromString(UnsafeAs<string>(from));
|
||||||
|
@ -311,8 +311,8 @@ public partial class VariantUtils
|
||||||
if (typeof(T) == typeof(Callable))
|
if (typeof(T) == typeof(Callable))
|
||||||
return UnsafeAsT(ConvertToCallableManaged(variant));
|
return UnsafeAsT(ConvertToCallableManaged(variant));
|
||||||
|
|
||||||
if (typeof(T) == typeof(SignalInfo))
|
if (typeof(T) == typeof(Signal))
|
||||||
return UnsafeAsT(ConvertToSignalInfo(variant));
|
return UnsafeAsT(ConvertToSignalManaged(variant));
|
||||||
|
|
||||||
if (typeof(T) == typeof(string))
|
if (typeof(T) == typeof(string))
|
||||||
return UnsafeAsT(ConvertToStringObject(variant));
|
return UnsafeAsT(ConvertToStringObject(variant));
|
||||||
|
|
|
@ -3,7 +3,7 @@ namespace Godot
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Represents a signal defined in an object.
|
/// Represents a signal defined in an object.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public readonly struct SignalInfo
|
public readonly struct Signal : IAwaitable<Variant[]>
|
||||||
{
|
{
|
||||||
private readonly Object _owner;
|
private readonly Object _owner;
|
||||||
private readonly StringName _signalName;
|
private readonly StringName _signalName;
|
||||||
|
@ -18,15 +18,20 @@ namespace Godot
|
||||||
public StringName Name => _signalName;
|
public StringName Name => _signalName;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Creates a new <see cref="SignalInfo"/> with the name <paramref name="name"/>
|
/// Creates a new <see cref="Signal"/> with the name <paramref name="name"/>
|
||||||
/// in the specified <paramref name="owner"/>.
|
/// in the specified <paramref name="owner"/>.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="owner">Object that contains the signal.</param>
|
/// <param name="owner">Object that contains the signal.</param>
|
||||||
/// <param name="name">Name of the signal.</param>
|
/// <param name="name">Name of the signal.</param>
|
||||||
public SignalInfo(Object owner, StringName name)
|
public Signal(Object owner, StringName name)
|
||||||
{
|
{
|
||||||
_owner = owner;
|
_owner = owner;
|
||||||
_signalName = name;
|
_signalName = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public IAwaiter<Variant[]> GetAwaiter()
|
||||||
|
{
|
||||||
|
return new SignalAwaiter(_owner, _signalName, _owner);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -137,7 +137,7 @@ public partial struct Variant : IDisposable
|
||||||
Type.Rid => AsRID(),
|
Type.Rid => AsRID(),
|
||||||
Type.Object => AsGodotObject(),
|
Type.Object => AsGodotObject(),
|
||||||
Type.Callable => AsCallable(),
|
Type.Callable => AsCallable(),
|
||||||
Type.Signal => AsSignalInfo(),
|
Type.Signal => AsSignal(),
|
||||||
Type.Dictionary => AsGodotDictionary(),
|
Type.Dictionary => AsGodotDictionary(),
|
||||||
Type.Array => AsGodotArray(),
|
Type.Array => AsGodotArray(),
|
||||||
Type.PackedByteArray => AsByteArray(),
|
Type.PackedByteArray => AsByteArray(),
|
||||||
|
@ -283,8 +283,8 @@ public partial struct Variant : IDisposable
|
||||||
VariantUtils.ConvertToCallableManaged((godot_variant)NativeVar);
|
VariantUtils.ConvertToCallableManaged((godot_variant)NativeVar);
|
||||||
|
|
||||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
public SignalInfo AsSignalInfo() =>
|
public Signal AsSignal() =>
|
||||||
VariantUtils.ConvertToSignalInfo((godot_variant)NativeVar);
|
VariantUtils.ConvertToSignalManaged((godot_variant)NativeVar);
|
||||||
|
|
||||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
public byte[] AsByteArray() =>
|
public byte[] AsByteArray() =>
|
||||||
|
@ -464,7 +464,7 @@ public partial struct Variant : IDisposable
|
||||||
public static explicit operator Callable(Variant from) => from.AsCallable();
|
public static explicit operator Callable(Variant from) => from.AsCallable();
|
||||||
|
|
||||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
public static explicit operator SignalInfo(Variant from) => from.AsSignalInfo();
|
public static explicit operator Signal(Variant from) => from.AsSignal();
|
||||||
|
|
||||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
public static explicit operator byte[](Variant from) => from.AsByteArray();
|
public static explicit operator byte[](Variant from) => from.AsByteArray();
|
||||||
|
@ -614,7 +614,7 @@ public partial struct Variant : IDisposable
|
||||||
public static Variant CreateFrom(Callable from) => from;
|
public static Variant CreateFrom(Callable from) => from;
|
||||||
|
|
||||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
public static Variant CreateFrom(SignalInfo from) => from;
|
public static Variant CreateFrom(Signal from) => from;
|
||||||
|
|
||||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
public static Variant CreateFrom(Span<byte> from) => from;
|
public static Variant CreateFrom(Span<byte> from) => from;
|
||||||
|
@ -804,8 +804,8 @@ public partial struct Variant : IDisposable
|
||||||
CreateTakingOwnershipOfDisposableValue(VariantUtils.CreateFromCallable(from));
|
CreateTakingOwnershipOfDisposableValue(VariantUtils.CreateFromCallable(from));
|
||||||
|
|
||||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
public static implicit operator Variant(SignalInfo from) =>
|
public static implicit operator Variant(Signal from) =>
|
||||||
CreateTakingOwnershipOfDisposableValue(VariantUtils.CreateFromSignalInfo(from));
|
CreateTakingOwnershipOfDisposableValue(VariantUtils.CreateFromSignal(from));
|
||||||
|
|
||||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
public static implicit operator Variant(byte[] from) =>
|
public static implicit operator Variant(byte[] from) =>
|
||||||
|
|
|
@ -116,7 +116,7 @@
|
||||||
<Compile Include="Core\NativeInterop\NativeFuncs.cs" />
|
<Compile Include="Core\NativeInterop\NativeFuncs.cs" />
|
||||||
<Compile Include="Core\NativeInterop\InteropStructs.cs" />
|
<Compile Include="Core\NativeInterop\InteropStructs.cs" />
|
||||||
<Compile Include="Core\NativeInterop\Marshaling.cs" />
|
<Compile Include="Core\NativeInterop\Marshaling.cs" />
|
||||||
<Compile Include="Core\SignalInfo.cs" />
|
<Compile Include="Core\Signal.cs" />
|
||||||
<Compile Include="Core\SignalAwaiter.cs" />
|
<Compile Include="Core\SignalAwaiter.cs" />
|
||||||
<Compile Include="Core\StringExtensions.cs" />
|
<Compile Include="Core\StringExtensions.cs" />
|
||||||
<Compile Include="Core\StringName.cs" />
|
<Compile Include="Core\StringName.cs" />
|
||||||
|
|
Loading…
Reference in a new issue