/// <summary>
 /// Virtual method allowing subclasses to set any data associated with a particular keyframe.
 /// </summary>
 /// <param name="keyframe">Keyframe being set</param>
 protected virtual void SetKeyframe(ModelKeyframe keyframe)
 {
 }
 /// <summary>
 /// Sets the key frame for a bone to a transform
 /// </summary>
 /// <param name="keyframe">Keyframe to set</param>
 protected override void SetKeyframe(ModelKeyframe keyframe)
 {
     this.boneTransforms[keyframe.Bone] = keyframe.Transform;
 }
 /// <summary>
 /// Comparison function for sorting keyframes into ascending time order.
 /// </summary>
 static int CompareKeyframeTimes(ModelKeyframe a, ModelKeyframe b)
 {
     return a.Time.CompareTo(b.Time);
 }
 /// <summary>
 /// Sets the key frame by storing the current transform
 /// </summary>
 /// <param name="keyframe"></param>
 protected override void SetKeyframe(ModelKeyframe keyframe)
 {
     this.currentTransform = keyframe.Transform;
 }
 /// <summary>
 /// Sets the key frame for a bone to a transform
 /// </summary>
 /// <param name="keyframe">Keyframe to set</param>
 protected override void SetKeyframe(ModelKeyframe keyframe)
 {
     this.boneTransforms[keyframe.Bone] = keyframe.Transform;
 }
 /// <summary>
 /// Virtual method allowing subclasses to set any data associated with a particular keyframe.
 /// </summary>
 /// <param name="keyframe">Keyframe being set</param>
 protected virtual void SetKeyframe(ModelKeyframe keyframe)
 {
 }
 /// <summary>
 /// Sets the key frame by storing the current transform
 /// </summary>
 /// <param name="keyframe"></param>
 protected override void SetKeyframe(ModelKeyframe keyframe)
 {
     this.currentTransform = keyframe.Transform;
 }