using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UIElements; using UnityEditor.UIElements; namespace UnityEditor.SLZMaterialUI { public class MaterialIntField : IntegerField, BaseMaterialField { public int shaderPropertyIdx; public int GetShaderPropIdx() { return shaderPropertyIdx; } public MaterialProperty materialProperty; public void Initialize(MaterialProperty materialProperty, int shaderPropertyIdx) { this.materialProperty = materialProperty; this.shaderPropertyIdx = shaderPropertyIdx; this.RegisterValueChangedCallback(OnChangedEvent); this.SetValueWithoutNotify(materialProperty.intValue); style.marginRight = 3; if (materialProperty.hasMixedValue) { //this.SetValueWithoutNotify(Color.gray); this.showMixedValue = true; } label = materialProperty.displayName; SetFullLineStyle(); } public void SetFullLineStyle() { VisualElement label = this.ElementAt(0); label.AddToClassList("materialGUILeftBox"); label.style.overflow = Overflow.Hidden; label.style.minWidth = 0; VisualElement color = this.ElementAt(1); color.AddToClassList("materialGUIRightBox"); style.justifyContent = Justify.FlexStart; } public void OnChangedEvent(ChangeEvent evt) { materialProperty.intValue = evt.newValue; this.showMixedValue = false; } public void UpdateMaterialProperty(MaterialProperty boundProp) { materialProperty = boundProp; if (value != boundProp.intValue) { this.SetValueWithoutNotify(boundProp.intValue); } this.showMixedValue = boundProp.hasMixedValue; } } }