From 9b2c85bcae4e10b9c21ce75d65abb9903e869427 Mon Sep 17 00:00:00 2001 From: Perfare Date: Fri, 14 Aug 2020 00:02:59 +0800 Subject: [PATCH] Refactor MonoBehaviour reading --- AssetStudio/Classes/MonoScript.cs | 2 +- AssetStudio/Classes/Object.cs | 1 - AssetStudio/TypeTreeHelper.cs | 12 +- AssetStudio/TypeTreeNode.cs | 10 + AssetStudioGUI/AssetStudioGUIForm.cs | 9 +- AssetStudioGUI/Exporter.cs | 2 +- AssetStudioGUI/Studio.cs | 21 +- AssetStudioUtility/AssemblyLoader.cs | 53 ++ AssetStudioUtility/AssetStudioUtility.csproj | 21 +- AssetStudioUtility/Libraries/Unity.Cecil.dll | Bin 0 -> 347136 bytes .../Libraries/Unity.CecilTools.dll | Bin 0 -> 11776 bytes .../Libraries/Unity.SerializationLogic.dll | Bin 0 -> 20992 bytes AssetStudioUtility/MonoBehaviourConverter.cs | 24 + AssetStudioUtility/MyAssemblyResolver.cs | 12 + AssetStudioUtility/ScriptDumper.cs | 492 ------------------ AssetStudioUtility/SerializedTypeHelper.cs | 281 ++++++++++ AssetStudioUtility/TypeDefinitionConverter.cs | 307 +++++++++++ AssetStudioUtility/packages.config | 4 - 18 files changed, 727 insertions(+), 524 deletions(-) create mode 100644 AssetStudioUtility/AssemblyLoader.cs create mode 100644 AssetStudioUtility/Libraries/Unity.Cecil.dll create mode 100644 AssetStudioUtility/Libraries/Unity.CecilTools.dll create mode 100644 AssetStudioUtility/Libraries/Unity.SerializationLogic.dll create mode 100644 AssetStudioUtility/MonoBehaviourConverter.cs create mode 100644 AssetStudioUtility/MyAssemblyResolver.cs delete mode 100644 AssetStudioUtility/ScriptDumper.cs create mode 100644 AssetStudioUtility/SerializedTypeHelper.cs create mode 100644 AssetStudioUtility/TypeDefinitionConverter.cs delete mode 100644 AssetStudioUtility/packages.config diff --git a/AssetStudio/Classes/MonoScript.cs b/AssetStudio/Classes/MonoScript.cs index 9c696f8..cea9e89 100644 --- a/AssetStudio/Classes/MonoScript.cs +++ b/AssetStudio/Classes/MonoScript.cs @@ -8,7 +8,7 @@ namespace AssetStudio public sealed class MonoScript : NamedObject { public string m_ClassName; - public string m_Namespace = string.Empty; + public string m_Namespace; public string m_AssemblyName; public MonoScript(ObjectReader reader) : base(reader) diff --git a/AssetStudio/Classes/Object.cs b/AssetStudio/Classes/Object.cs index 039bd57..835b5bf 100644 --- a/AssetStudio/Classes/Object.cs +++ b/AssetStudio/Classes/Object.cs @@ -43,7 +43,6 @@ namespace AssetStudio public string Dump() { - reader.Reset(); if (serializedType?.m_Nodes != null) { var sb = new StringBuilder(); diff --git a/AssetStudio/TypeTreeHelper.cs b/AssetStudio/TypeTreeHelper.cs index 6f28bdf..8b66325 100644 --- a/AssetStudio/TypeTreeHelper.cs +++ b/AssetStudio/TypeTreeHelper.cs @@ -1,19 +1,23 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.IO; -using System.Linq; using System.Text; namespace AssetStudio { public static class TypeTreeHelper { - public static void ReadTypeString(StringBuilder sb, List members, BinaryReader reader) + public static void ReadTypeString(StringBuilder sb, List members, ObjectReader reader) { + reader.Reset(); for (int i = 0; i < members.Count; i++) { ReadStringValue(sb, members, reader, ref i); } + var readed = reader.Position - reader.byteStart; + if (readed != reader.byteSize) + { + Logger.Error($"Error while read type, read {readed} bytes but expected {reader.byteSize} bytes"); + } } private static void ReadStringValue(StringBuilder sb, List members, BinaryReader reader, ref int i) diff --git a/AssetStudio/TypeTreeNode.cs b/AssetStudio/TypeTreeNode.cs index 642612e..f2e5aea 100644 --- a/AssetStudio/TypeTreeNode.cs +++ b/AssetStudio/TypeTreeNode.cs @@ -18,5 +18,15 @@ namespace AssetStudio public uint m_TypeStrOffset; public uint m_NameStrOffset; public ulong m_RefTypeHash; + + public TypeTreeNode() { } + + public TypeTreeNode(string type, string name, int level, bool align) + { + m_Type = type; + m_Name = name; + m_Level = level; + m_MetaFlag = align ? 0x4000 : 0; + } } } diff --git a/AssetStudioGUI/AssetStudioGUIForm.cs b/AssetStudioGUI/AssetStudioGUIForm.cs index be1b5ec..89d624d 100644 --- a/AssetStudioGUI/AssetStudioGUIForm.cs +++ b/AssetStudioGUI/AssetStudioGUIForm.cs @@ -930,7 +930,7 @@ namespace AssetStudioGUI private void PreviewMonoBehaviour(MonoBehaviour m_MonoBehaviour) { - PreviewText(m_MonoBehaviour.Dump() ?? GetScriptString(m_MonoBehaviour.reader)); + PreviewText(m_MonoBehaviour.Dump() ?? DeserializeMonoBehaviour(m_MonoBehaviour)); } private void PreviewFont(Font m_Font) @@ -1192,6 +1192,7 @@ namespace AssetStudioGUI { Text = $"AssetStudioGUI v{Application.ProductVersion}"; assetsManager.Clear(); + assemblyLoader.Clear(); exportableAssets.Clear(); visibleAssets.Clear(); sceneTreeView.Nodes.Clear(); @@ -1221,12 +1222,6 @@ namespace AssetStudioGUI } FMODreset(); - - if (scriptDumper != null) - { - scriptDumper.Dispose(); - scriptDumper = null; - } } private void assetListView_MouseClick(object sender, MouseEventArgs e) diff --git a/AssetStudioGUI/Exporter.cs b/AssetStudioGUI/Exporter.cs index c24f133..fd7a9b1 100644 --- a/AssetStudioGUI/Exporter.cs +++ b/AssetStudioGUI/Exporter.cs @@ -116,7 +116,7 @@ namespace AssetStudioGUI if (!TryExportFile(exportPath, item, ".txt", out var exportFullPath)) return false; var m_MonoBehaviour = (MonoBehaviour)item.Asset; - var str = m_MonoBehaviour.Dump() ?? Studio.GetScriptString(item.Asset.reader); + var str = m_MonoBehaviour.Dump() ?? Studio.DeserializeMonoBehaviour(m_MonoBehaviour); File.WriteAllText(exportFullPath, str); return true; } diff --git a/AssetStudioGUI/Studio.cs b/AssetStudioGUI/Studio.cs index d0fb49f..ae5706c 100644 --- a/AssetStudioGUI/Studio.cs +++ b/AssetStudioGUI/Studio.cs @@ -5,6 +5,7 @@ using System.Diagnostics; using System.Globalization; using System.IO; using System.Linq; +using System.Text; using System.Threading; using System.Windows.Forms; using static AssetStudioGUI.Exporter; @@ -22,7 +23,7 @@ namespace AssetStudioGUI internal static class Studio { public static AssetsManager assetsManager = new AssetsManager(); - public static ScriptDumper scriptDumper = new ScriptDumper(); + public static AssemblyLoader assemblyLoader = new AssemblyLoader(); public static List exportableAssets = new List(); public static List visibleAssets = new List(); internal static Action StatusStripUpdate = x => { }; @@ -614,23 +615,29 @@ namespace AssetStudioGUI } } - public static string GetScriptString(ObjectReader reader) + public static string DeserializeMonoBehaviour(MonoBehaviour m_MonoBehaviour) { - if (scriptDumper == null) + if (!assemblyLoader.Loaded) { var openFolderDialog = new OpenFolderDialog(); openFolderDialog.Title = "Select Assembly Folder"; if (openFolderDialog.ShowDialog() == DialogResult.OK) { - scriptDumper = new ScriptDumper(openFolderDialog.Folder); + assemblyLoader.Load(openFolderDialog.Folder); } else { - scriptDumper = new ScriptDumper(); + assemblyLoader.Loaded = true; } } - - return scriptDumper.DumpScript(reader); + var nodes = m_MonoBehaviour.ConvertToTypeTreeNode(assemblyLoader); + if (nodes != null) + { + var sb = new StringBuilder(); + TypeTreeHelper.ReadTypeString(sb, nodes, m_MonoBehaviour.reader); + return sb.ToString(); + } + return null; } } } diff --git a/AssetStudioUtility/AssemblyLoader.cs b/AssetStudioUtility/AssemblyLoader.cs new file mode 100644 index 0000000..9958b25 --- /dev/null +++ b/AssetStudioUtility/AssemblyLoader.cs @@ -0,0 +1,53 @@ +using Mono.Cecil; +using System.Collections.Generic; +using System.IO; + +namespace AssetStudio +{ + public class AssemblyLoader + { + public bool Loaded; + private Dictionary moduleDic = new Dictionary(); + + public void Load(string path) + { + var files = Directory.GetFiles(path, "*.dll"); + var resolver = new MyAssemblyResolver(); + var readerParameters = new ReaderParameters(); + readerParameters.AssemblyResolver = resolver; + try + { + foreach (var file in files) + { + var assembly = AssemblyDefinition.ReadAssembly(file, readerParameters); + resolver.Register(assembly); + moduleDic.Add(assembly.MainModule.Name, assembly.MainModule); + } + } + catch + { + // ignored + } + Loaded = true; + } + + public TypeDefinition GetTypeDefinition(string assemblyName, string fullName) + { + if (moduleDic.TryGetValue(assemblyName, out var module)) + { + return module.GetType(fullName); + } + return null; + } + + public void Clear() + { + foreach (var pair in moduleDic) + { + pair.Value.Dispose(); + } + moduleDic.Clear(); + Loaded = false; + } + } +} diff --git a/AssetStudioUtility/AssetStudioUtility.csproj b/AssetStudioUtility/AssetStudioUtility.csproj index 4e0635a..dd4072a 100644 --- a/AssetStudioUtility/AssetStudioUtility.csproj +++ b/AssetStudioUtility/AssetStudioUtility.csproj @@ -34,9 +34,6 @@ MinimumRecommendedRules.ruleset - - ..\packages\dnlib.3.3.2\lib\net45\dnlib.dll - @@ -46,8 +43,18 @@ + + Libraries\Unity.Cecil.dll + + + Libraries\Unity.CecilTools.dll + + + Libraries\Unity.SerializationLogic.dll + + @@ -64,8 +71,11 @@ + + + + - @@ -93,8 +103,5 @@ Texture2DDecoderWrapper - - - \ No newline at end of file diff --git a/AssetStudioUtility/Libraries/Unity.Cecil.dll b/AssetStudioUtility/Libraries/Unity.Cecil.dll new file mode 100644 index 0000000000000000000000000000000000000000..4166cfc30fb3e47b0bfde260651440b3203cc883 GIT binary patch literal 347136 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 z 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 literal 0 HcmV?d00001 diff --git a/AssetStudioUtility/Libraries/Unity.CecilTools.dll b/AssetStudioUtility/Libraries/Unity.CecilTools.dll new file mode 100644 index 0000000000000000000000000000000000000000..2c1ce70c4d4a5306193fc6a8492c249f4f706826 GIT binary patch literal 11776 zcmeHNdvIK5bwA&CckixN59?t`j{L~_A!j35i{wXaCyruSlAU#I%l697qXy|}_e#F? zYOiwd%C+oqsx&|ePJig57lMvrY6D zbywD2RtK)E9Y5*#$vMxR@vPZo&MFq&QgX^pdh^AkQ%sJGWs|dR-cC0*CN_ko504TZ zPzG7fLvJs8dzscH>s3F|Mo`Rv`p^iTN!*jTiJGOYgSeT%@ym4)5Olr_+WjUL<$u*@ zh%yP63ATeF(`VH!V8uVNIF61|1>hnM%WVp8wCCsZPteebAq(JYj@1+=8TUl=v^tu(ScOs#EQ-=PfH! zdR2#b61$_&gKy}~BdcopRU=_;YSbl0+zrrgE?b1;O)Q2f5}SjtiSXDaJgbBWtM#!> zb*30>=v}Wldb6=^Q(Ne$8;(+#MZFEZrVrPNvvJ9{mhu3DZ6UYU+iLM95SLD&+!Frn zfhOmxvziZBN*FFfNl3NtoYPn}XI(Cmm# zL9i{_62(9__9kLRstvIRhPjW^u!~&W$nN2ewg{V%dTWWiKd>*RV1IK z8fi0I%)YPHx{S5NDlV5-T%ryY4Z$bU%|7pxzEtK7Pf(fN^}TDgdlxX|q)EG|+%mmR zyLSUC&(D>pN6t5fp#`gH+2AtGV`3Vq4#4`CZr3#_g2_l{{Y&jSg*^%)oRIpL%#GAh z|B|eWO7<>AcMp<@B}Z}0h^$<9SPl}K+O>NRo_&ph6?Zp~axwE9LDH7UuMFkebP7}1 z?5o!)EX`(ZsmdHhyk$MkyZ3|g1e7VTPN$H(1gy99N2ETn3bq(7wwQ!Ihs7Di-LX;Y zt0vZL(;o)8J8_=rW(uX)+q2(DAx)+}hxIhVB(o>YYqz#(5LcI<*fh_g;YWNOq*h3~Tia`hXO+=yNQFH71UYpferm<-aW*J-S`= zsdpb~eGWlH#Qu5IcLW4}oX1Rz=uVOAEGvXOnE>Zmjr8(BNsP#<+;^#?XN^9`>OEb4 z2Czq$kt5xBZDdbU^LVv=zhhL$Aq30$xrLof%_k^R}fD>v`qS_=Jr_R zxp)%|iOn~Q{I^B^wkTUz9b?Pu)gP+_eN0cpO!_CGr^VOK7|Z-rbpKpnH{?zFvHD`v zq!_rIktseIKO#(heMXl%s z;|$I|jelJ?(&s|#?Xj=xCi;GeJq&CaEyu#nv0MSxOglpCDd@FOA;kV5 z`VHMmAFg2E(QWii!7k9_(I4pL)W0FHaw+-?WaBLrjEoiZs}S3$<3<-9z>$#s-4|;z zR?;U!>`wDpy_#MQvC+h{dJV1MX-OC8htX&Ct#qegZ(i|6EC5Lw5$rKqpmrlk=R)j9 zw9;5h?+El(yfwboSV!-#(OXAPg_6gq8@xXYu}jo%tf$Kr$tZTYe-`Z9>Q4out}_XMBlFaS>lT7rjr4t4kcL94S9R&dw`t@dH)sLZgkW0A+{$z2;Scbc0uCo zrmqPW^sk%#Rj|jfp6rI+cSGzR+GlVem_M3Vp0AqR4&WJ3xJntm$G8?w2;~JVa+*%X zn9FU2<)7g%r5(V4a*tRJ>;#l2#N!2#WV)t*srb^A!Rl7_`;2(`UWHqx2i5}14@eB} z!y>Hc`(pD2iIBZ0dII&#fAhFa+_ShHoIrW(TL7bUi?r7QCTIY#nRW^s5||NqMBsx0 zErAYTJ3TDz1%aOeRP+^k2BZ8U@#r>?Ro{*FEJpK1w0medS@CW31HeK0Pmym?taX9D z8sAT=KsiCTD?c%XstMZ9*1rq;NYLJv_#C*q65jxPDE0~|^%Wge1M0>4I`s=WXDnAc zRcm6Mx?Me|H>n}9JfLn%j7qy1^4ehem!f0pae75}(c|qL!E=Kq+*ZjrM+9)!_uCVc23%h(!MD0d4Z%^D=BbN;G)2b0-qQ7 zvOqFea)a>&mXCZEaJRrkffofnFYsl76lIxVI*TkXQ@5zQ)qSd<9#v1M&#SMhZ>jI9 zAE~t7g34Ez;g2N_VLn_*WDSj~GBDdV;)If*5o{d^+Kb#J@YbXoa6jD!cmR7^f(}tH z;9;C^)=(O6j2@#;(}a3hy;*%weL_8_UR9Aro?o@s6lN|aUFEu4pArE>PDBCuZvB2l z!xs)^;k8#cVU6J5lNvKqgQJmsOl4f%v>!WQ1kd-F+cAspqDyoSeT|0bM>LH4Ani~a z=q&DcqIPeA?4!_rljzc}!JQKm{S*DPYxty{J7wpO+P+&jZ4XX`jB%v;SUw_do17Prav}4n4g%~Onc{xxyjA!nRXp?^YaCJkY@dy z>lK_SP;-=B@Jse=x@y}`@3V`x=j7<1TXb*8n6XO}89!S>dUC|bL91xZ*!l63o^9nb zc^EECOi0(QLWRhJ!}Fep{0B5q&G?6GM35(^JWL1e(n&W@v%!P44q3CdKZg;dtTk;{ zu^^5x+)U9gSw+Zk1;D_S9YR^Fbqyi-*xfo0pf*U9JYVwFC6reqg=Ora{NY-KM(K5lzA zW)8c>X=i5MlNI55-4WZ*dCnZq%_=iUgJ>MJ3)UHF`Bi?|F~&MSpDSI@7SjVutyY2RZ7N(yfahec{T1*_LMVM?(+es_%OMpleWjh;P8I9&n_W^ zFq0ut=4ESnA@XZ%UKQKrRct7S-Pd>FG~CdzYn4N)rn|E9q|0LH0Cp|jg}4&ZOA|bZ zjjD8Wdo^~h5zhFS(WisiK8BUn;)v3@0Lmkn9*{!eVs>)yJ_gE~FO+JDSuF8Gez`Lv zjx|$see8?AWHi`-f_9}GE7IZoObf@I%i7*)2Z<^hE3?bXX@$?BjUjl?$wN9=>M+@` zzXPq^ZhVr&9V~ia2OX*wYz=Ga=+rQ3t2SJHD}AgP zeMwklP6Rm%_qn04#(lzJY}P8#*wpXhBt%)8XE0$4Dmg_oP`5Hz~G#?y~S^+rme|61jn6=Zn4xsj!EDYE;Ui2a5Rxe{(-t=4I+=&r%d6BD`MEGB6m zcCl3;eWCjUNGO)$)Ak`7AB_L^(=H7a7s5fn5pbbuV8oGgs^u+^J2x@<@Vv!)j~w(H z4`2`QsYH|b1y9?uc$dSNjbHm|{7P`~Hn;#R2bu${2yUA8fl|cnftDk>WkjB32@CWE z*u#gg2glKxgXB@%)1tweIkb}Ew}{_OCA2NvW!bD~?F-Z4=>orkRIbRjiC z8N@k<2ssW1aum`>>C964>ZLs!K?JNZ3(x$%`|t1hWjcF)diWh5z4V#)e){5P$$*bY zQmJ?pprxIgO$;;`+H7xqShZ#%N&J!qz6$t3;PE6eqm965oi$^+HQ72^$Hc`8s&zEh z-uimoI;x{dtyZmQZB}@@#)=GIkG75^AQg|Pz*>WdX9TfVHft@i!Ype96f>b)Gp%-9 z=M81oD3$|zS+lAbVdv~M(~M}uS{PB>h)GwQqWC7#)D($nt+`i6;;~5UG2MDZ zSNe6N9tO)jVPi*PF{AZ7WT4yBv zFmW^>TCJl@!~@RPD6Mg?p(vtReA>j2v@Sj>f@=tUOsX~v07McolkFgG2|UvfiwAfd zlxWP*O#-#9 zS#yVK4pBI-y1(Zu$i-M5A6Tfl<_H>WmlPFVlcKtVPR?_EcN)__sc2>8oSyvr)5!`i zxw(G;E7I-wcAC#`ou1mU^^U&nJEu4IZOu*FeLDv1oqhe=bK5r$Y|9Ny=kZay0qzIz zWek5D1m3!&KKVmZ2M=qsXKuB>RTF ze|_{P?n6WG{9b z+z(8GiFKiTEgJYQDRi8&*r$)vD9!*`?AK#>Kg#>|A-q48|8+-y75T~4;C(22;466I zKQzb{0pvMXdvSp(Smm?EUhLz1M#L!d_EBY`efu~7*&X= zBpnKvi?7tmWv{dCnf6`#e1POjM2dwS1;24|zUC5j}*j3JUMR@$OBmaE9g( zE%#)GPD)>|rzPoWEEL!0C5ba+KjOu@jjIQiYi$Rkn};tx#d&lp>_5vMl|GGyex0yS zM9?Oh>&FC@((^ri`2r8kcfbHBa+ zbLOE3kY=rW*XrsqXPFZSUQ&&v#k+3HJTVqWwTa3F<>U_LN<}kCOY@_B}T0wv$d)! zw89bH+eNfT^H9fV|FdpyuhX(bSZgEN4N5>!e>#F^0{0|tq8cgdN^d5x{&GDB2s&RL z+IBm$@_(hLgE9%%1CYCy3zI|(i$a*-Tn`dOQ2gUzq604N!#op3)rC6%oQLCHt$Fig z9>_bp01~*l($O0wxe`Q2TkV`Z2uyUFM8Uv)IqtG+8>Xw(HZv9&Syy@xH_Ph9U3P6F z+FpiA@!M=yT&jB?B{#wp7ZYiU{2RmCHjQFvh4wMhlMO_nBvdg%O=L8JUfZUZ)!Sej zOU?yTseXEUOv`NT*H3R>A>ZQqc@^?2>OcDd_22q{`hWU>`UY)={@1|{unEj`3#Q8( zst-5KH~bGoNDqjvRl#OoL#?-|hWrgzh5g3e>9w!d1E-j`k?nUF?GdxwzRGF8M76i( zW2k}T0zg+tYe~o}y42fUP|8{ep85+~tuN+Nz4_cOWRCWr57-@ZXe|O~*x&4}k2GE4 zNVuJc<@Dlhh%_zNt;OI98Fi58jd_JRYS_ZZ(;I1`0Cd;HKONtQy3@*IYC?YweF^yO zFS$K5$8Q1Mt6K?>t)&1>TD|fXZdYGyr^fazx1HlqGx7Ygf@hhYTn4Gsh;e%q%nj4QgbnbrJM%sF*s3nuJGJ^1A-!Q+~{?#4D!ISGjbN%~*wOq6KXpTE$6><#-B+ zF^xUlQyYqfnp;RWl5kn0Hf+SgaQ{dw(j1J1YpXWBgK5!Y;Uq%C0Qw`Ko&rXsh5g(* z8jChB*8MUX;qhBZbe>xc0QRp6I|iji0?b|=t8SjF2TJTYxR`NB7!ffNqs$tM#hOQ;qqmH?nVI9rHC78sRx6{mO^f5TNh}MY+PYX=D)d;L zC~dWYN~m3fXUogytK+p7>S3t`Ry9|=8jGXne?&xi3b2FZ8}4~dY)oLF84nd+DBRuPZMmIp9n4fc|POuVh)38>Ejvi|(Iyr@5D_LIY zw3v^5^eONM%lPADU4|A|W3C~un1DTA4be4%h|9Bis)7=p0fEVFJRTl_t`&DclZ%>a?B^=SrECsoaMsJZ93t9CVv%w;NjxX*i1o0H1D1qk z{q>PeOF`4EPKa%pt0xiXMoW!ubuk{$t(|x_X$^2Z=KWX5*R5S#w?I$Ab&Qr;J&BB9 zw1o8}l7az!u@Z|Pa)TG70k)B$Br<{_bHemTnVv+%7&1D4LuAwaAbE6)d3oDlgbb@2 z1~2QlH1 zse!dZ26_!Q)s+uDiHvWAn+TDl_Qp1zSa*5vj8HXr-vzBwdU6j2jJaVw`}8ED-Y9Og zcIYx*F?m!^_JC95Mw(Wa@5|V^xOttS7kClK&4G|46osXD*pj0VI)r$M<+gzyGV}?A zibhpPeLa{h9AZ>IR;}thfrsptbI_ZIjkI6Ij56z7GU3r z;qWmK)2j12W?1{d9cr3mSbZpj{YfZfaCZ$==jRy~SVJv8JRdfi{f4uU)g!Y98&zJ9 z($b4Lym)W$A!I|^zehH&8HgoTn)l%cpwlhO*p@8~7u~WHg$u@BNX{KZ#mY&pNqS&@ z8TA6#<_OxtPr2=3uvk|Cgbe#v?9bSSaKiNwylaDDhkT_CJ@X?hL+oF?Mm51%6y+j1 zZ(M{H=h=V`aF9446>ky%pAOXHJq>b2-U~f3^fXk_QmBYGRmoEqGO&SWp-0 zH3yY;!@^WkmK zHta7ums*gC7235|$e4Si3v(;4BCsQrr;aC=`G)P~Mr?D=DVCdRVB%GC!%fTQhntox z4mT~Zv!WHx!kta%woEl=4+4KC&4L zS*x8jQn!X6h8JWIJ^?1j4;MOnBVHNuYOWC0cf&-Mi3YL`aNSjE9J1~*zS}vyYdGym z0w}JwtxgSM#i`*9A-AbhE03(RjJuJ)pv^~bLnY*2wmBXl`wMOoL6rC#!kb=Vm6OQ! z9Dn}$@TTWMU=kKMwR(Z;wMT^nzrje=n$O$0EflndL2JG^XpP``%Zf_>MzVMPn`@Fd z<29*C44=QwZQJa$#VTK(H20U@0@cu_0@;ZBfNPH zAZn$jeoRI)9He+e{-bIwnFc!^*W*!I+$5jsvWQ;Lpl0Ls3UL^nW=XiV(Rhn^nIUr+8t zFRwO5qzo}AWACfsps5oM5Nr5|!sSayzf_g^{QFlh3Rs-}!u~F-G|~|g3vcGBDbf_% z^ehT;%&ZT+_WNj|&yg{ZuAjmLd#zC(1=RNHrx+r`MFN{&M1l^y-xMvDk*!hN;RPpt63+bDOw;4DHalC zXacJwbbMFoxLwz8W0*1R03>pwmhyUd1gro zy)XwW%YypQd8~JxOn%j9>|pC+z|aSQ+0R!Vml>RGhf zAvG@6PqB)P^VL~+twQf)8_Ii2UUM)Jjt?!l(7s4N#V%d)@b<7?FXPigP5ye>KVlDh ziZ_rG>_8~Psl5|C-3I#O+-)?r@?O-KTnb|8b=6{zm4m{KSF5MWP_Mcfs*=3ZKxe&A3;U#CoL0%+(rM2^7&AoTv z=6OQmBIGgZ!HwKU&|cP0Scz>cyd3v@L$tfMkU8hjeO_(En#4gT@04uNJ5Wx%_P@zbWun!t)(}KiXCcyj1A-R9m4C+1i)&DE-v4 zHWa1WFvD-43<*NFg?^il=^-z}(;ooB+%8*D$;e(hMquEx>mSw!pZT%U48RiW)TPWwUdj7cv;zCfG8_ycB#p$g>o6f-QyTtf4>fU+3F5d7*j;aITNx8z>)`{5asD$@VIS zd7=E9#`HS@_f3Ap&oBoVqt~lO02``DdLlux6# zjN^ch#6Ak>@o<^x2Cb3WWs%=Qc@ZGStbGdb0qtJEx3td!zO8X9pZ>>y5&bK^4YXeW zny;Rk>1jZX{t|FV;CBFf6Ku&dw5IBuhBx1Wod))jPp3~ib$0bR{Py^mQ)gGd|17DnOEMh7sfs>EXM;cR&8HO(_CU~UETCh^d_=d>o8hprkhUci zcBDFPEW$=qVU3=7#uAFGR@m9#JYy+6A=nvuI+!q))Bh-9tBe&?hg}rWX&hD0X&2Et z!Ol>tCt<9j14V3=kt9A!FlVRtoYqJYY~>jHLRFj5L`NKKYh;trLSqg#-+QHTF+Jm8 ze;rF0Yv~^ZJ3|}&38S61wXl>kGzM%P{TIPbQ#5+SSWn+`>h27l(>73VtLpD|@366v zZg#LIq044^#=$-h>?1VyV#WDgV3*KU4t8byoVJBNA=nxEPB>v)N`L5JX9AY7mELi% ze+!;8E~DLTO0!3TA2qho3xb`dgV3dee&W>qMd+Niop!HL{hihm#tu5>VC=1(G%45_ z+U+@~bLxSzFu>$aXB4OnD$gPb6(@r-4bgD zcFd_e9C;9&&p6o6Bl}SIf?z6gE~mc}Ohwh@^s->L(FXbo+P&dmVS38Af_~v(Szvpp zTJ{0A(aXSkps^;ay++HzrSjcnW!?+8JRiRNeJtA=Dfq83F25>}%eqtktneuK2`u#* zm6sLeU7^1x`fS8b1?S?j@?NY&8Y#Led!&{j-u6ehR!NwRzM+h>yv(h1ilax5BS%Td zh(6^|$yfY}r$ljkSCoF8kF}!wGQ4?Q`#ik34lj##VXd#P+DCT?|NYuT@EUqZ`*v`E9??D;PD8Io z-);1`HW2?f;48tq=niU#&j)-U_&M-A=6Mi2OTn{{Mxu|>IC?iwR!S@s_aK!hg+8y*B)}Xhv zXJY5HN3;{jc5i8~g#HG3bVb!$+COWL8$ScQJYKJ_)>ee(Q>WN`kBn=zwm5o3Kj3iQ zUv24k&_>_q^j~Uh&pT)|$dWlLuh!b5^XXcL^C#8M>5ps2tKZaF=Njxqw^jd>J|yGX zr)>_lL(gjCbCB>Ow0c~t2`%)Trho9x$6CZa^87Y=GPF6k6>xdHm4f2EE^*-7K@vt^E~v9@j>q3q4Vs9_|2)&{qI!=oP>^3V5S< zd)5NDkd6W-=zhQz^a5a#{x@JVC48-T<^7V;ihboPfD7nXfY@*PTk-YAQoweBm(VJd zvDXB=f;Is53H=&@gLD{_<8-V4Ta=@_{XZ1w(YSmx@MnON0x8JlgurbAj|!X=c$miE zyZ6vH>91+KHlSs-)7lrbr?uy_m$XKGjlNgEM}J8Fulk?rujra5;Hma3^>llBJhsP= z=q6fH^E{&c$(nB)I=+1JASYdp6Oo@jfp^z_`Xns{{4~bqM;|KzKSQek&mhMA^!pg? zV%kW5L|>u#TC?^&?J|9rKBRwD|ApS}IqFG!ypx7y^gCmzE6C-h1EY5IGV|DNS<*}A#Ee{EZT z8*SNT=69w~nnT+Q!^5WCk;ln&ppZAW4!8`=x@Il2?o6ARp(00)SyaW=!T$cvbZ#t@ z8sCvg<#HRCTe{f9rM_cUAv4rHI+ig<&1}BA)6AK6I+aP^lp4sWo`i3ADkoj!4jfD6 zccijAtZY7&&K}IB^W$CFk#yGFJ8-=@nBQ+gQ!_hgiVCH!)_lmWz&DV}nFq$l%&qG& z2HNuP>v;`zcV!Esrp?1Rx`uXGnGDoRTUj7(Ro=3Jp@U<6W*((2TSxo*cc!zcOlBNh zIW)5D_O;ZV%>!;3F|)AE;CATOoz3M_7^SP{TH0C24jx@gSD536QkjC;n@Zb2JJZr< z${q(&E}pSme}6k|Ievl%x(?m-q%grJ*PUFa>ekbiVV>1ab2tq%Lv?1{KwCO888sI> zEqm)wfB#1CZ>B9h)=&XcM*Wnc(cGYAXVL?x86=sc);@P$S<)VBB<)npKp!#l{oT3V z!axR0%0qUiPMEt>L&dJ$%JE#@9BnOGH`lsLS&4eAtTkhWlHQk3Vq9Vh$ZR zW}B&@?jh)$>F<{zr!qw%GwvwZ@U6U}QOD4bqnub{yV={DxA&W)sj)G02-+ z)u@EC|CF$N1=eGZ4wx8_6HtVx6KNk9dd$g!KbX-C1jGn+bC$4j94|1Q^u$73b2;>) zIy2OX`JI#T@ z$Ot=ssR@r=*1?L@=yqSpi=iD#=h7AJJ90UMc4quQI$tifNVZc$$YS>KQja?dxx6)6 z!j)F0y*oWLWM)frSHw9WS-nUx4S2BCUa*PY<}cU9^-IcSQ1Q-?i* zJz_RrqIBorvgwg5NAUrRV4^X1zV@WEHxw86V%mgfpGXgx_S98lx0PWkucXBtyy&*~ zMyw>{IMdW53=UamisEJP4zsPs%HuCm%4~|=AQks#jJT^iwz=*YN>(p!)LLCOjCe~i zjk~+$5?lGs7JE(J+_9gvPMN*t*>;<)>`1QOTeo7Ln0I#Qv*=f**A(W~L2lAIC=cwL zq0DykSn5RDDilZBnNE#ltsM54IWfDanRD&nq>@(b>`mJmLzJ9I^&NgZXsE=|N4{ z0m}lx*&9x;Y3(|hH?zEQ81*?o%=$(0Ho%=cXiTv5Od~ z!fZ&FSWDEn9T9FII~IcS!eiN`iYc5Oc|wegrt;jUEO;F9>JST3*_1f6K5SeDg}ZD9 zg-z+>`c8R>xh@QMZG~-2ZoVH<_6`p-(g&|VpEhinDrC5F7uNnX5)w_BOm`SFb>a-H z7{}=B|79FIhq9S8DF4?057ZWqh0wR%2~H;UEAM3s7|B^C+tml{#5$jlg=@Q zAj7iOrD6Qb0fXGjX5-$2{%?ZJJs25l!mWpK+qko^h)G8YKh&+9t$l^<8fNCA^)u7? zeJ=NuM$Z|*n}F>UTV$XKUHai$P1l;L4?!BwsG6}#9P?LEk2wmucB5*y)UD=Z&OZ1Q z&nfH5p2%KDwKL3fxa1>LT`G&e)Uu_=MFzLb;mtKwZHKG^qzwV5+H%b8yK)pWQSl~F z={c*FJ4EYI8H3V(heXK0;GYvRcXAdhDb zt;eJV3pSy60%1K4m=~23)0~Z`RP}Ti{G2|x7h2RQlGq`6h%76C$uc2pDZYSGC0fKr zKY@DY+ljWEjz*kbsrs;teh4GH5quOI1snus zORob&`%2-Gzz++jsEsD@OrRax$hA!hAD%Wt&L(oB6!V@=>EtPDl zuGD$kW=$*UN@@GW19(>0CHSWw3#BpOY!~dJ1#+6_#FPUEk6(>yJKA!> zW4;d9RHfhnPD6=MlMiWgVw0cO9rYVs8x0=hx$N^%`jZqF$OgwA8hQbLZ7) zx=h_-p0E2gdAz7ECOr}=o6cIWmGKFK;m3Enx?bh?qUA#v6Klpsy5BJt(}I4@p@hUE zV8F?TLm<5f2YNW(HNVD{tN4ojFV_4a#e(@~YhvozlYZ^dc+@6Q^`YxJL*yRsb~Wo z#E}<8LnW(nJmAAQir?yk#|Qj=pB@0W+Ye$!^&z9~K6_cGIZEbEdSy7?m`$!I+S4@$P`i7V^~r{?S8DfKXs zoH&}*BaL*(d786gG~NRiPW=J)eO>`n5X5Wd;O`wOmjLAYnh^fh6{46iLT)B-n=?It zj*$l@?}OX`9#A%b6pBDA*&!kc*I995&cafv_KUWY4?|r}1(77DXNTL9q=f;^`M7^E ze@lEouRm<3#_*$N@nt1mAX_))H1PQ~{M5Y--!wW^OcFQtJl?Th+5hGAz4Zg3(KYY_KopFc%@{>E?A+4uZNBKtF?+)YM%{A&`##-F`QE6@j zcekRuu*NMo&;5O!eg9Z9@2KCeZGYy=Kl0u83-iCTj2$1jcA${X4CONTrTW?ef0v*L z*W&$odN_p_M%Us8@!YkuS!mXZ*0G@h>f7D1cKrr&dVb068KcWjy#CyM*2=r~Z2JDa zb$^Z#xYw&(PPka*)BQjAC~E%>%kIo%dhkJo`sLm<$BdU zT~J@ku;uwuPyBtRTwXw)@A9h?hz6;AnBc7>Z!>wjK8%egUn_`P9gs~PZ;Las*>g^S z!tt0l!N~wRsSPKelcr007aeQZoV)+l;b;OI(0oueXPe7gUOwtzqc7Jwe7)n=jiKLc z`DqCpJ+ckv(^L-kFj^8_jV}nbV*h-g-~)sEzN4gfDeX=_gO`p){7!)1whW3sZ3z65 zY(AITkY19x2HWwr;?24&0zX@mx5s>P=EG9)yhp#O4y`ywWblu#tMSd4hLff`EM>%k z{2dpMbOgsewgoRwm9zvs0;ipBw**eCZFtLp%z_Jl!B!z#%|4%l`2=m_DCo`*VHSCe zd!2sM&KTYK=Ml@<_O}}AewkBsZXUvMh7ZUkE8+l;Ue(*N4?madWG*XZPMy)I^SMdd wbYS#+q#MQ9Gq899(NpOOQ`?DA{}cSjx4=>L_iS&=_v`=hhx?x+thB)Y1)YR#tN;K2 literal 0 HcmV?d00001 diff --git a/AssetStudioUtility/MonoBehaviourConverter.cs b/AssetStudioUtility/MonoBehaviourConverter.cs new file mode 100644 index 0000000..34b9fdf --- /dev/null +++ b/AssetStudioUtility/MonoBehaviourConverter.cs @@ -0,0 +1,24 @@ +using System.Collections.Generic; + +namespace AssetStudio +{ + public static class MonoBehaviourConverter + { + public static List ConvertToTypeTreeNode(this MonoBehaviour m_MonoBehaviour, AssemblyLoader assemblyLoader) + { + var nodes = new List(); + var helper = new SerializedTypeHelper(m_MonoBehaviour.version); + helper.AddMonoBehaviour(nodes, 0); + if (m_MonoBehaviour.m_Script.TryGet(out var m_Script)) + { + var typeDef = assemblyLoader.GetTypeDefinition(m_Script.m_AssemblyName, string.IsNullOrEmpty(m_Script.m_Namespace) ? m_Script.m_ClassName : $"{m_Script.m_Namespace}.{m_Script.m_ClassName}"); + if (typeDef != null) + { + var typeDefinitionConverter = new TypeDefinitionConverter(typeDef, helper, 1); + nodes.AddRange(typeDefinitionConverter.ConvertToTypeTreeNode()); + } + } + return nodes; + } + } +} diff --git a/AssetStudioUtility/MyAssemblyResolver.cs b/AssetStudioUtility/MyAssemblyResolver.cs new file mode 100644 index 0000000..fb5a20f --- /dev/null +++ b/AssetStudioUtility/MyAssemblyResolver.cs @@ -0,0 +1,12 @@ +using Mono.Cecil; + +namespace AssetStudio +{ + public class MyAssemblyResolver : DefaultAssemblyResolver + { + public void Register(AssemblyDefinition assembly) + { + RegisterAssembly(assembly); + } + } +} diff --git a/AssetStudioUtility/ScriptDumper.cs b/AssetStudioUtility/ScriptDumper.cs deleted file mode 100644 index c8d61fa..0000000 --- a/AssetStudioUtility/ScriptDumper.cs +++ /dev/null @@ -1,492 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text; -using dnlib.DotNet; - -namespace AssetStudio -{ - //TODO to json file - public sealed class ScriptDumper : IDisposable - { - private Dictionary moduleDic = new Dictionary(); - - public ScriptDumper() { } - - public ScriptDumper(string path) - { - var files = Directory.GetFiles(path, "*.dll"); - var moduleContext = new ModuleContext(); - var asmResolver = new AssemblyResolver(moduleContext); - var resolver = new Resolver(asmResolver); - moduleContext.AssemblyResolver = asmResolver; - moduleContext.Resolver = resolver; - try - { - foreach (var file in files) - { - var module = ModuleDefMD.Load(file, moduleContext); - asmResolver.AddToCache(module); - moduleDic.Add(Path.GetFileName(file), module); - } - } - catch - { - // ignored - } - } - - public string DumpScript(ObjectReader reader) - { - var m_MonoBehaviour = new MonoBehaviour(reader); - var sb = CreateMonoBehaviourHeader(m_MonoBehaviour); - if (m_MonoBehaviour.m_Script.TryGet(out var m_Script)) - { - if (!moduleDic.TryGetValue(m_Script.m_AssemblyName, out var module)) - { - return sb.ToString(); - } - var typeDef = module.Assembly.Find(m_Script.m_Namespace != "" ? $"{m_Script.m_Namespace}.{m_Script.m_ClassName}" : m_Script.m_ClassName, false); - if (typeDef != null) - { - try - { - DumpType(typeDef.ToTypeSig(), sb, reader, null, -1, true); - var readed = reader.Position - reader.byteStart; - if (readed != reader.byteSize) - { - Logger.Error($"Error while dump type, read {readed} bytes but expected {reader.byteSize} bytes"); - } - } - catch - { - sb = CreateMonoBehaviourHeader(m_MonoBehaviour); - Logger.Error("Error while dump type"); - } - } - } - return sb.ToString(); - } - - public void Dispose() - { - if (moduleDic != null) - { - foreach (var pair in moduleDic) - { - pair.Value.Dispose(); - } - moduleDic.Clear(); - moduleDic = null; - } - } - - private static StringBuilder CreateMonoBehaviourHeader(MonoBehaviour m_MonoBehaviour) - { - var sb = new StringBuilder(); - sb.AppendLine("PPtr m_GameObject"); - sb.AppendLine($"\tint m_FileID = {m_MonoBehaviour.m_GameObject.m_FileID}"); - sb.AppendLine($"\tint64 m_PathID = {m_MonoBehaviour.m_GameObject.m_PathID}"); - sb.AppendLine($"UInt8 m_Enabled = {m_MonoBehaviour.m_Enabled}"); - sb.AppendLine("PPtr m_Script"); - sb.AppendLine($"\tint m_FileID = {m_MonoBehaviour.m_Script.m_FileID}"); - sb.AppendLine($"\tint64 m_PathID = {m_MonoBehaviour.m_Script.m_PathID}"); - sb.AppendLine($"string m_Name = \"{m_MonoBehaviour.m_Name}\""); - return sb; - } - - private static void DumpType(TypeSig typeSig, StringBuilder sb, ObjectReader reader, string name, int indent, bool isRoot = false, bool align = true) - { - var typeDef = typeSig.ToTypeDefOrRef().ResolveTypeDefThrow(); - if (typeSig.IsPrimitive) - { - object value = null; - switch (typeSig.TypeName) - { - case "Boolean": - value = reader.ReadBoolean(); - break; - case "Byte": - value = reader.ReadByte(); - break; - case "SByte": - value = reader.ReadSByte(); - break; - case "Int16": - value = reader.ReadInt16(); - break; - case "UInt16": - value = reader.ReadUInt16(); - break; - case "Int32": - value = reader.ReadInt32(); - break; - case "UInt32": - value = reader.ReadUInt32(); - break; - case "Int64": - value = reader.ReadInt64(); - break; - case "UInt64": - value = reader.ReadUInt64(); - break; - case "Single": - value = reader.ReadSingle(); - break; - case "Double": - value = reader.ReadDouble(); - break; - case "Char": - value = reader.ReadChar(); - break; - } - if (align) - reader.AlignStream(); - sb.AppendLine($"{new string('\t', indent)}{typeDef.Name} {name} = {value}"); - return; - } - if (typeSig.FullName == "System.String") - { - sb.AppendLine($"{new string('\t', indent)}{typeDef.Name} {name} = \"{reader.ReadAlignedString()}\""); - return; - } - if (typeSig.FullName == "System.Object") - { - return; - } - if (typeDef.IsDelegate) - { - return; - } - if (typeSig is ArraySigBase) - { - if (!typeDef.IsEnum && !IsBaseType(typeDef) && !IsAssignFromUnityObject(typeDef) && !IsEngineType(typeDef) && !typeDef.IsSerializable) - { - return; - } - var size = reader.ReadInt32(); - sb.AppendLine($"{new string('\t', indent)}{typeSig.TypeName} {name}"); - sb.AppendLine($"{new string('\t', indent + 1)}int size = {size}"); - for (int i = 0; i < size; i++) - { - sb.AppendLine($"{new string('\t', indent + 2)}[{i}]"); - DumpType(typeDef.ToTypeSig(), sb, reader, "data", indent + 2); - } - return; - } - if (!isRoot && typeSig is GenericInstSig genericInstSig) - { - if (genericInstSig.GenericArguments.Count == 1) - { - var genericType = genericInstSig.GenericType.ToTypeDefOrRef().ResolveTypeDefThrow(); - var type = genericInstSig.GenericArguments[0].ToTypeDefOrRef().ResolveTypeDefThrow(); - if (genericInstSig.GenericArguments[0] is ArraySigBase) - { - return; - } - if (!type.IsEnum && !IsBaseType(type) && !IsAssignFromUnityObject(type) && !IsEngineType(type) && !type.IsSerializable) - { - return; - } - sb.AppendLine($"{new string('\t', indent)}{typeSig.TypeName} {name}"); - if (genericType.Interfaces.Any(x => x.Interface.FullName == "System.Collections.Generic.ICollection`1")) //System.Collections.Generic.IEnumerable`1 - { - var size = reader.ReadInt32(); - sb.AppendLine($"{new string('\t', indent + 1)}int size = {size}"); - for (int i = 0; i < size; i++) - { - sb.AppendLine($"{new string('\t', indent + 2)}[{i}]"); - DumpType(genericInstSig.GenericArguments[0], sb, reader, "data", indent + 2, false, false); - } - reader.AlignStream(); - } - else - { - DumpType(genericType.ToTypeSig(), sb, reader, "data", indent + 1); - } - } - return; - } - if (indent != -1 && IsAssignFromUnityObject(typeDef)) - { - var pptr = new PPtr(reader); - sb.AppendLine($"{new string('\t', indent)}PPtr<{typeDef.Name}> {name} = {{fileID: {pptr.m_FileID}, pathID: {pptr.m_PathID}}}"); - return; - } - if (typeDef.IsEnum) - { - sb.AppendLine($"{new string('\t', indent)}{typeDef.Name} {name} = {reader.ReadUInt32()}"); - return; - } - if (!isRoot && !IsEngineType(typeDef) && !typeDef.IsSerializable) - { - return; - } - if (typeDef.FullName == "UnityEngine.AnimationCurve") - { - sb.AppendLine($"{new string('\t', indent)}{typeDef.Name} {name}"); - sb.AppendLine($"{new string('\t', indent + 1)}"); - var animationCurve = new AnimationCurve(reader, reader.ReadSingle); - return; - } - if (typeDef.FullName == "UnityEngine.Bounds") - { - sb.AppendLine($"{new string('\t', indent)}{typeDef.Name} {name}"); - sb.AppendLine($"{new string('\t', indent + 1)}"); - new AABB(reader); - return; - } - if (typeDef.FullName == "UnityEngine.BoundsInt") - { - sb.AppendLine($"{new string('\t', indent)}{typeDef.Name} {name}"); - sb.AppendLine($"{new string('\t', indent + 1)}"); - reader.Position += 24; - return; - } - if (typeDef.FullName == "UnityEngine.Color32") - { - sb.AppendLine($"{new string('\t', indent)}{typeDef.Name} {name}"); - var prefix = new string('\t', indent + 1); - sb.AppendLine($"{prefix}byte r = {reader.ReadByte()}"); - sb.AppendLine($"{prefix}byte g = {reader.ReadByte()}"); - sb.AppendLine($"{prefix}byte b = {reader.ReadByte()}"); - sb.AppendLine($"{prefix}byte a = {reader.ReadByte()}"); - reader.AlignStream(); - return; - } - if (typeDef.FullName == "UnityEngine.Gradient") - { - sb.AppendLine($"{new string('\t', indent)}{typeDef.Name} {name}"); - sb.AppendLine($"{new string('\t', indent + 1)}"); - if (reader.version[0] == 5 && reader.version[1] < 5) - reader.Position += 68; - else if (reader.version[0] == 5 && reader.version[1] < 6) - reader.Position += 72; - else - reader.Position += 168; - return; - } - if (typeDef.FullName == "UnityEngine.GUIStyle") //TODO - { - throw new NotSupportedException(); - } - if (typeDef.FullName == "UnityEngine.LayerMask") - { - sb.AppendLine($"{new string('\t', indent)}{typeDef.Name} {name}"); - sb.AppendLine($"{new string('\t', indent + 1)}uint m_Bits = {reader.ReadUInt32()}"); - return; - } - if (typeDef.FullName == "UnityEngine.PropertyName") - { - sb.AppendLine($"{new string('\t', indent)}{typeDef.Name} {name}"); - sb.AppendLine($"{new string('\t', indent + 1)}int id = {reader.ReadInt32()}"); - return; - } - if (typeDef.FullName == "UnityEngine.Rect") - { - sb.AppendLine($"{new string('\t', indent)}{typeDef.Name} {name}"); - var prefix = new string('\t', indent + 1); - sb.AppendLine($"{prefix}float x = {reader.ReadSingle()}"); - sb.AppendLine($"{prefix}float y = {reader.ReadSingle()}"); - sb.AppendLine($"{prefix}float width = {reader.ReadSingle()}"); - sb.AppendLine($"{prefix}float height = {reader.ReadSingle()}"); - return; - } - if (typeDef.FullName == "UnityEngine.RectInt") - { - sb.AppendLine($"{new string('\t', indent)}{typeDef.Name} {name}"); - var prefix = new string('\t', indent + 1); - sb.AppendLine($"{prefix}int x = {reader.ReadInt32()}"); - sb.AppendLine($"{prefix}int y = {reader.ReadInt32()}"); - sb.AppendLine($"{prefix}int width = {reader.ReadInt32()}"); - sb.AppendLine($"{prefix}int height = {reader.ReadInt32()}"); - return; - } - if (typeDef.FullName == "UnityEngine.RectOffset") - { - sb.AppendLine($"{new string('\t', indent)}{typeDef.Name} {name}"); - var prefix = new string('\t', indent + 1); - sb.AppendLine($"{prefix}float left = {reader.ReadSingle()}"); - sb.AppendLine($"{prefix}float right = {reader.ReadSingle()}"); - sb.AppendLine($"{prefix}float top = {reader.ReadSingle()}"); - sb.AppendLine($"{prefix}float bottom = {reader.ReadSingle()}"); - return; - } - if (typeDef.FullName == "UnityEngine.Vector2Int") - { - sb.AppendLine($"{new string('\t', indent)}{typeDef.Name} {name}"); - var prefix = new string('\t', indent + 1); - sb.AppendLine($"{prefix}int x = {reader.ReadInt32()}"); - sb.AppendLine($"{prefix}int y = {reader.ReadInt32()}"); - return; - } - if (typeDef.FullName == "UnityEngine.Vector3Int") - { - sb.AppendLine($"{new string('\t', indent)}{typeDef.Name} {name}"); - var prefix = new string('\t', indent + 1); - sb.AppendLine($"{prefix}int x = {reader.ReadInt32()}"); - sb.AppendLine($"{prefix}int y = {reader.ReadInt32()}"); - sb.AppendLine($"{prefix}int z = {reader.ReadInt32()}"); - return; - } - if (typeDef.IsClass || typeDef.IsValueType) - { - if (name != null && indent != -1) - { - sb.AppendLine($"{new string('\t', indent)}{typeDef.Name} {name}"); - } - if (indent == -1 && typeDef.BaseType.FullName != "UnityEngine.Object") - { - DumpType(typeDef.BaseType.ToTypeSig(), sb, reader, null, indent, true); - } - if (indent != -1 && typeDef.BaseType.FullName != "System.Object") - { - DumpType(typeDef.BaseType.ToTypeSig(), sb, reader, null, indent, true); - } - foreach (var fieldDef in typeDef.Fields) - { - var flag = false; - var access = fieldDef.Access & FieldAttributes.FieldAccessMask; - if (access != FieldAttributes.Public) - { - if (fieldDef.CustomAttributes.Any(x => x.TypeFullName == "UnityEngine.SerializeField")) - { - flag = true; - } - } - else if ((fieldDef.Attributes & FieldAttributes.Static) == 0 && (fieldDef.Attributes & FieldAttributes.InitOnly) == 0 && (fieldDef.Attributes & FieldAttributes.NotSerialized) == 0) - { - flag = true; - } - - if (flag) - { - if (fieldDef.FieldType.IsGenericParameter) - { - for (var i = 0; i < typeDef.GenericParameters.Count; i++) - { - var g = typeDef.GenericParameters[i]; - if (g.FullName == fieldDef.FieldType.FullName) - { - var type = ((GenericInstSig)typeSig).GenericArguments[i]; - DumpType(type, sb, reader, fieldDef.Name, indent + 1); - break; - } - } - } - else if (fieldDef.FieldType is GenericInstSig genericSig && genericSig.GenericArguments.Count == 1 && genericSig.GenericArguments[0].IsGenericParameter) - { - for (var i = 0; i < typeDef.GenericParameters.Count; i++) - { - var g = typeDef.GenericParameters[i]; - if (g.FullName == genericSig.GenericArguments[0].FullName) - { - var type = ((GenericInstSig)typeSig).GenericArguments[i]; - var fieldTypeDef = fieldDef.FieldType.ToTypeDefOrRef().ResolveTypeDefThrow(); - if (fieldTypeDef.Interfaces.Any(x => x.Interface.FullName == "System.Collections.Generic.ICollection`1")) //System.Collections.Generic.IEnumerable`1 - { - var size = reader.ReadInt32(); - sb.AppendLine($"{new string('\t', indent + 1)}int size = {size}"); - for (int j = 0; j < size; j++) - { - sb.AppendLine($"{new string('\t', indent + 2)}[{i}]"); - DumpType(type, sb, reader, "data", indent + 2, false, false); - } - } - else - { - DumpType(fieldDef.FieldType, sb, reader, fieldDef.Name, indent + 1); - } - } - } - } - else - { - DumpType(fieldDef.FieldType, sb, reader, fieldDef.Name, indent + 1); - } - } - } - } - } - - private static bool IsAssignFromUnityObject(TypeDef typeDef) - { - if (typeDef.FullName == "UnityEngine.Object") - { - return true; - } - if (typeDef.BaseType != null) - { - if (typeDef.BaseType.FullName == "UnityEngine.Object") - { - return true; - } - while (true) - { - typeDef = typeDef.BaseType.ResolveTypeDefThrow(); - if (typeDef.BaseType == null) - { - break; - } - if (typeDef.BaseType.FullName == "UnityEngine.Object") - { - return true; - } - } - } - return false; - } - - private static bool IsBaseType(IFullName typeDef) - { - switch (typeDef.FullName) - { - case "System.Boolean": - case "System.Byte": - case "System.SByte": - case "System.Int16": - case "System.UInt16": - case "System.Int32": - case "System.UInt32": - case "System.Int64": - case "System.UInt64": - case "System.Single": - case "System.Double": - case "System.String": - return true; - default: - return false; - } - } - - private static bool IsEngineType(IFullName typeDef) - { - switch (typeDef.FullName) - { - case "UnityEngine.AnimationCurve": - case "UnityEngine.Bounds": - case "UnityEngine.BoundsInt": - case "UnityEngine.Color": - case "UnityEngine.Color32": - case "UnityEngine.Gradient": - case "UnityEngine.GUIStyle": - case "UnityEngine.LayerMask": - case "UnityEngine.Matrix4x4": - case "UnityEngine.PropertyName": - case "UnityEngine.Quaternion": - case "UnityEngine.Rect": - case "UnityEngine.RectInt": - case "UnityEngine.RectOffset": - case "UnityEngine.Vector2": - case "UnityEngine.Vector2Int": - case "UnityEngine.Vector3": - case "UnityEngine.Vector3Int": - case "UnityEngine.Vector4": - return true; - default: - return false; - } - } - } -} diff --git a/AssetStudioUtility/SerializedTypeHelper.cs b/AssetStudioUtility/SerializedTypeHelper.cs new file mode 100644 index 0000000..5d2fc8a --- /dev/null +++ b/AssetStudioUtility/SerializedTypeHelper.cs @@ -0,0 +1,281 @@ +using System.Collections.Generic; + +namespace AssetStudio +{ + public class SerializedTypeHelper + { + private readonly int[] version; + + public SerializedTypeHelper(int[] version) + { + this.version = version; + } + + public void AddMonoBehaviour(List nodes, int indent) + { + nodes.Add(new TypeTreeNode("MonoBehaviour", "Base", indent, false)); + AddPPtr(nodes, "GameObject", "m_GameObject", indent + 1); + nodes.Add(new TypeTreeNode("UInt8", "m_Enabled", indent + 1, true)); + AddPPtr(nodes, "MonoScript", "m_Script", indent + 1); + AddString(nodes, "m_Name", indent + 1); + } + + public void AddPPtr(List nodes, string type, string name, int indent) + { + nodes.Add(new TypeTreeNode($"PPtr<{type}>", name, indent, false)); + nodes.Add(new TypeTreeNode("int", "m_FileID", indent + 1, false)); + if (version[0] >= 5) //5.0 and up + { + nodes.Add(new TypeTreeNode("SInt64", "m_PathID", indent + 1, false)); + } + else + { + nodes.Add(new TypeTreeNode("int", "m_PathID", indent + 1, false)); + } + } + + public void AddString(List nodes, string name, int indent) + { + nodes.Add(new TypeTreeNode("string", name, indent, false)); + nodes.Add(new TypeTreeNode("Array", "Array", indent + 1, true)); + nodes.Add(new TypeTreeNode("int", "size", indent + 2, false)); + nodes.Add(new TypeTreeNode("char", "data", indent + 2, false)); + } + + public void AddArray(List nodes, int indent) + { + nodes.Add(new TypeTreeNode("Array", "Array", indent, false)); + nodes.Add(new TypeTreeNode("int", "size", indent + 1, false)); + } + + public void AddAnimationCurve(List nodes, string name, int indent) + { + nodes.Add(new TypeTreeNode("AnimationCurve", name, indent, false)); + nodes.Add(new TypeTreeNode("vector", "m_Curve", indent + 1, false)); + AddArray(nodes, indent + 2); //TODO 2017 and up Array align but no effect + nodes.Add(new TypeTreeNode("Keyframe", "data", indent + 3, false)); + nodes.Add(new TypeTreeNode("float", "time", indent + 4, false)); + nodes.Add(new TypeTreeNode("float", "value", indent + 4, false)); + nodes.Add(new TypeTreeNode("float", "inSlope", indent + 4, false)); + nodes.Add(new TypeTreeNode("float", "outSlope", indent + 4, false)); + if (version[0] >= 2018) //2018 and up + { + nodes.Add(new TypeTreeNode("int", "weightedMode", indent + 4, false)); + nodes.Add(new TypeTreeNode("float", "inWeight", indent + 4, false)); + nodes.Add(new TypeTreeNode("float", "outWeight", indent + 4, false)); + } + nodes.Add(new TypeTreeNode("int", "m_PreInfinity", indent + 1, false)); + nodes.Add(new TypeTreeNode("int", "m_PostInfinity", indent + 1, false)); + if (version[0] > 5 || (version[0] == 5 && version[1] >= 3)) //5.3 and up + { + nodes.Add(new TypeTreeNode("int", "m_RotationOrder", indent + 1, false)); + } + } + + public void AddGradient(List nodes, string name, int indent) + { + nodes.Add(new TypeTreeNode("Gradient", name, indent, false)); + if (version[0] > 5 || (version[0] == 5 && version[1] >= 6)) //5.6 and up + { + AddColorRGBA(nodes, "key0", indent + 1); + AddColorRGBA(nodes, "key1", indent + 1); + AddColorRGBA(nodes, "key2", indent + 1); + AddColorRGBA(nodes, "key3", indent + 1); + AddColorRGBA(nodes, "key4", indent + 1); + AddColorRGBA(nodes, "key5", indent + 1); + AddColorRGBA(nodes, "key6", indent + 1); + AddColorRGBA(nodes, "key7", indent + 1); + } + else + { + AddColor32(nodes, "key0", indent + 1); + AddColor32(nodes, "key1", indent + 1); + AddColor32(nodes, "key2", indent + 1); + AddColor32(nodes, "key3", indent + 1); + AddColor32(nodes, "key4", indent + 1); + AddColor32(nodes, "key5", indent + 1); + AddColor32(nodes, "key6", indent + 1); + AddColor32(nodes, "key7", indent + 1); + } + nodes.Add(new TypeTreeNode("UInt16", "ctime0", indent + 1, false)); + nodes.Add(new TypeTreeNode("UInt16", "ctime1", indent + 1, false)); + nodes.Add(new TypeTreeNode("UInt16", "ctime2", indent + 1, false)); + nodes.Add(new TypeTreeNode("UInt16", "ctime3", indent + 1, false)); + nodes.Add(new TypeTreeNode("UInt16", "ctime4", indent + 1, false)); + nodes.Add(new TypeTreeNode("UInt16", "ctime5", indent + 1, false)); + nodes.Add(new TypeTreeNode("UInt16", "ctime6", indent + 1, false)); + nodes.Add(new TypeTreeNode("UInt16", "ctime7", indent + 1, false)); + nodes.Add(new TypeTreeNode("UInt16", "atime0", indent + 1, false)); + nodes.Add(new TypeTreeNode("UInt16", "atime1", indent + 1, false)); + nodes.Add(new TypeTreeNode("UInt16", "atime2", indent + 1, false)); + nodes.Add(new TypeTreeNode("UInt16", "atime3", indent + 1, false)); + nodes.Add(new TypeTreeNode("UInt16", "atime4", indent + 1, false)); + nodes.Add(new TypeTreeNode("UInt16", "atime5", indent + 1, false)); + nodes.Add(new TypeTreeNode("UInt16", "atime6", indent + 1, false)); + nodes.Add(new TypeTreeNode("UInt16", "atime7", indent + 1, false)); + if (version[0] > 5 || (version[0] == 5 && version[1] >= 5)) //5.5 and up + { + nodes.Add(new TypeTreeNode("int", "m_Mode", indent + 1, false)); + } + nodes.Add(new TypeTreeNode("UInt8", "m_NumColorKeys", indent + 1, false)); + nodes.Add(new TypeTreeNode("UInt8", "m_NumAlphaKeys", indent + 1, true)); + } + + public void AddGUIStyle(List nodes, string name, int indent) + { + nodes.Add(new TypeTreeNode("GUIStyle", name, indent, false)); + AddString(nodes, "m_Name", indent + 1); + AddGUIStyleState(nodes, "m_Normal", indent + 1); + AddGUIStyleState(nodes, "m_Hover", indent + 1); + AddGUIStyleState(nodes, "m_Active", indent + 1); + AddGUIStyleState(nodes, "m_Focused", indent + 1); + AddGUIStyleState(nodes, "m_OnNormal", indent + 1); + AddGUIStyleState(nodes, "m_OnHover", indent + 1); + AddGUIStyleState(nodes, "m_OnActive", indent + 1); + AddGUIStyleState(nodes, "m_OnFocused", indent + 1); + AddRectOffset(nodes, "m_Border", indent + 1); + if (version[0] >= 4) //4 and up + { + AddRectOffset(nodes, "m_Margin", indent + 1); + AddRectOffset(nodes, "m_Padding", indent + 1); + } + else + { + AddRectOffset(nodes, "m_Padding", indent + 1); + AddRectOffset(nodes, "m_Margin", indent + 1); + } + AddRectOffset(nodes, "m_Overflow", indent + 1); + AddPPtr(nodes, "Font", "m_Font", indent + 1); + if (version[0] >= 4) //4 and up + { + nodes.Add(new TypeTreeNode("int", "m_FontSize", indent + 1, false)); + nodes.Add(new TypeTreeNode("int", "m_FontStyle", indent + 1, false)); + nodes.Add(new TypeTreeNode("int", "m_Alignment", indent + 1, false)); + nodes.Add(new TypeTreeNode("bool", "m_WordWrap", indent + 1, false)); + nodes.Add(new TypeTreeNode("bool", "m_RichText", indent + 1, true)); + nodes.Add(new TypeTreeNode("int", "m_TextClipping", indent + 1, false)); + nodes.Add(new TypeTreeNode("int", "m_ImagePosition", indent + 1, false)); + AddVector2f(nodes, "m_ContentOffset", indent + 1); + nodes.Add(new TypeTreeNode("float", "m_FixedWidth", indent + 1, false)); + nodes.Add(new TypeTreeNode("float", "m_FixedHeight", indent + 1, false)); + nodes.Add(new TypeTreeNode("bool", "m_StretchWidth", indent + 1, false)); + nodes.Add(new TypeTreeNode("bool", "m_StretchHeight", indent + 1, true)); + } + else + { + nodes.Add(new TypeTreeNode("int", "m_ImagePosition", indent + 1, false)); + nodes.Add(new TypeTreeNode("int", "m_Alignment", indent + 1, false)); + nodes.Add(new TypeTreeNode("bool", "m_WordWrap", indent + 1, true)); + nodes.Add(new TypeTreeNode("int", "m_TextClipping", indent + 1, false)); + AddVector2f(nodes, "m_ContentOffset", indent + 1); + AddVector2f(nodes, "m_ClipOffset", indent + 1); + nodes.Add(new TypeTreeNode("float", "m_FixedWidth", indent + 1, false)); + nodes.Add(new TypeTreeNode("float", "m_FixedHeight", indent + 1, false)); + if (version[0] >= 3) //3 and up + { + nodes.Add(new TypeTreeNode("int", "m_FontSize", indent + 1, false)); + nodes.Add(new TypeTreeNode("int", "m_FontStyle", indent + 1, false)); + } + nodes.Add(new TypeTreeNode("bool", "m_StretchWidth", indent + 1, true)); + nodes.Add(new TypeTreeNode("bool", "m_StretchHeight", indent + 1, true)); + } + } + + public void AddGUIStyleState(List nodes, string name, int indent) + { + nodes.Add(new TypeTreeNode("GUIStyleState", name, indent, false)); + AddPPtr(nodes, "Texture2D", "m_Background", indent + 1); + AddColorRGBA(nodes, "m_TextColor", indent + 1); + } + + public void AddVector2f(List nodes, string name, int indent) + { + nodes.Add(new TypeTreeNode("Vector2f", name, indent, false)); + nodes.Add(new TypeTreeNode("float", "x", indent + 1, false)); + nodes.Add(new TypeTreeNode("float", "y", indent + 1, false)); + } + + public void AddRectOffset(List nodes, string name, int indent) + { + nodes.Add(new TypeTreeNode("RectOffset", name, indent, false)); + nodes.Add(new TypeTreeNode("int", "m_Left", indent + 1, false)); + nodes.Add(new TypeTreeNode("int", "m_Right", indent + 1, false)); + nodes.Add(new TypeTreeNode("int", "m_Top", indent + 1, false)); + nodes.Add(new TypeTreeNode("int", "m_Bottom", indent + 1, false)); + } + + public void AddColorRGBA(List nodes, string name, int indent) + { + nodes.Add(new TypeTreeNode("ColorRGBA", name, indent, false)); + nodes.Add(new TypeTreeNode("float", "r", indent + 1, false)); + nodes.Add(new TypeTreeNode("float", "g", indent + 1, false)); + nodes.Add(new TypeTreeNode("float", "b", indent + 1, false)); + nodes.Add(new TypeTreeNode("float", "a", indent + 1, false)); + } + + public void AddColor32(List nodes, string name, int indent) + { + nodes.Add(new TypeTreeNode("ColorRGBA", name, indent, false)); + nodes.Add(new TypeTreeNode("unsigned int", "rgba", indent + 1, false)); + } + + public void AddMatrix4x4(List nodes, string name, int indent) + { + nodes.Add(new TypeTreeNode("Matrix4x4f", name, indent, false)); + nodes.Add(new TypeTreeNode("float", "e00", indent + 1, false)); + nodes.Add(new TypeTreeNode("float", "e01", indent + 1, false)); + nodes.Add(new TypeTreeNode("float", "e02", indent + 1, false)); + nodes.Add(new TypeTreeNode("float", "e03", indent + 1, false)); + nodes.Add(new TypeTreeNode("float", "e10", indent + 1, false)); + nodes.Add(new TypeTreeNode("float", "e11", indent + 1, false)); + nodes.Add(new TypeTreeNode("float", "e12", indent + 1, false)); + nodes.Add(new TypeTreeNode("float", "e13", indent + 1, false)); + nodes.Add(new TypeTreeNode("float", "e20", indent + 1, false)); + nodes.Add(new TypeTreeNode("float", "e21", indent + 1, false)); + nodes.Add(new TypeTreeNode("float", "e22", indent + 1, false)); + nodes.Add(new TypeTreeNode("float", "e23", indent + 1, false)); + nodes.Add(new TypeTreeNode("float", "e30", indent + 1, false)); + nodes.Add(new TypeTreeNode("float", "e31", indent + 1, false)); + nodes.Add(new TypeTreeNode("float", "e32", indent + 1, false)); + nodes.Add(new TypeTreeNode("float", "e33", indent + 1, false)); + } + + public void AddSphericalHarmonicsL2(List nodes, string name, int indent) + { + nodes.Add(new TypeTreeNode("SphericalHarmonicsL2", name, indent, false)); + nodes.Add(new TypeTreeNode("float", "sh[ 0]", indent + 1, false)); + nodes.Add(new TypeTreeNode("float", "sh[ 1]", indent + 1, false)); + nodes.Add(new TypeTreeNode("float", "sh[ 2]", indent + 1, false)); + nodes.Add(new TypeTreeNode("float", "sh[ 3]", indent + 1, false)); + nodes.Add(new TypeTreeNode("float", "sh[ 4]", indent + 1, false)); + nodes.Add(new TypeTreeNode("float", "sh[ 5]", indent + 1, false)); + nodes.Add(new TypeTreeNode("float", "sh[ 6]", indent + 1, false)); + nodes.Add(new TypeTreeNode("float", "sh[ 7]", indent + 1, false)); + nodes.Add(new TypeTreeNode("float", "sh[ 8]", indent + 1, false)); + nodes.Add(new TypeTreeNode("float", "sh[ 9]", indent + 1, false)); + nodes.Add(new TypeTreeNode("float", "sh[10]", indent + 1, false)); + nodes.Add(new TypeTreeNode("float", "sh[11]", indent + 1, false)); + nodes.Add(new TypeTreeNode("float", "sh[12]", indent + 1, false)); + nodes.Add(new TypeTreeNode("float", "sh[13]", indent + 1, false)); + nodes.Add(new TypeTreeNode("float", "sh[14]", indent + 1, false)); + nodes.Add(new TypeTreeNode("float", "sh[15]", indent + 1, false)); + nodes.Add(new TypeTreeNode("float", "sh[16]", indent + 1, false)); + nodes.Add(new TypeTreeNode("float", "sh[17]", indent + 1, false)); + nodes.Add(new TypeTreeNode("float", "sh[18]", indent + 1, false)); + nodes.Add(new TypeTreeNode("float", "sh[19]", indent + 1, false)); + nodes.Add(new TypeTreeNode("float", "sh[20]", indent + 1, false)); + nodes.Add(new TypeTreeNode("float", "sh[21]", indent + 1, false)); + nodes.Add(new TypeTreeNode("float", "sh[22]", indent + 1, false)); + nodes.Add(new TypeTreeNode("float", "sh[23]", indent + 1, false)); + nodes.Add(new TypeTreeNode("float", "sh[24]", indent + 1, false)); + nodes.Add(new TypeTreeNode("float", "sh[25]", indent + 1, false)); + nodes.Add(new TypeTreeNode("float", "sh[26]", indent + 1, false)); + } + + public void AddPropertyName(List nodes, string name, int indent) + { + nodes.Add(new TypeTreeNode("PropertyName", name, indent, false)); + AddString(nodes, "id", indent + 1); + } + } +} diff --git a/AssetStudioUtility/TypeDefinitionConverter.cs b/AssetStudioUtility/TypeDefinitionConverter.cs new file mode 100644 index 0000000..3892ea3 --- /dev/null +++ b/AssetStudioUtility/TypeDefinitionConverter.cs @@ -0,0 +1,307 @@ +using Mono.Cecil; +using System; +using System.Collections.Generic; +using System.Linq; +using Unity.CecilTools; +using Unity.SerializationLogic; + +namespace AssetStudio +{ + public class TypeDefinitionConverter + { + private readonly TypeDefinition TypeDef; + private readonly TypeResolver TypeResolver; + private readonly SerializedTypeHelper Helper; + private readonly int Indent; + + public TypeDefinitionConverter(TypeDefinition typeDef, SerializedTypeHelper helper, int indent) + { + TypeDef = typeDef; + TypeResolver = new TypeResolver(null); + Helper = helper; + Indent = indent; + } + + public List ConvertToTypeTreeNode() + { + var nodes = new List(); + + Stack baseTypes = new Stack(); + TypeReference baseType = TypeDef.BaseType; + while (!UnitySerializationLogic.IsNonSerialized(baseType)) + { + GenericInstanceType genericInstanceType = baseType as GenericInstanceType; + if (genericInstanceType != null) + { + TypeResolver.Add(genericInstanceType); + } + baseTypes.Push(baseType); + baseType = baseType.Resolve().BaseType; + } + while (baseTypes.Count > 0) + { + TypeReference typeReference = baseTypes.Pop(); + TypeDefinition typeDefinition = typeReference.Resolve(); + foreach (var fieldDefinition in typeDefinition.Fields.Where(WillUnitySerialize)) + { + if (!IsHiddenByParentClass(baseTypes, fieldDefinition, TypeDef)) + { + nodes.AddRange(ProcessingFieldRef(ResolveGenericFieldReference(fieldDefinition))); + } + } + + var genericInstanceType2 = typeReference as GenericInstanceType; + if (genericInstanceType2 != null) + { + TypeResolver.Remove(genericInstanceType2); + } + } + foreach (FieldDefinition fieldDefinition2 in FilteredFields()) + { + nodes.AddRange(ProcessingFieldRef(fieldDefinition2)); + } + + return nodes; + } + + private bool WillUnitySerialize(FieldDefinition fieldDefinition) + { + bool result; + try + { + TypeReference typeReference = TypeResolver.Resolve(fieldDefinition.FieldType); + if (UnitySerializationLogic.ShouldNotTryToResolve(typeReference)) + { + result = false; + } + else + { + if (!UnityEngineTypePredicates.IsUnityEngineObject(typeReference)) + { + if (typeReference.FullName == fieldDefinition.DeclaringType.FullName) + { + return false; + } + } + result = UnitySerializationLogic.WillUnitySerialize(fieldDefinition, TypeResolver); + } + } + catch (Exception ex) + { + throw new Exception(string.Format("Exception while processing {0} {1}, error {2}", fieldDefinition.FieldType.FullName, fieldDefinition.FullName, ex.Message)); + } + return result; + } + + private static bool IsHiddenByParentClass(IEnumerable parentTypes, FieldDefinition fieldDefinition, TypeDefinition processingType) + { + return processingType.Fields.Any((FieldDefinition f) => f.Name == fieldDefinition.Name) || parentTypes.Any((TypeReference t) => t.Resolve().Fields.Any((FieldDefinition f) => f.Name == fieldDefinition.Name)); + } + + private IEnumerable FilteredFields() + { + foreach (var f in TypeDef.Fields.Where(WillUnitySerialize)) + { + if (UnitySerializationLogic.IsSupportedCollection(f.FieldType) || !f.FieldType.IsGenericInstance || UnitySerializationLogic.ShouldImplementIDeserializable(f.FieldType.Resolve())) + { + yield return f; + } + } + + yield break; + } + + private FieldReference ResolveGenericFieldReference(FieldReference fieldRef) + { + FieldReference field = new FieldReference(fieldRef.Name, fieldRef.FieldType, ResolveDeclaringType(fieldRef.DeclaringType)); + return TypeDef.Module.ImportReference(field); + } + + private TypeReference ResolveDeclaringType(TypeReference declaringType) + { + TypeDefinition typeDefinition = declaringType.Resolve(); + TypeReference result; + if (typeDefinition == null || !typeDefinition.HasGenericParameters) + { + result = typeDefinition; + } + else + { + GenericInstanceType genericInstanceType = new GenericInstanceType(typeDefinition); + foreach (GenericParameter item in typeDefinition.GenericParameters) + { + genericInstanceType.GenericArguments.Add(item); + } + result = TypeResolver.Resolve(genericInstanceType); + } + return result; + } + + private List ProcessingFieldRef(FieldReference fieldDef) + { + var typeRef = TypeResolver.Resolve(fieldDef.FieldType); + return TypeRefToTypeTreeNodes(typeRef, fieldDef.Name, Indent); + } + + private static bool IsStruct(TypeReference typeRef) + { + return typeRef.IsValueType && !IsEnum(typeRef) && !typeRef.IsPrimitive; + } + + private static bool IsEnum(TypeReference typeRef) + { + return !typeRef.IsArray && typeRef.Resolve().IsEnum; + } + + private static bool RequiresAlignment(TypeReference typeRef) + { + bool result; + switch (typeRef.MetadataType) + { + case MetadataType.Boolean: + case MetadataType.Char: + case MetadataType.SByte: + case MetadataType.Byte: + case MetadataType.Int16: + case MetadataType.UInt16: + result = true; + break; + default: + result = (UnitySerializationLogic.IsSupportedCollection(typeRef) && RequiresAlignment(CecilUtils.ElementTypeOfCollection(typeRef))); + break; + } + return result; + } + + private static bool IsSystemString(TypeReference typeRef) + { + return typeRef.FullName == "System.String"; + } + + private List TypeRefToTypeTreeNodes(TypeReference typeRef, string name, int indent) + { + var align = false; + + if (!IsStruct(TypeDef) || !UnityEngineTypePredicates.IsUnityEngineValueType(TypeDef)) + { + if (IsStruct(typeRef) || RequiresAlignment(typeRef)) + { + align = true; + } + } + + var nodes = new List(); + if (typeRef.IsPrimitive) + { + var primitiveName = typeRef.Name; + switch (primitiveName) + { + case "Boolean": + primitiveName = "bool"; + break; + case "Byte": + primitiveName = "UInt8"; + break; + case "SByte": + primitiveName = "SInt8"; + break; + case "Int16": + primitiveName = "SInt16"; + break; + case "UInt16": + primitiveName = "UInt16"; + break; + case "Int32": + primitiveName = "SInt32"; + break; + case "UInt32": + primitiveName = "UInt32"; + break; + case "Int64": + primitiveName = "SInt64"; + break; + case "UInt64": + primitiveName = "UInt64"; + break; + case "Char": + primitiveName = "char"; + break; + case "Double": + primitiveName = "double"; + break; + case "Single": + primitiveName = "float"; + break; + default: + throw new NotSupportedException(); + } + nodes.Add(new TypeTreeNode(primitiveName, name, indent, align)); + } + else if (IsSystemString(typeRef)) + { + Helper.AddString(nodes, name, indent); + } + else if (IsEnum(typeRef)) + { + nodes.Add(new TypeTreeNode("SInt32", name, indent, align)); + } + else if (CecilUtils.IsGenericList(typeRef)) + { + var elementRef = CecilUtils.ElementTypeOfCollection(typeRef); + nodes.Add(new TypeTreeNode(typeRef.Name, name, indent, align)); + Helper.AddArray(nodes, indent + 1); + nodes.AddRange(TypeRefToTypeTreeNodes(elementRef, "data", indent + 2)); + } + else if (typeRef.IsArray) + { + var elementRef = typeRef.GetElementType(); + nodes.Add(new TypeTreeNode(typeRef.Name, name, indent, align)); + Helper.AddArray(nodes, indent + 1); + nodes.AddRange(TypeRefToTypeTreeNodes(elementRef, "data", indent + 2)); + } + else if (UnityEngineTypePredicates.IsUnityEngineObject(typeRef)) + { + Helper.AddPPtr(nodes, typeRef.Name, name, indent); + } + else if (UnityEngineTypePredicates.IsSerializableUnityClass(typeRef) || UnityEngineTypePredicates.IsSerializableUnityStruct(typeRef)) + { + switch (typeRef.FullName) + { + case "UnityEngine.AnimationCurve": + Helper.AddAnimationCurve(nodes, name, indent + 1); + break; + case "UnityEngine.Gradient": + Helper.AddGradient(nodes, name, indent + 1); + break; + case "UnityEngine.GUIStyle": + Helper.AddGUIStyle(nodes, name, indent + 1); + break; + case "UnityEngine.RectOffset": + Helper.AddRectOffset(nodes, name, indent + 1); + break; + case "UnityEngine.Color32": + Helper.AddColor32(nodes, name, indent + 1); + break; + case "UnityEngine.Matrix4x4": + Helper.AddMatrix4x4(nodes, name, indent + 1); + break; + case "UnityEngine.Rendering.SphericalHarmonicsL2": + Helper.AddSphericalHarmonicsL2(nodes, name, indent + 1); + break; + case "UnityEngine.PropertyName": + Helper.AddPropertyName(nodes, name, indent + 1); + break; + } + } + else + { + nodes.Add(new TypeTreeNode(typeRef.Name, name, indent, align)); + var typeDef = typeRef.Resolve(); + var typeDefinitionConverter = new TypeDefinitionConverter(typeDef, Helper, indent + 1); + nodes.AddRange(typeDefinitionConverter.ConvertToTypeTreeNode()); + } + + return nodes; + } + } +} diff --git a/AssetStudioUtility/packages.config b/AssetStudioUtility/packages.config deleted file mode 100644 index 99bb478..0000000 --- a/AssetStudioUtility/packages.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file