Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
May 3, 2011, 5:07:42 AM (13 years ago)
Author:
rgrieder
Message:

Updated Bullet from v2.77 to v2.78.
(I'm not going to make a branch for that since the update from 2.74 to 2.77 hasn't been tested that much either).

You will HAVE to do a complete RECOMPILE! I tested with MSVC and MinGW and they both threw linker errors at me.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • code/trunk/src/external/bullet/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp

    r8351 r8393  
    4444                                                                         m_useReferenceFrameA(useReferenceFrameA),
    4545                                                                         m_flags(0)
     46#ifdef _BT_USE_CENTER_LIMIT_
     47                                                                        ,m_limit()
     48#endif
    4649{
    4750        m_rbAFrame.getOrigin() = pivotInA;
     
    7679                                                                        rbAxisB1.getZ(),rbAxisB2.getZ(),axisInB.getZ() );
    7780       
     81#ifndef _BT_USE_CENTER_LIMIT_
    7882        //start with free
    7983        m_lowerLimit = btScalar(1.0f);
     
    8387        m_limitSoftness = 0.9f;
    8488        m_solveLimit = false;
     89#endif
    8590        m_referenceSign = m_useReferenceFrameA ? btScalar(-1.f) : btScalar(1.f);
    8691}
     
    9499m_useReferenceFrameA(useReferenceFrameA),
    95100m_flags(0)
     101#ifdef  _BT_USE_CENTER_LIMIT_
     102,m_limit()
     103#endif
    96104{
    97105
     
    118126                                                                        rbAxisB1.getZ(),rbAxisB2.getZ(),axisInB.getZ() );
    119127       
     128#ifndef _BT_USE_CENTER_LIMIT_
    120129        //start with free
    121130        m_lowerLimit = btScalar(1.0f);
     
    125134        m_limitSoftness = 0.9f;
    126135        m_solveLimit = false;
     136#endif
    127137        m_referenceSign = m_useReferenceFrameA ? btScalar(-1.f) : btScalar(1.f);
    128138}
     
    139149m_useReferenceFrameA(useReferenceFrameA),
    140150m_flags(0)
    141 {
     151#ifdef  _BT_USE_CENTER_LIMIT_
     152,m_limit()
     153#endif
     154{
     155#ifndef _BT_USE_CENTER_LIMIT_
    142156        //start with free
    143157        m_lowerLimit = btScalar(1.0f);
     
    147161        m_limitSoftness = 0.9f;
    148162        m_solveLimit = false;
     163#endif
    149164        m_referenceSign = m_useReferenceFrameA ? btScalar(-1.f) : btScalar(1.f);
    150165}                       
     
    160175m_useReferenceFrameA(useReferenceFrameA),
    161176m_flags(0)
     177#ifdef  _BT_USE_CENTER_LIMIT_
     178,m_limit()
     179#endif
    162180{
    163181        ///not providing rigidbody B means implicitly using worldspace for body B
    164182
    165183        m_rbBFrame.getOrigin() = m_rbA.getCenterOfMassTransform()(m_rbAFrame.getOrigin());
    166 
     184#ifndef _BT_USE_CENTER_LIMIT_
    167185        //start with free
    168186        m_lowerLimit = btScalar(1.0f);
     
    172190        m_limitSoftness = 0.9f;
    173191        m_solveLimit = false;
     192#endif
    174193        m_referenceSign = m_useReferenceFrameA ? btScalar(-1.f) : btScalar(1.f);
    175194}
     
    450469        if(getSolveLimit())
    451470        {
    452                 limit_err = m_correction * m_referenceSign;
    453                 limit = (limit_err > btScalar(0.0)) ? 1 : 2;
     471#ifdef  _BT_USE_CENTER_LIMIT_
     472        limit_err = m_limit.getCorrection() * m_referenceSign;
     473#else
     474        limit_err = m_correction * m_referenceSign;
     475#endif
     476        limit = (limit_err > btScalar(0.0)) ? 1 : 2;
     477
    454478        }
    455479        // if the hinge has joint limits or motor, add in the extra row
     
    515539                        }
    516540                        // bounce (we'll use slider parameter abs(1.0 - m_dampingLimAng) for that)
     541#ifdef  _BT_USE_CENTER_LIMIT_
     542                        btScalar bounce = m_limit.getRelaxationFactor();
     543#else
    517544                        btScalar bounce = m_relaxationFactor;
     545#endif
    518546                        if(bounce > btScalar(0.0))
    519547                        {
     
    545573                                }
    546574                        }
     575#ifdef  _BT_USE_CENTER_LIMIT_
     576                        info->m_constraintError[srow] *= m_limit.getBiasFactor();
     577#else
    547578                        info->m_constraintError[srow] *= m_biasFactor;
     579#endif
    548580                } // if(limit)
    549581        } // if angular limit or powered
     
    551583
    552584
    553 
    554 
     585void btHingeConstraint::setFrames(const btTransform & frameA, const btTransform & frameB)
     586{
     587        m_rbAFrame = frameA;
     588        m_rbBFrame = frameB;
     589        buildJacobian();
     590}
    555591
    556592
     
    578614
    579615
    580 #if 0
    581 void btHingeConstraint::testLimit()
    582 {
    583         // Compute limit information
    584         m_hingeAngle = getHingeAngle(); 
    585         m_correction = btScalar(0.);
    586         m_limitSign = btScalar(0.);
    587         m_solveLimit = false;
    588         if (m_lowerLimit <= m_upperLimit)
    589         {
    590                 if (m_hingeAngle <= m_lowerLimit)
    591                 {
    592                         m_correction = (m_lowerLimit - m_hingeAngle);
    593                         m_limitSign = 1.0f;
    594                         m_solveLimit = true;
    595                 }
    596                 else if (m_hingeAngle >= m_upperLimit)
    597                 {
    598                         m_correction = m_upperLimit - m_hingeAngle;
    599                         m_limitSign = -1.0f;
    600                         m_solveLimit = true;
    601                 }
    602         }
    603         return;
    604 }
    605 #else
    606 
    607616
    608617void btHingeConstraint::testLimit(const btTransform& transA,const btTransform& transB)
     
    610619        // Compute limit information
    611620        m_hingeAngle = getHingeAngle(transA,transB);
     621#ifdef  _BT_USE_CENTER_LIMIT_
     622        m_limit.test(m_hingeAngle);
     623#else
    612624        m_correction = btScalar(0.);
    613625        m_limitSign = btScalar(0.);
     
    629641                }
    630642        }
     643#endif
    631644        return;
    632645}
    633 #endif
     646
    634647
    635648static btVector3 vHinge(0, 0, btScalar(1));
     
    662675void btHingeConstraint::setMotorTarget(btScalar targetAngle, btScalar dt)
    663676{
     677#ifdef  _BT_USE_CENTER_LIMIT_
     678        m_limit.fit(targetAngle);
     679#else
    664680        if (m_lowerLimit < m_upperLimit)
    665681        {
     
    669685                        targetAngle = m_upperLimit;
    670686        }
    671 
     687#endif
    672688        // compute angular velocity
    673689        btScalar curAngle  = getHingeAngle(m_rbA.getCenterOfMassTransform(),m_rbB.getCenterOfMassTransform());
     
    840856        if(getSolveLimit())
    841857        {
    842                 limit_err = m_correction * m_referenceSign;
    843                 limit = (limit_err > btScalar(0.0)) ? 1 : 2;
     858#ifdef  _BT_USE_CENTER_LIMIT_
     859        limit_err = m_limit.getCorrection() * m_referenceSign;
     860#else
     861        limit_err = m_correction * m_referenceSign;
     862#endif
     863        limit = (limit_err > btScalar(0.0)) ? 1 : 2;
     864
    844865        }
    845866        // if the hinge has joint limits or motor, add in the extra row
     
    905926                        }
    906927                        // bounce (we'll use slider parameter abs(1.0 - m_dampingLimAng) for that)
     928#ifdef  _BT_USE_CENTER_LIMIT_
     929                        btScalar bounce = m_limit.getRelaxationFactor();
     930#else
    907931                        btScalar bounce = m_relaxationFactor;
     932#endif
    908933                        if(bounce > btScalar(0.0))
    909934                        {
     
    935960                                }
    936961                        }
     962#ifdef  _BT_USE_CENTER_LIMIT_
     963                        info->m_constraintError[srow] *= m_limit.getBiasFactor();
     964#else
    937965                        info->m_constraintError[srow] *= m_biasFactor;
     966#endif
    938967                } // if(limit)
    939968        } // if angular limit or powered
Note: See TracChangeset for help on using the changeset viewer.