Example #1
0
        public PathModifier(float pDuration, IEntity entity, Path path, IEntityModifierListener entityModiferListener,
                            IInterpolation function)
            : base(entityModiferListener)
        {
            int pathSize = path.Size();

            if (pathSize < 2)
            {
                throw new Exception("Path needs at least 2 waypoints!");
            }

            this.entity = entity;

            this.path = path;

            MoveModifier[] moveModifiers = new MoveModifier[pathSize - 1];

            float[] coordinatesX = path.CoordinatesX();
            float[] coordinatesY = path.CoordinatesY();

            float velocity = path.Length() / pDuration;

            int modifierCount = moveModifiers.Length;

            for (int i = 0; i < modifierCount; i++)
            {
                float duration = path.SegmentLength(i) / velocity;
                moveModifiers[i] = new MoveModifier(duration, coordinatesX[i], coordinatesX[i + 1], coordinatesY[i],
                                                    coordinatesY[i + 1], null, function);
            }

            /* Create a new SequenceModifier and register the listeners that
             * call through to mEntityModifierListener and mPathModifierListener. */

            sequenceModifier = new SequenceModifier <IEntity>(moveModifiers);
            sequenceModifier.StartSequenceAction  += (sender => SequenceStarted());
            sequenceModifier.FinishSequenceAction += (sender => SequenceFinished());
            sequenceModifier.StartModifierAction  += (sender => SequenceListenerStarted(this.entity));
            sequenceModifier.FinishModifierAction += (sender => SequenceListenerFinished(this.entity));
        }
Example #2
0
 public MoveModifier(double duration, Vector2 from, Vector2 to, IEntityModifierListener listener,
                     IInterpolation function)
     : this(duration, from.X, to.X, from.Y, to.Y, listener, function)
 {
 }
Example #3
0
 public MoveModifier(double duration, double fromX, double toX, double fromY, double toY,
                     IEntityModifierListener listener, IInterpolation function)
     : base(duration, fromX, toX, fromY, toY, listener, function)
 {
 }
 public SingleSpanEntityModifier(double duration, double fromValueA, double toValueA,
                                 IEntityModifierListener listener, IInterpolation function)
     : base(duration, fromValueA, toValueA, listener, function)
 {
 }
Example #5
0
 public AlphaModifier(double duration, double fromX, double toX,
                      IEntityModifierListener listener, IInterpolation function)
     : base(duration, fromX, toX, listener, function)
 {
 }
Example #6
0
 public MoveXModifier(double duration, double fromX, double toX,
     IEntityModifierListener listener, IInterpolation function)
     : base(duration, fromX, toX, listener, function)
 {
 }
Example #7
0
 public EntityModifier(IEntityModifierListener listener)
     : base(listener)
 {
 }
Example #8
0
        public PathModifier(float pDuration, IEntity entity, Path path, IEntityModifierListener entityModiferListener,
            IInterpolation function)
            : base(entityModiferListener)
        {
            int pathSize = path.Size();

            if (pathSize < 2)
            {
                throw new Exception("Path needs at least 2 waypoints!");
            }

            this.entity = entity;

            this.path = path;

            MoveModifier[] moveModifiers = new MoveModifier[pathSize - 1];

            float[] coordinatesX = path.CoordinatesX();
            float[] coordinatesY = path.CoordinatesY();

            float velocity = path.Length() / pDuration;

            int modifierCount = moveModifiers.Length;
            for (int i = 0; i < modifierCount; i++)
            {
                float duration = path.SegmentLength(i) / velocity;
                moveModifiers[i] = new MoveModifier(duration, coordinatesX[i], coordinatesX[i + 1], coordinatesY[i],
                    coordinatesY[i + 1], null, function);
            }

            /* Create a new SequenceModifier and register the listeners that
             * call through to mEntityModifierListener and mPathModifierListener. */

            sequenceModifier = new SequenceModifier<IEntity>(moveModifiers);
            sequenceModifier.StartSequenceAction += (sender => SequenceStarted());
            sequenceModifier.FinishSequenceAction += (sender => SequenceFinished());
            sequenceModifier.StartModifierAction += (sender => SequenceListenerStarted(this.entity));
            sequenceModifier.FinishModifierAction += (sender => SequenceListenerFinished(this.entity));
        }
Example #9
0
 public MoveModifier(double duration, Vector2 from, Vector2 to, IEntityModifierListener listener,
     IInterpolation function)
     : this(duration, from.X, to.X, from.Y, to.Y, listener, function)
 {
 }