RealtimeStyleTransferRuntime/Source/LyraGame/GameModes/LyraExperienceDefinition.cpp

76 lines
2.2 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "LyraExperienceDefinition.h"
#include "GameFeatureAction.h"
#define LOCTEXT_NAMESPACE "LyraSystem"
ULyraExperienceDefinition::ULyraExperienceDefinition()
{
}
#if WITH_EDITOR
EDataValidationResult ULyraExperienceDefinition::IsDataValid(TArray<FText>& ValidationErrors)
{
EDataValidationResult Result = CombineDataValidationResults(Super::IsDataValid(ValidationErrors), EDataValidationResult::Valid);
int32 EntryIndex = 0;
for (UGameFeatureAction* Action : Actions)
{
if (Action)
{
EDataValidationResult ChildResult = Action->IsDataValid(ValidationErrors);
Result = CombineDataValidationResults(Result, ChildResult);
}
else
{
Result = EDataValidationResult::Invalid;
ValidationErrors.Add(FText::Format(LOCTEXT("ActionEntryIsNull", "Null entry at index {0} in Actions"), FText::AsNumber(EntryIndex)));
}
++EntryIndex;
}
// Make sure users didn't subclass from a BP of this (it's fine and expected to subclass once in BP, just not twice)
if (!GetClass()->IsNative())
{
UClass* ParentClass = GetClass()->GetSuperClass();
// Find the native parent
UClass* FirstNativeParent = ParentClass;
while ((FirstNativeParent != nullptr) && !FirstNativeParent->IsNative())
{
FirstNativeParent = FirstNativeParent->GetSuperClass();
}
if (FirstNativeParent != ParentClass)
{
ValidationErrors.Add(FText::Format(LOCTEXT("ExperienceInheritenceIsUnsupported", "Blueprint subclasses of Blueprint experiences is not currently supported (use composition via ActionSets instead). Parent class was {0} but should be {1}."),
FText::AsCultureInvariant(GetPathNameSafe(ParentClass)),
FText::AsCultureInvariant(GetPathNameSafe(FirstNativeParent))
));
Result = EDataValidationResult::Invalid;
}
}
return Result;
}
#endif
#if WITH_EDITORONLY_DATA
void ULyraExperienceDefinition::UpdateAssetBundleData()
{
Super::UpdateAssetBundleData();
for (UGameFeatureAction* Action : Actions)
{
if (Action)
{
Action->AddAdditionalAssetBundleData(AssetBundleData);
}
}
}
#endif // WITH_EDITORONLY_DATA
#undef LOCTEXT_NAMESPACE