Try a different approach for creature deletion
This works almost instantly, as opposed to the refactored version, which takes nearly a second, or more.
This commit is contained in:
@@ -71,6 +71,8 @@ void RoomData::RunFrame() {
|
|||||||
for (auto characterIt : characterList) {
|
for (auto characterIt : characterList) {
|
||||||
BoundingBox characterBox = characterIt->GetBounds() + characterIt->GetOrigin();
|
BoundingBox characterBox = characterIt->GetBounds() + characterIt->GetOrigin();
|
||||||
|
|
||||||
|
std::list<int> creatureUnloadList;
|
||||||
|
|
||||||
for (auto creatureIt : *creatureMgr.GetContainer()) {
|
for (auto creatureIt : *creatureMgr.GetContainer()) {
|
||||||
BoundingBox creatureBox = creatureIt.second.GetBounds() + creatureIt.second.GetOrigin();
|
BoundingBox creatureBox = creatureIt.second.GetBounds() + creatureIt.second.GetOrigin();
|
||||||
|
|
||||||
@@ -88,8 +90,24 @@ void RoomData::RunFrame() {
|
|||||||
copyBarrierToPacket(&barrierPacket, barrierData, barrierIndex);
|
copyBarrierToPacket(&barrierPacket, barrierData, barrierIndex);
|
||||||
|
|
||||||
pumpPacketProximity(reinterpret_cast<SerialPacket*>(&barrierPacket), roomIndex, characterIt->GetOrigin(), INFLUENCE_RADIUS);
|
pumpPacketProximity(reinterpret_cast<SerialPacket*>(&barrierPacket), roomIndex, characterIt->GetOrigin(), INFLUENCE_RADIUS);
|
||||||
|
|
||||||
|
//delete this creature
|
||||||
|
creatureUnloadList.push_back(creatureIt.first);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//actually unload these creatures
|
||||||
|
for (auto& it : creatureUnloadList) {
|
||||||
|
CreatureData* creatureData = creatureMgr.Find(it);
|
||||||
|
|
||||||
|
CreaturePacket creaturePacket;
|
||||||
|
creaturePacket.type = SerialPacketType::CREATURE_UNLOAD;
|
||||||
|
copyCreatureToPacket(&creaturePacket, creatureData, it);
|
||||||
|
|
||||||
|
pumpPacketProximity(reinterpret_cast<SerialPacket*>(&creaturePacket), roomIndex, creatureData->GetOrigin(), INFLUENCE_RADIUS);
|
||||||
|
|
||||||
|
creatureMgr.Unload(it);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//send the creature updates
|
//send the creature updates
|
||||||
|
|||||||
Reference in New Issue
Block a user