public virtual void Update()
{
//Flag to tell whether or not this bullet has finished all its tasks
for (int i = 0; i < Tasks.Count; i++)
{
Tasks[i].Run(this);
}
//only do this stuff if the bullet isn't done, cuz sin/cosin are expensive
X += (Acceleration.x + (float)(Mathf.Sin(Direction) * (Speed * TimeSpeed))) * Scale * TimeFix.Delta;
Y += (Acceleration.y + (float)(-Mathf.Cos(Direction) * (Speed * TimeSpeed))) * Scale * TimeFix.Delta;
}