Skip to content

ParallelClipData

Class Documentation

Edit documentation

A clip that plays its children at the same time. Each child plays on its own track, the one its pose clip names. The usual use is a body animation on one track with an overlay, such as an upper body or a prop animation, on another.

One child is the main child and decides when the parallel ends:

  • Among the children that set kMain in their mFlags, the main child is the atomic clip with the longest duration.
  • When no child sets kMain, the main child is the first child of the list.

The main child starts first and the others follow in list order. The main child plays at the speed of the parallel.

When the main child ends:

  • A parallel that loops (kLoop in its own mFlags) stops the other children and starts all children again.
  • A parallel that does not loop is finished and stops the other children.

The flags of a child change what happens to it:

Child flag Effect
kLoop The child loops while the parallel plays.
kContinue The child is not stopped when the main child ends or the parallel is stopped. When the parallel loops and the child still plays, it keeps playing and is not restarted.
kPlayOnce The child starts on the first pass only and is not stopped when the main child ends or the parallel is stopped. On a child that is not the main child, it cancels kLoop and kContinue.

Passes belong to one run. Each time the parallel is played, by name or by a clip above it, the client makes a new run of it. "First pass" and "loops" count within one run. So a new run starts every child again, kPlayOnce and kContinue children included, and a child SequencerClipData starts again from its first child.

Children that are left running. A child with kContinue or kPlayOnce is not stopped with the parallel. It keeps playing on its track until it ends by itself or another clip starts on that track. When the parallel is played again, the new run's child on the same track replaces it. Other children are stopped together with the parallel, for example when a condition clip above it switches to another child.

Properties

mClipNameList

List<Hash> = []
Edit documentation

The children, as keys of AnimationGraphData.mClipDataMap. A name that is not in the map is dropped when the graph loads, so "the first child" is the first name that exists.