From 24f1eb34ae77f078cf5cc28f8312e57f6cd82aaf Mon Sep 17 00:00:00 2001 From: Ethan Lee Date: Sat, 5 Apr 2014 23:00:52 -0400 Subject: [PATCH] Supplement to 3vi1 FNA fixes --- MonoGame.Framework/BoundingFrustum.cs | 9 +- MonoGame.Framework/Color.cs | 2 +- MonoGame.Framework/MathHelper.cs | 14 +- MonoGame.Framework/Matrix.cs | 76 +--- MonoGame.Framework/Plane.cs | 64 +-- MonoGame.Framework/Point.cs | 33 +- .../PreparingDeviceSettingsEventArgs.cs | 14 +- MonoGame.Framework/Quaternion.cs | 375 +++--------------- MonoGame.Framework/Ray.cs | 20 +- MonoGame.Framework/Rectangle.cs | 56 +-- MonoGame.Framework/ReusableItemList.cs | 6 +- MonoGame.Framework/Vector2.cs | 8 +- MonoGame.Framework/Vector3.cs | 24 +- MonoGame.Framework/Vector4.cs | 28 +- 14 files changed, 187 insertions(+), 542 deletions(-) diff --git a/MonoGame.Framework/BoundingFrustum.cs b/MonoGame.Framework/BoundingFrustum.cs index 89306e291cd..23a3aef202d 100644 --- a/MonoGame.Framework/BoundingFrustum.cs +++ b/MonoGame.Framework/BoundingFrustum.cs @@ -209,8 +209,13 @@ public void Contains(ref Vector3 point, out ContainmentType result) { for (int i = 0; i < PlaneCount; i += 1) { - // TODO: we might want to inline this for performance reasons - if (PlaneHelper.ClassifyPoint(ref point, ref this.planes[i]) > 0) + float classifyPoint = ( + (point.X * planes[i].Normal.X) + + (point.Y * planes[i].Normal.Y) + + (point.Z * planes[i].Normal.Z) + + planes[i].D + ); + if (classifyPoint > 0) { result = ContainmentType.Disjoint; return; diff --git a/MonoGame.Framework/Color.cs b/MonoGame.Framework/Color.cs index 922878d163d..30c083facb5 100644 --- a/MonoGame.Framework/Color.cs +++ b/MonoGame.Framework/Color.cs @@ -1879,7 +1879,7 @@ public override string ToString() #endregion } - #region XNAColorConverter Class + #region Color TypeConverter public class XNAColorConverter : TypeConverter { diff --git a/MonoGame.Framework/MathHelper.cs b/MonoGame.Framework/MathHelper.cs index 7dc8ef5dcbf..ecc208ffd40 100644 --- a/MonoGame.Framework/MathHelper.cs +++ b/MonoGame.Framework/MathHelper.cs @@ -143,9 +143,11 @@ float amount double amountCubed = amountSquared * amount; return (float) ( 0.5 * - (2.0 * value2 + (value3 - value1) * amount + - (2.0 * value1 - 5.0 * value2 + 4.0 * value3 - value4) * amountSquared + - (3.0 * value2 - value1 - 3.0 * value3 + value4) * amountCubed) + ( + ((2.0 * value2 + (value3 - value1) * amount) + + ((2.0 * value1 - 5.0 * value2 + 4.0 * value3 - value4) * amountSquared) + + (3.0 * value2 - value1 - 3.0 * value3 + value4) * amountCubed) + ) ); } @@ -241,9 +243,9 @@ float amount else { result = ( - (2 * v1 - 2 * v2 + t2 + t1) * sCubed + - (3 * v2 - 3 * v1 - 2 * t1 - t2) * sSquared + - t1 * s + + ((2 * v1 - 2 * v2 + t2 + t1) * sCubed) + + ((3 * v2 - 3 * v1 - 2 * t1 - t2) * sSquared) + + (t1 * s) + v1 ); } diff --git a/MonoGame.Framework/Matrix.cs b/MonoGame.Framework/Matrix.cs index 817298bd236..0ec49d05ad0 100644 --- a/MonoGame.Framework/Matrix.cs +++ b/MonoGame.Framework/Matrix.cs @@ -362,8 +362,7 @@ public float Determinant() ( (M11 * (((M22 * num18) - (M23 * num17)) + (M24 * num16))) - (M12 * (((M21 * num18) - (M23 * num15)) + (M24 * num14))) - ) + - (M13 * (((M21 * num17) - (M22 * num15)) + (M24 * num13))) + ) + (M13 * (((M21 * num17) - (M22 * num15)) + (M24 * num13))) ) - (M14 * (((M21 * num16) - (M22 * num14)) + (M23 * num13))) ); @@ -389,7 +388,6 @@ public bool Equals(Matrix other) (M44 == other.M44) ); } - public override bool Equals(object obj) { bool flag = false; @@ -400,7 +398,6 @@ public override bool Equals(object obj) return flag; } - public override int GetHashCode() { return ( @@ -411,8 +408,6 @@ public override int GetHashCode() ); } - - public override string ToString() { return ( @@ -448,7 +443,6 @@ public static Matrix Add(Matrix matrix1, Matrix matrix2) return matrix1; } - public static void Add(ref Matrix matrix1, ref Matrix matrix2, out Matrix result) { result.M11 = matrix1.M11 + matrix2.M11; @@ -467,10 +461,8 @@ public static void Add(ref Matrix matrix1, ref Matrix matrix2, out Matrix result result.M42 = matrix1.M42 + matrix2.M42; result.M43 = matrix1.M43 + matrix2.M43; result.M44 = matrix1.M44 + matrix2.M44; - } - public static Matrix CreateBillboard( Vector3 objectPosition, Vector3 cameraPosition, @@ -491,7 +483,6 @@ out result return result; } - public static void CreateBillboard(ref Vector3 objectPosition, ref Vector3 cameraPosition, ref Vector3 cameraUpVector, Vector3? cameraForwardVector, out Matrix result) { @@ -536,7 +527,6 @@ out vector result.M44 = 1; } - public static Matrix CreateConstrainedBillboard( Vector3 objectPosition, Vector3 cameraPosition, @@ -556,7 +546,6 @@ out result return result; } - public static void CreateConstrainedBillboard( ref Vector3 objectPosition, ref Vector3 cameraPosition, @@ -612,6 +601,7 @@ out result Vector3.Cross(ref vector3, ref vector4, out vector); vector.Normalize(); } + result.M11 = vector3.X; result.M12 = vector3.Y; result.M13 = vector3.Z; @@ -628,10 +618,8 @@ out result result.M42 = objectPosition.Y; result.M43 = objectPosition.Z; result.M44 = 1; - } - public static Matrix CreateFromAxisAngle(Vector3 axis, float angle) { Matrix result; @@ -639,7 +627,6 @@ public static Matrix CreateFromAxisAngle(Vector3 axis, float angle) return result; } - public static void CreateFromAxisAngle( ref Vector3 axis, float angle, @@ -674,7 +661,6 @@ public static Matrix CreateFromAxisAngle(Vector3 axis, float angle) result.M44 = 1; } - public static Matrix CreateFromQuaternion(Quaternion quaternion) { Matrix result; @@ -682,7 +668,6 @@ public static Matrix CreateFromQuaternion(Quaternion quaternion) return result; } - public static void CreateFromQuaternion(ref Quaternion quaternion, out Matrix result) { float num9 = quaternion.X * quaternion.X; @@ -767,7 +752,6 @@ Vector3 cameraUpVector result.M44 = 1f; } - public static Matrix CreateOrthographic( float width, float height, @@ -779,7 +763,6 @@ float zFarPlane return matrix; } - public static void CreateOrthographic( float width, float height, @@ -798,7 +781,6 @@ float zFarPlane result.M44 = 1f; } - public static Matrix CreateOrthographicOffCenter( float left, float right, @@ -820,7 +802,6 @@ out matrix return matrix; } - public static void CreateOrthographicOffCenter( float left, float right, @@ -857,7 +838,6 @@ out matrix result.M44 = 1.0f; } - public static Matrix CreatePerspective( float width, float height, @@ -869,7 +849,6 @@ float farPlaneDistance return matrix; } - public static void CreatePerspective( float width, float height, @@ -903,7 +882,6 @@ float farPlaneDistance ); } - public static Matrix CreatePerspectiveFieldOfView( float fieldOfView, float aspectRatio, @@ -921,7 +899,6 @@ out result return result; } - public static void CreatePerspectiveFieldOfView( float fieldOfView, float aspectRatio, @@ -961,7 +938,6 @@ out result ); } - public static Matrix CreatePerspectiveOffCenter( float left, float right, @@ -983,7 +959,6 @@ out result return result; } - public static void CreatePerspectiveOffCenter( float left, float right, @@ -1020,7 +995,6 @@ out result result.M41 = result.M42 = result.M44 = 0; } - public static Matrix CreateRotationX(float radians) { Matrix result; @@ -1028,7 +1002,6 @@ public static Matrix CreateRotationX(float radians) return result; } - public static void CreateRotationX(float radians, out Matrix result) { result = Matrix.Identity; @@ -1049,7 +1022,6 @@ public static Matrix CreateRotationY(float radians) return result; } - public static void CreateRotationY(float radians, out Matrix result) { result = Matrix.Identity; @@ -1063,7 +1035,6 @@ public static void CreateRotationY(float radians, out Matrix result) result.M33 = val1; } - public static Matrix CreateRotationZ(float radians) { Matrix result; @@ -1071,7 +1042,6 @@ public static Matrix CreateRotationZ(float radians) return result; } - public static void CreateRotationZ(float radians, out Matrix result) { result = Matrix.Identity; @@ -1085,7 +1055,6 @@ public static void CreateRotationZ(float radians, out Matrix result) result.M22 = val1; } - public static Matrix CreateScale(float scale) { Matrix result; @@ -1093,13 +1062,11 @@ public static Matrix CreateScale(float scale) return result; } - public static void CreateScale(float scale, out Matrix result) { CreateScale(scale, scale, scale, out result); } - public static Matrix CreateScale(float xScale, float yScale, float zScale) { Matrix result; @@ -1107,7 +1074,6 @@ public static Matrix CreateScale(float xScale, float yScale, float zScale) return result; } - public static void CreateScale( float xScale, float yScale, @@ -1132,7 +1098,6 @@ public static Matrix CreateScale(float xScale, float yScale, float zScale) result.M44 = 1; } - public static Matrix CreateScale(Vector3 scales) { Matrix result; @@ -1140,7 +1105,6 @@ public static Matrix CreateScale(Vector3 scales) return result; } - public static void CreateScale(ref Vector3 scales, out Matrix result) { result.M11 = scales.X; @@ -1161,7 +1125,6 @@ public static void CreateScale(ref Vector3 scales, out Matrix result) result.M44 = 1; } - /// /// Creates a Matrix that flattens geometry into a specified Plane as if casting a /// shadow from a specified light source. @@ -1185,7 +1148,6 @@ public static Matrix CreateShadow(Vector3 lightDirection, Plane plane) return result; } - /// /// Creates a Matrix that flattens geometry into a specified Plane as if casting a /// shadow from a specified light source. @@ -1234,7 +1196,6 @@ public static Matrix CreateShadow(Vector3 lightDirection, Plane plane) result.M44 = dot; } - public static Matrix CreateTranslation( float xPosition, float yPosition, @@ -1245,7 +1206,6 @@ float zPosition return result; } - public static void CreateTranslation(ref Vector3 position, out Matrix result) { result.M11 = 1; @@ -1266,7 +1226,6 @@ public static void CreateTranslation(ref Vector3 position, out Matrix result) result.M44 = 1; } - public static Matrix CreateTranslation(Vector3 position) { Matrix result; @@ -1274,7 +1233,6 @@ public static Matrix CreateTranslation(Vector3 position) return result; } - public static void CreateTranslation( float xPosition, float yPosition, @@ -1363,7 +1321,6 @@ public static Matrix CreateWorld(Vector3 position, Vector3 forward, Vector3 up) result.M44 = 1f; } - public static Matrix Divide(Matrix matrix1, Matrix matrix2) { matrix1.M11 = matrix1.M11 / matrix2.M11; @@ -1385,7 +1342,6 @@ public static Matrix Divide(Matrix matrix1, Matrix matrix2) return matrix1; } - public static void Divide(ref Matrix matrix1, ref Matrix matrix2, out Matrix result) { result.M11 = matrix1.M11 / matrix2.M11; @@ -1406,7 +1362,6 @@ public static void Divide(ref Matrix matrix1, ref Matrix matrix2, out Matrix res result.M44 = matrix1.M44 / matrix2.M44; } - public static Matrix Divide(Matrix matrix1, float divider) { float num = 1f / divider; @@ -1429,7 +1384,6 @@ public static Matrix Divide(Matrix matrix1, float divider) return matrix1; } - public static void Divide(ref Matrix matrix1, float divider, out Matrix result) { float num = 1f / divider; @@ -1457,7 +1411,6 @@ public static Matrix Invert(Matrix matrix) return matrix; } - public static void Invert(ref Matrix matrix, out Matrix result) { /* @@ -1696,7 +1649,6 @@ public static Matrix Lerp(Matrix matrix1, Matrix matrix2, float amount) return matrix1; } - public static void Lerp( ref Matrix matrix1, ref Matrix matrix2, @@ -1840,7 +1792,6 @@ Matrix matrix2 return matrix1; } - public static void Multiply(ref Matrix matrix1, ref Matrix matrix2, out Matrix result) { float m11 = ( @@ -2000,7 +1951,6 @@ public static void Multiply(ref Matrix matrix1, float factor, out Matrix result) } - public static Matrix Negate(Matrix matrix) { matrix.M11 = -matrix.M11; @@ -2022,7 +1972,6 @@ public static Matrix Negate(Matrix matrix) return matrix; } - public static void Negate(ref Matrix matrix, out Matrix result) { result.M11 = -matrix.M11; @@ -2043,31 +1992,26 @@ public static void Negate(ref Matrix matrix, out Matrix result) result.M44 = -matrix.M44; } - public static Matrix operator +(Matrix matrix1, Matrix matrix2) { return Matrix.Add(matrix1, matrix2); } - public static Matrix operator /(Matrix matrix1, Matrix matrix2) { return Matrix.Divide(matrix1, matrix2); } - public static Matrix operator /(Matrix matrix, float divider) { return Matrix.Divide(matrix, divider); } - public static bool operator ==(Matrix matrix1, Matrix matrix2) { return matrix1.Equals(matrix2); } - public static bool operator !=(Matrix matrix1, Matrix matrix2) { return !matrix1.Equals(matrix2); @@ -2078,25 +2022,21 @@ public static void Negate(ref Matrix matrix, out Matrix result) return Multiply(matrix1, matrix2); } - public static Matrix operator *(Matrix matrix, float scaleFactor) { return Multiply(matrix, scaleFactor); } - public static Matrix operator -(Matrix matrix1, Matrix matrix2) { return Subtract(matrix1, matrix2); } - public static Matrix operator -(Matrix matrix) { return Negate(matrix); } - public static Matrix Subtract(Matrix matrix1, Matrix matrix2) { matrix1.M11 -= matrix2.M11; @@ -2118,7 +2058,6 @@ public static Matrix Subtract(Matrix matrix1, Matrix matrix2) return matrix1; } - public static void Subtract(ref Matrix matrix1, ref Matrix matrix2, out Matrix result) { result.M11 = matrix1.M11 - matrix2.M11; @@ -2146,7 +2085,6 @@ public static Matrix Transpose(Matrix matrix) return ret; } - public static void Transpose(ref Matrix matrix, out Matrix result) { Matrix ret; @@ -2174,11 +2112,15 @@ public static void Transpose(ref Matrix matrix, out Matrix result) result = ret; } + #endregion + + #region Internal Static Methods + /* Required for OpenGL 2.0 projection matrix stuff * TODO: have this work correctly for 3x3 Matrices. Needs to return * a float[9] for a 3x3, and a float[16] for a 4x4 */ - public static float[] ToFloatArray(Matrix mat) + internal static float[] ToFloatArray(Matrix mat) { float[] matarray = { mat.M11, mat.M12, mat.M13, mat.M14, @@ -2201,8 +2143,8 @@ public static float[] ToFloatArray(Matrix mat) out float minor1, out float minor2, out float minor3, out float minor4, out float minor5, out float minor6, out float minor7, out float minor8, out float minor9, - out float minor10, out float minor11, out float minor12) - { + out float minor10, out float minor11, out float minor12 + ) { double det1 = ( (double) matrix.M11 * (double) matrix.M22 - (double) matrix.M12 * (double) matrix.M21 diff --git a/MonoGame.Framework/Plane.cs b/MonoGame.Framework/Plane.cs index 184830dd625..c178e8c48a0 100644 --- a/MonoGame.Framework/Plane.cs +++ b/MonoGame.Framework/Plane.cs @@ -40,54 +40,6 @@ MIT License namespace Microsoft.Xna.Framework { - internal class PlaneHelper - { - #region Public Static Methods - - /// - /// Returns a value indicating what side (positive/negative) of a plane a point is - /// - /// The point to check with - /// The plane to check against - /// - /// Greater than zero if on the positive side, less than zero if on the negative - /// size, 0 otherwise. - /// - public static float ClassifyPoint(ref Vector3 point, ref Plane plane) - { - return ( - (point.X * plane.Normal.X) + - (point.Y * plane.Normal.Y) + - (point.Z * plane.Normal.Z) + - plane.D - ); - } - - /// - /// Returns the perpendicular distance from a point to a plane - /// - /// The point to check - /// The place to check - /// The perpendicular distance from the point to the plane - public static float PerpendicularDistance(ref Vector3 point, ref Plane plane) - { - // dist = (ax + by + cz + d) / sqrt(a*a + b*b + c*c) - return (float) Math.Abs( - ( - (plane.Normal.X * point.X) + - (plane.Normal.Y * point.Y) + - (plane.Normal.Z * point.Z) - ) / Math.Sqrt( - (plane.Normal.X * plane.Normal.X) + - (plane.Normal.Y * plane.Normal.Y) + - (plane.Normal.Z * plane.Normal.Z) - ) - ); - } - - #endregion - } - [DataContract] public struct Plane : IEquatable { @@ -106,7 +58,6 @@ public struct Plane : IEquatable public Plane(Vector4 value) : this(new Vector3(value.X, value.Y, value.Z), value.W) { - } public Plane(Vector3 normal, float d) @@ -245,12 +196,15 @@ public static void Normalize(ref Plane value, out Plane result) { float factor; result.Normal = Vector3.Normalize(value.Normal); - factor = (float) Math.Sqrt( result.Normal.X * result.Normal.X + - result.Normal.Y * result.Normal.Y + - result.Normal.Z * result.Normal.Z ) / - (float) Math.Sqrt( value.Normal.X * value.Normal.X + - value.Normal.Y * value.Normal.Y + - value.Normal.Z * value.Normal.Z ); + factor = (float) Math.Sqrt( + result.Normal.X * result.Normal.X + + result.Normal.Y * result.Normal.Y + + result.Normal.Z * result.Normal.Z + ) / (float) Math.Sqrt( + value.Normal.X * value.Normal.X + + value.Normal.Y * value.Normal.Y + + value.Normal.Z * value.Normal.Z + ); result.D = value.D * factor; } diff --git a/MonoGame.Framework/Point.cs b/MonoGame.Framework/Point.cs index 0920fc185a8..f694bd8c732 100644 --- a/MonoGame.Framework/Point.cs +++ b/MonoGame.Framework/Point.cs @@ -48,7 +48,10 @@ public struct Point : IEquatable public static Point Zero { - get { return zeroPoint; } + get + { + return zeroPoint; + } } #endregion @@ -63,7 +66,7 @@ public static Point Zero #endregion - #region Private Static Fields + #region Private Static Variables private static Point zeroPoint = new Point(); @@ -79,7 +82,7 @@ public Point(int x, int y) #endregion - #region Public methods + #region Public Methods public bool Equals(Point other) { @@ -107,22 +110,22 @@ public override string ToString() public static Point operator +(Point a, Point b) { - return new Point(a.X+b.X,a.Y+b.Y); + return new Point(a.X + b.X, a.Y + b.Y); } public static Point operator -(Point a, Point b) { - return new Point(a.X-b.X,a.Y-b.Y); + return new Point(a.X - b.X, a.Y - b.Y); } public static Point operator *(Point a, Point b) { - return new Point(a.X*b.X,a.Y*b.Y); + return new Point(a.X * b.X, a.Y * b.Y); } public static Point operator /(Point a, Point b) { - return new Point(a.X/b.X,a.Y/b.Y); + return new Point(a.X / b.X, a.Y / b.Y); } public static bool operator ==(Point a, Point b) @@ -138,10 +141,10 @@ public override string ToString() #endregion } + #region Point TypeConverter + public class XNAPointConverter : TypeConverter { - #region Public Methods - public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) { if (sourceType == typeof(string)) @@ -178,13 +181,15 @@ Type destinationType if (destinationType == typeof(string)) { Point src = (Point) value; - return ( src.X.ToString(culture) + - culture.NumberFormat.NumberGroupSeparator + - src.Y.ToString(culture) ); + return ( + src.X.ToString(culture) + + culture.NumberFormat.NumberGroupSeparator + + src.Y.ToString(culture) + ); } return base.ConvertTo(context, culture, value, destinationType); } - - #endregion } + + #endregion } diff --git a/MonoGame.Framework/PreparingDeviceSettingsEventArgs.cs b/MonoGame.Framework/PreparingDeviceSettingsEventArgs.cs index c1bf97d1850..d13c720e893 100644 --- a/MonoGame.Framework/PreparingDeviceSettingsEventArgs.cs +++ b/MonoGame.Framework/PreparingDeviceSettingsEventArgs.cs @@ -19,25 +19,17 @@ public class PreparingDeviceSettingsEventArgs : EventArgs public GraphicsDeviceInformation GraphicsDeviceInformation { - get - { - return _graphicsDeviceInformation; - } + get; + private set; } #endregion - #region Private Variables - - private GraphicsDeviceInformation _graphicsDeviceInformation; - - #endregion - #region Public Constructor public PreparingDeviceSettingsEventArgs(GraphicsDeviceInformation graphicsDeviceInformation) { - _graphicsDeviceInformation = graphicsDeviceInformation; + GraphicsDeviceInformation = graphicsDeviceInformation; } #endregion diff --git a/MonoGame.Framework/Quaternion.cs b/MonoGame.Framework/Quaternion.cs index 521df09933e..f2e5525124b 100644 --- a/MonoGame.Framework/Quaternion.cs +++ b/MonoGame.Framework/Quaternion.cs @@ -62,7 +62,6 @@ internal Vector3 Xyz { return new Vector3(X, Y, Z); } - set { X = value.X; @@ -91,7 +90,7 @@ internal Vector3 Xyz #region Private Static Variables - static Quaternion identity = new Quaternion(0, 0, 0, 1); + private static Quaternion identity = new Quaternion(0, 0, 0, 1); #endregion @@ -118,7 +117,6 @@ public Quaternion(Vector3 vectorPart, float scalarPart) #region Public Methods - //A?adida por Syderis public void Conjugate() { this.X = -this.X; @@ -126,18 +124,11 @@ public void Conjugate() this.Z = -this.Z; } - public override bool Equals(object obj) { - bool flag = false; - if (obj is Quaternion) - { - flag = this.Equals((Quaternion) obj); - } - return flag; + return (obj is Quaternion) && Equals((Quaternion) obj); } - public bool Equals(Quaternion other) { return ( (this.X == other.X) && @@ -146,7 +137,6 @@ public bool Equals(Quaternion other) (this.W == other.W) ); } - public override int GetHashCode() { return ( @@ -159,10 +149,13 @@ public override int GetHashCode() public float Length() { - return (float) Math.Sqrt((double) (this.X * this.X) + - (this.Y * this.Y) + - (this.Z * this.Z) + - (this.W * this.W) ); + float num = ( + (this.X * this.X) + + (this.Y * this.Y) + + (this.Z * this.Z) + + (this.W * this.W) + ); + return (float) Math.Sqrt((double) num); } public float LengthSquared() @@ -228,14 +221,10 @@ internal void ToMatrix(out Matrix matrix) public static Quaternion Add(Quaternion quaternion1, Quaternion quaternion2) { Quaternion quaternion; - quaternion.X = quaternion1.X + quaternion2.X; - quaternion.Y = quaternion1.Y + quaternion2.Y; - quaternion.Z = quaternion1.Z + quaternion2.Z; - quaternion.W = quaternion1.W + quaternion2.W; + Add(ref quaternion1, ref quaternion2, out quaternion); return quaternion; } - public static void Add( ref Quaternion quaternion1, ref Quaternion quaternion2, @@ -250,29 +239,16 @@ public static Quaternion Add(Quaternion quaternion1, Quaternion quaternion2) public static Quaternion Concatenate(Quaternion value1, Quaternion value2) { Quaternion quaternion; - float x = value2.X; - float y = value2.Y; - float z = value2.Z; - float w = value2.W; - float num4 = value1.X; - float num3 = value1.Y; - float num2 = value1.Z; - float num = value1.W; - float num12 = (y * num2) - (z * num3); - float num11 = (z * num4) - (x * num2); - float num10 = (x * num3) - (y * num4); - float num9 = ((x * num4) + (y * num3)) + (z * num2); - quaternion.X = ((x * num) + (num4 * w)) + num12; - quaternion.Y = ((y * num) + (num3 * w)) + num11; - quaternion.Z = ((z * num) + (num2 * w)) + num10; - quaternion.W = (w * num) - num9; + Concatenate(ref value1, ref value2, out quaternion); return quaternion; } public static void Concatenate( - ref Quaternion value1, ref Quaternion value2, out Quaternion result) - { + ref Quaternion value1, + ref Quaternion value2, + out Quaternion result + ) { float x = value2.X; float y = value2.Y; float z = value2.Z; @@ -294,10 +270,7 @@ public static Quaternion Concatenate(Quaternion value1, Quaternion value2) public static Quaternion Conjugate(Quaternion value) { Quaternion quaternion; - quaternion.X = -value.X; - quaternion.Y = -value.Y; - quaternion.Z = -value.Z; - quaternion.W = value.W; + Conjugate(ref value, out quaternion); return quaternion; } @@ -311,17 +284,9 @@ public static void Conjugate(ref Quaternion value, out Quaternion result) public static Quaternion CreateFromAxisAngle(Vector3 axis, float angle) { - Quaternion quaternion; - float num2 = angle * 0.5f; - float num = (float) Math.Sin((double) num2); - float num3 = (float) Math.Cos((double) num2); - quaternion.X = axis.X * num; - quaternion.Y = axis.Y * num; - quaternion.Z = axis.Z * num; - quaternion.W = num3; + CreateFromAxisAngle(ref axis, angle, out quaternion); return quaternion; - } public static void CreateFromAxisAngle( @@ -340,51 +305,8 @@ public static Quaternion CreateFromAxisAngle(Vector3 axis, float angle) public static Quaternion CreateFromRotationMatrix(Matrix matrix) { - float num8 = (matrix.M11 + matrix.M22) + matrix.M33; - Quaternion quaternion = new Quaternion(); - if (num8 > 0f) - { - float num = (float) Math.Sqrt((double) (num8 + 1f)); - quaternion.W = num * 0.5f; - num = 0.5f / num; - quaternion.X = (matrix.M23 - matrix.M32) * num; - quaternion.Y = (matrix.M31 - matrix.M13) * num; - quaternion.Z = (matrix.M12 - matrix.M21) * num; - return quaternion; - } - if ((matrix.M11 >= matrix.M22) && (matrix.M11 >= matrix.M33)) - { - float num7 = (float) Math.Sqrt((double) ( - ((1f + matrix.M11) - matrix.M22) - - matrix.M33) ); - float num4 = 0.5f / num7; - quaternion.X = 0.5f * num7; - quaternion.Y = (matrix.M12 + matrix.M21) * num4; - quaternion.Z = (matrix.M13 + matrix.M31) * num4; - quaternion.W = (matrix.M23 - matrix.M32) * num4; - return quaternion; - } - if (matrix.M22 > matrix.M33) - { - float num6 = (float) Math.Sqrt((double) ( - ((1f + matrix.M22) - matrix.M11) - - matrix.M33) ); - float num3 = 0.5f / num6; - quaternion.X = (matrix.M21 + matrix.M12) * num3; - quaternion.Y = 0.5f * num6; - quaternion.Z = (matrix.M32 + matrix.M23) * num3; - quaternion.W = (matrix.M31 - matrix.M13) * num3; - return quaternion; - } - float num5 = (float) Math.Sqrt((double) ( - ((1f + matrix.M33) - matrix.M11) - - matrix.M22) ); - float num2 = 0.5f / num5; - quaternion.X = (matrix.M31 + matrix.M13) * num2; - quaternion.Y = (matrix.M32 + matrix.M23) * num2; - quaternion.Z = 0.5f * num5; - quaternion.W = (matrix.M12 - matrix.M21) * num2; - + Quaternion quaternion; + CreateFromRotationMatrix(ref matrix, out quaternion); return quaternion; } @@ -393,7 +315,7 @@ public static void CreateFromRotationMatrix(ref Matrix matrix, out Quaternion re float num8 = (matrix.M11 + matrix.M22) + matrix.M33; if (num8 > 0f) { - float num = (float) Math.Sqrt((double) ( num8 + 1f)); + float num = (float) Math.Sqrt((double) (num8 + 1f)); result.W = num * 0.5f; num = 0.5f / num; result.X = (matrix.M23 - matrix.M32) * num; @@ -403,8 +325,8 @@ public static void CreateFromRotationMatrix(ref Matrix matrix, out Quaternion re else if ((matrix.M11 >= matrix.M22) && (matrix.M11 >= matrix.M33)) { float num7 = (float) Math.Sqrt((double) ( - ((1f + matrix.M11) - matrix.M22) - - matrix.M33) ); + ((1f + matrix.M11) - matrix.M22) - matrix.M33 + )); float num4 = 0.5f / num7; result.X = 0.5f * num7; result.Y = (matrix.M12 + matrix.M21) * num4; @@ -414,8 +336,8 @@ public static void CreateFromRotationMatrix(ref Matrix matrix, out Quaternion re else if (matrix.M22 > matrix.M33) { float num6 = (float) Math.Sqrt((double) ( - ((1f + matrix.M22) - matrix.M11) - - matrix.M33) ); + ((1f + matrix.M22) - matrix.M11) - matrix.M33 + )); float num3 = 0.5f / num6; result.X = (matrix.M21 + matrix.M12) * num3; result.Y = 0.5f * num6; @@ -425,8 +347,8 @@ public static void CreateFromRotationMatrix(ref Matrix matrix, out Quaternion re else { float num5 = (float) Math.Sqrt((double) ( - ((1f + matrix.M33) - matrix.M11) - - matrix.M22) ); + ((1f + matrix.M33) - matrix.M11) - matrix.M22 + )); float num2 = 0.5f / num5; result.X = (matrix.M31 + matrix.M13) * num2; result.Y = (matrix.M32 + matrix.M23) * num2; @@ -438,19 +360,7 @@ public static void CreateFromRotationMatrix(ref Matrix matrix, out Quaternion re public static Quaternion CreateFromYawPitchRoll(float yaw, float pitch, float roll) { Quaternion quaternion; - float num9 = roll * 0.5f; - float num6 = (float) Math.Sin((double) num9); - float num5 = (float) Math.Cos((double) num9); - float num8 = pitch * 0.5f; - float num4 = (float) Math.Sin((double) num8); - float num3 = (float) Math.Cos((double) num8); - float num7 = yaw * 0.5f; - float num2 = (float) Math.Sin((double) num7); - float num = (float) Math.Cos((double) num7); - quaternion.X = ((num * num4) * num5) + ((num2 * num3) * num6); - quaternion.Y = ((num2 * num3) * num5) - ((num * num4) * num6); - quaternion.Z = ((num * num3) * num6) - ((num2 * num4) * num5); - quaternion.W = ((num * num3) * num5) + ((num2 * num4) * num6); + CreateFromYawPitchRoll(yaw, pitch, roll, out quaternion); return quaternion; } @@ -478,29 +388,7 @@ public static Quaternion CreateFromYawPitchRoll(float yaw, float pitch, float ro public static Quaternion Divide(Quaternion quaternion1, Quaternion quaternion2) { Quaternion quaternion; - float x = quaternion1.X; - float y = quaternion1.Y; - float z = quaternion1.Z; - float w = quaternion1.W; - float num14 = ( - (quaternion2.X * quaternion2.X) + - (quaternion2.Y * quaternion2.Y) + - (quaternion2.Z * quaternion2.Z) + - (quaternion2.W * quaternion2.W) - ); - float num5 = 1f / num14; - float num4 = -quaternion2.X * num5; - float num3 = -quaternion2.Y * num5; - float num2 = -quaternion2.Z * num5; - float num = quaternion2.W * num5; - float num13 = (y * num2) - (z * num3); - float num12 = (z * num4) - (x * num2); - float num11 = (x * num3) - (y * num4); - float num10 = ((x * num4) + (y * num3)) + (z * num2); - quaternion.X = ((x * num) + (num4 * w)) + num13; - quaternion.Y = ((y * num) + (num3 * w)) + num12; - quaternion.Z = ((z * num) + (num2 * w)) + num11; - quaternion.W = (w * num) - num10; + Divide(ref quaternion1, ref quaternion2, out quaternion); return quaternion; } @@ -561,20 +449,9 @@ public static float Dot(Quaternion quaternion1, Quaternion quaternion2) public static Quaternion Inverse(Quaternion quaternion) { - Quaternion quaternion2; - float num2 = ( - (quaternion.X * quaternion.X) + - (quaternion.Y * quaternion.Y) + - (quaternion.Z * quaternion.Z) + - (quaternion.W * quaternion.W) - ); - float num = 1f / num2; - quaternion2.X = -quaternion.X * num; - quaternion2.Y = -quaternion.Y * num; - quaternion2.Z = -quaternion.Z * num; - quaternion2.W = quaternion.W * num; - return quaternion2; - + Quaternion inverse; + Inverse(ref quaternion, out inverse); + return inverse; } public static void Inverse(ref Quaternion quaternion, out Quaternion result) @@ -597,40 +474,8 @@ public static void Inverse(ref Quaternion quaternion, out Quaternion result) Quaternion quaternion2, float amount ) { - float num = amount; - float num2 = 1f - num; - Quaternion quaternion = new Quaternion(); - float num5 = ( - (quaternion1.X * quaternion2.X) + - (quaternion1.Y * quaternion2.Y) + - (quaternion1.Z * quaternion2.Z) + - (quaternion1.W * quaternion2.W) - ); - if (num5 >= 0f) - { - quaternion.X = (num2 * quaternion1.X) + (num * quaternion2.X); - quaternion.Y = (num2 * quaternion1.Y) + (num * quaternion2.Y); - quaternion.Z = (num2 * quaternion1.Z) + (num * quaternion2.Z); - quaternion.W = (num2 * quaternion1.W) + (num * quaternion2.W); - } - else - { - quaternion.X = (num2 * quaternion1.X) - (num * quaternion2.X); - quaternion.Y = (num2 * quaternion1.Y) - (num * quaternion2.Y); - quaternion.Z = (num2 * quaternion1.Z) - (num * quaternion2.Z); - quaternion.W = (num2 * quaternion1.W) - (num * quaternion2.W); - } - float num4 = ( - (quaternion.X * quaternion.X) + - (quaternion.Y * quaternion.Y) + - (quaternion.Z * quaternion.Z) + - (quaternion.W * quaternion.W) - ); - float num3 = 1f / ((float) Math.Sqrt((double) num4)); - quaternion.X *= num3; - quaternion.Y *= num3; - quaternion.Z *= num3; - quaternion.W *= num3; + Quaternion quaternion; + Lerp(ref quaternion1, ref quaternion2, amount, out quaternion); return quaternion; } @@ -680,39 +525,8 @@ float amount Quaternion quaternion2, float amount ) { - float num2; - float num3; Quaternion quaternion; - float num = amount; - float num4 = ( - (quaternion1.X * quaternion2.X) + - (quaternion1.Y * quaternion2.Y) + - (quaternion1.Z * quaternion2.Z) + - (quaternion1.W * quaternion2.W) - ); - bool flag = false; - if (num4 < 0f) - { - flag = true; - num4 = -num4; - } - if (num4 > 0.999999f) - { - num3 = 1f - num; - num2 = flag ? -num : num; - } - else - { - float num5 = (float) Math.Acos((double) num4); - float num6 = (float) (1.0 / Math.Sin((double) num5)); - num3 = ((float) Math.Sin((double) ((1f - num) * num5))) * num6; - num2 = flag ? (((float) Math.Sin((double) (num * num5))) * num6) - : (((float) Math.Sin((double) (num * num5))) * num6); - } - quaternion.X = (num3 * quaternion1.X) + (num2 * quaternion2.X); - quaternion.Y = (num3 * quaternion1.Y) + (num2 * quaternion2.Y); - quaternion.Z = (num3 * quaternion1.Z) + (num2 * quaternion2.Z); - quaternion.W = (num3 * quaternion1.W) + (num2 * quaternion2.W); + Slerp(ref quaternion1, ref quaternion2, amount, out quaternion); return quaternion; } @@ -759,10 +573,7 @@ float amount public static Quaternion Subtract(Quaternion quaternion1, Quaternion quaternion2) { Quaternion quaternion; - quaternion.X = quaternion1.X - quaternion2.X; - quaternion.Y = quaternion1.Y - quaternion2.Y; - quaternion.Z = quaternion1.Z - quaternion2.Z; - quaternion.W = quaternion1.W - quaternion2.W; + Subtract(ref quaternion1, ref quaternion2, out quaternion); return quaternion; } @@ -780,32 +591,14 @@ public static Quaternion Subtract(Quaternion quaternion1, Quaternion quaternion2 public static Quaternion Multiply(Quaternion quaternion1, Quaternion quaternion2) { Quaternion quaternion; - float x = quaternion1.X; - float y = quaternion1.Y; - float z = quaternion1.Z; - float w = quaternion1.W; - float num4 = quaternion2.X; - float num3 = quaternion2.Y; - float num2 = quaternion2.Z; - float num = quaternion2.W; - float num12 = (y * num2) - (z * num3); - float num11 = (z * num4) - (x * num2); - float num10 = (x * num3) - (y * num4); - float num9 = ((x * num4) + (y * num3)) + (z * num2); - quaternion.X = ((x * num) + (num4 * w)) + num12; - quaternion.Y = ((y * num) + (num3 * w)) + num11; - quaternion.Z = ((z * num) + (num2 * w)) + num10; - quaternion.W = (w * num) - num9; + Multiply(ref quaternion1, ref quaternion2, out quaternion); return quaternion; } public static Quaternion Multiply(Quaternion quaternion1, float scaleFactor) { Quaternion quaternion; - quaternion.X = quaternion1.X * scaleFactor; - quaternion.Y = quaternion1.Y * scaleFactor; - quaternion.Z = quaternion1.Z * scaleFactor; - quaternion.W = quaternion1.W * scaleFactor; + Multiply(ref quaternion1, scaleFactor, out quaternion); return quaternion; } @@ -820,7 +613,8 @@ public static Quaternion Multiply(Quaternion quaternion1, float scaleFactor) result.W = quaternion1.W * scaleFactor; } - public static void Multiply(ref Quaternion quaternion1, + public static void Multiply( + ref Quaternion quaternion1, ref Quaternion quaternion2, out Quaternion result ) { @@ -845,10 +639,7 @@ public static Quaternion Multiply(Quaternion quaternion1, float scaleFactor) public static Quaternion Negate(Quaternion quaternion) { Quaternion quaternion2; - quaternion2.X = -quaternion.X; - quaternion2.Y = -quaternion.Y; - quaternion2.Z = -quaternion.Z; - quaternion2.W = -quaternion.W; + Negate(ref quaternion, out quaternion2); return quaternion2; } @@ -863,17 +654,7 @@ public static void Negate(ref Quaternion quaternion, out Quaternion result) public static Quaternion Normalize(Quaternion quaternion) { Quaternion quaternion2; - float num2 = ( - (quaternion.X * quaternion.X) + - (quaternion.Y * quaternion.Y) + - (quaternion.Z * quaternion.Z) + - (quaternion.W * quaternion.W) - ); - float num = 1f / ((float) Math.Sqrt((double) num2)); - quaternion2.X = quaternion.X * num; - quaternion2.Y = quaternion.Y * num; - quaternion2.Z = quaternion.Z * num; - quaternion2.W = quaternion.W * num; + Normalize(ref quaternion, out quaternion2); return quaternion2; } @@ -895,110 +676,52 @@ public static void Normalize(ref Quaternion quaternion, out Quaternion result) public static Quaternion operator +(Quaternion quaternion1, Quaternion quaternion2) { Quaternion quaternion; - quaternion.X = quaternion1.X + quaternion2.X; - quaternion.Y = quaternion1.Y + quaternion2.Y; - quaternion.Z = quaternion1.Z + quaternion2.Z; - quaternion.W = quaternion1.W + quaternion2.W; + Add(ref quaternion1, ref quaternion2, out quaternion); return quaternion; } public static Quaternion operator /(Quaternion quaternion1, Quaternion quaternion2) { Quaternion quaternion; - float x = quaternion1.X; - float y = quaternion1.Y; - float z = quaternion1.Z; - float w = quaternion1.W; - float num14 = ( - (quaternion2.X * quaternion2.X) + - (quaternion2.Y * quaternion2.Y) + - (quaternion2.Z * quaternion2.Z) + - (quaternion2.W * quaternion2.W) - ); - float num5 = 1f / num14; - float num4 = -quaternion2.X * num5; - float num3 = -quaternion2.Y * num5; - float num2 = -quaternion2.Z * num5; - float num = quaternion2.W * num5; - float num13 = (y * num2) - (z * num3); - float num12 = (z * num4) - (x * num2); - float num11 = (x * num3) - (y * num4); - float num10 = ((x * num4) + (y * num3)) + (z * num2); - quaternion.X = ((x * num) + (num4 * w)) + num13; - quaternion.Y = ((y * num) + (num3 * w)) + num12; - quaternion.Z = ((z * num) + (num2 * w)) + num11; - quaternion.W = (w * num) - num10; + Divide(ref quaternion1, ref quaternion2, out quaternion); return quaternion; } public static bool operator ==(Quaternion quaternion1, Quaternion quaternion2) { - return ( (quaternion1.X == quaternion2.X) && - (quaternion1.Y == quaternion2.Y) && - (quaternion1.Z == quaternion2.Z) && - (quaternion1.W == quaternion2.W) ); + return quaternion1.Equals(quaternion2); } public static bool operator !=(Quaternion quaternion1, Quaternion quaternion2) { - if ( (quaternion1.X == quaternion2.X) && - (quaternion1.Y == quaternion2.Y) && - (quaternion1.Z == quaternion2.Z) ) - { - return (quaternion1.W != quaternion2.W); - } - return true; + return !quaternion1.Equals(quaternion2); } public static Quaternion operator *(Quaternion quaternion1, Quaternion quaternion2) { Quaternion quaternion; - float x = quaternion1.X; - float y = quaternion1.Y; - float z = quaternion1.Z; - float w = quaternion1.W; - float num4 = quaternion2.X; - float num3 = quaternion2.Y; - float num2 = quaternion2.Z; - float num = quaternion2.W; - float num12 = (y * num2) - (z * num3); - float num11 = (z * num4) - (x * num2); - float num10 = (x * num3) - (y * num4); - float num9 = ((x * num4) + (y * num3)) + (z * num2); - quaternion.X = ((x * num) + (num4 * w)) + num12; - quaternion.Y = ((y * num) + (num3 * w)) + num11; - quaternion.Z = ((z * num) + (num2 * w)) + num10; - quaternion.W = (w * num) - num9; + Multiply(ref quaternion1, ref quaternion2, out quaternion); return quaternion; } public static Quaternion operator *(Quaternion quaternion1, float scaleFactor) { Quaternion quaternion; - quaternion.X = quaternion1.X * scaleFactor; - quaternion.Y = quaternion1.Y * scaleFactor; - quaternion.Z = quaternion1.Z * scaleFactor; - quaternion.W = quaternion1.W * scaleFactor; + Multiply(ref quaternion1, scaleFactor, out quaternion); return quaternion; } public static Quaternion operator -(Quaternion quaternion1, Quaternion quaternion2) { Quaternion quaternion; - quaternion.X = quaternion1.X - quaternion2.X; - quaternion.Y = quaternion1.Y - quaternion2.Y; - quaternion.Z = quaternion1.Z - quaternion2.Z; - quaternion.W = quaternion1.W - quaternion2.W; + Subtract(ref quaternion1, ref quaternion2, out quaternion); return quaternion; } public static Quaternion operator -(Quaternion quaternion) { Quaternion quaternion2; - quaternion2.X = -quaternion.X; - quaternion2.Y = -quaternion.Y; - quaternion2.Z = -quaternion.Z; - quaternion2.W = -quaternion.W; + Negate(ref quaternion, out quaternion2); return quaternion2; } diff --git a/MonoGame.Framework/Ray.cs b/MonoGame.Framework/Ray.cs index 895670d0613..9bd18ab285d 100644 --- a/MonoGame.Framework/Ray.cs +++ b/MonoGame.Framework/Ray.cs @@ -58,8 +58,8 @@ public struct Ray : IEquatable public Ray(Vector3 position, Vector3 direction) { - this.Position = position; - this.Direction = direction; + Position = position; + Direction = direction; } #endregion @@ -69,7 +69,7 @@ public Ray(Vector3 position, Vector3 direction) public override bool Equals(object obj) { - return (obj is Ray) ? this.Equals((Ray) obj) : false; + return (obj is Ray) && Equals((Ray) obj); } @@ -113,7 +113,9 @@ public override int GetHashCode() if (Math.Abs(Direction.Y) < Epsilon) { if (Position.Y < box.Min.Y || Position.Y > box.Max.Y) + { return null; + } } else { @@ -140,7 +142,9 @@ public override int GetHashCode() if (Math.Abs(Direction.Z) < Epsilon) { if (Position.Z < box.Min.Z || Position.Z > box.Max.Z) + { return null; + } } else { @@ -155,7 +159,7 @@ public override int GetHashCode() } if ( (tMin.HasValue && tMin > tMaxZ) || - (tMax.HasValue && tMinZ > tMax)) + (tMax.HasValue && tMinZ > tMax) ) { return null; } @@ -254,9 +258,11 @@ public void Intersects(ref BoundingSphere sphere, out float? result) * if z = the distance we've travelled along the ray * if x^2 + z^2 - y^2 < 0, we do not intersect */ - float dist = ( sphereRadiusSquared + - distanceAlongRay * distanceAlongRay - - differenceLengthSquared ); + float dist = ( + sphereRadiusSquared + + (distanceAlongRay * distanceAlongRay) - + differenceLengthSquared + ); result = (dist < 0) ? null : distanceAlongRay - (float?) Math.Sqrt(dist); } diff --git a/MonoGame.Framework/Rectangle.cs b/MonoGame.Framework/Rectangle.cs index e0d4752f3c1..9250c915c9f 100644 --- a/MonoGame.Framework/Rectangle.cs +++ b/MonoGame.Framework/Rectangle.cs @@ -50,7 +50,7 @@ public int Left { get { - return this.X; + return X; } } @@ -58,7 +58,7 @@ public int Right { get { - return (this.X + this.Width); + return (X + Width); } } @@ -66,7 +66,7 @@ public int Top { get { - return this.Y; + return Y; } } @@ -74,7 +74,7 @@ public int Bottom { get { - return (this.Y + this.Height); + return (Y + Height); } } @@ -82,7 +82,7 @@ public Point Location { get { - return new Point(this.X, this.Y); + return new Point(X, Y); } set { @@ -96,8 +96,9 @@ public Point Center get { return new Point( - this.X + (this.Width / 2), - this.Y + (this.Height / 2) ); + X + (Width / 2), + Y + (Height / 2) + ); } } @@ -105,10 +106,10 @@ public bool IsEmpty { get { - return ( (this.Width == 0) && - (this.Height == 0) && - (this.X == 0) && - (this.Y == 0) ); + return ( (Width == 0) && + (Height == 0) && + (X == 0) && + (Y == 0) ); } } @@ -152,10 +153,10 @@ public static Rectangle Empty public Rectangle(int x, int y, int width, int height) { - this.X = x; - this.Y = y; - this.Width = width; - this.Height = height; + X = x; + Y = y; + Width = width; + Height = height; } #endregion @@ -221,7 +222,7 @@ public bool Equals(Rectangle other) public override bool Equals(object obj) { - return (obj is Rectangle) ? this == ((Rectangle) obj) : false; + return (obj is Rectangle) && this == ((Rectangle) obj); } public override string ToString() @@ -248,7 +249,6 @@ public bool Intersects(Rectangle value) Top < value.Bottom ); } - public void Intersects(ref Rectangle value, out bool result) { result = ( value.Left < Right && @@ -281,7 +281,6 @@ public static Rectangle Intersect(Rectangle value1, Rectangle value2) return rectangle; } - public static void Intersect( ref Rectangle value1, ref Rectangle value2, @@ -289,16 +288,21 @@ public static Rectangle Intersect(Rectangle value1, Rectangle value2) ) { if (value1.Intersects(value2)) { - int right_side = Math.Min( value1.X + value1.Width, - value2.X + value2.Width ); + int right_side = Math.Min( + value1.X + value1.Width, + value2.X + value2.Width + ); int left_side = Math.Max(value1.X, value2.X); int top_side = Math.Max(value1.Y, value2.Y); - int bottom_side = Math.Min( value1.Y + value1.Height, - value2.Y + value2.Height ); - result = new Rectangle( left_side, - top_side, - right_side - left_side, - bottom_side - top_side + int bottom_side = Math.Min( + value1.Y + value1.Height, + value2.Y + value2.Height + ); + result = new Rectangle( + left_side, + top_side, + right_side - left_side, + bottom_side - top_side ); } else diff --git a/MonoGame.Framework/ReusableItemList.cs b/MonoGame.Framework/ReusableItemList.cs index 46af70813a7..e9452663e17 100644 --- a/MonoGame.Framework/ReusableItemList.cs +++ b/MonoGame.Framework/ReusableItemList.cs @@ -48,13 +48,17 @@ internal class ReusableItemList : ICollection, IEnumerator get { if (index >= _listTop) + { throw new IndexOutOfRangeException(); + } return _list[index]; } set { if (index >= _listTop) + { throw new IndexOutOfRangeException(); + } _list[index] = value; } } @@ -139,7 +143,7 @@ public T GetNewItem() } else { - /* Damm...Mono fails in this! + /* FIXME: Mono fails at this: * return (T) Activator.CreateInstance(typeof(T)); */ return default(T); diff --git a/MonoGame.Framework/Vector2.cs b/MonoGame.Framework/Vector2.cs index 8cdb102004f..6e232d6dd0c 100644 --- a/MonoGame.Framework/Vector2.cs +++ b/MonoGame.Framework/Vector2.cs @@ -668,10 +668,10 @@ public static Vector2 TransformNormal(Vector2 normal, Matrix matrix) #endregion } + #region Vector2 TypeConverter + public class XNAVector2Converter : TypeConverter { - #region Public Methods - public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) { if (sourceType == typeof(string)) @@ -714,7 +714,7 @@ Type destinationType } return base.ConvertTo(context, culture, value, destinationType); } - - #endregion } + + #endregion } diff --git a/MonoGame.Framework/Vector3.cs b/MonoGame.Framework/Vector3.cs index 31665be611c..9faaa7b12ec 100644 --- a/MonoGame.Framework/Vector3.cs +++ b/MonoGame.Framework/Vector3.cs @@ -392,9 +392,11 @@ public static float DistanceSquared(Vector3 value1, Vector3 value2) ref Vector3 value2, out float result ) { - result = ( (value1.X - value2.X) * (value1.X - value2.X) + - (value1.Y - value2.Y) * (value1.Y - value2.Y) + - (value1.Z - value2.Z) * (value1.Z - value2.Z) ); + result = ( + (value1.X - value2.X) * (value1.X - value2.X) + + (value1.Y - value2.Y) * (value1.Y - value2.Y) + + (value1.Z - value2.Z) * (value1.Z - value2.Z) + ); } public static Vector3 Divide(Vector3 value1, Vector3 value2) @@ -436,9 +438,11 @@ public static float Dot(Vector3 vector1, Vector3 vector2) public static void Dot(ref Vector3 vector1, ref Vector3 vector2, out float result) { - result = ( (vector1.X * vector2.X) + - (vector1.Y * vector2.Y) + - (vector1.Z * vector2.Z) ); + result = ( + (vector1.X * vector2.X) + + (vector1.Y * vector2.Y) + + (vector1.Z * vector2.Z) + ); } public static Vector3 Hermite( @@ -953,10 +957,10 @@ public static Vector3 TransformNormal(Vector3 normal, Matrix matrix) #endregion } + #region Vector3 TypeConverter + public class XNAVector3Converter : TypeConverter { - #region Public Methods - public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) { if (sourceType == typeof(string)) @@ -1001,7 +1005,7 @@ Type destinationType } return base.ConvertTo(context, culture, value, destinationType); } - - #endregion } + + #endregion } diff --git a/MonoGame.Framework/Vector4.cs b/MonoGame.Framework/Vector4.cs index 447823115a6..bcf665e7961 100644 --- a/MonoGame.Framework/Vector4.cs +++ b/MonoGame.Framework/Vector4.cs @@ -343,10 +343,12 @@ public static float DistanceSquared(Vector4 value1, Vector4 value2) ref Vector4 value2, out float result ) { - result = ( (value1.W - value2.W) * (value1.W - value2.W) + - (value1.X - value2.X) * (value1.X - value2.X) + - (value1.Y - value2.Y) * (value1.Y - value2.Y) + - (value1.Z - value2.Z) * (value1.Z - value2.Z) ); + result = ( + (value1.W - value2.W) * (value1.W - value2.W) + + (value1.X - value2.X) * (value1.X - value2.X) + + (value1.Y - value2.Y) * (value1.Y - value2.Y) + + (value1.Z - value2.Z) * (value1.Z - value2.Z) + ); } public static Vector4 Divide(Vector4 value1, Vector4 value2) @@ -398,10 +400,12 @@ public static float Dot(Vector4 vector1, Vector4 vector2) public static void Dot(ref Vector4 vector1, ref Vector4 vector2, out float result) { - result = ( (vector1.X * vector2.X) + - (vector1.Y * vector2.Y) + - (vector1.Z * vector2.Z) + - (vector1.W * vector2.W) ); + result = ( + (vector1.X * vector2.X) + + (vector1.Y * vector2.Y) + + (vector1.Z * vector2.Z) + + (vector1.W * vector2.W) + ); } public static Vector4 Hermite( @@ -745,10 +749,10 @@ public static void Transform(ref Vector4 vector, ref Matrix matrix, out Vector4 #endregion } + #region Vector4 TypeConverter + public class XNAVector4Converter : TypeConverter { - #region Public Methods - public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) { if (sourceType == typeof(string)) @@ -795,7 +799,7 @@ Type destinationType } return base.ConvertTo(context, culture, value, destinationType); } - - #endregion } + + #endregion }