gss/obj2d.rb
2013-11-13 23:55:40 -05:00

38 lines
871 B
Ruby

#!/usr/bin/env ruby
require "erb"
TEMPLATE = <<EOF
int foo()
{
return 42;
}
EOF
def main(obj_fname, d_fname)
objects = {}
vertices = []
cur_obj = nil
File.read(obj_fname).each_line do |line|
if line =~ /^v\s+(\S+)\s+(\S+)/
vertices << [$1.to_f, $2.to_f]
elsif line =~ /^o\s+(..)-(\d+)/
obj_class, obj_class_index = $1, $2.to_i
objects[obj_class] ||= []
objects[obj_class][obj_class_index] ||= []
cur_obj = objects[obj_class][obj_class_index]
elsif line =~ /^o\s+(.*)/
raise "Do not know how to handle object #{$1.inspect}"
elsif line =~ /^f\s+(\d+)\s+(\d+)\s+(\d+)/
cur_obj << [$1, $2, $3].map(&:to_i)
elsif line =~ /^l\s+(\d+)\s+(\d+)/
cur_obj << [$1, $2].map(&:to_i)
end
end
File.open(d_fname, "w") do |fh|
fh.puts ERB.new(TEMPLATE, nil, "<>").result
end
end
main(*ARGV)