45 lines
1.7 KiB
C#
45 lines
1.7 KiB
C#
using TriLibCore.Mappers;
|
|
using TriLibCore.Utils;
|
|
using UnityEditor;
|
|
using UnityEngine;
|
|
|
|
namespace TriLibCore.Editor
|
|
{
|
|
public class MapperContextActions : MonoBehaviour
|
|
{
|
|
[MenuItem("Assets/Create Mapper Instance")]
|
|
private static void CreateInstance()
|
|
{
|
|
var monoScript = Selection.activeObject as MonoScript;
|
|
if (monoScript != null)
|
|
{
|
|
var scriptableObject = ScriptableObject.CreateInstance(monoScript.GetClass());
|
|
var assetPath = AssetDatabase.GetAssetPath(monoScript);
|
|
var directory = FileUtils.GetFileDirectory(assetPath);
|
|
var name = FileUtils.GetFilenameWithoutExtension(assetPath);
|
|
AssetDatabase.CreateAsset(scriptableObject, $"{directory}/{name}.asset");
|
|
AssetDatabase.SaveAssets();
|
|
}
|
|
}
|
|
|
|
[MenuItem("Assets/Create Mapper Instance", true)]
|
|
private static bool Validate()
|
|
{
|
|
if (Selection.activeObject is MonoScript monoScript)
|
|
{
|
|
var @class = monoScript.GetClass();
|
|
return
|
|
typeof(AnimationClipMapper).IsAssignableFrom(@class) ||
|
|
typeof(MaterialMapper).IsAssignableFrom(@class) ||
|
|
typeof(TextureMapper).IsAssignableFrom(@class) ||
|
|
typeof(HumanoidAvatarMapper).IsAssignableFrom(@class) ||
|
|
typeof(RootBoneMapper).IsAssignableFrom(@class) ||
|
|
typeof(LipSyncMapper).IsAssignableFrom(@class) ||
|
|
typeof(UserPropertiesMapper).IsAssignableFrom(@class) ||
|
|
typeof(ExternalDataMapper).IsAssignableFrom(@class);
|
|
}
|
|
return false;
|
|
}
|
|
}
|
|
}
|