git-svn-id: svn://db.shs.com.ru/libs@705 a8b55f48-bf90-11e4-a774-851b48703e85
This commit is contained in:
@@ -35,7 +35,7 @@ Scene::Scene() {
|
||||
|
||||
Scene::~Scene() {
|
||||
destroying = true;
|
||||
destroy();
|
||||
clear();
|
||||
delete root_;
|
||||
}
|
||||
|
||||
@@ -74,7 +74,7 @@ void Scene::addScene(const Scene * s) {
|
||||
|
||||
|
||||
void Scene::assignFrom(const Scene * s) {
|
||||
destroy();
|
||||
clear();
|
||||
setName(s->name());
|
||||
foreach (Material * m, s->materials) {
|
||||
Material * nm = new Material();
|
||||
@@ -91,6 +91,19 @@ void Scene::assignFrom(const Scene * s) {
|
||||
}
|
||||
|
||||
|
||||
void Scene::clear() {
|
||||
selected_.clear();
|
||||
selected_top.clear();
|
||||
emitSelectionChanged();
|
||||
root_->clearChildren(true);
|
||||
td_geometries << geometries;
|
||||
qDeleteAll(materials);
|
||||
geometries.clear();
|
||||
materials.clear();
|
||||
emit __destroyed();
|
||||
emit treeChanged();}
|
||||
|
||||
|
||||
void Scene::objectsCountInternal(int * cnt, ObjectBase * where) {
|
||||
++(*cnt);
|
||||
foreach (ObjectBase * i, where->children_)
|
||||
@@ -422,6 +435,9 @@ void Scene::prepareTree(ObjectBase * o) {
|
||||
co->setObjectsChanged();
|
||||
}
|
||||
break;
|
||||
case ObjectBase::glCamera:
|
||||
cameras_used << globject_cast<Camera * >(co);
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
prepareTree(co);
|
||||
@@ -445,6 +461,7 @@ bool Scene::prepare() {
|
||||
geometries_used[rpSolid ].clear();
|
||||
geometries_used[rpTransparent].clear();
|
||||
lights_used.clear();
|
||||
cameras_used.clear();
|
||||
prepareTree(root_);
|
||||
if (tree_struct_changed) {
|
||||
tree_struct_changed = false;
|
||||
@@ -459,17 +476,9 @@ bool Scene::prepare() {
|
||||
}
|
||||
|
||||
|
||||
void Scene::destroy() {
|
||||
selected_.clear();
|
||||
selected_top.clear();
|
||||
emitSelectionChanged();
|
||||
root_->clearChildren(true);
|
||||
td_geometries << geometries;
|
||||
qDeleteAll(materials);
|
||||
geometries.clear();
|
||||
materials.clear();
|
||||
emit __destroyed();
|
||||
emit treeChanged();
|
||||
void Scene::destroy(QOpenGLExtraFunctions * f) {
|
||||
foreach (Mesh * g, geometries)
|
||||
g->destroy(f);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user