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)); }
public MoveModifier(double duration, Vector2 from, Vector2 to, IEntityModifierListener listener, IInterpolation function) : this(duration, from.X, to.X, from.Y, to.Y, listener, function) { }
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) { }
public AlphaModifier(double duration, double fromX, double toX, IEntityModifierListener listener, IInterpolation function) : base(duration, fromX, toX, listener, function) { }
public MoveXModifier(double duration, double fromX, double toX, IEntityModifierListener listener, IInterpolation function) : base(duration, fromX, toX, listener, function) { }
public EntityModifier(IEntityModifierListener listener) : base(listener) { }
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)); }