class Baku::World
Attributes
delta_ms[R]
entity_manager[R]
Public Class Methods
blackboard()
click to toggle source
# File lib/baku/world.rb, line 16 def self.blackboard @@blackboard end
new()
click to toggle source
# File lib/baku/world.rb, line 7 def initialize # TODO: there's currently no way to interleave update and draw systems. # Is this something we'll eventually need? @update_systems = [] @draw_systems = [] @entity_manager = EntityManager.new end
Public Instance Methods
add_system(system)
click to toggle source
# File lib/baku/world.rb, line 27 def add_system(system) system_list = if system.game_loop_step == :update @update_systems elsif system.game_loop_step == :draw @draw_systems end if system_list.map(&:class).include?(system.class) raise StandardError.new("Already added #{system.class} system to world.") end system.register_world(self) system_list << system end
create_entity(tags = [])
click to toggle source
# File lib/baku/world.rb, line 44 def create_entity(tags = []) entity = Entity.new(tags) @entity_manager.add_entity(entity) entity end
destroy_entity(entity)
click to toggle source
# File lib/baku/world.rb, line 50 def destroy_entity(entity) @entity_manager.remove_entity(entity) end
dispose()
click to toggle source
# File lib/baku/world.rb, line 20 def dispose @update_systems.clear @draw_systems.clear @entity_manager.dispose @@blackboard.clear end
draw()
click to toggle source
# File lib/baku/world.rb, line 59 def draw @draw_systems.each(&:execute) end
update(delta_ms)
click to toggle source
# File lib/baku/world.rb, line 54 def update(delta_ms) @delta_ms = delta_ms @update_systems.each(&:execute) end