Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ ComputeTangent() [1/2]

void Microsoft.Xna.Framework.Curve.ComputeTangent ( int keyIndex,
CurveTangent tangentInType,
CurveTangent tangentOutType )
inline

Definition at line 58 of file Curve.cs.

59 {
60 if (keys.Count <= keyIndex || keyIndex < 0)
61 {
62 throw new ArgumentOutOfRangeException("keyIndex");
63 }
64 CurveKey curveKey = Keys[keyIndex];
65 float num;
66 float position;
67 float num2 = (num = (position = curveKey.Position));
68 float num3;
69 float value;
70 float num4 = (num3 = (value = curveKey.Value));
71 if (keyIndex > 0)
72 {
73 num2 = Keys[keyIndex - 1].Position;
74 num4 = Keys[keyIndex - 1].Value;
75 }
76 if (keyIndex + 1 < keys.Count)
77 {
78 position = Keys[keyIndex + 1].Position;
79 value = Keys[keyIndex + 1].Value;
80 }
81 switch (tangentInType)
82 {
83 case CurveTangent.Smooth:
84 {
85 float num5 = position - num2;
86 float num6 = value - num4;
87 if (Math.Abs(num6) < 1.1920929E-07f)
88 {
89 curveKey.TangentIn = 0f;
90 }
91 else
92 {
93 curveKey.TangentIn = num6 * Math.Abs(num2 - num) / num5;
94 }
95 break;
96 }
97 case CurveTangent.Linear:
98 curveKey.TangentIn = num3 - num4;
99 break;
100 default:
101 curveKey.TangentIn = 0f;
102 break;
103 }
104 switch (tangentOutType)
105 {
106 case CurveTangent.Smooth:
107 {
108 float num7 = position - num2;
109 float num8 = value - num4;
110 if (Math.Abs(num8) < 1.1920929E-07f)
111 {
112 curveKey.TangentOut = 0f;
113 }
114 else
115 {
116 curveKey.TangentOut = num8 * Math.Abs(position - num) / num7;
117 }
118 break;
119 }
120 case CurveTangent.Linear:
121 curveKey.TangentOut = value - num3;
122 break;
123 default:
124 curveKey.TangentOut = 0f;
125 break;
126 }
127 }
CurveKeyCollection keys
Definition Curve.cs:14
CurveKeyCollection Keys
Definition Curve.cs:40
static double Abs(double value)

References System.Math.Abs(), Microsoft.Xna.Framework.CurveKeyCollection.Count, Microsoft.Xna.Framework.Curve.keys, Microsoft.Xna.Framework.Curve.Keys, Microsoft.Xna.Framework.CurveKey.Position, Microsoft.Xna.Framework.CurveKey.Value, and System.value.