- Grid is no longer a collision object,
instead we just ray-cast against its parent
- Refactored some placement code into
its own method 'GetValidPlacement'
- More / better static Game properties
- Instance now initialized on _EnterTree
- Players moved in from MultiplayerManager
- MultiplayerManager renamed to Multiplayer
- LocalPlayer now static
- Minor preparation for multiple workshops
- Add Players script for easy enumerating
of players and getting them by peer id
- Simplify Player.PeerId and .IsLocal
- Remove unnecessary Synchronizer script
("Player:velocity" property specified manually)
- Add RpcMode and TransferMode enums to GlobalUsings
- Add a bunch more extension functions
- Add RPC class to send RPCs in a fancy, type-safe way
Relating to item synchronization:
- Grid now assumes Grid-local transforms etc
- Item functions to pickup, place and throw
- This is no longer handled by PickupController
- ItemManager is used to relay RPCs due to a bug
- Move snapping logic to Grid class
- Add Grid.CanPlaceAt to check for item overlap
(no test for collision with physics-enabled items)
- Change outline color depending on if can place
- Add a new "Item" physics layer
- Models now include their collision shape
- Item "fixes" collision shape node location
- Item initializes some collision properties
- Grid has been turned into a scene