From 29feb5a931bd16d59860fd5378018cd226e215b0 Mon Sep 17 00:00:00 2001 From: Daniel Chappuis Date: Wed, 8 Apr 2015 22:09:58 +0200 Subject: [PATCH 1/7] Modification of the README file --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 23d4467b..ca153b31 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@ You can find the User Manual and the Doxygen API Documentation [here](http://www ## Branches -The "master" branch always contains the last released version of the library. This is the most stable version. On the other side, +The "master" branch always contains the last released version of the library and some possible bug fixes. This is the most stable version. On the other side, the "develop" branch is used for development. This branch is frequently updated and can be quite unstable. Therefore, if you want to use the library in your application, it is recommended to checkout the "master" branch. From 3aaac820e0d184959033b98b26b7811ac86935bb Mon Sep 17 00:00:00 2001 From: Daniel Chappuis Date: Wed, 8 Apr 2015 22:10:34 +0200 Subject: [PATCH 2/7] Fix compilation error on Visual Studio 2013 --- src/collision/shapes/ConvexMeshShape.h | 4 ++-- src/engine/DynamicsWorld.cpp | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/collision/shapes/ConvexMeshShape.h b/src/collision/shapes/ConvexMeshShape.h index 072764b3..3f0b366e 100644 --- a/src/collision/shapes/ConvexMeshShape.h +++ b/src/collision/shapes/ConvexMeshShape.h @@ -224,12 +224,12 @@ inline void ConvexMeshShape::addEdge(uint v1, uint v2) { // If the entry for vertex v1 does not exist in the adjacency list if (mEdgesAdjacencyList.count(v1) == 0) { - mEdgesAdjacencyList.insert(std::make_pair >(v1, std::set())); + mEdgesAdjacencyList.insert(std::make_pair(v1, std::set())); } // If the entry for vertex v2 does not exist in the adjacency list if (mEdgesAdjacencyList.count(v2) == 0) { - mEdgesAdjacencyList.insert(std::make_pair >(v2, std::set())); + mEdgesAdjacencyList.insert(std::make_pair(v2, std::set())); } // Add the edge in the adjacency list diff --git a/src/engine/DynamicsWorld.cpp b/src/engine/DynamicsWorld.cpp index 8c4e2a34..f5637077 100644 --- a/src/engine/DynamicsWorld.cpp +++ b/src/engine/DynamicsWorld.cpp @@ -288,8 +288,7 @@ void DynamicsWorld::initVelocityArrays() { for (it = mRigidBodies.begin(); it != mRigidBodies.end(); ++it) { // Add the body into the map - mMapBodyToConstrainedVelocityIndex.insert(std::make_pair(*it, indexBody)); + mMapBodyToConstrainedVelocityIndex.insert(std::make_pair(*it, indexBody)); indexBody++; } } From 1b276fbe555f85f95084615811b19c7e8727df0d Mon Sep 17 00:00:00 2001 From: Daniel Chappuis Date: Sun, 12 Jul 2015 11:49:25 +0200 Subject: [PATCH 3/7] Add .travis.yml file to build on Travis --- .travis.yml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000..55e8feea --- /dev/null +++ b/.travis.yml @@ -0,0 +1,22 @@ +language: cpp +os: + - linux + - osx +compiler: + - gcc + - clang +branches: + only: + - master + - develop +script: + - mkdir build_directory + - cd build_directory + - cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug —DDOUBLE_PRECISION_ENABLED=True -DCOMPILE_TESTS=True ../ + - make && make test + - cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug —DDOUBLE_PRECISION_ENABLED=False -DCOMPILE_TESTS=True ../ + - make && make test + - cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release —DDOUBLE_PRECISION_ENABLED=True -DCOMPILE_TESTS=True ../ + - make && make test + - cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release —DDOUBLE_PRECISION_ENABLED=False -DCOMPILE_TESTS=True ../ + - make && make test \ No newline at end of file From d46ffbfcc4d9336063ca759cf7d30a63de5c3f13 Mon Sep 17 00:00:00 2001 From: Daniel Chappuis Date: Sun, 12 Jul 2015 11:59:33 +0200 Subject: [PATCH 4/7] Add Travis build status picture in README file --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index ca153b31..1bb39924 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,6 @@ +[![Travis Build Status](https://travis-ci.org/DanielChappuis/reactphysics3d.svg?branch=master)](https://travis-ci.org/DanielChappuis/reactphysics3d) + + ## ReactPhysics3D ReactPhysics3D is an open source C++ physics engine library that can be used in 3D simulations and games. From 4030126f9f524c780e0c189a28984ff0c5aa5ffd Mon Sep 17 00:00:00 2001 From: Daniel Chappuis Date: Sun, 12 Jul 2015 12:11:20 +0200 Subject: [PATCH 5/7] Modify CMakeLists file to automatically launch the tests --- CMakeLists.txt | 2 ++ test/CMakeLists.txt | 2 ++ 2 files changed, 4 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 10ddb5cb..75592736 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,6 +15,8 @@ SET(LIBRARY_OUTPUT_PATH "lib") # Where to build the executables SET(OUR_EXECUTABLE_OUTPUT_PATH "${PROJECT_BINARY_DIR}/bin") +ENABLE_TESTING() + # Options OPTION(COMPILE_EXAMPLES "Select this if you want to build the examples" OFF) OPTION(COMPILE_TESTS "Select this if you want to build the tests" OFF) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index ff69eb31..d54ea89b 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -18,3 +18,5 @@ file ( ADD_EXECUTABLE(tests ${TESTS_SOURCE_FILES}) TARGET_LINK_LIBRARIES(tests reactphysics3d) + +ADD_TEST(Test tests) From 1468f8f13cd135b6aed191d0a30dc5b625af6911 Mon Sep 17 00:00:00 2001 From: Colin Date: Mon, 24 Aug 2015 13:36:30 -0600 Subject: [PATCH 6/7] Replace dynamic_cast with static_cast --- .gitignore | 6 +++++- CMakeLists.txt | 4 ++-- examples/common/Box.h | 2 +- examples/common/Capsule.h | 2 +- examples/common/Cone.h | 2 +- examples/common/Sphere.h | 2 +- src/body/RigidBody.cpp | 2 +- .../narrowphase/SphereVsSphereAlgorithm.cpp | 4 ++-- src/collision/shapes/BoxShape.h | 2 +- src/collision/shapes/CapsuleShape.h | 2 +- src/collision/shapes/ConeShape.h | 2 +- src/collision/shapes/ConvexMeshShape.cpp | 2 +- src/collision/shapes/CylinderShape.h | 2 +- src/collision/shapes/SphereShape.h | 2 +- src/engine/ContactSolver.cpp | 4 ++-- src/engine/DynamicsWorld.cpp | 16 ++++++++-------- 16 files changed, 30 insertions(+), 26 deletions(-) diff --git a/.gitignore b/.gitignore index 9030fae6..ccb0c7fc 100644 --- a/.gitignore +++ b/.gitignore @@ -20,4 +20,8 @@ .Trashes Icon? ehthumbs.db -Thumbs.db \ No newline at end of file +Thumbs.db + +# vim swap files +##################### +*.*sw* diff --git a/CMakeLists.txt b/CMakeLists.txt index 75592736..2b2035c2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,8 +18,8 @@ SET(OUR_EXECUTABLE_OUTPUT_PATH "${PROJECT_BINARY_DIR}/bin") ENABLE_TESTING() # Options -OPTION(COMPILE_EXAMPLES "Select this if you want to build the examples" OFF) -OPTION(COMPILE_TESTS "Select this if you want to build the tests" OFF) +OPTION(COMPILE_EXAMPLES "Select this if you want to build the examples" ON) +OPTION(COMPILE_TESTS "Select this if you want to build the tests" ON) OPTION(PROFILING_ENABLED "Select this if you want to compile with enabled profiling" OFF) OPTION(DOUBLE_PRECISION_ENABLED "Select this if you want to compile using double precision floating values" OFF) diff --git a/examples/common/Box.h b/examples/common/Box.h index 2cc333d8..ee0fb85d 100644 --- a/examples/common/Box.h +++ b/examples/common/Box.h @@ -120,7 +120,7 @@ inline rp3d::CollisionBody* Box::getCollisionBody() { // Return a pointer to the rigid body of the box inline rp3d::RigidBody* Box::getRigidBody() { - return dynamic_cast(mRigidBody); + return static_cast(mRigidBody); } // Set the color of the box diff --git a/examples/common/Capsule.h b/examples/common/Capsule.h index 2ce438d1..6dbf0181 100644 --- a/examples/common/Capsule.h +++ b/examples/common/Capsule.h @@ -88,7 +88,7 @@ inline rp3d::CollisionBody* Capsule::getCollisionBody() { // Return a pointer to the rigid body of the box inline rp3d::RigidBody* Capsule::getRigidBody() { - return dynamic_cast(mRigidBody); + return static_cast(mRigidBody); } #endif diff --git a/examples/common/Cone.h b/examples/common/Cone.h index d3002eab..6368ec2b 100644 --- a/examples/common/Cone.h +++ b/examples/common/Cone.h @@ -87,7 +87,7 @@ inline rp3d::CollisionBody* Cone::getCollisionBody() { // Return a pointer to the rigid body of the box inline rp3d::RigidBody* Cone::getRigidBody() { - return dynamic_cast(mRigidBody); + return static_cast(mRigidBody); } #endif diff --git a/examples/common/Sphere.h b/examples/common/Sphere.h index 08a335f7..0401d52c 100644 --- a/examples/common/Sphere.h +++ b/examples/common/Sphere.h @@ -84,7 +84,7 @@ inline rp3d::CollisionBody* Sphere::getCollisionBody() { // Return a pointer to the rigid body of the box inline rp3d::RigidBody* Sphere::getRigidBody() { - return dynamic_cast(mRigidBody); + return static_cast(mRigidBody); } #endif diff --git a/src/body/RigidBody.cpp b/src/body/RigidBody.cpp index 3ba985b6..a2a70f74 100644 --- a/src/body/RigidBody.cpp +++ b/src/body/RigidBody.cpp @@ -342,7 +342,7 @@ void RigidBody::updateBroadPhaseState() const { PROFILE("RigidBody::updateBroadPhaseState()"); - DynamicsWorld& world = dynamic_cast(mWorld); + DynamicsWorld& world = static_cast(mWorld); const Vector3 displacement = world.mTimer.getTimeStep() * mLinearVelocity; // For all the proxy collision shapes of the body 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 f5637077..159f84cf 100644 --- a/src/engine/DynamicsWorld.cpp +++ b/src/engine/DynamicsWorld.cpp @@ -529,7 +529,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; @@ -539,7 +539,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; } @@ -548,7 +548,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; } @@ -557,7 +557,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; } @@ -746,8 +746,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 @@ -774,8 +774,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 From 3fdc056a1eaf2ad5e758effe9e4a8447a4525ada Mon Sep 17 00:00:00 2001 From: Colin Date: Mon, 24 Aug 2015 13:43:57 -0600 Subject: [PATCH 7/7] Fix oops for CI --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2b2035c2..75592736 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,8 +18,8 @@ SET(OUR_EXECUTABLE_OUTPUT_PATH "${PROJECT_BINARY_DIR}/bin") ENABLE_TESTING() # Options -OPTION(COMPILE_EXAMPLES "Select this if you want to build the examples" ON) -OPTION(COMPILE_TESTS "Select this if you want to build the tests" ON) +OPTION(COMPILE_EXAMPLES "Select this if you want to build the examples" OFF) +OPTION(COMPILE_TESTS "Select this if you want to build the tests" OFF) OPTION(PROFILING_ENABLED "Select this if you want to compile with enabled profiling" OFF) OPTION(DOUBLE_PRECISION_ENABLED "Select this if you want to compile using double precision floating values" OFF)