public override void InsertFace()
{
m_faceSelection.BeginChange();
ProBuilderMesh[] meshes = m_faceSelection.Meshes.OrderBy(m => m == m_faceSelection.LastMesh).ToArray();
foreach (ProBuilderMesh mesh in meshes)
{
IList<int> faceIndexes = m_faceSelection.GetFaces(mesh).ToArray();
for (int i = 0; i < faceIndexes.Count; ++i)
{
m_faceSelection.Remove(mesh, faceIndexes[i]);
}
IList<Face> faces = new List<Face>();
mesh.GetFaces(faceIndexes, faces);
Vector3[][] positions = new Vector3[faces.Count][];
Color[][] colors = new Color[faces.Count][];
Vector2[][] uvs = new Vector2[faces.Count][];
int[][] shared = new int[faces.Count][];
for (int i = 0; i < faces.Count; i++)
{
var vertices = mesh.GetVertices(faces[i].indexes);
positions[i] = new Vector3[vertices.Length];
int j = 0;
foreach (var index in vertices)
{
positions[i][j] = index.position + mesh.transform.position;
Debug.DrawRay(positions[i][j],Vector3.down,Color.red,10f);
j++;
}
colors[i] = new Color[] { };
uvs[i] = new Vector2[] {Vector2.zero, Vector2.zero, Vector2.zero, Vector2.zero,Vector2.zero, Vector2.zero};
// for (int k = 0; k < faces[i].indexes.Count; k++)
// {
// Debug.Log(k + " " + faces[i].indexes[k]);
// }
shared[i] = faces[i].indexes.ToArray();
}
mesh.AppendFaces(positions, colors, uvs, faces.ToArray(), shared);
for (int i = 0; i < faceIndexes.Count; ++i)
{
m_faceSelection.Add(mesh, faceIndexes[i]);
}
mesh.ToMesh();
mesh.Refresh();
}
m_faceSelection.EndChange();
m_faceSelection.Synchronize(
m_faceSelection.GetCenterOfMass(),
m_faceSelection.LastPosition);
RaisePBMeshesChanged(false);
}
the probuilder mesh color array is always null and the method wont going well!