If e.g. a character holds something in their hands, and the animation only affects the hands, the weapon will not be animated properly.
Rethink how skeletons work. Should they be components? Completely CPU side? Maybe keep a complete transform buffer on the GPU and separate it from renderables.
Make Skeleton a component. It contains a mapping of internalId to util::Uuid, making it possible for animators to couple an Animation to a skeletons joints. Add to prefabs, the same node that has the Renderable component. The util::Uuids reference either prefab nodes or instantiated nodes.
Make sure each skin only gets parsed once at GLTF import time (this is currently a bug, see e.g. shrek).
Make an Animator component (replacing the old asset::Animator). It needs to be attached to the same node that has the Skeleton component. This component holds anim::Animations and some state, like playing/stopped/paused, time and so on.
Have a separate (multithreaded) animation system that goes through Animator components. Replace the old AnimationThread.
The renderer goes through Skeleton components (via an observer) and simply updates its corresponding buffer.
If e.g. a character holds something in their hands, and the animation only affects the hands, the weapon will not be animated properly.
Rethink how skeletons work. Should they be components? Completely CPU side? Maybe keep a complete transform buffer on the GPU and separate it from renderables.