コード例 #1
0
ファイル: NodeDesigner.cs プロジェクト: mengtest/StateTree
        public bool DrawNode(Vector2 offset, bool drawSelected, bool disabled)
        {
            if (drawSelected != this.mSelected)
            {
                return(false);
            }
            if (ToString().Length != prevFriendlyNameLength)
            {
                prevFriendlyNameLength = ToString().Length;
                mRectIsDirty           = true;
            }
            Rect rect = Rectangle(offset, false, false);

            UpdateCache(rect);
            bool  flag   = (this.mTask.NodeData.PushTime != -1f && this.mTask.NodeData.PushTime >= this.mTask.NodeData.PopTime) || (this.isEntryDisplay && this.outgoingNodeConnections.Count > 0 && this.outgoingNodeConnections[0].DestinationNodeDesigner.Task.NodeData.PushTime != -1f);
            bool  flag2  = this.mIdentifyUpdateCount != -1;
            bool  result = this.prevRunningState != flag;
            float num    = (!BehaviorDesignerPreferences.GetBool(BDPreferences.FadeNodes)) ? 0.01f : 0.5f;
            float num2   = 0f;

            if (flag2)
            {
                if (2000 - this.mIdentifyUpdateCount < 500)
                {
                    num2 = (float)(2000 - this.mIdentifyUpdateCount) / 500f;
                }
                else
                {
                    num2 = 1f;
                }
                if (this.mIdentifyUpdateCount != -1)
                {
                    this.mIdentifyUpdateCount++;
                    if (this.mIdentifyUpdateCount > 2000)
                    {
                        this.mIdentifyUpdateCount = -1;
                    }
                }
                result = true;
            }
            else if (flag)
            {
                num2 = 1f;
            }
            else if ((this.mTask.NodeData.PopTime != -1f && num != 0f && Time.realtimeSinceStartup - this.mTask.NodeData.PopTime < num) || (this.isEntryDisplay && this.outgoingNodeConnections.Count > 0 && this.outgoingNodeConnections[0].DestinationNodeDesigner.Task.NodeData.PopTime != -1f && Time.realtimeSinceStartup - this.outgoingNodeConnections[0].DestinationNodeDesigner.Task.NodeData.PopTime < num))
            {
                if (this.isEntryDisplay)
                {
                    num2 = 1f - (Time.realtimeSinceStartup - this.outgoingNodeConnections[0].DestinationNodeDesigner.Task.NodeData.PopTime) / num;
                }
                else
                {
                    num2 = 1f - (Time.realtimeSinceStartup - this.mTask.NodeData.PopTime) / num;
                }
                result = true;
            }
            if (!this.isEntryDisplay && !this.prevRunningState && this.parentNodeDesigner != null)
            {
                this.parentNodeDesigner.BringConnectionToFront(this);
            }
            this.prevRunningState = flag;
            if (num2 != 1f)
            {
                GUI.color = ((!disabled && !this.mTask.NodeData.Disabled) ? Color.white : this.grayColor);
                GUIStyle backgroundGUIStyle;
                if (BehaviorDesignerPreferences.GetBool(BDPreferences.CompactMode))
                {
                    backgroundGUIStyle = ((!this.mSelected) ? BehaviorDesignerUtility.GetTaskCompactGUIStyle(this.mTask.NodeData.ColorIndex) : BehaviorDesignerUtility.GetTaskSelectedCompactGUIStyle(this.mTask.NodeData.ColorIndex));
                }
                else
                {
                    backgroundGUIStyle = ((!this.mSelected) ? BehaviorDesignerUtility.GetTaskGUIStyle(this.mTask.NodeData.ColorIndex) : BehaviorDesignerUtility.GetTaskSelectedGUIStyle(this.mTask.NodeData.ColorIndex));
                }
                this.DrawNodeTexture(rect, BehaviorDesignerUtility.GetTaskConnectionTopTexture(this.mTask.NodeData.ColorIndex), BehaviorDesignerUtility.GetTaskConnectionBottomTexture(this.mTask.NodeData.ColorIndex), backgroundGUIStyle, BehaviorDesignerUtility.GetTaskBorderTexture(this.mTask.NodeData.ColorIndex));
            }
            if (num2 > 0f)
            {
                GUIStyle  backgroundGUIStyle2;
                Texture2D iconBorderTexture;
                if (flag2)
                {
                    if (BehaviorDesignerPreferences.GetBool(BDPreferences.CompactMode))
                    {
                        if (this.mSelected)
                        {
                            backgroundGUIStyle2 = BehaviorDesignerUtility.TaskIdentifySelectedCompactGUIStyle;
                        }
                        else
                        {
                            backgroundGUIStyle2 = BehaviorDesignerUtility.TaskIdentifyCompactGUIStyle;
                        }
                    }
                    else if (this.mSelected)
                    {
                        backgroundGUIStyle2 = BehaviorDesignerUtility.TaskIdentifySelectedGUIStyle;
                    }
                    else
                    {
                        backgroundGUIStyle2 = BehaviorDesignerUtility.TaskIdentifyGUIStyle;
                    }
                    iconBorderTexture = BehaviorDesignerUtility.TaskBorderIdentifyTexture;
                }
                else
                {
                    if (BehaviorDesignerPreferences.GetBool(BDPreferences.CompactMode))
                    {
                        if (this.mSelected)
                        {
                            backgroundGUIStyle2 = BehaviorDesignerUtility.TaskRunningSelectedCompactGUIStyle;
                        }
                        else
                        {
                            backgroundGUIStyle2 = BehaviorDesignerUtility.TaskRunningCompactGUIStyle;
                        }
                    }
                    else if (this.mSelected)
                    {
                        backgroundGUIStyle2 = BehaviorDesignerUtility.TaskRunningSelectedGUIStyle;
                    }
                    else
                    {
                        backgroundGUIStyle2 = BehaviorDesignerUtility.TaskRunningGUIStyle;
                    }
                    iconBorderTexture = BehaviorDesignerUtility.TaskBorderRunningTexture;
                }
                Color color = (!disabled && !this.mTask.NodeData.Disabled) ? Color.white : this.grayColor;
                color.a   = num2;
                GUI.color = (color);
                Texture2D connectionTopTexture    = null;
                Texture2D connectionBottomTexture = null;
                if (!this.isEntryDisplay)
                {
                    if (flag2)
                    {
                        connectionTopTexture = BehaviorDesignerUtility.TaskConnectionIdentifyTopTexture;
                    }
                    else
                    {
                        connectionTopTexture = BehaviorDesignerUtility.TaskConnectionRunningTopTexture;
                    }
                }
                if (this.isParent)
                {
                    if (flag2)
                    {
                        connectionBottomTexture = BehaviorDesignerUtility.TaskConnectionIdentifyBottomTexture;
                    }
                    else
                    {
                        connectionBottomTexture = BehaviorDesignerUtility.TaskConnectionRunningBottomTexture;
                    }
                }
                this.DrawNodeTexture(rect, connectionTopTexture, connectionBottomTexture, backgroundGUIStyle2, iconBorderTexture);
                GUI.color = (Color.white);
            }
            if (this.mTask.NodeData.Collapsed)
            {
                GUI.DrawTexture(this.nodeCollapsedTextureRect, BehaviorDesignerUtility.TaskConnectionCollapsedTexture);
            }
            if (!BehaviorDesignerPreferences.GetBool(BDPreferences.CompactMode))
            {
                GUI.DrawTexture(iconTextureRect, mTask.NodeData.Icon);
            }
            if (this.mTask.NodeData.InterruptTime != -1f && Time.realtimeSinceStartup - this.mTask.NodeData.InterruptTime < 0.75f + num)
            {
                float a;
                if (Time.realtimeSinceStartup - this.mTask.NodeData.InterruptTime < 0.75f)
                {
                    a = 1f;
                }
                else
                {
                    a = 1f - (Time.realtimeSinceStartup - (this.mTask.NodeData.InterruptTime + 0.75f)) / num;
                }
                Color white = Color.white;
                white.a   = a;
                GUI.color = (white);
                GUI.Label(rect, string.Empty, BehaviorDesignerUtility.TaskHighlightGUIStyle);
                GUI.color = (Color.white);
            }
            GUI.Label(this.titleRect, this.ToString(), BehaviorDesignerUtility.TaskTitleGUIStyle);
            if (this.mTask.NodeData.IsBreakpoint)
            {
                GUI.DrawTexture(this.breakpointTextureRect, BehaviorDesignerUtility.BreakpointTexture);
            }
            if (this.showReferenceIcon)
            {
                GUI.DrawTexture(this.referenceTextureRect, BehaviorDesignerUtility.ReferencedTexture);
            }
            if (this.hasError)
            {
                GUI.DrawTexture(this.errorTextureRect, BehaviorDesignerUtility.ErrorIconTexture);
            }
            if (this.mTask is Composite && (this.mTask as Composite).AbortType != AbortType.None)
            {
                switch ((this.mTask as Composite).AbortType)
                {
                case AbortType.Self:
                    GUI.DrawTexture(this.conditionalAbortTextureRect, BehaviorDesignerUtility.ConditionalAbortSelfTexture);
                    break;

                case AbortType.LowerPriority:
                    GUI.DrawTexture(this.conditionalAbortLowerPriorityTextureRect, BehaviorDesignerUtility.ConditionalAbortLowerPriorityTexture);
                    break;

                case AbortType.Both:
                    GUI.DrawTexture(this.conditionalAbortTextureRect, BehaviorDesignerUtility.ConditionalAbortBothTexture);
                    break;
                }
            }
            GUI.color = (Color.white);
            if (this.showHoverBar)
            {
                GUI.DrawTexture(this.disabledButtonTextureRect, (!this.mTask.NodeData.Disabled) ? BehaviorDesignerUtility.DisableTaskTexture : BehaviorDesignerUtility.EnableTaskTexture, (ScaleMode)2);
                if (this.isParent || this.mTask is BehaviorReference)
                {
                    bool collapsed = this.mTask.NodeData.Collapsed;
                    if (this.mTask is BehaviorReference)
                    {
                        collapsed = (this.mTask as BehaviorReference).collapsed;
                    }
                    GUI.DrawTexture(this.collapseButtonTextureRect, (!collapsed) ? BehaviorDesignerUtility.CollapseTaskTexture : BehaviorDesignerUtility.ExpandTaskTexture, (ScaleMode)2);
                }
            }
            return(result);
        }