class SK::GameObjectManager

Attributes

physics[RW]

Public Class Methods

new() click to toggle source
# File lib/shirokuro/ecs/game_object_manager.rb, line 6
def initialize
        @id_generator = IdGenerator.new
        @game_objects = []                   
        @started = false

        @physics = Physics.new
end

Public Instance Methods

create(name) click to toggle source
# File lib/shirokuro/ecs/game_object_manager.rb, line 14
def create name
        id = @id_generator.next()
        game_object = GameObject.new(name, id)
        game_object.instance_variable_set(:@manager, self)
        @game_objects << game_object
        if @started
                game_object.start
        end
        game_object
end
draw(context) click to toggle source
# File lib/shirokuro/ecs/game_object_manager.rb, line 39
def draw context
        components = @game_objects.collect{|obj| obj.components }
                .flatten.collect{|c| c }
                .sort_by{ |c|
                        [c.layer, c.order_in_layer]
                }

        components.each do |component|
                component.draw context
        end
end
remove(game_object) click to toggle source
# File lib/shirokuro/ecs/game_object_manager.rb, line 25
def remove game_object
        @game_objects.delete game_object
end
start() click to toggle source
# File lib/shirokuro/ecs/game_object_manager.rb, line 29
def start
        @game_objects.each{ |x| x.start }
        @started = true
end
update(dt) click to toggle source
# File lib/shirokuro/ecs/game_object_manager.rb, line 34
def update dt
        @physics.update dt
        @game_objects.each{ |x| x.update dt}
end