Exemple #1
0
    public static bool ValidateImportSettings(Texture2D tex, bool isLUT)
    {
        if (!tex)
        {
            return(false);
        }

        bool valid = false;

        var importer = (TextureImporter)AssetImporter.GetAtPath(AssetDatabase.GetAssetPath(tex));

        if (importer != null) // Fails when using a non-persistent texture
        {
            valid = isLUT ? LUTUtilities.IsValidLUT(importer) : LUTUtilities.IsValidScreenshot(importer);

            if (!valid)
            {
                EditorGUILayout.HelpBox("Invalid import settings.", MessageType.Warning);

                GUILayout.Space(-32);
                using (new EditorGUILayout.HorizontalScope())
                {
                    GUILayout.FlexibleSpace();
                    if (GUILayout.Button("Fix", GUILayout.Width(60)))
                    {
                        LUTUtilities.SetSSImportSettings(importer);
                        valid = true;
                        AssetDatabase.Refresh();
                    }
                    GUILayout.Space(8);
                }
                GUILayout.Space(11);
            }
        }

        return(valid);
    }
Exemple #2
0
    private void OnGUI()
    {
        EditorGUILayout.Space();
        using (new EditorGUILayout.HorizontalScope())
        {
            GUILayout.FlexibleSpace();
            if (GUILayout.Button(new GUIContent("Capture scene screenshot", null,
                                                "Captures a 720p screenshot from the scene-view and inserts a neutral LUT in the bottom-left corner\n\n" +
                                                "This file is saved to the Assets folder and automatically assigned as the input screenshot below\n\n" +
                                                "You can make any color adjustments to this screenshot. Once saved, the now modified LUT will be extracted and copied into the target LUT file")))
            {
                LUTUtilities.CaptureScreenshotWithLUT();
            }
            GUILayout.FlexibleSpace();
        }

        EditorGUILayout.Space();

        using (new EditorGUILayout.VerticalScope(EditorStyles.helpBox))
        {
            GUILayout.Label("Input screenshot (8-bit depth)", EditorStyles.boldLabel);

            using (new EditorGUILayout.HorizontalScope())
            {
                if (useAssetInput)
                {
                    inputTexture = (Texture2D)EditorGUILayout.ObjectField(inputTexture, typeof(Texture2D), true);
                    if (inputTexture)
                    {
                        LUTExtracter.InputName = inputTexture.name;
                    }
                }

                /*
                 * else
                 * {
                 *  EditorGUILayout.TextField(LUTExtracter.InputPath, SCPE.SCPE_GUI.PathField);
                 *  if (GUILayout.Button("...", GUILayout.Width(50f)))
                 *  {
                 *      LUTExtracter.InputPath = EditorUtility.OpenFilePanel("Screenshot destination folder", LUTExtracter.InputPath, "");
                 *  }
                 * }
                 */
                if (GUILayout.Button("Open", GUILayout.Width(50f)))
                {
                    if (inputTexture)
                    {
                        AssetDatabase.OpenAsset(inputTexture);
                    }
                }
            }

            ValidateImportSettings(inputTexture, false);
            EditorGUILayout.Space();
        }

        EditorGUILayout.Space();

        using (new EditorGUILayout.VerticalScope(EditorStyles.helpBox))
        {
            string lutLabel = (OutputLUT != null) ? " (" + OutputLUT.width + "x" + OutputLUT.height + ")" : string.Empty;
            GUILayout.Label("Output LUT" + lutLabel, EditorStyles.boldLabel);
            OutputLUT = (Texture2D)EditorGUILayout.ObjectField(OutputLUT, typeof(Texture2D), true);

            ValidateImportSettings(OutputLUT, true);
            EditorGUILayout.Space();
        }

        if (inputTexture == null || OutputLUT == null)
        {
            EditorGUILayout.HelpBox("Empty input or output", MessageType.Warning);
        }

        EditorGUILayout.Space();

        using (new EditorGUILayout.HorizontalScope())
        {
            GUILayout.FlexibleSpace();
            using (new EditorGUI.DisabledGroupScope(inputTexture == null || OutputLUT == null || LUTExtracter.AutoExtract))
            {
                if (GUILayout.Button(new GUIContent(" Extract", EditorGUIUtility.IconContent("LookDevObjRotation").image), GUILayout.Width(150f)))
                {
                    LUTExtracter.ExtractLUT(inputTexture, OutputLUT);
                }
            }
            GUILayout.FlexibleSpace();

            //LUTExtracter.AutoExtract = EditorGUILayout.ToggleLeft("Automatic", LUTExtracter.AutoExtract);
        }

        if (LUTExtracter.AutoExtract)
        {
            EditorGUILayout.HelpBox("Extracting on screenshot file change", MessageType.None);
        }
    }