Esempio n. 1
0
        protected override void Draw(ref Rect rect)
        {
            if (Event.current.type == EventType.Repaint && boxRect != Rect.zero)
            {
                EditorStyles.helpBox.Draw(boxRect, false, false, false, false);
            }

            ImporterValueHeightCalc.Begin();
            var firstRect = rect;

            rect.xMin  += 15f;
            rect.xMax  -= 5f;
            rect.xMin  += GUIHelper.Rects.DefaultLabelWidth;
            rect.y     += 3f;
            rect.height = EditorGUIUtility.singleLineHeight;

            {
                if (isDefault)
                {
                    var preValue = TextureType.Value;
                    var preState = TextureType.IsConfigurable;
                    using (new ImporterValueScopeRect <TextureImporterType>(TextureType, "TextureType", ref rect))
                        TextureType.Value = ( TextureImporterType )EditorGUI.EnumPopup(rect, TextureType);
                    checkTextureTypeChange(preValue, preState);

                    using (new ImporterValueScopeRect <TextureImporterShape>(TextureShape, "TextureShape", ref rect))
                        TextureShape.Value = ( TextureImporterShape )EditorGUI.EnumPopup(rect, TextureShape);

                    rect.y += 5f;
                    ImporterValueHeightCalc.Height += 5f;

                    using (new ImporterValueScopeRect <TextureWrapMode>(WrapMode, "WrapMode", ref rect))
                        WrapMode.Value = ( TextureWrapMode )EditorGUI.EnumPopup(rect, WrapMode);

                    using (new ImporterValueScopeRect <FilterMode>(FilterMode, "FilterMode", ref rect))
                        FilterMode.Value = ( FilterMode )EditorGUI.EnumPopup(rect, FilterMode);

                    using (new ImporterValueScopeRect <int>(AnisoLevel, "AnisoLevel", ref rect))
                        AnisoLevel.Value = EditorGUI.IntSlider(rect, AnisoLevel, 0, 16);

                    rect.y += 5f;
                    ImporterValueHeightCalc.Height += 5f;

                    switch (TextureType.Value)
                    {
                    case TextureImporterType.Default:
                        using (new ImporterValueScopeRect <bool>(sRGB, "sRGB", ref rect))
                            sRGB.Value = EditorGUI.Toggle(rect, sRGB);

                        using (new ImporterValueScopeRect <TextureImporterAlphaSource>(AlphaSource, "AlphaSource", ref rect))
                            AlphaSource.Value = ( TextureImporterAlphaSource )EditorGUI.EnumPopup(rect, AlphaSource);

                        using (new ImporterValueScopeRect <bool>(AlphaIsTransparency, "AlphaIsTransparency", ref rect))
                            AlphaIsTransparency.Value = EditorGUI.Toggle(rect, AlphaIsTransparency);

                        break;

                    case TextureImporterType.NormalMap:
                        // cannot find importsetting... :(
                        //using ( new ImporterValueScope<bool>( CreateFromGrayScale, "CreateFromGrayScale" ) )
                        //    CreateFromGrayScale.Value = EditorGUILayout.Toggle( CreateFromGrayScale );
                        break;

                    case TextureImporterType.Sprite:
                        using (new ImporterValueScopeRect <SpriteImportMode>(SpriteMode, "SpriteMode", ref rect))
                            SpriteMode.Value = ( SpriteImportMode )EditorGUI.EnumPopup(rect, SpriteMode);

                        if (SpriteMode.Value == SpriteImportMode.Polygon)
                        {
                            using (new ImporterValueScopeRect <SpriteMeshType>(MeshType, "MeshType", ref rect))
                                MeshType.Value = ( SpriteMeshType )EditorGUI.EnumPopup(rect, MeshType);
                        }
                        else
                        {
                            MeshType.IsConfigurable = false;
                        }

                        using (new ImporterValueScopeRect <string>(PackingTag, "PackingTag", ref rect))
                            PackingTag.Value = EditorGUI.TextField(rect, PackingTag);

                        using (new ImporterValueScopeRect <int>(PixelsPerUnit, "PixelsPerUnit", ref rect))
                            PixelsPerUnit.Value = EditorGUI.IntField(rect, PixelsPerUnit);

                        using (new ImporterValueScopeRect <int>(ExtrudeEdges, "ExtrudeEdges", ref rect))
                            ExtrudeEdges.Value = EditorGUI.IntSlider(rect, ExtrudeEdges, 0, 32);

                        //using ( new ImporterValueScope<PivotMode>( Pivot, "Pivot" ) )
                        //    Pivot.Value = ( PivotMode )EditorGUILayout.EnumPopup( Pivot );

                        break;

                    case TextureImporterType.Cookie:
                        using (new ImporterValueScopeRect <LightType>(LightType, "LightType", ref rect))
                            LightType.Value = ( LightType )EditorGUI.EnumPopup(rect, LightType);

                        using (new ImporterValueScopeRect <TextureImporterAlphaSource>(AlphaSource, "AlphaSource", ref rect))
                            AlphaSource.Value = ( TextureImporterAlphaSource )EditorGUI.EnumPopup(rect, AlphaSource);

                        using (new ImporterValueScopeRect <bool>(AlphaIsTransparency, "AlphaIsTransparency", ref rect))
                            AlphaIsTransparency.Value = EditorGUI.Toggle(rect, AlphaIsTransparency);
                        break;

                    case TextureImporterType.SingleChannel:
                        using (new ImporterValueScopeRect <TextureImporterAlphaSource>(AlphaSource, "AlphaSource", ref rect))
                            AlphaSource.Value = ( TextureImporterAlphaSource )EditorGUI.EnumPopup(rect, AlphaSource);

                        using (new ImporterValueScopeRect <bool>(AlphaIsTransparency, "AlphaIsTransparency", ref rect))
                            AlphaIsTransparency.Value = EditorGUI.Toggle(rect, AlphaIsTransparency);
                        break;

                    default:
                        break;
                    }

                    rect.xMin -= GUIHelper.Rects.DefaultLabelWidth;
                    rect.y    += GUIHelper.Rects.NextItemY;
                    isAdvanced = EditorGUI.Foldout(rect, isAdvanced, "Advanced");
                    rect.xMin += GUIHelper.Rects.DefaultLabelWidth;
                    ImporterValueHeightCalc.Height += GUIHelper.Rects.NextItemY;

                    if (isAdvanced)
                    {
                        rect.x    += GUIHelper.Rects.Indent;
                        rect.xMax -= GUIHelper.Rects.Indent;
                        switch (TextureType.Value)
                        {
                        case TextureImporterType.Sprite:
                            using (new ImporterValueScopeRect <bool>(sRGB, "sRGB", ref rect))
                                sRGB.Value = EditorGUI.Toggle(rect, sRGB);

                            using (new ImporterValueScopeRect <TextureImporterAlphaSource>(AlphaSource, "AlphaSource", ref rect))
                                AlphaSource.Value = ( TextureImporterAlphaSource )EditorGUI.EnumPopup(rect, AlphaSource);

                            using (new ImporterValueScopeRect <bool>(AlphaIsTransparency, "AlphaIsTransparency", ref rect))
                                AlphaIsTransparency.Value = EditorGUI.Toggle(rect, AlphaIsTransparency);
                            break;

                        case TextureImporterType.GUI:
                            using (new ImporterValueScopeRect <TextureImporterAlphaSource>(AlphaSource, "AlphaSource", ref rect))
                                AlphaSource.Value = ( TextureImporterAlphaSource )EditorGUI.EnumPopup(rect, AlphaSource);

                            using (new ImporterValueScopeRect <bool>(AlphaIsTransparency, "AlphaIsTransparency", ref rect))
                                AlphaIsTransparency.Value = EditorGUI.Toggle(rect, AlphaIsTransparency);
                            break;
                        }

                        using (new ImporterValueScopeRect <bool>(ReadWriteEnabled, "ReadWriteEnabled", ref rect))
                            ReadWriteEnabled.Value = EditorGUI.Toggle(rect, ReadWriteEnabled);

                        using (new ImporterValueScopeRect <TextureImporterNPOTScale>(NonPowerOf2, "NonPowerOf2", ref rect))
                            NonPowerOf2.Value = ( TextureImporterNPOTScale )EditorGUI.EnumPopup(rect, NonPowerOf2);

                        using (new ImporterValueScopeRect <bool>(GenerateMipMaps, "GenerateMipMaps", ref rect))
                            GenerateMipMaps.Value = EditorGUI.Toggle(rect, GenerateMipMaps);

                        if (GenerateMipMaps.IsConfigurable && GenerateMipMaps.Value)
                        {
                            using (new ImporterValueScopeRect <bool>(BorderMipMaps, "BorderMipMaps", ref rect))
                                BorderMipMaps.Value = EditorGUI.Toggle(rect, BorderMipMaps);

                            using (new ImporterValueScopeRect <TextureImporterMipFilter>(MipMapFiltering, "MipMapFiltering", ref rect))
                                MipMapFiltering.Value = ( TextureImporterMipFilter )EditorGUI.EnumPopup(rect, MipMapFiltering);

#if UNITY_2017_1_OR_NEWER
                            using (new ImporterValueScopeRect <bool>(MipMapsPreserveCover, "MipMapsPreserveCover", ref rect))
                                MipMapsPreserveCover.Value = EditorGUI.Toggle(rect, MipMapsPreserveCover);

                            if (MipMapsPreserveCover.Value)
                            {
                                using (new ImporterValueScopeRect <float>(AlphaCutoffValue, "AlphaCutoffValue", ref rect))
                                    AlphaCutoffValue.Value = EditorGUI.Slider(rect, AlphaCutoffValue, 0, 1f);
                            }
                            else
                            {
                                AlphaCutoffValue.IsConfigurable = false;
                            }
#endif
                            using (new ImporterValueScopeRect <bool>(FadeoutMipMaps, "FadeoutMipMaps", ref rect))
                                FadeoutMipMaps.Value = EditorGUI.Toggle(rect, FadeoutMipMaps);

                            if (FadeoutMipMaps.Value)
                            {
                                FadeoutStartValue.IsConfigurable = true;
                                FadeoutEndValue.IsConfigurable   = true;
                                EditorGUI.MinMaxSlider(rect, ref FadeoutStartValue.Value, ref FadeoutEndValue.Value, 0, 10);
                                FadeoutStartValue.Value = ( int )FadeoutStartValue;
                                FadeoutEndValue.Value   = ( int )FadeoutEndValue;
                            }
                            else
                            {
                                FadeoutStartValue.IsConfigurable = false;
                                FadeoutEndValue.IsConfigurable   = false;
                            }
                        }
                        else
                        {
                            BorderMipMaps.IsConfigurable     = false;
                            MipMapFiltering.IsConfigurable   = false;
                            FadeoutMipMaps.IsConfigurable    = false;
                            FadeoutStartValue.IsConfigurable = false;
                            FadeoutEndValue.IsConfigurable   = false;
#if UNITY_2017_1_OR_NEWER
                            MipMapsPreserveCover.IsConfigurable = false;
                            AlphaCutoffValue.IsConfigurable     = false;
#endif
                        }
                        rect.x    -= GUIHelper.Rects.Indent;
                        rect.xMax += GUIHelper.Rects.Indent;
                    }
                }

                //! platform setting
                using (new ImporterValueScopeRect <bool>(FitSize, "FitSize", ref rect))
                    FitSize.Value = EditorGUI.Toggle(rect, FitSize);

                if (!FitSize.Value)
                {
                    using (new ImporterValueScopeRect <int>(MaxSize, "MaxSize", ref rect))
                        MaxSize.Value = EditorGUI.IntPopup(rect, MaxSize, TextureImporterHelper.TexutureSizeLabel, TextureImporterHelper.TextureSize);
                }
                else
                {
                    MaxSize.IsConfigurable = false;
                }

#if UNITY_2017_2_OR_NEWER
                using (new ImporterValueScopeRect <TextureResizeAlgorithm>(ResizeAlgorithm, "ResizeAlgorithm", ref rect))
                    ResizeAlgorithm.Value = ( TextureResizeAlgorithm )EditorGUI.EnumPopup(rect, ResizeAlgorithm);
#endif

                using (new ImporterValueScopeRect <TextureImporterCompression>(Compression, "Compression", ref rect))
                    Compression.Value = ( TextureImporterCompression )EditorGUI.EnumPopup(rect, Compression);

                if (!isDefault)
                {
                    using (new ImporterValueScopeRect <bool>(AllowAlphaSplitting, "AllowAlphaSplitting", ref rect))
                        AllowAlphaSplitting.Value = EditorGUI.Toggle(rect, AllowAlphaSplitting);
                }

                using (new ImporterValueScopeRect <TextureImporterFormat>(Format, "Format", ref rect))
                    Format.Value = ( TextureImporterFormat )EditorGUI.EnumPopup(rect, Format);

                using (new ImporterValueScopeRect <bool>(UseCrunchCompression, "UseCrunchCompression", ref rect))
                    UseCrunchCompression.Value = EditorGUI.Toggle(rect, UseCrunchCompression);

                if (UseCrunchCompression.Value)
                {
                    using (new ImporterValueScopeRect <int>(CompressionQuality, "CompressorQuality", ref rect))
                        CompressionQuality.Value = EditorGUI.IntSlider(rect, CompressionQuality, 0, 100);
                }
                else
                {
                    CompressionQuality.IsConfigurable = false;
                }
            }


            boxRect = new Rect(firstRect.x, firstRect.y + GUIHelper.Rects.NextItemY, firstRect.width, ImporterValueHeightCalc.Height + 6f);

            rect.xMin -= 15;
            rect.xMax += 5f;
            rect.xMin -= GUIHelper.Rects.DefaultLabelWidth;
            rect.y    += 3f;
        }
        protected override void Draw(ref Rect rect)
        {
            if (Event.current.type == EventType.Repaint && boxRect != Rect.zero)
            {
                EditorStyles.helpBox.Draw(boxRect, false, false, false, false);
            }

            ImporterValueHeightCalc.Begin();
            var firstRect = rect;

            rect.xMin  += 15f;
            rect.xMax  -= 5f;
            rect.xMin  += GUIHelper.Rects.DefaultLabelWidth;
            rect.y     += 3f;
            rect.height = EditorGUIUtility.singleLineHeight;

            if (isDefault)
            {
                using (new ImporterValueScopeRect <bool>(ForceToMono, "ForceToMono", ref rect))
                    ForceToMono.Value = EditorGUI.Toggle(rect, ForceToMono);

                using (new ImporterValueScopeRect <bool>(LoadInBackGround, "LoadInBackGround", ref rect))
                    LoadInBackGround.Value = EditorGUI.Toggle(rect, LoadInBackGround);

#if UNITY_2017_1_OR_NEWER
                using (new ImporterValueScopeRect <bool>(Ambisonic, "Ambisonic", ref rect))
                    Ambisonic.Value = EditorGUI.Toggle(rect, Ambisonic);
#endif
            }

            using (new ImporterValueScopeRect <AudioClipLoadType>(LoadType, "LoadType", ref rect))
                LoadType.Value = ( AudioClipLoadType )EditorGUI.EnumPopup(rect, LoadType);

            if (LoadType.Value != AudioClipLoadType.Streaming)
            {
                using (new ImporterValueScopeRect <bool>(PreloadAudioData, "PreloadAudioData", ref rect))
                    PreloadAudioData.Value = EditorGUI.Toggle(rect, PreloadAudioData);
            }

            using (new ImporterValueScopeRect <AudioCompressionFormat>(CompressionFormat, "CompressionFormat", ref rect))
                CompressionFormat.Value = ( AudioCompressionFormat )EditorGUI.EnumPopup(rect, CompressionFormat);

            if (CompressionFormat.Value.Equals(AudioCompressionFormat.Vorbis))
            {
                using (new ImporterValueScopeRect <float>(Quality, "Quality", ref rect))
                    Quality.Value = EditorGUI.IntSlider(rect, (int)Quality, 0, 100);
            }

            using (new ImporterValueScopeRect <AudioSampleRateSetting>(SampleRateSetting, "SampleRateSetting", ref rect))
                SampleRateSetting.Value = ( AudioSampleRateSetting )EditorGUI.EnumPopup(rect, SampleRateSetting);

            if (SampleRateSetting.Value == AudioSampleRateSetting.OverrideSampleRate)
            {
                using (new ImporterValueScopeRect <int>(SampleRate, "SampleRate", ref rect))
                    SampleRate.Value = EditorGUI.IntPopup(rect, SampleRate.Value, SamplingRateLabel, SamplingRate);
            }
            else
            {
                SampleRate.IsConfigurable = false;
            }

            boxRect = new Rect(firstRect.x, firstRect.y + GUIHelper.Rects.NextItemY, firstRect.width, ImporterValueHeightCalc.Height + 6f);

            rect.xMin -= 15;
            rect.xMax += 5f;
            rect.xMin -= GUIHelper.Rects.DefaultLabelWidth;
            rect.y    += 3f;
        }
        protected override void Draw(ref Rect rect)
        {
            if (Event.current.type == EventType.Repaint && boxRect != Rect.zero)
            {
                EditorStyles.helpBox.Draw(boxRect, false, false, false, false);
            }
            ImporterValueHeightCalc.Begin();
            var firstRect = rect;

            rect.xMin  += 15f;
            rect.xMax  -= 5f;
            rect.y     += 3f;
            rect.height = EditorGUIUtility.singleLineHeight;

            {
                rect.y     += GUIHelper.Rects.NextItemY + 5f;
                tabSelected = GUI.Toolbar(rect, tabSelected, tab);
                rect.y     += 5f;
                rect.xMin  += GUIHelper.Rects.DefaultLabelWidth;
                ImporterValueHeightCalc.Height += GUIHelper.Rects.NextItemY + 10f;

                switch (tabSelected)
                {
                case 0:
                    using (new ImporterValueScopeRect <int>(ScaleFactor, "ScaleFactor", ref rect))
                        ScaleFactor.Value = EditorGUI.IntField(rect, ScaleFactor);
#if UNITY_2017_1_OR_NEWER
                    using (new ImporterValueScopeRect <bool>(UseFileScale, "UseFileScale", ref rect))
                        UseFileScale.Value = EditorGUI.Toggle(rect, UseFileScale);
#endif
                    using (new ImporterValueScopeRect <ModelImporterMeshCompression>(MeshCompression, "MeshCompression", ref rect))
                        MeshCompression.Value = ( ModelImporterMeshCompression )EditorGUI.EnumPopup(rect, MeshCompression);

                    using (new ImporterValueScopeRect <bool>(ReadWriteEnabled, "ReadWriteEnabled", ref rect))
                        ReadWriteEnabled.Value = EditorGUI.Toggle(rect, ReadWriteEnabled);

                    using (new ImporterValueScopeRect <bool>(OptimizeMesh, "OptimizeMesh", ref rect))
                        OptimizeMesh.Value = EditorGUI.Toggle(rect, OptimizeMesh);

                    using (new ImporterValueScopeRect <bool>(ImportBlendShapes, "ImportBlendShapes", ref rect))
                        ImportBlendShapes.Value = EditorGUI.Toggle(rect, ImportBlendShapes);

                    using (new ImporterValueScopeRect <bool>(GenerateColliders, "GenerateColliders", ref rect))
                        GenerateColliders.Value = EditorGUI.Toggle(rect, GenerateColliders);

                    using (new ImporterValueScopeRect <bool>(KeepQuads, "KeepQuads", ref rect))
                        KeepQuads.Value = EditorGUI.Toggle(rect, KeepQuads);
#if UNITY_2017_3_OR_NEWER
                    using (new ImporterValueScopeRect <ModelImporterIndexFormat>(IndexFormat, "IndexFormat", ref rect))
                        IndexFormat.Value = ( ModelImporterIndexFormat )EditorGUI.EnumPopup(rect, IndexFormat);
#endif
#if UNITY_5_6_OR_NEWER
                    using (new ImporterValueScopeRect <bool>(WeldVertics, "WeldVertics", ref rect))
                        WeldVertics.Value = EditorGUI.Toggle(rect, WeldVertics);
#endif
#if UNITY_2017_1_OR_NEWER
                    using (new ImporterValueScopeRect <bool>(ImportVisibility, "ImportVisibility", ref rect))
                        ImportVisibility.Value = EditorGUI.Toggle(rect, ImportVisibility);

                    using (new ImporterValueScopeRect <bool>(ImportCameras, "ImportCameras", ref rect))
                        ImportCameras.Value = EditorGUI.Toggle(rect, ImportCameras);

                    using (new ImporterValueScopeRect <bool>(ImportLights, "ImportLights", ref rect))
                        ImportLights.Value = EditorGUI.Toggle(rect, ImportLights);
#endif
#if UNITY_2017_3_OR_NEWER
                    using (new ImporterValueScopeRect <bool>(PreserverHierarchy, "PreserverHierarchy", ref rect))
                        PreserverHierarchy.Value = EditorGUI.Toggle(rect, PreserverHierarchy);
#endif
                    using (new ImporterValueScopeRect <bool>(SwapUVs, "SwapUVs", ref rect))
                        SwapUVs.Value = EditorGUI.Toggle(rect, SwapUVs);

                    using (new ImporterValueScopeRect <bool>(GenerateLightMapUVs, "GenerateLightMapUVs", ref rect))
                        GenerateLightMapUVs.Value = EditorGUI.Toggle(rect, GenerateLightMapUVs);

                    if (GenerateLightMapUVs.Value)
                    {
                        rect.x    += GUIHelper.Rects.Indent;
                        rect.xMax -= GUIHelper.Rects.Indent;

                        using (new ImporterValueScopeRect <int>(HardAngle, "HardAngle", ref rect))
                            HardAngle.Value = EditorGUI.IntSlider(rect, HardAngle, 0, 180);

                        using (new ImporterValueScopeRect <int>(PackMargin, "PackMargin", ref rect))
                            PackMargin.Value = EditorGUI.IntSlider(rect, PackMargin, 1, 64);

                        using (new ImporterValueScopeRect <int>(AngleError, "AngleError", ref rect))
                            AngleError.Value = EditorGUI.IntSlider(rect, AngleError, 1, 75);

                        using (new ImporterValueScopeRect <int>(AreaError, "AreaError", ref rect))
                            AreaError.Value = EditorGUI.IntSlider(rect, AreaError, 1, 75);

                        rect.x    -= GUIHelper.Rects.Indent;
                        rect.xMax += GUIHelper.Rects.Indent;
                    }
                    else
                    {
                        HardAngle.IsConfigurable  = false;
                        PackMargin.IsConfigurable = false;
                        AngleError.IsConfigurable = false;
                        AreaError.IsConfigurable  = false;
                    }

                    rect.y += 5f;
                    ImporterValueHeightCalc.Height += 5f;

                    using (new ImporterValueScopeRect <ModelImporterNormals>(Normals, "Normals", ref rect))
                        Normals.Value = ( ModelImporterNormals )EditorGUI.EnumPopup(rect, Normals);

                    if (Normals.Value.Equals(ModelImporterNormals.Calculate))
                    {
#if UNITY_2017_1_OR_NEWER
                        using (new ImporterValueScopeRect <ModelImporterNormalCalculationMode>(NormalsMode, "NormalsMode", ref rect))
                            NormalsMode.Value = ( ModelImporterNormalCalculationMode )EditorGUI.EnumPopup(rect, NormalsMode);
#endif
                        using (new ImporterValueScopeRect <int>(SmoothingAngle, "SmoothingAngle", ref rect))
                            SmoothingAngle.Value = EditorGUI.IntSlider(rect, SmoothingAngle, 0, 180);
                    }
                    else
                    {
#if UNITY_2017_1_OR_NEWER
                        NormalsMode.IsConfigurable = false;
#endif
                        SmoothingAngle.IsConfigurable = false;
                    }

                    using (new ImporterValueScopeRect <ModelImporterTangents>(Tangents, "Tangents", ref rect))
                        Tangents.Value = ( ModelImporterTangents )EditorGUI.EnumPopup(rect, Tangents);

                    rect.y += 5f;
                    ImporterValueHeightCalc.Height += 5f;
                    break;

                case 1:
                    using (new ImporterValueScopeRect <ModelImporterAnimationType>(AnimationType, "AnimationType", ref rect))
                        AnimationType.Value = ( ModelImporterAnimationType )EditorGUI.EnumPopup(rect, AnimationType);

                    using (new ImporterValueScopeRect <bool>(OptimizeGameObject, "OptimizeGameObject", ref rect))
                        OptimizeGameObject.Value = EditorGUI.Toggle(rect, OptimizeGameObject);

                    break;

                case 2:
                    using (new ImporterValueScopeRect <bool>(ImportAnimation, "ImportAnimation", ref rect))
                        ImportAnimation.Value = EditorGUI.Toggle(rect, ImportAnimation);

                    if (ImportAnimation.Value)
                    {
                        using (new ImporterValueScopeRect <ModelImporterAnimationCompression>(AnimCompression, "AnimCompression", ref rect))
                            AnimCompression.Value = ( ModelImporterAnimationCompression )EditorGUI.EnumPopup(rect, AnimCompression);

                        using (new ImporterValueScopeRect <float>(RotaionError, "RotaionError", ref rect))
                            RotaionError.Value = EditorGUI.FloatField(rect, RotaionError);

                        using (new ImporterValueScopeRect <float>(PositionError, "PositionError", ref rect))
                            PositionError.Value = EditorGUI.FloatField(rect, PositionError);

                        using (new ImporterValueScopeRect <float>(ScaleError, "ScaleError", ref rect))
                            ScaleError.Value = EditorGUI.FloatField(rect, ScaleError);
#if UNITY_2017_2_OR_NEWER
                        using (new ImporterValueScopeRect <bool>(AnimatedCustomProperties, "AnimatedCustomProperties", ref rect))
                            AnimatedCustomProperties.Value = EditorGUI.Toggle(rect, AnimatedCustomProperties);
#endif
                    }
                    else
                    {
                        BakeAnimations.IsConfigurable = false;
                        RotaionError.IsConfigurable   = false;
                        ScaleError.IsConfigurable     = false;
#if UNITY_2017_2_OR_NEWER
                        AnimatedCustomProperties.IsConfigurable = false;
#endif
                    }
                    rect.y += 5f;
                    ImporterValueHeightCalc.Height += 5f;
                    //GUILayout.Label( "Animation Clip Default" );
                    //using ( new ImporterValueScopeRect<bool>( LoopTime, "LoopTime" ) )
                    //    LoopTime.Value = EditorGUI.Toggle( LoopTime );
                    break;

                case 3:
                    using (new ImporterValueScopeRect <bool>(ImportMaterials, "ImportMaterials", ref rect))
                        ImportMaterials.Value = EditorGUI.Toggle(rect, ImportMaterials);

                    if (ImportMaterials.Value)
                    {
#if UNITY_2017_3_OR_NEWER
                        using (new ImporterValueScopeRect <ModelImporterMaterialLocation>(MaterialLocation, "MaterialLocation", ref rect))
                            MaterialLocation.Value = ( ModelImporterMaterialLocation )EditorGUI.EnumPopup(rect, MaterialLocation);
#endif
                        using (new ImporterValueScopeRect <ModelImporterMaterialName>(MaterialNaming, "MaterialNaming", ref rect))
                            MaterialNaming.Value = ( ModelImporterMaterialName )EditorGUI.EnumPopup(rect, MaterialNaming);
                        using (new ImporterValueScopeRect <ModelImporterMaterialSearch>(MaterialSearch, "MaterialSearch", ref rect))
                            MaterialSearch.Value = ( ModelImporterMaterialSearch )EditorGUI.EnumPopup(rect, MaterialSearch);
                    }
                    else
                    {
#if UNITY_2017_3_OR_NEWER
                        MaterialLocation.IsConfigurable = false;
#endif
                        MaterialNaming.IsConfigurable = false;
                        MaterialSearch.IsConfigurable = false;
                    }
                    break;
                }
            }

            boxRect = new Rect(firstRect.x, firstRect.y + GUIHelper.Rects.NextItemY, firstRect.width, ImporterValueHeightCalc.Height + 6f);

            rect.xMin -= 15;
            rect.xMax += 5f;
            rect.xMin -= GUIHelper.Rects.DefaultLabelWidth;
            rect.y    += 3f;
        }