Exemple #1
0
 //public bool autoUpdate = false;
 public void OnEnable()
 {
     myTarget = (Puppet2D_EditSkinWeights)target;
 }
Exemple #2
0
    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;

    }