private void NoSharedVertices()
{
var p = new Point3DCollection();
var ti = new Int32Collection();
Vector3DCollection n = null;
if (this.normals != null)
{
n = new Vector3DCollection();
}
PointCollection tc = null;
if (this.textureCoordinates != null)
{
tc = new PointCollection();
}
for (int i = 0; i < this.triangleIndices.Count; i += 3)
{
int i0 = i;
int i1 = i + 1;
int i2 = i + 2;
int index0 = this.triangleIndices[i0];
int index1 = this.triangleIndices[i1];
int index2 = this.triangleIndices[i2];
var p0 = this.positions[index0];
var p1 = this.positions[index1];
var p2 = this.positions[index2];
p.Add(p0);
p.Add(p1);
p.Add(p2);
ti.Add(i0);
ti.Add(i1);
ti.Add(i2);
if (n != null)
{
n.Add(this.normals[index0]);
n.Add(this.normals[index1]);
n.Add(this.normals[index2]);
}
if (tc != null)
{
tc.Add(this.textureCoordinates[index0]);
tc.Add(this.textureCoordinates[index1]);
tc.Add(this.textureCoordinates[index2]);
}
}
this.positions = p;
this.triangleIndices = ti;
this.normals = n;
this.textureCoordinates = tc;
}