Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 13 additions & 5 deletions AssetsTools.NET.Cpp2IL/Cpp2IlTempGenerator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
using LibCpp2IL.Metadata;
using LibCpp2IL.Reflection;
using System;
using System.IO;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
Expand All @@ -14,16 +15,23 @@ namespace AssetsTools.NET.Cpp2IL
{
public class Cpp2IlTempGenerator : IMonoBehaviourTemplateGenerator
{
private readonly string _globalMetadataPath;
private readonly string _assemblyPath;
private readonly byte[] _globalMetadataBytes;
private readonly byte[] _assemblyBytes;
private ATUnityVersion _unityVersion;
private bool _initialized;
private bool _anyFieldIsManagedReference;

public Cpp2IlTempGenerator(string globalMetadataPath, string assemblyPath)
{
_globalMetadataPath = globalMetadataPath;
_assemblyPath = assemblyPath;
_globalMetadataBytes = File.ReadAllBytes(globalMetadataPath);
_assemblyBytes = File.ReadAllBytes(assemblyPath);
ResetCpp2IL();
}

public Cpp2IlTempGenerator(byte[] globalMetadataBytes, byte[] assemblyBytes)
{
_globalMetadataBytes = globalMetadataBytes;
_assemblyBytes = assemblyBytes;
ResetCpp2IL();
}

Expand Down Expand Up @@ -63,7 +71,7 @@ public void SetUnityVersion(int major, int minor, int patch)
public void InitializeCpp2IL()
{
ARUnityVersion arUnityVersion = ARUnityVersion.Parse(_unityVersion.ToString());
if (!LibCpp2IlMain.LoadFromFile(_assemblyPath, _globalMetadataPath, arUnityVersion))
if (!LibCpp2IlMain.Initialize(_assemblyBytes, _globalMetadataBytes, arUnityVersion))
{
throw new Exception("Cpp2Il initialization failed");
}
Expand Down