示例#1
0
        /// <summary>
        /// Permanently deletes all AudioBuddyObjects and rebuilds AudioBuddySound objects from all available AudioClip assets in the project. This means that all settings on individual objects and randomizers and lists will be gone. Use with caution. Only works in editor.
        /// </summary>
        public void RebuildAudioBuddyObjectCollection()
        {
            if (AssetDatabase.IsValidFolder(CollectionAddress))
            {
                Debug.LogWarning("Rebuilding Audio Buddy database. This might take a bit...");

                RescanAudioBuddyObjects();
                DeletePartOfDatabase(ABObjectCollection);
                //ABDatabase.Clear();
                foreach (AudioClip clip in FindAllClips())
                {
                    AudioBuddySound absound = CreateInstance <AudioBuddySound>();
                    absound.File = clip;
                    //ABDatabase[absound.File.name] = absound;
                    ABObjectCollection.Add(absound);
                    AssetDatabase.CreateAsset(absound, $"{CollectionAddress}/{clip.name}.asset");
                    EditorUtility.SetDirty(absound);
                }
                Debug.Log("Creating Instances done. Saving assets...");
                AssetDatabase.SaveAssets();
                Debug.Log($"Done rebuilding Audio Buddy database into {CollectionAddress}");
                return;
            }
            Debug.LogError("Enter a valid path to build Audio Buddy database");
        }
示例#2
0
        /// <summary>
        /// Compares all AudioClip and AudioBuddySound assets in the project and creates AudioBuddySound assets for every AudioClip that is not part of the databse yet. Only works in editor.
        /// </summary>
        public void CreateMissingAudioBuddyObjects()
        {
            EnsureAssetDBPath();
            List <AudioBuddySound> onlySounds = new List <AudioBuddySound>();

            foreach (AudioBuddyObject sound in ABObjectCollection) //ABDatabase.Values)
            {
                if (sound.GetType() == typeof(AudioBuddySound))
                {
                    onlySounds.Add((AudioBuddySound)sound);
                }
            }
            int newObjectCounter = 0;

            foreach (AudioClip newClip in FindAllClips().Where(c => !onlySounds.Select(s => s.File).Contains(c)))
            {
                AudioBuddySound absound = CreateInstance <AudioBuddySound>();
                absound.File = newClip;
                //ABDatabase[absound.Name] = absound;
                ABObjectCollection.Add(absound);
                AssetDatabase.CreateAsset(absound, $"{CollectionAddress}/{newClip.name}.asset");
                EditorUtility.SetDirty(absound);
                newObjectCounter++;
            }
            DiscoverAudioBuddyObjects();
            Debug.Log($"Added {newObjectCounter} new Audio buddy Sounds to database at {CollectionAddress}");
        }
示例#3
0
        /// <summary>
        /// Allows for the manual creation of an AudioBuddySound asset based on an AudioClip. Only works in editor.
        /// </summary>
        /// <param name="clip"></param>
        /// <returns></returns>
        public AudioBuddySound CreateAudioBuddySoundFromClip(AudioClip clip)
        {
            AudioBuddySound absound = CreateInstance <AudioBuddySound>();

            absound.File = clip;
            ABObjectCollection.Add(absound);
            AssetDatabase.CreateAsset(absound, $"{CollectionAddress}/{clip.name}.asset");
            return(absound);
        }
示例#4
0
 /// <summary>
 /// Clears the internal database and readds every AudioBuddyObject asset in the project. Only works in editor.
 /// </summary>
 public void RescanAudioBuddyObjects()
 {
     ABObjectCollection.Clear();
     //ABDatabase.Clear();
     foreach (string GUID in AssetDatabase.FindAssets("t:AudioBuddyObject"))
     {
         AudioBuddyObject soundObject = AssetDatabase.LoadAssetAtPath <AudioBuddyObject>(AssetDatabase.GUIDToAssetPath(GUID));
         ABObjectCollection.Add(soundObject);
         //ABDatabase[soundObject.Name] = soundObject;
     }
 }
示例#5
0
 /// <summary>
 /// Scans the project for AudioBuddyObject assets that are not in the database and adds them. Will throw a warning if objects with duplicate names are found. Only works in editor.
 /// </summary>
 public void DiscoverAudioBuddyObjects()
 {
     foreach (AudioBuddyObject foundObject in FindAllABObjects().Where(o => !ABObjectCollection.Contains(o)))
     {
         if (ABObjectCollection.Select(o => o.name).Contains(foundObject.name)) //ABDatabase.ContainsKey(foundObject.name))
         {
             Debug.LogWarning($"The name of the sound {foundObject.name} is already in use! Please double check the naming of {foundObject}");
         }
         else
         {
             ABObjectCollection.Add(foundObject);
             EditorUtility.SetDirty(foundObject);
             //ABDatabase[foundObject.Name] = foundObject;
         }
     }
     EnsureAssetDBPath();
 }