protected override void UpdatePosition() { //Interpolate Movement for collision for (float elapsedTime = 0; elapsedTime < Parameter.ProjectileMovementTotalTimeElapsed; elapsedTime += Parameter.ProjectileMovementTimeElapsedPerInteraction) { if (!hasExploded) { UpdateMovementIteraction(Parameter.ProjectileMovementTimeElapsedPerInteraction); } if (CheckOutOfBounds(Position)) { break; } if (hasExploded || UpdateCollider(Position)) { if (!hasExploded) { hasExploded = true; baseCoordinate = Position; baseRotation = FlipbookList[0].Rotation; SpecialEffectBuilder.TricoProjectile3Explosion(FlipbookList[0].Position); FlipbookList[0].SetTransparency(0); } if ((explosionTimer += Parameter.ProjectileMovementTimeElapsedPerInteraction) > Parameter.ProjectileTricoSSExtraBlastTime) { explosionTimer = 0; FlipbookList[0].Position = baseCoordinate + Vector2.Transform( Parameter.ProjectileTricoSSExplosionOffset, Matrix.CreateRotationZ( baseRotation + explosions * (explosions % 2 == 0 ? 1 : -1) * Parameter.ProjectileTricoSSRotationOffset * rotationExplosionOffset)); explosions++; Explode(); } } } #if Debug debugCrosshair.Update(FlipbookList[0].Position); #endif }