//Attempt to read batch.xml to load previous settings //If anything goes wrong, just start without any preloaded settings public void ReadXml(XmlReader reader) { try { FileDescs = new Dictionary<string, FbxFileDesc>(); reader.ReadToFollowing("BatchConversion"); reader.ReadToDescendant("Output"); OutputDir = reader.ReadElementContentAsString(); while (reader.LocalName == "FbxFile") { var newFile = new FbxFileDesc(); reader.ReadToDescendant("Filename"); var newFilename = reader.ReadElementContentAsString(); if (reader.LocalName != "CollisionGeneration") reader.ReadToNextSibling("CollisionGeneration"); newFile.CollisionType = reader.ReadElementContentAsString(); while (reader.LocalName == "AnimClip") { var newClip = new AnimationClipDesc(); reader.ReadToDescendant("Name"); var newClipName = reader.ReadElementContentAsString(); if (reader.LocalName != "Keyframes") reader.ReadToNextSibling("Keyframes"); newClip.BeginFrame = double.Parse(reader.GetAttribute("Begin")); newClip.EndFrame = double.Parse(reader.GetAttribute("End")); newClip.Fps = double.Parse(reader.GetAttribute("FPS")); reader.Read(); reader.ReadEndElement(); newFile.AnimationClips.Add(newClipName, newClip); } reader.ReadEndElement(); FileDescs.Add(newFilename, newFile); } } catch (Exception) { MessageBox.Show(ParentWindow, "Unable to read batch.xml, starting with a clean slate...", "Error", MessageBoxButton.OK, MessageBoxImage.Error); FileDescs = new Dictionary<string, FbxFileDesc>(); OutputDir = ""; } }
//Get the filedesc referenced in the textbox, or create a new one if it doesn't exist //Reset the other UI items private void TxtFileSelected_TextChanged(object sender, System.Windows.Controls.TextChangedEventArgs e) { if (!_allFiles.TryGetValue(TxtFileSelected.Text, out _selectedFile)) _selectedFile = new FbxFileDesc(); switch (_selectedFile.CollisionType) { case "Concave": RadColConcave.IsChecked = true; break; case "Convex": RadColConvex.IsChecked = true; break; case "None": RadColNone.IsChecked = true; break; default: RadColConcave.IsChecked = false; RadColConvex.IsChecked = false; RadColNone.IsChecked = false; break; } ListBoxAnimClips.Items.Clear(); foreach (var clip in _selectedFile.AnimationClips) { ListBoxAnimClips.Items.Add(clip.Key); } TxtAnimClipSelected.Text = ""; TxtAnimClipBegin.Text = ""; TxtAnimClipEnd.Text = ""; TxtAnimClipFps.Text = ""; }