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); } }
public HierarchyVariableSystemTree(IVariableSystem variableSystem, int id, int depth) : base(id, depth, "Variables") { this.variableSystem = variableSystem; icon = uNodeEditorUtility.GetTypeIcon(typeof(TypeIcons.FieldIcon)) as Texture2D; }
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); }