From 4f29156da1bd73677ef5523e55513a96cca50630 Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Mon, 4 Jan 2016 12:02:11 -0800 Subject: [PATCH] fixing asserts for EntityItem delete pipeline --- libraries/entities/src/EntityItem.cpp | 1 - libraries/entities/src/EntitySimulation.cpp | 9 +++++---- libraries/physics/src/PhysicalEntitySimulation.cpp | 1 - 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/libraries/entities/src/EntityItem.cpp b/libraries/entities/src/EntityItem.cpp index fb773ee89b..97043a635d 100644 --- a/libraries/entities/src/EntityItem.cpp +++ b/libraries/entities/src/EntityItem.cpp @@ -85,7 +85,6 @@ EntityItem::EntityItem(const EntityItemID& entityItemID) : } EntityItem::~EntityItem() { - assert(isDead()); // mark as dead before calling dtor // clear out any left-over actions EntityTreePointer entityTree = _element ? _element->getTree() : nullptr; EntitySimulation* simulation = entityTree ? entityTree->getSimulation() : nullptr; diff --git a/libraries/entities/src/EntitySimulation.cpp b/libraries/entities/src/EntitySimulation.cpp index 35d5b18fda..ab29cfb2a4 100644 --- a/libraries/entities/src/EntitySimulation.cpp +++ b/libraries/entities/src/EntitySimulation.cpp @@ -59,11 +59,12 @@ void EntitySimulation::removeEntityInternal(EntityItemPointer entity) { void EntitySimulation::prepareEntityForDelete(EntityItemPointer entity) { assert(entity); - assert(entity->isSimulated()); assert(entity->isDead()); - entity->clearActions(this); - removeEntityInternal(entity); - _entitiesToDelete.insert(entity); + if (entity->isSimulated()) { + entity->clearActions(this); + removeEntityInternal(entity); + _entitiesToDelete.insert(entity); + } } void EntitySimulation::addEntityInternal(EntityItemPointer entity) { diff --git a/libraries/physics/src/PhysicalEntitySimulation.cpp b/libraries/physics/src/PhysicalEntitySimulation.cpp index 4116ddeda0..9ef27aaf53 100644 --- a/libraries/physics/src/PhysicalEntitySimulation.cpp +++ b/libraries/physics/src/PhysicalEntitySimulation.cpp @@ -150,7 +150,6 @@ void PhysicalEntitySimulation::clearEntitiesInternal() { // virtual void PhysicalEntitySimulation::prepareEntityForDelete(EntityItemPointer entity) { assert(entity); - assert(entity->isSimulated()); assert(entity->isDead()); entity->clearActions(this); removeEntityInternal(entity);