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,6 +185,8 @@ public:
|
|||
class EntityGroupSelected : public scene::Graph::Walker
|
||||
{
|
||||
NodeSmartReference group;
|
||||
//typedef std::pair<NodeSmartReference, NodeSmartReference> DeletionPair;
|
||||
//Stack<DeletionPair> deleteme;
|
||||
public:
|
||||
EntityGroupSelected(const scene::Path &p): group(p.top().get())
|
||||
{
|
||||
|
|
@ -204,15 +206,25 @@ public:
|
|||
NodeSmartReference child(path.top().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(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);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Node_getTraversable(parent)->erase(child);
|
||||
Node_getTraversable(group)->insert(child);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user