|  |  |  | 
|---|
|  |  |  | using System; | 
|---|
|  |  |  | using System.Collections.Generic; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | namespace vnxbqy.UI { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public class OffsetImage:BaseMeshEffect { | 
|---|
|  |  |  | public class OffsetImage:BaseMeshEffect { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | [SerializeField] | 
|---|
|  |  |  | Vector2 m_Offset; | 
|---|
|  |  |  | public Vector2 offset { | 
|---|
|  |  |  | get { | 
|---|
|  |  |  | return m_Offset; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | set { | 
|---|
|  |  |  | m_Offset = value; | 
|---|
|  |  |  | [SerializeField] | 
|---|
|  |  |  | Vector2 m_Offset; | 
|---|
|  |  |  | public Vector2 offset { | 
|---|
|  |  |  | get { | 
|---|
|  |  |  | return m_Offset; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | set { | 
|---|
|  |  |  | m_Offset = value; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public override void ModifyMesh(VertexHelper vh) { | 
|---|
|  |  |  | List<UIVertex> vertexs = new List<UIVertex>(); | 
|---|
|  |  |  | vh.GetUIVertexStream(vertexs); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if(vertexs == null || vertexs.Count == 0) { | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | vh.Clear(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var positions = new Vector3[3]; | 
|---|
|  |  |  | var uv0s = new Vector2[3]; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var firstQuard = new UIVertex[6] { | 
|---|
|  |  |  | vertexs[0], | 
|---|
|  |  |  | vertexs[1], | 
|---|
|  |  |  | vertexs[2], | 
|---|
|  |  |  | vertexs[3], | 
|---|
|  |  |  | vertexs[4], | 
|---|
|  |  |  | vertexs[5] | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | for(var i = 0;i < firstQuard.Length;i++) { | 
|---|
|  |  |  | var vertex = firstQuard[i]; | 
|---|
|  |  |  | var position = vertex.position + new Vector3(offset.x,offset.y,0); | 
|---|
|  |  |  | vertex.position = position; | 
|---|
|  |  |  | firstQuard[i] = vertex; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if((i % 3) == 2) { | 
|---|
|  |  |  | positions[0] = firstQuard[i - 2].position; | 
|---|
|  |  |  | uv0s[0] = firstQuard[i - 2].uv0; | 
|---|
|  |  |  | positions[1] = firstQuard[i - 1].position; | 
|---|
|  |  |  | uv0s[1] = firstQuard[i - 1].uv0; | 
|---|
|  |  |  | positions[2] = firstQuard[i].position; | 
|---|
|  |  |  | uv0s[2] = firstQuard[i].uv0; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | UIUtility.AddTriangle(vh,positions,Color.white,uv0s); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public override void ModifyMesh(VertexHelper vh) { | 
|---|
|  |  |  | List<UIVertex> vertexs = new List<UIVertex>(); | 
|---|
|  |  |  | vh.GetUIVertexStream(vertexs); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if(vertexs == null || vertexs.Count == 0) { | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | vh.Clear(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var positions = new Vector3[3]; | 
|---|
|  |  |  | var uv0s = new Vector2[3]; | 
|---|
|  |  |  | var index = 5 * 6; | 
|---|
|  |  |  | for(int i = 0;i < vertexs.Count;i++) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var firstQuard = new UIVertex[6] { | 
|---|
|  |  |  | vertexs[0], | 
|---|
|  |  |  | vertexs[1], | 
|---|
|  |  |  | vertexs[2], | 
|---|
|  |  |  | vertexs[3], | 
|---|
|  |  |  | vertexs[4], | 
|---|
|  |  |  | vertexs[5] | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | if(i > index) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | for(var i = 0;i < firstQuard.Length;i++) { | 
|---|
|  |  |  | var vertex = firstQuard[i]; | 
|---|
|  |  |  | var position = vertex.position + new Vector3(offset.x,offset.y,0); | 
|---|
|  |  |  | vertex.position = position; | 
|---|
|  |  |  | firstQuard[i] = vertex; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if((i % 3) == 2) { | 
|---|
|  |  |  | positions[0] = firstQuard[i - 2].position; | 
|---|
|  |  |  | uv0s[0] = firstQuard[i - 2].uv0; | 
|---|
|  |  |  | positions[1] = firstQuard[i - 1].position; | 
|---|
|  |  |  | uv0s[1] = firstQuard[i - 1].uv0; | 
|---|
|  |  |  | positions[2] = firstQuard[i].position; | 
|---|
|  |  |  | uv0s[2] = firstQuard[i].uv0; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | UIUtility.AddTriangle(vh,positions,Color.white,uv0s); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if((i % 3) == 2) { | 
|---|
|  |  |  | positions[0] = vertexs[i - 2].position; | 
|---|
|  |  |  | uv0s[0] = vertexs[i - 2].uv0; | 
|---|
|  |  |  | positions[1] = vertexs[i - 1].position; | 
|---|
|  |  |  | uv0s[1] = vertexs[i - 1].uv0; | 
|---|
|  |  |  | positions[2] = vertexs[i].position; | 
|---|
|  |  |  | uv0s[2] = vertexs[i].uv0; | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var index = 5 * 6; | 
|---|
|  |  |  | for(int i = 0;i < vertexs.Count;i++) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if(i > index) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if((i % 3) == 2) { | 
|---|
|  |  |  | positions[0] = vertexs[i - 2].position; | 
|---|
|  |  |  | uv0s[0] = vertexs[i - 2].uv0; | 
|---|
|  |  |  | positions[1] = vertexs[i - 1].position; | 
|---|
|  |  |  | uv0s[1] = vertexs[i - 1].uv0; | 
|---|
|  |  |  | positions[2] = vertexs[i].position; | 
|---|
|  |  |  | uv0s[2] = vertexs[i].uv0; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | UIUtility.AddTriangle(vh,positions,Color.white,uv0s); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | UIUtility.AddTriangle(vh,positions,Color.white,uv0s); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|