mirror of
https://github.com/godotengine/godot.git
synced 2025-10-19 16:03:29 +00:00
-Ability to ask for documents/pictures/etc system dirs.
-Fixes to animationplayer -fixes to collada importer
This commit is contained in:
parent
9d5a2cb847
commit
e361e8539c
28 changed files with 419 additions and 107 deletions
|
@ -2250,29 +2250,35 @@ void Collada::_joint_set_owner(Collada::Node *p_node, NodeSkeleton *p_owner) {
|
|||
}
|
||||
}
|
||||
|
||||
void Collada::_create_skeletons(Collada::Node **p_node) {
|
||||
void Collada::_create_skeletons(Collada::Node **p_node,NodeSkeleton *p_skeleton) {
|
||||
|
||||
|
||||
Node *node = *p_node;
|
||||
|
||||
|
||||
|
||||
if (node->type==Node::TYPE_JOINT) {
|
||||
|
||||
// ohohohoohoo it's a joint node, time to work!
|
||||
if (!p_skeleton) {
|
||||
|
||||
NodeSkeleton *sk = memnew( NodeSkeleton );
|
||||
*p_node=sk;
|
||||
sk->children.push_back(node);
|
||||
sk->parent=node->parent;
|
||||
node->parent=sk;
|
||||
_joint_set_owner(node,sk);
|
||||
} else {
|
||||
|
||||
for(int i=0;i<node->children.size();i++) {
|
||||
_create_skeletons(&node->children[i]);
|
||||
// ohohohoohoo it's a joint node, time to work!
|
||||
NodeSkeleton *sk = memnew( NodeSkeleton );
|
||||
*p_node=sk;
|
||||
sk->children.push_back(node);
|
||||
sk->parent=node->parent;
|
||||
node->parent=sk;
|
||||
p_skeleton=sk;
|
||||
}
|
||||
|
||||
NodeJoint *nj = static_cast<NodeJoint*>(node);
|
||||
nj->owner=p_skeleton;
|
||||
} else {
|
||||
p_skeleton=NULL;
|
||||
}
|
||||
|
||||
|
||||
for(int i=0;i<node->children.size();i++) {
|
||||
_create_skeletons(&node->children[i],p_skeleton);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
bool Collada::_remove_node(Node *p_parent,Node *p_node) {
|
||||
|
@ -2325,6 +2331,9 @@ void Collada::_merge_skeletons(VisualScene *p_vscene,Node *p_node) {
|
|||
|
||||
|
||||
NodeJoint *nj = SAFE_CAST<NodeJoint*>(state.scene_map[nodeid]);
|
||||
if (!nj->owner) {
|
||||
print_line("no owner for: "+String(nodeid));
|
||||
}
|
||||
ERR_CONTINUE( !nj->owner ); //weird, node should have a skeleton owner
|
||||
|
||||
skeletons.insert(nj->owner);
|
||||
|
@ -2626,6 +2635,7 @@ void Collada::_optimize() {
|
|||
_create_skeletons(&vs.root_nodes[i]);
|
||||
|
||||
}
|
||||
#if 1
|
||||
for(int i=0;i<vs.root_nodes.size();i++) {
|
||||
_merge_skeletons(&vs,vs.root_nodes[i]);
|
||||
}
|
||||
|
@ -2653,6 +2663,7 @@ void Collada::_optimize() {
|
|||
}
|
||||
|
||||
}
|
||||
#endif
|
||||
for(int i=0;i<vs.root_nodes.size();i++) {
|
||||
_find_morph_nodes(&vs,vs.root_nodes[i]);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue