rebuild the repulsion force grid every n frames

This commit is contained in:
2026-02-18 23:12:02 +01:00
parent 1dad350f7d
commit 55ff0f3490
5 changed files with 47 additions and 17 deletions

View File

@ -5,6 +5,7 @@
#include <raymath.h>
#include <string>
#include <unordered_map>
#include <vector>
class Mass {
public:
@ -83,12 +84,20 @@ public:
};
class MassSpringSystem {
private:
std::vector<Mass *> mass_vec;
std::vector<int> indices;
std::vector<int64_t> cell_ids;
int last_build;
int last_masses_count;
int last_springs_count;
public:
std::unordered_map<std::string, Mass> masses;
std::unordered_map<std::string, Spring> springs;
public:
MassSpringSystem() {};
MassSpringSystem() : last_build(1000) {};
MassSpringSystem(const MassSpringSystem &copy) = delete;
MassSpringSystem &operator=(const MassSpringSystem &copy) = delete;
@ -97,6 +106,9 @@ public:
~MassSpringSystem() {};
private:
auto BuildGrid() -> void;
public:
auto AddMass(float mass, Vector3 position, bool fixed,
const std::string &state) -> void;