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