mirror of
https://github.com/space-wizards/RobustToolbox.git
synced 2026-02-15 03:30:53 +01:00
12 KiB
12 KiB
Release notes for RobustToolbox.
Master
Breaking changes
- Thanks to new IME support with SDL2,
IClyde.TextInputStart()andIClyde.TextInputStop()must now be appropriately called to start/stop receiving text input when focusing/unfocusing a UI control. This restriction is applied even on the (default) GLFW backend, to enforce consistent usage of these APIs. [GUI]TextEventArgshave been renamed to[GUI]TextEnteredEventArgs, turned into records, and made to carry astringrather than a single textRune.- IoC and
DependencyCollectionRegistermethods now have aTInterface : classconstraint.
New features
- Fixes for compiling & running on .NET 7. You'll still have to edit a bunch of project files to enable this though.
FormattedMessage.EnumerateRunes()OSWindow.Shown()virtual function for child classes to hook into.IUserInterfaceManager.DeferAction(...)for running UI logic "not right now because that would cause an enumeration exception".- New
TextEditcontrol for multi-line editable text, complete with word-wrapping! Ropedata structure for representing large editable text, used by the newTextEdit.- Robust now has IME support matching SDL2's API. This only works on the SDL2 backend (which is not currently enabled by default) but the API is there:
IClyde.TextInputStart(),IClyde.TextInputStop(),IClyde.TextInputSetRect()APIs to control text input behavior.TextEditingevents for reporting in-progress IME compositions.LineEditandTextEdithave functional IME support when the game is running on SDL2. If you provide a font file with the relevant glyphs, CJK text input should now be usable.
Bugfixes
- Fixes erroneous literal "\n" inside the Clyde debug panel.
- Fixed Lidgren connection status changes potentially getting mislogged.
Other
- Properly re-use
HttpClientinNetManagermeaning we properly pool connections to the auth server, improving performance. - Hub advertisements have extended keep-alive pool timeout, so the connection can be kept active between advertisements.
- All HTTP requests from the engine now have appropriate
User-Agentheader. bindcommand has been made somewhat more clear thanks to a bit of help text and some basic completions.BoundKeyEventArgsand derivatives now have a[DebuggerDisplay].- Text cursors now have a fancy blinking animation.
SDL_HINT_MOUSE_FOCUS_CLICKTHROUGHis set on the SDL2 windowing backend, so clicking on the game window to focus it will pass clicks through into the game itself, matching GLFW's behavior.- Windows clipboard history paste now works.
- Improved multi-window UI keyboard focusing system: a single focused control is now tracked per UI root (OS window), and is saved/restored when switching between focused window. This means that you (ideally) only ever have a UI control focused on the current OS window.
Internal
uitest2is a new command that's likeuitestbut opens an OS window instead. It can also be passed an argument to open a specific tab immediately.- Word-wrapping logic has been split off from
RichTextEntry, into a new helper structWordWrap. - Some internal logic in
LineEdithas been shared withTextEditby moving it to a newTextEditSharedfile. - SDL2 backend now uses
[UnmanagedCallersOnly]instead ofGetFunctionPointerForDelegate-style P/Invoke marshalling. - Entity prototype reloading logic has been moved out of
PrototypeManagerand into a newPrototypeReloadSystem.
0.62.1.0
Bugfixes
- Fixed a PVS issue causing entities to be sent to clients without first sending their parents.
- Improved client-side state handling exception tolerance.
Other
- Removed null-space map entities.
Internal
- Added some more anchoring tests.
0.62.0.1
Bugfixes
- Fixed sprites not animating when directly toggling layer visibility,
- Fixed anchored entities not being added to the anchored lookups.
0.62.0.0
Breaking changes
- Removed some obsolete map event handlers.
New features
- Added entity query struct enumerators
Bugfixes
- Improved error tolerance during client state application.
- Added better error logs when a client deletes a predicted entity.
- Fixes command permissions not getting sent to clients.
- Fixes a broad-phase bug were entities were not properly updating their positions.
Other
- Added the LocalizedCommands class, which automatically infer help and description loc strings from the commands name.
0.61.0.0
Breaking changes
- IMap and IMapGrid have been removed. Just use the associated components directly.
Other
- AudioSystem has been refactored.
0.60.0.0
Breaking changes
- ISerializationHooks.BeforeSerialization() has been removed. Use custom type serializers instead.
New features
- Added function to UserInterfaceSystem that returns list of BUIs that a client has open.
Bugfixes
- Fixed various container related broadphase bugs which could result in entities getting stuck with a null-broadphase.
- Fixed client fixture state handling bug that caused the client to incorrectly disable collision.
Other
- Misc PVS optimisations
Internal
- Removed redundant grid-init physics logic
- Modified garbage collection for entity spawning profiling.
0.59.0.0
Breaking changes
- Various transform related methods have been removed from MapGrids
- TransformSystem.SetCoordinates() arguments have changed and now allow an entity to be sent to nullspace
Bugfixes
- Fixed an entity lookup bug that sometimes failed to return entities in StaticSundriesTrees
Other
- The EntitySystem.Resolve<> methods have been change to protected
0.58.1.1
Bugfixes
- Fixed some container shutdown errors
- Fixed LookupFlags.Static not acting as a full replacement for LookupFlags.Anchored
0.58.1.0
Other
- Physics collision changed and body type changed events no longer get raised before initialisation
0.58.0.0
Breaking changes
- Some TransformComponent functions have been moved to the system.
- Container insert, remove, and shutdown function arguments and functionality has changed.
- Physics entities without fixtures now automatically disable collision.
New features
- Added command to profile entity spawning
Bugfixes
- EntityLookup/BroadphaseComponent tracking has been overhauled, which should hopefully fix various broadphase bugs.
Other
- Component.Owner is now marked as obsolete.
0.57.0.4
Bugfixes
- Made entity deletion more resilient against exceptions. Should fix several bugs.
0.57.0.2 and 0.57.0.3
Bugfixes
- Fixed more entity-lookup bugs.
0.57.0.1
Bugfixes
- Fixed entity lookup bug that was causing crashes.
0.57.0.0
Breaking changes
- EntityLookupComponent has been merged into BroadphaseComponent. The data that was previously stored in this tree is now stored across the 3 trees on BroadphaseComponent.
New features
- EntityLookup has had its flags updated to reflect the merge of EntityLookupComponent and BroadphaseComponent, with the new flags reflecting each tree: Dynamic, Static, and Sundries. Dynamic and Static store physics bodies that are collidable and Sundries stores everything else (apart from grids).
Internal
- EntityLookup and Broadphase have had their data de-duplicated, dropping the AABBs stored on the server by half. This also means MoveEvent updates will be much faster.
- PVS mover updates has had their performance improved slightly.
- Physics LinkedList nodes for contacts will no longer be re-made for every contact and will just be cleared when re-used.
- Sprite / Light dynamictree allocations on the client have been dropped by using static lambdas.
- The physics contact buffer for each FixtureProxy is now pooled.
0.56.1.1
Bugfixes
- Fix PVS sometimes not sending an entity's parents.
- Fix velocity preservation on parenting changes.
0.56.1.0
New features
- Update pt-BR locale with more localizations
- Separated PVS entity budget into an entity creation budget and a pvs-entry budget.
Bugfixes
- Fix VV type handler removal.
- System errors during component removal should no longer result in undeletable entities.
Other
- The ordering of component removals and shutdowns during entity deltion has changed (see #3355).
- Improved Box2Serializer
- Removed uses IEnumerables from EntityLookupSystem.
- Optimized client entity spawning by 15%.
- Modified how the rendering tree handles entity movement.
- Improved grid enumeration allocs.
- Fixed a bunch of build warnings (see #3329 and #3289 for details)
0.56.0.2
Bugfixes
- Rename _lib.ftl to _engine_lib.ftl to avoid overwriting
0.56.0.1
Bugfixes
- Fix instantiation of data records containing value types
0.56.0.0
Breaking changes
CastShadowsmoved toSharedPointLightComponentfrom clientside, now networked
New features
- New type handler helpers added to V^3
- Added pt-BR locale
Bugfixes
- Fixed audio fallback coords
Other
- Improved PVS performance by using
foroverforEach - Improved Vec2 inverse allocations
0.55.5.0
New features
- Added a method to pass in physics transforms for getting nearest point.
Bugfixes
- Prevent singular sprite matrices.
- Fix obsolete warnings in tests.
Other
- Significantly reduce physics contact allocations.
0.55.4.1
Breaking changes
- Removed
SI,SIoC,I,IoC,SEandCEVV command prefixes.SI,SIoC,IandIoCare replaced by VV paths under/ioc/and/c/ioc/.SEandCEare replaced by VV paths under/system/and/c/system.
New features
- Added CVars to control Lidgren's MTU parameters:
net.mtunet.mtu_expandnet.mtu_expand_frequencynet.mtu_expand_fail_attempts
- Added a whole load of features to ViewVariables.
- Added VV Paths, which allow you to refer to an object by a path, e.g.
/entity/1234/Transform/WorldPosition - Added VV Domains, which allow you to add "handlers" for the top-most VV Path segment, e.g.
/entityis a domain and so is/player... - Added VV Type Handlers, which allow you to add "custom paths" under specific types, even dynamically!
- Added VV Path networking, which allows you to read/write/invoke paths remotely, both from server to client and from client to server.
- Added
vvread,vvwriteandvvinvokecommands, which allow you to read, write and invoke VV paths. - Added autocompletion to all VV commands.
- Please note that the VV GUI still remains the same. It will be updated to use these new features in the future.
- Added VV Paths, which allow you to refer to an object by a path, e.g.
Other
- Changed Lidgren to be compiled against
net6.0. This unlocksHalfread/write methods. - Lidgren has been updated to 0.2.2. Not all the changes since 0.1.0 are new here, since this is the first version where we're properly tracking this in release notes.
- Robust.Client now uses our own NFluidsynth nuget package.
Internal
- Renamed Lidgren's assembly to
SpaceWizards.Lidgren.Network. - Rogue
obj/folders inside Lidgren no longer break the build. - Renamed NFluidsynth's assembly to
SpaceWizards.NFluidsynth