public override void BeforeStart() { base.BeforeStart(); if (m_obForLoading == null) { return; } int currentTime = MySandboxGame.TotalGamePlayTimeInMilliseconds; m_allSpawnInfos.Capacity = m_obForLoading.SpawnInfos.Count; foreach (var info in m_obForLoading.SpawnInfos) { var spawnInfo = new SpawnInfo(info, currentTime); m_allSpawnInfos.Add(spawnInfo); m_spawnInfoGrid.AddPoint(ref spawnInfo.Position, spawnInfo); } m_allTimeoutInfos.Capacity = m_obForLoading.TimeoutInfos.Count; foreach (var info in m_obForLoading.TimeoutInfos) { var timeoutInfo = new SpawnTimeoutInfo(info, currentTime); if (timeoutInfo.AnimalSpawnInfo == null) // do not add invalid timeout objects { continue; } m_allTimeoutInfos.Add(timeoutInfo); m_timeoutInfoGrid.AddPoint(ref timeoutInfo.Position, timeoutInfo); } m_obForLoading = null; }
void BotCharacterDied(MyCharacter obj) { Vector3D position = obj.PositionComp.GetPosition(); obj.CharacterDied -= BotCharacterDied; int timeoutNum = 0; var enumerator = m_timeoutInfoGrid.GetPointsCloserThan(ref position, TIMEOUT_DIST); while (enumerator.MoveNext()) { timeoutNum++; enumerator.Current.AddKillTimeout(); } if (timeoutNum == 0) { int currentTime = MySandboxGame.TotalGamePlayTimeInMilliseconds; var newInfo = new SpawnTimeoutInfo(position, currentTime); newInfo.AddKillTimeout(); m_timeoutInfoGrid.AddPoint(ref position, newInfo); m_allTimeoutInfos.Add(newInfo); } }
public override void BeforeStart() { base.BeforeStart(); if (m_obForLoading == null) return; int currentTime = MySandboxGame.TotalGamePlayTimeInMilliseconds; m_allSpawnInfos.Capacity = m_obForLoading.SpawnInfos.Count; foreach (var info in m_obForLoading.SpawnInfos) { var spawnInfo = new SpawnInfo(info, currentTime); m_allSpawnInfos.Add(spawnInfo); m_spawnInfoGrid.AddPoint(ref spawnInfo.Position, spawnInfo); } m_allTimeoutInfos.Capacity = m_obForLoading.TimeoutInfos.Count; foreach (var info in m_obForLoading.TimeoutInfos) { var timeoutInfo = new SpawnTimeoutInfo(info, currentTime); if (timeoutInfo.AnimalSpawnInfo == null) // do not add invalid timeout objects continue; m_allTimeoutInfos.Add(timeoutInfo); m_timeoutInfoGrid.AddPoint(ref timeoutInfo.Position, timeoutInfo); } m_obForLoading = null; }