get the parentparent reference before changing the nodes; this should fix a segfault in regrouping
git-svn-id: svn://svn.icculus.org/netradiant/trunk@232 61c419a2-8eb2-4b30-bcec-8cead039b335
This commit is contained in:
parent
03d8a175d4
commit
08732dbb75
|
|
@ -185,7 +185,9 @@ public:
|
||||||
class EntityGroupSelected : public scene::Graph::Walker
|
class EntityGroupSelected : public scene::Graph::Walker
|
||||||
{
|
{
|
||||||
NodeSmartReference group;
|
NodeSmartReference group;
|
||||||
public:
|
//typedef std::pair<NodeSmartReference, NodeSmartReference> DeletionPair;
|
||||||
|
//Stack<DeletionPair> deleteme;
|
||||||
|
public:
|
||||||
EntityGroupSelected(const scene::Path &p): group(p.top().get())
|
EntityGroupSelected(const scene::Path &p): group(p.top().get())
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
@ -204,15 +206,25 @@ public:
|
||||||
NodeSmartReference child(path.top().get());
|
NodeSmartReference child(path.top().get());
|
||||||
NodeSmartReference parent(path.parent().get());
|
NodeSmartReference parent(path.parent().get());
|
||||||
|
|
||||||
|
if(path.size() >= 3 && parent != Map_FindOrInsertWorldspawn(g_map))
|
||||||
|
{
|
||||||
|
NodeSmartReference parentparent(path[path.size() - 3].get());
|
||||||
|
|
||||||
Node_getTraversable(parent)->erase(child);
|
Node_getTraversable(parent)->erase(child);
|
||||||
Node_getTraversable(group)->insert(child);
|
Node_getTraversable(group)->insert(child);
|
||||||
|
|
||||||
if(Node_getTraversable(parent)->empty() && path.size() >= 3 && parent != Map_FindOrInsertWorldspawn(g_map))
|
if(Node_getTraversable(parent)->empty())
|
||||||
{
|
{
|
||||||
NodeSmartReference parentparent(path[path.size() - 3].get());
|
//deleteme.push(DeletionPair(parentparent, parent));
|
||||||
Node_getTraversable(parentparent)->erase(parent);
|
Node_getTraversable(parentparent)->erase(parent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Node_getTraversable(parent)->erase(child);
|
||||||
|
Node_getTraversable(group)->insert(child);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user