The Nebula Device 3: CoreAnimation Namespace Reference

The Nebula Device 3

CoreAnimation Namespace Reference


Detailed Description

The CoreAnimation subsystem contains the base functionality for higher level animation-related systems.

FIXME: continue...

Data Structures

class  AnimClip
class  AnimCurve
class  AnimEvent
class  AnimEventEmitter
class  AnimKeyBuffer
class  AnimResource
class  AnimSampleBuffer
class  AnimSampleMixInfo
class  AnimUtil
class  CurveType
class  InfinityType
struct  Nax3Header
struct  Nax2Header
class  SampleType
class  StreamAnimationLoader
class  ManagedAnimation

Functions

void AnimSampleJobFunc (const JobFuncContext &ctx)
void AnimSampleMixJobFunc (const JobFuncContext &ctx)
void AnimJobUtilSampleStep (const AnimCurve *curves, int numCurves, const float4 &velocityScale, const float4 *src0SamplePtr, float4 *outSamplePtr, uchar *outSampleCounts)
void AnimJobUtilSampleLinear (const AnimCurve *curves, int numCurves, float sampleWeight, const float4 &velocityScale, const float4 *src0SamplePtr, const float4 *src1SamplePtr, float4 *outSamplePtr, uchar *outSampleCounts)
void AnimJobUtilMix (const AnimCurve *curves, int numCurves, float mixWeight, const float4 *src0SamplePtr, const float4 *src1SamplePtr, const uchar *src0SampleCounts, const uchar *src1SampleCounts, float4 *outSamplePtr, uchar *outSampleCounts)

Function Documentation

void CoreAnimation::AnimSampleJobFunc ( const JobFuncContext &  ctx  ) 

This job function only performs sampling, not mixing. This is usually called for the first anim job of a mixing chain.

void CoreAnimation::AnimSampleMixJobFunc ( const JobFuncContext &  ctx  ) 

Performs both animation sampling, and mixing with another sample buffer in a single job.

void CoreAnimation::AnimJobUtilSampleStep ( const AnimCurve *  curves,
int  numCurves,
const float4 &  velocityScale,
const float4 *  src0SamplePtr,
float4 *  outSamplePtr,
uchar *  outSampleCounts 
) [inline]

Sampler for "step" interpolation type.

void CoreAnimation::AnimJobUtilSampleLinear ( const AnimCurve *  curves,
int  numCurves,
float  sampleWeight,
const float4 &  velocityScale,
const float4 *  src0SamplePtr,
const float4 *  src1SamplePtr,
float4 *  outSamplePtr,
uchar *  outSampleCounts 
) [inline]

Sampler for "linear" interpolation type.

void CoreAnimation::AnimJobUtilMix ( const AnimCurve *  curves,
int  numCurves,
float  mixWeight,
const float4 *  src0SamplePtr,
const float4 *  src1SamplePtr,
const uchar *  src0SampleCounts,
const uchar *  src1SampleCounts,
float4 *  outSamplePtr,
uchar *  outSampleCounts 
) [inline]

Mixes 2 source sample buffers into a destination sample buffer using a single lerp-value between 0.0 and 1.0. Mixing takes sample counts into consideration. A source sample count of 0 indicates, the this sample is not valid and the result is made of 100% of the other sample. If both source samples are valid, the result is blended from both source samples. This gives the expected results when an animation clip only manipulates parts of a character skeleton.

NOTE: the output data blocks may be identical with one of the input data blocks!