private void UpdatePointMassParameters(PointMass o, float dt) { PointMassData data = o.PointMassData; if (data.Mass != 0) { data.Acceleration = data.Forces / data.Mass; } else { data.Acceleration = new MyVector(0, 0, 0); } data.Velocity.Add(data.Acceleration * dt); data.VelocityBody = data.Velocity; data.VelocityBody.Rotate(~data.Orientation); data.Forces = new MyVector(0, 0, 0); o.PointMassData = data; }
private void CalculatePointMassForces(PointMass o) { PointMassData data = o.PointMassData; //data.Forces = new MyVector(0, 0, 0); if (doGravity) data.Forces = o.Mass * gravity; if (doLinearDrag) { data.Forces -= data.Velocity * air_density * (data.Velocity.Length * o.LinearDragCoefficient * o.BoundingSphereRadius * o.BoundingSphereRadius); } o.PointMassData = data; }