/// <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); }