mirror of
https://github.com/overte-org/overte.git
synced 2025-08-06 19:59:28 +02:00
changed to only collide with moving entities
This commit is contained in:
parent
4b52fddffd
commit
2cfa14d5ad
2 changed files with 6 additions and 17 deletions
|
@ -43,26 +43,13 @@ void EntityCollisionSystem::init(EntityEditPacketSender* packetSender,
|
||||||
EntityCollisionSystem::~EntityCollisionSystem() {
|
EntityCollisionSystem::~EntityCollisionSystem() {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool EntityCollisionSystem::updateOperation(OctreeElement* element, void* extraData) {
|
|
||||||
EntityCollisionSystem* system = static_cast<EntityCollisionSystem*>(extraData);
|
|
||||||
EntityTreeElement* entityTreeElement = static_cast<EntityTreeElement*>(element);
|
|
||||||
|
|
||||||
// iterate the Entities...
|
|
||||||
QList<EntityItem*>& 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() {
|
void EntityCollisionSystem::update() {
|
||||||
// update all Entities
|
// update all Entities
|
||||||
if (_entities->tryLockForRead()) {
|
if (_entities->tryLockForRead()) {
|
||||||
_entities->recurseTreeWithOperation(updateOperation, this);
|
QList<EntityItem*>& movingEntities = _entities->getMovingEntities();
|
||||||
|
foreach (EntityItem* entity, movingEntities) {
|
||||||
|
checkEntity(entity);
|
||||||
|
}
|
||||||
_entities->unlock();
|
_entities->unlock();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -139,6 +139,8 @@ public:
|
||||||
|
|
||||||
void trackDeletedEntity(const EntityItemID& entityID);
|
void trackDeletedEntity(const EntityItemID& entityID);
|
||||||
|
|
||||||
|
QList<EntityItem*>& getMovingEntities() { return _movingEntities; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
void updateChangingEntities(quint64 now, QSet<EntityItemID>& entitiesToDelete);
|
void updateChangingEntities(quint64 now, QSet<EntityItemID>& entitiesToDelete);
|
||||||
|
|
Loading…
Reference in a new issue