59 lines
1.9 KiB
C#
59 lines
1.9 KiB
C#
|
using System;
|
||
|
using UnityEngine;
|
||
|
using UnityEngine.U2D;
|
||
|
#if UNITY_EDITOR
|
||
|
using System.Reflection;
|
||
|
#endif
|
||
|
|
||
|
namespace Coffee.UIParticleInternal
|
||
|
{
|
||
|
/// <summary>
|
||
|
/// Extension methods for Sprite class.
|
||
|
/// </summary>
|
||
|
internal static class SpriteExtensions
|
||
|
{
|
||
|
#if UNITY_EDITOR
|
||
|
private static readonly Type s_SpriteEditorExtensionType =
|
||
|
Type.GetType("UnityEditor.Experimental.U2D.SpriteEditorExtension, UnityEditor")
|
||
|
?? Type.GetType("UnityEditor.U2D.SpriteEditorExtension, UnityEditor");
|
||
|
|
||
|
private static readonly MethodInfo s_GetActiveAtlasTextureMethod = s_SpriteEditorExtensionType
|
||
|
.GetMethod("GetActiveAtlasTexture", BindingFlags.Static | BindingFlags.NonPublic);
|
||
|
|
||
|
private static readonly MethodInfo s_GetActiveAtlasMethod = s_SpriteEditorExtensionType
|
||
|
.GetMethod("GetActiveAtlas", BindingFlags.Static | BindingFlags.NonPublic);
|
||
|
|
||
|
/// <summary>
|
||
|
/// Get the actual texture of a sprite in play mode or edit mode.
|
||
|
/// </summary>
|
||
|
public static Texture2D GetActualTexture(this Sprite self)
|
||
|
{
|
||
|
if (!self) return null;
|
||
|
|
||
|
if (Application.isPlaying) return self.texture;
|
||
|
|
||
|
var ret = s_GetActiveAtlasTextureMethod.Invoke(null, new object[] { self }) as Texture2D;
|
||
|
return ret ? ret : self.texture;
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// Get the active sprite atlas of a sprite in play mode or edit mode.
|
||
|
/// </summary>
|
||
|
public static SpriteAtlas GetActiveAtlas(this Sprite self)
|
||
|
{
|
||
|
if (!self) return null;
|
||
|
|
||
|
return s_GetActiveAtlasMethod.Invoke(null, new object[] { self }) as SpriteAtlas;
|
||
|
}
|
||
|
#else
|
||
|
/// <summary>
|
||
|
/// Get the actual texture of a sprite in play mode.
|
||
|
/// </summary>
|
||
|
internal static Texture2D GetActualTexture(this Sprite self)
|
||
|
{
|
||
|
return self ? self.texture : null;
|
||
|
}
|
||
|
#endif
|
||
|
}
|
||
|
}
|