class Baku::Entity

Attributes

components[R]
tags[R]

Public Class Methods

new(tags = []) click to toggle source
# File lib/baku/entity.rb, line 7
def initialize(tags = [])
  @tags = tags
  @components = {}
end

Public Instance Methods

add_component(component) click to toggle source
# File lib/baku/entity.rb, line 12
def add_component(component)
  if @components.has_key?(component.class)
    raise StandardError.
      new("Entity already has component: #{component.class}")
  end

  components[component.class] = component

  update_component_mask
  
  dispatch_event(:component_added, self, component)
end
component_mask() click to toggle source
# File lib/baku/entity.rb, line 47
def component_mask
  @component_mask ||= ComponentMask.from_components(@components)
end
get_component(component_class) click to toggle source
# File lib/baku/entity.rb, line 43
def get_component(component_class)
  @components[component_class]
end
has_component?(component_class) click to toggle source
# File lib/baku/entity.rb, line 39
def has_component?(component_class)
  @components.has_key?(component_class)
end
remove_component(component_class) click to toggle source
# File lib/baku/entity.rb, line 25
def remove_component(component_class)
  if !@components.has_key?(component_class)
    raise StandardError.
      new("Entity does not have component: #{component_class}")
  end

  removed_component = @components[component_class]
  @components.delete(component_class)

  update_component_mask
  
  dispatch_event(:component_removed, self, removed_component)
end

Private Instance Methods

update_component_mask() click to toggle source
# File lib/baku/entity.rb, line 53
def update_component_mask
  @component_mask = ComponentMask.from_components(@components)
end