142 lines
3.6 KiB
C#
142 lines
3.6 KiB
C#
|
using UnityEngine;
|
||
|
using UnityTexture2D = UnityEngine.Texture2D;
|
||
|
using System;
|
||
|
|
||
|
namespace UnityEditor.U2D.Sprites
|
||
|
{
|
||
|
internal abstract class ITexture2D
|
||
|
{
|
||
|
public abstract int width { get; }
|
||
|
public abstract int height { get; }
|
||
|
public abstract TextureFormat format { get; }
|
||
|
public abstract Color32[] GetPixels32();
|
||
|
public abstract FilterMode filterMode { get; set; }
|
||
|
public abstract string name { get; }
|
||
|
public abstract void SetPixels(Color[] c);
|
||
|
public abstract void Apply();
|
||
|
public abstract float mipMapBias { get; }
|
||
|
|
||
|
public static bool operator==(ITexture2D t1, ITexture2D t2)
|
||
|
{
|
||
|
if (object.ReferenceEquals(t1, null))
|
||
|
{
|
||
|
return object.ReferenceEquals(t2, null) || t2 == null;
|
||
|
}
|
||
|
|
||
|
return t1.Equals(t2);
|
||
|
}
|
||
|
|
||
|
public static bool operator!=(ITexture2D t1, ITexture2D t2)
|
||
|
{
|
||
|
if (object.ReferenceEquals(t1, null))
|
||
|
{
|
||
|
return !object.ReferenceEquals(t2, null) && t2 != null;
|
||
|
}
|
||
|
|
||
|
return !t1.Equals(t2);
|
||
|
}
|
||
|
|
||
|
public override bool Equals(object other)
|
||
|
{
|
||
|
throw new NotImplementedException();
|
||
|
}
|
||
|
|
||
|
public override int GetHashCode()
|
||
|
{
|
||
|
throw new NotImplementedException();
|
||
|
}
|
||
|
|
||
|
public static implicit operator UnityEngine.Object(ITexture2D t)
|
||
|
{
|
||
|
return object.ReferenceEquals(t, null) ? null : t.ToUnityObject();
|
||
|
}
|
||
|
|
||
|
public static implicit operator UnityEngine.Texture2D(ITexture2D t)
|
||
|
{
|
||
|
return object.ReferenceEquals(t, null) ? null : t.ToUnityTexture();
|
||
|
}
|
||
|
|
||
|
protected abstract UnityEngine.Object ToUnityObject();
|
||
|
protected abstract UnityEngine.Texture2D ToUnityTexture();
|
||
|
}
|
||
|
|
||
|
internal class Texture2DWrapper : ITexture2D
|
||
|
{
|
||
|
UnityTexture2D m_Texture;
|
||
|
|
||
|
public Texture2DWrapper(UnityTexture2D texture)
|
||
|
{
|
||
|
m_Texture = texture;
|
||
|
}
|
||
|
|
||
|
public override int width
|
||
|
{
|
||
|
get { return m_Texture.width; }
|
||
|
}
|
||
|
|
||
|
public override int height
|
||
|
{
|
||
|
get { return m_Texture.height; }
|
||
|
}
|
||
|
|
||
|
public override TextureFormat format
|
||
|
{
|
||
|
get { return m_Texture.format; }
|
||
|
}
|
||
|
|
||
|
public override Color32[] GetPixels32()
|
||
|
{
|
||
|
return m_Texture.GetPixels32();
|
||
|
}
|
||
|
|
||
|
public override FilterMode filterMode
|
||
|
{
|
||
|
get { return m_Texture.filterMode; }
|
||
|
set { m_Texture.filterMode = value; }
|
||
|
}
|
||
|
|
||
|
public override float mipMapBias
|
||
|
{
|
||
|
get { return m_Texture.mipMapBias; }
|
||
|
}
|
||
|
|
||
|
public override string name
|
||
|
{
|
||
|
get { return m_Texture.name; }
|
||
|
}
|
||
|
|
||
|
public override bool Equals(object other)
|
||
|
{
|
||
|
Texture2DWrapper t = other as Texture2DWrapper;
|
||
|
if (object.ReferenceEquals(t, null))
|
||
|
return m_Texture == null;
|
||
|
return m_Texture == t.m_Texture;
|
||
|
}
|
||
|
|
||
|
public override int GetHashCode()
|
||
|
{
|
||
|
return m_Texture.GetHashCode();
|
||
|
}
|
||
|
|
||
|
public override void SetPixels(Color[] c)
|
||
|
{
|
||
|
m_Texture.SetPixels(c);
|
||
|
}
|
||
|
|
||
|
public override void Apply()
|
||
|
{
|
||
|
m_Texture.Apply();
|
||
|
}
|
||
|
|
||
|
protected override UnityEngine.Object ToUnityObject()
|
||
|
{
|
||
|
return m_Texture;
|
||
|
}
|
||
|
|
||
|
protected override UnityEngine.Texture2D ToUnityTexture()
|
||
|
{
|
||
|
return m_Texture;
|
||
|
}
|
||
|
}
|
||
|
}
|