You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.5 KiB
50 lines
1.5 KiB
// Copyright Voulz 2021-2025. All Rights Reserved.
|
|
|
|
#include "ArchVisSubsystem.h"
|
|
|
|
#include "ArchVisSceneViewExtension.h"
|
|
#include "MoviePipelineBase.h"
|
|
#include "SceneViewExtension.h"
|
|
|
|
|
|
void UArchVisSubsystem::Initialize(FSubsystemCollectionBase& Collection)
|
|
{
|
|
ArchVisSceneViewExtension = FSceneViewExtensions::NewExtension<FArchVisSceneViewExtension>(this);
|
|
UE_LOG(LogTemp, Log, TEXT("SceneViewExtensionTemplate: Subsystem initialized & SceneViewExtension created"));
|
|
}
|
|
|
|
void UArchVisSubsystem::Deinitialize()
|
|
{
|
|
{
|
|
ArchVisSceneViewExtension->IsActiveThisFrameFunctions.Empty();
|
|
|
|
FSceneViewExtensionIsActiveFunctor IsActiveFunctor;
|
|
|
|
IsActiveFunctor.IsActiveFunction = [](const ISceneViewExtension* SceneViewExtension, const FSceneViewExtensionContext& Context)
|
|
{
|
|
return TOptional<bool>(false);
|
|
};
|
|
|
|
ArchVisSceneViewExtension->IsActiveThisFrameFunctions.Add(IsActiveFunctor);
|
|
}
|
|
|
|
ArchVisSceneViewExtension.Reset();
|
|
ArchVisSceneViewExtension = nullptr;
|
|
}
|
|
|
|
bool UArchVisSubsystem::IsMoviePipelineWorld(const UWorld* World)
|
|
{
|
|
if (!IsValid(World))
|
|
{
|
|
return false;
|
|
}
|
|
|
|
//todo: if this does not work, check UWorld::PerModuleDataObjects and set it in OnMoviePipelineInitialized
|
|
bool bHasMoviePipelineBase = false;
|
|
ForEachObjectWithOuterBreakable(World, [&bHasMoviePipelineBase](UObject* Object)
|
|
{
|
|
bHasMoviePipelineBase = Object->IsA<UMoviePipelineBase>();
|
|
return !bHasMoviePipelineBase; // break if we found it
|
|
}, false);
|
|
return bHasMoviePipelineBase;
|
|
}
|
|
|