Files
RobustToolbox/Robust.Client/Physics/PhysicsSystem.cs
T
Pieter-Jan Briers 2af0d9df55 Optimizations to physics system.
Nothing major, just picking low hanging fruit and improving code quality around the place.
2020-06-30 15:13:51 +02:00

47 lines
1.4 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using JetBrains.Annotations;
using Robust.Client.GameObjects;
using Robust.Shared.GameObjects.Systems;
using Robust.Shared.Interfaces.GameObjects;
using Robust.Shared.Interfaces.Timing;
using Robust.Shared.IoC;
using Robust.Shared.Physics;
namespace Robust.Client.Physics
{
[UsedImplicitly]
public class PhysicsSystem : SharedPhysicsSystem
{
[Dependency] private readonly IGameTiming _gameTiming = default!;
[Dependency] private readonly IComponentManager _componentManager = default!;
private TimeSpan _lastRem;
public override void Update(float frameTime)
{
_lastRem = _gameTiming.CurTime;
SimulateWorld(frameTime, ActuallyRelevant());
}
public override void FrameUpdate(float frameTime)
{
if (_lastRem > _gameTiming.TickRemainder)
{
_lastRem = TimeSpan.Zero;
}
var diff = _gameTiming.TickRemainder - _lastRem;
_lastRem = _gameTiming.TickRemainder;
SimulateWorld((float) diff.TotalSeconds, ActuallyRelevant());
}
private List<SharedPhysicsComponent> ActuallyRelevant()
{
return _componentManager.GetAllComponents<PhysicsComponent>().Where(p => p.Predict)
.ToList<SharedPhysicsComponent>();
}
}
}