createKeyframeTracks method

List<KeyframeTrack> createKeyframeTracks(
  1. Map<String, dynamic> animation,
  2. List<KeyframeTrack> tracks
)

Implementation

List<KeyframeTrack> createKeyframeTracks(Map<String,dynamic> animation, List<KeyframeTrack> tracks ) {
  final keyframes = animation['keyframes'];
  final name = animation['name'];

  final List<num> times = [];
  final List<num> positionData = [];
  final List<num> quaternionData = [];
  final List<num> scaleData = [];

  for (int i = 0, l = keyframes.length; i < l; i ++ ) {
    final ColladaKeyFrame keyframe = keyframes[ i ];
    final time = keyframe.time;
    final value = keyframe.value;

    matrix.copyFromArray(  List<double>.from(value.values.toList())).transpose();
    matrix.decompose( position, quaternion, scale );

    times.add( time );
    positionData.addAll([ position.x, position.y, position.z ]);
    quaternionData.addAll([ quaternion.x, quaternion.y, quaternion.z, quaternion.w ]);
    scaleData.addAll([ scale.x, scale.y, scale.z ]);
  }

  if ( positionData.isNotEmpty) tracks.add(VectorKeyframeTrack( name + '.position', times, positionData ) );
  if ( quaternionData.isNotEmpty) tracks.add(QuaternionKeyframeTrack( name + '.quaternion', times, quaternionData ) );
  if ( scaleData.isNotEmpty) tracks.add(VectorKeyframeTrack( name + '.scale', times, scaleData ) );

  return tracks;
}