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 
     | 
    
         
             
            }
         
     |