diff --git a/Subsurface/Source/GameMain.cs b/Subsurface/Source/GameMain.cs
index 7ca41b8b0..36bd37162 100644
--- a/Subsurface/Source/GameMain.cs
+++ b/Subsurface/Source/GameMain.cs
@@ -101,16 +101,7 @@ namespace Barotrauma
get;
private set;
}
-
- ///
- /// Total seconds elapsed after startup
- ///
- public double TotalElapsedTime
- {
- get;
- private set;
- }
-
+
public GameMain()
{
GraphicsDeviceManager = new GraphicsDeviceManager(this);
@@ -300,6 +291,7 @@ namespace Barotrauma
/// Provides a snapshot of timing values.
protected override void Update(GameTime gameTime)
{
+ Timing.TotalTime = gameTime.TotalGameTime.TotalSeconds;
Timing.Accumulator += gameTime.ElapsedGameTime.TotalSeconds;
bool paused = true;
diff --git a/Subsurface/Source/Items/Components/Machines/Radar.cs b/Subsurface/Source/Items/Components/Machines/Radar.cs
index f42c92563..399407f68 100644
--- a/Subsurface/Source/Items/Components/Machines/Radar.cs
+++ b/Subsurface/Source/Items/Components/Machines/Radar.cs
@@ -140,7 +140,7 @@ namespace Barotrauma.Items.Components
prevPingRadius = pingRadius;
}
- float passivePingRadius = (float)Math.Sin(GameMain.Instance.TotalElapsedTime*10);
+ float passivePingRadius = (float)Math.Sin(Timing.TotalTime * 10);
if (passivePingRadius > 0.0f)
{
foreach (AITarget t in AITarget.List)
diff --git a/Subsurface/Source/Map/Lights/ConvexHull.cs b/Subsurface/Source/Map/Lights/ConvexHull.cs
index bbea0b1da..ab3296206 100644
--- a/Subsurface/Source/Map/Lights/ConvexHull.cs
+++ b/Subsurface/Source/Map/Lights/ConvexHull.cs
@@ -151,7 +151,7 @@ namespace Barotrauma.Lights
{
if (enabled == value) return;
enabled = value;
- LastVertexChangeTime = (float)GameMain.Instance.TotalElapsedTime;
+ LastVertexChangeTime = (float)Timing.TotalTime;
}
}
@@ -264,7 +264,7 @@ namespace Barotrauma.Lights
segments[i].End.Pos += amount;
}
- LastVertexChangeTime = (float)GameMain.Instance.TotalElapsedTime;
+ LastVertexChangeTime = (float)Timing.TotalTime;
CalculateDimensions();
}
@@ -273,7 +273,7 @@ namespace Barotrauma.Lights
{
Debug.Assert(points.Length == 4, "Only rectangular convex hulls are supported");
- LastVertexChangeTime = (float)GameMain.Instance.TotalElapsedTime;
+ LastVertexChangeTime = (float)Timing.TotalTime;
for (int i = 0; i < 4; i++)
{
diff --git a/Subsurface/Source/Map/Lights/LightSource.cs b/Subsurface/Source/Map/Lights/LightSource.cs
index e735fabe3..ef595d15e 100644
--- a/Subsurface/Source/Map/Lights/LightSource.cs
+++ b/Subsurface/Source/Map/Lights/LightSource.cs
@@ -549,7 +549,7 @@ namespace Barotrauma.Lights
var verts = FindRaycastHits();
CalculateLightVertices(verts);
- lastRecalculationTime = (float)GameMain.Instance.TotalElapsedTime;
+ lastRecalculationTime = (float)Timing.TotalTime;
NeedsRecalculation = false;
}
diff --git a/Subsurface/Source/Timing.cs b/Subsurface/Source/Timing.cs
index 19a8aa9bd..a2b21c62f 100644
--- a/Subsurface/Source/Timing.cs
+++ b/Subsurface/Source/Timing.cs
@@ -11,6 +11,8 @@ namespace Barotrauma
{
private static double alpha;
+ public static double TotalTime;
+
public static double Accumulator;
public static double Step = 1.0 / 60.0;
@@ -30,6 +32,13 @@ namespace Barotrauma
return current * (float)alpha + previous * (1.0f - (float)alpha);
}
+ public static float InterpolateRotation(float previous, float current)
+ {
+ float angleDiff = MathUtils.GetShortestAngle(previous, current);
+
+ return previous + angleDiff * (float)alpha;
+ }
+
public static Vector2 Interpolate(Vector2 previous, Vector2 current)
{
return new Vector2(