private void OnFatBlockRemoved(MyCubeBlock cube) { var battery = cube as MyBatteryBlock; if (battery != null) { ConcurrentCachingList <MyBatteryBlock> batteries; if (GridBatteryMap.TryGetValue(battery.CubeGrid, out batteries)) { batteries.Remove(battery, true); if (batteries.IsEmpty) { battery.CubeGrid.OnFatBlockRemoved -= OnFatBlockRemoved; BatteryListPool.Return(batteries); } } } }
private void OnEntityCreate(MyEntity myEntity) { var battery = myEntity as MyBatteryBlock; if (battery != null) { ConcurrentCachingList <MyBatteryBlock> batteries; if (GridBatteryMap.TryGetValue(battery.CubeGrid, out batteries)) { batteries.Add(battery); batteries.ApplyAdditions(); } else { battery.CubeGrid.OnFatBlockRemoved += OnFatBlockRemoved; batteries = BatteryListPool.Get(); batteries.Add(battery); batteries.ApplyAdditions(); GridBatteryMap[battery.CubeGrid] = batteries; } } }