Skip to content

Commit c78dc39

Browse files
authored
Merge pull request #25 from rfadeev/unity-2019-support
Unity 2019 Support
2 parents 7010350 + 8085471 commit c78dc39

File tree

5 files changed

+62
-44
lines changed

5 files changed

+62
-44
lines changed

Diff for: Assets/Spriter2UnityDX/Editor/AnimationBuilder.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public AnimationBuilder (ScmlProcessingInfo info, IDictionary<int, IDictionary<i
4646
}
4747

4848
public Object[] GetOrigClips () {
49-
switch (S2USettings.ImportStyle) {
49+
switch (S2USettings.GetOrCreateSettings().ImportOption) {
5050
case AnimationImportOption.NestedInPrefab :
5151
return AssetDatabase.LoadAllAssetRepresentationsAtPath(PrefabPath);
5252
case AnimationImportOption.SeparateFolder :
@@ -112,7 +112,7 @@ public void Build (Animation animation, IDictionary<int, TimeLine> timeLines) {
112112
AnimationUtility.SetAnimationEvents (clip, cachedEvents);
113113
ProcessingInfo.ModifiedAnims.Add (clip);
114114
} else {
115-
switch (S2USettings.ImportStyle) {
115+
switch (S2USettings.GetOrCreateSettings().ImportOption) {
116116
case AnimationImportOption.NestedInPrefab :
117117
AssetDatabase.AddObjectToAsset (clip, PrefabPath); //Otherwise create a new one
118118
break;

Diff for: Assets/Spriter2UnityDX/Editor/CustomEditors.cs

+10-7
Original file line numberDiff line numberDiff line change
@@ -23,18 +23,21 @@ private string[] GetSortingLayerNames() {
2323

2424
public override void OnInspectorGUI ()
2525
{
26-
var changed = false;
26+
EditorGUI.BeginChangeCheck();
2727
var color = EditorGUILayout.ColorField ("Color", renderer.Color);
28-
if (color != renderer.Color) {renderer.Color = color; changed = true;}
28+
if (color != renderer.Color) {renderer.Color = color;}
2929
var material = (Material)EditorGUILayout.ObjectField ("Material", renderer.Material, typeof(Material), false);
30-
if (material != renderer.Material) {renderer.Material = material; changed = true;}
30+
if (material != renderer.Material) {renderer.Material = material;}
3131
var sortIndex = EditorGUILayout.Popup ("Sorting Layer", GetIndex (renderer.SortingLayerName), layerNames, GUILayout.ExpandWidth (true));
32-
if (layerNames [sortIndex] != renderer.SortingLayerName) {renderer.SortingLayerName = layerNames[sortIndex]; changed = true;}
32+
if (layerNames [sortIndex] != renderer.SortingLayerName) {renderer.SortingLayerName = layerNames[sortIndex];}
3333
var sortingOrder = EditorGUILayout.IntField ("Order In Layer", renderer.SortingOrder);
34-
if (sortingOrder != renderer.SortingOrder) {renderer.SortingOrder = sortingOrder; changed = true;}
34+
if (sortingOrder != renderer.SortingOrder) {renderer.SortingOrder = sortingOrder;}
3535
var applyZ = EditorGUILayout.Toggle ("Apply Spriter Z Order", renderer.ApplySpriterZOrder);
36-
if (applyZ != renderer.ApplySpriterZOrder) {renderer.ApplySpriterZOrder = applyZ; changed = true;}
37-
if (changed) EditorUtility.SetDirty(renderer);
36+
if (applyZ != renderer.ApplySpriterZOrder) {renderer.ApplySpriterZOrder = applyZ;}
37+
if (EditorGUI.EndChangeCheck())
38+
{
39+
EditorUtility.SetDirty(renderer);
40+
}
3841
}
3942

4043
private int GetIndex (string layerName) {

Diff for: Assets/Spriter2UnityDX/Editor/PrefabBuilder.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public bool Build (ScmlObject obj, string scmlPath) {
3939
GameObject instance;
4040
if (prefab == null) { //Creates an empty prefab if one doesn't already exists
4141
instance = new GameObject (entity.name);
42-
prefab = PrefabUtility.CreatePrefab (prefabPath, instance, ReplacePrefabOptions.ConnectToPrefab);
42+
prefab = PrefabUtility.SaveAsPrefabAssetAndConnect (instance, prefabPath, InteractionMode.AutomatedAction);
4343
ProcessingInfo.NewPrefabs.Add (prefab);
4444
}
4545
else {
@@ -156,7 +156,7 @@ private void TryBuild (Entity entity, GameObject prefab, GameObject instance, st
156156
}
157157
}
158158
if (instance.GetComponent<EntityRenderer> () == null) instance.AddComponent<EntityRenderer> (); //Adds an EntityRenderer if one is not already present
159-
PrefabUtility.ReplacePrefab (instance, prefab, ReplacePrefabOptions.ConnectToPrefab);
159+
PrefabUtility.SaveAsPrefabAssetAndConnect (instance, prefabPath, InteractionMode.AutomatedAction);
160160
DestroyImmediate (instance); //Apply the instance's changes to the prefab, then destroy the instance.
161161
}
162162

@@ -169,7 +169,7 @@ private Sprite GetSpriteAtPath (string path, File file, ref bool success) {
169169
if (success) success = false; //If the texture type isn't Sprite, or the pivot isn't set properly,
170170
var settings = new TextureImporterSettings (); //set the texture type and pivot
171171
importer.ReadTextureSettings (settings); //and make success false so the process can abort
172-
settings.ApplyTextureType (TextureImporterType.Sprite, true); //after all the textures have been processed
172+
settings.ApplyTextureType (TextureImporterType.Sprite); //after all the textures have been processed
173173
settings.spriteAlignment = (int)SpriteAlignment.Custom;
174174
settings.spritePivot = new Vector2 (file.pivot_x, file.pivot_y);
175175
if(ScmlImportOptions.options != null)

Diff for: Assets/Spriter2UnityDX/Editor/S2USettings.cs

+43-29
Original file line numberDiff line numberDiff line change
@@ -4,40 +4,54 @@
44

55
//Customizable settings for the importer
66
namespace Spriter2UnityDX {
7-
public class S2USettings : ScriptableObject {
8-
private const string IMPORT = "import";
9-
10-
public static AnimationImportOption ImportStyle {
11-
get { return (AnimationImportOption)EditorPrefs.GetInt (IMPORT); }
12-
set { EditorPrefs.SetInt (IMPORT, (int)value); }
13-
}
14-
15-
[MenuItem ("Edit/Project Settings/Spriter2UnityDX")]
16-
public static void Select () {
17-
var settings = CreateInstance<S2USettings> ();
18-
Selection.activeObject = settings;
7+
internal static class S2USettingsIMGUIRegister
8+
{
9+
[SettingsProvider]
10+
public static SettingsProvider CreateS2USettingsProvider()
11+
{
12+
var provider = new SettingsProvider("Project/Spriter2UnityDX", SettingsScope.Project)
13+
{
14+
guiHandler = (searchContext) =>
15+
{
16+
var settings = S2USettings.GetSerializedSettings();
17+
var label = new GUIContent("Animation Import Style",
18+
"By default, animations are nested into the generated prefab. Change this option to instead place animations into a separate folder.");
19+
EditorGUILayout.PropertyField(settings.FindProperty("importOption"), label);
20+
settings.ApplyModifiedProperties();
21+
},
22+
};
23+
24+
return provider;
1925
}
2026
}
2127

22-
public enum AnimationImportOption : byte { NestedInPrefab, SeparateFolder }
23-
24-
[CustomEditor (typeof(S2USettings))] public class SettingsEditor: Editor {
25-
private AnimationImportOption importStyle;
26-
27-
private void OnEnable () {
28-
importStyle = S2USettings.ImportStyle;
29-
}
30-
31-
private void OnDisable () {
32-
DestroyImmediate (target);
28+
public class S2USettings : ScriptableObject
29+
{
30+
private const string settingsPath = "Assets/Spriter2UnityDX/Editor/Settings.asset";
31+
32+
[SerializeField]
33+
private AnimationImportOption importOption;
34+
35+
internal AnimationImportOption ImportOption { get { return importOption; } }
36+
37+
internal static S2USettings GetOrCreateSettings()
38+
{
39+
var settings = AssetDatabase.LoadAssetAtPath<S2USettings>(settingsPath);
40+
if (settings == null)
41+
{
42+
settings = ScriptableObject.CreateInstance<S2USettings>();
43+
settings.importOption = AnimationImportOption.NestedInPrefab;
44+
AssetDatabase.CreateAsset(settings, settingsPath);
45+
AssetDatabase.SaveAssets();
46+
}
47+
return settings;
3348
}
3449

35-
public override void OnInspectorGUI () {
36-
EditorGUI.BeginChangeCheck ();
37-
var label = new GUIContent ("Animation Import Style",
38-
"By default, animations are nested into the generated prefab. Change this option to instead place animations into a separate folder.");
39-
importStyle = (AnimationImportOption)EditorGUILayout.EnumPopup (label, importStyle);
40-
if (EditorGUI.EndChangeCheck ()) S2USettings.ImportStyle = importStyle;
50+
internal static SerializedObject GetSerializedSettings()
51+
{
52+
return new SerializedObject(GetOrCreateSettings());
4153
}
4254
}
55+
56+
public enum AnimationImportOption : byte { NestedInPrefab, SeparateFolder }
4357
}

Diff for: Assets/Spriter2UnityDX/Editor/Settings.asset

+4-3
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,13 @@
33
--- !u!114 &11400000
44
MonoBehaviour:
55
m_ObjectHideFlags: 0
6-
m_PrefabParentObject: {fileID: 0}
7-
m_PrefabInternal: {fileID: 0}
6+
m_CorrespondingSourceObject: {fileID: 0}
7+
m_PrefabInstance: {fileID: 0}
8+
m_PrefabAsset: {fileID: 0}
89
m_GameObject: {fileID: 0}
910
m_Enabled: 1
1011
m_EditorHideFlags: 0
1112
m_Script: {fileID: 11500000, guid: 9f361e2f9624e406e9f836e8793ee5b8, type: 3}
1213
m_Name: Settings
1314
m_EditorClassIdentifier:
14-
AnimationImportStyle: 1
15+
importOption: 0

0 commit comments

Comments
 (0)