Changed Vertex constructors to pass more parameters as plain floats.
This avoids callers having to construct a float2 struct, only to have the Vertex constructor unwrap it into individual components again.
This commit is contained in:
@@ -77,12 +77,12 @@ namespace OpenRA.Graphics
|
|||||||
Flush();
|
Flush();
|
||||||
|
|
||||||
vertices[nv++] = new Vertex(start + offset,
|
vertices[nv++] = new Vertex(start + offset,
|
||||||
new float2(startColor.R / 255.0f, startColor.G / 255.0f),
|
startColor.R / 255.0f, startColor.G / 255.0f,
|
||||||
new float2(startColor.B / 255.0f, startColor.A / 255.0f));
|
startColor.B / 255.0f, startColor.A / 255.0f);
|
||||||
|
|
||||||
vertices[nv++] = new Vertex(end + offset,
|
vertices[nv++] = new Vertex(end + offset,
|
||||||
new float2(endColor.R / 255.0f, endColor.G / 255.0f),
|
endColor.R / 255.0f, endColor.G / 255.0f,
|
||||||
new float2(endColor.B / 255.0f, endColor.A / 255.0f));
|
endColor.B / 255.0f, endColor.A / 255.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void FillRect(RectangleF r, Color color)
|
public void FillRect(RectangleF r, Color color)
|
||||||
|
|||||||
@@ -43,17 +43,21 @@ namespace OpenRA.Graphics
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void FillRect(RectangleF r, Color color)
|
public void FillRect(RectangleF rect, Color color)
|
||||||
{
|
{
|
||||||
Renderer.CurrentBatchRenderer = this;
|
Renderer.CurrentBatchRenderer = this;
|
||||||
|
|
||||||
if (nv + 4 > Renderer.TempBufferSize)
|
if (nv + 4 > Renderer.TempBufferSize)
|
||||||
Flush();
|
Flush();
|
||||||
|
|
||||||
vertices[nv] = new Vertex(new float2(r.Left, r.Top), new float2(color.R / 255.0f, color.G / 255.0f), new float2(color.B / 255.0f, color.A / 255.0f));
|
var r = color.R / 255.0f;
|
||||||
vertices[nv + 1] = new Vertex(new float2(r.Right, r.Top), new float2(color.R / 255.0f, color.G / 255.0f), new float2(color.B / 255.0f, color.A / 255.0f));
|
var g = color.G / 255.0f;
|
||||||
vertices[nv + 2] = new Vertex(new float2(r.Right, r.Bottom), new float2(color.R / 255.0f, color.G / 255.0f), new float2(color.B / 255.0f, color.A / 255.0f));
|
var b = color.B / 255.0f;
|
||||||
vertices[nv + 3] = new Vertex(new float2(r.Left, r.Bottom), new float2(color.R / 255.0f, color.G / 255.0f), new float2(color.B / 255.0f, color.A / 255.0f));
|
var a = color.A / 255.0f;
|
||||||
|
vertices[nv] = new Vertex(new float2(rect.Left, rect.Top), r, g, b, a);
|
||||||
|
vertices[nv + 1] = new Vertex(new float2(rect.Right, rect.Top), r, g, b, a);
|
||||||
|
vertices[nv + 2] = new Vertex(new float2(rect.Right, rect.Bottom), r, g, b, a);
|
||||||
|
vertices[nv + 3] = new Vertex(new float2(rect.Left, rect.Bottom), r, g, b, a);
|
||||||
|
|
||||||
nv += 4;
|
nv += 4;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ namespace OpenRA.Graphics
|
|||||||
public readonly float2 size;
|
public readonly float2 size;
|
||||||
public readonly float2 offset;
|
public readonly float2 offset;
|
||||||
public readonly float2 fractionalOffset;
|
public readonly float2 fractionalOffset;
|
||||||
readonly float top, left, bottom, right;
|
public readonly float top, left, bottom, right;
|
||||||
|
|
||||||
public Sprite(Sheet sheet, Rectangle bounds, TextureChannel channel)
|
public Sprite(Sheet sheet, Rectangle bounds, TextureChannel channel)
|
||||||
: this(sheet, bounds, float2.Zero, channel, BlendMode.Alpha) {}
|
: this(sheet, bounds, float2.Zero, channel, BlendMode.Alpha) {}
|
||||||
@@ -45,26 +45,6 @@ namespace OpenRA.Graphics
|
|||||||
right = (float)(bounds.Right) / sheet.Size.Width;
|
right = (float)(bounds.Right) / sheet.Size.Width;
|
||||||
bottom = (float)(bounds.Bottom) / sheet.Size.Height;
|
bottom = (float)(bounds.Bottom) / sheet.Size.Height;
|
||||||
}
|
}
|
||||||
|
|
||||||
public float2 TopLeftTextureCoords
|
|
||||||
{
|
|
||||||
get { return new float2(left, top); }
|
|
||||||
}
|
|
||||||
|
|
||||||
public float2 TopRightTextureCoords
|
|
||||||
{
|
|
||||||
get { return new float2(right, top); }
|
|
||||||
}
|
|
||||||
|
|
||||||
public float2 BottomLeftTextureCoords
|
|
||||||
{
|
|
||||||
get { return new float2(left, bottom); }
|
|
||||||
}
|
|
||||||
|
|
||||||
public float2 BottomRightTextureCoords
|
|
||||||
{
|
|
||||||
get { return new float2(right, bottom); }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum TextureChannel
|
public enum TextureChannel
|
||||||
|
|||||||
@@ -29,12 +29,13 @@ namespace OpenRA.Graphics
|
|||||||
|
|
||||||
public static void FastCreateQuad(Vertex[] vertices, float2 a, float2 b, float2 c, float2 d, Sprite r, int palette, int nv)
|
public static void FastCreateQuad(Vertex[] vertices, float2 a, float2 b, float2 c, float2 d, Sprite r, int palette, int nv)
|
||||||
{
|
{
|
||||||
var attrib = new float2(palette / (float)HardwarePalette.MaxPalettes, channelSelect[(int)r.channel]);
|
var attribP = palette / (float)HardwarePalette.MaxPalettes;
|
||||||
|
var attribC = channelSelect[(int)r.channel];
|
||||||
|
|
||||||
vertices[nv] = new Vertex(a, r.TopLeftTextureCoords, attrib);
|
vertices[nv] = new Vertex(a, r.left, r.top, attribP, attribC);
|
||||||
vertices[nv + 1] = new Vertex(b, r.TopRightTextureCoords, attrib);
|
vertices[nv + 1] = new Vertex(b, r.right, r.top, attribP, attribC);
|
||||||
vertices[nv + 2] = new Vertex(c, r.BottomRightTextureCoords, attrib);
|
vertices[nv + 2] = new Vertex(c, r.right, r.bottom, attribP, attribC);
|
||||||
vertices[nv + 3] = new Vertex(d, r.BottomLeftTextureCoords, attrib);
|
vertices[nv + 3] = new Vertex(d, r.left, r.bottom, attribP, attribC);
|
||||||
}
|
}
|
||||||
|
|
||||||
static readonly int[] channelMasks = { 2, 1, 0, 3 }; // yes, our channel order is nuts.
|
static readonly int[] channelMasks = { 2, 1, 0, 3 }; // yes, our channel order is nuts.
|
||||||
|
|||||||
@@ -18,18 +18,18 @@ namespace OpenRA.Graphics
|
|||||||
public float x, y, z, u, v;
|
public float x, y, z, u, v;
|
||||||
public float p, c;
|
public float p, c;
|
||||||
|
|
||||||
public Vertex(float2 xy, float2 uv, float2 pc)
|
public Vertex(float2 xy, float u, float v, float p, float c)
|
||||||
{
|
{
|
||||||
this.x = xy.X; this.y = xy.Y; this.z = 0;
|
this.x = xy.X; this.y = xy.Y; this.z = 0;
|
||||||
this.u = uv.X; this.v = uv.Y;
|
this.u = u; this.v = v;
|
||||||
this.p = pc.X; this.c = pc.Y;
|
this.p = p; this.c = c;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Vertex(float[] xyz, float2 uv, float2 pc)
|
public Vertex(float[] xyz, float u, float v, float p, float c)
|
||||||
{
|
{
|
||||||
this.x = xyz[0]; this.y = xyz[1]; this.z = xyz[2];
|
this.x = xyz[0]; this.y = xyz[1]; this.z = xyz[2];
|
||||||
this.u = uv.X; this.v = uv.Y;
|
this.u = u; this.v = v;
|
||||||
this.p = pc.X; this.c = pc.Y;
|
this.p = p; this.c = c;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -87,13 +87,14 @@ namespace OpenRA.Graphics
|
|||||||
Util.FastCopyIntoChannel(s, 1, normals);
|
Util.FastCopyIntoChannel(s, 1, normals);
|
||||||
s.sheet.CommitData();
|
s.sheet.CommitData();
|
||||||
|
|
||||||
var channels = new float2(channelSelect[(int)s.channel], channelSelect[(int)s.channel + 1]);
|
var channelP =channelSelect[(int)s.channel];
|
||||||
|
var channelC = channelSelect[(int)s.channel + 1];
|
||||||
return new Vertex[4]
|
return new Vertex[4]
|
||||||
{
|
{
|
||||||
new Vertex(coord(0, 0), s.TopLeftTextureCoords, channels),
|
new Vertex(coord(0, 0), s.left, s.top, channelP, channelC),
|
||||||
new Vertex(coord(su, 0), s.TopRightTextureCoords, channels),
|
new Vertex(coord(su, 0),s.right, s.top, channelP, channelC),
|
||||||
new Vertex(coord(su, sv), s.BottomRightTextureCoords, channels),
|
new Vertex(coord(su, sv), s.right, s.bottom, channelP, channelC),
|
||||||
new Vertex(coord(0, sv), s.BottomLeftTextureCoords, channels)
|
new Vertex(coord(0, sv), s.left, s.bottom, channelP, channelC)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user