diff options
| author | Crozet Sébastien <developer@crozet.re> | 2021-04-26 17:59:25 +0200 |
|---|---|---|
| committer | Crozet Sébastien <developer@crozet.re> | 2021-04-26 18:00:50 +0200 |
| commit | c32da78f2a6014c491aa3e975fb83ddb7c80610e (patch) | |
| tree | edd20f23270baee1577c486f78d825eb93ea0de0 /src/dynamics/solver/joint_constraint/revolute_position_constraint_wide.rs | |
| parent | aaf80bfa872c6f29b248cab8eb5658ab0d73cb4a (diff) | |
| download | rapier-c32da78f2a6014c491aa3e975fb83ddb7c80610e.tar.gz rapier-c32da78f2a6014c491aa3e975fb83ddb7c80610e.tar.bz2 rapier-c32da78f2a6014c491aa3e975fb83ddb7c80610e.zip | |
Split rigid-bodies and colliders into multiple components
Diffstat (limited to 'src/dynamics/solver/joint_constraint/revolute_position_constraint_wide.rs')
| -rw-r--r-- | src/dynamics/solver/joint_constraint/revolute_position_constraint_wide.rs | 34 |
1 files changed, 27 insertions, 7 deletions
diff --git a/src/dynamics/solver/joint_constraint/revolute_position_constraint_wide.rs b/src/dynamics/solver/joint_constraint/revolute_position_constraint_wide.rs index e2d140d..5881cb3 100644 --- a/src/dynamics/solver/joint_constraint/revolute_position_constraint_wide.rs +++ b/src/dynamics/solver/joint_constraint/revolute_position_constraint_wide.rs @@ -1,5 +1,7 @@ use super::{RevolutePositionConstraint, RevolutePositionGroundConstraint}; -use crate::dynamics::{IntegrationParameters, RevoluteJoint, RigidBody}; +use crate::dynamics::{ + IntegrationParameters, RevoluteJoint, RigidBodyIds, RigidBodyMassProps, RigidBodyPosition, +}; use crate::math::{Isometry, Real, SIMD_WIDTH}; // TODO: this does not uses SIMD optimizations yet. @@ -10,12 +12,22 @@ pub(crate) struct WRevolutePositionConstraint { impl WRevolutePositionConstraint { pub fn from_params( - rbs1: [&RigidBody; SIMD_WIDTH], - rbs2: [&RigidBody; SIMD_WIDTH], + rbs1: ( + [&RigidBodyMassProps; SIMD_WIDTH], + [&RigidBodyIds; SIMD_WIDTH], + ), + rbs2: ( + [&RigidBodyMassProps; SIMD_WIDTH], + [&RigidBodyIds; SIMD_WIDTH], + ), cparams: [&RevoluteJoint; SIMD_WIDTH], ) -> Self { Self { - constraints: array![|ii| RevolutePositionConstraint::from_params(rbs1[ii], rbs2[ii], cparams[ii]); SIMD_WIDTH], + constraints: gather![|ii| RevolutePositionConstraint::from_params( + (rbs1.0[ii], rbs1.1[ii]), + (rbs2.0[ii], rbs2.1[ii]), + cparams[ii] + )], } } @@ -33,13 +45,21 @@ pub(crate) struct WRevolutePositionGroundConstraint { impl WRevolutePositionGroundConstraint { pub fn from_params( - rbs1: [&RigidBody; SIMD_WIDTH], - rbs2: [&RigidBody; SIMD_WIDTH], + rbs1: [&RigidBodyPosition; SIMD_WIDTH], + rbs2: ( + [&RigidBodyMassProps; SIMD_WIDTH], + [&RigidBodyIds; SIMD_WIDTH], + ), cparams: [&RevoluteJoint; SIMD_WIDTH], flipped: [bool; SIMD_WIDTH], ) -> Self { Self { - constraints: array![|ii| RevolutePositionGroundConstraint::from_params(rbs1[ii], rbs2[ii], cparams[ii], flipped[ii]); SIMD_WIDTH], + constraints: gather![|ii| RevolutePositionGroundConstraint::from_params( + rbs1[ii], + (rbs2.0[ii], rbs2.1[ii]), + cparams[ii], + flipped[ii] + )], } } |
