private SequenceModifier AddSequenceModifier(IntPtr p) { if (p == IntPtr.Zero) { return(null); } var modifier = new SequenceModifier(p, _mta); _modifiers.Add(modifier); return(modifier); }
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 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)); }