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,7 @@
#include "CSClassUtilities.h"
#include "CSManager.h"
bool FCSClassUtilities::IsManagedType(const UClass* Class)
{
return UCSManager::Get().IsManagedType(Class);
}

View File

@ -0,0 +1,69 @@
#pragma once
#include "TypeGenerator/CSClass.h"
#include "TypeGenerator/CSInterface.h"
#include "TypeGenerator/CSSkeletonClass.h"
class UNREALSHARPCORE_API FCSClassUtilities
{
public:
static bool IsManagedClass(const UClass* Class) { return Class->GetClass() == UCSClass::StaticClass(); }
static bool IsManagedType(const UClass* Class);
static bool IsSkeletonType(const UClass* Class) { return Class->GetClass() == UCSSkeletonClass::StaticClass(); }
static bool IsNativeClass(UClass* Class){ return Class->GetClass() == UClass::StaticClass(); }
static UCSClass* GetFirstManagedClass(UClass* Class)
{
while (Class && !IsManagedClass(Class))
{
Class = Class->GetSuperClass();
if (IsNativeClass(Class))
{
// We've already reached a native class, so we can stop searching.
return nullptr;
}
}
return (UCSClass*) Class;
}
static ICSManagedTypeInterface* GetManagedType(UClass* Class)
{
for (UClass* It = Class; It; It = It->GetSuperClass())
{
if (ICSManagedTypeInterface* Managed = Cast<ICSManagedTypeInterface>(It))
{
return Managed;
}
if (IsNativeClass(It))
{
return nullptr;
}
}
return nullptr;
}
static UClass* GetFirstNativeClass(UClass* Class)
{
while (!IsNativeClass(Class))
{
Class = Class->GetSuperClass();
}
return Class;
}
static UClass* GetFirstNonBlueprintClass(UClass* Class)
{
while (Class->GetClass() != UClass::StaticClass() && Class->GetClass() != UCSClass::StaticClass())
{
Class = Class->GetSuperClass();
}
return Class;
}
};