projects
/
laserbrain_demo
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
minor changes (bounds lazy eval state)
[laserbrain_demo]
/
src
/
snode.cc
diff --git
a/src/snode.cc
b/src/snode.cc
index
a1d41ae
..
bce8c0a
100644
(file)
--- a/
src/snode.cc
+++ b/
src/snode.cc
@@
-11,6
+11,7
@@
SceneNode::SceneNode()
scene = 0;
parent = 0;
name = 0;
scene = 0;
parent = 0;
name = 0;
+ bvol_valid = false;
}
SceneNode::SceneNode(Object *obj)
}
SceneNode::SceneNode(Object *obj)
@@
-19,6
+20,7
@@
SceneNode::SceneNode(Object *obj)
scene = 0;
parent = 0;
name = 0;
scene = 0;
parent = 0;
name = 0;
+ bvol_valid = false;
add_object(obj);
}
add_object(obj);
}
@@
-53,6
+55,8
@@
void SceneNode::add_child(SceneNode *node)
children.push_back(node);
node->parent = this;
node->scene = scene;
children.push_back(node);
node->parent = this;
node->scene = scene;
+
+ bvol_valid = false;
}
bool SceneNode::remove_child(SceneNode *node)
}
bool SceneNode::remove_child(SceneNode *node)
@@
-65,6
+69,8
@@
bool SceneNode::remove_child(SceneNode *node)
node->parent = 0;
node->scene = 0;
children.erase(it);
node->parent = 0;
node->scene = 0;
children.erase(it);
+
+ bvol_valid = false;
return true;
}
return false;
return true;
}
return false;
@@
-95,6
+101,8
@@
void SceneNode::add_object(Object *obj)
this->obj.push_back(obj);
obj->node = this;
this->obj.push_back(obj);
obj->node = this;
+
+ bvol_valid = false;
}
bool SceneNode::remove_object(Object *o)
}
bool SceneNode::remove_object(Object *o)
@@
-109,6
+117,8
@@
bool SceneNode::remove_object(Object *o)
return false;
}
obj.erase(it);
return false;
}
obj.erase(it);
+
+ bvol_valid = false;
return true;
}
return true;
}
@@
-276,3
+286,16
@@
bool SceneNode::intersect(const Ray &ray, HitPoint *hit) const
}
return false;
}
}
return false;
}
+
+const Box &SceneNode::calc_bounds()
+{
+ // TODO
+}
+
+const Box &SceneNode::get_bounds() const
+{
+ if(!bvol_valid) {
+ return ((SceneNode*)this)->calc_bounds();
+ }
+ return bvol;
+}