// 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& 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