예제 #1
0
        public override void DrawCurve(BaseNode b)
        {
            Rect rect = b.windowRect;

            rect.y     += b.windowRect.height * .5f;
            rect.width  = 1;
            rect.height = 1;

            BaseNode e = BehaviorEditor.settings.currentGraph.GetNodeWithIndex(b.enterNode);

            if (e == null)
            {
                BehaviorEditor.settings.currentGraph.DeleteNode(b.id);
            }
            else
            {
                Color targetColor = Color.green;
                if (!b.isAssigned || b.isDuplicate)
                {
                    targetColor = Color.red;
                }

                Rect r = e.windowRect;
                BehaviorEditor.DrawNodeCurve(r, rect, true, targetColor);
            }

            if (b.isDuplicate)
            {
                return;
            }

            if (b.targetNode > 0)
            {
                BaseNode t = BehaviorEditor.settings.currentGraph.GetNodeWithIndex(b.targetNode);
                if (t == null)
                {
                    b.targetNode = -1;
                }
                else
                {
                    rect    = b.windowRect;
                    rect.x += rect.width;
                    Rect endRect = t.windowRect;
                    endRect.x -= endRect.width * .5f;

                    Color targetColor = Color.green;

                    if (t.drawNode is StateNode)
                    {
                        if (!t.isAssigned || t.isDuplicate)
                        {
                            targetColor = Color.red;
                        }
                    }
                    else
                    {
                        if (!t.isAssigned)
                        {
                            targetColor = Color.red;
                        }
                        else
                        {
                            targetColor = Color.yellow;
                        }
                    }

                    BehaviorEditor.DrawNodeCurve(rect, endRect, false, targetColor);
                }
            }
        }
        public override void DrawCurve(BaseNode b)
        {
            Rect rect = b.windowRect;

            rect.y     += b.windowRect.height * 0.5f;
            rect.width  = 1;
            rect.height = 1;

            BaseNode enter = BehaviorEditor.settings.currentGraph.GetNodeWithIndex(b.enterNode);

            // if enterNode is null, enterNode has likely been deleted. remove this node
            if (enter == null)
            {
                BehaviorEditor.settings.currentGraph.DeleteNode(enter.id);
            }
            else
            {
                // color transition lines
                Color targetColor = Color.green;
                if (!b.isAssigned || b.isDuplicate)
                {
                    targetColor = Color.red;
                }
                Rect r = enter.windowRect;
                BehaviorEditor.DrawNodeCurve(r, rect, true, targetColor);
            }
            if (b.isDuplicate)
            {
                return;
            }
            if (b.targetNode > 0)
            {
                BaseNode target = BehaviorEditor.settings.currentGraph.GetNodeWithIndex(b.targetNode);
                // if target is null, target has likely been deleted. remove this node
                if (target == null)
                {
                    b.targetNode = -1;
                }
                else
                {
                    rect    = b.windowRect;
                    rect.x += rect.width;
                    Rect endRect = target.windowRect;
                    endRect.x -= endRect.width * 0.5f;
                    Color targetColor = Color.green;
                    if (target.drawNode is StateNode)
                    {
                        if (!target.isAssigned || target.isDuplicate)
                        {
                            targetColor = Color.red;
                        }
                    }
                    else
                    {
                        if (!target.isAssigned)
                        {
                            targetColor = Color.red;
                        }
                        else
                        {
                            targetColor = Color.yellow;
                        }
                    }
                    Rect r = enter.windowRect;
                    BehaviorEditor.DrawNodeCurve(rect, endRect, false, targetColor);
                }
            }
        }