public void EditorStop() { Tweener.Stop(false); }
public override void OnSceneGUI() { base.OnSceneGUI(); DrawOperateWindow(); var tweenAnimation = TweenAnimation; if (tweenAnimation.QueueVector3.Count < 1) { return; } if (SelectIndex >= tweenAnimation.QueueVector3.Count) { SelectIndex = tweenAnimation.QueueVector3.Count - 1; } for (var i = 0; i < tweenAnimation.QueueVector3.Count; i++) { var pos = tweenAnimation.QueueVector3[i]; var worldPos = IsLocal ? tweenAnimation.transform.parent.localToWorldMatrix.MultiplyPoint(pos) : pos; var size = HandleUtility.GetHandleSize(worldPos) * 0.08f; if (IsLocal) { pos = worldPos; } if (SelectIndex != i) { var pressed = Handles.Button(pos, Quaternion.identity, size, size, SelectCapFunction); if (pressed) { SelectIndex = i; } } if (SelectIndex == i) { var newPos = Handles.PositionHandle(pos, Quaternion.identity); if (newPos != pos) { GUI.changed = true; Undo.RecordObject(tweenAnimation, "Changed TweenPath"); if (IsLocal) { newPos = TweenAnimation.transform.parent.worldToLocalMatrix.MultiplyPoint(newPos); } tweenAnimation.QueueVector3[i] = newPos; } } if (ShowPathInfoInScene) { Handles.Label(pos + Vector3.up * 4f * size, i + " " + tweenAnimation.QueueVector3[i]); } } if (tweenAnimation.PathMode == PathMode.PointToPoint) { Handles.color = Color.green; for (var i = 1; i < tweenAnimation.QueueVector3.Count; i++) { var p1 = tweenAnimation.QueueVector3[i - 1]; var p2 = tweenAnimation.QueueVector3[i]; if (IsLocal) { p1 = TweenAnimation.transform.parent.localToWorldMatrix.MultiplyPoint(p1); p2 = TweenAnimation.transform.parent.localToWorldMatrix.MultiplyPoint(p2); } Handles.DrawLine(p1, p2); } } if (tweenAnimation.PathMode == PathMode.CatmullRom) { Handles.color = Color.green; tweenAnimation.Param.CopyTo(tweenAnimation.Tweener.Param); var delta = 0.01f; for (var i = 0f; i < 1f; i += delta) { var p1 = Tweener.Evaluate(Mathf.Clamp(i, 0.001f, 0.999f)); var p2 = Tweener.Evaluate(Mathf.Clamp(i + delta, 0.001f, 0.999f)); if (IsLocal) { p1 = TweenAnimation.transform.parent.localToWorldMatrix.MultiplyPoint(p1); p2 = TweenAnimation.transform.parent.localToWorldMatrix.MultiplyPoint(p2); } Handles.DrawLine(p1, p2); } } if (GUI.changed) { HandleUtility.Repaint(); } }