Пример #1
0
        public HierarchicalComponentContainerElement(HierarchicalComponentContainer <TContainer, TComponent> container, T component, bool optional)
        {
            this.AddStyleSheetAndVariant(ClassNames.BaseClassName);

            m_Container  = container;
            m_IsOptional = optional;

            AddToClassList(ClassNames.BaseClassName);

            var componentContainerName = component.GetType().Name;
            var foldout = new Foldout {
                text = ObjectNames.NicifyVariableName(componentContainerName)
            };

            foldout.AddToClassList(ClassNames.Component);
            foldout.AddToClassList(componentContainerName);
            Add(foldout);

            var toggle = foldout.Q <Toggle>();

            toggle.AddToClassList(ClassNames.Header);

            m_AddButton = new Button(AddComponent);
            m_AddButton.AddToClassList(ClassNames.AddComponent);
            toggle.Add(m_AddButton);

            m_RemoveButton = new Button(RemoveComponent);
            m_RemoveButton.AddToClassList(ClassNames.RemoveComponent);
            toggle.Add(m_RemoveButton);

            m_Element            = new PropertyElement();
            m_Element.OnChanged += ElementOnOnChanged;
            m_Element.SetTarget(component);

            foldout.contentContainer.Add(m_Element);
            foldout.contentContainer.AddToClassList(ClassNames.Fields);

            m_MissingComponentLabel = new Label($"Component of type {typeof(T).Name} is missing");
            m_MissingComponentLabel.style.display = DisplayStyle.None;
            foldout.contentContainer.Add(m_MissingComponentLabel);

            SetStyle();
        }