//-------------------------------------------------------- 
 | 
//    [Author]:           玩个游戏 
 | 
//    [  Date ]:           Wednesday, August 23, 2017 
 | 
//-------------------------------------------------------- 
 | 
using UnityEngine; 
 | 
using System.Collections; 
 | 
using UnityEngine.UI; 
 | 
using System; 
 | 
using System.Collections.Generic; 
 | 
  
 | 
  
 | 
public class OffsetImage:BaseMeshEffect { 
 | 
  
 | 
    [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); 
 | 
            } 
 | 
        } 
 | 
  
 | 
  
 | 
  
 | 
        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); 
 | 
            } 
 | 
        } 
 | 
  
 | 
  
 | 
  
 | 
  
 | 
    } 
 | 
  
 | 
} 
 |