# HG changeset patch # User Neil Muller # Date 1378559339 -7200 # Node ID a99e5e72454577da2af8261dfa1f2563a780b00c # Parent 044b53eb22df70dc5f04b61de8930ca74fd8370b Better convex polygon protection diff -r 044b53eb22df -r a99e5e724545 tools/area_editor.py --- a/tools/area_editor.py Sat Sep 07 15:04:39 2013 +0200 +++ b/tools/area_editor.py Sat Sep 07 15:08:59 2013 +0200 @@ -379,18 +379,23 @@ # Evil, but faster than good try: l = eval(text) - args.append(' - - %s' % l[0]) - for coord in l[1:]: - args.append(' - %s' % coord) except Exception: alert("Invalid polygon %s" % text) self.needs_cleanup = False return None # Check for convexity - hull = pymunk.util.convex_hull(l) - if hull != l: + if not pymunk.util.is_convex(l): alert("Invalid polygon %s - not convex" % text) return None + if not pymunk.util.is_clockwise(l): + l.reverse() + if not pymunk.util.is_clockwise(l): + alert("Invalid polygon %s - unable to make clockwise" + % text) + return None + args.append(' - - %s' % l[0]) + for coord in l[1:]: + args.append(' - %s' % coord) else: args.append(' - ' + text) data = "args:\n" + '\n'.join(args)