box2d-bindings 0.1.0 → 0.1.1
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.
- checksums.yaml +4 -4
- data/ChangeLog +6 -0
- data/README.md +1 -1
- data/lib/box2d.rb +0 -2
- data/lib/box2d_base.rb +2 -17
- data/lib/box2d_collision.rb +13 -6
- data/lib/box2d_helper.rb +1 -1
- data/lib/box2d_id.rb +25 -25
- data/lib/box2d_main.rb +11 -3
- data/lib/box2d_types.rb +114 -76
- data/lib/libbox2d.aarch64.so +0 -0
- data/lib/libbox2d.arm64.dylib +0 -0
- data/lib/libbox2d.dll +0 -0
- data/lib/libbox2d.x86_64.dylib +0 -0
- data/lib/libbox2d.x86_64.so +0 -0
- metadata +2 -3
- data/lib/box2d_collision_inline.rb +0 -47
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: b9ce43f8725a8347229f668291548f0674a2e76a8bfc6d2253a0a625a67c16d2
         | 
| 4 | 
            +
              data.tar.gz: 824ae8d8615bd34af4179602c5eb2d5fd5412a94f79ee018fd3575d44ee402c3
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 7936366ac024d6bbdd1cfccbb2ef0d116ba93c292ec5a710677bd7585d463ec3c64bb8f7d284c9bd6a3b96e156355c14afafc5888794b835f8e385c4652220d4
         | 
| 7 | 
            +
              data.tar.gz: 8e6fb8e321f401ffd46fb8c27739df7dd976af8ed29403b7372e6d6eb7fa7d418a3f56021e5306d8688dbd41f33245b6e943386a0101abdce2afa35d2bf51673
         | 
    
        data/ChangeLog
    CHANGED
    
    | @@ -1,3 +1,9 @@ | |
| 1 | 
            +
            2025-02-01  vaiorabbit  <http://twitter.com/vaiorabbit>
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            	* https://github.com/erincatto/box2d/commit/28adacf82377d4113f2ed00586141463244b9d10
         | 
| 4 | 
            +
            	* Updated the helper function to use the latest version of Box2D.
         | 
| 5 | 
            +
            	* Added sample_compound.rb
         | 
| 6 | 
            +
             | 
| 1 7 | 
             
            2024-12-29  vaiorabbit  <http://twitter.com/vaiorabbit>
         | 
| 2 8 |  | 
| 3 9 | 
             
            	* Added sample_softbody.rb
         | 
    
        data/README.md
    CHANGED
    
    
    
        data/lib/box2d.rb
    CHANGED
    
    | @@ -9,7 +9,6 @@ require_relative 'box2d_math_inline_functions.rb' | |
| 9 9 | 
             
            require_relative 'box2d_id.rb'
         | 
| 10 10 | 
             
            require_relative 'box2d_id_inline.rb'
         | 
| 11 11 | 
             
            require_relative 'box2d_collision.rb'
         | 
| 12 | 
            -
            require_relative 'box2d_collision_inline.rb'
         | 
| 13 12 | 
             
            require_relative 'box2d_types.rb'
         | 
| 14 13 | 
             
            require_relative 'box2d_main.rb'
         | 
| 15 14 | 
             
            require_relative 'box2d_helper.rb'
         | 
| @@ -42,7 +41,6 @@ module Box2D | |
| 42 41 | 
             
                setup_id_symbols(method_naming: method_naming)
         | 
| 43 42 | 
             
                setup_id_inline_symbols(method_naming: method_naming)
         | 
| 44 43 | 
             
                setup_collision_symbols(method_naming: method_naming)
         | 
| 45 | 
            -
                setup_collision_inline_symbols(method_naming: method_naming)
         | 
| 46 44 | 
             
                setup_types_symbols(method_naming: method_naming)
         | 
| 47 45 | 
             
                setup_main_symbols(method_naming: method_naming)
         | 
| 48 46 | 
             
              end
         | 
    
        data/lib/box2d_base.rb
    CHANGED
    
    | @@ -44,19 +44,6 @@ module Box2D | |
| 44 44 | 
             
                end
         | 
| 45 45 | 
             
              end
         | 
| 46 46 |  | 
| 47 | 
            -
              class Timer < FFI::Struct
         | 
| 48 | 
            -
                layout(
         | 
| 49 | 
            -
                  :start, :long_long,
         | 
| 50 | 
            -
                )
         | 
| 51 | 
            -
                def start = self[:start]
         | 
| 52 | 
            -
                def start=(v) self[:start] = v end
         | 
| 53 | 
            -
                def self.create_as(_start_)
         | 
| 54 | 
            -
                  instance = Timer.new
         | 
| 55 | 
            -
                  instance[:start] = _start_
         | 
| 56 | 
            -
                  instance
         | 
| 57 | 
            -
                end
         | 
| 58 | 
            -
              end
         | 
| 59 | 
            -
             | 
| 60 47 |  | 
| 61 48 | 
             
              # Function
         | 
| 62 49 |  | 
| @@ -67,11 +54,9 @@ module Box2D | |
| 67 54 | 
             
                  [:SetAssertFcn, :b2SetAssertFcn, [:pointer], :void],
         | 
| 68 55 | 
             
                  [:InternalAssertFcn, :b2InternalAssertFcn, [:pointer, :pointer, :int], :int],
         | 
| 69 56 | 
             
                  [:GetVersion, :b2GetVersion, [], Version.by_value],
         | 
| 70 | 
            -
                  [: | 
| 71 | 
            -
                  [: | 
| 72 | 
            -
                  [:GetMilliseconds, :b2GetMilliseconds, [:pointer], :float],
         | 
| 57 | 
            +
                  [:GetTicks, :b2GetTicks, [], :ulong_long],
         | 
| 58 | 
            +
                  [:GetMilliseconds, :b2GetMilliseconds, [:ulong_long], :float],
         | 
| 73 59 | 
             
                  [:GetMillisecondsAndReset, :b2GetMillisecondsAndReset, [:pointer], :float],
         | 
| 74 | 
            -
                  [:SleepMilliseconds, :b2SleepMilliseconds, [:int], :void],
         | 
| 75 60 | 
             
                  [:Yield, :b2Yield, [], :void],
         | 
| 76 61 | 
             
                  [:Hash, :b2Hash, [:uint, :pointer, :int], :uint],
         | 
| 77 62 | 
             
                ]
         | 
    
        data/lib/box2d_collision.rb
    CHANGED
    
    | @@ -654,20 +654,24 @@ module Box2D | |
| 654 654 |  | 
| 655 655 | 
             
              class Manifold < FFI::Struct
         | 
| 656 656 | 
             
                layout(
         | 
| 657 | 
            -
                  :points, [ManifoldPoint, 2],
         | 
| 658 657 | 
             
                  :normal, Vec2,
         | 
| 658 | 
            +
                  :rollingImpulse, :float,
         | 
| 659 | 
            +
                  :points, [ManifoldPoint, 2],
         | 
| 659 660 | 
             
                  :pointCount, :int,
         | 
| 660 661 | 
             
                )
         | 
| 661 | 
            -
                def points = self[:points]
         | 
| 662 | 
            -
                def points=(v) self[:points] = v end
         | 
| 663 662 | 
             
                def normal = self[:normal]
         | 
| 664 663 | 
             
                def normal=(v) self[:normal] = v end
         | 
| 664 | 
            +
                def rollingImpulse = self[:rollingImpulse]
         | 
| 665 | 
            +
                def rollingImpulse=(v) self[:rollingImpulse] = v end
         | 
| 666 | 
            +
                def points = self[:points]
         | 
| 667 | 
            +
                def points=(v) self[:points] = v end
         | 
| 665 668 | 
             
                def pointCount = self[:pointCount]
         | 
| 666 669 | 
             
                def pointCount=(v) self[:pointCount] = v end
         | 
| 667 | 
            -
                def self.create_as( | 
| 670 | 
            +
                def self.create_as(_normal_, _rollingImpulse_, _points_, _pointCount_)
         | 
| 668 671 | 
             
                  instance = Manifold.new
         | 
| 669 | 
            -
                  instance[:points] = _points_
         | 
| 670 672 | 
             
                  instance[:normal] = _normal_
         | 
| 673 | 
            +
                  instance[:rollingImpulse] = _rollingImpulse_
         | 
| 674 | 
            +
                  instance[:points] = _points_
         | 
| 671 675 | 
             
                  instance[:pointCount] = _pointCount_
         | 
| 672 676 | 
             
                  instance
         | 
| 673 677 | 
             
                end
         | 
| @@ -805,12 +809,15 @@ module Box2D | |
| 805 809 | 
             
                  [:DynamicTree_Query, :b2DynamicTree_Query, [:pointer, AABB.by_value, :ulong_long, :pointer, :pointer], TreeStats.by_value],
         | 
| 806 810 | 
             
                  [:DynamicTree_RayCast, :b2DynamicTree_RayCast, [:pointer, :pointer, :ulong_long, :pointer, :pointer], TreeStats.by_value],
         | 
| 807 811 | 
             
                  [:DynamicTree_ShapeCast, :b2DynamicTree_ShapeCast, [:pointer, :pointer, :ulong_long, :pointer, :pointer], TreeStats.by_value],
         | 
| 808 | 
            -
                  [:DynamicTree_Validate, :b2DynamicTree_Validate, [:pointer], :void],
         | 
| 809 812 | 
             
                  [:DynamicTree_GetHeight, :b2DynamicTree_GetHeight, [:pointer], :int],
         | 
| 810 813 | 
             
                  [:DynamicTree_GetAreaRatio, :b2DynamicTree_GetAreaRatio, [:pointer], :float],
         | 
| 811 814 | 
             
                  [:DynamicTree_GetProxyCount, :b2DynamicTree_GetProxyCount, [:pointer], :int],
         | 
| 812 815 | 
             
                  [:DynamicTree_Rebuild, :b2DynamicTree_Rebuild, [:pointer, :bool], :int],
         | 
| 813 816 | 
             
                  [:DynamicTree_GetByteCount, :b2DynamicTree_GetByteCount, [:pointer], :int],
         | 
| 817 | 
            +
                  [:DynamicTree_GetUserData, :b2DynamicTree_GetUserData, [:pointer, :int], :int],
         | 
| 818 | 
            +
                  [:DynamicTree_GetAABB, :b2DynamicTree_GetAABB, [:pointer, :int], AABB.by_value],
         | 
| 819 | 
            +
                  [:DynamicTree_Validate, :b2DynamicTree_Validate, [:pointer], :void],
         | 
| 820 | 
            +
                  [:DynamicTree_ValidateNoEnlarged, :b2DynamicTree_ValidateNoEnlarged, [:pointer], :void],
         | 
| 814 821 | 
             
                ]
         | 
| 815 822 | 
             
                entries.each do |entry|
         | 
| 816 823 | 
             
                  api_name = if method_naming == :snake_case
         | 
    
        data/lib/box2d_helper.rb
    CHANGED
    
    
    
        data/lib/box2d_id.rb
    CHANGED
    
    | @@ -22,16 +22,16 @@ module Box2D | |
| 22 22 | 
             
              class WorldId < FFI::Struct
         | 
| 23 23 | 
             
                layout(
         | 
| 24 24 | 
             
                  :index1, :ushort,
         | 
| 25 | 
            -
                  : | 
| 25 | 
            +
                  :generation, :ushort,
         | 
| 26 26 | 
             
                )
         | 
| 27 27 | 
             
                def index1 = self[:index1]
         | 
| 28 28 | 
             
                def index1=(v) self[:index1] = v end
         | 
| 29 | 
            -
                def  | 
| 30 | 
            -
                def  | 
| 31 | 
            -
                def self.create_as(_index1_,  | 
| 29 | 
            +
                def generation = self[:generation]
         | 
| 30 | 
            +
                def generation=(v) self[:generation] = v end
         | 
| 31 | 
            +
                def self.create_as(_index1_, _generation_)
         | 
| 32 32 | 
             
                  instance = WorldId.new
         | 
| 33 33 | 
             
                  instance[:index1] = _index1_
         | 
| 34 | 
            -
                  instance[: | 
| 34 | 
            +
                  instance[:generation] = _generation_
         | 
| 35 35 | 
             
                  instance
         | 
| 36 36 | 
             
                end
         | 
| 37 37 | 
             
              end
         | 
| @@ -40,19 +40,19 @@ module Box2D | |
| 40 40 | 
             
                layout(
         | 
| 41 41 | 
             
                  :index1, :int,
         | 
| 42 42 | 
             
                  :world0, :ushort,
         | 
| 43 | 
            -
                  : | 
| 43 | 
            +
                  :generation, :ushort,
         | 
| 44 44 | 
             
                )
         | 
| 45 45 | 
             
                def index1 = self[:index1]
         | 
| 46 46 | 
             
                def index1=(v) self[:index1] = v end
         | 
| 47 47 | 
             
                def world0 = self[:world0]
         | 
| 48 48 | 
             
                def world0=(v) self[:world0] = v end
         | 
| 49 | 
            -
                def  | 
| 50 | 
            -
                def  | 
| 51 | 
            -
                def self.create_as(_index1_, _world0_,  | 
| 49 | 
            +
                def generation = self[:generation]
         | 
| 50 | 
            +
                def generation=(v) self[:generation] = v end
         | 
| 51 | 
            +
                def self.create_as(_index1_, _world0_, _generation_)
         | 
| 52 52 | 
             
                  instance = BodyId.new
         | 
| 53 53 | 
             
                  instance[:index1] = _index1_
         | 
| 54 54 | 
             
                  instance[:world0] = _world0_
         | 
| 55 | 
            -
                  instance[: | 
| 55 | 
            +
                  instance[:generation] = _generation_
         | 
| 56 56 | 
             
                  instance
         | 
| 57 57 | 
             
                end
         | 
| 58 58 | 
             
              end
         | 
| @@ -61,19 +61,19 @@ module Box2D | |
| 61 61 | 
             
                layout(
         | 
| 62 62 | 
             
                  :index1, :int,
         | 
| 63 63 | 
             
                  :world0, :ushort,
         | 
| 64 | 
            -
                  : | 
| 64 | 
            +
                  :generation, :ushort,
         | 
| 65 65 | 
             
                )
         | 
| 66 66 | 
             
                def index1 = self[:index1]
         | 
| 67 67 | 
             
                def index1=(v) self[:index1] = v end
         | 
| 68 68 | 
             
                def world0 = self[:world0]
         | 
| 69 69 | 
             
                def world0=(v) self[:world0] = v end
         | 
| 70 | 
            -
                def  | 
| 71 | 
            -
                def  | 
| 72 | 
            -
                def self.create_as(_index1_, _world0_,  | 
| 70 | 
            +
                def generation = self[:generation]
         | 
| 71 | 
            +
                def generation=(v) self[:generation] = v end
         | 
| 72 | 
            +
                def self.create_as(_index1_, _world0_, _generation_)
         | 
| 73 73 | 
             
                  instance = ShapeId.new
         | 
| 74 74 | 
             
                  instance[:index1] = _index1_
         | 
| 75 75 | 
             
                  instance[:world0] = _world0_
         | 
| 76 | 
            -
                  instance[: | 
| 76 | 
            +
                  instance[:generation] = _generation_
         | 
| 77 77 | 
             
                  instance
         | 
| 78 78 | 
             
                end
         | 
| 79 79 | 
             
              end
         | 
| @@ -82,19 +82,19 @@ module Box2D | |
| 82 82 | 
             
                layout(
         | 
| 83 83 | 
             
                  :index1, :int,
         | 
| 84 84 | 
             
                  :world0, :ushort,
         | 
| 85 | 
            -
                  : | 
| 85 | 
            +
                  :generation, :ushort,
         | 
| 86 86 | 
             
                )
         | 
| 87 87 | 
             
                def index1 = self[:index1]
         | 
| 88 88 | 
             
                def index1=(v) self[:index1] = v end
         | 
| 89 89 | 
             
                def world0 = self[:world0]
         | 
| 90 90 | 
             
                def world0=(v) self[:world0] = v end
         | 
| 91 | 
            -
                def  | 
| 92 | 
            -
                def  | 
| 93 | 
            -
                def self.create_as(_index1_, _world0_,  | 
| 91 | 
            +
                def generation = self[:generation]
         | 
| 92 | 
            +
                def generation=(v) self[:generation] = v end
         | 
| 93 | 
            +
                def self.create_as(_index1_, _world0_, _generation_)
         | 
| 94 94 | 
             
                  instance = ChainId.new
         | 
| 95 95 | 
             
                  instance[:index1] = _index1_
         | 
| 96 96 | 
             
                  instance[:world0] = _world0_
         | 
| 97 | 
            -
                  instance[: | 
| 97 | 
            +
                  instance[:generation] = _generation_
         | 
| 98 98 | 
             
                  instance
         | 
| 99 99 | 
             
                end
         | 
| 100 100 | 
             
              end
         | 
| @@ -103,19 +103,19 @@ module Box2D | |
| 103 103 | 
             
                layout(
         | 
| 104 104 | 
             
                  :index1, :int,
         | 
| 105 105 | 
             
                  :world0, :ushort,
         | 
| 106 | 
            -
                  : | 
| 106 | 
            +
                  :generation, :ushort,
         | 
| 107 107 | 
             
                )
         | 
| 108 108 | 
             
                def index1 = self[:index1]
         | 
| 109 109 | 
             
                def index1=(v) self[:index1] = v end
         | 
| 110 110 | 
             
                def world0 = self[:world0]
         | 
| 111 111 | 
             
                def world0=(v) self[:world0] = v end
         | 
| 112 | 
            -
                def  | 
| 113 | 
            -
                def  | 
| 114 | 
            -
                def self.create_as(_index1_, _world0_,  | 
| 112 | 
            +
                def generation = self[:generation]
         | 
| 113 | 
            +
                def generation=(v) self[:generation] = v end
         | 
| 114 | 
            +
                def self.create_as(_index1_, _world0_, _generation_)
         | 
| 115 115 | 
             
                  instance = JointId.new
         | 
| 116 116 | 
             
                  instance[:index1] = _index1_
         | 
| 117 117 | 
             
                  instance[:world0] = _world0_
         | 
| 118 | 
            -
                  instance[: | 
| 118 | 
            +
                  instance[:generation] = _generation_
         | 
| 119 119 | 
             
                  instance
         | 
| 120 120 | 
             
                end
         | 
| 121 121 | 
             
              end
         | 
    
        data/lib/box2d_main.rb
    CHANGED
    
    | @@ -66,6 +66,8 @@ module Box2D | |
| 66 66 | 
             
                  [:World_GetCounters, :b2World_GetCounters, [WorldId.by_value], Counters.by_value],
         | 
| 67 67 | 
             
                  [:World_SetUserData, :b2World_SetUserData, [WorldId.by_value, :pointer], :void],
         | 
| 68 68 | 
             
                  [:World_GetUserData, :b2World_GetUserData, [WorldId.by_value], :pointer],
         | 
| 69 | 
            +
                  [:World_SetFrictionCallback, :b2World_SetFrictionCallback, [WorldId.by_value, :pointer], :void],
         | 
| 70 | 
            +
                  [:World_SetRestitutionCallback, :b2World_SetRestitutionCallback, [WorldId.by_value, :pointer], :void],
         | 
| 69 71 | 
             
                  [:World_DumpMemoryStats, :b2World_DumpMemoryStats, [WorldId.by_value], :void],
         | 
| 70 72 | 
             
                  [:World_RebuildStaticTree, :b2World_RebuildStaticTree, [WorldId.by_value], :void],
         | 
| 71 73 | 
             
                  [:World_EnableSpeculative, :b2World_EnableSpeculative, [WorldId.by_value, :bool], :void],
         | 
| @@ -74,6 +76,8 @@ module Box2D | |
| 74 76 | 
             
                  [:Body_IsValid, :b2Body_IsValid, [BodyId.by_value], :bool],
         | 
| 75 77 | 
             
                  [:Body_GetType, :b2Body_GetType, [BodyId.by_value], :int],
         | 
| 76 78 | 
             
                  [:Body_SetType, :b2Body_SetType, [BodyId.by_value, :int], :void],
         | 
| 79 | 
            +
                  [:Body_SetName, :b2Body_SetName, [BodyId.by_value, :pointer], :void],
         | 
| 80 | 
            +
                  [:Body_GetName, :b2Body_GetName, [BodyId.by_value], :pointer],
         | 
| 77 81 | 
             
                  [:Body_SetUserData, :b2Body_SetUserData, [BodyId.by_value, :pointer], :void],
         | 
| 78 82 | 
             
                  [:Body_GetUserData, :b2Body_GetUserData, [BodyId.by_value], :pointer],
         | 
| 79 83 | 
             
                  [:Body_GetPosition, :b2Body_GetPosition, [BodyId.by_value], Vec2.by_value],
         | 
| @@ -88,6 +92,8 @@ module Box2D | |
| 88 92 | 
             
                  [:Body_GetAngularVelocity, :b2Body_GetAngularVelocity, [BodyId.by_value], :float],
         | 
| 89 93 | 
             
                  [:Body_SetLinearVelocity, :b2Body_SetLinearVelocity, [BodyId.by_value, Vec2.by_value], :void],
         | 
| 90 94 | 
             
                  [:Body_SetAngularVelocity, :b2Body_SetAngularVelocity, [BodyId.by_value, :float], :void],
         | 
| 95 | 
            +
                  [:Body_GetLocalPointVelocity, :b2Body_GetLocalPointVelocity, [BodyId.by_value, Vec2.by_value], Vec2.by_value],
         | 
| 96 | 
            +
                  [:Body_GetWorldPointVelocity, :b2Body_GetWorldPointVelocity, [BodyId.by_value, Vec2.by_value], Vec2.by_value],
         | 
| 91 97 | 
             
                  [:Body_ApplyForce, :b2Body_ApplyForce, [BodyId.by_value, Vec2.by_value, Vec2.by_value, :bool], :void],
         | 
| 92 98 | 
             
                  [:Body_ApplyForceToCenter, :b2Body_ApplyForceToCenter, [BodyId.by_value, Vec2.by_value, :bool], :void],
         | 
| 93 99 | 
             
                  [:Body_ApplyTorque, :b2Body_ApplyTorque, [BodyId.by_value, :float, :bool], :void],
         | 
| @@ -120,7 +126,6 @@ module Box2D | |
| 120 126 | 
             
                  [:Body_IsFixedRotation, :b2Body_IsFixedRotation, [BodyId.by_value], :bool],
         | 
| 121 127 | 
             
                  [:Body_SetBullet, :b2Body_SetBullet, [BodyId.by_value, :bool], :void],
         | 
| 122 128 | 
             
                  [:Body_IsBullet, :b2Body_IsBullet, [BodyId.by_value], :bool],
         | 
| 123 | 
            -
                  [:Body_EnableSensorEvents, :b2Body_EnableSensorEvents, [BodyId.by_value, :bool], :void],
         | 
| 124 129 | 
             
                  [:Body_EnableContactEvents, :b2Body_EnableContactEvents, [BodyId.by_value, :bool], :void],
         | 
| 125 130 | 
             
                  [:Body_EnableHitEvents, :b2Body_EnableHitEvents, [BodyId.by_value, :bool], :void],
         | 
| 126 131 | 
             
                  [:Body_GetWorld, :b2Body_GetWorld, [BodyId.by_value], WorldId.by_value],
         | 
| @@ -149,10 +154,10 @@ module Box2D | |
| 149 154 | 
             
                  [:Shape_GetFriction, :b2Shape_GetFriction, [ShapeId.by_value], :float],
         | 
| 150 155 | 
             
                  [:Shape_SetRestitution, :b2Shape_SetRestitution, [ShapeId.by_value, :float], :void],
         | 
| 151 156 | 
             
                  [:Shape_GetRestitution, :b2Shape_GetRestitution, [ShapeId.by_value], :float],
         | 
| 157 | 
            +
                  [:Shape_SetMaterial, :b2Shape_SetMaterial, [ShapeId.by_value, :int], :void],
         | 
| 158 | 
            +
                  [:Shape_GetMaterial, :b2Shape_GetMaterial, [ShapeId.by_value], :int],
         | 
| 152 159 | 
             
                  [:Shape_GetFilter, :b2Shape_GetFilter, [ShapeId.by_value], Filter.by_value],
         | 
| 153 160 | 
             
                  [:Shape_SetFilter, :b2Shape_SetFilter, [ShapeId.by_value, Filter.by_value], :void],
         | 
| 154 | 
            -
                  [:Shape_EnableSensorEvents, :b2Shape_EnableSensorEvents, [ShapeId.by_value, :bool], :void],
         | 
| 155 | 
            -
                  [:Shape_AreSensorEventsEnabled, :b2Shape_AreSensorEventsEnabled, [ShapeId.by_value], :bool],
         | 
| 156 161 | 
             
                  [:Shape_EnableContactEvents, :b2Shape_EnableContactEvents, [ShapeId.by_value, :bool], :void],
         | 
| 157 162 | 
             
                  [:Shape_AreContactEventsEnabled, :b2Shape_AreContactEventsEnabled, [ShapeId.by_value], :bool],
         | 
| 158 163 | 
             
                  [:Shape_EnablePreSolveEvents, :b2Shape_EnablePreSolveEvents, [ShapeId.by_value, :bool], :void],
         | 
| @@ -176,6 +181,7 @@ module Box2D | |
| 176 181 | 
             
                  [:Shape_GetSensorCapacity, :b2Shape_GetSensorCapacity, [ShapeId.by_value], :int],
         | 
| 177 182 | 
             
                  [:Shape_GetSensorOverlaps, :b2Shape_GetSensorOverlaps, [ShapeId.by_value, :pointer, :int], :int],
         | 
| 178 183 | 
             
                  [:Shape_GetAABB, :b2Shape_GetAABB, [ShapeId.by_value], AABB.by_value],
         | 
| 184 | 
            +
                  [:Shape_GetMassData, :b2Shape_GetMassData, [ShapeId.by_value], MassData.by_value],
         | 
| 179 185 | 
             
                  [:Shape_GetClosestPoint, :b2Shape_GetClosestPoint, [ShapeId.by_value, Vec2.by_value], Vec2.by_value],
         | 
| 180 186 | 
             
                  [:CreateChain, :b2CreateChain, [BodyId.by_value, :pointer], ChainId.by_value],
         | 
| 181 187 | 
             
                  [:DestroyChain, :b2DestroyChain, [ChainId.by_value], :void],
         | 
| @@ -186,6 +192,8 @@ module Box2D | |
| 186 192 | 
             
                  [:Chain_GetFriction, :b2Chain_GetFriction, [ChainId.by_value], :float],
         | 
| 187 193 | 
             
                  [:Chain_SetRestitution, :b2Chain_SetRestitution, [ChainId.by_value, :float], :void],
         | 
| 188 194 | 
             
                  [:Chain_GetRestitution, :b2Chain_GetRestitution, [ChainId.by_value], :float],
         | 
| 195 | 
            +
                  [:Chain_SetMaterial, :b2Chain_SetMaterial, [ChainId.by_value, :int], :void],
         | 
| 196 | 
            +
                  [:Chain_GetMaterial, :b2Chain_GetMaterial, [ChainId.by_value], :int],
         | 
| 189 197 | 
             
                  [:Chain_IsValid, :b2Chain_IsValid, [ChainId.by_value], :bool],
         | 
| 190 198 | 
             
                  [:DestroyJoint, :b2DestroyJoint, [JointId.by_value], :void],
         | 
| 191 199 | 
             
                  [:Joint_IsValid, :b2Joint_IsValid, [JointId.by_value], :bool],
         | 
    
        data/lib/box2d_types.rb
    CHANGED
    
    | @@ -14,11 +14,6 @@ module Box2D | |
| 14 14 |  | 
| 15 15 | 
             
              # Enum
         | 
| 16 16 |  | 
| 17 | 
            -
              MixingRule_mixAverage = 0
         | 
| 18 | 
            -
              MixingRule_mixGeometricMean = 1
         | 
| 19 | 
            -
              MixingRule_mixMultiply = 2
         | 
| 20 | 
            -
              MixingRule_mixMinimum = 3
         | 
| 21 | 
            -
              MixingRule_mixMaximum = 4
         | 
| 22 17 | 
             
              BodyType_staticBody = 0
         | 
| 23 18 | 
             
              BodyType_kinematicBody = 1
         | 
| 24 19 | 
             
              BodyType_dynamicBody = 2
         | 
| @@ -188,7 +183,8 @@ module Box2D | |
| 188 183 | 
             
              typedef :pointer, :b2TaskCallback
         | 
| 189 184 | 
             
              typedef :pointer, :b2EnqueueTaskCallback
         | 
| 190 185 | 
             
              typedef :pointer, :b2FinishTaskCallback
         | 
| 191 | 
            -
              typedef : | 
| 186 | 
            +
              typedef :pointer, :b2FrictionCallback
         | 
| 187 | 
            +
              typedef :pointer, :b2RestitutionCallback
         | 
| 192 188 | 
             
              typedef :int, :b2BodyType
         | 
| 193 189 | 
             
              typedef :int, :b2ShapeType
         | 
| 194 190 | 
             
              typedef :int, :b2JointType
         | 
| @@ -241,15 +237,15 @@ module Box2D | |
| 241 237 | 
             
                layout(
         | 
| 242 238 | 
             
                  :gravity, Vec2,
         | 
| 243 239 | 
             
                  :restitutionThreshold, :float,
         | 
| 244 | 
            -
                  :contactPushSpeed, :float,
         | 
| 245 240 | 
             
                  :hitEventThreshold, :float,
         | 
| 246 241 | 
             
                  :contactHertz, :float,
         | 
| 247 242 | 
             
                  :contactDampingRatio, :float,
         | 
| 243 | 
            +
                  :contactPushMaxSpeed, :float,
         | 
| 248 244 | 
             
                  :jointHertz, :float,
         | 
| 249 245 | 
             
                  :jointDampingRatio, :float,
         | 
| 250 246 | 
             
                  :maximumLinearSpeed, :float,
         | 
| 251 | 
            -
                  : | 
| 252 | 
            -
                  : | 
| 247 | 
            +
                  :frictionCallback, :pointer,
         | 
| 248 | 
            +
                  :restitutionCallback, :pointer,
         | 
| 253 249 | 
             
                  :enableSleep, :bool,
         | 
| 254 250 | 
             
                  :enableContinuous, :bool,
         | 
| 255 251 | 
             
                  :workerCount, :int,
         | 
| @@ -263,24 +259,24 @@ module Box2D | |
| 263 259 | 
             
                def gravity=(v) self[:gravity] = v end
         | 
| 264 260 | 
             
                def restitutionThreshold = self[:restitutionThreshold]
         | 
| 265 261 | 
             
                def restitutionThreshold=(v) self[:restitutionThreshold] = v end
         | 
| 266 | 
            -
                def contactPushSpeed = self[:contactPushSpeed]
         | 
| 267 | 
            -
                def contactPushSpeed=(v) self[:contactPushSpeed] = v end
         | 
| 268 262 | 
             
                def hitEventThreshold = self[:hitEventThreshold]
         | 
| 269 263 | 
             
                def hitEventThreshold=(v) self[:hitEventThreshold] = v end
         | 
| 270 264 | 
             
                def contactHertz = self[:contactHertz]
         | 
| 271 265 | 
             
                def contactHertz=(v) self[:contactHertz] = v end
         | 
| 272 266 | 
             
                def contactDampingRatio = self[:contactDampingRatio]
         | 
| 273 267 | 
             
                def contactDampingRatio=(v) self[:contactDampingRatio] = v end
         | 
| 268 | 
            +
                def contactPushMaxSpeed = self[:contactPushMaxSpeed]
         | 
| 269 | 
            +
                def contactPushMaxSpeed=(v) self[:contactPushMaxSpeed] = v end
         | 
| 274 270 | 
             
                def jointHertz = self[:jointHertz]
         | 
| 275 271 | 
             
                def jointHertz=(v) self[:jointHertz] = v end
         | 
| 276 272 | 
             
                def jointDampingRatio = self[:jointDampingRatio]
         | 
| 277 273 | 
             
                def jointDampingRatio=(v) self[:jointDampingRatio] = v end
         | 
| 278 274 | 
             
                def maximumLinearSpeed = self[:maximumLinearSpeed]
         | 
| 279 275 | 
             
                def maximumLinearSpeed=(v) self[:maximumLinearSpeed] = v end
         | 
| 280 | 
            -
                def  | 
| 281 | 
            -
                def  | 
| 282 | 
            -
                def  | 
| 283 | 
            -
                def  | 
| 276 | 
            +
                def frictionCallback = self[:frictionCallback]
         | 
| 277 | 
            +
                def frictionCallback=(v) self[:frictionCallback] = v end
         | 
| 278 | 
            +
                def restitutionCallback = self[:restitutionCallback]
         | 
| 279 | 
            +
                def restitutionCallback=(v) self[:restitutionCallback] = v end
         | 
| 284 280 | 
             
                def enableSleep = self[:enableSleep]
         | 
| 285 281 | 
             
                def enableSleep=(v) self[:enableSleep] = v end
         | 
| 286 282 | 
             
                def enableContinuous = self[:enableContinuous]
         | 
| @@ -297,19 +293,19 @@ module Box2D | |
| 297 293 | 
             
                def userData=(v) self[:userData] = v end
         | 
| 298 294 | 
             
                def internalValue = self[:internalValue]
         | 
| 299 295 | 
             
                def internalValue=(v) self[:internalValue] = v end
         | 
| 300 | 
            -
                def self.create_as(_gravity_, _restitutionThreshold_,  | 
| 296 | 
            +
                def self.create_as(_gravity_, _restitutionThreshold_, _hitEventThreshold_, _contactHertz_, _contactDampingRatio_, _contactPushMaxSpeed_, _jointHertz_, _jointDampingRatio_, _maximumLinearSpeed_, _frictionCallback_, _restitutionCallback_, _enableSleep_, _enableContinuous_, _workerCount_, _enqueueTask_, _finishTask_, _userTaskContext_, _userData_, _internalValue_)
         | 
| 301 297 | 
             
                  instance = WorldDef.new
         | 
| 302 298 | 
             
                  instance[:gravity] = _gravity_
         | 
| 303 299 | 
             
                  instance[:restitutionThreshold] = _restitutionThreshold_
         | 
| 304 | 
            -
                  instance[:contactPushSpeed] = _contactPushSpeed_
         | 
| 305 300 | 
             
                  instance[:hitEventThreshold] = _hitEventThreshold_
         | 
| 306 301 | 
             
                  instance[:contactHertz] = _contactHertz_
         | 
| 307 302 | 
             
                  instance[:contactDampingRatio] = _contactDampingRatio_
         | 
| 303 | 
            +
                  instance[:contactPushMaxSpeed] = _contactPushMaxSpeed_
         | 
| 308 304 | 
             
                  instance[:jointHertz] = _jointHertz_
         | 
| 309 305 | 
             
                  instance[:jointDampingRatio] = _jointDampingRatio_
         | 
| 310 306 | 
             
                  instance[:maximumLinearSpeed] = _maximumLinearSpeed_
         | 
| 311 | 
            -
                  instance[: | 
| 312 | 
            -
                  instance[: | 
| 307 | 
            +
                  instance[:frictionCallback] = _frictionCallback_
         | 
| 308 | 
            +
                  instance[:restitutionCallback] = _restitutionCallback_
         | 
| 313 309 | 
             
                  instance[:enableSleep] = _enableSleep_
         | 
| 314 310 | 
             
                  instance[:enableContinuous] = _enableContinuous_
         | 
| 315 311 | 
             
                  instance[:workerCount] = _workerCount_
         | 
| @@ -333,6 +329,7 @@ module Box2D | |
| 333 329 | 
             
                  :angularDamping, :float,
         | 
| 334 330 | 
             
                  :gravityScale, :float,
         | 
| 335 331 | 
             
                  :sleepThreshold, :float,
         | 
| 332 | 
            +
                  :name, :pointer,
         | 
| 336 333 | 
             
                  :userData, :pointer,
         | 
| 337 334 | 
             
                  :enableSleep, :bool,
         | 
| 338 335 | 
             
                  :isAwake, :bool,
         | 
| @@ -360,6 +357,8 @@ module Box2D | |
| 360 357 | 
             
                def gravityScale=(v) self[:gravityScale] = v end
         | 
| 361 358 | 
             
                def sleepThreshold = self[:sleepThreshold]
         | 
| 362 359 | 
             
                def sleepThreshold=(v) self[:sleepThreshold] = v end
         | 
| 360 | 
            +
                def name = self[:name]
         | 
| 361 | 
            +
                def name=(v) self[:name] = v end
         | 
| 363 362 | 
             
                def userData = self[:userData]
         | 
| 364 363 | 
             
                def userData=(v) self[:userData] = v end
         | 
| 365 364 | 
             
                def enableSleep = self[:enableSleep]
         | 
| @@ -376,7 +375,7 @@ module Box2D | |
| 376 375 | 
             
                def allowFastRotation=(v) self[:allowFastRotation] = v end
         | 
| 377 376 | 
             
                def internalValue = self[:internalValue]
         | 
| 378 377 | 
             
                def internalValue=(v) self[:internalValue] = v end
         | 
| 379 | 
            -
                def self.create_as(_type_, _position_, _rotation_, _linearVelocity_, _angularVelocity_, _linearDamping_, _angularDamping_, _gravityScale_, _sleepThreshold_, _userData_, _enableSleep_, _isAwake_, _fixedRotation_, _isBullet_, _isEnabled_, _allowFastRotation_, _internalValue_)
         | 
| 378 | 
            +
                def self.create_as(_type_, _position_, _rotation_, _linearVelocity_, _angularVelocity_, _linearDamping_, _angularDamping_, _gravityScale_, _sleepThreshold_, _name_, _userData_, _enableSleep_, _isAwake_, _fixedRotation_, _isBullet_, _isEnabled_, _allowFastRotation_, _internalValue_)
         | 
| 380 379 | 
             
                  instance = BodyDef.new
         | 
| 381 380 | 
             
                  instance[:type] = _type_
         | 
| 382 381 | 
             
                  instance[:position] = _position_
         | 
| @@ -387,6 +386,7 @@ module Box2D | |
| 387 386 | 
             
                  instance[:angularDamping] = _angularDamping_
         | 
| 388 387 | 
             
                  instance[:gravityScale] = _gravityScale_
         | 
| 389 388 | 
             
                  instance[:sleepThreshold] = _sleepThreshold_
         | 
| 389 | 
            +
                  instance[:name] = _name_
         | 
| 390 390 | 
             
                  instance[:userData] = _userData_
         | 
| 391 391 | 
             
                  instance[:enableSleep] = _enableSleep_
         | 
| 392 392 | 
             
                  instance[:isAwake] = _isAwake_
         | 
| @@ -443,11 +443,12 @@ module Box2D | |
| 443 443 | 
             
                  :friction, :float,
         | 
| 444 444 | 
             
                  :restitution, :float,
         | 
| 445 445 | 
             
                  :rollingResistance, :float,
         | 
| 446 | 
            +
                  :tangentSpeed, :float,
         | 
| 447 | 
            +
                  :material, :int,
         | 
| 446 448 | 
             
                  :density, :float,
         | 
| 447 449 | 
             
                  :filter, Filter,
         | 
| 448 450 | 
             
                  :customColor, :uint,
         | 
| 449 451 | 
             
                  :isSensor, :bool,
         | 
| 450 | 
            -
                  :enableSensorEvents, :bool,
         | 
| 451 452 | 
             
                  :enableContactEvents, :bool,
         | 
| 452 453 | 
             
                  :enableHitEvents, :bool,
         | 
| 453 454 | 
             
                  :enablePreSolveEvents, :bool,
         | 
| @@ -463,6 +464,10 @@ module Box2D | |
| 463 464 | 
             
                def restitution=(v) self[:restitution] = v end
         | 
| 464 465 | 
             
                def rollingResistance = self[:rollingResistance]
         | 
| 465 466 | 
             
                def rollingResistance=(v) self[:rollingResistance] = v end
         | 
| 467 | 
            +
                def tangentSpeed = self[:tangentSpeed]
         | 
| 468 | 
            +
                def tangentSpeed=(v) self[:tangentSpeed] = v end
         | 
| 469 | 
            +
                def material = self[:material]
         | 
| 470 | 
            +
                def material=(v) self[:material] = v end
         | 
| 466 471 | 
             
                def density = self[:density]
         | 
| 467 472 | 
             
                def density=(v) self[:density] = v end
         | 
| 468 473 | 
             
                def filter = self[:filter]
         | 
| @@ -471,8 +476,6 @@ module Box2D | |
| 471 476 | 
             
                def customColor=(v) self[:customColor] = v end
         | 
| 472 477 | 
             
                def isSensor = self[:isSensor]
         | 
| 473 478 | 
             
                def isSensor=(v) self[:isSensor] = v end
         | 
| 474 | 
            -
                def enableSensorEvents = self[:enableSensorEvents]
         | 
| 475 | 
            -
                def enableSensorEvents=(v) self[:enableSensorEvents] = v end
         | 
| 476 479 | 
             
                def enableContactEvents = self[:enableContactEvents]
         | 
| 477 480 | 
             
                def enableContactEvents=(v) self[:enableContactEvents] = v end
         | 
| 478 481 | 
             
                def enableHitEvents = self[:enableHitEvents]
         | 
| @@ -485,17 +488,18 @@ module Box2D | |
| 485 488 | 
             
                def updateBodyMass=(v) self[:updateBodyMass] = v end
         | 
| 486 489 | 
             
                def internalValue = self[:internalValue]
         | 
| 487 490 | 
             
                def internalValue=(v) self[:internalValue] = v end
         | 
| 488 | 
            -
                def self.create_as(_userData_, _friction_, _restitution_, _rollingResistance_, _density_, _filter_, _customColor_, _isSensor_,  | 
| 491 | 
            +
                def self.create_as(_userData_, _friction_, _restitution_, _rollingResistance_, _tangentSpeed_, _material_, _density_, _filter_, _customColor_, _isSensor_, _enableContactEvents_, _enableHitEvents_, _enablePreSolveEvents_, _invokeContactCreation_, _updateBodyMass_, _internalValue_)
         | 
| 489 492 | 
             
                  instance = ShapeDef.new
         | 
| 490 493 | 
             
                  instance[:userData] = _userData_
         | 
| 491 494 | 
             
                  instance[:friction] = _friction_
         | 
| 492 495 | 
             
                  instance[:restitution] = _restitution_
         | 
| 493 496 | 
             
                  instance[:rollingResistance] = _rollingResistance_
         | 
| 497 | 
            +
                  instance[:tangentSpeed] = _tangentSpeed_
         | 
| 498 | 
            +
                  instance[:material] = _material_
         | 
| 494 499 | 
             
                  instance[:density] = _density_
         | 
| 495 500 | 
             
                  instance[:filter] = _filter_
         | 
| 496 501 | 
             
                  instance[:customColor] = _customColor_
         | 
| 497 502 | 
             
                  instance[:isSensor] = _isSensor_
         | 
| 498 | 
            -
                  instance[:enableSensorEvents] = _enableSensorEvents_
         | 
| 499 503 | 
             
                  instance[:enableContactEvents] = _enableContactEvents_
         | 
| 500 504 | 
             
                  instance[:enableHitEvents] = _enableHitEvents_
         | 
| 501 505 | 
             
                  instance[:enablePreSolveEvents] = _enablePreSolveEvents_
         | 
| @@ -506,15 +510,47 @@ module Box2D | |
| 506 510 | 
             
                end
         | 
| 507 511 | 
             
              end
         | 
| 508 512 |  | 
| 513 | 
            +
              class SurfaceMaterial < FFI::Struct
         | 
| 514 | 
            +
                layout(
         | 
| 515 | 
            +
                  :friction, :float,
         | 
| 516 | 
            +
                  :restitution, :float,
         | 
| 517 | 
            +
                  :rollingResistance, :float,
         | 
| 518 | 
            +
                  :tangentSpeed, :float,
         | 
| 519 | 
            +
                  :material, :int,
         | 
| 520 | 
            +
                  :customColor, :uint,
         | 
| 521 | 
            +
                )
         | 
| 522 | 
            +
                def friction = self[:friction]
         | 
| 523 | 
            +
                def friction=(v) self[:friction] = v end
         | 
| 524 | 
            +
                def restitution = self[:restitution]
         | 
| 525 | 
            +
                def restitution=(v) self[:restitution] = v end
         | 
| 526 | 
            +
                def rollingResistance = self[:rollingResistance]
         | 
| 527 | 
            +
                def rollingResistance=(v) self[:rollingResistance] = v end
         | 
| 528 | 
            +
                def tangentSpeed = self[:tangentSpeed]
         | 
| 529 | 
            +
                def tangentSpeed=(v) self[:tangentSpeed] = v end
         | 
| 530 | 
            +
                def material = self[:material]
         | 
| 531 | 
            +
                def material=(v) self[:material] = v end
         | 
| 532 | 
            +
                def customColor = self[:customColor]
         | 
| 533 | 
            +
                def customColor=(v) self[:customColor] = v end
         | 
| 534 | 
            +
                def self.create_as(_friction_, _restitution_, _rollingResistance_, _tangentSpeed_, _material_, _customColor_)
         | 
| 535 | 
            +
                  instance = SurfaceMaterial.new
         | 
| 536 | 
            +
                  instance[:friction] = _friction_
         | 
| 537 | 
            +
                  instance[:restitution] = _restitution_
         | 
| 538 | 
            +
                  instance[:rollingResistance] = _rollingResistance_
         | 
| 539 | 
            +
                  instance[:tangentSpeed] = _tangentSpeed_
         | 
| 540 | 
            +
                  instance[:material] = _material_
         | 
| 541 | 
            +
                  instance[:customColor] = _customColor_
         | 
| 542 | 
            +
                  instance
         | 
| 543 | 
            +
                end
         | 
| 544 | 
            +
              end
         | 
| 545 | 
            +
             | 
| 509 546 | 
             
              class ChainDef < FFI::Struct
         | 
| 510 547 | 
             
                layout(
         | 
| 511 548 | 
             
                  :userData, :pointer,
         | 
| 512 549 | 
             
                  :points, :pointer,
         | 
| 513 550 | 
             
                  :count, :int,
         | 
| 514 | 
            -
                  : | 
| 515 | 
            -
                  : | 
| 551 | 
            +
                  :materials, :pointer,
         | 
| 552 | 
            +
                  :materialCount, :int,
         | 
| 516 553 | 
             
                  :filter, Filter,
         | 
| 517 | 
            -
                  :customColor, :uint,
         | 
| 518 554 | 
             
                  :isLoop, :bool,
         | 
| 519 555 | 
             
                  :internalValue, :int,
         | 
| 520 556 | 
             
                )
         | 
| @@ -524,27 +560,24 @@ module Box2D | |
| 524 560 | 
             
                def points=(v) self[:points] = v end
         | 
| 525 561 | 
             
                def count = self[:count]
         | 
| 526 562 | 
             
                def count=(v) self[:count] = v end
         | 
| 527 | 
            -
                def  | 
| 528 | 
            -
                def  | 
| 529 | 
            -
                def  | 
| 530 | 
            -
                def  | 
| 563 | 
            +
                def materials = self[:materials]
         | 
| 564 | 
            +
                def materials=(v) self[:materials] = v end
         | 
| 565 | 
            +
                def materialCount = self[:materialCount]
         | 
| 566 | 
            +
                def materialCount=(v) self[:materialCount] = v end
         | 
| 531 567 | 
             
                def filter = self[:filter]
         | 
| 532 568 | 
             
                def filter=(v) self[:filter] = v end
         | 
| 533 | 
            -
                def customColor = self[:customColor]
         | 
| 534 | 
            -
                def customColor=(v) self[:customColor] = v end
         | 
| 535 569 | 
             
                def isLoop = self[:isLoop]
         | 
| 536 570 | 
             
                def isLoop=(v) self[:isLoop] = v end
         | 
| 537 571 | 
             
                def internalValue = self[:internalValue]
         | 
| 538 572 | 
             
                def internalValue=(v) self[:internalValue] = v end
         | 
| 539 | 
            -
                def self.create_as(_userData_, _points_, _count_,  | 
| 573 | 
            +
                def self.create_as(_userData_, _points_, _count_, _materials_, _materialCount_, _filter_, _isLoop_, _internalValue_)
         | 
| 540 574 | 
             
                  instance = ChainDef.new
         | 
| 541 575 | 
             
                  instance[:userData] = _userData_
         | 
| 542 576 | 
             
                  instance[:points] = _points_
         | 
| 543 577 | 
             
                  instance[:count] = _count_
         | 
| 544 | 
            -
                  instance[: | 
| 545 | 
            -
                  instance[: | 
| 578 | 
            +
                  instance[:materials] = _materials_
         | 
| 579 | 
            +
                  instance[:materialCount] = _materialCount_
         | 
| 546 580 | 
             
                  instance[:filter] = _filter_
         | 
| 547 | 
            -
                  instance[:customColor] = _customColor_
         | 
| 548 581 | 
             
                  instance[:isLoop] = _isLoop_
         | 
| 549 582 | 
             
                  instance[:internalValue] = _internalValue_
         | 
| 550 583 | 
             
                  instance
         | 
| @@ -557,24 +590,24 @@ module Box2D | |
| 557 590 | 
             
                  :pairs, :float,
         | 
| 558 591 | 
             
                  :collide, :float,
         | 
| 559 592 | 
             
                  :solve, :float,
         | 
| 560 | 
            -
                  : | 
| 593 | 
            +
                  :mergeIslands, :float,
         | 
| 594 | 
            +
                  :prepareStages, :float,
         | 
| 561 595 | 
             
                  :solveConstraints, :float,
         | 
| 562 | 
            -
                  :prepareTasks, :float,
         | 
| 563 | 
            -
                  :solverTasks, :float,
         | 
| 564 596 | 
             
                  :prepareConstraints, :float,
         | 
| 565 597 | 
             
                  :integrateVelocities, :float,
         | 
| 566 598 | 
             
                  :warmStart, :float,
         | 
| 567 | 
            -
                  : | 
| 599 | 
            +
                  :solveImpulses, :float,
         | 
| 568 600 | 
             
                  :integratePositions, :float,
         | 
| 569 | 
            -
                  : | 
| 601 | 
            +
                  :relaxImpulses, :float,
         | 
| 570 602 | 
             
                  :applyRestitution, :float,
         | 
| 571 603 | 
             
                  :storeImpulses, :float,
         | 
| 572 | 
            -
                  :finalizeBodies, :float,
         | 
| 573 604 | 
             
                  :splitIslands, :float,
         | 
| 574 | 
            -
                  : | 
| 605 | 
            +
                  :transforms, :float,
         | 
| 575 606 | 
             
                  :hitEvents, :float,
         | 
| 576 | 
            -
                  : | 
| 577 | 
            -
                  : | 
| 607 | 
            +
                  :refit, :float,
         | 
| 608 | 
            +
                  :bullets, :float,
         | 
| 609 | 
            +
                  :sleepIslands, :float,
         | 
| 610 | 
            +
                  :sensors, :float,
         | 
| 578 611 | 
             
                )
         | 
| 579 612 | 
             
                def step = self[:step]
         | 
| 580 613 | 
             
                def step=(v) self[:step] = v end
         | 
| @@ -584,66 +617,66 @@ module Box2D | |
| 584 617 | 
             
                def collide=(v) self[:collide] = v end
         | 
| 585 618 | 
             
                def solve = self[:solve]
         | 
| 586 619 | 
             
                def solve=(v) self[:solve] = v end
         | 
| 587 | 
            -
                def  | 
| 588 | 
            -
                def  | 
| 620 | 
            +
                def mergeIslands = self[:mergeIslands]
         | 
| 621 | 
            +
                def mergeIslands=(v) self[:mergeIslands] = v end
         | 
| 622 | 
            +
                def prepareStages = self[:prepareStages]
         | 
| 623 | 
            +
                def prepareStages=(v) self[:prepareStages] = v end
         | 
| 589 624 | 
             
                def solveConstraints = self[:solveConstraints]
         | 
| 590 625 | 
             
                def solveConstraints=(v) self[:solveConstraints] = v end
         | 
| 591 | 
            -
                def prepareTasks = self[:prepareTasks]
         | 
| 592 | 
            -
                def prepareTasks=(v) self[:prepareTasks] = v end
         | 
| 593 | 
            -
                def solverTasks = self[:solverTasks]
         | 
| 594 | 
            -
                def solverTasks=(v) self[:solverTasks] = v end
         | 
| 595 626 | 
             
                def prepareConstraints = self[:prepareConstraints]
         | 
| 596 627 | 
             
                def prepareConstraints=(v) self[:prepareConstraints] = v end
         | 
| 597 628 | 
             
                def integrateVelocities = self[:integrateVelocities]
         | 
| 598 629 | 
             
                def integrateVelocities=(v) self[:integrateVelocities] = v end
         | 
| 599 630 | 
             
                def warmStart = self[:warmStart]
         | 
| 600 631 | 
             
                def warmStart=(v) self[:warmStart] = v end
         | 
| 601 | 
            -
                def  | 
| 602 | 
            -
                def  | 
| 632 | 
            +
                def solveImpulses = self[:solveImpulses]
         | 
| 633 | 
            +
                def solveImpulses=(v) self[:solveImpulses] = v end
         | 
| 603 634 | 
             
                def integratePositions = self[:integratePositions]
         | 
| 604 635 | 
             
                def integratePositions=(v) self[:integratePositions] = v end
         | 
| 605 | 
            -
                def  | 
| 606 | 
            -
                def  | 
| 636 | 
            +
                def relaxImpulses = self[:relaxImpulses]
         | 
| 637 | 
            +
                def relaxImpulses=(v) self[:relaxImpulses] = v end
         | 
| 607 638 | 
             
                def applyRestitution = self[:applyRestitution]
         | 
| 608 639 | 
             
                def applyRestitution=(v) self[:applyRestitution] = v end
         | 
| 609 640 | 
             
                def storeImpulses = self[:storeImpulses]
         | 
| 610 641 | 
             
                def storeImpulses=(v) self[:storeImpulses] = v end
         | 
| 611 | 
            -
                def finalizeBodies = self[:finalizeBodies]
         | 
| 612 | 
            -
                def finalizeBodies=(v) self[:finalizeBodies] = v end
         | 
| 613 642 | 
             
                def splitIslands = self[:splitIslands]
         | 
| 614 643 | 
             
                def splitIslands=(v) self[:splitIslands] = v end
         | 
| 615 | 
            -
                def  | 
| 616 | 
            -
                def  | 
| 644 | 
            +
                def transforms = self[:transforms]
         | 
| 645 | 
            +
                def transforms=(v) self[:transforms] = v end
         | 
| 617 646 | 
             
                def hitEvents = self[:hitEvents]
         | 
| 618 647 | 
             
                def hitEvents=(v) self[:hitEvents] = v end
         | 
| 619 | 
            -
                def  | 
| 620 | 
            -
                def  | 
| 621 | 
            -
                def  | 
| 622 | 
            -
                def  | 
| 623 | 
            -
                def  | 
| 648 | 
            +
                def refit = self[:refit]
         | 
| 649 | 
            +
                def refit=(v) self[:refit] = v end
         | 
| 650 | 
            +
                def bullets = self[:bullets]
         | 
| 651 | 
            +
                def bullets=(v) self[:bullets] = v end
         | 
| 652 | 
            +
                def sleepIslands = self[:sleepIslands]
         | 
| 653 | 
            +
                def sleepIslands=(v) self[:sleepIslands] = v end
         | 
| 654 | 
            +
                def sensors = self[:sensors]
         | 
| 655 | 
            +
                def sensors=(v) self[:sensors] = v end
         | 
| 656 | 
            +
                def self.create_as(_step_, _pairs_, _collide_, _solve_, _mergeIslands_, _prepareStages_, _solveConstraints_, _prepareConstraints_, _integrateVelocities_, _warmStart_, _solveImpulses_, _integratePositions_, _relaxImpulses_, _applyRestitution_, _storeImpulses_, _splitIslands_, _transforms_, _hitEvents_, _refit_, _bullets_, _sleepIslands_, _sensors_)
         | 
| 624 657 | 
             
                  instance = Profile.new
         | 
| 625 658 | 
             
                  instance[:step] = _step_
         | 
| 626 659 | 
             
                  instance[:pairs] = _pairs_
         | 
| 627 660 | 
             
                  instance[:collide] = _collide_
         | 
| 628 661 | 
             
                  instance[:solve] = _solve_
         | 
| 629 | 
            -
                  instance[: | 
| 662 | 
            +
                  instance[:mergeIslands] = _mergeIslands_
         | 
| 663 | 
            +
                  instance[:prepareStages] = _prepareStages_
         | 
| 630 664 | 
             
                  instance[:solveConstraints] = _solveConstraints_
         | 
| 631 | 
            -
                  instance[:prepareTasks] = _prepareTasks_
         | 
| 632 | 
            -
                  instance[:solverTasks] = _solverTasks_
         | 
| 633 665 | 
             
                  instance[:prepareConstraints] = _prepareConstraints_
         | 
| 634 666 | 
             
                  instance[:integrateVelocities] = _integrateVelocities_
         | 
| 635 667 | 
             
                  instance[:warmStart] = _warmStart_
         | 
| 636 | 
            -
                  instance[: | 
| 668 | 
            +
                  instance[:solveImpulses] = _solveImpulses_
         | 
| 637 669 | 
             
                  instance[:integratePositions] = _integratePositions_
         | 
| 638 | 
            -
                  instance[: | 
| 670 | 
            +
                  instance[:relaxImpulses] = _relaxImpulses_
         | 
| 639 671 | 
             
                  instance[:applyRestitution] = _applyRestitution_
         | 
| 640 672 | 
             
                  instance[:storeImpulses] = _storeImpulses_
         | 
| 641 | 
            -
                  instance[:finalizeBodies] = _finalizeBodies_
         | 
| 642 673 | 
             
                  instance[:splitIslands] = _splitIslands_
         | 
| 643 | 
            -
                  instance[: | 
| 674 | 
            +
                  instance[:transforms] = _transforms_
         | 
| 644 675 | 
             
                  instance[:hitEvents] = _hitEvents_
         | 
| 645 | 
            -
                  instance[: | 
| 646 | 
            -
                  instance[: | 
| 676 | 
            +
                  instance[:refit] = _refit_
         | 
| 677 | 
            +
                  instance[:bullets] = _bullets_
         | 
| 678 | 
            +
                  instance[:sleepIslands] = _sleepIslands_
         | 
| 679 | 
            +
                  instance[:sensors] = _sensors_
         | 
| 647 680 | 
             
                  instance
         | 
| 648 681 | 
             
                end
         | 
| 649 682 | 
             
              end
         | 
| @@ -1462,6 +1495,7 @@ module Box2D | |
| 1462 1495 | 
             
                  :drawJointExtras, :bool,
         | 
| 1463 1496 | 
             
                  :drawAABBs, :bool,
         | 
| 1464 1497 | 
             
                  :drawMass, :bool,
         | 
| 1498 | 
            +
                  :drawBodyNames, :bool,
         | 
| 1465 1499 | 
             
                  :drawContacts, :bool,
         | 
| 1466 1500 | 
             
                  :drawGraphColors, :bool,
         | 
| 1467 1501 | 
             
                  :drawContactNormals, :bool,
         | 
| @@ -1501,6 +1535,8 @@ module Box2D | |
| 1501 1535 | 
             
                def drawAABBs=(v) self[:drawAABBs] = v end
         | 
| 1502 1536 | 
             
                def drawMass = self[:drawMass]
         | 
| 1503 1537 | 
             
                def drawMass=(v) self[:drawMass] = v end
         | 
| 1538 | 
            +
                def drawBodyNames = self[:drawBodyNames]
         | 
| 1539 | 
            +
                def drawBodyNames=(v) self[:drawBodyNames] = v end
         | 
| 1504 1540 | 
             
                def drawContacts = self[:drawContacts]
         | 
| 1505 1541 | 
             
                def drawContacts=(v) self[:drawContacts] = v end
         | 
| 1506 1542 | 
             
                def drawGraphColors = self[:drawGraphColors]
         | 
| @@ -1513,7 +1549,7 @@ module Box2D | |
| 1513 1549 | 
             
                def drawFrictionImpulses=(v) self[:drawFrictionImpulses] = v end
         | 
| 1514 1550 | 
             
                def context = self[:context]
         | 
| 1515 1551 | 
             
                def context=(v) self[:context] = v end
         | 
| 1516 | 
            -
                def self.create_as(_DrawPolygon_, _DrawSolidPolygon_, _DrawCircle_, _DrawSolidCircle_, _DrawSolidCapsule_, _DrawSegment_, _DrawTransform_, _DrawPoint_, _DrawString_, _drawingBounds_, _useDrawingBounds_, _drawShapes_, _drawJoints_, _drawJointExtras_, _drawAABBs_, _drawMass_, _drawContacts_, _drawGraphColors_, _drawContactNormals_, _drawContactImpulses_, _drawFrictionImpulses_, _context_)
         | 
| 1552 | 
            +
                def self.create_as(_DrawPolygon_, _DrawSolidPolygon_, _DrawCircle_, _DrawSolidCircle_, _DrawSolidCapsule_, _DrawSegment_, _DrawTransform_, _DrawPoint_, _DrawString_, _drawingBounds_, _useDrawingBounds_, _drawShapes_, _drawJoints_, _drawJointExtras_, _drawAABBs_, _drawMass_, _drawBodyNames_, _drawContacts_, _drawGraphColors_, _drawContactNormals_, _drawContactImpulses_, _drawFrictionImpulses_, _context_)
         | 
| 1517 1553 | 
             
                  instance = DebugDraw.new
         | 
| 1518 1554 | 
             
                  instance[:DrawPolygon] = _DrawPolygon_
         | 
| 1519 1555 | 
             
                  instance[:DrawSolidPolygon] = _DrawSolidPolygon_
         | 
| @@ -1531,6 +1567,7 @@ module Box2D | |
| 1531 1567 | 
             
                  instance[:drawJointExtras] = _drawJointExtras_
         | 
| 1532 1568 | 
             
                  instance[:drawAABBs] = _drawAABBs_
         | 
| 1533 1569 | 
             
                  instance[:drawMass] = _drawMass_
         | 
| 1570 | 
            +
                  instance[:drawBodyNames] = _drawBodyNames_
         | 
| 1534 1571 | 
             
                  instance[:drawContacts] = _drawContacts_
         | 
| 1535 1572 | 
             
                  instance[:drawGraphColors] = _drawGraphColors_
         | 
| 1536 1573 | 
             
                  instance[:drawContactNormals] = _drawContactNormals_
         | 
| @@ -1551,6 +1588,7 @@ module Box2D | |
| 1551 1588 | 
             
                  [:DefaultFilter, :b2DefaultFilter, [], Filter.by_value],
         | 
| 1552 1589 | 
             
                  [:DefaultQueryFilter, :b2DefaultQueryFilter, [], QueryFilter.by_value],
         | 
| 1553 1590 | 
             
                  [:DefaultShapeDef, :b2DefaultShapeDef, [], ShapeDef.by_value],
         | 
| 1591 | 
            +
                  [:DefaultSurfaceMaterial, :b2DefaultSurfaceMaterial, [], SurfaceMaterial.by_value],
         | 
| 1554 1592 | 
             
                  [:DefaultChainDef, :b2DefaultChainDef, [], ChainDef.by_value],
         | 
| 1555 1593 | 
             
                  [:DefaultDistanceJointDef, :b2DefaultDistanceJointDef, [], DistanceJointDef.by_value],
         | 
| 1556 1594 | 
             
                  [:DefaultMotorJointDef, :b2DefaultMotorJointDef, [], MotorJointDef.by_value],
         | 
    
        data/lib/libbox2d.aarch64.so
    CHANGED
    
    | Binary file | 
    
        data/lib/libbox2d.arm64.dylib
    CHANGED
    
    | Binary file | 
    
        data/lib/libbox2d.dll
    CHANGED
    
    | Binary file | 
    
        data/lib/libbox2d.x86_64.dylib
    CHANGED
    
    | Binary file | 
    
        data/lib/libbox2d.x86_64.so
    CHANGED
    
    | Binary file | 
    
        metadata
    CHANGED
    
    | @@ -1,13 +1,13 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: box2d-bindings
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.1. | 
| 4 | 
            +
              version: 0.1.1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - vaiorabbit
         | 
| 8 8 | 
             
            bindir: bin
         | 
| 9 9 | 
             
            cert_chain: []
         | 
| 10 | 
            -
            date: 2025- | 
| 10 | 
            +
            date: 2025-02-01 00:00:00.000000000 Z
         | 
| 11 11 | 
             
            dependencies:
         | 
| 12 12 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 13 13 | 
             
              name: ffi
         | 
| @@ -38,7 +38,6 @@ files: | |
| 38 38 | 
             
            - lib/box2d.rb
         | 
| 39 39 | 
             
            - lib/box2d_base.rb
         | 
| 40 40 | 
             
            - lib/box2d_collision.rb
         | 
| 41 | 
            -
            - lib/box2d_collision_inline.rb
         | 
| 42 41 | 
             
            - lib/box2d_helper.rb
         | 
| 43 42 | 
             
            - lib/box2d_id.rb
         | 
| 44 43 | 
             
            - lib/box2d_id_inline.rb
         | 
| @@ -1,47 +0,0 @@ | |
| 1 | 
            -
            # Ruby-Box2D : Yet another Box2D wrapper for Ruby
         | 
| 2 | 
            -
            #
         | 
| 3 | 
            -
            # * https://github.com/vaiorabbit/box2d-bindings
         | 
| 4 | 
            -
            #
         | 
| 5 | 
            -
            # [NOTICE] Autogenerated. Do not edit.
         | 
| 6 | 
            -
             | 
| 7 | 
            -
            require 'ffi'
         | 
| 8 | 
            -
             | 
| 9 | 
            -
            module Box2D
         | 
| 10 | 
            -
              extend FFI::Library
         | 
| 11 | 
            -
              # Define/Macro
         | 
| 12 | 
            -
             | 
| 13 | 
            -
             | 
| 14 | 
            -
              # Enum
         | 
| 15 | 
            -
             | 
| 16 | 
            -
             | 
| 17 | 
            -
              # Typedef
         | 
| 18 | 
            -
             | 
| 19 | 
            -
             | 
| 20 | 
            -
              # Struct
         | 
| 21 | 
            -
             | 
| 22 | 
            -
             | 
| 23 | 
            -
              # Function
         | 
| 24 | 
            -
             | 
| 25 | 
            -
              def self.setup_collision_inline_symbols(method_naming: :original)
         | 
| 26 | 
            -
                entries = [
         | 
| 27 | 
            -
                  [:DynamicTree_GetUserData, :b2DynamicTree_GetUserData, [:pointer, :int], :int],
         | 
| 28 | 
            -
                  [:DynamicTree_GetAABB, :b2DynamicTree_GetAABB, [:pointer, :int], AABB.by_value],
         | 
| 29 | 
            -
                ]
         | 
| 30 | 
            -
                entries.each do |entry|
         | 
| 31 | 
            -
                  api_name = if method_naming == :snake_case
         | 
| 32 | 
            -
                               snake_case_name = entry[0].to_s.gsub(/([A-Z]+)([A-Z0-9][a-z])/, '\1_\2').gsub(/([a-z\d])([A-Z0-9])/, '\1_\2').downcase
         | 
| 33 | 
            -
                               snake_case_name.gsub!('vector_3', 'vector3_') if snake_case_name.include?('vector_3')
         | 
| 34 | 
            -
                               snake_case_name.gsub!('vector_2', 'vector2_') if snake_case_name.include?('vector_2')
         | 
| 35 | 
            -
                               snake_case_name.chop! if snake_case_name.end_with?('_')
         | 
| 36 | 
            -
                               snake_case_name.to_sym
         | 
| 37 | 
            -
                             else
         | 
| 38 | 
            -
                               entry[0]
         | 
| 39 | 
            -
                             end
         | 
| 40 | 
            -
                  attach_function api_name, entry[1], entry[2], entry[3]
         | 
| 41 | 
            -
                rescue FFI::NotFoundError => e
         | 
| 42 | 
            -
                  warn "[Warning] Failed to import #{entry[0]} (#{e})."
         | 
| 43 | 
            -
                end
         | 
| 44 | 
            -
              end
         | 
| 45 | 
            -
             | 
| 46 | 
            -
            end
         | 
| 47 | 
            -
             |