58
58
using xivModdingFramework . Cache ;
59
59
using xivModdingFramework . SqPack . DataContainers ;
60
60
using xivModdingFramework . Mods . DataContainers ;
61
+ using xivModdingFramework . Mods . FileTypes ;
61
62
62
63
namespace xivModdingFramework . Models . FileTypes
63
64
{
@@ -1699,8 +1700,10 @@ public async Task<List<string>> GetReferencedMaterialPaths(string mdlPath, int m
1699
1700
var dataFile = IOUtil . GetDataFileFromPath ( mdlPath ) ;
1700
1701
var _mtrl = new Mtrl ( XivCache . GameInfo . GameDirectory ) ;
1701
1702
var _imc = new Imc ( _gameDirectory ) ;
1703
+ var useCached = true ;
1702
1704
if ( index == null )
1703
1705
{
1706
+ useCached = false ;
1704
1707
var _index = new Index ( _gameDirectory ) ;
1705
1708
var _modding = new Modding ( _gameDirectory ) ;
1706
1709
index = await _index . GetIndexFile ( dataFile , false , true ) ;
@@ -1711,6 +1714,7 @@ public async Task<List<string>> GetReferencedMaterialPaths(string mdlPath, int m
1711
1714
1712
1715
// Read the raw Material names from the file.
1713
1716
var materialNames = await GetReferencedMaterialNames ( mdlPath , getOriginal , index , modlist ) ;
1717
+ var root = await XivCache . GetFirstRoot ( mdlPath ) ;
1714
1718
if ( materialNames . Count == 0 )
1715
1719
{
1716
1720
return materials ;
@@ -1722,7 +1726,17 @@ public async Task<List<string>> GetReferencedMaterialPaths(string mdlPath, int m
1722
1726
// If we had a specific variant to get, just use that.
1723
1727
materialVariants . Add ( materialVariant ) ;
1724
1728
1725
- } else {
1729
+ }
1730
+ else if ( useCached && root != null )
1731
+ {
1732
+ var metadata = await ItemMetadata . GetFromCachedIndex ( root , index ) ;
1733
+ foreach ( var entry in metadata . ImcEntries )
1734
+ {
1735
+ materialVariants . Add ( entry . MaterialSet ) ;
1736
+ }
1737
+ }
1738
+ else
1739
+ {
1726
1740
1727
1741
// Otherwise, we have to resolve all possible variants.
1728
1742
var imcPath = ItemType . GetIMCPathFromChildPath ( mdlPath ) ;
0 commit comments