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);
            }
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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);
            }
        }