Two windows in a program

Hi!

I need to make a program with two windows: the first window (main) where the player could walk around the level and the second window, where I could change the position of the actors in runtime (some kind of room planning app)

Is it possible to realize in UE4?

with best regards,

RealCoder

Curious about this as well…

It is possible as editor does that, it seems it quite easy to be done with Slate, you create window first which you need to do with this function:

You can get rederer via this:
FSlateApplication::Get().GetRenderer()

Window is also widget SWindow:

Inside windows you place SViewport:
https://docs.unrealengine.com/latest/INT/API/Runtime/Slate/Widgets/SViewport/index.html

If you have 0 idea about Slate, it is engine UI system initially made for editor, but it also can power gameplay UI (for example UMG is blueprint front end of Slate), here link for good starting resource:

This can be helpful to as it shows some slate stuff: C++ Extending the Editor | Live Training | Unreal Engine - YouTube

In the first function i give you as SWindow aregument you use SNew(SWindow) or better SAssignNew(MyWindowVarable,SWindow), as for argument functions you look up FArgument sub class in API refrence usally in bottom, but i give oyu links for SViewport and SWindow

https://docs.unrealengine.com/latest/INT/API/Runtime/SlateCore/Widgets/SWindow/FArguments/index.html
https://docs.unrealengine.com/latest/INT/API/Runtime/Slate/Widgets/SViewport/FArguments/index.html

Slate is weakly documented so ultimate example resource for is engine source code it self aspecially editor code, but no worries Slate works outside editor (it needs to power UMG anyway) so as long as you dont call any editor code you are ok.

Hey Shadowriver,

i am extremely interested in this too. Could you give me some short example code which extends the unreal engine and just adds a new window without any content but which is shown? That would be really nice of you.

Thanks in advance and best regards.

I was looking into this as well and here is what I have ended up with:

SlateWin = SNew(SWindow)
	.AutoCenter(EAutoCenter::None)
	.Title(FText::FromString(TEXT("Control Window")))
	.IsInitiallyMaximized(false)
	.ScreenPosition(FVector2D(0, 0))
	.ClientSize(FVector2D(500, 800))
	.CreateTitleBar(true)
	.SizingRule(ESizingRule::UserSized)
	.SupportsMaximize(false)
	.SupportsMinimize(true)
	.HasCloseButton(true);

TSharedRef<SWindow> SlateWinRef = SlateWin.ToSharedRef();

FSlateApplication & SlateApp = FSlateApplication::Get();

SlateApp.AddWindow(SlateWinRef, true);

SlateWinRef->SetContent(SNew(SControlWidget));

This creates and displays a basic window that you can place slate stuff into. Thanks to Shadowriver for the pointers!

How can I just want a left top small main window in full screen mode (other place are all black)

Thanks for this code snippit!

For other newbies like me: Just keep in mind the “SControlWidget” is your own content for your new widget. SControlWidget is no Class of Unreal. You have to define it yourself.

I made some plugin, maybe it can help you GitHub - Batname/SpectatorWindow

Hi, i trying Build this plugin in 4.19 and receive erros…

I would love to be able to use this plugin … can you take a look without a code, please?

Hi!,

I recently upgraded the project to 4.18.3 (pull request is waiting). You can find it here:

Best,
F

Hi, i Receive this error in this line when Build

R_MotionController->Hand = EControllerHand::Right; (No member named member in hand in UmotionControllerComponent)

Hi, i Build the project… More When I Package i receive this message: Could not find SuperStruct MV_UserWidget to create BP_MV_UserWidget_C

could you tell me where I can change?

This variable is Protected and i change to Public more no effect…

Hi Denis

Is it possible with SpectatorWindow render from a render target instead of draw from frame buffer? If it is posible how can I do it?

Thank you in advance.

I need to create, fundamentally, a separate window in which there will be a widget with buttons (something like a control panel). I create the second separate window SWindow in which I place the widget. When you press a button on the widget, the game stops, when button it is released - game continues. If this widget is placed in the main window, this does not happen. Is it possible to overcome it? And what can it be connected with?

I excusal. The problem was only when you run through the “PLAY”. If run through the “LAUNCH” then neither does not freeze and does not stop

Hello, I’m working on a new solution for it for one of our customers, I’ll share some code later on. about 1 month. Contact me by dennis at geodesic.games or follow our website if I won’t put an update here in one month http://www.geodesic.games/

Thank

Hello, We made a new tutorial about multiwindow rendering from the screen capture component

http://www.geodesic.games/2019/02/28/ue4-plugin-for-scene-capture-rendering-to-separate-window/

And here is GitHub GitHub - Batname/UE4MultiWindow

Thanks for sharing this! It runs in 4.24, however no post fx seems to be enabled, notably aa. any idea why?

Another two questions if you don’t mind -

  • how do I set the view / camera used by the PlayScene window?
  • can I have more than one? :slight_smile:

can u share cpp and .h files or screen shot

Hi all, I’m looking this second window result with a workflow in blueprints. That second window needs to automatically populate the second screen with a minimap that I have created.
Hope someone can help,
Cheers!