public void DrawQuad(Texture2D texture, ref SpriteQuad quad) { if (texture != _currentTexture) { BeginNewMesh(texture); } if (drawRect != null) { if (!drawRect.Value.Intersects(quad.GetBounds())) { return; } } _currentMesh.DrawQuad(ref quad); }
public void DrawQuad(ref SpriteQuad quad) { // performance inlining if (_vertexNum + 4 >= _vertexCount || _indexNum + 6 >= _indexCount) { EnsureSize(4, 6); } _vertices[_vertexNum] = quad.leftTop.position; _vertices[_vertexNum + 1] = quad.rightTop.position; _vertices[_vertexNum + 2] = quad.leftBottom.position; _vertices[_vertexNum + 3] = quad.rightBottom.position; quad.leftTop.color.GetColor(out _colors[_vertexNum + 0]); quad.rightTop.color.GetColor(out _colors[_vertexNum + 1]); quad.leftBottom.color.GetColor(out _colors[_vertexNum + 2]); quad.rightBottom.color.GetColor(out _colors[_vertexNum + 3]); quad.leftTop.color.GetTint(out _uv2[_vertexNum + 0]); quad.rightTop.color.GetTint(out _uv2[_vertexNum + 1]); quad.leftBottom.color.GetTint(out _uv2[_vertexNum + 2]); quad.rightBottom.color.GetTint(out _uv2[_vertexNum + 3]); _uv[_vertexNum] = quad.leftTop.texCoord; _uv[_vertexNum + 1] = quad.rightTop.texCoord; _uv[_vertexNum + 2] = quad.leftBottom.texCoord; _uv[_vertexNum + 3] = quad.rightBottom.texCoord; _indices[_indexNum] = _vertexNum; _indices[_indexNum + 1] = (_vertexNum + 1); _indices[_indexNum + 2] = (_vertexNum + 2); _indices[_indexNum + 3] = (_vertexNum + 1); _indices[_indexNum + 4] = (_vertexNum + 2); _indices[_indexNum + 5] = (_vertexNum + 3); _vertexNum += 4; _indexNum += 6; }
/// <summary> /// Adds quad to collection. /// </summary> public void Add(SpriteQuad spriteQuad) { EnsureSize(quadsCount + 1); quads[quadsCount] = spriteQuad; quadsCount += 1; }