54 lines
1.7 KiB
C#
54 lines
1.7 KiB
C#
using System;
|
|
using System.Linq;
|
|
using Streamingle.Utils.LerpConstraints;
|
|
using UnityEditor;
|
|
using UnityEngine;
|
|
|
|
namespace Streamingle.Utils.LerpConstraintsEditor
|
|
{
|
|
[InitializeOnLoad]
|
|
internal static class LerpConstraintIconInstaller
|
|
{
|
|
private const string IconName = "LerpConstraintIcon";
|
|
|
|
static LerpConstraintIconInstaller()
|
|
{
|
|
EditorApplication.delayCall += ApplyIcons;
|
|
}
|
|
|
|
private static void ApplyIcons()
|
|
{
|
|
Texture2D icon = AssetDatabase
|
|
.FindAssets($"{IconName} t:Texture2D")
|
|
.Select(AssetDatabase.GUIDToAssetPath)
|
|
.Select(AssetDatabase.LoadAssetAtPath<Texture2D>)
|
|
.FirstOrDefault(texture => texture != null);
|
|
|
|
if (icon == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
Type[] constraintTypes =
|
|
{
|
|
typeof(LerpAimConstraint),
|
|
typeof(LerpLookAtConstraint),
|
|
typeof(LerpParentConstraint),
|
|
typeof(LerpPositionConstraint),
|
|
typeof(LerpRotationConstraint),
|
|
typeof(LerpScaleConstraint)
|
|
};
|
|
|
|
string[] scriptGuids = AssetDatabase.FindAssets("t:MonoScript", new[] { "Packages/com.streamingle.utilities/Runtime/Constraints" });
|
|
foreach (string scriptGuid in scriptGuids)
|
|
{
|
|
MonoScript script = AssetDatabase.LoadAssetAtPath<MonoScript>(AssetDatabase.GUIDToAssetPath(scriptGuid));
|
|
if (script != null && constraintTypes.Contains(script.GetClass()))
|
|
{
|
|
EditorGUIUtility.SetIconForObject(script, icon);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|