(directClassRoot: SymbolNode)
| 89 | } |
| 90 | |
| 91 | function createUnityClassTree(directClassRoot: SymbolNode): SymbolNode { |
| 92 | const root: SymbolNode = Object.create(null); |
| 93 | let classCount = 0; |
| 94 | let methodCount = 0; |
| 95 | |
| 96 | try { |
| 97 | for (const assembly of Il2Cpp.domain.assemblies) { |
| 98 | for (const klass of assembly.image.classes) { |
| 99 | rememberIl2CppClass(klass); |
| 100 | classCount++; |
| 101 | const classNode = getOrCreateClassNode(root, klass); |
| 102 | methodCount += addMethods(classNode, klass); |
| 103 | defineUniqueValue(directClassRoot, sanitizeIdentifier(klass.name), classNode); |
| 104 | } |
| 105 | } |
| 106 | } catch (error) { |
| 107 | log(`[sym] failed to build Unity metadata symbols: ${String(error)}`, "red"); |
| 108 | } |
| 109 | |
| 110 | defineList(root); |
| 111 | log(`[sym] unity classes=${classCount} methods=${methodCount}`, "gray"); |
| 112 | return root; |
| 113 | } |
| 114 | |
| 115 | function getOrCreateClassNode(root: SymbolNode, klass: Il2Cpp.Class): SymbolNode { |
| 116 | const namespace = klass.namespace ?? ""; |
no test coverage detected