Exemple #1
0
        internal void evaluateActions(float dt)
        {
            foreach (KeyValuePair <string, DAction> keyValuePair in actions)
            {
                DAction action = keyValuePair.Value;
                action.evaluateWithNode(this, dt);

                if (action.elapsed > action.duration)
                {
                    actionsToRemove.Add(keyValuePair.Key);
                }
            }

            if (actionsToRemove.Count > 0)
            {
                foreach (string key in actionsToRemove)
                {
                    actions.Remove(key);
                }
                actionsToRemove.Clear();
            }

            for (int i = children.Count - 1; i >= 0; i--)
            {
                children[i].evaluateActions(dt);
            }
        }
Exemple #2
0
        internal override void evaluateWithNode(DNode node, float dt)
        {
            elapsed += dt;

            if (executionCount < count)
            {
                float actionElapsed = action.elapsed;

                action.evaluateWithNode(node, dt);

                if (actionElapsed + dt > action.duration)
                {
                    executionCount += 1;

                    if (executionCount < count)
                    {
                        action = action.copy(); //TODO: performance
                        action.runOnNode(node);
                        dt       = actionElapsed + dt - action.duration;
                        elapsed -= dt;
                        evaluateWithNode(node, dt);
                    }
                }
            }
        }
Exemple #3
0
        public ActionRepeat(DAction action, int count) : base(0)
        {
            this.action = action;
            this.count  = count;

            duration = action.duration * count;
        }
        internal virtual void touchDown()
        {
            resetPosition();
            scale = Vector2.One;

            float duration = 0.125f;
            float x        = position.X + (size.X / 2.0f) * 0.05f;
            float y        = position.Y + (size.Y / 2.0f) * 0.05f;

            run(DAction.group(new[] {
                DAction.scaleTo(0.95f, duration),
                DAction.moveTo(new Vector2(x, y), duration)
            }), "Button.touchDown");
        }
Exemple #5
0
        internal void run(DAction action, string key)
        {
            DAction copy = action.copy();

            copy.runOnNode(this);

            if (actions.ContainsKey(key))
            {
                actions[key] = copy;
            }
            else
            {
                actions.Add(key, copy);
            }
        }
Exemple #6
0
        internal override void evaluateWithNode(DNode node, float dt)
        {
            elapsed += dt;

            DAction action = enumerator.Current;

            if (action != null)
            {
                float actionElapsed = action.elapsed;

                action.evaluateWithNode(node, dt);

                if (actionElapsed + dt > action.duration)
                {
                    if (enumerator.MoveNext())
                    {
                        enumerator.Current.runOnNode(node);
                        dt       = actionElapsed + dt - action.duration;
                        elapsed -= dt;
                        evaluateWithNode(node, dt);
                    }
                }
            }
        }
Exemple #7
0
 internal void run(DAction action, Action completionBlock)
 {
     run(action, $"{DScene.current}{random.NextDouble()}");
 }
Exemple #8
0
 internal void run(DAction action)
 {
     run(action, $"{DGame.current.currentTime}{random.NextDouble()}");
 }
Exemple #9
0
 /// <summary>
 /// Performs an action after the specified delay.
 /// </summary>
 internal static DAction afterDelay(float delay, DAction action)
 {
     return(sequence(new[] { waitForDuration(delay), action }));
 }
Exemple #10
0
 internal static DAction repeatForever(DAction action)
 {
     return(new ActionRepeat(action, int.MaxValue));
 }
Exemple #11
0
 internal static DAction repeat(DAction action, int count)
 {
     return(new ActionRepeat(action, count));
 }