private void CalculateVertexColors()
{
GameObject go = Selection.activeGameObject;
if (go == lastSelected || meshFilter.sharedMesh == null) {
return;
}
lastSelected = go;
Mesh m = skinnedMeshRenderer.sharedMesh;
Color[] colors = new Color[m.vertexCount];
for (int i = 0; i < colors.Length; i++) {
colors[i] = Color.black;
}
if (go != null) {
Bone bone = go.GetComponent<Bone>();
if (bone != null) {
if (skinnedMeshRenderer.bones.Any(b => b.gameObject.GetInstanceID() == bone.gameObject.GetInstanceID())) {
for (int i = 0; i < colors.Length; i++) {
float value = 0;
BoneWeight bw = m.boneWeights[i];
if (bw.boneIndex0 == bone.index)
value = bw.weight0;
else if (bw.boneIndex1 == bone.index)
value = bw.weight1;
else if (bw.boneIndex2 == bone.index)
value = bw.weight2;
else if (bw.boneIndex3 == bone.index)
value = bw.weight3;
colors[i] = Util.HSBColor.ToColor(new Util.HSBColor(0.7f - value, 1.0f, 0.5f));
}
}
}
}
meshFilter.sharedMesh.colors = colors;
}