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