Пример #1
0
 public VertGroup(VertGroup selectedGroup)
 {
     name        = selectedGroup.name;
     vertHandles = new List <GameObject>();
     color       = selectedGroup.color;
     foreach (GameObject vertHandle in selectedGroup.vertHandles)
     {
         vertHandles.Add(vertHandle);
         VertHandleGizmo gizmo = vertHandle.GetComponent <VertHandleGizmo>();
         gizmo.groups.Add(this);
     }
 }
Пример #2
0
 void Start()
 {
     mesh  = GetComponent <MeshFilter>().sharedMesh;
     verts = GetUniqueVerticies(mesh.vertices);
     if (handles == null)
     {
         foreach (Vector3 vert in verts)
         {
             vertPos = transform.TransformPoint(vert);
             GameObject handle = new GameObject("VertHandle");
             handle.transform.position = vertPos;
             handle.transform.parent   = transform;
             VertHandleGizmo gizmo = handle.AddComponent <VertHandleGizmo>();
             gizmo.parent = this;
         }
     }
 }
Пример #3
0
    void Update()
    {
        if (destroy)
        {
            destroy = false;
            DestroyImmediate(this);
            return;
        }



        if (groupSelected)
        {
            groupSelected = false;
            bool newGroup = true;
            //for all existing groups
            foreach (VertGroup group in groups)
            {
                //if this group has the same name as what's in the selected group
                if (group.name == selectedHandles.name)
                {
                    //this group already exists
                    newGroup = false;
                    //add any new edges to the group
                    foreach (GameObject vertHandle in selectedHandles.vertHandles)
                    {
                        if (!group.vertHandles.Contains(vertHandle))
                        {
                            group.vertHandles.Add(vertHandle);
                        }
                        //make the edge know about the group it now belongs to
                        VertHandleGizmo gizmo = vertHandle.GetComponent <VertHandleGizmo>();
                        if (!gizmo.HasGroup(group))
                        {
                            gizmo.groups.Add(group);
                        }
                    }
                    //set the group color
                    group.color = selectedHandles.color;
                }
            }
            if (newGroup)
            {
                VertGroup g = new VertGroup(selectedHandles);// selectedHandles.name, selectedHandles.edges, selectedHandles.color);
                groups.Add(g);
            }
        }

        if (removeFromGroup)
        {
            removeFromGroup = false;
            foreach (VertGroup group in groups)
            {
                if (group.name == selectedHandles.name)
                {
                    foreach (GameObject vertHandle in selectedHandles.vertHandles)
                    {
                        if (group.vertHandles.Contains(vertHandle))
                        {
                            group.vertHandles.Remove(vertHandle);
                            VertHandleGizmo gizmo = vertHandle.GetComponent <VertHandleGizmo>();
                            if (gizmo.groups.Contains(group))
                            {
                                gizmo.groups.Remove(group);
                            }
                        }
                    }
                }
            }
            CleanGroups();
        }

        if (removeFromAll)
        {
            removeFromAll = false;
            foreach (VertGroup group in groups)
            {
                foreach (GameObject vertHandle in selectedHandles.vertHandles)
                {
                    if (group.vertHandles.Contains(vertHandle))
                    {
                        group.vertHandles.Remove(vertHandle);
                        VertHandleGizmo gizmo = vertHandle.GetComponent <VertHandleGizmo>();
                        if (gizmo.groups.Contains(group))
                        {
                            gizmo.groups.Remove(group);
                        }
                    }
                }
            }
            CleanGroups();
        }


        for (int i = 0; i < verts.Length; i++)
        {
            verts[i] = handles[i].transform.localPosition;
        }
        mesh.vertices = verts;
        mesh.RecalculateBounds();
        mesh.RecalculateNormals();
    }