@@ -34,6 +34,7 @@ namespace AssetStudioGUI
34
34
partial class AssetStudioGUIForm : Form
35
35
{
36
36
private AssetItem lastSelectedItem ;
37
+ private AssetItem lastPreviewItem ;
37
38
private DirectBitmap imageTexture ;
38
39
private string tempClipboard ;
39
40
@@ -140,6 +141,7 @@ public AssetStudioGUIForm()
140
141
showConsoleToolStripMenuItem . Checked = Properties . Settings . Default . showConsole ;
141
142
buildTreeStructureToolStripMenuItem . Checked = Properties . Settings . Default . buildTreeStructure ;
142
143
useAssetLoadingViaTypetreeToolStripMenuItem . Checked = Properties . Settings . Default . useTypetreeLoading ;
144
+ useDumpTreeViewToolStripMenuItem . Checked = Properties . Settings . Default . useDumpTreeView ;
143
145
FMODinit ( ) ;
144
146
listSearchFilterMode . SelectedIndex = 0 ;
145
147
@@ -776,7 +778,7 @@ private void assetListView_ColumnClick(object sender, ColumnClickEventArgs e)
776
778
var at = a . SubItems [ sortColumn ] . Text . AsSpan ( ) ;
777
779
var bt = b . SubItems [ sortColumn ] . Text . AsSpan ( ) ;
778
780
779
- return reverseSort ? MemoryExtensions . CompareTo ( bt , at , StringComparison . OrdinalIgnoreCase ) : MemoryExtensions . CompareTo ( at , bt , StringComparison . OrdinalIgnoreCase ) ;
781
+ return reverseSort ? bt . CompareTo ( at , StringComparison . OrdinalIgnoreCase ) : at . CompareTo ( bt , StringComparison . OrdinalIgnoreCase ) ;
780
782
} ) ;
781
783
}
782
784
assetListView . EndUpdate ( ) ;
@@ -799,22 +801,44 @@ private void selectAsset(object sender, ListViewItemSelectionChangedEventArgs e)
799
801
800
802
lastSelectedItem = ( AssetItem ) e . Item ;
801
803
802
- if ( e . IsSelected )
804
+ if ( ! e . IsSelected )
805
+ return ;
806
+
807
+ switch ( tabControl2 . SelectedIndex )
803
808
{
804
- if ( tabControl2 . SelectedIndex == 1 )
805
- {
806
- dumpTextBox . Text = DumpAsset ( lastSelectedItem . Asset ) ;
807
- }
808
- if ( enablePreview . Checked )
809
- {
810
- PreviewAsset ( lastSelectedItem ) ;
811
- if ( displayInfo . Checked && lastSelectedItem . InfoText != null )
809
+ case 0 : //Preview
810
+ if ( enablePreview . Checked )
812
811
{
813
- assetInfoLabel . Text = lastSelectedItem . InfoText ;
814
- assetInfoLabel . Visible = true ;
812
+ PreviewAsset ( lastSelectedItem ) ;
813
+ if ( displayInfo . Checked && lastSelectedItem . InfoText != null )
814
+ {
815
+ assetInfoLabel . Text = lastSelectedItem . InfoText ;
816
+ assetInfoLabel . Visible = true ;
817
+ }
815
818
}
819
+ break ;
820
+ case 1 : //Dump
821
+ DumpAsset ( lastSelectedItem ) ;
822
+ break ;
823
+ }
824
+ }
825
+
826
+ private void DumpAsset ( AssetItem assetItem )
827
+ {
828
+ if ( assetItem == null )
829
+ return ;
830
+
831
+ if ( useDumpTreeViewToolStripMenuItem . Checked )
832
+ {
833
+ using ( var jsonDoc = DumpAssetToJsonDoc ( assetItem . Asset ) )
834
+ {
835
+ dumpTreeView . LoadFromJson ( jsonDoc , assetItem . Text ) ;
816
836
}
817
837
}
838
+ else
839
+ {
840
+ dumpTextBox . Text = Studio . DumpAsset ( assetItem . Asset ) ;
841
+ }
818
842
}
819
843
820
844
private void classesListView_ItemSelectionChanged ( object sender , ListViewItemSelectionChangedEventArgs e )
@@ -830,6 +854,7 @@ private void classesListView_ItemSelectionChanged(object sender, ListViewItemSel
830
854
if ( e . IsSelected )
831
855
{
832
856
classTextBox . Text = ( ( TypeTreeItem ) classesListView . SelectedItems [ 0 ] ) . ToString ( ) ;
857
+ lastSelectedItem = null ;
833
858
}
834
859
}
835
860
@@ -844,6 +869,7 @@ private void preview_Resize(object sender, EventArgs e)
844
869
845
870
private void PreviewAsset ( AssetItem assetItem )
846
871
{
872
+ lastPreviewItem = assetItem ;
847
873
if ( assetItem == null )
848
874
return ;
849
875
try
@@ -1527,9 +1553,22 @@ private void ResetForm()
1527
1553
1528
1554
private void tabControl2_SelectedIndexChanged ( object sender , EventArgs e )
1529
1555
{
1530
- if ( tabControl2 . SelectedIndex == 1 && lastSelectedItem != null )
1556
+ switch ( tabControl2 . SelectedIndex )
1531
1557
{
1532
- dumpTextBox . Text = DumpAsset ( lastSelectedItem . Asset ) ;
1558
+ case 0 : //Preview
1559
+ if ( lastPreviewItem != lastSelectedItem )
1560
+ {
1561
+ PreviewAsset ( lastSelectedItem ) ;
1562
+ if ( displayInfo . Checked && lastSelectedItem ? . InfoText != null )
1563
+ {
1564
+ assetInfoLabel . Text = lastSelectedItem . InfoText ;
1565
+ assetInfoLabel . Visible = true ;
1566
+ }
1567
+ }
1568
+ break ;
1569
+ case 1 : //Dump
1570
+ DumpAsset ( lastSelectedItem ) ;
1571
+ break ;
1533
1572
}
1534
1573
}
1535
1574
@@ -2047,7 +2086,7 @@ private void sceneTreeView_NodeMouseClick(object sender, TreeNodeMouseClickEvent
2047
2086
if ( e . Button == MouseButtons . Right )
2048
2087
{
2049
2088
sceneTreeView . SelectedNode = e . Node ;
2050
- contextMenuStrip2 . Show ( sceneTreeView , e . Location . X , e . Location . Y ) ;
2089
+ sceneContextMenuStrip . Show ( sceneTreeView , e . Location . X , e . Location . Y ) ;
2051
2090
}
2052
2091
}
2053
2092
@@ -2162,7 +2201,7 @@ private void contextMenuStrip2_Opening(object sender, System.ComponentModel.Canc
2162
2201
{
2163
2202
var selectedNode = sceneTreeView . SelectedNode ;
2164
2203
var relatedAssets = visibleAssets . FindAll ( x => x . TreeNode == selectedNode ) ;
2165
- showRelatedAssetsToolStripMenuItem . DropDownItems . Clear ( ) ;
2204
+ shShowRelatedAssetsToolStripMenuItem . DropDownItems . Clear ( ) ;
2166
2205
if ( relatedAssets . Count > 1 )
2167
2206
{
2168
2207
var assetItem = new ToolStripMenuItem
@@ -2173,7 +2212,7 @@ private void contextMenuStrip2_Opening(object sender, System.ComponentModel.Canc
2173
2212
Text = "Select all"
2174
2213
} ;
2175
2214
assetItem . Click += selectAllRelatedAssets ;
2176
- showRelatedAssetsToolStripMenuItem . DropDownItems . Add ( assetItem ) ;
2215
+ shShowRelatedAssetsToolStripMenuItem . DropDownItems . Add ( assetItem ) ;
2177
2216
}
2178
2217
foreach ( var asset in relatedAssets )
2179
2218
{
@@ -2186,7 +2225,7 @@ private void contextMenuStrip2_Opening(object sender, System.ComponentModel.Canc
2186
2225
Text = $ "({ asset . TypeString } ) { asset . Text } "
2187
2226
} ;
2188
2227
assetItem . Click += selectRelatedAsset ;
2189
- showRelatedAssetsToolStripMenuItem . DropDownItems . Add ( assetItem ) ;
2228
+ shShowRelatedAssetsToolStripMenuItem . DropDownItems . Add ( assetItem ) ;
2190
2229
}
2191
2230
}
2192
2231
@@ -2462,6 +2501,55 @@ private static void ShowThemeChangingMsg()
2462
2501
MessageBox . Show ( msg , "Info" , MessageBoxButtons . OK ) ;
2463
2502
}
2464
2503
2504
+ private void DumpTreeView_NodeMouseClick ( object sender , TreeNodeMouseClickEventArgs e )
2505
+ {
2506
+ if ( e . Button == MouseButtons . Right )
2507
+ {
2508
+ dumpTreeView . SelectedNode = e . Node ;
2509
+ tempClipboard = string . IsNullOrEmpty ( ( string ) e . Node . Tag )
2510
+ ? e . Node . Text
2511
+ : $ "{ e . Node . Name } : { e . Node . Tag } ";
2512
+ dumpTreeViewContextMenuStrip . Show ( dumpTreeView , e . Location . X , e . Location . Y ) ;
2513
+ }
2514
+ }
2515
+
2516
+ private void copyToolStripMenuItem1_Click ( object sender , EventArgs e )
2517
+ {
2518
+ Clipboard . SetDataObject ( tempClipboard ) ;
2519
+ }
2520
+
2521
+ private void expandAllToolStripMenuItem1_Click ( object sender , EventArgs e )
2522
+ {
2523
+ dumpTreeView . BeginUpdate ( ) ;
2524
+ foreach ( TreeNode node in dumpTreeView . Nodes )
2525
+ {
2526
+ node . ExpandAll ( ) ;
2527
+ }
2528
+ dumpTreeView . EndUpdate ( ) ;
2529
+ }
2530
+
2531
+ private void collapseAllToolStripMenuItem1_Click ( object sender , EventArgs e )
2532
+ {
2533
+ dumpTreeView . BeginUpdate ( ) ;
2534
+ foreach ( TreeNode node in dumpTreeView . Nodes )
2535
+ {
2536
+ node . Collapse ( ignoreChildren : false ) ;
2537
+ }
2538
+ dumpTreeView . EndUpdate ( ) ;
2539
+ }
2540
+
2541
+ private void useDumpTreeViewToolStripMenuItem_CheckedChanged ( object sender , EventArgs e )
2542
+ {
2543
+ var isTreeViewEnabled = useDumpTreeViewToolStripMenuItem . Checked ;
2544
+ dumpTreeView . Visible = isTreeViewEnabled ;
2545
+ Properties . Settings . Default . useDumpTreeView = isTreeViewEnabled ;
2546
+ Properties . Settings . Default . Save ( ) ;
2547
+ if ( tabControl2 . SelectedIndex == 1 )
2548
+ {
2549
+ DumpAsset ( lastSelectedItem ) ;
2550
+ }
2551
+ }
2552
+
2465
2553
#region FMOD
2466
2554
private void FMODinit ( )
2467
2555
{
0 commit comments