* Stopped recursive updates for controls that are not visible, as it violates framerate in large menus.
* Update Robust.Client/UserInterface/Control.cs
---------
Co-authored-by: Cam <Nop>
Co-authored-by: Pieter-Jan Briers <pieterjan.briers@gmail.com>
* Add VisibilityChanged virtual to Control
* Defer updating invisible OutputPanels on UIScale change
DebugConsole falls under this when not hidden, and it significantly improves perf of e.g. resizing the window when there's a lot of stuff in there.
* Avoid redundant UI Scale updates on window resize.
Window resizing can change the UI scale, due to the auto-scaling system. This system had multiple perf issues:
UI scale was set and propagated even if it didn't change (system disabled, not effective, etc). This was just wasted processing.
UI scale was updated for every window resize event. When the game is lagging (due to the aforementioned UI scale updates being expensive...) this means multiple window resize events in a single frame ALL cause a UI scale update, which is useless.
UI scale updates from resizing now avoid doing *nothing* and are deferred until later in the frame for natural batching.
* Reduce allocations/memory usage of various rich-text related things
Just allocate a buncha dictionaries what could possibly go wrong.
I kept to non-breaking-changes which means this couldn't as effective as it should be.
There's some truly repulsive stuff here. Ugh.
* Cap debug console content size.
It's a CVar.
OutputPanel has been switched to use a new RingBufferList datastructure to make removal of the oldest entry efficient.
---------
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
* UIControllerManager
Implemented UI Controller Manager
* added fetch function
* added note
* Hiding some internal stuff
* Implemented event on gamestate switch for ui
* Fix serialization field assigner emit
* fixing issues with ILEmitter stuff
* AHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
Blame Smug
* fixing nullref
* Add checking for no backing field / property for ui system dependencies
* fixes Gamestate detection
* Implemented event on UIControllers on system load
* Updated systemload/unload listeners
* Had this backwards lol
* Fix nulling systems before calling OnSystemUnloaded, broke InventoryUIController.Hands.cs
* Created UI Window management system
- A manager that allows for easy creation and access of popup or gamestate windows
* Changing to use basewindow instead of default window
* Implemented UI Theming that isn't ass
* Updated default theme loading and validation
* Added path validation for themes
* Implemented UI Themes
* Implemented UI Theme prototypes
* Implementing theming for texture buttons and Texturerects
* fixing server error
* Remove IUILink
* Implemented default theme overriding and theme colors
* Fixing sandbox lul
* Added error for not finding UITheme
* fixing setting default theme in content
* Move entity and tile spawn window logic to controllers
* Add 2 TODOs
* Merge fixes
* Add IOnStateChanged for UI controllers
* Fix inventory window being slow to open
Caches resources when the UI theme is changed
* Remove caching on theme change
The real fix was fixing the path for resources
* Remove test method
* Fix crash when controllers implement non generic interfaces
* Add controllers frame update
* Split UserInterfaceManager into partials
- Created UI screen
* Converted more UI managers into partials
* Setup UIScreen manager system
* Added some widget utility funcs
updated adding widgets
* Started removing HUDManager
* Moved UiController Manager to Partials
Finished moving all UIController code to UIManager
* Fixed screen loading
* Fixed Screen scaling
* Fixed Screen scaling
cleanup
* wat
* IwantToDie
* Fixed resolving ResourceCache instead of IResourceCache
* Split IOnStateChanged into IOnStateEntered and IOnStateExited
* Implemented helpers for adjusting UIAutoscale for screens
* Fixed autoscale, removed archiving from autoscale
* Implemented popups and adjusted some stuff
* Fixing some popup related shinanegans
* Fixing some draw order issues
* fixing dumb shit
* Fix indentation in UserInterfaceManager.Input.cs
* Moved screen setup to post init (run after content)
* Fix updating theme
* Merge fixes
* Fix resolving sprite system on control creation
* Fix min size of tile spawn window
* Add UIController.Initialize method
* https://tenor.com/view/minor-spelling-mistake-gif-21179057
* Add doc comment to UIController
* Split UIController.cs and UISystemDependency.cs into their own files
* Add more documentation to ui controllers
* Add AttributeUsage to UISystemDependencyAttribute
* Fix method naming
* Add documentation for assigners
* Return casted widgets where relevant
* Fix entity spawner scroll (#1)
* Add CloseOnClick and CloseOnEscape for popups
* Remove named windows and popups
* Cleanup controller code
* Add IOnStateChanged, IOnSystemChanged, IOnSystemLoaded, IOnSystemUnloaded
* Add more docs to state and system change interfaces
* Fixing Window issues
* Fixing some window fuckery
* Added OnOpen event to windows, updated sandbox window
Sandbox windows now persist values and positions
* Recurse through controls to register widgets (#2)
* Allow path to be folder
* Fix local player shutdown
* Fixing escape menu
* Fix backing field in DataDefinition.Emitters
* Ent+Tile spawn no crash
* Skip no-spawn in entity spawn menu
Co-authored-by: Jezithyr <jmaster9999@gmail.com>
Co-authored-by: DrSmugleaf <DrSmugleaf@users.noreply.github.com>
Co-authored-by: Jezithyr <Jezithyr@gmail.com>
Co-authored-by: wrexbe <81056464+wrexbe@users.noreply.github.com>
Co-authored-by: Flipp Syder <76629141+vulppine@users.noreply.github.com>
Co-authored-by: wrexbe <wrexbe@protonmail.com>
* Make autogenerated XAML fields public instead of protected
* Make field always public, remove stray commented out code
* Remove encapsulation for previously protected XAML UI fields
* Make access level settable
* Set access to public for DebugConsole LineEdit
* Address reviews and add documentation
* Remove documentation
* Address reviews
* Removed the Interfaces folder.
* All objects inside the GameObjects subfolders are now in the GameObjects namespace.
* Added a Resharper DotSettings file to mark the GameObjects subfolders as not providing namespaces.
* Simplified Robust.client.Graphics namespace.
* Automated remove redundant using statements.
* #272 avoid mouse overlapping tooltip when near edges,
change tooltip colors to match mockups
* #272 WIP customizable tooltips, old approach currently working still
* #272 WIP customizable tooltips, old approach currently working still
* #272 ensure tooltips go away when disposing control
* #272 implement row-oriented GridContainer
* #272 generalize GridContainer to support
rows or cols
* #272 improve readability in new GridContainer
logic
* #272 GridContainer can expand in opposite
direction
* #272 GridContainer can expand in opposite
direction
* #272 GridContainer can expand in opposite
direction, fix test
* #272 add GridContainer capability to
limit by size rather than count
* #272 add some clarifications about ui scale and vp / rp
* #272 don't spam showtooltip
event, calculate tooltip
positioning using combined
minimum size