/// <summary>
    /// Фунция проверяющая наличие элемента в пуле
    /// </summary>
    /// <param name="_searchParameters">Параметры поиска</param>
    /// <returns>Наличие или отсутствие в пуле</returns>
    public new bool IsPoolObjectExist(PoolObjectParameters _searchParameters)
    {
        //Конвертируем полученные параметры в нужный формат
        PoolOfConnectionObjectParameters searchParameters = (PoolOfConnectionObjectParameters)_searchParameters;

        //Перебираем пул активных элементов
        for (int i = 0; i < _poolOfEnabled.Count; i++)
        {
            if ((PoolOfConnectionObjectParameters)_poolOfEnabled[i].GetPoolObjectParameters() == searchParameters)
            {
                //Возвратить, что поиск окончился успешно
                return(true);
            }
        }
        //Возвратить, что поиск окончился неуспешно
        return(false);
    }
    /// <summary>
    /// Функция, возвращающая элемент пула
    /// </summary>
    /// <param name="_searchParameters">Параметры поиска</param>
    /// <param name="_resultObject">Возращаемый элемент</param>
    /// <returns>Успешность поиска</returns>
    public new bool TryGetPoolObject(PoolObjectParameters _searchParameters, ref IPoolObject _resultObject)
    {
        //Конвертируем полученные параметры в нужный формат
        PoolOfConnectionObjectParameters searchParameters = (PoolOfConnectionObjectParameters)_searchParameters;

        //Перебираем пул активных элементов
        for (int i = 0; i < _poolOfEnabled.Count; i++)
        {
            //Если мы нашли нужный элемент
            if ((PoolOfConnectionObjectParameters)_poolOfEnabled[i].GetPoolObjectParameters() == searchParameters)
            {
                //Заполнить возвращаемый элемент
                _resultObject = _poolOfEnabled[i];

                //Возвратить, что поиск окончился успешно
                return(true);
            }
        }
        //Возвратить, что поиск окончился неуспешно
        return(false);
    }
    /// <summary>
    /// Функция для включения и инициализации объекта
    /// </summary>
    /// <param name="_parameters">Параметры, необходимые для инициализации (необязательно)</param>
    /// <returns>Успешность инициализации</returns>
    public bool Enable(PoolObjectParameters _parameters)
    {
        //Сохраняем локально параметры индексирования элемента, конвертируя в нужный формат
        _rects = (PoolOfConnectionObjectParameters)_parameters;

        //Если произошла ошибочная ситуация - возвратить неудачный результат
        if (_rects.rect1 == null || _rects.rect2 == null || _rects.rect1 == _rects.rect2)
        {
            return(false);
        }

        //Сбрасываем флаг режима отслеживания
        _moving = false;

        //Подписываемся на события изменения состояний связанных прямоугольников
        _rects.rect1.ObjectDisabledEvent.AddListener(DisableObj);
        _rects.rect2.ObjectDisabledEvent.AddListener(DisableObj);

        _rects.rect1.RectStartMoving.AddListener(EnableMoving);
        _rects.rect2.RectStartMoving.AddListener(EnableMoving);

        _rects.rect1.RectEndMoving.AddListener(DisableMoving);
        _rects.rect2.RectEndMoving.AddListener(DisableMoving);

        //Обновляем позиции для отрисовки линии связи
        UpdatePositions();

        //Включаем объект
        gameObject.SetActive(true);

        //Вызываем событие включения объекта
        ObjectEnabledEvent.Invoke(this);

        //Возвращаем успешный результат выполнения функции
        return(true);
    }