Beispiel #1
0
    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);
    }
Beispiel #2
0
    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);
        }
    }