From c546c42a8b41f37e9bc7374c7af8f96e134d1ef8 Mon Sep 17 00:00:00 2001 From: Regalis11 Date: Sat, 14 May 2016 23:01:57 +0300 Subject: [PATCH] - disabled unnecessary hull updates during loading (items/gaps find the hull when everything is loaded instead of every time a hull is created or moved) - fixed item.Submarine not being set in item.FindHull --- Subsurface/Source/Items/Item.cs | 9 ++++----- Subsurface/Source/Map/Gap.cs | 3 ++- Subsurface/Source/Map/Hull.cs | 32 ++++++++++++++++++++---------- Subsurface/Source/Map/MapEntity.cs | 10 ++++------ Subsurface/Source/Map/Submarine.cs | 17 +++++++++++++++- 5 files changed, 47 insertions(+), 24 deletions(-) diff --git a/Subsurface/Source/Items/Item.cs b/Subsurface/Source/Items/Item.cs index eef252282..4058192c4 100644 --- a/Subsurface/Source/Items/Item.cs +++ b/Subsurface/Source/Items/Item.cs @@ -319,7 +319,7 @@ namespace Barotrauma rect = newRect; - FindHull(); + if (submarine==null || !submarine.Loading) FindHull(); condition = 100.0f; @@ -474,7 +474,7 @@ namespace Barotrauma ic.Move(amount); } - if (body != null) FindHull(); + if (body != null && (Submarine==null || !Submarine.Loading)) FindHull(); } public Rectangle TransformTrigger(Rectangle trigger, bool world = false) @@ -512,11 +512,10 @@ namespace Barotrauma CurrentHull = Hull.FindHull(WorldPosition, CurrentHull); - - if (body!=null) { - body.Submarine = CurrentHull == null ? null : Submarine.Loaded; + Submarine = CurrentHull == null ? null : Submarine.Loaded; + body.Submarine = Submarine; } return CurrentHull; } diff --git a/Subsurface/Source/Map/Gap.cs b/Subsurface/Source/Map/Gap.cs index bd11fe244..b0b8dc1e8 100644 --- a/Subsurface/Source/Map/Gap.cs +++ b/Subsurface/Source/Map/Gap.cs @@ -603,8 +603,9 @@ namespace Barotrauma public override void OnMapLoaded() { - UpdateHulls(); + FindHulls(); } + public override XElement Save(XDocument doc) { XElement element = new XElement("Gap"); diff --git a/Subsurface/Source/Map/Hull.cs b/Subsurface/Source/Map/Hull.cs index 19e3b6a62..6a92645a7 100644 --- a/Subsurface/Source/Map/Hull.cs +++ b/Subsurface/Source/Map/Hull.cs @@ -85,8 +85,11 @@ namespace Barotrauma { base.Rect = value; - Item.UpdateHulls(); - Gap.UpdateHulls(); + if (Submarine == null || !Submarine.Loading) + { + Item.UpdateHulls(); + Gap.UpdateHulls(); + } } } @@ -205,14 +208,15 @@ namespace Barotrauma hullList.Add(this); ConnectedGaps = new List(); - - Item.UpdateHulls(); - Gap.UpdateHulls(); + + if (submarine==null || !submarine.Loading) + { + Item.UpdateHulls(); + Gap.UpdateHulls(); + } Volume = 0.0f; - - InsertToList(); } @@ -279,16 +283,22 @@ namespace Barotrauma rect.X += (int)amount.X; rect.Y += (int)amount.Y; - Item.UpdateHulls(); - Gap.UpdateHulls(); + if (Submarine==null || !Submarine.Loading) + { + Item.UpdateHulls(); + Gap.UpdateHulls(); + } } public override void Remove() { base.Remove(); - Item.UpdateHulls(); - Gap.UpdateHulls(); + if (Submarine == null || !Submarine.Loading) + { + Item.UpdateHulls(); + Gap.UpdateHulls(); + } List fireSourcesToRemove = new List(fireSources); foreach (FireSource fireSource in fireSourcesToRemove) diff --git a/Subsurface/Source/Map/MapEntity.cs b/Subsurface/Source/Map/MapEntity.cs index 8bc363a81..bb9453d03 100644 --- a/Subsurface/Source/Map/MapEntity.cs +++ b/Subsurface/Source/Map/MapEntity.cs @@ -627,16 +627,14 @@ namespace Barotrauma if (linked != null) e.linkedTo.Add(linked); } } - - for (int i = 0; i < mapEntityList.Count; i++) - { - if (mapEntityList[i].Submarine != null) mapEntityList[i].Move(Submarine.HiddenSubPosition); - } - + for (int i = 0; i