Ejemplo n.º 1
0
        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]);
                    }
                }
            }
        }
Ejemplo n.º 2
0
 public void AddAnimation(BxlanHeader header)
 {
     if (!PartAnimations.ContainsKey(header.FileName))
     {
         PartAnimations.Add(header.FileName, header);
     }
 }
Ejemplo n.º 3
0
        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);*/
        }
Ejemplo n.º 4
0
        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);
            }
        }
Ejemplo n.º 5
0
        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]);
                    }
                }
            }
        }
Ejemplo n.º 6
0
 public void LoadAnim(BxlanHeader bxlan, BxlytHeader parentLayout = null)
 {
     ParentLayout = parentLayout;
     LoadAnimations(bxlan, new TreeNode(bxlan.FileName)
     {
         Tag = bxlan
     });
 }
Ejemplo n.º 7
0
            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);
                        }
                    }
                }
            }
Ejemplo n.º 8
0
        public void LoadBxlan(BxlanHeader header)
        {
            AnimationFiles.Add(header);
            ActiveAnimation = header;

            ShowAnimationHierarchy();
            ShowPropertiesPanel();
            LayoutAnimList.LoadAnimation(ActiveAnimation);

            isLoaded = true;
        }
Ejemplo n.º 9
0
        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;
            }
        }
Ejemplo n.º 10
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);
            }
        }
Ejemplo n.º 11
0
        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;
        }
Ejemplo n.º 12
0
            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;
                    }
                }
            }
Ejemplo n.º 13
0
        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);
        }
Ejemplo n.º 14
0
        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));
            }
        }
Ejemplo n.º 15
0
        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));
            }
        }
Ejemplo n.º 16
0
 public void LoadAnimationEntry(BxlanHeader bxlan, BxlanPaiEntry entry)
 {
     ActiveAnim = bxlan;
     LoadAnimationEntry(entry, null);
 }
Ejemplo n.º 17
0
 public void Save(System.IO.Stream stream)
 {
     BxlanHeader.Write(new FileWriter(stream));
 }
Ejemplo n.º 18
0
 public void LoadAnimationEntry(BxlanHeader bxlan, BxlanPaiEntry entry)
 {
     ActiveAnim = bxlan;
     LayoutAnimTreeLoader.LoadAnimationEntry(entry, null, treeView1);
 }
Ejemplo n.º 19
0
 private void PopulateTreeview(BxlanHeader anim, BxlanPaiEntry entry)
 {
     treeView1.Nodes.Clear();
     LayoutAnimTreeLoader.LoadAnimationEntry(entry, null, treeView1);
     treeView1.ExpandAll();
 }