class Blender3d::ObjectReader
Attributes
file[R]
model[RW]
Public Class Methods
new(file, model = nil)
click to toggle source
# File lib/blender-3d/object_reader.rb, line 6 def initialize(file, model = nil) @file, @model = file, model endian = @model.header.endian_code %w'c s l q'.each.with_index do |code, i| bytes = 1 << i bits = 8 * bytes name = 'int' + bits.to_s define_reader name, bytes, code + endian define_reader 'u' + name, bytes, code.upcase + endian end code = @model.header.little_endian? ? 'e' : 'g' define_reader 'float', 4, code define_reader 'double', 8, code.upcase define_reader 'pointer', @model.header.pointer_size, @model.header.size_code + endian end
Public Instance Methods
read(length)
click to toggle source
# File lib/blender-3d/object_reader.rb, line 29 def read(length) @file.read(length) end
read_string()
click to toggle source
# File lib/blender-3d/object_reader.rb, line 33 def read_string @file.gets("\0") end
seek(position)
click to toggle source
# File lib/blender-3d/object_reader.rb, line 37 def seek(position) @file.seek(position) end
tell()
click to toggle source
# File lib/blender-3d/object_reader.rb, line 41 def tell @file.tell end
Private Instance Methods
define_reader(name, num_bytes, unpack_type)
click to toggle source
# File lib/blender-3d/object_reader.rb, line 25 def define_reader(name, num_bytes, unpack_type) instance_eval "def read_#{name}; @file.read(#{num_bytes}).unpack('#{unpack_type}').first end" end