Example #1
0
void irrBulletWorld::updateCollisionObjects()
{
    list<ICollisionObject*>::Iterator cbit = collisionObjects.begin();

    for(; cbit != collisionObjects.end(); cbit++)
    {
        ICollisionObject* obj = (*cbit);

        if(obj->getObjectType() == ECOT_SOFT_BODY)
        {
            static_cast<ISoftBody*>(obj)->updateSoftBody();
        }

        if(obj)
        {
            for(u32 j=0; j < obj->getNumAffectors(); j++)
            {
                ICollisionObjectAffector* affector = obj->getAffector(j);
                if(affector->hasFinished() == false)
                {
                    affector->affectObject(obj, device->getTimer()->getTime());
                }
            }
        }
    }

    list<ICollisionObject*>::Iterator dlit = deletionList.begin();

    for(; dlit != deletionList.end(); )
    {
        this->removeCollisionObject((*dlit));
        dlit = deletionList.erase(dlit);
    }
}