예제 #1
0
    private void OnPreprocessTexture()
    {
        TextureImporter importer = assetImporter as TextureImporter;

        //If we already have a meta file for that asset, mean it's a reimport and not a first import, se we don't want to apply the preset
        if (File.Exists(AssetDatabase.GetTextMetaFilePathFromAssetPath(importer.assetPath)))
        {
            return;
        }

        Debug.Log("new import");

        string[] importerOptions = AssetDatabase.FindAssets("t:AssetImporterOptions");
        if (importerOptions.Length == 0)
        {
            return; // no options, we don't need to override any data.
        }
        AssetImporterOptions opts = AssetDatabase.LoadAssetAtPath <AssetImporterOptions>(AssetDatabase.GUIDToAssetPath(importerOptions[0]));

        for (int i = 0; i < opts.importOptions.Length; ++i)
        {
            Debug.Log(Regex.Match(System.IO.Path.GetFileName(assetPath), WildcardToRegex(opts.importOptions[i].nameFilter)).Success);

            if (opts.importOptions[i].presetEnabled && opts.importOptions[i].preset.CanBeAppliedTo(importer) &&
                Regex.Match(System.IO.Path.GetFileName(assetPath), WildcardToRegex(opts.importOptions[i].nameFilter)).Success)
            {
                // Preset made from texture importer save the width/height of the texture used to create the preset.
                // as our default preset are created from a 4x4 texture, applying the preset to any texture make that texture 4x4
                // so we save the original width/height of the texture & reapply it to the texture importer once the preset applied.
                // (this does not change any setting about maximum texture size)
                SerializedObject obj = new SerializedObject(importer);

                SerializedProperty widthProp  = obj.FindProperty("m_Output.sourceTextureInformation.width");
                SerializedProperty heightProp = obj.FindProperty("m_Output.sourceTextureInformation.height");

                int prevW = widthProp.intValue;
                int prevH = heightProp.intValue;

                opts.importOptions[i].preset.ApplyTo(importer);

                obj.Update();
                widthProp.intValue  = prevW;
                heightProp.intValue = prevH;

                obj.ApplyModifiedProperties();
            }
        }
    }
예제 #2
0
    void OnPreprocessModel()
    {
        ModelImporter importer = assetImporter as ModelImporter;

        string[] importerOptions = AssetDatabase.FindAssets("t:AssetImporterOptions");
        if (importerOptions.Length == 0)
        {
            return; // no options, we don't need to override any data.
        }
        AssetImporterOptions opts = AssetDatabase.LoadAssetAtPath <AssetImporterOptions>(AssetDatabase.GUIDToAssetPath(importerOptions[0]));

        for (int i = 0; i < opts.importOptions.Length; ++i)
        {
            if (opts.importOptions[i].presetEnabled && opts.importOptions[i].preset.CanBeAppliedTo(importer) &&
                Regex.Match(System.IO.Path.GetFileName(assetPath), WildcardToRegex(opts.importOptions[i].nameFilter)).Success)
            {
                opts.importOptions[i].preset.ApplyTo(importer);
            }
        }
    }
    private void OnEnable()
    {
        _opts = target as AssetImporterOptions;

        if (_opts.importOptions != null)
        {
            m_InspectorsFade = new bool[_opts.importOptions.Length];
            for (int i = 0; i < _opts.importOptions.Length; ++i)
            {
                m_InspectorsFade[i] = false;
            }
        }

        var meshasset    = AssetDatabase.GUIDToAssetPath(AssetDatabase.FindAssets("__importermeshdummy__")[0]);
        var textureasset = AssetDatabase.GUIDToAssetPath(AssetDatabase.FindAssets("__importertexturedummy__")[0]);

        defaultMeshImporter  = AssetImporter.GetAtPath(meshasset) as ModelImporter;
        defaultTextureImport = AssetImporter.GetAtPath(textureasset) as TextureImporter;

        importerMenu.AddItem(new GUIContent("Texture"), false, AddNewTypeofPreset, defaultTextureImport);
        importerMenu.AddItem(new GUIContent("Mesh"), false, AddNewTypeofPreset, defaultMeshImporter);
    }