本文整理汇总了C++中AnimationPlayer::set_owner方法的典型用法代码示例。如果您正苦于以下问题:C++ AnimationPlayer::set_owner方法的具体用法?C++ AnimationPlayer::set_owner怎么用?C++ AnimationPlayer::set_owner使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类AnimationPlayer
的用法示例。
在下文中一共展示了AnimationPlayer::set_owner方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: _parse_animations
Error EditorSceneImporterFBXConv::_parse_animations(State& state) {
AnimationPlayer *ap = memnew( AnimationPlayer );
state.scene->add_child(ap);
ap->set_owner(state.scene);
for(int i=0;i<state.animations.size();i++) {
Dictionary anim = state.animations[i];
ERR_CONTINUE(!anim.has("id"));
Ref<Animation> an = memnew( Animation );
an->set_name(_id(anim["id"]));
if (anim.has("bones")) {
Array bone_tracks = anim["bones"];
for(int j=0;j<bone_tracks.size();j++) {
Dictionary bone_track=bone_tracks[j];
String bone = bone_track["boneId"];
if (!bone_track.has("keyframes"))
continue;
if (!state.bones.has(bone))
continue;
Skeleton *sk = state.bones[bone].skeleton;
if (!sk)
continue;
int bone_idx=sk->find_bone(bone);
if (bone_idx==-1)
continue;
String path = state.scene->get_path_to(sk);
path+=":"+bone;
an->add_track(Animation::TYPE_TRANSFORM);
int tidx = an->get_track_count()-1;
an->track_set_path(tidx,path);
Dictionary parent_xform_dict;
Dictionary xform_dict;
if (state.bones.has(bone)) {
xform_dict=state.bones[bone].node;
}
Array parent_keyframes;
if (sk->get_bone_parent(bone_idx)!=-1) {
String parent_name = sk->get_bone_name(sk->get_bone_parent(bone_idx));
if (state.bones.has(parent_name)) {
parent_xform_dict=state.bones[parent_name].node;
}
print_line("parent for "+bone+"? "+parent_name+" XFD: "+String(Variant(parent_xform_dict)));
for(int k=0;k<bone_tracks.size();k++) {
Dictionary d = bone_tracks[k];
if (d["boneId"]==parent_name) {
parent_keyframes=d["keyframes"];
print_line("found keyframes");
break;
}
}
}
print_line("BONE XFD "+String(Variant(xform_dict)));
Array keyframes=bone_track["keyframes"];
for(int k=0;k<keyframes.size();k++) {
Dictionary key=keyframes[k];
Transform xform=_get_transform_mixed(key,xform_dict);
float time = key["keytime"];
time=time/1000.0;
#if 0
if (parent_keyframes.size()) {
//localize
print_line(itos(k)+" localizate for: "+bone);
float prev_kt=-1;
float kt;
int idx=0;
for(int l=0;l<parent_keyframes.size();l++) {
Dictionary d=parent_keyframes[l];
kt=d["keytime"];
kt=kt/1000.0;
if (kt>time)
break;
prev_kt=kt;
idx++;
//.........这里部分代码省略.........