Beispiel #1
0
        public void Playback()
        {
            if (isPlayback == false && allAnimatorParameters.Count > selectedParameter &&
                animator.gameObject.activeInHierarchy)
            {
                _coroutine = mono.StartCoroutine(Playback());
            }

            IEnumerator Playback()
            {
                isPlayback = true;
                const float tolerance = 0f;

                while (isPlayback && (
                           Math.Abs(State) > tolerance && Sign == AnimationDirection.ToBeginning ||
                           Math.Abs(State - 1f) > tolerance && Sign == AnimationDirection.ToEnd))
                {
                    var step = State + Time.deltaTime * (int)Sign * frameRate;
                    State = Mathf.Clamp(step, 0, 1f);
                    animator.SetFloat(allAnimatorParameters[selectedParameter], State);
                    yield return(null);
                }

                animator.SetFloat(allAnimatorParameters[selectedParameter], State);

                isPlayback = false;
                actionPlayback_End.Publish();
            }
        }
Beispiel #2
0
        /// <summary>
        /// Вызывать в Update.
        /// При клике по объекту происходит выделение одного объекта.
        /// При выделении нескольких объектов создание меша для их получения произойдет после того как будет отпущена кнопка выделения <see cref="SELECTION_BUTTON"/>.
        /// <remarks> После отпускания кнопки выделения, вызывается событие <see cref="selectionCompletedAction"/>, а все выделенные объекты помещаются в <see cref="selectedObjects"/>. </remarks>
        /// </summary>
        public void MultipleSelection_UppingMode()
        {
            if (_canDrawing == false)
            {
                return;
            }

            var mousePosition = Input.mousePosition;

            if (Input.GetButtonDown(SELECTION_BUTTON))
            {
                selectedObjects.Clear();
                startPosition = mousePosition;
            }

            if (Input.GetButtonUp(SELECTION_BUTTON))
            {
                endPosition = mousePosition;
                if (startPosition == endPosition)
                {
                    SingleSelection();
                }
                else if (startPosition.x != endPosition.x && startPosition.y != endPosition.y)
                {
                    UpdateMesh();
                    Toolbox.Get <ManagerUpdateComponent>().StartCoroutine(SelectionCompleted());
                }

                IEnumerator SelectionCompleted()
                {
                    yield return(new WaitForFixedUpdate());

                    ResetMesh();
                    selectionCompletedAction.Publish();
                }
            }
        }
        public static void Initialize()
        {
            // Получаем все значения в виде листа.
            var keys = Instance._data.Values.ToList();

            for (int i = 0; i < keys.Count; i++)
            {
                var item = keys[i];
                // Вызов метода инициализации если класс помечен интерфейсом.
                if (item is IInitialization init)
                {
                    init.Initialization();
                    // Если метод инициализации добавил в тулбокс новое значение, то для их инициализации требуется обновить список ключей.
                    if (keys.Count != Instance._data.Count)
                    {
                        keys = Instance._data.Values.ToList();
                    }
                }
            }

            SafelyGettingAction.Publish();
        }
 private void ExecuteAction() => action.Publish();