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
- #cache_bounding_circle ⇒ Object
- #circle_bottom ⇒ Object
-
#circle_left ⇒ Object
def update_trait cache_bounding_circle if trait_options[:cache] && !@cached_radius super end.
- #circle_right ⇒ Object
- #circle_top ⇒ Object
- #diameter ⇒ Object
- #draw_trait ⇒ Object
- #radius ⇒ Object
- #setup_trait(options) ⇒ Object
Instance Method Details
#cache_bounding_circle ⇒ Object
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_bottom ⇒ Object
70 |
# File 'lib/chingu/traits/bounding_circle.rb', line 70 def circle_bottom; self.y + self.radius; end |
#circle_left ⇒ Object
def update_trait
cache_bounding_circle if [: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_right ⇒ Object
68 |
# File 'lib/chingu/traits/bounding_circle.rb', line 68 def circle_right; self.x + self.radius; end |
#circle_top ⇒ Object
69 |
# File 'lib/chingu/traits/bounding_circle.rb', line 69 def circle_top; self.y - self.radius; end |
#diameter ⇒ Object
53 54 55 |
# File 'lib/chingu/traits/bounding_circle.rb', line 53 def diameter radius * 2 end |
#draw_trait ⇒ Object
72 73 74 75 76 77 |
# File 'lib/chingu/traits/bounding_circle.rb', line 72 def draw_trait if [:bounding_circle][:debug] $window.draw_circle(self.x, self.y, self.radius, Chingu::DEBUG_COLOR) end super end |
#radius ⇒ Object
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 * [:bounding_circle][:scale] if [: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() @cached_radius = nil super end |