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); } } }