From 5da38834e2e762f387ecc23cd1c48bdd92e12020 Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Tue, 20 Jan 2015 11:16:40 -0800 Subject: [PATCH] introduce notion of NumSteps vs NumSubsteps --- libraries/physics/src/PhysicsEngine.cpp | 12 +++--------- libraries/physics/src/PhysicsEngine.h | 23 +++++++++++------------ 2 files changed, 14 insertions(+), 21 deletions(-) diff --git a/libraries/physics/src/PhysicsEngine.cpp b/libraries/physics/src/PhysicsEngine.cpp index af4a49aefe..870fdc6a9d 100644 --- a/libraries/physics/src/PhysicsEngine.cpp +++ b/libraries/physics/src/PhysicsEngine.cpp @@ -21,13 +21,7 @@ uint32_t PhysicsEngine::getNumSubsteps() { } PhysicsEngine::PhysicsEngine(const glm::vec3& offset) - : _collisionConfig(NULL), - _collisionDispatcher(NULL), - _broadphaseFilter(NULL), - _constraintSolver(NULL), - _dynamicsWorld(NULL), - _originOffset(offset), - _entityPacketSender(NULL) { + : _originOffset(offset) { } PhysicsEngine::~PhysicsEngine() { @@ -234,10 +228,10 @@ void PhysicsEngine::stepSimulation() { unlock(); _entityTree->unlock(); - handleCollisionEvents(); + computeCollisionEvents(); } -void PhysicsEngine::handleCollisionEvents() { +void PhysicsEngine::computeCollisionEvents() { } diff --git a/libraries/physics/src/PhysicsEngine.h b/libraries/physics/src/PhysicsEngine.h index 7304f598e2..1f4efc6b06 100644 --- a/libraries/physics/src/PhysicsEngine.h +++ b/libraries/physics/src/PhysicsEngine.h @@ -33,8 +33,10 @@ class ObjectMotionState; class PhysicsEngine : public EntitySimulation { public: + // TODO: find a good way to make this a non-static method static uint32_t getNumSubsteps(); + PhysicsEngine() = delete; // prevent compiler from creating default ctor PhysicsEngine(const glm::vec3& offset); ~PhysicsEngine(); @@ -51,7 +53,7 @@ public: void stepSimulation(); - void handleCollisionEvents(); + void computeCollisionEvents(); /// \param offset position of simulation origin in domain-frame void setOriginOffset(const glm::vec3& offset) { _originOffset = offset; } @@ -70,22 +72,18 @@ public: /// process queue of changed from external sources void relayIncomingChangesToSimulation(); - /// \return duration of fixed simulation substep - float getFixedSubStep() const; - -protected: +private: void updateObjectHard(btRigidBody* body, ObjectMotionState* motionState, uint32_t flags); void updateObjectEasy(btRigidBody* body, ObjectMotionState* motionState, uint32_t flags); btClock _clock; - btDefaultCollisionConfiguration* _collisionConfig; - btCollisionDispatcher* _collisionDispatcher; - btBroadphaseInterface* _broadphaseFilter; - btSequentialImpulseConstraintSolver* _constraintSolver; - ThreadSafeDynamicsWorld* _dynamicsWorld; + btDefaultCollisionConfiguration* _collisionConfig = NULL; + btCollisionDispatcher* _collisionDispatcher = NULL; + btBroadphaseInterface* _broadphaseFilter = NULL; + btSequentialImpulseConstraintSolver* _constraintSolver = NULL; + ThreadSafeDynamicsWorld* _dynamicsWorld = NULL; ShapeManager _shapeManager; -private: glm::vec3 _originOffset; // EntitySimulation stuff @@ -93,7 +91,8 @@ private: QSet _incomingChanges; // entities with pending physics changes by script or packet QSet _outgoingPackets; // MotionStates with pending changes that need to be sent over wire - EntityEditPacketSender* _entityPacketSender; + EntityEditPacketSender* _entityPacketSender = NULL; + uint32_t _numSteps = 0; // do not confuse with static _numSubsteps }; #endif // hifi_PhysicsEngine_h