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); }
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); }
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); } }