Пример #1
0
        protected override async UniTask ApplyModificationsAsync(ICharacterActor actor, EasingType easingType, CancellationToken cancellationToken)
        {
            // Execute auto-arrange if adding to scene, no position specified and auto-arrange on add is enabled.
            var autoArrange = Pose is null && !Assigned(ScenePosition) && AssignedPosition is null && !actor.Visible && AssignedVisibility.HasValue && AssignedVisibility.Value && ActorManager.Configuration.AutoArrangeOnAdd;

            var tasks = new List <UniTask>();

            tasks.Add(base.ApplyModificationsAsync(actor, easingType, cancellationToken));
            tasks.Add(ApplyLookDirectionModificationAsync(actor, easingType, cancellationToken));

            if (autoArrange)
            {
                tasks.Add(ActorManager.ArrangeCharactersAsync(!Assigned(LookDirection), Duration, easingType, cancellationToken));
            }

            await UniTask.WhenAll(tasks);
        }
Пример #2
0
        protected override async UniTask ApplyModificationsAsync(ICharacterActor actor, EasingType easingType, CancellationToken cancellationToken)
        {
            var addingActor = !actor.Visible && AssignedVisibility.HasValue && AssignedVisibility.Value;
            var autoArrange = ActorManager.Configuration.AutoArrangeOnAdd && addingActor && AssignedPosition is null;

            var tasks    = new List <UniTask>();
            var duration = actor.Visible ? Duration : 0;

            tasks.Add(base.ApplyModificationsAsync(actor, easingType, cancellationToken));
            tasks.Add(ApplyLookDirectionModificationAsync(actor, duration, easingType, cancellationToken));

            if (autoArrange)
            {
                tasks.Add(ActorManager.ArrangeCharactersAsync(!AssignedLookDirection.HasValue, Duration, easingType, cancellationToken));
            }

            await UniTask.WhenAll(tasks);
        }