bool ModelImporter::ImportAnimation(const String& filename, const String& name, float startTime, float endTime) { SharedPtr<OpenAssetImporter> importer(new OpenAssetImporter(context_)); //importer->SetVerboseLog(true); importer->SetScale(scale_); importer->SetExportAnimations(true); importer->SetStartTime(startTime); importer->SetEndTime(endTime); if (importer->Load(filename)) { importer->ExportModel(asset_->GetCachePath(), name, true); const Vector<OpenAssetImporter::AnimationInfo>& infos = importer->GetAnimationInfos(); for (unsigned i = 0; i < infos.Size(); i++) { const OpenAssetImporter::AnimationInfo& info = infos.At(i); String pathName, fileName, extension; SplitPath(info.cacheFilename_, pathName, fileName, extension); ResourceCache* cache = GetSubsystem<ResourceCache>(); AnimationController* controller = importNode_->GetComponent<AnimationController>(); if (controller) { SharedPtr<Animation> animation = cache->GetTempResource<Animation>(fileName + extension); if (animation) controller->AddAnimationResource(animation); } LOGINFOF("Import Info: %s : %s", info.name_.CString(), fileName.CString()); } return true; } return false; }