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