-
Notifications
You must be signed in to change notification settings - Fork 34
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
NetImgui branch update #1
base: master
Are you sure you want to change the base?
Conversation
Merging initial integration of NetImgui by Sammyfreg: - Integration of the NetImgui. - Build as part of the ImGui module. - Implemented UE4 sockets. - Added mirroring and dual context support. - Menu bar to switch between contexts.
Merging Bugfix for NetImGui: Making sure sockets are all closed before exiting netImgui shutdown.
* Added support for netImgui. TODO: fix issue with editor not drawing until PIE activated once TODO: Implement UE4 sockets (instead of using Winsock directly) TODO: Figure out how to expose options to user, and netImgui server exe * netImgui: Fix compile and running error in game mode * NetImgui: Added mirroring option * Fix for Texture format detection and disconnect request * Added : Dual Draw support Added: IsRemoteDrawing() and IsRemoteConnected() to FImGuiModuleProperties Removed : Intrusive code in FProxyContext Fixed: NoUnityBuild * Added support of Unreal Sockets instead of using Windows code. Every platform supported by Unreal should now work with remote connection. * Changed context index mapping to fix issues with multi-PIE debugging in 4.25. * Status update with information about NetImgui. * Bugfix: making sure sockets are all closed before exiting netImgui shutdown * Fixed Linux crash caused by wrong mapping of key codes. * Update DearImgui 1.80, NetImgui 1.3 Updating DearImgui and NetImgui libraries to latest version. * Missing ImGui context release * Prevent crash while cooking * Case sensitive include fix Co-authored-by: Sebastian <[email protected]>
# Conflicts: # CHANGES.md # ImGui.uplugin # README.md # Source/ImGui/ImGui.Build.cs # Source/ImGui/Private/ImGuiContextManager.cpp # Source/ImGui/Private/ImGuiContextProxy.cpp # Source/ImGui/Private/ImGuiDrawData.cpp # Source/ThirdParty/ImGuiLibrary/Include/imconfig.h # Source/ThirdParty/ImGuiLibrary/Include/imgui.h # Source/ThirdParty/ImGuiLibrary/LICENSE.txt # Source/ThirdParty/ImGuiLibrary/Private/imgui.cpp # Source/ThirdParty/ImGuiLibrary/Private/imgui_demo.cpp # Source/ThirdParty/ImGuiLibrary/Private/imgui_draw.cpp # Source/ThirdParty/ImGuiLibrary/Private/imgui_internal.h # Source/ThirdParty/ImGuiLibrary/Private/imgui_tables.cpp # Source/ThirdParty/ImGuiLibrary/Private/imgui_widgets.cpp # Source/ThirdParty/ImGuiLibrary/Private/imstb_truetype.h
Awesome! Should NetImgui be disabled by default on master branch and be changed to opt-in you reckon? |
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 . |
NetImguiServer/netImguiServer.exe
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Don't like this, including binaries in the repository. This should be a separate download, ideally from NetImgui itself?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The server app needs to match the client code included. Since the .exe is small, I always included it pre-compiled together to keep simple for users. I could store it on a github wiki, like I do for the github webpage's images. I guess it will also need to have an updated webpage documentation to include the link.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I removed the server application and updated the documentation.
README.md
Outdated
|
||
To be able to connect to the Unreal editor or application that use NetImgui, you need to run a server (netImguiServer). Please, see the [NetImgui](https://github.com/sammyfreg/netImgui) page for instructions how to get it. | ||
|
||
After launching the server for the first time, you need to add two client configurations, for ports 8889 and 8890. After that, you can either initialise connection from the server or set it to autoconnection mode. More info will be added later. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is this still true if netImgui.cfg
is provided?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You are right this is no longuer needed with provided config (the 2 basics config). Still need to add console config. It'll update this info.
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). |
Unrelated to my change, I saw this comment in the documentation
// 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 |
Looks like just |
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. |
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.
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.
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.
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. |
Unreal Remote config can be in this repo, that's fine. Only binaries should not - either from a verified release or self-built. |
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. |
NetImgui branch
with latestmaster branch
contentNetImgui library
to latest v1.9 versionSeeing as the
NetImgui branch
is now up to date, I suggest that it get also get pulled intomaster branch
.This will keep it up to date at all time and people that do not wish to use it can set
kUseNetImgui
inNetImguiLibrary.Build.cs
to false, it will remove it from compilation.