Esempio n. 1
0
        public static void CreateComponentHeader(VisualElement parent, ComponentPropertyType type, string displayName)
        {
            Resources.Templates.Inspector.ComponentHeader.Clone(parent);
            var foldout = parent.Q <Foldout>(className: UssClasses.Inspector.Component.Header);

            foldout.text = displayName;
            foldout.Q <Label>(className: UssClasses.UIToolkit.Toggle.Text).AddToClassList(UssClasses.Inspector.Component.Name);

            var icon = new BindableElement();

            icon.AddToClassList(UssClasses.Inspector.Component.Icon);
            icon.AddToClassList(UssClasses.Inspector.Icons.Small);
            icon.AddToClassList(GetComponentClass(type));
            var input = foldout.Q <VisualElement>(className: UssClasses.UIToolkit.Toggle.Input);

            input.AddToClassList("shrink");
            input.Insert(1, icon);
            var categoryLabel = new Label(GetComponentCategoryPostfix(type));

            categoryLabel.AddToClassList(UssClasses.Inspector.Component.Category);
            input.Add(categoryLabel);
            categoryLabel.binding = new BooleanVisibilityPreferenceBinding
            {
                Target = categoryLabel, PreferencePath = new PropertyPath(nameof(InspectorSettings.DisplayComponentType))
            };
            categoryLabel.binding.Update();
            var menu = new VisualElement();

            menu.AddToClassList(UssClasses.Inspector.Component.Menu);
            menu.AddToClassList(UssClasses.Inspector.Icons.Small);
            input.Add(menu);
            // TODO: Remove once we add menu items
            menu.Hide();
        }
        public override VisualElement CreateInspectorGUI()
        {
            var root       = new BindableElement();
            var monoScript = new ObjectField("Script")
            {
                value = MonoScript.FromMonoBehaviour(Target)
            };

            monoScript.Q <Label>().style.paddingLeft = 0;
            monoScript.Q(className: "unity-object-field__selector").SetEnabled(false);
            monoScript.RegisterCallback <ChangeEvent <UnityEngine.Object>, ObjectField>(
                (evt, element) => element.value = evt.previousValue, monoScript);

            root.contentContainer.Add(monoScript);
            m_RootElement = new InspectorElement();
            m_RootElement.RegisterCallback <AttachToPanelEvent, (InspectorElement inspector, PropertyBehaviour target)>((evt, ctx) =>
            {
                ctx.inspector.SetTarget(ctx.target);
            }, (m_RootElement, Target));
            m_RootElement.OnChanged += (element, path) => { Target.Save(); };
            root.contentContainer.Add(m_RootElement);
            root.AddToClassList("unity-inspector-element");
            StylingUtility.AlignInspectorLabelWidth(root);
            root.RegisterCallback <GeometryChangedEvent, BindableElement>(OnGeometryChanged, root);

            return(root);
        }
        static void SetCommonNames(IProperty property, BindableElement element)
        {
            var name = property.Name;

            element.name        = name;
            element.bindingPath = name;
            element.AddToClassList(name);
        }
Esempio n. 4
0
 public bool CreateField(Type type, FieldInfo fieldInfo, object initialValue, out BindableElement element)
 {
     element = null;
     foreach (var rule in Rules)
     {
         if (rule.Value.CreateField(this, type, fieldInfo, initialValue, out element))
         {
             element.AddToClassList(TypeFieldClassName);
             return(true);
         }
     }
     return(false);
 }