Fixed a missing face on a profile cut
parent
216787ee1d
commit
116a08f42e
|
@ -458,6 +458,10 @@ namespace PrimMesher
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool simpleFace = false; // flag to create as few triangles as possible for 3 or 4 side profile
|
||||||
|
if (sides < 5 && hollow == 0.0f && profileStart == 0.0f && profileEnd == 1.0f)
|
||||||
|
simpleFace = true;
|
||||||
|
|
||||||
if (this.calcVertexNormals)
|
if (this.calcVertexNormals)
|
||||||
{
|
{
|
||||||
if (sides > 4)
|
if (sides > 4)
|
||||||
|
@ -501,7 +505,7 @@ namespace PrimMesher
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else if (!simpleFace)
|
||||||
{
|
{
|
||||||
this.coords.Add(center);
|
this.coords.Add(center);
|
||||||
if (this.calcVertexNormals && sides > 4)
|
if (this.calcVertexNormals && sides > 4)
|
||||||
|
@ -546,7 +550,7 @@ namespace PrimMesher
|
||||||
hollowCoords.Add(newVert);
|
hollowCoords.Add(newVert);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (createFaces && angle.angle > 0.0001f)
|
else if (!simpleFace && createFaces && angle.angle > 0.0001f)
|
||||||
{
|
{
|
||||||
Face newFace = new Face();
|
Face newFace = new Face();
|
||||||
newFace.v1 = 0;
|
newFace.v1 = 0;
|
||||||
|
@ -641,6 +645,18 @@ namespace PrimMesher
|
||||||
|
|
||||||
this.coords.AddRange(hollowCoords);
|
this.coords.AddRange(hollowCoords);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (simpleFace && createFaces)
|
||||||
|
{
|
||||||
|
if (sides == 3)
|
||||||
|
this.faces.Add(new Face(0, 1, 2));
|
||||||
|
else if (sides == 4)
|
||||||
|
{
|
||||||
|
this.faces.Add(new Face(0, 1, 2));
|
||||||
|
this.faces.Add(new Face(0, 2, 3));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Profile Clone()
|
public Profile Clone()
|
||||||
|
@ -966,7 +982,7 @@ namespace PrimMesher
|
||||||
hollow *= 1.414f;
|
hollow *= 1.414f;
|
||||||
|
|
||||||
bool hasProfileCut = false;
|
bool hasProfileCut = false;
|
||||||
if (profileStart < 0.0 || profileEnd < 1.0)
|
if (profileStart > 0.0f || profileEnd < 1.0f)
|
||||||
hasProfileCut = true;
|
hasProfileCut = true;
|
||||||
|
|
||||||
Profile profile = new Profile(this.sides, this.profileStart, this.profileEnd, hollow, this.hollowSides, true, calcVertexNormals);
|
Profile profile = new Profile(this.sides, this.profileStart, this.profileEnd, hollow, this.hollowSides, true, calcVertexNormals);
|
||||||
|
@ -1023,7 +1039,7 @@ namespace PrimMesher
|
||||||
int startVert = coordsLen + 1;
|
int startVert = coordsLen + 1;
|
||||||
int endVert = this.coords.Count - 1;
|
int endVert = this.coords.Count - 1;
|
||||||
|
|
||||||
if (hasProfileCut || hollow > 0.0f)
|
if (sides < 5 || hasProfileCut || hollow > 0.0f)
|
||||||
startVert--;
|
startVert--;
|
||||||
|
|
||||||
for (int i = startVert; i < endVert; i++)
|
for (int i = startVert; i < endVert; i++)
|
||||||
|
@ -1067,6 +1083,9 @@ namespace PrimMesher
|
||||||
}
|
}
|
||||||
else done = true;
|
else done = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (calcVertexNormals && sides < 5 && twistBegin == 0.0f && twistEnd == 0.0f)
|
||||||
|
this.CalcNormals();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ExtrudeCircular()
|
public void ExtrudeCircular()
|
||||||
|
|
Loading…
Reference in New Issue