OK, that makes sense. I think SetInstanceBoneAttachment on the ISKM component is probably the best tool for this job, so that the carryable objects would be animated by the character they’re attached to and you don’t have to set up animations for them or add them to the Collection.
You would want to set up some Mass code to manage this, as all the data you need is in Mass, so trying to manage the carryables from outside Mass would be really clunky.
I had Claude write up a plan for how to achieve this, and it looks like it would work.
Here’s the plan Claude gave me:
Phase 1 — Carryable as an ISKM
Stand up a system that owns one ISKM component per unique carryable mesh and hands out instances. Mirror how
UMetaHumanMassRepresentationSubsystem already manages body ISKMs. A carryable instance is created via the ISKM’s AddInstance, then bound with SetInstanceBoneAttachment.
Phase 2 — Mass data model
Add fragments that record intent and binding state.
Phase 3 — StateTree tasks that set intent
When the character should pick up an item, StateTree flips a “wants to carry X” desire on the entity. It doesn’t touch the ISKMs directly.
Phase 4 — A reconciler processor
One Mass processor reads desired-vs-actual carry state per entity, resolves the entity’s Top Garment ISKM component (which owns the hand bones) and ParentInstanceId, and calls SetInstanceBoneAttachment/ClearInstanceBoneAttachment.
This is the only place that touches the attachment API — same pattern as the existing MetaHumanMassUpdateCustomDataProcessor.
Phase 5 — Lifecycle & pooling
Handle entity despawn / LOD-out (release the carryable instance, clear binding).
Hopefully this helps to get you started.
Henry
[Attachment Removed]