ruby-bullet 0.0.3-x86-linux → 0.1.0-x86-linux
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile +4 -0
- data/README.md +26 -22
- data/Rakefile +41 -102
- data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btCollisionWorld.i +13 -0
- data/bindings/bullet/interface/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.i +2 -2
- data/bindings/bullet/interface/BulletDynamics/Dynamics/btDynamicsWorld.i +10 -4
- data/bindings/bullet/interface/LinearMath/btVector3.i +0 -1
- data/bindings/bullet/interface/Rakefile +3 -6
- data/bindings/bullet/interface/bullet_wrap.cpp +22 -20
- data/bindings/bullet/interface/bullet_wrap.o +0 -0
- data/deps/lib/libBulletCollision.a +0 -0
- data/deps/lib/libBulletDynamics.a +0 -0
- data/deps/lib/libBulletMultiThreaded.a +0 -0
- data/deps/lib/libBulletSoftBody.a +0 -0
- data/deps/lib/libBulletSoftBodySolvers_OpenCL_Mini.a +0 -0
- data/deps/lib/libLinearMath.a +0 -0
- data/deps/lib/libMiniCL.a +0 -0
- data/lib/{bullet_config.rb → _obsoleted/bullet_config.rb} +0 -0
- data/lib/bullet.so +0 -0
- data/lib/ruby-bullet/version.rb +5 -0
- data/lib/ruby-bullet.rb +36 -0
- data/lib/version.rb +1 -1
- data/ruby-bullet.gemspec +33 -0
- data/sample/hello_bullet/hello_bullet.rb +10 -1
- data/sample/hello_bullet/run +6 -0
- metadata +11 -7
- data/INSTALL.md +0 -22
data/Gemfile
ADDED
data/README.md
CHANGED
@@ -1,39 +1,43 @@
|
|
1
|
-
ruby-bullet
|
2
|
-
=================
|
1
|
+
# ruby-bullet
|
3
2
|
|
4
|
-
|
5
|
-
----
|
6
|
-
Ruby-bullet is a ruby extension library of Bullet.
|
3
|
+
Ruby-bullet is a ruby binding for Bullet.
|
7
4
|
|
5
|
+
## Installation
|
8
6
|
|
9
|
-
|
10
|
-
------
|
11
|
-
Linux(x86), Windows with MinGW(x86)
|
7
|
+
Add this line to your application's Gemfile:
|
12
8
|
|
9
|
+
gem 'ruby-bullet'
|
13
10
|
|
14
|
-
|
15
|
-
----
|
16
|
-
This project has a pre-compiled gem.
|
11
|
+
And then execute:
|
17
12
|
|
18
|
-
|
13
|
+
$ bundle
|
19
14
|
|
15
|
+
Or install it yourself as:
|
16
|
+
|
17
|
+
$ gem install ruby-bullet
|
18
|
+
|
19
|
+
## How to install from source.
|
20
|
+
|
21
|
+
If you want to compile from source, try the following.
|
22
|
+
|
23
|
+
$ git clone git://github.com/abexsoft/ruby-bullet.git
|
24
|
+
$ cd ruby-bullet
|
25
|
+
$ rake download
|
26
|
+
$ rake compile
|
27
|
+
$ rake build
|
28
|
+
$ gem build ruby-bullet.gemspec
|
29
|
+
$ gem install ruby-bullet-<version>-<arch>.gem
|
30
|
+
|
31
|
+
## Usages
|
20
32
|
|
21
|
-
Usages
|
22
|
-
-----
|
23
33
|
Run a sample application.
|
24
34
|
The sample application uses gtk2 to draw boxes.
|
25
35
|
|
26
36
|
$ sudo gem install gtk2
|
27
|
-
$
|
28
|
-
|
29
|
-
|
30
|
-
How to compile
|
31
|
-
----
|
32
|
-
see [INSTALL.md](https://github.com/abexsoft/ruby-bullet/blob/master/INSTALL.md)
|
37
|
+
$ <gems_path>/ruby-bullet-<version>-<arch>/sample/hello_bullet/run
|
33
38
|
|
39
|
+
## License
|
34
40
|
|
35
|
-
License
|
36
|
-
----------
|
37
41
|
Ruby-bullet is licensed under MIT License.
|
38
42
|
|
39
43
|
Copyright (C) 2012 abexsoft@gmail.com
|
data/Rakefile
CHANGED
@@ -1,133 +1,72 @@
|
|
1
1
|
require 'rubygems/package_task'
|
2
2
|
require 'rake/clean'
|
3
3
|
|
4
|
-
#
|
5
|
-
# Download sources.
|
6
|
-
#
|
7
4
|
desc 'Download the source packages.'
|
8
|
-
task :download
|
9
|
-
|
10
|
-
task :download_bullet do
|
11
|
-
BULLET_FILE = "bullet-2.80-rev2531.tgz"
|
12
|
-
|
5
|
+
task :download do
|
13
6
|
FileUtils::mkdir_p("deps/src")
|
14
7
|
chdir('deps/src') {
|
8
|
+
BULLET_FILE = "bullet-2.80-rev2531.tgz"
|
15
9
|
sh "wget http://bullet.googlecode.com/files/#{BULLET_FILE}"
|
16
10
|
sh "tar xzvf #{BULLET_FILE}"
|
17
11
|
}
|
18
12
|
end
|
19
13
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
namespace :deps do
|
26
|
-
|
27
|
-
task :bullet do
|
28
|
-
chdir("deps/src/bullet-2.80-rev2531/") {
|
29
|
-
if /mingw/ =~ RUBY_PLATFORM
|
30
|
-
sh 'cmake . -G "MSYS Makefiles" -DUSE_GLUT:BOOL=OFF -DBUILD_DEMOS:BOOL=OFF -DCMAKE_INSTALL_PREFIX:PATH=..\
|
14
|
+
desc 'Compile bullet libraries.'
|
15
|
+
task :compile do
|
16
|
+
chdir("deps/src/bullet-2.80-rev2531/") {
|
17
|
+
if /mingw/ =~ RUBY_PLATFORM
|
18
|
+
sh 'cmake . -G "MSYS Makefiles" -DUSE_GLUT:BOOL=OFF -DBUILD_DEMOS:BOOL=OFF -DCMAKE_INSTALL_PREFIX:PATH=..\
|
31
19
|
\.. -DINCLUDE_INSTALL_DIR:PATH=include\\bullet -DLIB_DESTINATION:STRING=..\\..\\lib -DPKGCONFIG_INSTALL_PR
|
32
20
|
EFIX:STRING=..\\..\\lib\\pkgconfig\\'
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
end
|
42
|
-
}
|
21
|
+
sh "make -j4"
|
22
|
+
system('mkdir ..\..\lib')
|
23
|
+
system('mkdir ..\..\include\bullet')
|
24
|
+
sh "cp -a lib/*.a ../../lib"
|
25
|
+
sh "cp -a src/* ../../include/bullet"
|
26
|
+
else
|
27
|
+
sh "cmake -DCMAKE_INSTALL_PREFIX:PATH=../.. -DINCLUDE_INSTALL_DIR:PATH=include/bullet -DLIB_DESTINATION:STRING=../../lib -DPKGCONFIG_INSTALL_PREFIX:STRING=../../lib/pkgconfig/"
|
28
|
+
sh "make -j4 && make install"
|
43
29
|
end
|
44
|
-
|
45
|
-
|
46
|
-
task :deps => 'deps:bullet'
|
47
|
-
|
48
|
-
|
49
|
-
namespace :ext do
|
50
|
-
#
|
51
|
-
# Extension
|
52
|
-
#
|
30
|
+
}
|
31
|
+
end
|
53
32
|
|
54
|
-
|
33
|
+
#
|
34
|
+
# Extension
|
35
|
+
#
|
55
36
|
|
56
|
-
|
37
|
+
DLEXT = RbConfig::MAKEFILE_CONFIG['DLEXT']
|
57
38
|
|
58
|
-
|
59
|
-
|
60
|
-
cp f.prerequisites, "lib/", :preserve => true
|
61
|
-
end
|
39
|
+
desc 'Compile a bullet extension library.'
|
40
|
+
task :build => ["lib/bullet.#{DLEXT}"]
|
62
41
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
CLEAN.include 'bindings/bullet/*.{o,so,dll}'
|
42
|
+
## lib/*.#{DLEXT}
|
43
|
+
file "lib/bullet.#{DLEXT}" => "bindings/bullet/bullet.#{DLEXT}" do |f|
|
44
|
+
cp f.prerequisites, "lib/", :preserve => true
|
45
|
+
end
|
68
46
|
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
47
|
+
## ext/**/*.#{DLEXT}
|
48
|
+
file "bindings/bullet/bullet.#{DLEXT}" => FileList["bindings/bullet/Makefile"] do |f|
|
49
|
+
sh 'cd bindings/bullet/ && make clean && make'
|
50
|
+
end
|
51
|
+
CLEAN.include 'bindings/bullet/*.{o,so,dll}'
|
74
52
|
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
end
|
53
|
+
## ext/**/Makefile
|
54
|
+
file 'bindings/bullet/Makefile' => FileList['bindings/bullet/interface/bullet_wrap.cpp'] do
|
55
|
+
chdir('bindings/bullet/') { ruby 'extconf.rb' }
|
56
|
+
end
|
57
|
+
CLEAN.include 'bindings/bullet/Makefile'
|
81
58
|
|
82
|
-
|
83
|
-
|
59
|
+
## make wrappers with swig.
|
60
|
+
file 'bindings/bullet/interface/bullet_wrap.cpp' do
|
61
|
+
chdir('bindings/bullet/interface') { sh 'rake' }
|
84
62
|
end
|
63
|
+
CLEAN.include 'bindings/bullet/interface/bullet_wrap.{cpp,h,o}'
|
85
64
|
|
86
65
|
#
|
87
66
|
# Document
|
88
67
|
#
|
89
68
|
desc 'Create documents'
|
90
69
|
task :doc => ['bindings/bullet/interface/bullet_wrap.cpp'] do |f|
|
91
|
-
|
92
70
|
sh "rdoc #{f.prerequisites.join(' ')}"
|
93
71
|
end
|
94
72
|
|
95
|
-
#
|
96
|
-
# Gemspec
|
97
|
-
#
|
98
|
-
lib = File.expand_path('../lib', __FILE__)
|
99
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
100
|
-
require 'version'
|
101
|
-
|
102
|
-
spec = Gem::Specification.new do |s|
|
103
|
-
|
104
|
-
s.name = "ruby-bullet"
|
105
|
-
s.version = Ruby::Bullet::VERSION
|
106
|
-
s.summary = "A ruby extension library of Bullet."
|
107
|
-
s.homepage = "https://github.com/abexsoft/ruby-bullet"
|
108
|
-
s.authors = ["abexsoft works"]
|
109
|
-
s.email = ["abexsoft@gmail.com"]
|
110
|
-
s.description = "This is a binary package of the ruby wrapper of Bullet."
|
111
|
-
s.platform = Gem::Platform::CURRENT
|
112
|
-
|
113
|
-
# The list of files to be contained in the gem
|
114
|
-
s.files = FileList['Rakefile',
|
115
|
-
'README.md',
|
116
|
-
'INSTALL.md',
|
117
|
-
'LICENSE',
|
118
|
-
'bindings/bullet/interface/**/*',
|
119
|
-
'bindings/bullet/src/**/*',
|
120
|
-
'doc/**/*',
|
121
|
-
'lib/**/*',
|
122
|
-
'sample/**/*',
|
123
|
-
'deps/lib/*',
|
124
|
-
'deps/include/**/*',
|
125
|
-
].to_a
|
126
|
-
|
127
|
-
# s.extra_rdoc_files = ['bindings/bullet/interface/bullet_wrap.cpp']
|
128
|
-
|
129
|
-
s.require_paths = ["lib"]
|
130
|
-
end
|
131
|
-
|
132
|
-
Gem::PackageTask.new(spec) do |pkg|
|
133
|
-
end
|
@@ -72,6 +72,8 @@ struct ContactResultCallback : public btCollisionWorld::ContactResultCallback
|
|
72
72
|
#include <btCollisionWorld.h>
|
73
73
|
%}
|
74
74
|
|
75
|
+
%freefunc btCollisionWorld "debug_free_BtCollisionWorld";
|
76
|
+
|
75
77
|
%include btCollisionWorld.h
|
76
78
|
|
77
79
|
%{
|
@@ -79,4 +81,15 @@ typedef btCollisionWorld::LocalRayResult LocalRayResult;
|
|
79
81
|
typedef btCollisionWorld::RayResultCallback RayResultCallback;
|
80
82
|
typedef btCollisionWorld::ClosestRayResultCallback ClosestRayResultCallback;
|
81
83
|
typedef btCollisionWorld::ContactResultCallback ContactResultCallback;
|
84
|
+
|
85
|
+
|
86
|
+
static void debug_free_BtCollisionWorld(void* ptr) {
|
87
|
+
btCollisionWorld* obj = (btCollisionWorld*) ptr;
|
88
|
+
|
89
|
+
std::cout << __PRETTY_FUNCTION__ << std::endl;
|
90
|
+
|
91
|
+
delete obj;
|
92
|
+
}
|
93
|
+
|
94
|
+
|
82
95
|
%}
|
@@ -7,9 +7,9 @@
|
|
7
7
|
|
8
8
|
%feature("director") TickListener;
|
9
9
|
|
10
|
-
|
10
|
+
//#ifdef DEBUG_FREEFUNC
|
11
11
|
%freefunc btDynamicsWorld "debug_free_BtDynamicsWorld";
|
12
|
-
|
12
|
+
//#endif
|
13
13
|
|
14
14
|
%include btDynamicsWorld.h
|
15
15
|
%include "../../../src/TickListener.h"
|
@@ -17,9 +17,15 @@
|
|
17
17
|
%extend btDynamicsWorld {
|
18
18
|
void setInternalTickCallback(TickListener* listener, bool isPreTick=false) {
|
19
19
|
if (isPreTick)
|
20
|
-
self->setInternalTickCallback(
|
20
|
+
self->setInternalTickCallback(
|
21
|
+
(btInternalTickCallback)TickListener::bulletPreTickCallback,
|
22
|
+
listener,
|
23
|
+
isPreTick);
|
21
24
|
else
|
22
|
-
self->setInternalTickCallback(
|
25
|
+
self->setInternalTickCallback(
|
26
|
+
(btInternalTickCallback)TickListener::bulletTickCallback,
|
27
|
+
listener,
|
28
|
+
isPreTick);
|
23
29
|
}
|
24
30
|
}
|
25
31
|
|
@@ -1,10 +1,7 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
DEPS_DIR = "../../../deps/"
|
4
|
-
load "../../../deps/env.rb"
|
1
|
+
require_relative "../../../lib/ruby-bullet"
|
5
2
|
|
6
|
-
|
7
|
-
SWIGFLAGS = "-ruby -c++ -w801 #{
|
3
|
+
SWIG = 'swig'
|
4
|
+
SWIGFLAGS = "-ruby -c++ -w801 #{Ruby::Bullet::get_inc_flags} -I../src/ -autorename"
|
8
5
|
|
9
6
|
TARGET = 'bullet_wrap.cpp'
|
10
7
|
|
@@ -3686,6 +3686,17 @@ typedef btCollisionWorld::ClosestRayResultCallback ClosestRayResultCallback;
|
|
3686
3686
|
typedef btCollisionWorld::ContactResultCallback ContactResultCallback;
|
3687
3687
|
|
3688
3688
|
|
3689
|
+
static void debug_free_BtCollisionWorld(void* ptr) {
|
3690
|
+
btCollisionWorld* obj = (btCollisionWorld*) ptr;
|
3691
|
+
|
3692
|
+
std::cout << __PRETTY_FUNCTION__ << std::endl;
|
3693
|
+
|
3694
|
+
delete obj;
|
3695
|
+
}
|
3696
|
+
|
3697
|
+
|
3698
|
+
|
3699
|
+
|
3689
3700
|
#include <btActivatingCollisionAlgorithm.h>
|
3690
3701
|
|
3691
3702
|
|
@@ -3962,9 +3973,15 @@ SWIG_From_size_t (size_t value)
|
|
3962
3973
|
|
3963
3974
|
SWIGINTERN void btDynamicsWorld_setInternalTickCallback__SWIG_3(btDynamicsWorld *self,TickListener *listener,bool isPreTick=false){
|
3964
3975
|
if (isPreTick)
|
3965
|
-
self->setInternalTickCallback(
|
3976
|
+
self->setInternalTickCallback(
|
3977
|
+
(btInternalTickCallback)TickListener::bulletPreTickCallback,
|
3978
|
+
listener,
|
3979
|
+
isPreTick);
|
3966
3980
|
else
|
3967
|
-
self->setInternalTickCallback(
|
3981
|
+
self->setInternalTickCallback(
|
3982
|
+
(btInternalTickCallback)TickListener::bulletTickCallback,
|
3983
|
+
listener,
|
3984
|
+
isPreTick);
|
3968
3985
|
}
|
3969
3986
|
|
3970
3987
|
|
@@ -96522,11 +96539,6 @@ fail:
|
|
96522
96539
|
}
|
96523
96540
|
|
96524
96541
|
|
96525
|
-
SWIGINTERN void
|
96526
|
-
free_btCollisionWorld(btCollisionWorld *arg1) {
|
96527
|
-
delete arg1;
|
96528
|
-
}
|
96529
|
-
|
96530
96542
|
SWIGINTERN VALUE
|
96531
96543
|
_wrap_BtCollisionWorld_set_broadphase(int argc, VALUE *argv, VALUE self) {
|
96532
96544
|
btCollisionWorld *arg1 = (btCollisionWorld *) 0 ;
|
@@ -150777,11 +150789,6 @@ fail:
|
|
150777
150789
|
|
150778
150790
|
swig_class SwigClassBtDynamicsWorld;
|
150779
150791
|
|
150780
|
-
SWIGINTERN void
|
150781
|
-
free_btDynamicsWorld(btDynamicsWorld *arg1) {
|
150782
|
-
delete arg1;
|
150783
|
-
}
|
150784
|
-
|
150785
150792
|
SWIGINTERN VALUE
|
150786
150793
|
_wrap_BtDynamicsWorld_step_simulation__SWIG_0(int argc, VALUE *argv, VALUE self) {
|
150787
150794
|
btDynamicsWorld *arg1 = (btDynamicsWorld *) 0 ;
|
@@ -152453,11 +152460,6 @@ fail:
|
|
152453
152460
|
}
|
152454
152461
|
|
152455
152462
|
|
152456
|
-
SWIGINTERN void
|
152457
|
-
free_btDiscreteDynamicsWorld(btDiscreteDynamicsWorld *arg1) {
|
152458
|
-
delete arg1;
|
152459
|
-
}
|
152460
|
-
|
152461
152463
|
SWIGINTERN VALUE
|
152462
152464
|
_wrap_BtDiscreteDynamicsWorld_step_simulation__SWIG_0(int argc, VALUE *argv, VALUE self) {
|
152463
152465
|
btDiscreteDynamicsWorld *arg1 = (btDiscreteDynamicsWorld *) 0 ;
|
@@ -191085,7 +191087,7 @@ SWIGEXPORT void Init_bullet(void) {
|
|
191085
191087
|
rb_define_method(SwigClassBtCollisionWorld.klass, "set_force_update_all_aabbs", VALUEFUNC(_wrap_BtCollisionWorld_set_force_update_all_aabbs), -1);
|
191086
191088
|
rb_define_method(SwigClassBtCollisionWorld.klass, "serialize", VALUEFUNC(_wrap_BtCollisionWorld_serialize), -1);
|
191087
191089
|
SwigClassBtCollisionWorld.mark = 0;
|
191088
|
-
SwigClassBtCollisionWorld.destroy = (void (*)(void *))
|
191090
|
+
SwigClassBtCollisionWorld.destroy = (void (*)(void *)) debug_free_BtCollisionWorld;
|
191089
191091
|
SwigClassBtCollisionWorld.trackObjects = 0;
|
191090
191092
|
|
191091
191093
|
SwigClassBtActivatingCollisionAlgorithm.klass = rb_define_class_under(mBullet, "BtActivatingCollisionAlgorithm", ((swig_class *) SWIGTYPE_p_btCollisionAlgorithm->clientdata)->klass);
|
@@ -193121,7 +193123,7 @@ SWIGEXPORT void Init_bullet(void) {
|
|
193121
193123
|
rb_define_method(SwigClassBtDynamicsWorld.klass, "remove_character", VALUEFUNC(_wrap_BtDynamicsWorld_remove_character), -1);
|
193122
193124
|
rb_define_method(SwigClassBtDynamicsWorld.klass, "set_internal_tick_callback", VALUEFUNC(_wrap_BtDynamicsWorld_set_internal_tick_callback), -1);
|
193123
193125
|
SwigClassBtDynamicsWorld.mark = 0;
|
193124
|
-
SwigClassBtDynamicsWorld.destroy = (void (*)(void *))
|
193126
|
+
SwigClassBtDynamicsWorld.destroy = (void (*)(void *)) debug_free_BtDynamicsWorld;
|
193125
193127
|
SwigClassBtDynamicsWorld.trackObjects = 0;
|
193126
193128
|
rb_define_module_function(mBullet, "disown_TickListener", VALUEFUNC(_wrap_disown_TickListener), -1);
|
193127
193129
|
|
@@ -193175,7 +193177,7 @@ SWIGEXPORT void Init_bullet(void) {
|
|
193175
193177
|
rb_define_method(SwigClassBtDiscreteDynamicsWorld.klass, "get_synchronize_all_motion_states", VALUEFUNC(_wrap_BtDiscreteDynamicsWorld_get_synchronize_all_motion_states), -1);
|
193176
193178
|
rb_define_method(SwigClassBtDiscreteDynamicsWorld.klass, "serialize", VALUEFUNC(_wrap_BtDiscreteDynamicsWorld_serialize), -1);
|
193177
193179
|
SwigClassBtDiscreteDynamicsWorld.mark = 0;
|
193178
|
-
SwigClassBtDiscreteDynamicsWorld.destroy = (void (*)(void *))
|
193180
|
+
SwigClassBtDiscreteDynamicsWorld.destroy = (void (*)(void *)) debug_free_btDiscreteDynamicsWorld;
|
193179
193181
|
SwigClassBtDiscreteDynamicsWorld.trackObjects = 0;
|
193180
193182
|
|
193181
193183
|
SwigClassBtSimpleDynamicsWorld.klass = rb_define_class_under(mBullet, "BtSimpleDynamicsWorld", ((swig_class *) SWIGTYPE_p_btDynamicsWorld->clientdata)->klass);
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/deps/lib/libLinearMath.a
CHANGED
Binary file
|
data/deps/lib/libMiniCL.a
CHANGED
Binary file
|
File without changes
|
data/lib/bullet.so
CHANGED
Binary file
|
data/lib/ruby-bullet.rb
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
require_relative "ruby-bullet/version"
|
2
|
+
|
3
|
+
module Ruby
|
4
|
+
module Bullet
|
5
|
+
def self.get_top_path
|
6
|
+
File.dirname(File.dirname(File.expand_path(__FILE__)))
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.get_deps_lib_path
|
10
|
+
"#{get_top_path}/deps/lib"
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.get_deps_inc_path
|
14
|
+
"#{get_top_path()}/deps/include/"
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.get_inc_flags
|
18
|
+
" -I#{get_top_path}/deps/include/bullet/ " +
|
19
|
+
" -I#{get_top_path}/deps/include/bullet/LinearMath/ " +
|
20
|
+
" -I#{get_top_path}/deps/include/bullet/BulletCollision/CollisionDispatch/ " +
|
21
|
+
" -I#{get_top_path}/deps/include/bullet/BulletCollision/BroadphaseCollision/ " +
|
22
|
+
" -I#{get_top_path}/deps/include/bullet/BulletCollision/NarrowPhaseCollision/ " +
|
23
|
+
" -I#{get_top_path}/deps/include/bullet/BulletCollision/CollisionShapes/ " +
|
24
|
+
" -I#{get_top_path}/deps/include/bullet/BulletCollision/Gimpact/ " +
|
25
|
+
" -I#{get_top_path}/deps/include/bullet/BulletDynamics/ConstraintSolver/ " +
|
26
|
+
" -I#{get_top_path}/deps/include/bullet/BulletDynamics/Dynamics/ " +
|
27
|
+
" -I#{get_top_path}/deps/include/bullet/BulletDynamics/Vehicle/ " +
|
28
|
+
" -I#{get_top_path}/deps/include/bullet/BulletDynamics/Character/ " +
|
29
|
+
" -I#{get_top_path}/deps/include/bullet/BulletSoftBody/ "
|
30
|
+
end
|
31
|
+
|
32
|
+
def self.get_lib_flags
|
33
|
+
"-L#{get_top_path}/deps/lib -lBulletDynamics -lBulletCollision -lBulletSoftBody -lLinearMath"
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
data/lib/version.rb
CHANGED
data/ruby-bullet.gemspec
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
lib = File.expand_path('../lib', __FILE__)
|
2
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
+
require 'ruby-bullet/version'
|
4
|
+
|
5
|
+
Gem::Specification.new do |gem|
|
6
|
+
gem.name = "ruby-bullet"
|
7
|
+
gem.version = Ruby::Bullet::VERSION
|
8
|
+
gem.authors = ["abexsoft"]
|
9
|
+
gem.email = ["abexsoft@gmail.com"]
|
10
|
+
gem.summary = %q{A ruby binding for Bullet.}
|
11
|
+
gem.description = %q{A ruby binding for Bullet.}
|
12
|
+
gem.homepage = "https://github.com/abexsoft/ruby-bullet"
|
13
|
+
gem.platform = Gem::Platform::CURRENT
|
14
|
+
|
15
|
+
gem.files = Dir['Gemfile',
|
16
|
+
'Rakefile',
|
17
|
+
'README.md',
|
18
|
+
'INSTALL.md',
|
19
|
+
'LICENSE',
|
20
|
+
'ruby-bullet.gemspec',
|
21
|
+
'bindings/bullet/interface/**/*',
|
22
|
+
'bindings/bullet/src/**/*',
|
23
|
+
'doc/**/*',
|
24
|
+
'lib/**/*',
|
25
|
+
'sample/**/*',
|
26
|
+
'deps/lib/*',
|
27
|
+
'deps/include/**/*',
|
28
|
+
]
|
29
|
+
|
30
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
31
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
32
|
+
gem.require_paths = ["lib"]
|
33
|
+
end
|
@@ -2,7 +2,7 @@ $LOAD_PATH.push(File.dirname(File.expand_path(__FILE__)) + "/../../lib")
|
|
2
2
|
|
3
3
|
require 'gtk2'
|
4
4
|
require 'cairo'
|
5
|
-
require "bullet
|
5
|
+
require "bullet"
|
6
6
|
|
7
7
|
class Physics
|
8
8
|
attr_accessor :context
|
@@ -51,6 +51,14 @@ class Physics
|
|
51
51
|
|
52
52
|
return delta
|
53
53
|
end
|
54
|
+
|
55
|
+
def finalize()
|
56
|
+
# patch for GC.
|
57
|
+
@objects.each{|body|
|
58
|
+
@dynamicsWorld.remove_rigid_body(body.rigidBody)
|
59
|
+
}
|
60
|
+
@objects = []
|
61
|
+
end
|
54
62
|
end
|
55
63
|
|
56
64
|
|
@@ -137,6 +145,7 @@ physics.add_object(floor)
|
|
137
145
|
window = Gtk::Window.new
|
138
146
|
window.set_default_size(300, 300)
|
139
147
|
window.signal_connect("destroy") do
|
148
|
+
physics.finalize
|
140
149
|
Gtk.main_quit
|
141
150
|
false
|
142
151
|
end
|
metadata
CHANGED
@@ -1,27 +1,28 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-bullet
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: x86-linux
|
7
7
|
authors:
|
8
|
-
- abexsoft
|
8
|
+
- abexsoft
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-02-24 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
|
-
description:
|
14
|
+
description: A ruby binding for Bullet.
|
15
15
|
email:
|
16
16
|
- abexsoft@gmail.com
|
17
17
|
executables: []
|
18
18
|
extensions: []
|
19
19
|
extra_rdoc_files: []
|
20
20
|
files:
|
21
|
+
- Gemfile
|
21
22
|
- Rakefile
|
22
23
|
- README.md
|
23
|
-
- INSTALL.md
|
24
24
|
- LICENSE
|
25
|
+
- ruby-bullet.gemspec
|
25
26
|
- bindings/bullet/interface/bullet.i
|
26
27
|
- bindings/bullet/interface/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.i
|
27
28
|
- bindings/bullet/interface/BulletSoftBody/btSoftRigidDynamicsWorld.i
|
@@ -200,9 +201,12 @@ files:
|
|
200
201
|
- bindings/bullet/interface/Rakefile
|
201
202
|
- bindings/bullet/interface/bullet_all.i
|
202
203
|
- bindings/bullet/src/TickListener.h
|
203
|
-
- lib/
|
204
|
+
- lib/ruby-bullet.rb
|
204
205
|
- lib/version.rb
|
206
|
+
- lib/ruby-bullet/version.rb
|
205
207
|
- lib/bullet.so
|
208
|
+
- lib/_obsoleted/bullet_config.rb
|
209
|
+
- sample/hello_bullet/run
|
206
210
|
- sample/hello_bullet/hello_bullet.rb
|
207
211
|
- deps/lib/libBulletMultiThreaded.a
|
208
212
|
- deps/lib/libBulletSoftBody.a
|
@@ -500,5 +504,5 @@ rubyforge_project:
|
|
500
504
|
rubygems_version: 1.8.11
|
501
505
|
signing_key:
|
502
506
|
specification_version: 3
|
503
|
-
summary: A ruby
|
507
|
+
summary: A ruby binding for Bullet.
|
504
508
|
test_files: []
|
data/INSTALL.md
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
Using libraries
|
2
|
-
--------------
|
3
|
-
* ruby : http://www.ruby-lang.org/
|
4
|
-
* swig : http://www.swig.org/
|
5
|
-
* bullet : http://bulletphysics.org/
|
6
|
-
|
7
|
-
|
8
|
-
How to compile all libraries.
|
9
|
-
--------------
|
10
|
-
1. compile external libraries.
|
11
|
-
|
12
|
-
> $ rake download
|
13
|
-
> $ rake compile:deps
|
14
|
-
|
15
|
-
2. make ruby extension libraries.
|
16
|
-
|
17
|
-
> $ rake compile:ext
|
18
|
-
|
19
|
-
3. install ruby extension libraries.
|
20
|
-
|
21
|
-
> $ rake package
|
22
|
-
> $ sudo gem install pkg/ruby-bullet-\<version>-\<arch>.gem
|