ezii 0.0.0.1 → 1.0.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 (50) hide show
  1. checksums.yaml +5 -5
  2. data/eezee-3-aka-game-x-engine.zip +0 -0
  3. data/eezee-3-aka-game-x-engine/README.md +5 -0
  4. data/eezee-3-aka-game-x-engine/managables/programs/game_aided_manufacturing/functions/base_command.rb +20 -0
  5. data/eezee-3-aka-game-x-engine/managables/programs/game_aided_manufacturing/functions/mouse_y_axis_to_3d_z_axis.rb +4 -0
  6. data/eezee-3-aka-game-x-engine/managables/programs/game_aided_manufacturing/functions/rotate_camera_axis_using_mouse_drag.rb +37 -0
  7. data/eezee-3-aka-game-x-engine/managables/programs/game_aided_manufacturing/functions/selection_cube.rb +35 -0
  8. data/eezee-3-aka-game-x-engine/managables/programs/game_aided_manufacturing/gam.rb +467 -0
  9. data/eezee-3-aka-game-x-engine/managables/programs/game_aided_manufacturing/gems.locked +77 -0
  10. data/eezee-3-aka-game-x-engine/managables/programs/game_aided_manufacturing/gems.rb +10 -0
  11. data/eezee-3-aka-game-x-engine/managables/programs/game_aided_manufacturing/lib/drb_server.rb +13 -0
  12. data/eezee-3-aka-game-x-engine/managables/programs/game_aided_manufacturing/lib/mittsu_monkeypatches/box_geometry.rb +5 -0
  13. data/eezee-3-aka-game-x-engine/managables/programs/game_aided_manufacturing/runnable.rb +9 -0
  14. data/eezee-3-aka-game-x-engine/managables/programs/game_aided_manufacturing/shapes/cube.rb +33 -0
  15. data/eezee-3-aka-game-x-engine/managables/programs/game_aided_manufacturing/sig/runable.rbi +9 -0
  16. data/eezee-3-aka-game-x-engine/managables/programs/game_aided_manufacturing/test.sh +5 -0
  17. data/eezee-3-aka-game-x-engine/managables/programs/game_aided_manufacturing/test/commands/test_selection_cube.rb +31 -0
  18. data/eezee-3-aka-game-x-engine/managables/programs/game_aided_manufacturing/test/test_command_remapping.rb +30 -0
  19. data/eezee-3-aka-game-x-engine/managables/programs/game_aided_manufacturing/test/test_helper.rb +75 -0
  20. data/eezee-3-aka-game-x-engine/managables/services/chat-bot-integrations/chat.txt +15 -0
  21. data/eezee-3-aka-game-x-engine/managables/services/chat-bot-integrations/chatbot.rb +718 -0
  22. data/eezee-3-aka-game-x-engine/managables/services/chat-bot-integrations/gems.locked +50 -0
  23. data/eezee-3-aka-game-x-engine/managables/services/chat-bot-integrations/gems.rb +13 -0
  24. data/eezee-3-aka-game-x-engine/managables/services/chat-bot-integrations/setup-mac-os-x.sh +0 -0
  25. data/eezee-3-aka-game-x-engine/managables/services/chat-bot-integrations/setup.sh +1 -0
  26. data/eezee-3-aka-game-x-engine/managables/services/chat-bot-integrations/start.sh +3 -0
  27. data/eezee-3-aka-game-x-engine/managables/services/error-inspect/simplest-log +1 -0
  28. data/eezee-3-aka-game-x-engine/managables/services/error-inspect/simplest-log-init +1 -0
  29. data/eezee-3-aka-game-x-engine/managables/services/livestream-interactive/Twitch.Tv/gems.locked +17 -0
  30. data/eezee-3-aka-game-x-engine/managables/services/livestream-interactive/Twitch.Tv/gems.rb +5 -0
  31. data/eezee-3-aka-game-x-engine/managables/services/livestream-interactive/Twitch.Tv/twitch_zircon.rb +112 -0
  32. data/eezee-3-aka-game-x-engine/managables/services/stdlib-dot-com/koma/qanda-api@dev/README.md +3 -0
  33. data/eezee-3-aka-game-x-engine/managables/services/stdlib-dot-com/koma/qanda-api@dev/functions/__main__.js +58 -0
  34. data/eezee-3-aka-game-x-engine/managables/services/stdlib-dot-com/koma/qanda-api@dev/functions/black-out-random-word.js +74 -0
  35. data/eezee-3-aka-game-x-engine/managables/services/stdlib-dot-com/koma/qanda-api@dev/functions/random-sentence.js +57 -0
  36. data/eezee-3-aka-game-x-engine/managables/services/stdlib-dot-com/koma/qanda-api@dev/functions/random-wikipedia-page.js +25 -0
  37. data/eezee-3-aka-game-x-engine/managables/services/stdlib-dot-com/koma/qanda-api@dev/functions/random-words.js +34 -0
  38. data/eezee-3-aka-game-x-engine/managables/services/stdlib-dot-com/koma/qanda-api@dev/functions/rare-enough-word.js +41 -0
  39. data/eezee-3-aka-game-x-engine/managables/services/stdlib-dot-com/koma/qanda-api@dev/functions/wikipedia-page.js +35 -0
  40. data/eezee-3-aka-game-x-engine/managables/services/stdlib-dot-com/koma/qanda-api@dev/package.json +20 -0
  41. data/eezee-3-aka-game-x-engine/managables/services/stdlib-dot-com/koma/qanda-api@dev/statistics/count-word.js +12 -0
  42. data/eezee-3-aka-game-x-engine/managables/services/stdlib-dot-com/koma/qanda-api@dev/utils/log-to-natural-database.js +10 -0
  43. data/eezee-3-aka-game-x-engine/managables/services/stdlib-dot-com/koma/qanda-api@dev/word2vec-models/test-text8-vector.bin +0 -0
  44. data/eezee-3-aka-game-x-engine/managament_interface/gems.locked +13 -0
  45. data/eezee-3-aka-game-x-engine/managament_interface/gems.rb +3 -0
  46. data/eezee-3-aka-game-x-engine/managament_interface/management_interface +4 -0
  47. data/eezee-3-aka-game-x-engine/managament_interface/runnable.rb +30 -0
  48. data/eezee-3-aka-game-x-engine/start.sh +2 -0
  49. data/ezii.gemspec +1 -1
  50. metadata +49 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: dcc661b39e7792d0581ee923e7f8d1f7de366581
4
- data.tar.gz: a89c46f411e06ca657505ae746f9a590381d125c
2
+ SHA256:
3
+ metadata.gz: 04cc97a422d1ad21da0334fd1f5e7be4139e6f8b9e48b413be66d06c3dd0bb35
4
+ data.tar.gz: b32a4caeb05e6bfa31d640fba5318123dc9fa020e07a6869cdd2697b4658a362
5
5
  SHA512:
6
- metadata.gz: 8253dd1953193e65c05c4cee81151bb1e482868c9b8755add2dcc7348937cc4d7fd8fbe89e26c96a940bf7e88025bfa20ecf998ec74b2f7a8c8236cff35c3457
7
- data.tar.gz: 8079e01e22feed0dc898709a036445829274cb422c58f84a7293cf75fcd8f0c7c33bff59d3032348faade07fb51270c5ddd5d522afd376d098fc22bfaa10656e
6
+ metadata.gz: 98c7347c85fde99a3d315946f08688db27a33bedffd7cec293af21ff021a4502698f5a74ebcec1caefd1cddbc5bca7aa2799cffdd81d012f6529a4a82c23e2a4
7
+ data.tar.gz: b173ebd5dab2902fa8a67c33d5f061224082c2b8a138efe907240becfe28418b7dcdc2544f06eecc7af37510de8737fa64d08be2c3152aaf8e17685db6412f4b
@@ -0,0 +1,5 @@
1
+ [![Gitter](https://badges.gitter.im/qanda-api/Lobby.svg)](https://gitter.im/qanda-api/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
2
+
3
+ # gam
4
+
5
+ Game Aided Manufacturing
@@ -0,0 +1,20 @@
1
+
2
+ class BaseCommand
3
+ def initialize(gam_main_instance)
4
+ @active = true
5
+ @gam_main_instance = gam_main_instance
6
+ end
7
+
8
+ def active?
9
+ @active
10
+ end
11
+
12
+ def finish
13
+ end
14
+
15
+ def mouse_down(vector)
16
+ end
17
+
18
+ def mouse_up(vector)
19
+ end
20
+ end
@@ -0,0 +1,4 @@
1
+ require_relative './base_command.rb'
2
+
3
+ class MouseYAxisTo3dZAxis < BaseCommand
4
+ end
@@ -0,0 +1,37 @@
1
+
2
+ class RotateCameraAxisUsingMouseDrag
3
+ def initialize(gam_main_instance)
4
+ @active = true
5
+ @gam_main_instance = gam_main_instance
6
+ end
7
+
8
+ def active?
9
+ @active
10
+ end
11
+
12
+ def finish
13
+ @active = false
14
+ end
15
+
16
+ def mouse_down(vector)
17
+ @mouse_down = true
18
+ end
19
+
20
+ def mouse_move(vector)
21
+ unless @last_point.nil?
22
+ difference_vector = @last_point.sub(vector)
23
+
24
+ @gam_main_instance.camera.rotation.x += difference_vector.x
25
+ @gam_main_instance.camera.rotation.y += difference_vector.y
26
+ end
27
+
28
+ if @mouse_down
29
+ @last_point = vector
30
+ end
31
+ end
32
+
33
+ def mouse_up(vector)
34
+ @mouse_down = false
35
+ finish
36
+ end
37
+ end
@@ -0,0 +1,35 @@
1
+ require_relative '../shapes/cube'
2
+
3
+ class SelectionCube
4
+ def initialize(gam_main_instance)
5
+ @active = true
6
+ @gam_main_instance = gam_main_instance
7
+ end
8
+
9
+ def active?
10
+ @active
11
+ end
12
+
13
+ def finish
14
+ @active = false
15
+
16
+ difference_vector = @second_point.sub(@first_point)
17
+
18
+ z_size = 2 # unsure how to tackle z size for now, so i'll set it to a default 2 until i found a better solution, then it would be `difference_vector.z.abs`
19
+ size_vector = Mittsu::Vector3.new(difference_vector.x.abs, difference_vector.y.abs, z_size)
20
+
21
+
22
+ @selection_cube = Cube.new(size_vector: size_vector)
23
+ @selection_cube.position = @first_point
24
+ @gam_main_instance.scene.add(@selection_cube.mittsu_object)
25
+ end
26
+
27
+ def mouse_down(vector)
28
+ @first_point = vector
29
+ end
30
+
31
+ def mouse_up(vector)
32
+ @second_point = vector
33
+ self.finish
34
+ end
35
+ end
@@ -0,0 +1,467 @@
1
+ require 'mittsu'
2
+ require_relative 'shapes/cube.rb'
3
+ require 'pry-remote'
4
+ require 'ast'
5
+ require 'byebug'
6
+
7
+ # Monkey patching Object like it's the golden old days
8
+
9
+ class Object
10
+ def recursive_find(method_name, &find_condition_block)
11
+ if find_condition_block.call(self)
12
+ return self
13
+ end
14
+
15
+ if self.respond_to?(method_name)
16
+ enumerable = self.public_send(method_name)
17
+ elsif self.respond_to?(:each)
18
+ enumerable = self.each
19
+ else
20
+ return nil
21
+ end
22
+
23
+ enumerable.each do |item|
24
+ result = item.recursive_find(method_name, &find_condition_block)
25
+
26
+ if not result.nil?
27
+ return result
28
+ end
29
+ end
30
+
31
+ return nil
32
+ end
33
+ end
34
+
35
+ class PlayedCommands
36
+ def initialize
37
+ @played_commands = []
38
+ end
39
+
40
+ def played_commands
41
+ @played_commands
42
+ end
43
+
44
+ def any?
45
+ @played_commands.any?
46
+ end
47
+
48
+ def last
49
+ @played_commands.last
50
+ end
51
+
52
+ def push(command)
53
+ @played_commands.push(command)
54
+ end
55
+ end
56
+
57
+ class FunctionWrapper
58
+ attr_accessor :function_class, :file_path
59
+ def initialize(file_path)
60
+ @file_path = file_path
61
+ @abstract_syntax_tree = RubyVM::AbstractSyntaxTree
62
+ .parse_file(file_path)
63
+
64
+ get_command_class_name
65
+ end
66
+
67
+ def get_command_class_name
68
+ # if class is deeper than first level, let's invent Enumerable#recursive_find
69
+ @command_class_node = @abstract_syntax_tree.recursive_find(:children) do |child|
70
+ child.class == RubyVM::AbstractSyntaxTree::Node && child.type == :CLASS
71
+ end
72
+
73
+ @command_class_name = @command_class_node
74
+ .children
75
+ .first
76
+ .pretty_print_inspect
77
+ .match(/:(\w+)\)\Z/)[1]
78
+ end
79
+
80
+ def new_command_instance(gam_main_instance)
81
+ load(@file_path)
82
+
83
+ # SEC-TODO: fix eval, especially when considering downloadable functions
84
+ command_instance = eval(@command_class_name).new(gam_main_instance)
85
+
86
+ return command_instance
87
+ end
88
+
89
+ def command_class_name
90
+ @command_class_name
91
+ end
92
+ end
93
+
94
+ class Gam
95
+ SELECTED_CUBE_COLOR = 0xf4e842
96
+ RED = 0xf441dc
97
+
98
+ # TODO: cubes array needds to be eliminated
99
+ CUBES = []
100
+ attr_accessor :functions, :key_map, :scene, :camera
101
+
102
+ def cubes
103
+ CUBES
104
+ end
105
+
106
+ def initialize
107
+ self.functions = []
108
+ self.key_map = {}
109
+ @played_commands = PlayedCommands.new
110
+ load_local_functions
111
+
112
+ legacy_initialize
113
+ end
114
+
115
+ def played_commands
116
+ @played_commands
117
+ end
118
+
119
+ def execute_command(command_wrapper)
120
+ played_commands.push(command_wrapper.new_command_instance(self))
121
+ end
122
+
123
+ def active_command(&block)
124
+ if played_commands.any? && played_commands.last.active?
125
+ block.call(played_commands.last)
126
+ end
127
+ end
128
+
129
+ def forever
130
+ sleep 1
131
+ while true; yield; end
132
+ end
133
+
134
+ def legacy_initialize
135
+ @cube_index = 0
136
+
137
+ @screen_width = 800
138
+ @screen_height = 600
139
+ aspect = @screen_width.to_f / @screen_height
140
+
141
+ @renderer = Mittsu::OpenGLRenderer.new(
142
+ width: @screen_width,
143
+ height: @screen_height,
144
+ title: 'TOOLX'
145
+ )
146
+
147
+ @scene = Mittsu::Scene.new
148
+
149
+ @camera = Mittsu::PerspectiveCamera.new(75.0, aspect, 0.1, 1000.0)
150
+ @camera.position.z = 5.0
151
+
152
+ @plane = Mittsu::Mesh.new(
153
+ Mittsu::BoxGeometry.new(1.0, 10.0, 10.0),
154
+ Mittsu::MeshBasicMaterial.new(color: 0x00ff00)
155
+ )
156
+
157
+ @scene.add(@plane)
158
+
159
+ waiting_for_w_console_command = false
160
+
161
+ console_function = -> {
162
+ unless waiting_for_w_console_command
163
+ waiting_for_w_console_command = true
164
+ puts 'Enter ruby code that will be evaluated in the current session:'
165
+
166
+ user_input = gets
167
+ puts "Running code u entered #{user_input}"
168
+ eval(user_input)
169
+ waiting_for_w_console_command = false
170
+ end
171
+ }
172
+
173
+ previously_selected_cube_color = nil
174
+ @renderer.window.on_key_typed do |key|
175
+ case key
176
+ when GLFW_KEY_A
177
+ @plane.rotation.x += 0.5
178
+ when GLFW_KEY_B
179
+ @plane.rotation.y += 0.5
180
+ when GLFW_KEY_C
181
+ @plane.rotation.x -= 0.5
182
+ when GLFW_KEY_D
183
+ @plane.rotation.y -= 0.1
184
+ when GLFW_KEY_E
185
+ @camera.position.x -= 0.1
186
+ when GLFW_KEY_F
187
+ @camera.position.y -= 0.1
188
+ when GLFW_KEY_G
189
+ @camera.position.z -= 0.1
190
+ when GLFW_KEY_H
191
+ @camera.position.x += 0.1
192
+ when GLFW_KEY_I
193
+ @camera.position.y += 0.1
194
+ when GLFW_KEY_J
195
+ @camera.position.z += 0.1
196
+ when GLFW_KEY_K
197
+ @scene.add(Cube.new(color: 0x42e5f4).mittsu_object)
198
+ when GLFW_KEY_L
199
+ @scene.add(Cube.new(color: 0xf44941).mittsu_object)
200
+ when GLFW_KEY_M
201
+ @scene.add(Cube.new(color: 0xf441dc).mittsu_object)
202
+ when GLFW_KEY_N
203
+ CUBES[@cube_index].position.x += 0.1
204
+ when GLFW_KEY_O
205
+ CUBES[@cube_index].position.x -= 0.1
206
+ when GLFW_KEY_P
207
+ CUBES[@cube_index].position.y += 0.1
208
+ when GLFW_KEY_R
209
+ CUBES[@cube_index].position.y -= 0.1
210
+ when GLFW_KEY_S
211
+ CUBES[@cube_index].material.color.set_hex(previously_selected_cube_color) if previously_selected_cube_color != nil
212
+ @cube_index += 1
213
+ if @cube_index == CUBES.length
214
+ @cube_index = 0
215
+ end
216
+ previously_selected_cube_color = CUBES[@cube_index].material.color.hex
217
+ CUBES[@cube_index].material.color.set_hex(SELECTED_CUBE_COLOR)
218
+ when GLFW_KEY_T
219
+ CUBES[@cube_index].material.color.set_hex(previously_selected_cube_color) if previously_selected_cube_color != nil
220
+ @cube_index -= 1
221
+ if @cube_index == -1
222
+ @cube_index = [CUBES.length - 1, 0].min
223
+ end
224
+ previously_selected_cube_color = CUBES[@cube_index].material.color.hex
225
+ CUBES[@cube_index].material.color.set_hex(SELECTED_CUBE_COLOR)
226
+ when GLFW_KEY_U
227
+ @scene.remove(@plane)
228
+ when GLFW_KEY_V
229
+ @scene.add(@plane)
230
+ when GLFW_KEY_W
231
+ CUBES.sample.fall_down
232
+
233
+ # while true
234
+ # forever { CUBES.sample.fall_down }
235
+
236
+ # sleep 0.002
237
+
238
+ # CUBES.sample.fall_down
239
+ # end
240
+
241
+ @cube_fall_down = true
242
+
243
+ # byebug
244
+ # instance_exec(&console_function)
245
+ when GLFW_KEY_X
246
+ print_local_functions
247
+ when GLFW_KEY_Y
248
+ remap_functions
249
+ when GLFW_KEY_Z
250
+ # binding.remote_pry
251
+
252
+ self.execute_command(self.key_map['z'])
253
+ # print_remote_functions
254
+ end
255
+ end
256
+
257
+ @renderer.window.on_resize do |width, height|
258
+ on_resize(width, height)
259
+ end
260
+
261
+ raycaster = Mittsu::Raycaster.new
262
+
263
+ object_being_moved_by_mouse = nil
264
+
265
+ previously_selected_cube_color_1 = nil
266
+ @renderer.window.on_mouse_button_pressed do |button, position|
267
+ click_to_world_var = mouse_position_to_3d_position(position)
268
+
269
+ active_command do |command|
270
+ command.mouse_down(click_to_world_var)
271
+ end
272
+
273
+ normalized = normalize_2d_screen_position(position)
274
+ raycaster.set_from_camera(normalized, @camera)
275
+ object_being_moved_by_mouse = raycaster
276
+ .intersect_objects(CUBES)
277
+ .map \
278
+ do |intersected_object_and_meta_information|
279
+ intersected_object_and_meta_information[:object]
280
+ end
281
+ .first
282
+
283
+ if object_being_moved_by_mouse
284
+ previously_selected_cube_color_1 = object_being_moved_by_mouse.material.color
285
+ object_being_moved_by_mouse.material.color = SELECTED_CUBE_COLOR
286
+ end
287
+ end
288
+
289
+
290
+ @renderer.window.on_mouse_move do |position|
291
+ click_to_world_var = mouse_position_to_3d_position(position)
292
+
293
+ active_command do |command|
294
+ command.mouse_move(click_to_world_var)
295
+ end
296
+
297
+ unless object_being_moved_by_mouse.nil?
298
+ object_being_moved_by_mouse.position.x = click_to_world_var.x
299
+ object_being_moved_by_mouse.position.y = click_to_world_var.y
300
+ end
301
+ end
302
+
303
+ @renderer.window.on_mouse_button_released do |_button, position|
304
+ click_to_world_var = mouse_position_to_3d_position(position)
305
+
306
+ active_command do |command|
307
+ command.mouse_up(click_to_world_var)
308
+ end
309
+
310
+ unless object_being_moved_by_mouse.nil?
311
+ object_been_moved_by_mouse = object_being_moved_by_mouse
312
+ object_being_moved_by_mouse = nil
313
+
314
+
315
+ object_been_moved_by_mouse.position.x = click_to_world_var.x
316
+ object_been_moved_by_mouse.position.y = click_to_world_var.y
317
+
318
+ object_been_moved_by_mouse.material.color = previously_selected_cube_color_1
319
+ end
320
+ end
321
+
322
+ @renderer.window.on_scroll do |offset|
323
+ @camera.position.z += offset.y
324
+ end
325
+ end
326
+
327
+ def on_resize(width, height)
328
+ @screen_width = width
329
+ @screen_height = height
330
+
331
+ @renderer.width = width
332
+ @renderer.height = height
333
+
334
+ @camera.aspect = width.to_f / height
335
+ @camera.update_projection_matrix
336
+ end
337
+
338
+ def print_local_functions
339
+ p self.functions
340
+ end
341
+
342
+ def load_local_functions
343
+ Dir[File.dirname(__FILE__) + '/functions/*.rb'].each do |file_path|
344
+ functions.push(FunctionWrapper.new(file_path))
345
+ end
346
+ end
347
+
348
+ def normalize_2d_screen_position(position)
349
+ new_position = Mittsu::Vector2.new
350
+ new_position.x = (((position.x * 2)/@screen_width)*2.0-1.0)
351
+ new_position.y = (((position.y * 2)/@screen_height)*-2.0+1.0)
352
+ new_position
353
+ end
354
+
355
+ def screen_to_world(vector, camera)
356
+ vector.unproject(camera).sub(camera.position).normalize
357
+ distance = -camera.position.z / vector.z
358
+ vector.multiply_scalar(distance).add(camera.position)
359
+ end
360
+
361
+ def mouse_position_to_3d_position(position)
362
+ normalized = normalize_2d_screen_position(position)
363
+ normalized_3d = Mittsu::Vector3.new(
364
+ normalized.x,
365
+ normalized.y,
366
+ 0 # object_been_moved_by_mouse.position.z
367
+ )
368
+
369
+ screen_to_world(normalized_3d, @camera)
370
+ end
371
+
372
+ def remap_functions
373
+ print_local_functions
374
+
375
+ p 'Enter index of unmapped function:'
376
+ index_of_unmapped_function = gets.to_i
377
+
378
+ p 'Enter key to map function to:'
379
+ keyboard_key = gets
380
+
381
+ keyboard_key.chomp!
382
+
383
+ key_map[keyboard_key] = functions[index_of_unmapped_function]
384
+ end
385
+
386
+ def start
387
+ ticks = 0
388
+ @renderer.window.run do
389
+ if @cube_fall_down
390
+ CUBES.sample.fall_down
391
+ end
392
+
393
+ if !( (cube = CUBES).sample.nil? || @plane.nil? )
394
+ cube = TeZiiCube.new(cube)
395
+ plane = TeZiiCube.new(@plane)
396
+
397
+ fail if cube.intersects_with?(plane)
398
+
399
+ if @plane.position.y > CUBES.sample.position.y
400
+ ticks = 0 if ticks > 50
401
+ ticks += 1
402
+ # fail "whatever"
403
+ previous_color = @plane.material.color.hex
404
+
405
+ if ticks > 10
406
+ @plane.material.color.set_hex(0x00ff00)
407
+ else
408
+ @plane.material.color.set_hex(RED)
409
+ end
410
+ end
411
+ end
412
+
413
+ @renderer.render(@scene, @camera)
414
+ end
415
+ end
416
+ end
417
+
418
+ # T for Teamwork
419
+ class TeZiiCube
420
+ attr_accessor :wrapped_3d_object
421
+
422
+ def size
423
+ [
424
+ # fail(self.wrapped_3d_object.instance_variable_get(:@geometry).instance_variable_get(:@parameters).inspect),
425
+ self.wrapped_3d_object.instance_variable_get(:@geometry).instance_variable_get(:@parameters)[:width].inspect,
426
+ self.wrapped_3d_object.instance_variable_get(:@geometry).instance_variable_get(:@parameters)[:height].inspect,
427
+ self.wrapped_3d_object.instance_variable_get(:@geometry).instance_variable_get(:@parameters)[:depth].inspect
428
+ ]
429
+
430
+ end
431
+
432
+ def initialize(wrapped_3d_object)
433
+ @wrapped_3d_object = wrapped_3d_object
434
+ end
435
+
436
+ # type of argument: TeZiiCube
437
+ def intersects_with?(other_t_ezii_cube)
438
+ width = other_t_ezii_cube.size[0]
439
+
440
+
441
+ height = other_t_ezii_cube.size[1]
442
+
443
+ depth = other_t_ezii_cube.size[2]
444
+
445
+ position = other_t_ezii_cube.instance_variable_get(:@wrapped_3d_object).position
446
+
447
+ width_self = self.size[0]
448
+ height_self = self.size[1]
449
+ depth_self = self.size[2]
450
+
451
+ position_self = self.instance_variable_get(:@wrapped_3d_object).position
452
+
453
+
454
+ condition_1 = position.x > self_position.x && position.y > self_position.y && position.z > self_position.z
455
+ condition_2 = true
456
+ # condition_2 = position.y > self_position.x && position.y > self_position.y && position.z > self_position.z
457
+ # condition_3
458
+ # condition_4
459
+ # condition_5
460
+ # condition_6
461
+ condition_7 = width > width_self && height > height_self && depth > depth_self
462
+
463
+ if condition_1 && condition_2 && condition_7
464
+ return true
465
+ end
466
+ end
467
+ end