fix: ignore material check and transform check

Add default sort by index.

Close #119
pull/150/head
LacusCon 2020-12-04 17:00:22 +08:00 committed by mob-sakai
parent 429ff2dd09
commit d11cd0a06d
1 changed files with 28 additions and 15 deletions

View File

@ -9,8 +9,9 @@ namespace Coffee.UIParticleExtensions
internal static class SpriteExtensions
{
#if UNITY_EDITOR
private static Type tSpriteEditorExtension = Type.GetType("UnityEditor.Experimental.U2D.SpriteEditorExtension, UnityEditor")
?? Type.GetType("UnityEditor.U2D.SpriteEditorExtension, UnityEditor");
private static Type tSpriteEditorExtension =
Type.GetType("UnityEditor.Experimental.U2D.SpriteEditorExtension, UnityEditor")
?? Type.GetType("UnityEditor.U2D.SpriteEditorExtension, UnityEditor");
private static MethodInfo miGetActiveAtlasTexture = tSpriteEditorExtension
.GetMethod("GetActiveAtlasTexture", BindingFlags.Static | BindingFlags.NonPublic);
@ -222,29 +223,41 @@ namespace Coffee.UIParticleExtensions
if (!Mathf.Approximately(aPos, bPos))
return (int) Mathf.Sign(bPos - aPos);
return (int) Mathf.Sign(GetIndex(self, a) - GetIndex(self, b));
// Material instance ID: match
if (aMat.GetInstanceID() == bMat.GetInstanceID())
return 0;
// if (aMat.GetInstanceID() == bMat.GetInstanceID())
// return 0;
// Transform: ascending
return TransformCompare(aTransform, bTransform);
// return TransformCompare(aTransform, bTransform);
});
}
private static int TransformCompare(Transform a, Transform b)
private static int GetIndex(IReadOnlyList<ParticleSystem> list, Object ps)
{
while (true)
for (var i = 0; i < list.Count; i++)
{
if (!a && !b) return 0;
if (!a) return -1;
if (!b) return 1;
if (a.parent == b.parent) return a.GetSiblingIndex() - b.GetSiblingIndex();
a = a.parent;
b = b.parent;
if (list[i].GetInstanceID() == ps.GetInstanceID()) return i;
}
return 0;
}
// private static int TransformCompare(Transform a, Transform b)
// {
// while (true)
// {
// if (!a && !b) return 0;
// if (!a) return -1;
// if (!b) return 1;
// if (a.parent == b.parent) return a.GetSiblingIndex() - b.GetSiblingIndex();
//
// a = a.parent;
// b = b.parent;
// }
// }
public static long GetMaterialHash(this ParticleSystem self, bool trail)
{
if (!self) return 0;
@ -283,4 +296,4 @@ namespace Coffee.UIParticleExtensions
self.ForEach(action);
}
}
}
}