From b92a2ba4e6cfa0b6b6277c5c67beb2a5e01e4e3a Mon Sep 17 00:00:00 2001 From: Tyler Young Date: Wed, 24 Jun 2020 12:41:31 -0400 Subject: [PATCH] Fixes movement and throwing incorrect tick-rate scaling (#1162) * fixes movement and throwing scaling incorrectly w/ tick rate * Update Content.Server/GameObjects/EntitySystems/MoverSystem.cs --- Content.Server/GameObjects/EntitySystems/MoverSystem.cs | 9 +++++---- Content.Server/Throw/ThrowHelper.cs | 7 ++++--- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/Content.Server/GameObjects/EntitySystems/MoverSystem.cs b/Content.Server/GameObjects/EntitySystems/MoverSystem.cs index 7a22249763..0bf0b323f6 100644 --- a/Content.Server/GameObjects/EntitySystems/MoverSystem.cs +++ b/Content.Server/GameObjects/EntitySystems/MoverSystem.cs @@ -1,4 +1,5 @@ -using Content.Server.GameObjects.Components; +using System; +using Content.Server.GameObjects.Components; using Content.Server.GameObjects.Components.Mobs; using Content.Server.GameObjects.Components.Movement; using Content.Server.GameObjects.Components.Sound; @@ -131,16 +132,16 @@ namespace Content.Server.GameObjects.EntitySystems var physics = entity.GetComponent(); if (entity.TryGetComponent(out var collider)) { - UpdateKinematics(entity.Transform, mover, physics, collider); + UpdateKinematics(entity.Transform, mover, physics, frameTime, collider); } else { - UpdateKinematics(entity.Transform, mover, physics); + UpdateKinematics(entity.Transform, mover, physics, frameTime); } } } - private void UpdateKinematics(ITransformComponent transform, IMoverComponent mover, PhysicsComponent physics, CollidableComponent collider = null) + private void UpdateKinematics(ITransformComponent transform, IMoverComponent mover, PhysicsComponent physics, float frameTime, CollidableComponent collider = null) { if (physics.Controller == null) { diff --git a/Content.Server/Throw/ThrowHelper.cs b/Content.Server/Throw/ThrowHelper.cs index 36ee26581a..7cb7a272bf 100644 --- a/Content.Server/Throw/ThrowHelper.cs +++ b/Content.Server/Throw/ThrowHelper.cs @@ -83,7 +83,9 @@ namespace Content.Server.Throw physComp = thrownEnt.AddComponent(); var timing = IoCManager.Resolve(); - var spd = throwForce / (1f / timing.TickRate); // acceleration is applied in 1 tick instead of 1 second, scale appropriately + + // scaling is handled elsewhere, this is just multiplying by 60 independent of timing as a fix until elsewhere values are updated + var spd = throwForce * 60; physComp.SetController(); (physComp.Controller as ThrowController)?.StartThrow(angle.ToVec() * spd); @@ -146,10 +148,9 @@ namespace Content.Server.Throw var velocityNecessary = distance / throwDuration; var impulseNecessary = velocityNecessary * mass; - var forceNecessary = impulseNecessary * (1f / timing.TickRate); // Then clamp it to the max force allowed and call Throw(). - Throw(thrownEnt, MathF.Min(forceNecessary, throwForceMax), targetLoc, sourceLoc, spread, throwSourceEnt); + Throw(thrownEnt, MathF.Min(impulseNecessary, throwForceMax), targetLoc, sourceLoc, spread, throwSourceEnt); } } }