Tanoda
MapperContextActions.cs
Go to the documentation of this file.
2using TriLibCore.Utils;
3using UnityEditor;
4using UnityEngine;
5
6namespace TriLibCore.Editor
7{
8 public class MapperContextActions : MonoBehaviour
9 {
10 [MenuItem("Assets/Create Mapper Instance")]
11 private static void CreateInstance()
12 {
13 var monoScript = Selection.activeObject as MonoScript;
14 if (monoScript != null)
15 {
16 var scriptableObject = ScriptableObject.CreateInstance(monoScript.GetClass());
17 var assetPath = AssetDatabase.GetAssetPath(monoScript);
18 var directory = FileUtils.GetFileDirectory(assetPath);
19 var name = FileUtils.GetFilenameWithoutExtension(assetPath);
20 AssetDatabase.CreateAsset(scriptableObject, $"{directory}/{name}.asset");
21 AssetDatabase.SaveAssets();
22 }
23 }
24
25 [MenuItem("Assets/Create Mapper Instance", true)]
26 private static bool Validate()
27 {
28 if (Selection.activeObject is MonoScript monoScript)
29 {
30 var @class = monoScript.GetClass();
31 return
32 typeof(AnimationClipMapper).IsAssignableFrom(@class) ||
33 typeof(MaterialMapper).IsAssignableFrom(@class) ||
34 typeof(TextureMapper).IsAssignableFrom(@class) ||
35 typeof(HumanoidAvatarMapper).IsAssignableFrom(@class) ||
36 typeof(RootBoneMapper).IsAssignableFrom(@class) ||
37 typeof(LipSyncMapper).IsAssignableFrom(@class) ||
38 typeof(ExternalDataMapper).IsAssignableFrom(@class);
39 }
40 return false;
41 }
42 }
43}