//public bool autoUpdate = false; public void OnEnable() { myTarget = (Puppet2D_EditSkinWeights)target; }
public static bool EditWeights() { GameObject[] selection = Selection.gameObjects; foreach (GameObject sel in selection) { if ((sel.GetComponent <Puppet2D_Bakedmesh>() != null)) { Debug.LogWarning("Already in edit mode"); return(false); } if ((sel.GetComponent <SkinnedMeshRenderer>())) { SkinnedMeshRenderer renderer = sel.GetComponent <SkinnedMeshRenderer>(); Undo.RecordObject(sel, "add mesh to meshes being editted"); Undo.AddComponent <Puppet2D_Bakedmesh>(sel); Mesh mesh = sel.GetComponent <MeshFilter>().sharedMesh; Vector3[] verts = mesh.vertices; BoneWeight[] boneWeights = mesh.boneWeights; for (int i = 0; i < verts.Length; i++) { Vector3 vert = verts[i]; Vector3 vertPos = sel.transform.TransformPoint(vert); GameObject handle = new GameObject("vertex" + i); Undo.RegisterCreatedObjectUndo(handle, "vertex created"); handle.transform.position = vertPos; Undo.SetTransformParent(handle.transform, sel.transform, "parent handle"); SpriteRenderer spriteRenderer = Undo.AddComponent <SpriteRenderer>(handle); string path = (Puppet2D_Editor._puppet2DPath + "/Textures/GUI/VertexHandle.psd"); Sprite sprite = AssetDatabase.LoadAssetAtPath(path, typeof(Sprite)) as Sprite; spriteRenderer.sprite = sprite; spriteRenderer.sortingLayerName = Puppet2D_Editor._controlSortingLayer; Puppet2D_EditSkinWeights editSkinWeights = Undo.AddComponent <Puppet2D_EditSkinWeights>(handle); editSkinWeights.verts = mesh.vertices; editSkinWeights.Weight0 = boneWeights[i].weight0; editSkinWeights.Weight1 = boneWeights[i].weight1; editSkinWeights.Weight2 = boneWeights[i].weight2; editSkinWeights.Weight3 = boneWeights[i].weight3; if (boneWeights[i].weight0 > 0) { editSkinWeights.Bone0 = renderer.bones[boneWeights[i].boneIndex0].gameObject; editSkinWeights.boneIndex0 = boneWeights[i].boneIndex0; } else { editSkinWeights.Bone0 = null; } if (boneWeights[i].weight1 > 0) { editSkinWeights.Bone1 = renderer.bones[boneWeights[i].boneIndex1].gameObject; editSkinWeights.boneIndex1 = boneWeights[i].boneIndex1; } else { editSkinWeights.Bone1 = null; editSkinWeights.boneIndex1 = renderer.bones.Length; } if (boneWeights[i].weight2 > 0) { editSkinWeights.Bone2 = renderer.bones[boneWeights[i].boneIndex2].gameObject; editSkinWeights.boneIndex2 = boneWeights[i].boneIndex2; } else { editSkinWeights.Bone2 = null; editSkinWeights.boneIndex2 = renderer.bones.Length; } if (boneWeights[i].weight3 > 0) { editSkinWeights.Bone3 = renderer.bones[boneWeights[i].boneIndex3].gameObject; editSkinWeights.boneIndex3 = boneWeights[i].boneIndex3; } else { editSkinWeights.Bone3 = null; editSkinWeights.boneIndex3 = renderer.bones.Length; } editSkinWeights.mesh = mesh; editSkinWeights.meshRenderer = renderer; editSkinWeights.vertNumber = i; } } else { Debug.LogWarning("Selection does not have a meshRenderer"); return(false); } } return(true); }
//public bool autoUpdate = false; public void OnEnable() { myTarget = (Puppet2D_EditSkinWeights) target; }