private void CreateTransitionWhenActivityIsOutOfBounds(AnimatorStateMachine machine, AnimatorState defaultState) { var transition = machine.AddAnyStateTransition(defaultState); SharedLayerUtils.SetupDefaultTransition(transition); foreach (var layer in _comboLayers) { transition.AddCondition(AnimatorConditionMode.NotEqual, layer.stageValue, _activityStageName); } }
public void Create() { EditorUtility.DisplayProgressBar("GestureCombo", "Clearing eyes blinking override layer", 0f); var machine = ReinitializeLayer(); if (!_manifestBindings.Any(manifest => manifest.Manifest.RequiresBlinking())) { return; } var enableBlinking = CreateBlinkingState(machine, VRC_AnimatorTrackingControl.TrackingType.Tracking, _emptyClip); var disableBlinking = CreateBlinkingState(machine, VRC_AnimatorTrackingControl.TrackingType.Animation, _emptyClip); var requireSuspension = _activityStageName != null; if (requireSuspension) { var suspend = CreateSuspendState(machine, _emptyClip); if (_activityStageName != null) { CreateTransitionWhenActivityIsOutOfBounds(enableBlinking, suspend); CreateTransitionWhenActivityIsOutOfBounds(disableBlinking, suspend); } foreach (var layer in _comboLayers) { var transition = suspend.AddTransition(enableBlinking); SharedLayerUtils.SetupDefaultTransition(transition); if (_activityStageName != null) { transition.AddCondition(AnimatorConditionMode.Equals, layer.stageValue, _activityStageName); } } } var toDisable = enableBlinking.AddTransition(disableBlinking); SetupBlinkingTransition(toDisable); toDisable.AddCondition(AnimatorConditionMode.Greater, _analogBlinkingUpperThreshold, "_Hai_GestureAnimBlink"); var toEnable = disableBlinking.AddTransition(enableBlinking); SetupBlinkingTransition(toEnable); toEnable.AddCondition(AnimatorConditionMode.Less, _analogBlinkingUpperThreshold, "_Hai_GestureAnimBlink"); }
private void SetupLipsyncTransition(AnimatorStateTransition transition) { SharedLayerUtils.SetupDefaultTransition(transition); transition.exitTime = 0f; transition.hasExitTime = true; }