Files
BusyRabbit/Plugins/UnrealSharp/Managed/UnrealSharpPrograms/UnrealSharpWeaver/Utilities/DelegateUtilities.cs

34 lines
1.0 KiB
C#
Raw Normal View History

using Mono.Cecil;
namespace UnrealSharpWeaver.Utilities;
public static class DelegateUtilities
{
public static MethodDefinition GetDelegateInvokeMethod(TypeDefinition typeDefinition)
{
foreach (MethodDefinition method in typeDefinition.Methods)
{
if (method.Name != "Invoke")
{
continue;
}
if (!method.ReturnsVoid())
{
throw new Exception($"{typeDefinition.FullName} is exposed to Unreal Engine, and must have a void return type.");
}
return method;
}
throw new Exception($"Delegate type {typeDefinition.FullName} does not have an Invoke method.");
}
public static string GetUnrealDelegateName(TypeReference typeDefinition)
{
string functionName = typeDefinition.FullName;
functionName = functionName.Replace(".", "_");
functionName += "__DelegateSignature";
return functionName;
}
}