void OnFieldValueChange(ChangeEvent <Object> e, string styleName) { var styleProperty = GetStylePropertyByStyleName(styleName); var isNewValue = styleProperty.values.Length == 0; var resourcesPath = BuilderAssetUtilities.GetResourcesPathForAsset(e.newValue); if (!isNewValue) { if (styleProperty.values[0].valueType == StyleValueType.ResourcePath && string.IsNullOrEmpty(resourcesPath)) { styleSheet.RemoveValue(styleProperty, styleProperty.values[0]); isNewValue = true; } else if (styleProperty.values[0].valueType == StyleValueType.AssetReference && !string.IsNullOrEmpty(resourcesPath)) { styleSheet.RemoveValue(styleProperty, styleProperty.values[0]); isNewValue = true; } } if (isNewValue) { styleSheet.AddValue(styleProperty, e.newValue); } else // TODO: Assume only one value. { styleSheet.SetValue(styleProperty.values[0], e.newValue); } PostStyleFieldSteps(e.target as VisualElement, styleName, isNewValue); }
public static void SetValue(this StyleSheet styleSheet, StyleValueHandle valueHandle, Object value) { // Undo/Redo Undo.RegisterCompleteObjectUndo(styleSheet, BuilderConstants.ChangeUIStyleValueUndoMessage); if (valueHandle.valueType == StyleValueType.ResourcePath) { var resourcesPath = BuilderAssetUtilities.GetResourcesPathForAsset(value); styleSheet.strings[valueHandle.valueIndex] = resourcesPath; } else { styleSheet.assets[valueHandle.valueIndex] = value; } }
internal static StyleValueHandle AddValue(this StyleSheet styleSheet, StyleProperty property, Object value) { // Undo/Redo Undo.RegisterCompleteObjectUndo(styleSheet, BuilderConstants.ChangeUIStyleValueUndoMessage); // Determine real asset type. var resourcePath = BuilderAssetUtilities.GetResourcesPathForAsset(value); var styleValueType = string.IsNullOrEmpty(resourcePath) ? StyleValueType.AssetReference : StyleValueType.ResourcePath; // Add value data to data array. var index = string.IsNullOrEmpty(resourcePath) ? styleSheet.AddValueToArray(value) : styleSheet.AddValueToArray(resourcePath); // Add value object to property. var newValue = styleSheet.AddValueHandle(property, index, styleValueType); return(newValue); }