ruby-bullet 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (190) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +4 -0
  3. data/LICENSE +23 -0
  4. data/README.md +39 -0
  5. data/Rakefile +86 -0
  6. data/bindings/bullet/extconf.rb +28 -0
  7. data/bindings/bullet/interface/BulletCollision/BroadphaseCollision/btAxisSweep3.i +30 -0
  8. data/bindings/bullet/interface/BulletCollision/BroadphaseCollision/btBroadphaseInterface.i +8 -0
  9. data/bindings/bullet/interface/BulletCollision/BroadphaseCollision/btBroadphaseProxy.i +8 -0
  10. data/bindings/bullet/interface/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.i +8 -0
  11. data/bindings/bullet/interface/BulletCollision/BroadphaseCollision/btDbvt.i +10 -0
  12. data/bindings/bullet/interface/BulletCollision/BroadphaseCollision/btDbvtBroadphase.i +8 -0
  13. data/bindings/bullet/interface/BulletCollision/BroadphaseCollision/btDispatcher.i +8 -0
  14. data/bindings/bullet/interface/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.i +10 -0
  15. data/bindings/bullet/interface/BulletCollision/BroadphaseCollision/btOverlappingPairCache.i +8 -0
  16. data/bindings/bullet/interface/BulletCollision/BroadphaseCollision/btOverlappingPairCallback.i +8 -0
  17. data/bindings/bullet/interface/BulletCollision/BroadphaseCollision/btQuantizedBvh.i +8 -0
  18. data/bindings/bullet/interface/BulletCollision/BroadphaseCollision/btSimpleBroadphase.i +8 -0
  19. data/bindings/bullet/interface/BulletCollision/BroadphaseCollision/local_btAxisSweep3Internal.h +191 -0
  20. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/SphereTriangleDetector.i +8 -0
  21. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.i +8 -0
  22. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.i +8 -0
  23. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.i +8 -0
  24. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btBoxBoxDetector.i +8 -0
  25. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btCollisionConfiguration.i +21 -0
  26. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btCollisionCreateFunc.i +8 -0
  27. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btCollisionDispatcher.i +24 -0
  28. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btCollisionObject.i +8 -0
  29. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btCollisionWorld.i +95 -0
  30. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.i +8 -0
  31. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.i +8 -0
  32. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.i +8 -0
  33. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.i +8 -0
  34. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.i +8 -0
  35. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.i +8 -0
  36. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.i +8 -0
  37. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btGhostObject.i +8 -0
  38. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btInternalEdgeUtility.i +8 -0
  39. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btManifoldResult.i +8 -0
  40. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btSimulationIslandManager.i +8 -0
  41. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.i +8 -0
  42. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.i +8 -0
  43. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.i +8 -0
  44. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btUnionFind.i +10 -0
  45. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btBox2dShape.i +8 -0
  46. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btBoxShape.i +22 -0
  47. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.i +8 -0
  48. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btCapsuleShape.i +8 -0
  49. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btCollisionMargin.i +8 -0
  50. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btCollisionShape.i +8 -0
  51. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btCompoundShape.i +8 -0
  52. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btConcaveShape.i +8 -0
  53. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btConeShape.i +8 -0
  54. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btConvex2dShape.i +8 -0
  55. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btConvexHullShape.i +8 -0
  56. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btConvexInternalShape.i +8 -0
  57. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btConvexPointCloudShape.i +8 -0
  58. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btConvexPolyhedron.i +8 -0
  59. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btConvexShape.i +8 -0
  60. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.i +8 -0
  61. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btCylinderShape.i +8 -0
  62. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btEmptyShape.i +8 -0
  63. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.i +8 -0
  64. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btMaterial.i +8 -0
  65. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btMinkowskiSumShape.i +8 -0
  66. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btMultiSphereShape.i +8 -0
  67. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.i +8 -0
  68. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btOptimizedBvh.i +8 -0
  69. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btPolyhedralConvexShape.i +8 -0
  70. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.i +8 -0
  71. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btShapeHull.i +8 -0
  72. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btSphereShape.i +8 -0
  73. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btStaticPlaneShape.i +8 -0
  74. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btStridingMeshInterface.i +8 -0
  75. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btTetrahedronShape.i +8 -0
  76. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btTriangleBuffer.i +8 -0
  77. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btTriangleCallback.i +8 -0
  78. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.i +8 -0
  79. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.i +8 -0
  80. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btTriangleInfoMap.i +8 -0
  81. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btTriangleMeshShape.i +8 -0
  82. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btTriangleShape.i +8 -0
  83. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btUniformScalingShape.i +8 -0
  84. data/bindings/bullet/interface/BulletCollision/Gimpact/btBoxCollision.i +8 -0
  85. data/bindings/bullet/interface/BulletCollision/Gimpact/btClipPolygon.i +8 -0
  86. data/bindings/bullet/interface/BulletCollision/Gimpact/btContactProcessing.i +8 -0
  87. data/bindings/bullet/interface/BulletCollision/Gimpact/btGImpactBvh.i +8 -0
  88. data/bindings/bullet/interface/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.i +8 -0
  89. data/bindings/bullet/interface/BulletCollision/Gimpact/btGImpactMassUtil.i +8 -0
  90. data/bindings/bullet/interface/BulletCollision/Gimpact/btGImpactQuantizedBvh.i +8 -0
  91. data/bindings/bullet/interface/BulletCollision/Gimpact/btGImpactShape.i +8 -0
  92. data/bindings/bullet/interface/BulletCollision/Gimpact/btGenericPoolAllocator.i +11 -0
  93. data/bindings/bullet/interface/BulletCollision/Gimpact/btGeometryOperations.i +8 -0
  94. data/bindings/bullet/interface/BulletCollision/Gimpact/btQuantization.i +8 -0
  95. data/bindings/bullet/interface/BulletCollision/Gimpact/btTriangleShapeEx.i +8 -0
  96. data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.i +8 -0
  97. data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btConvexCast.i +8 -0
  98. data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btConvexPenetrationDepthSolver.i +8 -0
  99. data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.i +11 -0
  100. data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.i +8 -0
  101. data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btGjkEpa2.i +8 -0
  102. data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.i +8 -0
  103. data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.i +8 -0
  104. data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btManifoldPoint.i +8 -0
  105. data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.i +8 -0
  106. data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btPersistentManifold.i +8 -0
  107. data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btPointCollector.i +8 -0
  108. data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btPolyhedralContactClipping.i +8 -0
  109. data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btRaycastCallback.i +8 -0
  110. data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btSimplexSolverInterface.i +8 -0
  111. data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.i +8 -0
  112. data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.i +8 -0
  113. data/bindings/bullet/interface/BulletDynamics/Character/btCharacterControllerInterface.i +8 -0
  114. data/bindings/bullet/interface/BulletDynamics/Character/btKinematicCharacterController.i +8 -0
  115. data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btConeTwistConstraint.i +8 -0
  116. data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btConstraintSolver.i +8 -0
  117. data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btContactConstraint.i +8 -0
  118. data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btContactSolverInfo.i +8 -0
  119. data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.i +8 -0
  120. data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.i +8 -0
  121. data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btHinge2Constraint.i +8 -0
  122. data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btHingeConstraint.i +8 -0
  123. data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btJacobianEntry.i +8 -0
  124. data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.i +8 -0
  125. data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.i +21 -0
  126. data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btSliderConstraint.i +8 -0
  127. data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.i +8 -0
  128. data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btSolverBody.i +8 -0
  129. data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btSolverConstraint.i +8 -0
  130. data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btTypedConstraint.i +8 -0
  131. data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btUniversalConstraint.i +8 -0
  132. data/bindings/bullet/interface/BulletDynamics/Dynamics/btActionInterface.i +8 -0
  133. data/bindings/bullet/interface/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.i +23 -0
  134. data/bindings/bullet/interface/BulletDynamics/Dynamics/btDynamicsWorld.i +43 -0
  135. data/bindings/bullet/interface/BulletDynamics/Dynamics/btRigidBody.i +20 -0
  136. data/bindings/bullet/interface/BulletDynamics/Dynamics/btSimpleDynamicsWorld.i +8 -0
  137. data/bindings/bullet/interface/BulletDynamics/Vehicle/btRaycastVehicle.i +12 -0
  138. data/bindings/bullet/interface/BulletDynamics/Vehicle/btVehicleRaycaster.i +8 -0
  139. data/bindings/bullet/interface/BulletDynamics/Vehicle/btWheelInfo.i +8 -0
  140. data/bindings/bullet/interface/BulletSoftBody/btDefaultSoftBodySolver.i +8 -0
  141. data/bindings/bullet/interface/BulletSoftBody/btSoftBody.i +8 -0
  142. data/bindings/bullet/interface/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.i +8 -0
  143. data/bindings/bullet/interface/BulletSoftBody/btSoftBodyData.i +8 -0
  144. data/bindings/bullet/interface/BulletSoftBody/btSoftBodyHelpers.i +8 -0
  145. data/bindings/bullet/interface/BulletSoftBody/btSoftBodyInternals.i +8 -0
  146. data/bindings/bullet/interface/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.i +8 -0
  147. data/bindings/bullet/interface/BulletSoftBody/btSoftBodySolverVertexBuffer.i +8 -0
  148. data/bindings/bullet/interface/BulletSoftBody/btSoftBodySolvers.i +8 -0
  149. data/bindings/bullet/interface/BulletSoftBody/btSoftRigidCollisionAlgorithm.i +8 -0
  150. data/bindings/bullet/interface/BulletSoftBody/btSoftRigidDynamicsWorld.i +8 -0
  151. data/bindings/bullet/interface/BulletSoftBody/btSoftSoftCollisionAlgorithm.i +8 -0
  152. data/bindings/bullet/interface/BulletSoftBody/btSparseSDF.i +8 -0
  153. data/bindings/bullet/interface/LinearMath/btAabbUtil2.i +8 -0
  154. data/bindings/bullet/interface/LinearMath/btAlignedAllocator.i +8 -0
  155. data/bindings/bullet/interface/LinearMath/btAlignedObjectArray.i +8 -0
  156. data/bindings/bullet/interface/LinearMath/btConvexHull.i +8 -0
  157. data/bindings/bullet/interface/LinearMath/btConvexHullComputer.i +8 -0
  158. data/bindings/bullet/interface/LinearMath/btDefaultMotionState.i +10 -0
  159. data/bindings/bullet/interface/LinearMath/btGeometryUtil.i +10 -0
  160. data/bindings/bullet/interface/LinearMath/btGrahamScan2dConvexHull.i +8 -0
  161. data/bindings/bullet/interface/LinearMath/btHashMap.i +8 -0
  162. data/bindings/bullet/interface/LinearMath/btIDebugDraw.i +10 -0
  163. data/bindings/bullet/interface/LinearMath/btList.i +8 -0
  164. data/bindings/bullet/interface/LinearMath/btMatrix3x3.i +8 -0
  165. data/bindings/bullet/interface/LinearMath/btMinMax.i +8 -0
  166. data/bindings/bullet/interface/LinearMath/btMotionState.i +10 -0
  167. data/bindings/bullet/interface/LinearMath/btPoolAllocator.i +10 -0
  168. data/bindings/bullet/interface/LinearMath/btQuadWord.i +8 -0
  169. data/bindings/bullet/interface/LinearMath/btQuaternion.i +60 -0
  170. data/bindings/bullet/interface/LinearMath/btQuickprof.i +10 -0
  171. data/bindings/bullet/interface/LinearMath/btRandom.i +8 -0
  172. data/bindings/bullet/interface/LinearMath/btScalar.i +8 -0
  173. data/bindings/bullet/interface/LinearMath/btSerializer.i +10 -0
  174. data/bindings/bullet/interface/LinearMath/btStackAlloc.i +10 -0
  175. data/bindings/bullet/interface/LinearMath/btTransform.i +8 -0
  176. data/bindings/bullet/interface/LinearMath/btTransformUtil.i +8 -0
  177. data/bindings/bullet/interface/LinearMath/btVector3.i +41 -0
  178. data/bindings/bullet/interface/Rakefile +19 -0
  179. data/bindings/bullet/interface/bullet.i +9 -0
  180. data/bindings/bullet/interface/bullet_all.i +186 -0
  181. data/bindings/bullet/interface/bullet_wrap.cpp +205735 -0
  182. data/bindings/bullet/interface/bullet_wrap.h +106 -0
  183. data/bindings/bullet/interface/bullet_wrap.o +0 -0
  184. data/bindings/bullet/src/TickListener.h +22 -0
  185. data/lib/ruby-bullet.rb +63 -0
  186. data/lib/ruby-bullet/version.rb +5 -0
  187. data/ruby-bullet.gemspec +36 -0
  188. data/sample/hello_bullet/hello_bullet.rb +180 -0
  189. data/sample/hello_bullet/run +6 -0
  190. metadata +233 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: e2d61da0b80ab5500cc7b7ecaa385bd6f76691d6
4
+ data.tar.gz: fd2cce76241cd85e101174115453c0b36e03aef8
5
+ SHA512:
6
+ metadata.gz: 1b925a6048f1c6d5455847a7b5ecbf000033121683db2570275581cec17645df2678531ccdc0b6502a3856edc6ffdb107824f68a51fbce13754a2ea3a9d26b9a
7
+ data.tar.gz: 1c2bf964a7db26f033862838c11feaf210cc34067928fa2ce88e56fe356acbb295d40ce3d79eddf0441fdfa0f0e2a5341adc99713ae6893cf992ea886d7bc82d
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in ruby-bullet.gemspec
4
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,23 @@
1
+ http://opensource.org/licenses/mit-license.php
2
+
3
+ The MIT License
4
+
5
+ Copyright (c) 2012 abexsoft@gmail.com
6
+
7
+ Permission is hereby granted, free of charge, to any person obtaining a copy
8
+ of this software and associated documentation files (the "Software"), to deal
9
+ in the Software without restriction, including without limitation the rights
10
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
+ copies of the Software, and to permit persons to whom the Software is
12
+ furnished to do so, subject to the following conditions:
13
+
14
+ The above copyright notice and this permission notice shall be included in
15
+ all copies or substantial portions of the Software.
16
+
17
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
23
+ THE SOFTWARE.
@@ -0,0 +1,39 @@
1
+ # ruby-bullet
2
+
3
+ Ruby-bullet is a ruby binding for Bullet.
4
+
5
+ ## Preparation
6
+
7
+ Install bullet-2.28 libraries and include files.
8
+
9
+ Debian has libbullet-dev package in backports.
10
+
11
+ ## Installation
12
+
13
+ Add this line to your application's Gemfile:
14
+
15
+ gem 'ruby-bullet'
16
+
17
+ And then execute:
18
+
19
+ $ bundle
20
+
21
+ Or install it yourself as:
22
+
23
+ $ gem install ruby-bullet
24
+
25
+ ## Usages
26
+
27
+ Run a sample application.
28
+ The sample application uses gtk2 to draw boxes.
29
+
30
+ $ sudo gem install gtk2
31
+ $ <gems_path>/ruby-bullet-<version>-<arch>/sample/hello_bullet/run
32
+
33
+ ## License
34
+
35
+ Ruby-bullet is licensed under MIT License.
36
+
37
+ Copyright (C) 2012 abexsoft@gmail.com
38
+
39
+
@@ -0,0 +1,86 @@
1
+ require 'rubygems/package_task'
2
+ require 'rake/clean'
3
+
4
+ BULLET_FILE = "bullet-2.82-r2704.tgz"
5
+ BULLET_DIR = "bullet-2.82-r2704"
6
+
7
+
8
+ desc 'All clean'
9
+ task :cleanall do
10
+ sh "rm -rf deps/include"
11
+ sh "rm -rf deps/lib"
12
+ sh "rm -rf deps/src/#{BULLET_DIR}"
13
+ sh "rm -f deps/src/#{BULLET_FILE}"
14
+ end
15
+
16
+ desc 'Download the source packages.'
17
+ task :download do
18
+ FileUtils::mkdir_p("deps/src")
19
+ chdir('deps/src') {
20
+ BULLET_FILE = "bullet-2.82-r2704.tgz"
21
+ sh "wget http://bullet.googlecode.com/files/#{BULLET_FILE}"
22
+ sh "tar xzvf #{BULLET_FILE}"
23
+ }
24
+ end
25
+
26
+ desc 'Compile bullet libraries.'
27
+ task :compile do
28
+ chdir("deps/src/#{BULLET_DIR}") {
29
+ if /mingw/ =~ RUBY_PLATFORM
30
+ sh 'cmake . -G "MSYS Makefiles" -DUSE_GLUT:BOOL=OFF -DBUILD_DEMOS:BOOL=OFF -DCMAKE_INSTALL_PREFIX:PATH=..\
31
+ \.. -DINCLUDE_INSTALL_DIR:PATH=include\\bullet -DLIB_DESTINATION:STRING=..\\..\\lib -DPKGCONFIG_INSTALL_PR
32
+ EFIX:STRING=..\\..\\lib\\pkgconfig\\'
33
+ sh "make -j4"
34
+ system('mkdir ..\..\lib')
35
+ system('mkdir ..\..\include\bullet')
36
+ sh "cp -a lib/*.a ../../lib"
37
+ sh "cp -a src/* ../../include/bullet"
38
+ else
39
+ sh "cmake -DCMAKE_INSTALL_PREFIX:PATH=../.. -DINCLUDE_INSTALL_DIR:PATH=include/bullet -DLIB_DESTINATION:STRING=../../lib -DPKGCONFIG_INSTALL_PREFIX:STRING=../../lib/pkgconfig/"
40
+ sh "make -j4 && make install"
41
+ end
42
+ }
43
+ end
44
+
45
+ #
46
+ # Extension
47
+ #
48
+
49
+ DLEXT = RbConfig::MAKEFILE_CONFIG['DLEXT']
50
+
51
+ task :default => :build
52
+
53
+ desc 'Compile a bullet extension library.'
54
+ task :build => ["lib/bullet.#{DLEXT}"]
55
+
56
+ ## lib/*.#{DLEXT}
57
+ file "lib/bullet.#{DLEXT}" => "bindings/bullet/bullet.#{DLEXT}" do |f|
58
+ cp f.prerequisites, "lib/", :preserve => true
59
+ end
60
+
61
+ ## ext/**/*.#{DLEXT}
62
+ file "bindings/bullet/bullet.#{DLEXT}" => FileList["bindings/bullet/Makefile"] do |f|
63
+ sh 'cd bindings/bullet/ && make clean && make'
64
+ end
65
+ CLEAN.include 'bindings/bullet/*.{o,so,dll}'
66
+
67
+ ## ext/**/Makefile
68
+ file 'bindings/bullet/Makefile' => FileList['bindings/bullet/interface/bullet_wrap.cpp'] do
69
+ chdir('bindings/bullet/') { ruby 'extconf.rb' }
70
+ end
71
+ CLEAN.include 'bindings/bullet/Makefile'
72
+
73
+ ## make wrappers with swig.
74
+ file 'bindings/bullet/interface/bullet_wrap.cpp' do
75
+ chdir('bindings/bullet/interface') { sh 'rake' }
76
+ end
77
+ CLEAN.include 'bindings/bullet/interface/bullet_wrap.{cpp,h,o}'
78
+
79
+ #
80
+ # Document
81
+ #
82
+ desc 'Create documents'
83
+ task :doc => ['bindings/bullet/interface/bullet_wrap.cpp'] do |f|
84
+ sh "rdoc #{f.prerequisites.join(' ')}"
85
+ end
86
+
@@ -0,0 +1,28 @@
1
+ require 'mkmf'
2
+ require_relative "../../lib/ruby-bullet"
3
+
4
+ # set flags
5
+
6
+ if $CXXFLAGS
7
+ $CXXFLAGS += " -g #{Ruby::Bullet::Dynamic::get_inc_flags} -I./src"
8
+ else
9
+ $CFLAGS += " -g #{Ruby::Bullet::Dynamic::get_inc_flags} -I./src"
10
+ end
11
+
12
+ =begin
13
+ if (/mingw/ =~ RUBY_PLATFORM)
14
+ $LDFLAGS += " -static-libgcc -static-libstdc++ #{Ruby::Bullet::Static::get_lib_flags} -lws2_32 -lwinmm"
15
+ else
16
+ $LDFLAGS += " -static-libgcc -static-libstdc++ #{Ruby::Bullet::Static::get_lib_flags}"
17
+ end
18
+ =end
19
+
20
+ $LDFLAGS += " #{Ruby::Bullet::Dynamic::get_lib_flags}"
21
+
22
+
23
+ $srcs = ["interface/bullet_wrap.cpp"]
24
+
25
+ $objs = $srcs.collect {|o| o.sub(/\.cpp|\.cc|\.cxx/, ".o")}
26
+ $cleanfiles = $objs
27
+
28
+ create_makefile('bullet')
@@ -0,0 +1,30 @@
1
+ %{
2
+ #include <btAxisSweep3.h>
3
+ %}
4
+
5
+ // predeclaration of btAxisSweep3Internal,
6
+ // because btAxisSweep3Internal<unsigned short int> is needed by btAxisSweep3.h.
7
+ %include local_btAxisSweep3Internal.h
8
+ %template(AxisSweep3InternalUShortInt) btAxisSweep3Internal<unsigned short int>;
9
+
10
+ #ifdef DEBUG_FREEFUNC
11
+ %freefunc btAxisSweep3 "debug_free_btAxisSweep3";
12
+ #endif
13
+
14
+ %include btAxisSweep3.h
15
+
16
+
17
+
18
+
19
+ %{
20
+ static void debug_free_btAxisSweep3(void* ptr) {
21
+ btAxisSweep3* obj = (btAxisSweep3*) ptr;
22
+
23
+ std::cout << __PRETTY_FUNCTION__ << std::endl;
24
+
25
+ delete obj;
26
+
27
+ std::cout << __PRETTY_FUNCTION__ << " done" << std::endl;
28
+ }
29
+
30
+ %}
@@ -0,0 +1,8 @@
1
+ %{
2
+ #include <btBroadphaseInterface.h>
3
+ %}
4
+
5
+ %include btBroadphaseInterface.h
6
+
7
+ %{
8
+ %}
@@ -0,0 +1,8 @@
1
+ %{
2
+ #include <btBroadphaseProxy.h>
3
+ %}
4
+
5
+ %include btBroadphaseProxy.h
6
+
7
+ %{
8
+ %}
@@ -0,0 +1,8 @@
1
+ %{
2
+ #include <btCollisionAlgorithm.h>
3
+ %}
4
+
5
+ %include btCollisionAlgorithm.h
6
+
7
+ %{
8
+ %}
@@ -0,0 +1,10 @@
1
+ %{
2
+ #include <btDbvt.h>
3
+ %}
4
+
5
+ %ignore btDbvt::allocate;
6
+
7
+ %include btDbvt.h
8
+
9
+ %{
10
+ %}
@@ -0,0 +1,8 @@
1
+ %{
2
+ #include <btDbvtBroadphase.h>
3
+ %}
4
+
5
+ %include btDbvtBroadphase.h
6
+
7
+ %{
8
+ %}
@@ -0,0 +1,8 @@
1
+ %{
2
+ #include <btDispatcher.h>
3
+ %}
4
+
5
+ %include btDispatcher.h
6
+
7
+ %{
8
+ %}
@@ -0,0 +1,10 @@
1
+ %{
2
+ #include <btMultiSapBroadphase.h>
3
+ %}
4
+
5
+ %ignore btMultiSapBroadphase::quicksort;
6
+
7
+ %include btMultiSapBroadphase.h
8
+
9
+ %{
10
+ %}
@@ -0,0 +1,8 @@
1
+ %{
2
+ #include <btOverlappingPairCache.h>
3
+ %}
4
+
5
+ %include btOverlappingPairCache.h
6
+
7
+ %{
8
+ %}
@@ -0,0 +1,8 @@
1
+ %{
2
+ #include <btOverlappingPairCallback.h>
3
+ %}
4
+
5
+ %include btOverlappingPairCallback.h
6
+
7
+ %{
8
+ %}
@@ -0,0 +1,8 @@
1
+ %{
2
+ #include <btQuantizedBvh.h>
3
+ %}
4
+
5
+ %include btQuantizedBvh.h
6
+
7
+ %{
8
+ %}
@@ -0,0 +1,8 @@
1
+ %{
2
+ #include <btSimpleBroadphase.h>
3
+ %}
4
+
5
+ %include btSimpleBroadphase.h
6
+
7
+ %{
8
+ %}
@@ -0,0 +1,191 @@
1
+ //Bullet Continuous Collision Detection and Physics Library
2
+ //Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
3
+
4
+ //
5
+ // btAxisSweep3.h
6
+ //
7
+ // Copyright (c) 2006 Simon Hobbs
8
+ //
9
+ // 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.
10
+ //
11
+ // 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:
12
+ //
13
+ // 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.
14
+ //
15
+ // 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
16
+ //
17
+ // 3. This notice may not be removed or altered from any source distribution.
18
+
19
+ //#define DEBUG_BROADPHASE 1
20
+ #define USE_OVERLAP_TEST_ON_REMOVES 1
21
+
22
+ /// The internal templace class btAxisSweep3Internal implements the sweep and prune broadphase.
23
+ /// It uses quantized integers to represent the begin and end points for each of the 3 axis.
24
+ /// Dont use this class directly, use btAxisSweep3 or bt32BitAxisSweep3 instead.
25
+ template <typename BP_FP_INT_TYPE>
26
+ class btAxisSweep3Internal : public btBroadphaseInterface
27
+ {
28
+ protected:
29
+
30
+ BP_FP_INT_TYPE m_bpHandleMask;
31
+ BP_FP_INT_TYPE m_handleSentinel;
32
+
33
+ public:
34
+
35
+ BT_DECLARE_ALIGNED_ALLOCATOR();
36
+
37
+ class Edge
38
+ {
39
+ public:
40
+ BP_FP_INT_TYPE m_pos; // low bit is min/max
41
+ BP_FP_INT_TYPE m_handle;
42
+
43
+ BP_FP_INT_TYPE IsMax() const {return static_cast<BP_FP_INT_TYPE>(m_pos & 1);}
44
+ };
45
+
46
+ public:
47
+ class Handle : public btBroadphaseProxy
48
+ {
49
+ public:
50
+ BT_DECLARE_ALIGNED_ALLOCATOR();
51
+
52
+ // indexes into the edge arrays
53
+ BP_FP_INT_TYPE m_minEdges[3], m_maxEdges[3]; // 6 * 2 = 12
54
+ // BP_FP_INT_TYPE m_uniqueId;
55
+ btBroadphaseProxy* m_dbvtProxy;//for faster raycast
56
+ //void* m_pOwner; this is now in btBroadphaseProxy.m_clientObject
57
+
58
+ SIMD_FORCE_INLINE void SetNextFree(BP_FP_INT_TYPE next) {m_minEdges[0] = next;}
59
+ SIMD_FORCE_INLINE BP_FP_INT_TYPE GetNextFree() const {return m_minEdges[0];}
60
+ }; // 24 bytes + 24 for Edge structures = 44 bytes total per entry
61
+
62
+
63
+ protected:
64
+ btVector3 m_worldAabbMin; // overall system bounds
65
+ btVector3 m_worldAabbMax; // overall system bounds
66
+
67
+ btVector3 m_quantize; // scaling factor for quantization
68
+
69
+ BP_FP_INT_TYPE m_numHandles; // number of active handles
70
+ BP_FP_INT_TYPE m_maxHandles; // max number of handles
71
+ Handle* m_pHandles; // handles pool
72
+
73
+ BP_FP_INT_TYPE m_firstFreeHandle; // free handles list
74
+
75
+ Edge* m_pEdges[3]; // edge arrays for the 3 axes (each array has m_maxHandles * 2 + 2 sentinel entries)
76
+ void* m_pEdgesRawPtr[3];
77
+
78
+ btOverlappingPairCache* m_pairCache;
79
+
80
+ ///btOverlappingPairCallback is an additional optional user callback for adding/removing overlapping pairs, similar interface to btOverlappingPairCache.
81
+ btOverlappingPairCallback* m_userPairCallback;
82
+
83
+ bool m_ownsPairCache;
84
+
85
+ int m_invalidPair;
86
+
87
+ ///additional dynamic aabb structure, used to accelerate ray cast queries.
88
+ ///can be disabled using a optional argument in the constructor
89
+ btDbvtBroadphase* m_raycastAccelerator;
90
+ btOverlappingPairCache* m_nullPairCache;
91
+
92
+
93
+ // allocation/deallocation
94
+ BP_FP_INT_TYPE allocHandle();
95
+ void freeHandle(BP_FP_INT_TYPE handle);
96
+
97
+
98
+ bool testOverlap2D(const Handle* pHandleA, const Handle* pHandleB,int axis0,int axis1);
99
+
100
+ #ifdef DEBUG_BROADPHASE
101
+ void debugPrintAxis(int axis,bool checkCardinality=true);
102
+ #endif //DEBUG_BROADPHASE
103
+
104
+ //Overlap* AddOverlap(BP_FP_INT_TYPE handleA, BP_FP_INT_TYPE handleB);
105
+ //void RemoveOverlap(BP_FP_INT_TYPE handleA, BP_FP_INT_TYPE handleB);
106
+
107
+
108
+
109
+ void sortMinDown(int axis, BP_FP_INT_TYPE edge, btDispatcher* dispatcher, bool updateOverlaps );
110
+ void sortMinUp(int axis, BP_FP_INT_TYPE edge, btDispatcher* dispatcher, bool updateOverlaps );
111
+ void sortMaxDown(int axis, BP_FP_INT_TYPE edge, btDispatcher* dispatcher, bool updateOverlaps );
112
+ void sortMaxUp(int axis, BP_FP_INT_TYPE edge, btDispatcher* dispatcher, bool updateOverlaps );
113
+
114
+ public:
115
+
116
+ btAxisSweep3Internal(const btVector3& worldAabbMin,const btVector3& worldAabbMax, BP_FP_INT_TYPE handleMask, BP_FP_INT_TYPE handleSentinel, BP_FP_INT_TYPE maxHandles = 16384, btOverlappingPairCache* pairCache=0,bool disableRaycastAccelerator = false);
117
+
118
+ virtual ~btAxisSweep3Internal();
119
+
120
+ BP_FP_INT_TYPE getNumHandles() const
121
+ {
122
+ return m_numHandles;
123
+ }
124
+
125
+ virtual void calculateOverlappingPairs(btDispatcher* dispatcher);
126
+
127
+ BP_FP_INT_TYPE addHandle(const btVector3& aabbMin,const btVector3& aabbMax, void* pOwner,short int collisionFilterGroup,short int collisionFilterMask,btDispatcher* dispatcher,void* multiSapProxy);
128
+ void removeHandle(BP_FP_INT_TYPE handle,btDispatcher* dispatcher);
129
+ void updateHandle(BP_FP_INT_TYPE handle, const btVector3& aabbMin,const btVector3& aabbMax,btDispatcher* dispatcher);
130
+ SIMD_FORCE_INLINE Handle* getHandle(BP_FP_INT_TYPE index) const {return m_pHandles + index;}
131
+
132
+ virtual void resetPool(btDispatcher* dispatcher);
133
+
134
+ // This method is not implemented and issues a link error on MinGW. So I commented out (by abexsoft).
135
+ // void processAllOverlappingPairs(btOverlapCallback* callback);
136
+
137
+ //Broadphase Interface
138
+ virtual btBroadphaseProxy* createProxy( const btVector3& aabbMin, const btVector3& aabbMax,int shapeType,void* userPtr ,short int collisionFilterGroup,short int collisionFilterMask,btDispatcher* dispatcher,void* multiSapProxy);
139
+ virtual void destroyProxy(btBroadphaseProxy* proxy,btDispatcher* dispatcher);
140
+ virtual void setAabb(btBroadphaseProxy* proxy,const btVector3& aabbMin,const btVector3& aabbMax,btDispatcher* dispatcher);
141
+ virtual void getAabb(btBroadphaseProxy* proxy,btVector3& aabbMin, btVector3& aabbMax ) const;
142
+
143
+ virtual void rayTest(const btVector3& rayFrom,const btVector3& rayTo, btBroadphaseRayCallback& rayCallback, const btVector3& aabbMin=btVector3(0,0,0), const btVector3& aabbMax = btVector3(0,0,0));
144
+ virtual void aabbTest(const btVector3& aabbMin, const btVector3& aabbMax, btBroadphaseAabbCallback& callback);
145
+
146
+
147
+ void quantize(BP_FP_INT_TYPE* out, const btVector3& point, int isMax) const;
148
+ ///unQuantize should be conservative: aabbMin/aabbMax should be larger then 'getAabb' result
149
+ void unQuantize(btBroadphaseProxy* proxy,btVector3& aabbMin, btVector3& aabbMax ) const;
150
+
151
+ bool testAabbOverlap(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1);
152
+
153
+ btOverlappingPairCache* getOverlappingPairCache()
154
+ {
155
+ return m_pairCache;
156
+ }
157
+ const btOverlappingPairCache* getOverlappingPairCache() const
158
+ {
159
+ return m_pairCache;
160
+ }
161
+
162
+ void setOverlappingPairUserCallback(btOverlappingPairCallback* pairCallback)
163
+ {
164
+ m_userPairCallback = pairCallback;
165
+ }
166
+ const btOverlappingPairCallback* getOverlappingPairUserCallback() const
167
+ {
168
+ return m_userPairCallback;
169
+ }
170
+
171
+ ///getAabb returns the axis aligned bounding box in the 'global' coordinate frame
172
+ ///will add some transform later
173
+ virtual void getBroadphaseAabb(btVector3& aabbMin,btVector3& aabbMax) const
174
+ {
175
+ aabbMin = m_worldAabbMin;
176
+ aabbMax = m_worldAabbMax;
177
+ }
178
+
179
+ virtual void printStats()
180
+ {
181
+ /* printf("btAxisSweep3.h\n");
182
+ printf("numHandles = %d, maxHandles = %d\n",m_numHandles,m_maxHandles);
183
+ printf("aabbMin=%f,%f,%f,aabbMax=%f,%f,%f\n",m_worldAabbMin.getX(),m_worldAabbMin.getY(),m_worldAabbMin.getZ(),
184
+ m_worldAabbMax.getX(),m_worldAabbMax.getY(),m_worldAabbMax.getZ());
185
+ */
186
+
187
+ }
188
+
189
+ };
190
+
191
+