Made Sheet.Texture into Sheet.GetTexture() since we will want to call it for side-effects.
Do the same for Sheet.Data since it has the side effect of generating a buffer.
This commit is contained in:
committed by
RoosterDragon
parent
ff16690b86
commit
a6f5a21ed4
@@ -25,9 +25,7 @@ namespace OpenRA.Graphics
|
||||
byte[] data;
|
||||
|
||||
public readonly Size Size;
|
||||
public byte[] Data
|
||||
{
|
||||
get
|
||||
public byte[] GetData()
|
||||
{
|
||||
if (data != null)
|
||||
return data;
|
||||
@@ -38,7 +36,6 @@ namespace OpenRA.Graphics
|
||||
releaseBufferOnCommit = false;
|
||||
return data;
|
||||
}
|
||||
}
|
||||
public bool Buffered { get { return data != null || texture == null; } }
|
||||
|
||||
public Sheet(Size size)
|
||||
@@ -72,16 +69,13 @@ namespace OpenRA.Graphics
|
||||
ReleaseBuffer();
|
||||
}
|
||||
|
||||
public ITexture Texture
|
||||
public ITexture GetTexture()
|
||||
{
|
||||
// This is only called from the main thread but 'dirty'
|
||||
// is set from other threads too via CommitData().
|
||||
get
|
||||
{
|
||||
GenerateTexture();
|
||||
return texture;
|
||||
}
|
||||
}
|
||||
|
||||
void GenerateTexture()
|
||||
{
|
||||
@@ -108,7 +102,7 @@ namespace OpenRA.Graphics
|
||||
|
||||
public Bitmap AsBitmap()
|
||||
{
|
||||
var d = Data;
|
||||
var d = GetData();
|
||||
var dataStride = 4 * Size.Width;
|
||||
var bitmap = new Bitmap(Size.Width, Size.Height);
|
||||
|
||||
@@ -123,7 +117,7 @@ namespace OpenRA.Graphics
|
||||
|
||||
public Bitmap AsBitmap(TextureChannel channel, IPalette pal)
|
||||
{
|
||||
var d = Data;
|
||||
var d = GetData();
|
||||
var dataStride = 4 * Size.Width;
|
||||
var bitmap = new Bitmap(Size.Width, Size.Height);
|
||||
var channelOffset = (int)channel;
|
||||
|
||||
@@ -118,7 +118,7 @@ namespace OpenRA.Graphics
|
||||
unsafe
|
||||
{
|
||||
var p = (byte*)bitmap.Buffer;
|
||||
var dest = s.sheet.Data;
|
||||
var dest = s.sheet.GetData();
|
||||
var destStride = s.sheet.Size.Width * 4;
|
||||
|
||||
for (var j = 0; j < s.size.Y; j++)
|
||||
|
||||
@@ -32,7 +32,7 @@ namespace OpenRA.Graphics
|
||||
{
|
||||
if (nv > 0)
|
||||
{
|
||||
shader.SetTexture("DiffuseTexture", currentSheet.Texture);
|
||||
shader.SetTexture("DiffuseTexture", currentSheet.GetTexture());
|
||||
|
||||
renderer.Device.SetBlendMode(currentBlend);
|
||||
shader.Render(() =>
|
||||
@@ -109,7 +109,7 @@ namespace OpenRA.Graphics
|
||||
|
||||
public void DrawVertexBuffer(IVertexBuffer<Vertex> buffer, int start, int length, PrimitiveType type, Sheet sheet)
|
||||
{
|
||||
shader.SetTexture("DiffuseTexture", sheet.Texture);
|
||||
shader.SetTexture("DiffuseTexture", sheet.GetTexture());
|
||||
renderer.Device.SetBlendMode(BlendMode.Alpha);
|
||||
shader.Render(() => renderer.DrawBatch(buffer, start, length, type));
|
||||
renderer.Device.SetBlendMode(BlendMode.None);
|
||||
|
||||
@@ -43,7 +43,7 @@ namespace OpenRA.Graphics
|
||||
public static void FastCopyIntoChannel(Sprite dest, byte[] src) { FastCopyIntoChannel(dest, 0, src); }
|
||||
public static void FastCopyIntoChannel(Sprite dest, int channelOffset, byte[] src)
|
||||
{
|
||||
var data = dest.sheet.Data;
|
||||
var data = dest.sheet.GetData();
|
||||
var srcStride = dest.bounds.Width;
|
||||
var destStride = dest.sheet.Size.Width * 4;
|
||||
var destOffset = destStride * dest.bounds.Top + dest.bounds.Left * 4 + channelMasks[(int)dest.channel + channelOffset];
|
||||
@@ -64,7 +64,7 @@ namespace OpenRA.Graphics
|
||||
|
||||
public static void FastCopyIntoSprite(Sprite dest, Bitmap src)
|
||||
{
|
||||
var data = dest.sheet.Data;
|
||||
var data = dest.sheet.GetData();
|
||||
var dataStride = dest.sheet.Size.Width * 4;
|
||||
var x = dest.bounds.Left * 4;
|
||||
var width = dest.bounds.Width * 4;
|
||||
|
||||
@@ -257,7 +257,7 @@ namespace OpenRA.Graphics
|
||||
float[] ambientLight, float[] diffuseLight,
|
||||
int colorPalette, int normalsPalette)
|
||||
{
|
||||
shader.SetTexture("DiffuseTexture", renderData.Sheet.Texture);
|
||||
shader.SetTexture("DiffuseTexture", renderData.Sheet.GetTexture());
|
||||
shader.SetVec("PaletteRows", (colorPalette + 0.5f) / HardwarePalette.MaxPalettes,
|
||||
(normalsPalette + 0.5f) / HardwarePalette.MaxPalettes);
|
||||
shader.SetMatrix("TransformMatrix", t);
|
||||
|
||||
@@ -63,8 +63,8 @@ namespace OpenRA.Widgets
|
||||
var textureSize = Exts.NextPowerOf2(size);
|
||||
var videoSheet = new Sheet(new Size(textureSize, textureSize));
|
||||
|
||||
videoSheet.Texture.ScaleFilter = TextureScaleFilter.Linear;
|
||||
videoSheet.Texture.SetData(video.FrameData);
|
||||
videoSheet.GetTexture().ScaleFilter = TextureScaleFilter.Linear;
|
||||
videoSheet.GetTexture().SetData(video.FrameData);
|
||||
|
||||
videoSprite = new Sprite(videoSheet,
|
||||
new Rectangle(
|
||||
@@ -90,7 +90,7 @@ namespace OpenRA.Widgets
|
||||
overlay[y, 0] = black;
|
||||
|
||||
var overlaySheet = new Sheet(new Size(1, Exts.NextPowerOf2(scaledHeight)));
|
||||
overlaySheet.Texture.SetData(overlay);
|
||||
overlaySheet.GetTexture().SetData(overlay);
|
||||
overlaySprite = new Sprite(overlaySheet, new Rectangle(0, 0, 1, scaledHeight), TextureChannel.Alpha);
|
||||
}
|
||||
|
||||
@@ -117,7 +117,7 @@ namespace OpenRA.Widgets
|
||||
while (nextFrame > video.CurrentFrame)
|
||||
{
|
||||
video.AdvanceFrame();
|
||||
videoSprite.sheet.Texture.SetData(video.FrameData);
|
||||
videoSprite.sheet.GetTexture().SetData(video.FrameData);
|
||||
skippedFrames++;
|
||||
}
|
||||
|
||||
@@ -185,7 +185,7 @@ namespace OpenRA.Widgets
|
||||
paused = true;
|
||||
Sound.StopVideo();
|
||||
video.Reset();
|
||||
videoSprite.sheet.Texture.SetData(video.FrameData);
|
||||
videoSprite.sheet.GetTexture().SetData(video.FrameData);
|
||||
world.AddFrameEndTask(_ => onComplete());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -52,7 +52,7 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
|
||||
var rect = new Rectangle((int)(255*SRange[0]), (int)(255*(1 - VRange[1])), (int)(255*(SRange[1] - SRange[0]))+1, (int)(255*(VRange[1] - VRange[0])) + 1);
|
||||
var mixerSheet = new Sheet(new Size(256, 256));
|
||||
mixerSheet.Texture.SetData(front, 256, 256);
|
||||
mixerSheet.GetTexture().SetData(front, 256, 256);
|
||||
mixerSprite = new Sprite(mixerSheet, rect, TextureChannel.Alpha);
|
||||
}
|
||||
|
||||
@@ -123,7 +123,7 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
{
|
||||
try
|
||||
{
|
||||
mixerSprite.sheet.Texture.SetData(front, 256, 256);
|
||||
mixerSprite.sheet.GetTexture().SetData(front, 256, 256);
|
||||
}
|
||||
finally
|
||||
{
|
||||
|
||||
@@ -40,7 +40,7 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
*(c + h) = HSLColor.FromHSV(h / 255f, 1, 1).RGB.ToArgb();
|
||||
}
|
||||
hueBitmap.UnlockBits(bitmapData);
|
||||
hueSheet.Texture.SetData(hueBitmap);
|
||||
hueSheet.GetTexture().SetData(hueBitmap);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -74,7 +74,7 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
var r = new Rectangle(0, 0, width, height);
|
||||
var s = new Size(terrainBitmap.Width, terrainBitmap.Height);
|
||||
var terrainSheet = new Sheet(s);
|
||||
terrainSheet.Texture.SetData(terrainBitmap);
|
||||
terrainSheet.GetTexture().SetData(terrainBitmap);
|
||||
terrainSprite = new Sprite(terrainSheet, r, TextureChannel.Alpha);
|
||||
|
||||
// Data is set in Tick()
|
||||
@@ -203,16 +203,16 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
{
|
||||
updateTicks = 12;
|
||||
using (var bitmap = Minimap.CustomTerrainBitmap(world))
|
||||
customTerrainSprite.sheet.Texture.SetData(bitmap);
|
||||
customTerrainSprite.sheet.GetTexture().SetData(bitmap);
|
||||
}
|
||||
|
||||
if (updateTicks == 8)
|
||||
using (var bitmap = Minimap.ActorsBitmap(world))
|
||||
actorSprite.sheet.Texture.SetData(bitmap);
|
||||
actorSprite.sheet.GetTexture().SetData(bitmap);
|
||||
|
||||
if (updateTicks == 4)
|
||||
using (var bitmap = Minimap.ShroudBitmap(world))
|
||||
shroudSprite.sheet.Texture.SetData(bitmap);
|
||||
shroudSprite.sheet.GetTexture().SetData(bitmap);
|
||||
|
||||
// Enable/Disable the radar
|
||||
var enabled = IsEnabled();
|
||||
|
||||
Reference in New Issue
Block a user