private void EnsurePath(SubAtlas atlas, string[] s, int index) { PackageNames.Add(atlas.Parent.Container.DisplayName); var texturePackage = PackageManager.GetTexturePackageName(atlas.Parent.ReferencedTextureName); if (texturePackage != null) { TexturePackageNames.Add(texturePackage); } if (index == s.Length) { // Leaf node. if (Atlas == null || Atlas.Rect.Width < atlas.Rect.Width) { Atlas = atlas; } return; } // Branch node. var folderToFind = s[index]; if (!SubFolders.ContainsKey(folderToFind)) { AddDirectory(new TreeNode(folderToFind)); } SubFolders[folderToFind].EnsurePath(atlas, s, index + 1); }
private void GetViewing(out SubAtlas atlas, out TextureEntry entry) { atlas = null; entry = null; if (TreeView == null || TreeView.Selection == null) { return; } var rows = TreeView.Selection.GetSelectedRows(); if (rows.Length != 1) { return; } TreeIter iter; Model.GetIter(out iter, rows[0]); atlas = ((SubAtlas)Model.GetValue(iter, SUBATLAS_COLUMN)); if (atlas == null) { return; } // Get the texture that the sub atlas references. if (atlas.Parent.IsReference) { entry = PackageManager.GetTextureByName(atlas.Parent.ReferencedTextureName); } else { entry = atlas.Parent.IncludedTextureEntry; } }
public void EnsurePath(SubAtlas atlas) { EnsurePath(atlas, atlas.Name.Split(new char[] { '/', '\\' }), 0); }