34 Commits
Author SHA1 Message Date
Tyler YoungandGitHub d9fb7d04ca Enable freezable sets in unique index implementations (#1161) 2020-07-01 16:37:25 +02:00
Tyler YoungandGitHub 9d03edee40 Logging Tweaks (#1156) 2020-06-25 22:00:45 +02:00
Tyler YoungandGitHub 08e9caf71d Remove Task Scheduler Naming of Long Running Threads (#1155) 2020-06-25 18:16:41 +02:00
Tyler YoungandGitHub faacd45eb4 Protect IgnoresAccessChecksTo, Add Task Scheduler Context, Lock on Console Log Flushing (#1153) 2020-06-25 18:00:00 +02:00
Tyler YoungandGitHub e693d3ded7 Buffered VT ANSI Logging, Server Off Console Thread, Log Unhandled Errors (#1152) 2020-06-25 01:43:09 +02:00
Tyler YoungandGitHub d7e98be313 Various Fixes and Diagnostics (#1151) 2020-06-24 23:52:22 +02:00
Tyler YoungandGitHub ba3bf605c9 Reduce Physics Max Solver Iterations, Simulation Respected (#1150)
reduce max solver iterations
2020-06-24 23:43:07 +02:00
Tyler YoungandGitHub ec938e7d33 Better Missing MetaDataComponent Error (#1149) 2020-06-24 23:28:14 +02:00
Tyler YoungandGitHub 4650dc2c49 ComponentManager Rework (#1143)
* 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
2020-06-24 11:59:56 +02:00
Tyler YoungandGitHub faff0797bf Make Lidgren Use Spans & Shared Pool (#1140)
* 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
2020-06-24 04:09:20 +02:00
Tyler YoungandGitHub c997d7e3b6 Dynamically Manage Collision Solver Iterations (#1139)
modulate solver iterations dynamically depending on tps
2020-06-22 12:33:08 +02:00
Tyler YoungandGitHub 368f6482e8 Provide fallback for Creative EFX OpenAL Extension in Clyde.Audio (#1137)
provide fallback for mac if it doesn't exist
2020-06-19 21:25:19 +02:00
Tyler YoungandGitHub 9cbdd1058c Use CannyFastMath & Update Some Packages (#1130)
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
2020-06-18 02:25:36 +02:00
Tyler YoungandGitHub 9662d52f90 Shared String Dictionary ctd. (#1126) 2020-06-13 04:09:48 +02:00
Tyler YoungandGitHub 47f307dd2a Upgrades SixLabors.ImageSharp (#1128)
adds InlineIl.Fody for fast access to image backing buffers
2020-06-13 03:08:29 +02:00
0d52def877 Have RobustSerializer use a shared string dictionary (#1117)
* 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>
2020-06-12 04:09:55 +02:00
Tyler YoungandGitHub 70100ec9d1 add reset of shader to UserInterfaceManager _render method after drawing a control (#1124) 2020-06-11 22:50:33 +02:00
Tyler YoungandGitHub 5c8545c396 Revert "Virtualize all NetIDs to reduce network traffic" (#1119)
This reverts commit d776476542.
2020-06-09 00:34:37 +02:00
Tyler YoungandGitHub d776476542 Virtualize all NetIDs to reduce network traffic (#1116) 2020-06-08 13:38:08 +02:00
Tyler YoungandGitHub 885bcb4f57 Fix up midi stuff, support mild black midis (#1092) 2020-06-02 01:08:56 +02:00
Tyler Young 3856a16463 flip writing check 2020-02-28 19:12:57 -05:00
Tyler YoungandGitHub 38aeca2342 Automatic Partial Shader Reloading (#1005)
* 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
2020-02-28 06:27:35 +01:00
Tyler Young 36ee8a0c90 use generic type to fix call IsValueDefault
found a way to dedupe
2020-02-27 02:37:22 -05:00
Tyler YoungandGitHub a8f615d64b Fix lockers making items uninteractable (#1004)
* 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
2020-02-25 22:31:46 -08:00
Tyler Young 52358d8fbe minor docs improvement 2020-02-24 20:10:16 -05:00
Tyler Young b63d02d96d woo 2020-02-24 20:04:17 -05:00
Tyler YoungandGitHub 214f9f0323 Implement client bubble PVS. (#983)
* 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
2020-02-23 14:42:54 +01:00
Tyler YoungandGitHub a3a8a8b3cf Use Kestler for StatusHost (#966)
* implement StatusHost as a minimal Kestler based HTTP Rest service

break up and organize StatusHost

* handle weird disposal mechanics exposed by testing facility
2020-02-09 23:16:16 +01:00
Tyler YoungandGitHub 8bcc5808cc Console commands; gc_mode and szr_stats (#964)
* add some console commands; gc_mode and szr_stats

* add latency mode list to gc_mode
2020-02-09 10:15:01 +01:00
Tyler YoungandGitHub 42c22c1041 Physics fixes (#963)
DynamicTree now no longer uses a ConcurrentDictionary for proxy look ups
2020-02-08 20:07:13 +01:00
Tyler YoungandGitHub b6e0359b06 Correct ray casting (#957)
fix weird merge artifacts

fix aabb extraction happening too early on ray casting
2020-02-08 11:05:18 +01:00
Tyler YoungandGitHub 5d37780f4e Have PhysicsManager use DynamicTree (#955)
* 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)
2020-02-07 15:15:33 -08:00
Tyler YoungandGitHub 3cc10f7eb7 Fix crash from destruction of containers containing containers (#956) 2020-02-07 17:53:22 +01:00
Tyler YoungandGitHub 755675eaab Introduce DynamicTree, Separate Ray from CollisionRay (#951)
* 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
2020-02-06 14:13:15 +01:00