示例#1
0
 public void Remove(GravitationalBody v)
 {
     if (bodies.Contains(v))
     {
         bodies.Remove(v);
     }
 }
示例#2
0
    void Start()
    {
        OrbitRenderer = GameObject.Find("OrbitRenderer").GetComponent <LineRenderer>();
        player        = GameObject.Find("Player").GetComponent <GravitationalBody>();

        OrbitRenderer.enabled = false;
    }
示例#3
0
 public void Add(GravitationalBody v)
 {
     if (!bodies.Contains(v))
     {
         bodies.Add(v);
     }
 }
示例#4
0
    // Start is called before the first frame update
    void Start()
    {
        scr = player.GetComponent <GravitationalBody>();

        planetName.text = "Type: planet";
        Mass.text       = "Mass: -1";
        Vector.text     = "Vector2: <0,0,0>";
        Coords.text     = "Coordinates: <0,0,0>";
    }
示例#5
0
    public virtual Vector2 GravitationalPull(GravitationalBody other)
    {
        if (other.CenterOfMass == this.CenterOfMass)
        {
            Debug.LogError("[GravitationalBody] Attempting to calculate field strength with zero radius (divide by zero)");
            return(Vector2.zero); // cannot have same center of mass, return zero force instead of infinite
        }

        return(FieldStrengthAtPoint(other.CenterOfMass) * other.Mass);
    }
        public void TestGravityBetweenBodies()
        {
            GravitationalBody earth = CommonAstroObjects.Earth;

            GravitationalBody human = TestObjects.Human;

            human.Position = new Vector(AstrophysicalConstants.Earth_Radius + 1.5, 0, 0);

            Vector result = earth.GravitationalForceToward(human);

            Vector expected = new Vector(human.Mass * 9.81, 0, 0);

            Assert.IsTrue(Helpers.WithinTolerance(result, expected));
        }
        public void TestGravityAtSurface()
        {
            GravitationalBody earth = new GravitationalBody(
                radius: AstrophysicalConstants.Earth_Radius,
                mass: AstrophysicalConstants.Earth_Mass)
            {
                Position = new Vector()
            };

            double result   = earth.GravityAtSurface;
            double expected = 9.81;

            Assert.IsTrue(Helpers.WithinTolerance(result, expected));
        }
示例#8
0
    public void SystemFocus(GravitationalBody systemCenter, SciNumber distanceScale = null)
    {
        if (currentFocus == systemCenter)
        {
            return;
        }

        currentFocus?.SetViewLevel(ViewLevel.None);
        currentFocus?.OrbitedBy.ForEach(x => x.SetViewLevel(ViewLevel.None));

        if (distanceScale != null)
        {
            SetUnitScale(SIUnitType.Meter, distanceScale);
        }

        systemCenter.SetViewLevel(ViewLevel.SystemCenter);
        systemCenter.OrbitedBy.ForEach(x => x.SetViewLevel(ViewLevel.Orbiting));

        currentFocus = systemCenter;
    }
 public static Vector3 WorldPosition(MechanicalElements me, GravitationalBody orbiting)
 {
     return((orbiting.mechanicalElements.position + me.position).Scaled.Vector);
 }
 protected virtual void Awake()
 {
     body = GetComponentInParent <GravitationalBody>();
     body.uiElements.Add(this);
 }
示例#11
0
 public void DeregisterBody(GravitationalBody body)
 {
     activeBodies.Remove(body);
 }
示例#12
0
 public void RegisterBody(GravitationalBody body)
 {
     activeBodies.Add(body);
 }
示例#13
0
 private void Awake()
 {
     gravitationalBody = GetComponentInParent <GravitationalBody>();
 }
示例#14
0
 void Start()
 {
     player         = GameObject.Find("Player");
     playersgravity = player.GetComponent <GravitationalBody>();
 }
示例#15
0
 public bool HasBody(GravitationalBody v)
 {
     return(bodies.Contains(v));
 }
示例#16
0
 private void Start()
 {
     player = GameObject.Find("Player").GetComponent <GravitationalBody>();
 }