private void RecursiveExtract(object SaveFolder) { List<CacheBase.IndexItem> tagsDone = new List<CacheBase.IndexItem>(); foreach (var shader in sbsp.Shaders) { var rmshTag = cache.IndexItems.GetItemByID(shader.tagID); if (rmshTag == null) continue; var rmsh = DefinitionsManager.rmsh(cache, rmshTag); foreach (Definitions.shader.ShaderProperties prop in rmsh.Properties) { foreach (Definitions.shader.ShaderProperties.ShaderMap map in prop.ShaderMaps) { var bitmTag = cache.IndexItems.GetItemByID(map.BitmapTagID); if (bitmTag == null) continue; //dont need to waste time extracting the same ones over and over if (tagsDone.Contains(bitmTag)) continue; try { BitmapExtractor.SaveAllImages((string)SaveFolder + "\\" + bitmTag.Filename, cache, bitmTag, DefaultBitmFormat, true); TagExtracted(this, bitmTag); } catch (Exception ex) { ErrorExtracting(this, bitmTag, ex); } tagsDone.Add(bitmTag); } } } FinishedRecursiveExtract(this, tag); }
private void RecursiveExtract(object SaveFolder) { List <CacheBase.IndexItem> tagsDone = new List <CacheBase.IndexItem>(); foreach (render_model.Shader shader in mode.Shaders) { var rmshTag = cache.IndexItems.GetItemByID(shader.tagID); if (rmshTag == null) { continue; } var rmsh = DefinitionsManager.rmsh(cache, rmshTag); #region Halo 2 Extract if (cache.Version == DefinitionSet.Halo2Xbox) { var h2rmsh = rmsh as Definitions.Halo2Xbox.shader; for (int i = 0; i < h2rmsh.BitmIDs.Length; i++) { var bitmTag = cache.IndexItems.GetItemByID(h2rmsh.BitmIDs[i]); if (bitmTag == null) { continue; } //dont need to waste time extracting the same ones over and over if (tagsDone.Contains(bitmTag)) { continue; } try { BitmapExtractor.SaveAllImages((string)SaveFolder + "\\" + bitmTag.Filename, cache, bitmTag, DefaultBitmFormat, true); TagExtracted(this, bitmTag); } catch (Exception ex) { ErrorExtracting(this, bitmTag, ex); } tagsDone.Add(bitmTag); } continue; } #endregion foreach (Definitions.shader.ShaderProperties prop in rmsh.Properties) { foreach (Definitions.shader.ShaderProperties.ShaderMap map in prop.ShaderMaps) { var bitmTag = cache.IndexItems.GetItemByID(map.BitmapTagID); if (bitmTag == null) { continue; } //dont need to waste time extracting the same ones over and over if (tagsDone.Contains(bitmTag)) { continue; } try { BitmapExtractor.SaveAllImages((string)SaveFolder + "\\" + bitmTag.Filename, cache, bitmTag, DefaultBitmFormat, true); TagExtracted(this, bitmTag); } catch (Exception ex) { ErrorExtracting(this, bitmTag, ex); } tagsDone.Add(bitmTag); } } } FinishedRecursiveExtract(this, tag); }