diff --git a/arcade/sprite/animated.py b/arcade/sprite/animated.py index 28e5299d6..a7c7230a8 100644 --- a/arcade/sprite/animated.py +++ b/arcade/sprite/animated.py @@ -22,6 +22,7 @@ class TextureKeyframe: :param duration: Duration in milliseconds to display this keyframe. :param tile_id: Tile ID for this keyframe (only used for tiled maps) """ + __slots__ = ("texture", "duration", "tile_id") def __init__( self, texture: Texture, @@ -46,10 +47,12 @@ class TextureAnimation: :param keyframes: List of keyframes for the animation. :param loop: If the animation should loop. """ - def __init__(self, keyframes: Optional[List[TextureKeyframe]] = None): - self._keyframes = keyframes or [] + __slots__ = ("_keyframes", "_duration_ms", "_timeline") + + def __init__(self, keyframes: List[TextureKeyframe]): + self._keyframes = keyframes self._duration_ms = 0 - self._timeline: List[int] = self._create_timeline(self._keyframes) if self._keyframes else [] + self._timeline: List[int] = self._create_timeline(self._keyframes) @property def keyframes(self) -> Tuple[TextureKeyframe, ...]: @@ -94,25 +97,6 @@ def _create_timeline(self, keyframes: List[TextureKeyframe]) -> List[int]: self._duration_ms = current_time_ms return timeline - def append_keyframe(self, keyframe: TextureKeyframe) -> None: - """ - Add a keyframe to the animation. - - :param keyframe: Keyframe to add. - """ - self._keyframes.append(keyframe) - self._timeline.append(self._duration_ms) - self._timeline = self._create_timeline(self._keyframes) - - def remove_keyframe(self, index: int) -> None: - """ - Remove a keyframe from the animation. - - :param index: Index of the keyframe to remove. - """ - del self._keyframes[index] - self._timeline = self._create_timeline(self._keyframes) - def get_keyframe(self, time: float, loop: bool = True) -> Tuple[int, TextureKeyframe]: """ Get the frame at a given time. diff --git a/tests/unit/sprite/test_sprite_texture_animation.py b/tests/unit/sprite/test_sprite_texture_animation.py index 5aca5afff..7ed6b5a5a 100644 --- a/tests/unit/sprite/test_sprite_texture_animation.py +++ b/tests/unit/sprite/test_sprite_texture_animation.py @@ -38,18 +38,6 @@ def test_animation(keyframes): """Test animation class""" anim = arcade.TextureAnimation(keyframes=keyframes) - # Add keyframe - anim.append_keyframe(arcade.TextureKeyframe(keyframes[0].texture, 1000)) - assert anim.num_frames == 9 - assert anim.duration_ms == 9000 - assert anim.duration_seconds == 9.0 - - # Remove keyframe - anim.remove_keyframe(8) - assert anim.num_frames == 8 - assert anim.duration_ms == 8000 - assert anim.duration_seconds == 8.0 - # Get keyframes at specific times (0.5s increments) for i in range(16): time = i / 2