blackbook3d 0.5.0

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.
Files changed (134) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +341 -0
  3. data/README.md +92 -0
  4. data/SETUP.md +70 -0
  5. data/data/assets/Texture/A011a.tga +0 -0
  6. data/data/assets/untitled.awp3d +0 -0
  7. data/data/cube.mtl +12 -0
  8. data/data/cube.obj +246 -0
  9. data/data/cube.raw +12 -0
  10. data/data/engine_conf.json +9 -0
  11. data/data/fighter.raw +19198 -0
  12. data/data/font/100.raw +78 -0
  13. data/data/font/101.raw +99 -0
  14. data/data/font/102.raw +58 -0
  15. data/data/font/103.raw +258 -0
  16. data/data/font/104.raw +55 -0
  17. data/data/font/105.raw +48 -0
  18. data/data/font/106.raw +72 -0
  19. data/data/font/107.raw +6 -0
  20. data/data/font/108.raw +2 -0
  21. data/data/font/109.raw +105 -0
  22. data/data/font/110.raw +55 -0
  23. data/data/font/111.raw +96 -0
  24. data/data/font/112.raw +78 -0
  25. data/data/font/113.raw +78 -0
  26. data/data/font/114.raw +53 -0
  27. data/data/font/115.raw +132 -0
  28. data/data/font/116.raw +56 -0
  29. data/data/font/117.raw +54 -0
  30. data/data/font/118.raw +5 -0
  31. data/data/font/119.raw +11 -0
  32. data/data/font/120.raw +10 -0
  33. data/data/font/121.raw +6 -0
  34. data/data/font/122.raw +6 -0
  35. data/data/font/33.raw +118 -0
  36. data/data/font/37.raw +194 -0
  37. data/data/font/38.raw +200 -0
  38. data/data/font/39.raw +4 -0
  39. data/data/font/40.raw +48 -0
  40. data/data/font/41.raw +48 -0
  41. data/data/font/42.raw +226 -0
  42. data/data/font/43.raw +10 -0
  43. data/data/font/45.raw +2 -0
  44. data/data/font/46.raw +46 -0
  45. data/data/font/47.raw +2 -0
  46. data/data/font/48.raw +96 -0
  47. data/data/font/49.raw +2 -0
  48. data/data/font/50.raw +87 -0
  49. data/data/font/51.raw +145 -0
  50. data/data/font/52.raw +15 -0
  51. data/data/font/53.raw +76 -0
  52. data/data/font/54.raw +121 -0
  53. data/data/font/55.raw +4 -0
  54. data/data/font/56.raw +194 -0
  55. data/data/font/57.raw +133 -0
  56. data/data/font/61.raw +4 -0
  57. data/data/font/63.raw +117 -0
  58. data/data/font/65.raw +11 -0
  59. data/data/font/66.raw +108 -0
  60. data/data/font/67.raw +96 -0
  61. data/data/font/68.raw +54 -0
  62. data/data/font/69.raw +10 -0
  63. data/data/font/70.raw +8 -0
  64. data/data/font/71.raw +100 -0
  65. data/data/font/72.raw +10 -0
  66. data/data/font/73.raw +2 -0
  67. data/data/font/74.raw +39 -0
  68. data/data/font/75.raw +9 -0
  69. data/data/font/76.raw +4 -0
  70. data/data/font/77.raw +13 -0
  71. data/data/font/78.raw +8 -0
  72. data/data/font/79.raw +96 -0
  73. data/data/font/80.raw +56 -0
  74. data/data/font/81.raw +124 -0
  75. data/data/font/82.raw +94 -0
  76. data/data/font/83.raw +120 -0
  77. data/data/font/84.raw +6 -0
  78. data/data/font/85.raw +76 -0
  79. data/data/font/86.raw +5 -0
  80. data/data/font/87.raw +11 -0
  81. data/data/font/88.raw +10 -0
  82. data/data/font/89.raw +7 -0
  83. data/data/font/90.raw +6 -0
  84. data/data/font/91.raw +6 -0
  85. data/data/font/93.raw +6 -0
  86. data/data/font/94.raw +5 -0
  87. data/data/font/95.raw +2 -0
  88. data/data/font/97.raw +174 -0
  89. data/data/font/98.raw +100 -0
  90. data/data/font/99.raw +96 -0
  91. data/data/ground.raw +12 -0
  92. data/data/man.mtl +12 -0
  93. data/data/man.obj +7547 -0
  94. data/data/robo.mtl +11 -0
  95. data/data/robo.obj +42065 -0
  96. data/data/space.json +49 -0
  97. data/data/sphere.raw +1216 -0
  98. data/data/texture/Charcoal-2.jpg +0 -0
  99. data/data/texture/man.png +0 -0
  100. data/data/texture/man.tif +0 -0
  101. data/data/texture/t.jpg +0 -0
  102. data/data/texture/wood.jpg +0 -0
  103. data/data/texture/wood.png +0 -0
  104. data/data/texture/x.jpg +0 -0
  105. data/data/untitled.raw +124 -0
  106. data/data/w.raw +12474 -0
  107. data/data/wings.raw +45670 -0
  108. data/lib/BlackBook/anim.rb +184 -0
  109. data/lib/BlackBook/b3dobject.rb +475 -0
  110. data/lib/BlackBook/base.rb +79 -0
  111. data/lib/BlackBook/camera.rb +202 -0
  112. data/lib/BlackBook/color.rb +29 -0
  113. data/lib/BlackBook/constants.rb +327 -0
  114. data/lib/BlackBook/engine.rb +172 -0
  115. data/lib/BlackBook/functions.rb +650 -0
  116. data/lib/BlackBook/light.rb +91 -0
  117. data/lib/BlackBook/logger.rb +86 -0
  118. data/lib/BlackBook/material.rb +98 -0
  119. data/lib/BlackBook/registry.rb +71 -0
  120. data/lib/BlackBook/space.rb +396 -0
  121. data/lib/BlackBook/stime.rb +64 -0
  122. data/lib/Plugins/string_color.rb +74 -0
  123. data/lib/blackbook/version.rb +5 -0
  124. data/lib/blackbook.rb +52 -0
  125. data/lib/plugins.rb +32 -0
  126. data/lib/ui/button.rb +115 -0
  127. data/lib/ui/edit.rb +105 -0
  128. data/lib/ui/text.rb +284 -0
  129. data/lib/ui/ui.rb +88 -0
  130. data/lib/ui/ui_element.rb +45 -0
  131. data/lib/ui/window.rb +138 -0
  132. data/lib/ui.rb +30 -0
  133. data/lib/zipfile.rb +27 -0
  134. metadata +254 -0
data/lib/ui/window.rb ADDED
@@ -0,0 +1,138 @@
1
+ ##############################################################################
2
+ # BlackBook 3D Engine
3
+ # Copyright (C) 2015 Sinan ISLEKDEMIR
4
+ #
5
+ # This program is free software; you can redistribute it and/or modify
6
+ # it under the terms of the GNU General Public License as published by
7
+ # the Free Software Foundation; either version 2 of the License, or
8
+ # (at your option) any later version.
9
+ #
10
+ # This program is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ # GNU General Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU General Public License along
16
+ # with this program; if not, write to the Free Software Foundation, Inc.,
17
+ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18
+ ##############################################################################
19
+
20
+ ################################################################
21
+ # Project BlackBook
22
+ # Lead Engineer: Sinan ISLEKDEMIR
23
+ # Simulation Engine Ruby Sources
24
+ ################################################################
25
+
26
+ require 'BlackBook/functions'
27
+ require 'ui/ui_element'
28
+ require 'ui/text'
29
+ require 'ui/button.rb'
30
+ require 'ui/edit.rb'
31
+
32
+ module UI
33
+ #
34
+ # BB Window Class
35
+ #
36
+ # @attr title_bar [BBText] Title Bar Element
37
+ # @attr items [Hash] Items of widgets inside window
38
+ # @attr font_size [Integer] Font size in pixels
39
+ # @author [sinan]
40
+ #
41
+ class Window < UiElement
42
+ attr_accessor :title_bar, :items, :font_size
43
+
44
+ #
45
+ # Initialize Window Element
46
+ # @param options [Hash] (x, y, z, w, h, title, font_size)
47
+ #
48
+ # @return [Hash] Empty Items Hash
49
+ def initialize( opts = {} )
50
+ super
51
+ @font_size = opts[:font_size] || 13
52
+ title = opts[:title] || ''
53
+ @title_bar = Text.new(x: 0, y: 0, w: 0, h: @font_size, title: title)
54
+ @title_bar.d = 2
55
+ @title_bar.position.x = 5
56
+ @title_bar.position.y = @font_size - 5
57
+ @title_bar.color.set(0, 1.0, 0)
58
+ @title_bar.position.z = 2
59
+ @items = {}
60
+ end
61
+
62
+ #
63
+ # Create Button
64
+ # @param options [Hash] (x, y, z, w, h, title, font_size, name)
65
+ #
66
+ # @return [type] [description]
67
+ def create_button( opts = {} )
68
+ b = Button.new( opts )
69
+ b.z = 2
70
+ @items[opts[:name]] = b
71
+ return b
72
+ end
73
+
74
+ #
75
+ # Create Edit
76
+ # @param options [Hash] (x, y, z, w, h, value, font_size, name)
77
+ #
78
+ # @return [type] [description]
79
+ def create_edit( opts = {})
80
+ e = Edit.new( opts )
81
+ e.z = 2
82
+ @items[opts[:name]] = e
83
+ return e
84
+ end
85
+
86
+ #
87
+ # [create_label description]
88
+ # @param options [Hash] (x, y, z, w, h, title)
89
+ #
90
+ # @return [BBText] Created label object
91
+ def create_label( opts = {} )
92
+ text = Text.new( opts )
93
+ text.h = opts[:h] || 13
94
+ text.position.x = opts[:x]
95
+ text.position.y = opts[:y]
96
+ text.d = 2
97
+ @items[opts[:name]] = text
98
+ return text
99
+ end
100
+
101
+ #
102
+ # Mouse event handler
103
+ # @param x [Integer] Cursor X Position
104
+ # @param y [Integer] Cursor Y Position
105
+ # @param right_b [Integer] Right Mouse Button
106
+ # @param left_b [Integer] Left Mouse Button
107
+ # @param middle_b [Integer] Middle Mouse Button
108
+ #
109
+ def mouse(x, y, right_b, left_b, middle_b)
110
+ @items.each do |name, item|
111
+ if item.respond_to?(:mouse)
112
+ item.mouse(x - @x, y - @y, right_b, left_b, middle_b)
113
+ end
114
+ end
115
+ end
116
+
117
+ #
118
+ # Render Function
119
+ #
120
+ def render
121
+ options = {
122
+ x: @x, y: @y, z: 1 / (10000 - @z.to_f),
123
+ width: @w, height: @h,
124
+ color: BlackBook::CVector.new(1.0, 1.0, 1.0, 0.8),
125
+ border: true, border_color: BlackBook::CVector.new(218, 112, 214),
126
+ border_size: 3
127
+ }
128
+ BlackBook.draw_box_2d(options)
129
+ GL.PushMatrix
130
+ GL.Translatef(@x, @y, 1 / (10000 - @z.to_f))
131
+ @title_bar.render
132
+ @items.each do |name, item|
133
+ item.render
134
+ end
135
+ GL.PopMatrix
136
+ end
137
+ end
138
+ end
data/lib/ui.rb ADDED
@@ -0,0 +1,30 @@
1
+ ##############################################################################
2
+ # BlackBook 3D Engine
3
+ # Copyright (C) 2015 Sinan ISLEKDEMIR
4
+ #
5
+ # This program is free software; you can redistribute it and/or modify
6
+ # it under the terms of the GNU General Public License as published by
7
+ # the Free Software Foundation; either version 2 of the License, or
8
+ # (at your option) any later version.
9
+ #
10
+ # This program is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ # GNU General Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU General Public License along
16
+ # with this program; if not, write to the Free Software Foundation, Inc.,
17
+ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18
+ ##############################################################################
19
+
20
+ ################################################################
21
+ # Project BlackBook
22
+ # Lead Engineer: Sinan ISLEKDEMIR
23
+ # Simulation Engine Ruby Sources
24
+ ################################################################
25
+
26
+ # Main UI module, may be discontinued?
27
+ module UI
28
+ extend self
29
+ VERSION = '0.0.1'.freeze
30
+ end
data/lib/zipfile.rb ADDED
@@ -0,0 +1,27 @@
1
+ class ZipFile
2
+ require 'zip'
3
+ require 'zip/filesystem'
4
+
5
+ attr_accessor :zip, :zip_arr
6
+ def initialize(f)
7
+ @zip_arr = []
8
+ @zip = Zip::File.new(f)
9
+ @zip.each do |x|
10
+ @zip_arr << x
11
+ end
12
+ end
13
+ def namelist()
14
+ return @zip_arr
15
+ end
16
+
17
+ def write(folder, name) # fname in zip
18
+ f = open(folder + "/" + name.to_s, "wb+")
19
+ f.write(read(name))
20
+ f.close
21
+ return folder + "/" + name.to_s
22
+ end
23
+
24
+ def read(fname_in_zip)
25
+ return @zip.file.read(fname_in_zip.to_s).force_encoding('UTF-8')
26
+ end
27
+ end
metadata ADDED
@@ -0,0 +1,254 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: blackbook3d
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.5.0
5
+ platform: ruby
6
+ authors:
7
+ - Sinan ISLEKDEMIR
8
+ bindir: bin
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: glfw
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: '3.3'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - "~>"
24
+ - !ruby/object:Gem::Version
25
+ version: '3.3'
26
+ - !ruby/object:Gem::Dependency
27
+ name: opengl
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: '0.10'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '0.10'
40
+ - !ruby/object:Gem::Dependency
41
+ name: mini_magick
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '5.3'
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '5.3'
54
+ - !ruby/object:Gem::Dependency
55
+ name: rubyzip
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '3.0'
61
+ type: :runtime
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '3.0'
68
+ - !ruby/object:Gem::Dependency
69
+ name: yard
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '0.9'
75
+ type: :development
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '0.9'
82
+ description: BlackBook is a pure Ruby 3D library that enables developers to write
83
+ 3D applications with the ease of Ruby. Features include OpenGL rendering, physics
84
+ simulation, camera controls, and material/texture support.
85
+ email:
86
+ - sinan@islekdemir.com
87
+ executables: []
88
+ extensions: []
89
+ extra_rdoc_files: []
90
+ files:
91
+ - LICENSE
92
+ - README.md
93
+ - SETUP.md
94
+ - data/assets/Texture/A011a.tga
95
+ - data/assets/untitled.awp3d
96
+ - data/cube.mtl
97
+ - data/cube.obj
98
+ - data/cube.raw
99
+ - data/engine_conf.json
100
+ - data/fighter.raw
101
+ - data/font/100.raw
102
+ - data/font/101.raw
103
+ - data/font/102.raw
104
+ - data/font/103.raw
105
+ - data/font/104.raw
106
+ - data/font/105.raw
107
+ - data/font/106.raw
108
+ - data/font/107.raw
109
+ - data/font/108.raw
110
+ - data/font/109.raw
111
+ - data/font/110.raw
112
+ - data/font/111.raw
113
+ - data/font/112.raw
114
+ - data/font/113.raw
115
+ - data/font/114.raw
116
+ - data/font/115.raw
117
+ - data/font/116.raw
118
+ - data/font/117.raw
119
+ - data/font/118.raw
120
+ - data/font/119.raw
121
+ - data/font/120.raw
122
+ - data/font/121.raw
123
+ - data/font/122.raw
124
+ - data/font/33.raw
125
+ - data/font/37.raw
126
+ - data/font/38.raw
127
+ - data/font/39.raw
128
+ - data/font/40.raw
129
+ - data/font/41.raw
130
+ - data/font/42.raw
131
+ - data/font/43.raw
132
+ - data/font/45.raw
133
+ - data/font/46.raw
134
+ - data/font/47.raw
135
+ - data/font/48.raw
136
+ - data/font/49.raw
137
+ - data/font/50.raw
138
+ - data/font/51.raw
139
+ - data/font/52.raw
140
+ - data/font/53.raw
141
+ - data/font/54.raw
142
+ - data/font/55.raw
143
+ - data/font/56.raw
144
+ - data/font/57.raw
145
+ - data/font/61.raw
146
+ - data/font/63.raw
147
+ - data/font/65.raw
148
+ - data/font/66.raw
149
+ - data/font/67.raw
150
+ - data/font/68.raw
151
+ - data/font/69.raw
152
+ - data/font/70.raw
153
+ - data/font/71.raw
154
+ - data/font/72.raw
155
+ - data/font/73.raw
156
+ - data/font/74.raw
157
+ - data/font/75.raw
158
+ - data/font/76.raw
159
+ - data/font/77.raw
160
+ - data/font/78.raw
161
+ - data/font/79.raw
162
+ - data/font/80.raw
163
+ - data/font/81.raw
164
+ - data/font/82.raw
165
+ - data/font/83.raw
166
+ - data/font/84.raw
167
+ - data/font/85.raw
168
+ - data/font/86.raw
169
+ - data/font/87.raw
170
+ - data/font/88.raw
171
+ - data/font/89.raw
172
+ - data/font/90.raw
173
+ - data/font/91.raw
174
+ - data/font/93.raw
175
+ - data/font/94.raw
176
+ - data/font/95.raw
177
+ - data/font/97.raw
178
+ - data/font/98.raw
179
+ - data/font/99.raw
180
+ - data/ground.raw
181
+ - data/man.mtl
182
+ - data/man.obj
183
+ - data/robo.mtl
184
+ - data/robo.obj
185
+ - data/space.json
186
+ - data/sphere.raw
187
+ - data/texture/Charcoal-2.jpg
188
+ - data/texture/man.png
189
+ - data/texture/man.tif
190
+ - data/texture/t.jpg
191
+ - data/texture/wood.jpg
192
+ - data/texture/wood.png
193
+ - data/texture/x.jpg
194
+ - data/untitled.raw
195
+ - data/w.raw
196
+ - data/wings.raw
197
+ - lib/BlackBook/anim.rb
198
+ - lib/BlackBook/b3dobject.rb
199
+ - lib/BlackBook/base.rb
200
+ - lib/BlackBook/camera.rb
201
+ - lib/BlackBook/color.rb
202
+ - lib/BlackBook/constants.rb
203
+ - lib/BlackBook/engine.rb
204
+ - lib/BlackBook/functions.rb
205
+ - lib/BlackBook/light.rb
206
+ - lib/BlackBook/logger.rb
207
+ - lib/BlackBook/material.rb
208
+ - lib/BlackBook/registry.rb
209
+ - lib/BlackBook/space.rb
210
+ - lib/BlackBook/stime.rb
211
+ - lib/Plugins/string_color.rb
212
+ - lib/blackbook.rb
213
+ - lib/blackbook/version.rb
214
+ - lib/plugins.rb
215
+ - lib/ui.rb
216
+ - lib/ui/button.rb
217
+ - lib/ui/edit.rb
218
+ - lib/ui/text.rb
219
+ - lib/ui/ui.rb
220
+ - lib/ui/ui_element.rb
221
+ - lib/ui/window.rb
222
+ - lib/zipfile.rb
223
+ homepage: https://github.com/sinanislekdemir/blackbook
224
+ licenses:
225
+ - GPL-2.0
226
+ metadata:
227
+ homepage_uri: https://github.com/sinanislekdemir/blackbook
228
+ source_code_uri: https://github.com/sinanislekdemir/blackbook
229
+ changelog_uri: https://github.com/sinanislekdemir/blackbook/blob/master/README.md
230
+ post_install_message: "\n====================================================================\nThank
231
+ you for installing BlackBook 3D Engine!\n\nThis version has been modernized for
232
+ Ruby 3.4+ with updated gems:\n- GLFW 3.3.2 (modern window/input handling)\n- MiniMagick
233
+ (lightweight texture loading)\n- Updated APIs and improved collision detection\n\nGet
234
+ started:\n require 'blackbook'\n \nView samples: https://github.com/sinanislekdemir/blackbook/tree/master/samples\nDocumentation:
235
+ Run 'yard doc' to generate docs\n\nSystem dependencies (Ubuntu/Debian):\n sudo
236
+ apt-get install libglfw3-dev imagemagick\n====================================================================\n\n"
237
+ rdoc_options: []
238
+ require_paths:
239
+ - lib
240
+ required_ruby_version: !ruby/object:Gem::Requirement
241
+ requirements:
242
+ - - ">="
243
+ - !ruby/object:Gem::Version
244
+ version: 3.0.0
245
+ required_rubygems_version: !ruby/object:Gem::Requirement
246
+ requirements:
247
+ - - ">="
248
+ - !ruby/object:Gem::Version
249
+ version: '0'
250
+ requirements: []
251
+ rubygems_version: 3.6.9
252
+ specification_version: 4
253
+ summary: Pure Ruby 3D Engine
254
+ test_files: []