* Move MapManager queries to SharedMapSystem
Moves all variants of FindGridsIntersecting/TryFindGridAt to SharedMapSystem
Hollows out the MapManager methods and converts them into relays to SharedMapSystem
* Move CreateGrid to SharedMapSystem
Moves the functionality for CreateGrid and its variants to SharedMapSystem
Hollows out the MapManager methods and converts them into relays for the SharedMapSystem methods
Obsoletes them too
Also moves over the GetAllMapGrids and GetAllGrids methods
* Move RaiseOnTileChanged to SharedMapSystem
Also moves the SuppressOnTileChanged flag member to SharedMapSystem
Hollows out and obsoletes the MapManager versions
* Move default value constants to SharedMapSystem
* Converts map pausing events into LocalizedEntityCommands
* Move MapManager related delegates/structs to SharedMapSystem
Moves the GridCreationOptions struct to the same namespace as SharedMapSystem and converts it into a record struct
Move the GridCallback delegates to the same namespace as SharedMapSystem
* Move CullDeletionHistory to SharedMapSystem
Well, that was less painful than I thought it would be
* Actually obsolete the NetworkedMapManager method
* Rename file
* Doc comments for new SharedMapSystem methods
* Doc comment
* Doc comments
* Fix access
* Purge all references to IMapManagerInternal
* Cull easy IMapManager references
* The rest
* Purge IMapManager
* Private internal FindGridsIntersecting method
* please die
* 41
* notes
---------
Co-authored-by: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com>
* Add batched drawing API
Internally Clyde batches drawing, however when drawing hundreds / thousands of the same quad the batch checks add up. This just omits those checks and directly draws instead. Same with skipping color modulation.
Long-term could probably figure out a way to SIMD the transforms better.
* RN
* [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>
* Fix VRAM leak in MapChunk edge rendering
* Remove CheckGlError because it is called in each of the deletion methods
* Revert "Remove CheckGlError because it is called in each of the deletion methods"
This reverts commit a48ffd71aa.
* Always clean up render handle state after overlay draws
* i just forgot to commit that part i guess
---------
Co-authored-by: mirrorcult <mirrorcult@pm.me>
The way SDL handles window coordinates passes through the native platform API's behavior instead of trying to make a consistent API, so the way sizes are handled on macOS is different.
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
* 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.
* 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
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.
Vector3, Vector4, Matrix4, and Quaternion are now gone. Use System.Numerics instead.
This commit is just replacing usages, cleaning up using declarations, and moving over the (couple) helpers that are actually important.
Can probably do this on Linux too, but I didn't test that.
This feature is, fundamentally, a workaround to avoid WGL MakeCurrent() constantly breaking. The extra threading complexity is not a good thing on other platforms, so get rid of it.