UnrealImGui/Source/ImGui/Private/Utilities/WorldContext.h
Sebastian 1a6aa98f51 Added support for session reloading and updated contexts and widgets management:
- Added to ImGui Context Proxy a name that is mapped to ini file set in ImGui context.
- ImGui Context Manager generates unique context names from world type and context index.
- Refactored ImGui Context Manager to have a cleaner separation between editor and non-editor bits.
- Fixed context update rules in ImGui Context Manager.
- Changed widgets management in ImGui Module Manager to allow automatic garbage collection after viewports are closed and manual removal when module is shutting down.
- ImGui Widgets are in full control of communication with context proxies.
- Added basic world context utilities.
- Refactored world context index utilities and replaced ambiguous 'default context index' with 'editor' and 'game' ones.
2017-09-27 21:16:54 +01:00

42 lines
1012 B
C++

// Distributed under the MIT License (MIT) (see accompanying LICENSE file)
#pragma once
#include <Core.h>
#include <Engine.h>
// Utilities helping to get a World Context.
namespace Utilities
{
template<typename T>
FORCEINLINE const FWorldContext* GetWorldContext(const TWeakObjectPtr<T>& Obj)
{
return Obj.IsValid() ? GetWorldContext(*Obj.Get()) : nullptr;
}
template<typename T>
FORCEINLINE const FWorldContext* GetWorldContext(const T* Obj)
{
return Obj ? GetWorldContext(*Obj) : nullptr;
}
FORCEINLINE const FWorldContext* GetWorldContext(const UGameInstance& GameInstance)
{
return GameInstance.GetWorldContext();
}
FORCEINLINE const FWorldContext* GetWorldContext(const UGameViewportClient& GameViewportClient)
{
return GetWorldContext(GameViewportClient.GetGameInstance());
}
FORCEINLINE const FWorldContext* GetWorldContext(const UWorld& World)
{
return GetWorldContext(World.GetGameInstance());
}
const FWorldContext* GetWorldContextFromNetMode(ENetMode NetMode);
}