From 335370b515ca32dbfff87f984ca533ce68b33eba Mon Sep 17 00:00:00 2001 From: David Rose Date: Thu, 11 Dec 2003 01:38:30 +0000 Subject: [PATCH] always extract all joints even if -subset is specified --- pandatool/src/mayaegg/mayaToEggConverter.cxx | 86 +++++++++++--------- 1 file changed, 46 insertions(+), 40 deletions(-) diff --git a/pandatool/src/mayaegg/mayaToEggConverter.cxx b/pandatool/src/mayaegg/mayaToEggConverter.cxx index 54d09ad648..0bca5491f9 100644 --- a/pandatool/src/mayaegg/mayaToEggConverter.cxx +++ b/pandatool/src/mayaegg/mayaToEggConverter.cxx @@ -607,10 +607,8 @@ convert_hierarchy(EggGroupNode *egg_root) { _tree.clear_egg(&get_egg_data(), egg_root, NULL); for (int i = 0; i < num_nodes; i++) { MayaNodeDesc *node = _tree.get_node(i); - if (node->is_tagged()) { - if (!process_model_node(node)) { - return false; - } + if (!process_model_node(node)) { + return false; } } @@ -693,15 +691,17 @@ process_model_node(MayaNodeDesc *node_desc) { } else if (dag_path.hasFn(MFn::kNurbsSurface)) { EggGroup *egg_group = _tree.get_egg_group(node_desc); get_transform(node_desc, dag_path, egg_group); - - MFnNurbsSurface surface(dag_path, &status); - if (!status) { - mayaegg_cat.info() - << "Error in node " << path - << ":\n" - << " it appears to have a NURBS surface, but does not.\n"; - } else { - make_nurbs_surface(dag_path, surface, egg_group); + + if (node_desc->is_tagged()) { + MFnNurbsSurface surface(dag_path, &status); + if (!status) { + mayaegg_cat.info() + << "Error in node " << path + << ":\n" + << " it appears to have a NURBS surface, but does not.\n"; + } else { + make_nurbs_surface(dag_path, surface, egg_group); + } } } else if (dag_path.hasFn(MFn::kNurbsCurve)) { @@ -711,14 +711,16 @@ process_model_node(MayaNodeDesc *node_desc) { if (_animation_convert != AC_model) { EggGroup *egg_group = _tree.get_egg_group(node_desc); get_transform(node_desc, dag_path, egg_group); - - MFnNurbsCurve curve(dag_path, &status); - if (!status) { - mayaegg_cat.info() - << "Error in node " << path << ":\n" - << " it appears to have a NURBS curve, but does not.\n"; - } else { - make_nurbs_curve(dag_path, curve, egg_group); + + if (node_desc->is_tagged()) { + MFnNurbsCurve curve(dag_path, &status); + if (!status) { + mayaegg_cat.info() + << "Error in node " << path << ":\n" + << " it appears to have a NURBS curve, but does not.\n"; + } else { + make_nurbs_curve(dag_path, curve, egg_group); + } } } @@ -726,13 +728,15 @@ process_model_node(MayaNodeDesc *node_desc) { EggGroup *egg_group = _tree.get_egg_group(node_desc); get_transform(node_desc, dag_path, egg_group); - MFnMesh mesh(dag_path, &status); - if (!status) { - mayaegg_cat.info() - << "Error in node " << path << ":\n" - << " it appears to have a polygon mesh, but does not.\n"; - } else { - make_polyset(dag_path, mesh, egg_group); + if (node_desc->is_tagged()) { + MFnMesh mesh(dag_path, &status); + if (!status) { + mayaegg_cat.info() + << "Error in node " << path << ":\n" + << " it appears to have a polygon mesh, but does not.\n"; + } else { + make_polyset(dag_path, mesh, egg_group); + } } } else if (dag_path.hasFn(MFn::kLocator)) { @@ -742,19 +746,21 @@ process_model_node(MayaNodeDesc *node_desc) { mayaegg_cat.debug() << "Locator at " << path << "\n"; } - - // Presumably, the locator's position has some meaning to the - // end-user, so we will implicitly tag it with the DCS flag so it - // won't get flattened out. - if (_animation_convert != AC_model) { - // For now, don't set the DCS flag on locators within - // character models, since egg-optchar doesn't understand - // this. Perhaps there's no reason to ever change this, since - // locators within character models may not be meaningful. - egg_group->set_dcs_type(EggGroup::DC_net); + + if (node_desc->is_tagged()) { + // Presumably, the locator's position has some meaning to the + // end-user, so we will implicitly tag it with the DCS flag so it + // won't get flattened out. + if (_animation_convert != AC_model) { + // For now, don't set the DCS flag on locators within + // character models, since egg-optchar doesn't understand + // this. Perhaps there's no reason to ever change this, since + // locators within character models may not be meaningful. + egg_group->set_dcs_type(EggGroup::DC_net); + } + get_transform(node_desc, dag_path, egg_group); + make_locator(dag_path, dag_node, egg_group); } - get_transform(node_desc, dag_path, egg_group); - make_locator(dag_path, dag_node, egg_group); } else { // Just a generic node.