C#: Lookup signals and methods in Get method
Allows to retrieve `Callable`s and `Signal`s using `Get` like it works in GDScript.
This commit is contained in:
parent
3c9bf4bc21
commit
a6ba914f15
3 changed files with 90 additions and 0 deletions
|
|
@ -272,6 +272,25 @@ namespace Godot.SourceGenerators
|
|||
source.Append(" }\n");
|
||||
}
|
||||
|
||||
// Generate HasGodotClassSignal
|
||||
|
||||
if (godotSignalDelegates.Count > 0)
|
||||
{
|
||||
source.Append(
|
||||
" protected override bool HasGodotClassSignal(in godot_string_name signal)\n {\n");
|
||||
|
||||
bool isFirstEntry = true;
|
||||
foreach (var signal in godotSignalDelegates)
|
||||
{
|
||||
GenerateHasSignalEntry(signal.Name, source, isFirstEntry);
|
||||
isFirstEntry = false;
|
||||
}
|
||||
|
||||
source.Append(" return base.HasGodotClassSignal(signal);\n");
|
||||
|
||||
source.Append(" }\n");
|
||||
}
|
||||
|
||||
source.Append("}\n"); // partial class
|
||||
|
||||
if (isInnerClass)
|
||||
|
|
@ -397,6 +416,20 @@ namespace Godot.SourceGenerators
|
|||
PropertyHint.None, string.Empty, propUsage, exported: false);
|
||||
}
|
||||
|
||||
private static void GenerateHasSignalEntry(
|
||||
string signalName,
|
||||
StringBuilder source,
|
||||
bool isFirstEntry
|
||||
)
|
||||
{
|
||||
source.Append(" ");
|
||||
if (!isFirstEntry)
|
||||
source.Append("else ");
|
||||
source.Append("if (signal == SignalName.");
|
||||
source.Append(signalName);
|
||||
source.Append(") {\n return true;\n }\n");
|
||||
}
|
||||
|
||||
private static void GenerateSignalEventInvoker(
|
||||
GodotSignalDelegateData signal,
|
||||
StringBuilder source
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue