protected void DrawDefaultProperties()
        {
            Type constraintType = m_target.GetType();
            var  fields         = from fi in constraintType.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)
                                  select fi;
            var properties = from pi in constraintType.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)
                             select pi;

            foreach (var field in fields)
            {
                BTPropertyAttribute        propertyAttribute = Attribute.GetCustomAttribute(field, typeof(BTPropertyAttribute)) as BTPropertyAttribute;
                BTIgnoreAttribute          ignoreAttribute   = Attribute.GetCustomAttribute(field, typeof(BTIgnoreAttribute)) as BTIgnoreAttribute;
                BTHideInInspectorAttribute hideAttribute     = Attribute.GetCustomAttribute(field, typeof(BTHideInInspectorAttribute)) as BTHideInInspectorAttribute;
                string label = BTEditorUtils.MakePrettyName(field.Name);

                if (ignoreAttribute != null || hideAttribute != null || (propertyAttribute == null && field.IsPrivate))
                {
                    continue;
                }

                if (field.FieldType == typeof(MemoryVar))
                {
                    DrawMemoryVarField(label, (MemoryVar)field.GetValue(m_target));
                }
                else
                {
                    object value = null;
                    if (TryToDrawField(label, field.GetValue(m_target), field.FieldType, out value))
                    {
                        field.SetValue(m_target, value);
                    }
                }
            }
            foreach (var property in properties)
            {
                BTPropertyAttribute        propertyAttribute = Attribute.GetCustomAttribute(property, typeof(BTPropertyAttribute)) as BTPropertyAttribute;
                BTIgnoreAttribute          ignoreAttribute   = Attribute.GetCustomAttribute(property, typeof(BTIgnoreAttribute)) as BTIgnoreAttribute;
                BTHideInInspectorAttribute hideAttribute     = Attribute.GetCustomAttribute(property, typeof(BTHideInInspectorAttribute)) as BTHideInInspectorAttribute;
                var    setterMethod = property.GetSetMethod(true);
                string label        = BTEditorUtils.MakePrettyName(property.Name);

                if (setterMethod == null || ignoreAttribute != null || hideAttribute != null || (propertyAttribute == null && setterMethod.IsPrivate))
                {
                    continue;
                }

                if (property.PropertyType == typeof(MemoryVar))
                {
                    DrawMemoryVarField(label, (MemoryVar)property.GetValue(m_target, null));
                }
                else
                {
                    object value = null;
                    if (TryToDrawField(label, property.GetValue(m_target, null), property.PropertyType, out value))
                    {
                        property.SetValue(m_target, value, null);
                    }
                }
            }
        }
Esempio n. 2
0
        private void DrawTransitions()
        {
            Vector2            nodeSize   = BTEditorStyle.GetNodeSize(m_node);
            Rect               position   = new Rect(NodePositon + BTEditorCanvas.Current.Position, nodeSize);
            BTEditorTreeLayout treeLayout = BTEditorStyle.TreeLayout;

            foreach (var child in m_children)
            {
                Vector2             childNodeSize = BTEditorStyle.GetNodeSize(child.Node);
                Rect                childPosition = new Rect(child.Node.Position + BTEditorCanvas.Current.Position, childNodeSize);
                BehaviourNodeStatus childStatus   = BTEditorCanvas.Current.IsDebuging ? child.Node.Status : BehaviourNodeStatus.None;
                Color               color         = BTEditorStyle.GetTransitionColor(childStatus);
                Vector2             nodeCenter    = position.center;
                Vector2             childCenter   = childPosition.center;

                if (treeLayout == BTEditorTreeLayout.Vertical)
                {
                    if (Mathf.Approximately(nodeCenter.y, childCenter.y) || Mathf.Approximately(nodeCenter.x, childCenter.x))
                    {
                        BTEditorUtils.DrawLine(nodeCenter, childCenter, color);
                    }
                    else
                    {
                        BTEditorUtils.DrawLine(nodeCenter, nodeCenter + Vector2.up * (childCenter.y - nodeCenter.y) / 2, color);

                        BTEditorUtils.DrawLine(nodeCenter + Vector2.up * (childCenter.y - nodeCenter.y) / 2,
                                               childCenter + Vector2.up * (nodeCenter.y - childCenter.y) / 2, color);

                        BTEditorUtils.DrawLine(childCenter, childCenter + Vector2.up * (nodeCenter.y - childCenter.y) / 2, color);
                    }
                }
                else if (treeLayout == BTEditorTreeLayout.Horizontal)
                {
                    BTEditorUtils.DrawBezier(nodeCenter, childCenter, color);
                }
                else
                {
                    BTEditorUtils.DrawLine(nodeCenter, childCenter, color);
                }
            }
        }