changeset 544:ea396ebc7a92

Less leaky object movement
author Neil Muller <drnlmuller@gmail.com>
date Sat, 07 Sep 2013 21:26:32 +0200
parents 80264aee0af2
children 15f066cc5bf1
files tools/area_editor.py
diffstat 1 files changed, 9 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- 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']