mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-03-24 13:43:43 +00:00
Reuse physics actors positions buffer
This commit is contained in:
parent
1859c6eded
commit
cdc9141e2f
@ -798,16 +798,16 @@ namespace MWPhysics
|
||||
const auto world = MWBase::Environment::get().getWorld();
|
||||
|
||||
// copy new ptr position in temporary vector. player is handled separately as its movement might change active cell.
|
||||
std::vector<std::pair<MWWorld::Ptr, osg::Vec3f>> newPositions;
|
||||
newPositions.reserve(mActors.size() - 1);
|
||||
mActorsPositions.clear();
|
||||
mActorsPositions.reserve(mActors.size() - 1);
|
||||
for (const auto& [ptr, physicActor] : mActors)
|
||||
{
|
||||
if (physicActor.get() == player)
|
||||
continue;
|
||||
newPositions.emplace_back(physicActor->getPtr(), physicActor->getSimulationPosition());
|
||||
mActorsPositions.emplace_back(physicActor->getPtr(), physicActor->getSimulationPosition());
|
||||
}
|
||||
|
||||
for (auto& [ptr, pos] : newPositions)
|
||||
for (const auto& [ptr, pos] : mActorsPositions)
|
||||
world->moveObject(ptr, pos, false, false);
|
||||
|
||||
world->moveObject(player->getPtr(), player->getSimulationPosition(), false, false);
|
||||
|
@ -335,6 +335,7 @@ namespace MWPhysics
|
||||
|
||||
std::size_t mSimulationsCounter = 0;
|
||||
std::array<std::vector<Simulation>, 2> mSimulations;
|
||||
std::vector<std::pair<MWWorld::Ptr, osg::Vec3f>> mActorsPositions;
|
||||
|
||||
PhysicsSystem (const PhysicsSystem&);
|
||||
PhysicsSystem& operator= (const PhysicsSystem&);
|
||||
|
Loading…
x
Reference in New Issue
Block a user