示例#1
0
    void OnGUI()
    {
        GUI.color = signatureColor;
        if (GUILayout.Button("TOGGLE SETTINGS", "toolbarButton", GUILayout.MaxWidth(120), GUILayout.MinWidth(120)))
        {
            refreshRequests();
            foldoutSettings = !foldoutSettings;
        }

        GUI.color = Color.white;

        if (foldoutSettings)
        {
            EditorGUILayout.BeginVertical(EditorStyles.helpBox);

            EditorGUILayout.LabelField("CAPTURE SETTINGS", EditorStyles.boldLabel);

            GUI.color     = signatureColor;
            captureMethod = (ScreenshotCreatorWindow.CaptureMethod)EditorGUILayout.EnumPopup("capture method", captureMethod);

            GUI.color = Color.white;
            if (captureMethod == ScreenshotCreatorWindow.CaptureMethod.Cutout)
            {
                EditorGUILayout.HelpBox("This capture method is not supported in the Screenshot Creator Window. Please create an instance on a GameObject in your Scene.", MessageType.Info);
            }
            else if (captureMethod == ScreenshotCreatorWindow.CaptureMethod.RenderTexture)
            {
                EditorGUILayout.HelpBox("This capture method creates a RenderTexture that captures any Camera's " +
                                        "output in a custom resolution. This method also creates the sharpest upscaled images, but it can only use a single Camera.", MessageType.Info);

                EditorGUILayout.BeginHorizontal();

                GUI.color            = Color.white;
                renderSizeMultiplier = EditorGUILayout.Slider("Size Multiplyer (float)", renderSizeMultiplier, 0.1f, 10f);
                EditorGUILayout.LabelField(getResolution(), EditorStyles.boldLabel, GUILayout.MaxWidth(100));

                EditorGUILayout.EndHorizontal();
            }
            else
            {
                EditorGUILayout.HelpBox("This capture method creates a screenshot that is upscaled by a rounded number multiplier. ", MessageType.Info);

                singleCameraToggle();

                EditorGUILayout.BeginHorizontal();

                GUI.color             = Color.white;
                captureSizeMultiplier = EditorGUILayout.IntSlider("Size Multiplyer (int)", captureSizeMultiplier, 1, 10);
                EditorGUILayout.LabelField(getResolution(), EditorStyles.boldLabel, GUILayout.MaxWidth(100));

                EditorGUILayout.EndHorizontal();
            }

            EditorGUILayout.EndVertical();

            if (captureMethod != ScreenshotCreatorWindow.CaptureMethod.Cutout)
            {
                EditorGUILayout.Space();

                EditorGUILayout.BeginVertical(EditorStyles.helpBox);

                EditorGUILayout.LabelField("DIRECTORY SETTINGS", EditorStyles.boldLabel);

                customDirectory = EditorGUILayout.TextField("Custom Name", customDirectory);

                applicationPathToggle();

                GUI.color = Color.white;
                EditorGUILayout.SelectableLabel("Directory = " + getSaveDirectory(), GUILayout.MaxHeight(16));


                EditorGUILayout.EndVertical();

                EditorGUILayout.Space();


                EditorGUILayout.BeginVertical(EditorStyles.helpBox);

                EditorGUILayout.LabelField("FILE SETTINGS", EditorStyles.boldLabel);



                customName = EditorGUILayout.TextField("Custom Name", customName);

                fileName();

                EditorGUILayout.LabelField("File Name = " + getFileName(lastCamID));

                EditorGUILayout.Space();



                fileTypeGUI();

                EditorGUILayout.Space();

                EditorGUILayout.EndVertical();
            }
        }

        if (captureMethod != ScreenshotCreatorWindow.CaptureMethod.Cutout)
        {
            EditorGUILayout.Space();

            GUI.color = signatureColor;



            EditorGUILayout.BeginVertical(EditorStyles.helpBox);

            GUI.color = Color.white;

            GUILayout.Label("Cameras:", EditorStyles.boldLabel);

            for (int i = 0; i < list.Count; i++)
            {
                ScreenshotCreator.CameraObject c = list [i];

                GUI.color = Color.white;
                EditorGUILayout.BeginHorizontal(EditorStyles.helpBox);

                list [i].cam = (GameObject)EditorGUILayout.ObjectField(list [i].cam, typeof(GameObject), true);

                EditorGUI.BeginDisabledGroup(captureMethod == ScreenshotCreatorWindow.CaptureMethod.Cutout && !EditorApplication.isPlaying);
                if (list [i].cam != null)
                {
                    if (GUILayout.Button("USE " + list [i].cam.name, new GUIStyle(EditorStyles.miniButtonLeft)))
                    {
                        refreshRequests();
                        if (captureMethod == CaptureMethod.RenderTexture)
                        {
                            Camera attachedCam = list [i].cam.GetComponent <Camera> ();
                            if (attachedCam == null)
                            {
                                CaptureScreenshots(i, true);
                            }
                            else
                            {
                                CaptureRenderTexture(attachedCam, i);
                            }
                        }
                        else if (captureMethod == CaptureMethod.CaptureScreenshot)
                        {
                            CaptureScreenshots(i, false);
                        }

                        lastCam = list [lastCamID].cam.GetComponent <Camera> ();
                    }
                }
                EditorGUI.EndDisabledGroup();

                // the delete button
                if (c.deleteQuestion)
                {
                    GUI.color = Color.red;
                    if (GUILayout.Button("YES?", new GUIStyle(EditorStyles.miniButtonRight), GUILayout.MaxWidth(45), GUILayout.MaxHeight(14)))
                    {
                        refreshRequests();
                        Delete(i);
                    }
                }
                else
                {
                    GUI.color = (Color.red + Color.white * 2f) / 3f;
                    if (GUILayout.Button("X", new GUIStyle(EditorStyles.miniButtonRight), GUILayout.MaxWidth(45), GUILayout.MaxHeight(14)))
                    {
                        refreshRequests();
                        RequestDelete(i);
                    }
                }

                EditorGUILayout.EndHorizontal();
            }

            EditorGUILayout.EndVertical();



            EditorGUILayout.Space();

            GUI.color = signatureColor;
            if (GUILayout.Button("ADD CAMERA", "toolbarButton", GUILayout.MaxWidth(120), GUILayout.MinWidth(120)))
            {
                refreshRequests();
                Create();
            }

            EditorGUILayout.Space();
        }
    }
    public override void OnInspectorGUI()
    {
        EditorUtility.SetDirty(target);

        EditorGUILayout.Space();

        GUI.color = script.signatureColor;
        if (GUILayout.Button("TOGGLE SETTINGS", "toolbarButton", GUILayout.MaxWidth(120), GUILayout.MinWidth(120)))
        {
            refreshRequests();
            script.foldoutSettings = !script.foldoutSettings;
        }

        GUI.color = Color.white;

        if (script.foldoutSettings)
        {
            EditorGUILayout.BeginVertical(EditorStyles.helpBox);

            EditorGUILayout.LabelField("CAPTURE SETTINGS", EditorStyles.boldLabel);

            GUI.color            = script.signatureColor;
            script.captureMethod = (ScreenshotCreator.CaptureMethod)EditorGUILayout.EnumPopup("capture method", script.captureMethod);

            GUI.color = Color.white;
            if (script.captureMethod == ScreenshotCreator.CaptureMethod.Cutout)
            {
                EditorGUILayout.HelpBox("This capture method will take any part of the current Game View and save it pixel by pixel. Not supported in Edit Mode.", MessageType.Info);

                singleCameraToggle();

                GUI.color             = Color.white;
                script.cutoutPosition = EditorGUILayout.Vector2Field("Cutout Position", script.cutoutPosition);
                script.cutoutSize     = EditorGUILayout.Vector2Field("Cutout Size", script.cutoutSize);
            }
            else if (script.captureMethod == ScreenshotCreator.CaptureMethod.RenderTexture)
            {
                EditorGUILayout.HelpBox("This capture method creates a RenderTexture that captures any Camera's " +
                                        "output in a custom resolution. This method also creates the sharpest upscaled images, but it can only use a single Camera.", MessageType.Info);

                EditorGUILayout.BeginHorizontal();

                GUI.color = Color.white;
                script.renderSizeMultiplier = EditorGUILayout.Slider("Size Multiplyer (float)", script.renderSizeMultiplier, 0.1f, 10f);
                EditorGUILayout.LabelField(script.getResolution(), EditorStyles.boldLabel, GUILayout.MaxWidth(100));

                EditorGUILayout.EndHorizontal();
            }
            else
            {
                EditorGUILayout.HelpBox("This capture method creates a screenshot that is upscaled by a rounded number multiplier. ", MessageType.Info);

                singleCameraToggle();

                EditorGUILayout.BeginHorizontal();

                GUI.color = Color.white;
                script.captureSizeMultiplier = EditorGUILayout.IntSlider("Size Multiplyer (int)", script.captureSizeMultiplier, 1, 10);
                EditorGUILayout.LabelField(script.getResolution(), EditorStyles.boldLabel, GUILayout.MaxWidth(100));

                EditorGUILayout.EndHorizontal();
            }

            EditorGUILayout.EndVertical();


            EditorGUILayout.Space();

            EditorGUILayout.BeginVertical(EditorStyles.helpBox);

            EditorGUILayout.LabelField("DIRECTORY SETTINGS", EditorStyles.boldLabel);

            script.customDirectory = EditorGUILayout.TextField("Custom Name", script.customDirectory);

            applicationPathToggle();

            GUI.color = Color.white;
            EditorGUILayout.SelectableLabel("Directory = " + script.getSaveDirectory(), GUILayout.MaxHeight(16));


            EditorGUILayout.EndVertical();

            EditorGUILayout.Space();


            EditorGUILayout.BeginVertical(EditorStyles.helpBox);

            EditorGUILayout.LabelField("FILE SETTINGS", EditorStyles.boldLabel);



            script.customName = EditorGUILayout.TextField("Custom Name", script.customName);

            fileName();

            EditorGUILayout.LabelField("File Name = " + script.getFileName(script.lastCamID));

            EditorGUILayout.Space();



            fileType();

            EditorGUILayout.Space();

            EditorGUILayout.EndVertical();
        }

        EditorGUILayout.Space();

        GUI.color = script.signatureColor;


        EditorGUILayout.BeginVertical(EditorStyles.helpBox);

        GUI.color = Color.white;

        GUILayout.Label("Cameras:", EditorStyles.boldLabel);

        for (int i = 0; i < script.list.Count; i++)
        {
            ScreenshotCreator.CameraObject c = script.list[i];

            GUI.color = Color.white;
            EditorGUILayout.BeginHorizontal(EditorStyles.helpBox);

            script.list[i].cam = (GameObject)EditorGUILayout.ObjectField(script.list[i].cam, typeof(GameObject), true);

            EditorGUI.BeginDisabledGroup(script.list [i].cam == null);
            script.list[i].hotkey = (ScreenshotCreator.CameraObject.Hotkey)EditorGUILayout.EnumPopup(script.list[i].hotkey, GUILayout.MaxWidth(60));
            EditorGUI.EndDisabledGroup();

            EditorGUI.BeginDisabledGroup(script.captureMethod == ScreenshotCreator.CaptureMethod.Cutout && !EditorApplication.isPlaying);
            if (script.list [i].cam != null)
            {
                if (GUILayout.Button("USE " + script.list [i].cam.name, new GUIStyle(EditorStyles.miniButtonLeft)))
                {
                    refreshRequests();
                    if (script.captureMethod == ScreenshotCreator.CaptureMethod.RenderTexture)
                    {
                        Camera attachedCam = script.list [i].cam.GetComponent <Camera> ();
                        if (attachedCam == null)
                        {
                            script.CaptureScreenshots(i, true);
                        }
                        else
                        {
                            script.CaptureRenderTexture(attachedCam, i);
                        }
                    }
                    else if (script.captureMethod == ScreenshotCreator.CaptureMethod.CaptureScreenshot)
                    {
                        script.CaptureScreenshots(i, false);
                    }
                    else
                    {
                        //script.StartCoroutine(script.CaptureCutout (i));
                        script.CaptureCutoutVoid(i);
                    }

                    script.lastCam = script.list [script.lastCamID].cam.GetComponent <Camera> ();
                }
            }
            EditorGUI.EndDisabledGroup();

            // the delete button
            if (c.deleteQuestion)
            {
                GUI.color = script.signatureColor;
                if (GUILayout.Button("YES?", new GUIStyle(EditorStyles.miniButtonRight), GUILayout.MaxWidth(45), GUILayout.MaxHeight(14)))
                {
                    refreshRequests();
                    script.Delete(i);
                }
            }
            else
            {
                GUI.color = (script.signatureColor + Color.white * 2f) / 3f;
                if (GUILayout.Button("X", new GUIStyle(EditorStyles.miniButtonRight), GUILayout.MaxWidth(45), GUILayout.MaxHeight(14)))
                {
                    refreshRequests();
                    script.RequestDelete(i);
                }
            }

            EditorGUILayout.EndHorizontal();
        }

        EditorGUILayout.EndVertical();

        EditorGUILayout.Space();

        GUI.color = script.signatureColor;
        if (GUILayout.Button("ADD CAMERA", "toolbarButton", GUILayout.MaxWidth(120), GUILayout.MinWidth(120)))
        {
            refreshRequests();
            script.Create();
        }

        EditorGUILayout.Space();
    }
    void OnGUI()
    {
        GUI.color = Color.white;
        EditorGUILayout.BeginVertical(EditorStyles.helpBox);

        foldoutSettings = EditorGUILayout.Foldout(foldoutSettings, "Settings");

        if (foldoutSettings)
        {
            EditorGUILayout.BeginHorizontal();
            superSize = EditorGUILayout.IntSlider("size multiplier", superSize, 1, 16);
            EditorGUILayout.LabelField(getResolution(), EditorStyles.boldLabel, GUILayout.MaxWidth(100));
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.SelectableLabel("folder: " + System.IO.Directory.GetCurrentDirectory() + @"\Screenshots\");

            customName = EditorGUILayout.TextField("custom name", customName);

            EditorGUILayout.BeginHorizontal();
            if (GUILayout.Button("CamName"))
            {
                includeCamName = !includeCamName;
            }
            if (GUILayout.Button("Date"))
            {
                includeDate = !includeDate;
            }
            if (GUILayout.Button("Resolution"))
            {
                includeResolution = !includeResolution;
            }
            fileType = (FileType)EditorGUILayout.EnumPopup(fileType);
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.LabelField("file name: " + getFileName(lastCamID));

            EditorGUILayout.Space();

            captureMethod = (CaptureMethod)EditorGUILayout.EnumPopup("capture method", captureMethod);
        }

        EditorGUILayout.EndVertical();

        EditorGUILayout.Space();

        GUILayout.Label("Cameras:", EditorStyles.boldLabel);

        for (int i = 0; i < list.Count; i++)
        {
            ScreenshotCreator.CameraObject c = list[i];

            GUI.color = Color.white;
            EditorGUILayout.BeginHorizontal(EditorStyles.helpBox);

            list[i].cam = (GameObject)EditorGUILayout.ObjectField(list[i].cam, typeof(GameObject), true);

            //EditorGUI.BeginDisabledGroup (!EditorApplication.isPlaying);
            if (list [i].cam != null)
            {
                if (GUILayout.Button("USE " + list [i].cam.name, new GUIStyle(EditorStyles.miniButtonLeft)))
                {
                    refreshRequests();
                    if (captureMethod == CaptureMethod.RenderTexture)
                    {
                        Camera attachedCam = list [i].cam.GetComponent <Camera> ();
                        if (attachedCam == null)
                        {
                            CaptureScreenshots(i, true);
                        }
                        else
                        {
                            CaptureRenderTexture(attachedCam, i);
                        }
                    }
                    else if (captureMethod == CaptureMethod.CaptureScreenshot)
                    {
                        CaptureScreenshots(i, false);
                    }

                    lastCam = list [lastCamID].cam.GetComponent <Camera> ();
                }
            }
            //EditorGUI.EndDisabledGroup();

            // the delete button
            if (c.deleteQuestion)
            {
                GUI.color = Color.red;
                if (GUILayout.Button("YES?", new GUIStyle(EditorStyles.miniButtonRight), GUILayout.MaxWidth(45), GUILayout.MaxHeight(14)))
                {
                    refreshRequests();
                    Delete(i);
                }
            }
            else
            {
                GUI.color = (Color.red + Color.white * 2f) / 3f;
                if (GUILayout.Button("X", new GUIStyle(EditorStyles.miniButtonRight), GUILayout.MaxWidth(45), GUILayout.MaxHeight(14)))
                {
                    refreshRequests();
                    RequestDelete(i);
                }
            }

            EditorGUILayout.EndHorizontal();
        }

        EditorGUILayout.Space();

        GUI.color = new Color(0.54f, 0.68f, 0.95f);
        if (GUILayout.Button("ADD CAMERA", GUILayout.MaxWidth(100), GUILayout.MinWidth(100), GUILayout.MaxHeight(25), GUILayout.MinHeight(25)))
        {
            refreshRequests();
            Create();
        }
    }