Files
jeanfrancois dube 9880e2bf15 Level Instance:
- Exposed the runtime behavior so we can now place level instances referencing partitioned worlds that will be streamed at runtime instead of embedded in the container world.
  - Don't allow edit in place for partitioned level instance worlds that have streaming disabled, as we load the entire level when doing so and could result in out of memory situations.
  - Added a message box when trying to edit a level instance that can't be edited in place with the reason.
  - Can be reenabled by setting LevelInstanceEditorSettings.bEnableEditInPlaceStreamingEnabled to true.

#rb Patrick.Enfedaque, Richard.Malo

[CL 29784110 by jeanfrancois dube in ue5-main branch]
2023-11-16 13:35:30 -05:00

53 lines
1.7 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "LevelInstance/ILevelInstanceEditorModule.h"
#include "Tools/Modes.h"
class AActor;
class ULevel;
enum class EMapChangeType : uint8;
/**
* The module holding all of the UI related pieces for LevelInstance management
*/
class FLevelInstanceEditorModule : public ILevelInstanceEditorModule
{
public:
virtual ~FLevelInstanceEditorModule(){}
/**
* Called right after the module DLL has been loaded and the module object has been created
*/
virtual void StartupModule();
/**
* Called before the module is unloaded, right before the module object is destroyed.
*/
virtual void ShutdownModule();
virtual void ActivateEditorMode() override;
virtual void DeactivateEditorMode() override;
virtual void BroadcastTryExitEditorMode() override;
DECLARE_DERIVED_EVENT(FLevelInstanceEditorModule, ILevelInstanceEditorModule::FExitEditorModeEvent, FExitEditorModeEvent);
virtual FExitEditorModeEvent& OnExitEditorMode() override { return ExitEditorModeEvent; }
DECLARE_DERIVED_EVENT(FLevelInstanceEditorModule, ILevelInstanceEditorModule::FTryExitEditorModeEvent, FTryExitEditorModeEvent);
virtual FTryExitEditorModeEvent& OnTryExitEditorMode() override { return TryExitEditorModeEvent; }
virtual bool IsEditInPlaceStreamingEnabled() const override;
private:
void OnEditorModeIDChanged(const FEditorModeID& InModeID, bool bIsEnteringMode);
void OnLevelActorDeleted(AActor* Actor);
void CanMoveActorToLevel(const AActor* ActorToMove, const ULevel* DestLevel, bool& bOutCanMove);
void ExtendContextMenu();
FExitEditorModeEvent ExitEditorModeEvent;
FTryExitEditorModeEvent TryExitEditorModeEvent;
};