class CyberarmEngine::Model::Parser
Public Class Methods
find(file_type)
click to toggle source
# File lib/cyberarm_engine/model/parser.rb, line 20 def self.find(file_type) @@parsers.find do |parser| parser.handles.include?(file_type) end end
handles()
click to toggle source
# File lib/cyberarm_engine/model/parser.rb, line 11 def self.handles raise NotImplementedError, "Model::Parser#handles must return an array of file extensions that this parser supports" end
inherited(parser)
click to toggle source
# File lib/cyberarm_engine/model/parser.rb, line 16 def self.inherited(parser) @@parsers << parser end
new(model)
click to toggle source
# File lib/cyberarm_engine/model/parser.rb, line 30 def initialize(model) @model = model end
supported_formats()
click to toggle source
# File lib/cyberarm_engine/model/parser.rb, line 26 def self.supported_formats @@parsers.map { |parser| parser.handles }.flatten.map { |s| ".#{s}" }.join(", ") end
Public Instance Methods
add_material(name, material)
click to toggle source
# File lib/cyberarm_engine/model/parser.rb, line 65 def add_material(name, material) @model.materials[name] = material end
change_object(id, name)
click to toggle source
# File lib/cyberarm_engine/model/parser.rb, line 55 def change_object(id, name) @model.objects << Model::ModelObject.new(id, name) @model.current_object = @model.objects.last end
current_material()
click to toggle source
# File lib/cyberarm_engine/model/parser.rb, line 69 def current_material @model.materials[@model.current_material] end
parse()
click to toggle source
# File lib/cyberarm_engine/model/parser.rb, line 34 def parse end
set_material(name)
click to toggle source
# File lib/cyberarm_engine/model/parser.rb, line 60 def set_material(name) @model.current_material = name @model.current_object.materials << current_material end
set_object(id: nil, name: nil)
click to toggle source
# File lib/cyberarm_engine/model/parser.rb, line 37 def set_object(id: nil, name: nil) _model = nil if id _model = @model.objects.find { |o| o.id == id } elsif name _model = @model.objects.find { |o| o.name == name } else raise "Must provide either an id: or name:" end if _model @model.current_object = _model else raise "Couldn't find ModelObject!" end end