++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
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
\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
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