Files
UnrealEngine/Engine/Plugins/Runtime/nDisplay/Source/DisplayCluster/Public/DisplayClusterWorldSubsystem.h
2025-05-18 13:04:45 +08:00

34 lines
1.2 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "UObject/ObjectMacros.h"
#include "UObject/UObjectGlobals.h"
#include "UObject/Object.h"
#include "Subsystems/WorldSubsystem.h"
#include "Engine/EngineBaseTypes.h"
#include "DisplayClusterWorldSubsystem.generated.h"
/**
* World Subsystem used to react to level and world changes.
* When Concert reloads the packages, streamed levels are removed and re-added without invoiking LoadMap which
* circumvents FDisplayClusterGameManager::StartScene method invoked inside LoadMap method of DisplayClusterGameEngine.
* This causes issues such as not updating references to DisplayClusterRootActor which causes memory corruption, crashes
* and graphic corruption. This Subsystem is used to react to changes in number of levels used in the current world
* and forces DisplayClusterModule to refresh all of its managers.
*/
UCLASS()
class UDisplayClusterWorldSubsystem : public UWorldSubsystem
{
GENERATED_BODY()
public:
virtual void Initialize(FSubsystemCollectionBase& Collection) override;
virtual void Deinitialize() override;
public:
/** Event that is triggered when number of levels is changed. */
void OnLevelsChanged();
};