Example #1
0
        public void RemoveComponent(int tid, bool bInteractive)
        {
            if (PreviewMesh.IsTriangle(tid) == false)
            {
                DebugUtil.Log("MeshEditorTool.RemoveComponent: invalid tid!");
                return;
            }
            var tris = MeshConnectedComponents.FindConnectedT(PreviewMesh, tid);

            do_remove_triangles(tris, bInteractive);
        }
Example #2
0
 public void RemoveTriangle(int tid, bool bInteractive)
 {
     if (PreviewMesh.IsTriangle(tid) == false)
     {
         DebugUtil.Log("MeshEditorTool.RemoveTriangle: invalid tid!");
         return;
     }
     do_remove_triangles(new List <int>()
     {
         tid
     }, bInteractive);
 }
Example #3
0
        public void PokeFace(int tid, Frame3f posL, bool bInteractive)
        {
            if (PreviewMesh.IsTriangle(tid) == false)
            {
                DebugUtil.Log("MeshEditorTool.PokeFace: invalid tid!");
                return;
            }
            Vector3d baryCoords = MeshQueries.BaryCoords(PreviewMesh, tid, posL.Origin);
            RemoveTrianglesMeshChange removeChange = null;
            AddTrianglesMeshChange    addChange    = null;

            previewSO.EditAndUpdateMesh((mesh) => {
                removeChange = new RemoveTrianglesMeshChange();
                removeChange.InitializeFromExisting(mesh, new List <int>()
                {
                    tid
                });

                DMesh3.PokeTriangleInfo pokeInfo;
                if (mesh.PokeTriangle(tid, baryCoords, out pokeInfo) == MeshResult.Ok)
                {
                    PreviewSpatial.RemoveTriangle(tid);
                    PreviewSpatial.AddTriangle(tid);
                    PreviewSpatial.AddTriangle(pokeInfo.new_t1);
                    PreviewSpatial.AddTriangle(pokeInfo.new_t2);

                    addChange = new AddTrianglesMeshChange();
                    addChange.InitializeFromExisting(mesh,
                                                     new List <int>()
                    {
                        pokeInfo.new_vid
                    },
                                                     new List <int>()
                    {
                        tid, pokeInfo.new_t1, pokeInfo.new_t2
                    });
                }
            }, GeometryEditTypes.ArbitraryEdit);

            if (addChange != null)
            {
                add_replace_change(removeChange, addChange, bInteractive);
            }
        }