39 void setSimSpeed(
float newSpeed) { simSpeed.store(newSpeed); }
49 void solveProblem(
PhysicsBody* body,
const std::unordered_map<std::string, double>& knowns,
const std::string& unknown =
"");
57 void advancePhysics(
float dt);
60 std::unique_ptr<ISolver> solver =
nullptr;
61 float solverTargetTime = 10.0f;
62 std::unordered_map<PhysicsBody*, ObjectSnapshot> resetState{};
66 std::atomic<glm::vec3> globalAcceleration;
67 std::atomic<float> simSpeed{1.0f};
69 std::atomic<float> ambientTemperature{293.15f};
70 std::atomic<long long> stepCount{0};
71 std::vector<PhysicsBody*> bodies;
73 std::atomic<bool> physicsEnabled{
false};
76 std::thread physicsThread;
77 mutable std::mutex bodiesMutex;
78 std::atomic<bool> threadRunning{
false};
80 std::mutex snapshotMutex;
81 std::vector<ObjectSnapshot> currentSnapshots;
82 std::vector<ObjectSnapshot> previousSnapshots;
83 std::atomic<bool> snapshotReady{
false};