2652 Commits
Author SHA1 Message Date
PJB3005 af7f4ec8e7 Make RichTextLabel.Text allow all tags again
Fixes #6360

I debated doing this with a special case in Robust.Xaml instead, but decided against it. This is mostly used for static contents anyways.
2025-12-31 23:15:06 +01:00
PJB3005 d43c3f2caf Merge remote-tracking branch 'origin/master' into 25-11-01-cef-update 2025-12-27 01:50:23 +01:00
d78e3ce157 Extend AddMessage capabilites in RobustToolbox. (#6350)
push or w/e

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-12-24 15:42:40 +01:00
PJB3005 ad056e0b45 Add [NotContentImplementable] to client interfaces 2025-12-23 18:34:27 +01:00
PJB3005 6f2c45aab7 Remove unused IRand interface 2025-12-23 18:33:44 +01:00
PJB3005 9a3aad4630 Delete unused IRenderableComponent 2025-12-23 18:25:36 +01:00
B_KirillandGitHub 68609a94d8 Fix inverted clipboard error check in SDL3 (#6348) 2025-12-22 17:35:09 +01:00
PJB3005 9b02a4e718 Add game.time_scale cvar
Primary use case (other than silly) is to be a better way to speed up/slow down replays.
2025-12-20 16:32:06 +01:00
FruitsaladandGitHub 43337a3743 Fix layouting bug in SS14 ghost role menu (space-wizards/space-station-14#41434) (#6323) 2025-12-19 23:49:52 +01:00
PJB3005 0498036f1c Remove kdialog/nfd file dialog implementation
Purely rely on the SDL3 one now.
2025-12-17 20:03:15 +01:00
dd86bf980d Add MeansDataDefinition support to DataDefinitionAnalyzer (#5699)
* Add MeansDataDefinition support to DataDefinitionAnalyzer

* Poke tests

* Fix violations in engine

* Fix more lacking partials

* Fix tests

---------

Co-authored-by: PJB3005 <pieterjan.briers+git@gmail.com>
2025-12-17 19:47:30 +01:00
PJB3005 7f2ec17651 Okay, the Robust API thing didn't pan out. New plan.
It apparently broke clean builds, as the dependencies aren't in the project asset list or something anymore. I tried to fix this, but it seems impossible to do without relying on .NET SDK internals, as there's no point in the NuGet graph walk process that seems cleanly extensible.

Instead let's just do the much dumber thing: a bunch of .props files for content to import. Hooray!

This also means that I have to go through and *explicitly* disable transitive dependencies everywhere in RT. This thankfully isn't too hard.
2025-12-16 22:56:31 +01:00
PJB3005 788e9386fd Split up test project
Robust.UnitTesting was both ALL tests for RT, and also API surface for content tests.

Tests are now split into separate projects as appropriate, and the API side has also been split off.
2025-12-16 01:36:53 +01:00
PJB3005 095c5f58d9 Obliterate GLFW with an orbital strike 2025-12-15 22:45:39 +01:00
PJB3005 95d5f7eec1 Add flag to block command bindings while UI focused
This means you can bind stuff to your numpad without it firing while you're *actually* typing stuff.
2025-12-14 21:48:20 +01:00
ad31ec64d3 Add some default Sanitization to RichTextEntry (#6333)
* PR time

* am dum dont make PRs at 3am

* file scoped. I pushed this to the wrong branch initially because I'm stupid

* Revert "file scoped. I pushed this to the wrong branch initially because I'm stupid"

This reverts commit 9a911caa77.

* Review

* Update API used by content to actually use the default values

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-12-10 19:09:51 +01:00
PJB3005 1a0dab4526 OkLAB test in uitest
I can just add whatever random shit I want in there, nobody will stop me
2025-12-05 17:34:20 +01:00
PJB3005 dff5b5fe95 Prototype AspectRatioPanel UI control
Wrote this as a quicky, needed it for something. Don't feel like stabilizing it yet so it's internal.
2025-12-05 17:34:20 +01:00
JewelandGitHub 2c3cbaf3b9 Fix word wrapping on non-runed inline metrics like links (#6267)
Fix word wrapping on non-runed metrics like links (previously they would never wrap if they extended past max width)
2025-12-04 20:07:15 +01:00
wixoaandGitHub f2d74df4d7 Fix WebView loading (#6321) 2025-12-01 15:02:43 +01:00
NemanjaandGitHub 465a1fb5bd Allow content to override ProcessStream and GetOcclusion in AudioSystem (#6268)
* Add optional override methods for ProcessStream and GetOcclusion

* Mark override events as static

* Change audio actions to non-static
2025-11-30 17:32:26 +01:00
eoineoineoinandGitHub 83a1098476 Fix bug where ButtonGroup would erroneously unpress buttons (#6271) 2025-11-30 16:57:12 +01:00
1bcf04ef76 Revert "Double-buffer contact events (#6295)" (#6314)
This reverts commit cd59027089.

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-11-30 16:24:55 +01:00
SzuntiandGitHub 899eef397c Make Caps Lock bindable (#6308) 2025-11-24 11:10:24 +01:00
CentroniasandGitHub 6aa4fb9594 Make SpriteSystem.LayerExists say layer index 0 is valid (#6305) 2025-11-21 22:04:20 +01:00
PJB3005 b8ff394f73 Fix spamming startup error messages for projects without splash logo 2025-11-16 15:01:46 +01:00
metalgearslothandGitHub 663b83821a Revert "Obsolete static IoC methods (#6232)" (#6296)
This reverts commit 14439784dd.
2025-11-15 11:26:52 +11:00
Leon FriedrichandGitHub 14439784dd Obsolete static IoC methods (#6232) 2025-11-13 21:35:14 +11:00
Leon FriedrichandGitHub 80cad0cd8f Add public control sawmill to UI Manager (#6231)
* Add public control sawmill

* Remove static IoCManager in MarkupTagManager

* very important comment

* release notes

* fix merge

* fix
2025-11-13 21:33:50 +11:00
metalgearslothandGitHub cd59027089 Double-buffer contact events (#6295)
* Add

* a

* Fix test

* note

* Fix reflection
2025-11-13 21:28:13 +11:00
3f19d25018 Box Simd (#6193)
* Box Simd

* Add 256 bit version of GetAABB

* Add AABB bechmarks

* No real diff between 128 & 256, so removing 256

| Method     | Mean      | Error     | StdDev    | Ratio |
|----------- |----------:|----------:|----------:|------:|
| GetAABB    | 5.8107 ns | 0.0154 ns | 0.0137 ns |  1.00 |
| GetAABB128 | 0.4927 ns | 0.0003 ns | 0.0002 ns |  0.08 |
| GetAABB256 | 0.4332 ns | 0.0006 ns | 0.0006 ns |  0.07 |

* Add Box2Rotated.Transform Benchmark

* Results

20% faster and much smaller code. Also I don't think it inlined RotateVec

* Add Matrix3x2Helper.TransformBox() benchmark

new:

| Method    | Mean     | Error     | StdDev    | Code Size |
|---------- |---------:|----------:|----------:|----------:|
| Transform | 2.463 ns | 0.0766 ns | 0.0679 ns |     216 B |

old:
| Method    | Mean     | Error     | StdDev    | Median   | Code Size |
|---------- |---------:|----------:|----------:|---------:|----------:|
| Transform | 9.469 ns | 0.2140 ns | 0.5408 ns | 9.206 ns |     621 B |

* Fix polygon constructor

* SlimPolygonBenchmark

* use new SimdHelper for other methods

* Fix bugs

* Use new methods

* Simd SlimPolygon.ComputeAABB

* Move simd transform to physics

* Cleanup

* Remove uneccesary Unsafe.SkipInit

* These tests all work on master

* Add Transform.MulSimd test

* Add SlimPolygon constructor tests

* Add ComputeAABB test

---------

Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2025-11-10 18:30:08 +11:00
metalgearslothandGitHub fe19ff9bd5 Fix physics events not being re-run in prediction (#6261)
* Fix physics events not being re-run in prediction

Someone should probably network contacts someday.

* Documentation
2025-11-09 19:37:12 +11:00
PJB3005 602d7833a1 Initial macOS WebView support
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
2025-11-09 00:06:16 +01:00
metalgearslothandGitHub 4755cb5747 Better broadphase performance (#6272)
* Better broadphase parallelism

Moves more stuff into the parallel loop and avoids allocating the list per fixtureproxy.

* Fixes

* Better docs

* doc
2025-11-08 02:11:31 +11:00
PJB3005 7bc0ffb711 Make XAML hot reload JIT on UI load
This means we don't have to JIT a bunch of UIs that you might not open, reducing memory usage and startup overhead.

One (1) UI is always JITed in another thread before prototype UIs are loaded, so as to warm up the JIT machinery. Said type is DropDownDebugConsole which always gets used anyways so there's no harm in it.

In total, these changes save more than a second of startup time for me.
2025-10-30 01:41:17 +01:00
e49515956a Add a basic loading screen! (#6003)
* Added basic loading screen

* Make it look better!

* I forgor xD

* Fix test fails

* Add comment

* Removed unused import

* Only write to file if the number of sections changed

* Servers can now have their own settings

* Minor optionzation and rare colors

* Remove some of the cvars

* debug only loading messages

* Added a few more steps

* Only one section at a time

* nullable section name

* Lock out functions if finished

* Get rid of saving the ccvar

* Cleanup

* Forgot!

* A few tweaks

* Disable vsync

* remove colors

* remove outdated vsync functions

* Silly me xD

* What I get for trying to be clever... ;(

* Better seconds display

* Simplify drawing logic + it looks better

* Type does not need to be partial

* Make interface to expose to content

* Use correct define to gate showing debug info

Should be TOOLS instead of DEBUG

* Use appropriate exception type in BeginLoadingSection

* Fix exception when closing window during loading screen

Would try to stop the main loop before it exists.

* Rename CVars, put debug info behind CVar instead of conditional compilation.

* Add to RELEASE-NOTES.md

* Add UI scaling support

* Make ILoadingScreenManager fully internal

Didn't realize content can't touch it as it'd break the total amount of sections

* Don't re-enable vsync manually, GameController does it at the end of init

* Add command to show top load time usage.

* Improve verbosity of debug time tracking

More steps and some steps named better

---------

Co-authored-by: PJB3005 <pieterjan.briers+git@gmail.com>
2025-10-30 00:38:59 +01:00
Pieter-Jan BriersandGitHub f3a3f564e1 System font API (#5393)
* System font API

This is a new API that allows operating system fonts to be loaded by the engine and used by content.

Fonts are provided in a flat list exposing all the relevant metadata. They are loaded from disk with a Load call.

Initial implementation is only for Windows DirectWrite.

* Load system fonts as memory mapped files if possible.

This allows sharing the font file memory with other processes which is always good.

* Use ArrayPool to reduce char array allocations

* Disable verbose logging

* Implement system font support on Linux via Fontconfig

* Implement macOS support

* Add "FREEDESKTOP" define constant

This is basically LINUX || FREEBSD. Though FreeBSD currently gets detected as LINUX too. Oh well.

* Compile out Fontconfig and CoreText system font backends when not on those platforms

* Don't add Fontconfig package dep on Mac/Windows

* Allow disabling system font support via CVar

Cuz why not.
2025-10-28 22:07:55 +01:00
bb4c4ed302 Fix PredictedQueueDeleteEntity mispredicts (#6260)
* Fix PredictedQueueDeleteEntity

* typo

---------

Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2025-10-27 23:04:12 +11:00
PJB3005 3a337e4842 SECURE CVars are no longer a thing
Good riddance
2025-10-26 23:13:42 +01:00
PJB3005 9a0e3b6b02 dmetamem now sorts results, no longer outputs to log to avoid interleaving 2025-10-26 23:09:37 +01:00
PJB3005 ab775af7cd Added FontTagHijackHolder to replace fonts resolved by FontTag.
Existing font prototype system is extremely half-baked and unusable. This allows bypassing it entirely for upcoming content changes.
2025-10-26 20:40:39 +01:00
PJB3005 8ac5fc58d2 Invalidate OutputPanel on style change
Fixes an incorrect height staying cached on font change.
2025-10-26 20:37:42 +01:00
PJB3005 37c7aa544e Properly use arrange in rich text control layout
This code is still broken, but this at least fixes the fact they don't get arranged with a proper size.

Supersedes #6269
2025-10-26 17:42:37 +01:00
PJB3005 7542b1ca16 Don't do work if assigning stylesheet a control already has 2025-10-26 17:40:19 +01:00
PJB3005 8235bd8478 OptionButton can now be filtered 2025-10-26 17:38:41 +01:00
PJB3005 1657a49c1c Fix modifying Label.FontOverride not causing a layout update. 2025-10-25 17:56:58 +02:00
MyraandGitHub 669b515ce6 Ensure that sdl3 is the fallback if unknown windowingAPI is specified (#6266)
* Ensure what sdl3 is a fallback if unknown windowingAPI is specified

Webedit ops

* I am blind
2025-10-23 23:43:57 +02:00
Leon FriedrichandGitHub 665294bee8 Rethrow more exceptions when EXCEPTION_TOLERANCE is false (#6238)
* Rethrow more exceptions when EXCEPTION_TOLERANCE is false

* A

* update test

* Revert "update test"

This reverts commit 37f4da67fc.

* actually we probably want to know if Deleting an exception throwing entity throws another exception
2025-10-20 20:51:24 +02:00
PJB3005 4b04081749 Fix Menu and NumpadDecimal key codes on SDL3
Fixes #6255
2025-10-16 14:39:08 +02:00
PJB3005 6fb9ff7554 Improve viewport leak logging
Shows name

Also fixes erroneous leak logging oops
2025-10-15 01:23:44 +02:00