Sha256: c36bd805070fc9b88cab19fba0ffd4a3c23430734682f6b88b1d3cade57d5b25
Contents?: true
Size: 858 Bytes
Versions: 2
Compression:
Stored size: 858 Bytes
Contents
# frozen_string_literal: true module Engine::Components class AudioSource < Engine::Component def initialize(clip, radius: 1000) @clip = clip @radius = radius @source = NativeAudio::AudioSource.new(clip) end def play @source.play end def stop @source.stop end def pause @source.pause end def resume @source.resume end def volume=(volume) @source.set_volume(volume) end def update(delta_time) camera = Engine::Camera.instance local_pos = camera.game_object.world_to_local_coordinate(game_object.pos) angle = Math.atan2(local_pos[0], -local_pos[2]) * 180 / Math::PI angle = (angle + 360) % 360 distance = (local_pos.magnitude * 255 / @radius).clamp(0, 255) @source.set_pos(angle, distance) end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
ruby_rpg-0.0.4 | lib/engine/components/audio_source.rb |
ruby_rpg-0.0.3 | lib/engine/components/audio_source.rb |