From 7b31827fe39d5496e42fe2e51a2a256f46f1e0ef Mon Sep 17 00:00:00 2001 From: Marius Kintel Date: Wed, 25 Dec 2013 14:47:54 -0500 Subject: [PATCH] Implemented intersection_for --- src/GeometryEvaluator.cc | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/GeometryEvaluator.cc b/src/GeometryEvaluator.cc index e78cbf2e..871c3fae 100644 --- a/src/GeometryEvaluator.cc +++ b/src/GeometryEvaluator.cc @@ -1087,5 +1087,16 @@ Response GeometryEvaluator::visit(State &state, const RenderNode &node) Response GeometryEvaluator::visit(State &state, const AbstractIntersectionNode &node) { - assert(false); + if (state.isPrefix() && isCached(node)) return PruneTraversal; + if (state.isPostfix()) { + shared_ptr geom; + if (!isCached(node)) { + geom = applyToChildren(node, OPENSCAD_INTERSECTION).constptr(); + } + else { + geom = GeometryCache::instance()->get(this->tree.getIdString(node)); + } + addToParent(state, node, geom); + } + return ContinueTraversal; }