Files
2026-05-27 23:29:53 +01:00

2.0 KiB

OpenSpec Change: enterprise-gaming-r3f-animation

  • Change ID: enterprise-gaming-r3f-animation
  • Package: @suaveplan/r3f-animation
  • Category: gaming/character
  • Target path: gaming/character/r3f-animation
  • Status: PROPOSED
  • Date: 2026-04-24
  • Reference spec: /mnt/s/web/suaveplan/enterprise/r3f-animation.md

Summary

Deliver @suaveplan/r3f-animation on the genesis branch from scratch at enterprise quality. The package provides animation state machine, blend trees, and layers for React Three Fiber. An AnimationStateMachine manages named states with blend tree leaves and transition conditions; AnimationLayer enables masked additive/override layers (e.g. upper-body aim overlay); AnimationBlendTree interpolates between clips by blend parameters (speed, direction). @suaveplan/mixamo normalisation and @suaveplan/animation-events dispatch are integrated. Genesis adds structured errors, OTel blend-duration histogram, and 100% coverage.


Available workspace deps

@suaveplan/error, @suaveplan/types, @suaveplan/mixamo, @suaveplan/animation-events, @suaveplan/ik-solver, react, @react-three/fiber, @react-three/drei, three.


Public API surface

function AnimationController(props: AnimationControllerProps): JSX.Element
// stateMachine, blendParameters, layers, eventDispatcher

function useAnimation(): AnimationContext
// currentState, setParameter(), playAction(), crossFadeTo()

File layout

gaming/character/r3f-animation/
  package.json / tsconfig.json / vitest.config.ts
  src/
    index.ts / error-codes.ts
    types/common.ts + md
    core/
      state-machine/ (ts + md + types + test + index)
      blend-tree/ (ts + md + types + test + index)
      animation-layer/ (ts + md + types + test + index)
    context/animation-provider.tsx + md + test
    hooks/use-animation.ts + md + test
    components/
      AnimationController/ (tsx + md + test + stories + index)
  tests/integration.test.ts