update a bunch of packages and use JetBrains.Annotations as private asset as needed
mark some hot math methods agg inline to benefit from loop opts
use FMA for interp
use canny min/max/clamp
make Quaternion NormalizeAngle fixed time and faster
clean up YamlDotNet references
Made it so keybinds don't block other keybinds from firing.
Why is this necessary? This allows us to have "same keybind, different functionality" binds sanely, like shift click being both TextCursorSelect and (in content) ExamineEntity. Before this change the latter was temporarily broken in UI controls because of TextCursorSelect taking priority and instantly treating the event as handled because it's CanFocus.
The offshoot of this is that all the "args.CanFocus == mouse left" UI code had to be fixed, since multiple things were now firing for that and breaking everything. For example TextCursorSelect actually BROKE because now ExamineEntity was firing inside UI again and that was seen as a left click.
EngineKeyFunctions.UIClick has been introduced as "mouse left for the UI" for this purpose.
* Refactor Controls to default to MouseFilterMode.Ignore
* Clean up MouseFilterMode.Ignore from Controls
* Fix BoxContainer eating UI clicks
* Fix ScrollContainer using the wrong variable
* Refactor ContainerButtons to use a StyleClass for formatting instead of typeof
* Refactor BaseButton to work when child has MouseFilter.Pass
* Implement HistoryLineEdit
* Refactor DebugConsole to use HistoryLineEdit
* Clean up LineEdit
Add args.Handle() for each BoundKeyFunction
Clean up if statements
* Rearrange LineEdit variables
* Reimplement DebugConsole saving and loading
* Add style to TextureRect
* Implement ContainerButton
ContainerButton is a button that resizes to fit the Controls it contains.
* Refactor OptionButton to use ContainerButton
This allows OptionButton to have an inverted triangle icon on the right to make it more obvious that the button is an OptionButton.
* Fix Popup not updating size when opened
* Fix DrawMode not getting updated when _pressed is changed
* Refactor Button to inherit from ContainerButton
* Refactor CheckBox to inherit from ContainerButton
* Fix Control.StyleClasses.GetEnumerator
It was calling GetEnumerator in an infinite loop instead of getting _styleClasses.GetEnumerator like it was supposed to do.
* Update Button references
* Fix Styling
* Add delete key behavior to LineEdit
Pressing delete will now delete the character in front of your cursor like usual.
* Update Robust.Client/UserInterface/Controls/LineEdit.cs
Co-Authored-By: Pieter-Jan Briers <pieterjan.briers@gmail.com>
Co-authored-by: Pieter-Jan Briers <pieterjan.briers@gmail.com>
* Fold animation delays into a single set for all directions.
* Update systems to use new RSI animations API.
* Fetching layer directions now done in sprite render.
* Allow overriding direction in SpriteView.
* Use GLFW instead of OpenTK windows
* Seems to work pretty well now.
* Fix stackalloc issue on Framework.
* Add GLFW project to sln.
* Fix package downgrade.
* Fix SLN more.
* Please work.
* Fix C# version error.
* UI layout v2.
All controls now act like containers.
Moved anchor/margin layout model to LayoutContainer
Implement basic WPF-like attached properties for the above LayoutContainer.
* Fix VV.
Give BoxContainer a preset capacity to reduce allocations in layout.
Removed Control.GetChild(string) and similar. This was no longer used (and was a pretty bad idea in general), and the implementation had a lot of wasted book keeping to do.
Use UpdateLayout() instead of DoUpdateLayout() in Control minsize changed to avoid doing redundant layout, and by extension style & minsize, updates.
Used RemoveAllChildren instead of DisposeAllChildren in EntitySpawnWindow because it's faster (way less stuff to clear, just let the GC handle it).
Optimized ResourcePath with a better GetHashCode(), better Equals, replacement for List<T>.ToArray()
Fixed enumerator allocations in stylesheet SelectorElement matching to speed up style updates.
ResourceCache now caches fallbacks to avoid constructing Resource instance when fetching fallback explicitly.
ResourceCache now has nested dictionaries for Type -> ResourcePath -> BaseResource storage of resources.
Use calculated property instead of auto property for TextureResource.Fallback