mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-03-26 22:49:01 +08:00
[unity] SpineEditorUtilities Handles
This commit is contained in:
parent
426bb60c3c
commit
2c8f291d7b
@ -1434,6 +1434,67 @@ namespace Spine.Unity.Editor {
|
|||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region Handles
|
||||||
|
static public void DrawBone (Matrix4x4 transformMatrix) {
|
||||||
|
SpineEditorUtilities.Icons.BoneMaterial.SetPass(0);
|
||||||
|
Graphics.DrawMeshNow(SpineEditorUtilities.Icons.BoneMesh, transformMatrix);
|
||||||
|
}
|
||||||
|
|
||||||
|
static float[] pathVertexBuffer;
|
||||||
|
static public void DrawPath (Slot s, PathAttachment p, Transform t) {
|
||||||
|
int worldVerticesLength = p.WorldVerticesLength;
|
||||||
|
|
||||||
|
if (pathVertexBuffer == null || pathVertexBuffer.Length < worldVerticesLength)
|
||||||
|
pathVertexBuffer = new float[worldVerticesLength];
|
||||||
|
|
||||||
|
float[] pv = pathVertexBuffer;
|
||||||
|
p.ComputeWorldVertices(s, pv);
|
||||||
|
|
||||||
|
var ocolor = Handles.color;
|
||||||
|
Handles.color = new Color(254f/255f, 127f/255f, 0); // Path orange
|
||||||
|
|
||||||
|
Matrix4x4 m = t.localToWorldMatrix;
|
||||||
|
const int step = 6;
|
||||||
|
int n = worldVerticesLength - step;
|
||||||
|
Vector3 p0, p1, p2, p3;
|
||||||
|
for (int i = 2; i < n; i += step) {
|
||||||
|
p0 = m.MultiplyPoint(new Vector3(pv[i], pv[i+1]));
|
||||||
|
p1 = m.MultiplyPoint(new Vector3(pv[i+2], pv[i+3]));
|
||||||
|
p2 = m.MultiplyPoint(new Vector3(pv[i+4], pv[i+5]));
|
||||||
|
p3 = m.MultiplyPoint(new Vector3(pv[i+6], pv[i+7]));
|
||||||
|
DrawCubicBezier(p0, p1, p2, p3);
|
||||||
|
}
|
||||||
|
|
||||||
|
n += step;
|
||||||
|
if (p.Closed) {
|
||||||
|
p0 = m.MultiplyPoint(new Vector3(pv[n - 4], pv[n - 3]));
|
||||||
|
p1 = m.MultiplyPoint(new Vector3(pv[n - 2], pv[n - 1]));
|
||||||
|
p2 = m.MultiplyPoint(new Vector3(pv[0], pv[1]));
|
||||||
|
p3 = m.MultiplyPoint(new Vector3(pv[2], pv[3]));
|
||||||
|
DrawCubicBezier(p0, p1, p2, p3);
|
||||||
|
}
|
||||||
|
|
||||||
|
const float endCapSize = 0.05f;
|
||||||
|
var q = Quaternion.identity;
|
||||||
|
Handles.DotCap(0, m.MultiplyPoint(new Vector3(pv[2], pv[3])), q, endCapSize);
|
||||||
|
// if (!p.Closed) Handles.DotCap(0, m.MultiplyPoint(new Vector3(pv[n - 4], pv[n - 3])), q, endCapSize);
|
||||||
|
|
||||||
|
Handles.color = ocolor;
|
||||||
|
}
|
||||||
|
|
||||||
|
static public void DrawCubicBezier (Vector3 p0, Vector3 p1, Vector3 p2, Vector3 p3) {
|
||||||
|
Handles.DrawBezier(p0, p3, p1, p2, Handles.color, Texture2D.whiteTexture, 2f);
|
||||||
|
// const float dotSize = 0.01f;
|
||||||
|
// Quaternion q = Quaternion.identity;
|
||||||
|
// Handles.DotCap(0, p0, q, dotSize);
|
||||||
|
// Handles.DotCap(0, p1, q, dotSize);
|
||||||
|
// Handles.DotCap(0, p2, q, dotSize);
|
||||||
|
// Handles.DotCap(0, p3, q, dotSize);
|
||||||
|
// Handles.DrawLine(p0, p1);
|
||||||
|
// Handles.DrawLine(p3, p2);
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
public static string GetPathSafeRegionName (AtlasRegion region) {
|
public static string GetPathSafeRegionName (AtlasRegion region) {
|
||||||
return region.name.Replace("/", "_");
|
return region.name.Replace("/", "_");
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user