AppModel: Don't rebuild on re-use if not necessary

This commit is contained in:
Katy Coe
2020-11-26 14:03:31 +01:00
parent ccf56385d8
commit c758b122be

View File

@@ -122,6 +122,11 @@ namespace Il2CppInspector.Model
// (via the constructor of CppDeclarationGenerator, in InheritanceStyle) // (via the constructor of CppDeclarationGenerator, in InheritanceStyle)
// If no target C++ compiler is specified, it will be set to match the one assumed to have been used to compile the binary // If no target C++ compiler is specified, it will be set to match the one assumed to have been used to compile the binary
public AppModel Build(UnityVersion unityVersion = null, CppCompilerType compiler = CppCompilerType.BinaryFormat, bool silent = false) { public AppModel Build(UnityVersion unityVersion = null, CppCompilerType compiler = CppCompilerType.BinaryFormat, bool silent = false) {
// Don't re-build if not necessary
var targetCompiler = compiler == CppCompilerType.BinaryFormat ? CppCompiler.GuessFromImage(Image) : compiler;
if (UnityVersion == unityVersion && TargetCompiler == targetCompiler)
return this;
// Silent operation if requested // Silent operation if requested
var stdout = Console.Out; var stdout = Console.Out;
if (silent) if (silent)
@@ -133,7 +138,7 @@ namespace Il2CppInspector.Model
Strings.Clear(); Strings.Clear();
// Set target compiler // Set target compiler
TargetCompiler = compiler == CppCompilerType.BinaryFormat ? CppCompiler.GuessFromImage(Image) : compiler; TargetCompiler = targetCompiler;
// Determine Unity version and get headers // Determine Unity version and get headers
UnityHeaders = unityVersion != null ? UnityHeaders.GetHeadersForVersion(unityVersion) : UnityHeaders.GuessHeadersForBinary(TypeModel.Package.Binary).Last(); UnityHeaders = unityVersion != null ? UnityHeaders.GetHeadersForVersion(unityVersion) : UnityHeaders.GuessHeadersForBinary(TypeModel.Package.Binary).Last();