예제 #1
0
 private static TrafficLightToggle getInstance()
 {
     if (instance == null)
     {
         instance = new TrafficLightToggle();
     }
     return(instance);
 }
예제 #2
0
    private static void CreateTrafficLightColliders()
    {
        // For each pos in TrafficLightsForPos, register an entry in TrafficLightToggle, with position and radius
        foreach (KeyValuePair <long, List <TrafficLightLogic> > trafficLightGroup in TrafficLightsForPos)
        {
            long    posId                   = trafficLightGroup.Key;
            Pos     centerPos               = NodeIndex.getPosById(posId);
            float   maxDistance             = 0f;
            Vector3 centerPosCameraPosition = Game.getCameraPosition(centerPos);

            // Get max distance from crossing
            foreach (TrafficLightLogic trafficLight in trafficLightGroup.Value)
            {
                maxDistance = Mathf.Max(Vector2.Distance(trafficLight.transform.position, centerPosCameraPosition), maxDistance);
            }

            // Double the maxDistance to get a somewhat bigger touch area
            TrafficLightToggle.Add(posId, centerPosCameraPosition, maxDistance * 2f);
        }
        TrafficLightToggle.Start();
    }