You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
89 lines
3.0 KiB
C++
89 lines
3.0 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#if WITH_LOW_LEVEL_TESTS
|
|
|
|
#include "ObjectPtrTestClass.h"
|
|
#include "UObject/Class.h"
|
|
#include "UObject/Package.h"
|
|
#include "UObject/MetaData.h"
|
|
#include "UObject/UnrealType.h"
|
|
|
|
//can not put the #if inside as the expansion of IMPLEMENT_CORE_INTRINSIC_CLASS fails
|
|
#if WITH_EDITORONLY_DATA
|
|
IMPLEMENT_CORE_INTRINSIC_CLASS(UObjectPtrTestClass, UObject,
|
|
{
|
|
auto MetaData = Class->GetOutermost()->GetMetaData();
|
|
if (MetaData)
|
|
{
|
|
MetaData->SetValue(Class, TEXT("LoadBehavior"), TEXT("LazyOnDemand"));
|
|
}
|
|
}
|
|
);
|
|
#else
|
|
IMPLEMENT_CORE_INTRINSIC_CLASS(UObjectPtrTestClass, UObject,
|
|
{
|
|
});
|
|
#endif
|
|
|
|
|
|
#if WITH_EDITORONLY_DATA
|
|
IMPLEMENT_CORE_INTRINSIC_CLASS(UObjectPtrTestClassWithRef, UObject,
|
|
{
|
|
//add reflection info for the two properties
|
|
auto Property1 = new FObjectPtrProperty(Class, TEXT("ObjectPtr"), EObjectFlags::RF_NoFlags);
|
|
Property1->PropertyClass = UObjectPtrTestClass::StaticClass();
|
|
Class->AddCppProperty(Property1);
|
|
|
|
auto Property2 = new FObjectPtrProperty(Class, TEXT("ObjectPtrNonNullable"), EObjectFlags::RF_NoFlags);
|
|
Property2->PropertyClass = UObjectPtrTestClass::StaticClass();
|
|
Property2->SetPropertyFlags(EPropertyFlags::CPF_NonNullable); //make non nullable
|
|
Class->AddCppProperty(Property2);
|
|
|
|
auto MetaData = Class->GetOutermost()->GetMetaData();
|
|
if (MetaData)
|
|
{
|
|
MetaData->SetValue(Class, TEXT("LoadBehavior"), TEXT("LazyOnDemand"));
|
|
}
|
|
}
|
|
);
|
|
#else
|
|
IMPLEMENT_CORE_INTRINSIC_CLASS(UObjectPtrTestClassWithRef, UObject,
|
|
{
|
|
//add reflection info for the two properties
|
|
auto Property1 = new FObjectPtrProperty(Class, TEXT("ObjectPtr"), EObjectFlags::RF_NoFlags);
|
|
Property1->PropertyClass = UObjectPtrTestClass::StaticClass();
|
|
Class->AddCppProperty(Property1);
|
|
|
|
auto Property2 = new FObjectPtrProperty(Class, TEXT("ObjectPtrNonNullable"), EObjectFlags::RF_NoFlags);
|
|
Property2->PropertyClass = UObjectPtrTestClass::StaticClass();
|
|
Property2->SetPropertyFlags(EPropertyFlags::CPF_NonNullable); //make non nullable
|
|
Class->AddCppProperty(Property2);
|
|
});
|
|
#endif
|
|
|
|
IMPLEMENT_CORE_INTRINSIC_CLASS(UObjectWithClassProperty, UObject,
|
|
{
|
|
auto Property1 = new FClassPtrProperty(Class, TEXT("ClassPtr"), EObjectFlags::RF_NoFlags);
|
|
Property1->PropertyClass = UClass::StaticClass();
|
|
Class->AddCppProperty(Property1);
|
|
}
|
|
);
|
|
|
|
IMPLEMENT_CORE_INTRINSIC_CLASS(UObjectWithRawProperty, UObject,
|
|
{
|
|
auto Property1 = new FObjectProperty(Class, TEXT("ObjectPtr"), EObjectFlags::RF_NoFlags);
|
|
Property1->PropertyClass = UClass::StaticClass();
|
|
Class->AddCppProperty(Property1);
|
|
|
|
auto Property2 = new FObjectPtrProperty(Class, TEXT("ObjectPtrNonNullable"), EObjectFlags::RF_NoFlags);
|
|
Property2->PropertyClass = UObjectPtrTestClass::StaticClass();
|
|
Property2->SetPropertyFlags(EPropertyFlags::CPF_NonNullable); //make non nullable
|
|
Class->AddCppProperty(Property2);
|
|
}
|
|
);
|
|
|
|
IMPLEMENT_CORE_INTRINSIC_CLASS(UObjectPtrDerrivedTestClass, UObjectPtrTestClass, {});
|
|
|
|
IMPLEMENT_CORE_INTRINSIC_CLASS(UObjectPtrNotLazyTestClass, UObject, {});
|
|
|
|
#endif |