Lua向C#逻辑迁移 一期 #13

将整个插件代码上传
This commit is contained in:
2025-10-26 21:48:39 +08:00
parent 56994b3927
commit 648386cd73
785 changed files with 53683 additions and 2 deletions

View File

@ -0,0 +1,49 @@
using Mono.Cecil;
using UnrealSharpWeaver.Utilities;
namespace UnrealSharpWeaver.MetaData;
public class InterfaceMetaData : TypeReferenceMetadata
{
public TypeReferenceMetadata ParentInterface { get; set; }
public List<FunctionMetaData> Functions { get; set; }
// Non-serialized for JSON
const string CannotImplementInterfaceInBlueprint = "CannotImplementInterfaceInBlueprint";
// End non-serialized
public InterfaceMetaData(TypeDefinition typeDefinition) : base(typeDefinition, TypeDefinitionUtilities.UInterfaceAttribute)
{
Functions = [];
if (typeDefinition.HasInterfaces)
{
foreach (InterfaceImplementation? interfaceType in typeDefinition.Interfaces)
{
TypeDefinition interfaceDef = interfaceType.InterfaceType.Resolve();
if (!interfaceDef.IsUInterface())
{
continue;
}
ParentInterface = new TypeReferenceMetadata(interfaceDef);
break;
}
}
foreach (var method in typeDefinition.Methods)
{
if (method.IsAbstract && method.IsUFunction())
{
Functions.Add(new FunctionMetaData(method, onlyCollectMetaData: true));
}
}
CustomAttributeArgument? nonBpInterface = BaseAttribute!.FindAttributeField(CannotImplementInterfaceInBlueprint);
if (nonBpInterface != null)
{
TryAddMetaData(CannotImplementInterfaceInBlueprint, (bool) nonBpInterface.Value.Value);
}
}
}