diff --git a/.gitignore b/.gitignore index 9030fae6..5100f153 100644 --- a/.gitignore +++ b/.gitignore @@ -20,4 +20,12 @@ .Trashes Icon? ehthumbs.db -Thumbs.db \ No newline at end of file +Thumbs.db + +# vim swap files +##################### +*.*sw* + +# CMake build directory +####################### +build/* diff --git a/src/body/RigidBody.cpp b/src/body/RigidBody.cpp index 32f540f8..364a7592 100644 --- a/src/body/RigidBody.cpp +++ b/src/body/RigidBody.cpp @@ -400,8 +400,8 @@ void RigidBody::updateBroadPhaseState() const { PROFILE("RigidBody::updateBroadPhaseState()"); - DynamicsWorld& world = dynamic_cast(mWorld); - const Vector3 displacement = world.mTimeStep* mLinearVelocity; + DynamicsWorld& world = static_cast(mWorld); + const Vector3 displacement = world.mTimeStep * mLinearVelocity; // For all the proxy collision shapes of the body for (ProxyShape* shape = mProxyCollisionShapes; shape != NULL; shape = shape->mNext) { diff --git a/src/collision/narrowphase/SphereVsSphereAlgorithm.cpp b/src/collision/narrowphase/SphereVsSphereAlgorithm.cpp index ceeb528a..5570c985 100644 --- a/src/collision/narrowphase/SphereVsSphereAlgorithm.cpp +++ b/src/collision/narrowphase/SphereVsSphereAlgorithm.cpp @@ -48,8 +48,8 @@ bool SphereVsSphereAlgorithm::testCollision(ProxyShape* collisionShape1, // Get the sphere collision shapes const CollisionShape* shape1 = collisionShape1->getCollisionShape(); const CollisionShape* shape2 = collisionShape2->getCollisionShape(); - const SphereShape* sphereShape1 = dynamic_cast(shape1); - const SphereShape* sphereShape2 = dynamic_cast(shape2); + const SphereShape* sphereShape1 = static_cast(shape1); + const SphereShape* sphereShape2 = static_cast(shape2); // Get the local-space to world-space transforms const Transform transform1 = collisionShape1->getBody()->getTransform() * diff --git a/src/collision/shapes/BoxShape.h b/src/collision/shapes/BoxShape.h index 9f7e49ec..f46b9d94 100644 --- a/src/collision/shapes/BoxShape.h +++ b/src/collision/shapes/BoxShape.h @@ -165,7 +165,7 @@ inline Vector3 BoxShape::getLocalSupportPointWithoutMargin(const Vector3& direct // Test equality between two box shapes inline bool BoxShape::isEqualTo(const CollisionShape& otherCollisionShape) const { - const BoxShape& otherShape = dynamic_cast(otherCollisionShape); + const BoxShape& otherShape = static_cast(otherCollisionShape); return (mExtent == otherShape.mExtent); } diff --git a/src/collision/shapes/CapsuleShape.h b/src/collision/shapes/CapsuleShape.h index 240f73cb..e3c410ef 100644 --- a/src/collision/shapes/CapsuleShape.h +++ b/src/collision/shapes/CapsuleShape.h @@ -162,7 +162,7 @@ inline void CapsuleShape::getLocalBounds(Vector3& min, Vector3& max) const { // Test equality between two capsule shapes inline bool CapsuleShape::isEqualTo(const CollisionShape& otherCollisionShape) const { - const CapsuleShape& otherShape = dynamic_cast(otherCollisionShape); + const CapsuleShape& otherShape = static_cast(otherCollisionShape); return (mRadius == otherShape.mRadius && mHalfHeight == otherShape.mHalfHeight); } diff --git a/src/collision/shapes/ConeShape.h b/src/collision/shapes/ConeShape.h index f7aec26e..63a0a5c2 100644 --- a/src/collision/shapes/ConeShape.h +++ b/src/collision/shapes/ConeShape.h @@ -178,7 +178,7 @@ inline void ConeShape::computeLocalInertiaTensor(Matrix3x3& tensor, decimal mass // Test equality between two cone shapes inline bool ConeShape::isEqualTo(const CollisionShape& otherCollisionShape) const { - const ConeShape& otherShape = dynamic_cast(otherCollisionShape); + const ConeShape& otherShape = static_cast(otherCollisionShape); return (mRadius == otherShape.mRadius && mHalfHeight == otherShape.mHalfHeight); } diff --git a/src/collision/shapes/ConvexMeshShape.cpp b/src/collision/shapes/ConvexMeshShape.cpp index aa4cf81e..4546f881 100644 --- a/src/collision/shapes/ConvexMeshShape.cpp +++ b/src/collision/shapes/ConvexMeshShape.cpp @@ -211,7 +211,7 @@ void ConvexMeshShape::recalculateBounds() { // Test equality between two cone shapes bool ConvexMeshShape::isEqualTo(const CollisionShape& otherCollisionShape) const { - const ConvexMeshShape& otherShape = dynamic_cast(otherCollisionShape); + const ConvexMeshShape& otherShape = static_cast(otherCollisionShape); assert(mNbVertices == mVertices.size()); diff --git a/src/collision/shapes/CylinderShape.h b/src/collision/shapes/CylinderShape.h index 5b381296..e48b8637 100644 --- a/src/collision/shapes/CylinderShape.h +++ b/src/collision/shapes/CylinderShape.h @@ -175,7 +175,7 @@ inline void CylinderShape::computeLocalInertiaTensor(Matrix3x3& tensor, decimal // Test equality between two cylinder shapes inline bool CylinderShape::isEqualTo(const CollisionShape& otherCollisionShape) const { - const CylinderShape& otherShape = dynamic_cast(otherCollisionShape); + const CylinderShape& otherShape = static_cast(otherCollisionShape); return (mRadius == otherShape.mRadius && mHalfHeight == otherShape.mHalfHeight); } diff --git a/src/collision/shapes/SphereShape.h b/src/collision/shapes/SphereShape.h index d49db1ef..996df8bb 100644 --- a/src/collision/shapes/SphereShape.h +++ b/src/collision/shapes/SphereShape.h @@ -197,7 +197,7 @@ inline void SphereShape::computeAABB(AABB& aabb, const Transform& transform) { // Test equality between two sphere shapes inline bool SphereShape::isEqualTo(const CollisionShape& otherCollisionShape) const { - const SphereShape& otherShape = dynamic_cast(otherCollisionShape); + const SphereShape& otherShape = static_cast(otherCollisionShape); return (mRadius == otherShape.mRadius); } diff --git a/src/engine/ContactSolver.cpp b/src/engine/ContactSolver.cpp index bb32bf85..18036138 100644 --- a/src/engine/ContactSolver.cpp +++ b/src/engine/ContactSolver.cpp @@ -83,8 +83,8 @@ void ContactSolver::initializeForIsland(decimal dt, Island* island) { assert(externalManifold->getNbContactPoints() > 0); // Get the two bodies of the contact - RigidBody* body1 = dynamic_cast(externalManifold->getContactPoint(0)->getBody1()); - RigidBody* body2 = dynamic_cast(externalManifold->getContactPoint(0)->getBody2()); + RigidBody* body1 = static_cast(externalManifold->getContactPoint(0)->getBody1()); + RigidBody* body2 = static_cast(externalManifold->getContactPoint(0)->getBody2()); assert(body1 != NULL); assert(body2 != NULL); diff --git a/src/engine/DynamicsWorld.cpp b/src/engine/DynamicsWorld.cpp index f6594a08..2c5f7359 100644 --- a/src/engine/DynamicsWorld.cpp +++ b/src/engine/DynamicsWorld.cpp @@ -510,7 +510,7 @@ Joint* DynamicsWorld::createJoint(const JointInfo& jointInfo) { case BALLSOCKETJOINT: { void* allocatedMemory = mMemoryAllocator.allocate(sizeof(BallAndSocketJoint)); - const BallAndSocketJointInfo& info = dynamic_cast( + const BallAndSocketJointInfo& info = static_cast( jointInfo); newJoint = new (allocatedMemory) BallAndSocketJoint(info); break; @@ -520,7 +520,7 @@ Joint* DynamicsWorld::createJoint(const JointInfo& jointInfo) { case SLIDERJOINT: { void* allocatedMemory = mMemoryAllocator.allocate(sizeof(SliderJoint)); - const SliderJointInfo& info = dynamic_cast(jointInfo); + const SliderJointInfo& info = static_cast(jointInfo); newJoint = new (allocatedMemory) SliderJoint(info); break; } @@ -529,7 +529,7 @@ Joint* DynamicsWorld::createJoint(const JointInfo& jointInfo) { case HINGEJOINT: { void* allocatedMemory = mMemoryAllocator.allocate(sizeof(HingeJoint)); - const HingeJointInfo& info = dynamic_cast(jointInfo); + const HingeJointInfo& info = static_cast(jointInfo); newJoint = new (allocatedMemory) HingeJoint(info); break; } @@ -538,7 +538,7 @@ Joint* DynamicsWorld::createJoint(const JointInfo& jointInfo) { case FIXEDJOINT: { void* allocatedMemory = mMemoryAllocator.allocate(sizeof(FixedJoint)); - const FixedJointInfo& info = dynamic_cast(jointInfo); + const FixedJointInfo& info = static_cast(jointInfo); newJoint = new (allocatedMemory) FixedJoint(info); break; } @@ -727,8 +727,8 @@ void DynamicsWorld::computeIslands() { contactManifold->mIsAlreadyInIsland = true; // Get the other body of the contact manifold - RigidBody* body1 = dynamic_cast(contactManifold->getBody1()); - RigidBody* body2 = dynamic_cast(contactManifold->getBody2()); + RigidBody* body1 = static_cast(contactManifold->getBody1()); + RigidBody* body2 = static_cast(contactManifold->getBody2()); RigidBody* otherBody = (body1->getID() == bodyToVisit->getID()) ? body2 : body1; // Check if the other body has already been added to the island @@ -755,8 +755,8 @@ void DynamicsWorld::computeIslands() { joint->mIsAlreadyInIsland = true; // Get the other body of the contact manifold - RigidBody* body1 = dynamic_cast(joint->getBody1()); - RigidBody* body2 = dynamic_cast(joint->getBody2()); + RigidBody* body1 = static_cast(joint->getBody1()); + RigidBody* body2 = static_cast(joint->getBody2()); RigidBody* otherBody = (body1->getID() == bodyToVisit->getID()) ? body2 : body1; // Check if the other body has already been added to the island diff --git a/testbed/common/Box.h b/testbed/common/Box.h index a879c92a..3170abce 100644 --- a/testbed/common/Box.h +++ b/testbed/common/Box.h @@ -1,27 +1,27 @@ /******************************************************************************** -* ReactPhysics3D physics library, http://www.reactphysics3d.com * -* Copyright (c) 2010-2015 Daniel Chappuis * -********************************************************************************* -* * -* This software is provided 'as-is', without any express or implied warranty. * -* In no event will the authors be held liable for any damages arising from the * -* use of this software. * -* * -* Permission is granted to anyone to use this software for any purpose, * -* including commercial applications, and to alter it and redistribute it * -* freely, subject to the following restrictions: * -* * -* 1. The origin of this software must not be misrepresented; you must not claim * -* that you wrote the original software. If you use this software in a * -* product, an acknowledgment in the product documentation would be * -* appreciated but is not required. * -* * -* 2. Altered source versions must be plainly marked as such, and must not be * -* misrepresented as being the original software. * -* * -* 3. This notice may not be removed or altered from any source distribution. * -* * -********************************************************************************/ + * ReactPhysics3D physics library, http://www.reactphysics3d.com * + * Copyright (c) 2010-2015 Daniel Chappuis * + ********************************************************************************* + * * + * This software is provided 'as-is', without any express or implied warranty. * + * In no event will the authors be held liable for any damages arising from the * + * use of this software. * + * * + * Permission is granted to anyone to use this software for any purpose, * + * including commercial applications, and to alter it and redistribute it * + * freely, subject to the following restrictions: * + * * + * 1. The origin of this software must not be misrepresented; you must not claim * + * that you wrote the original software. If you use this software in a * + * product, an acknowledgment in the product documentation would be * + * appreciated but is not required. * + * * + * 2. Altered source versions must be plainly marked as such, and must not be * + * misrepresented as being the original software. * + * * + * 3. This notice may not be removed or altered from any source distribution. * + * * + ********************************************************************************/ #ifndef BOX_H #define BOX_H @@ -34,67 +34,67 @@ // Class Box class Box : public openglframework::Object3D, public PhysicsObject { - private : + private : - // -------------------- Attributes -------------------- // + // -------------------- Attributes -------------------- // - /// Size of each side of the box - float mSize[3]; + /// Size of each side of the box + float mSize[3]; - /// Scaling matrix (applied to a cube to obtain the correct box dimensions) - openglframework::Matrix4 mScalingMatrix; + /// Scaling matrix (applied to a cube to obtain the correct box dimensions) + openglframework::Matrix4 mScalingMatrix; - /// Vertex Buffer Object for the vertices data used to render the box with OpenGL - static openglframework::VertexBufferObject mVBOVertices; + /// Vertex Buffer Object for the vertices data used to render the box with OpenGL + static openglframework::VertexBufferObject mVBOVertices; - /// Vertex Buffer Object for the normales used to render the box with OpenGL - static openglframework::VertexBufferObject mVBONormals; + /// Vertex Buffer Object for the normales used to render the box with OpenGL + static openglframework::VertexBufferObject mVBONormals; - /// Vertex Array Object for the vertex data - static openglframework::VertexArrayObject mVAO; + /// Vertex Array Object for the vertex data + static openglframework::VertexArrayObject mVAO; - /// Vertices coordinates of the triangles of the box - static GLfloat mCubeVertices[108]; + /// Vertices coordinates of the triangles of the box + static GLfloat mCubeVertices[108]; - /// Vertices normals of the triangles of the box - static GLfloat mCubeNormals[108]; + /// Vertices normals of the triangles of the box + static GLfloat mCubeNormals[108]; - /// Total number of boxes created - static int totalNbBoxes; + /// Total number of boxes created + static int totalNbBoxes; - // -------------------- Methods -------------------- // + // -------------------- Methods -------------------- // - /// Create a the VAO and VBOs to render to box with OpenGL - static void createVBOAndVAO(); + /// Create a the VAO and VBOs to render to box with OpenGL + static void createVBOAndVAO(); - public : + public : - // -------------------- Methods -------------------- // + // -------------------- Methods -------------------- // - /// Constructor - Box(const openglframework::Vector3& size, const openglframework::Vector3& position, - reactphysics3d::CollisionWorld* world); + /// Constructor + Box(const openglframework::Vector3& size, const openglframework::Vector3& position, + reactphysics3d::CollisionWorld* world); - /// Constructor - Box(const openglframework::Vector3& size, const openglframework::Vector3& position, - float mass, reactphysics3d::DynamicsWorld *world); + /// Constructor + Box(const openglframework::Vector3& size, const openglframework::Vector3& position, + float mass, reactphysics3d::DynamicsWorld *world); - /// Destructor - ~Box(); + /// Destructor + ~Box(); - /// Render the cube at the correct position and with the correct orientation - void render(openglframework::Shader& shader, const openglframework::Matrix4& worldToCameraMatrix); + /// Render the cube at the correct position and with the correct orientation + void render(openglframework::Shader& shader, const openglframework::Matrix4& worldToCameraMatrix); - /// Set the position of the box - void resetTransform(const rp3d::Transform& transform); + /// Set the position of the box + void resetTransform(const rp3d::Transform& transform); - /// Update the transform matrix of the object - virtual void updateTransform(float interpolationFactor); + /// Update the transform matrix of the object + virtual void updateTransform(float interpolationFactor); }; // Update the transform matrix of the object inline void Box::updateTransform(float interpolationFactor) { - mTransformMatrix = computeTransform(interpolationFactor, mScalingMatrix); + mTransformMatrix = computeTransform(interpolationFactor, mScalingMatrix); } diff --git a/testbed/common/Capsule.h b/testbed/common/Capsule.h index c1a37779..7bb934b0 100644 --- a/testbed/common/Capsule.h +++ b/testbed/common/Capsule.h @@ -1,27 +1,27 @@ /******************************************************************************** -* ReactPhysics3D physics library, http://www.reactphysics3d.com * -* Copyright (c) 2010-2015 Daniel Chappuis * -********************************************************************************* -* * -* This software is provided 'as-is', without any express or implied warranty. * -* In no event will the authors be held liable for any damages arising from the * -* use of this software. * -* * -* Permission is granted to anyone to use this software for any purpose, * -* including commercial applications, and to alter it and redistribute it * -* freely, subject to the following restrictions: * -* * -* 1. The origin of this software must not be misrepresented; you must not claim * -* that you wrote the original software. If you use this software in a * -* product, an acknowledgment in the product documentation would be * -* appreciated but is not required. * -* * -* 2. Altered source versions must be plainly marked as such, and must not be * -* misrepresented as being the original software. * -* * -* 3. This notice may not be removed or altered from any source distribution. * -* * -********************************************************************************/ + * ReactPhysics3D physics library, http://www.reactphysics3d.com * + * Copyright (c) 2010-2015 Daniel Chappuis * + ********************************************************************************* + * * + * This software is provided 'as-is', without any express or implied warranty. * + * In no event will the authors be held liable for any damages arising from the * + * use of this software. * + * * + * Permission is granted to anyone to use this software for any purpose, * + * including commercial applications, and to alter it and redistribute it * + * freely, subject to the following restrictions: * + * * + * 1. The origin of this software must not be misrepresented; you must not claim * + * that you wrote the original software. If you use this software in a * + * product, an acknowledgment in the product documentation would be * + * appreciated but is not required. * + * * + * 2. Altered source versions must be plainly marked as such, and must not be * + * misrepresented as being the original software. * + * * + * 3. This notice may not be removed or altered from any source distribution. * + * * + ********************************************************************************/ #ifndef CAPSULE_H #define CAPSULE_H @@ -34,75 +34,75 @@ // Class Sphere class Capsule : public openglframework::Mesh, public PhysicsObject { - private : + private : - // -------------------- Attributes -------------------- // + // -------------------- Attributes -------------------- // - /// Radius of the capsule - float mRadius; + /// Radius of the capsule + float mRadius; - /// Height of the capsule - float mHeight; + /// Height of the capsule + float mHeight; - /// Scaling matrix (applied to a sphere to obtain the correct sphere dimensions) - openglframework::Matrix4 mScalingMatrix; + /// Scaling matrix (applied to a sphere to obtain the correct sphere dimensions) + openglframework::Matrix4 mScalingMatrix; - /// Previous transform (for interpolation) - rp3d::Transform mPreviousTransform; + /// Previous transform (for interpolation) + rp3d::Transform mPreviousTransform; - /// Vertex Buffer Object for the vertices data - static openglframework::VertexBufferObject mVBOVertices; + /// Vertex Buffer Object for the vertices data + static openglframework::VertexBufferObject mVBOVertices; - /// Vertex Buffer Object for the normals data - static openglframework::VertexBufferObject mVBONormals; + /// Vertex Buffer Object for the normals data + static openglframework::VertexBufferObject mVBONormals; - /// Vertex Buffer Object for the texture coords - static openglframework::VertexBufferObject mVBOTextureCoords; + /// Vertex Buffer Object for the texture coords + static openglframework::VertexBufferObject mVBOTextureCoords; - /// Vertex Buffer Object for the indices - static openglframework::VertexBufferObject mVBOIndices; + /// Vertex Buffer Object for the indices + static openglframework::VertexBufferObject mVBOIndices; - /// Vertex Array Object for the vertex data - static openglframework::VertexArrayObject mVAO; + /// Vertex Array Object for the vertex data + static openglframework::VertexArrayObject mVAO; - // Total number of capsules created - static int totalNbCapsules; + // Total number of capsules created + static int totalNbCapsules; - // -------------------- Methods -------------------- // + // -------------------- Methods -------------------- // - // Create the Vertex Buffer Objects used to render with OpenGL. - void createVBOAndVAO(); + // Create the Vertex Buffer Objects used to render with OpenGL. + void createVBOAndVAO(); - public : + public : - // -------------------- Methods -------------------- // + // -------------------- Methods -------------------- // - /// Constructor - Capsule(float radius, float height, const openglframework::Vector3& position, - reactphysics3d::CollisionWorld* world, const std::string& meshFolderPath); + /// Constructor + Capsule(float radius, float height, const openglframework::Vector3& position, + reactphysics3d::CollisionWorld* world, const std::string& meshFolderPath); - /// Constructor - Capsule(float radius, float height, const openglframework::Vector3& position, - float mass, reactphysics3d::DynamicsWorld* dynamicsWorld, - const std::string& meshFolderPath); + /// Constructor + Capsule(float radius, float height, const openglframework::Vector3& position, + float mass, reactphysics3d::DynamicsWorld* dynamicsWorld, + const std::string& meshFolderPath); - /// Destructor - ~Capsule(); + /// Destructor + ~Capsule(); - /// Render the sphere at the correct position and with the correct orientation - void render(openglframework::Shader& shader, - const openglframework::Matrix4& worldToCameraMatrix); + /// Render the sphere at the correct position and with the correct orientation + void render(openglframework::Shader& shader, + const openglframework::Matrix4& worldToCameraMatrix); - /// Set the position of the box - void resetTransform(const rp3d::Transform& transform); + /// Set the position of the box + void resetTransform(const rp3d::Transform& transform); - /// Update the transform matrix of the object - virtual void updateTransform(float interpolationFactor); + /// Update the transform matrix of the object + virtual void updateTransform(float interpolationFactor); }; // Update the transform matrix of the object inline void Capsule::updateTransform(float interpolationFactor) { - mTransformMatrix = computeTransform(interpolationFactor, mScalingMatrix); + mTransformMatrix = computeTransform(interpolationFactor, mScalingMatrix); } #endif diff --git a/testbed/common/Cone.h b/testbed/common/Cone.h index 1d256752..74355140 100644 --- a/testbed/common/Cone.h +++ b/testbed/common/Cone.h @@ -99,7 +99,6 @@ class Cone : public openglframework::Mesh, public PhysicsObject { virtual void updateTransform(float interpolationFactor); }; -// Update the transform matrix of the object inline void Cone::updateTransform(float interpolationFactor) { mTransformMatrix = computeTransform(interpolationFactor, mScalingMatrix); }