goat3d
diff src/node.cc @ 75:76dea247f75c
in progress
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Thu, 08 May 2014 00:50:16 +0300 |
parents | 99715321ad6d |
children | 9785847d52d4 |
line diff
1.1 --- a/src/node.cc Tue May 06 13:26:52 2014 +0300 1.2 +++ b/src/node.cc Thu May 08 00:50:16 2014 +0300 1.3 @@ -24,15 +24,18 @@ 1.4 Node::Node() 1.5 { 1.6 obj = 0; 1.7 + bbox_valid = false; 1.8 } 1.9 1.10 void Node::set_object(Object *obj) 1.11 { 1.12 this->obj = obj; 1.13 + bbox_valid = false; 1.14 } 1.15 1.16 Object *Node::get_object() 1.17 { 1.18 + bbox_valid = false; 1.19 return obj; 1.20 } 1.21 1.22 @@ -41,6 +44,20 @@ 1.23 return obj; 1.24 } 1.25 1.26 +const AABox &Node::get_bounds() const 1.27 +{ 1.28 + if(!bbox_valid) { 1.29 + bbox = obj ? obj->get_bounds() : AABox(); 1.30 + 1.31 + for(int i=0; i<get_children_count(); i++) { 1.32 + bbox = aabox_union(bbox, ((Node*)get_child(i))->get_bounds()); 1.33 + } 1.34 + bbox_valid = true; 1.35 + } 1.36 + 1.37 + return bbox; 1.38 +} 1.39 + 1.40 void g3dimpl::delete_node_tree(Node *n) 1.41 { 1.42 if(!n) return;