Editor Subsystem
UInhyeongOBSEditorSubsystem lets you control OBS from editor code (connecting, switching scenes, recording, and reading state) without entering Play mode. It mirrors the runtime subsystem’s handler access, so the same domain handlers (Scenes, Audio, Outputs, …) are available in editor tooling.
For point-and-click control of the same operations, use the customized Details Panels instead.
Accessing the Subsystem
UInhyeongOBSEditorSubsystem* EditorOBS = GEditor->GetEditorSubsystem<UInhyeongOBSEditorSubsystem>();
Connection
EditorOBS->Connect("localhost", 4455, "password");
EditorOBS->Disconnect();
EditorOBS->IsConnected();
EditorOBS->GetConnectionState();
The editor subsystem creates its client once and keeps it across reconnects, so bindings made against it remain stable.
Handler Access
Handler access is the same as the runtime subsystem:
EditorOBS->GetOutputs();
EditorOBS->GetScenes();
EditorOBS->GetMediaInputs();
EditorOBS->GetAudio(); // Audio inputs, volume, mute
EditorOBS->GetInputSettings(); // Source settings (text, browser, image, etc.)
EditorOBS->GetStudioMode();
EditorOBS->GetConfig();
EditorOBS->GetTransitions();
EditorOBS->GetScreenshots();
EditorOBS->GetFilters();
Direct Control
EditorOBS->SetCurrentScene("MyScene");
EditorOBS->StartRecord();
EditorOBS->SaveReplayBuffer();
EditorOBS->SetInputMute("Mic/Aux", true);
EditorOBS->AdjustInputVolume("Desktop Audio", -3.0f);
Studio Mode
EditorOBS->SetStudioModeEnabled(true);
EditorOBS->IsStudioModeEnabled();
EditorOBS->SetCurrentPreviewScene("Preview Scene");
EditorOBS->GetPreviewSceneName();
EditorOBS->TriggerStudioModeTransition();
Config: Scene Collections
EditorOBS->GetSceneCollectionList();
EditorOBS->SetCurrentSceneCollection("My Collection");
EditorOBS->CreateSceneCollection("New Collection");
EditorOBS->GetCachedSceneCollections();
EditorOBS->GetCurrentSceneCollectionName();
Config: Profiles
EditorOBS->GetProfileList();
EditorOBS->SetCurrentProfile("Streaming");
EditorOBS->CreateProfile("New Profile");
EditorOBS->RemoveProfile("Old Profile");
EditorOBS->GetCachedProfiles();
EditorOBS->GetCurrentProfileName();
Config: Video Settings
EditorOBS->GetVideoSettings();
EditorOBS->SetVideoSettings(Settings);
EditorOBS->SetBaseResolution(1920, 1080);
EditorOBS->SetOutputResolution(1280, 720);
EditorOBS->SetFPS(60, 1);
EditorOBS->GetCachedVideoSettings();
Config: Stream Service Settings
EditorOBS->GetConfig()->GetStreamServiceSettings();
EditorOBS->GetConfig()->SetStreamServiceSettings(Settings);
EditorOBS->GetConfig()->SetSimpleRTMPSettings("rtmp://server.com/live", "stream-key");
EditorOBS->GetConfig()->GetCachedStreamServiceSettings();
Transitions
EditorOBS->GetSceneTransitionList();
EditorOBS->GetCurrentSceneTransition();
EditorOBS->SetCurrentSceneTransition("Fade");
EditorOBS->SetCurrentSceneTransitionDuration(500);
EditorOBS->GetCurrentTransitionName();
EditorOBS->GetCurrentTransitionDuration();
EditorOBS->IsTransitionActive();
Events
EditorOBS->OnConnected.AddDynamic(...);
EditorOBS->OnRecordStateChanged.AddDynamic(...);