Beispiel #1
0
        public void ProcessGenerators()
        {
            for (int i = 0; i < generators.Count; i++)
            {
                ref GeneratorInfo generator = ref generators.Data[i];

                if (!eventLayout[generator.EventPos].IsEventActive)
                {
                    // Generator is inactive (and recharging)
                    generator.TimeLeft -= Time.TimeMult;
                }
                else if (generator.SpawnedActor == null || generator.SpawnedActor.ParentScene == null)
                {
                    if (generator.TimeLeft <= 0f)
                    {
                        // Generator is active and is ready to spawn new actor
                        generator.TimeLeft = generator.Delay * Time.FramesPerSecond;

                        int x = generator.EventPos % layoutWidth;
                        int y = generator.EventPos / layoutWidth;

                        ActorBase actor = levelHandler.EventSpawner.SpawnEvent(ActorInstantiationFlags.IsFromGenerator,
                                                                               generator.EventType, x, y, LevelHandler.MainPlaneZ, generator.EventParams);
                        if (actor != null)
                        {
                            levelHandler.AddActor(actor);
                            generator.SpawnedActor = actor;
                        }
                    }
                    else
                    {
                        // Generator is active and recharging
                        generator.TimeLeft -= Time.TimeMult;
                    }
                }
            }