ruby_rpg 0.1.3 → 0.1.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2af1c7ed1b41fa5eaabfdf70e7b3ba0edb82c2af7bf03f5c376e23d8ed16efd1
4
- data.tar.gz: fb36bef8b832479b05401c0eb90522bd255ee40d8ad6357caf75bf40e685322a
3
+ metadata.gz: 7b5803af2d0a171d600991aaf3b4c7ffda6a541c20605ddfa5ca148a2fa12f01
4
+ data.tar.gz: a3c734a69436244dcbddfa80c7c3dcfa0d4acaf51b3ecb2e709ba11936b5ef34
5
5
  SHA512:
6
- metadata.gz: b7976e4dae17174f3483a0ecd4da0fb9ad49a40943d2ad54a31381be28ced45d39c58f5683468f115c37a40d5762603a78121342a44dd16e6b56f87508b6ec94
7
- data.tar.gz: aec55a9871b095a867397b9fe6d78ea0ecf21064c2bc41ec36841818ead2890334ee7faf327942370331f2213c7fb96862898b965e1abfe13cb04045e9a2338e
6
+ metadata.gz: f64ad3415489bb49bb5bc66795556347d68714cbb1191643cef40a5bcd53e64fe346b9dd59496b4b94cd0096b74351c9630543e9240d05bdd49d3fc3dc0d8ba6
7
+ data.tar.gz: 0376c83464b5ddc5b6942d2c8260c8a555b92ce52b12dc0178da4c465eacf8bf9a5b971324b6e172dabfa5ee64555c413beb1060c1ef9449b87b87b03f36d441
@@ -30,6 +30,30 @@ module Engine::Components
30
30
  @source.set_volume(volume)
31
31
  end
32
32
 
33
+ def pitch=(pitch)
34
+ @source.set_pitch(pitch)
35
+ end
36
+
37
+ def looping=(looping)
38
+ @source.set_looping(looping)
39
+ end
40
+
41
+ def duration
42
+ @clip.duration
43
+ end
44
+
45
+ def set_reverb(enabled: true, room_size: 0.5, damping: 0.3, wet: 0.3, dry: 1.0)
46
+ if enabled
47
+ @source.set_reverb(room_size: room_size, damping: damping, wet: wet, dry: dry)
48
+ else
49
+ @source.enable_reverb(false)
50
+ end
51
+ end
52
+
53
+ def add_delay_tap(time_ms:, volume:)
54
+ @source.add_delay_tap(time_ms: time_ms, volume: volume)
55
+ end
56
+
33
57
  def update(delta_time)
34
58
  camera = Engine::Camera.instance
35
59
  local_pos = camera.game_object.world_to_local_coordinate(game_object.pos)
data/lib/engine/debug.rb CHANGED
@@ -3,18 +3,28 @@
3
3
  module Engine
4
4
  module Debug
5
5
  @lines = []
6
+ @spheres = []
6
7
 
7
8
  class << self
8
9
  def line(from, to, color: [1, 1, 1])
9
10
  @lines << { from: from, to: to, color: color }
10
11
  end
11
12
 
13
+ def sphere(center, radius, color: [1, 1, 1], segments: 16)
14
+ @spheres << { center: center, radius: radius, color: color, segments: segments }
15
+ end
16
+
12
17
  def lines
13
18
  @lines
14
19
  end
15
20
 
21
+ def spheres
22
+ @spheres
23
+ end
24
+
16
25
  def clear
17
26
  @lines.clear
27
+ @spheres.clear
18
28
  end
19
29
  end
20
30
  end
@@ -7,7 +7,8 @@ module Rendering
7
7
  class << self
8
8
  def draw(target_framebuffer)
9
9
  lines = Engine::Debug.lines
10
- return if lines.empty?
10
+ spheres = Engine::Debug.spheres
11
+ return if lines.empty? && spheres.empty?
11
12
 
12
13
  update_render_texture_size
13
14
 
@@ -20,8 +21,9 @@ module Rendering
20
21
  line_shader.use
21
22
  line_shader.set_mat4('camera', camera_matrix)
22
23
 
23
- update_vertex_data(lines)
24
- draw_lines(lines.size * 2)
24
+ update_vertex_data(lines, spheres)
25
+ vertex_count = lines.size * 2 + spheres.sum { |s| s[:segments] * 3 * 2 }
26
+ draw_lines(vertex_count)
25
27
 
26
28
  # Composite onto main framebuffer
27
29
  Engine::GL.BindFramebuffer(Engine::GL::FRAMEBUFFER, target_framebuffer)
@@ -54,7 +56,7 @@ module Rendering
54
56
  @render_texture
55
57
  end
56
58
 
57
- def update_vertex_data(lines)
59
+ def update_vertex_data(lines, spheres)
58
60
  vertex_data = []
59
61
 
60
62
  lines.each do |line|
@@ -65,6 +67,10 @@ module Rendering
65
67
  vertex_data << line[:color][0] << line[:color][1] << line[:color][2]
66
68
  end
67
69
 
70
+ spheres.each do |sphere|
71
+ add_sphere_vertices(vertex_data, sphere)
72
+ end
73
+
68
74
  Engine::GL.BindVertexArray(vao)
69
75
  Engine::GL.BindBuffer(Engine::GL::ARRAY_BUFFER, vbo)
70
76
 
@@ -72,6 +78,40 @@ module Rendering
72
78
  Engine::GL.BufferData(Engine::GL::ARRAY_BUFFER, data.bytesize, data, Engine::GL::DYNAMIC_DRAW)
73
79
  end
74
80
 
81
+ def add_sphere_vertices(vertex_data, sphere)
82
+ center = sphere[:center]
83
+ radius = sphere[:radius]
84
+ color = sphere[:color]
85
+ segments = sphere[:segments]
86
+
87
+ # Generate 3 circles (XY, XZ, YZ planes)
88
+ [
89
+ ->(angle) { [Math.cos(angle), Math.sin(angle), 0] }, # XY plane
90
+ ->(angle) { [Math.cos(angle), 0, Math.sin(angle)] }, # XZ plane
91
+ ->(angle) { [0, Math.cos(angle), Math.sin(angle)] } # YZ plane
92
+ ].each do |plane_fn|
93
+ segments.times do |i|
94
+ angle1 = (i.to_f / segments) * 2 * Math::PI
95
+ angle2 = ((i + 1).to_f / segments) * 2 * Math::PI
96
+
97
+ offset1 = plane_fn.call(angle1)
98
+ offset2 = plane_fn.call(angle2)
99
+
100
+ # Line start vertex
101
+ vertex_data << (center[0] + offset1[0] * radius)
102
+ vertex_data << (center[1] + offset1[1] * radius)
103
+ vertex_data << (center[2] + offset1[2] * radius)
104
+ vertex_data << color[0] << color[1] << color[2]
105
+
106
+ # Line end vertex
107
+ vertex_data << (center[0] + offset2[0] * radius)
108
+ vertex_data << (center[1] + offset2[1] * radius)
109
+ vertex_data << (center[2] + offset2[2] * radius)
110
+ vertex_data << color[0] << color[1] << color[2]
111
+ end
112
+ end
113
+ end
114
+
75
115
  def draw_lines(vertex_count)
76
116
  Engine::GL.BindVertexArray(vao)
77
117
  Engine::GL.DrawArrays(Engine::GL::LINES, 0, vertex_count)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_rpg
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Max Hatfull
@@ -15,14 +15,14 @@ dependencies:
15
15
  requirements:
16
16
  - - "~>"
17
17
  - !ruby/object:Gem::Version
18
- version: 0.4.0
18
+ version: 0.5.0
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - "~>"
24
24
  - !ruby/object:Gem::Version
25
- version: 0.4.0
25
+ version: 0.5.0
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: concurrent-ruby
28
28
  requirement: !ruby/object:Gem::Requirement