Exemplo n.º 1
0
        private void Load()
        {
            InterpCurveTracks = new List <InterpCurve>();

            var props = CurrentLoadedExport.GetProperties();

            foreach (var prop in props)
            {
                if (prop is StructProperty structProp)
                {
                    if (Enum.TryParse(structProp.StructType, out CurveType _))
                    {
                        InterpCurveTracks.Add(new InterpCurve(CurrentLoadedExport.FileRef, structProp));
                    }
                }
            }

            foreach (var interpCurve in InterpCurveTracks)
            {
                foreach (var curve in interpCurve.Curves)
                {
                    curve.SaveChanges = Commit;
                }
            }

            TrackList.ItemsSource = InterpCurveTracks;
            graph.Paint();
        }
        private void StartBinaryScan()
        {
            BinaryInterpreter_TreeView.Items.Clear();
            byte[]       data         = CurrentLoadedExport.Data;
            int          binarystart  = CurrentLoadedExport.propsEnd();
            TreeViewItem topLevelTree = new TreeViewItem()
            {
                Header     = $"{binarystart:X4} : {CurrentLoadedExport.ObjectName}",
                Tag        = nodeType.Root,
                Name       = "_0",
                IsExpanded = true
            };

            BinaryInterpreter_TreeView.Items.Add(topLevelTree);

            switch (CurrentLoadedExport.ClassName)
            {
            case "WwiseStream":
                Scan_WwiseStream(topLevelTree, data, binarystart);
                break;

            case "WwiseEvent":
                Scan_WwiseEvent(topLevelTree, data, binarystart);
                break;
            }
        }
Exemplo n.º 3
0
        private void Commit()
        {
            var props = CurrentLoadedExport.GetProperties();

            foreach (InterpCurve item in InterpCurveTracks)
            {
                props.AddOrReplaceProp(item.WriteProperties());
            }
            CurrentLoadedExport.WriteProperties(props);
        }
Exemplo n.º 4
0
        private void Load()
        {
            InterpCurveTracks = new List <InterpCurve>();

            var props = CurrentLoadedExport.GetProperties();

            foreach (var prop in props)
            {
                if (prop is StructProperty structProp)
                {
                    if (Enum.TryParse(structProp.StructType, out CurveType _))
                    {
                        InterpCurveTracks.Add(new InterpCurve(CurrentLoadedExport.FileRef, structProp));
                    }
                }
            }

            foreach (var interpCurve in InterpCurveTracks)
            {
                foreach (var curve in interpCurve.Curves)
                {
                    curve.SaveChanges = Commit;
                }
            }

            TrackList.ItemsSource = InterpCurveTracks;
            if (InterpCurveTracks.Count() > 0)
            {
                //TreeView in WPF can be really ugly sometimes
                //Select the first track and display it so the default view isn't empty
                //does not work yet - probably should ask SirC how this tool works
                var tvi = TrackList.ItemContainerGenerator.ContainerFromItem(InterpCurveTracks[0])
                          as TreeViewItem;

                if (tvi != null)
                {
                    tvi.IsSelected = true;
                }
            }
            graph.Paint();
        }
        private void Scan_WwiseStream(TreeViewItem topLevelTree, byte[] data, int binaryStart)
        {
            /*
             *
             *  count +4
             *      stream length in AFC +4
             *      stream length in AFC +4 (repeat)
             *      stream offset in AFC +4
             *
             */


            try
            {
                int pos  = data.Length - 16;
                int unk1 = BitConverter.ToInt32(data, pos);
                topLevelTree.Items.Add(new TreeViewItem()
                {
                    Header = $"{pos:X4} Unknown: {unk1}",
                    Name   = "_" + pos.ToString(),
                });
                pos += 4;
                int length = BitConverter.ToInt32(data, pos);
                topLevelTree.Items.Add(new TreeViewItem()
                {
                    Header = $"{pos:X4} stream length: {length} (0x{length:X})",
                    Name   = "_" + pos.ToString(),
                    Tag    = nodeType.StructLeafInt
                });
                pos   += 4;
                length = BitConverter.ToInt32(data, pos);
                topLevelTree.Items.Add(new TreeViewItem()
                {
                    Header = $"{ pos:X4} stream length: { length} (0x{ length:X})",
                    Name   = "_" + pos.ToString(),
                    Tag    = nodeType.StructLeafInt
                });
                pos += 4;
                int offset = BitConverter.ToInt32(data, pos);
                topLevelTree.Items.Add(new TreeViewItem()
                {
                    Header = $"{pos:X4} stream offset in file: {offset} (0x{offset:X})",
                    Name   = "_" + pos.ToString(),
                    Tag    = nodeType.StructLeafInt
                });
                pos += 4;
                if (pos < data.Length && CurrentLoadedExport.GetProperty <NameProperty>("Filename") == null)
                {
                    topLevelTree.Items.Add(new TreeViewItem()
                    {
                        Header = $"{pos:X4} Embedded sound data. Can be extracted with Soundplorer.",
                        Name   = "_" + pos.ToString(),
                        Tag    = nodeType.Unknown
                    });
                    topLevelTree.Items.Add(new TreeViewItem()
                    {
                        Header = $"The stream offset to this data will be automatically updated when this file is saved.",
                        Tag    = nodeType.Unknown
                    });
                }
            }
            catch (Exception ex)
            {
                topLevelTree.Items.Add(new TreeViewItem()
                {
                    Header = $"Error reading binary data: {ex}"
                });
            }

            //topLevelTree.Expand();
            //treeView1.Nodes[0].Expand();
        }