예제 #1
0
        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);
        }
예제 #2
0
        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);
        }