From 91e154a86668e91637346abe52931a4b36d75968 Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Sun, 20 Sep 2020 12:52:32 -0600 Subject: [PATCH] Refactored to allow barriers to be respawned if they were deleted outside of the plugin --- SceneManager/Menus/BarrierMenu.cs | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/SceneManager/Menus/BarrierMenu.cs b/SceneManager/Menus/BarrierMenu.cs index a682fac..8a0de4c 100644 --- a/SceneManager/Menus/BarrierMenu.cs +++ b/SceneManager/Menus/BarrierMenu.cs @@ -179,24 +179,25 @@ namespace SceneManager { RemoveBarrier(); } - + if (selectedItem == resetBarriers) { - var currentBarriers = barriers.Where(b => b.Object && b.Object.Model.Name != "0xa2c44e80").ToList(); - foreach (Barrier oldBarrier in currentBarriers) + var currentBarriers = barriers.Where(b => b.Model.Name != "0xa2c44e80").ToList(); // 0xa2c44e80 is the flare weapon hash + foreach (Barrier barrier in currentBarriers) { - if (oldBarrier.Object) - { - var newBarrier = new Rage.Object(oldBarrier.Object.Model, oldBarrier.Position, oldBarrier.Rotation); - newBarrier.SetPositionWithSnap(oldBarrier.Position); - Rage.Native.NativeFunction.Natives.SET_ENTITY_DYNAMIC(newBarrier, true); - newBarrier.IsPositionFrozen = false; - Rage.Native.NativeFunction.Natives.SET_DISABLE_FRAG_DAMAGE(newBarrier, true); - barriers.Add(new Barrier(newBarrier, newBarrier.Position, newBarrier.Heading)); + var newBarrier = new Rage.Object(barrier.Model, barrier.Position, barrier.Rotation); + newBarrier.SetPositionWithSnap(barrier.Position); + Rage.Native.NativeFunction.Natives.SET_ENTITY_DYNAMIC(newBarrier, true); + newBarrier.IsPositionFrozen = false; + Rage.Native.NativeFunction.Natives.SET_DISABLE_FRAG_DAMAGE(newBarrier, true); + barriers.Add(new Barrier(newBarrier, newBarrier.Position, newBarrier.Heading)); - oldBarrier.Object.Delete(); - barriers.Remove(oldBarrier); + + if (barrier.Object) + { + barrier.Object.Delete(); } + barriers.Remove(barrier); } currentBarriers.Clear(); }