public SpawnInfo(MyObjectBuilder_SpaceFaunaComponent.SpawnInfo info, int currentTime)
 {
     SpawnTime = currentTime + info.SpawnTime;
     AbandonTime = currentTime + info.SpawnTime;
     Position = new Vector3D(info.X, info.Y, info.Z);
     Planet = MyGamePruningStructure.GetClosestPlanet(Position);
     SpawnDone = false;
 }
 public SpawnInfo(MyObjectBuilder_SpaceFaunaComponent.SpawnInfo info, int currentTime)
 {
     SpawnTime = currentTime + info.SpawnTime;
     AbandonTime = currentTime + info.SpawnTime;
     Position = new Vector3D(info.X, info.Y, info.Z);
     Planet = MyGravityProviderSystem.GetNearestPlanet(Position);
     SpawnDone = false;
 }
        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;
        }
        public override void Init(MyObjectBuilder_SessionComponent sessionComponent)
        {
            base.Init(sessionComponent);

            m_obForLoading = sessionComponent as MyObjectBuilder_SpaceFaunaComponent;
        }
 public SpawnTimeoutInfo(MyObjectBuilder_SpaceFaunaComponent.TimeoutInfo info, int currentTime)
 {
     TimeoutTime = currentTime + info.Timeout;
     Position = new Vector3D(info.X, info.Y, info.Z);
     var planet = MyGamePruningStructure.GetClosestPlanet(Position);
     AnimalSpawnInfo = MySpaceBotFactory.GetDayOrNightAnimalSpawnInfo(planet, Position);
     if (AnimalSpawnInfo == null)
     {
         TimeoutTime = currentTime;
     }
 }
 public SpawnTimeoutInfo(MyObjectBuilder_SpaceFaunaComponent.TimeoutInfo info, int currentTime)
 {
     TimeoutTime = currentTime + info.Timeout;
     Position = new Vector3D(info.X, info.Y, info.Z);
     var planet = MyGravityProviderSystem.GetNearestPlanet(Position);
     AnimalSpawnInfo = MySpaceBotFactory.GetDayOrNightAnimalSpawnInfo(planet, Position);
     if (AnimalSpawnInfo == null)
     {
         TimeoutTime = currentTime;
     }
 }