81 lines
2.0 KiB
C#
81 lines
2.0 KiB
C#
|
using System.Collections.Generic;
|
|||
|
using UnityEngine;
|
|||
|
using UnityEngine.Serialization;
|
|||
|
using UnityEngine.UI;
|
|||
|
#if UNITY_EDITOR
|
|||
|
using UnityEditor;
|
|||
|
|
|||
|
#endif
|
|||
|
|
|||
|
namespace LeTai.Asset.TranslucentImage
|
|||
|
{
|
|||
|
public partial class TranslucentImage
|
|||
|
{
|
|||
|
[Tooltip("Blend between the sprite and background blur")]
|
|||
|
[Range(0, 1)]
|
|||
|
[FormerlySerializedAs("spriteBlending")]
|
|||
|
public float m_spriteBlending = .65f;
|
|||
|
|
|||
|
public float spriteBlending
|
|||
|
{
|
|||
|
get => m_spriteBlending;
|
|||
|
set
|
|||
|
{
|
|||
|
m_spriteBlending = value;
|
|||
|
SetVerticesDirty();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public virtual void ModifyMesh(VertexHelper vh)
|
|||
|
{
|
|||
|
List<UIVertex> vertices = new List<UIVertex>();
|
|||
|
vh.GetUIVertexStream(vertices);
|
|||
|
|
|||
|
for (var i = 0; i < vertices.Count; i++)
|
|||
|
{
|
|||
|
UIVertex moddedVertex = vertices[i];
|
|||
|
moddedVertex.uv1 = new Vector2(spriteBlending,
|
|||
|
0 //No use for this yet
|
|||
|
);
|
|||
|
vertices[i] = moddedVertex;
|
|||
|
}
|
|||
|
|
|||
|
vh.Clear();
|
|||
|
vh.AddUIVertexTriangleStream(vertices);
|
|||
|
}
|
|||
|
|
|||
|
protected override void OnEnable()
|
|||
|
{
|
|||
|
base.OnEnable();
|
|||
|
SetVerticesDirty();
|
|||
|
#if UNITY_EDITOR
|
|||
|
if (!EditorApplication.isPlayingOrWillChangePlaymode)
|
|||
|
{
|
|||
|
Start();
|
|||
|
}
|
|||
|
#endif
|
|||
|
}
|
|||
|
|
|||
|
protected override void OnDisable()
|
|||
|
{
|
|||
|
SetVerticesDirty();
|
|||
|
base.OnDisable();
|
|||
|
}
|
|||
|
|
|||
|
protected override void OnDidApplyAnimationProperties()
|
|||
|
{
|
|||
|
SetVerticesDirty();
|
|||
|
base.OnDidApplyAnimationProperties();
|
|||
|
}
|
|||
|
|
|||
|
public virtual void ModifyMesh(Mesh mesh)
|
|||
|
{
|
|||
|
using (var vh = new VertexHelper(mesh))
|
|||
|
{
|
|||
|
ModifyMesh(vh);
|
|||
|
vh.FillMesh(mesh);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|