void Scene::resetItems(const ItemIDs& ids, Payloads& payloads) { auto resetPayload = payloads.begin(); for (auto resetID : ids) { // Access the true item auto& item = _items[resetID]; auto oldKey = item.getKey(); auto oldCell = item.getCell(); // Reset the item with a new payload item.resetPayload(*resetPayload); auto newKey = item.getKey(); // Update the item's container assert((oldKey.isSpatial() == newKey.isSpatial()) || oldKey._flags.none()); if (newKey.isSpatial()) { auto newCell = _masterSpatialTree.resetItem(oldCell, oldKey, item.getBound(), resetID, newKey); item.resetCell(newCell, newKey.isSmall()); } else { _masterNonspatialSet.insert(resetID); } // next loop resetPayload++; } }
void Scene::resetItems(const ItemIDs& ids, Payloads& payloads) { auto resetID = ids.begin(); auto resetPayload = payloads.begin(); for (;resetID != ids.end(); resetID++, resetPayload++) { auto& item = _items[(*resetID)]; auto oldKey = item.getKey(); item.resetPayload(*resetPayload); _masterBucketMap.reset((*resetID), oldKey, item.getKey()); } }