13,129 Commits over 2,800 Days - 0.20cph!
- Removed the option to use extrapolation in my GenericLerp, it only seems to cause problems. This fixes some lerp jitter with server-side ragdolls.
- Keep running limbInterp tick until lerpToServerSimTime, if it's longer than 2s
Merge GrenadeThrowFix -> main
Apply a suitable amount of force on death to server-side ragdolls
Reduce RAGDOLL_PUSH_FORCE slightly to be safe
- Don't use 'vis' for pushing server-side ragdolls, we already have a ragdoll list
- Push rigidbodies that are closer to the bullet hit point more than ones that are further away
Activate inactive SS ragdolls when shot
Increased the force from 1 to 1.5 - I'm sure it was intentionally tuned to be very low, but 1.0 was, most of the time, imparting no visible force at all.
The slight push that happens when shooting a corpse now also works for servers-side ragdolls
Use PositionTickFixedTime for TimeExplosive position sync
Merge main -> GrenadeThrowFix
▋▅█ ▇▊▌▌▊▍▆ ▇▇ ▋▆▉▊▍▉▍ ▆▋▌▆▆▉ ▇▋▊▅▍▆█ ██▌▆▊ ▄▊▍▋ ▋▆▌▍▍▇▍█▄▉
▊▍▊▉▌▇▄▊ █▌█▅▍ ▅▋▅▆▄▌▋▆ ▌▉▌
▅▊▍▆█ █▊▅▇█▊█▇▊▄ ▉▌█▌▇ ▄▊▇▉ ▄▅ █▉▋▌ ▇▅█▇▅▄▉▉ ▌▅▌▇▇▇▆ ▉▊▍▍ █▍▊▄ ▅▉▉▆▇ ▆▇
Fixed ragdoll eye postion
Merge main -> CorpseRagdollParentingFix
Improved server-side ragdoll buoyancy. No longer floats mostly under the water, butt-upward, like the client-side ragdolls do
Only do the early EnsurePointsInitialized call if loading from save
Although the previous commit fixed a big problem, it was rather slow (MultiplyPoint3x4 is MUCH faster than transform.position). Since we're trying to improve performance here rather than make it worse, let's go back to the old system, but make PlayerCorpse manually call EnsurePointsInitialized early, which gets the data before physics have a chance to go crazy and end up with us caching very weird limb positions (happens sometimes on loading existing ragdolls from a save)
The cached rootToPoint stuff doesn't work correctly with ragdolls since the limbs can move relative to the root bone. I've now set ragdolls (both client-side and server-side) to not use the cached data.
Save time reparenting Buoyancy points - just use InverseTransformPoint
Buoyancy code now works in harmony with the new server-side ragdolls, and they go kinematic instead of attempting to sleep when the buoyancy code wants to sleep them (when being set to sleep, they kept waking up)
Eliminate BuoyancyFixedUpdate calls if there's nobody around
Added corpseinfo convar to get info on the amount and status of player corpses
Fix buoyancy code running way too often
Merge LessSinkableBoats -> Aux2
RHIB updated, now 4x the mass as well. Other stats updated to match old behaviour.
Rowboat and kayak updated (both increased from 50kg to 200kg, all stats rebalanced to match old behaviour).
Initial changes to make Rowboat 4x as heavy, while keeping it feeling the same (to reduce the effect of ragdolls). Feels nearly there but acceleration is a bit too fast.
Little bit of parenting debug code
Merge CorpseRagdollParentingFix -> Aux2
Use world space for the bone copy again, it seems okay now
Fix new issue with client-side ragdolls
Much ragdoll init order refactoring, trying to sort out the brief trouble mainly when spawning while parented. Parent is now set before spawn, and a bunch of other stuff needed to change.
Fixed double ParentChanging call
Fixed ragdoll parenting when a new clients enters network range
Merge ServerSideRagdolls -> main
Gave server-side ragdoll a bigger head collider
Merge ServerSideRagdolls -> main
Fixed physics silliness when a client-side ragdoll had multiple arrows in it that overlapped each other
Merge main -> ServerSideRagdolls
Second attempt. Fixed NRE on server load due to horse ragdoll having no head bone
Fixed NRE on server load due to horse ragdoll having no head bone
Merge ServerSideRagdolls -> main