I'm on the Simulator on the Mac. Version 1.9.3 (133541)
Running this code:
local geom = playdate.geometry local box = geom.polygon.new( 72, -120, 72, -300, -11, -150, -11, -120 ) box:close() print(box:containsPoint(geom.point.new(114, -150)))
true when it should be
false. Further investigation shows that any point at
y = -150 and
x > -11 is reported as being inside the polygon, with either non-zero or even-odd winding rules. (Painting the polygon works as expected.) I haven't investigated which polygons have the issue, but I haven't run into it with the other polygons I'm using in my game.
For now I monkey-patched the code to fix this in my game:
local cp = playdate.geometry.polygon.containsPoint function playdate.geometry.polygon:containsPoint(x, y) return self:getBoundsRect():containsPoint(x, y) and cp(self, x, y) end
but obviously it would be better if I didn't have to.