private void ChangeReAdds() { for (int i = CompReAdds.Count - 1; i >= 0; i--) { var reAdd = CompReAdds[i]; if (reAdd.Ai.Version != reAdd.AiVersion || Tick - reAdd.AddTick > 1200) { CompReAdds.RemoveAtFast(i); Log.Line($"ChangeReAdds reject: Age:{Tick - reAdd.AddTick} - Version:{reAdd.Ai.Version}({reAdd.AiVersion}) - Marked/Closed:{reAdd.Ai.MarkedForClose}({reAdd.Ai.Closed})"); continue; } if (!GridToInfoMap.ContainsKey(reAdd.Comp.MyCube.CubeGrid)) { continue; } if (reAdd.Comp.Ai != null && reAdd.Comp.Entity != null) { reAdd.Comp.OnAddedToSceneTasks(); } //else Log.Line($"ChangeReAdds nullSkip: Version:{reAdd.Ai.Version}({reAdd.AiVersion}) - Marked/Closed:{reAdd.Ai.MarkedForClose}({reAdd.Ai.Closed})"); CompReAdds.RemoveAtFast(i); } }
private void StartComps() { for (int i = 0; i < CompsToStart.Count; i++) { var weaponComp = CompsToStart[i]; if (weaponComp.MyCube.CubeGrid.IsPreview || CompRestricted(weaponComp)) { PlatFormPool.Return(weaponComp.Platform); weaponComp.Platform = null; CompsToStart.Remove(weaponComp); continue; } if (weaponComp.MyCube.CubeGrid.Physics == null && !weaponComp.MyCube.CubeGrid.MarkedForClose && weaponComp.MyCube.BlockDefinition.HasPhysics) { continue; } QuickDisableGunsCheck = true; if (weaponComp.Platform.State == MyWeaponPlatform.PlatformState.Fresh) { if (weaponComp.MyCube.MarkedForClose) { CompsToStart.Remove(weaponComp); continue; } if (!GridToInfoMap.ContainsKey(weaponComp.MyCube.CubeGrid)) { continue; } if (ShieldApiLoaded) { SApi.AddAttacker(weaponComp.MyCube.EntityId); } IdToCompMap[weaponComp.MyCube.EntityId] = weaponComp; weaponComp.MyCube.Components.Add(weaponComp); CompsToStart.Remove(weaponComp); } else { Log.Line($"comp didn't match CompsToStart condition, removing"); CompsToStart.Remove(weaponComp); } } CompsToStart.ApplyRemovals(); }