コード例 #1
0
ファイル: TweenerEditor.cs プロジェクト: starburst997/UTween
 public void EditorStop()
 {
     Tweener.Stop(false);
 }
コード例 #2
0
        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();
            }
        }