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;