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();
    }
Ejemplo n.º 2
0
    public override void OnInspectorGUI()
    {
        EditorUtility.SetDirty(target);

        GUI.color = Color.white;
        EditorGUILayout.BeginVertical(EditorStyles.helpBox);
        EditorGUI.indentLevel++;
        script.foldoutSettings = EditorGUILayout.Foldout(script.foldoutSettings, "Settings");

        EditorGUI.indentLevel--;

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

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

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

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

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

            EditorGUILayout.Space();

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

        EditorGUILayout.EndVertical();

        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 (!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);
                    }

                    script.lastCam = script.list [script.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();
                    script.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();
                    script.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();
            script.Create();
        }
    }