public override void OnEnable()
        {
            var target      = (IHVImageFormatImporter)base.target;
            var assetTarget = base.assetTarget;

            assetPath = AssetDatabase.GetAssetPath(assetTarget);

            importerIsSRGB = serializedObject.FindProperty("m_sRGBTexture");

            textureData = ParseTextureData(target.userData);

            switch (System.IO.Path.GetExtension(assetPath).ToLower())
            {
            case ".dds":
                if ((base.assetTarget as Texture) == null)
                {
                    inspectorType = InspectorType.Failed;
                }
                else
                {
                    inspectorType = InspectorType.DDS;
                }

                break;

            default:
                defaultEditor = Editor.CreateEditor(target);
                inspectorType = InspectorType.Default;
                break;
            }
        }
        public override void OnPreviewGUI(Rect r, GUIStyle background)
        {
            switch (inspectorType)
            {
            case InspectorType.Default:
                break;

            default:
                var target = (Texture2D)base.target;

                // I fiercely hate doing this, but I can't figure out another way.
                textureData = ParseTextureData(assetImporter.userData);

                switch (textureData.textureType)
                {
                case FoxLib.GrTexture.TextureType.SRGB:
                    sRGBPreviewMaterial.SetFloat(mipLevelPropertyID, mipLevel);
                    sRGBPreviewMaterial.SetInt(sRGBAlphaPropertyID, sRGBOptionIndex);

                    EditorGUI.DrawPreviewTexture(r, target, sRGBPreviewMaterial, ScaleMode.ScaleToFit, 0);
                    break;

                case FoxLib.GrTexture.TextureType.Normal:
                    normalMaterial = normalOptionIndex > 0 ? defaultPreviewMaterial : normalPreviewMaterial;
                    normalMaterial.SetFloat(mipLevelPropertyID, mipLevel);
                    EditorGUI.DrawPreviewTexture(r, target, normalMaterial, ScaleMode.ScaleToFit, 0);
                    break;

                case FoxLib.GrTexture.TextureType.Linear:
                    linearPreviewMaterial.SetFloat(mipLevelPropertyID, mipLevel);

                    EditorGUI.DrawPreviewTexture(r, target, linearPreviewMaterial, ScaleMode.ScaleToFit, 0);
                    break;

                default:
                    sRGBPreviewMaterial.SetFloat(mipLevelPropertyID, mipLevel);

                    EditorGUI.DrawPreviewTexture(r, target, sRGBPreviewMaterial, ScaleMode.ScaleToFit, 0);
                    break;
                }
                break;
            }

            return;
        }
        private void OnEnable()
        {
            GUI.enabled = true;

            var target    = base.target;
            var assetPath = AssetDatabase.GetAssetPath(target);

            assetImporter = AssetImporter.GetAtPath(assetPath);

            serializedImporter = new SerializedObject(assetImporter);

            switch (System.IO.Path.GetExtension(assetPath).ToLower())
            {
            case ".ftex":
                inspectorType = InspectorType.FTEX;
                break;

            case ".asset":
                inspectorType = InspectorType.DDS;
                break;

            default:
                defaultEditor = Editor.CreateEditor(assetImporter);
                inspectorType = InspectorType.Default;
                break;
            }

            switch (inspectorType)
            {
            case InspectorType.FTEX:
            case InspectorType.DDS:
                textureData = ParseTextureData(assetImporter.userData);

                flatPreviewMaterial  = new Material(Shader.Find("Hidden/FoxKit/GrTexturePreviews/3D/Flat"));
                slicePreviewMaterial = new Material(Shader.Find("Hidden/FoxKit/GrTexturePreviews/3D/Slice"));

                previewLabel           = CreatePreviewLabelStyle();           //new GUIStyle("preLabel");
                previewSlider          = CreatePreviewSliderStyle();          //"preSlider";
                previewSliderThumbnail = CreatePreviewSliderThumbnailStyle(); //"preSliderThumb";
                break;
            }
        }
        private void OnEnable()
        {
            var target    = base.target;
            var assetPath = AssetDatabase.GetAssetPath(target);

            assetImporter = AssetImporter.GetAtPath(assetPath);

            switch (System.IO.Path.GetExtension(assetPath).ToLower())
            {
            case ".ftex":
                inspectorType = InspectorType.FTEX;
                break;

            case ".dds":
                inspectorType = InspectorType.DDS;
                break;

            default:
                inspectorType = InspectorType.Default;
                break;
            }

            switch (inspectorType)
            {
            case InspectorType.FTEX:
            case InspectorType.DDS:
                textureData = ParseTextureData(assetImporter.userData);

                sRGBPreviewMaterial    = new Material(Shader.Find("Hidden/FoxKit/GrTexturePreviews/2D/sRGB"));
                normalPreviewMaterial  = new Material(Shader.Find("Hidden/FoxKit/GrTexturePreviews/2D/Normal"));
                linearPreviewMaterial  = new Material(Shader.Find("Hidden/FoxKit/GrTexturePreviews/2D/Linear"));
                defaultPreviewMaterial = new Material(Shader.Find("Hidden/FoxKit/GrTexturePreviews/2D/Default"));

                smallZoom              = EditorGUIUtility.IconContent("PreTextureMipMapLow");
                previewLabel           = CreatePreviewLabelStyle();           //new GUIStyle("preLabel");
                previewSlider          = CreatePreviewSliderStyle();          //"preSlider";
                previewSliderThumbnail = CreatePreviewSliderThumbnailStyle(); //"preSliderThumb";
                largeZoom              = EditorGUIUtility.IconContent("PreTextureMipMapHigh");
                break;
            }
        }
 public static string CreateTextureData(GrTextureUserData userData)
 {
     return("NrtFlag: " + userData.nrtFlag + ", TextureType: " + userData.textureType + ", UnknownFlags: " + userData.unknownFlags);
 }