16 #ifndef BT_SOLVER_BODY_H
17 #define BT_SOLVER_BODY_H
42 :m_vec128 (_mm_set1_ps(fl))
92 return btSimdScalar(_mm_mul_ps(v1.get128(),v2.get128()));
99 return btSimdScalar(_mm_add_ps(v1.get128(),v2.get128()));
104 #define btSimdScalar btScalar
127 m_worldTransform = worldTransform;
132 return m_worldTransform;
140 velocity = m_linearVelocity + m_externalForceImpulse + (m_angularVelocity+m_externalTorqueImpulse).
cross(rel_pos);
149 velocity = m_linearVelocity+m_deltaLinearVelocity + (m_angularVelocity+m_deltaAngularVelocity).
cross(rel_pos);
157 angVel =m_angularVelocity+m_deltaAngularVelocity;
168 m_deltaLinearVelocity += linearComponent*impulseMagnitude*m_linearFactor;
169 m_deltaAngularVelocity += angularComponent*(impulseMagnitude*m_angularFactor);
177 m_pushVelocity += linearComponent*impulseMagnitude*m_linearFactor;
178 m_turnVelocity += angularComponent*(impulseMagnitude*m_angularFactor);
186 return m_deltaLinearVelocity;
191 return m_deltaAngularVelocity;
196 return m_pushVelocity;
201 return m_turnVelocity;
210 return m_deltaLinearVelocity;
215 return m_deltaAngularVelocity;
220 return m_angularFactor;
235 return m_pushVelocity;
240 return m_turnVelocity;
245 velocity = m_linearVelocity+m_deltaLinearVelocity + (m_angularVelocity+m_deltaAngularVelocity).
cross(rel_pos);
250 angVel = m_angularVelocity+m_deltaAngularVelocity;
259 m_deltaLinearVelocity += linearComponent*impulseMagnitude*m_linearFactor;
260 m_deltaAngularVelocity += angularComponent*(impulseMagnitude*m_angularFactor);
267 void writebackVelocity()
271 m_linearVelocity +=m_deltaLinearVelocity;
272 m_angularVelocity += m_deltaAngularVelocity;
284 m_linearVelocity += m_deltaLinearVelocity;
285 m_angularVelocity += m_deltaAngularVelocity;
289 if (m_pushVelocity[0]!=0.f || m_pushVelocity[1]!=0 || m_pushVelocity[2]!=0 || m_turnVelocity[0]!=0.f || m_turnVelocity[1]!=0 || m_turnVelocity[2]!=0)
293 m_worldTransform = newTransform;
304 #endif //BT_SOLVER_BODY_H