using System;
using System.Collections.Generic;
using UnityEditor.Tilemaps;
namespace UnityEngine.Tilemaps
{
///
/// Template used to create an AutoTile from Texture2D and Sprites.
///
[HelpURL(
"https://docs.unity3d.com/Packages/com.unity.2d.tilemap.extras@latest/index.html?subfolder=/manual/AutoTile.html")]
public class AutoTileTemplate : TileTemplate
{
internal static string kExtension = "asset";
///
/// Positional Data for detecting AutoTile Sprites
///
[Serializable]
public struct SpriteData
{
///
/// x position on Texture2D.
///
public float x;
///
/// y position on Texture2D.
///
public float y;
///
/// Mask Rule for Sprite at position.
///
public uint mask;
}
///
/// Original Width of the Template
///
public int width;
///
/// Original Height of the Template
///
public int height;
///
/// Mask Type for generated AutoTIle
///
public AutoTile.AutoTileMaskType maskType;
///
/// Positional Data for detecting AutoTile Sprites
///
public List sprites;
///
/// Creates a List of TileBase Assets with an AutoTile from Texture2D
/// and Sprites with placement data onto a Tile Palette.
///
/// Texture2D to generate Tile Assets from.
/// Sprites to generate Tile Assets from.
/// AutoTile asset and placement data to generate.
public override void CreateTileAssets(
Texture2D texture2D
, IEnumerable sprites
, ref List tilesToAdd)
{
if (texture2D == null)
return;
var autoTile = ScriptableObject.CreateInstance();
autoTile.name = $"{texture2D.name} AutoTile";
this.ApplyTemplateToAutoTile(texture2D, sprites, autoTile);
var tileChangeData = new TileChangeData(
Vector3Int.zero
, autoTile
, Color.white
, Matrix4x4.identity
);
tilesToAdd.Add(tileChangeData);
}
}
}