예제 #1
0
    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();
            }
        }
    }
예제 #2
0
    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);
    }