void ofxPhysics2d::update(float timeStep){ numParticles = particles.size(); numConstraints = constraints.size(); if(bGravity){ for(int i=0; i<numParticles; i++){ particles[i]->applyImpulse(gravity); } } for(int i=0; i<numParticles; i++){ particles[i]->updateParticle(timeStep); } ofxCollisionSolverBase& collisionSolverRef = *collisionSolver; for(int n=0; n<numIterations; n++){ for(int i=0; i<numConstraints; i++){ constraints[i]->update(); } if(bCollisions){ collisionSolverRef.solve(particles); } if(bCheckBounds){ boundsConstrain(); } } }
void ofxPhysics3d::update(float timeStep){ numConstraints = constraints.size(); if(bGravity){ for(int i=0; i<particles.size(); i++){ particles[i]->applyImpulse(gravity); } } for(int i=0; i<particles.size(); i++){ particles[i]->updateParticle(timeStep); } for(int n=0; n<numIterations; n++){ for(int i=0; i<numConstraints; i++){ constraints[i]->update(); } if(bCheckBounds){ boundsConstrain(); } } if(bCollisions) collisionSolver->solve(particles, numIterations); }