From 6b2b375e1f9e362ee6cf8e21bd5129d3c871e05c Mon Sep 17 00:00:00 2001 From: arthurkehrwald <50906979+arthurkehrwald@users.noreply.github.com> Date: Thu, 16 Jan 2025 14:32:26 +0100 Subject: [PATCH] Remove null audio clips in inspector --- .../Sound/SoundAssetInspector.cs | 12 ++++++++++++ .../VisualPinball.Unity/Sound/SoundAsset.cs | 1 - 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/VisualPinball.Unity/VisualPinball.Unity.Editor/Sound/SoundAssetInspector.cs b/VisualPinball.Unity/VisualPinball.Unity.Editor/Sound/SoundAssetInspector.cs index e162f53c7..6d9e219da 100644 --- a/VisualPinball.Unity/VisualPinball.Unity.Editor/Sound/SoundAssetInspector.cs +++ b/VisualPinball.Unity/VisualPinball.Unity.Editor/Sound/SoundAssetInspector.cs @@ -20,6 +20,7 @@ using UnityEngine.UIElements; using UnityEngine; using UnityEditor.UIElements; +using System.Collections.Generic; namespace VisualPinball.Unity.Editor { @@ -59,6 +60,7 @@ private void OnEnable() private void OnDisable() { + RemoveNullClips(); _instantCts.Cancel(); _instantCts.Dispose(); _instantCts = null; @@ -66,6 +68,16 @@ private void OnDisable() _allowFadeCts = null; } + private void RemoveNullClips() + { + var clipsProp = serializedObject.FindProperty("_clips"); + for (var i = clipsProp.arraySize -1; i >= 0; i--) { + if (clipsProp.GetArrayElementAtIndex(i).objectReferenceValue == null) + clipsProp.DeleteArrayElementAtIndex(i); + } + serializedObject.ApplyModifiedPropertiesWithoutUndo(); + } + private async void OnPlayButtonClicked() { _playButton.clicked -= OnPlayButtonClicked; diff --git a/VisualPinball.Unity/VisualPinball.Unity/Sound/SoundAsset.cs b/VisualPinball.Unity/VisualPinball.Unity/Sound/SoundAsset.cs index ada449e9c..48b947a0f 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/Sound/SoundAsset.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/Sound/SoundAsset.cs @@ -101,7 +101,6 @@ public bool IsValid() private AudioClip GetClip() { - _clips.ToList().RemoveAll(clip => clip == null); if (_clips.Length == 0) { throw new InvalidOperationException($"The sound asset '{name}' has no audio clips to play."); }