// [UNITY-SKILL:SPRITEATLAS]
using UnityEditor.U2D;
using UnityEngine;
using Unity.Collections;
///
/// Simple grid-based sprite packer that arranges sprites in a uniform grid pattern.
/// Sprites are placed row by row from left to right, top to bottom.
///
public class GridSpritePacker : ScriptablePacker
{
/// Number of columns in the grid
public int columns = 4;
/// Size of each cell in pixels (assumed square)
public int cellSize = 256;
/// Padding between sprites in pixels
public int padding = 2;
///
/// Packs sprites in a grid pattern.
/// Sprite at index i is placed at column (i % columns) and row (i / columns).
///
public override bool Pack(SpriteAtlasPackingSettings config,
SpriteAtlasTextureSettings setting,
PackerData input)
{
NativeArray sprites = input.spriteData;
for (int i = 0; i < sprites.Length; i++)
{
SpriteData sprite = sprites[i];
// Calculate grid position
int col = i % columns;
int row = i / columns;
// Set output position with padding
sprite.output.x = col * (cellSize + padding) + padding;
sprite.output.y = row * (cellSize + padding) + padding;
sprite.output.page = 0; // Single page
sprite.output.rot = PackTransform.None;
sprites[i] = sprite;
}
return true;
}
}