From 9e37ff62b668694f705a8d132469f40ead9f6f0f Mon Sep 17 00:00:00 2001 From: "Claudius \"keldu\" Holeksa" Date: Thu, 5 Jun 2025 13:09:07 +0200 Subject: Dangling changes --- c++/particle/particle.hpp | 33 ++++++++++++++++++++++++++++----- 1 file changed, 28 insertions(+), 5 deletions(-) (limited to 'c++/particle/particle.hpp') diff --git a/c++/particle/particle.hpp b/c++/particle/particle.hpp index 1c7b241..35196ce 100644 --- a/c++/particle/particle.hpp +++ b/c++/particle/particle.hpp @@ -30,10 +30,10 @@ using Particle = Struct< >; } -template +template > class particle_system { private: - saw::data> particles_; + saw::data>> particles_; void verlet_step(saw::data>& particle, saw::data time_step_delta){ auto& body = particle.template get<"rigid_body">(); @@ -56,10 +56,26 @@ private: pos = pos_new; } public: + /** + * Add particle to this class and return an id representing this particle + */ + saw::error_or> add_particle(saw::data> particle__){ + auto size = particles_.size(); + auto eov = particles_.add(std::move(particle__)); + if(eov.is_error()){ + return std::move(eov.get_error()); + } - void step(T time_step_delta){ - for(auto& iter : particles_){ - verlet_step(time_step_delta); + return size; + } + + saw::data>& get_particle(saw::data id){ + + } + + void step(saw::data time_step_delta){ + for(saw::data i{0u}; i < particles_.size(); ++i){ + verlet_step(particles_.at(i), time_step_delta); } } @@ -68,6 +84,13 @@ public: for(auto& iter : particles_){ } } + + /** + * Mostly meant for unforeseen use cases. + */ + saw::data>& at(saw::data i){ + return particles_.at(i); + } }; } } -- cgit v1.2.3