diff --git a/Barotrauma/BarotraumaClient/Source/Screens/GameScreen.cs b/Barotrauma/BarotraumaClient/Source/Screens/GameScreen.cs index d403935ab..3499f9589 100644 --- a/Barotrauma/BarotraumaClient/Source/Screens/GameScreen.cs +++ b/Barotrauma/BarotraumaClient/Source/Screens/GameScreen.cs @@ -2,8 +2,6 @@ using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.Graphics; using System; -using System.Collections.Generic; -using System.Linq; namespace Barotrauma { @@ -99,18 +97,6 @@ namespace Barotrauma public void DrawMap(GraphicsDevice graphics, SpriteBatch spriteBatch) { - HashSet outsideCharacters = new HashSet(); - foreach (Character c in Character.CharacterList) - { - if (!c.AnimController.CanEnterSubmarine) - { - outsideCharacters.Add(c); - } - else if (c.CurrentHull == null && !Submarine.Loaded.Any(s => Submarine.RectContains(s.WorldBorders, c.WorldPosition))) - { - outsideCharacters.Add(c); - } - } foreach (Submarine sub in Submarine.Loaded) { @@ -142,18 +128,6 @@ namespace Barotrauma Level.Loaded.DrawBack(graphics, spriteBatch, cam); } - spriteBatch.Begin(SpriteSortMode.BackToFront, - BlendState.AlphaBlend, - null, null, null, null, - cam.Transform); - - foreach (Character c in outsideCharacters) - { - if (c.CurrentHull == null) c.Draw(spriteBatch); - } - - spriteBatch.End(); - #if LINUX spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.NonPremultiplied, @@ -161,9 +135,9 @@ namespace Barotrauma cam.Transform); #else spriteBatch.Begin(SpriteSortMode.Deferred, - BlendState.AlphaBlend, - null, DepthStencilState.DepthRead, null, null, - cam.Transform); + BlendState.AlphaBlend, + null, DepthStencilState.DepthRead, null, null, + cam.Transform); #endif GameMain.ParticleManager.Draw(spriteBatch, true, false, Particles.ParticleBlendState.AlphaBlend); spriteBatch.End(); @@ -198,10 +172,7 @@ namespace Barotrauma Submarine.DrawBack(spriteBatch, false, s => !(s is Structure)); - foreach (Character c in Character.CharacterList) - { - if (!outsideCharacters.Contains(c)) c.Draw(spriteBatch); - } + foreach (Character c in Character.CharacterList) c.Draw(spriteBatch); spriteBatch.End(); diff --git a/Barotrauma/BarotraumaShared/Source/Map/Submarine.cs b/Barotrauma/BarotraumaShared/Source/Map/Submarine.cs index 45f7e53f4..fa2630d29 100644 --- a/Barotrauma/BarotraumaShared/Source/Map/Submarine.cs +++ b/Barotrauma/BarotraumaShared/Source/Map/Submarine.cs @@ -151,14 +151,12 @@ namespace Barotrauma public Rectangle Borders { - get { return subBody.Borders; } + get + { + return subBody.Borders; + } } - - public Rectangle WorldBorders - { - get { return SubBody.WorldBorders; } - } - + public override Vector2 Position { get { return subBody==null ? Vector2.Zero : subBody.Position - HiddenSubPosition; } diff --git a/Barotrauma/BarotraumaShared/Source/Map/SubmarineBody.cs b/Barotrauma/BarotraumaShared/Source/Map/SubmarineBody.cs index f629d27de..9d873cc9a 100644 --- a/Barotrauma/BarotraumaShared/Source/Map/SubmarineBody.cs +++ b/Barotrauma/BarotraumaShared/Source/Map/SubmarineBody.cs @@ -39,12 +39,6 @@ namespace Barotrauma get; private set; } - - public Rectangle WorldBorders - { - get; - private set; - } public Vector2 Velocity { @@ -187,10 +181,6 @@ namespace Barotrauma public void Update(float deltaTime) { - var worldBorders = Borders; - worldBorders.Location += MathUtils.ToPoint(Position); - WorldBorders = worldBorders; - if (GameMain.Client != null) { if (memPos.Count == 0) return; @@ -242,6 +232,9 @@ namespace Barotrauma //if outside left or right edge of the level if (Position.X < 0 || Position.X > Level.Loaded.Size.X) { + Rectangle worldBorders = Borders; + worldBorders.Location += MathUtils.ToPoint(Position); + //push the sub back below the upper "barrier" of the level if (worldBorders.Y > Level.Loaded.Size.Y) {