private static void AddSpinToParticle(Vector2 position, Rigidbody2D rb2D, float forceMagnitude, bool clockwise) { var angleOfForce = OrbitalMath.CalculateAngle(position) + (clockwise ? (-90) : 90); var forceVector = OrbitalMath.GetVectorFromMagnitudeAndAngle(forceMagnitude * position.magnitude, angleOfForce); rb2D.AddForce(forceVector, ForceMode2D.Force); }
public void Add(IEnumerable <IPlanet> planetsToAdd) { foreach (var planet in planetsToAdd) { if (centralStar == planet) { continue; } if (this.Planets.Contains(planet)) { continue; } planet.SimulatedEntity.Velocity = OrbitalMath.GetVelocityForCircularOrbitAtRadius( planet.SimulatedEntity.Position - centralStar.SimulatedEntity.Position, centralStar.SimulatedEntity.Mass); solver.AddEntity(planet.SimulatedEntity); this.Planets.Add(planet); } }