This is a gigantic kerfuffle because Chromium expects a very specific directory & app bundle layout. Have to change a bunch of resource loading code to account for content development being launched from an app bundle, and also had to make automatic MSBuild tooling & a python script to generate such an app bundle
* Multiple CEF instances on a single machine
* remove unused
* meh implementation
* cefextension
* me when partials, race conditions and extractiion of methods exists
* Change remote debugging handling
It now defaults to 9222 again. This doesn't seem to cause any issues when launching 3 clients. The debug port can be reconfigured via CVar if desired.
Also disabled debugging by default outside dev builds.
* Lower MaxAttempts to 15
100 was way too much and gave me anxiety idk.
* Fix non-TOOLS default of remote debug port
* Rewrite locking implementation.
It is much smaller, less complicated and probably more robust too. Should be fully atomic (the previous one wasn't).
* Undo unnecessary style changes
---------
Co-authored-by: PJB3005 <pieterjan.briers+git@gmail.com>
* Bump cefglue
* another bump
* Update build-test.yml
* Update to latest CEF natives and fix code to be compatible.
* Switch CEF CreateBrowserWindow to Alloy style
you will NOT open Chrome
* Update cefglue, again
---------
Co-authored-by: ike709 <ike709@github.com>
Co-authored-by: PJB3005 <pieterjan.briers+git@gmail.com>
* Start converting SDL2 backend to SDL3.
Game starts, but a lot of stuff is broken. Oh well.
* Fix text input
SDL3 changed the API somewhat, for the better. Changes all over UI/Clyde/SDL3 layer.
* Fix mouse buttons being broken
* Remove records from SDL3 WSI
The fact that this shaved 2-3% off Robust.Client.dll is mindboggling. Records are so bad.
* Set Windows/X11 native window properties
* Fix window resize events getting wrong size
oops
* Remove "using static" from SDL3 WSI
Seriously seems to hurt IDE performance, oh well.
* Apparently I never called CheckThreadApartment().
* Add STAThreadAttribute to sandbox
Necessary for content start
* Set window title on creation properly.
* Load window icons
* Fix GLFW NoTitleBar style handling
Yeah this PR is supposed to be about SDL3, so what?
* Implement more window creation settings in SDL3
Mostly the ones that need a lot of platform-specific stuff to work.
* Make fullscreen work properly in SDL3.
* File dialogs with SDL3
Removes need for swnfd.
* Fix some TODOs
* Fix WebView build
* Move to Central Package Management.
Allows us to store NuGet package versions all in one place. Yay!
* Update NuGet packages and fix code for changes.
Notable:
Changes to ILVerify.
Npgsql doesn't need hacks for inet anymore, now we need hacks to make the old code work with this new reality.
NUnit's analyzers are already complaining and I didn't even update it to 4.x yet.
TerraFX changed to GetLastSystemError so error handling had to be changed.
Buncha APIs have more NRT annotations.
* Remove dotnet-eng NuGet package source.
I genuinely don't know what this was for, and Central Package Management starts throwing warnings about it, so YEET.
* Fix double loading of assemblies due to ALC shenanigans.
Due to how the "sideloading" code for the ModLoader was set up, it would first try to load Microsoft.Extensions.Primitives from next to the content dll. But we already have that library in Robust!
Chaos ensues.
We now try to forcibly prioritize loading from the default ALC first to avoid this.
* Remove Robust.Physics project.
Never used.
* Remove erroneous NVorbis reference.
Should be VorbisPizza and otherwise wasn't used.
* Sandbox fixes
* Remove unused unit test package references.
Castle.Core and NUnit.ConsoleRunner.
* Update NUnit to 4.0.1
This requires replacing all the old assertion methods because they removed them 🥲
* Mute CA1416 (platform check) errors
TerraFX started annotating APIs with this and I can't be arsed to entertain this analyzer so out it goes.
* Fine ya cranky, no more CPM for Robust.Client.Injectors
* Changelog
* Oh so that's what dotnet-eng was used for. Yeah ok that makes sense.
* Central package management for remaining 2 robust projects
* Ok that was a bad idea let's just use NUnit 3 on the analyzer test project
* Oh right forgot to remove this one
* Update to a newer version of RemoteExecutor
* Disable RemoteExecutor test
https://github.com/dotnet/arcade/issues/8483 Yeah this package is not well maintained and clearly we can't rely on it.
* Fix immutable list serialization
Re-organize initialization so that User-Agent CVar actually works.
Add web.headless CVar to not load CEF even on graphical client.
Clean up init logic to not rely on static IoC, and clean up loggers used too.
* Trying to get res:// and usr:// cookies to wrok
* Update CefGlue
* Bump CEF
* Seal types in WebView
Fixes warnings
* Move most of client cleanup to game thread.
This used to run in the windowing thread which broke CEF shutdown, most notably cookie saving.
* "flushcookies" command for CEF.
* Remove unecessary res:// code.
* Fix tests
* More request handler fixes.
* Good thing I don't have to care about commit quality in PRs like this.
Robust.Client.CEF Renamed to Robust.Client.WebView since CEF should really be an implementation detail.
Content is no longer responsible for initializing and managing the module, this is done automatically by the engine.
WebView is initialized by declaring it in a manifest.yml file in the game resources. In the future the launcher will read this same file to manage WebView module versions.
CefManager has been made private and the content-visible API is now IWebViewManager.