* 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>
* 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.
* 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
* Allow component trees to be disabled
* forgot
* I'm pretty sure this wasn't working as intended
* also outdated
* reduce branches in QueueTreeUpdate
* remove update hashset
* try fix
* Use Entity<T> and add ray overloads
* Move InRangeUnoccluded to engine
* reduce code duplication
* move _initialized check
* release notes
* modify light attenuation function
* support for changing attenuation curve type + lots of docs
* this is what i defaulted to typing in a prototype, so i guess it should just be this instead
* Allow a continuous range of values between inverse and inversequadratic rather than two set curves
* calc is slang for calculator
* fix
* oops committed it at 1 while testing i think, values are balanced for 0
* Autocomplete more map commands
Also added some extra helper features.
* Finish
* Fix bug, avoid IocResolves
* grid is grid
* file filename clash
* turn hint into option
* a
---------
Co-authored-by: ElectroJr <leonsfriedrich@gmail.com>
* Created Debug Version Panel and Version Info Printer similar to DebugSystemPanel
* dependency injection
* remove VersionInformationPrinter
* Fix sorting
Copy TableContainer from content into engine. It's internal though.
Add various stuff to Clyde to allow the UI to access it. Includes a new IClydeInternal.RenderNow() which seems to not completely explode in my face.
Content nowadays has a bunch of Overlays that all cache IRenderTextures for various funny operations. These are all broken in the face of multiple viewports, as they need to be cached *per viewport*.
This commit adds an ID field & an event to allow content to properly handle these resources.
Also adds some debug commands
I'm worried about the IDE performance overhead of the 20k lines of LibraryImport it generates into Robust.Client.
Also, this allows me to trim the binding, which saves a tiny amount of space from publishes. Always nice to have.
Applies when vsync is not enabled.
Had to shuffle stuff around to GameController since it involves the game loop.
The implementation isn't great and undershoots the target FPS value (because the OS overshoots the desired sleep value). I tried using SDL_DelayPrecise too but this causes significantly increased CPU usage probably because it spinwaits and all that nonsense, so I decided against it.
I don't know why I bothered to do this. I just got the idea in my head. Kinda feels like a waste of time, but there's no point not committing it at this point.
We were relying on a global PopupRoot & ModalRoot, which only existed in the main window. This means things like OptionButton would pop out on the *main* window when put on secondary windows.
These two roots are now on the UIRoot instead. WindowRoot needs to have a function called to create these if you're using it manually, OSWindow supports it automatically.
Lays items out sequentially, wrapping them onto different rows/columns if they stop fitting.
Has multiple options and should be very useful, in both content and engine.
Uses the new Axis system to implement layout on 4 axis, re-uses BoxContainer's code so BoxContainer also got a mild refactor.