Use cycle and loop hint flags in glTF2.

This commit is contained in:
K. S. Ernest (iFire) Lee 2020-01-10 08:02:16 -08:00
parent 140a31728f
commit 0172a7f932
2 changed files with 10 additions and 1 deletions

View file

@ -2329,7 +2329,11 @@ Error EditorSceneImporterGLTF::_parse_animations(GLTFState &state) {
Array samplers = d["samplers"];
if (d.has("name")) {
animation.name = _sanitize_scene_name(d["name"]);
String name = d["name"];
if (name.begins_with("loop") || name.ends_with("loop") || name.begins_with("cycle") || name.ends_with("cycle")) {
animation.loop = true;
}
animation.name = _sanitize_scene_name(name);
}
for (int j = 0; j < channels.size(); j++) {
@ -2735,6 +2739,10 @@ void EditorSceneImporterGLTF::_import_animation(GLTFState &state, AnimationPlaye
animation.instance();
animation->set_name(name);
if (anim.loop) {
animation->set_loop(true);
}
float length = 0;
for (Map<int, GLTFAnimation::Track>::Element *E = anim.tracks.front(); E; E = E->next()) {

View file

@ -262,6 +262,7 @@ class EditorSceneImporterGLTF : public EditorSceneImporter {
};
struct GLTFAnimation {
bool loop = false;
enum Interpolation {
INTERP_LINEAR,