91 if (
Keys.Count() < 2) {
92 for (
int i=0; i<
Keys.Count(); i++) {
99 int end =
Keys.Count() - 1;
101 Tangents[end].OutTangent.Set(0,0,0);
118 Tangents[end].InTangent.X = 0.25f*(
Keys[end].Point.X -
Keys[end-1].Point.X);
119 Tangents[end].InTangent.Y = 0.25f*(
Keys[end].Point.Y -
Keys[end-1].Point.Y);
120 Tangents[end].InTangent.Z = 0.25f*(
Keys[end].Point.Z -
Keys[end-1].Point.Z);
124 float total_time = (
Keys[1].Time -
Keys[0].Time) + (
Keys[end].Time -
Keys[end-1].Time);
125 float in_factor = 2.0f * (
Keys[end].Time -
Keys[end-1].Time) / total_time;
126 float out_factor = 2.0f * (
Keys[1].Time -
Keys[0].Time) / total_time;
127 Tangents[end].InTangent *= in_factor;
128 Tangents[0].OutTangent *= out_factor;
131 for (
int i=1; i<
Keys.Count()-1; i++) {
137 float in_factor = 2.0f * (
Keys[i].Time -
Keys[i-1].Time) / (
Keys[i+1].Time -
Keys[i-1].Time);
138 float out_factor = 2.0f * (
Keys[i+1].Time -
Keys[i].Time) / (
Keys[i+1].Time -
Keys[i-1].Time);
140 Tangents[i].OutTangent *= out_factor;