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;
                }
            }
Esempio n. 2
0
            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;
                }
            }
        public override MyObjectBuilder_SessionComponent GetObjectBuilder()
        {
            var ob = base.GetObjectBuilder() as MyObjectBuilder_SpaceFaunaComponent;

            int currentTime = MySandboxGame.TotalGamePlayTimeInMilliseconds;

            int num = 0;

            foreach (var info in m_allSpawnInfos)
            {
                if (info.SpawnDone)
                {
                    continue;
                }
                num++;
            }
            ob.SpawnInfos.Capacity = num;

            foreach (var info in m_allSpawnInfos)
            {
                if (info.SpawnDone)
                {
                    continue;
                }

                var infoBuilder = new MyObjectBuilder_SpaceFaunaComponent.SpawnInfo();
                infoBuilder.X           = info.Position.X;
                infoBuilder.Y           = info.Position.Y;
                infoBuilder.Z           = info.Position.Z;
                infoBuilder.AbandonTime = Math.Max(0, info.AbandonTime - currentTime);
                infoBuilder.SpawnTime   = Math.Max(0, info.SpawnTime - currentTime);

                ob.SpawnInfos.Add(infoBuilder);
            }

            ob.TimeoutInfos.Capacity = m_allTimeoutInfos.Count;
            foreach (var info in m_allTimeoutInfos)
            {
                var infoBuilder = new MyObjectBuilder_SpaceFaunaComponent.TimeoutInfo();
                infoBuilder.X       = info.Position.X;
                infoBuilder.Y       = info.Position.Y;
                infoBuilder.Z       = info.Position.Z;
                infoBuilder.Timeout = Math.Max(0, info.TimeoutTime - currentTime);

                ob.TimeoutInfos.Add(infoBuilder);
            }

            return(ob);
        }