示例#1
0
        private void ProcessMembers(Node node, bool add)
        {
            IList <MemberInfo> members = DebugReflectionUtil.GetMemberInfos(node.GetType());

            foreach (MemberInfo info in members)
            {
                ProcessOnScreenDebugAttributeForMember(info, node, add);
            }
        }
示例#2
0
        private void ProcessClass(CanvasItem node, bool add)
        {
            DebugVisibilityGroups attr = DebugReflectionUtil.FindClassAttributeInNode <DebugVisibilityGroups>(node.GetType());

            if (attr == null)
            {
                return;
            }

            foreach (string name in attr.Groups)
            {
                ProcessVisibilityGroupMember(node, name, add);
            }
        }
示例#3
0
        private void OnNodeAdded(Node node)
        {
            Type type = node.GetType();

            if (DebugReflectionUtil.IsInGodotNamespace(type))
            {
                return;
            }

            ProcessMembers(node, true);
            ProcessMethods(node, true);
            if (node is CanvasItem)
            {
                ProcessClass((CanvasItem)node, true);
                ProcessGroups((CanvasItem)node, true);
            }
        }
示例#4
0
 private void ProcessActionAttributeForMethod(MethodInfo info, Node node, bool add)
 {
     if (!add)
     {
         DebugButtonMenu.RemoveButtonsForNode(node);
         return;
     }
     object[] attrs = DebugReflectionUtil.GetCustomAttributes <DebugAction>(info, true);
     if (attrs.Length == 0)
     {
         return;
     }
     foreach (object objAttr in attrs)
     {
         DebugAction attr = (DebugAction)objAttr;
         DebugButtonMenu.AddActionButton(ReplaceName(attr.Name, node), node, () => info.Invoke(node, attr.Parameters));
     }
 }
示例#5
0
        private void ProcessOnScreenDebugAttributeForMethod(MethodInfo info, Node node, bool add)
        {
            OnScreenDebug attr = DebugReflectionUtil.GetCustomAttribute <OnScreenDebug>(info) as OnScreenDebug;

            if (attr != null)
            {
                if (add)
                {
                    // Add
                    OnScreenDebugManager.AddOnScreenDebugInfo(ReplaceName(attr.DebugCategory, node),
                                                              ReplaceName(attr.Name, node), () => GetValueOfMethod(info, node), attr.Color);
                }
                else
                {
                    // Remove
                    OnScreenDebugManager.RemoveOnScreenDebugInfo(ReplaceName(attr.DebugCategory, node),
                                                                 ReplaceName(attr.Name, node));
                }
            }
        }