Example #1
0
        public void DoShowBegin(TransitionBase transition, TransitionInputParameters transitionParameters, AppearanceParameters parameters)
        {
            var needToPlay = (this.id > 0 || this.playType == PlayType.Replace);

            if (this.playType == PlayType.Replace)
            {
                WindowSystem.AudioStop(null, this.clipType, this.id);
            }

            if (transition != null)
            {
                if (needToPlay == true)
                {
                    WindowSystem.AudioPlay(this.window, this.clipType, this.id, this.playType == PlayType.Replace);
                    transition.SetResetState(transitionParameters, this.window, null);
                    transition.Play(null, this.window, transitionParameters, forward: true, callback: () => {
                        parameters.Call();
                    });
                }
            }
            else
            {
                if (needToPlay == true)
                {
                    WindowSystem.AudioPlay(this.window, this.clipType, this.id, this.playType == PlayType.Replace);
                }
                parameters.Call();
            }
        }
Example #2
0
        public void TransitionGroupAddTransition()
        {
            tlog.Debug(tag, $"TransitionGroupAddTransition START");

            var testingTarget = new TransitionGroup();

            Assert.IsNotNull(testingTarget, "Return a null object of FontClient");
            Assert.IsInstanceOf <TransitionGroup>(testingTarget, "Should be an instance of TransitionGroup type.");

            try
            {
                using (TransitionBase tb = new TransitionBase())
                {
                    tb.TimePeriod    = new TimePeriod(300);
                    tb.AlphaFunction = new AlphaFunction(AlphaFunction.BuiltinFunctions.Bounce);

                    testingTarget.AddTransition(tb);
                }
            }
            catch (Exception e)
            {
                tlog.Debug(tag, e.Message.ToString());
                Assert.Fail("Caught Exception : Failed!");
            }

            testingTarget.Dispose();
            tlog.Debug(tag, $"TransitionGroupAddTransition END (OK)");
        }
 /// <summary>
 /// Workaround for ObjectReference issues with ScriptableObjects (See ScriptableObjectContainer for details)
 /// </summary>
 /// <param name="objectReferences"></param>
 public override void SetReferencesFromContainer(UnityEngine.Object[] objectReferences)
 {
     if (objectReferences != null && objectReferences.Length == 1)
     {
         Target = objectReferences[0] as TransitionBase;
     }
 }
Example #4
0
        public void OnDirectionChanged(Direction oldDirection, Direction newDirection)
        {
            if (Bookshelf == null || Book3D == null)
            {
                throw new ArgumentException("bookshelf and book3d arguments cannot be null");
            }


            if (newDirection == Direction.Center)
            {
                LastNextBook3D = NextBook3D;
                NextBook3D     = Book3D;
                SwipeMode      = SwipeMode.Book;
            }
            else
            {
                if (NextBook3D != null && NextBook3D.Model != null)
                {
                    NextBook3D.Visibility = true;
                }
                NextBookIndex = Bookshelf.Books3D.Items.IndexOf(Book3D);
                if (newDirection == Direction.Left)
                {
                    NextBookIndex--;
                }
                if (newDirection == Direction.Right)
                {
                    NextBookIndex++;
                }

                if (NextBookIndex > 0 && NextBookIndex < Bookshelf.Books3D.Items.Count &&
                    Bookshelf.Books3D.Items.ElementAt(NextBookIndex).Model != null)
                {
                    SwipeMode  = SwipeMode.Book;
                    NextBook3D = (Book3DViewModel)Bookshelf.Books3D.Items.ElementAt(NextBookIndex);
                }
                else
                {
                    SwipeMode = SwipeMode.Shelf;
                }
            }

            if (SwipeMode == SwipeMode.Book)
            {
                var book = HBS.CreateBook(NextBook3D);
                openBookTransition = new OpenBookTransition(NextBook3D, book);

                //only left or right would actually open a new book
                if (newDirection != Direction.Center)
                {
                    openBookTransition.OnTransitionStarting();
                }
                activeTransition = openBookTransition;
            }
            if (SwipeMode == SwipeMode.Shelf)
            {
                activeTransition = new ShelfSwipeTransition(HBS.ViewModel.ShelfViewModel);
                HBS.ViewModel.BookFlyout3dVM.Visibility = false;
            }
        }
Example #5
0
 public void Apply(TransitionBase transition, TransitionInputParameters parameters, bool forward, float value, bool reset)
 {
     if (reset == true)
     {
         transition.SetResetState(parameters, this.window, null);
     }
     transition.Set(this.window, parameters, null, forward: forward, value: value);
 }
        /// <summary>
        /// Instantiate transition from this step
        /// </summary>
        protected override TransitionBase Instantiate(IWorkplanContext context)
        {
            var engine        = Workflow.CreateEngine(Workplan, context);
            var indexResolver = _indexResolver ??= TransitionBase.CreateIndexResolver(OutputDescriptions);
            var transition    = new SubworkflowTransition(engine, indexResolver);

            return(transition);
        }
			public override void Setup(TransitionBase.ParametersBase defaults) {

				var param = defaults as Parameters;
				if (param == null) return;

				// Place params installation here
				this.inState = new State(param.inState);
                this.outState = new State(param.outState);
                this.resetState = new State(param.resetState);

			}
Example #8
0
 public ReverseTransition(
     TransitionBase <TStateId> wrappedTransition,
     bool shouldInitWrappedTransition = true)
     : base(
         from: wrappedTransition.to,
         to: wrappedTransition.from,
         forceInstantly: wrappedTransition.forceInstantly)
 {
     this.wrappedTransition           = wrappedTransition;
     this.shouldInitWrappedTransition = shouldInitWrappedTransition;
 }
Example #9
0
        public void TransitionBaseConstructor()
        {
            tlog.Debug(tag, $"TransitionBaseConstructor START");

            var testingTarget = new TransitionBase();

            Assert.IsNotNull(testingTarget, "Can't create success object TransitionBase");
            Assert.IsInstanceOf <TransitionBase>(testingTarget, "Should be an instance of TransitionBase type.");

            tlog.Debug(tag, $"TransitionBaseConstructor END (OK)");
        }
        /// <summary>
        /// Creates a <see cref="TaskTransition{T}"/> for this activity type
        /// </summary>
        protected override TransitionBase Instantiate(IWorkplanContext context)
        {
            if (context.IsDisabled(this))
            {
                return(new NullTransition());
            }

            // Create transition
            var indexResolver = _indexResolver ?? (_indexResolver = TransitionBase.CreateIndexResolver(OutputDescriptions));

            return(new TaskTransition <TActivity>(Parameters, indexResolver));
        }
Example #11
0
        private const int FramesPerSecond = 60 * 4; //Probably need more than the 60 refresh rate, but 4 per frame may be excessive


        public static ITimeInterpolator GetInterpolator(this TransitionBase transition)
        {
            var spring = transition.Curve as Spring;

            if (spring != null)
            {
                return(new SpringInterpolator(spring));
            }

            var easing = transition.Curve as EasingCurve ?? new EasingCurve();

            return(new EasingInterpolator(easing));
        }
Example #12
0
        public static long CalculateDuration(this TransitionBase transition)
        {
            var spring = transition.Curve as Spring;

            if (spring != null)
            {
                const int framesPerSecond = FramesPerSecond;
                var       seconds         = spring.Steps(framesPerSecond).Count() / (double)framesPerSecond;

                return((long)(seconds * 1000));
            }

            return((long)transition.Duration.TotalMilliseconds);
        }
        protected virtual void OnEnable()
        {
            _transitionBase = (TransitionBase)target;

            _initForTransitionInProperty = serializedObject.FindProperty("InitForTransitionIn");
            _autoRunProperty             = serializedObject.FindProperty("AutoRun");
            _repeatWhenEnabledProperty   = serializedObject.FindProperty("RepeatWhenEnabled");
            _transitionInConfigProperty  = serializedObject.FindProperty("TransitionInConfig");
            _transitionOutConfigProperty = serializedObject.FindProperty("TransitionOutConfig");

#if GAME_FRAMEWORK
            // setup actions types
            _gameActionClassDetails = GameFramework.GameStructure.Game.Editor.GameActions.GameActionEditorHelper.FindTypesClassDetails();
#endif
        }
Example #14
0
        public void TransitionBaseTimePeriod()
        {
            tlog.Debug(tag, $"TransitionBaseTimePeriod START");

            var testingTarget = new TransitionBase();

            Assert.IsNotNull(testingTarget, "Can't create success object TransitionBase");
            Assert.IsInstanceOf <TransitionBase>(testingTarget, "Should be an instance of TransitionBase type.");

            Assert.IsNotNull(testingTarget.TimePeriod);

            testingTarget.TimePeriod = new TimePeriod(300);
            Assert.IsInstanceOf <TimePeriod>(testingTarget.TimePeriod, "Should be an instance of TimePeriod type.");

            testingTarget.Dispose();
            tlog.Debug(tag, $"TransitionBaseTimePeriod END (OK)");
        }
Example #15
0
        public void TransitionBaseAlphaFunction()
        {
            tlog.Debug(tag, $"TransitionBaseAlphaFunction START");

            var testingTarget = new TransitionBase();

            Assert.IsNotNull(testingTarget, "Can't create success object TransitionBase");
            Assert.IsInstanceOf <TransitionBase>(testingTarget, "Should be an instance of TransitionBase type.");

            Assert.IsNotNull(testingTarget.AlphaFunction);

            testingTarget.AlphaFunction = new AlphaFunction(AlphaFunction.BuiltinFunctions.Bounce);
            Assert.IsInstanceOf <AlphaFunction>(testingTarget.AlphaFunction, "Should be an instance of TimePeriod type.");

            testingTarget.Dispose();
            tlog.Debug(tag, $"TransitionBaseAlphaFunction END (OK)");
        }
Example #16
0
        /// <summary>
        /// 读取指定的story.
        /// </summary>
        /// <param name="storyName">story名称.</param>
        /// <param name="userStore">如果参数为null, 创建一个新的.</param>
        internal static void ReadStoryFile(string storyName, IsolatedStorageFile userStore = null)
        {
            if (userStore == null)
            {
                userStore = IsolatedStorageFile.GetUserStoreForApplication();
            }
            using (IsolatedStorageFileStream fileStream = userStore.OpenFile(storyName + ".xml", System.IO.FileMode.Open))
            {
                XDocument xdoc            = XDocument.Load(fileStream);
                var       picturesLibrary = new MediaLibrary().Pictures;

                // Load all photos.
                foreach (XElement photoElement in xdoc.Root.Elements())
                {
                    try
                    {
                        Photo photo = new Photo()
                        {
                            Name = photoElement.Attribute("Name").Value,
                        };
                        string photoDurationString = photoElement.Attribute("PhotoDuration").Value;
                        int    photoDuration       = int.Parse(photoDurationString);
                        photo.PhotoDuration = TimeSpan.FromSeconds(photoDuration);
                        XElement transitionElement = photoElement.Element("Transition");
                        if (transitionElement != null)
                        {
                            photo.Transition = TransitionBase.Load(photoElement.Element("Transition"));
                        }
                        Picture picture = picturesLibrary.Where(p => p.Name == photo.Name).FirstOrDefault();
                        if (picture == null)
                        {
                            // 如果找不到原文件,可能已经被删除了
                            // TODO: 我们需要记录错误吗? 我们是继续下一个图片还是抛出异常?
                            continue;
                        }
                        photo.ThumbnailStream = picture.GetThumbnail();
                        App.MediaCollection.Add(photo);
                    }
                    catch
                    {
                        // TODO: 我们需要记录错误吗? 我们是继续下一个图片还是抛出异常?
                        continue;
                    }
                }
            }
        }
        public IEnumerator DemoCameraInternal(TransitionBase transitionBase)
        {
            // make sure these are set in the materials.
            SetColor(_color);
            SetShowTexture(_showTexture);
            SetWipeTexture();

            float transitionTime = TransitionHelper.GetTransitionOutTime(new List <TransitionBase> {
                transitionBase
            });

            transitionBase.InitTransitionOut();
            transitionBase.TransitionOut();
            yield return(new WaitForSeconds(transitionTime + 0.5f));

            transitionBase.TransitionIn();
        }
        public static long CalculateDuration(this TransitionBase transition)
        {
            if (transition is null)
            {
                throw new ArgumentNullException(nameof(transition));
            }

            if (transition.Curve is Spring spring)
            {
                const int framesPerSecond = FramesPerSecond;
                var       seconds         = spring.Steps(framesPerSecond).Count() / (double)framesPerSecond;

                return((long)(seconds * 1000));
            }

            return((long)transition.Duration.TotalMilliseconds);
        }
        private const int FramesPerSecond = 60 * 4; //Probably need more than the 60 refresh rate, but 4 per frame may be excessive


        public static ITimeInterpolator GetInterpolator(this TransitionBase transition)
        {
            if (transition is null)
            {
                throw new ArgumentNullException(nameof(transition));
            }

            var spring = transition.Curve as Spring;

            if (spring != null)
            {
                return(new SpringInterpolator(spring));
            }

            var easing = transition.Curve as EasingCurve ?? new EasingCurve();

            return(new EasingInterpolator(easing));
        }
Example #20
0
        void ITransitionHandler.Attach(TransitionBase transition)
        {
            if (ReferenceEquals(_transition, transition))
            {
                return;
            }

            if (_transition != null)
            {
                _transition.Transitioning -= OnTransitioning;
            }

            _transition = transition;

            if (_transition != null)
            {
                _transition.Transitioning += OnTransitioning;
            }
        }
Example #21
0
        public void TransitionBaseCreateTransition()
        {
            tlog.Debug(tag, $"TransitionBaseCreateTransition START");

            var testingTarget = new TransitionBase();

            Assert.IsNotNull(testingTarget, "Can't create success object TransitionBase");
            Assert.IsInstanceOf <TransitionBase>(testingTarget, "Should be an instance of TransitionBase type.");

            using (View view = new View())
            {
                var result = testingTarget.CreateTransition(view, true);
                Assert.IsNotNull(result, "Can't create success object TransitionItemBase");
                Assert.IsInstanceOf <TransitionItemBase>(result, "Should be an instance of TransitionItemBase type.");
            }

            testingTarget.Dispose();
            tlog.Debug(tag, $"TransitionBaseCreateTransition END (OK)");
        }
Example #22
0
        public void TransitionGroupItemConstructor()
        {
            tlog.Debug(tag, $"TransitionGroupItemConstructor START");

            using (View view = new View()
            {
                Size = new Size(100, 200)
            })
            {
                using (TimePeriod timePeriod = new TimePeriod(300))
                {
                    using (AlphaFunction alphaFunction = new AlphaFunction(AlphaFunction.BuiltinFunctions.Default))
                    {
                        List <TransitionBase> list = new List <TransitionBase>();

                        using (TransitionBase tb = new TransitionBase())
                        {
                            tb.TimePeriod    = new TimePeriod(300);
                            tb.AlphaFunction = new AlphaFunction(AlphaFunction.BuiltinFunctions.Bounce);

                            list.Add(tb);

                            var testingTarget = new TransitionGroupItem(view, list, true, true, true, true, timePeriod, alphaFunction);
                            Assert.IsNotNull(testingTarget, "Can't create success object TransitionGroupItem.");
                            Assert.IsInstanceOf <TransitionGroupItem>(testingTarget, "Should return TransitionGroupItem instance.");

                            tlog.Debug(tag, "TransitionCount : " + testingTarget.TransitionCount);

                            var result = testingTarget.GetTransitionAt(0);
                            tlog.Debug(tag, "GetTransitionAt : " + result);

                            testingTarget.Dispose();
                        }

                        list = null;
                    }
                }
            }

            tlog.Debug(tag, $"TransitionGroupItemConstructor END (OK)");
        }
Example #23
0
        public void PageDisappearingTransition()
        {
            tlog.Debug(tag, $"PageDisappearingTransition START");

            var testingTarget = new MyPage();

            Assert.IsNotNull(testingTarget, "null handle");
            Assert.IsInstanceOf <Page>(testingTarget, "Should return Page instance.");

            TransitionBase tb = new TransitionBase()
            {
                AlphaFunction = new AlphaFunction(Tizen.NUI.AlphaFunction.BuiltinFunctions.EaseOut),
                TimePeriod    = new TimePeriod(300)
            };

            testingTarget.DisappearingTransition = tb;
            tlog.Debug(tag, "DisappearingTransition : " + testingTarget.DisappearingTransition);

            testingTarget.Dispose();
            tlog.Debug(tag, $"PageDisappearingTransition END (OK)");
        }
        /// <summary>
        /// Perform the action
        /// </summary>
        /// <returns></returns>
        protected override void Execute(bool isStart)
        {
            // use cached version unless target could be dynamic (TargetType.CollidingGameObject)
            var targetFinal = _cachedFinalTarget;

            if (targetFinal == null)
            {
                targetFinal = GameActionHelper.ResolveTargetComponent <TransitionBase>(TargetType, this, Target);
                if (TargetType != GameActionHelper.TargetType.CollidingGameObject)
                {
                    _cachedFinalTarget = targetFinal;
                }
            }

            if (targetFinal == null)
            {
                Debug.LogWarningFormat("No Target is specified for the action {0} on {1}", GetType().Name, Owner.gameObject.name);
            }
            if (targetFinal != null)
            {
                targetFinal.TransitionOut();
            }
        }
        public void ApplicationTransitionManagerApplicationFrameType()
        {
            tlog.Debug(tag, $"ApplicationTransitionManagerApplicationFrameType START");

            var testingTarget = ApplicationTransitionManager.Instance;

            Assert.IsNotNull(testingTarget, "Return a null object of FontClient");
            Assert.IsInstanceOf <ApplicationTransitionManager>(testingTarget, "Should be an instance of ApplicationTransitionManager type.");

            testingTarget.ApplicationFrameType = FrameType.FrameBroker;
            tlog.Debug(tag, "FrameType : " + testingTarget.ApplicationFrameType);

            using (TransitionBase appearing = new TransitionBase())
            {
                appearing.TimePeriod    = new TimePeriod(300);
                appearing.AlphaFunction = new AlphaFunction(AlphaFunction.BuiltinFunctions.EaseIn);

                tlog.Debug(tag, "AppearingTransition : " + testingTarget.AppearingTransition);

                testingTarget.AppearingTransition = appearing;
                tlog.Debug(tag, "AppearingTransition : " + testingTarget.AppearingTransition);
            }

            using (TransitionBase disappearing = new TransitionBase())
            {
                disappearing.TimePeriod    = new TimePeriod(300);
                disappearing.AlphaFunction = new AlphaFunction(AlphaFunction.BuiltinFunctions.EaseInOut);

                tlog.Debug(tag, "DisappearingTransition : " + testingTarget.DisappearingTransition);

                testingTarget.DisappearingTransition = disappearing;
                tlog.Debug(tag, "DisappearingTransition : " + testingTarget.DisappearingTransition);
            }

            testingTarget.Dispose();
            tlog.Debug(tag, $"ApplicationTransitionManagerApplicationFrameType END (OK)");
        }
		public void OnShowBegin(TransitionBase transition, TransitionInputParameters transitionParameters, System.Action callback) {

			if (transition != null) {

				WindowSystem.AudioPlay(this.window, this.clipType, this.id);
				transition.SetResetState(transitionParameters, this.window, null);
				transition.Play(this.window, transitionParameters, null, forward: true, callback: () => {
					
					if (callback != null) callback();
					
				});

			} else {

				WindowSystem.AudioPlay(this.window, this.clipType, this.id);
				if (callback != null) callback();

			}
			
		}
		public override void SetDefaultParameters(TransitionBase.ParametersBase parameters) {
			
			this.parameters = new WindowAudioTransitionFade.Parameters(parameters);
			
		}
Example #28
0
		public void OnHideBegin(TransitionBase transition, TransitionInputParameters transitionParameters, System.Action callback) {

			var newWindow = WindowSystem.GetCurrentWindow();
			if (newWindow == null) return;

			if (transition != null) {

				if (newWindow.audio.id > 0 || newWindow.audio.playType == PlayType.Replace) {

					transition.Play(this.window, transitionParameters, null, forward: false, callback: () => {

						WindowSystem.AudioStop(this.window, this.clipType, this.id);
						if (callback != null) callback();

					});

				}

			} else {

				if (newWindow.audio.id > 0 || newWindow.audio.playType == PlayType.Replace) WindowSystem.AudioStop(this.window, this.clipType, this.id);
				if (callback != null) callback();
				
			}
			
		}
Example #29
0
 public ChangeBounds(TransitionBase transition)
 {
     _transition = transition ?? throw new ArgumentNullException(nameof(transition));
 }
			public Parameters(TransitionBase.ParametersBase baseDefaults) : base(baseDefaults) {}
		public void OnHideBegin(TransitionBase transition, TransitionInputParameters transitionParameters, System.Action callback) {

			if (transition != null) {
				
				transition.Play(this.window, transitionParameters, null, forward: false, callback: () => {

					WindowSystem.AudioStop(this.window, this.clipType, this.id);
					if (callback != null) callback();

				});
				
			} else {

				WindowSystem.AudioStop(this.window, this.clipType, this.id);
				if (callback != null) callback();
				
			}
			
		}
 public ChangeRenderTransform(TransitionBase transition) : base(transition)
 {
 }
Example #33
0
		public void DoHideBegin(TransitionBase transition, TransitionInputParameters transitionParameters, AppearanceParameters parameters) {
			
			parameters.Call();

		}
		/*
		private void TryToPlay(System.Action callback) {
			
			var equals = false;

			var prevWindow = WindowSystem.GetPreviousWindow();
			if (prevWindow != null) {
				
				equals = (prevWindow.audio.id == this.id || prevWindow.audio.id == 0);
				
				if (this.playType == PlayType.RestartIfEquals && equals == true) {

					WindowSystem.AudioStop(this.window, this.clipType, prevWindow.audio.id);

				} else if (equals == false) {

					WindowSystem.AudioStop(this.window, this.clipType, prevWindow.audio.id);

				}
				
			}

			if (this.playType == PlayType.KeepCurrent && equals == true) {
				
				// Keep current
				
			} else {
				
				if (this.id > 0) {

					WindowSystem.AudioPlay(this.window, this.clipType, this.id);

				}
				
			}
			
			if (callback != null) callback();

		}*/

		public void Apply(TransitionBase transition, TransitionInputParameters parameters, bool forward, float value, bool reset) {
			
			if (reset == true) transition.SetResetState(parameters, this.window, null);
			transition.Set(this.window, parameters, null, forward: forward, value: value);
			
		}
        public void SubworkflowPause()
        {
            // Arrange
            var workplan = WorkplanDummy.CreatePausableSub();
            var exits    = workplan.Connectors.Where(c => c.Classification.HasFlag(NodeClassification.Exit)).ToArray();
            var outputs  = new[]
            {
                new OutputDescription {
                    MappingValue = (int)exits[0].Id
                },
            };
            var trans = new SubworkflowTransition(Workflow.CreateEngine(workplan, new NullContext()), TransitionBase.CreateIndexResolver(outputs))
            {
                Id      = 1,
                Inputs  = new[] { _inputs[0] },
                Outputs = _outputs
            };
            var triggered = new List <ITransition>();

            // Act
            trans.Initialize();
            trans.Triggered += (sender, args) => triggered.Add((ITransition)sender);
            _inputs[0].Add(_token);
            trans.Pause();
            var state = trans.InternalState;

            trans.Resume();

            // Assert
            Assert.AreEqual(0, _inputs[0].Tokens.Count());
            Assert.AreEqual(_token, _outputs[0].Tokens.First());
            Assert.AreEqual(1, triggered.Count);
            Assert.IsInstanceOf <WorkflowSnapshot>(state);
            var snapshot = (WorkflowSnapshot)state;

            Assert.AreEqual(1, snapshot.Holders.Length);
            var stepId = workplan.Steps.First(s => s is PausableStep).Id;

            Assert.AreEqual(stepId, snapshot.Holders[0].HolderId);
        }
Example #36
0
 public void DoHideBegin(TransitionBase transition, TransitionInputParameters transitionParameters, AppearanceParameters parameters)
 {
     parameters.Call();
 }
Example #37
0
 public CompositeTransition(TransitionBase transitionOne, params TransitionBase[] transitions)
 {
     this.transitionOne = transitionOne;
     this.transitions = transitions;
 }
		public override void SetDefaultParameters(TransitionBase.ParametersBase parameters) {
			
			this.parameters = new WindowAnimationTransitionSlide.Parameters(parameters);
			
		}
Example #39
0
 public ChangeAlpha(TransitionBase transition) : base(transition)
 {
 }
Example #40
0
 protected DelayedTransition(TransitionBase transition)
 {
     _transition = transition ?? throw new ArgumentNullException(nameof(transition));
 }
Example #41
0
		public void DoShowBegin(TransitionBase transition, TransitionInputParameters transitionParameters, AppearanceParameters parameters) {

			var needToPlay = (this.id > 0 || this.playType == PlayType.Replace);

			if (this.playType == PlayType.Replace) WindowSystem.AudioStop(null, this.clipType, this.id);

			if (transition != null) {

				if (needToPlay == true) {

					WindowSystem.AudioPlay(this.window, this.clipType, this.id, this.playType == PlayType.Replace);
					transition.SetResetState(transitionParameters, this.window, null);
					transition.Play(this.window, transitionParameters, null, forward: true, callback: () => {
						
						parameters.Call();
						
					});

				}

			} else {

				if (needToPlay == true) WindowSystem.AudioPlay(this.window, this.clipType, this.id, this.playType == PlayType.Replace);
				parameters.Call();

			}
			
		}