37 lines
1.3 KiB
C#
37 lines
1.3 KiB
C#
using System;
|
|
using UnityEditor;
|
|
using UnityEngine;
|
|
using UnityEngine.UIElements;
|
|
|
|
namespace Unity.Toonshader.Editor
|
|
{
|
|
public class ConverterInitializer
|
|
{
|
|
[InitializeOnLoadMethod]
|
|
public static void Initialize()
|
|
{
|
|
ConverterHelper.RegisterTwoSideConverter<Vector3, Quaternion>(
|
|
nameof(QuaternionToVector3Converter),
|
|
QuaternionToVector3Converter.ConvertTo,
|
|
QuaternionToVector3Converter.ConvertBack);
|
|
}
|
|
}
|
|
|
|
public static class ConverterHelper
|
|
{
|
|
public static void RegisterTwoSideConverter<TSource, TResult>(string groupName, Func<TSource, TResult> convertTo, Func<TResult, TSource> convertBack)
|
|
{
|
|
var converterGroup = new ConverterGroup(groupName);
|
|
converterGroup.AddConverter((ref TSource v) => convertTo(v));
|
|
converterGroup.AddConverter((ref TResult v) => convertBack(v));
|
|
ConverterGroups.RegisterConverterGroup(converterGroup);
|
|
}
|
|
|
|
public static void RegisterOneSideConverter<T1, T2>(string groupName, Func<T1, T2> convertTo)
|
|
{
|
|
var converterGroup = new ConverterGroup(groupName);
|
|
converterGroup.AddConverter((ref T1 v) => convertTo(v));
|
|
ConverterGroups.RegisterConverterGroup(converterGroup);
|
|
}
|
|
}
|
|
} |