/// <summary> /// Perform clip unload /// </summary> /// <param name="clipID"></param> private void OnUnloadBegin(TTSClipData clipData) { // Abort if currently preparing if (clipData.loadState == TTSClipLoadState.Preparing) { // Cancel web stream WebHandler?.CancelWebStream(clipData); // Cancel web download to cache WebHandler?.CancelWebDownload(clipData, GetDiskCachePath(clipData.textToSpeak, clipData.clipID, clipData.voiceSettings, clipData.diskCacheSettings)); // Cancel disk cache stream DiskCacheHandler?.CancelDiskCacheStream(clipData); } // Destroy clip else if (clipData.clip != null) { MonoBehaviour.DestroyImmediate(clipData.clip); } // Clip is now unloaded SetClipLoadState(clipData, TTSClipLoadState.Unloaded); // Unload LogClip($"Unload Clip", clipData); Events?.OnClipUnloaded?.Invoke(clipData); }