diff --git a/ANX.Framework.TestCenter/ANX.Framework.TestCenter.csproj b/ANX.Framework.TestCenter/ANX.Framework.TestCenter.csproj
index 4b104efd..5c909c14 100644
--- a/ANX.Framework.TestCenter/ANX.Framework.TestCenter.csproj
+++ b/ANX.Framework.TestCenter/ANX.Framework.TestCenter.csproj
@@ -68,6 +68,7 @@
+
diff --git a/ANX.Framework.TestCenter/Strukturen/CurveTest.cs b/ANX.Framework.TestCenter/Strukturen/CurveTest.cs
new file mode 100644
index 00000000..bfc9af90
--- /dev/null
+++ b/ANX.Framework.TestCenter/Strukturen/CurveTest.cs
@@ -0,0 +1,42 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using NUnit.Framework;
+
+
+using XNACurve = Microsoft.Xna.Framework.Curve;
+using ANXCurve = ANX.Framework.Curve;
+
+namespace ANX.Framework.TestCenter.Strukturen
+{
+ [TestFixture]
+ class CurveTest
+ {
+
+ [Test]
+ public void Evaluate()
+ {
+ XNACurve xna = new XNACurve();
+ ANXCurve anx = new ANXCurve();
+
+ Random r = new Random();
+ for (int i = 0; i < 5; ++i)
+ {
+ float value = r.Next(-10, 10);
+ xna.Keys.Add(new Microsoft.Xna.Framework.CurveKey(i, value));
+ anx.Keys.Add(new CurveKey(i, value));
+ }
+ xna.PreLoop = Microsoft.Xna.Framework.CurveLoopType.Constant;
+ anx.PreLoop = ANX.Framework.CurveLoopType.Constant;
+
+ xna.PostLoop = Microsoft.Xna.Framework.CurveLoopType.Constant;
+ anx.PostLoop = ANX.Framework.CurveLoopType.Constant;
+
+ xna.ComputeTangents(Microsoft.Xna.Framework.CurveTangent.Flat);
+ anx.ComputeTangents(CurveTangent.Flat);
+
+ AssertHelper.CompareFloats(xna.Evaluate(3.5f), anx.Evaluate(3.5f), float.Epsilon);
+ }
+ }
+}
diff --git a/ANX.Framework/Curve.cs b/ANX.Framework/Curve.cs
index e1362f20..dc6fbc9b 100644
--- a/ANX.Framework/Curve.cs
+++ b/ANX.Framework/Curve.cs
@@ -99,7 +99,7 @@ namespace ANX.Framework
//formulas from: http://msdn.microsoft.com/de-de/library/microsoft.xna.framework.curvetangent%28v=xnagamestudio.40%29.aspx
public void ComputeTangent(Int32 index, CurveTangent tangentInOutType)
{
- if (index < 0 || index > keys.Count)
+ if (index < 0 || index >= keys.Count)
{
throw new ArgumentOutOfRangeException();
}
@@ -127,7 +127,7 @@ namespace ANX.Framework
}
public void ComputeTangent(Int32 index, CurveTangent tangentInType, CurveTangent tangentOutType)
{
- if (index < 0 || index > keys.Count)
+ if (index < 0 || index >= keys.Count)
{
throw new ArgumentOutOfRangeException();
}
@@ -223,7 +223,6 @@ namespace ANX.Framework
//wanted point behind last point
else if (position > last.Position)
{
- int cycle;
switch (this.PostLoop)
{
case CurveLoopType.Constant: