Timing.Alpha isn't updated when the game is paused (-> no "twitching" when the pause menu is open), moved water scrolling and surface lerping from draw method to update

This commit is contained in:
Regalis
2016-10-09 15:12:57 +03:00
parent 39c31b10f5
commit e720fa366c
4 changed files with 13 additions and 35 deletions

View File

@@ -292,6 +292,8 @@ namespace Barotrauma
{
Timing.Accumulator += gameTime.ElapsedGameTime.TotalSeconds;
bool paused = false;
while (Timing.Accumulator >= Timing.Step)
{
fixedTime.IsRunningSlowly = gameTime.IsRunningSlowly;
@@ -302,8 +304,6 @@ namespace Barotrauma
PlayerInput.Update(Timing.Step);
bool paused = false;
if (titleScreenOpen)
{
if (TitleScreen.LoadState >= 100.0f &&
@@ -342,7 +342,7 @@ namespace Barotrauma
Timing.Accumulator -= Timing.Step;
}
Timing.Alpha = Timing.Accumulator / Timing.Step;
if (!paused) Timing.Alpha = Timing.Accumulator / Timing.Step;
}

View File

@@ -403,17 +403,7 @@ namespace Barotrauma
foreach (Gap gap in ConnectedGaps)
{
float gapFlow = gap.LerpedFlowForce.Length();
#if DEBUG
var asd = MapEntity.FindEntityByID(gap.ID);
if (asd != gap)
{
int adslkmfdlasfk = 9;
}
#endif
if (gapFlow > strongestFlow)
{
strongestFlow = gapFlow;
@@ -492,11 +482,9 @@ namespace Barotrauma
waveVel[i] = waveVel[i] * -0.5f;
}
//acceleration
float a = -WaveStiffness * waveY[i] - waveVel[i] * WaveDampening;
waveVel[i] = waveVel[i] + a;
}
for (int j = 0; j < 2; j++)
@@ -517,6 +505,9 @@ namespace Barotrauma
}
}
//interpolate the position of the rendered surface towards the "target surface"
surface = MathHelper.Lerp(surface, surfaceY, deltaTime*10.0f);
if (volume < FullVolume)
{
LethalPressure -= 10.0f * deltaTime;
@@ -608,15 +599,7 @@ namespace Barotrauma
isHighlighted ? Color.LightBlue*0.5f : Color.Red*0.5f, true,0, (int)Math.Max((1.5f / GameScreen.Selected.Cam.Zoom), 1.0f));
}
}
private float GetSurfaceY()
{
float top = rect.Y + Submarine.DrawPosition.Y;
float bottom = top - rect.Height;
return bottom + Volume / rect.Width;
}
public void Render(GraphicsDevice graphicsDevice, Camera cam)
{
if (renderer.PositionInBuffer > renderer.vertices.Length - 6) return;
@@ -626,10 +609,7 @@ namespace Barotrauma
//calculate where the surface should be based on the water volume
float top = rect.Y + submarinePos.Y;
float bottom = top - rect.Height;
float surfaceY = bottom + Volume / rect.Width;
//interpolate the position of the rendered surface towards the "target surface"
surface = surface + ((surfaceY - submarinePos.Y) - surface) / 10.0f;
float drawSurface = surface + submarinePos.Y;
Matrix transform = cam.Transform * Matrix.CreateOrthographic(GameMain.GraphicsWidth, GameMain.GraphicsHeight, -1, 1) * 0.5f;

View File

@@ -814,6 +814,11 @@ namespace Barotrauma
WrappingWall.UpdateWallShift(Submarine.MainSub.WorldPosition, wrappingWalls);
}
if (Hull.renderer != null)
{
Hull.renderer.ScrollWater((float)deltaTime);
}
renderer.Update(deltaTime);
}

View File

@@ -166,13 +166,6 @@ namespace Barotrauma
{
cam.UpdateTransform(true);
if (Hull.renderer != null)
{
Hull.renderer.ScrollWater((float)deltaTime);
}
//damageStencil = TextureLoader.FromFile("Content/Map/background.png");
DrawMap(graphics, spriteBatch);
spriteBatch.Begin();