void PhysicsEngine::removeAction(const QUuid actionID) { if (_objectActions.contains(actionID)) { EntityActionPointer action = _objectActions[actionID]; ObjectAction* objectAction = static_cast<ObjectAction*>(action.get()); _dynamicsWorld->removeAction(objectAction); _objectActions.remove(actionID); } }
void PhysicsEngine::addAction(EntityActionPointer action) { assert(action); const QUuid& actionID = action->getID(); if (_objectActions.contains(actionID)) { assert(_objectActions[actionID] == action); return; } _objectActions[actionID] = action; // bullet needs a pointer to the action, but it doesn't use shared pointers. // is there a way to bump the reference count? ObjectAction* objectAction = static_cast<ObjectAction*>(action.get()); _dynamicsWorld->addAction(objectAction); }