Plugin support with TextAsset example

This commit is contained in:
Jeremy Pritts committed 2023-09-09 21:03:59 -04:00
1 parent 2ecf1a24eb
commit bec4fde1b0
10 files changed
+161 -11

No files matched your search

@@ -0,0 +1,4 @@
using TypeTreeConversion;
using TypeTreeConversion.TextAssetExample;
[assembly: RegisterPlugin<TextAssetPlugin>]
@@ -0,0 +1,26 @@
using AssetsTools.NET;
namespace TypeTreeConversion.TextAssetExample;
public class TextAssetFieldConverter : DefaultFieldConverter
{
public TextAssetFieldConverter(ClassDatabaseFile classDatabase) : base(classDatabase)
{
}
protected override AssetTypeValueField CreateNewBaseField(int originalTypeID)
{
return base.CreateNewBaseField(49);
}
protected override void CopyFields(UnityAsset asset, AssetTypeValueField source, AssetTypeValueField destination)
{
CopyFieldsExactly(source, destination);
destination["m_Script"].AsString = $"""
This asset has been replaced with a text asset.
Type ID: {asset.TypeID}
Path ID: {asset.PathID}
Name: {asset.Name}
""";
}
}
@@ -0,0 +1,24 @@
namespace TypeTreeConversion.TextAssetExample;
public class TextAssetPlugin : ConversionPlugin
{
public TextAssetPlugin()
{
Program.RegisterFieldConverters += RegisterFieldConverters;
Program.RegisterTypeTreeReplacers += RegisterTypeTreeReplacers;
}
private static void RegisterFieldConverters(FieldConverterRegistry registry)
{
TextAssetFieldConverter converter = new(registry.ClassDatabase);
registry.Converters.Clear();
registry.DefaultConverter = converter;
}
private static void RegisterTypeTreeReplacers(TypeTreeReplacerRegistry registry)
{
TextAssetTypeTreeConverter converter = new(registry.ClassDatabase);
registry.Replacers.Clear();
registry.DefaultReplacer = converter;
}
}
@@ -0,0 +1,15 @@
using AssetsTools.NET;
namespace TypeTreeConversion.TextAssetExample;
public class TextAssetTypeTreeConverter : DefaultTypeTreeReplacer
{
public TextAssetTypeTreeConverter(ClassDatabaseFile classDatabase) : base(classDatabase)
{
}
protected override TypeTreeType CreateReplacement(int originalTypeID)
{
return base.CreateReplacement(49);
}
}
@@ -0,0 +1,13 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\TypeTreeConversion\TypeTreeConversion.csproj" />
</ItemGroup>
</Project>