summaryrefslogtreecommitdiff
path: root/lib/core/c++/particle
diff options
context:
space:
mode:
authorClaudius "keldu" Holeksa <mail@keldu.de>2025-12-19 14:11:57 +0100
committerClaudius "keldu" Holeksa <mail@keldu.de>2025-12-19 14:11:57 +0100
commit6a918f0827a6e8806f77e39e0348b1a2abed71f2 (patch)
tree30e70bf0533e91a4aa9246de1dd3aa256c64d0c1 /lib/core/c++/particle
parent434607c33deab6ad91cfeb203050138c108958ed (diff)
downloadlibs-lbm-6a918f0827a6e8806f77e39e0348b1a2abed71f2.tar.gz
Rewriting large portion for simpler approach
Diffstat (limited to 'lib/core/c++/particle')
-rw-r--r--lib/core/c++/particle/particle.hpp19
1 files changed, 18 insertions, 1 deletions
diff --git a/lib/core/c++/particle/particle.hpp b/lib/core/c++/particle/particle.hpp
index 446e8a3..b647ebe 100644
--- a/lib/core/c++/particle/particle.hpp
+++ b/lib/core/c++/particle/particle.hpp
@@ -34,10 +34,11 @@ using ParticleCollisionSpheroid = Struct<
Member<T, "radius">
>;
-template<typename T, uint64_t D>
+template<typename T, uint64_t D, typename CollisionType = ParticleCollisionSpheroid<T>>
using Particle = Struct<
Member<ParticleRigidBody<T,D>, "rigid_body">,
Member<ParticleMask<T,D>, "mask">,
+ Member<CollisionType, "collision">,
Member<T, "mass">,
Member<T, "size">
>;
@@ -65,6 +66,22 @@ constexpr auto verlet_step_lambda = [](saw::data<sch::Particle<T,D>>& particle,
pos = pos_new;
};
+/**
+*
+*
+*/
+template<typename T, uint64_t>
+constexpr auto broadphase_collision_check = [](saw::data<sch::Particle<T,D>>& left, saw::data<sch::Particle<T,D>>& right){
+ auto rad_l = left.template get<"collision">().template get<"radius">();
+ auto rad_r = right.template get<"collision">().template get<"radius">();
+
+ auto& rb_l = left.template get<"rigid_body">();
+ auto& rb_r = right.template get<"rigid_body">();
+
+ auto& pos_l = rb_l.template get<"position">();
+ auto& pos_r = rb_r.template get<"position">();
+}
+
template<typename T, uint64_t D, typename ParticleCollision = sch::ParticleMask<T,D> >
class particle_system {
private: