History

overhaul of MotionState cleanup

Moved MotionState deletes out of PhysicsEngine. EntityMotionStates are deleted by the PhysicsEntitySimulation. AvatarMotionStates are deleted in the Avatar dtor.

Andrew Meadows committed 10 years ago

Commit 6eb17701 parent 8886f4825 files · +158 −181Browse files

Showing the changes to interface/src/Application.cpp (1 of 25 files). Show all

Unified · Split

interface/src/Application.cpp+9−9
@@ -1084,8 +1084,8 @@ Application::~Application() { · 1083 unmodified lines
10841084 // remove avatars from physics engine
10851085 DependencyManager::get<AvatarManager>()->clearOtherAvatars();
10861086 VectorOfMotionStates motionStates;
1087− DependencyManager::get<AvatarManager>()->getObjectsToDelete(motionStates);
1088− _physicsEngine->deleteObjects(motionStates);
1087+ DependencyManager::get<AvatarManager>()->getObjectsToRemoveFromPhysics(motionStates);
1088+ _physicsEngine->removeObjects(motionStates);
10891089
10901090 DependencyManager::destroy<OffscreenUi>();
10911091 DependencyManager::destroy<AvatarManager>();
@@ -3085,11 +3085,11 @@ void Application::update(float deltaTime) { · 1993 unmodified lines
30853085 PerformanceTimer perfTimer("physics");
30863086
30873087 static VectorOfMotionStates motionStates;
3088− _entitySimulation.getObjectsToDelete(motionStates);
3089− _physicsEngine->deleteObjects(motionStates);
3088+ _entitySimulation.getObjectsToRemoveFromPhysics(motionStates);
3089+ _physicsEngine->removeObjects(motionStates);
30903090
30913091 getEntities()->getTree()->withWriteLock([&] {
3092− _entitySimulation.getObjectsToAdd(motionStates);
3092+ _entitySimulation.getObjectsToAddToPhysics(motionStates);
30933093 _physicsEngine->addObjects(motionStates);
30943094
30953095 });
@@ -3102,9 +3102,9 @@ void Application::update(float deltaTime) { · 6 unmodified lines
31023102 _entitySimulation.applyActionChanges();
31033103
31043104 AvatarManager* avatarManager = DependencyManager::get<AvatarManager>().data();
3105− avatarManager->getObjectsToDelete(motionStates);
3106− _physicsEngine->deleteObjects(motionStates);
3107− avatarManager->getObjectsToAdd(motionStates);
3105+ avatarManager->getObjectsToRemoveFromPhysics(motionStates);
3106+ _physicsEngine->removeObjects(motionStates);
3107+ avatarManager->getObjectsToAddToPhysics(motionStates);
31083108 _physicsEngine->addObjects(motionStates);
31093109 avatarManager->getObjectsToChange(motionStates);
31103110 _physicsEngine->changeObjects(motionStates);
@@ -4083,7 +4083,7 @@ bool Application::nearbyEntitiesAreReadyForPhysics() { · 972 unmodified lines
40834083 });
40844084
40854085 foreach (EntityItemPointer entity, entities) {
4086− if (!entity->isReadyToComputeShape()) {
4086+ if (entity->shouldBePhysical() && !entity->isReadyToComputeShape()) {
40874087 static QString repeatedMessage =
40884088 LogHandler::getInstance().addRepeatedMessageRegex("Physics disabled until entity loads: .*");
40894089 qCDebug(interfaceapp) << "Physics disabled until entity loads: " << entity->getID() << entity->getName();