Skip to content

feat: scene-driven movement animations#392

Open
robtfm wants to merge 3 commits into
protocol-squadfrom
feat/scene-driven-movement-animations
Open

feat: scene-driven movement animations#392
robtfm wants to merge 3 commits into
protocol-squadfrom
feat/scene-driven-movement-animations

Conversation

@robtfm

@robtfm robtfm commented Apr 20, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Adds MovementAnimation on PBAvatarMovement so the movement scene can drive avatar animation directly (src, loop, speed, idle, optional transition_seconds, optional playback_time). When absent the engine falls back to its built-in velocity-based selection.
  • Adds AvatarAnimationState on PBAvatarMovementInfo so any scene can observe the currently-playing scene-driven clip (src, loop, speed, idle, playback_time, duration, loop_count). playback_time freezes while a triggerSceneEmote is overriding the clip.

Opened against protocol-squad so we can build a remote artifact to link js-sdk-toolchain against, and in turn link movement-scene so the downstream PRs are functional off this machine.

🤖 Generated with Claude Code

@github-actions

github-actions Bot commented Apr 20, 2026

Copy link
Copy Markdown

Test this pull request

  • The @dcl/protocol package can be tested in scenes by running
    npm install "https://sdk-team-cdn.decentraland.org/@dcl/protocol/branch//dcl-protocol-1.0.0-27568870669.commit-3ce7710.tgz"

robtfm and others added 3 commits June 15, 2026 19:51
Adds `MovementAnimation` on `PBAvatarMovement` so the movement scene can
drive avatar animation directly (src, loop, speed, idle, optional
transition/seek). When unset the engine falls back to its velocity-based
selection.

Adds `AvatarAnimationState` on `PBAvatarMovementInfo` so any scene can
observe the currently-playing scene-driven clip (src, loop, speed, idle,
playback_time, duration, loop_count).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Scene-relative audio clip paths to play on the avatar audio bus when the
scene wants a sound to ride the animation (e.g. footsteps at foot-plant
playback times). Fire-and-forget: clips play once per frame they appear;
no stop mechanism. Scene watches AvatarAnimationState.playback_time to
decide when to set the field.
`tilt_pitch` / `tilt_roll` (degrees, fields 6/7) let a scene express a lean on
top of the authoritative yaw `orientation` — e.g. glider banking — without
affecting the physics capsule or the yaw other clients read. Both optional,
default 0.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@robtfm robtfm force-pushed the feat/scene-driven-movement-animations branch from 126fac3 to c99bb69 Compare June 15, 2026 18:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant