summaryrefslogtreecommitdiff
path: root/src/CSGTermEvaluator.cc
diff options
context:
space:
mode:
authorMarius Kintel <marius@kintel.net>2011-09-06 16:31:22 (GMT)
committerMarius Kintel <marius@kintel.net>2011-09-06 16:31:22 (GMT)
commit0e7c6473fa6541fee741d0019ba498747fd6e364 (patch)
tree7f7f673e7ba272ef0258ab7e2620593bbe76ba6c /src/CSGTermEvaluator.cc
parent3b16fdafd2235e8bcaec0c2be06949f61bc4047d (diff)
Implemented render()
Diffstat (limited to 'src/CSGTermEvaluator.cc')
-rw-r--r--src/CSGTermEvaluator.cc13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/CSGTermEvaluator.cc b/src/CSGTermEvaluator.cc
index b59f4db..f280b2b 100644
--- a/src/CSGTermEvaluator.cc
+++ b/src/CSGTermEvaluator.cc
@@ -178,9 +178,18 @@ Response CSGTermEvaluator::visit(State &state, const ColorNode &node)
// FIXME: If we've got CGAL support, render this node as a CGAL union into a PolySet
Response CSGTermEvaluator::visit(State &state, const RenderNode &node)
{
- PRINT("WARNING: render() statement not implemented");
if (state.isPostfix()) {
- applyToChildren(node, CSGT_UNION);
+ CSGTerm *t1 = NULL;
+ // FIXME: Calling evaluator directly since we're not a PolyNode. Generalize this.
+ PolySet *ps = NULL;
+ if (this->psevaluator) {
+ ps = this->psevaluator->evaluatePolySet(node, AbstractPolyNode::RENDER_OPENCSG);
+ }
+ if (ps) {
+ t1 = evaluate_csg_term_from_ps(state, this->highlights, this->background,
+ ps, node.modinst, node);
+ }
+ this->stored_term[node.index()] = t1;
addToParent(state, node);
}
return ContinueTraversal;
contact: Jan Huwald // Impressum