Make pull chains faster (#10794)

* Make pull chains faster

* swap order
This commit is contained in:
metalgearsloth
2022-08-30 12:19:24 +10:00
committed by GitHub
parent b934c21e91
commit 9e8c5c0ed6

View File

@@ -3,6 +3,7 @@ using Content.Shared.Gravity;
using Content.Shared.Movement; using Content.Shared.Movement;
using Content.Shared.Movement.Components; using Content.Shared.Movement.Components;
using Content.Shared.Movement.Systems; using Content.Shared.Movement.Systems;
using Content.Shared.Pulling.Components;
using JetBrains.Annotations; using JetBrains.Annotations;
using Robust.Shared.Configuration; using Robust.Shared.Configuration;
using Robust.Shared.GameStates; using Robust.Shared.GameStates;
@@ -70,6 +71,8 @@ namespace Content.Shared.Friction
var frictionQuery = GetEntityQuery<TileFrictionModifierComponent>(); var frictionQuery = GetEntityQuery<TileFrictionModifierComponent>();
var xformQuery = GetEntityQuery<TransformComponent>(); var xformQuery = GetEntityQuery<TransformComponent>();
var pullerQuery = GetEntityQuery<SharedPullerComponent>();
var pullableQuery = GetEntityQuery<SharedPullableComponent>();
foreach (var body in mapComponent.AwakeBodies) foreach (var body in mapComponent.AwakeBodies)
{ {
@@ -96,6 +99,15 @@ namespace Content.Shared.Friction
bodyModifier = frictionComp.Modifier; bodyModifier = frictionComp.Modifier;
} }
// If we're sandwiched between 2 pullers reduce friction
// Might be better to make this dynamic and check how many are in the pull chain?
// Either way should be much faster for now.
if (pullerQuery.TryGetComponent(body.Owner, out var puller) && puller.Pulling != null &&
pullableQuery.TryGetComponent(body.Owner, out var pullable) && pullable.BeingPulled)
{
bodyModifier *= 0.2f;
}
var friction = _frictionModifier * surfaceFriction * bodyModifier; var friction = _frictionModifier * surfaceFriction * bodyModifier;
ReduceLinearVelocity(prediction, body, friction, frameTime); ReduceLinearVelocity(prediction, body, friction, frameTime);