New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ME3Explorer ME3Tweaks Fork 3.1.2.13 #48

Merged
merged 124 commits into from Sep 30, 2018

Conversation

Projects
None yet
3 participants
@Mgamerz
Owner

Mgamerz commented Sep 8, 2018

ME3Explorer ME3Tweaks Fork 3.1.2.13

This build is a pretty big update from 3.1.2.12. It includes a completely rewritten Soundplorer(WPF), as well as improvements to InterpreterWPF and PackageEditorWPF. There are additionally a few bugfixes, performance, and usability improvements in different areas of the toolset.

You can download this build on the release page.

Changes in this build

SoundplorerWPF

SoundplorerWPF is a complete overhaul of the old Soundplorer. This is not just a WPF version - it has been completely rewritten from scratch.

Overview of some of the changes
Click to play overview of new SoundplorerWPF

Playback of audio

  • PCC-stored audio
  • WwiseBank stored audio (WEM files)
  • ME2 audio

Playback can be performed in both SoundplroerWPF or within PackageEditorWPF through it's Sound tab. The soundpanel control is shared between both tools.

Replacement of audio (ME3 only)

  • From PCM wav directly (WwiseStream and WwiseBank, including PCC-stored)
  • From Wwise-encoded Ogg
    Replacement from PCM wav requires that you have Wwise Build 3773 64-bit installed. Conversion is done to 24000hz. May make this changeable in the future.
    afc_creator is no longer required. I took a look at the source code and implemented a c# version. Essentially AFC creator would adjust the format pieces in the header and cut out 8 bytes of vorbis, so it was pretty simple after figuring out the code.

SoundplorerWPF new tools

  • Batch convert a folder of .wav to Wwise-encoded Ogg
  • Extract all the audio referenced by a file to .wav
  • Extract all WEM's in a soundbank
  • AFC Compactor for DLC mods. Let soundplorer find all referenced audio for you, build a new AFC, and change all references to it. This will effectively remove unused data - you won't need to ship official AFCs anymore, as you can shrink them to only what's needed. As an example, I had to ship most of Omega and Citadel audio in my Rejection mod - which resulted in a 944MB download. After compaction, my mod went to 59MB.

Other stuff for SoundplorerWPF

  • Audio will now loop, as it's played through NAudio instead of the very basic SoundPlayer. You can disable this with the repeat icon to the right of the seek bar.
  • You can now seek playing audio
  • Press Esc to stop the current playing item, spacebar to play or pause the current item. You can double click to play audio as well (though audio must be stopped for this to work, due to some interesting Windows API limitations that I don't feel like working around).
  • Turn on swap ID ordering in the options menu order to view embedded WEM ID's in big endian, which is how it will appear in a hex editor as an order of bytes, if you were to read the hex as a string.

Meshplorer

  • Fixed recents menu not adding items when file was opened from Load or Load from Database. It previously only populated from drag and drop
  • Removed the bottom hexbox as it was literally just an interview
  • Changed default window size to be larger and redistributed panel sizes to be more useful by default
  • Changes code to support loading ME1/ME2 packages. They don't work - so I gated the loading to check if it's ME3, and show a dialog saying we need help with this. This change will make a user who is attempting to help not have to wade through changing the loading code to work with other games, instead just commenting out the gate
  • Slightly faster loading by optimizing memory copying. You will see the most performance increase on the largest (in KB) meshes you are viewing.
  • Better texture lookup handling (Benji
  • Added OBJ Import and multi-material OBJ import. This is not fully stable apparently (Benji)

Pathfinding Editor

  • Added SFXBlockingVolume_Ledge to visible volumes
  • You can now search for nodes by Tag
  • Added sequence reference count for nodes as a toggleable option so you can see which nodes are referenced without having to right click

Binary Interpreter

  • Added Texture2D to list of classes that can be parsed
  • Binary Interpreter will be deprecated in favor of BinaryInterpreterWPF, part of PackageEditorWPF.

Package Editor

  • Relinker will now EXPERIMENTALLY skip upstream relinks when a single import is drag/dropped. When a single item was dropped previously it would attempt to still resolve all upstream links as in the source package, even though it could set the idxLink directly in the new one.
  • Relinker will now continue relinking even with imports that could not be resolved when doing upstream links. Instead of aborting/throwing exception it will now show it in the report instead.
  • Fix unable to save ME1 metadata header from hexbox
  • Added new tool: Compare with another version of PCC. Select another PCC (that is the same type as the loaded one) and it will compare headers/export data, and show you a report of the items that are different. Very useful to see what you've changed. Located in ModMaking menu.

Curve Editor

  • Save button has been removed. This is misleading as it commits the pcc and not the export.
    Internally this control has been significantly changed to be more modular so it can be a tab in

SequenceEditor

  • Show a error message when file being loaded hits an error, rather than throwing the exception dialog (or just crashing in Visual Studio)

PackageEditorWPF

  • Implement SelectItem for TreeView in PackageEditorWPF
  • Indexing is now UnrealIndex based rather than Imports at Negative, Exports at 0+. Now nothing should - be assigned to 0, like unreal does internally.
  • CTRL+F focuses the Find box
  • CTRL+G focuses the Goto box
  • Find and Goto now work in PackageEditorWPF
  • Modified entries are highlighted as yellow with a tooltip stating it has unsaved changes
  • Imports/Exports metadata tab now updates to reflect what can be edited, with proper offsets
  • Focus of combobox or textfield in metadata tab causes highlight in hexbox showing what data is going to be edited
  • Metadata tab has been completely revamped
  • Fixed bug where as data loaded it would say things were modified for Exports/Imports
  • Added Curve Editor to tabs. Will only be visible when Curve Editor can actually be used on that export
  • Press Alt-Left or Alt-Right to change active tabs
  • Ported a basic Bio2DA Editor as a control - written in WPF
  • Supports drag and drop files for loading
  • Supports drag and drop of treeview items between windows for porting
  • Supports relinking of properties
  • Active item in the treeview now highlights as blue and won't change color on focus loss
  • Game ID is now in statusbar
  • Touch comfy mode - treeview items get bigger. Turn on in the menu options
  • Open in... menu now works
  • Implemented wrapping class and searchbox searches
  • Fixed packagefile in metadata not showing because it had .pcc appended internally
  • Fixed other bugs

FaceFX Editor

  • Now supports ME1

InterpreterWPF

  • Hexbox/properties pane splitter is bigger
  • SaveHexChanges now works
  • Active item in the treeview now highlights as blue and won't change color on focus loss
  • Clicking on stuff in properties pane makes it highlight start of property data in hexbox
  • Right click remove property now works
  • Added more stuff for parsing: NoneProperty
  • Can now show array type for ArrayProperty
  • Can now do a basic sorting of ArrayProperty with an ascending sort for values in ArrayProperty types Float, Int, Object.
  • Added an ExportToString converter for ObjectProperties. When an export referenced by objectproperty meets a certain criteria, extra text is shown for that objectproperty. Currently this code is only for LevelStreamingKismet objects - it will show the PackageName from that export.
  • InterpreterWPF will be the main focus of the next build. I plan on rewriting a lot of how the data is displayed to allow more flexibility in feature additions

ExceptionHandlerWPF

  • Now will center to WPF windows when an error occurs from that WPF window. There is no way to center to winforms that throw an exception.

BinaryInterpreterWPF

  • This control is new and will replace BinaryInterpreter
  • Many things from BinaryInterpreter need to be ported into this version, but there is a few classes supported now

Main window

  • Re-implemented the initial setup dialog, however it will only show if no game paths are found. Setup dialog no longer has anything about DLC unpacking - only contains game path stuff
  • Yellow exclamation is shown if a game path is missing
  • Favorited tools when moused over will update the info panel to be consistent
  • Changed the Install Mods panel to Develop Mods and changed tools accordingly
  • You can now scroll a toollist with touch input
  • Fixed search not returning results when you type in the exact name of the item you want to open

Internals

  • Renamed ImportEntry PackageName to PackageFile as it is crazy easy to use the wrong variable
    ME3ObjectInfo generateInfo() now only looks for packages under BIOGame instead of the entire game directory
  • IEntry now has a notification property for data or header changed. This will allow us to tell when an export or import has changed in my new WPF tools so it will consistently highlight changed but unsaved stuff.
  • Decompression code for ME3 will not set the decompressed bit while decompressing into memory. This will keep the loaded data consistent with what is on the disk. This only impacted when a file was attempted to be loaded for direct offset accessing and would not attempt to decompress because the loaded header would say it was decompressed when it was in fact not
  • ME3ObjectInfo generateClassInfo() aborts if the idxClass of the entry is < 0 (an import)
    -Added information about SetFaceFX to the object info database for ME3
  • ExportEntry will not write header or data if it is same as it previously was, preventing DataChanged from being set and its side effects.
  • Updated oggdec, ww2ogg (recompiled by me to implement a patch) executables
  • Security update to address the Zip-Slip CVE
  • Now targets .NET 4.7.2 and thus requires it
  • Performance improvements in a few areas dealing with copying memory

Thanks to Benji, Kinkojiro and SirCyxrtyx for helping test and provide code for this build. Thanks to Orikon for reporting issues.

epicabsol and others added some commits Apr 23, 2018

Merge pull request #1 from Mgamerz/Beta
Get up to date with Mgamerz Beta
Remove WPFHexaEditor as it is not stable. Significant improvements to…
… PackageEditorWPF metadata editor, InterpreterWPF, extensions to Be.HexBox, refactored some of Import/ExportEntry header stuff to be consistent with the rest of the framework, make some properties store additional information for propertycollection
@Mgamerz

This comment has been minimized.

Show comment
Hide comment
@Mgamerz

Mgamerz Jun 9, 2018

Owner
  • Implement SelectItem for TreeView in PackageEditorWPF
  • PackageEditorWPF indexing is now UnrealIndex based rather than Imports at Negative, Exports at 0+. Now nothing should be assigned to 0, like unreal. This will need to be redone as 0-based for handleUpdate() as other tools run on 0-based
  • CTRL+F focuses the Find box
  • CTRL+G focuses the Goto box
  • Modified entries(only by that tool's instance) are highlighted as yellow with a tooltip stating it has unsaved changes
  • HasUnsavedChanges for ExportEntry now includes header changes
  • InterpreterWPF splitter is bigger
  • InterpreterWPF SaveHexChanges now works
  • Implemented some more property parsing text
  • Clicking on stuff in interpreterWPF makes it highlight start of property. May change to highlight the value of the property instead with right click menu for go to start
  • Imports/Exports metadata tab now updates to reflect what can be edited, with proper offsets
  • Focus of combobox or textfield in metadata tab causes highlight in hexbox showing what data is going to be edited
  • Find and Goto now work in PackageEditorWPF
  • Pretty much completely redid Metadata tab
  • Fixed bug where as data loaded it would say things were modified for Exports/Imports
Owner

Mgamerz commented on f9f9353 Jun 9, 2018

  • Implement SelectItem for TreeView in PackageEditorWPF
  • PackageEditorWPF indexing is now UnrealIndex based rather than Imports at Negative, Exports at 0+. Now nothing should be assigned to 0, like unreal. This will need to be redone as 0-based for handleUpdate() as other tools run on 0-based
  • CTRL+F focuses the Find box
  • CTRL+G focuses the Goto box
  • Modified entries(only by that tool's instance) are highlighted as yellow with a tooltip stating it has unsaved changes
  • HasUnsavedChanges for ExportEntry now includes header changes
  • InterpreterWPF splitter is bigger
  • InterpreterWPF SaveHexChanges now works
  • Implemented some more property parsing text
  • Clicking on stuff in interpreterWPF makes it highlight start of property. May change to highlight the value of the property instead with right click menu for go to start
  • Imports/Exports metadata tab now updates to reflect what can be edited, with proper offsets
  • Focus of combobox or textfield in metadata tab causes highlight in hexbox showing what data is going to be edited
  • Find and Goto now work in PackageEditorWPF
  • Pretty much completely redid Metadata tab
  • Fixed bug where as data loaded it would say things were modified for Exports/Imports

Mgamerz and others added some commits Jun 15, 2018

Merge pull request #44 from epicabsol/Beta
Added OBJ import & export to Meshplorer.
Cleanup some errors in interpreter. Try/Catch in loadsequences for se…
…quenceeditor to prevent program exit in Visual Studio. PackageEditor Relinker will now EXPERIMENTALLY skip upstream relinks when a single import is drag/dropped. May require testing if its the top node instead.
Fixed multi-material OBJ import.
Also reworked the section treenode text to be actually useful.
Relinker now does not stop when parent of import is export, handling …
…the exception and putting it into the relink report. This doesn't fix the issue, but will notify user that htey must do work before attempting to move this tree.
Refactor packagename to packagefile to clear up confusing variable na…
…me. Bump version number. Change how custom class parsing is done by doing a sublevel search.
Added temp workaround for ME1 save header changes not having right si…
…ze for header. Added temp tool for materialinstance searching (Will remove). Added a export comparison tool so you can semi-easily figure out what's changed between two versions of a PCC.
sync commit -package editor wpf refreshes datachanged on handleupdate…
…, interpreterwpf removeproperty for arrayproperty now works
sync commit - Curve Editor added to PackageEditorWPF as a tab and wil…
…l show only when usable. Changed CurveEditor to a usercontrol and added a wrapper host around it to keep current functionality intact. ExportEntry now will not write Data value if the data is the same as the old, preventing side effects from triggering.
InterpreterWPF: If ObjProperty == 0, set to null (instead of out of b…
…ounds). PAckageEditorWPF: Add a bunch of drag/drop boilerplate code for treeviewitems. Make generateInfo() for UnrealObjectInfo ME3 only look in Biogame to avoid seeing cmmbackup folder. Update UnrealObjectInfo for ME3 to have info on a new custom class by a dev: SetFaceFX.

Mgamerz and others added some commits Sep 26, 2018

SoundplroerWPF: Spacebar to play/pause the current loaded track. Will…
… need to find a way to unload the current one, not sure which key yet
Fix output label to highlight 64bit
Fix output label to highlight 64bit
Fix PackageEditorWPF file porting to work with new databinding-only b…
…acking data type (TreeViewEntry). Make post-port resort the children tree.
Remove optimizations for DataChanged, HeaderChanged in ExportEntry/Im…
…portEntry as they prevent tool refresh in some cases.
Soundpanel: Add ability to toggle repeat/no repeat. Defaults to on. S…
…yncs and persists across all panel instances
SoundplorerWPF: Cache and track what is currently playing so we know …
…if we should reload when we press play again
Implement double click to play. WIndows API can call an internal exce…
…ption (which will prevent playing) if the previous one has not finished, unfortuantely it is unavoidable.

@Mgamerz Mgamerz merged commit 3d69934 into master Sep 30, 2018

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment