Example #1
0
    private void TryClone()
    {
        if (!SignalManager.IsAllowedCreateSignal)
        {
            return;
        }

        if (SignalManager.IsRandomCloning)
        {
            bool doClone = Convert.ToBoolean(UnityEngine.Random.Range(0, 2));
            if (!doClone)
            {
                return;
            }
        }

        TeeShape teeShape = _currentShape as TeeShape;

        if (teeShape != null && _currentWaypointIndex == 2 && _path.Count == 3)// у клонированного сигнала путь содержит только 2 точки, поэтому он не пройдет проверку:  _path.Count == 3
        {
            var signalGO = (Instantiate(_prefab, teeShape.CenterSignalPoint, new Quaternion(0, 0, 0, 0)) as GameObject);
            var signal   = signalGO.GetComponent <Signal>();

            signal._path = teeShape.GetSecondPath(_prevOutDirection);
            var dir = teeShape.GetSecondOutDirection(_prevOutDirection);

            signal._prevOutDirection = dir;
            signal.transform.SetY(PosY);
            signal._isClonedInCurrentShape = true;
            signal._parentSignal           = this;
            signal._prefab = _prefab;

            signal._traversedShapes.AddRange(_traversedShapes);
        }
    }
 /// <summary>
 /// Вращает teeShape, пока он не будет соединен с другим, если это возможно. Если teeShape расположен в ноде с коннектором, то будет требоваться соединение еще и с коннектором
 /// </summary>
 private static void FastRotateToConnection(TeeShape teeShape, Direction direction)
 {
     for (int i = 0; i < 4; i++)
     {
         if (teeShape.HasConnection(direction))
         {
             var connector = ConnectorsManager.FindConnectorWithNearestShape(teeShape);
             if (connector == null)
             {
                 return;
             }
             if (teeShape.HasConnection(connector.CurrentDirection))
             {
                 return;
             }
         }
         if (i < 3)
         {
             teeShape.FastRotate();
         }
     }
     Debug.LogError("connection not found");
 }