# HG changeset patch # User Neil Muller # Date 1378581992 -7200 # Node ID ea396ebc7a927095bce16ec4a711ca98196bbc02 # Parent 80264aee0af2aca10331949962b33b759031392f Less leaky object movement diff -r 80264aee0af2 -r ea396ebc7a92 tools/area_editor.py --- a/tools/area_editor.py Sat Sep 07 21:11:19 2013 +0200 +++ b/tools/area_editor.py Sat Sep 07 21:26:32 2013 +0200 @@ -187,6 +187,7 @@ def reset_objs(self): # Reset the object state - needed when changing stuff + old_drawable = self.drawables[:] self.drawables = [] self.overlay_drawables = [] self._glue = np.PuzzleGlue() @@ -633,7 +634,7 @@ if self.move_obj: corrected_pos = self._level_coordinates(ev.pos) snapped_pos = self.snap_to_grid(corrected_pos) - self._update_pos(self.move_obj, snapped_pos) + self._move_obj(self.move_obj, snapped_pos) if old_pos != self.mouse_pos and (self.cur_poly or self._draw_lines or self._move_point_mode or self._move_poly_mode): @@ -872,7 +873,13 @@ new_cls, None): edit_dlg.cleanup() - def _update_pos(self, obj, new_pos): + def _move_obj(self, obj, new_pos): + new_coords = self.level.point_to_pymunk(new_pos) + shape = obj.get_shape() + shape.body.position = (new_coords[0], new_coords[1]) + self.invalidate() + + def _update_pos(self, obj, new_pos, final=False): data = self.level.lookup[obj] new_coords = self.level.point_to_pymunk(new_pos) args = data['args']