OSDN Git Service

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

MqoWriter.cs

index 58ab3b5..560782e 100644 (file)
@@ -171,7 +171,7 @@ namespace Tso2MqoGui
                         ++cnt;\r
                         va= vb; a= b;\r
                         vb= vc; b= c;\r
-                        vc= k;  c= vh.Add(new UVertex(k.Pos.x, k.Pos.y, k.Pos.z, k.Nrm.x, k.Nrm.y, k.Nrm.z, k.Tex.x, k.Tex.y, j.spec));\r
+                        vc= k;  c= vh.Add(new UVertex(k.Pos, k.Nrm, k.Tex, j.spec));\r
 \r
                         if(cnt < 3)                     continue;\r
                         if(a == b || b == c || c == a)  continue;\r
@@ -204,7 +204,7 @@ namespace Tso2MqoGui
                 tw.WriteLine(" vertex {0} {{", vh.Count);\r
 \r
                 foreach(UVertex j in vh.verts)\r
-                    WriteVertex(j.x, j.y, j.z);\r
+                    WriteVertex(j.Pos.x, j.Pos.y, j.Pos.z);\r
 \r
                 tw.WriteLine(" }");\r
 \r
@@ -313,46 +313,40 @@ namespace Tso2MqoGui
 \r
     public class UVertex : IComparable<UVertex>\r
     {\r
-        public float    x, y, z, nx, ny, nz, u, v;\r
+        public Point3 Pos;\r
+        public Point3 Nrm;\r
+        public Point2 Tex;\r
         public int      mtl;\r
         \r
         public UVertex()\r
         {\r
         }\r
 \r
-        public UVertex(float x, float y, float z, float nx, float ny, float nz, float u, float v, int mtl)\r
+        public UVertex(Point3 pos, Point3 nrm, Point2 tex, int mtl)\r
         {\r
-            this.x  = x;\r
-            this.y  = y;\r
-            this.z  = z;\r
-            this.nx = nx;\r
-            this.ny = ny;\r
-            this.nz = nz;\r
-            this.u  = u;\r
-            this.v  = v;\r
+            Pos = pos;\r
+            Nrm = nrm;\r
+            Tex = tex;\r
             this.mtl= mtl;\r
         }\r
 \r
         public int CompareTo(UVertex o)\r
         {\r
-            if(x   < o.x)   return -1; if(x   > o.x)   return 1;\r
-            if(y   < o.y)   return -1; if(y   > o.y)   return 1;\r
-            if(z   < o.z)   return -1; if(z   > o.z)   return 1;\r
-            if(nx  < o.nx)  return -1; if(nx  > o.nx)  return 1;\r
-            if(ny  < o.ny)  return -1; if(ny  > o.ny)  return 1;\r
-            if(nz  < o.nz)  return -1; if(nz  > o.nz)  return 1;\r
-            if(u   < o.u)   return -1; if(u   > o.u)   return 1;\r
-            if(v   < o.v)   return -1; if(v   > o.v)   return 1;\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
         }\r
 \r
         public override int GetHashCode()\r
         {\r
-            return x .GetHashCode() ^ y .GetHashCode() ^ z .GetHashCode()\r
-                 ^ nx.GetHashCode() ^ ny.GetHashCode() ^ nz.GetHashCode()\r
-               //^ u .GetHashCode() ^ v .GetHashCode()\r
-               //^ mtl.GetHashCode()\r
-                 ;\r
+            return Pos.x.GetHashCode() ^ Pos.y.GetHashCode() ^ Pos.z.GetHashCode()\r
+                 ^ Nrm.x.GetHashCode() ^ Nrm.y.GetHashCode() ^ Nrm.z.GetHashCode();\r
         }\r
 \r
         public override bool Equals(object obj)\r
@@ -362,11 +356,8 @@ namespace Tso2MqoGui
             if(o == null)\r
                 return false;\r
 \r
-            return x  == o.x  && y  == o.y  && y  == o.y\r
-                && nx == o.nx && ny == o.ny && ny == o.ny\r
-              //&& u  == o.u  && v  == o.y\r
-              //&& mtl == o.mtl\r
-                ;\r
+            return Pos.x==o.Pos.x && Pos.y==o.Pos.y && Pos.z==o.Pos.z\r
+                && Nrm.x==o.Nrm.x && Nrm.y==o.Nrm.y && Nrm.z==o.Nrm.z;\r
         }\r
     }\r
 }\r