Files
UnrealEngine/Engine/Source/Editor/UnrealEd/Public/IActorEditorContextClient.h
2025-05-18 13:04:45 +08:00

44 lines
1.4 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "Widgets/SWidget.h"
/**
* Public interface for Actor Editor Context Clients
*/
DECLARE_MULTICAST_DELEGATE_OneParam(FOnActorEditorContextClientChanged, struct IActorEditorContextClient*);
class UWorld;
class AActor;
class UActorEditorContextStateCollection;
struct FActorEditorContextClientDisplayInfo
{
FActorEditorContextClientDisplayInfo() : Brush(nullptr) {}
FString Title;
const FSlateBrush* Brush;
};
enum class EActorEditorContextAction
{
ApplyContext,
ResetContext,
PushContext,
PushDuplicateContext,
PopContext,
InitializeContextFromActor,
};
struct IActorEditorContextClient
{
virtual void OnExecuteActorEditorContextAction(UWorld* InWorld, const EActorEditorContextAction& InType, AActor* InActor = nullptr) = 0;
virtual void CaptureActorEditorContextState(UWorld* InWorld, UActorEditorContextStateCollection* InStateCollection) const = 0;
virtual void RestoreActorEditorContextState(UWorld* InWorld, const UActorEditorContextStateCollection* InStateCollection) = 0;
virtual bool GetActorEditorContextDisplayInfo(UWorld* InWorld, FActorEditorContextClientDisplayInfo& OutDiplayInfo) const = 0;
virtual bool CanResetContext(UWorld* InWorld) const = 0;
virtual TSharedRef<SWidget> GetActorEditorContextWidget(UWorld* InWorld) const = 0;
virtual FOnActorEditorContextClientChanged& GetOnActorEditorContextClientChanged() = 0;
};