Drain higher-dimensional runtime header validators
This commit is contained in:
parent
ffc5fe51c4
commit
a0093950fe
3 changed files with 439 additions and 443 deletions
|
|
@ -146,6 +146,54 @@ namespace HyperTwistTrainingHigherDimensionalRuntimeLibraryInternal
|
|||
0);
|
||||
}
|
||||
|
||||
bool AreImportedRuntimeSelectorsConsistent(
|
||||
const TArray<FHyperTwistTrainingImportedRuntimeSelector>& Selectors,
|
||||
const TArray<FHyperTwistTrainingImportedRuntimeSelectorChoice>& DefaultSelectorChoices
|
||||
)
|
||||
{
|
||||
if (Selectors.Num() == 0 || DefaultSelectorChoices.Num() == 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
TSet<FString> SeenSelectorIds;
|
||||
for (const FHyperTwistTrainingImportedRuntimeSelector& Selector : Selectors)
|
||||
{
|
||||
if (!Selector.IsStructurallyValid())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const FString NormalizedSelectorId = Selector.SelectorId.ToLower();
|
||||
if (SeenSelectorIds.Contains(NormalizedSelectorId))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
SeenSelectorIds.Add(NormalizedSelectorId);
|
||||
}
|
||||
|
||||
TSet<FString> SeenChoiceSelectorIds;
|
||||
for (const FHyperTwistTrainingImportedRuntimeSelectorChoice& Choice : DefaultSelectorChoices)
|
||||
{
|
||||
if (!Choice.IsStructurallyValid())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const FString NormalizedSelectorId = Choice.SelectorId.ToLower();
|
||||
if (!SeenSelectorIds.Contains(NormalizedSelectorId)
|
||||
|| SeenChoiceSelectorIds.Contains(NormalizedSelectorId))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
SeenChoiceSelectorIds.Add(NormalizedSelectorId);
|
||||
}
|
||||
|
||||
return SeenChoiceSelectorIds.Num() == SeenSelectorIds.Num();
|
||||
}
|
||||
|
||||
bool TryGetMagic120CellContracts(
|
||||
FHyperTwistTrainingMagic120CellRuntimeProfileContract& OutRuntimeProfile,
|
||||
FHyperTwistTrainingMagic120CellPersistenceBoundary& OutPersistenceBoundary,
|
||||
|
|
@ -1563,6 +1611,351 @@ namespace HyperTwistTrainingHigherDimensionalRuntimeLibraryInternal
|
|||
}
|
||||
}
|
||||
|
||||
bool FHyperTwistTrainingHigherDimensionalRuntimeActivationCatalog::IsStructurallyValid() const
|
||||
{
|
||||
if (CatalogId.IsEmpty() || CatalogVersion.IsEmpty() || Profiles.Num() == 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
TSet<FString> SeenProfileIds;
|
||||
TSet<FString> SeenPuzzleIds;
|
||||
TSet<FString> SeenRuntimeModeIds;
|
||||
for (const FHyperTwistTrainingHigherDimensionalRuntimeActivationProfile& Profile : Profiles)
|
||||
{
|
||||
if (!Profile.IsStructurallyValid())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const FString NormalizedProfileId = Profile.ActivationProfileId.ToLower();
|
||||
if (SeenProfileIds.Contains(NormalizedProfileId))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const FString NormalizedPuzzleId = Profile.PuzzleId.ToLower();
|
||||
if (SeenPuzzleIds.Contains(NormalizedPuzzleId))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const FString NormalizedRuntimeModeId = Profile.RuntimeModeId.ToLower();
|
||||
if (SeenRuntimeModeIds.Contains(NormalizedRuntimeModeId))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
SeenProfileIds.Add(NormalizedProfileId);
|
||||
SeenPuzzleIds.Add(NormalizedPuzzleId);
|
||||
SeenRuntimeModeIds.Add(NormalizedRuntimeModeId);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool FHyperTwistTrainingHigherDimensionalRuntimeHostCatalog::IsStructurallyValid() const
|
||||
{
|
||||
if (CatalogId.IsEmpty() || CatalogVersion.IsEmpty() || HostSurfaces.Num() == 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
TSet<FString> SeenHostSurfaceIds;
|
||||
TSet<FString> SeenActivationProfileIds;
|
||||
for (const FHyperTwistTrainingHigherDimensionalRuntimeHostSurface& HostSurface : HostSurfaces)
|
||||
{
|
||||
if (!HostSurface.IsStructurallyValid())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const FString NormalizedHostSurfaceId = HostSurface.HostSurfaceId.ToLower();
|
||||
if (SeenHostSurfaceIds.Contains(NormalizedHostSurfaceId))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const FString NormalizedActivationProfileId = HostSurface.ActivationProfileId.ToLower();
|
||||
if (SeenActivationProfileIds.Contains(NormalizedActivationProfileId))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
SeenHostSurfaceIds.Add(NormalizedHostSurfaceId);
|
||||
SeenActivationProfileIds.Add(NormalizedActivationProfileId);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool FHyperTwistTrainingHigherDimensionalRuntimeLaunchSurface::IsStructurallyValid() const
|
||||
{
|
||||
if (LaunchSurfaceId.IsEmpty()
|
||||
|| ActivationProfileId.IsEmpty()
|
||||
|| HostSurfaceId.IsEmpty()
|
||||
|| Title.IsEmpty()
|
||||
|| HostMapPath.IsEmpty()
|
||||
|| HostMapRouteId.IsEmpty()
|
||||
|| DeckId.IsEmpty()
|
||||
|| SeedCaseId.IsEmpty()
|
||||
|| SeedPromptLabel.IsEmpty()
|
||||
|| SurfaceKind.IsEmpty()
|
||||
|| SurfaceId.IsEmpty()
|
||||
|| SurfaceLabel.IsEmpty()
|
||||
|| RuntimeModeId.IsEmpty()
|
||||
|| GeneratorType.IsEmpty()
|
||||
|| PrimaryPersistenceBoundaryId.IsEmpty()
|
||||
|| !SourceAttribution.IsStructurallyValid())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return HyperTwistTrainingHigherDimensionalRuntimeLibraryInternal::
|
||||
AreImportedRuntimeSelectorsConsistent(Selectors, DefaultSelectorChoices);
|
||||
}
|
||||
|
||||
bool FHyperTwistTrainingHigherDimensionalRuntimeLaunchCatalog::IsStructurallyValid() const
|
||||
{
|
||||
if (CatalogId.IsEmpty() || CatalogVersion.IsEmpty() || LaunchSurfaces.Num() == 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
TSet<FString> SeenLaunchSurfaceIds;
|
||||
TSet<FString> SeenActivationProfileIds;
|
||||
TSet<FString> SeenSurfaceIds;
|
||||
for (const FHyperTwistTrainingHigherDimensionalRuntimeLaunchSurface& LaunchSurface :
|
||||
LaunchSurfaces)
|
||||
{
|
||||
if (!LaunchSurface.IsStructurallyValid())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const FString NormalizedLaunchSurfaceId = LaunchSurface.LaunchSurfaceId.ToLower();
|
||||
if (SeenLaunchSurfaceIds.Contains(NormalizedLaunchSurfaceId))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const FString NormalizedActivationProfileId = LaunchSurface.ActivationProfileId.ToLower();
|
||||
if (SeenActivationProfileIds.Contains(NormalizedActivationProfileId))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const FString NormalizedSurfaceId = LaunchSurface.SurfaceId.ToLower();
|
||||
if (SeenSurfaceIds.Contains(NormalizedSurfaceId))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
SeenLaunchSurfaceIds.Add(NormalizedLaunchSurfaceId);
|
||||
SeenActivationProfileIds.Add(NormalizedActivationProfileId);
|
||||
SeenSurfaceIds.Add(NormalizedSurfaceId);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool FHyperTwistTrainingHigherDimensionalRuntimeViewContextSurface::IsStructurallyValid() const
|
||||
{
|
||||
if (ViewContextSurfaceId.IsEmpty()
|
||||
|| ActivationProfileId.IsEmpty()
|
||||
|| LaunchSurfaceId.IsEmpty()
|
||||
|| HostSurfaceId.IsEmpty()
|
||||
|| Title.IsEmpty()
|
||||
|| HostMapPath.IsEmpty()
|
||||
|| HostMapRouteId.IsEmpty()
|
||||
|| HostMapLabel.IsEmpty()
|
||||
|| PrimaryViewProfileContractId.IsEmpty()
|
||||
|| !SourceAttribution.IsStructurallyValid())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return HyperTwistTrainingHigherDimensionalRuntimeLibraryInternal::
|
||||
AreImportedRuntimeSelectorsConsistent(Selectors, DefaultSelectorChoices);
|
||||
}
|
||||
|
||||
bool FHyperTwistTrainingHigherDimensionalRuntimeViewContextCatalog::IsStructurallyValid() const
|
||||
{
|
||||
if (CatalogId.IsEmpty() || CatalogVersion.IsEmpty() || ViewContextSurfaces.Num() == 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
TSet<FString> SeenViewContextSurfaceIds;
|
||||
TSet<FString> SeenActivationProfileIds;
|
||||
TSet<FString> SeenLaunchSurfaceIds;
|
||||
for (const FHyperTwistTrainingHigherDimensionalRuntimeViewContextSurface& ViewContextSurface :
|
||||
ViewContextSurfaces)
|
||||
{
|
||||
if (!ViewContextSurface.IsStructurallyValid())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const FString NormalizedViewContextSurfaceId =
|
||||
ViewContextSurface.ViewContextSurfaceId.ToLower();
|
||||
if (SeenViewContextSurfaceIds.Contains(NormalizedViewContextSurfaceId))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const FString NormalizedActivationProfileId =
|
||||
ViewContextSurface.ActivationProfileId.ToLower();
|
||||
if (SeenActivationProfileIds.Contains(NormalizedActivationProfileId))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const FString NormalizedLaunchSurfaceId = ViewContextSurface.LaunchSurfaceId.ToLower();
|
||||
if (SeenLaunchSurfaceIds.Contains(NormalizedLaunchSurfaceId))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
SeenViewContextSurfaceIds.Add(NormalizedViewContextSurfaceId);
|
||||
SeenActivationProfileIds.Add(NormalizedActivationProfileId);
|
||||
SeenLaunchSurfaceIds.Add(NormalizedLaunchSurfaceId);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool FHyperTwistTrainingHigherDimensionalRuntimeSessionSurface::IsStructurallyValid() const
|
||||
{
|
||||
if (SessionSurfaceId.IsEmpty()
|
||||
|| ActivationProfileId.IsEmpty()
|
||||
|| HostSurfaceId.IsEmpty()
|
||||
|| LaunchSurfaceId.IsEmpty()
|
||||
|| ViewContextSurfaceId.IsEmpty()
|
||||
|| Title.IsEmpty()
|
||||
|| HostMapPath.IsEmpty()
|
||||
|| HostMapRouteId.IsEmpty()
|
||||
|| HostMapLabel.IsEmpty()
|
||||
|| RuntimeModeId.IsEmpty()
|
||||
|| PrimaryPersistenceBoundaryId.IsEmpty()
|
||||
|| PrimaryViewProfileContractId.IsEmpty()
|
||||
|| !SourceAttribution.IsStructurallyValid())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return HyperTwistTrainingHigherDimensionalRuntimeLibraryInternal::
|
||||
AreImportedRuntimeSelectorsConsistent(Selectors, DefaultSelectorChoices);
|
||||
}
|
||||
|
||||
bool FHyperTwistTrainingHigherDimensionalRuntimeSessionCatalog::IsStructurallyValid() const
|
||||
{
|
||||
if (CatalogId.IsEmpty() || CatalogVersion.IsEmpty() || SessionSurfaces.Num() == 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
TSet<FString> SeenSessionSurfaceIds;
|
||||
TSet<FString> SeenActivationProfileIds;
|
||||
TSet<FString> SeenLaunchSurfaceIds;
|
||||
TSet<FString> SeenViewContextSurfaceIds;
|
||||
for (const FHyperTwistTrainingHigherDimensionalRuntimeSessionSurface& SessionSurface :
|
||||
SessionSurfaces)
|
||||
{
|
||||
if (!SessionSurface.IsStructurallyValid())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const FString NormalizedSessionSurfaceId = SessionSurface.SessionSurfaceId.ToLower();
|
||||
if (SeenSessionSurfaceIds.Contains(NormalizedSessionSurfaceId))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const FString NormalizedActivationProfileId =
|
||||
SessionSurface.ActivationProfileId.ToLower();
|
||||
if (SeenActivationProfileIds.Contains(NormalizedActivationProfileId))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const FString NormalizedLaunchSurfaceId = SessionSurface.LaunchSurfaceId.ToLower();
|
||||
if (SeenLaunchSurfaceIds.Contains(NormalizedLaunchSurfaceId))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const FString NormalizedViewContextSurfaceId =
|
||||
SessionSurface.ViewContextSurfaceId.ToLower();
|
||||
if (SeenViewContextSurfaceIds.Contains(NormalizedViewContextSurfaceId))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
SeenSessionSurfaceIds.Add(NormalizedSessionSurfaceId);
|
||||
SeenActivationProfileIds.Add(NormalizedActivationProfileId);
|
||||
SeenLaunchSurfaceIds.Add(NormalizedLaunchSurfaceId);
|
||||
SeenViewContextSurfaceIds.Add(NormalizedViewContextSurfaceId);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool FHyperTwistTrainingHigherDimensionalInteractiveSceneCatalog::IsStructurallyValid() const
|
||||
{
|
||||
if (CatalogId.IsEmpty() || CatalogVersion.IsEmpty() || SceneSurfaces.Num() == 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
TSet<FString> SeenSceneSurfaceIds;
|
||||
TSet<FString> SeenSessionSurfaceIds;
|
||||
TSet<FString> SeenActivationProfileIds;
|
||||
TSet<FString> SeenSceneContextIds;
|
||||
for (const FHyperTwistTrainingHigherDimensionalInteractiveSceneSurface& SceneSurface :
|
||||
SceneSurfaces)
|
||||
{
|
||||
if (!SceneSurface.IsStructurallyValid())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const FString NormalizedSceneSurfaceId = SceneSurface.SceneSurfaceId.ToLower();
|
||||
if (SeenSceneSurfaceIds.Contains(NormalizedSceneSurfaceId))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const FString NormalizedSessionSurfaceId = SceneSurface.SessionSurfaceId.ToLower();
|
||||
if (SeenSessionSurfaceIds.Contains(NormalizedSessionSurfaceId))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const FString NormalizedActivationProfileId =
|
||||
SceneSurface.ActivationProfileId.ToLower();
|
||||
if (SeenActivationProfileIds.Contains(NormalizedActivationProfileId))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const FString NormalizedSceneContextId =
|
||||
SceneSurface.SceneContext.SceneContextId.ToLower();
|
||||
if (SeenSceneContextIds.Contains(NormalizedSceneContextId))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
SeenSceneSurfaceIds.Add(NormalizedSceneSurfaceId);
|
||||
SeenSessionSurfaceIds.Add(NormalizedSessionSurfaceId);
|
||||
SeenActivationProfileIds.Add(NormalizedActivationProfileId);
|
||||
SeenSceneContextIds.Add(NormalizedSceneContextId);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
FHyperTwistTrainingHigherDimensionalRuntimeActivationCatalog
|
||||
UHyperTwistTrainingHigherDimensionalRuntimeLibrary::BuildBundledHigherDimensionalRuntimeActivationCatalog()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -149,48 +149,7 @@ struct FHyperTwistTrainingHigherDimensionalRuntimeActivationCatalog
|
|||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FHyperTwistTrainingHigherDimensionalRuntimeActivationProfile> Profiles;
|
||||
|
||||
bool IsStructurallyValid() const
|
||||
{
|
||||
if (CatalogId.IsEmpty() || CatalogVersion.IsEmpty() || Profiles.Num() == 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
TSet<FString> SeenProfileIds;
|
||||
TSet<FString> SeenPuzzleIds;
|
||||
TSet<FString> SeenRuntimeModeIds;
|
||||
for (const FHyperTwistTrainingHigherDimensionalRuntimeActivationProfile& Profile : Profiles)
|
||||
{
|
||||
if (!Profile.IsStructurallyValid())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const FString NormalizedProfileId = Profile.ActivationProfileId.ToLower();
|
||||
if (SeenProfileIds.Contains(NormalizedProfileId))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const FString NormalizedPuzzleId = Profile.PuzzleId.ToLower();
|
||||
if (SeenPuzzleIds.Contains(NormalizedPuzzleId))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const FString NormalizedRuntimeModeId = Profile.RuntimeModeId.ToLower();
|
||||
if (SeenRuntimeModeIds.Contains(NormalizedRuntimeModeId))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
SeenProfileIds.Add(NormalizedProfileId);
|
||||
SeenPuzzleIds.Add(NormalizedPuzzleId);
|
||||
SeenRuntimeModeIds.Add(NormalizedRuntimeModeId);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
bool IsStructurallyValid() const;
|
||||
};
|
||||
|
||||
USTRUCT(BlueprintType)
|
||||
|
|
@ -270,40 +229,7 @@ struct FHyperTwistTrainingHigherDimensionalRuntimeHostCatalog
|
|||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FHyperTwistTrainingHigherDimensionalRuntimeHostSurface> HostSurfaces;
|
||||
|
||||
bool IsStructurallyValid() const
|
||||
{
|
||||
if (CatalogId.IsEmpty() || CatalogVersion.IsEmpty() || HostSurfaces.Num() == 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
TSet<FString> SeenHostSurfaceIds;
|
||||
TSet<FString> SeenActivationProfileIds;
|
||||
for (const FHyperTwistTrainingHigherDimensionalRuntimeHostSurface& HostSurface : HostSurfaces)
|
||||
{
|
||||
if (!HostSurface.IsStructurallyValid())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const FString NormalizedHostSurfaceId = HostSurface.HostSurfaceId.ToLower();
|
||||
if (SeenHostSurfaceIds.Contains(NormalizedHostSurfaceId))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const FString NormalizedActivationProfileId = HostSurface.ActivationProfileId.ToLower();
|
||||
if (SeenActivationProfileIds.Contains(NormalizedActivationProfileId))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
SeenHostSurfaceIds.Add(NormalizedHostSurfaceId);
|
||||
SeenActivationProfileIds.Add(NormalizedActivationProfileId);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
bool IsStructurallyValid() const;
|
||||
};
|
||||
|
||||
USTRUCT(BlueprintType)
|
||||
|
|
@ -389,67 +315,7 @@ struct FHyperTwistTrainingHigherDimensionalRuntimeLaunchSurface
|
|||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FHyperTwistTrainingSourceAttribution SourceAttribution;
|
||||
|
||||
bool IsStructurallyValid() const
|
||||
{
|
||||
if (LaunchSurfaceId.IsEmpty()
|
||||
|| ActivationProfileId.IsEmpty()
|
||||
|| HostSurfaceId.IsEmpty()
|
||||
|| Title.IsEmpty()
|
||||
|| HostMapPath.IsEmpty()
|
||||
|| HostMapRouteId.IsEmpty()
|
||||
|| DeckId.IsEmpty()
|
||||
|| SeedCaseId.IsEmpty()
|
||||
|| SeedPromptLabel.IsEmpty()
|
||||
|| SurfaceKind.IsEmpty()
|
||||
|| SurfaceId.IsEmpty()
|
||||
|| SurfaceLabel.IsEmpty()
|
||||
|| RuntimeModeId.IsEmpty()
|
||||
|| GeneratorType.IsEmpty()
|
||||
|| PrimaryPersistenceBoundaryId.IsEmpty()
|
||||
|| !SourceAttribution.IsStructurallyValid()
|
||||
|| Selectors.Num() == 0
|
||||
|| DefaultSelectorChoices.Num() == 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
TSet<FString> SeenSelectorIds;
|
||||
for (const FHyperTwistTrainingImportedRuntimeSelector& Selector : Selectors)
|
||||
{
|
||||
if (!Selector.IsStructurallyValid())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const FString NormalizedSelectorId = Selector.SelectorId.ToLower();
|
||||
if (SeenSelectorIds.Contains(NormalizedSelectorId))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
SeenSelectorIds.Add(NormalizedSelectorId);
|
||||
}
|
||||
|
||||
TSet<FString> SeenChoiceSelectorIds;
|
||||
for (const FHyperTwistTrainingImportedRuntimeSelectorChoice& Choice : DefaultSelectorChoices)
|
||||
{
|
||||
if (!Choice.IsStructurallyValid())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const FString NormalizedSelectorId = Choice.SelectorId.ToLower();
|
||||
if (!SeenSelectorIds.Contains(NormalizedSelectorId)
|
||||
|| SeenChoiceSelectorIds.Contains(NormalizedSelectorId))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
SeenChoiceSelectorIds.Add(NormalizedSelectorId);
|
||||
}
|
||||
|
||||
return SeenChoiceSelectorIds.Num() == SeenSelectorIds.Num();
|
||||
}
|
||||
bool IsStructurallyValid() const;
|
||||
};
|
||||
|
||||
USTRUCT(BlueprintType)
|
||||
|
|
@ -466,48 +332,7 @@ struct FHyperTwistTrainingHigherDimensionalRuntimeLaunchCatalog
|
|||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FHyperTwistTrainingHigherDimensionalRuntimeLaunchSurface> LaunchSurfaces;
|
||||
|
||||
bool IsStructurallyValid() const
|
||||
{
|
||||
if (CatalogId.IsEmpty() || CatalogVersion.IsEmpty() || LaunchSurfaces.Num() == 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
TSet<FString> SeenLaunchSurfaceIds;
|
||||
TSet<FString> SeenActivationProfileIds;
|
||||
TSet<FString> SeenSurfaceIds;
|
||||
for (const FHyperTwistTrainingHigherDimensionalRuntimeLaunchSurface& LaunchSurface : LaunchSurfaces)
|
||||
{
|
||||
if (!LaunchSurface.IsStructurallyValid())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const FString NormalizedLaunchSurfaceId = LaunchSurface.LaunchSurfaceId.ToLower();
|
||||
if (SeenLaunchSurfaceIds.Contains(NormalizedLaunchSurfaceId))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const FString NormalizedActivationProfileId = LaunchSurface.ActivationProfileId.ToLower();
|
||||
if (SeenActivationProfileIds.Contains(NormalizedActivationProfileId))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const FString NormalizedSurfaceId = LaunchSurface.SurfaceId.ToLower();
|
||||
if (SeenSurfaceIds.Contains(NormalizedSurfaceId))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
SeenLaunchSurfaceIds.Add(NormalizedLaunchSurfaceId);
|
||||
SeenActivationProfileIds.Add(NormalizedActivationProfileId);
|
||||
SeenSurfaceIds.Add(NormalizedSurfaceId);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
bool IsStructurallyValid() const;
|
||||
};
|
||||
|
||||
USTRUCT(BlueprintType)
|
||||
|
|
@ -569,61 +394,7 @@ struct FHyperTwistTrainingHigherDimensionalRuntimeViewContextSurface
|
|||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FHyperTwistTrainingSourceAttribution SourceAttribution;
|
||||
|
||||
bool IsStructurallyValid() const
|
||||
{
|
||||
if (ViewContextSurfaceId.IsEmpty()
|
||||
|| ActivationProfileId.IsEmpty()
|
||||
|| LaunchSurfaceId.IsEmpty()
|
||||
|| HostSurfaceId.IsEmpty()
|
||||
|| Title.IsEmpty()
|
||||
|| HostMapPath.IsEmpty()
|
||||
|| HostMapRouteId.IsEmpty()
|
||||
|| HostMapLabel.IsEmpty()
|
||||
|| PrimaryViewProfileContractId.IsEmpty()
|
||||
|| !SourceAttribution.IsStructurallyValid()
|
||||
|| Selectors.Num() == 0
|
||||
|| DefaultSelectorChoices.Num() == 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
TSet<FString> SeenSelectorIds;
|
||||
for (const FHyperTwistTrainingImportedRuntimeSelector& Selector : Selectors)
|
||||
{
|
||||
if (!Selector.IsStructurallyValid())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const FString NormalizedSelectorId = Selector.SelectorId.ToLower();
|
||||
if (SeenSelectorIds.Contains(NormalizedSelectorId))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
SeenSelectorIds.Add(NormalizedSelectorId);
|
||||
}
|
||||
|
||||
TSet<FString> SeenChoiceSelectorIds;
|
||||
for (const FHyperTwistTrainingImportedRuntimeSelectorChoice& Choice : DefaultSelectorChoices)
|
||||
{
|
||||
if (!Choice.IsStructurallyValid())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const FString NormalizedSelectorId = Choice.SelectorId.ToLower();
|
||||
if (!SeenSelectorIds.Contains(NormalizedSelectorId)
|
||||
|| SeenChoiceSelectorIds.Contains(NormalizedSelectorId))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
SeenChoiceSelectorIds.Add(NormalizedSelectorId);
|
||||
}
|
||||
|
||||
return SeenChoiceSelectorIds.Num() == SeenSelectorIds.Num();
|
||||
}
|
||||
bool IsStructurallyValid() const;
|
||||
};
|
||||
|
||||
USTRUCT(BlueprintType)
|
||||
|
|
@ -640,51 +411,7 @@ struct FHyperTwistTrainingHigherDimensionalRuntimeViewContextCatalog
|
|||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FHyperTwistTrainingHigherDimensionalRuntimeViewContextSurface> ViewContextSurfaces;
|
||||
|
||||
bool IsStructurallyValid() const
|
||||
{
|
||||
if (CatalogId.IsEmpty() || CatalogVersion.IsEmpty() || ViewContextSurfaces.Num() == 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
TSet<FString> SeenViewContextSurfaceIds;
|
||||
TSet<FString> SeenActivationProfileIds;
|
||||
TSet<FString> SeenLaunchSurfaceIds;
|
||||
for (const FHyperTwistTrainingHigherDimensionalRuntimeViewContextSurface& ViewContextSurface :
|
||||
ViewContextSurfaces)
|
||||
{
|
||||
if (!ViewContextSurface.IsStructurallyValid())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const FString NormalizedViewContextSurfaceId =
|
||||
ViewContextSurface.ViewContextSurfaceId.ToLower();
|
||||
if (SeenViewContextSurfaceIds.Contains(NormalizedViewContextSurfaceId))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const FString NormalizedActivationProfileId =
|
||||
ViewContextSurface.ActivationProfileId.ToLower();
|
||||
if (SeenActivationProfileIds.Contains(NormalizedActivationProfileId))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const FString NormalizedLaunchSurfaceId = ViewContextSurface.LaunchSurfaceId.ToLower();
|
||||
if (SeenLaunchSurfaceIds.Contains(NormalizedLaunchSurfaceId))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
SeenViewContextSurfaceIds.Add(NormalizedViewContextSurfaceId);
|
||||
SeenActivationProfileIds.Add(NormalizedActivationProfileId);
|
||||
SeenLaunchSurfaceIds.Add(NormalizedLaunchSurfaceId);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
bool IsStructurallyValid() const;
|
||||
};
|
||||
|
||||
USTRUCT(BlueprintType)
|
||||
|
|
@ -755,64 +482,7 @@ struct FHyperTwistTrainingHigherDimensionalRuntimeSessionSurface
|
|||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FHyperTwistTrainingSourceAttribution SourceAttribution;
|
||||
|
||||
bool IsStructurallyValid() const
|
||||
{
|
||||
if (SessionSurfaceId.IsEmpty()
|
||||
|| ActivationProfileId.IsEmpty()
|
||||
|| HostSurfaceId.IsEmpty()
|
||||
|| LaunchSurfaceId.IsEmpty()
|
||||
|| ViewContextSurfaceId.IsEmpty()
|
||||
|| Title.IsEmpty()
|
||||
|| HostMapPath.IsEmpty()
|
||||
|| HostMapRouteId.IsEmpty()
|
||||
|| HostMapLabel.IsEmpty()
|
||||
|| RuntimeModeId.IsEmpty()
|
||||
|| PrimaryPersistenceBoundaryId.IsEmpty()
|
||||
|| PrimaryViewProfileContractId.IsEmpty()
|
||||
|| !SourceAttribution.IsStructurallyValid()
|
||||
|| Selectors.Num() == 0
|
||||
|| DefaultSelectorChoices.Num() == 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
TSet<FString> SeenSelectorIds;
|
||||
for (const FHyperTwistTrainingImportedRuntimeSelector& Selector : Selectors)
|
||||
{
|
||||
if (!Selector.IsStructurallyValid())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const FString NormalizedSelectorId = Selector.SelectorId.ToLower();
|
||||
if (SeenSelectorIds.Contains(NormalizedSelectorId))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
SeenSelectorIds.Add(NormalizedSelectorId);
|
||||
}
|
||||
|
||||
TSet<FString> SeenChoiceSelectorIds;
|
||||
for (const FHyperTwistTrainingImportedRuntimeSelectorChoice& Choice : DefaultSelectorChoices)
|
||||
{
|
||||
if (!Choice.IsStructurallyValid())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const FString NormalizedSelectorId = Choice.SelectorId.ToLower();
|
||||
if (!SeenSelectorIds.Contains(NormalizedSelectorId)
|
||||
|| SeenChoiceSelectorIds.Contains(NormalizedSelectorId))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
SeenChoiceSelectorIds.Add(NormalizedSelectorId);
|
||||
}
|
||||
|
||||
return SeenChoiceSelectorIds.Num() == SeenSelectorIds.Num();
|
||||
}
|
||||
bool IsStructurallyValid() const;
|
||||
};
|
||||
|
||||
USTRUCT(BlueprintType)
|
||||
|
|
@ -829,59 +499,7 @@ struct FHyperTwistTrainingHigherDimensionalRuntimeSessionCatalog
|
|||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FHyperTwistTrainingHigherDimensionalRuntimeSessionSurface> SessionSurfaces;
|
||||
|
||||
bool IsStructurallyValid() const
|
||||
{
|
||||
if (CatalogId.IsEmpty() || CatalogVersion.IsEmpty() || SessionSurfaces.Num() == 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
TSet<FString> SeenSessionSurfaceIds;
|
||||
TSet<FString> SeenActivationProfileIds;
|
||||
TSet<FString> SeenLaunchSurfaceIds;
|
||||
TSet<FString> SeenViewContextSurfaceIds;
|
||||
for (const FHyperTwistTrainingHigherDimensionalRuntimeSessionSurface& SessionSurface :
|
||||
SessionSurfaces)
|
||||
{
|
||||
if (!SessionSurface.IsStructurallyValid())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const FString NormalizedSessionSurfaceId = SessionSurface.SessionSurfaceId.ToLower();
|
||||
if (SeenSessionSurfaceIds.Contains(NormalizedSessionSurfaceId))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const FString NormalizedActivationProfileId =
|
||||
SessionSurface.ActivationProfileId.ToLower();
|
||||
if (SeenActivationProfileIds.Contains(NormalizedActivationProfileId))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const FString NormalizedLaunchSurfaceId = SessionSurface.LaunchSurfaceId.ToLower();
|
||||
if (SeenLaunchSurfaceIds.Contains(NormalizedLaunchSurfaceId))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const FString NormalizedViewContextSurfaceId =
|
||||
SessionSurface.ViewContextSurfaceId.ToLower();
|
||||
if (SeenViewContextSurfaceIds.Contains(NormalizedViewContextSurfaceId))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
SeenSessionSurfaceIds.Add(NormalizedSessionSurfaceId);
|
||||
SeenActivationProfileIds.Add(NormalizedActivationProfileId);
|
||||
SeenLaunchSurfaceIds.Add(NormalizedLaunchSurfaceId);
|
||||
SeenViewContextSurfaceIds.Add(NormalizedViewContextSurfaceId);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
bool IsStructurallyValid() const;
|
||||
};
|
||||
|
||||
USTRUCT(BlueprintType)
|
||||
|
|
@ -991,59 +609,7 @@ struct FHyperTwistTrainingHigherDimensionalInteractiveSceneCatalog
|
|||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FHyperTwistTrainingHigherDimensionalInteractiveSceneSurface> SceneSurfaces;
|
||||
|
||||
bool IsStructurallyValid() const
|
||||
{
|
||||
if (CatalogId.IsEmpty() || CatalogVersion.IsEmpty() || SceneSurfaces.Num() == 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
TSet<FString> SeenSceneSurfaceIds;
|
||||
TSet<FString> SeenSessionSurfaceIds;
|
||||
TSet<FString> SeenActivationProfileIds;
|
||||
TSet<FString> SeenSceneContextIds;
|
||||
for (const FHyperTwistTrainingHigherDimensionalInteractiveSceneSurface& SceneSurface :
|
||||
SceneSurfaces)
|
||||
{
|
||||
if (!SceneSurface.IsStructurallyValid())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const FString NormalizedSceneSurfaceId = SceneSurface.SceneSurfaceId.ToLower();
|
||||
if (SeenSceneSurfaceIds.Contains(NormalizedSceneSurfaceId))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const FString NormalizedSessionSurfaceId = SceneSurface.SessionSurfaceId.ToLower();
|
||||
if (SeenSessionSurfaceIds.Contains(NormalizedSessionSurfaceId))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const FString NormalizedActivationProfileId =
|
||||
SceneSurface.ActivationProfileId.ToLower();
|
||||
if (SeenActivationProfileIds.Contains(NormalizedActivationProfileId))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const FString NormalizedSceneContextId =
|
||||
SceneSurface.SceneContext.SceneContextId.ToLower();
|
||||
if (SeenSceneContextIds.Contains(NormalizedSceneContextId))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
SeenSceneSurfaceIds.Add(NormalizedSceneSurfaceId);
|
||||
SeenSessionSurfaceIds.Add(NormalizedSessionSurfaceId);
|
||||
SeenActivationProfileIds.Add(NormalizedActivationProfileId);
|
||||
SeenSceneContextIds.Add(NormalizedSceneContextId);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
bool IsStructurallyValid() const;
|
||||
};
|
||||
|
||||
USTRUCT(BlueprintType)
|
||||
|
|
|
|||
|
|
@ -390,6 +390,43 @@ Latest same-day training-benchmark header ownership follow-up still on
|
|||
the higher-dimensional runtime header rather than validation-benchmark
|
||||
bundles
|
||||
|
||||
Latest same-day higher-dimensional runtime header cleanup follow-up still on
|
||||
`2026-06-24`:
|
||||
|
||||
- the next same-family runtime packet then moved the larger activation, launch,
|
||||
view-context, session, and interactive-scene catalog/surface validators out
|
||||
of
|
||||
`Public/HyperTwistTraining/HyperTwistTrainingHigherDimensionalRuntimeLibrary.h`
|
||||
and into the private runtime owner file
|
||||
`Private/HyperTwistTraining/HyperTwistTrainingHigherDimensionalRuntimeLibrary.cpp`
|
||||
- the private runtime owner now also carries a shared
|
||||
`AreImportedRuntimeSelectorsConsistent(...)` helper so the selector/default-choice
|
||||
integrity loop no longer repeats inline across the launch, view-context, and
|
||||
session surface validators
|
||||
- `scripts/run-hypertwist-sentrux-source-only.sh` then improved again to:
|
||||
- `Quality: 6172`
|
||||
- all `7` rules passing
|
||||
- the higher-dimensional runtime header’s remaining inline validators are now
|
||||
down to small residual seams:
|
||||
- `23` lines for `FHyperTwistTrainingMagicCube5DInteractiveSceneStateEnvelope`
|
||||
- `22` lines for `FHyperTwistTrainingMagic120CellInteractiveSceneStateEnvelope`
|
||||
- `20` lines for `FHyperTwistTrainingHigherDimensionalInteractiveSceneSurface`
|
||||
- `18` lines for `FHyperTwistTrainingHigherDimensionalRuntimeActivationProfile`
|
||||
- `14` lines for `FHyperTwistTrainingHigherDimensionalRuntimeHostSurface`
|
||||
- the overall public-header inline-validator hotspots now shift away from the
|
||||
Phase 6C runtime family and toward other owned surfaces:
|
||||
- `52` lines for `FHyperTwistVirtual3333VisibleProjection`
|
||||
- `51` lines for `FHyperTwistMelindaProjectedCell`
|
||||
- `47` lines for `FHyperTwistVirtual3333RuntimeState`
|
||||
- `42` lines for `FHyperTwistVisionBrowserShellProfile`
|
||||
- `42` lines for `FHyperTwistMelinda2x2x2x2ScramblePacket`
|
||||
- current truthful “vanilla refactor” reading tightens again:
|
||||
- the higher-dimensional runtime header is no longer a meaningful large
|
||||
inline-validator hotspot
|
||||
- if we keep draining structural header weight, the next honest family is now
|
||||
simulation/recognition/core ownership rather than more Phase 6C runtime
|
||||
cleanup
|
||||
|
||||
Latest same-day browser/distribution continuity follow-up still on `2026-06-24`:
|
||||
|
||||
- auth-entry, protected-route loading, dashboard auth health, and release-authority fallback states now share a more deliberate operator-facing recovery shape instead of scattering single-line warnings across public and protected surfaces
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue