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: