public void NullEntityModelSelector() { ModelExtractor extractor = new ModelExtractor(); var model = new ModelDefinition <N>(); var result = extractor.Extract(CreatePage(), model).First() as Dictionary <string, dynamic>; Assert.Equal("i am title", result["title"]); Assert.Equal("i am dotnetspider", result["dotnetspider"]); }
public void EntityModelSelector() { ModelExtractor extractor = new ModelExtractor(); IModel model = new ModelDefinition <E>(); var results = extractor.Extract(CreatePage(), model).ToList(); Assert.Equal(2, results.Count()); Assert.Equal("a", results[0]["title"]); Assert.Equal("b", results[1]["title"]); }
public void NullModelSelector() { var fields = new[] { new FieldSelector("./div[@class='title']", "title"), new FieldSelector("./div[@class='dotnetspider']", "dotnetspider"), }; var model = new ModelDefinition(null, fields); ModelExtractor extractor = new ModelExtractor(); var result = extractor.Extract(CreatePage(), model).First() as Dictionary <string, dynamic>; Assert.Equal("i am title", result["title"]); Assert.Equal("i am dotnetspider", result["dotnetspider"]); }
public void ModelSelector() { var entitySelector = new Selector("//div[@class='aaaa']"); var fields = new[] { new FieldSelector(".", "title"), }; var model = new ModelDefinition(entitySelector, fields); ModelExtractor extractor = new ModelExtractor(); var results = extractor.Extract(CreatePage(), model).ToList(); Assert.Equal(2, results.Count()); Assert.Equal("a", results[0]["title"]); Assert.Equal("b", results[1]["title"]); }
public TagViewer(Settings Settings, Extractor Output) { InitializeComponent(); settings = Settings; output = Output; vMeta = new MetaViewer(); eBitm = new BitmapExtractor(); eMode = new ModelExtractor(); eSnd_ = new SoundExtractor(); eSnd4 = new SoundExtractorH4(); vUnic = new StringsViewer(); eSbsp = new BSPExtractor(); vS3D = new S3DExplorer(); eBitm.TagExtracted += new TagExtractedEventHandler(extractor_TagExtracted); eMode.TagExtracted += new TagExtractedEventHandler(extractor_TagExtracted); eSnd_.TagExtracted += new TagExtractedEventHandler(extractor_TagExtracted); eSnd4.TagExtracted += new TagExtractedEventHandler(extractor_TagExtracted); eSbsp.TagExtracted += new TagExtractedEventHandler(extractor_TagExtracted); eBitm.ErrorExtracting += new ErrorExtractingEventHandler(extractor_ErrorExtracting); eMode.ErrorExtracting += new ErrorExtractingEventHandler(extractor_ErrorExtracting); eSnd_.ErrorExtracting += new ErrorExtractingEventHandler(extractor_ErrorExtracting); eSnd4.ErrorExtracting += new ErrorExtractingEventHandler(extractor_ErrorExtracting); eSbsp.ErrorExtracting += new ErrorExtractingEventHandler(extractor_ErrorExtracting); eMode.FinishedRecursiveExtract += new FinishedRecursiveExtractEventHandler(eMode_FinishedRecursiveExtract); eSbsp.FinishedRecursiveExtract += new FinishedRecursiveExtractEventHandler(eMode_FinishedRecursiveExtract); eBitm.DefaultBitmFormat = settings.BitmFormat; eMode.DefaultBitmFormat = settings.BitmFormat; eMode.DefaultModeFormat = settings.ModeFormat; eSnd_.DefaultSnd_Format = settings.Snd_Format; eSbsp.DefaultBitmFormat = settings.BitmFormat; eSbsp.DefaultModeFormat = settings.ModeFormat; tabMeta = new TabPage("Meta Viewer"); tabMeta.Controls.Add(vMeta); vMeta.Dock = DockStyle.Fill; tabRaw = new TabPage("Raw Extractor"); tabModel = new TabPage("Model Viewer"); tabControl1.TabPages.Add(tabMeta); }
public ModelExtractor perfromModelExtraction() { foreach (ModelMesh meshModel in model.Meshes) { foreach (ModelMeshPart modelMeshPartModel in meshModel.MeshParts) { modelExtractor = new ModelExtractor(modelMeshPartModel, new Vector3[modelMeshPartModel.NumVertices * 2], new VertexPositionTexture[modelMeshPartModel.NumVertices]); modelExtractor.ExtractVertices(); } } return modelExtractor; }
private void BatchExtract(CacheBase cache, List <TreeNode> parents, Settings settings, string dest, BackgroundWorker worker) { foreach (TreeNode parent in parents) { foreach (TreeNode child in parent.Nodes) { if (worker.CancellationPending) { return; } if (child.Nodes.Count > 0) { BatchExtract(cache, new List <TreeNode>() { child }, settings, dest, worker); continue; } var tag = child.Tag as CacheBase.IndexItem; var fName = dest + ((settings.Flags.HasFlag(SettingsFlags.OutputByType)) ? "\\" + tag.ClassName : "") + "\\" + tag.Filename; var tName = tag.Filename + "." + tag.ClassCode; switch (tag.ClassCode) { #region bink case "bink": try { //only supports H4R if (cache.Version < DefinitionSet.Halo4Retail) { continue; } fName += ".bik"; //AddLine("Extracting " + tName + "..."); if (settings.Flags.HasFlag(SettingsFlags.OverwriteTags) || !File.Exists(fName)) { BinkExtractor.SaveBink(fName, cache, tag); AddLine("Extracted " + tName + "."); tagsExtracted++; } } catch (Exception ex) { AddLine("Error extracting " + tName + ":"); AddLine("--" + ex.Message.Replace("\r\n", " ")); tagsMissed++; } break; #endregion #region bitm case "bitm": try { switch (settings.BitmFormat) { case BitmapFormat.TIF: fName += ".tif"; break; case BitmapFormat.DDS: fName += ".dds"; break; case BitmapFormat.RAW: fName += ".bin"; break; } if (settings.Flags.HasFlag(SettingsFlags.OverwriteTags) || !File.Exists(fName)) { BitmapExtractor.SaveAllImages(fName, cache, tag, settings.BitmFormat, settings.Flags.HasFlag(SettingsFlags.BitmapAlpha)); AddLine("Extracted " + tName + "."); tagsExtracted++; } } catch (Exception ex) { AddLine("Error extracting " + tName + ":"); AddLine("--" + ex.Message.Replace("\r\n", " ")); tagsMissed++; } break; #endregion #region mode case "mode": case "mod2": try { switch (settings.ModeFormat) { case ModelFormat.EMF: fName += ".emf"; break; case ModelFormat.JMS: fName += ".jms"; break; case ModelFormat.OBJ: fName += ".obj"; break; case ModelFormat.AMF: fName += ".amf"; break; } if (settings.Flags.HasFlag(SettingsFlags.OverwriteTags) || !File.Exists(fName)) { ModelExtractor.SaveAllModelParts(fName, cache, tag, settings.ModeFormat, settings.Flags.HasFlag(SettingsFlags.SplitMeshes)); AddLine("Extracted " + tName + "."); tagsExtracted++; } } catch (Exception ex) { AddLine("Error extracting " + tName + ":"); AddLine("--" + ex.Message.Replace("\r\n", " ")); tagsMissed++; } break; #endregion #region sbsp case "sbsp": try { //AddLine("Extracting " + tName + "..."); switch (settings.ModeFormat) { case ModelFormat.EMF: fName += ".emf"; break; case ModelFormat.OBJ: fName += ".obj"; break; case ModelFormat.AMF: case ModelFormat.JMS: fName += ".amf"; break; } if (settings.Flags.HasFlag(SettingsFlags.OverwriteTags) || !File.Exists(fName)) { BSPExtractor.SaveAllBSPParts(fName, cache, tag, settings.ModeFormat); AddLine("Extracted " + tName + "."); tagsExtracted++; } } catch (Exception ex) { AddLine("Error extracting " + tName + ":"); AddLine("--" + ex.Message.Replace("\r\n", " ")); tagsMissed++; } break; #endregion #region snd! case "snd!": try { //H2, H3B not supported if (cache.Version <= DefinitionSet.Halo3Beta) { continue; } //AddLine("Extracting " + tName + "..."); if (cache.Version < DefinitionSet.Halo4Retail) { SoundExtractor.SaveAllAsSeparate(dest + tag.Filename, cache, tag, settings.Snd_Format, settings.Flags.HasFlag(SettingsFlags.OverwriteTags)); } else { (new SoundExtractorH4()).SaveAllAsSeparate(dest + tag.Filename, cache, tag, settings.Snd_Format, settings.Flags.HasFlag(SettingsFlags.OverwriteTags)); } //SoundExtractor.SaveAllAsSingle(fName, cache, tag, settings.Snd_Format); AddLine("Extracted " + tag.Filename + "." + tag.ClassCode + "."); tagsExtracted++; } catch (Exception ex) { AddLine("Error extracting " + tName + ":"); AddLine("--" + ex.Message.Replace("\r\n", " ")); tagsMissed++; } break; #endregion #region unic case "unic": try { //H2 not supported if (cache.Version < DefinitionSet.Halo3Beta) { continue; } fName += ".txt"; //AddLine("Extracting " + tName + "..."); if (settings.Flags.HasFlag(SettingsFlags.OverwriteTags) || !File.Exists(fName)) { StringsViewer.SaveUnicStrings(fName, cache, tag, settings.Language); AddLine("Extracted " + tName + "."); tagsExtracted++; } } catch (Exception ex) { AddLine("Error extracting " + tName + ":"); AddLine("--" + ex.Message.Replace("\r\n", " ")); tagsMissed++; } break; #endregion } } } }
public override object Execute(List <string> args) { if (args.Count != 3) { return(false); } var variantName = args[0]; var fileType = args[1].ToLower(); var modelFileName = args[2]; switch (fileType) { case "obj": case "amf": case "dae": break; default: throw new NotImplementedException(fileType); } // // Find the variant to extract // if (Definition.RenderModel == null) { Console.WriteLine("The model does not have a render model associated with it."); return(true); } var modelVariant = Definition.Variants.FirstOrDefault(v => (CacheContext.GetString(v.Name) ?? v.Name.ToString()) == variantName); if (modelVariant == null && Definition.Variants.Count > 0 && fileType != "dae") { Console.WriteLine("Unable to find variant \"{0}\"", variantName); Console.WriteLine("Use \"listvariants\" to list available variants."); return(true); } // // Deserialize the render model tag // RenderModel renderModel; using (var cacheStream = CacheContext.TagCacheFile.OpenRead()) { renderModel = CacheContext.Deserialize <RenderModel>(cacheStream, Definition.RenderModel); } if (renderModel.Geometry.Resource == null) { Console.WriteLine("Render model does not have a resource associated with it"); return(true); } // // Deserialize the resource definition // var resourceContext = new ResourceSerializationContext(CacheContext, renderModel.Geometry.Resource); var resourceDefinition = CacheContext.Deserialize <RenderGeometryApiResourceDefinition>(resourceContext); using (var resourceStream = new MemoryStream()) { // // Extract the resource data // CacheContext.ExtractResource(renderModel.Geometry.Resource, resourceStream); var modelFile = new FileInfo(modelFileName); if (!modelFile.Directory.Exists) { modelFile.Directory.Create(); } switch (fileType) { case "obj": ExtractObj(modelFile, renderModel, modelVariant, resourceDefinition, resourceStream); break; case "amf": ExtractAmf(modelFile, renderModel, modelVariant, resourceDefinition, resourceStream); break; case "dae": ModelExtractor extractor = new ModelExtractor(CacheContext, renderModel); extractor.ExtractRenderModel(); extractor.ExportCollada(modelFile); break; default: throw new NotImplementedException(fileType); } } Console.WriteLine("Done!"); return(true); }
public override object Execute(List <string> args) { string variantName; string fileType; string modelFileName; if (args.Count == 2) { variantName = "*"; fileType = args[0].ToLower(); modelFileName = args[1]; } else if (args.Count == 3) { variantName = args[0]; fileType = args[1].ToLower(); modelFileName = args[2]; } else { return(false); } switch (fileType) { case "obj": case "dae": break; default: throw new NotImplementedException(fileType); } if (Definition.Geometry.Resource == null) { Console.WriteLine("Render model does not have a resource associated with it"); return(true); } // // Deserialize the resource definition // var resourceContext = new ResourceSerializationContext(CacheContext, Definition.Geometry.Resource); var resourceDefinition = CacheContext.Deserializer.Deserialize <RenderGeometryApiResourceDefinition>(resourceContext); using (var resourceStream = new MemoryStream()) { // // Extract the resource data // CacheContext.ExtractResource(Definition.Geometry.Resource, resourceStream); var modelFile = new FileInfo(modelFileName); if (!modelFile.Directory.Exists) { modelFile.Directory.Create(); } ModelExtractor extractor = new ModelExtractor(CacheContext, Definition); extractor.ExtractRenderModel(variantName); switch (fileType) { case "obj": return(extractor.ExportObject(modelFile)); case "dae": return(extractor.ExportCollada(modelFile)); default: throw new NotImplementedException(fileType); } } }
static void Main(string[] args) { CanvasAppCommands command = CanvasAppCommands.OTHER; CanvasModel canvasModel = null; BaseCanvas baseCanvas = null; string input = string.Empty; do { try { Console.Write("Enter the command: "); input = Console.ReadLine().Trim(); if (Helper.IsValidInput(input)) { if (Helper.IsExitCommand(input)) { break; } command = Helper.GetCommandName(input); if (canvasModel == null) { canvasModel = ModelExtractor.GetCanvasModel(input); baseCanvas = new BaseCanvas(); baseCanvas.crateCanvas(canvasModel.Width, canvasModel.Height); } if (canvasModel != null) { if (command == CanvasAppCommands.LINE) { LineModel lineModal = new LineModel(); lineModal = ModelExtractor.GetLineModal(input); baseCanvas.addLine(lineModal.X1, lineModal.Y1, lineModal.X2, lineModal.Y2); } if (command == CanvasAppCommands.RECTANGLE) { RectangleModel rectangleModel = new RectangleModel(); rectangleModel = ModelExtractor.GetRectangleModel(input); baseCanvas.addRectangle(rectangleModel.X1, rectangleModel.Y1, rectangleModel.X2, rectangleModel.Y2); } if (command == CanvasAppCommands.BUCKET_FILL) { BucketFillModel bucketFillModel = new BucketFillModel(); bucketFillModel = ModelExtractor.GetBucketFillModel(input); baseCanvas.fill(bucketFillModel.X, bucketFillModel.Y, Convert.ToChar(bucketFillModel.Colour)); } baseCanvas.draw(); } } else { Console.WriteLine("Invalid Command!!! Please try again...\n"); } } catch (InvalidCastException ex) { Console.WriteLine("ERROR: " + ex.Message); } catch (ArgumentOutOfRangeException ex) { Console.WriteLine("ERROR: " + ex.Message); } catch (ArgumentException ex) { Console.WriteLine("ERROR: " + ex.Message); } catch (InvalidOperationException ex) { Console.WriteLine("ERROR: " + ex.Message); } catch (Exception ex) { Console.WriteLine("Unable to create Canvas!!!"); Console.WriteLine("Please try again C 10 4 ==> C widht height \n"); } input = string.Empty; } while (command != CanvasAppCommands.QUIT); }