// Try to generate a spritesheet object from the given object, which is expected to be a multi-sprite texture. // Return true iff generation is successful. protected static bool try_generate_spritesheet(Object obj) { Debug.Log("Generating a spritesheet for: " + obj); string path = AssetDatabase.GetAssetPath(obj); if (path.Length <= 0 || !File.Exists(path)) { Debug.LogWarning("Invalid path for asset"); return(false); } Object[] sprites = AssetDatabase.LoadAllAssetsAtPath(path); IOrderedEnumerable <Object> ordered_sprites = sprites.OrderBy(sprite => sprite.name); spritesheet new_spritesheet = ScriptableObject.CreateInstance <spritesheet>(); new_spritesheet.sprites = new List <Sprite>(); foreach (Object sprite in ordered_sprites) { if (sprite is Sprite) { new_spritesheet.sprites.Add((Sprite)sprite); } } string new_path = save_util.remove_extension(path) + ".asset"; AssetDatabase.CreateAsset(new_spritesheet, new_path); return(true); }
// Try to generate a spritesheet object from the given object, which is expected to be a multi-sprite texture. // Return true iff generation is successful. protected static bool try_generate_spritesheet(Object obj) { Debug.Log("Generating a spritesheet for: " + obj); string path = AssetDatabase.GetAssetPath(obj); if (path.Length <= 0 || !File.Exists(path)) { Debug.LogWarning("Invalid path for asset"); return(false); } Object[] sprites = AssetDatabase.LoadAllAssetsAtPath(path); // Alphanumeric sorting fix! //IOrderedEnumerable<Object> ordered_sprites = sprites.OrderBy(sprite => sprite.name); IOrderedEnumerable <Object> ordered_sprites = sprites.OrderBy(sprite => string_util.PadNumbers(sprite.name)); // Try to find an existing asset for this spritesheet, and repopulate it. // Otherwise, generate a new spritesheet asset. string new_path = save_util.remove_extension(path) + ".asset"; spritesheet spritesheet_found = AssetDatabase.LoadAssetAtPath <spritesheet>(new_path); if (spritesheet_found != null) { spritesheet_found.sprites.Clear(); foreach (Object sprite in ordered_sprites) { if (sprite is Sprite) { spritesheet_found.sprites.Add((Sprite)sprite); } } AssetDatabase.SaveAssets(); Debug.Log("Spritesheet for: " + obj + " successfully saved to existing asset at: " + new_path); } else { spritesheet new_spritesheet = ScriptableObject.CreateInstance <spritesheet>(); new_spritesheet.sprites = new List <Sprite>(); foreach (Object sprite in ordered_sprites) { if (sprite is Sprite) { new_spritesheet.sprites.Add((Sprite)sprite); } } AssetDatabase.CreateAsset(new_spritesheet, new_path); Debug.Log("Spritesheet for: " + obj + " successfully saved to new asset at: " + new_path); } return(true); }
public override void refresh_sprite() { if (0 <= animation_index && animation_index < anim_Palettes_Bundle.sets.Count) { anim_palettes_set set = anim_Palettes_Bundle.sets[animation_index]; if (0 <= palette_index && palette_index < set.palettes.Count) { spritesheet sheet = set.palettes[palette_index]; if (0 <= sprite_index && sprite_index < sheet.sprites.Count) { image.sprite = sheet.sprites[sprite_index]; } } } }
public virtual void refresh_sprite() { if (sprite_renderer == null) { return; } if (0 <= palette_index && palette_index < anim_Palettes_Bundle.sets.Count) { anim_palettes_set set = anim_Palettes_Bundle.sets[palette_index]; if (0 <= animation_index && animation_index < set.palettes.Count) { spritesheet sheet = set.palettes[animation_index]; if (0 <= sprite_index && sprite_index < sheet.sprites.Count) { sprite_renderer.sprite = sheet.sprites[sprite_index]; } } } }