#pragma once #include "CoreMinimal.h" #include "Modules/ModuleManager.h" class FBlueprintEditor; class IInputProcessor; class UBlueprint; class UEdGraph; class FUEBlueprintMCPEditorModule : public IModuleInterface { public: virtual void StartupModule() override; virtual void ShutdownModule() override; private: friend class FMCPZoneInputProcessor; enum class EMcpRcStatus : uint8 { Unknown, Up, Down }; void RegisterMenus(); void RegisterWizardTabAndMenu(); void RegisterMCPToolbarButton(); void BuildMCPStatusMenu(class UToolMenu* Menu); void BuildToolsSubMenu(class UToolMenu* Menu); void PingRc(bool bNotify); TSharedRef SpawnWizardTab(const class FSpawnTabArgs& Args); void NotifyBridgeStatus(); void ToggleMCPZoneMode(TWeakPtr BlueprintEditor); bool IsMCPZoneModeActive(TWeakPtr BlueprintEditor) const; bool TryCreateMCPZoneFromScreenDrag(const FVector2f& StartScreenPosition, const FVector2f& EndScreenPosition); void CreateMCPZone(UEdGraph* Graph, UBlueprint* Blueprint, const FVector2f& GraphStart, const FVector2f& GraphEnd) const; void RemoveMCPZones(UBlueprint* Blueprint) const; bool bMCPZoneModeActive = false; bool bWizardTabRegistered = false; EMcpRcStatus CachedRcStatus = EMcpRcStatus::Unknown; TWeakPtr ActiveMCPZoneEditor; TSharedPtr MCPZoneInputProcessor; };