private void selectItem(object sender, TreeNodeMouseClickEventArgs e) { //Runtime.TargetMTA.Clear(); //Runtime.TargetAnim = null; if (e.Node is Animation) { //Runtime.TargetAnimString = e.Node.Text; string AnimName = e.Node.Text; AnimName = Regex.Match(AnimName, @"([A-Z][0-9][0-9])(.*)").Groups[0].ToString(); if (AnimName.Length > 3) { AnimName = AnimName.Substring(3); } Animation running = new Animation(AnimName); running.ReplaceMe((Animation)e.Node); running.Tag = e.Node; List <MTA> display = new List <MTA>(); List <MTA> def = new List <MTA>(); Queue <TreeNode> NodeQueue = new Queue <TreeNode>(); foreach (TreeNode n in treeView1.Nodes) { NodeQueue.Enqueue(n); } while (NodeQueue.Count > 0) { try { TreeNode n = NodeQueue.Dequeue(); string NodeName = Regex.Match(n.Text, @"([A-Z][0-9][0-9])(.*)").Groups[0].ToString(); if (NodeName.Length <= 3) { Console.WriteLine(NodeName); } else { NodeName = NodeName.Substring(3); } if (n is Animation) { if (n == e.Node) { continue; } if (matchAnim.Checked && NodeName.Equals(AnimName)) { running.Children.Add(n); } } if (n is MTA) { if (n == e.Node) { continue; } if (NodeName.Contains(AnimName.Replace(".omo", "."))) { running.Children.Add(n); } if (n.Text.Contains("display")) { display.Add((MTA)n); } if (n.Text.Contains("default.mta")) { def.Add((MTA)n); } } if (n is AnimationGroupNode) { foreach (TreeNode tn in n.Nodes) { NodeQueue.Enqueue(tn); } } } catch { } } ((ModelViewport)Parent).CurrentAnimation = running; //reset mtas foreach (TreeNode node in ((ModelViewport)Parent).draw) { if (node is ModelContainer) { ModelContainer con = (ModelContainer)node; if (con.NUD != null) { con.NUD.ClearMta(); con.NUD.ApplyMta(con.MTA, 0); foreach (MTA d in display) { con.NUD.ApplyMta(d, 0); } foreach (MTA d in def) { con.NUD.ApplyMta(d, 0); } /*foreach (KeyValuePair<string, MTA> v in Runtime.MaterialAnimations) * { * if (v.Key.Contains("display")) * { * con.NUD.applyMTA(v.Value, 0); * break; * } * }*/ } } } /*Runtime.TargetMTA.Clear(); * foreach (KeyValuePair<string, MTA> v in Runtime.MaterialAnimations) * { * if (v.Key.Contains(e.Node.Text.Replace(".omo", ""))) * { * Runtime.TargetMTA.Add(v.Value); * } * }*/ //MainForm.Instance.viewports[0].loadMTA(Runtime.MaterialAnimations[e.Node.Text]); //Console.WriteLine("Selected Anim " + e.Node.Text); } if (e.Node is MTA) { //MainForm.Instance.viewports[0].loadMTA((MTA)e.Node); //Runtime.TargetMTA = ; //Runtime.TargetMTAString = e.Node.Text; ((ModelViewport)Parent).CurrentMaterialAnimation = (MTA)e.Node; Queue <TreeNode> NodeQueue = new Queue <TreeNode>(); foreach (TreeNode n in treeView1.Nodes) { NodeQueue.Enqueue(n); } List <MTA> display = new List <MTA>(); while (NodeQueue.Count > 0) { TreeNode n = NodeQueue.Dequeue(); if (n is Animation || n is MTA) { if (n == e.Node) { continue; } if ((n.Text.Contains("default.mta") || n.Text.Contains("display")) && n is MTA) { display.Add((MTA)n); } } if (n is AnimationGroupNode) { foreach (TreeNode tn in n.Nodes) { NodeQueue.Enqueue(tn); } } } foreach (TreeNode node in ((ModelViewport)Parent).draw) { if (node is ModelContainer) { ModelContainer con = (ModelContainer)node; if (con.NUD != null && con.MTA != null) { con.NUD.ApplyMta(con.MTA, 0); foreach (MTA d in display) { con.NUD.ApplyMta(d, 0); } /*foreach (KeyValuePair<string, MTA> v in Runtime.MaterialAnimations) * { * if (v.Key.Contains("display")) * { * con.NUD.applyMTA(v.Value, 0); * break; * } * }*/ } } } } if (e.Node is BFRES.MTA) //For BFRES { ((ModelViewport)Parent).CurrentBfresMaterialAnimation = (BFRES.MTA)e.Node; Queue <TreeNode> NodeQueue = new Queue <TreeNode>(); foreach (TreeNode n in treeView1.Nodes) { NodeQueue.Enqueue(n); } while (NodeQueue.Count > 0) { TreeNode n = NodeQueue.Dequeue(); if (n is AnimationGroupNode) { foreach (TreeNode tn in n.Nodes) { NodeQueue.Enqueue(tn); } } } foreach (TreeNode node in ((ModelViewport)Parent).draw) { if (node is ModelContainer) { ModelContainer con = (ModelContainer)node; if (con.Bfres != null && con.BFRES_MTA != null) { con.Bfres.ApplyMta(con.BFRES_MTA, 0); } } } } }