fix: access to deleted Sensor
This commit is contained in:
parent
f8907f7db1
commit
50a388c539
@ -347,6 +347,12 @@ void Entities::clean() {
|
||||
if (!registry.get<EntityId>(it->second).destroyFlag) {
|
||||
++it;
|
||||
} else {
|
||||
auto& rigidbody = registry.get<Rigidbody>(it->second);
|
||||
// todo: refactor
|
||||
auto physics = level->physics.get();
|
||||
for (auto& sensor : rigidbody.sensors) {
|
||||
physics->removeSensor(&sensor);
|
||||
}
|
||||
uids.erase(it->second);
|
||||
registry.destroy(it->second);
|
||||
it = entities.erase(it);
|
||||
|
||||
@ -273,3 +273,7 @@ bool PhysicsSolver::isBlockInside(int x, int y, int z, Block* def, blockstate st
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void PhysicsSolver::removeSensor(Sensor* sensor) {
|
||||
sensors.erase(std::remove(sensors.begin(), sensors.end(), sensor), sensors.end());
|
||||
}
|
||||
|
||||
@ -39,6 +39,8 @@ public:
|
||||
void setSensors(std::vector<Sensor*> sensors) {
|
||||
this->sensors = std::move(sensors);
|
||||
}
|
||||
|
||||
void removeSensor(Sensor* sensor);
|
||||
};
|
||||
|
||||
#endif // PHYSICS_PHYSICSSOLVER_HPP_
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user