Skip to content

Commit

Permalink
feat: retrievable types is preserved automatically
Browse files Browse the repository at this point in the history
  • Loading branch information
labbbirder committed Mar 1, 2024
1 parent f64afaa commit 70abca4
Show file tree
Hide file tree
Showing 3 changed files with 64 additions and 1 deletion.
52 changes: 52 additions & 0 deletions Editor/BuildPreprocessor.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
using System;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Xml;
using UnityEditor;
using UnityEditor.Build;
using UnityEditor.Build.Reporting;
using UnityEngine;
using UnityEngine.Assertions;
namespace com.bbbirder.unityeditor
{
class BuildPreprocessor : IPreprocessBuildWithReport
{
public int callbackOrder => 0;

public void OnPreprocessBuild(BuildReport report)
{
var assemblies = AppDomain.CurrentDomain.GetAssemblies()
.Where(a => a.IsDefined(typeof(GeneratedDirectRetrieveAttribute)))
;


XmlDocument doc = new XmlDocument();
var eleLinker = doc.CreateElement("linker");
doc.AppendChild(eleLinker);
foreach (var assembly in assemblies)
{
var types = assembly.GetCustomAttributes<GeneratedDirectRetrieveAttribute>()
.Select(dra => dra.type)
;
var eleAsm = doc.CreateElement("assembly");
eleAsm.SetAttribute("fullname", assembly.GetName().Name);
eleLinker.AppendChild(eleAsm);
foreach (var t in types)
{
var eleType = doc.CreateElement("type");
eleType.SetAttribute("preserve", "all");
eleType.SetAttribute("fullname", t.FullName);
eleAsm.AppendChild(eleType);
}
}

var targetPath = $"Assets/Generated/{PackageUtils.GetPackageName()}/link.xml";
var targetDir = Path.GetDirectoryName(targetPath);
if (!Directory.Exists(targetDir)) Directory.CreateDirectory(targetDir);
File.WriteAllText(targetPath, doc.InnerXml);

AssetDatabase.ImportAsset(targetPath);
}
}
}
11 changes: 11 additions & 0 deletions Editor/BuildPreprocessor.cs.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "com.bbbirder.directattribute",
"description": "Retrieve attributes and subtypes efficiently, meanwhile, retrieve target type and member directly from an attribute",
"displayName": "Direct Attribute",
"version": "1.1.6",
"version": "1.1.8",
"hideInEditor": false,
"author": "bbbirder <[email protected]>"
}

0 comments on commit 70abca4

Please sign in to comment.