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);
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;
btMatrix3x3 operator*(const btMatrix3x3 &m, const btScalar &k)
btMatrix3x3 operator+(const btMatrix3x3 &m1, const btMatrix3x3 &m2)
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...
#define ATTRIBUTE_ALIGNED16(a)
#define SIMD_FORCE_INLINE
#define btSimdScalar
Until we get other contributions, only use SIMD on Windows, when using Visual Studio 2008 or later,...
The btRigidBody is the main class for rigid body objects.
btVector3 can be used to represent 3D points and vectors.
void setValue(const btScalar &_x, const btScalar &_y, const btScalar &_z)
The btSolverBody is an internal datastructure for the constraint solver. Only necessary data is packe...
void getAngularVelocity(btVector3 &angVel) const
const btVector3 & getPushVelocity() const
const btVector3 & getTurnVelocity() const
const btVector3 & getDeltaLinearVelocity() const
btVector3 & internalGetDeltaAngularVelocity()
void setWorldTransform(const btTransform &worldTransform)
btVector3 m_angularVelocity
btVector3 m_deltaLinearVelocity
btRigidBody * m_originalBody
void internalApplyPushImpulse(const btVector3 &linearComponent, const btVector3 &angularComponent, btScalar impulseMagnitude)
btVector3 & internalGetTurnVelocity()
BT_DECLARE_ALIGNED_ALLOCATOR()
btVector3 m_deltaAngularVelocity
btVector3 m_linearVelocity
void getVelocityInLocalPointNoDelta(const btVector3 &rel_pos, btVector3 &velocity) const
const btVector3 & getDeltaAngularVelocity() const
btTransform m_worldTransform
btVector3 & internalGetPushVelocity()
const btVector3 & internalGetAngularFactor() const
void writebackVelocityAndTransform(btScalar timeStep, btScalar splitImpulseTurnErp)
btVector3 & internalGetDeltaLinearVelocity()
some internal methods, don't use them
void internalSetInvMass(const btVector3 &invMass)
btVector3 m_angularFactor
void internalApplyImpulse(const btVector3 &linearComponent, const btVector3 &angularComponent, const btScalar impulseMagnitude)
void internalGetAngularVelocity(btVector3 &angVel) const
btVector3 m_externalTorqueImpulse
void internalGetVelocityInLocalPointObsolete(const btVector3 &rel_pos, btVector3 &velocity) const
const btTransform & getWorldTransform() const
void applyImpulse(const btVector3 &linearComponent, const btVector3 &angularComponent, const btScalar impulseMagnitude)
void getVelocityInLocalPointObsolete(const btVector3 &rel_pos, btVector3 &velocity) const
const btVector3 & internalGetInvMass() const
btVector3 m_externalForceImpulse