private void SplitMonitor() { foreach (var pair in CheckForSplits) { if (WatchForSplits.Add(pair.Key)) { pair.Key.OnGridSplit += GridSplitWatch; } else if (Tick - pair.Value > 120) { _tmpWatchGridsToRemove.Add(pair.Key); } } for (int i = 0; i < _tmpWatchGridsToRemove.Count; i++) { var grid = _tmpWatchGridsToRemove[i]; grid.OnGridSplit -= GridSplitWatch; WatchForSplits.Remove(grid); CheckForSplits.Remove(grid); } _tmpWatchGridsToRemove.Clear(); foreach (var parent in GetParentGrid) { ParentGrid oldParent; if (Tick - parent.Value.Age > 120) { GetParentGrid.TryRemove(parent.Key, out oldParent); } } }
private void GridSplitWatch(MyCubeGrid parent, MyCubeGrid child) { GetParentGrid[child] = new ParentGrid { Parent = parent, Age = Tick }; GetParentGrid.ApplyAdditionsAndModifications(); }
private void GridSplitWatch(MyCubeGrid parent, MyCubeGrid child) { GetParentGrid.TryAdd(child, new ParentGrid { Parent = parent, Age = Tick }); }