diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2014-01-27 15:00:05 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2014-01-27 15:04:06 +0400 |
commit | 31d679b667cd121a9bcbe32fedc8ab768611b963 (patch) | |
tree | 47c5ae514d9772dff1086b8eed8cf8ffb191f11f /extern/carve/lib/intersect.cpp | |
parent | 184294782e16dd7ed2bfdef064fc9c4351fe5507 (diff) |
Update Carve to latest update
Fixes some issues with NaN vertices in special cases.
Also adds edge interpolation routines which are currently
unused but which are requires to implement edge CD interpolation.
Diffstat (limited to 'extern/carve/lib/intersect.cpp')
-rw-r--r-- | extern/carve/lib/intersect.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/extern/carve/lib/intersect.cpp b/extern/carve/lib/intersect.cpp index 8e377664748..3bfbb40e402 100644 --- a/extern/carve/lib/intersect.cpp +++ b/extern/carve/lib/intersect.cpp @@ -433,12 +433,16 @@ void carve::csg::CSG::Hooks::unregisterHook(Hook *hook) { } void carve::csg::CSG::Hooks::reset() { + std::set<Hook *> to_delete; for (unsigned i = 0; i < HOOK_MAX; ++i) { for (std::list<Hook *>::iterator j = hooks[i].begin(); j != hooks[i].end(); ++j) { - delete (*j); + to_delete.insert(*j); } hooks[i].clear(); } + for (std::set<Hook *>::iterator i = to_delete.begin(); i != to_delete.end(); ++i) { + delete *i; + } } carve::csg::CSG::Hooks::Hooks() : hooks() { @@ -1374,9 +1378,9 @@ void carve::csg::CSG::calc(meshset_t *a, * @param result_list * @param shared_edge_ptr */ -void returnSharedEdges(carve::csg::V2Set &shared_edges, - std::list<carve::mesh::MeshSet<3> *> &result_list, - carve::csg::V2Set *shared_edge_ptr) { +static void returnSharedEdges(carve::csg::V2Set &shared_edges, + std::list<carve::mesh::MeshSet<3> *> &result_list, + carve::csg::V2Set *shared_edge_ptr) { // need to convert shared edges to point into result typedef std::map<carve::geom3d::Vector, carve::mesh::MeshSet<3>::vertex_t *> remap_type; remap_type remap; |