diff --git a/AssetStudioGUI/AssetStudioGUIForm.Designer.cs b/AssetStudioGUI/AssetStudioGUIForm.Designer.cs
index 3d91ffd..0752b33 100644
--- a/AssetStudioGUI/AssetStudioGUIForm.Designer.cs
+++ b/AssetStudioGUI/AssetStudioGUIForm.Designer.cs
@@ -125,6 +125,8 @@
this.statusStrip1 = new System.Windows.Forms.StatusStrip();
this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel();
this.contextMenuStrip2 = new System.Windows.Forms.ContextMenuStrip(this.components);
+ this.showRelatedAssetsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.toolStripSeparator7 = new System.Windows.Forms.ToolStripSeparator();
this.selectAllToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.clearSelectionToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator();
@@ -526,7 +528,7 @@
this.allToolStripMenuItem.CheckOnClick = true;
this.allToolStripMenuItem.CheckState = System.Windows.Forms.CheckState.Checked;
this.allToolStripMenuItem.Name = "allToolStripMenuItem";
- this.allToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
+ this.allToolStripMenuItem.Size = new System.Drawing.Size(88, 22);
this.allToolStripMenuItem.Text = "All";
this.allToolStripMenuItem.Click += new System.EventHandler(this.typeToolStripMenuItem_Click);
//
@@ -620,7 +622,7 @@
this.sceneTreeView.Size = new System.Drawing.Size(472, 587);
this.sceneTreeView.TabIndex = 1;
this.sceneTreeView.AfterCheck += new System.Windows.Forms.TreeViewEventHandler(this.sceneTreeView_AfterCheck);
- this.sceneTreeView.MouseClick += new System.Windows.Forms.MouseEventHandler(this.sceneTreeView_MouseClick);
+ this.sceneTreeView.NodeMouseClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.sceneTreeView_NodeMouseClick);
//
// treeSearch
//
@@ -629,7 +631,7 @@
this.treeSearch.Location = new System.Drawing.Point(0, 0);
this.treeSearch.Name = "treeSearch";
this.treeSearch.Size = new System.Drawing.Size(472, 20);
- this.treeSearch.TabIndex = 0;
+ this.treeSearch.TabIndex = 2;
this.treeSearch.Text = " Search ";
this.treeSearch.TextChanged += new System.EventHandler(this.treeSearch_TextChanged);
this.treeSearch.Enter += new System.EventHandler(this.treeSearch_Enter);
@@ -1115,13 +1117,28 @@
// contextMenuStrip2
//
this.contextMenuStrip2.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.showRelatedAssetsToolStripMenuItem,
+ this.toolStripSeparator7,
this.selectAllToolStripMenuItem,
this.clearSelectionToolStripMenuItem,
this.toolStripSeparator5,
this.expandAllToolStripMenuItem,
this.collapseAllToolStripMenuItem});
this.contextMenuStrip2.Name = "contextMenuStrip2";
- this.contextMenuStrip2.Size = new System.Drawing.Size(152, 98);
+ this.contextMenuStrip2.Size = new System.Drawing.Size(152, 126);
+ this.contextMenuStrip2.Opening += new System.ComponentModel.CancelEventHandler(this.contextMenuStrip2_Opening);
+ //
+ // showRelatedAssetsToolStripMenuItem
+ //
+ this.showRelatedAssetsToolStripMenuItem.Name = "showRelatedAssetsToolStripMenuItem";
+ this.showRelatedAssetsToolStripMenuItem.Size = new System.Drawing.Size(151, 22);
+ this.showRelatedAssetsToolStripMenuItem.Text = "Related assets";
+ this.showRelatedAssetsToolStripMenuItem.Click += new System.EventHandler(this.showRelatedAssetsToolStripMenuItem_Click);
+ //
+ // toolStripSeparator7
+ //
+ this.toolStripSeparator7.Name = "toolStripSeparator7";
+ this.toolStripSeparator7.Size = new System.Drawing.Size(148, 6);
//
// selectAllToolStripMenuItem
//
@@ -1286,7 +1303,6 @@
private System.Windows.Forms.TextBox treeSearch;
private System.Windows.Forms.ToolStripMenuItem loadFileToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem loadFolderToolStripMenuItem;
- private System.Windows.Forms.ListView assetListView;
private System.Windows.Forms.ColumnHeader columnHeaderName;
private System.Windows.Forms.ColumnHeader columnHeaderSize;
private System.Windows.Forms.ColumnHeader columnHeaderType;
@@ -1386,6 +1402,9 @@
private System.Windows.Forms.RichTextBox listSearch;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator6;
private System.Windows.Forms.ToolStripMenuItem allLive2DModelsToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem showRelatedAssetsToolStripMenuItem;
+ private System.Windows.Forms.ToolStripSeparator toolStripSeparator7;
+ private System.Windows.Forms.ListView assetListView;
}
}
diff --git a/AssetStudioGUI/AssetStudioGUIForm.cs b/AssetStudioGUI/AssetStudioGUIForm.cs
index 855f0f8..55db635 100644
--- a/AssetStudioGUI/AssetStudioGUIForm.cs
+++ b/AssetStudioGUI/AssetStudioGUIForm.cs
@@ -502,10 +502,10 @@ namespace AssetStudioGUI
switch (e.TabPageIndex)
{
case 0:
- treeSearch.Select();
+ sceneTreeView.Select();
break;
case 1:
- listSearch.Select();
+ assetListView.Select();
break;
}
}
@@ -1812,10 +1812,11 @@ namespace AssetStudioGUI
logger.ShowErrorMessage = toolStripMenuItem15.Checked;
}
- private void sceneTreeView_MouseClick(object sender, MouseEventArgs e)
+ private void sceneTreeView_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
- if (e.Button == MouseButtons.Right && sceneTreeView.Nodes.Count > 0)
+ if (e.Button == MouseButtons.Right)
{
+ sceneTreeView.SelectedNode = e.Node;
contextMenuStrip2.Show(sceneTreeView, e.Location.X, e.Location.Y);
}
}
@@ -1924,6 +1925,77 @@ namespace AssetStudioGUI
}
}
+ private void selectRelatedAsset(object sender, EventArgs e)
+ {
+ var selectedItem = (ToolStripMenuItem)sender;
+ var index = int.Parse(selectedItem.Name.Split('_')[0]);
+
+ assetListView.SelectedIndices.Clear();
+ tabControl1.SelectedTab = tabPage2;
+ var assetItem = assetListView.Items[index];
+ assetItem.Selected = true;
+ assetItem.EnsureVisible();
+ }
+
+ private void selectAllRelatedAssets(object sender, EventArgs e)
+ {
+ var selectedNode = sceneTreeView.SelectedNode;
+ var relatedAssets = visibleAssets.FindAll(x => x.TreeNode == selectedNode);
+ if (relatedAssets.Count > 0)
+ {
+ assetListView.SelectedIndices.Clear();
+ tabControl1.SelectedTab = tabPage2;
+ foreach (var asset in relatedAssets)
+ {
+ var assetItem = assetListView.Items[assetListView.Items.IndexOf(asset)];
+ assetItem.Selected = true;
+ }
+ assetListView.Items[assetListView.Items.IndexOf(relatedAssets[0])].EnsureVisible();
+ }
+ }
+
+ private void showRelatedAssetsToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ var selectedNode = sceneTreeView.SelectedNode;
+ var relatedAssets = visibleAssets.FindAll(x => x.TreeNode == selectedNode);
+ if (relatedAssets.Count == 0)
+ {
+ StatusStripUpdate("No related assets were found among the visible assets.");
+ }
+ }
+
+ private void contextMenuStrip2_Opening(object sender, System.ComponentModel.CancelEventArgs e)
+ {
+ var selectedNode = sceneTreeView.SelectedNode;
+ var relatedAssets = visibleAssets.FindAll(x => x.TreeNode == selectedNode);
+ showRelatedAssetsToolStripMenuItem.DropDownItems.Clear();
+ if (relatedAssets.Count > 1)
+ {
+ var assetItem = new ToolStripMenuItem
+ {
+ CheckOnClick = false,
+ Name = "selectAllRelatedAssetsToolStripMenuItem",
+ Size = new Size(180, 22),
+ Text = "Select all"
+ };
+ assetItem.Click += selectAllRelatedAssets;
+ showRelatedAssetsToolStripMenuItem.DropDownItems.Add(assetItem);
+ }
+ foreach (var asset in relatedAssets)
+ {
+ var index = assetListView.Items.IndexOf(asset);
+ var assetItem = new ToolStripMenuItem
+ {
+ CheckOnClick = false,
+ Name = $"{index}_{asset.TypeString}",
+ Size = new Size(180, 22),
+ Text = $"({asset.TypeString}) {asset.Text}"
+ };
+ assetItem.Click += selectRelatedAsset;
+ showRelatedAssetsToolStripMenuItem.DropDownItems.Add(assetItem);
+ }
+ }
+
#region FMOD
private void FMODinit()
{
diff --git a/AssetStudioGUI/AssetStudioGUIForm.resx b/AssetStudioGUI/AssetStudioGUIForm.resx
index dcce5cf..095950b 100644
--- a/AssetStudioGUI/AssetStudioGUIForm.resx
+++ b/AssetStudioGUI/AssetStudioGUIForm.resx
@@ -120,9 +120,6 @@
312, 17
-
- 432, 17
-
abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWYZ
1234567890.:,;'\"(!?)+-*/=
@@ -141,6 +138,9 @@ The quick brown fox jumps over the lazy dog. 1234567890
The quick brown fox jumps over the lazy dog. 1234567890
+
+ 432, 17
+
775, 21