Skip to content

Commit 4b1a010

Browse files
fixed importer small bug with texture size + modified readme
1 parent 523460d commit 4b1a010

17 files changed

+102
-78
lines changed

Assets/PackageDesigner/secondTestPack.asset

Lines changed: 0 additions & 24 deletions
This file was deleted.
File renamed without changes.
File renamed without changes.

Assets/TemplatedImporter/Editor/AssetImporterOptions.cs renamed to Assets/PresetImporter/Editor/AssetImporterOptions.cs

Lines changed: 39 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ public class AssetImporterOptionsEditor : Editor
3030
protected TextureImporter defaultTextureImport;
3131
protected ModelImporter defaultMeshImporter;
3232

33+
protected GenericMenu importerMenu = new GenericMenu();
34+
35+
3336
private void OnEnable()
3437
{
3538
_opts = target as AssetImporterOptions;
@@ -48,11 +51,9 @@ private void OnEnable()
4851

4952
defaultMeshImporter = AssetImporter.GetAtPath(meshasset) as ModelImporter;
5053
defaultTextureImport = AssetImporter.GetAtPath(textureasset) as TextureImporter;
51-
}
52-
53-
private void OnDisable()
54-
{
5554

55+
importerMenu.AddItem(new GUIContent("Texture"), false, AddNewTypeofPreset, defaultTextureImport);
56+
importerMenu.AddItem(new GUIContent("Mesh"), false, AddNewTypeofPreset, defaultMeshImporter);
5657
}
5758

5859
protected void AddNewPreset(Preset p)
@@ -80,48 +81,58 @@ public void AddNewTypeofPreset(object obj)
8081
{
8182
Object unityObj = obj as Object;
8283
Preset newPreset = new Preset(unityObj);
83-
84-
85-
//if (unityObj == defaultTextureImport)
86-
//{
87-
// int count = 0;
88-
// while (count < newPreset.PropertyModifications.Length)
89-
// {
90-
// defaultTextureImport.
91-
// if (newPreset.PropertyModifications[count].propertyPath.Contains("sourceTextureInformation"))
92-
// {
93-
// ArrayUtility.RemoveAt(ref newPreset.PropertyModifications, count);
94-
// }
95-
// }
96-
//}
97-
84+
9885
AddNewPreset(newPreset);
9986
EditorUtility.SetDirty(_opts);
10087
}
10188

102-
public override void OnInspectorGUI()
89+
public void RemovePreset(int index)
10390
{
104-
//TODO : move the generic menu out of that to build it only once
105-
if (EditorGUILayout.DropdownButton(new GUIContent("New Preset"), FocusType.Passive))
106-
{
107-
GenericMenu menu = new GenericMenu();
91+
var opt = _opts.importOptions[index];
92+
93+
ArrayUtility.RemoveAt(ref _opts.importOptions, index);
94+
ArrayUtility.RemoveAt(ref m_InspectorsFade, index);
10895

109-
menu.AddItem(new GUIContent("Texture"), false, AddNewTypeofPreset, defaultTextureImport);
110-
menu.AddItem(new GUIContent("Mesh"), false, AddNewTypeofPreset, defaultMeshImporter);
96+
string assetpath = AssetDatabase.GetAssetPath(opt.preset);
97+
DestroyImmediate(opt.preset, true);
98+
AssetDatabase.ImportAsset(assetpath);
99+
AssetDatabase.Refresh();
100+
}
111101

112-
menu.DropDown(GUILayoutUtility.GetLastRect());
102+
public override void OnInspectorGUI()
103+
{
104+
if (EditorGUILayout.DropdownButton(new GUIContent("New Preset"), FocusType.Passive, GUILayout.Width(100)))
105+
{
106+
importerMenu.ShowAsContext();
113107
}
114108

115109
if (_opts.importOptions != null)
116110
{
117111
Editor ed = null;
112+
bool deletionHappened = false;
118113
for (int i = 0; i < _opts.importOptions.Length; ++i)
119114
{
115+
deletionHappened = false;
116+
117+
EditorGUILayout.BeginHorizontal();
120118
m_InspectorsFade[i] = EditorGUILayout.Foldout(m_InspectorsFade[i], "Preset : " + _opts.importOptions[i].preset.GetTargetTypeName() + " on " + _opts.importOptions[i].nameFilter);
121119

120+
if (GUILayout.Button("Delete", GUILayout.Width(100)))
121+
{
122+
if (EditorUtility.DisplayDialog("Confirm", "Are you sure you want to delete that preset rule?",
123+
"Delete", "Cancel"))
124+
{
125+
RemovePreset(i);
126+
i--;
127+
deletionHappened = true;
128+
}
129+
}
130+
131+
EditorGUILayout.EndHorizontal();
132+
122133
EditorGUI.BeginChangeCheck();
123134

124-
if (m_InspectorsFade[i])
135+
if (!deletionHappened && m_InspectorsFade[i])
125136
{
126137
_opts.importOptions[i].nameFilter =
127138
EditorGUILayout.TextField("Filter", _opts.importOptions[i].nameFilter);
File renamed without changes.

Assets/TemplatedImporter/Editor/DefaultAssetProcessor.cs renamed to Assets/PresetImporter/Editor/DefaultAssetProcessor.cs

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System.Collections;
22
using System.Collections.Generic;
33
using System.IO;
4+
using System.Reflection;
45
using System.Runtime.Serialization;
56
using System.Runtime.Serialization.Formatters.Binary;
67
using System.Text.RegularExpressions;
@@ -41,12 +42,16 @@ private void OnPreprocessTexture()
4142
{
4243
TextureImporter importer = assetImporter as TextureImporter;
4344

45+
//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
46+
if (File.Exists(AssetDatabase.GetTextMetaFilePathFromAssetPath(importer.assetPath)))
47+
return;
48+
49+
Debug.Log("new import");
50+
4451
string[] importerOptions = AssetDatabase.FindAssets("t:AssetImporterOptions");
4552
if (importerOptions.Length == 0)
4653
return; // no options, we don't need to override any data.
4754

48-
Debug.Log(assetPath);
49-
5055
AssetImporterOptions opts = AssetDatabase.LoadAssetAtPath<AssetImporterOptions>(AssetDatabase.GUIDToAssetPath(importerOptions[0]));
5156

5257
for (int i = 0; i < opts.importOptions.Length; ++i)
@@ -56,7 +61,25 @@ private void OnPreprocessTexture()
5661
if (opts.importOptions[i].presetEnabled && opts.importOptions[i].preset.CanBeAppliedTo(importer) &&
5762
Regex.Match(System.IO.Path.GetFileName(assetPath), WildcardToRegex(opts.importOptions[i].nameFilter)).Success)
5863
{
64+
// Preset made from texture importer save the width/height of the texture used to create the preset.
65+
// as our default preset are created from a 4x4 texture, applying the preset to any texture make that texture 4x4
66+
// so we save the original width/height of the texture & reapply it to the texture importer once the preset applied.
67+
// (this does not change any setting about maximum texture size)
68+
SerializedObject obj = new SerializedObject(importer);
69+
70+
SerializedProperty widthProp = obj.FindProperty("m_Output.sourceTextureInformation.width");
71+
SerializedProperty heightProp = obj.FindProperty("m_Output.sourceTextureInformation.height");
72+
73+
int prevW = widthProp.intValue;
74+
int prevH = heightProp.intValue;
75+
5976
opts.importOptions[i].preset.ApplyTo(importer);
77+
78+
obj.Update();
79+
widthProp.intValue = prevW;
80+
heightProp.intValue = prevH;
81+
82+
obj.ApplyModifiedProperties();
6083
}
6184
}
6285
}
File renamed without changes.
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
%YAML 1.1
2+
%TAG !u! tag:unity3d.com,2011:
3+
--- !u!114 &11400000
4+
MonoBehaviour:
5+
m_ObjectHideFlags: 0
6+
m_PrefabParentObject: {fileID: 0}
7+
m_PrefabInternal: {fileID: 0}
8+
m_GameObject: {fileID: 0}
9+
m_Enabled: 1
10+
m_EditorHideFlags: 0
11+
m_Script: {fileID: 11500000, guid: 2bcdc6922393b0442846eb98977c87ae, type: 3}
12+
m_Name: PresetImporter
13+
m_EditorClassIdentifier:
14+
packageName: PresetImporter
15+
dependenciesID:
16+
- 8ac367d64e24f4f40b3cf83dc0891d14
17+
- 62446868fa5cdb04491254f6b476f480
18+
- c712e1dfe3a8d294f973ea3e49ecdbe5
19+
- 39d2d07167d4c4e4fa5b80092e1a4d69
20+
- 01046dd07f5e9764d9685d68f7eb6447
21+
outputPath:
22+
- Assets/PresetImporter
23+
- Assets/PresetImporter/__importermeshdummy__.obj
24+
- Assets/PresetImporter/__importertexturedummy__.png
25+
- Assets/PresetImporter/Editor/AssetImporterOptions.cs
26+
- Assets/PresetImporter/Editor/DefaultAssetProcessor.cs

Assets/PackageDesigner/secondTestPack.asset.meta renamed to Assets/PresetImporter/PresetImporter.asset.meta

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
File renamed without changes.

0 commit comments

Comments
 (0)