~ubuntu-branches/ubuntu/maverick/blender/maverick

« back to all changes in this revision

Viewing changes to extern/bullet2/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Khashayar Naderehvandi, Khashayar Naderehvandi, Alessio Treglia
  • Date: 2009-01-22 16:53:59 UTC
  • mfrom: (14.1.1 experimental)
  • Revision ID: james.westby@ubuntu.com-20090122165359-v0996tn7fbit64ni
Tags: 2.48a+dfsg-1ubuntu1
[ Khashayar Naderehvandi ]
* Merge from debian experimental (LP: #320045), Ubuntu remaining changes:
  - Add patch correcting header file locations.
  - Add libvorbis-dev and libgsm1-dev to Build-Depends.
  - Use avcodec_decode_audio2() in source/blender/src/hddaudio.c

[ Alessio Treglia ]
* Add missing previous changelog entries.

Show diffs side-by-side

added added

removed removed

Lines of Context:
27
27
  can be used by probes that are checking whether the
28
28
  library is actually installed.
29
29
*/
30
 
extern "C" void btBulletDynamicsProbe () {}
31
 
 
32
 
 
33
 
 
34
 
 
35
 
btSimpleDynamicsWorld::btSimpleDynamicsWorld(btDispatcher* dispatcher,btOverlappingPairCache* pairCache,btConstraintSolver* constraintSolver)
36
 
:btDynamicsWorld(dispatcher,pairCache),
 
30
extern "C" 
 
31
{
 
32
        void btBulletDynamicsProbe ();
 
33
        void btBulletDynamicsProbe () {}
 
34
}
 
35
 
 
36
 
 
37
 
 
38
 
 
39
btSimpleDynamicsWorld::btSimpleDynamicsWorld(btDispatcher* dispatcher,btBroadphaseInterface* pairCache,btConstraintSolver* constraintSolver,btCollisionConfiguration* collisionConfiguration)
 
40
:btDynamicsWorld(dispatcher,pairCache,collisionConfiguration),
37
41
m_constraintSolver(constraintSolver),
38
42
m_ownsConstraintSolver(false),
39
 
m_debugDrawer(0),
40
43
m_gravity(0,0,-10)
41
44
{
42
45
 
46
49
btSimpleDynamicsWorld::~btSimpleDynamicsWorld()
47
50
{
48
51
        if (m_ownsConstraintSolver)
49
 
                delete m_constraintSolver;
 
52
                btAlignedFree( m_constraintSolver);
50
53
}
51
54
 
52
55
int             btSimpleDynamicsWorld::stepSimulation( btScalar timeStep,int maxSubSteps, btScalar fixedTimeStep)
74
77
                
75
78
                btContactSolverInfo infoGlobal;
76
79
                infoGlobal.m_timeStep = timeStep;
77
 
                
78
 
                m_constraintSolver->solveGroup(0,0,manifoldPtr, numManifolds,0,0,infoGlobal,m_debugDrawer, m_stackAlloc);
 
80
                m_constraintSolver->prepareSolve(0,numManifolds);
 
81
                m_constraintSolver->solveGroup(0,0,manifoldPtr, numManifolds,0,0,infoGlobal,m_debugDrawer, m_stackAlloc,m_dispatcher1);
 
82
                m_constraintSolver->allSolved(infoGlobal,m_debugDrawer, m_stackAlloc);
79
83
        }
80
84
 
81
85
        ///integrate transforms
85
89
 
86
90
        synchronizeMotionStates();
87
91
 
 
92
        clearForces();
 
93
 
88
94
        return 1;
89
95
 
90
96
}
91
97
 
 
98
void    btSimpleDynamicsWorld::clearForces()
 
99
{
 
100
        //todo: iterate over awake simulation islands!
 
101
        for ( int i=0;i<m_collisionObjects.size();i++)
 
102
        {
 
103
                btCollisionObject* colObj = m_collisionObjects[i];
 
104
                
 
105
                btRigidBody* body = btRigidBody::upcast(colObj);
 
106
                if (body)
 
107
                {
 
108
                        body->clearForces();
 
109
                }
 
110
        }
 
111
}       
 
112
 
92
113
 
93
114
void    btSimpleDynamicsWorld::setGravity(const btVector3& gravity)
94
115
{
104
125
        }
105
126
}
106
127
 
 
128
btVector3 btSimpleDynamicsWorld::getGravity () const
 
129
{
 
130
        return m_gravity;
 
131
}
 
132
 
107
133
void    btSimpleDynamicsWorld::removeRigidBody(btRigidBody* body)
108
134
{
109
135
        removeCollisionObject(body);
133
159
                                btPoint3 minAabb,maxAabb;
134
160
                                colObj->getCollisionShape()->getAabb(colObj->getWorldTransform(), minAabb,maxAabb);
135
161
                                btBroadphaseInterface* bp = getBroadphase();
136
 
                                bp->setAabb(body->getBroadphaseHandle(),minAabb,maxAabb);
 
162
                                bp->setAabb(body->getBroadphaseHandle(),minAabb,maxAabb, m_dispatcher1);
137
163
                        }
138
164
                }
139
165
        }
171
197
                        {
172
198
                                if (body->isActive())
173
199
                                {
174
 
                                        body->applyForces( timeStep);
 
200
                                        body->applyGravity();
175
201
                                        body->integrateVelocities( timeStep);
 
202
                                        body->applyDamping(timeStep);
176
203
                                        body->predictIntegratedTransform(timeStep,body->getInterpolationWorldTransform());
177
204
                                }
178
205
                        }
204
231
{
205
232
        if (m_ownsConstraintSolver)
206
233
        {
207
 
                delete m_constraintSolver;
 
234
                btAlignedFree(m_constraintSolver);
208
235
        }
209
236
        m_ownsConstraintSolver = false;
210
237
        m_constraintSolver = solver;
211
238
}
 
239
 
 
240
btConstraintSolver* btSimpleDynamicsWorld::getConstraintSolver()
 
241
{
 
242
        return m_constraintSolver;
 
243
}