Projekt for SPIE - Avatar for safety briefing / managment event
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

// 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;
}