Engine and Editor subsystems

- Dynamic subsystems for fixed module startup wrt subsystem initialization
- Python Gettter exposed for both eg: import_subsystem = unreal.get_editor_subsystem(unreal.ImportSubsystem)
- Import Subsystem with python exposed import events

#rb Matt.Kuhlenschmidt, Rex.Hill
#codereview Matt.Kuhlenschmidt, Rex.Hill

[CL 4725117 by Chris Gagnon in Dev-Editor branch]
This commit is contained in:
Chris Gagnon
2019-01-15 13:41:40 -05:00
parent 9d802b6906
commit bd368fae31
58 changed files with 721 additions and 118 deletions
@@ -0,0 +1,17 @@
// Copyright 1998-2018 Epic Games, Inc. All Rights Reserved.
using UnrealBuildTool;
public class EditorSubsystem : ModuleRules
{
public EditorSubsystem(ReadOnlyTargetRules Target)
: base(Target)
{
PrivateDependencyModuleNames.AddRange(
new string[] {
"Core",
"CoreUObject",
"Engine",
});
}
}
@@ -0,0 +1,9 @@
// Copyright 1998-2018 Epic Games, Inc. All Rights Reserved.
#include "EditorSubsystem.h"
UEditorSubsystem::UEditorSubsystem()
: UDynamicSubsystem()
{
}
@@ -0,0 +1,15 @@
// Copyright 1998-2018 Epic Games, Inc. All Rights Reserved.
#include "EditorSubsystemModule.h"
#include "Modules/ModuleManager.h"
IMPLEMENT_MODULE(FEditorSubsystemModule, EditorSubsystem);
void FEditorSubsystemModule::StartupModule()
{
}
void FEditorSubsystemModule::ShutdownModule()
{
}
@@ -0,0 +1,28 @@
// Copyright 1998-2018 Epic Games, Inc. All Rights Reserved.
#pragma once
#include "Subsystems/Subsystem.h"
#include "EditorSubsystem.generated.h"
/**
* UEditorSubsystem
* Base class for auto instanced and initialized systems that share the lifetime of the Editor
*
* UEditorSubsystems are dynamic and will be initialized when the module is loaded if necessary.
* This means that after StartupModule() is called on the module containing a subsystem,
* the subsystem collection with instantiate and initialize the subsystem automatically.
* If the subsystem collection is created post module load then the instances will be created at
* collection initialization time.
*/
UCLASS(Abstract)
class EDITORSUBSYSTEM_API UEditorSubsystem : public UDynamicSubsystem
{
GENERATED_BODY()
public:
UEditorSubsystem();
};
@@ -0,0 +1,16 @@
// Copyright 1998-2018 Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "Modules/ModuleInterface.h"
class EDITORSUBSYSTEM_API FEditorSubsystemModule : public IModuleInterface
{
public:
// IModuleInterface
virtual void StartupModule() override;
virtual void ShutdownModule() override;
private:
};