Scanning can now be performed multiple times, and the results can optionally be cleared from the File menu.
PreviewForm now runs on the main thread (Main now requires STAThread attribute).
PreviewForm is the form that brings up the ScannerForm or tells Program to start scanning with command line arguments (Program will state if this is necessary with HasCommandLineArguments).
Passing null arguments to Program.Initialise will no longer show the usage. HOWEVER, calling Initialise again is not expected behavior.
Program.Logger is never reconstructed. Instead, the Logger's arguments can be changed at the start of ScanAsync. If LogToFile was false before, then it will open a new file to write to if needed.
PreviewForm's refresh action assigned in program now only passes items that were recently scanned since the last refresh. With this, PreviewForm no longer checks if the items are already in the list, since that should be impossible unless PreviewForm adds items obtained from Program.GetResults.
Program.All properties are no longer accessible, and instead GetResults should be used to return a new array of the results. This means it's possible to get these while a scan is still in progress. And as such, RootEntitySelectorEditor and SelectRootEntityDialog now allow doing so with a scan in progress.
Other changes
Renamed Program.DoScan to ScanAsync. Also Added ScanCommandLineAsync.
Removed selectedPath argument from ModelExporters, and path/filter arguments from Program.ScanAsync. The options parameter should now specify the path and/or filters.
Settings file now uses exe name instead of hardcoded "PSXPrev".
Changed Settings.AutoSelectAnimationModel default to true.
Added settings for Logger line colors (json only).
Settings.Load and LoadDefaults now only save the settings file if one doesn't already exist.
Added Settings.ValidateEnum helper.
Fix TMDBindingsForm throwing error with null Animation. PreviewForm now makes _curAnimation is non-null before calling ShowTool.
ScannerForm now uses the same pattern for executing as ExportModelsForm. The scan button has been given a dialog result, and the FormClosed event is now where the Scan action is executed.
Multiple scans changes
Other changes