Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Apr 21, 2011, 6:58:23 PM (13 years ago)
Author:
rgrieder
Message:

Merged revisions 7978 - 8096 from kicklib to kicklib2.

Location:
code/branches/kicklib2
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • code/branches/kicklib2

  • code/branches/kicklib2/src/external/bullet/BulletDynamics/ConstraintSolver/btSolverBody.h

    r5781 r8284  
    106106
    107107///The btSolverBody is an internal datastructure for the constraint solver. Only necessary data is packed to increase cache coherence/performance.
    108 ATTRIBUTE_ALIGNED16 (struct)    btSolverBody
     108ATTRIBUTE_ALIGNED64 (struct)    btSolverBodyObsolete
    109109{
    110110        BT_DECLARE_ALIGNED_ALLOCATOR();
    111111        btVector3               m_deltaLinearVelocity;
    112112        btVector3               m_deltaAngularVelocity;
    113         btScalar                m_angularFactor;
    114         btScalar                m_invMass;
    115         btScalar                m_friction;
     113        btVector3               m_angularFactor;
     114        btVector3               m_invMass;
    116115        btRigidBody*    m_originalBody;
    117116        btVector3               m_pushVelocity;
    118         //btVector3             m_turnVelocity;
     117        btVector3               m_turnVelocity;
    119118
    120119       
     
    146145        }
    147146
    148        
    149 /*
     147        SIMD_FORCE_INLINE void internalApplyPushImpulse(const btVector3& linearComponent, const btVector3& angularComponent,btScalar impulseMagnitude)
     148        {
     149                if (m_originalBody)
     150                {
     151                        m_pushVelocity += linearComponent*impulseMagnitude;
     152                        m_turnVelocity += angularComponent*(impulseMagnitude*m_angularFactor);
     153                }
     154        }
    150155       
    151156        void    writebackVelocity()
    152157        {
    153                 if (m_invMass)
     158                if (m_originalBody)
    154159                {
    155160                        m_originalBody->setLinearVelocity(m_originalBody->getLinearVelocity()+ m_deltaLinearVelocity);
     
    159164                }
    160165        }
    161         */
    162166
    163         void    writebackVelocity(btScalar timeStep=0)
     167
     168        void    writebackVelocity(btScalar timeStep)
    164169        {
    165                 if (m_invMass)
     170        (void) timeStep;
     171                if (m_originalBody)
    166172                {
    167                         m_originalBody->setLinearVelocity(m_originalBody->getLinearVelocity()+m_deltaLinearVelocity);
     173                        m_originalBody->setLinearVelocity(m_originalBody->getLinearVelocity()+ m_deltaLinearVelocity);
    168174                        m_originalBody->setAngularVelocity(m_originalBody->getAngularVelocity()+m_deltaAngularVelocity);
     175                       
     176                        //correct the position/orientation based on push/turn recovery
     177                        btTransform newTransform;
     178                        btTransformUtil::integrateTransform(m_originalBody->getWorldTransform(),m_pushVelocity,m_turnVelocity,timeStep,newTransform);
     179                        m_originalBody->setWorldTransform(newTransform);
     180                       
    169181                        //m_originalBody->setCompanionId(-1);
    170182                }
Note: See TracChangeset for help on using the changeset viewer.