Class: Rgltf::BufferResolver
- Inherits:
-
Object
- Object
- Rgltf::BufferResolver
- Defined in:
- lib/rgltf/buffer_resolver.rb
Constant Summary collapse
- DATA_URI_PATTERN =
/\Adata:([^,]*?),(.*)\z/m
Instance Method Summary collapse
-
#initialize(base_dir:, glb_bin: nil, supplied_buffers: nil) ⇒ BufferResolver
constructor
A new instance of BufferResolver.
- #release! ⇒ Object
- #resolve(buffer) ⇒ Object
- #resolve_resource(uri) ⇒ Object
Constructor Details
#initialize(base_dir:, glb_bin: nil, supplied_buffers: nil) ⇒ BufferResolver
Returns a new instance of BufferResolver.
9 10 11 12 13 14 |
# File 'lib/rgltf/buffer_resolver.rb', line 9 def initialize(base_dir:, glb_bin: nil, supplied_buffers: nil) @base_dir = base_dir && File.(base_dir) @glb_bin = glb_bin&.b @supplied_buffers = supplied_buffers @cache = {} end |
Instance Method Details
#release! ⇒ Object
28 29 30 31 32 |
# File 'lib/rgltf/buffer_resolver.rb', line 28 def release! @cache.clear @glb_bin = nil @supplied_buffers = nil end |
#resolve(buffer) ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/rgltf/buffer_resolver.rb', line 16 def resolve(buffer) return @cache[buffer.index] if @cache.key?(buffer.index) bytes = supplied(buffer.index) || resolve_uri(buffer) if bytes.bytesize < buffer.byte_length raise FormatError, "buffer #{buffer.index} is shorter than byteLength (#{bytes.bytesize} < #{buffer.byte_length})" end @cache[buffer.index] = bytes.b.freeze end |
#resolve_resource(uri) ⇒ Object
34 35 36 37 38 |
# File 'lib/rgltf/buffer_resolver.rb', line 34 def resolve_resource(uri) return decode_data_uri(uri) if uri.start_with?('data:') resolve_external(uri) end |