示例#1
0
    void OnGUI()
    {
        Refresh();

        if (Editor == null)
        {
            EditorGUILayout.LabelField("No 'Motion Editor' component available in the loaded scene.");
            return;
        }

        Scroll = EditorGUILayout.BeginScrollView(Scroll);

        Utility.SetGUIColor(UltiDraw.Black);
        using (new EditorGUILayout.VerticalScope("Box")) {
            Utility.ResetGUIColor();

            Utility.SetGUIColor(UltiDraw.Grey);
            using (new EditorGUILayout.VerticalScope("Box")) {
                Utility.ResetGUIColor();

                Utility.SetGUIColor(UltiDraw.Mustard);
                using (new EditorGUILayout.VerticalScope("Box")) {
                    Utility.ResetGUIColor();
                    EditorGUILayout.LabelField("Motion Processor");
                }

                Pipeline            = (PIPELINE)EditorGUILayout.EnumPopup("Pipeline", Pipeline);
                OfflineProcessing   = EditorGUILayout.Toggle("Offline Processing", OfflineProcessing);
                SaveAfterProcessing = EditorGUILayout.Toggle("Save After Processing", SaveAfterProcessing);

                EditorGUILayout.BeginHorizontal();
                if (Utility.GUIButton("Current", UltiDraw.DarkGrey, UltiDraw.White))
                {
                    int index = Editor.GetAssetIndex() + 1;
                    Sequence.Start = index;
                    Sequence.End   = index;
                    ApplySequence();
                }
                if (Utility.GUIButton("All", UltiDraw.DarkGrey, UltiDraw.White))
                {
                    Sequence.Start = 1;
                    Sequence.End   = Assets.Length;
                    ApplySequence();
                }
                EditorGUILayout.EndHorizontal();

                if (Sequence != null)
                {
                    if (Sequence.Inspector(1, Assets.Length))
                    {
                        ApplySequence();
                    }
                }

                if (Processing)
                {
                    Utility.SetGUIColor(UltiDraw.LightGrey);
                    using (new EditorGUILayout.VerticalScope("Box")) {
                        Utility.ResetGUIColor();
                        if (Utility.GUIButton("Stop", UltiDraw.DarkRed, UltiDraw.White))
                        {
                            this.StopAllCoroutines();
                            Processing = false;
                        }
                    }
                    EditorGUI.DrawRect(new Rect(EditorGUILayout.GetControlRect().x, EditorGUILayout.GetControlRect().y, (float)(Editor.GetAssetIndex() + 1) / (float)Assets.Length * EditorGUILayout.GetControlRect().width, 25f), UltiDraw.Green.Opacity(0.75f));
                }
                else
                {
                    Utility.SetGUIColor(UltiDraw.LightGrey);
                    using (new EditorGUILayout.VerticalScope("Box")) {
                        Utility.ResetGUIColor();
                        if (Utility.GUIButton("Process", UltiDraw.DarkGrey, UltiDraw.White))
                        {
                            this.StartCoroutine(Process());
                        }
                    }
                }

                Utility.SetGUIColor(UltiDraw.Mustard);
                using (new EditorGUILayout.VerticalScope("Box")) {
                    Utility.ResetGUIColor();
                    EditorGUILayout.BeginHorizontal();

                    EditorGUILayout.LabelField("Page", GUILayout.Width(40f));
                    EditorGUI.BeginChangeCheck();
                    int page = EditorGUILayout.IntField(Page, GUILayout.Width(40f));
                    if (EditorGUI.EndChangeCheck())
                    {
                        LoadPage(page);
                    }
                    EditorGUILayout.LabelField("/" + GetPages());

                    EditorGUILayout.LabelField("Filter", GUILayout.Width(40f));
                    EditorGUI.BeginChangeCheck();
                    string filter = EditorGUILayout.TextField(Filter, GUILayout.Width(200f));
                    if (EditorGUI.EndChangeCheck())
                    {
                        ApplyFilter(filter);
                    }

                    if (Utility.GUIButton("<", UltiDraw.DarkGrey, UltiDraw.White, 80f, 16f))
                    {
                        LoadPage(Mathf.Max(Page - 1, 1));
                    }
                    if (Utility.GUIButton(">", UltiDraw.DarkGrey, UltiDraw.White, 80f, 16f))
                    {
                        LoadPage(Mathf.Min(Page + 1, GetPages()));
                    }
                    EditorGUILayout.EndHorizontal();
                }

                int start = GetStart();
                int end   = GetEnd();
                for (int i = start; i < end; i++)
                {
                    if (Instances[i].Processed)
                    {
                        Utility.SetGUIColor(UltiDraw.DarkGreen);
                    }
                    else if (Instances[i].Selected)
                    {
                        Utility.SetGUIColor(UltiDraw.Gold);
                    }
                    else
                    {
                        Utility.SetGUIColor(UltiDraw.DarkRed);
                    }
                    using (new EditorGUILayout.VerticalScope("Box")) {
                        Utility.ResetGUIColor();
                        EditorGUILayout.BeginHorizontal();
                        EditorGUILayout.LabelField((i + 1).ToString(), GUILayout.Width(20f));
                        Instances[i].Selected = EditorGUILayout.Toggle(Instances[i].Selected, GUILayout.Width(20f));
                        EditorGUILayout.LabelField(Utility.GetAssetName(Instances[i].GUID));
                        EditorGUILayout.EndHorizontal();
                    }
                }
            }
        }

        EditorGUILayout.EndScrollView();
    }
示例#2
0
    void OnGUI()
    {
        Refresh();

        if (Editor == null)
        {
            EditorGUILayout.LabelField("No editor available in scene.");
            return;
        }

        Scroll = EditorGUILayout.BeginScrollView(Scroll);

        Utility.SetGUIColor(UltiDraw.Black);
        using (new EditorGUILayout.VerticalScope("Box")) {
            Utility.ResetGUIColor();

            Utility.SetGUIColor(UltiDraw.Grey);
            using (new EditorGUILayout.VerticalScope("Box")) {
                Utility.ResetGUIColor();

                Utility.SetGUIColor(UltiDraw.Mustard);
                using (new EditorGUILayout.VerticalScope("Box")) {
                    Utility.ResetGUIColor();
                    EditorGUILayout.LabelField("Motion Exporter");
                }

                Utility.SetGUIColor(UltiDraw.White);
                using (new EditorGUILayout.VerticalScope("Box")) {
                    Utility.ResetGUIColor();
                    EditorGUI.BeginDisabledGroup(true);
                    EditorGUILayout.FloatField("Export Framerate", Editor.TargetFramerate);
                    EditorGUILayout.TextField("Export Path", GetExportPath());
                    EditorGUI.EndDisabledGroup();
                }

                Pipeline    = (PIPELINE)EditorGUILayout.EnumPopup("Pipeline", Pipeline);
                FrameShifts = EditorGUILayout.IntField("Frame Shifts", FrameShifts);
                FrameBuffer = Mathf.Max(1, EditorGUILayout.IntField("Frame Buffer", FrameBuffer));
                WriteMirror = EditorGUILayout.Toggle("Write Mirror", WriteMirror);

                if (!Exporting)
                {
                    if (Utility.GUIButton("Export Data", UltiDraw.DarkGrey, UltiDraw.White))
                    {
                        this.StartCoroutine(ExportData());
                    }
                }
                else
                {
                    EditorGUILayout.LabelField("Asset: " + Editor.GetAsset().GetName());
                    EditorGUILayout.LabelField("Index: " + (Editor.GetAssetIndex() + 1) + " / " + Assets.Length);
                    EditorGUILayout.LabelField("Mirror: " + Editor.Mirror);
                    EditorGUILayout.LabelField("Frames Per Second: " + Performance.ToString("F3"));
                    EditorGUI.DrawRect(new Rect(EditorGUILayout.GetControlRect().x, EditorGUILayout.GetControlRect().y, (float)(Editor.GetAssetIndex() + 1) / (float)Assets.Length * EditorGUILayout.GetControlRect().width, 25f), UltiDraw.Green.Opacity(0.75f));
                    EditorGUI.DrawRect(new Rect(EditorGUILayout.GetControlRect().x, EditorGUILayout.GetControlRect().y, Progress * EditorGUILayout.GetControlRect().width, 25f), UltiDraw.Green.Opacity(0.75f));

                    EditorGUI.BeginDisabledGroup(Aborting);
                    if (Utility.GUIButton(Aborting ? "Aborting" : "Stop", Aborting ? UltiDraw.Gold : UltiDraw.DarkRed, UltiDraw.White))
                    {
                        Aborting = true;
                    }
                    EditorGUI.EndDisabledGroup();
                }

                Utility.SetGUIColor(UltiDraw.LightGrey);
                using (new EditorGUILayout.VerticalScope("Box")) {
                    Utility.ResetGUIColor();

                    Utility.SetGUIColor(UltiDraw.Mustard);
                    using (new EditorGUILayout.VerticalScope("Box")) {
                        Utility.ResetGUIColor();
                        EditorGUILayout.BeginHorizontal();

                        EditorGUILayout.LabelField("Page", GUILayout.Width(40f));
                        EditorGUI.BeginChangeCheck();
                        int page = EditorGUILayout.IntField(Page, GUILayout.Width(40f));
                        if (EditorGUI.EndChangeCheck())
                        {
                            LoadPage(page);
                        }
                        EditorGUILayout.LabelField("/" + GetPages());

                        EditorGUILayout.LabelField("Filter", GUILayout.Width(40f));
                        EditorGUI.BeginChangeCheck();
                        string filter = EditorGUILayout.TextField(Filter, GUILayout.Width(200f));
                        if (EditorGUI.EndChangeCheck())
                        {
                            ApplyFilter(filter);
                        }

                        EditorGUILayout.BeginHorizontal();
                        if (Utility.GUIButton("Enable All", UltiDraw.DarkGrey, UltiDraw.White, 80f, 16f))
                        {
                            foreach (Asset a in Assets)
                            {
                                a.Selected = true;
                            }
                        }
                        if (Utility.GUIButton("Disable All", UltiDraw.DarkGrey, UltiDraw.White, 80f, 16f))
                        {
                            foreach (Asset a in Assets)
                            {
                                a.Selected = false;
                            }
                        }
                        if (Utility.GUIButton("Current", UltiDraw.DarkGrey, UltiDraw.White, 80f, 16f))
                        {
                            string guid = Utility.GetAssetGUID(Editor.GetAsset());
                            foreach (Asset a in Assets)
                            {
                                a.Selected = a.GUID == guid;
                            }
                        }
                        EditorGUILayout.EndHorizontal();

                        if (Utility.GUIButton("<", UltiDraw.DarkGrey, UltiDraw.White, 80f, 16f))
                        {
                            LoadPage(Mathf.Max(Page - 1, 1));
                        }
                        if (Utility.GUIButton(">", UltiDraw.DarkGrey, UltiDraw.White, 80f, 16f))
                        {
                            LoadPage(Mathf.Min(Page + 1, GetPages()));
                        }
                        EditorGUILayout.EndHorizontal();
                    }

                    int start = GetStart();
                    int end   = GetEnd();
                    for (int i = start; i < end; i++)
                    {
                        if (Instances[i].Exported)
                        {
                            Utility.SetGUIColor(UltiDraw.DarkGreen);
                        }
                        else if (Instances[i].Selected)
                        {
                            Utility.SetGUIColor(UltiDraw.Gold);
                        }
                        else
                        {
                            Utility.SetGUIColor(UltiDraw.DarkRed);
                        }
                        using (new EditorGUILayout.VerticalScope("Box")) {
                            Utility.ResetGUIColor();
                            EditorGUILayout.BeginHorizontal();
                            EditorGUILayout.LabelField((i + 1).ToString(), GUILayout.Width(20f));
                            Instances[i].Selected = EditorGUILayout.Toggle(Instances[i].Selected, GUILayout.Width(20f));
                            EditorGUILayout.LabelField(Utility.GetAssetName(Instances[i].GUID));
                            EditorGUILayout.EndHorizontal();
                        }
                    }
                }
            }
        }

        EditorGUILayout.EndScrollView();
    }