From a781cf4c26f909477da97b5d7bae14cdea4d06bb Mon Sep 17 00:00:00 2001 From: Edouard DUPIN Date: Mon, 7 Jan 2013 22:36:22 +0100 Subject: [PATCH] [DEV] Basic integration of the bullet librairy --- .gitmodules | 3 + Makefile.mk | 1 + build | 2 +- external/bullet/Generic.mk | 21 +++++ external/bullet/bullet | 1 + external/bullet/file.mk | 173 ++++++++++++++++++++++++++++++++++ sources/Linux.mk | 2 +- sources/ewol/widget/Scene.cpp | 3 +- sources/ewol/widget/Scene.h | 5 +- 9 files changed, 207 insertions(+), 4 deletions(-) create mode 100644 external/bullet/Generic.mk create mode 160000 external/bullet/bullet create mode 100644 external/bullet/file.mk diff --git a/.gitmodules b/.gitmodules index 2cf9ee1a..6d963ec5 100644 --- a/.gitmodules +++ b/.gitmodules @@ -38,3 +38,6 @@ [submodule "external/z/zlib"] path = external/z/zlib url = https://github.com/madler/zlib.git +[submodule "external/bullet/bullet"] + path = external/bullet/bullet + url = https://github.com/HeeroYui/bullet.git diff --git a/Makefile.mk b/Makefile.mk index f481f8ce..180b5a57 100644 --- a/Makefile.mk +++ b/Makefile.mk @@ -7,6 +7,7 @@ TMP_DIR := $(shell readlink -m -n $(patsubst %/,%,$(dir $(lastword $(MAKEFILE_LI EWOL_FOLDER:=$(TMP_DIR) USER_PACKAGES+= $(TMP_DIR)/sources/ # Add external librairy (direct folder to reduce the search time (really special case for windows ...)) +USER_PACKAGES+= $(TMP_DIR)/external/bullet USER_PACKAGES+= $(TMP_DIR)/external/etk USER_PACKAGES+= $(TMP_DIR)/external/agg USER_PACKAGES+= $(TMP_DIR)/external/freetype diff --git a/build b/build index 22c1c9d1..2147015f 160000 --- a/build +++ b/build @@ -1 +1 @@ -Subproject commit 22c1c9d19709f643d3032bb5d7a42ea55924d50b +Subproject commit 2147015fbc38ee63e65b822ab8d2819ca782ed80 diff --git a/external/bullet/Generic.mk b/external/bullet/Generic.mk new file mode 100644 index 00000000..3e009d90 --- /dev/null +++ b/external/bullet/Generic.mk @@ -0,0 +1,21 @@ +LOCAL_PATH := $(call my-dir) + +include $(CLEAR_VARS) + +LOCAL_MODULE := bullet + +LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH) + +LOCAL_C_INCLUDES := $(LOCAL_PATH)/bullet/src/ \ + $(LOCAL_PATH)/bullet/Extras/ConvexDecomposition + +LOCAL_CFLAGS := -Wno-write-strings \ + -DHAVE_CONFIG_H + + +# load the common sources file of the platform +include $(LOCAL_PATH)/file.mk + +LOCAL_SRC_FILES := $(FILE_LIST) + +include $(BUILD_STATIC_LIBRARY) diff --git a/external/bullet/bullet b/external/bullet/bullet new file mode 160000 index 00000000..6930931f --- /dev/null +++ b/external/bullet/bullet @@ -0,0 +1 @@ +Subproject commit 6930931f46f9846c6f4f7031e416205cd0fdb4b4 diff --git a/external/bullet/file.mk b/external/bullet/file.mk new file mode 100644 index 00000000..8a9b45b5 --- /dev/null +++ b/external/bullet/file.mk @@ -0,0 +1,173 @@ + + +# lib LinearMath +FILE_LIST = \ + bullet/src/LinearMath/btQuickprof.cpp \ + bullet/src/LinearMath/btGeometryUtil.cpp \ + bullet/src/LinearMath/btAlignedAllocator.cpp \ + bullet/src/LinearMath/btSerializer.cpp \ + bullet/src/LinearMath/btConvexHull.cpp \ + bullet/src/LinearMath/btPolarDecomposition.cpp \ + bullet/src/LinearMath/btVector3.cpp \ + bullet/src/LinearMath/btConvexHullComputer.cpp + +# lib BulletCollision +FILE_LIST+= \ + bullet/src/BulletCollision/NarrowPhaseCollision/btRaycastCallback.cpp \ + bullet/src/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.cpp \ + bullet/src/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.cpp \ + bullet/src/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.cpp \ + bullet/src/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.cpp \ + bullet/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp \ + bullet/src/BulletCollision/NarrowPhaseCollision/btConvexCast.cpp \ + bullet/src/BulletCollision/NarrowPhaseCollision/btPolyhedralContactClipping.cpp \ + bullet/src/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.cpp \ + bullet/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp \ + bullet/src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.cpp \ + bullet/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp \ + bullet/src/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.cpp \ + bullet/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp \ + bullet/src/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.cpp \ + bullet/src/BulletCollision/CollisionDispatch/btGhostObject.cpp \ + bullet/src/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.cpp \ + bullet/src/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.cpp \ + bullet/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp \ + bullet/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp \ + bullet/src/BulletCollision/CollisionDispatch/btSimulationIslandManager.cpp \ + bullet/src/BulletCollision/CollisionDispatch/btBoxBoxDetector.cpp \ + bullet/src/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.cpp \ + bullet/src/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.cpp \ + bullet/src/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.cpp \ + bullet/src/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.cpp \ + bullet/src/BulletCollision/CollisionDispatch/SphereTriangleDetector.cpp \ + bullet/src/BulletCollision/CollisionDispatch/btInternalEdgeUtility.cpp \ + bullet/src/BulletCollision/CollisionDispatch/btManifoldResult.cpp \ + bullet/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp \ + bullet/src/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.cpp \ + bullet/src/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp \ + bullet/src/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.cpp \ + bullet/src/BulletCollision/CollisionDispatch/btUnionFind.cpp \ + bullet/src/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.cpp \ + bullet/src/BulletCollision/CollisionShapes/btTetrahedronShape.cpp \ + bullet/src/BulletCollision/CollisionShapes/btShapeHull.cpp \ + bullet/src/BulletCollision/CollisionShapes/btMinkowskiSumShape.cpp \ + bullet/src/BulletCollision/CollisionShapes/btCompoundShape.cpp \ + bullet/src/BulletCollision/CollisionShapes/btConeShape.cpp \ + bullet/src/BulletCollision/CollisionShapes/btConvexPolyhedron.cpp \ + bullet/src/BulletCollision/CollisionShapes/btMultiSphereShape.cpp \ + bullet/src/BulletCollision/CollisionShapes/btUniformScalingShape.cpp \ + bullet/src/BulletCollision/CollisionShapes/btSphereShape.cpp \ + bullet/src/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.cpp \ + bullet/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp \ + bullet/src/BulletCollision/CollisionShapes/btTriangleMeshShape.cpp \ + bullet/src/BulletCollision/CollisionShapes/btTriangleBuffer.cpp \ + bullet/src/BulletCollision/CollisionShapes/btStaticPlaneShape.cpp \ + bullet/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp \ + bullet/src/BulletCollision/CollisionShapes/btEmptyShape.cpp \ + bullet/src/BulletCollision/CollisionShapes/btCollisionShape.cpp \ + bullet/src/BulletCollision/CollisionShapes/btConvexShape.cpp \ + bullet/src/BulletCollision/CollisionShapes/btConvex2dShape.cpp \ + bullet/src/BulletCollision/CollisionShapes/btConvexInternalShape.cpp \ + bullet/src/BulletCollision/CollisionShapes/btConvexHullShape.cpp \ + bullet/src/BulletCollision/CollisionShapes/btTriangleCallback.cpp \ + bullet/src/BulletCollision/CollisionShapes/btCapsuleShape.cpp \ + bullet/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.cpp \ + bullet/src/BulletCollision/CollisionShapes/btConcaveShape.cpp \ + bullet/src/BulletCollision/CollisionShapes/btConvexPointCloudShape.cpp \ + bullet/src/BulletCollision/CollisionShapes/btBoxShape.cpp \ + bullet/src/BulletCollision/CollisionShapes/btBox2dShape.cpp \ + bullet/src/BulletCollision/CollisionShapes/btOptimizedBvh.cpp \ + bullet/src/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.cpp \ + bullet/src/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.cpp \ + bullet/src/BulletCollision/CollisionShapes/btCylinderShape.cpp \ + bullet/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp \ + bullet/src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp \ + bullet/src/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.cpp \ + bullet/src/BulletCollision/CollisionShapes/btTriangleMesh.cpp \ + bullet/src/BulletCollision/BroadphaseCollision/btAxisSweep3.cpp \ + bullet/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp \ + bullet/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp \ + bullet/src/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.cpp \ + bullet/src/BulletCollision/BroadphaseCollision/btDispatcher.cpp \ + bullet/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp \ + bullet/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp \ + bullet/src/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.cpp \ + bullet/src/BulletCollision/BroadphaseCollision/btDbvt.cpp \ + bullet/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp \ + bullet/src/BulletCollision/Gimpact/btGImpactBvh.cpp \ + bullet/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp \ + bullet/src/BulletCollision/Gimpact/btTriangleShapeEx.cpp \ + bullet/src/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.cpp \ + bullet/src/BulletCollision/Gimpact/btGImpactShape.cpp \ + bullet/src/BulletCollision/Gimpact/gim_box_set.cpp \ + bullet/src/BulletCollision/Gimpact/gim_contact.cpp \ + bullet/src/BulletCollision/Gimpact/gim_memory.cpp \ + bullet/src/BulletCollision/Gimpact/gim_tri_collision.cpp + + + +# lib BulletDynamics +FILE_LIST+= \ + bullet/src/BulletDynamics/Dynamics/btRigidBody.cpp \ + bullet/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp \ + bullet/src/BulletDynamics/Dynamics/Bullet-C-API.cpp \ + bullet/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp \ + bullet/src/BulletDynamics/ConstraintSolver/btGearConstraint.cpp \ + bullet/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp \ + bullet/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.cpp \ + bullet/src/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.cpp \ + bullet/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp \ + bullet/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp \ + bullet/src/BulletDynamics/ConstraintSolver/btContactConstraint.cpp \ + bullet/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp \ + bullet/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp \ + bullet/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp \ + bullet/src/BulletDynamics/ConstraintSolver/btHinge2Constraint.cpp \ + bullet/src/BulletDynamics/ConstraintSolver/btUniversalConstraint.cpp \ + bullet/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp \ + bullet/src/BulletDynamics/Vehicle/btWheelInfo.cpp \ + bullet/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp \ + bullet/src/BulletDynamics/Character/btKinematicCharacterController.cpp + + +# lib BulletSoftBody +FILE_LIST+= \ + bullet/src/BulletSoftBody/btDefaultSoftBodySolver.cpp \ + bullet/src/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.cpp \ + bullet/src/BulletSoftBody/btSoftBody.cpp \ + bullet/src/BulletSoftBody/btSoftRigidCollisionAlgorithm.cpp \ + bullet/src/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.cpp \ + bullet/src/BulletSoftBody/btSoftRigidDynamicsWorld.cpp \ + bullet/src/BulletSoftBody/btSoftBodyHelpers.cpp \ + bullet/src/BulletSoftBody/btSoftSoftCollisionAlgorithm.cpp + +# lib gimpactutils +FILE_LIST+= \ + bullet/Extras/GIMPACTUtils/btGImpactConvexDecompositionShape.cpp + +# lib convexdecomposition +FILE_LIST+= \ + bullet/Extras/ConvexDecomposition/concavity.cpp \ + bullet/Extras/ConvexDecomposition/ConvexDecomposition.cpp \ + bullet/Extras/ConvexDecomposition/vlookup.cpp \ + bullet/Extras/ConvexDecomposition/bestfit.cpp \ + bullet/Extras/ConvexDecomposition/ConvexBuilder.cpp \ + bullet/Extras/ConvexDecomposition/cd_hull.cpp \ + bullet/Extras/ConvexDecomposition/raytri.cpp \ + bullet/Extras/ConvexDecomposition/splitplane.cpp \ + bullet/Extras/ConvexDecomposition/float_math.cpp \ + bullet/Extras/ConvexDecomposition/planetri.cpp \ + bullet/Extras/ConvexDecomposition/cd_wavefront.cpp \ + bullet/Extras/ConvexDecomposition/bestfitobb.cpp \ + bullet/Extras/ConvexDecomposition/meshvolume.cpp \ + bullet/Extras/ConvexDecomposition/fitsphere.cpp + + +# lib HACD +FILE_LIST+= \ + bullet/Extras/HACD/hacdGraph.cpp \ + bullet/Extras/HACD/hacdHACD.cpp \ + bullet/Extras/HACD/hacdICHull.cpp \ + bullet/Extras/HACD/hacdManifoldMesh.cpp + + diff --git a/sources/Linux.mk b/sources/Linux.mk index 6f6b1932..ac7d192f 100644 --- a/sources/Linux.mk +++ b/sources/Linux.mk @@ -12,7 +12,7 @@ LOCAL_VERSION=$(shell cat $(LOCAL_PATH)/tag) $(info [TAG:$(LOCAL_MODULE)] $(LOCAL_VERSION)) # name of the dependency -LOCAL_LIBRARIES := etk freetype tinyxml libzip libpng parsersvg lua portaudio +LOCAL_LIBRARIES := etk freetype tinyxml libzip libpng parsersvg lua portaudio bullet LOCAL_C_INCLUDES := diff --git a/sources/ewol/widget/Scene.cpp b/sources/ewol/widget/Scene.cpp index 7f586bb4..f0f4c7a7 100644 --- a/sources/ewol/widget/Scene.cpp +++ b/sources/ewol/widget/Scene.cpp @@ -22,8 +22,9 @@ widget::Scene::Scene(game::Engine* gameEngine) : + m_dynamicsWorld(NULL), m_camera(vec3(-6,0,2), vec3(0,0,0)), - m_gameEngine(gameEngine), + //m_gameEngine(gameEngine), m_isRunning(true), m_lastCallTime(-1), m_walk(0) diff --git a/sources/ewol/widget/Scene.h b/sources/ewol/widget/Scene.h index fdc00f61..5458bc8b 100644 --- a/sources/ewol/widget/Scene.h +++ b/sources/ewol/widget/Scene.h @@ -18,13 +18,16 @@ #include #include +class btDynamicsWorld; namespace widget { class Scene :public ewol::Widget { protected: + ///this is the most important class + btDynamicsWorld* m_dynamicsWorld; game::Camera m_camera; //!< Display point of view - game::Engine* m_gameEngine; //!< display engine system + //game::Engine* m_gameEngine; //!< display engine system bool m_isRunning; //!< the display is running (not in pause) double m_lastCallTime; //!< previous call Time float m_ratioTime; //!< Ratio time for the speed of the game ...