OSDN Git Service

refactored. CompareTo
authornomeu <nomeu@72ae2088-5f33-de11-a17b-0000e250a282>
Mon, 19 Sep 2011 11:56:00 +0000 (11:56 +0000)
committernomeu <nomeu@72ae2088-5f33-de11-a17b-0000e250a282>
Mon, 19 Sep 2011 11:56:00 +0000 (11:56 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/tdcgexplorer/trunk/tso2mqo@2030 72ae2088-5f33-de11-a17b-0000e250a282

General.cs
MqoWriter.cs
TSOFile.cs

index 86ceffb..ef94d70 100644 (file)
@@ -4,7 +4,7 @@ using System.Text;
 \r
 namespace Tso2MqoGui\r
 {\r
-    public partial struct Point2\r
+    public partial struct Point2 : IComparable<Point2>\r
     {\r
         public float x, y;\r
 \r
@@ -28,9 +28,17 @@ namespace Tso2MqoGui
                 float.Parse(t[begin+0]),\r
                 float.Parse(t[begin+1]));\r
         }\r
+\r
+        public int CompareTo(Point2 obj)\r
+        {\r
+            int cmp;\r
+            cmp = x.CompareTo(obj.x); if (cmp != 0) return cmp;\r
+            cmp = y.CompareTo(obj.y);\r
+            return cmp;\r
+        }\r
     }\r
 \r
-    public partial struct Point3\r
+    public partial struct Point3 : IComparable<Point3>\r
     {\r
         public float x, y, z;\r
 \r
@@ -86,9 +94,18 @@ namespace Tso2MqoGui
                 float.Parse(t[begin+1]),\r
                 float.Parse(t[begin+2]));\r
         }\r
+\r
+        public int CompareTo(Point3 obj)\r
+        {\r
+            int cmp;\r
+            cmp = x.CompareTo(obj.x); if (cmp != 0) return cmp;\r
+            cmp = y.CompareTo(obj.y); if (cmp != 0) return cmp;\r
+            cmp = z.CompareTo(obj.z);\r
+            return cmp;\r
+        }\r
     }\r
 \r
-    public partial struct Point4\r
+    public partial struct Point4 : IComparable<Point4>\r
     {\r
         public float x, y, z, w;\r
 \r
@@ -109,6 +126,16 @@ namespace Tso2MqoGui
         {\r
             return X+","+Y+","+Z+","+W;\r
         }\r
+\r
+        public int CompareTo(Point4 obj)\r
+        {\r
+            int cmp;\r
+            cmp = x.CompareTo(obj.x); if (cmp != 0) return cmp;\r
+            cmp = y.CompareTo(obj.y); if (cmp != 0) return cmp;\r
+            cmp = z.CompareTo(obj.z); if (cmp != 0) return cmp;\r
+            cmp = w.CompareTo(obj.w);\r
+            return cmp;\r
+        }\r
     }\r
 \r
     public partial struct Color3\r
index 560782e..10a362c 100644 (file)
@@ -332,15 +332,10 @@ namespace Tso2MqoGui
 \r
         public int CompareTo(UVertex o)\r
         {\r
-            if(Pos.x < o.Pos.x) return -1; if(Pos.x > o.Pos.x) return 1;\r
-            if(Pos.y < o.Pos.y) return -1; if(Pos.y > o.Pos.y) return 1;\r
-            if(Pos.z < o.Pos.z) return -1; if(Pos.z > o.Pos.z) return 1;\r
-            if(Nrm.x < o.Nrm.x) return -1; if(Nrm.x > o.Nrm.x) return 1;\r
-            if(Nrm.y < o.Nrm.y) return -1; if(Nrm.y > o.Nrm.y) return 1;\r
-            if(Nrm.z < o.Nrm.z) return -1; if(Nrm.z > o.Nrm.z) return 1;\r
-            if(Tex.x < o.Tex.x) return -1; if(Tex.x > o.Tex.x) return 1;\r
-            if(Tex.y < o.Tex.y) return -1; if(Tex.y > o.Tex.y) return 1;\r
-            return mtl - o.mtl;\r
+            int cmp;\r
+            cmp = Pos.CompareTo(o.Pos); if (cmp != 0) return cmp;\r
+            cmp = Nrm.CompareTo(o.Nrm);\r
+            return cmp;\r
         }\r
 \r
         public override int GetHashCode()\r
index bd0aa53..ea0ad62 100644 (file)
@@ -629,20 +629,13 @@ namespace Tso2MqoGui
 \r
         public int CompareTo(Vertex o)\r
         {\r
-            if(Pos.x < o.Pos.x) return -1; if(Pos.x > o.Pos.x) return 1;\r
-            if(Pos.y < o.Pos.y) return -1; if(Pos.y > o.Pos.y) return 1;\r
-            if(Pos.z < o.Pos.z) return -1; if(Pos.z > o.Pos.z) return 1;\r
-            if(Nrm.x < o.Nrm.x) return -1; if(Nrm.x > o.Nrm.x) return 1;\r
-            if(Nrm.y < o.Nrm.y) return -1; if(Nrm.y > o.Nrm.y) return 1;\r
-            if(Nrm.z < o.Nrm.z) return -1; if(Nrm.z > o.Nrm.z) return 1;\r
-            if(Tex.x < o.Tex.x) return -1; if(Tex.x > o.Tex.x) return 1;\r
-            if(Tex.y < o.Tex.y) return -1; if(Tex.y > o.Tex.y) return 1;\r
-            if(Wgt.x < o.Wgt.x) return -1; if(Wgt.x > o.Wgt.x) return 1;\r
-            if(Wgt.y < o.Wgt.y) return -1; if(Wgt.y > o.Wgt.y) return 1;\r
-            if(Wgt.z < o.Wgt.z) return -1; if(Wgt.z > o.Wgt.z) return 1;\r
-            if(Wgt.w < o.Wgt.w) return -1; if(Wgt.w > o.Wgt.w) return 1;\r
-            if(Idx   < o.Idx)   return -1; if(Idx   > o.Idx)   return 1;\r
-            return 0;\r
+            int cmp = 0;\r
+            cmp = Pos.CompareTo(o.Pos); if (cmp != 0) return cmp;\r
+            cmp = Nrm.CompareTo(o.Nrm); if (cmp != 0) return cmp;\r
+            cmp = Tex.CompareTo(o.Tex); if (cmp != 0) return cmp;\r
+            cmp = Wgt.CompareTo(o.Wgt); if (cmp != 0) return cmp;\r
+            cmp = Idx.CompareTo(o.Idx);\r
+            return cmp;\r
         }\r
 \r
         public override int GetHashCode()\r