public override void Dispose(ClientMain game) { base.Dispose(game); foreach (var val in WaypointElements) { val.TryClose(); val.Dispose(); } WaypointElements.Clear(); }
public void Repopulate() { if (WaypointUtils.doingConfigAction || (WaypointElements.Count > 0 && WaypointElements.Count == utils.WaypointsRel.Length)) { repop = false; return; } Stack <HudElementWaypoint> stack = new Stack <HudElementWaypoint>(); //move waypoints to temp stack within range of updated waypoint count for (int i = 0; i < utils.WaypointsRel.Length; i++) { HudElementWaypoint elem; while (!WaypointElements.TryPop(out elem) && WaypointElements.Count > 0) { ; } stack.Push(elem); } //dispose any extras int c = WaypointElements.Count; for (int i = 0; i < c; i++) { HudElementWaypoint elem; while (!WaypointElements.TryPop(out elem) && WaypointElements.Count > 0) { ; } CloseOnMainThread(elem); DisposeOnMainThread(elem); } //create or update hud elements from temp stack then push back onto main stack var arr = stack.ToArray(); for (int i = 0; i < arr.Length; i++) { CreateOrUpdateHudElemOnMainThread(i, arr); } if (arr.Length > 0) { WaypointElements.PushRange(arr); } repop = false; }
public override void Dispose(ClientMain game) { if (game != null) { base.Dispose(game); } foreach (var val in WaypointElements) { val?.TryClose(); val?.Dispose(); } WaypointElements?.Clear(); }