Ejemplo n.º 1
0
        public override async UniTask ExecuteAsync(CancellationToken cancellationToken = default)
        {
            var easingType = EasingType.Linear;

            if (Assigned(EasingTypeName) && !Enum.TryParse(EasingTypeName, true, out easingType))
            {
                LogWarningWithPosition($"Failed to parse `{EasingTypeName}` easing.");
            }

            var transitionName = TransitionType.Crossfade;

            if (Assigned(Transition))
            {
                transitionName = Transition.Value;
            }
            var defaultParams    = TransitionUtils.GetDefaultParams(transitionName);
            var transitionParams = Assigned(TransitionParams) ? new Vector4(
                TransitionParams.ElementAtOrNull(0) ?? defaultParams.x,
                TransitionParams.ElementAtOrNull(1) ?? defaultParams.y,
                TransitionParams.ElementAtOrNull(2) ?? defaultParams.z,
                TransitionParams.ElementAtOrNull(3) ?? defaultParams.w) : defaultParams;

            if (Assigned(DissolveTexturePath) && !ObjectUtils.IsValid(preloadedDissolveTexture))
            {
                preloadedDissolveTexture = Resources.Load <Texture2D>(DissolveTexturePath);
            }

            var transition   = new Transition(transitionName, transitionParams, preloadedDissolveTexture);
            var transitionUI = Engine.GetService <IUIManager>().GetUI <UI.ISceneTransitionUI>();

            if (transitionUI != null)
            {
                await transitionUI.TransitionAsync(transition, Duration, easingType, cancellationToken);
            }
            else
            {
                LogErrorWithPosition($"Failed to finish scene transition: `{nameof(UI.ISceneTransitionUI)}` UI is not available.");
            }
        }
Ejemplo n.º 2
0
        protected virtual async UniTask ApplyAppearanceModificationAsync(TActor actor, EasingType easingType, float duration, CancellationToken cancellationToken)
        {
            if (string.IsNullOrEmpty(AssignedAppearance))
            {
                return;
            }

            var transitionName   = !string.IsNullOrEmpty(AssignedTransition) ? AssignedTransition : TransitionType.Crossfade;
            var defaultParams    = TransitionUtils.GetDefaultParams(transitionName);
            var transitionParams = Assigned(TransitionParams) ? new Vector4(
                TransitionParams.ElementAtOrNull(0) ?? defaultParams.x,
                TransitionParams.ElementAtOrNull(1) ?? defaultParams.y,
                TransitionParams.ElementAtOrNull(2) ?? defaultParams.z,
                TransitionParams.ElementAtOrNull(3) ?? defaultParams.w) : defaultParams;

            if (Assigned(DissolveTexturePath) && !ObjectUtils.IsValid(preloadedDissolveTexture))
            {
                preloadedDissolveTexture = Resources.Load <Texture2D>(DissolveTexturePath);
            }
            var transition = new Transition(transitionName, transitionParams, preloadedDissolveTexture);

            await actor.ChangeAppearanceAsync(AssignedAppearance, duration, easingType, transition, cancellationToken);
        }