Skip to content

Commit aa7bbb0

Browse files
committed
fix
1 parent 14ebb59 commit aa7bbb0

4 files changed

Lines changed: 20 additions & 9 deletions

File tree

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
44

55
[project]
66
name = "spritepro"
7-
version = "3.9.0"
7+
version = "3.9.1"
88
authors = [
99
{ name="NeoXider", email="neoxider@gmail.com" },
1010
]

spritePro/__init__.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424

2525
from __future__ import annotations
2626

27-
__version__ = "3.9.0"
27+
__version__ = "3.9.1"
2828

2929
import inspect
3030
import os
@@ -1252,9 +1252,18 @@ def _run_bootstrap(
12521252
scene: Scene | type[Scene] | Callable[[], Scene | None] | None = None,
12531253
*bootstrap_args: object,
12541254
) -> None:
1255-
resolved_scene = _resolve_scene_value(scene, *bootstrap_args)
1256-
if resolved_scene is not None:
1257-
set_scene(resolved_scene)
1255+
# Auto-register scene class as a factory so restart_scene() works
1256+
if isinstance(scene, type) and issubclass(scene, Scene):
1257+
scene_name = scene.__name__
1258+
_context.scene_manager.register_scene_factory(scene_name, lambda: scene())
1259+
resolved_scene = _resolve_scene_value(scene, *bootstrap_args)
1260+
if resolved_scene is not None:
1261+
resolved_scene.name = scene_name
1262+
set_scene(resolved_scene)
1263+
else:
1264+
resolved_scene = _resolve_scene_value(scene, *bootstrap_args)
1265+
if resolved_scene is not None:
1266+
set_scene(resolved_scene)
12581267
if setup is None:
12591268
return
12601269
setup_result = _call_with_supported_args(setup, *bootstrap_args)

spritePro/physics.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -299,7 +299,10 @@ def sync_from_sprite(self, sprite: pygame.sprite.Sprite) -> None:
299299
is_static = self.config.body_type == BodyType.STATIC
300300
enabled = getattr(sprite, "visible", getattr(sprite, "active", True))
301301
scale = getattr(sprite, "scale", 1.0)
302-
current_size = (r.width, r.height)
302+
# Use the sprite's original (unrotated) size to avoid detecting
303+
# size changes caused solely by visual rotation.
304+
original_size = getattr(sprite, "size", (r.width, r.height))
305+
current_size = (original_size[0], original_size[1])
303306
position_changed = self._last_center != current_center
304307
enabled_changed = self.enabled != enabled
305308
size_changed = self._last_rect_size != current_size or self._last_scale != scale

spritePro/sprite.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1319,10 +1319,9 @@ def _update_image(self):
13191319

13201320
self._transformed_image = img # cache the transformed image
13211321

1322-
anchor_attr = Anchor.MAP.get(str(self.anchor_key), "center")
1323-
anchor_pos = getattr(self.rect, anchor_attr)
1322+
old_center = self.rect.center
13241323
self.rect = self._transformed_image.get_rect()
1325-
setattr(self.rect, anchor_attr, anchor_pos)
1324+
self.rect.center = old_center
13261325

13271326
self._transform_dirty = False
13281327
self._color_dirty = True # Force color update after transform

0 commit comments

Comments
 (0)