fixed a subroot bug about traversing siblings

This commit is contained in:
Asad M. Zaman 2006-07-20 17:22:51 +00:00
parent ef8c0570c8
commit b3f4f2588d
2 changed files with 20 additions and 6 deletions

View File

@ -99,7 +99,13 @@ build_hierarchy(const string &subroot) {
if (bar != string::npos) {
node_name = path.substr(bar + 1);
if (node_name == subroot) {
mayaegg_cat.info() << "node name: " << node_name << endl;
// mark its parent node name
//mayaegg_cat.info() << path.substr(0,bar) << endl;
size_t new_bar = path.substr(0,bar).rfind("|");
if (new_bar != string::npos) {
_subroot_parent_name = path.substr(new_bar+1,bar-(new_bar+1));
mayaegg_cat.info() << "subroot parent name: " << _subroot_parent_name << endl;
}
status = dag_iterator.reset(dag_iterator.item(),MItDag::kDepthFirst, MFn::kTransform);
if (!status) {
status.perror("MItDag constructor");
@ -604,8 +610,10 @@ r_build_node(const string &path) {
// create each node along the path.
MayaNodeDesc *node_desc;
//mayaegg_cat.info() << "path: " << path << endl;
if (path.empty()) {
// This is the top.
//mayaegg_cat.info() << "found empty path: " << path << endl;
node_desc = _root;
} else {
@ -618,16 +626,21 @@ r_build_node(const string &path) {
parent_path = path.substr(0, bar);
//mayaegg_cat.info() << "parent_path: " << parent_path << endl;
local_name = path.substr(bar + 1);
if (local_name == _subroot_parent_name) {
node_desc = _root;
}
} else {
local_name = path;
}
//mayaegg_cat.info() << "local_name: " << local_name << endl;
MayaNodeDesc *parent_node_desc = r_build_node(parent_path);
if (parent_node_desc == (MayaNodeDesc *)NULL)
mayaegg_cat.info() << "empty parent: " << local_name << endl;
node_desc = new MayaNodeDesc(this, parent_node_desc, local_name);
_nodes.push_back(node_desc);
if (node_desc != _root) {
MayaNodeDesc *parent_node_desc = r_build_node(parent_path);
if (parent_node_desc == (MayaNodeDesc *)NULL)
mayaegg_cat.info() << "empty parent: " << local_name << endl;
node_desc = new MayaNodeDesc(this, parent_node_desc, local_name);
_nodes.push_back(node_desc);
}
}
_nodes_by_path.insert(NodesByPath::value_type(path, node_desc));

View File

@ -71,6 +71,7 @@ public:
void reset_sliders();
public:
string _subroot_parent_name;
PT(MayaNodeDesc) _root;
float _fps;