UIElement:transform

Advanced

Returns the global Transform in use last time this element was drawn.

You may use this function while implementing overlaps_mouse for custom elements.

This function will error if the element has not been drawn yet.

Usage

ui_element:transform()

Returns

Name Type Description
last_transform love.Transform Global transform used to draw this element.

Examples

This example implements an element type which draws a circle and accurately triggers on_mouse_over callbacks:

local Circle = Class("Circle", crystal.Element);

Circle.init = function(self, radius)
  self.radius = radius;
  self:enable_mouse();
end

Circle.compute_desired_size = function(self)
  return 2 * self.radius, 2 * self.radius;
end

Circle.draw_self = function(self)
  local w, h = self:size();
  local effective_radius = math.min(w / 2, h / 2);
  love.graphics.circle("fill", w / 2, h / 2, effective_radius);
end

Circle.overlaps_mouse = function(self, player_index, mouse_x, mouse_y)
  if not Circle.super.overlaps_mouse(self, player_index, mouse_x, mouse_y) then
    return false;
  end
  local w, h = self:size();
  local effective_radius = math.min(w / 2, h / 2);
  local center = self:transform():transformPoint(w / 2, h / 2);
  return math.distance(w / 2, h / 2, mouse_x, mouse_y) <= effective_radius;
end

This site uses Just the Docs, a documentation theme for Jekyll.