From 5328995a7964579728e561dfad3ce8013c7b57a0 Mon Sep 17 00:00:00 2001 From: Bruno Date: Sun, 7 Feb 2021 20:43:56 +0100 Subject: [PATCH] added force non visible to BBox visitor --- BoundingBoxVisitor.cpp | 10 +++++----- BoundingBoxVisitor.h | 5 +++-- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/BoundingBoxVisitor.cpp b/BoundingBoxVisitor.cpp index 0fb2225..23cfe53 100644 --- a/BoundingBoxVisitor.cpp +++ b/BoundingBoxVisitor.cpp @@ -6,7 +6,7 @@ #include "Primitives.h" #include "Decorations.h" -BoundingBoxVisitor::BoundingBoxVisitor(): Visitor() +BoundingBoxVisitor::BoundingBoxVisitor(bool force): force_(force) { modelview_ = glm::identity(); @@ -35,7 +35,7 @@ void BoundingBoxVisitor::visit(Group &n) return; glm::mat4 mv = modelview_; for (NodeSet::iterator node = n.begin(); node != n.end(); node++) { - if ( (*node)->visible_ ) + if ( (*node)->visible_ || force_) (*node)->accept(*this); modelview_ = mv; } @@ -46,14 +46,13 @@ void BoundingBoxVisitor::visit(Switch &n) if (!n.visible_ || n.numChildren() < 1) return; glm::mat4 mv = modelview_; - n.activeChild()->accept(*this); + if ( n.activeChild()->visible_ || force_) + n.activeChild()->accept(*this); modelview_ = mv; } void BoundingBoxVisitor::visit(Primitive &n) { - if (!n.visible_) - return; bbox_.extend(n.bbox().transformed(modelview_)); @@ -64,3 +63,4 @@ void BoundingBoxVisitor::visit(Scene &n) { n.ws()->accept(*this); } + diff --git a/BoundingBoxVisitor.h b/BoundingBoxVisitor.h index 8520cb8..57693c0 100644 --- a/BoundingBoxVisitor.h +++ b/BoundingBoxVisitor.h @@ -8,11 +8,11 @@ class BoundingBoxVisitor: public Visitor { glm::mat4 modelview_; + bool force_; GlmToolkit::AxisAlignedBoundingBox bbox_; public: - - BoundingBoxVisitor(); + BoundingBoxVisitor(bool force = false); void setModelview(glm::mat4 modelview); GlmToolkit::AxisAlignedBoundingBox bbox(); @@ -23,6 +23,7 @@ public: void visit(Group& n) override; void visit(Switch& n) override; void visit(Primitive& n) override; + }; #endif // BOUNDINGBOXVISITOR_H