* Fix client-side input system not sending sequence numbers for input messages.
This caused message ordering issues and keys getting stuck down.
* Make sure EyeUpdateSystem runs after physics.
* IGameTiming.TickFraction helper.
* Subtick data for input commands.
* Literally a unit test to verify that I wasn't going insane while debugging input message ordering issues.
* More prediction logs behind net.predict.
* Move physics to shared and run it on the client.
* Synchronize grid gravity.
* Fix ResetPredictedEntities crash when entities get deleted server-side.
* Fix CollidableComponent setters not calling Dirty()
* Fix going into space while predicting.
* Watch window uses history line edit.
* Fix unpredicted objects stuck-jittering.
* VV tags for interp vars on transform.
* Fix 0 mass objects on client.
* Fix friction calculations being TPS dependent.
* Reset predict flag on handelComponentState
* make lidgren use spans everywhere where it can
convert custom pooling to shared array pool impl
add unit tests for read/write
add native socket extensions to socket so we can legit pass spans for SendTo/ReceiveFrom
bump version in lidgren csproj
replace some random "% 8" w/ "& 7"
more minor nullability hacks to fix static analysis complaints
made receiving packets use span
minor native sockets refactor to use pinvoke
add read/write constrained/prealloc'd bit stream impl to lidgren and update usages
fixed missing stream cleanup
remove outstanding stream cleanup since it refs buffer thru the class, can't read some other buf
apply suggestions from code review
remove unsafe cruft
* add tests to gh actions
* make stats use interpolation in tostring and remove m_bytesAllocated since it's all in the shared pool now
* this pr still open so fuck it
stats, human readability, faster BitsToHold methods
* add api compatible version of ReadBytes
* rename ReadOnlyStreamWrapper -> ReadOnlyWrapperStream
rename WriteOnlyStreamWrapper -> WriteOnlyWrapperStream
add AppendViaStream, AppenderStream impl
add and update documentation on read/write bytes methods
also fix some goofs
If you sent multiple state updates on the same frame these could easily arrive in different orders on the client, which is definitely not intended. This fixes that by sending them per frame.
As a result, this also means earlier updates on the same frame are discarded, saving bandwidth.
* bubble implementation
include contained entities
fix line edit crash when clipboard contents are null somehow
use CVar for update bubble range
remove seenMovers that get NaN'd out of MaxUpdateRange - huge reduction in network traffic from bullets
cut default of MaxUpdateRange down to 12.5 for now
maybe handle teleported things
handle removing player state on disconnect
fixed positional audio errors
make UpdateEntityTree also update player's last seen ents
make net.maxupdaterange cvar tunable at runtime w/o impacting performance
back to position nan as means to hide from client
revert work pooling as the wrong player was getting the wrong game state
ffs needed to think less about *if* something is *seen* and more about *when* it must be *unseen*
clean up usings
handle parenting and sequencing issues that arise on the client
gather needed ents to update recursively
applied suggestions from code review
fix missing recursively contained ents
make assumption that client last saw things on first tick instead of tick zero, as zero would be the "from tick" and first would be he "to tick"
add First tick as constant to GameTick due to relevance above
renamed includedEnts to checkedEnts to make usage more clear
added comments
inverted some conditions to flatten parts of the pvs logic
fixed sending states when already seen (lastChange < lastSeen to lastChange <= lastSeen)
fix sending states when no actual changes (other bugs?)
local caching of currentTick, remove priorTick
* make TransformComponent's Parent setter call Dirty() to handle replicating network state if AttachParent isn't invoked
* fixed parent changed by setting Parent on Transform not updating parent's Children collection and other stuff
rotating parent entities now are visible with their orbiting children if one of their children moves into view
* break out duplicated code as GetLastSeen
* remove unused net.parallelstates
introduce net.pvs to configure enabling/disabling PVS
* Removed the EntitySystem event implementation, it now uses the more advanced EventBus.
Removed EntitySystem.RegisterMessageTypes() function.
Removed EntitySystem.SubscribeEvents() function.
Added EntitySystemMessage.NetChannel field. This holds the remote net channel the event originated from.
* Removed the Sender object from events. If you needed this field, add it to the event class.
* Removed unused event proxy methods from Entity.
SubscribeEvent() has been split into SubscribeNetworkEvent() and SubscribeLocalEvent() methods on EntitySystem.
Most methods on EntityEventBus now require callers to specify the source (Local or Network) of the events.
* Adds Map components to the ECS system.
* Grid entities are now created along with map grids.
Grid components are now properly reused from map deserialization when a grid is created through the MapManager.
* Make MapGridComponent shared.
Don't send Nullspace default grid to client, they have their own.
Properly link the new grid with the entity sent from the server.
* Fixes nullRefException when ToString() is called on an Entity with no Prototype.
* Adds logging debug info about binding a map/grid to an entity.
Nightly Commit.
* Client map networking now properly pivots a grid from the client entity to the shared entity.
Added IMapGridComponent.ClearGridId() to properly dissociate the component from a grid before deleting it.
WorldPosition of a default grid is always 0,0 regardless of the entity transform (if any).
Nullspace map and default grid are not bound to an entity.
Nullspace map and default grid cannot be deleted.
* Map Entities are now created along with new maps.
* Client & Server load with new scene hierarchy.
* Fix rebase damage.
* Added ContainerHelpers helper class.
* Fix Container checks.
* Fixed clothes.
* Fixing unit tests.
* Removed disabled code.
* Actually initialize and startup the Map and Grid entities.
* raw PCM audio for clyde
* Remove soundfont.cs
* Midi stuff
* Some more work
* This actually works now!
* update
* Add nfluidsynth submodule.
* fuck
* Midi audio works!
* Lots of stuff, and cool interfaces for items
* Update
* Note limit
* Moving out of range of UI raises OnClosed now as well
* It just works
* Update nfluidsynth submodule
* Remove managed-midi, remove unused methods I added to clyde
* Remove remnants of older NFluidsynth
* Update nfluidsynth submodule.
* Fix some of MidiManager
* Add changes PJB made to soundfont loading
* Delete OpenAL source/buffers when disposed
* Remove remnants of "Rendering"
* Use ReadOnlySpan, make interface/implementation arguments consistent
* Improve EmptyBuffers performance
* Make renderers use an enum for their status
* MidiRenderer events are now invoked on the main thread
* MidiManager now has a method to dispose renderers
* Lock player
* Fun stuff
* Update nfluidsynth submodule.
* Fix midi audio rendering
* Address a few reviews
* Revert changes made to Clyde
* Create sfloader per midi renderer
* Midi file size check
* Now OpenMidi/OpenInput and their respective close methods return bools.
* Update nfluidsynth submodule.
* Move number to constant.
* Use BufferedAudioSource
* Remove unused using statements
* Use new API
* Lock player and synth correctly
* Use midi sawmill
* Adds "Disposed" property to MidiRenderer
* Remove DisposeRenderer, let midi render thread handle it instead
* Renderer position is updated from main loop
* Use nfluidsynth from nuget
* Fix appveyor, lazy fluidsynth init
* Only join MidiThread if it actually exists...
* 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.