Skip to content

ClipBaseData

Interface

Class Documentation

Edit documentation

One clip of an animation graph: an entry of mClipDataMap that the game, or another clip, plays by name.

There are two groups of clips. Pose clips produce a pose and play on a track. Logic clips produce no pose of their own. They start other clips of the same graph, and those clips can be of any kind, so logic clips nest.

Kind Group What it plays
AtomicClipData Pose One .anm file
ParametricClipData Pose A blend of two neighbouring children, chosen by a run-time value
SequencerClipData Logic Its children one after the other
ParallelClipData Logic Its children at the same time
SelectorClipData Logic One child, picked at random
ConditionBoolClipData Logic One of two children, from a true or false value
ConditionFloatClipData Logic One child, from the range a number falls in
SwitchIntClipData Logic One child, from an integer
EventControlledSelectorClipData Logic One child, from a state event
StateAnimClipData Logic One child, until a transition to another clip passes

When the graph loads, the client replaces every child name with the clip it names. A child name that is not a key of mClipDataMap is dropped from a sequencer or parallel list and counts as "no clip" in most other kinds.

Properties

Accessorylist

List<ClipAccessoryData>
Edit documentation

Named blocks of extra data on the clip, see ClipAccessoryData. The clip does not use them when it plays. Other systems read them from the clip that plays on a track.

mAnimationInterruptionGroupNames

List<Hash>
Edit documentation

The interruption groups of the clip: a list of free names. Two clips that share a name do not play at the same time on different tracks.

When a clip becomes the current clip of a track, the client looks at the current clip of every other track. Each of those clips that shares at least one group name with the new clip is stopped: its track's queue is cleared and the clip fades out.

Clips on the same track are not affected, because a track holds one clip at a time already. A clip with an empty list never interrupts another clip and is never interrupted this way.

mFlags

U32
Edit documentation

A bit field of playback flags.

Bit Name Read on Effect
0x1 kMain A direct child of a ParallelClipData This child decides when the parallel ends.
0x2 kLoop Every clip The clip loops. An atomic clip wraps its time and fires its events again. A sequencer goes back to its first child. A parallel starts again when its main child ends. A selector picks again when its child ends.
0x4 kContinue A direct child of a parallel, and the child of a bool or float condition clip In a parallel: the child is not stopped when the main child ends, and it keeps playing when the parallel starts again. In a condition clip: see ConditionBoolClipData.mChangeAnimationMidPlay.
0x8 kPlayOnce A direct child of a parallel or a SequencerClipData The child plays only on the first pass. Later loops of the parent skip it. In a parallel it is not stopped when the main child ends. It cancels kLoop and kContinue on the same child, except on the main child.

Only kLoop has an effect on a clip by itself. The other three have an effect only where the table says. On any other clip they do nothing.

"First pass" and "starts again" count within one run of the parent. A parent that is played again is a new run, and it starts every child again, kPlayOnce and kContinue children included.

A clip also loops when its parent asks it to. A logic clip passes that request to a child only if the child sets kLoop itself.

Examples:
  • An intro followed by a loop: a SequencerClipData with kLoop, whose first child sets kPlayOnce and whose second child sets kLoop.

Referenced by 1 class · 1 property