Removed use of ConcurrentDictionary. It was slow.
Other minor optimizations around the codebase.
Added option for parallel game state generation. Seems slower than doing it single-threaded so off by default for now.
* Fold animation delays into a single set for all directions.
* Update systems to use new RSI animations API.
* Fetching layer directions now done in sprite render.
* Allow overriding direction in SpriteView.
* WiP property animations system
* Use better lerp for Angle property animations.
* Fix handling of offset in sprite component.
* Allow animating some sprite layer properties.
* Allow animating some Transform properties.
Obviously not advisable for server entities, but great for client side entities!
* Improve animation property interpolation handling.
Added a "previous" mode.
Made values that cannot be sanely interpolated fall back to this mode.
* Improve some animation docs.
* Adds a new IPhysicsShape object where you can define what collisions shape a PhysBody has.
AABB is now accessed through the PhysicsShape, so the BoundingBoxComponent is not required.
* Default PhysShape now copies the AABB of the BoundingBoxComponent.
* Fixed issue with serialization of PhysShapeAabbComp.
* Spatial queries now use ICollidableComponent instead of BoundingBoxComponent.
showbb now draws entities using the obsolete BoundingBoxComponent in Aqua.
* Renamed PhysShapeAabbComp to PhysShapeAabb.
Removed BoundingBoxComponent.
* Default CollidableComponent does not collide with anything now.
* Renamed ICollidable to IPhysBody.
Moved ICollidable to the Robust.Shared/Physics namespace.
* PhysShapes are now a collection of primitive shapes that contribute to the whole PhysBody.
ObjectSerializer.DataField can now deal with abstract types using YAML tags.
* Added LocalBounds property to ClickableComponent.
Added state to ClickableComponent.
* Added a Rectangle physics shape.
* ClickableComponent now actually checks that a click is inside its bounds.
* Reverted the addition of a try/catch around map loading. Any errors can propagate to the code trying to load the map again.
* Attempted Clyde cleanup, didn't get far.
* Add negation operator to Vector2i.
* Add RenderOrder to ISpriteComponent.
* Post process shaders.
Adds "post process" shaders to sprite component.
These are executed on the WHOLE sprite component (every layer)
in one draw.
This is necessary to implement functional outlines.
* Project file refactor
Move all the .csproj files to the new .NET Core style.
This doesn't make any difference for compiling for Framework,
but it does reduce a ton of useless boilerplate.
As an extension of this, killed a bunch of uncompiled & unmaintained .cs files.
Compiling for release (to profile) works now.
Removed AnyCPU targets from the solution file.
* Fix compiler warnings.
Code was changed so that time starts at tick zero, and all entities are initialized in the space between tick 0 to 1. This was a solution to the fact fromSequence was including entities with lastStateUpdate tick one less than the actual sequence number. This is purely an issue about when exactly the game does its logic relative to the tick signals, ie positive or negative edge of the tick. Right now the game is set up to run the game logic on the positive edge of a Tick (enforced by GameLoop).
The second big part is that an empty collection takes 5ish bytes more than a null collection in the NetSerializer, even though they are conceptually the same thing in a game state. This PR puts null checks around everything and allows GameStates to have whole sections of itself null. This reduced the payload size of an empty game state from 49B to 15B.
This PR also fixes the bug where the physics system marks every movable entity as dirty every tick.
RobustToolbox projects should be named Robust.*
This PR changes the RobustToolbox projects from SS14.* to Robust.*
Updates SS14.* prefixes/namespaces to Robust.*
Updates SpaceStation14.sln to RobustToolbox.sln
Updates MSBUILD/SS14.* to MSBUILD/Robust.*
Updates CSProject and MSBuild references for the above
Updates git_helper.py
Removes Runserver and Runclient as they are unusable