76 lines
2.2 KiB
C++
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
|