From 77c6635eda3c422eb24ac0e94daa76a873fbf197 Mon Sep 17 00:00:00 2001 From: walon Date: Tue, 27 May 2025 20:20:49 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8D=E6=B7=B7=E6=B7=86DOTS=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SymbolObfus/Policies/UnityRenamePolicy.cs | 51 +++++++++++-------- .../Editor/Utils/MetaUtil.cs | 5 ++ 2 files changed, 35 insertions(+), 21 deletions(-) diff --git a/com.code-philosophy.obfuz/Editor/ObfusPasses/SymbolObfus/Policies/UnityRenamePolicy.cs b/com.code-philosophy.obfuz/Editor/ObfusPasses/SymbolObfus/Policies/UnityRenamePolicy.cs index e3990b4..2c7b53a 100644 --- a/com.code-philosophy.obfuz/Editor/ObfusPasses/SymbolObfus/Policies/UnityRenamePolicy.cs +++ b/com.code-philosophy.obfuz/Editor/ObfusPasses/SymbolObfus/Policies/UnityRenamePolicy.cs @@ -144,6 +144,10 @@ namespace Obfuz.ObfusPasses.SymbolObfus.Policies { return true; } + if (MetaUtil.HasBurstCompileAttribute(typeDef)) + { + return true; + } if (typeDef.DeclaringType != null) { return IsUnitySourceGeneratedAssemblyType(typeDef.DeclaringType); @@ -151,13 +155,34 @@ namespace Obfuz.ObfusPasses.SymbolObfus.Policies return false; } + private bool DoesDeclaringTypeDisableAllMemberRenaming(TypeDef typeDef) + { + if (typeDef.IsEnum && MetaUtil.HasBlackboardEnumAttribute(typeDef)) + { + return true; + } + if (IsUnitySourceGeneratedAssemblyType(typeDef)) + { + return true; + } + if (MetaUtil.IsInheritFromDOTSTypes(typeDef)) + { + return true; + } + if (IsUnitySourceGeneratedAssemblyType(typeDef)) + { + return true; + } + return false; + } + public override bool NeedRename(TypeDef typeDef) { if (MetaUtil.IsScriptType(typeDef)) { return false; } - if (MetaUtil.IsInheritFromDOTSTypes(typeDef)) + if (DoesDeclaringTypeDisableAllMemberRenaming(typeDef)) { return false; } @@ -165,14 +190,6 @@ namespace Obfuz.ObfusPasses.SymbolObfus.Policies { return false; } - if (typeDef.IsEnum && MetaUtil.HasBlackboardEnumAttribute(typeDef)) - { - return false; - } - if (IsUnitySourceGeneratedAssemblyType(typeDef)) - { - return false; - } return true; } @@ -183,7 +200,7 @@ namespace Obfuz.ObfusPasses.SymbolObfus.Policies { return false; } - if (MetaUtil.IsInheritFromDOTSTypes(typeDef)) + if (DoesDeclaringTypeDisableAllMemberRenaming(typeDef)) { return false; } @@ -191,9 +208,9 @@ namespace Obfuz.ObfusPasses.SymbolObfus.Policies { return false; } - if (IsUnitySourceGeneratedAssemblyType(typeDef)) + if (MetaUtil.HasBurstCompileAttribute(methodDef)) { - return false; + return true; } return true; } @@ -205,15 +222,7 @@ namespace Obfuz.ObfusPasses.SymbolObfus.Policies { return !MetaUtil.IsSerializableField(fieldDef); } - if (MetaUtil.IsInheritFromDOTSTypes(typeDef)) - { - return false; - } - if (typeDef.IsEnum && MetaUtil.HasBlackboardEnumAttribute(typeDef)) - { - return false; - } - if (IsUnitySourceGeneratedAssemblyType(typeDef)) + if (DoesDeclaringTypeDisableAllMemberRenaming(typeDef)) { return false; } diff --git a/com.code-philosophy.obfuz/Editor/Utils/MetaUtil.cs b/com.code-philosophy.obfuz/Editor/Utils/MetaUtil.cs index 0da450a..3576821 100644 --- a/com.code-philosophy.obfuz/Editor/Utils/MetaUtil.cs +++ b/com.code-philosophy.obfuz/Editor/Utils/MetaUtil.cs @@ -984,5 +984,10 @@ namespace Obfuz.Utils { return typeDef.CustomAttributes.Find("Unity.Behavior.BlackboardEnumAttribute") != null; } + + public static bool HasBurstCompileAttribute(IHasCustomAttribute obj) + { + return obj.CustomAttributes.Find("Unity.Burst.BurstCompileAttribute") != null; + } } }