got partial animation working. Has to look in detail later...
This commit is contained in:
parent
f9b2d69d64
commit
1395afcdd9
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue