module Draco::Scenes::InstanceMethods

Internal: The plugin code for a Draco::World

Public Instance Methods

after_initialize() click to toggle source
# File lib/draco/scenes.rb, line 27
def after_initialize
  @scenes = {}

  scene_definitions.each do |name, klass|
    @scenes[name] = klass.new
  end

  @current_scene = default_scene
end
before_tick(context) click to toggle source
Calls superclass method
# File lib/draco/scenes.rb, line 37
def before_tick(context)
  super + @current_scene.systems.map do |system|
    entities = filter(system.filter)

    system.new(entities: entities, world: self)
  end
end
default_scene() click to toggle source
# File lib/draco/scenes.rb, line 63
def default_scene
  defined = self.class.instance_variable_get(:@default_scene)
  raise UndefinedSceneError, "No scene defined with name #{defined.inspect}" unless @scenes[defined]

  @scenes[defined]
end
filter(*components) click to toggle source
Calls superclass method
# File lib/draco/scenes.rb, line 45
def filter(*components)
  super.merge(@current_scene.filter(*components))
end
scene() click to toggle source
# File lib/draco/scenes.rb, line 53
def scene
  @current_scene
end
scene=(name) click to toggle source
# File lib/draco/scenes.rb, line 57
def scene=(name)
  raise UndefinedSceneError, "No scene defined with name #{name.inspect}" unless @scenes[name]

  @current_scene = @scenes[name]
end
scene_definitions() click to toggle source
# File lib/draco/scenes.rb, line 70
def scene_definitions
  self.class.instance_variable_get(:@scene_definitions) || {}
end
scenes() click to toggle source
# File lib/draco/scenes.rb, line 49
def scenes
  @scenes
end