IDI-Systems / UnrealImGui

Unreal plug-in that integrates Dear ImGui framework into Unreal Engine 4/5.
MIT License
121 stars 27 forks source link

NetImgui branch update #1

Open sammyfreg opened 1 year ago

sammyfreg commented 1 year ago

Seeing as the NetImgui branch is now up to date, I suggest that it get also get pulled into master branch.

This will keep it up to date at all time and people that do not wish to use it can set kUseNetImgui in NetImguiLibrary.Build.cs to false, it will remove it from compilation.

jonpas commented 1 year ago

Awesome!

Should NetImgui be disabled by default on master branch and be changed to opt-in you reckon?

sammyfreg commented 1 year ago

Personnally, I would leave it active by default. When not in use, it only use a sleeping thread to listen for connection on a tcp socket. If people are really bothered by that, a simple value change disable all of the NetImgui integration, which can be made clear in the documention and the main header file / build.cs of the plugin.

Aditionally, this branch gives acces to extra built-in fonts .

jonpas commented 12 months ago

I have some changes locally that I can't seem to push to your branch (likely because it's a fork of the original repo, not this fork). net_imgui branch on this repo has those changes though.

sammyfreg commented 11 months ago

Unrelated to my change, I saw this comment in the documentation

... you'll need to add the following line to your [GameName].Build.cs file otherwise you'll get linking errors:

// Tell the compiler we want to import the ImPlot symbols when linking against ImGui plugin 
PrivateDefinitions.Add(string.Format("IMPLOT_API=DLLIMPORT"));

This can actually be avoided, by adding the public define in the plugin .cs file or even the imgui config .h

jonpas commented 11 months ago

Looks like just IMPLOT_API=DLLEXPORT is enough for Unreal to figure it out as our internal project using this never defines IMPLOT_API=DLLIMPORT.

jonpas commented 11 months ago

Is your overall plan to deprecate https://github.com/sammyfreg/UnrealNetImgui? I haven't dived too deep into the integration yet, but I am wondering if it would be better to keep NetImgui integration into Unreal separate? That would also mean less waiting for this plugin to update to latest ImGui changes when there are changes required in NetImgui. Maybe keeping compatibility between both without direct access is not that easy though.

Overall I think the decision here is to either have this plugin as a collection of ImGui plugins integrated into Unreal Engine, or a hub/core plugin that allows sub-plugins to be added. Ultimately first is probably a lot easier, and doing that with ability to enable/disable features is ultimately the better choice. I only worry about version compatibilities in this case.

As for the server executable, I would recommend attaching a build of it to each NetImgui release. That would be useful for whatever NetImgui is/gets integrated into, wiki page is a bit hidden.

sammyfreg commented 11 months ago

Is your overall plan to deprecate https://github.com/sammyfreg/UnrealNetImgui?

No, I am still working on it. At first, it was just intended as a simple plugin for people wanting to use a simple Dear ImGui integration without local display. A lot of game company used their own version of Dear ImGui integration in Unreal, so it is also a good example on how to import NetImgui into their own plugin. Since UnrealImGui had been inactive for a while, I started work some time ago on supporting local display too, controlled from the remote server. But this is slower going since I am pretty busy with other things.

I haven't dived too deep into the integration yet, but I am wondering if it would be better to keep NetImgui integration into Unreal separate?

It cannot be separate, NetImgui needs to be compiled alognside the Dear ImGui Integration. There's the issue of replacing the ImGui::Begin()/Render() with NetImgui::Begin()/End() and knowing on which context to remotely work with.

... wiki page is a bit hidden.

As for this point, I didn't mean that the user hunt the link on another wiki. I just store the zip file there for download. In my lastest pull request, I added a link in the README.md to the zip file with the needed content.

I would recommend attaching a build of it to each NetImgui release

Each NetImgui release already contain the exe compiled (link), but it also contains the client .cpps for integration into your application, and missing the Unreal Remote configs, could be confusing for Plugin users.

jonpas commented 11 months ago

Unreal Remote config can be in this repo, that's fine. Only binaries should not - either from a verified release or self-built.

sammyfreg commented 11 months ago

Ok. For now I removed the NetImguiServer folder entirely, so user can download it using the link on the README.md page, and copy the application to the folder of their choice, with the client list config file included.