* Revert "Hotfix: pass last state in SharedUserInterfaceSystem.EnsureClientBui (#6840)"
This reverts commit 08b3257ece.
* Revert "Bugfix: SharedUserInterfaceSystem stores and applies BUI states in order. (#6829)"
This reverts commit c766e79ef4.
* Revert "Defer UI operations until UI system runs frame update (#6789)"
This reverts commit f44d7e00c3.
* store intermediate bui states
* exception printout, remove redundant check
* Set state on Open
* trygetvalue defaults, you dingus
* fix string interpolation bug
* queue in SetUiState
* queue in SetUiState regardless
* TryGetValue->GetValueOrDefault
* [Dependency] source generator
No more reflection, no more codegen at runtime
Also various changes to Roslyn helpers to make this easier to write.
Requires all types with dependencies to be partial and not have readonly dependency fields. An analyzer enforces this at warning level, the previous injection strategies have remained in the code *for now* as a fallback.
No fallback is available for [field: Dependency] properties, due to a Roslyn bug.
Code Fixes exist. We love Roslyn
* Apply dependencies generator changes to all code
* Release notes
* Preprocessor got hands
* Handle nullable dependencies
These are bad but gotta deal with it.
* Apply suggestions from code review
Co-authored-by: Moony <moony@hellomouse.net>
* Fine, let's not use collection expressions
---------
Co-authored-by: Moony <moony@hellomouse.net>
* Clean up all missing EntitySystem proxy method uses
* Restore comment
* Fix bad change that caused closure allocation
* tuple
* Revert "tuple"
This reverts commit 14581a40aa.
* Revert "Fix bad change that caused closure allocation"
This reverts commit 215b2559ed.
* Revert "Restore comment"
This reverts commit 4a47a36557.
* Revert "Clean up all missing EntitySystem proxy method uses"
This reverts commit 3b1fe4ce7f.
* Redo with improved code fixer.
Let's see how it fares this time
* BUI helpers
- Some virtual methods for BUI to make it slightly easier. Haven't though of a good way to do it via sourcegen yet.
- TryGetUiState which is occasionally useful.
* Also this one
* Duplicate dependency field analyzer
Detects cases of duplicate [Dependency] fields in a type. We apparently have 27 of these across RT + SS14.
* Fix duplicate dependencies in Robust
We just do what content does and defer it until update. Saves performance + we don't have some BUIs that do special logic on open re-running it constantly (e.g. open on mouse position).
* Add window helper for BUIs
Automatically does OnClose and just makes content slightly nicer.
* more
* Add prototype reload helper
* Add Box2i Center
* weh
I'm not entirely sure what happens, I couldn't repro it locally even when I tried to force it to use threadpool threads. The only info I have is it happens and no other info has been provided so.
These still take almost half-ms in server tick time on live as it has to do a raycast for everyone that has storage or their PDA open or whatever. Haven't benchmarked with a lot of clients but easiest way to tell is just check grafanaTM and I'm not sure how to check this locally.
* Add TryGetOpenBUI
Avoids having to get the component and openinterfaces separately.
* Couple more helpers
* entityquery
* reviews
* Shared BUIs
* zawehdo
* More boilerplate
* Bunch more work
* Building
* Stuff
* More state handling
* API cleanup
* Slight tweak
* Tweaks
* gabriel
* Disposies
* Active UI support
* Lots of fixes
- Fix states not applying properly, fix predicted messages, remove redundant message type, add RaiseUiMessage for an easy way to do it from shared, add the old BUI state change events back.
* Fix test failures
* weh
* Remove unncessary closes.
* release note