lib/import/equalizer4.rb
# Imports 3D Equalizer's text files
class Tracksperanto::Import::Equalizer4 < Tracksperanto::Import::Base
def self.human_name
"3DE v4 point export file"
end
def each
io = Tracksperanto::ExtIO.new(@io)
num_t = detect_num_of_points(io)
num_t.times { yield(extract_tracker(io)) }
end
private
def detect_num_of_points(io)
io.gets_non_empty.to_i
end
KF_PATTERN = /^(\d+)\s([\-\d\.]+)\s([\-\d\.]+)/
def extract_tracker(io)
t = Tracksperanto::Tracker.new(:name => io.gets.strip)
report_progress("Capturing tracker #{t.name}")
io.gets # Tracker color, internal 3DE repr and 0 is Red
num_of_keyframes = io.gets.to_i
catch(:__emp) do
num_of_keyframes.times do
line = io.gets_non_empty
throw :__emp unless line
frame, x, y = line.scan(KF_PATTERN).flatten
report_progress("Capturing keyframe #{frame}")
t.keyframe!(:frame => (frame.to_i - 1), :abs_x => x, :abs_y => y)
end
end
t
end
end