Sounds good Joel, thank you for creating the request.
I ended up figuring out how to do it with a user type for my use case. This does a simple job of finding and assigning a LocalizedString to a variable, as that's as much as I need.
Sharing here in case somebody needs this:
Code: Select all
namespace ES3Types
{
[UnityEngine.Scripting.Preserve]
[ES3PropertiesAttribute("TableReference", "TableEntryReference")]
public class ES3UserType_LocalizedString : ES3ObjectType
{
public static ES3Type Instance = null;
public ES3UserType_LocalizedString() : base(typeof(UnityEngine.Localization.LocalizedString)){ Instance = this; priority = 1; }
protected override void WriteObject(object obj, ES3Writer writer)
{
var instance = (UnityEngine.Localization.LocalizedString)obj;
writer.WriteProperty<string>("TableReference", instance.TableReference.TableCollectionName);
writer.WriteProperty<long>("TableEntryReference", instance.TableEntryReference.KeyId);
}
protected override void ReadObject<T>(ES3Reader reader, object obj)
{
var instance = (UnityEngine.Localization.LocalizedString)obj;
foreach (string propertyName in reader.Properties)
{
switch (propertyName)
{
case "TableReference":
instance.TableReference = reader.Read<string>();
break;
case "TableEntryReference":
instance.TableEntryReference = reader.Read<long>();
break;
default:
reader.Skip();
break;
}
}
}
protected override object ReadObject<T>(ES3Reader reader)
{
var instance = new UnityEngine.Localization.LocalizedString();
ReadObject<T>(reader, instance);
return instance;
}
}
public class ES3UserType_LocalizedStringArray : ES3ArrayType
{
public static ES3Type Instance;
public ES3UserType_LocalizedStringArray() : base(typeof(UnityEngine.Localization.LocalizedString[]), ES3UserType_LocalizedString.Instance)
{
Instance = this;
}
}
}
Regards!