Does the shape node actually paints cover the world point?
The pose rect says a node covers its whole bounding box. That is wrong for
everything that is not a rectangle: the concave notch of a star, the corner
outside an ellipse, the blank right half of a text box. This asks the
painter's silhouette instead, which is the same boundary used for clipping
and SVG export, so "what you can click" and "what is drawn" answer together.
"What is drawn" includes the ink, not just the boundary. A shape whose
interior isn't filled — an outlined rect, a pencil stroke, a bare line — is
grabbable along its outline and not through its empty middle, which is the
opposite of what a fill test alone answers. The outline's grab width is the
stroke's half-width plus tolerance.
A painter with no silhouette, or one that returns null for this node
(kit:text does, for a node with no non-blank lines), reports true —
"no opinion", leaving the caller's own AABB test as the answer. Callers
should keep that AABB test as a cheap pre-filter; this is the refinement,
not a replacement.
Rotation is already baked by findShapeSilhouette, so the point is in
plain world coordinates.
Does the shape
nodeactually paints cover the world point?The pose rect says a node covers its whole bounding box. That is wrong for everything that is not a rectangle: the concave notch of a star, the corner outside an ellipse, the blank right half of a text box. This asks the painter's silhouette instead, which is the same boundary used for clipping and SVG export, so "what you can click" and "what is drawn" answer together.
"What is drawn" includes the ink, not just the boundary. A shape whose interior isn't filled — an outlined rect, a pencil stroke, a bare line — is grabbable along its outline and not through its empty middle, which is the opposite of what a fill test alone answers. The outline's grab width is the stroke's half-width plus
tolerance.A painter with no
silhouette, or one that returnsnullfor this node (kit:textdoes, for a node with no non-blank lines), reportstrue— "no opinion", leaving the caller's own AABB test as the answer. Callers should keep that AABB test as a cheap pre-filter; this is the refinement, not a replacement.Rotation is already baked by
findShapeSilhouette, so the point is in plain world coordinates.