box2d-bindings 0.1.0-x64-mingw

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 0ee8b757648eafbe65a258a04e611597d61bf16f9195321edf2027767f0c9355
4
+ data.tar.gz: ca62b982d7f4e3612b840b01b06df2549d3a5d141d995bba3919a8511c3bf4d4
5
+ SHA512:
6
+ metadata.gz: 8780f8d8cb56ed33e2c72e0b16d9d1284b9f810dbeb2f4097bbe44abd139f1cb16f2ed55fb20cf3f51ce38bedbc2df555872f1f9aeff61c3083841d4106cbd5a
7
+ data.tar.gz: e9e415647390acf98025b8a489b6bb828ac24a7c4e27035eeb3834f18ceba4f84d1b0440b2872e820790500de5acc3ce5368d317ac563471d9ee5c70f593ac13
data/ChangeLog ADDED
@@ -0,0 +1,35 @@
1
+ 2024-12-29 vaiorabbit <http://twitter.com/vaiorabbit>
2
+
3
+ * Added sample_softbody.rb
4
+
5
+ 2024-12-22 vaiorabbit <http://twitter.com/vaiorabbit>
6
+
7
+ * https://github.com/erincatto/box2d/commit/f377034920c42a26cd498c0a0b1b2e9f2b064989
8
+
9
+ 2024-12-14 vaiorabbit <http://twitter.com/vaiorabbit>
10
+
11
+ * https://github.com/erincatto/box2d/commit/f0763aca7d4dfa8f1c19c2c4a9e66fa6e93ea32e
12
+
13
+ 2024-10-27 vaiorabbit <http://twitter.com/vaiorabbit>
14
+
15
+ * https://github.com/erincatto/box2d/commit/87e13e44378afc42598a4f7e8b2d5289982cdda7
16
+
17
+ 2024-10-14 vaiorabbit <http://twitter.com/vaiorabbit>
18
+
19
+ * https://github.com/erincatto/box2d/commit/aee18c76a3c4442b18730097b9660f0fe866e6b1
20
+
21
+ 2024-10-06 vaiorabbit <http://twitter.com/vaiorabbit>
22
+
23
+ * https://github.com/erincatto/box2d/commit/b864f533c3d851d5c7b55fd6fb4bac00466ff854
24
+
25
+ 2024-09-29 vaiorabbit <http://twitter.com/vaiorabbit>
26
+
27
+ * https://github.com/erincatto/box2d/commit/df7373c08a41b7a4ba6edd5d4be200675a948176
28
+
29
+ 2024-09-22 vaiorabbit <http://twitter.com/vaiorabbit>
30
+
31
+ * https://github.com/erincatto/box2d/commit/c56a76daa50726d2e47aad6bb648473ee14d822e
32
+
33
+ 2024-08-18 vaiorabbit <http://twitter.com/vaiorabbit>
34
+
35
+ * make public
data/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ Ruby-Box2D : Box2D bindings for Ruby
2
+ Copyright (c) 2024-2025 vaiorabbit <http://twitter.com/vaiorabbit>
3
+
4
+ This software is provided 'as-is', without any express or implied
5
+ warranty. In no event will the authors be held liable for any damages
6
+ arising from the use of this software.
7
+
8
+ Permission is granted to anyone to use this software for any purpose,
9
+ including commercial applications, and to alter it and redistribute it
10
+ freely, subject to the following restrictions:
11
+
12
+ 1. The origin of this software must not be misrepresented; you must not
13
+ claim that you wrote the original software. If you use this software
14
+ in a product, an acknowledgment in the product documentation would be
15
+ appreciated but is not required.
16
+
17
+ 2. Altered source versions must be plainly marked as such, and must not be
18
+ misrepresented as being the original software.
19
+
20
+ 3. This notice may not be removed or altered from any source
21
+ distribution.
data/README.md ADDED
@@ -0,0 +1,50 @@
1
+ <!-- -*- mode:markdown; coding:utf-8; -*- -->
2
+
3
+ # Box2D bindings for Ruby #
4
+
5
+ * Created : 2024-08-18
6
+ * Last modified : 2025-01-01
7
+
8
+ Provides Ruby bindings for Box2D
9
+ * https://box2d.org
10
+ * https://github.com/erincatto/box2d
11
+
12
+ ## Features ##
13
+
14
+ * Generated semi-automatically
15
+ * Based on Ruby/FFI ( https://github.com/ffi/ffi )
16
+ * Pre-built binaries are inside:
17
+ * Windows (x86_64)
18
+ * macOS (x86_64, ARM64)
19
+ * Linux (x86_64, ARM64)
20
+
21
+ ## License ##
22
+
23
+ All shared libraries found in `lib` directory are built on top of Box2D ( https://github.com/erincatto/box2d ) and are available under the MIT License.
24
+ * https://github.com/erincatto/box2d/blob/main/LICENSE
25
+
26
+ All ruby codes here are available under the zlib/libpng License ( http://opensource.org/licenses/Zlib ).
27
+
28
+ ```
29
+ Ruby-Box2D : Box2D bindings for Ruby
30
+ Copyright (c) 2024-2025 vaiorabbit <http://twitter.com/vaiorabbit>
31
+
32
+ This software is provided 'as-is', without any express or implied
33
+ warranty. In no event will the authors be held liable for any damages
34
+ arising from the use of this software.
35
+
36
+ Permission is granted to anyone to use this software for any purpose,
37
+ including commercial applications, and to alter it and redistribute it
38
+ freely, subject to the following restrictions:
39
+
40
+ 1. The origin of this software must not be misrepresented; you must not
41
+ claim that you wrote the original software. If you use this software
42
+ in a product, an acknowledgment in the product documentation would be
43
+ appreciated but is not required.
44
+
45
+ 2. Altered source versions must be plainly marked as such, and must not be
46
+ misrepresented as being the original software.
47
+
48
+ 3. This notice may not be removed or altered from any source
49
+ distribution.
50
+ ```
data/lib/box2d.rb ADDED
@@ -0,0 +1,50 @@
1
+ # Ruby-Box2D : Yet another Box2D wrapper for Ruby
2
+ #
3
+ # * https://github.com/vaiorabbit/box2d-bindings
4
+
5
+ require 'ffi'
6
+ require_relative 'box2d_base.rb'
7
+ require_relative 'box2d_math_functions.rb'
8
+ require_relative 'box2d_math_inline_functions.rb'
9
+ require_relative 'box2d_id.rb'
10
+ require_relative 'box2d_id_inline.rb'
11
+ require_relative 'box2d_collision.rb'
12
+ require_relative 'box2d_collision_inline.rb'
13
+ require_relative 'box2d_types.rb'
14
+ require_relative 'box2d_main.rb'
15
+ require_relative 'box2d_helper.rb'
16
+
17
+ module Box2D
18
+ extend FFI::Library
19
+
20
+ @@box2d_import_done = false
21
+ def self.load_lib(libpath, method_naming: :original)
22
+
23
+ unless @@box2d_import_done
24
+ # Ref.: Using Multiple and Alternate Libraries
25
+ # https://github.com/ffi/ffi/wiki/Using-Multiple-and-Alternate-Libraries
26
+ begin
27
+ lib_paths = [libpath].compact
28
+ ffi_lib_flags :now, :global
29
+ ffi_lib *lib_paths
30
+ setup_symbols(method_naming: method_naming)
31
+ rescue => error
32
+ $stderr.puts("[Warning] Failed to load libraries (#{error}).") if output_error
33
+ end
34
+ end
35
+
36
+ end
37
+
38
+ def self.setup_symbols(method_naming: :original)
39
+ setup_base_symbols(method_naming: method_naming)
40
+ setup_math_functions_symbols(method_naming: method_naming)
41
+ setup_math_inline_functions_symbols(method_naming: method_naming)
42
+ setup_id_symbols(method_naming: method_naming)
43
+ setup_id_inline_symbols(method_naming: method_naming)
44
+ setup_collision_symbols(method_naming: method_naming)
45
+ setup_collision_inline_symbols(method_naming: method_naming)
46
+ setup_types_symbols(method_naming: method_naming)
47
+ setup_main_symbols(method_naming: method_naming)
48
+ end
49
+
50
+ end
data/lib/box2d_base.rb ADDED
@@ -0,0 +1,95 @@
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
+ HASH_INIT = 5381
14
+
15
+ # Enum
16
+
17
+
18
+ # Typedef
19
+
20
+ typedef :pointer, :b2AllocFcn
21
+ typedef :pointer, :b2FreeFcn
22
+ typedef :pointer, :b2AssertFcn
23
+
24
+ # Struct
25
+
26
+ class Version < FFI::Struct
27
+ layout(
28
+ :major, :int,
29
+ :minor, :int,
30
+ :revision, :int,
31
+ )
32
+ def major = self[:major]
33
+ def major=(v) self[:major] = v end
34
+ def minor = self[:minor]
35
+ def minor=(v) self[:minor] = v end
36
+ def revision = self[:revision]
37
+ def revision=(v) self[:revision] = v end
38
+ def self.create_as(_major_, _minor_, _revision_)
39
+ instance = Version.new
40
+ instance[:major] = _major_
41
+ instance[:minor] = _minor_
42
+ instance[:revision] = _revision_
43
+ instance
44
+ end
45
+ end
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
+
61
+ # Function
62
+
63
+ def self.setup_base_symbols(method_naming: :original)
64
+ entries = [
65
+ [:SetAllocator, :b2SetAllocator, [:pointer, :pointer], :void],
66
+ [:GetByteCount, :b2GetByteCount, [], :int],
67
+ [:SetAssertFcn, :b2SetAssertFcn, [:pointer], :void],
68
+ [:InternalAssertFcn, :b2InternalAssertFcn, [:pointer, :pointer, :int], :int],
69
+ [:GetVersion, :b2GetVersion, [], Version.by_value],
70
+ [:CreateTimer, :b2CreateTimer, [], Timer.by_value],
71
+ [:GetTicks, :b2GetTicks, [:pointer], :long_long],
72
+ [:GetMilliseconds, :b2GetMilliseconds, [:pointer], :float],
73
+ [:GetMillisecondsAndReset, :b2GetMillisecondsAndReset, [:pointer], :float],
74
+ [:SleepMilliseconds, :b2SleepMilliseconds, [:int], :void],
75
+ [:Yield, :b2Yield, [], :void],
76
+ [:Hash, :b2Hash, [:uint, :pointer, :int], :uint],
77
+ ]
78
+ entries.each do |entry|
79
+ api_name = if method_naming == :snake_case
80
+ 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
81
+ snake_case_name.gsub!('vector_3', 'vector3_') if snake_case_name.include?('vector_3')
82
+ snake_case_name.gsub!('vector_2', 'vector2_') if snake_case_name.include?('vector_2')
83
+ snake_case_name.chop! if snake_case_name.end_with?('_')
84
+ snake_case_name.to_sym
85
+ else
86
+ entry[0]
87
+ end
88
+ attach_function api_name, entry[1], entry[2], entry[3]
89
+ rescue FFI::NotFoundError => e
90
+ warn "[Warning] Failed to import #{entry[0]} (#{e})."
91
+ end
92
+ end
93
+
94
+ end
95
+