示例#1
0
文件: Spawn.cs 项目: yrest/urho
        public Spawn(params FiniteTimeAction[] actions)
        {
            FiniteTimeAction prev = actions [0];
            FiniteTimeAction next = null;

            if (actions.Length == 1)
            {
                next = new ExtraAction();
            }
            else
            {
                // We create a nested set of SpawnActions out of all of the actions
                for (int i = 1; i < actions.Length - 1; i++)
                {
                    prev = new Spawn(prev, actions [i]);
                }

                next = actions [actions.Length - 1];
            }

            // Can't call base(duration) because we need to determine max duration
            // Instead call base's init method here
            if (prev != null && next != null)
            {
                Duration = Math.Max(prev.Duration, next.Duration);
                InitSpawn(prev, next);
            }
        }
示例#2
0
 public FiniteTimeActionState(FiniteTimeAction action, Node target)
     : base(action, target)
 {
     Duration  = action.Duration;
     Elapsed   = 0.0f;
     firstTick = true;
 }
示例#3
0
		public FiniteTimeActionState (FiniteTimeAction action, Node target)
			: base (action, target)
		{ 
			Duration = action.Duration;
			Elapsed = 0.0f;
			firstTick = true;
		}
示例#4
0
文件: Sequence.cs 项目: corefan/urho
		void InitSequence (FiniteTimeAction actionOne, FiniteTimeAction actionTwo)
		{
			Debug.Assert (actionOne != null);
			Debug.Assert (actionTwo != null);

			Actions [0] = actionOne;
			Actions [1] = actionTwo;
		}
示例#5
0
        void InitSequence(FiniteTimeAction actionOne, FiniteTimeAction actionTwo)
        {
            Debug.Assert(actionOne != null);
            Debug.Assert(actionTwo != null);

            Actions [0] = actionOne;
            Actions [1] = actionTwo;
        }
示例#6
0
文件: Parallel.cs 项目: yrest/urho
        public override FiniteTimeAction Reverse()
        {
            FiniteTimeAction[] rev = new FiniteTimeAction[Actions.Length];
            for (int i = 0; i < Actions.Length; i++)
            {
                rev [i] = Actions [i].Reverse();
            }

            return(new Parallel(rev));
        }
示例#7
0
文件: Parallel.cs 项目: Zamir7/urho
		public override FiniteTimeAction Reverse ()
		{
			FiniteTimeAction[] rev = new FiniteTimeAction[Actions.Length];
			for (int i = 0; i < Actions.Length; i++)
			{
				rev [i] = Actions [i].Reverse ();
			}

			return new Parallel (rev);
		}
示例#8
0
文件: Node.cs 项目: Zamir7/urho
        /// <summary>
        /// Runs an Action that can be awaited.
        /// </summary>
        /// <param name="action">A FiniteTimeAction.</param>
        public Task<ActionState> RunActionsAsync(FiniteTimeAction action)
        {
            var tcs = new TaskCompletionSource<ActionState>();

            ActionState state = null;
            var completion = new CallFunc(() => tcs.TrySetResult(state));

            var asyncAction = new Sequence(action, completion);

            state = Application.Current.ActionManager.AddAction(asyncAction, this);
            return tcs.Task;
        }
示例#9
0
文件: Repeat.cs 项目: aurodev/urho
        public Repeat(FiniteTimeAction action, uint times) : base(action.Duration * times)
        {
            Times       = times;
            InnerAction = action;

            ActionInstant = action is ActionInstant;
            //an instant action needs to be executed one time less in the update method since it uses startWithTarget to execute the action
            if (ActionInstant)
            {
                Times -= 1;
            }
            Total = 0;
        }
示例#10
0
文件: Repeat.cs 项目: Zamir7/urho
		public Repeat (FiniteTimeAction action, uint times) : base (action.Duration * times)
		{

			Times = times;
			InnerAction = action;

			ActionInstant = action is ActionInstant;
			//an instant action needs to be executed one time less in the update method since it uses startWithTarget to execute the action
			if (ActionInstant)
			{
				Times -= 1;
			}
			Total = 0;
		}
示例#11
0
文件: Node.cs 项目: corefan/urho
		/// <summary>
		/// Runs a sequence of Actions so that it can be awaited.
		/// </summary>
		/// <param name="actions">An array of FiniteTimeAction objects.</param>
		public Task<ActionState> RunActionsAsync(params FiniteTimeAction[] actions)
		{
			if (actions.Length == 0)
				return Task.FromResult<ActionState>(null);

			var tcs = new TaskCompletionSource<ActionState>();

			var numActions = actions.Length;
			var asyncActions = new FiniteTimeAction[actions.Length + 1];
			Array.Copy(actions, asyncActions, numActions);

			ActionState state = null;
			asyncActions[numActions] = new CallFunc(() => tcs.TrySetResult(state));

			var asyncAction = asyncActions.Length > 1 ? new Sequence(asyncActions) : asyncActions[0];

			state = Application.Current.ActionManager.AddAction(asyncAction, this);
			return tcs.Task;
		}
示例#12
0
文件: Spawn.cs 项目: Zamir7/urho
		private void InitSpawn (FiniteTimeAction action1, FiniteTimeAction action2)
		{
			Debug.Assert (action1 != null);
			Debug.Assert (action2 != null);

			float d1 = action1.Duration;
			float d2 = action2.Duration;

			ActionOne = action1;
			ActionTwo = action2;

			if (d1 > d2)
			{
				ActionTwo = new Sequence (action2, new DelayTime (d1 - d2));
			}
			else if (d1 < d2)
			{
				ActionOne = new Sequence (action1, new DelayTime (d2 - d1));
			}
		}
示例#13
0
文件: Spawn.cs 项目: yrest/urho
        private void InitSpawn(FiniteTimeAction action1, FiniteTimeAction action2)
        {
            Debug.Assert(action1 != null);
            Debug.Assert(action2 != null);

            float d1 = action1.Duration;
            float d2 = action2.Duration;

            ActionOne = action1;
            ActionTwo = action2;

            if (d1 > d2)
            {
                ActionTwo = new Sequence(action2, new DelayTime(d1 - d2));
            }
            else if (d1 < d2)
            {
                ActionOne = new Sequence(action1, new DelayTime(d2 - d1));
            }
        }
示例#14
0
        void InitFromArray(FiniteTimeAction[] actions, FiniteTimeAction other)
        {
            var prev = actions[0];

            // Can't call base(duration) because we need to calculate duration here
            float combinedDuration = 0.0f;

            foreach (FiniteTimeAction action in actions)
            {
                combinedDuration += action.Duration;
            }
            Duration = combinedDuration;

            if (actions.Length == 1)
            {
                InitSequence(prev, other ?? new ExtraAction());
            }
            else
            {
                // Basically what we are doing here is creating a whole bunch of
                // nested Sequences from the actions.
                int count = other != null ? actions.Length : actions.Length - 1;

                for (int i = 1; i < count; i++)
                {
                    prev = new Sequence(prev, actions[i]);
                }

                if (other != null)
                {
                    InitSequence(prev, other);
                }
                else
                {
                    InitSequence(prev, actions[actions.Length - 1]);
                }
            }
        }
示例#15
0
		public EaseElasticOut (FiniteTimeAction action) : base (action, 0.3f)
		{
		}
示例#16
0
 public RepeatForever(FiniteTimeAction action)
 {
     Debug.Assert(action != null);
     InnerAction = action;
 }
示例#17
0
 public EaseRateAction(FiniteTimeAction action, float rate) : base(action)
 {
     Rate = rate;
 }
示例#18
0
文件: EaseElastic.cs 项目: yrest/urho
 public EaseElastic(FiniteTimeAction action, float period) : base(action)
 {
     Period = period;
 }
示例#19
0
文件: EaseInOut.cs 项目: yrest/urho
 public EaseInOut(FiniteTimeAction action, float rate) : base(action, rate)
 {
 }
示例#20
0
 public TargetedAction(Node target, FiniteTimeAction action) : base(action.Duration)
 {
     ForcedTarget = target;
     Action       = action;
 }
示例#21
0
文件: ActionEase.cs 项目: Zamir7/urho
		public ActionEase(FiniteTimeAction action) : base (action.Duration)
		{
			InnerAction = action;
		}
示例#22
0
 public Sequence(FiniteTimeAction action1, FiniteTimeAction action2) : base(action1.Duration + action2.Duration)
 {
     InitSequence(action1, action2);
 }
示例#23
0
 public Sequence(FiniteTimeAction[] actions, FiniteTimeAction other)
 {
     InitFromArray(actions, other);
 }
示例#24
0
 public EaseElasticInOut(FiniteTimeAction action, float period) : base(action, period)
 {
 }
示例#25
0
 public EaseSineOut(FiniteTimeAction action) : base(action)
 {
 }
示例#26
0
		public EaseElastic (FiniteTimeAction action) : this (action, 0.3f)
		{
		}
示例#27
0
		public EaseElastic (FiniteTimeAction action, float period) : base (action)
		{
			Period = period;
		}
示例#28
0
文件: ReverseTime.cs 项目: yrest/urho
 public ReverseTime(FiniteTimeAction action) : base(action.Duration)
 {
     Other = action;
 }
示例#29
0
		public EaseBackOut (FiniteTimeAction action) : base (action)
		{
		}
示例#30
0
		public EaseBounceIn (FiniteTimeAction action) : base (action)
		{
		}
示例#31
0
 public EaseCustom(FiniteTimeAction action, Func <float, float> easeFunc) : base(action)
 {
     EaseFunc = easeFunc;
 }
示例#32
0
 public EaseElasticOut(FiniteTimeAction action) : base(action, 0.3f)
 {
 }
示例#33
0
文件: Speed.cs 项目: Zamir7/urho
		public Speed (FiniteTimeAction action, float speedValue)
		{
			InnerAction = action;
			SpeedValue = speedValue;
		}
示例#34
0
文件: Speed.cs 项目: yrest/urho
 public Speed(FiniteTimeAction action, float speedValue)
 {
     InnerAction = action;
     SpeedValue  = speedValue;
 }
示例#35
0
文件: Spawn.cs 项目: yrest/urho
 protected Spawn(FiniteTimeAction action1, FiniteTimeAction action2)
     : base(Math.Max(action1.Duration, action2.Duration))
 {
     InitSpawn(action1, action2);
 }
示例#36
0
文件: Sequence.cs 项目: corefan/urho
		public Sequence (FiniteTimeAction action1, FiniteTimeAction action2) : base (action1.Duration + action2.Duration)
		{
			Actions = new FiniteTimeAction[2];
			InitSequence (action1, action2);
		}
示例#37
0
文件: Spawn.cs 项目: Zamir7/urho
		protected Spawn (FiniteTimeAction action1, FiniteTimeAction action2)
			: base (Math.Max (action1.Duration, action2.Duration))
		{
			InitSpawn (action1, action2);
		}
示例#38
0
文件: EaseBackOut.cs 项目: yrest/urho
 public EaseBackOut(FiniteTimeAction action) : base(action)
 {
 }
示例#39
0
文件: EaseElastic.cs 项目: yrest/urho
 public EaseElastic(FiniteTimeAction action) : this(action, 0.3f)
 {
 }
示例#40
0
		public RepeatForever (FiniteTimeAction action)
		{
			Debug.Assert (action != null);
			InnerAction = action;
		}
示例#41
0
文件: Sequence.cs 项目: aurodev/urho
 public Sequence(FiniteTimeAction action1, FiniteTimeAction action2) : base(action1.Duration + action2.Duration)
 {
     Actions = new FiniteTimeAction[2];
     InitSequence(action1, action2);
 }
示例#42
0
		public EaseSineInOut (FiniteTimeAction action) : base (action)
		{
		}
示例#43
0
 public EaseExponentialOut(FiniteTimeAction action) : base(action)
 {
 }
示例#44
0
文件: ActionEase.cs 项目: yrest/urho
 public ActionEase(FiniteTimeAction action) : base(action.Duration)
 {
     InnerAction = action;
 }
示例#45
0
		public EaseElasticOut (FiniteTimeAction action, float period) : base (action, period)
		{
		}
示例#46
0
文件: EaseCustom.cs 项目: Zamir7/urho
		public EaseCustom (FiniteTimeAction action, Func<float, float> easeFunc) : base (action)
		{
			EaseFunc = easeFunc;
		}
示例#47
0
 public RepeatForever(params FiniteTimeAction[] actions)
 {
     Debug.Assert(actions != null);
     InnerAction = new Sequence(actions);
 }
示例#48
0
		public TargetedAction (Node target, FiniteTimeAction action) : base (action.Duration)
		{
			ForcedTarget = target;
			Action = action;
		}
示例#49
0
文件: EaseOut.cs 项目: Zamir7/urho
		public EaseOut (FiniteTimeAction action, float rate) : base (action, rate)
		{
		}
示例#50
0
		public EaseExponentialInOut (FiniteTimeAction action) : base(action)
		{
		}
示例#51
0
		public EaseRateAction (FiniteTimeAction action, float rate) : base (action)
		{
			Rate = rate;
		}
示例#52
0
		public ReverseTime (FiniteTimeAction action) : base (action.Duration)
		{
			Other = action;
		}
示例#53
0
 public EaseBounceIn(FiniteTimeAction action) : base(action)
 {
 }
示例#54
0
		public RepeatForever (params FiniteTimeAction[] actions)
		{
			Debug.Assert (actions != null);
			InnerAction = new Sequence (actions);

		}