From 2cfa14d5ad1a5f2d20919d36f3e9bb986bd9b147 Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Wed, 24 Sep 2014 18:06:08 -0700 Subject: [PATCH] changed to only collide with moving entities --- .../entities/src/EntityCollisionSystem.cpp | 21 ++++--------------- libraries/entities/src/EntityTree.h | 2 ++ 2 files changed, 6 insertions(+), 17 deletions(-) diff --git a/libraries/entities/src/EntityCollisionSystem.cpp b/libraries/entities/src/EntityCollisionSystem.cpp index 871bcbf76c..8d5941e3e0 100644 --- a/libraries/entities/src/EntityCollisionSystem.cpp +++ b/libraries/entities/src/EntityCollisionSystem.cpp @@ -43,26 +43,13 @@ void EntityCollisionSystem::init(EntityEditPacketSender* packetSender, EntityCollisionSystem::~EntityCollisionSystem() { } -bool EntityCollisionSystem::updateOperation(OctreeElement* element, void* extraData) { - EntityCollisionSystem* system = static_cast(extraData); - EntityTreeElement* entityTreeElement = static_cast(element); - - // iterate the Entities... - QList& entities = entityTreeElement->getEntities(); - uint16_t numberOfEntities = entities.size(); - for (uint16_t i = 0; i < numberOfEntities; i++) { - EntityItem* entity = entities[i]; - system->checkEntity(entity); - } - - return true; -} - - void EntityCollisionSystem::update() { // update all Entities if (_entities->tryLockForRead()) { - _entities->recurseTreeWithOperation(updateOperation, this); + QList& movingEntities = _entities->getMovingEntities(); + foreach (EntityItem* entity, movingEntities) { + checkEntity(entity); + } _entities->unlock(); } } diff --git a/libraries/entities/src/EntityTree.h b/libraries/entities/src/EntityTree.h index d97a87faca..634a04a688 100644 --- a/libraries/entities/src/EntityTree.h +++ b/libraries/entities/src/EntityTree.h @@ -139,6 +139,8 @@ public: void trackDeletedEntity(const EntityItemID& entityID); + QList& getMovingEntities() { return _movingEntities; } + private: void updateChangingEntities(quint64 now, QSet& entitiesToDelete);