mirror of
https://github.com/overte-org/overte.git
synced 2025-04-20 03:44:02 +02:00
lock when reading or writing _actionsToAdd or _actionsToRemove
This commit is contained in:
parent
03a2d190b0
commit
c14276145d
2 changed files with 8 additions and 5 deletions
|
@ -57,10 +57,10 @@ public:
|
|||
|
||||
friend class EntityTree;
|
||||
|
||||
virtual void addAction(EntityActionPointer action) { _actionsToAdd += action; }
|
||||
virtual void removeAction(const QUuid actionID) { _actionsToRemove += actionID; }
|
||||
virtual void removeActions(QList<QUuid> actionIDsToRemove) { _actionsToRemove += actionIDsToRemove; }
|
||||
virtual void applyActionChanges() { _actionsToAdd.clear(); _actionsToRemove.clear(); }
|
||||
virtual void addAction(EntityActionPointer action) { lock(); _actionsToAdd += action; unlock(); }
|
||||
virtual void removeAction(const QUuid actionID) { lock(); _actionsToRemove += actionID; unlock(); }
|
||||
virtual void removeActions(QList<QUuid> actionIDsToRemove) { lock(); _actionsToRemove += actionIDsToRemove; unlock(); }
|
||||
virtual void applyActionChanges() { lock(); _actionsToAdd.clear(); _actionsToRemove.clear(); unlock(); }
|
||||
|
||||
protected: // these only called by the EntityTree?
|
||||
/// \param entity pointer to EntityItem to be added
|
||||
|
|
|
@ -237,12 +237,15 @@ void PhysicalEntitySimulation::handleCollisionEvents(CollisionEvents& collisionE
|
|||
|
||||
void PhysicalEntitySimulation::applyActionChanges() {
|
||||
if (_physicsEngine) {
|
||||
lock();
|
||||
foreach (EntityActionPointer actionToAdd, _actionsToAdd) {
|
||||
_physicsEngine->addAction(actionToAdd);
|
||||
}
|
||||
_actionsToAdd.clear();
|
||||
foreach (QUuid actionToRemove, _actionsToRemove) {
|
||||
_physicsEngine->removeAction(actionToRemove);
|
||||
}
|
||||
_actionsToRemove.clear();
|
||||
unlock();
|
||||
}
|
||||
EntitySimulation::applyActionChanges();
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue