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
123 void setWorldTransform(
const btTransform& worldTransform)
125 m_worldTransform = worldTransform;
130 return m_worldTransform;
136 velocity = m_linearVelocity+m_deltaLinearVelocity + (m_angularVelocity+m_deltaAngularVelocity).
cross(rel_pos);
144 angVel =m_angularVelocity+m_deltaAngularVelocity;
155 m_deltaLinearVelocity += linearComponent*impulseMagnitude*m_linearFactor;
156 m_deltaAngularVelocity += angularComponent*(impulseMagnitude*m_angularFactor);
164 m_pushVelocity += linearComponent*impulseMagnitude*m_linearFactor;
165 m_turnVelocity += angularComponent*(impulseMagnitude*m_angularFactor);
171 const btVector3& getDeltaLinearVelocity()
const
173 return m_deltaLinearVelocity;
176 const btVector3& getDeltaAngularVelocity()
const
178 return m_deltaAngularVelocity;
183 return m_pushVelocity;
188 return m_turnVelocity;
195 btVector3& internalGetDeltaLinearVelocity()
197 return m_deltaLinearVelocity;
200 btVector3& internalGetDeltaAngularVelocity()
202 return m_deltaAngularVelocity;
205 const btVector3& internalGetAngularFactor()
const
207 return m_angularFactor;
210 const btVector3& internalGetInvMass()
const
215 void internalSetInvMass(
const btVector3& invMass)
222 return m_pushVelocity;
227 return m_turnVelocity;
232 velocity = m_linearVelocity+m_deltaLinearVelocity + (m_angularVelocity+m_deltaAngularVelocity).
cross(rel_pos);
237 angVel = m_angularVelocity+m_deltaAngularVelocity;
246 m_deltaLinearVelocity += linearComponent*impulseMagnitude*m_linearFactor;
247 m_deltaAngularVelocity += angularComponent*(impulseMagnitude*m_angularFactor);
254 void writebackVelocity()
258 m_linearVelocity +=m_deltaLinearVelocity;
259 m_angularVelocity += m_deltaAngularVelocity;
266 void writebackVelocityAndTransform(
btScalar timeStep,
btScalar splitImpulseTurnErp)
271 m_linearVelocity += m_deltaLinearVelocity;
272 m_angularVelocity += m_deltaAngularVelocity;
276 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)
280 m_worldTransform = newTransform;
291 #endif //BT_SOLVER_BODY_H