Пример #1
0
        private void LoadFromObject()
        {
            if (serializationObj == null)
            {
                return;
            }
            var bs = serializationObj.GetComponent <BeatSequence>();

            if (bs == null)
            {
                return;
            }

            if (beatSequence == null)
            {
                GameObject bsObj = new GameObject("BeatSequence for Editor");
                bsObj.hideFlags = HideFlags.HideAndDontSave;
                beatSequence    = bsObj.AddComponent <BeatSequence>();
            }

            if (beatSequence != null)
            {
                beatSequence.Beats   = new List <BeatSequence.Beat>(bs.Beats);
                beatSequence.Presets = new List <BeatSequence.Preset>(bs.Presets);
            }
        }
Пример #2
0
        private void DrawBeatsGUI(BeatSequence bs)
        {
            beatsScrollPos.x = 0;
            beatsScrollPos   = EditorGUILayout.BeginScrollView(beatsScrollPos);
            {
                EditorGUILayout.BeginVertical(GUI.skin.box);
                {
                    EditorGUILayout.BeginHorizontal();
                    {
                        EditorGUILayout.LabelField("Beats(" + bs.Beats.Count + ")", GUILayout.Width(200));
                        if (GUILayout.Button("Add", GUILayout.Width(50)))
                        {
                            bs.Beats.Add(new BeatSequence.Beat());
                        }
                        if (GUILayout.Button("Sort", GUILayout.Width(50)))
                        {
                            bs.Beats.Sort((b1, b2) => (b1.Second > b2.Second) ? 1 : (b1.Second < b2.Second) ? -1 : 0);
                        }
                        if (GUILayout.Button("Clear", GUILayout.Width(50)))
                        {
                            bs.Beats.Clear();
                        }
                    }
                    EditorGUILayout.EndHorizontal();

                    int remove = -1;
                    for (int i = 0; i < bs.Beats.Count; i++)
                    {
                        EditorGUILayout.BeginHorizontal();
                        {
                            if (GUILayout.Button("X", GUILayout.Width(20)))
                            {
                                remove = i;
                            }
                            EditorGUILayout.LabelField("Second", GUILayout.Width(60));
                            bs.Beats[i].Second = EditorGUILayout.FloatField("", bs.Beats[i].Second, GUILayout.Width(60));
                            bs.Beats[i].Dir    = (BeatSequence.BeatDirection)EditorGUILayout.EnumPopup("", bs.Beats[i].Dir, GUILayout.Width(60));
                            // @TODO INVALID preset Id ?
                            EditorGUILayout.LabelField("PresetId", GUILayout.Width(60));
                            bs.Beats[i].PresetId = EditorGUILayout.IntField("", bs.Beats[i].PresetId, GUILayout.Width(60));
                        }
                        EditorGUILayout.EndHorizontal();
                    }
                    if (remove >= 0)
                    {
                        bs.Beats.RemoveAt(remove);
                    }
                }
                EditorGUILayout.EndVertical();
            }
            EditorGUILayout.EndScrollView();
        }
Пример #3
0
        private void DrawBeatSequenceGUI()
        {
            if (beatSequence == null)
            {
                GameObject bsObj = new GameObject("BeatSequence for Editor");
                bsObj.hideFlags = HideFlags.HideAndDontSave;
                beatSequence    = bsObj.AddComponent <BeatSequence>();
            }

            if (beatSequence != null)
            {
                if (bsEditor == null)
                {
                    bsEditor             = new BeatSequenceEditor();
                    bsEditor.BeatHandler = BeatHandler;
                }
                bsEditor.DrawGUI(beatSequence);
            }
        }
Пример #4
0
 public void DrawGUI(BeatSequence bs)
 {
     if (bs == null)
     {
         return;
     }
     if (bs.Presets == null)
     {
         bs.Presets = new List <BeatSequence.Preset>();
     }
     if (bs.Beats == null)
     {
         bs.Beats = new List <BeatSequence.Beat>();
     }
     EditorGUILayout.BeginVertical();
     {
         DrawPresetsGUI(bs);
         DrawBeatsGUI(bs);
     }
     EditorGUILayout.EndVertical();
 }
Пример #5
0
        private void DrawPresetsGUI(BeatSequence bs)
        {
            EditorGUILayout.BeginVertical(GUI.skin.box);
            {
                EditorGUILayout.BeginHorizontal();
                {
                    EditorGUILayout.LabelField("Presets", GUILayout.Width(200));
                    if (GUILayout.Button("Add", GUILayout.Width(50)))
                    {
                        bs.Presets.Add(new BeatSequence.Preset());
                    }
                    if (GUILayout.Button("Clear", GUILayout.Width(50)))
                    {
                        bs.Presets.Clear();
                    }
                }
                EditorGUILayout.EndHorizontal();

                int remove = -1;
                for (int i = 0; i < bs.Presets.Count; i++)
                {
                    EditorGUILayout.BeginHorizontal();
                    {
                        if (GUILayout.Button("X", GUILayout.Width(20)))
                        {
                            remove = i;
                        }

                        if (BeatHandler != null)
                        {
                            //if (GUILayout.Button("Left", GUILayout.Width(60)))
                            //{
                            //    BeatHandler(BeatSequence.BeatDirection.Left, i);
                            //}
                            //if (GUILayout.Button("Both", GUILayout.Width(60)))
                            //{
                            //    BeatHandler(BeatSequence.BeatDirection.Both, i);
                            //}
                            //if (GUILayout.Button("Right", GUILayout.Width(60)))
                            //{
                            //    BeatHandler(BeatSequence.BeatDirection.Right, i);
                            //}
                            if (GUILayout.Button("Beat", GUILayout.Width(60)))
                            {
                                BeatHandler(BeatSequence.BeatDirection.Right, i);
                            }
                        }

                        EditorGUILayout.LabelField("Distance", GUILayout.Width(60));
                        bs.Presets[i].Distance = EditorGUILayout.FloatField("", bs.Presets[i].Distance, GUILayout.Width(60));
                        EditorGUILayout.LabelField("Duration", GUILayout.Width(60));
                        bs.Presets[i].Duration = EditorGUILayout.FloatField("", bs.Presets[i].Duration, GUILayout.Width(60));
                        EditorGUILayout.LabelField("Speed", GUILayout.Width(60));
                        bs.Presets[i].Speed = EditorGUILayout.FloatField("", bs.Presets[i].Speed, GUILayout.Width(60));
                        EditorGUILayout.LabelField("Angle", GUILayout.Width(60));
                        bs.Presets[i].Angle = EditorGUILayout.FloatField("", bs.Presets[i].Angle, GUILayout.Width(60));
                    }
                    EditorGUILayout.EndHorizontal();
                }
                if (remove >= 0)
                {
                    bs.Presets.RemoveAt(remove);
                    bs.Beats.ForEach((BeatSequence.Beat beat) =>
                    {
                        if (beat.PresetId >= remove)
                        {
                            beat.PresetId--;
                        }
                    });
                }
            }
            EditorGUILayout.EndVertical();
        }