ruby-bullet 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/Gemfile +4 -0
- data/LICENSE +23 -0
- data/README.md +39 -0
- data/Rakefile +86 -0
- data/bindings/bullet/extconf.rb +28 -0
- data/bindings/bullet/interface/BulletCollision/BroadphaseCollision/btAxisSweep3.i +30 -0
- data/bindings/bullet/interface/BulletCollision/BroadphaseCollision/btBroadphaseInterface.i +8 -0
- data/bindings/bullet/interface/BulletCollision/BroadphaseCollision/btBroadphaseProxy.i +8 -0
- data/bindings/bullet/interface/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.i +8 -0
- data/bindings/bullet/interface/BulletCollision/BroadphaseCollision/btDbvt.i +10 -0
- data/bindings/bullet/interface/BulletCollision/BroadphaseCollision/btDbvtBroadphase.i +8 -0
- data/bindings/bullet/interface/BulletCollision/BroadphaseCollision/btDispatcher.i +8 -0
- data/bindings/bullet/interface/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.i +10 -0
- data/bindings/bullet/interface/BulletCollision/BroadphaseCollision/btOverlappingPairCache.i +8 -0
- data/bindings/bullet/interface/BulletCollision/BroadphaseCollision/btOverlappingPairCallback.i +8 -0
- data/bindings/bullet/interface/BulletCollision/BroadphaseCollision/btQuantizedBvh.i +8 -0
- data/bindings/bullet/interface/BulletCollision/BroadphaseCollision/btSimpleBroadphase.i +8 -0
- data/bindings/bullet/interface/BulletCollision/BroadphaseCollision/local_btAxisSweep3Internal.h +191 -0
- data/bindings/bullet/interface/BulletCollision/CollisionDispatch/SphereTriangleDetector.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btBoxBoxDetector.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btCollisionConfiguration.i +21 -0
- data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btCollisionCreateFunc.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btCollisionDispatcher.i +24 -0
- data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btCollisionObject.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btCollisionWorld.i +95 -0
- data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btGhostObject.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btInternalEdgeUtility.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btManifoldResult.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btSimulationIslandManager.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btUnionFind.i +10 -0
- data/bindings/bullet/interface/BulletCollision/CollisionShapes/btBox2dShape.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionShapes/btBoxShape.i +22 -0
- data/bindings/bullet/interface/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionShapes/btCapsuleShape.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionShapes/btCollisionMargin.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionShapes/btCollisionShape.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionShapes/btCompoundShape.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionShapes/btConcaveShape.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionShapes/btConeShape.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionShapes/btConvex2dShape.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionShapes/btConvexHullShape.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionShapes/btConvexInternalShape.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionShapes/btConvexPointCloudShape.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionShapes/btConvexPolyhedron.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionShapes/btConvexShape.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionShapes/btCylinderShape.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionShapes/btEmptyShape.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionShapes/btMaterial.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionShapes/btMinkowskiSumShape.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionShapes/btMultiSphereShape.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionShapes/btOptimizedBvh.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionShapes/btPolyhedralConvexShape.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionShapes/btShapeHull.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionShapes/btSphereShape.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionShapes/btStaticPlaneShape.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionShapes/btStridingMeshInterface.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionShapes/btTetrahedronShape.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionShapes/btTriangleBuffer.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionShapes/btTriangleCallback.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionShapes/btTriangleInfoMap.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionShapes/btTriangleMeshShape.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionShapes/btTriangleShape.i +8 -0
- data/bindings/bullet/interface/BulletCollision/CollisionShapes/btUniformScalingShape.i +8 -0
- data/bindings/bullet/interface/BulletCollision/Gimpact/btBoxCollision.i +8 -0
- data/bindings/bullet/interface/BulletCollision/Gimpact/btClipPolygon.i +8 -0
- data/bindings/bullet/interface/BulletCollision/Gimpact/btContactProcessing.i +8 -0
- data/bindings/bullet/interface/BulletCollision/Gimpact/btGImpactBvh.i +8 -0
- data/bindings/bullet/interface/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.i +8 -0
- data/bindings/bullet/interface/BulletCollision/Gimpact/btGImpactMassUtil.i +8 -0
- data/bindings/bullet/interface/BulletCollision/Gimpact/btGImpactQuantizedBvh.i +8 -0
- data/bindings/bullet/interface/BulletCollision/Gimpact/btGImpactShape.i +8 -0
- data/bindings/bullet/interface/BulletCollision/Gimpact/btGenericPoolAllocator.i +11 -0
- data/bindings/bullet/interface/BulletCollision/Gimpact/btGeometryOperations.i +8 -0
- data/bindings/bullet/interface/BulletCollision/Gimpact/btQuantization.i +8 -0
- data/bindings/bullet/interface/BulletCollision/Gimpact/btTriangleShapeEx.i +8 -0
- data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.i +8 -0
- data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btConvexCast.i +8 -0
- data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btConvexPenetrationDepthSolver.i +8 -0
- data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.i +11 -0
- data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.i +8 -0
- data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btGjkEpa2.i +8 -0
- data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.i +8 -0
- data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.i +8 -0
- data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btManifoldPoint.i +8 -0
- data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.i +8 -0
- data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btPersistentManifold.i +8 -0
- data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btPointCollector.i +8 -0
- data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btPolyhedralContactClipping.i +8 -0
- data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btRaycastCallback.i +8 -0
- data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btSimplexSolverInterface.i +8 -0
- data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.i +8 -0
- data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.i +8 -0
- data/bindings/bullet/interface/BulletDynamics/Character/btCharacterControllerInterface.i +8 -0
- data/bindings/bullet/interface/BulletDynamics/Character/btKinematicCharacterController.i +8 -0
- data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btConeTwistConstraint.i +8 -0
- data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btConstraintSolver.i +8 -0
- data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btContactConstraint.i +8 -0
- data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btContactSolverInfo.i +8 -0
- data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.i +8 -0
- data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.i +8 -0
- data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btHinge2Constraint.i +8 -0
- data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btHingeConstraint.i +8 -0
- data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btJacobianEntry.i +8 -0
- data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.i +8 -0
- data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.i +21 -0
- data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btSliderConstraint.i +8 -0
- data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.i +8 -0
- data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btSolverBody.i +8 -0
- data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btSolverConstraint.i +8 -0
- data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btTypedConstraint.i +8 -0
- data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btUniversalConstraint.i +8 -0
- data/bindings/bullet/interface/BulletDynamics/Dynamics/btActionInterface.i +8 -0
- data/bindings/bullet/interface/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.i +23 -0
- data/bindings/bullet/interface/BulletDynamics/Dynamics/btDynamicsWorld.i +43 -0
- data/bindings/bullet/interface/BulletDynamics/Dynamics/btRigidBody.i +20 -0
- data/bindings/bullet/interface/BulletDynamics/Dynamics/btSimpleDynamicsWorld.i +8 -0
- data/bindings/bullet/interface/BulletDynamics/Vehicle/btRaycastVehicle.i +12 -0
- data/bindings/bullet/interface/BulletDynamics/Vehicle/btVehicleRaycaster.i +8 -0
- data/bindings/bullet/interface/BulletDynamics/Vehicle/btWheelInfo.i +8 -0
- data/bindings/bullet/interface/BulletSoftBody/btDefaultSoftBodySolver.i +8 -0
- data/bindings/bullet/interface/BulletSoftBody/btSoftBody.i +8 -0
- data/bindings/bullet/interface/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.i +8 -0
- data/bindings/bullet/interface/BulletSoftBody/btSoftBodyData.i +8 -0
- data/bindings/bullet/interface/BulletSoftBody/btSoftBodyHelpers.i +8 -0
- data/bindings/bullet/interface/BulletSoftBody/btSoftBodyInternals.i +8 -0
- data/bindings/bullet/interface/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.i +8 -0
- data/bindings/bullet/interface/BulletSoftBody/btSoftBodySolverVertexBuffer.i +8 -0
- data/bindings/bullet/interface/BulletSoftBody/btSoftBodySolvers.i +8 -0
- data/bindings/bullet/interface/BulletSoftBody/btSoftRigidCollisionAlgorithm.i +8 -0
- data/bindings/bullet/interface/BulletSoftBody/btSoftRigidDynamicsWorld.i +8 -0
- data/bindings/bullet/interface/BulletSoftBody/btSoftSoftCollisionAlgorithm.i +8 -0
- data/bindings/bullet/interface/BulletSoftBody/btSparseSDF.i +8 -0
- data/bindings/bullet/interface/LinearMath/btAabbUtil2.i +8 -0
- data/bindings/bullet/interface/LinearMath/btAlignedAllocator.i +8 -0
- data/bindings/bullet/interface/LinearMath/btAlignedObjectArray.i +8 -0
- data/bindings/bullet/interface/LinearMath/btConvexHull.i +8 -0
- data/bindings/bullet/interface/LinearMath/btConvexHullComputer.i +8 -0
- data/bindings/bullet/interface/LinearMath/btDefaultMotionState.i +10 -0
- data/bindings/bullet/interface/LinearMath/btGeometryUtil.i +10 -0
- data/bindings/bullet/interface/LinearMath/btGrahamScan2dConvexHull.i +8 -0
- data/bindings/bullet/interface/LinearMath/btHashMap.i +8 -0
- data/bindings/bullet/interface/LinearMath/btIDebugDraw.i +10 -0
- data/bindings/bullet/interface/LinearMath/btList.i +8 -0
- data/bindings/bullet/interface/LinearMath/btMatrix3x3.i +8 -0
- data/bindings/bullet/interface/LinearMath/btMinMax.i +8 -0
- data/bindings/bullet/interface/LinearMath/btMotionState.i +10 -0
- data/bindings/bullet/interface/LinearMath/btPoolAllocator.i +10 -0
- data/bindings/bullet/interface/LinearMath/btQuadWord.i +8 -0
- data/bindings/bullet/interface/LinearMath/btQuaternion.i +60 -0
- data/bindings/bullet/interface/LinearMath/btQuickprof.i +10 -0
- data/bindings/bullet/interface/LinearMath/btRandom.i +8 -0
- data/bindings/bullet/interface/LinearMath/btScalar.i +8 -0
- data/bindings/bullet/interface/LinearMath/btSerializer.i +10 -0
- data/bindings/bullet/interface/LinearMath/btStackAlloc.i +10 -0
- data/bindings/bullet/interface/LinearMath/btTransform.i +8 -0
- data/bindings/bullet/interface/LinearMath/btTransformUtil.i +8 -0
- data/bindings/bullet/interface/LinearMath/btVector3.i +41 -0
- data/bindings/bullet/interface/Rakefile +19 -0
- data/bindings/bullet/interface/bullet.i +9 -0
- data/bindings/bullet/interface/bullet_all.i +186 -0
- data/bindings/bullet/interface/bullet_wrap.cpp +205735 -0
- data/bindings/bullet/interface/bullet_wrap.h +106 -0
- data/bindings/bullet/interface/bullet_wrap.o +0 -0
- data/bindings/bullet/src/TickListener.h +22 -0
- data/lib/ruby-bullet.rb +63 -0
- data/lib/ruby-bullet/version.rb +5 -0
- data/ruby-bullet.gemspec +36 -0
- data/sample/hello_bullet/hello_bullet.rb +180 -0
- data/sample/hello_bullet/run +6 -0
- metadata +233 -0
checksums.yaml
ADDED
@@ -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
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.
|
data/README.md
ADDED
@@ -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
|
+
|
data/Rakefile
ADDED
@@ -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
|
+
%}
|
data/bindings/bullet/interface/BulletCollision/BroadphaseCollision/local_btAxisSweep3Internal.h
ADDED
@@ -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
|
+
|