box2d-bindings 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/ChangeLog +35 -0
- data/LICENSE.txt +21 -0
- data/README.md +50 -0
- data/lib/box2d.rb +50 -0
- data/lib/box2d_base.rb +95 -0
- data/lib/box2d_collision.rb +832 -0
- data/lib/box2d_collision_inline.rb +47 -0
- data/lib/box2d_helper.rb +67 -0
- data/lib/box2d_id.rb +146 -0
- data/lib/box2d_id_inline.rb +53 -0
- data/lib/box2d_main.rb +337 -0
- data/lib/box2d_math_functions.rb +156 -0
- data/lib/box2d_math_inline_functions.rb +104 -0
- data/lib/box2d_types.rb +1583 -0
- 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 +75 -0
@@ -0,0 +1,156 @@
|
|
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
|
+
class Vec2 < FFI::Struct
|
23
|
+
layout(
|
24
|
+
:x, :float,
|
25
|
+
:y, :float,
|
26
|
+
)
|
27
|
+
def x = self[:x]
|
28
|
+
def x=(v) self[:x] = v end
|
29
|
+
def y = self[:y]
|
30
|
+
def y=(v) self[:y] = v end
|
31
|
+
def self.create_as(_x_, _y_)
|
32
|
+
instance = Vec2.new
|
33
|
+
instance[:x] = _x_
|
34
|
+
instance[:y] = _y_
|
35
|
+
instance
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
class CosSin < FFI::Struct
|
40
|
+
layout(
|
41
|
+
:cosine, :float,
|
42
|
+
:sine, :float,
|
43
|
+
)
|
44
|
+
def cosine = self[:cosine]
|
45
|
+
def cosine=(v) self[:cosine] = v end
|
46
|
+
def sine = self[:sine]
|
47
|
+
def sine=(v) self[:sine] = v end
|
48
|
+
def self.create_as(_cosine_, _sine_)
|
49
|
+
instance = CosSin.new
|
50
|
+
instance[:cosine] = _cosine_
|
51
|
+
instance[:sine] = _sine_
|
52
|
+
instance
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
class Rot < FFI::Struct
|
57
|
+
layout(
|
58
|
+
:c, :float,
|
59
|
+
:s, :float,
|
60
|
+
)
|
61
|
+
def c = self[:c]
|
62
|
+
def c=(v) self[:c] = v end
|
63
|
+
def s = self[:s]
|
64
|
+
def s=(v) self[:s] = v end
|
65
|
+
def self.create_as(_c_, _s_)
|
66
|
+
instance = Rot.new
|
67
|
+
instance[:c] = _c_
|
68
|
+
instance[:s] = _s_
|
69
|
+
instance
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
class Transform < FFI::Struct
|
74
|
+
layout(
|
75
|
+
:p, Vec2,
|
76
|
+
:q, Rot,
|
77
|
+
)
|
78
|
+
def p = self[:p]
|
79
|
+
def p=(v) self[:p] = v end
|
80
|
+
def q = self[:q]
|
81
|
+
def q=(v) self[:q] = v end
|
82
|
+
def self.create_as(_p_, _q_)
|
83
|
+
instance = Transform.new
|
84
|
+
instance[:p] = _p_
|
85
|
+
instance[:q] = _q_
|
86
|
+
instance
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
class Mat22 < FFI::Struct
|
91
|
+
layout(
|
92
|
+
:cx, Vec2,
|
93
|
+
:cy, Vec2,
|
94
|
+
)
|
95
|
+
def cx = self[:cx]
|
96
|
+
def cx=(v) self[:cx] = v end
|
97
|
+
def cy = self[:cy]
|
98
|
+
def cy=(v) self[:cy] = v end
|
99
|
+
def self.create_as(_cx_, _cy_)
|
100
|
+
instance = Mat22.new
|
101
|
+
instance[:cx] = _cx_
|
102
|
+
instance[:cy] = _cy_
|
103
|
+
instance
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
class AABB < FFI::Struct
|
108
|
+
layout(
|
109
|
+
:lowerBound, Vec2,
|
110
|
+
:upperBound, Vec2,
|
111
|
+
)
|
112
|
+
def lowerBound = self[:lowerBound]
|
113
|
+
def lowerBound=(v) self[:lowerBound] = v end
|
114
|
+
def upperBound = self[:upperBound]
|
115
|
+
def upperBound=(v) self[:upperBound] = v end
|
116
|
+
def self.create_as(_lowerBound_, _upperBound_)
|
117
|
+
instance = AABB.new
|
118
|
+
instance[:lowerBound] = _lowerBound_
|
119
|
+
instance[:upperBound] = _upperBound_
|
120
|
+
instance
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
|
125
|
+
# Function
|
126
|
+
|
127
|
+
def self.setup_math_functions_symbols(method_naming: :original)
|
128
|
+
entries = [
|
129
|
+
[:Atan2, :b2Atan2, [:float, :float], :float],
|
130
|
+
[:ComputeCosSin, :b2ComputeCosSin, [:float], CosSin.by_value],
|
131
|
+
[:ComputeRotationBetweenUnitVectors, :b2ComputeRotationBetweenUnitVectors, [Vec2.by_value, Vec2.by_value], Rot.by_value],
|
132
|
+
[:IsValidFloat, :b2IsValidFloat, [:float], :bool],
|
133
|
+
[:IsValidVec2, :b2IsValidVec2, [Vec2.by_value], :bool],
|
134
|
+
[:IsValidRotation, :b2IsValidRotation, [Rot.by_value], :bool],
|
135
|
+
[:IsValidAABB, :b2IsValidAABB, [AABB.by_value], :bool],
|
136
|
+
[:SetLengthUnitsPerMeter, :b2SetLengthUnitsPerMeter, [:float], :void],
|
137
|
+
[:GetLengthUnitsPerMeter, :b2GetLengthUnitsPerMeter, [], :float],
|
138
|
+
]
|
139
|
+
entries.each do |entry|
|
140
|
+
api_name = if method_naming == :snake_case
|
141
|
+
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
|
142
|
+
snake_case_name.gsub!('vector_3', 'vector3_') if snake_case_name.include?('vector_3')
|
143
|
+
snake_case_name.gsub!('vector_2', 'vector2_') if snake_case_name.include?('vector_2')
|
144
|
+
snake_case_name.chop! if snake_case_name.end_with?('_')
|
145
|
+
snake_case_name.to_sym
|
146
|
+
else
|
147
|
+
entry[0]
|
148
|
+
end
|
149
|
+
attach_function api_name, entry[1], entry[2], entry[3]
|
150
|
+
rescue FFI::NotFoundError => e
|
151
|
+
warn "[Warning] Failed to import #{entry[0]} (#{e})."
|
152
|
+
end
|
153
|
+
end
|
154
|
+
|
155
|
+
end
|
156
|
+
|
@@ -0,0 +1,104 @@
|
|
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_math_inline_functions_symbols(method_naming: :original)
|
26
|
+
entries = [
|
27
|
+
[:MinInt, :b2MinInt, [:int, :int], :int],
|
28
|
+
[:MaxInt, :b2MaxInt, [:int, :int], :int],
|
29
|
+
[:AbsInt, :b2AbsInt, [:int], :int],
|
30
|
+
[:ClampInt, :b2ClampInt, [:int, :int, :int], :int],
|
31
|
+
[:MinFloat, :b2MinFloat, [:float, :float], :float],
|
32
|
+
[:MaxFloat, :b2MaxFloat, [:float, :float], :float],
|
33
|
+
[:AbsFloat, :b2AbsFloat, [:float], :float],
|
34
|
+
[:ClampFloat, :b2ClampFloat, [:float, :float, :float], :float],
|
35
|
+
[:Dot, :b2Dot, [Vec2.by_value, Vec2.by_value], :float],
|
36
|
+
[:Cross, :b2Cross, [Vec2.by_value, Vec2.by_value], :float],
|
37
|
+
[:CrossVS, :b2CrossVS, [Vec2.by_value, :float], Vec2.by_value],
|
38
|
+
[:CrossSV, :b2CrossSV, [:float, Vec2.by_value], Vec2.by_value],
|
39
|
+
[:LeftPerp, :b2LeftPerp, [Vec2.by_value], Vec2.by_value],
|
40
|
+
[:RightPerp, :b2RightPerp, [Vec2.by_value], Vec2.by_value],
|
41
|
+
[:Add, :b2Add, [Vec2.by_value, Vec2.by_value], Vec2.by_value],
|
42
|
+
[:Sub, :b2Sub, [Vec2.by_value, Vec2.by_value], Vec2.by_value],
|
43
|
+
[:Neg, :b2Neg, [Vec2.by_value], Vec2.by_value],
|
44
|
+
[:Lerp, :b2Lerp, [Vec2.by_value, Vec2.by_value, :float], Vec2.by_value],
|
45
|
+
[:Mul, :b2Mul, [Vec2.by_value, Vec2.by_value], Vec2.by_value],
|
46
|
+
[:MulSV, :b2MulSV, [:float, Vec2.by_value], Vec2.by_value],
|
47
|
+
[:MulAdd, :b2MulAdd, [Vec2.by_value, :float, Vec2.by_value], Vec2.by_value],
|
48
|
+
[:MulSub, :b2MulSub, [Vec2.by_value, :float, Vec2.by_value], Vec2.by_value],
|
49
|
+
[:Abs, :b2Abs, [Vec2.by_value], Vec2.by_value],
|
50
|
+
[:Min, :b2Min, [Vec2.by_value, Vec2.by_value], Vec2.by_value],
|
51
|
+
[:Max, :b2Max, [Vec2.by_value, Vec2.by_value], Vec2.by_value],
|
52
|
+
[:Clamp, :b2Clamp, [Vec2.by_value, Vec2.by_value, Vec2.by_value], Vec2.by_value],
|
53
|
+
[:Length, :b2Length, [Vec2.by_value], :float],
|
54
|
+
[:Distance, :b2Distance, [Vec2.by_value, Vec2.by_value], :float],
|
55
|
+
[:Normalize, :b2Normalize, [Vec2.by_value], Vec2.by_value],
|
56
|
+
[:GetLengthAndNormalize, :b2GetLengthAndNormalize, [:pointer, Vec2.by_value], Vec2.by_value],
|
57
|
+
[:NormalizeRot, :b2NormalizeRot, [Rot.by_value], Rot.by_value],
|
58
|
+
[:IntegrateRotation, :b2IntegrateRotation, [Rot.by_value, :float], Rot.by_value],
|
59
|
+
[:LengthSquared, :b2LengthSquared, [Vec2.by_value], :float],
|
60
|
+
[:DistanceSquared, :b2DistanceSquared, [Vec2.by_value, Vec2.by_value], :float],
|
61
|
+
[:MakeRot, :b2MakeRot, [:float], Rot.by_value],
|
62
|
+
[:IsNormalized, :b2IsNormalized, [Rot.by_value], :bool],
|
63
|
+
[:NLerp, :b2NLerp, [Rot.by_value, Rot.by_value, :float], Rot.by_value],
|
64
|
+
[:ComputeAngularVelocity, :b2ComputeAngularVelocity, [Rot.by_value, Rot.by_value, :float], :float],
|
65
|
+
[:Rot_GetAngle, :b2Rot_GetAngle, [Rot.by_value], :float],
|
66
|
+
[:Rot_GetXAxis, :b2Rot_GetXAxis, [Rot.by_value], Vec2.by_value],
|
67
|
+
[:Rot_GetYAxis, :b2Rot_GetYAxis, [Rot.by_value], Vec2.by_value],
|
68
|
+
[:MulRot, :b2MulRot, [Rot.by_value, Rot.by_value], Rot.by_value],
|
69
|
+
[:InvMulRot, :b2InvMulRot, [Rot.by_value, Rot.by_value], Rot.by_value],
|
70
|
+
[:RelativeAngle, :b2RelativeAngle, [Rot.by_value, Rot.by_value], :float],
|
71
|
+
[:UnwindAngle, :b2UnwindAngle, [:float], :float],
|
72
|
+
[:UnwindLargeAngle, :b2UnwindLargeAngle, [:float], :float],
|
73
|
+
[:RotateVector, :b2RotateVector, [Rot.by_value, Vec2.by_value], Vec2.by_value],
|
74
|
+
[:InvRotateVector, :b2InvRotateVector, [Rot.by_value, Vec2.by_value], Vec2.by_value],
|
75
|
+
[:TransformPoint, :b2TransformPoint, [Transform.by_value, Vec2.by_value], Vec2.by_value],
|
76
|
+
[:InvTransformPoint, :b2InvTransformPoint, [Transform.by_value, Vec2.by_value], Vec2.by_value],
|
77
|
+
[:MulTransforms, :b2MulTransforms, [Transform.by_value, Transform.by_value], Transform.by_value],
|
78
|
+
[:InvMulTransforms, :b2InvMulTransforms, [Transform.by_value, Transform.by_value], Transform.by_value],
|
79
|
+
[:MulMV, :b2MulMV, [Mat22.by_value, Vec2.by_value], Vec2.by_value],
|
80
|
+
[:GetInverse22, :b2GetInverse22, [Mat22.by_value], Mat22.by_value],
|
81
|
+
[:Solve22, :b2Solve22, [Mat22.by_value, Vec2.by_value], Vec2.by_value],
|
82
|
+
[:AABB_Contains, :b2AABB_Contains, [AABB.by_value, AABB.by_value], :bool],
|
83
|
+
[:AABB_Center, :b2AABB_Center, [AABB.by_value], Vec2.by_value],
|
84
|
+
[:AABB_Extents, :b2AABB_Extents, [AABB.by_value], Vec2.by_value],
|
85
|
+
[:AABB_Union, :b2AABB_Union, [AABB.by_value, AABB.by_value], AABB.by_value],
|
86
|
+
]
|
87
|
+
entries.each do |entry|
|
88
|
+
api_name = if method_naming == :snake_case
|
89
|
+
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
|
90
|
+
snake_case_name.gsub!('vector_3', 'vector3_') if snake_case_name.include?('vector_3')
|
91
|
+
snake_case_name.gsub!('vector_2', 'vector2_') if snake_case_name.include?('vector_2')
|
92
|
+
snake_case_name.chop! if snake_case_name.end_with?('_')
|
93
|
+
snake_case_name.to_sym
|
94
|
+
else
|
95
|
+
entry[0]
|
96
|
+
end
|
97
|
+
attach_function api_name, entry[1], entry[2], entry[3]
|
98
|
+
rescue FFI::NotFoundError => e
|
99
|
+
warn "[Warning] Failed to import #{entry[0]} (#{e})."
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
end
|
104
|
+
|