Module: Chingu::Traits::BoundingCircle

Defined in:
lib/chingu/traits/bounding_circle.rb

Overview

Providing a bounding circle in the form of 2 attributes, self.radius and self.diameter It creates these 2 attributes from reading image.height, image.width, factor_x and factor_y

…this usually only makes sense with rotation_center = :center

Defined Under Namespace

Modules: ClassMethods

Instance Method Summary collapse

Instance Method Details

#cache_bounding_circleObject



57
58
59
60
# File 'lib/chingu/traits/bounding_circle.rb', line 57

def cache_bounding_circle
  @cached_radius = nil
  @cached_radius = self.radius
end

#circle_bottomObject



70
# File 'lib/chingu/traits/bounding_circle.rb', line 70

def circle_bottom;  self.y + self.radius; end

#circle_leftObject

def update_trait

cache_bounding_circle  if trait_options[:bounding_circle][:cache] && !@cached_radius
super

end



67
# File 'lib/chingu/traits/bounding_circle.rb', line 67

def circle_left;    self.x - self.radius; end

#circle_rightObject



68
# File 'lib/chingu/traits/bounding_circle.rb', line 68

def circle_right;   self.x + self.radius; end

#circle_topObject



69
# File 'lib/chingu/traits/bounding_circle.rb', line 69

def circle_top;     self.y - self.radius; end

#diameterObject



53
54
55
# File 'lib/chingu/traits/bounding_circle.rb', line 53

def diameter
  radius * 2
end

#draw_traitObject



72
73
74
75
76
77
# File 'lib/chingu/traits/bounding_circle.rb', line 72

def draw_trait
  if trait_options[:bounding_circle][:debug]
    $window.draw_circle(self.x, self.y, self.radius, Chingu::DEBUG_COLOR)
  end
  super
end

#radiusObject



43
44
45
46
47
48
49
50
51
# File 'lib/chingu/traits/bounding_circle.rb', line 43

def radius
  return @cached_radius if @cached_radius
  
  width = self.image.width * self.factor_x.abs
  height = self.image.height * self.factor_y.abs
  radius = (width + height) / 4
  radius = radius * trait_options[:bounding_circle][:scale] if  trait_options[:bounding_circle][:scale]
  return radius
end

#setup_trait(options) ⇒ Object



38
39
40
41
# File 'lib/chingu/traits/bounding_circle.rb', line 38

def setup_trait(options)
  @cached_radius = nil
  super
end