public override void OnInspectorGUI() { AudioSourceSync script = (AudioSourceSync)target; EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("IsLoop"); script.m_isLoop = EditorGUILayout.Toggle(script.m_isLoop); EditorGUILayout.EndHorizontal(); if (script.m_isLoop) { EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("ManualLoopArea"); script.m_manualLoopArea = EditorGUILayout.Toggle(script.m_manualLoopArea); EditorGUILayout.EndHorizontal(); if (script.m_manualLoopArea) { EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("LoopLength (bars)"); script.m_loopLength = EditorGUILayout.IntField(script.m_loopLength); script.m_loopLength = Mathf.Clamp(script.m_loopLength, 1, script.m_loopLength); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("LoopOffset (bars)"); script.m_loopOffset = EditorGUILayout.IntField(script.m_loopOffset); script.m_loopOffset = Mathf.Clamp(script.m_loopOffset, 0, script.m_loopOffset); EditorGUILayout.EndHorizontal(); } } }
void InitNew() { if (soundSets == null || soundSets.Length < 1) { Debug.LogError("There are no soundsets"); return; } // while (transform.childCount > 0){ // Destroy(transform.GetChild(0)); // } soundSetRootDict = new Dictionary <SoundSet, GameObject>(); audioSourceDict = new Dictionary <SoundSet, AudioSource[, , ]>(); audioSourceSyncDict = new Dictionary <SoundSet, AudioSourceSync[, , ]>(); int audioSourceSyncIndex = 0; // instantiate children and load soundset audio for (int s = 0; s < soundSets.Length; s++) { GameObject root = new GameObject(soundSets[s].name); root.transform.parent = this.transform; AudioSource[,,] audioSources = new AudioSource[Constants.AUDIO_CATEGORIES, Constants.INSTRUMENT_GROUPS, Constants.VARIATIONS]; AudioSourceSync[,,] audioSourcesSync = new AudioSourceSync[Constants.AUDIO_CATEGORIES, Constants.INSTRUMENT_GROUPS, Constants.VARIATIONS]; for (int c = 0; c < Constants.AUDIO_CATEGORIES; c++) { Transform category = new GameObject(soundSets[s].m_audioCategories[c].m_name).transform; category.parent = root.transform; for (int i = 0; i < Constants.INSTRUMENT_GROUPS; i++) { Transform instrument = new GameObject(soundSets[s].m_audioCategories[c].m_audioChannelGroups[i].m_name).transform; instrument.parent = category; for (int v = 0; v < Constants.VARIATIONS; v++) { GameObject variation = new GameObject(soundSets[s].m_audioCategories[c].m_audioChannelGroups[i].m_audioChannels[v].m_name); variation.transform.parent = instrument; AudioSource audioSource = variation.AddComponent <AudioSource>(); audioSource.clip = soundSets[s].m_audioCategories[c].m_audioChannelGroups[i].m_audioChannels[v].m_audioClip; audioSource.playOnAwake = false; audioSource.mute = true; audioSource.outputAudioMixerGroup = audioMixerData.GetAudioMixerGroup(c, i, v); AudioSourceSync audioSourceSync = variation.AddComponent <AudioSourceSync>(); audioSourceSync.SetLoop(true); //audioSourceSync.SetLoop(soundSets[s].m_audioCategories[c].m_audioChannelGroups[i].m_audioChannels[v].isLoop); audioSources[c, i, v] = audioSource; audioSourcesSync[c, i, v] = audioSourceSync; audioSourceSyncIndex++; } } } if (s > 0) { root.SetActive(false); } soundSetRootDict.Add(soundSets[s], root); audioSourceDict.Add(soundSets[s], audioSources); audioSourceSyncDict.Add(soundSets[s], audioSourcesSync); audioSourceSyncIndex = 0; } // set active sound set; activeSoundSet = soundSets[0]; TransitionToAudioSnapShot(activeSoundSet, 0); UpdateBPM(activeSoundSet.bpm); }