public void RenameObjects_SpritesheetsWithPrefixedNumbers_Renames() { // Tests Issue #163: https://github.com/redbluegames/unity-mulligan-renamer/issues/163 // Arrange var spriteSheetConfig = new SpriteSheetGenerationConfig(2, "NumberedSprites.png"); spriteSheetConfig.NamePrefix = "0_NumberedSprites"; spriteSheetConfig.UseZeroBasedIndexing = true; var textureWithSprites = this.SetupSpriteSheet(spriteSheetConfig); var replaceStringOperation = new ReplaceStringOperation(); replaceStringOperation.SearchString = "Numbered"; replaceStringOperation.ReplacementString = string.Empty; var renameSequence = new RenameOperationSequence <IRenameOperation>(); renameSequence.Add(replaceStringOperation); var path = AssetDatabase.GetAssetPath(textureWithSprites); var allAssetsAtPath = AssetDatabase.LoadAllAssetsAtPath(path); var allSprites = new List <Object>(); foreach (var asset in allAssetsAtPath) { if (asset is Sprite) { allSprites.Add(asset); } } // Act var bulkRenamer = new BulkRenamer(renameSequence); bulkRenamer.RenameObjects(allSprites, true); // Assert var expectedNames = new List <string> { "0_Sprites0", "0_Sprites1", "0_Sprites2", "0_Sprites3", }; var resultingNames = new List <string>(); foreach (var sprite in allSprites) { resultingNames.Add(sprite.name); } // In order to not depend on how these sprites are Loaded, we check Contains instead of comparing // the lists directly Assert.That(resultingNames.Count, Is.EqualTo(expectedNames.Count)); foreach (var name in resultingNames) { Assert.That(expectedNames.Contains(name), "Expected names did not contain name: " + name); } }
public void RenameObjects_SpritesheetWithNamesThatWillOverlap_Renames() { // Tests Issue #126: https://github.com/redbluegames/unity-mulligan-renamer/issues/126 // Arrange var spriteSheetConfig = new SpriteSheetGenerationConfig(2, "Texture.png"); spriteSheetConfig.NamePrefix = "Texture_Sprite"; spriteSheetConfig.UseZeroBasedIndexing = true; var textureWithSprites = this.SetupSpriteSheet(spriteSheetConfig); var removeNumbersOp = new RemoveCharactersOperation(); removeNumbersOp.SetOptionPreset(RemoveCharactersOperation.PresetID.Numbers); var enumerateOp = new EnumerateOperation(); enumerateOp.StartingCount = 1; enumerateOp.Increment = 1; var renameSequence = new RenameOperationSequence <IRenameOperation>(); renameSequence.Add(removeNumbersOp); renameSequence.Add(enumerateOp); var path = AssetDatabase.GetAssetPath(textureWithSprites); var allAssetsAtPath = AssetDatabase.LoadAllAssetsAtPath(path); var allSprites = new List <Object>(); foreach (var asset in allAssetsAtPath) { if (asset is Sprite) { allSprites.Add(asset); } } // Act var bulkRenamer = new BulkRenamer(renameSequence); bulkRenamer.RenameObjects(allSprites, true); // Assert var expectedNames = new List <string> { "Texture_Sprite1", "Texture_Sprite2", "Texture_Sprite3", "Texture_Sprite4", }; var resultingNames = new List <string>(); foreach (var sprite in allSprites) { resultingNames.Add(sprite.name); } Assert.AreEqual(expectedNames, resultingNames); }
private Texture2D SetupSpriteSheet(SpriteSheetGenerationConfig config) { var cellSize = 32; var texture = new Texture2D( cellSize * config.CellsPerSide, cellSize * config.CellsPerSide, TextureFormat.ARGB32, false, true); var size = Vector2.one * cellSize * config.CellsPerSide; for (int x = 0; x < size.x; ++x) { for (int y = 0; y < size.y; ++y) { texture.SetPixel(x, y, Color.cyan); } } texture.Apply(); // Need to save the texture as an Asset and store a reference to the Asset var path = string.Concat(TestFixturesDirectory, config.TextureName); byte[] bytes = texture.EncodeToPNG(); System.IO.File.WriteAllBytes(path, bytes); AssetDatabase.ImportAsset(path); var textureWithSprites = AssetDatabase.LoadAssetAtPath <Texture2D>(path); var importer = (TextureImporter)TextureImporter.GetAtPath(path); importer.isReadable = true; importer.textureType = TextureImporterType.Sprite; importer.spriteImportMode = SpriteImportMode.Multiple; var spriteMetaData = new SpriteMetaData[config.CellsPerSide * config.CellsPerSide]; for (int i = 0; i < config.CellsPerSide; ++i) { for (int j = 0; j < config.CellsPerSide; ++j) { var cellIndex = i * config.CellsPerSide + j; var x = i * cellSize; var y = j * cellSize; spriteMetaData[cellIndex].rect = new Rect(x, y, cellSize, cellSize); var spriteCount = config.UseZeroBasedIndexing ? cellIndex : cellIndex + 1; var name = string.Concat(config.NamePrefix, spriteCount.ToString()); spriteMetaData[cellIndex].name = name; } } importer.spritesheet = spriteMetaData; importer.SaveAndReimport(); return(textureWithSprites); }
public void RenameObjects_SpritesheetsWithPrefixedNumbers_Renames() { // Tests Issue #163: https://github.com/redbluegames/unity-mulligan-renamer/issues/163 // Arrange var spriteSheetConfig = new SpriteSheetGenerationConfig(2, "NumberedSprites.png"); spriteSheetConfig.NamePrefix = "0_NumberedSprites"; spriteSheetConfig.UseZeroBasedIndexing = true; var textureWithSprites = this.SetupSpriteSheet(spriteSheetConfig); var replaceStringOperation = new ReplaceStringOperation(); replaceStringOperation.SearchString = "Numbered"; replaceStringOperation.ReplacementString = string.Empty; var renameSequence = new RenameOperationSequence <IRenameOperation>(); renameSequence.Add(replaceStringOperation); var path = AssetDatabase.GetAssetPath(textureWithSprites); var allAssetsAtPath = AssetDatabase.LoadAllAssetsAtPath(path); var allSprites = new List <Object>(); foreach (var asset in allAssetsAtPath) { if (asset is Sprite) { allSprites.Add(asset); } } // Act var bulkRenamer = new BulkRenamer(renameSequence); bulkRenamer.RenameObjects(allSprites, true); // Assert var expectedNames = new List <string> { "0_Sprites0", "0_Sprites1", "0_Sprites2", "0_Sprites3", }; var resultingNames = new List <string>(); foreach (var sprite in allSprites) { resultingNames.Add(sprite.name); } Assert.AreEqual(expectedNames, resultingNames); }
public void RenameObjects_Spritesheet_Renames() { // Arrange var spriteSheetConfig = new SpriteSheetGenerationConfig(2, "Texture.png"); spriteSheetConfig.NamePrefix = "Texture_Sprite"; var textureWithSprites = this.SetupSpriteSheet(spriteSheetConfig); var replaceNameOp = new ReplaceNameOperation(); replaceNameOp.NewName = "NewSprite"; var enumerateOp = new EnumerateOperation(); enumerateOp.StartingCount = 1; var renameSequence = new RenameOperationSequence <IRenameOperation>(); renameSequence.Add(replaceNameOp); renameSequence.Add(enumerateOp); var path = AssetDatabase.GetAssetPath(textureWithSprites); var allAssetsAtPath = AssetDatabase.LoadAllAssetsAtPath(path); var allSprites = new List <Object>(); foreach (var asset in allAssetsAtPath) { if (asset is Sprite) { allSprites.Add(asset); } } var bulkRenamer = new BulkRenamer(renameSequence); bulkRenamer.RenameObjects(allSprites, true); var expectedNames = new List <string> { "NewSprite1", "NewSprite2", "NewSprite3", "NewSprite4" }; var resultingNames = new List <string>(); foreach (var sprite in allSprites) { resultingNames.Add(sprite.name); } Assert.AreEqual(expectedNames, resultingNames); }
public void RenameObjects_SpriteAndTexture_Renames() { // Tests Issue #139: https://github.com/redbluegames/unity-mulligan-renamer/issues/139 // Arrange var spriteSheetConfig = new SpriteSheetGenerationConfig(1, "Texture.png"); spriteSheetConfig.NamePrefix = "Texture_Sprite"; var textureWithSprites = this.SetupSpriteSheet(spriteSheetConfig); var replaceNameOp = new ReplaceStringOperation(); replaceNameOp.SearchString = "Texture"; replaceNameOp.ReplacementString = "Cool"; var renameSequence = new RenameOperationSequence <IRenameOperation>(); renameSequence.Add(replaceNameOp); var path = AssetDatabase.GetAssetPath(textureWithSprites); var allAssetsAtPath = AssetDatabase.LoadAllAssetsAtPath(path); // Act var bulkRenamer = new BulkRenamer(renameSequence); bulkRenamer.RenameObjects(new List <Object>(allAssetsAtPath), true); // Assert var resultingNames = new List <string>(); foreach (var asset in allAssetsAtPath) { resultingNames.Add(asset.name); } var expectedNames = new List <string> { "Cool", "Cool_Sprite1", }; Assert.AreEqual(expectedNames, resultingNames); }
public void RenameObjects_SpritesheetWithTargetNameAsSubstringInMultipleSprites_Renames() { // Tests Issue #143: https://github.com/redbluegames/unity-mulligan-renamer/issues/143 // Arrange var spriteSheetConfig = new SpriteSheetGenerationConfig(4, "Texture.png"); spriteSheetConfig.NamePrefix = "Texture_Sprite"; var textureWithSprites = this.SetupSpriteSheet(spriteSheetConfig); var replaceNameOp = new ReplaceStringOperation(); replaceNameOp.SearchString = "Texture_Sprite1"; replaceNameOp.ReplacementString = "CoolSprite"; var renameSequence = new RenameOperationSequence <IRenameOperation>(); renameSequence.Add(replaceNameOp); var path = AssetDatabase.GetAssetPath(textureWithSprites); var allAssetsAtPath = AssetDatabase.LoadAllAssetsAtPath(path); var allSprites = new List <Object>(); foreach (var asset in allAssetsAtPath) { if (asset is Sprite) { allSprites.Add(asset); } } // Act var bulkRenamer = new BulkRenamer(renameSequence); bulkRenamer.RenameObjects(new List <Object>() { allSprites[0] }, true); // Assert var expectedNames = new List <string> { "CoolSprite", "Texture_Sprite2", "Texture_Sprite3", "Texture_Sprite4", "Texture_Sprite5", "Texture_Sprite6", "Texture_Sprite7", "Texture_Sprite8", "Texture_Sprite9", "Texture_Sprite10", "Texture_Sprite11", "Texture_Sprite12", "Texture_Sprite13", "Texture_Sprite14", "Texture_Sprite15", "Texture_Sprite16", }; var resultingNames = new List <string>(); foreach (var sprite in allSprites) { resultingNames.Add(sprite.name); } Assert.AreEqual(expectedNames, resultingNames); }
public void RenameObjects_SpritesheetWithTargetNameAsSubstringInMultipleSprites_Renames() { // Tests Issue #143: https://github.com/redbluegames/unity-mulligan-renamer/issues/143 // Arrange var spriteSheetConfig = new SpriteSheetGenerationConfig(4, "Texture.png"); var targetSpriteName = "Texture_Sprite1"; spriteSheetConfig.NamePrefix = "Texture_Sprite"; var textureWithSprites = this.SetupSpriteSheet(spriteSheetConfig); var replaceNameOp = new ReplaceStringOperation(); replaceNameOp.SearchString = targetSpriteName; replaceNameOp.ReplacementString = "CoolSprite"; var renameSequence = new RenameOperationSequence <IRenameOperation>(); renameSequence.Add(replaceNameOp); var path = AssetDatabase.GetAssetPath(textureWithSprites); var allAssetsAtPath = AssetDatabase.LoadAllAssetsAtPath(path); var allSprites = new List <Object>(); Object targetSprite = null; foreach (var asset in allAssetsAtPath) { if (asset is Sprite) { allSprites.Add(asset); if (asset.name == targetSpriteName) { targetSprite = asset; } } } // Act var bulkRenamer = new BulkRenamer(renameSequence); bulkRenamer.RenameObjects(new List <Object>() { targetSprite }, true); // Assert var expectedNames = new List <string> { "CoolSprite", "Texture_Sprite2", "Texture_Sprite3", "Texture_Sprite4", "Texture_Sprite5", "Texture_Sprite6", "Texture_Sprite7", "Texture_Sprite8", "Texture_Sprite9", "Texture_Sprite10", "Texture_Sprite11", "Texture_Sprite12", "Texture_Sprite13", "Texture_Sprite14", "Texture_Sprite15", "Texture_Sprite16", }; var resultingNames = new List <string>(); foreach (var sprite in allSprites) { resultingNames.Add(sprite.name); } // In order to not depend on how these sprites are Loaded, we check Contains instead of comparing // the lists directly Assert.That(resultingNames.Count, Is.EqualTo(expectedNames.Count)); foreach (var name in resultingNames) { Assert.That(expectedNames.Contains(name), "Expected names did not contain name: " + name); } }