Author: alanmc
Date: 2006-12-19 11:35:43 -0500 (Tue, 19 Dec 2006)
New Revision: 69756

Modified:
   trunk/Mono.Xna/src/Microsoft.Xna.Framework/Matrix.cs
Log:
Optimised Matrix adding. Now when using Matrix.Add(ref, ref, out) there are no 
allocations. Previously there were several.

Modified: trunk/Mono.Xna/src/Microsoft.Xna.Framework/Matrix.cs
===================================================================
--- trunk/Mono.Xna/src/Microsoft.Xna.Framework/Matrix.cs        2006-12-19 
16:34:32 UTC (rev 69755)
+++ trunk/Mono.Xna/src/Microsoft.Xna.Framework/Matrix.cs        2006-12-19 
16:35:43 UTC (rev 69756)
@@ -115,23 +115,10 @@
         /// <returns>Resulting matrix.</returns>
         public static Matrix Add(Matrix matrix1, Matrix matrix2)
         {
-            matrix1.M11 += matrix2.M11;
-            matrix1.M12 += matrix2.M12;
-            matrix1.M13 += matrix2.M13;
-            matrix1.M14 += matrix2.M14;
-            matrix1.M21 += matrix2.M21;
-            matrix1.M22 += matrix2.M22;
-            matrix1.M23 += matrix2.M23;
-            matrix1.M24 += matrix2.M24;
-            matrix1.M31 += matrix2.M31;
-            matrix1.M32 += matrix2.M32;
-            matrix1.M33 += matrix2.M33;
-            matrix1.M34 += matrix2.M34;
-            matrix1.M41 += matrix2.M41;
-            matrix1.M42 += matrix2.M42;
-            matrix1.M43 += matrix2.M43;
-            matrix1.M44 += matrix2.M44;
-            return matrix1;
+            Matrix result;
+            Matrix.Add(ref matrix1, ref matrix2, out result);
+            return result;
+
         }
 
         /// <summary>Adds a matrix to another matrix.</summary>
@@ -140,8 +127,22 @@
         /// <param name="result">Resulting matrix.</param>
         public static void Add(ref Matrix matrix1, ref Matrix matrix2, out 
Matrix result)
         {
-#warning Isn't the point behind using REF to not make new copies of the matrix?
-            result = Add(matrix1, matrix2);
+            result.M11 = matrix1.M11 + matrix2.M11;
+            result.M12 = matrix1.M12 + matrix2.M12;
+            result.M13 = matrix1.M13 + matrix2.M13;
+            result.M14 = matrix1.M14 + matrix2.M14;
+            result.M21 = matrix1.M21 + matrix2.M21;
+            result.M22 = matrix1.M22 + matrix2.M22;
+            result.M23 = matrix1.M23 + matrix2.M23;
+            result.M24 = matrix1.M24 + matrix2.M24;
+            result.M31 = matrix1.M31 + matrix2.M31;
+            result.M32 = matrix1.M32 + matrix2.M32;
+            result.M33 = matrix1.M33 + matrix2.M33;
+            result.M34 = matrix1.M34 + matrix2.M34;
+            result.M41 = matrix1.M41 + matrix2.M41;
+            result.M42 = matrix1.M42 + matrix2.M42;
+            result.M43 = matrix1.M43 + matrix2.M43;
+            result.M44 = matrix1.M44 + matrix2.M44;
         }
 
         /// <summary>Created a billboard</summary>

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to