public void Update(double elapsed) { for (int i = 0; i < SpringList.Count; i++) { Spring spring = SpringList[i]; Spring.SpringForce(ref spring, out Vector2 force); spring.PointMassA.Force.X += force.X; spring.PointMassA.Force.Y += force.Y; spring.PointMassB.Force.X -= force.X; spring.PointMassB.Force.Y -= force.Y; } for (int i = 1; i < PointMassList.Count - 1; i++) { PointMassList[i].Velocity.X *= Damping; PointMassList[i].Velocity.Y *= Damping; PointMassList[i].Update(elapsed); } }
public static void SpringForce(ref Spring spring, out Vector2 forceOut) { SpringForce(ref spring.PointMassA.Position, ref spring.PointMassA.Velocity, ref spring.PointMassB.Position, ref spring.PointMassB.Velocity, spring.D, spring.K, spring.Damping, out forceOut); }