#include "Simulation.hpp"
#include "Body.hpp"
+#include "Planet.hpp"
+#include "Sun.hpp"
namespace blobs {
namespace world {
-Simulation::Simulation(Body &r)
+Simulation::Simulation(Body &r, app::Assets &assets)
: root(r)
-, all_bodies()
+, assets(assets)
+, bodies()
+, planets()
+, suns()
, time(0.0) {
AddBody(r);
}
void Simulation::AddBody(Body &b) {
b.SetSimulation(*this);
- all_bodies.push_back(&b);
+ bodies.insert(&b);
+}
+
+void Simulation::AddPlanet(Planet &p) {
+ AddBody(p);
+ planets.insert(&p);
+}
+
+void Simulation::AddSun(Sun &s) {
+ AddBody(s);
+ suns.insert(&s);
}
void Simulation::Tick() {
constexpr double dt = 0.01666666666666666666666666666666;
time += dt;
- for (auto body : all_bodies) {
- body->Rotation(body->Rotation() + dt * body->AngularMomentum() / body->Inertia());
+ for (auto body : bodies) {
+ body->Tick(dt);
}
}