chipmunk 5.3.4.0-x86-mingw32 → 5.3.4.2-x86-mingw32
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/README +33 -13
- data/Rakefile +20 -7
- data/ext/chipmunk/extconf.rb +55 -12
- data/ext/chipmunk/rb_chipmunk.c +92 -98
- data/ext/chipmunk/rb_chipmunk.h +44 -34
- data/ext/chipmunk/rb_cpArbiter.c +135 -98
- data/ext/chipmunk/rb_cpBB.c +84 -101
- data/ext/chipmunk/rb_cpBody.c +219 -241
- data/ext/chipmunk/rb_cpConstraint.c +173 -185
- data/ext/chipmunk/rb_cpShape.c +347 -251
- data/ext/chipmunk/rb_cpSpace.c +376 -408
- data/ext/chipmunk/rb_cpVect.c +132 -170
- data/ext/chipmunk/vendor/chipmunk-5.3.4/include/chipmunk/chipmunk.h +163 -0
- data/ext/chipmunk/vendor/chipmunk-5.3.4/include/chipmunk/chipmunk_ffi.h +59 -0
- data/ext/chipmunk/vendor/chipmunk-5.3.4/include/chipmunk/chipmunk_private.h +49 -0
- data/ext/chipmunk/vendor/chipmunk-5.3.4/include/chipmunk/chipmunk_types.h +151 -0
- data/ext/chipmunk/vendor/chipmunk-5.3.4/include/chipmunk/chipmunk_unsafe.h +54 -0
- data/ext/chipmunk/vendor/chipmunk-5.3.4/include/chipmunk/constraints/cpConstraint.h +105 -0
- data/ext/chipmunk/vendor/chipmunk-5.3.4/include/chipmunk/constraints/cpDampedRotarySpring.h +46 -0
- data/ext/chipmunk/vendor/chipmunk-5.3.4/include/chipmunk/constraints/cpDampedSpring.h +53 -0
- data/ext/chipmunk/vendor/chipmunk-5.3.4/include/chipmunk/constraints/cpGearJoint.h +41 -0
- data/ext/chipmunk/vendor/chipmunk-5.3.4/include/chipmunk/constraints/cpGrooveJoint.h +48 -0
- data/ext/chipmunk/vendor/chipmunk-5.3.4/include/chipmunk/constraints/cpPinJoint.h +43 -0
- data/ext/chipmunk/vendor/chipmunk-5.3.4/include/chipmunk/constraints/cpPivotJoint.h +42 -0
- data/ext/chipmunk/vendor/chipmunk-5.3.4/include/chipmunk/constraints/cpRatchetJoint.h +40 -0
- data/ext/chipmunk/vendor/chipmunk-5.3.4/include/chipmunk/constraints/cpRotaryLimitJoint.h +39 -0
- data/ext/chipmunk/vendor/chipmunk-5.3.4/include/chipmunk/constraints/cpSimpleMotor.h +37 -0
- data/ext/chipmunk/vendor/chipmunk-5.3.4/include/chipmunk/constraints/cpSlideJoint.h +44 -0
- data/ext/chipmunk/vendor/chipmunk-5.3.4/include/chipmunk/constraints/util.h +134 -0
- data/ext/chipmunk/vendor/chipmunk-5.3.4/include/chipmunk/cpArbiter.h +188 -0
- data/ext/chipmunk/vendor/chipmunk-5.3.4/include/chipmunk/cpArray.h +49 -0
- data/ext/chipmunk/vendor/chipmunk-5.3.4/include/chipmunk/cpBB.h +74 -0
- data/ext/chipmunk/vendor/chipmunk-5.3.4/include/chipmunk/cpBody.h +219 -0
- data/ext/chipmunk/vendor/chipmunk-5.3.4/include/chipmunk/cpCollision.h +28 -0
- data/ext/chipmunk/vendor/chipmunk-5.3.4/include/chipmunk/cpHashSet.h +82 -0
- data/ext/chipmunk/vendor/chipmunk-5.3.4/include/chipmunk/cpPolyShape.h +103 -0
- data/ext/chipmunk/vendor/chipmunk-5.3.4/include/chipmunk/cpShape.h +177 -0
- data/ext/chipmunk/vendor/chipmunk-5.3.4/include/chipmunk/cpSpace.h +206 -0
- data/ext/chipmunk/vendor/chipmunk-5.3.4/include/chipmunk/cpSpaceHash.h +110 -0
- data/ext/chipmunk/vendor/chipmunk-5.3.4/include/chipmunk/cpVect.h +207 -0
- data/ext/chipmunk/vendor/chipmunk-5.3.4/src/chipmunk.c +151 -0
- data/ext/chipmunk/vendor/chipmunk-5.3.4/src/constraints/cpConstraint.c +54 -0
- data/ext/chipmunk/vendor/chipmunk-5.3.4/src/constraints/cpDampedRotarySpring.c +105 -0
- data/ext/chipmunk/vendor/chipmunk-5.3.4/src/constraints/cpDampedSpring.c +115 -0
- data/ext/chipmunk/vendor/chipmunk-5.3.4/src/constraints/cpGearJoint.c +113 -0
- data/ext/chipmunk/vendor/chipmunk-5.3.4/src/constraints/cpGrooveJoint.c +161 -0
- data/ext/chipmunk/vendor/chipmunk-5.3.4/src/constraints/cpPinJoint.c +116 -0
- data/ext/chipmunk/vendor/chipmunk-5.3.4/src/constraints/cpPivotJoint.c +114 -0
- data/ext/chipmunk/vendor/chipmunk-5.3.4/src/constraints/cpRatchetJoint.c +126 -0
- data/ext/chipmunk/vendor/chipmunk-5.3.4/src/constraints/cpRotaryLimitJoint.c +120 -0
- data/ext/chipmunk/vendor/chipmunk-5.3.4/src/constraints/cpSimpleMotor.c +97 -0
- data/ext/chipmunk/vendor/chipmunk-5.3.4/src/constraints/cpSlideJoint.c +129 -0
- data/ext/chipmunk/vendor/chipmunk-5.3.4/src/cpArbiter.c +280 -0
- data/ext/chipmunk/vendor/chipmunk-5.3.4/src/cpArray.c +143 -0
- data/ext/chipmunk/vendor/chipmunk-5.3.4/src/cpBB.c +47 -0
- data/ext/chipmunk/vendor/chipmunk-5.3.4/src/cpBody.c +192 -0
- data/ext/chipmunk/vendor/chipmunk-5.3.4/src/cpCollision.c +411 -0
- data/ext/chipmunk/vendor/chipmunk-5.3.4/src/cpHashSet.c +253 -0
- data/ext/chipmunk/vendor/chipmunk-5.3.4/src/cpPolyShape.c +240 -0
- data/ext/chipmunk/vendor/chipmunk-5.3.4/src/cpShape.c +405 -0
- data/ext/chipmunk/vendor/chipmunk-5.3.4/src/cpSpace.c +499 -0
- data/ext/chipmunk/vendor/chipmunk-5.3.4/src/cpSpaceComponent.c +279 -0
- data/ext/chipmunk/vendor/chipmunk-5.3.4/src/cpSpaceHash.c +534 -0
- data/ext/chipmunk/vendor/chipmunk-5.3.4/src/cpSpaceQuery.c +246 -0
- data/ext/chipmunk/vendor/chipmunk-5.3.4/src/cpSpaceStep.c +398 -0
- data/ext/chipmunk/vendor/chipmunk-5.3.4/src/cpVect.c +71 -0
- data/ext/chipmunk/vendor/chipmunk-5.3.4/src/prime.h +68 -0
- data/lib/1.9/chipmunk.so +0 -0
- data/lib/chipmunk.rb +19 -8
- metadata +84 -42
- data/lib/1.8/chipmunk.so +0 -0
data/README
CHANGED
@@ -3,7 +3,8 @@ Ruby Bindings to Chipmunk Physics Version 5.3.4
|
|
3
3
|
(C) Scott Lembcke, Beoran and John Mair (banisterfiend)
|
4
4
|
|
5
5
|
IMPORTANT NOTICE:
|
6
|
-
These
|
6
|
+
These is version 5.3.4.2 of the bindings for MRI Ruby 1.8.x and 1.9.x to
|
7
|
+
Chipmunk version 5.3.4.
|
7
8
|
|
8
9
|
(1) 1/10/09 Cross-Platform Gem built by John Mair (banisterfiend)
|
9
10
|
* Just go: gem install chipmunk
|
@@ -20,7 +21,7 @@ ABOUT CHIPMUNK:
|
|
20
21
|
written in C by Slembcke. It's licensed under the unrestrictive, OSI approved
|
21
22
|
MIT license.
|
22
23
|
|
23
|
-
ABOUT THESE RUBY BINDINGS:
|
24
|
+
ABOUT THESE RUBY BINDINGS:
|
24
25
|
Although chipmunk comes with ruby bindings, they are not always up to date
|
25
26
|
with regards to the functionality of the C library, and historically, they
|
26
27
|
have been incompatible with recent versions of Ruby.
|
@@ -30,17 +31,35 @@ ABOUT THESE RUBY BINDINGS:
|
|
30
31
|
intended to be an alternative to the chipmunk-ffi bindings when performance
|
31
32
|
is of the utmost importance, as it may be for games.
|
32
33
|
|
33
|
-
The intent is for these bindings to be mostly source code compatible with
|
34
|
-
|
35
|
-
|
36
|
-
to the C API adjusted to ruby conventions. If you have any problems with these bindings, please contact the maintainer at beoran@rubyforge.org.
|
34
|
+
The intent is for these bindings to be mostly source code compatible with the
|
35
|
+
FFI bindings. Main exceptions are when it did not support the functionality I
|
36
|
+
added yet. All this is documented by specs and by the html documentation.
|
37
37
|
|
38
|
+
If you have any problems with these bindings, please contact the maintainer at
|
39
|
+
beoran@rubyforge.org, or report the issue on the issue tracker:
|
40
|
+
https://github.com/beoran/chipmunk/issues
|
41
|
+
|
42
|
+
INSTALLATION
|
43
|
+
These bindings vendor Chipmunk 5.3.4 with a few extra patches, so a gem
|
44
|
+
install chipmunk should do the trick. Optionally, the C chipmunk library
|
45
|
+
may be installed separately. To compile without vendoring, go to the
|
46
|
+
ext/chipmunk directory and compile with ruby extconf.rb --disable-vendor ;
|
47
|
+
make ; make install.
|
48
|
+
|
38
49
|
DOCUMENTATION:
|
50
|
+
Full handcrafted documentation based on the C documentation is available at:
|
39
51
|
http://beoran.github.com/chipmunk/
|
40
52
|
|
41
|
-
|
42
|
-
|
43
|
-
|
53
|
+
CHANGES:
|
54
|
+
* Since 5.3.4.1: Vendored chipmunk again, cleanly. Several bugfixes.
|
55
|
+
* Since 5.1.0 : Much more of Chipmunk's functionality is wrapped. Unvendored
|
56
|
+
chipmunk. More specs and documentation.
|
57
|
+
|
58
|
+
KNOWN BUGS:
|
59
|
+
* There are no bindings to SpaceHash since I think they are not so useful
|
60
|
+
anymore since Chipmunk supports BB queries.
|
61
|
+
* Some methods may crash with a segentation violation in case they are not
|
62
|
+
used correctly, according to the underlying requirements of the C library.
|
44
63
|
|
45
64
|
CONTRACTING:
|
46
65
|
Howling Moon Software (Slembke's company) is available for contracting if you
|
@@ -48,10 +67,11 @@ CONTRACTING:
|
|
48
67
|
them through their webpage: http://howlingmoonsoftware.com/contracting.php
|
49
68
|
|
50
69
|
TODO:
|
51
|
-
*
|
52
|
-
|
53
|
-
*
|
54
|
-
|
70
|
+
* Allow several constructors to be more flexible and take nil as a default
|
71
|
+
argument.
|
72
|
+
* Try to prevent segfauts on incorrect use of certain methods, if possible.
|
73
|
+
* Get ready for chipmunk 5.3.5 and 6.x when they come out.
|
74
|
+
* Some more specs.
|
55
75
|
|
56
76
|
INFO FOR MAINTAINERS:
|
57
77
|
|
data/Rakefile
CHANGED
@@ -1,7 +1,13 @@
|
|
1
1
|
# Rakefile added by John Mair (banisterfiend)
|
2
2
|
|
3
|
-
require 'rake/gempackagetask'
|
3
|
+
# require 'rake/gempackagetask'
|
4
|
+
require 'psych'
|
5
|
+
require 'rake'
|
4
6
|
require 'rake/clean'
|
7
|
+
require 'rubygems'
|
8
|
+
require 'rubygems/package_task'
|
9
|
+
|
10
|
+
|
5
11
|
|
6
12
|
begin
|
7
13
|
require 'rake/extensiontask'
|
@@ -12,7 +18,13 @@ rescue LoadError
|
|
12
18
|
# puts "...done!"
|
13
19
|
end
|
14
20
|
|
15
|
-
CHIPMUNK_VERSION = "5.3.4.
|
21
|
+
CHIPMUNK_VERSION = "5.3.4.2"
|
22
|
+
VENDORED_CHIPMUNK = 'chipmunk-5.3.4'
|
23
|
+
VENDORED_SRC_DIR = File.join('vendor', VENDORED_CHIPMUNK, 'src')
|
24
|
+
VENDORED_SRC_DIR2 = File.join('vendor', VENDORED_CHIPMUNK, 'src', 'constraints')
|
25
|
+
VENDORED_INCLUDE_DIR = File.join('vendor', VENDORED_CHIPMUNK, 'include', 'chipmunk')
|
26
|
+
|
27
|
+
|
16
28
|
|
17
29
|
dlext = Config::CONFIG['DLEXT']
|
18
30
|
|
@@ -42,22 +54,23 @@ if RUBY_PLATFORM =~ /darwin/
|
|
42
54
|
spec = Gem::Specification.new do |s|
|
43
55
|
apply_spec_defaults(s)
|
44
56
|
s.platform = Gem::Platform::CURRENT
|
45
|
-
s.files = ["Rakefile", "README", "LICENSE", "lib/chipmunk.rb", "lib/1.8/chipmunk.#{dlext}", "lib/1.9/chipmunk.#{dlext}"]
|
57
|
+
s.files = ["Rakefile", "README", "LICENSE", "lib/chipmunk.rb", "lib/1.8/chipmunk.#{dlext}", "lib/1.9/chipmunk.#{dlext}"] +
|
58
|
+
FileList["ext/**/extconf.rb", "ext/**/*.h", "ext/**/*.c"].to_a
|
46
59
|
end
|
47
60
|
|
48
61
|
Rake::ExtensionTask.new('chipmunk') do |ext|
|
49
62
|
ext.ext_dir = "ext"
|
50
63
|
ext.lib_dir = "lib/#{RUBY_VERSION[0..2]}"
|
51
64
|
ext.config_script = 'extconf.rb'
|
52
|
-
ext.config_options << 'macosx'
|
65
|
+
ext.config_options << '--enable-macosx'
|
53
66
|
end
|
54
67
|
|
55
68
|
task :compile_multi => :clean do
|
56
|
-
`/bin/bash -l -c "rvm 1.8.6,1.9.
|
69
|
+
`/bin/bash -l -c "rvm 1.8.6,1.9.2 rake compile"`
|
57
70
|
end
|
58
71
|
|
59
72
|
task :gem => :compile_multi
|
60
|
-
|
73
|
+
Gem::PackageTask.new(spec) do |pkg|
|
61
74
|
pkg.need_zip = false
|
62
75
|
pkg.need_tar = false
|
63
76
|
end
|
@@ -79,7 +92,7 @@ else
|
|
79
92
|
# ext.cross_platform = 'i386-mswin32'
|
80
93
|
end
|
81
94
|
|
82
|
-
|
95
|
+
Gem::PackageTask.new(spec) do |pkg|
|
83
96
|
pkg.need_zip = false
|
84
97
|
pkg.need_tar = false
|
85
98
|
end
|
data/ext/chipmunk/extconf.rb
CHANGED
@@ -2,41 +2,84 @@ require 'mkmf'
|
|
2
2
|
|
3
3
|
RbConfig::MAKEFILE_CONFIG['CC'] = ENV['CC'] if ENV['CC']
|
4
4
|
|
5
|
+
if ARGV.member?('--help') || ARGV.member?('-?')
|
6
|
+
puts "ruby extconf.rb:"
|
7
|
+
puts "Options for the Ruby bindings to Chipmunk: "
|
8
|
+
puts "--disable-vendor Disables vendoring Chipmunk."
|
9
|
+
puts "--enable-vendor Enables vendoring Chipmunk."
|
10
|
+
puts "--enable-macosx Enables compiling for OS-X."
|
11
|
+
puts "--enable-64 Enables compiling to 64 bits targets."
|
12
|
+
puts
|
13
|
+
exit
|
14
|
+
end
|
15
|
+
|
16
|
+
p "pwd", Dir.pwd
|
17
|
+
|
5
18
|
dir_config('chipmunk')
|
6
19
|
|
20
|
+
VENDORED_CHIPMUNK = 'chipmunk-5.3.4'
|
21
|
+
VENDORED_SRC_DIR = File.join($srcdir, 'vendor', VENDORED_CHIPMUNK, 'src')
|
22
|
+
VENDORED_SRC_DIR2 = File.join($srcdir, 'vendor', VENDORED_CHIPMUNK, 'src',
|
23
|
+
'constraints')
|
24
|
+
VENDORED_INCLUDE_DIR = File.join($srcdir, 'vendor', VENDORED_CHIPMUNK, 'include',
|
25
|
+
'chipmunk')
|
26
|
+
|
27
|
+
|
7
28
|
MINGW = '/usr/i586-mingw32msvc'
|
8
29
|
CHIPMUNK_HEADER = 'chipmunk.h'
|
9
30
|
CHIPMUNK_NAME = 'chipmunk'
|
10
31
|
CHIPMUNK_FUNCTION = 'cpMomentForPoly'
|
11
|
-
CHIPMUNK_INCLUDE = ['/usr/include',
|
32
|
+
CHIPMUNK_INCLUDE = [ '/usr/include',
|
12
33
|
File.join(MINGW, 'include'),
|
13
34
|
File.join(MINGW, 'include', 'chipmunk'),
|
14
35
|
'/usr/local/include',
|
15
36
|
'/usr/include/chipmunk',
|
16
37
|
'/usr/local/include/chipmunk'
|
17
38
|
]
|
18
|
-
CHIPMUNK_LIBDIR = ['/usr/lib',
|
19
|
-
File.join(MINGW, 'lib'),
|
20
|
-
'/usr/local/lib']
|
39
|
+
CHIPMUNK_LIBDIR = ['/usr/lib', File.join(MINGW, 'lib'), '/usr/local/lib']
|
21
40
|
|
22
|
-
|
23
|
-
|
24
|
-
|
41
|
+
# This is a bit of a trick to cleanly vendor the chipmunk C library.
|
42
|
+
sources = Dir.glob(File.join($srcdir, 'rb_*.c')).to_a
|
43
|
+
# normally, we need the rb_xxx files...
|
25
44
|
|
26
45
|
|
27
|
-
|
28
|
-
|
46
|
+
if enable_config("vendor", true)
|
47
|
+
unless find_header(CHIPMUNK_HEADER, VENDORED_INCLUDE_DIR)
|
48
|
+
raise "Vendored chipmunk #{VENDORED_INCLUDE_DIR} not found!"
|
49
|
+
end
|
50
|
+
CHIPMUNK_INCLUDE .unshift(VENDORED_INCLUDE_DIR)
|
51
|
+
sources += Dir.glob(File.join(VENDORED_SRC_DIR, '*.c'))
|
52
|
+
sources += Dir.glob(File.join(VENDORED_SRC_DIR2, '*.c'))
|
53
|
+
# when vendoring, also include the needed c files files...
|
54
|
+
|
55
|
+
|
56
|
+
else
|
57
|
+
unless find_header(CHIPMUNK_HEADER, *CHIPMUNK_INCLUDE)
|
58
|
+
raise "Could not find Chipmunk headers!"
|
59
|
+
end
|
60
|
+
|
61
|
+
unless find_library(CHIPMUNK_NAME, CHIPMUNK_FUNCTION, *CHIPMUNK_LIBDIR)
|
62
|
+
raise "Could not link to Chipmunk library!"
|
63
|
+
end
|
29
64
|
end
|
30
65
|
|
66
|
+
# this is the core of the trick, it overrides create_makefile's looking for
|
67
|
+
# based on the c files
|
68
|
+
$objs = sources.map { |s| s.gsub(/.c\Z/,'.o') }
|
69
|
+
|
70
|
+
|
31
71
|
=begin
|
32
72
|
have_header('chipmunk.h', include_dirs)
|
33
73
|
=end
|
34
|
-
|
35
|
-
if ARGV[0] == "macosx"
|
74
|
+
if enable_config("macosx", false)
|
36
75
|
$CFLAGS += ' -arch ppc -arch i386 -arch x86_64'
|
37
76
|
$LDFLAGS += ' -arch x86_64 -arch i386 -arch ppc'
|
38
77
|
end
|
78
|
+
|
79
|
+
if enable_config("64", false)
|
80
|
+
$CFLAGS += ' -m64'
|
81
|
+
end
|
39
82
|
|
40
|
-
$CFLAGS += ' -std=gnu99 -ffast-math'
|
83
|
+
$CFLAGS += ' -std=gnu99 -ffast-math -DNDEBUG '
|
41
84
|
create_makefile('chipmunk')
|
42
85
|
|
data/ext/chipmunk/rb_chipmunk.c
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
/* Copyright (c) 2007 Scott Lembcke
|
2
|
-
*
|
2
|
+
*
|
3
3
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
4
|
* of this software and associated documentation files (the "Software"), to deal
|
5
5
|
* in the Software without restriction, including without limitation the rights
|
6
6
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
7
7
|
* copies of the Software, and to permit persons to whom the Software is
|
8
8
|
* furnished to do so, subject to the following conditions:
|
9
|
-
*
|
9
|
+
*
|
10
10
|
* The above copyright notice and this permission notice shall be included in
|
11
11
|
* all copies or substantial portions of the Software.
|
12
|
-
*
|
12
|
+
*
|
13
13
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14
14
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15
15
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
@@ -32,65 +32,62 @@ ID id_parent;
|
|
32
32
|
|
33
33
|
static VALUE
|
34
34
|
rb_get_cp_bias_coef(VALUE self) {
|
35
|
-
|
35
|
+
return rb_float_new(cp_bias_coef);
|
36
36
|
}
|
37
37
|
|
38
38
|
static VALUE
|
39
39
|
rb_set_cp_bias_coef(VALUE self, VALUE num) {
|
40
|
-
|
41
|
-
|
40
|
+
cp_bias_coef = NUM2DBL(num);
|
41
|
+
return num;
|
42
42
|
}
|
43
43
|
|
44
44
|
static VALUE
|
45
45
|
rb_get_cp_collision_slop(VALUE self) {
|
46
|
-
|
46
|
+
return rb_float_new(cp_collision_slop);
|
47
47
|
}
|
48
48
|
|
49
49
|
static VALUE
|
50
50
|
rb_set_cp_collision_slop(VALUE self, VALUE num) {
|
51
|
-
|
52
|
-
|
51
|
+
cp_collision_slop = NUM2DBL(num);
|
52
|
+
return num;
|
53
53
|
}
|
54
54
|
|
55
55
|
static VALUE
|
56
56
|
rb_set_cp_contact_persistence(VALUE self, VALUE num) {
|
57
|
-
cp_contact_persistence =
|
57
|
+
cp_contact_persistence = NUM2UINT(num);
|
58
58
|
return num;
|
59
59
|
}
|
60
60
|
|
61
61
|
static VALUE
|
62
|
-
rb_get_cp_contact_persistence(VALUE self) {
|
63
|
-
return
|
62
|
+
rb_get_cp_contact_persistence(VALUE self) {
|
63
|
+
return UINT2NUM(cp_contact_persistence);
|
64
64
|
}
|
65
65
|
|
66
66
|
|
67
67
|
static VALUE
|
68
|
-
rb_cpMomentForCircle(VALUE self, VALUE m, VALUE r1, VALUE r2, VALUE offset)
|
69
|
-
|
70
|
-
|
71
|
-
return rb_float_new(i);
|
68
|
+
rb_cpMomentForCircle(VALUE self, VALUE m, VALUE r1, VALUE r2, VALUE offset) {
|
69
|
+
cpFloat i = cpMomentForCircle(NUM2DBL(m), NUM2DBL(r1), NUM2DBL(r2), *VGET(offset));
|
70
|
+
return rb_float_new(i);
|
72
71
|
}
|
73
72
|
|
74
73
|
static VALUE
|
75
|
-
rb_cpMomentForSegment(VALUE self, VALUE m, VALUE v1, VALUE v2)
|
76
|
-
{
|
74
|
+
rb_cpMomentForSegment(VALUE self, VALUE m, VALUE v1, VALUE v2) {
|
77
75
|
cpFloat i = cpMomentForSegment(NUM2DBL(m), *VGET(v1), *VGET(v2));
|
78
76
|
return rb_float_new(i);
|
79
77
|
}
|
80
78
|
|
81
79
|
static VALUE
|
82
|
-
rb_cpMomentForPoly(VALUE self, VALUE m, VALUE arr, VALUE offset)
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
return rb_float_new(inertia);
|
80
|
+
rb_cpMomentForPoly(VALUE self, VALUE m, VALUE arr, VALUE offset) {
|
81
|
+
Check_Type(arr, T_ARRAY);
|
82
|
+
long numVerts = RARRAY_LEN(arr);
|
83
|
+
VALUE *ary_ptr = RARRAY_PTR(arr);
|
84
|
+
cpVect verts[numVerts];
|
85
|
+
|
86
|
+
for(long i = 0; i < numVerts; i++)
|
87
|
+
verts[i] = *VGET(ary_ptr[i]);
|
88
|
+
|
89
|
+
cpFloat inertia = cpMomentForPoly(NUM2DBL(m), numVerts, verts, *VGET(offset));
|
90
|
+
return rb_float_new(inertia);
|
94
91
|
}
|
95
92
|
|
96
93
|
static VALUE
|
@@ -100,31 +97,28 @@ rb_cpMomentForBox(VALUE self, VALUE m, VALUE w, VALUE h) {
|
|
100
97
|
}
|
101
98
|
|
102
99
|
static VALUE
|
103
|
-
rb_cpAreaForCircle(VALUE self, VALUE r1, VALUE r2)
|
104
|
-
{
|
100
|
+
rb_cpAreaForCircle(VALUE self, VALUE r1, VALUE r2) {
|
105
101
|
cpFloat i = cpAreaForCircle(NUM2DBL(r1), NUM2DBL(r2));
|
106
102
|
return rb_float_new(i);
|
107
103
|
}
|
108
104
|
|
109
105
|
static VALUE
|
110
|
-
rb_cpAreaForSegment(VALUE self, VALUE v1, VALUE v2, VALUE r)
|
111
|
-
{
|
106
|
+
rb_cpAreaForSegment(VALUE self, VALUE v1, VALUE v2, VALUE r) {
|
112
107
|
cpFloat i = cpAreaForSegment(*VGET(v1), *VGET(v2), NUM2DBL(r));
|
113
108
|
return rb_float_new(i);
|
114
109
|
}
|
115
110
|
|
116
111
|
static VALUE
|
117
|
-
rb_cpAreaForPoly(VALUE self, VALUE arr)
|
118
|
-
{
|
112
|
+
rb_cpAreaForPoly(VALUE self, VALUE arr) {
|
119
113
|
Check_Type(arr, T_ARRAY);
|
120
|
-
|
114
|
+
long numVerts = RARRAY_LEN(arr);
|
121
115
|
VALUE *ary_ptr = RARRAY_PTR(arr);
|
122
116
|
cpVect verts[numVerts];
|
123
|
-
|
124
|
-
for(
|
117
|
+
|
118
|
+
for(long i = 0; i < numVerts; i++)
|
125
119
|
verts[i] = *VGET(ary_ptr[i]);
|
126
|
-
|
127
|
-
cpFloat area
|
120
|
+
|
121
|
+
cpFloat area = cpAreaForPoly(numVerts, verts);
|
128
122
|
return rb_float_new(area);
|
129
123
|
}
|
130
124
|
|
@@ -135,49 +129,50 @@ rb_cpAreaForBox(VALUE self, VALUE w, VALUE h) {
|
|
135
129
|
}
|
136
130
|
|
137
131
|
|
138
|
-
static VALUE
|
132
|
+
static VALUE
|
133
|
+
rb_cpfclamp(VALUE self, VALUE f, VALUE min, VALUE max) {
|
139
134
|
cpFloat result = cpfclamp(NUM2DBL(f), NUM2DBL(min), NUM2DBL(max));
|
140
135
|
return rb_float_new(result);
|
141
|
-
}
|
136
|
+
}
|
142
137
|
|
143
|
-
static VALUE
|
138
|
+
static VALUE
|
139
|
+
rb_cpflerp(VALUE self, VALUE f1, VALUE f2, VALUE t) {
|
144
140
|
cpFloat result = cpflerp(NUM2DBL(f1), NUM2DBL(f2), NUM2DBL(t));
|
145
141
|
return rb_float_new(result);
|
146
|
-
}
|
142
|
+
}
|
147
143
|
|
148
|
-
static VALUE
|
144
|
+
static VALUE
|
145
|
+
rb_cpflerpconst(VALUE self, VALUE f1, VALUE f2, VALUE d) {
|
149
146
|
cpFloat result = cpflerpconst(NUM2DBL(f1), NUM2DBL(f2), NUM2DBL(d));
|
150
147
|
return rb_float_new(result);
|
151
|
-
}
|
148
|
+
}
|
152
149
|
|
153
150
|
static VALUE
|
154
|
-
rb_cpCentroidForPoly(VALUE self, VALUE arr)
|
155
|
-
{
|
151
|
+
rb_cpCentroidForPoly(VALUE self, VALUE arr) {
|
156
152
|
Check_Type(arr, T_ARRAY);
|
157
|
-
|
153
|
+
long numVerts = RARRAY_LEN(arr);
|
158
154
|
VALUE *ary_ptr = RARRAY_PTR(arr);
|
159
155
|
cpVect verts[numVerts];
|
160
|
-
|
161
|
-
for(
|
156
|
+
|
157
|
+
for(long i = 0; i < numVerts; i++)
|
162
158
|
verts[i] = *VGET(ary_ptr[i]);
|
163
|
-
|
159
|
+
|
164
160
|
return VNEW(cpCentroidForPoly(numVerts, verts));
|
165
161
|
}
|
166
162
|
|
167
163
|
static VALUE
|
168
|
-
rb_cpRecenterPoly(VALUE self, VALUE arr)
|
169
|
-
{
|
164
|
+
rb_cpRecenterPoly(VALUE self, VALUE arr) {
|
170
165
|
Check_Type(arr, T_ARRAY);
|
171
|
-
|
166
|
+
long numVerts = RARRAY_LEN(arr);
|
172
167
|
VALUE *ary_ptr = RARRAY_PTR(arr);
|
173
168
|
cpVect verts[numVerts];
|
174
|
-
|
175
|
-
for(
|
169
|
+
|
170
|
+
for(long i = 0; i < numVerts; i++)
|
176
171
|
verts[i] = *VGET(ary_ptr[i]);
|
177
|
-
|
172
|
+
|
178
173
|
cpRecenterPoly(numVerts, verts);
|
179
|
-
|
180
|
-
for(
|
174
|
+
|
175
|
+
for(long i = 0; i < numVerts; i++)
|
181
176
|
ary_ptr[i] = VNEW(verts[i]);
|
182
177
|
return arr;
|
183
178
|
}
|
@@ -186,65 +181,64 @@ rb_cpRecenterPoly(VALUE self, VALUE arr)
|
|
186
181
|
|
187
182
|
|
188
183
|
void
|
189
|
-
Init_chipmunk(void)
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
rb_define_module_function(m_Chipmunk, "collision_slop=", rb_set_cp_collision_slop, 1);
|
184
|
+
Init_chipmunk(void) {
|
185
|
+
id_parent = rb_intern("parent");
|
186
|
+
|
187
|
+
cpInitChipmunk();
|
188
|
+
|
189
|
+
|
190
|
+
|
191
|
+
m_Chipmunk = rb_define_module("CP");
|
192
|
+
rb_define_module_function(m_Chipmunk, "bias_coef", rb_get_cp_bias_coef, 0);
|
193
|
+
rb_define_module_function(m_Chipmunk, "bias_coef=", rb_set_cp_bias_coef, 1);
|
194
|
+
rb_define_module_function(m_Chipmunk, "collision_slop", rb_get_cp_collision_slop, 0);
|
195
|
+
rb_define_module_function(m_Chipmunk, "collision_slop=", rb_set_cp_collision_slop, 1);
|
202
196
|
rb_define_module_function(m_Chipmunk, "contact_persistence", rb_get_cp_contact_persistence, 0);
|
203
197
|
rb_define_module_function(m_Chipmunk, "contact_persistence=", rb_set_cp_contact_persistence, 1);
|
204
|
-
|
205
|
-
|
206
|
-
|
198
|
+
|
199
|
+
|
200
|
+
|
207
201
|
rb_define_module_function(m_Chipmunk, "clamp", rb_cpfclamp, 3);
|
208
202
|
rb_define_module_function(m_Chipmunk, "flerp", rb_cpflerp, 3);
|
209
203
|
rb_define_module_function(m_Chipmunk, "flerpconst", rb_cpflerpconst, 3);
|
210
|
-
|
211
|
-
|
212
|
-
|
204
|
+
|
205
|
+
rb_define_module_function(m_Chipmunk, "moment_for_circle", rb_cpMomentForCircle, 4);
|
206
|
+
rb_define_module_function(m_Chipmunk, "moment_for_poly", rb_cpMomentForPoly, 3);
|
213
207
|
rb_define_module_function(m_Chipmunk, "moment_for_segment", rb_cpMomentForSegment, 3);
|
214
208
|
rb_define_module_function(m_Chipmunk, "moment_for_box", rb_cpMomentForBox, 3);
|
215
|
-
|
209
|
+
|
216
210
|
rb_define_module_function(m_Chipmunk, "circle_moment", rb_cpMomentForCircle, 4);
|
217
211
|
rb_define_module_function(m_Chipmunk, "poly_moment", rb_cpMomentForPoly, 3);
|
218
212
|
rb_define_module_function(m_Chipmunk, "segment_moment", rb_cpMomentForSegment, 3);
|
219
213
|
rb_define_module_function(m_Chipmunk, "box_moment", rb_cpMomentForBox, 3);
|
220
|
-
|
221
|
-
|
214
|
+
|
215
|
+
|
222
216
|
rb_define_module_function(m_Chipmunk, "area_for_circle", rb_cpAreaForCircle, 2);
|
223
217
|
rb_define_module_function(m_Chipmunk, "area_for_poly", rb_cpAreaForPoly, 1);
|
224
218
|
rb_define_module_function(m_Chipmunk, "centroid_for_poly",
|
225
|
-
|
219
|
+
rb_cpCentroidForPoly, 1);
|
226
220
|
rb_define_module_function(m_Chipmunk, "recenter_poly",
|
227
|
-
|
228
|
-
|
221
|
+
rb_cpRecenterPoly, 1);
|
222
|
+
|
229
223
|
rb_define_module_function(m_Chipmunk, "area_for_segment", rb_cpAreaForSegment, 3);
|
230
224
|
rb_define_module_function(m_Chipmunk, "area_for_box", rb_cpAreaForBox, 2);
|
231
|
-
|
225
|
+
|
232
226
|
rb_define_module_function(m_Chipmunk, "circle_area", rb_cpAreaForCircle, 2);
|
233
227
|
rb_define_module_function(m_Chipmunk, "poly_area", rb_cpAreaForPoly, 1);
|
234
228
|
rb_define_module_function(m_Chipmunk, "segment_area", rb_cpAreaForSegment, 3);
|
235
229
|
rb_define_module_function(m_Chipmunk, "box_area", rb_cpAreaForBox, 2);
|
236
|
-
|
230
|
+
|
237
231
|
rb_define_const(m_Chipmunk, "ALL_LAYERS", UINT2NUM((unsigned int)CP_ALL_LAYERS));
|
238
|
-
rb_define_const(m_Chipmunk, "NO_GROUP"
|
232
|
+
rb_define_const(m_Chipmunk, "NO_GROUP", UINT2NUM(CP_NO_GROUP));
|
239
233
|
|
240
234
|
rb_eval_string("Float::INFINITY = 1.0/0.0 unless Float.const_defined? :INFINITY");
|
241
|
-
rb_eval_string("CP::INFINITY = 1.0/0.0 unless CP.const_defined? :INFINITY");
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
Init_cpArbiter();
|
235
|
+
rb_eval_string("CP::INFINITY = 1.0/0.0 unless CP.const_defined? :INFINITY");
|
236
|
+
|
237
|
+
Init_cpVect();
|
238
|
+
Init_cpBB();
|
239
|
+
Init_cpBody();
|
240
|
+
Init_cpShape();
|
241
|
+
Init_cpConstraint();
|
242
|
+
Init_cpSpace();
|
243
|
+
Init_cpArbiter();
|
250
244
|
}
|