public override void Serialize(ExporterEntry entry, Dictionary <string, Extension> extensions, UnityEngine.Object component = null) { if (!ENTRY_CLIPS.ContainsKey(entry)) { ENTRY_CLIPS.Add(entry, new List <SeinAudioClip>()); ENTRY_URIS.Add(entry, new Dictionary <AudioClip, string>()); } Sein_audioClipsExtension extension; var source = component as SeinAudioSource; if (!extensions.ContainsKey(ExtensionName)) { extension = new Sein_audioClipsExtension(); AddExtension(extensions, extension); } else { extension = (Sein_audioClipsExtension)extensions["Sein_audioClips"]; } var list = ENTRY_CLIPS[entry]; var uris = ENTRY_URIS[entry]; foreach (var c in source.clips) { var clip = c.clip; if (c.clip == null) { throw new Exception("Clip '" + c.name + "' has no audio source!"); } if (list.Contains(clip)) { continue; } var newClip = new Sein_audioClipsExtension.AudioClip(); newClip.name = clip.name; newClip.mode = clip.mode; newClip.isLazy = clip.isLazy; if (uris.ContainsKey(clip.clip)) { newClip.uri = uris[clip.clip]; } else { newClip.uri = SaveAudio(clip.clip); } list.Add(clip); extension.clips.Add(newClip); } }
private IEnumerator LoadClips(EditorImporter importer, Sein_audioClipsExtension extension) { var clips = extension.clips; var basePath = Path.Combine(importer.importDirectoryPath, "audios"); Directory.CreateDirectory(basePath); int i = 0; foreach (var clip in clips) { LoadClip(clip, importer.gltfDirectoryPath, basePath, i); importer.SetProgress("AUDIO", (i + 1), clips.Count); i += 1; yield return(null); } }