private void listViewCustom1_SelectedIndexChanged(object sender, EventArgs e) { if (listViewCustom1.SelectedIndices.Count > 0) { var item = listViewCustom1.SelectedItems[0]; BxlanHeader bxlan = null; if (item.Tag is ArchiveFileInfo) { var fileFormat = ((ArchiveFileInfo)item.Tag).OpenFile(); bxlan = ((BXLAN)fileFormat).BxlanHeader; } else { bxlan = (BxlanHeader)item.Tag; } if (bxlan == null) { return; } for (int i = 0; i < bxlan.AnimationInfo.Entries.Count; i++) { if (bxlan.AnimationInfo.Entries[i].Name == item.Text) { AnimEditor.LoadAnimationEntry(bxlan, bxlan.AnimationInfo.Entries[i]); } } } }
public void AddAnimation(BxlanHeader header) { if (!PartAnimations.ContainsKey(header.FileName)) { PartAnimations.Add(header.FileName, header); } }
public void ShowBxlanEditor(BxlanHeader bxlan) { LayoutDocked dock = new LayoutDocked(); LayoutAnimEditorBasic editor = new LayoutAnimEditorBasic(); editor.LoadAnim(bxlan, ActiveLayout); editor.OnPropertyChanged += AnimPropertyChanged; editor.Dock = DockStyle.Fill; dock.Controls.Add(editor); dock.Show(this); /* if (LayoutAnimEditor != null) { * LayoutAnimEditor.LoadFile(bxlan.GetGenericAnimation()); * return; * } * * LayoutAnimEditor = new LayoutAnimEditor(); * AnimationPanel.OnNodeSelected = LayoutAnimEditor.OnNodeSelected; * LayoutAnimEditor.LoadFile(bxlan.GetGenericAnimation()); * if (LayoutHierarchy != null) * LayoutAnimEditor.Show(LayoutHierarchy.Pane, DockAlignment.Bottom, 0.5); * else * LayoutAnimEditor.Show(dockPanel1, DockState.DockRight);*/ }
public void LoadAnimations(BxlanHeader bxlan, TreeNode root, bool LoadRoot = true) { ActiveAnim = bxlan; if (LoadRoot) { treeView1.Nodes.Add(root); } if (bxlan is BxlanHeader) { var header = bxlan as BxlanHeader; var pat1 = new TreeNode("Tag Info") { Tag = header.AnimationTag }; var pai1 = new AnimInfoWrapper("Animation Info", ParentLayout) { Tag = header.AnimationInfo }; for (int i = 0; i < header.AnimationInfo.Entries.Count; i++) { LoadAnimationEntry(header.AnimationInfo.Entries[i], pai1); } root.Nodes.Add(pat1); root.Nodes.Add(pai1); } }
private void animationCB_SelectedIndexChanged(object sender, EventArgs e) { treeView1.Nodes.Clear(); if (animationCB.SelectedIndex >= 0) { AnimationComboboxItem item = (AnimationComboboxItem)animationCB.SelectedItem; BxlanHeader bxlan = null; if (item.Tag is ArchiveFileInfo) { var fileFormat = ((ArchiveFileInfo)item.Tag).OpenFile(); bxlan = ((BXLAN)fileFormat).BxlanHeader; } else { bxlan = (BxlanHeader)item.Tag; } if (bxlan == null || ActiveAnim == bxlan) { return; } ActiveAnim = bxlan; for (int i = 0; i < bxlan.AnimationInfo.Entries.Count; i++) { if (bxlan.AnimationInfo.Entries[i].Name == ActivePane.Name) { PopulateTreeview(bxlan, bxlan.AnimationInfo.Entries[i]); } } } }
public void LoadAnim(BxlanHeader bxlan, BxlytHeader parentLayout = null) { ParentLayout = parentLayout; LoadAnimations(bxlan, new TreeNode(bxlan.FileName) { Tag = bxlan }); }
public override void OnExpand() { if (Expanded) { return; } var layoutFile = (BxlytHeader)Tag; Nodes.Clear(); Expanded = true; var animations = ParentEditor.AnimationFiles; foreach (var pane in layoutFile.PaneLookup.Values) { string matName = ""; //Find materials var mat = pane.TryGetActiveMaterial(); if (mat != null) { matName = mat.Name; } //search archive var archive = layoutFile.FileInfo.IFileInfo.ArchiveParent; if (archive != null) { foreach (var file in archive.Files) { if (Utils.GetExtension(file.FileName) == ".bflan" && !animations.Any(x => x.FileName == file.FileName)) { if (BxlanHeader.ContainsEntry(file.FileData, new string[2] { pane.Name, matName })) { var paneNode = CreatePaneWrapper(pane); Nodes.Add(paneNode); } } } } //Search opened animations for (int i = 0; i < animations?.Count; i++) { if (animations[i].ContainsEntry(pane.Name) || animations[i].ContainsEntry(matName)) { var paneNode = CreatePaneWrapper(pane); Nodes.Add(paneNode); } } } }
public void LoadBxlan(BxlanHeader header) { AnimationFiles.Add(header); ActiveAnimation = header; ShowAnimationHierarchy(); ShowPropertiesPanel(); LayoutAnimList.LoadAnimation(ActiveAnimation); isLoaded = true; }
private void SearchActiveAnimations(BasePane pane) { Console.WriteLine($"SearchActiveAnimations {pane.Name} {pane.LayoutFile == null}"); if (pane.LayoutFile == null) { return; } var animations = GetAnimations(); var material = pane.TryGetActiveMaterial(); string matName = material != null ? material.Name : ""; var archive = pane.LayoutFile.FileInfo.IFileInfo.ArchiveParent; if (archive != null) { foreach (var file in archive.Files) { string ext = Utils.GetExtension(file.FileName); bool isBxlan = ext == ".bflan" || ext == ".bclan" || ext == ".brlan"; if (isBxlan && !animations.Any(x => x.FileName == file.FileName)) { if (BxlanHeader.ContainsEntry(file.FileData, new string[2] { pane.Name, matName })) { animationCB.Items.Add(new AnimationComboboxItem(file.FileName) { Tag = file }); } } } } for (int i = 0; i < animations?.Count; i++) { if (animations[i].ContainsEntry(pane.Name) || animations[i].ContainsEntry(matName)) { animationCB.Items.Add(new AnimationComboboxItem(animations[i].FileName) { Tag = animations[i] }); } } if (animationCB.Items.Count > 0) { animationCB.SelectedIndex = 0; } }
private void UpdateAnimationPlayer(BxlanHeader animHeader) { if (AnimationPanel == null) { return; } if (ActiveLayout != null) { AnimationPanel.AddAnimation(animHeader.ToGenericAnimation(ActiveLayout), false); // foreach (var anim in AnimationFiles) // AnimationPanel.AddAnimation(anim.ToGenericAnimation(ActiveLayout), false); } }
public void LoadAnimation(BxlanHeader bxlan) { isLoaded = false; listView1.BeginUpdate(); listView1.Items.Add(new ListViewItem(bxlan.FileName) { Tag = bxlan, ImageKey = "LayoutAnimation", }); listView1.Sort(); listView1.EndUpdate(); isLoaded = true; }
public PaiTag(FileReader reader, BxlanHeader header, AnimationTarget target) { if ((byte)target == 2) { Unknown = reader.ReadUInt32(); //This doesn't seem to be included in the offsets to the entries (?) } long startPos = reader.Position; Tag = reader.ReadString(4, Encoding.ASCII); var numEntries = reader.ReadByte(); reader.Seek(3); var offsets = reader.ReadUInt32s((int)numEntries); for (int i = 0; i < numEntries; i++) { reader.SeekBegin(startPos + offsets[i]); switch (Tag) { case "CLPA": Entries.Add(new LPATagEntry(reader, header)); break; case "CLTS": Entries.Add(new LTSTagEntry(reader, header)); break; case "CLVI": Entries.Add(new LVITagEntry(reader, header)); break; case "CLVC": Entries.Add(new LVCTagEntry(reader, header)); break; case "CLMC": Entries.Add(new LMCTagEntry(reader, header)); break; case "CLTP": Entries.Add(new LTPTagEntry(reader, header)); break; default: Entries.Add(new BxlanPaiTagEntry(reader, header)); break; } } }
public void LoadPane(BasePane pane, PaneEditor paneEditor) { ParentEditor = paneEditor; var animations = ParentEditor.GetAnimations(); var material = pane.TryGetActiveMaterial(); string matName = material != null ? material.Name : ""; listViewCustom1.Items.Clear(); var archive = pane.LayoutFile.FileInfo.IFileInfo.ArchiveParent; if (archive != null) { foreach (var file in archive.Files) { if (Utils.GetExtension(file.FileName) == ".bflan" && !animations.Any(x => x.FileName == file.FileName)) { if (BxlanHeader.ContainsEntry(file.FileData, new string[2] { pane.Name, matName })) { listViewCustom1.Items.Add(new ListViewItem(file.FileName) { Tag = file }); } } } } for (int i = 0; i < animations?.Count; i++) { if (animations[i].ContainsEntry(pane.Name) || animations[i].ContainsEntry(matName)) { listViewCustom1.Items.Add(new ListViewItem(animations[i].FileName) { Tag = animations[i] }); } } LayoutAnimEditorBasic editor = new LayoutAnimEditorBasic(); stPanel1.Controls.Add(editor); }
public LytAnimation(BxlanHeader header, BxlytHeader layout) { parentLayout = layout; BxlanAnimation = header; Name = header.FileName; FrameCount = (uint)header.AnimationTag.EndFrame; StartFrame = (uint)header.AnimationTag.StartFrame; Textures.Clear(); AnimGroups.Clear(); foreach (var tex in header.AnimationInfo.Textures) { Textures.Add(tex); } foreach (var tag in header.AnimationInfo.Entries) { AnimGroups.Add(new LytAnimGroup(tag)); } }
public LytAnimation(BxlanHeader header, BxlytHeader layout) { parentLayout = layout; BxlanAnimation = header; Name = header.FileName; FrameCount = (uint)header.AnimationTag.EndFrame; StartFrame = (uint)header.AnimationTag.StartFrame; if (StartFrame == 0 && FrameCount == 0) { foreach (var tag in header.AnimationInfo.Entries) { foreach (var tagEntry in tag.Tags) { foreach (var subEntry in tagEntry.Entries) { StartFrame = Math.Min(FrameCount, subEntry.KeyFrames.Min(x => x.Frame)); FrameCount = Math.Max(FrameCount, subEntry.KeyFrames.Max(x => x.Frame)); } } } } Console.WriteLine($"FrameSize {BxlanAnimation.AnimationInfo.FrameSize}"); Console.WriteLine($"FrameCount {FrameCount}"); Textures.Clear(); AnimGroups.Clear(); foreach (var tex in header.AnimationInfo.Textures) { Textures.Add(tex); } foreach (var tag in header.AnimationInfo.Entries) { AnimGroups.Add(new LytAnimGroup(tag)); } }
public void LoadAnimationEntry(BxlanHeader bxlan, BxlanPaiEntry entry) { ActiveAnim = bxlan; LoadAnimationEntry(entry, null); }
public void Save(System.IO.Stream stream) { BxlanHeader.Write(new FileWriter(stream)); }
public void LoadAnimationEntry(BxlanHeader bxlan, BxlanPaiEntry entry) { ActiveAnim = bxlan; LayoutAnimTreeLoader.LoadAnimationEntry(entry, null, treeView1); }
private void PopulateTreeview(BxlanHeader anim, BxlanPaiEntry entry) { treeView1.Nodes.Clear(); LayoutAnimTreeLoader.LoadAnimationEntry(entry, null, treeView1); treeView1.ExpandAll(); }