コード例 #1
0
ファイル: MusicUnity.cs プロジェクト: keel-210/MagicHand
        public SectionTransitionParam(int targetIndex, int currentIndex, MusicUnity music)
        {
            SectionIndex = targetIndex;

            SectionTransitionOverride overrideParam = music.SectionTransitionOverrides.Find(
                (SectionTransitionOverride ov) =>
            {
                return((ov.FromSectionIndex == currentIndex || ov.FromSectionIndex == -1) &&
                       (ov.ToSectionIndex == targetIndex || ov.ToSectionIndex == -1));
            });

            if (overrideParam != null)
            {
                SyncType   = overrideParam.SyncType;
                SyncFactor = overrideParam.SyncFactor;
                Transition = new MusicSection.TransitionParams(overrideParam.Transition);
            }
            else
            {
                SyncType   = music.Sections[currentIndex].SyncType;
                SyncFactor = music.Sections[currentIndex].SyncFactor;
                Transition = new MusicSection.TransitionParams(music.Sections[targetIndex].Transition);
            }

            if (SyncType == Music.SyncType.ExitPoint)
            {
                Transition.UseFadeOut = false;
            }
        }
コード例 #2
0
ファイル: MusicUnity.cs プロジェクト: keel-210/MagicHand
 public SectionTransitionParam(int index, MusicUnity music, Music.SyncType syncType, int syncFactor = 1)
 {
     SectionIndex = index;
     SyncType     = syncType;
     SyncFactor   = syncFactor;
     Transition   = new MusicSection.TransitionParams(music.Sections[index].Transition);
     if (syncType == Music.SyncType.ExitPoint)
     {
         Transition.UseFadeOut = false;
     }
 }
コード例 #3
0
 private void Injection(MusicUnity musicUnity, ITransitionParameterProvidable parameterProvidable)
 {
     this.musicUnity          = musicUnity;
     this.parameterProvidable = parameterProvidable;
 }
コード例 #4
0
 private void Injection(Amplitude amplitude, INativeProvidable nativeProvider, MusicUnity music)
 {
     this.nativeProvider = nativeProvider;
     this.amplitude      = amplitude;
     this.music          = music;
 }
コード例 #5
0
    public override void OnInspectorGUI()
    {
        if (sectionListProperty_ == null)
        {
            InitializeProperties();
        }

        serializedObject.Update();

        // params
        EditorGUILayout.PropertyField(volumeProperty_);
        EditorGUILayout.PropertyField(playOnStartProperty_);
        EditorGUILayout.PropertyField(mixerGroupProperty_);

        // 複数選択では以降無視
        if (serializedObject.isEditingMultipleObjects)
        {
            EditorGUILayout.LabelField("Cannot draw section list while multi editing", EditorStyles.boldLabel);
            serializedObject.ApplyModifiedProperties();
            return;
        }

        // musicを取得
        MusicUnity music = serializedObject.targetObject as MusicUnity;

        sectionListDisplayOptions_ = new string[music.Sections.Length];
        for (int i = 0; i < sectionListProperty_.arraySize; ++i)
        {
            sectionListDisplayOptions_[i] = music.Sections[i].Name;
        }
        modeListDisplayOptions_ = new string[music.Modes.Length];
        for (int i = 0; i < modeListProperty_.arraySize; ++i)
        {
            modeListDisplayOptions_[i] = music.Modes[i].Name;
        }

        // num tracks
        EditorGUILayout.PropertyField(numTracksProperty_);

        // sections
        sectionListProperty_.isExpanded = EditorGUILayout.Foldout(sectionListProperty_.isExpanded, "Sections");
        if (sectionListProperty_.isExpanded)
        {
            EditorGUI.indentLevel++;
            for (int i = 0; i < sectionListProperty_.arraySize; ++i)
            {
                DrawSection(sectionListProperty_.GetArrayElementAtIndex(i), (i < music.Sections.Length ? music.Sections[i] : null));
            }
            DrawContainerButtons(sectionListProperty_);
            EditorGUI.indentLevel--;
        }

        // modes
        modeListProperty_.isExpanded = EditorGUILayout.Foldout(modeListProperty_.isExpanded, "Modes");
        if (modeListProperty_.isExpanded)
        {
            EditorGUI.indentLevel++;
            for (int i = 0; i < modeListProperty_.arraySize; ++i)
            {
                DrawMode(modeListProperty_.GetArrayElementAtIndex(i));
            }
            DrawContainerButtons(modeListProperty_);
            DrawModeTransitionParam(modeTransitionParamProperty_);
            EditorGUI.indentLevel--;
        }

        showOverrides_ = EditorGUILayout.Foldout(showOverrides_, "Overrides");
        if (showOverrides_)
        {
            EditorGUI.indentLevel++;

            // section transition overrides
            sectionTransitionOverridesListProperty_.isExpanded = EditorGUILayout.Foldout(sectionTransitionOverridesListProperty_.isExpanded, "Section Transition Overrides");
            if (sectionTransitionOverridesListProperty_.isExpanded)
            {
                if (sectionTransitionOverridesListProperty_.arraySize > 0)
                {
                    sectionListDisplayOptionsWithAny_    = new string[music.Sections.Length + 1];
                    sectionListValueOptions_             = new int[sectionListDisplayOptionsWithAny_.Length];
                    sectionListDisplayOptionsWithAny_[0] = "Any";
                    sectionListValueOptions_[0]          = -1;
                    for (int i = 0; i < music.Sections.Length; ++i)
                    {
                        sectionListDisplayOptionsWithAny_[i + 1] = music.Sections[i].Name;
                        sectionListValueOptions_[i + 1]          = i;
                    }
                }

                EditorGUI.indentLevel++;
                sectionTransitionOverridesListProperty_.arraySize = EditorGUILayout.IntField("Size", sectionTransitionOverridesListProperty_.arraySize);
                for (int i = 0; i < sectionTransitionOverridesListProperty_.arraySize; ++i)
                {
                    DrawSectionTransitionOverrideParam(sectionTransitionOverridesListProperty_.GetArrayElementAtIndex(i));
                }
                EditorGUI.indentLevel--;
            }

            // mode transition overrides
            modeTransitionOverridesListProperty_.isExpanded = EditorGUILayout.Foldout(modeTransitionOverridesListProperty_.isExpanded, "Mode Transition Overrides");
            if (modeTransitionOverridesListProperty_.isExpanded)
            {
                if (modeTransitionOverridesListProperty_.arraySize > 0)
                {
                    modeListDisplayOptionsWithAny_    = new string[music.Modes.Length + 1];
                    modeListValueOptions_             = new int[modeListDisplayOptionsWithAny_.Length];
                    modeListDisplayOptionsWithAny_[0] = "Any";
                    modeListValueOptions_[0]          = -1;
                    for (int i = 0; i < music.Modes.Length; ++i)
                    {
                        modeListDisplayOptionsWithAny_[i + 1] = music.Modes[i].Name;
                        modeListValueOptions_[i + 1]          = i;
                    }
                }

                EditorGUI.indentLevel++;
                modeTransitionOverridesListProperty_.arraySize = EditorGUILayout.IntField("Size", modeTransitionOverridesListProperty_.arraySize);
                for (int i = 0; i < modeTransitionOverridesListProperty_.arraySize; ++i)
                {
                    DrawModeTransitionOverrideParam(modeTransitionOverridesListProperty_.GetArrayElementAtIndex(i));
                }
                EditorGUI.indentLevel--;
            }

            EditorGUI.indentLevel--;
        }

        // options
        showOptions_ = EditorGUILayout.Foldout(showOptions_, "Options");
        if (showOptions_)
        {
            EditorGUI.indentLevel++;
            //showHelpTexts_ = EditorGUILayout.Toggle("Show Help", showHelpTexts_);
            showUnitPerBarBeat_ = EditorGUILayout.Toggle("Show Meters in UnitPerBeat/Bar", showUnitPerBarBeat_);
            EditorGUI.indentLevel--;
        }

        // player
        if (UnityEditor.EditorApplication.isPlaying)
        {
            GUILayout.BeginHorizontal();
            {
                if (GUILayout.Button("Play"))
                {
                    if (music.IsPlaying == false)
                    {
                        music.Play();
                    }
                }
                if (GUILayout.Button(music.State == Music.PlayState.Suspended ? "Resume" : "Suspend"))
                {
                    if (music.State == Music.PlayState.Suspended)
                    {
                        music.Resume();
                    }
                    else
                    {
                        music.Suspend();
                    }
                }
                if (GUILayout.Button("Stop"))
                {
                    if (music.IsPlaying || music.State == Music.PlayState.Suspended)
                    {
                        music.Stop();
                    }
                }
            }
            GUILayout.EndHorizontal();

            if (music.State == Music.PlayState.Playing || music.State == Music.PlayState.Suspended)
            {
                EditorGUILayout.BeginHorizontal();
                int sequenceIndex = EditorGUILayout.Popup("Section", music.SequenceIndex, sectionListDisplayOptions_);
                if (sequenceIndex != music.SequenceIndex)
                {
                    music.SetHorizontalSequenceByIndex(sequenceIndex);
                }
                if (music.NextSectionIndex >= 0 && music.NextSectionIndex != music.SectionIndex)
                {
                    EditorGUILayout.LabelField("to " + sectionListDisplayOptions_[music.NextSectionIndex], GUILayout.Width(120));
                }
                EditorGUILayout.EndHorizontal();

                EditorGUILayout.BeginHorizontal();
                int modeIndex = EditorGUILayout.Popup("Mode", music.ModeIndex, modeListDisplayOptions_);
                if (modeIndex != music.ModeIndex)
                {
                    music.SetVerticalMixByIndex(modeIndex);
                }
                if (music.NextModeIndex >= 0 && music.NextModeIndex != music.ModeIndex)
                {
                    EditorGUILayout.LabelField("to " + modeListDisplayOptions_[music.NextModeIndex], GUILayout.Width(120));
                }
                EditorGUILayout.EndHorizontal();

                EditorGUILayout.Slider("Seek Bar", music.MusicalTime, music.CurrentSection.EntryPointTiming.IsZero() ? 0 : -1, music.CurrentSection.ExitPointTiming.Bar);
                EditorUtility.SetDirty(serializedObject.targetObject);
            }
            else
            {
                previewSectionProperty_.intValue = EditorGUILayout.Popup("Section", previewSectionProperty_.intValue, sectionListDisplayOptions_);
                previewModeProperty_.intValue    = EditorGUILayout.Popup("Mode", previewModeProperty_.intValue, modeListDisplayOptions_);
                seekBarProperty_.intValue        = EditorGUILayout.IntSlider("Seek Bar", seekBarProperty_.intValue, music.Sections[previewSectionProperty_.intValue].EntryPointTiming.IsZero() ? 0 : -1, music.Sections[previewSectionProperty_.intValue].ExitPointTiming.Bar);
            }
        }

        serializedObject.ApplyModifiedProperties();
    }