void UpdateDisplayMode(bool endPainting = true)
{
if (painting && endPainting)
{
EndStroke();
}
if (VertexInstanceStream.vertexShaderMat == null)
{
VertexInstanceStream.vertexShaderMat = new Material(Shader.Find("Hidden/VertexPainterPro_Preview"));
VertexInstanceStream.vertexShaderMat.hideFlags = HideFlags.HideAndDontSave;
}
for (int i = 0; i < jobs.Length; ++i)
{
var job = jobs[i];
EditorUtility.SetSelectedWireframeHidden(job.renderer, hideMeshWireframe);
if (job.renderer != null && job.HasStream())
{
if (!showVertexShader || !enabled)
{
// restore..
if (job.stream.originalMaterial != null && job.stream.originalMaterial.Length > 0 &&
job.renderer.sharedMaterial == VertexInstanceStream.vertexShaderMat)
{
if (job.renderer.sharedMaterials != null && job.renderer.sharedMaterials.Length > 1 &&
job.renderer.sharedMaterials.Length == job.stream.originalMaterial.Length)
{
Material[] mats = new Material[jobs[i].renderer.sharedMaterials.Length];
for (int x = 0; x < job.renderer.sharedMaterials.Length; ++x)
{
mats[x] = job.stream.originalMaterial[x];
}
job.renderer.sharedMaterials = mats;
}
else
{
job.renderer.sharedMaterial = job.stream.originalMaterial[0];
}
}
else if (job.renderer.sharedMaterial != VertexInstanceStream.vertexShaderMat)
{
job.CaptureMat();
}
}
else if (showVertexShader)
{
if (job.renderer.sharedMaterial != VertexInstanceStream.vertexShaderMat)
{
job.CaptureMat();
}
if (job.stream.originalMaterial != null && job.stream.originalMaterial.Length > 0)
{
if (job.renderer.sharedMaterials != null && job.renderer.sharedMaterials.Length > 1)
{
Material[] mats = new Material[job.renderer.sharedMaterials.Length];
for (int x = 0; x < job.renderer.sharedMaterials.Length; ++x)
{
mats[x] = VertexInstanceStream.vertexShaderMat;
}
job.renderer.sharedMaterials = mats;
}
else
{
job.renderer.sharedMaterial = VertexInstanceStream.vertexShaderMat;
}
VertexInstanceStream.vertexShaderMat.SetInt("_flowVisualization", (int)flowVisualization);
VertexInstanceStream.vertexShaderMat.SetInt("_tab", (int)tab);
VertexInstanceStream.vertexShaderMat.SetInt("_flowTarget", (int)flowTarget);
VertexInstanceStream.vertexShaderMat.SetInt("_channel", (int)brushMode);
VertexInstanceStream.vertexShaderMat.SetVector("_uvRange", uvVisualizationRange);
}
}
}
}
}