上传YomovSDK
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
using System.Collections;
|
||||
|
||||
namespace RootMotion.FinalIK
|
||||
{
|
||||
|
||||
/*
|
||||
* Base class for all RotationLimitInspector containing common helper methods and drawing instructions
|
||||
* */
|
||||
public class RotationLimitInspector : Editor
|
||||
{
|
||||
|
||||
#region Public methods
|
||||
|
||||
// Universal color pallettes
|
||||
public static Color colorDefault { get { return new Color(0.0f, 1.0f, 1.0f, 1.0f); } }
|
||||
|
||||
public static Color colorDefaultTransparent
|
||||
{
|
||||
get
|
||||
{
|
||||
Color d = colorDefault;
|
||||
return new Color(d.r, d.g, d.b, 0.2f);
|
||||
}
|
||||
}
|
||||
|
||||
public static Color colorHandles { get { return new Color(1.0f, 0.5f, 0.25f, 1.0f); } }
|
||||
public static Color colorRotationSphere { get { return new Color(1.0f, 1.0f, 1.0f, 0.1f); } }
|
||||
public static Color colorInvalid { get { return new Color(1.0f, 0.3f, 0.3f, 1.0f); } }
|
||||
public static Color colorValid { get { return new Color(0.2f, 1.0f, 0.2f, 1.0f); } }
|
||||
|
||||
/*
|
||||
* Draws the default rotation limit sphere to the scene
|
||||
* */
|
||||
public static void DrawRotationSphere(Vector3 position)
|
||||
{
|
||||
Handles.color = colorRotationSphere;
|
||||
Inspector.SphereCap(0, position, Quaternion.identity, 2.0f);
|
||||
Handles.color = Color.white;
|
||||
}
|
||||
|
||||
/*
|
||||
* Draws a custom arrow to the scene
|
||||
* */
|
||||
public static void DrawArrow(Vector3 position, Vector3 direction, Color color, string label = "", float size = 0.01f)
|
||||
{
|
||||
Handles.color = color;
|
||||
Handles.DrawLine(position, position + direction);
|
||||
Inspector.SphereCap(0, position + direction, Quaternion.identity, size);
|
||||
Handles.color = Color.white;
|
||||
|
||||
if (label != "")
|
||||
{
|
||||
GUI.color = color;
|
||||
Handles.Label(position + direction, label);
|
||||
GUI.color = Color.white;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Draws a handle for adjusting rotation limits in the scene
|
||||
* */
|
||||
public static float DrawLimitHandle(float limit, Vector3 position, Quaternion rotation, float radius, string label, float openingValue)
|
||||
{
|
||||
limit = Inspector.ScaleValueHandleSphere(limit, position, rotation, radius, 1);
|
||||
|
||||
string labelInfo = label + ": " + limit.ToString();
|
||||
|
||||
// If value is 0, draw a button to 'open' the value, because we cant scale 0
|
||||
if (limit == 0)
|
||||
{
|
||||
labelInfo = "Open " + label;
|
||||
|
||||
if (Inspector.SphereButton(position, rotation, radius * 0.2f, radius * 0.07f))
|
||||
{
|
||||
limit = openingValue;
|
||||
}
|
||||
}
|
||||
|
||||
Handles.Label(position, labelInfo);
|
||||
|
||||
return limit;
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user