public IEnumerator ApplyPositionalModifierAsync(Vector3 worldPosition, VPaintObjectPositionalModifier modifier, float time) { Mesh m = GetMeshInstance(); Vector3[] vertices = myVertices; Color[] colors = myColors; if (colors == null) { colors = m.colors; } var len = vertices.Length; Color[] target = new Color[len]; for (int i = 0; i < len; i++) { Vector3 v = transform.TransformPoint(vertices[i]); float distance = Vector3.Distance(v, worldPosition); target[i] = modifier(colors[i], distance); } var routine = VPaintUtility.LerpColors(this, colors, target, time); while (routine.MoveNext()) { yield return(null); } }
public void ApplyPositionalModifier(Vector3 worldPosition, VPaintObjectPositionalModifier modifier) { Mesh m = GetMeshInstance(); Vector3[] vertices = myVertices; Color[] colors = myColors; if (colors == null) { colors = m.colors; } var len = vertices.Length; for (int i = 0; i < len; i++) { Vector3 v = transform.TransformPoint(vertices[i]); float distance = Vector3.Distance(v, worldPosition); colors[i] = modifier(colors[i], distance); } m.colors = colors; myColors = colors; }