Пример #1
0
        public VariableView(VariableData variable, IVariableSystem owner, ExplorerVariableData data = null)
        {
            if (data == null)
            {
                data = new ExplorerVariableData();
            }
            data.guid               = variable.Name;
            this.data               = data;
            this.variable           = variable;
            this.owner              = owner;
            title                   = $"{variable.Name} : {variable.type.DisplayName(false, false)}";
            titleIcon.image         = uNodeEditorUtility.GetTypeIcon(typeof(TypeIcons.FieldIcon));
            expandedElement.visible = false;

            titleContainer.RegisterCallback <MouseDownEvent>(evt => {
                if (evt.clickCount >= 2 && evt.button == 0 && owner is uNodeRoot)
                {
                    uNodeEditor.ChangeTarget(owner as uNodeRoot, true);
                    uNodeEditor.window.ChangeEditorSelection(GraphUtility.GetTempGraphVariable(variable.Name, owner as uNodeRoot) ?? variable);
                }
            });
            if (ExplorerManager.explorerData.showSummary)
            {
                if (!string.IsNullOrWhiteSpace(variable.summary))
                {
                    var summary = new SummaryView(variable.summary);
                    headerContainer.Add(summary);
                }
            }
            if (ExplorerManager.explorerData.showTypeIcon)
            {
                typeIcon = new Image()
                {
                    name  = "type-icon",
                    image = uNodeEditorUtility.GetTypeIcon(variable.type),
                };
                titleContainer.Add(typeIcon);
                typeIcon.PlaceInFront(titleIcon);
            }
        }
Пример #2
0
 public HierarchyVariableSystemTree(IVariableSystem variableSystem, int id, int depth) : base(id, depth, "Variables")
 {
     this.variableSystem = variableSystem;
     icon = uNodeEditorUtility.GetTypeIcon(typeof(TypeIcons.FieldIcon)) as Texture2D;
 }
Пример #3
0
        bool FindMissingMember(MemberData member, bool doRefactor)
        {
            bool   flag    = false;
            string refName = member.name;

            switch (member.targetType)
            {
            case MemberData.TargetType.uNodeVariable:
            case MemberData.TargetType.uNodeGroupVariable:
                if (!member.isDeepTarget)
                {
                    break;
                }
                IVariableSystem IVS = member.startTarget as IVariableSystem;
                if (IVS != null)
                {
                    flag        = DoFindMissingMember(IVS.GetVariableData(member.startName).Type, ref refName, member, doRefactor);
                    member.name = refName;
                }
                else if (member.startTarget is ILocalVariableSystem)
                {
                    goto case MemberData.TargetType.uNodeLocalVariable;
                }
                break;

            case MemberData.TargetType.uNodeLocalVariable:
                if (!member.isDeepTarget)
                {
                    break;
                }
                ILocalVariableSystem LVS = member.startTarget as ILocalVariableSystem;
                if (LVS == null)
                {
                    break;
                }
                flag        = DoFindMissingMember(LVS.GetLocalVariableData(member.startName).Type, ref refName, member, doRefactor);
                member.name = refName;
                break;

            case MemberData.TargetType.ValueNode:
                if (!member.isDeepTarget)
                {
                    break;
                }
                Node VN = member.startTarget as Node;
                flag        = DoFindMissingMember(VN.ReturnType(), ref refName, member, doRefactor);
                member.name = refName;
                break;

            case MemberData.TargetType.uNodeProperty:
                if (!member.isDeepTarget)
                {
                    break;
                }
                flag        = DoFindMissingMember((member.startTarget as IPropertySystem).GetPropertyData(member.startName).ReturnType(), ref refName, member, doRefactor);
                member.name = refName;
                break;

            case MemberData.TargetType.NodeField:
                if (member.startTarget != null)
                {
                    var fieldInfo = member.startTarget.GetType().GetField(member.name, MemberData.flags);
                    if (fieldInfo == null)
                    {
                        data.RegisterMissingMember(member.startTarget.GetType(), member.name);
                        if (doRefactor)
                        {
                            member.name = data.DoRefactor(member.startTarget.GetType(), member.name);
                        }
                        flag = true;
                    }
                }
                break;

            case MemberData.TargetType.NodeFieldElement:
                if (member.startTarget != null)
                {
                    var fieldInfo = member.startTarget.GetType().GetField(member.startName.Split('#')[0], MemberData.flags);
                    if (fieldInfo == null)
                    {
                        var arr = member.startName.Split('#');
                        data.RegisterMissingMember(member.startTarget.GetType(), arr[0]);
                        if (doRefactor)
                        {
                            member.name = string.Join("#", data.DoRefactor(member.startTarget.GetType(), arr[0]));
                        }
                        flag = true;
                    }
                }
                break;

            case MemberData.TargetType.FlowInput:
                if (member.startTarget != null)
                {
                    var fieldInfo = member.startTarget.GetType().GetField(member.name, MemberData.flags);
                    if (fieldInfo == null)
                    {
                        data.RegisterMissingMember(member.startTarget.GetType(), member.name);
                        if (doRefactor)
                        {
                            member.name = data.DoRefactor(member.startTarget.GetType(), member.name);
                        }
                        flag = true;
                    }
                }
                break;

            case MemberData.TargetType.uNodeParameter:
                if (!member.isDeepTarget)
                {
                    return(false);
                }
                flag        = DoFindMissingMember((member.startTarget as IParameterSystem).GetParameterData(member.startName).Type, ref refName, member, doRefactor);
                member.name = refName;
                break;

            case MemberData.TargetType.uNodeGenericParameter:
            case MemberData.TargetType.uNodeFunction:
            case MemberData.TargetType.Type:
            case MemberData.TargetType.None:
            case MemberData.TargetType.Null:
            case MemberData.TargetType.SelfTarget:
            case MemberData.TargetType.FlowNode:
            case MemberData.TargetType.Values:
                return(false);

            default:
                flag        = DoFindMissingMember(member.startType, ref refName, member, doRefactor);
                member.name = refName;
                break;
            }
            return(flag);
        }