got partial animation working. Has to look in detail later...

This commit is contained in:
Asad M. Zaman 2003-10-24 00:24:30 +00:00
parent f9b2d69d64
commit 1395afcdd9
3 changed files with 42 additions and 4 deletions

View File

@ -83,6 +83,27 @@ set_model(SAA_Elem *model) {
_model = model;
}
////////////////////////////////////////////////////////////////////
// Function: SoftNodeDesc::set_parent
// Access: Public
// Description: Sometimes, parent is not known at node creation
// As soon as it is known, set the parent
////////////////////////////////////////////////////////////////////
void SoftNodeDesc::
set_parent(SoftNodeDesc *parent) {
if (_parent) {
cout << "expected _parent to be null!?\n";
if (_parent == parent)
cout << "parent already set\n";
else {
cout << "current parent " << _parent->get_name() << " new parent "
<< parent << endl;
}
return;
}
_parent = parent;
}
////////////////////////////////////////////////////////////////////
// Function: SoftNodeDesc::has_model
// Access: Public

View File

@ -50,6 +50,7 @@ public:
SoftNodeDesc(SoftNodeDesc *parent=NULL, const string &name = string());
~SoftNodeDesc();
void set_parent(SoftNodeDesc *parent);
void set_model(SAA_Elem *model);
bool has_model() const;
SAA_Elem *get_model() const;

View File

@ -322,6 +322,8 @@ EggGroup *SoftNodeTree::
get_egg_group(SoftNodeDesc *node_desc) {
nassertr(_egg_root != (EggGroupNode *)NULL, NULL);
cout << node_desc->_egg_group << endl;
cout << node_desc->_parent << endl;
if (node_desc->_egg_group == (EggGroup *)NULL) {
// We need to make a new group node.
EggGroup *egg_group;
@ -330,8 +332,15 @@ get_egg_group(SoftNodeDesc *node_desc) {
if (node_desc->is_joint()) {
egg_group->set_group_type(EggGroup::GT_joint);
}
// For now lets add this group to egg_root.
_egg_root->add_child(egg_group);
if (!node_desc->_parent || node_desc->_parent == _root) {
// The parent is the root.
_egg_root->add_child(egg_group);
} else {
// The parent is another node.
EggGroup *parent_egg_group = get_egg_group(node_desc->_parent);
parent_egg_group->add_child(egg_group);
}
#if 0
SoftEggGroupUserData *parent_user_data = NULL;
@ -562,23 +571,30 @@ build_node(SAA_Scene *scene, SAA_Elem *model) {
////////////////////////////////////////////////////////////////////
SoftNodeDesc *SoftNodeTree::
r_build_node(SoftNodeDesc *parent_node, const string &name) {
SoftNodeDesc *node_desc;
// If we have already encountered this pathname, return the
// corresponding MayaNodeDesc immediately.
NodesByName::const_iterator ni = _nodes_by_name.find(name);
if (ni != _nodes_by_name.end()) {
cout << (*ni).first << endl;
return (*ni).second;
node_desc = (*ni).second;
node_desc->set_parent(parent_node);
return node_desc;
}
// Otherwise, we have to create it. Do this recursively, so we
// create each node along the path.
SoftNodeDesc *node_desc;
/*
if (!parent_node) {
node_desc = _root;
}
else {
*/
node_desc = new SoftNodeDesc(parent_node, name);
/*
}
*/
cout << " node name : " << name << endl;
_nodes.push_back(node_desc);