protected static void AddQuad(UIVertexHelper vertexHelper, Vector3[] quadPositions, Color32 color, Vector3[] quadUVs) { int startIndex = vertexHelper.currentVertCount; for (int i = 0; i < 4; ++i) { vertexHelper.AddVert(quadPositions[i], color, quadUVs[i]); } vertexHelper.AddTriangle(startIndex, startIndex + 1, startIndex + 2); vertexHelper.AddTriangle(startIndex + 2, startIndex + 3, startIndex); }
protected static void AddQuad(UIVertexHelper vertexHelper, Vector2 posMin, Vector2 posMax, Color32 color, Vector2 uvMin, Vector2 uvMax) { int startIndex = vertexHelper.currentVertCount; vertexHelper.AddVert(new Vector3(posMin.x, posMin.y, 0), color, new Vector2(uvMin.x, uvMin.y)); vertexHelper.AddVert(new Vector3(posMin.x, posMax.y, 0), color, new Vector2(uvMin.x, uvMax.y)); vertexHelper.AddVert(new Vector3(posMax.x, posMax.y, 0), color, new Vector2(uvMax.x, uvMax.y)); vertexHelper.AddVert(new Vector3(posMax.x, posMin.y, 0), color, new Vector2(uvMax.x, uvMin.y)); vertexHelper.AddTriangle(startIndex, startIndex + 1, startIndex + 2); vertexHelper.AddTriangle(startIndex + 2, startIndex + 3, startIndex); }
private void GenerateSimpleSprite(UIVertexHelper vh, SpriteData sprite, Rect rect, Vector2 pivot, Color color) { Vector4 v = GetDrawingDimensions(sprite.padding, sprite.rect.size, pivot, rect, preserveAspect); var uv = sprite.outerUv; var color32 = color; vh.Clear(); vh.AddVert(new Vector3(v.x, v.y), color32, new Vector2(uv.x, uv.y)); vh.AddVert(new Vector3(v.x, v.w), color32, new Vector2(uv.x, uv.w)); vh.AddVert(new Vector3(v.z, v.w), color32, new Vector2(uv.z, uv.w)); vh.AddVert(new Vector3(v.z, v.y), color32, new Vector2(uv.z, uv.y)); vh.AddTriangle(0, 1, 2); vh.AddTriangle(2, 3, 0); }
private void GenerateSprite(UIVertexHelper vh, SpriteData sprite, Rect rect, Vector2 pivot, Color color) { var spriteSize = new Vector2(sprite.rect.width, sprite.rect.height); // Covert sprite pivot into normalized space. var spritePivot = sprite.pivot / spriteSize; var rectPivot = pivot; Rect r = rect; if (preserveAspect & spriteSize.sqrMagnitude > 0.0f) { PreserveSpriteAspectRatio(ref r, spriteSize, pivot); } var drawingSize = new Vector2(r.width, r.height); var spriteBoundSize = sprite.bounds.size; // Calculate the drawing offset based on the difference between the two pivots. var drawOffset = (rectPivot - spritePivot) * drawingSize; var color32 = color; vh.Clear(); Vector2[] vertices = sprite.vertices; Vector2[] uvs = sprite.uvs; for (int i = 0; i < vertices.Length; ++i) { vh.AddVert(new Vector3((vertices[i].x / spriteBoundSize.x) * drawingSize.x - drawOffset.x, (vertices[i].y / spriteBoundSize.y) * drawingSize.y - drawOffset.y), color32, new Vector2(uvs[i].x, uvs[i].y)); } UInt16[] triangles = sprite.triangles; for (int i = 0; i < triangles.Length; i += 3) { vh.AddTriangle(triangles[i + 0], triangles[i + 1], triangles[i + 2]); } }