* [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>
* Added unit tests for the new anchor system design.
* Amend ME!
* SnapGridComponent now anchors the entity when added or removed.
TransformComponent.Anchored properly replicates it's state to clients.
* Converted all SnapGridPositionChangedEvent subscriptions to AnchorStateChangedEvent.
Removed SnapGridPositionChangedEvent.
Obsoleted SnapGridComponent.
* Allows setting Transform.Anchored in prototypes.
* Changing tile to empty under anchored ents unanchors them.
* More unit testing.
* Migrated transform gamestate tests to RobustServerSimulation.
* Fixed nasty off-by-one error when sending a full server state.
* Adds lifetime stages to Component.
* More test fixing.
* Review changes.
* Automatically unsubscribe event bus registrations in entity system shutdown.
* Fix incorrect unsubscription of local events, obsolete unsubscribe methods.
That's what we got tests for.
* = null instead of .Clear()
* Removed SnapGridOffset, there is only center now.
* SnapGridComponent methods are now static.
* Removed SnapGridComponent.OnPositionChanged.
* Refactored static functions off SnapGridComponent to MapGrid.
Refactored away usages of SnapGridComponent.Position.
* Added Transform.Anchored for checking if an entity is a tile entity.
More refactoring for static MapGrid functions.
* Static snapgrid methods on MapGrid are no longer static.
* Removed IMapGrid.SnapSize, it is now always equal to the IMapGrid.TileSize.
* Add setter to ITransformComponent.Anchored.
Removed direct references to SnapGridComponent from content.
* Grid functions now deal with EntityUids instead of SnapGridComponents.
Began renaming public API functions from SnapGrid to Anchor.
* Add some unit tests.
* SnapGridComponent now anchors itself in startup, instead of Initialize (sending directed events in init is an error).
* Added new ComponentEventBus, combined it with IEventBus.
* Removed all traces of IEntity from ComponentDependencies.
Removed IEntityManager dependency from ComponentManager.
* Added entity create/delete events to IEntityManager.
* ComponentEvents now use EntitySystemMessages instead of their custom ComponentEvent class.
* Component events are now just overloads of entity events.
* Removed obsolete EntitySystemMessage, now everything uses the base EntityEventArgs.
* Add a bool argument for if the message should be broadcast as well as directed.
Fix ordering and init issues of events in EntityManager.
* Changed names from Component/Entity events to Directed/Broadcast.
* Fix bugs and unit tests.
* Removed the Interfaces folder.
* All objects inside the GameObjects subfolders are now in the GameObjects namespace.
* Added a Resharper DotSettings file to mark the GameObjects subfolders as not providing namespaces.
* Simplified Robust.client.Graphics namespace.
* Automated remove redundant using statements.