private void Initialize() { allBodies = FindObjectsOfType <AstronomicalObject>(); allDebugBodies = new DebugBody[allBodies.Length]; for (uint i = 0; i < allBodies.Length; ++i) { allDebugBodies[i] = new DebugBody(allBodies[i]); } }
public void UpdateDebugBodyVelocity(DebugBody body, DebugBody other) { if (body == other) { return; } // calculating the force to get the current velocity of the body. // G(m1m2/r2) Vector3 distance = other.position - body.position; Vector3 acceleration = Universe.GravitationalConstant * distance.normalized * other.mass / distance.sqrMagnitude; body.velocity += acceleration * timeSpeed; }
public void UpdateDebugBodyPosition(DebugBody body, Vector3[] currentOrbitPositions, uint iteration) { Vector3 previousPosition = body.position; Vector3 newPosition = body.position + body.velocity * timeSpeed; body.position = newPosition; // When drawing debug lines we can compare // orbits from all objects or relative to only one body. if (relativeBody && relativeBody != body.reference) { newPosition -= allDebugBodies[relativeBodyIndex].position - relativeBodyInitialPosition; } else if (relativeBody == body.reference) { newPosition = relativeBodyInitialPosition; } // updating the next point to draw. currentOrbitPositions[iteration] = newPosition; }