Skip to content
This repository has been archived by the owner on Jan 4, 2023. It is now read-only.

Commit

Permalink
Coverted PixelData into a generic to prepare for a move to using byte…
Browse files Browse the repository at this point in the history
… instead of int.
  • Loading branch information
jessefreeman committed Jul 23, 2021
1 parent 6072039 commit 0068254
Show file tree
Hide file tree
Showing 24 changed files with 140 additions and 110 deletions.
16 changes: 12 additions & 4 deletions Build/Templates/runner-files.json
Expand Up @@ -105,7 +105,9 @@
"{0}/System.Windows.dll",
"{0}/System.Xml.ReaderWriter.dll",
"{0}/System.Xml.XDocument.dll",
"{0}/WindowsBase.dll"
"{0}/WindowsBase.dll",
"{0}/System.Reflection.Emit.ILGeneration.dll",
"{0}/System.Reflection.Emit.Lightweight.dll"
],
"win-x64" : [
"{0}/clrcompression.dll",
Expand Down Expand Up @@ -207,7 +209,9 @@
"{0}/System.Xml.XDocument.dll",
"{0}/WindowsBase.dll",
"{0}/SDL2.dll",
"{0}/soft_oal.dll"
"{0}/soft_oal.dll",
"{0}/System.Reflection.Emit.ILGeneration.dll",
"{0}/System.Reflection.Emit.Lightweight.dll"
],
"linux-x64" : [
"{0}/createdump",
Expand Down Expand Up @@ -314,7 +318,9 @@
"{0}/System.Windows.dll",
"{0}/System.Xml.ReaderWriter.dll",
"{0}/System.Xml.XDocument.dll",
"{0}/WindowsBase.dll"
"{0}/WindowsBase.dll",
"{0}/System.Reflection.Emit.ILGeneration.dll",
"{0}/System.Reflection.Emit.Lightweight.dll"
],
"linux-arm64" : [
"{0}/{1}.dll",
Expand Down Expand Up @@ -433,6 +439,8 @@
"./SDK/Player/Data/Rectangle.cs",
"./SDK/Runner/Utils/ColorUtils.Unity.cs",
"./SDK/Runner/Utils/ZipFileHelper.Unity.cs",
"./SDK/Runner/Data/DisplayTarget.Unity.cs"
"./SDK/Runner/Data/DisplayTarget.Unity.cs",
"./SDK/Runner/System.Reflection.Emit.ILGeneration.dll",
"./SDK/Runner/System.Reflection.Emit.Lightweight.dll"
]
}
2 changes: 1 addition & 1 deletion SDK/Editor/Exporters/FontExporter.cs
Expand Up @@ -39,7 +39,7 @@ public override void ConfigurePixelData()
var height = 64; //spriteChip.textureHeight;


var textureData = new PixelData(width, height);
var textureData = new PixelData<int>(width, height);

// var pixelData = new int[width * height];

Expand Down
4 changes: 2 additions & 2 deletions SDK/Editor/Services/GameDataExportService.cs
Expand Up @@ -64,7 +64,7 @@ public void ExportGame(string path, PixelVision engine, FileFlags fileFlags, boo
{
var fontChip = targetEngine.FontChip;
var spriteChip = targetEngine.SpriteChip;
var tmpTextureData = new PixelData(96, 64);
var tmpTextureData = new PixelData<int>(96, 64);

var fonts = fontChip.Fonts;

Expand All @@ -74,7 +74,7 @@ public void ExportGame(string path, PixelVision engine, FileFlags fileFlags, boo
var sprites = font.Value;

// Clear the texture
Utilities.Clear(tmpTextureData);
Utilities.Clear(tmpTextureData,Constants.EmptyPixel);
// tmpTextureData.Clear();

// Loop through all the characters and copy their texture data over
Expand Down
2 changes: 1 addition & 1 deletion SDK/Player/Chips/Game/GameChip.Draw.cs
Expand Up @@ -24,7 +24,7 @@ namespace PixelVision8.Player
{
public partial class GameChip
{
private PixelData _tmpPixelData = new PixelData();
private PixelData<int> _tmpPixelData = new PixelData<int>();
public int CurrentSprites => Player.SpriteCounter;

#region Display
Expand Down
12 changes: 6 additions & 6 deletions SDK/Player/Chips/Game/GameChip.Tilemaps.cs
Expand Up @@ -32,9 +32,9 @@ public struct TilemapData
private int _rows;
private int _total;

public PixelData SpriteIds;
public PixelData Flags;
public PixelData ColorOffset;
public PixelData<int> SpriteIds;
public PixelData<int> Flags;
public PixelData<int> ColorOffset;

public string Name;
public int Columns => _columns;
Expand All @@ -49,9 +49,9 @@ public TilemapData(string name, int columns = 32, int rows = 30)
_rows = rows;
_total = _columns * _rows;

SpriteIds = new PixelData(_columns, _rows, Enumerable.Repeat(-1, _total).ToArray());
Flags = new PixelData(_columns, _rows, Enumerable.Repeat(-1, _total).ToArray());
ColorOffset = new PixelData(_columns, _rows);
SpriteIds = new PixelData<int>(_columns, _rows, Enumerable.Repeat(-1, _total).ToArray());
Flags = new PixelData<int>(_columns, _rows, Enumerable.Repeat(-1, _total).ToArray());
ColorOffset = new PixelData<int>(_columns, _rows);

}

Expand Down
2 changes: 1 addition & 1 deletion SDK/Player/Chips/Graphics/DisplayChip.cs
Expand Up @@ -28,7 +28,7 @@ namespace PixelVision8.Player

public class DisplayChip : AbstractChip, IDraw
{
private readonly PixelData _display = new PixelData();
private readonly PixelData<int> _display = new PixelData<int>();
private readonly List<DrawRequest> _drawCalls = new List<DrawRequest>();
private int _clearColor = -1;
private bool _clearFlag = true;
Expand Down
6 changes: 3 additions & 3 deletions SDK/Player/Chips/Graphics/SpriteChip.cs
Expand Up @@ -59,7 +59,7 @@ public class SpriteChip : AbstractChip, IDisplay
/// </summary>
public int MaxSpriteCount { get; set; }

public PixelData PixelData => _spriteMemory.PixelData;
public PixelData<int> PixelData => _spriteMemory.PixelData;

/// <summary>
/// Return's the <see cref="Sprite" /> Ram's internal
Expand Down Expand Up @@ -181,7 +181,7 @@ public void ReadSpriteAt(int index, ref int[] pixelData)
else
{
// TODO need to remove the additional array copy from the Image to the Array
Array.Copy(Utilities.GetSpriteData(_spriteMemory.PixelData, index, ColorsPerSprite), pixelData, pixelData.Length);
Array.Copy(Utilities.GetSpriteData(_spriteMemory.PixelData, index), pixelData, pixelData.Length);
}
}

Expand Down Expand Up @@ -253,7 +253,7 @@ private void CacheSprite(int index, int[] data)
public int FindSprite(int[] pixels, bool emptyCheck = false)
{
if (emptyCheck)
if (Utilities.IsEmpty(pixels))
if (Utilities.IsEmpty(pixels, Constants.EmptyPixel))
return -1;

var sprite = SpriteDataToString(pixels);
Expand Down
8 changes: 4 additions & 4 deletions SDK/Player/Chips/Graphics/TilemapChip.cs
Expand Up @@ -52,9 +52,9 @@ public class TilemapChip : AbstractChip, IDisplay
/// </summary>
public int Total => Columns * Rows;

private readonly PixelData _tilemapCache = new PixelData();
private readonly PixelData<int> _tilemapCache = new PixelData<int>();

public PixelData PixelData
public PixelData<int> PixelData
{
get
{
Expand All @@ -65,7 +65,7 @@ public PixelData PixelData
}

private Rectangle _tileSize;
private PixelData _tmpPixelData;
private PixelData<int> _tmpPixelData;

/// <summary>
/// The width of the tile map by tiles.
Expand Down Expand Up @@ -198,7 +198,7 @@ protected override void Configure()

_tileSize = new Rectangle(0, 0, Constants.SpriteSize, Constants.SpriteSize);

_tmpPixelData = new PixelData(_tileSize.Width, _tileSize.Height);
_tmpPixelData = new PixelData<int>(_tileSize.Width, _tileSize.Height);

pixels = new int[Constants.SpriteSize * Constants.SpriteSize];

Expand Down
2 changes: 1 addition & 1 deletion SDK/Player/Data/Canvas/Canvas.FloodFill.cs
Expand Up @@ -134,7 +134,7 @@ public void FloodFillAction(CanvasDrawRequest request)
}
}

private void SetPatternPixel(PixelData currentTexture, int x, int y, int replacementColor)
private void SetPatternPixel(PixelData<int> currentTexture, int x, int y, int replacementColor)
{
// Console.WriteLine("{0},{1}", x, y);
replacementColor = GetPixel(pattern, x % pattern.Width, y % pattern.Height);
Expand Down
10 changes: 5 additions & 5 deletions SDK/Player/Data/Canvas/Canvas.Layers.cs
Expand Up @@ -22,9 +22,9 @@ namespace PixelVision8.Player
{
public sealed partial class Canvas
{
private readonly PixelData defaultLayer = new PixelData();
private readonly PixelData tmpLayer = new PixelData();
private PixelData currentTexture;
private readonly PixelData<int> defaultLayer = new PixelData<int>();
private readonly PixelData<int> tmpLayer = new PixelData<int>();
private PixelData<int> currentTexture;

private void ChangeTargetCanvas(int width, int height)
{
Expand All @@ -50,9 +50,9 @@ private void ChangeTargetCanvasAction(CanvasDrawRequest drawRequest)
currentTexture = tmpLayer;

if (drawRequest.Bounds.Width != currentTexture.Width || drawRequest.Bounds.Height != currentTexture.Height)
Utilities.Resize(currentTexture, drawRequest.Bounds.Width, drawRequest.Bounds.Height);
Utilities.Resize(currentTexture, drawRequest.Bounds.Width, drawRequest.Bounds.Height, Constants.EmptyPixel);
else
Utilities.Clear(currentTexture);
Utilities.Clear(currentTexture, Constants.EmptyPixel);
}

private void SaveTmpLayer(int x, int y, int blockWidth, int blockHeight)
Expand Down
2 changes: 1 addition & 1 deletion SDK/Player/Data/Canvas/Canvas.Merge.cs
Expand Up @@ -22,7 +22,7 @@ namespace PixelVision8.Player
{
public sealed partial class Canvas
{
private readonly PixelData _tmpPixelData = new PixelData();
private readonly PixelData<int> _tmpPixelData = new PixelData<int>();

/// <summary>
/// Allows you to merge the pixel data of another canvas into this one without compleatly overwritting it.
Expand Down
4 changes: 2 additions & 2 deletions SDK/Player/Data/Canvas/Canvas.Pattern.cs
Expand Up @@ -22,7 +22,7 @@ namespace PixelVision8.Player
{
public sealed partial class Canvas
{
private PixelData pattern = new PixelData();
private PixelData<int> pattern = new PixelData<int>();

public void SetPattern(int[] newPixels, int newWidth, int newHeight)
{
Expand All @@ -37,7 +37,7 @@ public void SetPattern(int[] newPixels, int newWidth, int newHeight)

if (newRequest.PixelData.Width != newWidth || newRequest.PixelData.Height != newHeight)
{
Utilities.Resize(newRequest.PixelData, newWidth, newHeight);
Utilities.Resize(newRequest.PixelData, newWidth, newHeight, Constants.EmptyPixel);
}

newRequest.PixelData.SetPixels(newPixels, newWidth, newHeight);
Expand Down
4 changes: 2 additions & 2 deletions SDK/Player/Data/Canvas/Canvas.Stroke.cs
Expand Up @@ -22,7 +22,7 @@ namespace PixelVision8.Player
{
public sealed partial class Canvas
{
private PixelData stroke = new PixelData();
private PixelData<int> stroke = new PixelData<int>();

public void SetStroke(int color, int size = 1)
{
Expand All @@ -37,7 +37,7 @@ public void SetStroke(int color, int size = 1)

if (newRequest.PixelData.Width != size || newRequest.PixelData.Height != size)
{
Utilities.Resize(newRequest.PixelData, size, size);
Utilities.Resize(newRequest.PixelData, size, size, Constants.EmptyPixel);
}

var newPixels = new int[size * size];
Expand Down
2 changes: 1 addition & 1 deletion SDK/Player/Data/Canvas/Canvas.Text.cs
Expand Up @@ -25,7 +25,7 @@ public void DrawText(string text, int x, int y, string font = "default", int col
// We need at least 1 pixel to save the sprite ID
if (newRequest.PixelData.Width != spriteSize.X || newRequest.PixelData.Height != spriteSize.Y)
{
Utilities.Resize(newRequest.PixelData, spriteSize.X, spriteSize.X);
Utilities.Resize(newRequest.PixelData, spriteSize.X, spriteSize.X, Constants.EmptyPixel);
}

// Copy over the pixel
Expand Down
6 changes: 3 additions & 3 deletions SDK/Player/Data/Canvas/Canvas.cs
Expand Up @@ -73,7 +73,7 @@ public void Resize(int newWidth, int newHeight, bool savePixels = false)
pixels = GetPixels(0, 0, sampleWidth, sampleHeight);
}

Utilities.Resize(defaultLayer, newWidth, newHeight);
Utilities.Resize(defaultLayer, newWidth, newHeight, Constants.EmptyPixel);

if(savePixels && pixels != null)
{
Expand Down Expand Up @@ -106,7 +106,7 @@ private void DrawPixelDataAction(CanvasDrawRequest request)
request.ColorOffset);
}

private int GetPixel(PixelData pixelData, int x, int y)
private int GetPixel(PixelData<int> pixelData, int x, int y)
{
// TODO this needs to be removed

Expand All @@ -118,7 +118,7 @@ private int GetPixel(PixelData pixelData, int x, int y)
return pixelData[x + pixelData.Width * y];
}

private void SetPixel(PixelData pixelData, int x, int y, int color)
private void SetPixel(PixelData<int> pixelData, int x, int y, int color)
{
// TODO this needs to be removed

Expand Down
2 changes: 1 addition & 1 deletion SDK/Player/Data/Canvas/CanvasDrawRequest.cs
Expand Up @@ -30,7 +30,7 @@ public class CanvasDrawRequest
public bool Fill;
public bool FlipH;
public bool FlipV;
public PixelData PixelData = new PixelData();
public PixelData<int> PixelData = new PixelData<int>();
public int X;
public int Y;
}
Expand Down
8 changes: 4 additions & 4 deletions SDK/Player/Data/DrawRequest.cs
Expand Up @@ -27,12 +27,12 @@ public interface IDisplay
/// TextureData. When requested, a clone of the <see cref="_texture" />
/// field is returned. This is expensive and only used for tools.
/// </summary>
PixelData PixelData { get; }
PixelData<int> PixelData { get; }
}

public struct DrawRequest
{
private PixelData _tmpPixelData;
private PixelData<int> _tmpPixelData;

public Rectangle SampleRect;
public bool FlipH;
Expand All @@ -43,7 +43,7 @@ public struct DrawRequest

public byte Priority;

public PixelData PixelData { get; private set; }
public PixelData<int> PixelData { get; private set; }

public void SampleFrom(IDisplay source, int srcX, int srcY, int blockWidth, int blockHeight)
{
Expand All @@ -57,7 +57,7 @@ public void SampleFrom(IDisplay source, int srcX, int srcY, int blockWidth, int

public void SampleFrom(int[] pixels, int srcX, int srcY, int blockWidth, int blockHeight)
{
_tmpPixelData ??= new PixelData(blockWidth, blockHeight);
_tmpPixelData ??= new PixelData<int>(blockWidth, blockHeight);

_tmpPixelData.SetPixels(pixels, blockWidth, blockHeight);

Expand Down
8 changes: 4 additions & 4 deletions SDK/Player/Data/ImageData.cs
Expand Up @@ -29,7 +29,7 @@ namespace PixelVision8.Player
/// </summary>
public struct ImageData
{
public PixelData PixelData { get; }
public PixelData<int> PixelData { get; }
public int Width => PixelData.Width;
public int Height => PixelData.Height;

Expand All @@ -44,10 +44,10 @@ public struct ImageData
public ImageData(int width, int height, int[] pixels = null, string[] colors = null)
{
// Create sprite friendly grid
PixelData = new PixelData(width, height);
PixelData = new PixelData<int>(width, height);

// Clear the pixel data with the default transparent color
Utilities.Clear(PixelData);
Utilities.Clear(PixelData, Constants.EmptyPixel);

// See if there are any pixels
if (pixels != null)
Expand All @@ -70,7 +70,7 @@ public ImageData(int width, int height, int[] pixels = null, string[] colors = n

public int[] GetPixels() => Utilities.GetPixels(PixelData);

public void Resize(int newWidth, int newHeight) => Utilities.Resize(PixelData, newWidth, newHeight);
public void Resize(int newWidth, int newHeight) => Utilities.Resize(PixelData, newWidth, newHeight, Constants.EmptyPixel);

public void Clear(int color = -1) => Utilities.Clear(PixelData, color);

Expand Down

0 comments on commit 0068254

Please sign in to comment.