#include <vector>
#include "object.h"
+#include "geom.h"
#include "gmath/gmath.h"
class Scene;
Mat4 xform;
Mat4 inv_xform;
+ mutable bool local_bvol_valid;
+ mutable AABox local_bvol;
+
public:
Scene *scene; // scene to which this node belongs
Mat4 dbg_xform;
+ bool visible; // if true, objects of this node are supposed to be visible
SceneNode();
explicit SceneNode(Object *obj);
void apply_xform();
bool intersect(const Ray &ray, HitPoint *hit) const;
+
+ // cached local bounding box (all objects in this node in model space)
+ const AABox &calc_local_bounds();
+ const AABox &get_local_bounds() const;
+
+ // world bounding box of the node
+ AABox get_node_bounds() const;
+ // world bounding box of the node and it's subtree
+ AABox get_bounds() const;
};
#endif // SNODE_H_