* rework ComponentManager
create indexing solution, UniqueIndex
split out ComponentEventArgs, add sealed variants
fix up documentation
fix terrible crap
make benchmark work
* woops, ordered enumerables are already a copy
* naming
* clean up comments
* nullable enable
* add some doc comments to unique index
* perf tweaks
add UniqueIndexHkm for high key mutability
extract internal interface mostly for documentation
add nullability support and constraints
* fix doc comment for UniqueIndexHkm
* make PVS threaded
* remove redundant member declarations in interface
* fix grid loss crap on client shutdown
* fix nullability warning when retrieving from always constructed threadlocal
* add comment explaining chan == null check
remove inParallel parameter
* 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
update a bunch of packages and use JetBrains.Annotations as private asset as needed
mark some hot math methods agg inline to benefit from loop opts
use FMA for interp
use canny min/max/clamp
make Quaternion NormalizeAngle fixed time and faster
clean up YamlDotNet references
* implements shared string dictionary and handshake from net-code-2
* fix unit test
switch to szr sawmill
* try to silence some warnings around ZipEntry
* rebase and use system zip instead of icsharplib
fix rebase artifacts
* Update Robust.Shared/Interfaces/GameObjects/IComponentFactory.cs
* Update Robust.Shared/Serialization/RobustSerializer.MappedStringSerializer.cs
* Update Robust.Shared/Serialization/RobustSerializer.MappedStringSerializer.cs
* Apply suggestions from code review
* Apply suggestions from code review
* Update Robust.Shared/Serialization/RobustSerializer.cs
* since no longer gathering from paths, make string splitting more robust
* make string gathering ignore strings under 4 chars long
make string gathering yet more robust
* add limit to size of mapped strings
* add more string data to feed into shared string dictionary from YAML files
add JSON importer but don't parse RSI metadata yet
fix typo that breaks nulls in MappedStringSerializer
minor refactoring
make string splitting more robust
add WriteUnsignedInt / ReadUnsignedInt for validating WriteCompressedUnsignedInt / ReadCompressedUnsignedInt aren't bogus
* comment out some log statements
* minor refactor, reorder logging
add null check due to smart typing NRT checks
* Add doc comments, readability improvements to MappedStringSerializer
The protocol, handshake, and internal logic are now more documented.
The main area that could still be improved is the documentation of how
the cache system works, but the code is readable enough for now that it
isn't immediately necessary.
* add documentation, organization
* update some more doc comments
* add flows to doc comment for NetworkInitialize
* more documentation and organization
* more docs
* instead of retrieving INetManager by IoC, assign when NetworkInitialize is invoked
* "document" the regex
* Update Robust.Shared/Network/NetManager.cs
* add missing check for LockMappedStrings
* Update Robust.Shared/Serialization/RobustSerializer.MappedStringSerializer.cs
Co-authored-by: ComicIronic <comicironic@gmail.com>
* change to warning instead of throw for unlocked string mapping
Co-authored-by: ComicIronic <comicironic@gmail.com>
* merged in shader automatic reloading, remove internal shader reloading
add support for includes to shader reloading, modified includes reload shaders that depends upon them
* add some fault tolerance to allow playing with the file a bit
* prevent multiple watch attempts
* fix spacing
* revert project change
* add cancellation to Reload with a default of 30s
fix case sensitivity comparison
assume windows & mac are case insensitive
* remove setter for MapPosition
change DetachParent to set WorldPosition after re-parenting to correct Map entity or MapGrid entity
* workaround until default grid not needed due to items can't be picked up if map ent parent
* 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
* implement StatusHost as a minimal Kestler based HTTP Rest service
break up and organize StatusHost
* handle weird disposal mechanics exposed by testing facility
* have PhysicsManager use DynamicTree
* remove BroadPhaseNative
add BroadPhase wrapping DynamicTree
replace IBroadPhase with regards to DynamicTree
* add collision enumeration capability for proper BroadPhase
* fix slow app exit due to MapId being unavailable at various stages of shutdown
reduce code footprint of alternate query in AnyEntitiesIntersecting by using existing query (only used rarely)
* separates Rays from CollisionRays, removing collision masking from Ray
* Entity, ClientEntityManager and EntityManager classes occasionally need to UpdateEntityTree
Entity intersection queries now use a DynamicTree
DynamicTree now correctly reports Count and separately NodeCount
DynamicTree now has optionally precise queries
DynamicTree no longer incorrectly Adds on AddOrUpdate if Update is not necessary
Entity startup now starts Transform, then Collidable, then remaining components
EntityManger's Entity dictionary is now a ConcurrentDictionary to support iteration under modification
DynamicTree freeing root leaf no longer results in invalid tree
SnapGridComponent has been extended to support additional area and directional queries
* added lots of calls to UpdateEntityTree, will need to scale back during review
fixed moved/changed AABB updates to DynamicTree, missed a ref
converted other methods in EntityManager to use the tree for spatial queries
* add unit tests for DynamicTree
make Capacity and EnsureCapacity public, setting Capacity will call EnsureCapacity
* fix brace style
* Box2 Grow -> Enlarged, Combine -> Union