You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
New Features
GUI: Added an experimental animation API in arcade.gui.experimental — UIAnimatedGroup wraps a widget subtree and tweens its transform properties over time via animate().
UIAnimatedGroup caches its subtree into a surface and exposes non-layouting transform properties (scale, angle, alpha, offset_x, offset_y, tint); it is interactive, hit-testing hovered/pressed/on_click against its untransformed rect. UIRenderGroup is the non-interactive caching primitive.
animate() supports multiple properties per call, sequencing via then(), repetition (repeat, yoyo), relative targets (rel()), easing, delays and on_finish callbacks.
Animations are resolved per property: starting a new animation takes over its properties from running ones, other properties keep animating.
Interpolates numbers, tuples, Color and vector types; non-interpolatable values snap at the end.
The low level Transition* classes remain available for custom behavior.
Fixes
GUI: Fixed UILabel.update_font always reporting a font change when the requested font was a fallback tuple (e.g. UIFlatButton's default styles), which caused a full UI re-render every frame. This made widget-heavy UIs, such as the exp_scroll_area example, run at a few FPS.
Fixed rotate_around_point missing from arcade.math.__all__, which made it unavailable via from arcade.math import *.
Breaking Changes
Updated pyglet to 3.0.dev7 (from 3.0.dev3).
Between dev4 and dev5, pyglet removed window._matrices and moved window view/projection/viewport onto its own camera (default_camera in dev5/dev6, renamed to camera in dev7), backed by a per-frame ring-buffer UBO. Arcade now fully owns its own window matrix UBO, independent of pyglet's camera/ring buffer, so rendering behavior for cameras, sprites, and shapes is unchanged.
Advanced users who mix raw pyglet camera/window code with Arcade should note: window._matrices no longer exists, and window.camera (pyglet's default_camera prior to dev7) is pyglet's own concept (a Camera2D), distinct from arcade.Window.default_camera (Arcade's own DefaultProjector) — both exist simultaneously and serve different roles. arcade.Window now also exposes a camera property as an alias for default_camera, matching pyglet's dev7 rename.
Fixed BackgroundTexture scale and offset producing incorrect visual transforms — Arcade's code was inadvertently relying on bugs in pyglet's pre-dev7 Mat3.scale/Mat3.translate that have since been fixed upstream. Visual output for BackgroundTexture users with non-default scale/offset values will change to be correct.
Misc Changes
Resolved security vulnerabilities in the setuptools, click, and typer dependencies (typer bumped to 0.27.1) via uv audit/uv lock.