public bool SetUpTimedTrafficLight(ref TrafficLightSimulation sim,
                                           IEnumerable <ushort> nodeGroup)
        {
            if (sim.IsManualLight())
            {
                DestroyManualTrafficLight(ref sim);
            }

            if (sim.IsTimedLight())
            {
                return(false);
            }

            Constants.ServiceFactory.NetService.ProcessNode(
                sim.nodeId,
                (ushort nId, ref NetNode node) => {
                Constants.ManagerFactory.TrafficLightManager.AddTrafficLight(
                    nId,
                    ref node);
                return(true);
            });

            Constants.ManagerFactory.CustomSegmentLightsManager.AddNodeLights(sim.nodeId);
            sim.timedLight = new TimedTrafficLights(sim.nodeId, nodeGroup);
            sim.type       = TrafficLightSimulationType.Timed;
            return(true);
        }
        public bool HasActiveSimulation(ushort nodeId)
        {
            TrafficLightSimulation sim = TrafficLightSimulations[nodeId];

            if (sim == null)
            {
                return(false);
            }
            return(sim.IsManualLight() || sim.IsTimedLightActive());
        }
        public bool DestroyManualTrafficLight(ref TrafficLightSimulation sim)
        {
            if (sim.IsTimedLight())
            {
                return(false);
            }

            if (!sim.IsManualLight())
            {
                return(false);
            }

            sim.type = TrafficLightSimulationType.None;
            Constants.ManagerFactory.CustomSegmentLightsManager.RemoveNodeLights(sim.nodeId);
            return(true);
        }