From bb0bf35ccb11720b6949970f306a142b3dd12f95 Mon Sep 17 00:00:00 2001 From: Vladislav Panin Date: Sun, 24 May 2026 19:02:39 +0300 Subject: [PATCH 1/8] Extend VisualElement and IStyle fluent extensions Add raw-enum overloads for all StyleEnum setters, conditional *If variants for child management methods, XML documentation for new methods, and fix SetMinSize parameter naming bug. --- .../Extensions/IStyle/IStyleExtensions.cs | 346 +++++++++++++++- .../VisualElementExtensions.Child.cs | 236 +++++++++++ .../VisualElementExtensions.Style.cs | 375 +++++++++++++++++- 3 files changed, 939 insertions(+), 18 deletions(-) diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/IStyle/IStyleExtensions.cs b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/IStyle/IStyleExtensions.cs index 55219d1f..32736ce9 100644 --- a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/IStyle/IStyleExtensions.cs +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/IStyle/IStyleExtensions.cs @@ -78,6 +78,42 @@ public static T SetFlexWrap( style.flexWrap = value; return style; } + + /// + /// Sets and returns the style for chaining. + /// + /// + /// Placement of children over multiple lines if not enough space is available in this container. + /// + /// The style to modify. + /// The flex wrap mode to set. + /// The style, for chaining. + public static T SetFlexWrap( + this T style, + Wrap value) + where T : IStyle + { + style.flexWrap = value; + return style; + } + + /// + /// Sets and returns the style for chaining. + /// + /// + /// Direction of the main axis to layout children in a container. + /// + /// The style to modify. + /// The flex direction to set. + /// The style, for chaining. + public static T SetFlexDirection( + this T style, + StyleEnum value) + where T : IStyle + { + style.flexDirection = value; + return style; + } /// /// Sets and returns the style for chaining. @@ -403,6 +439,24 @@ public static T SetUnityFontStyleAndWeight( style.unityFontStyleAndWeight = value; return style; } + + /// + /// Sets and returns the style for chaining. + /// + /// + /// Font style and weight (normal, bold, italic) to draw the element's text. + /// + /// The style to modify. + /// The font style and weight to set. + /// The style, for chaining. + public static T SetUnityFontStyleAndWeight( + this T style, + FontStyle value) + where T : IStyle + { + style.unityFontStyleAndWeight = value; + return style; + } #endregion #region Text @@ -441,6 +495,24 @@ public static T SetLetterSpacing( style.letterSpacing = value; return style; } + + /// + /// Sets and returns the style for chaining. + /// + /// + /// Horizontal and vertical text alignment in the element's box. + /// + /// The style to modify. + /// The text alignment to set. + /// The style, for chaining. + public static T SetUnityTextAlign( + this T style, + StyleEnum value) + where T : IStyle + { + style.unityTextAlign = value; + return style; + } /// /// Sets and returns the style for chaining. @@ -553,6 +625,24 @@ public static T SetUnityTextAutoSize( #endif #if UNITY_6000_0_OR_NEWER + /// + /// Sets and returns the style for chaining. + /// + /// + /// Switches between Unity's standard and advanced text generator. + /// + /// The style to modify. + /// The text generator type to set. + /// The style, for chaining. + public static T SetUnityTextGenerator( + this T style, + StyleEnum value) + where T : IStyle + { + style.unityTextGenerator = value; + return style; + } + /// /// Sets and returns the style for chaining. /// @@ -570,6 +660,24 @@ public static T SetUnityTextGenerator( style.unityTextGenerator = value; return style; } + + /// + /// Sets and returns the style for chaining. + /// + /// + /// TextElement editor rendering mode. + /// + /// The style to modify. + /// The editor text rendering mode to set. + /// The style, for chaining. + public static T SetUnityEditorTextRenderingMode( + this T style, + StyleEnum value) + where T : IStyle + { + style.unityEditorTextRenderingMode = value; + return style; + } /// /// Sets and returns the style for chaining. @@ -607,6 +715,42 @@ public static T SetTextOverflow( style.textOverflow = value; return style; } + + /// + /// Sets and returns the style for chaining. + /// + /// + /// The element's text overflow mode. + /// + /// The style to modify. + /// The text overflow mode to set. + /// The style, for chaining. + public static T SetTextOverflow( + this T style, + TextOverflow value) + where T : IStyle + { + style.textOverflow = value; + return style; + } + + /// + /// Sets and returns the style for chaining. + /// + /// + /// The element's text overflow position. + /// + /// The style to modify. + /// The text overflow position to set. + /// The style, for chaining. + public static T SetUnityTextOverflowPosition( + this T style, + StyleEnum value) + where T : IStyle + { + style.unityTextOverflowPosition = value; + return style; + } /// /// Sets and returns the style for chaining. @@ -703,6 +847,24 @@ public static T SetAlignSelf( style.alignSelf = value; return style; } + + /// + /// Sets and returns the style for chaining. + /// + /// + /// Similar to align-items, but only for this specific element. + /// + /// The style to modify. + /// The alignment to set. + /// The style, for chaining. + public static T SetAlignSelf( + this T style, + Align value) + where T : IStyle + { + style.alignSelf = value; + return style; + } /// /// Sets and returns the style for chaining. @@ -721,6 +883,24 @@ public static T SetAlignItems( style.alignItems = value; return style; } + + /// + /// Sets and returns the style for chaining. + /// + /// + /// Alignment of children on the cross axis of this container. + /// + /// The style to modify. + /// The children alignment to set. + /// The style, for chaining. + public static T SetAlignItems( + this T style, + Align value) + where T : IStyle + { + style.alignItems = value; + return style; + } /// /// Sets and returns the style for chaining. @@ -739,6 +919,24 @@ public static T SetAlignContent( style.alignContent = value; return style; } + + /// + /// Sets and returns the style for chaining. + /// + /// + /// Alignment of the whole area of children on the cross axis if they span over multiple lines in this container. + /// + /// The style to modify. + /// The content alignment to set. + /// The style, for chaining. + public static T SetAlignContent( + this T style, + Align value) + where T : IStyle + { + style.alignContent = value; + return style; + } #endregion #region Aspect @@ -1633,6 +1831,24 @@ public static T SetPaddingLeft( #endregion #region Display + /// + /// Sets and returns the style for chaining. + /// + /// + /// Defines how an element is displayed in the layout. + /// + /// The style to modify. + /// The display mode to set. + /// The style, for chaining. + public static T SetDisplay( + this T style, + StyleEnum value) + where T : IStyle + { + style.display = value; + return style; + } + /// /// Sets and returns the style for chaining. /// @@ -1670,6 +1886,24 @@ public static T SetOverflow( style.overflow = value; return style; } + + /// + /// Sets and returns the style for chaining. + /// + /// + /// How a container behaves if its content overflows its own box. + /// + /// The style to modify. + /// The overflow behavior to set. + /// The style, for chaining. + public static T SetOverflow( + this T style, + Overflow value) + where T : IStyle + { + style.overflow = value; + return style; + } /// /// Sets and returns the style for chaining. @@ -1688,6 +1922,24 @@ public static T SetUnityOverflowClipBox( style.unityOverflowClipBox = value; return style; } + + /// + /// Sets and returns the style for chaining. + /// + /// + /// Specifies which box the element content is clipped against. + /// + /// The style to modify. + /// The overflow clip box to set. + /// The style, for chaining. + public static T SetUnityOverflowClipBox( + this T style, + OverflowClipBox value) + where T : IStyle + { + style.unityOverflowClipBox = value; + return style; + } #endregion #region Distance @@ -1952,6 +2204,26 @@ public static T SetPosition( return style; } + + + /// + /// Sets and returns the style for chaining. + /// + /// + /// Element's positioning in its parent container. + /// + /// The style to modify. + /// The position type to set. + /// The style, for chaining. + public static T SetPosition( + this T style, + Position value) + where T : IStyle + { + style.position = value; + return style; + } + /// /// Sets and returns the style for chaining. /// @@ -2229,7 +2501,7 @@ public static T SetTransitionProperty( style.transitionProperty = value; return style; } - + /// /// Sets and returns the style for chaining. /// @@ -2451,6 +2723,24 @@ public static T SetUnitySliceType( style.unitySliceType = value; return style; } + + /// + /// Sets and returns the style for chaining. + /// + /// + /// Specifies the type of slicing. + /// + /// The style to modify. + /// The slice type to set. + /// The style, for chaining. + public static T SetUnitySliceType( + this T style, + SliceType value) + where T : IStyle + { + style.unitySliceType = value; + return style; + } #endif #endregion @@ -2472,6 +2762,24 @@ public static T SetVisibility( style.visibility = value; return style; } + + /// + /// Sets and returns the style for chaining. + /// + /// + /// Specifies whether an element is visible. + /// + /// The style to modify. + /// The visibility to set. + /// The style, for chaining. + public static T SetVisibility( + this T style, + Visibility value) + where T : IStyle + { + style.visibility = value; + return style; + } #endregion #region WhiteSpace @@ -2492,6 +2800,24 @@ public static T SetWhiteSpace( style.whiteSpace = value; return style; } + + /// + /// Sets and returns the style for chaining. + /// + /// + /// Word wrap over multiple lines if not enough space is available to draw the text of an element. + /// + /// The style to modify. + /// The white-space mode to set. + /// The style, for chaining. + public static T SetWhiteSpace( + this T style, + WhiteSpace value) + where T : IStyle + { + style.whiteSpace = value; + return style; + } #endregion #region JustifyContent @@ -2512,6 +2838,24 @@ public static T SetJustifyContent( style.justifyContent = value; return style; } + + /// + /// Sets and returns the style for chaining. + /// + /// + /// Justification of children on the main axis of this container. + /// + /// The style to modify. + /// The justify content mode to set. + /// The style, for chaining. + public static T SetJustifyContent( + this T style, + Justify value) + where T : IStyle + { + style.justifyContent = value; + return style; + } #endregion } } diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/VisualElementExtensions.Child.cs b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/VisualElementExtensions.Child.cs index b928a256..ba92f749 100644 --- a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/VisualElementExtensions.Child.cs +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/VisualElementExtensions.Child.cs @@ -19,6 +19,20 @@ public static T AddChild(this T element, VisualElement child) element.Add(child); return element; } + + /// + /// Conditionally adds an element to the of this element and returns the element for chaining. + /// + /// The element to modify. + /// If true, performs the operation; otherwise skips it and returns the element unchanged. + /// The child element to add. + /// The element, for chaining. + public static T AddChildIf(this T element, bool condition, VisualElement child) + where T : VisualElement + { + if (condition) element.Add(child); + return element; + } /// /// Inserts a child element at the specified index in the of this element and returns the element for chaining. @@ -33,6 +47,21 @@ public static T InsertChild(this T element, int index, VisualElement child) element.Insert(index, child); return element; } + + /// + /// Conditionally inserts a child element at the specified index in the of this element and returns the element for chaining. + /// + /// The element to modify. + /// If true, performs the operation; otherwise skips it and returns the element unchanged. + /// The index at which to insert the child. + /// The child element to insert. + /// The element, for chaining. + public static T InsertChildIf(this T element, bool condition, int index, VisualElement child) + where T : VisualElement + { + if (condition) element.Insert(index, child); + return element; + } /// /// Adds a span of child elements to the of this element and returns the element for chaining. @@ -49,6 +78,25 @@ public static T AddChildren(this T element, Span children) return element; } + /// + /// Conditionally adds a span of child elements to the of this element and returns the element for chaining. + /// + /// The element to modify. + /// If true, performs the operation; otherwise skips it and returns the element unchanged. + /// The children to add. + /// The element, for chaining. + public static T AddChildrenIf(this T element, bool condition, Span children) + where T : VisualElement + { + if (condition) + { + foreach (var child in children) + element.Add(child); + } + + return element; + } + /// /// Inserts a span of child elements starting at the specified index in the of this element and returns the element for chaining. /// @@ -64,6 +112,26 @@ public static T InsertChildren(this T element, int index, Span return element; } + + /// + /// Conditionally inserts a span of child elements starting at the specified index in the of this element and returns the element for chaining. + /// + /// The element to modify. + /// If true, performs the operation; otherwise skips it and returns the element unchanged. + /// The index at which to start inserting children. + /// The children to insert. + /// The element, for chaining. + public static T InsertChildrenIf(this T element, bool condition, int index, Span children) + where T : VisualElement + { + if (condition) + { + foreach (var child in children) + element.Insert(index++, child); + } + + return element; + } /// /// Adds a list of child elements to the of this element and returns the element for chaining. @@ -82,6 +150,27 @@ public static T AddChildren(this T element, List children) return element; } + /// + /// Conditionally adds a list of child elements to the of this element and returns the element for chaining. + /// + /// The element to modify. + /// If true, performs the operation; otherwise skips it and returns the element unchanged. + /// The children to add. + /// The element, for chaining. + public static T AddChildrenIf(this T element, bool condition, List children) + where T : VisualElement + { + if (children is null) return element; + + if (condition) + { + foreach (var child in children) + element.Add(child); + } + + return element; + } + /// /// Inserts a list of child elements starting at the specified index in the of this element and returns the element for chaining. /// @@ -99,6 +188,28 @@ public static T InsertChildren(this T element, int index, List return element; } + + /// + /// Conditionally inserts a list of child elements starting at the specified index in the of this element and returns the element for chaining. + /// + /// The element to modify. + /// If true, performs the operation; otherwise skips it and returns the element unchanged. + /// The index at which to start inserting children. + /// The children to insert. + /// The element, for chaining. + public static T InsertChildrenIf(this T element, bool condition, int index, List children) + where T : VisualElement + { + if (children is null) return element; + + if (condition) + { + foreach (var child in children) + element.Insert(index++, child); + } + + return element; + } /// /// Adds an array of child elements to the of this element and returns the element for chaining. @@ -117,6 +228,27 @@ public static T AddChildren(this T element, params VisualElement[] children) return element; } + /// + /// Conditionally adds an array of child elements to the of this element and returns the element for chaining. + /// + /// The element to modify. + /// If true, performs the operation; otherwise skips it and returns the element unchanged. + /// The children to add. + /// The element, for chaining. + public static T AddChildrenIf(this T element, bool condition, params VisualElement[] children) + where T : VisualElement + { + if (children is null) return element; + + if (condition) + { + foreach (var child in children) + element.Add(child); + } + + return element; + } + /// /// Inserts an array of child elements starting at the specified index in the of this element and returns the element for chaining. /// @@ -134,6 +266,28 @@ public static T InsertChildren(this T element, int index, params VisualElemen return element; } + + /// + /// Conditionally inserts an array of child elements starting at the specified index in the of this element and returns the element for chaining. + /// + /// The element to modify. + /// If true, performs the operation; otherwise skips it and returns the element unchanged. + /// The index at which to start inserting children. + /// The children to insert. + /// The element, for chaining. + public static T InsertChildrenIf(this T element, bool condition, int index, params VisualElement[] children) + where T : VisualElement + { + if (children is null) return element; + + if (condition) + { + foreach (var child in children) + element.Insert(index++, child); + } + + return element; + } /// /// Adds an enumerable of child elements to the of this element and returns the element for chaining. @@ -152,6 +306,27 @@ public static T AddChildren(this T element, IEnumerable childr return element; } + /// + /// Conditionally adds an enumerable of child elements to the of this element and returns the element for chaining. + /// + /// The element to modify. + /// If true, performs the operation; otherwise skips it and returns the element unchanged. + /// The children to add. + /// The element, for chaining. + public static T AddChildrenIf(this T element, bool condition, IEnumerable children) + where T : VisualElement + { + if (children is null) return element; + + if (condition) + { + foreach (var child in children) + element.Add(child); + } + + return element; + } + /// /// Inserts an enumerable of child elements starting at the specified index in the of this element and returns the element for chaining. /// @@ -169,6 +344,28 @@ public static T InsertChildren(this T element, int index, IEnumerable + /// Conditionally inserts an enumerable of child elements starting at the specified index in the of this element and returns the element for chaining. + /// + /// The element to modify. + /// If true, performs the operation; otherwise skips it and returns the element unchanged. + /// The index at which to start inserting children. + /// The children to insert. + /// The element, for chaining. + public static T InsertChildrenIf(this T element, bool condition, int index, IEnumerable children) + where T : VisualElement + { + if (children is null) return element; + + if (condition) + { + foreach (var child in children) + element.Insert(index++, child); + } + + return element; + } /// /// Adds a read-only span of child elements to the of this element and returns the element for chaining. @@ -185,6 +382,25 @@ public static T AddChildren(this T element, ReadOnlySpan child return element; } + /// + /// Conditionally adds a read-only span of child elements to the of this element and returns the element for chaining. + /// + /// The element to modify. + /// If true, performs the operation; otherwise skips it and returns the element unchanged. + /// The children to add. + /// The element, for chaining. + public static T AddChildrenIf(this T element, bool condition, ReadOnlySpan children) + where T : VisualElement + { + if (condition) + { + foreach (var child in children) + element.Add(child); + } + + return element; + } + /// /// Inserts a read-only span of child elements starting at the specified index in the of this element and returns the element for chaining. /// @@ -200,5 +416,25 @@ public static T InsertChildren(this T element, int index, ReadOnlySpan + /// Conditionally inserts a read-only span of child elements starting at the specified index in the of this element and returns the element for chaining. + /// + /// The element to modify. + /// If true, performs the operation; otherwise skips it and returns the element unchanged. + /// The index at which to start inserting children. + /// The children to insert. + /// The element, for chaining. + public static T InsertChildrenIf(this T element, bool condition, int index, ReadOnlySpan children) + where T : VisualElement + { + if (condition) + { + foreach (var child in children) + element.Insert(index++, child); + } + + return element; + } } } diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/VisualElementExtensions.Style.cs b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/VisualElementExtensions.Style.cs index 87ddace1..94d44d27 100644 --- a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/VisualElementExtensions.Style.cs +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/VisualElementExtensions.Style.cs @@ -78,6 +78,42 @@ public static T SetFlexWrap( element.style.SetFlexWrap(value); return element; } + + /// + /// Sets and returns the element for chaining. + /// + /// + /// Placement of children over multiple lines if not enough space is available in this container. + /// + /// The element to modify. + /// The flex wrap mode to set. + /// The element, for chaining. + public static T SetFlexWrap( + this T element, + Wrap value) + where T : VisualElement + { + element.style.SetFlexWrap(value); + return element; + } + + /// + /// Sets and returns the element for chaining. + /// + /// + /// Direction of the main axis to layout children in a container. + /// + /// The element to modify. + /// The flex direction to set. + /// The element, for chaining. + public static T SetFlexDirection( + this T element, + StyleEnum value) + where T : VisualElement + { + element.style.SetFlexDirection(value); + return element; + } /// /// Sets and returns the element for chaining. @@ -114,11 +150,9 @@ public static T SetSize( StyleLength value) where T : VisualElement { - element.style.SetSize( + return element.SetSize( width: value, height: value); - - return element; } /// @@ -172,18 +206,18 @@ public static T SetMinSize( /// minHeight –– Minimum height for an element, when it is flexible or measures its own size. /// /// The element to modify. - /// The minimum width to set, or to leave unchanged. - /// The minimum height to set, or to leave unchanged. + /// The minimum width to set, or to leave unchanged. + /// The minimum height to set, or to leave unchanged. /// The element, for chaining. public static T SetMinSize( this T element, - StyleLength? width = null, - StyleLength? height = null) + StyleLength? minWidth = null, + StyleLength? minHeight = null) where T : VisualElement { element.style.SetMinSize( - minWidth: width, - minHeight: height); + minWidth: minWidth, + minHeight: minHeight); return element; } @@ -203,8 +237,9 @@ public static T SetMaxSize( StyleLength value) where T : VisualElement { - element.style.SetMaxSize(value); - return element; + return element.SetMaxSize( + maxWidth: value, + maxHeight: value); } /// @@ -215,18 +250,18 @@ public static T SetMaxSize( /// maxHeight –– Maximum height for an element, when it is flexible or measures its own size. /// /// The element to modify. - /// The maximum width to set, or to leave unchanged. - /// The maximum height to set, or to leave unchanged. + /// The maximum width to set, or to leave unchanged. + /// The maximum height to set, or to leave unchanged. /// The element, for chaining. public static T SetMaxSize( this T element, - StyleLength? width = null, - StyleLength? height = null) + StyleLength? maxWidth = null, + StyleLength? maxHeight = null) where T : VisualElement { element.style.SetMaxSize( - maxWidth: width, - maxHeight: height); + maxWidth: maxWidth, + maxHeight: maxHeight); return element; } @@ -412,6 +447,24 @@ public static T SetUnityFontStyleAndWeight( element.style.SetUnityFontStyleAndWeight(value); return element; } + + /// + /// Sets and returns the element for chaining. + /// + /// + /// Font style and weight (normal, bold, italic) to draw the element's text. + /// + /// The element to modify. + /// The font style and weight to set. + /// The element, for chaining. + public static T SetUnityFontStyleAndWeight( + this T element, + FontStyle value) + where T : VisualElement + { + element.style.SetUnityFontStyleAndWeight(value); + return element; + } #endregion #region Text @@ -450,6 +503,24 @@ public static T SetLetterSpacing( element.style.SetLetterSpacing(value); return element; } + + /// + /// Sets and returns the element for chaining. + /// + /// + /// Horizontal and vertical text alignment in the element's box. + /// + /// The element to modify. + /// The text alignment to set. + /// The element, for chaining. + public static T SetUnityTextAlign( + this T element, + StyleEnum value) + where T : VisualElement + { + element.style.SetUnityTextAlign(value); + return element; + } /// /// Sets and returns the element for chaining. @@ -561,6 +632,24 @@ public static T SetUnityTextAutoSize( } #endif #if UNITY_6000_0_OR_NEWER + /// + /// Sets and returns the element for chaining. + /// + /// + /// Switches between Unity's standard and advanced text generator. + /// + /// The element to modify. + /// The text generator type to set. + /// The element, for chaining. + public static T SetUnityTextGenerator( + this T element, + StyleEnum value) + where T : VisualElement + { + element.style.SetUnityTextGenerator(value); + return element; + } + /// /// Sets and returns the element for chaining. /// @@ -578,6 +667,24 @@ public static T SetUnityTextGenerator( element.style.SetUnityTextGenerator(value); return element; } + + /// + /// Sets and returns the element for chaining. + /// + /// + /// TextElement editor rendering mode. + /// + /// The element to modify. + /// The editor text rendering mode to set. + /// The element, for chaining. + public static T SetUnityEditorTextRenderingMode( + this T element, + StyleEnum value) + where T : VisualElement + { + element.style.SetUnityEditorTextRenderingMode(value); + return element; + } /// /// Sets and returns the element for chaining. @@ -615,6 +722,42 @@ public static T SetTextOverflow( element.style.SetTextOverflow(value); return element; } + + /// + /// Sets and returns the element for chaining. + /// + /// + /// The element's text overflow mode. + /// + /// The element to modify. + /// The text overflow mode to set. + /// The element, for chaining. + public static T SetTextOverflow( + this T element, + TextOverflow value) + where T : VisualElement + { + element.style.SetTextOverflow(value); + return element; + } + + /// + /// Sets and returns the element for chaining. + /// + /// + /// The element's text overflow position. + /// + /// The element to modify. + /// The text overflow position to set. + /// The element, for chaining. + public static T SetUnityTextOverflowPosition( + this T element, + StyleEnum value) + where T : VisualElement + { + element.style.SetUnityTextOverflowPosition(value); + return element; + } /// /// Sets and returns the element for chaining. @@ -709,6 +852,24 @@ public static T SetAlignSelf( element.style.SetAlignSelf(value); return element; } + + /// + /// Sets and returns the element for chaining. + /// + /// + /// Similar to align-items, but only for this specific element. + /// + /// The element to modify. + /// The alignment to set. + /// The element, for chaining. + public static T SetAlignSelf( + this T element, + Align value) + where T : VisualElement + { + element.style.SetAlignSelf(value); + return element; + } /// /// Sets and returns the element for chaining. @@ -727,6 +888,24 @@ public static T SetAlignItems( element.style.SetAlignItems(value); return element; } + + /// + /// Sets and returns the element for chaining. + /// + /// + /// Alignment of children on the cross axis of this container. + /// + /// The element to modify. + /// The children alignment to set. + /// The element, for chaining. + public static T SetAlignItems( + this T element, + Align value) + where T : VisualElement + { + element.style.SetAlignItems(value); + return element; + } /// /// Sets and returns the element for chaining. @@ -745,6 +924,24 @@ public static T SetAlignContent( element.style.SetAlignContent(value); return element; } + + /// + /// Sets and returns the element for chaining. + /// + /// + /// Alignment of the whole area of children on the cross axis if they span over multiple lines in this container. + /// + /// The element to modify. + /// The content alignment to set. + /// The element, for chaining. + public static T SetAlignContent( + this T element, + Align value) + where T : VisualElement + { + element.style.SetAlignContent(value); + return element; + } #endregion #region Aspect @@ -1645,6 +1842,24 @@ public static T SetPaddingLeft( #endregion #region Display + /// + /// Sets and returns the element for chaining. + /// + /// + /// Defines how an element is displayed in the layout. + /// + /// The element to modify. + /// The display mode to set. + /// The element, for chaining. + public static T SetDisplay( + this T element, + StyleEnum value) + where T : VisualElement + { + element.style.SetDisplay(value); + return element; + } + /// /// Sets and returns the element for chaining. /// @@ -1682,6 +1897,24 @@ public static T SetOverflow( element.style.SetOverflow(value); return element; } + + /// + /// Sets and returns the element for chaining. + /// + /// + /// How a container behaves if its content overflows its own box. + /// + /// The element to modify. + /// The overflow behavior to set. + /// The element, for chaining. + public static T SetOverflow( + this T element, + Overflow value) + where T : VisualElement + { + element.style.SetOverflow(value); + return element; + } /// /// Sets and returns the element for chaining. @@ -1700,6 +1933,24 @@ public static T SetUnityOverflowClipBox( element.style.SetUnityOverflowClipBox(value); return element; } + + /// + /// Sets and returns the element for chaining. + /// + /// + /// Specifies which box the element content is clipped against. + /// + /// The element to modify. + /// The overflow clip box to set. + /// The element, for chaining. + public static T SetUnityOverflowClipBox( + this T element, + OverflowClipBox value) + where T : VisualElement + { + element.style.SetUnityOverflowClipBox(value); + return element; + } #endregion #region Distance @@ -1963,6 +2214,24 @@ public static T SetPosition( element.style.SetPosition(value); return element; } + + /// + /// Sets and returns the element for chaining. + /// + /// + /// Element's positioning in its parent container. + /// + /// The element to modify. + /// The position type to set. + /// The element, for chaining. + public static T SetPosition( + this T element, + Position value) + where T : VisualElement + { + element.style.SetPosition(value); + return element; + } /// /// Sets and returns the element for chaining. @@ -2460,6 +2729,24 @@ public static T SetUnitySliceType( element.style.SetUnitySliceType(value); return element; } + + /// + /// Sets and returns the element for chaining. + /// + /// + /// Specifies the type of slicing. + /// + /// The element to modify. + /// The slice type to set. + /// The element, for chaining. + public static T SetUnitySliceType( + this T element, + SliceType value) + where T : VisualElement + { + element.style.SetUnitySliceType(value); + return element; + } #endif #endregion @@ -2481,6 +2768,24 @@ public static T SetVisibility( element.style.SetVisibility(value); return element; } + + /// + /// Sets and returns the element for chaining. + /// + /// + /// Specifies whether an element is visible. + /// + /// The element to modify. + /// The visibility to set. + /// The element, for chaining. + public static T SetVisibility( + this T element, + Visibility value) + where T : VisualElement + { + element.style.SetVisibility(value); + return element; + } #endregion #region WhiteSpace @@ -2501,6 +2806,24 @@ public static T SetWhiteSpace( element.style.SetWhiteSpace(value); return element; } + + /// + /// Sets and returns the element for chaining. + /// + /// + /// Word wrap over multiple lines if not enough space is available to draw the text of an element. + /// + /// The element to modify. + /// The white-space mode to set. + /// The element, for chaining. + public static T SetWhiteSpace( + this T element, + WhiteSpace value) + where T : VisualElement + { + element.style.SetWhiteSpace(value); + return element; + } #endregion #region JustifyContent @@ -2521,6 +2844,24 @@ public static T SetJustifyContent( element.style.SetJustifyContent(value); return element; } + + /// + /// Sets and returns the element for chaining. + /// + /// + /// Justification of children on the main axis of this container. + /// + /// The element to modify. + /// The justify content mode to set. + /// The element, for chaining. + public static T SetJustifyContent( + this T element, + Justify value) + where T : VisualElement + { + element.style.SetJustifyContent(value); + return element; + } #endregion } } From 79e77e89cd0e4ab3ab4fdf48344cc8a5dcd41202 Mon Sep 17 00:00:00 2001 From: Vladislav Panin Date: Sun, 24 May 2026 23:15:21 +0300 Subject: [PATCH 2/8] Add per-type SetLabel extensions and extend VE fluent API - Add BaseFieldExtensionsSetLabel overloads for 25 Unity types (Quaternion, AnimationCurve, Bounds, Color, Vector2/3/4, etc.) and reorganize into BaseFields/ subdirectory - Extend IStyle, VisualElement.Style, VisualElement.Child, VisualElement.Uss, INotifyValueChanged, and list/tree view extensions with new fluent methods - Add editor extensions: IBindable, PropertyField, EnumFlagsField; rename Unbind to UnbindFrom for consistency with BindTo - Add Math-assembly SetValue extensions for float2/3/4, int2/3/4 types --- .../Field/EnumFlagsFieldExtensions.cs | 2 +- .../Extensions/IBindableExtensions.cs | 22 +- .../Extensions/PropertyFieldExtensions.cs | 14 + .../VisualElementExtensions.Bind.cs | 13 + .../Extensions/Button/ButtonExtensions.cs | 14 + .../BaseFieldExtensionsSetLabelQuaternion.cs | 22 + ...eFieldExtensionsSetLabelQuaternion.cs.meta | 3 + .../Extensions/Field/BaseFields.meta | 3 + .../{ => BaseFields}/BaseFieldExtensions.cs | 0 .../BaseFieldExtensions.cs.meta | 0 ...seFieldExtensionsSetLabelAnimationCurve.cs | 23 + ...ldExtensionsSetLabelAnimationCurve.cs.meta | 3 + .../BaseFieldExtensionsSetLabelBounds.cs | 23 + .../BaseFieldExtensionsSetLabelBounds.cs.meta | 3 + .../BaseFieldExtensionsSetLabelBoundsInt.cs | 23 + ...seFieldExtensionsSetLabelBoundsInt.cs.meta | 3 + .../BaseFieldExtensionsSetLabelByte.cs | 22 + .../BaseFieldExtensionsSetLabelByte.cs.meta | 3 + .../BaseFieldExtensionsSetLabelChar.cs | 22 + .../BaseFieldExtensionsSetLabelChar.cs.meta | 3 + .../BaseFieldExtensionsSetLabelColor.cs | 23 + .../BaseFieldExtensionsSetLabelColor.cs.meta | 3 + .../BaseFieldExtensionsSetLabelColor32.cs | 23 + ...BaseFieldExtensionsSetLabelColor32.cs.meta | 3 + .../BaseFieldExtensionsSetLabelDecimal.cs | 22 + ...BaseFieldExtensionsSetLabelDecimal.cs.meta | 3 + .../BaseFieldExtensionsSetLabelDouble.cs | 22 + .../BaseFieldExtensionsSetLabelDouble.cs.meta | 3 + .../BaseFieldExtensionsSetLabelEnum.cs | 23 + .../BaseFieldExtensionsSetLabelEnum.cs.meta | 3 + .../BaseFieldExtensionsSetLabelFloat.cs | 22 + .../BaseFieldExtensionsSetLabelFloat.cs.meta | 3 + .../BaseFieldExtensionsSetLabelGradient.cs | 23 + ...aseFieldExtensionsSetLabelGradient.cs.meta | 3 + .../BaseFieldExtensionsSetLabelHash128.cs | 23 + ...BaseFieldExtensionsSetLabelHash128.cs.meta | 3 + .../BaseFieldExtensionsSetLabelInt.cs | 22 + .../BaseFieldExtensionsSetLabelInt.cs.meta | 3 + .../BaseFieldExtensionsSetLabelLong.cs | 22 + .../BaseFieldExtensionsSetLabelLong.cs.meta | 3 + .../BaseFieldExtensionsSetLabelObject.cs | 23 + .../BaseFieldExtensionsSetLabelObject.cs.meta | 3 + .../BaseFieldExtensionsSetLabelRect.cs | 23 + .../BaseFieldExtensionsSetLabelRect.cs.meta | 3 + .../BaseFieldExtensionsSetLabelSbyte.cs | 22 + .../BaseFieldExtensionsSetLabelSbyte.cs.meta | 3 + .../BaseFieldExtensionsSetLabelShort.cs | 22 + .../BaseFieldExtensionsSetLabelShort.cs.meta | 3 + .../BaseFieldExtensionsSetLabelString.cs | 22 + .../BaseFieldExtensionsSetLabelString.cs.meta | 3 + .../BaseFieldExtensionsSetLabelULong.cs | 22 + .../BaseFieldExtensionsSetLabelULong.cs.meta | 3 + .../BaseFieldExtensionsSetLabelUint.cs | 22 + .../BaseFieldExtensionsSetLabelUint.cs.meta | 3 + .../BaseFieldExtensionsSetLabelUshort.cs | 22 + .../BaseFieldExtensionsSetLabelUshort.cs.meta | 3 + .../BaseFieldExtensionsSetLabelVector2.cs | 23 + ...BaseFieldExtensionsSetLabelVector2.cs.meta | 3 + .../BaseFieldExtensionsSetLabelVector2Int.cs | 23 + ...eFieldExtensionsSetLabelVector2Int.cs.meta | 3 + .../BaseFieldExtensionsSetLabelVector3.cs | 23 + ...BaseFieldExtensionsSetLabelVector3.cs.meta | 3 + .../BaseFieldExtensionsSetLabelVector3Int.cs | 23 + ...eFieldExtensionsSetLabelVector3Int.cs.meta | 3 + .../BaseFieldExtensionsSetLabelVector4.cs | 23 + ...BaseFieldExtensionsSetLabelVector4.cs.meta | 3 + .../Focusable/FocusableExtensions.cs | 2 +- ...tifyValueChangedExtensions.ValueChanged.cs | 444 +++---- ...ifyValueChangedExtensions.SetValue.Math.cs | 388 ++++++ ...alueChangedExtensions.ValueChanged.Math.cs | 1078 +++++++++++++---- .../Extensions/IStyle/IStyleExtensions.cs | 245 +++- .../Extensions/List/BaseListViewExtensions.cs | 56 + .../List/MultiColumnListViewExtensions.cs | 29 + .../List/MultiColumnTreeViewExtensions.cs | 29 + .../Manipulators/ManipulatorExtensions.cs | 12 + .../ProgressBar/ProgressBarExtensions.cs | 14 + .../VisualElementExtensions.Child.cs | 38 + .../VisualElementExtensions.Style.cs | 154 ++- .../Extensions/VisualElementExtensions.Uss.cs | 18 +- Aspid.FastTools/Assets/Plugins.meta | 8 - .../ProjectSettings/ProjectSettings.asset | 2 +- 81 files changed, 2842 insertions(+), 483 deletions(-) create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFieldExtensionsSetLabelQuaternion.cs create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFieldExtensionsSetLabelQuaternion.cs.meta create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields.meta rename Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/{ => BaseFields}/BaseFieldExtensions.cs (100%) rename Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/{ => BaseFields}/BaseFieldExtensions.cs.meta (100%) create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelAnimationCurve.cs create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelAnimationCurve.cs.meta create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelBounds.cs create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelBounds.cs.meta create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelBoundsInt.cs create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelBoundsInt.cs.meta create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelByte.cs create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelByte.cs.meta create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelChar.cs create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelChar.cs.meta create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelColor.cs create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelColor.cs.meta create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelColor32.cs create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelColor32.cs.meta create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelDecimal.cs create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelDecimal.cs.meta create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelDouble.cs create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelDouble.cs.meta create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelEnum.cs create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelEnum.cs.meta create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelFloat.cs create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelFloat.cs.meta create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelGradient.cs create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelGradient.cs.meta create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelHash128.cs create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelHash128.cs.meta create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelInt.cs create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelInt.cs.meta create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelLong.cs create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelLong.cs.meta create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelObject.cs create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelObject.cs.meta create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelRect.cs create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelRect.cs.meta create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelSbyte.cs create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelSbyte.cs.meta create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelShort.cs create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelShort.cs.meta create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelString.cs create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelString.cs.meta create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelULong.cs create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelULong.cs.meta create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelUint.cs create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelUint.cs.meta create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelUshort.cs create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelUshort.cs.meta create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelVector2.cs create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelVector2.cs.meta create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelVector2Int.cs create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelVector2Int.cs.meta create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelVector3.cs create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelVector3.cs.meta create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelVector3Int.cs create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelVector3Int.cs.meta create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelVector4.cs create mode 100644 Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelVector4.cs.meta delete mode 100644 Aspid.FastTools/Assets/Plugins.meta diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Editor/Scripts/VisualElements/Extensions/Field/EnumFlagsFieldExtensions.cs b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Editor/Scripts/VisualElements/Extensions/Field/EnumFlagsFieldExtensions.cs index bf1de129..011a9724 100644 --- a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Editor/Scripts/VisualElements/Extensions/Field/EnumFlagsFieldExtensions.cs +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Editor/Scripts/VisualElements/Extensions/Field/EnumFlagsFieldExtensions.cs @@ -7,7 +7,7 @@ namespace Aspid.FastTools.UIElements.Editors public static class EnumFlagsFieldExtensions { /// - /// Initializes the field with a default enum flags value. + /// Initializes the field with a default enum flags value via . /// /// The element to modify. /// The default enum flags value to display. diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Editor/Scripts/VisualElements/Extensions/IBindableExtensions.cs b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Editor/Scripts/VisualElements/Extensions/IBindableExtensions.cs index 71617e54..3b0e752d 100644 --- a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Editor/Scripts/VisualElements/Extensions/IBindableExtensions.cs +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Editor/Scripts/VisualElements/Extensions/IBindableExtensions.cs @@ -23,16 +23,30 @@ public static T BindTo(this T element, SerializedObject serializedObject, str } /// - /// Binds the bindable to the specified . + /// Binds the element to the specified . /// - /// The bindable to bind. + /// The element to bind. /// The serialized property to bind to. - /// The bindable, for chaining. + /// The element, for chaining. public static T BindPropertyTo(this T element, SerializedProperty property) - where T : IBindable + where T : VisualElement, IBindable { element.BindProperty(property); return element; } + + /// + /// Sets the binding path of the element. + /// + /// The element type. + /// The element to modify. + /// The binding path to set. + /// The element, for chaining. + public static T SetBindingPath(this T element, string value) + where T : VisualElement, IBindable + { + element.bindingPath = value; + return element; + } } } diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Editor/Scripts/VisualElements/Extensions/PropertyFieldExtensions.cs b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Editor/Scripts/VisualElements/Extensions/PropertyFieldExtensions.cs index 119e3216..fd2cd5f0 100644 --- a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Editor/Scripts/VisualElements/Extensions/PropertyFieldExtensions.cs +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Editor/Scripts/VisualElements/Extensions/PropertyFieldExtensions.cs @@ -31,5 +31,19 @@ public static T RemoveValueChanged(this T element, EventCallback + /// Sets the label of the property field. + /// + /// The element type. + /// The element to modify. + /// The label text to set. + /// The element, for chaining. + public static T SetLabel(this T element, string value) + where T : PropertyField + { + element.label = value; + return element; + } } } diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Editor/Scripts/VisualElements/Extensions/VisualElementExtensions.Bind.cs b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Editor/Scripts/VisualElements/Extensions/VisualElementExtensions.Bind.cs index f891b8a6..906c3214 100644 --- a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Editor/Scripts/VisualElements/Extensions/VisualElementExtensions.Bind.cs +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Editor/Scripts/VisualElements/Extensions/VisualElementExtensions.Bind.cs @@ -19,5 +19,18 @@ public static T BindTo(this T element, SerializedObject obj) element.Bind(obj); return element; } + + /// + /// Unbinds the element from its serialized object. + /// + /// The element type. + /// The element to unbind. + /// The element, for chaining. + public static T UnbindFrom(this T element) + where T : VisualElement + { + element.Unbind(); + return element; + } } } diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Button/ButtonExtensions.cs b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Button/ButtonExtensions.cs index 4443bfc6..c625d49e 100644 --- a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Button/ButtonExtensions.cs +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Button/ButtonExtensions.cs @@ -49,6 +49,20 @@ public static T SetClickable(this T element, Clickable value) element.clickable = value; return element; } + + /// + /// Sets the click handler of the button by replacing the clickable manipulator. + /// + /// The element type. + /// The element to modify. + /// The action to invoke on click. + /// The element, for chaining. + public static T SetClickable(this T element, Action action) + where T : Button + { + element.clickable = new Clickable(action); + return element; + } /// /// Sets and returns the element for chaining. diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFieldExtensionsSetLabelQuaternion.cs b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFieldExtensionsSetLabelQuaternion.cs new file mode 100644 index 00000000..24dacc6b --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFieldExtensionsSetLabelQuaternion.cs @@ -0,0 +1,22 @@ +using UnityEngine; +using UnityEngine.UIElements; + +namespace Aspid.FastTools.UIElements +{ + public static partial class BaseFieldExtensionsSetLabelQuaternion + { + /// + /// Sets the label of the field via . + /// + /// The field type. + /// The element to modify. + /// The label text to set. + /// The element, for chaining. + public static T SetLabel(this T element, string value) + where T : BaseField + { + element.label = value; + return element; + } + } +} diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFieldExtensionsSetLabelQuaternion.cs.meta b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFieldExtensionsSetLabelQuaternion.cs.meta new file mode 100644 index 00000000..7ddea0ed --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFieldExtensionsSetLabelQuaternion.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: f00d796bf1574aaf8014ad61a4265ea3 +timeCreated: 1779651087 \ No newline at end of file diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields.meta b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields.meta new file mode 100644 index 00000000..d93c59f8 --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: e877d093212c4bf9b53101e07042d03a +timeCreated: 1779651409 \ No newline at end of file diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFieldExtensions.cs b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensions.cs similarity index 100% rename from Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFieldExtensions.cs rename to Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensions.cs diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFieldExtensions.cs.meta b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensions.cs.meta similarity index 100% rename from Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFieldExtensions.cs.meta rename to Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensions.cs.meta diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelAnimationCurve.cs b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelAnimationCurve.cs new file mode 100644 index 00000000..6966d192 --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelAnimationCurve.cs @@ -0,0 +1,23 @@ +using UnityEngine; +using UnityEngine.UIElements; + +// ReSharper disable once CheckNamespace +namespace Aspid.FastTools.UIElements +{ + public static class BaseFieldExtensionsSetLabelAnimationCurve + { + /// + /// Sets the label of the field via . + /// + /// The field type. + /// The element to modify. + /// The label text to set. + /// The element, for chaining. + public static T SetLabel(this T element, string value) + where T : BaseField + { + element.label = value; + return element; + } + } +} diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelAnimationCurve.cs.meta b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelAnimationCurve.cs.meta new file mode 100644 index 00000000..0c208688 --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelAnimationCurve.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 59bc1174cae34b3b89f0cc5afc66c730 +timeCreated: 1779651740 \ No newline at end of file diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelBounds.cs b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelBounds.cs new file mode 100644 index 00000000..efa2773a --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelBounds.cs @@ -0,0 +1,23 @@ +using UnityEngine; +using UnityEngine.UIElements; + +// ReSharper disable once CheckNamespace +namespace Aspid.FastTools.UIElements +{ + public static class BaseFieldExtensionsSetLabelBounds + { + /// + /// Sets the label of the field via . + /// + /// The field type. + /// The element to modify. + /// The label text to set. + /// The element, for chaining. + public static T SetLabel(this T element, string value) + where T : BaseField + { + element.label = value; + return element; + } + } +} diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelBounds.cs.meta b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelBounds.cs.meta new file mode 100644 index 00000000..cc54fed5 --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelBounds.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: afc50e3a9b3d42dbb9e8eb8a8d473dba +timeCreated: 1779651716 \ No newline at end of file diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelBoundsInt.cs b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelBoundsInt.cs new file mode 100644 index 00000000..10490a00 --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelBoundsInt.cs @@ -0,0 +1,23 @@ +using UnityEngine; +using UnityEngine.UIElements; + +// ReSharper disable once CheckNamespace +namespace Aspid.FastTools.UIElements +{ + public static class BaseFieldExtensionsSetLabelBoundsInt + { + /// + /// Sets the label of the field via . + /// + /// The field type. + /// The element to modify. + /// The label text to set. + /// The element, for chaining. + public static T SetLabel(this T element, string value) + where T : BaseField + { + element.label = value; + return element; + } + } +} diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelBoundsInt.cs.meta b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelBoundsInt.cs.meta new file mode 100644 index 00000000..1690f473 --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelBoundsInt.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 3152344fb1bd4e3f82a80bfae41b3b51 +timeCreated: 1779651720 \ No newline at end of file diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelByte.cs b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelByte.cs new file mode 100644 index 00000000..ceabb8c7 --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelByte.cs @@ -0,0 +1,22 @@ +using UnityEngine.UIElements; + +// ReSharper disable once CheckNamespace +namespace Aspid.FastTools.UIElements +{ + public static class BaseFieldExtensionsSetLabelByte + { + /// + /// Sets the label of the field via . + /// + /// The field type. + /// The element to modify. + /// The label text to set. + /// The element, for chaining. + public static T SetLabel(this T element, string value) + where T : BaseField + { + element.label = value; + return element; + } + } +} diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelByte.cs.meta b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelByte.cs.meta new file mode 100644 index 00000000..40f7803d --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelByte.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: babe05b587ae401bb87cfec8029aff8e +timeCreated: 1779651620 \ No newline at end of file diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelChar.cs b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelChar.cs new file mode 100644 index 00000000..e22a5b0c --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelChar.cs @@ -0,0 +1,22 @@ +using UnityEngine.UIElements; + +// ReSharper disable once CheckNamespace +namespace Aspid.FastTools.UIElements +{ + public static class BaseFieldExtensionsSetLabelChar + { + /// + /// Sets the label of the field via . + /// + /// The field type. + /// The element to modify. + /// The label text to set. + /// The element, for chaining. + public static T SetLabel(this T element, string value) + where T : BaseField + { + element.label = value; + return element; + } + } +} diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelChar.cs.meta b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelChar.cs.meta new file mode 100644 index 00000000..cdbe6c08 --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelChar.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: a7803a9724ae4ad7b94a06b9bfd7f267 +timeCreated: 1779651656 \ No newline at end of file diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelColor.cs b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelColor.cs new file mode 100644 index 00000000..d80983b7 --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelColor.cs @@ -0,0 +1,23 @@ +using UnityEngine; +using UnityEngine.UIElements; + +// ReSharper disable once CheckNamespace +namespace Aspid.FastTools.UIElements +{ + public static class BaseFieldExtensionsSetLabelColor + { + /// + /// Sets the label of the field via . + /// + /// The field type. + /// The element to modify. + /// The label text to set. + /// The element, for chaining. + public static T SetLabel(this T element, string value) + where T : BaseField + { + element.label = value; + return element; + } + } +} diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelColor.cs.meta b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelColor.cs.meta new file mode 100644 index 00000000..ef1ec51c --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelColor.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 4ce625c963a940dd9980b8dc76702433 +timeCreated: 1779651660 \ No newline at end of file diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelColor32.cs b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelColor32.cs new file mode 100644 index 00000000..62e470af --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelColor32.cs @@ -0,0 +1,23 @@ +using UnityEngine; +using UnityEngine.UIElements; + +// ReSharper disable once CheckNamespace +namespace Aspid.FastTools.UIElements +{ + public static class BaseFieldExtensionsSetLabelColor32 + { + /// + /// Sets the label of the field via . + /// + /// The field type. + /// The element to modify. + /// The label text to set. + /// The element, for chaining. + public static T SetLabel(this T element, string value) + where T : BaseField + { + element.label = value; + return element; + } + } +} diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelColor32.cs.meta b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelColor32.cs.meta new file mode 100644 index 00000000..9d72075e --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelColor32.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: aae4e62fbd3a4b78b6d49231f80bbadf +timeCreated: 1779651664 \ No newline at end of file diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelDecimal.cs b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelDecimal.cs new file mode 100644 index 00000000..4aa1eb11 --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelDecimal.cs @@ -0,0 +1,22 @@ +using UnityEngine.UIElements; + +// ReSharper disable once CheckNamespace +namespace Aspid.FastTools.UIElements +{ + public static class BaseFieldExtensionsSetLabelDecimal + { + /// + /// Sets the label of the field via . + /// + /// The field type. + /// The element to modify. + /// The label text to set. + /// The element, for chaining. + public static T SetLabel(this T element, string value) + where T : BaseField + { + element.label = value; + return element; + } + } +} diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelDecimal.cs.meta b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelDecimal.cs.meta new file mode 100644 index 00000000..7e22a022 --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelDecimal.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: f639ff2a7b7a4cf8aeb509070b1eabeb +timeCreated: 1779651647 \ No newline at end of file diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelDouble.cs b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelDouble.cs new file mode 100644 index 00000000..c57e599d --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelDouble.cs @@ -0,0 +1,22 @@ +using UnityEngine.UIElements; + +// ReSharper disable once CheckNamespace +namespace Aspid.FastTools.UIElements +{ + public static class BaseFieldExtensionsSetLabelDouble + { + /// + /// Sets the label of the field via . + /// + /// The field type. + /// The element to modify. + /// The label text to set. + /// The element, for chaining. + public static T SetLabel(this T element, string value) + where T : BaseField + { + element.label = value; + return element; + } + } +} diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelDouble.cs.meta b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelDouble.cs.meta new file mode 100644 index 00000000..3588a5ec --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelDouble.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: c956291219fe48e5b410cf7983980d80 +timeCreated: 1779651643 \ No newline at end of file diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelEnum.cs b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelEnum.cs new file mode 100644 index 00000000..7e6a5daf --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelEnum.cs @@ -0,0 +1,23 @@ +using System; +using UnityEngine.UIElements; + +// ReSharper disable once CheckNamespace +namespace Aspid.FastTools.UIElements +{ + public static class BaseFieldExtensionsSetLabelEnum + { + /// + /// Sets the label of the field via . + /// + /// The field type. + /// The element to modify. + /// The label text to set. + /// The element, for chaining. + public static T SetLabel(this T element, string value) + where T : BaseField + { + element.label = value; + return element; + } + } +} diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelEnum.cs.meta b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelEnum.cs.meta new file mode 100644 index 00000000..738cc3e9 --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelEnum.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 7fa245d21e3340f08d181d6a53a026ca +timeCreated: 1779651724 \ No newline at end of file diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelFloat.cs b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelFloat.cs new file mode 100644 index 00000000..59eeeb09 --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelFloat.cs @@ -0,0 +1,22 @@ +using UnityEngine.UIElements; + +// ReSharper disable once CheckNamespace +namespace Aspid.FastTools.UIElements +{ + public static class BaseFieldExtensionsSetLabelFloat + { + /// + /// Sets the label of the field via . + /// + /// The field type. + /// The element to modify. + /// The label text to set. + /// The element, for chaining. + public static T SetLabel(this T element, string value) + where T : BaseField + { + element.label = value; + return element; + } + } +} diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelFloat.cs.meta b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelFloat.cs.meta new file mode 100644 index 00000000..08e072a7 --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelFloat.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: a862800655c34f4d82ad1a0de3b4e6cd +timeCreated: 1779651639 \ No newline at end of file diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelGradient.cs b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelGradient.cs new file mode 100644 index 00000000..872b4fe4 --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelGradient.cs @@ -0,0 +1,23 @@ +using UnityEngine; +using UnityEngine.UIElements; + +// ReSharper disable once CheckNamespace +namespace Aspid.FastTools.UIElements +{ + public static class BaseFieldExtensionsSetLabelGradient + { + /// + /// Sets the label of the field via . + /// + /// The field type. + /// The element to modify. + /// The label text to set. + /// The element, for chaining. + public static T SetLabel(this T element, string value) + where T : BaseField + { + element.label = value; + return element; + } + } +} diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelGradient.cs.meta b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelGradient.cs.meta new file mode 100644 index 00000000..689bf9dd --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelGradient.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 9aa250fc505d44d3984ac124958c35ca +timeCreated: 1779651745 \ No newline at end of file diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelHash128.cs b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelHash128.cs new file mode 100644 index 00000000..449c1d32 --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelHash128.cs @@ -0,0 +1,23 @@ +using UnityEngine; +using UnityEngine.UIElements; + +// ReSharper disable once CheckNamespace +namespace Aspid.FastTools.UIElements +{ + public static class BaseFieldExtensionsSetLabelHash128 + { + /// + /// Sets the label of the field via . + /// + /// The field type. + /// The element to modify. + /// The label text to set. + /// The element, for chaining. + public static T SetLabel(this T element, string value) + where T : BaseField + { + element.label = value; + return element; + } + } +} diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelHash128.cs.meta b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelHash128.cs.meta new file mode 100644 index 00000000..24e74d98 --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelHash128.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 081bb387baf242ffb33ddea9f46f136e +timeCreated: 1779651736 \ No newline at end of file diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelInt.cs b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelInt.cs new file mode 100644 index 00000000..060edadf --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelInt.cs @@ -0,0 +1,22 @@ +using UnityEngine.UIElements; + +// ReSharper disable once CheckNamespace +namespace Aspid.FastTools.UIElements +{ + public static class BaseFieldExtensionsSetLabelInt + { + /// + /// Sets the label of the field via . + /// + /// The field type. + /// The element to modify. + /// The label text to set. + /// The element, for chaining. + public static T SetLabel(this T element, string value) + where T : BaseField + { + element.label = value; + return element; + } + } +} diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelInt.cs.meta b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelInt.cs.meta new file mode 100644 index 00000000..3f5dfa62 --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelInt.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 470d72e9a3bc484681794904f80d70ff +timeCreated: 1779651601 \ No newline at end of file diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelLong.cs b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelLong.cs new file mode 100644 index 00000000..64c14143 --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelLong.cs @@ -0,0 +1,22 @@ +using UnityEngine.UIElements; + +// ReSharper disable once CheckNamespace +namespace Aspid.FastTools.UIElements +{ + public static class BaseFieldExtensionsSetLabelLong + { + /// + /// Sets the label of the field via . + /// + /// The field type. + /// The element to modify. + /// The label text to set. + /// The element, for chaining. + public static T SetLabel(this T element, string value) + where T : BaseField + { + element.label = value; + return element; + } + } +} diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelLong.cs.meta b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelLong.cs.meta new file mode 100644 index 00000000..3afb8f75 --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelLong.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 96e56cc0885a4978b448d910eff9f074 +timeCreated: 1779651611 \ No newline at end of file diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelObject.cs b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelObject.cs new file mode 100644 index 00000000..678fcf7e --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelObject.cs @@ -0,0 +1,23 @@ +using UnityEngine; +using UnityEngine.UIElements; + +// ReSharper disable once CheckNamespace +namespace Aspid.FastTools.UIElements +{ + public static class BaseFieldExtensionsSetLabelObject + { + /// + /// Sets the label of the field via . + /// + /// The field type. + /// The element to modify. + /// The label text to set. + /// The element, for chaining. + public static T SetLabel(this T element, string value) + where T : BaseField + { + element.label = value; + return element; + } + } +} diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelObject.cs.meta b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelObject.cs.meta new file mode 100644 index 00000000..f225ed9d --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelObject.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: f755d90213834f999fd306ccce6aec1d +timeCreated: 1779651731 \ No newline at end of file diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelRect.cs b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelRect.cs new file mode 100644 index 00000000..c3510e1a --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelRect.cs @@ -0,0 +1,23 @@ +using UnityEngine; +using UnityEngine.UIElements; + +// ReSharper disable once CheckNamespace +namespace Aspid.FastTools.UIElements +{ + public static class BaseFieldExtensionsSetLabelRect + { + /// + /// Sets the label of the field via . + /// + /// The field type. + /// The element to modify. + /// The label text to set. + /// The element, for chaining. + public static T SetLabel(this T element, string value) + where T : BaseField + { + element.label = value; + return element; + } + } +} diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelRect.cs.meta b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelRect.cs.meta new file mode 100644 index 00000000..a1ec85c6 --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelRect.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: f10fc775898743a582956a910791955c +timeCreated: 1779651708 \ No newline at end of file diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelSbyte.cs b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelSbyte.cs new file mode 100644 index 00000000..f0fe400d --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelSbyte.cs @@ -0,0 +1,22 @@ +using UnityEngine.UIElements; + +// ReSharper disable once CheckNamespace +namespace Aspid.FastTools.UIElements +{ + public static class BaseFieldExtensionsSetLabelSbyte + { + /// + /// Sets the label of the field via . + /// + /// The field type. + /// The element to modify. + /// The label text to set. + /// The element, for chaining. + public static T SetLabel(this T element, string value) + where T : BaseField + { + element.label = value; + return element; + } + } +} diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelSbyte.cs.meta b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelSbyte.cs.meta new file mode 100644 index 00000000..47c49fb5 --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelSbyte.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 7ba363de3b634253b84af99e0cee4f20 +timeCreated: 1779651625 \ No newline at end of file diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelShort.cs b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelShort.cs new file mode 100644 index 00000000..4940e55b --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelShort.cs @@ -0,0 +1,22 @@ +using UnityEngine.UIElements; + +// ReSharper disable once CheckNamespace +namespace Aspid.FastTools.UIElements +{ + public static class BaseFieldExtensionsSetLabelShort + { + /// + /// Sets the label of the field via . + /// + /// The field type. + /// The element to modify. + /// The label text to set. + /// The element, for chaining. + public static T SetLabel(this T element, string value) + where T : BaseField + { + element.label = value; + return element; + } + } +} diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelShort.cs.meta b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelShort.cs.meta new file mode 100644 index 00000000..61f73d08 --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelShort.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 6268150d76dd4407a3145e0333b978b6 +timeCreated: 1779651630 \ No newline at end of file diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelString.cs b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelString.cs new file mode 100644 index 00000000..8b61ed7c --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelString.cs @@ -0,0 +1,22 @@ +using UnityEngine.UIElements; + +// ReSharper disable once CheckNamespace +namespace Aspid.FastTools.UIElements +{ + public static class BaseFieldExtensionsSetLabelString + { + /// + /// Sets the label of the field via . + /// + /// The field type. + /// The element to modify. + /// The label text to set. + /// The element, for chaining. + public static T SetLabel(this T element, string value) + where T : BaseField + { + element.label = value; + return element; + } + } +} diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelString.cs.meta b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelString.cs.meta new file mode 100644 index 00000000..52fd42f8 --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelString.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: ab886207cb174fa994ecd1671288bbcf +timeCreated: 1779651652 \ No newline at end of file diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelULong.cs b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelULong.cs new file mode 100644 index 00000000..b964ee63 --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelULong.cs @@ -0,0 +1,22 @@ +using UnityEngine.UIElements; + +// ReSharper disable once CheckNamespace +namespace Aspid.FastTools.UIElements +{ + public static class BaseFieldExtensionsSetLabelULong + { + /// + /// Sets the label of the field via . + /// + /// The field type. + /// The element to modify. + /// The label text to set. + /// The element, for chaining. + public static T SetLabel(this T element, string value) + where T : BaseField + { + element.label = value; + return element; + } + } +} diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelULong.cs.meta b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelULong.cs.meta new file mode 100644 index 00000000..53369353 --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelULong.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 912d8d9c7d224d779e6ab9c751def840 +timeCreated: 1779651616 \ No newline at end of file diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelUint.cs b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelUint.cs new file mode 100644 index 00000000..70f82fdf --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelUint.cs @@ -0,0 +1,22 @@ +using UnityEngine.UIElements; + +// ReSharper disable once CheckNamespace +namespace Aspid.FastTools.UIElements +{ + public static class BaseFieldExtensionsSetLabelUint + { + /// + /// Sets the label of the field via . + /// + /// The field type. + /// The element to modify. + /// The label text to set. + /// The element, for chaining. + public static T SetLabel(this T element, string value) + where T : BaseField + { + element.label = value; + return element; + } + } +} diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelUint.cs.meta b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelUint.cs.meta new file mode 100644 index 00000000..073dfd8e --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelUint.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: b1c82b41e5714d4d8dcbf896c6c5839f +timeCreated: 1779651606 \ No newline at end of file diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelUshort.cs b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelUshort.cs new file mode 100644 index 00000000..3e599513 --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelUshort.cs @@ -0,0 +1,22 @@ +using UnityEngine.UIElements; + +// ReSharper disable once CheckNamespace +namespace Aspid.FastTools.UIElements +{ + public static class BaseFieldExtensionsSetLabelUshort + { + /// + /// Sets the label of the field via . + /// + /// The field type. + /// The element to modify. + /// The label text to set. + /// The element, for chaining. + public static T SetLabel(this T element, string value) + where T : BaseField + { + element.label = value; + return element; + } + } +} diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelUshort.cs.meta b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelUshort.cs.meta new file mode 100644 index 00000000..16082bc3 --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelUshort.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 8a1ee93e4fd543939bd2581c7cd6d0e4 +timeCreated: 1779651635 \ No newline at end of file diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelVector2.cs b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelVector2.cs new file mode 100644 index 00000000..b02e39d2 --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelVector2.cs @@ -0,0 +1,23 @@ +using UnityEngine; +using UnityEngine.UIElements; + +// ReSharper disable once CheckNamespace +namespace Aspid.FastTools.UIElements +{ + public static class BaseFieldExtensionsSetLabelVector2 + { + /// + /// Sets the label of the field via . + /// + /// The field type. + /// The element to modify. + /// The label text to set. + /// The element, for chaining. + public static T SetLabel(this T element, string value) + where T : BaseField + { + element.label = value; + return element; + } + } +} diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelVector2.cs.meta b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelVector2.cs.meta new file mode 100644 index 00000000..ad622485 --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelVector2.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: d65c28d485fe4e4792d71c56de31b802 +timeCreated: 1779651680 \ No newline at end of file diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelVector2Int.cs b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelVector2Int.cs new file mode 100644 index 00000000..2be70c2b --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelVector2Int.cs @@ -0,0 +1,23 @@ +using UnityEngine; +using UnityEngine.UIElements; + +// ReSharper disable once CheckNamespace +namespace Aspid.FastTools.UIElements +{ + public static class BaseFieldExtensionsSetLabelVector2Int + { + /// + /// Sets the label of the field via . + /// + /// The field type. + /// The element to modify. + /// The label text to set. + /// The element, for chaining. + public static T SetLabel(this T element, string value) + where T : BaseField + { + element.label = value; + return element; + } + } +} diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelVector2Int.cs.meta b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelVector2Int.cs.meta new file mode 100644 index 00000000..7dc1a689 --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelVector2Int.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: c8055b60c12e438da3a5b3792c852a54 +timeCreated: 1779651685 \ No newline at end of file diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelVector3.cs b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelVector3.cs new file mode 100644 index 00000000..514487b5 --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelVector3.cs @@ -0,0 +1,23 @@ +using UnityEngine; +using UnityEngine.UIElements; + +// ReSharper disable once CheckNamespace +namespace Aspid.FastTools.UIElements +{ + public static class BaseFieldExtensionsSetLabelVector3 + { + /// + /// Sets the label of the field via . + /// + /// The field type. + /// The element to modify. + /// The label text to set. + /// The element, for chaining. + public static T SetLabel(this T element, string value) + where T : BaseField + { + element.label = value; + return element; + } + } +} diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelVector3.cs.meta b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelVector3.cs.meta new file mode 100644 index 00000000..52e6d97a --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelVector3.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 949ec825c5444442bde994337363dd83 +timeCreated: 1779651695 \ No newline at end of file diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelVector3Int.cs b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelVector3Int.cs new file mode 100644 index 00000000..c89db810 --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelVector3Int.cs @@ -0,0 +1,23 @@ +using UnityEngine; +using UnityEngine.UIElements; + +// ReSharper disable once CheckNamespace +namespace Aspid.FastTools.UIElements +{ + public static class BaseFieldExtensionsSetLabelVector3Int + { + /// + /// Sets the label of the field via . + /// + /// The field type. + /// The element to modify. + /// The label text to set. + /// The element, for chaining. + public static T SetLabel(this T element, string value) + where T : BaseField + { + element.label = value; + return element; + } + } +} diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelVector3Int.cs.meta b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelVector3Int.cs.meta new file mode 100644 index 00000000..307e1306 --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelVector3Int.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 7464ec4dc9964e478881970cd1d60fab +timeCreated: 1779651699 \ No newline at end of file diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelVector4.cs b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelVector4.cs new file mode 100644 index 00000000..be707fd2 --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelVector4.cs @@ -0,0 +1,23 @@ +using UnityEngine; +using UnityEngine.UIElements; + +// ReSharper disable once CheckNamespace +namespace Aspid.FastTools.UIElements +{ + public static class BaseFieldExtensionsSetLabelVector4 + { + /// + /// Sets the label of the field via . + /// + /// The field type. + /// The element to modify. + /// The label text to set. + /// The element, for chaining. + public static T SetLabel(this T element, string value) + where T : BaseField + { + element.label = value; + return element; + } + } +} diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelVector4.cs.meta b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelVector4.cs.meta new file mode 100644 index 00000000..ab4c81b9 --- /dev/null +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Field/BaseFields/BaseFieldExtensionsSetLabelVector4.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 76101f990e73454195d90715b59a1fa3 +timeCreated: 1779651703 \ No newline at end of file diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Focusable/FocusableExtensions.cs b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Focusable/FocusableExtensions.cs index 5592de72..893f78c6 100644 --- a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Focusable/FocusableExtensions.cs +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Focusable/FocusableExtensions.cs @@ -35,7 +35,7 @@ public static T SetFocus(this T element) /// The element to check. /// if the element holds keyboard focus; otherwise . public static bool IsFocus(this Focusable element) => - element.focusController.focusedElement == element; + element.focusController?.focusedElement == element; /// /// Sets and returns the element for chaining. diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/INotifyValueChanged/INotifyValueChangedExtensions.ValueChanged.cs b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/INotifyValueChanged/INotifyValueChangedExtensions.ValueChanged.cs index 053096a1..363a252b 100644 --- a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/INotifyValueChanged/INotifyValueChangedExtensions.ValueChanged.cs +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/INotifyValueChanged/INotifyValueChangedExtensions.ValueChanged.cs @@ -13,12 +13,12 @@ public static partial class INotifyValueChangedExtensions /// Subscribes to the value-changed event of the element. /// /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -26,12 +26,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } @@ -39,12 +39,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -52,12 +52,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } @@ -65,12 +65,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -78,12 +78,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } @@ -91,12 +91,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -104,12 +104,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } #endregion @@ -119,12 +119,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -132,12 +132,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } @@ -145,12 +145,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -158,12 +158,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } #endregion @@ -173,12 +173,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -186,12 +186,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } @@ -199,12 +199,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -212,12 +212,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } #endregion @@ -227,12 +227,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -240,12 +240,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } #endregion @@ -255,12 +255,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -268,12 +268,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } #endregion @@ -283,12 +283,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -296,12 +296,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } @@ -309,12 +309,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -322,12 +322,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } #endregion @@ -337,12 +337,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -350,12 +350,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } #endregion @@ -366,12 +366,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -379,12 +379,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } #endif @@ -395,12 +395,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -408,12 +408,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } #endregion @@ -423,12 +423,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -436,12 +436,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } @@ -449,12 +449,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -462,12 +462,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } #endregion @@ -477,12 +477,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -490,12 +490,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } #endregion @@ -505,12 +505,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -518,12 +518,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } #endregion @@ -533,12 +533,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -546,12 +546,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } #endregion @@ -561,12 +561,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -574,12 +574,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } @@ -587,12 +587,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -600,12 +600,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } #endregion @@ -615,12 +615,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -628,12 +628,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } #endregion @@ -643,12 +643,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -656,12 +656,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } #endregion @@ -671,12 +671,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -684,12 +684,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } @@ -697,12 +697,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -710,12 +710,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } #endregion @@ -725,12 +725,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -738,12 +738,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } @@ -751,12 +751,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -764,12 +764,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } #endregion @@ -779,12 +779,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -792,12 +792,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } #endregion @@ -807,12 +807,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -820,12 +820,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } #endregion @@ -835,12 +835,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -848,12 +848,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } #endregion @@ -863,12 +863,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -876,12 +876,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } #endregion @@ -891,12 +891,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -904,12 +904,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } #endregion @@ -919,12 +919,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -932,12 +932,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } #endregion @@ -947,12 +947,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -960,12 +960,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } #endregion @@ -975,12 +975,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -988,12 +988,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } #endregion @@ -1002,12 +1002,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static TField AddValueChanged(this TField element, EventCallback> value) + public static TField AddValueChanged(this TField element, EventCallback> callback) where TField : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -1015,12 +1015,12 @@ public static TField AddValueChanged(this TField element, EventC /// Unsubscribes from the value-changed event of the element. /// /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static TField RemoveValueChanged(this TField element, EventCallback> value) + public static TField RemoveValueChanged(this TField element, EventCallback> callback) where TField : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } } diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/INotifyValueChanged/Math/INotifyValueChangedExtensions.SetValue.Math.cs b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/INotifyValueChanged/Math/INotifyValueChangedExtensions.SetValue.Math.cs index 60bb0c9b..cc644e4e 100644 --- a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/INotifyValueChanged/Math/INotifyValueChangedExtensions.SetValue.Math.cs +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/INotifyValueChanged/Math/INotifyValueChangedExtensions.SetValue.Math.cs @@ -589,6 +589,394 @@ public static T SetValue(this T element, float4x4 value, bool notify = true) } #endregion + #region Unity.Mathematics.Double + /// + /// Sets the element's value. If is , a change notification is raised. + /// + /// The element to modify. + /// The value to set. + /// If , raises a change notification. + /// The element, for chaining. + public static T SetValue(this T element, double2 value, bool notify = true) + where T : INotifyValueChanged + { + if (notify) element.value = value; + else element.SetValueWithoutNotify(value); + + return element; + } + + /// + /// Sets the element's value. If is , a change notification is raised. + /// + /// The element to modify. + /// The value to set. + /// If , raises a change notification. + /// The element, for chaining. + public static T SetValue(this T element, double3 value, bool notify = true) + where T : INotifyValueChanged + { + if (notify) element.value = value; + else element.SetValueWithoutNotify(value); + + return element; + } + + /// + /// Sets the element's value. If is , a change notification is raised. + /// + /// The element to modify. + /// The value to set. + /// If , raises a change notification. + /// The element, for chaining. + public static T SetValue(this T element, double4 value, bool notify = true) + where T : INotifyValueChanged + { + if (notify) element.value = value; + else element.SetValueWithoutNotify(value); + + return element; + } + + /// + /// Sets the element's value. If is , a change notification is raised. + /// + /// The element to modify. + /// The value to set. + /// If , raises a change notification. + /// The element, for chaining. + public static T SetValue(this T element, double2x2 value, bool notify = true) + where T : INotifyValueChanged + { + if (notify) element.value = value; + else element.SetValueWithoutNotify(value); + + return element; + } + + /// + /// Sets the element's value. If is , a change notification is raised. + /// + /// The element to modify. + /// The value to set. + /// If , raises a change notification. + /// The element, for chaining. + public static T SetValue(this T element, double2x3 value, bool notify = true) + where T : INotifyValueChanged + { + if (notify) element.value = value; + else element.SetValueWithoutNotify(value); + + return element; + } + + /// + /// Sets the element's value. If is , a change notification is raised. + /// + /// The element to modify. + /// The value to set. + /// If , raises a change notification. + /// The element, for chaining. + public static T SetValue(this T element, double2x4 value, bool notify = true) + where T : INotifyValueChanged + { + if (notify) element.value = value; + else element.SetValueWithoutNotify(value); + + return element; + } + + /// + /// Sets the element's value. If is , a change notification is raised. + /// + /// The element to modify. + /// The value to set. + /// If , raises a change notification. + /// The element, for chaining. + public static T SetValue(this T element, double3x2 value, bool notify = true) + where T : INotifyValueChanged + { + if (notify) element.value = value; + else element.SetValueWithoutNotify(value); + + return element; + } + + /// + /// Sets the element's value. If is , a change notification is raised. + /// + /// The element to modify. + /// The value to set. + /// If , raises a change notification. + /// The element, for chaining. + public static T SetValue(this T element, double3x3 value, bool notify = true) + where T : INotifyValueChanged + { + if (notify) element.value = value; + else element.SetValueWithoutNotify(value); + + return element; + } + + /// + /// Sets the element's value. If is , a change notification is raised. + /// + /// The element to modify. + /// The value to set. + /// If , raises a change notification. + /// The element, for chaining. + public static T SetValue(this T element, double3x4 value, bool notify = true) + where T : INotifyValueChanged + { + if (notify) element.value = value; + else element.SetValueWithoutNotify(value); + + return element; + } + + /// + /// Sets the element's value. If is , a change notification is raised. + /// + /// The element to modify. + /// The value to set. + /// If , raises a change notification. + /// The element, for chaining. + public static T SetValue(this T element, double4x2 value, bool notify = true) + where T : INotifyValueChanged + { + if (notify) element.value = value; + else element.SetValueWithoutNotify(value); + + return element; + } + + /// + /// Sets the element's value. If is , a change notification is raised. + /// + /// The element to modify. + /// The value to set. + /// If , raises a change notification. + /// The element, for chaining. + public static T SetValue(this T element, double4x3 value, bool notify = true) + where T : INotifyValueChanged + { + if (notify) element.value = value; + else element.SetValueWithoutNotify(value); + + return element; + } + + /// + /// Sets the element's value. If is , a change notification is raised. + /// + /// The element to modify. + /// The value to set. + /// If , raises a change notification. + /// The element, for chaining. + public static T SetValue(this T element, double4x4 value, bool notify = true) + where T : INotifyValueChanged + { + if (notify) element.value = value; + else element.SetValueWithoutNotify(value); + + return element; + } + #endregion + + #region Unity.Mathematics.UInt + /// + /// Sets the element's value. If is , a change notification is raised. + /// + /// The element to modify. + /// The value to set. + /// If , raises a change notification. + /// The element, for chaining. + public static T SetValue(this T element, uint2 value, bool notify = true) + where T : INotifyValueChanged + { + if (notify) element.value = value; + else element.SetValueWithoutNotify(value); + + return element; + } + + /// + /// Sets the element's value. If is , a change notification is raised. + /// + /// The element to modify. + /// The value to set. + /// If , raises a change notification. + /// The element, for chaining. + public static T SetValue(this T element, uint3 value, bool notify = true) + where T : INotifyValueChanged + { + if (notify) element.value = value; + else element.SetValueWithoutNotify(value); + + return element; + } + + /// + /// Sets the element's value. If is , a change notification is raised. + /// + /// The element to modify. + /// The value to set. + /// If , raises a change notification. + /// The element, for chaining. + public static T SetValue(this T element, uint4 value, bool notify = true) + where T : INotifyValueChanged + { + if (notify) element.value = value; + else element.SetValueWithoutNotify(value); + + return element; + } + + /// + /// Sets the element's value. If is , a change notification is raised. + /// + /// The element to modify. + /// The value to set. + /// If , raises a change notification. + /// The element, for chaining. + public static T SetValue(this T element, uint2x2 value, bool notify = true) + where T : INotifyValueChanged + { + if (notify) element.value = value; + else element.SetValueWithoutNotify(value); + + return element; + } + + /// + /// Sets the element's value. If is , a change notification is raised. + /// + /// The element to modify. + /// The value to set. + /// If , raises a change notification. + /// The element, for chaining. + public static T SetValue(this T element, uint2x3 value, bool notify = true) + where T : INotifyValueChanged + { + if (notify) element.value = value; + else element.SetValueWithoutNotify(value); + + return element; + } + + /// + /// Sets the element's value. If is , a change notification is raised. + /// + /// The element to modify. + /// The value to set. + /// If , raises a change notification. + /// The element, for chaining. + public static T SetValue(this T element, uint2x4 value, bool notify = true) + where T : INotifyValueChanged + { + if (notify) element.value = value; + else element.SetValueWithoutNotify(value); + + return element; + } + + /// + /// Sets the element's value. If is , a change notification is raised. + /// + /// The element to modify. + /// The value to set. + /// If , raises a change notification. + /// The element, for chaining. + public static T SetValue(this T element, uint3x2 value, bool notify = true) + where T : INotifyValueChanged + { + if (notify) element.value = value; + else element.SetValueWithoutNotify(value); + + return element; + } + + /// + /// Sets the element's value. If is , a change notification is raised. + /// + /// The element to modify. + /// The value to set. + /// If , raises a change notification. + /// The element, for chaining. + public static T SetValue(this T element, uint3x3 value, bool notify = true) + where T : INotifyValueChanged + { + if (notify) element.value = value; + else element.SetValueWithoutNotify(value); + + return element; + } + + /// + /// Sets the element's value. If is , a change notification is raised. + /// + /// The element to modify. + /// The value to set. + /// If , raises a change notification. + /// The element, for chaining. + public static T SetValue(this T element, uint3x4 value, bool notify = true) + where T : INotifyValueChanged + { + if (notify) element.value = value; + else element.SetValueWithoutNotify(value); + + return element; + } + + /// + /// Sets the element's value. If is , a change notification is raised. + /// + /// The element to modify. + /// The value to set. + /// If , raises a change notification. + /// The element, for chaining. + public static T SetValue(this T element, uint4x2 value, bool notify = true) + where T : INotifyValueChanged + { + if (notify) element.value = value; + else element.SetValueWithoutNotify(value); + + return element; + } + + /// + /// Sets the element's value. If is , a change notification is raised. + /// + /// The element to modify. + /// The value to set. + /// If , raises a change notification. + /// The element, for chaining. + public static T SetValue(this T element, uint4x3 value, bool notify = true) + where T : INotifyValueChanged + { + if (notify) element.value = value; + else element.SetValueWithoutNotify(value); + + return element; + } + + /// + /// Sets the element's value. If is , a change notification is raised. + /// + /// The element to modify. + /// The value to set. + /// If , raises a change notification. + /// The element, for chaining. + public static T SetValue(this T element, uint4x4 value, bool notify = true) + where T : INotifyValueChanged + { + if (notify) element.value = value; + else element.SetValueWithoutNotify(value); + + return element; + } + #endregion + #region Unity.Mathematics.Quaternion /// /// Sets the element's value. If is , a change notification is raised. diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/INotifyValueChanged/Math/INotifyValueChangedExtensions.ValueChanged.Math.cs b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/INotifyValueChanged/Math/INotifyValueChangedExtensions.ValueChanged.Math.cs index d813bfcd..dbf1459b 100644 --- a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/INotifyValueChanged/Math/INotifyValueChangedExtensions.ValueChanged.Math.cs +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/INotifyValueChanged/Math/INotifyValueChangedExtensions.ValueChanged.Math.cs @@ -12,12 +12,12 @@ public static partial class INotifyValueChangedExtensions /// Subscribes to the value-changed event of the element. /// /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -25,12 +25,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } @@ -38,12 +38,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -51,12 +51,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } @@ -64,12 +64,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -77,12 +77,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } @@ -90,12 +90,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -103,12 +103,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } @@ -116,12 +116,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -129,12 +129,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } @@ -142,12 +142,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -155,12 +155,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } @@ -168,12 +168,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -181,12 +181,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } @@ -194,12 +194,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -207,12 +207,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } @@ -220,12 +220,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -233,22 +233,25 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } /// /// Subscribes to the value-changed event of the element. - /// element - public static T AddValueChanged(this T element, EventCallback> value) + /// + /// The element to modify. + /// The callback to subscribe. + /// The element, for chaining. + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -256,22 +259,25 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } /// /// Subscribes to the value-changed event of the element. - /// element - public static T AddValueChanged(this T element, EventCallback> value) + /// + /// The element to modify. + /// The callback to subscribe. + /// The element, for chaining. + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -279,12 +285,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } @@ -292,12 +298,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -305,12 +311,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } #endregion @@ -320,12 +326,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -333,12 +339,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } @@ -346,12 +352,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -359,12 +365,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } @@ -372,12 +378,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -385,12 +391,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } @@ -398,12 +404,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -411,12 +417,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } @@ -424,12 +430,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -437,12 +443,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } @@ -450,12 +456,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -463,12 +469,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } @@ -476,12 +482,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -489,12 +495,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } @@ -502,12 +508,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -515,12 +521,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } @@ -528,12 +534,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -541,12 +547,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } @@ -554,12 +560,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -567,12 +573,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } @@ -580,12 +586,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -593,12 +599,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } @@ -606,12 +612,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -619,12 +625,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } #endregion @@ -634,12 +640,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -647,12 +653,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } @@ -660,12 +666,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -673,12 +679,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } @@ -686,12 +692,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -699,12 +705,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } @@ -712,12 +718,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -725,12 +731,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } @@ -738,12 +744,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -751,12 +757,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } @@ -764,12 +770,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -777,12 +783,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } @@ -790,12 +796,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -803,12 +809,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } @@ -816,12 +822,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -829,12 +835,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } @@ -842,12 +848,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -855,12 +861,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } @@ -868,12 +874,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -881,12 +887,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } @@ -894,12 +900,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -907,12 +913,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } @@ -920,12 +926,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -933,12 +939,640 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); + return element; + } + #endregion + + #region Unity.Mathematics.Double + /// + /// Subscribes to the value-changed event of the element. + /// + /// The element to modify. + /// The callback to subscribe. + /// The element, for chaining. + public static T AddValueChanged(this T element, EventCallback> callback) + where T : INotifyValueChanged + { + element.RegisterValueChangedCallback(callback); + return element; + } + + /// + /// Unsubscribes from the value-changed event of the element. + /// + /// The element to modify. + /// The callback to remove. + /// The element, for chaining. + public static T RemoveValueChanged(this T element, EventCallback> callback) + where T : INotifyValueChanged + { + element.UnregisterValueChangedCallback(callback); + return element; + } + + /// + /// Subscribes to the value-changed event of the element. + /// + /// The element to modify. + /// The callback to subscribe. + /// The element, for chaining. + public static T AddValueChanged(this T element, EventCallback> callback) + where T : INotifyValueChanged + { + element.RegisterValueChangedCallback(callback); + return element; + } + + /// + /// Unsubscribes from the value-changed event of the element. + /// + /// The element to modify. + /// The callback to remove. + /// The element, for chaining. + public static T RemoveValueChanged(this T element, EventCallback> callback) + where T : INotifyValueChanged + { + element.UnregisterValueChangedCallback(callback); + return element; + } + + /// + /// Subscribes to the value-changed event of the element. + /// + /// The element to modify. + /// The callback to subscribe. + /// The element, for chaining. + public static T AddValueChanged(this T element, EventCallback> callback) + where T : INotifyValueChanged + { + element.RegisterValueChangedCallback(callback); + return element; + } + + /// + /// Unsubscribes from the value-changed event of the element. + /// + /// The element to modify. + /// The callback to remove. + /// The element, for chaining. + public static T RemoveValueChanged(this T element, EventCallback> callback) + where T : INotifyValueChanged + { + element.UnregisterValueChangedCallback(callback); + return element; + } + + /// + /// Subscribes to the value-changed event of the element. + /// + /// The element to modify. + /// The callback to subscribe. + /// The element, for chaining. + public static T AddValueChanged(this T element, EventCallback> callback) + where T : INotifyValueChanged + { + element.RegisterValueChangedCallback(callback); + return element; + } + + /// + /// Unsubscribes from the value-changed event of the element. + /// + /// The element to modify. + /// The callback to remove. + /// The element, for chaining. + public static T RemoveValueChanged(this T element, EventCallback> callback) + where T : INotifyValueChanged + { + element.UnregisterValueChangedCallback(callback); + return element; + } + + /// + /// Subscribes to the value-changed event of the element. + /// + /// The element to modify. + /// The callback to subscribe. + /// The element, for chaining. + public static T AddValueChanged(this T element, EventCallback> callback) + where T : INotifyValueChanged + { + element.RegisterValueChangedCallback(callback); + return element; + } + + /// + /// Unsubscribes from the value-changed event of the element. + /// + /// The element to modify. + /// The callback to remove. + /// The element, for chaining. + public static T RemoveValueChanged(this T element, EventCallback> callback) + where T : INotifyValueChanged + { + element.UnregisterValueChangedCallback(callback); + return element; + } + + /// + /// Subscribes to the value-changed event of the element. + /// + /// The element to modify. + /// The callback to subscribe. + /// The element, for chaining. + public static T AddValueChanged(this T element, EventCallback> callback) + where T : INotifyValueChanged + { + element.RegisterValueChangedCallback(callback); + return element; + } + + /// + /// Unsubscribes from the value-changed event of the element. + /// + /// The element to modify. + /// The callback to remove. + /// The element, for chaining. + public static T RemoveValueChanged(this T element, EventCallback> callback) + where T : INotifyValueChanged + { + element.UnregisterValueChangedCallback(callback); + return element; + } + + /// + /// Subscribes to the value-changed event of the element. + /// + /// The element to modify. + /// The callback to subscribe. + /// The element, for chaining. + public static T AddValueChanged(this T element, EventCallback> callback) + where T : INotifyValueChanged + { + element.RegisterValueChangedCallback(callback); + return element; + } + + /// + /// Unsubscribes from the value-changed event of the element. + /// + /// The element to modify. + /// The callback to remove. + /// The element, for chaining. + public static T RemoveValueChanged(this T element, EventCallback> callback) + where T : INotifyValueChanged + { + element.UnregisterValueChangedCallback(callback); + return element; + } + + /// + /// Subscribes to the value-changed event of the element. + /// + /// The element to modify. + /// The callback to subscribe. + /// The element, for chaining. + public static T AddValueChanged(this T element, EventCallback> callback) + where T : INotifyValueChanged + { + element.RegisterValueChangedCallback(callback); + return element; + } + + /// + /// Unsubscribes from the value-changed event of the element. + /// + /// The element to modify. + /// The callback to remove. + /// The element, for chaining. + public static T RemoveValueChanged(this T element, EventCallback> callback) + where T : INotifyValueChanged + { + element.UnregisterValueChangedCallback(callback); + return element; + } + + /// + /// Subscribes to the value-changed event of the element. + /// + /// The element to modify. + /// The callback to subscribe. + /// The element, for chaining. + public static T AddValueChanged(this T element, EventCallback> callback) + where T : INotifyValueChanged + { + element.RegisterValueChangedCallback(callback); + return element; + } + + /// + /// Unsubscribes from the value-changed event of the element. + /// + /// The element to modify. + /// The callback to remove. + /// The element, for chaining. + public static T RemoveValueChanged(this T element, EventCallback> callback) + where T : INotifyValueChanged + { + element.UnregisterValueChangedCallback(callback); + return element; + } + + /// + /// Subscribes to the value-changed event of the element. + /// + /// The element to modify. + /// The callback to subscribe. + /// The element, for chaining. + public static T AddValueChanged(this T element, EventCallback> callback) + where T : INotifyValueChanged + { + element.RegisterValueChangedCallback(callback); + return element; + } + + /// + /// Unsubscribes from the value-changed event of the element. + /// + /// The element to modify. + /// The callback to remove. + /// The element, for chaining. + public static T RemoveValueChanged(this T element, EventCallback> callback) + where T : INotifyValueChanged + { + element.UnregisterValueChangedCallback(callback); + return element; + } + + /// + /// Subscribes to the value-changed event of the element. + /// + /// The element to modify. + /// The callback to subscribe. + /// The element, for chaining. + public static T AddValueChanged(this T element, EventCallback> callback) + where T : INotifyValueChanged + { + element.RegisterValueChangedCallback(callback); + return element; + } + + /// + /// Unsubscribes from the value-changed event of the element. + /// + /// The element to modify. + /// The callback to remove. + /// The element, for chaining. + public static T RemoveValueChanged(this T element, EventCallback> callback) + where T : INotifyValueChanged + { + element.UnregisterValueChangedCallback(callback); + return element; + } + + /// + /// Subscribes to the value-changed event of the element. + /// + /// The element to modify. + /// The callback to subscribe. + /// The element, for chaining. + public static T AddValueChanged(this T element, EventCallback> callback) + where T : INotifyValueChanged + { + element.RegisterValueChangedCallback(callback); + return element; + } + + /// + /// Unsubscribes from the value-changed event of the element. + /// + /// The element to modify. + /// The callback to remove. + /// The element, for chaining. + public static T RemoveValueChanged(this T element, EventCallback> callback) + where T : INotifyValueChanged + { + element.UnregisterValueChangedCallback(callback); + return element; + } + #endregion + + #region Unity.Mathematics.UInt + /// + /// Subscribes to the value-changed event of the element. + /// + /// The element to modify. + /// The callback to subscribe. + /// The element, for chaining. + public static T AddValueChanged(this T element, EventCallback> callback) + where T : INotifyValueChanged + { + element.RegisterValueChangedCallback(callback); + return element; + } + + /// + /// Unsubscribes from the value-changed event of the element. + /// + /// The element to modify. + /// The callback to remove. + /// The element, for chaining. + public static T RemoveValueChanged(this T element, EventCallback> callback) + where T : INotifyValueChanged + { + element.UnregisterValueChangedCallback(callback); + return element; + } + + /// + /// Subscribes to the value-changed event of the element. + /// + /// The element to modify. + /// The callback to subscribe. + /// The element, for chaining. + public static T AddValueChanged(this T element, EventCallback> callback) + where T : INotifyValueChanged + { + element.RegisterValueChangedCallback(callback); + return element; + } + + /// + /// Unsubscribes from the value-changed event of the element. + /// + /// The element to modify. + /// The callback to remove. + /// The element, for chaining. + public static T RemoveValueChanged(this T element, EventCallback> callback) + where T : INotifyValueChanged + { + element.UnregisterValueChangedCallback(callback); + return element; + } + + /// + /// Subscribes to the value-changed event of the element. + /// + /// The element to modify. + /// The callback to subscribe. + /// The element, for chaining. + public static T AddValueChanged(this T element, EventCallback> callback) + where T : INotifyValueChanged + { + element.RegisterValueChangedCallback(callback); + return element; + } + + /// + /// Unsubscribes from the value-changed event of the element. + /// + /// The element to modify. + /// The callback to remove. + /// The element, for chaining. + public static T RemoveValueChanged(this T element, EventCallback> callback) + where T : INotifyValueChanged + { + element.UnregisterValueChangedCallback(callback); + return element; + } + + /// + /// Subscribes to the value-changed event of the element. + /// + /// The element to modify. + /// The callback to subscribe. + /// The element, for chaining. + public static T AddValueChanged(this T element, EventCallback> callback) + where T : INotifyValueChanged + { + element.RegisterValueChangedCallback(callback); + return element; + } + + /// + /// Unsubscribes from the value-changed event of the element. + /// + /// The element to modify. + /// The callback to remove. + /// The element, for chaining. + public static T RemoveValueChanged(this T element, EventCallback> callback) + where T : INotifyValueChanged + { + element.UnregisterValueChangedCallback(callback); + return element; + } + + /// + /// Subscribes to the value-changed event of the element. + /// + /// The element to modify. + /// The callback to subscribe. + /// The element, for chaining. + public static T AddValueChanged(this T element, EventCallback> callback) + where T : INotifyValueChanged + { + element.RegisterValueChangedCallback(callback); + return element; + } + + /// + /// Unsubscribes from the value-changed event of the element. + /// + /// The element to modify. + /// The callback to remove. + /// The element, for chaining. + public static T RemoveValueChanged(this T element, EventCallback> callback) + where T : INotifyValueChanged + { + element.UnregisterValueChangedCallback(callback); + return element; + } + + /// + /// Subscribes to the value-changed event of the element. + /// + /// The element to modify. + /// The callback to subscribe. + /// The element, for chaining. + public static T AddValueChanged(this T element, EventCallback> callback) + where T : INotifyValueChanged + { + element.RegisterValueChangedCallback(callback); + return element; + } + + /// + /// Unsubscribes from the value-changed event of the element. + /// + /// The element to modify. + /// The callback to remove. + /// The element, for chaining. + public static T RemoveValueChanged(this T element, EventCallback> callback) + where T : INotifyValueChanged + { + element.UnregisterValueChangedCallback(callback); + return element; + } + + /// + /// Subscribes to the value-changed event of the element. + /// + /// The element to modify. + /// The callback to subscribe. + /// The element, for chaining. + public static T AddValueChanged(this T element, EventCallback> callback) + where T : INotifyValueChanged + { + element.RegisterValueChangedCallback(callback); + return element; + } + + /// + /// Unsubscribes from the value-changed event of the element. + /// + /// The element to modify. + /// The callback to remove. + /// The element, for chaining. + public static T RemoveValueChanged(this T element, EventCallback> callback) + where T : INotifyValueChanged + { + element.UnregisterValueChangedCallback(callback); + return element; + } + + /// + /// Subscribes to the value-changed event of the element. + /// + /// The element to modify. + /// The callback to subscribe. + /// The element, for chaining. + public static T AddValueChanged(this T element, EventCallback> callback) + where T : INotifyValueChanged + { + element.RegisterValueChangedCallback(callback); + return element; + } + + /// + /// Unsubscribes from the value-changed event of the element. + /// + /// The element to modify. + /// The callback to remove. + /// The element, for chaining. + public static T RemoveValueChanged(this T element, EventCallback> callback) + where T : INotifyValueChanged + { + element.UnregisterValueChangedCallback(callback); + return element; + } + + /// + /// Subscribes to the value-changed event of the element. + /// + /// The element to modify. + /// The callback to subscribe. + /// The element, for chaining. + public static T AddValueChanged(this T element, EventCallback> callback) + where T : INotifyValueChanged + { + element.RegisterValueChangedCallback(callback); + return element; + } + + /// + /// Unsubscribes from the value-changed event of the element. + /// + /// The element to modify. + /// The callback to remove. + /// The element, for chaining. + public static T RemoveValueChanged(this T element, EventCallback> callback) + where T : INotifyValueChanged + { + element.UnregisterValueChangedCallback(callback); + return element; + } + + /// + /// Subscribes to the value-changed event of the element. + /// + /// The element to modify. + /// The callback to subscribe. + /// The element, for chaining. + public static T AddValueChanged(this T element, EventCallback> callback) + where T : INotifyValueChanged + { + element.RegisterValueChangedCallback(callback); + return element; + } + + /// + /// Unsubscribes from the value-changed event of the element. + /// + /// The element to modify. + /// The callback to remove. + /// The element, for chaining. + public static T RemoveValueChanged(this T element, EventCallback> callback) + where T : INotifyValueChanged + { + element.UnregisterValueChangedCallback(callback); + return element; + } + + /// + /// Subscribes to the value-changed event of the element. + /// + /// The element to modify. + /// The callback to subscribe. + /// The element, for chaining. + public static T AddValueChanged(this T element, EventCallback> callback) + where T : INotifyValueChanged + { + element.RegisterValueChangedCallback(callback); + return element; + } + + /// + /// Unsubscribes from the value-changed event of the element. + /// + /// The element to modify. + /// The callback to remove. + /// The element, for chaining. + public static T RemoveValueChanged(this T element, EventCallback> callback) + where T : INotifyValueChanged + { + element.UnregisterValueChangedCallback(callback); + return element; + } + + /// + /// Subscribes to the value-changed event of the element. + /// + /// The element to modify. + /// The callback to subscribe. + /// The element, for chaining. + public static T AddValueChanged(this T element, EventCallback> callback) + where T : INotifyValueChanged + { + element.RegisterValueChangedCallback(callback); + return element; + } + + /// + /// Unsubscribes from the value-changed event of the element. + /// + /// The element to modify. + /// The callback to remove. + /// The element, for chaining. + public static T RemoveValueChanged(this T element, EventCallback> callback) + where T : INotifyValueChanged + { + element.UnregisterValueChangedCallback(callback); return element; } #endregion @@ -948,12 +1582,12 @@ public static T RemoveValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to subscribe. + /// The callback to subscribe. /// The element, for chaining. - public static T AddValueChanged(this T element, EventCallback> value) + public static T AddValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.RegisterValueChangedCallback(value); + element.RegisterValueChangedCallback(callback); return element; } @@ -961,12 +1595,12 @@ public static T AddValueChanged(this T element, EventCallback /// The element to modify. - /// The callback to remove. + /// The callback to remove. /// The element, for chaining. - public static T RemoveValueChanged(this T element, EventCallback> value) + public static T RemoveValueChanged(this T element, EventCallback> callback) where T : INotifyValueChanged { - element.UnregisterValueChangedCallback(value); + element.UnregisterValueChangedCallback(callback); return element; } #endregion diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/IStyle/IStyleExtensions.cs b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/IStyle/IStyleExtensions.cs index 32736ce9..efc56a00 100644 --- a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/IStyle/IStyleExtensions.cs +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/IStyle/IStyleExtensions.cs @@ -78,7 +78,7 @@ public static T SetFlexWrap( style.flexWrap = value; return style; } - + /// /// Sets and returns the style for chaining. /// @@ -220,7 +220,7 @@ public static T SetMinSize( return style; } - + /// /// Sets , and returns the style for chaining. /// @@ -439,7 +439,7 @@ public static T SetUnityFontStyleAndWeight( style.unityFontStyleAndWeight = value; return style; } - + /// /// Sets and returns the style for chaining. /// @@ -495,7 +495,7 @@ public static T SetLetterSpacing( style.letterSpacing = value; return style; } - + /// /// Sets and returns the style for chaining. /// @@ -568,6 +568,26 @@ public static T SetUnityTextOutlineColor( return style; } + /// + /// Sets the text outline color by parsing an HTML color string via . + /// + /// The style type. + /// The style to modify. + /// The HTML color string (e.g. "#FF0000", "red"). + /// The style, for chaining. + public static T SetUnityTextOutlineColor( + this T style, + string value) + where T : IStyle + { + if (!ColorUtility.TryParseHtmlString(value, out var color)) + { + Debug.LogWarning($"Failed to parse color string: '{value}'"); + return style; + } + return style.SetUnityTextOutlineColor(color); + } + /// /// Sets and returns the style for chaining. /// @@ -715,7 +735,7 @@ public static T SetTextOverflow( style.textOverflow = value; return style; } - + /// /// Sets and returns the style for chaining. /// @@ -804,9 +824,13 @@ public static T SetColor( string value) where T : IStyle { - ColorUtility.TryParseHtmlString(value, out var color); - style.SetColor(color); + if (!ColorUtility.TryParseHtmlString(value, out var color)) + { + Debug.LogWarning($"Failed to parse color string: '{value}'"); + return style; + } + style.SetColor(color); return style; } @@ -847,7 +871,7 @@ public static T SetAlignSelf( style.alignSelf = value; return style; } - + /// /// Sets and returns the style for chaining. /// @@ -883,7 +907,7 @@ public static T SetAlignItems( style.alignItems = value; return style; } - + /// /// Sets and returns the style for chaining. /// @@ -919,7 +943,7 @@ public static T SetAlignContent( style.alignContent = value; return style; } - + /// /// Sets and returns the style for chaining. /// @@ -1009,6 +1033,27 @@ public static T SetBorderColor( left: value); } + /// + /// Sets the border color on all sides by parsing an HTML color string via . + /// + /// The style type. + /// The style to modify. + /// The HTML color string (e.g. "#FF0000", "red"). + /// The style, for chaining. + public static T SetBorderColor( + this T style, + string value) + where T : IStyle + { + if (!ColorUtility.TryParseHtmlString(value, out var color)) + { + Debug.LogWarning($"Failed to parse color string: '{value}'"); + return style; + } + + return style.SetBorderColor(color); + } + /// /// Sets , , /// , and returns the style for chaining. @@ -1098,6 +1143,27 @@ public static T SetBorderColorTop( return style.SetBorderColor(top: value); } + /// + /// Sets the top border color by parsing an HTML color string via . + /// + /// The style type. + /// The style to modify. + /// The HTML color string (e.g. "#FF0000", "red"). + /// The style, for chaining. + public static T SetBorderColorTop( + this T style, + string value) + where T : IStyle + { + if (!ColorUtility.TryParseHtmlString(value, out var color)) + { + Debug.LogWarning($"Failed to parse color string: '{value}'"); + return style; + } + + return style.SetBorderColorTop(color); + } + /// /// Sets and returns the style for chaining. /// @@ -1115,6 +1181,27 @@ public static T SetBorderColorRight( return style.SetBorderColor(right: value); } + /// + /// Sets the right border color by parsing an HTML color string via . + /// + /// The style type. + /// The style to modify. + /// The HTML color string (e.g. "#FF0000", "red"). + /// The style, for chaining. + public static T SetBorderColorRight( + this T style, + string value) + where T : IStyle + { + if (!ColorUtility.TryParseHtmlString(value, out var color)) + { + Debug.LogWarning($"Failed to parse color string: '{value}'"); + return style; + } + + return style.SetBorderColorRight(color); + } + /// /// Sets and returns the style for chaining. /// @@ -1132,6 +1219,27 @@ public static T SetBorderColorBottom( return style.SetBorderColor(bottom: value); } + /// + /// Sets the bottom border color by parsing an HTML color string via . + /// + /// The style type. + /// The style to modify. + /// The HTML color string (e.g. "#FF0000", "red"). + /// The style, for chaining. + public static T SetBorderColorBottom( + this T style, + string value) + where T : IStyle + { + if (!ColorUtility.TryParseHtmlString(value, out var color)) + { + Debug.LogWarning($"Failed to parse color string: '{value}'"); + return style; + } + + return style.SetBorderColorBottom(color); + } + /// /// Sets and returns the style for chaining. /// @@ -1149,6 +1257,27 @@ public static T SetBorderColorLeft( return style.SetBorderColor(left: value); } + /// + /// Sets the left border color by parsing an HTML color string via . + /// + /// The style type. + /// The style to modify. + /// The HTML color string (e.g. "#FF0000", "red"). + /// The style, for chaining. + public static T SetBorderColorLeft( + this T style, + string value) + where T : IStyle + { + if (!ColorUtility.TryParseHtmlString(value, out var color)) + { + Debug.LogWarning($"Failed to parse color string: '{value}'"); + return style; + } + + return style.SetBorderColorLeft(color); + } + /// /// Sets , , /// , and returns the style for chaining. @@ -1246,6 +1375,48 @@ public static T SetBorderRadiusBottom( bottomLeft: value); } + /// + /// Sets , and returns the style for chaining. + /// + /// + /// borderTopLeftRadius –– The radius of the top-left corner when a rounded rectangle is drawn in the element's box. + /// borderBottomLeftRadius –– The radius of the bottom-left corner when a rounded rectangle is drawn in the element's box. + /// + /// The style type. + /// The style to modify. + /// The radius to apply to both left corners. + /// The style, for chaining. + public static T SetBorderRadiusLeft( + this T style, + StyleLength value) + where T : IStyle + { + return style.SetBorderRadius( + topLeft: value, + bottomLeft: value); + } + + /// + /// Sets , and returns the style for chaining. + /// + /// + /// borderTopRightRadius –– The radius of the top-right corner when a rounded rectangle is drawn in the element's box. + /// borderBottomRightRadius –– The radius of the bottom-right corner when a rounded rectangle is drawn in the element's box. + /// + /// The style type. + /// The style to modify. + /// The radius to apply to both right corners. + /// The style, for chaining. + public static T SetBorderRadiusRight( + this T style, + StyleLength value) + where T : IStyle + { + return style.SetBorderRadius( + topRight: value, + bottomRight: value); + } + /// /// Sets and returns the style for chaining. /// @@ -1886,7 +2057,7 @@ public static T SetOverflow( style.overflow = value; return style; } - + /// /// Sets and returns the style for chaining. /// @@ -1922,7 +2093,7 @@ public static T SetUnityOverflowClipBox( style.unityOverflowClipBox = value; return style; } - + /// /// Sets and returns the style for chaining. /// @@ -2261,7 +2432,7 @@ public static T SetBackgroundColor( style.backgroundColor = value; return style; } - + /// /// Parses an HTML color string and sets , returning the style for chaining. /// @@ -2276,9 +2447,13 @@ public static T SetBackgroundColor( string value) where T : IStyle { - ColorUtility.TryParseHtmlString(value, out var color); + if (!ColorUtility.TryParseHtmlString(value, out var color)) + { + Debug.LogWarning($"Failed to parse color string: '{value}'"); + return style; + } + style.SetBackgroundColor(color); - return style; } @@ -2299,7 +2474,7 @@ public static T SetBackgroundImage( style.backgroundImage = value; return style; } - + /// /// Loads a from Resources and sets the property. /// @@ -2311,7 +2486,14 @@ public static T SetBackgroundImageFromResource( string path) where T : IStyle { - style.backgroundImage = Resources.Load(path); + var texture = Resources.Load(path); + if (texture == null) + { + Debug.LogWarning($"Failed to load Texture2D from Resources path: '{path}'"); + return style; + } + + style.backgroundImage = texture; return style; } @@ -2369,6 +2551,27 @@ public static T SetUnityBackgroundImageTintColor( return style; } + /// + /// Sets the background image tint color by parsing an HTML color string via . + /// + /// The style type. + /// The style to modify. + /// The HTML color string (e.g. "#FF0000", "red"). + /// The style, for chaining. + public static T SetUnityBackgroundImageTintColor( + this T style, + string value) + where T : IStyle + { + if (!ColorUtility.TryParseHtmlString(value, out var color)) + { + Debug.LogWarning($"Failed to parse color string: '{value}'"); + return style; + } + + return style.SetUnityBackgroundImageTintColor(color); + } + /// /// Sets , and returns the style for chaining. /// @@ -2501,7 +2704,7 @@ public static T SetTransitionProperty( style.transitionProperty = value; return style; } - + /// /// Sets and returns the style for chaining. /// @@ -2762,7 +2965,7 @@ public static T SetVisibility( style.visibility = value; return style; } - + /// /// Sets and returns the style for chaining. /// @@ -2800,7 +3003,7 @@ public static T SetWhiteSpace( style.whiteSpace = value; return style; } - + /// /// Sets and returns the style for chaining. /// @@ -2838,7 +3041,7 @@ public static T SetJustifyContent( style.justifyContent = value; return style; } - + /// /// Sets and returns the style for chaining. /// diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/List/BaseListViewExtensions.cs b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/List/BaseListViewExtensions.cs index ea3c2665..2b8d0b3d 100644 --- a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/List/BaseListViewExtensions.cs +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/List/BaseListViewExtensions.cs @@ -340,5 +340,61 @@ public static T SetBindingSourceSelectionMode(this T element, BindingSourceSe element.bindingSourceSelectionMode = value; return element; } + +#if UNITY_6000_0_OR_NEWER + #region MakeFooter + /// + /// Sets , replacing any existing callback, and returns the element for chaining. + /// + /// + /// This callback allows the user to make their own footer for this control. + /// + /// The element to modify. + /// The callback to set. + /// The element, for chaining. + public static T SetMakeFooter(this T element, Func value) + where T : BaseListView + { + element.makeFooter = value; + return element; + } + #endregion + + #region MakeHeader + /// + /// Sets , replacing any existing callback, and returns the element for chaining. + /// + /// + /// This callback allows the user to make their own header for this control. + /// + /// The element to modify. + /// The callback to set. + /// The element, for chaining. + public static T SetMakeHeader(this T element, Func value) + where T : BaseListView + { + element.makeHeader = value; + return element; + } + #endregion + + #region MakeNoneElement + /// + /// Sets , replacing any existing callback, and returns the element for chaining. + /// + /// + /// This callback allows the user to set a Visual Element to replace the "List is empty" Label shown when the ListView is empty. + /// + /// The element to modify. + /// The callback to set. + /// The element, for chaining. + public static T SetMakeNoneElement(this T element, Func value) + where T : BaseListView + { + element.makeNoneElement = value; + return element; + } + #endregion +#endif } } diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/List/MultiColumnListViewExtensions.cs b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/List/MultiColumnListViewExtensions.cs index d89e3cd4..d0ae7565 100644 --- a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/List/MultiColumnListViewExtensions.cs +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/List/MultiColumnListViewExtensions.cs @@ -1,3 +1,4 @@ +using System; using UnityEngine.UIElements; // ReSharper disable once CheckNamespace @@ -21,5 +22,33 @@ public static T SetSortingMode(this T element, ColumnSortingMode value) element.sortingMode = value; return element; } + + /// + /// Subscribes to the event and returns the element for chaining. + /// + /// The element type. + /// The element to modify. + /// The callback to subscribe. + /// The element, for chaining. + public static T AddColumnSortingChanged(this T element, Action callback) + where T : MultiColumnListView + { + element.columnSortingChanged += callback; + return element; + } + + /// + /// Unsubscribes from the event and returns the element for chaining. + /// + /// The element type. + /// The element to modify. + /// The callback to remove. + /// The element, for chaining. + public static T RemoveColumnSortingChanged(this T element, Action callback) + where T : MultiColumnListView + { + element.columnSortingChanged -= callback; + return element; + } } } diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/List/MultiColumnTreeViewExtensions.cs b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/List/MultiColumnTreeViewExtensions.cs index 9e2487fa..3a32baf8 100644 --- a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/List/MultiColumnTreeViewExtensions.cs +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/List/MultiColumnTreeViewExtensions.cs @@ -1,3 +1,4 @@ +using System; using UnityEngine.UIElements; // ReSharper disable once CheckNamespace @@ -21,5 +22,33 @@ public static T SetSortingMode(this T element, ColumnSortingMode value) element.sortingMode = value; return element; } + + /// + /// Subscribes to the event and returns the element for chaining. + /// + /// The element type. + /// The element to modify. + /// The callback to subscribe. + /// The element, for chaining. + public static T AddColumnSortingChanged(this T element, Action callback) + where T : MultiColumnTreeView + { + element.columnSortingChanged += callback; + return element; + } + + /// + /// Unsubscribes from the event and returns the element for chaining. + /// + /// The element type. + /// The element to modify. + /// The callback to remove. + /// The element, for chaining. + public static T RemoveColumnSortingChanged(this T element, Action callback) + where T : MultiColumnTreeView + { + element.columnSortingChanged -= callback; + return element; + } } } diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Manipulators/ManipulatorExtensions.cs b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Manipulators/ManipulatorExtensions.cs index fe4e8d47..b2d19619 100644 --- a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Manipulators/ManipulatorExtensions.cs +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/Manipulators/ManipulatorExtensions.cs @@ -140,6 +140,18 @@ public static T AddKeyboardNavigationManipulator(this T element, Action + /// Adds a new that uses the specified menu builder to populate the contextual menu. + /// + /// The element to modify. + /// The action invoked to populate the menu when it is shown. + /// The element, for chaining. + public static T AddContextualMenuManipulator(this T element, Action menuBuilder) + where T : VisualElement + { + return element.AddManipulatorSelf(new ContextualMenuManipulator(menuBuilder)); + } + /// /// Adds a new that uses the specified menu builder to populate the contextual menu, and outputs the created manipulator. /// diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/ProgressBar/ProgressBarExtensions.cs b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/ProgressBar/ProgressBarExtensions.cs index 25f7c038..731f8b76 100644 --- a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/ProgressBar/ProgressBarExtensions.cs +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/ProgressBar/ProgressBarExtensions.cs @@ -43,5 +43,19 @@ public static T SetHighValue(this T element, float value) element.highValue = value; return element; } + + /// + /// Sets the current value of the progress bar via . + /// + /// The element type. + /// The element to modify. + /// The value to set. + /// The element, for chaining. + public static T SetValue(this T element, float value) + where T : AbstractProgressBar + { + element.value = value; + return element; + } } } diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/VisualElementExtensions.Child.cs b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/VisualElementExtensions.Child.cs index ba92f749..727c8418 100644 --- a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/VisualElementExtensions.Child.cs +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/VisualElementExtensions.Child.cs @@ -19,6 +19,44 @@ public static T AddChild(this T element, VisualElement child) element.Add(child); return element; } + + /// + /// Removes the specified child from the element and returns the element for chaining. + /// + /// The element to modify. + /// The child element to remove. + /// The element, for chaining. + public static T RemoveChild(this T element, VisualElement child) + where T : VisualElement + { + element.Remove(child); + return element; + } + + /// + /// Removes the child at the specified index from the element and returns the element for chaining. + /// + /// The element to modify. + /// The index of the child to remove. + /// The element, for chaining. + public static T RemoveChildAt(this T element, int index) + where T : VisualElement + { + element.RemoveAt(index); + return element; + } + + /// + /// Removes all children from the element and returns the element for chaining. + /// + /// The element to modify. + /// The element, for chaining. + public static T ClearChildren(this T element) + where T : VisualElement + { + element.Clear(); + return element; + } /// /// Conditionally adds an element to the of this element and returns the element for chaining. diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/VisualElementExtensions.Style.cs b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/VisualElementExtensions.Style.cs index 94d44d27..9764fee1 100644 --- a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/VisualElementExtensions.Style.cs +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/VisualElementExtensions.Style.cs @@ -576,6 +576,22 @@ public static T SetUnityTextOutlineColor( return element; } + /// + /// Sets the text outline color by parsing an HTML color string via . + /// + /// The element type. + /// The element to modify. + /// The HTML color string (e.g. "#FF0000", "red"). + /// The element, for chaining. + public static T SetUnityTextOutlineColor( + this T element, + string value) + where T : VisualElement + { + element.style.SetUnityTextOutlineColor(value); + return element; + } + /// /// Sets and returns the element for chaining. /// @@ -1016,6 +1032,22 @@ public static T SetBorderColor( return element; } + /// + /// Sets the border color on all sides by parsing an HTML color string via . + /// + /// The element type. + /// The element to modify. + /// The HTML color string (e.g. "#FF0000", "red"). + /// The element, for chaining. + public static T SetBorderColor( + this T element, + string value) + where T : VisualElement + { + element.style.SetBorderColor(value); + return element; + } + /// /// Sets , , /// , and returns the element for chaining. @@ -1105,6 +1137,22 @@ public static T SetBorderColorTop( return element; } + /// + /// Sets the top border color by parsing an HTML color string via . + /// + /// The element type. + /// The element to modify. + /// The HTML color string (e.g. "#FF0000", "red"). + /// The element, for chaining. + public static T SetBorderColorTop( + this T element, + string value) + where T : VisualElement + { + element.style.SetBorderColorTop(value); + return element; + } + /// /// Sets and returns the element for chaining. /// @@ -1123,6 +1171,22 @@ public static T SetBorderColorRight( return element; } + /// + /// Sets the right border color by parsing an HTML color string via . + /// + /// The element type. + /// The element to modify. + /// The HTML color string (e.g. "#FF0000", "red"). + /// The element, for chaining. + public static T SetBorderColorRight( + this T element, + string value) + where T : VisualElement + { + element.style.SetBorderColorRight(value); + return element; + } + /// /// Sets and returns the element for chaining. /// @@ -1141,6 +1205,22 @@ public static T SetBorderColorBottom( return element; } + /// + /// Sets the bottom border color by parsing an HTML color string via . + /// + /// The element type. + /// The element to modify. + /// The HTML color string (e.g. "#FF0000", "red"). + /// The element, for chaining. + public static T SetBorderColorBottom( + this T element, + string value) + where T : VisualElement + { + element.style.SetBorderColorBottom(value); + return element; + } + /// /// Sets and returns the element for chaining. /// @@ -1159,6 +1239,22 @@ public static T SetBorderColorLeft( return element; } + /// + /// Sets the left border color by parsing an HTML color string via . + /// + /// The element type. + /// The element to modify. + /// The HTML color string (e.g. "#FF0000", "red"). + /// The element, for chaining. + public static T SetBorderColorLeft( + this T element, + string value) + where T : VisualElement + { + element.style.SetBorderColorLeft(value); + return element; + } + /// /// Sets , , /// , and returns the element for chaining. @@ -1252,6 +1348,46 @@ public static T SetBorderRadiusBottom( return element; } + /// + /// Sets , and returns the element for chaining. + /// + /// + /// borderTopLeftRadius –– The radius of the top-left corner when a rounded rectangle is drawn in the element's box. + /// borderBottomLeftRadius –– The radius of the bottom-left corner when a rounded rectangle is drawn in the element's box. + /// + /// The element type. + /// The element to modify. + /// The radius to apply to both left corners. + /// The element, for chaining. + public static T SetBorderRadiusLeft( + this T element, + StyleLength value) + where T : VisualElement + { + element.style.SetBorderRadiusLeft(value); + return element; + } + + /// + /// Sets , and returns the element for chaining. + /// + /// + /// borderTopRightRadius –– The radius of the top-right corner when a rounded rectangle is drawn in the element's box. + /// borderBottomRightRadius –– The radius of the bottom-right corner when a rounded rectangle is drawn in the element's box. + /// + /// The element type. + /// The element to modify. + /// The radius to apply to both right corners. + /// The element, for chaining. + public static T SetBorderRadiusRight( + this T element, + StyleLength value) + where T : VisualElement + { + element.style.SetBorderRadiusRight(value); + return element; + } + /// /// Sets and returns the element for chaining. /// @@ -2312,7 +2448,7 @@ public static T SetBackgroundImage( /// /// The element to modify. /// The Resources path of the texture to load. - /// The style, for chaining. + /// The element, for chaining. public static T SetBackgroundImageFromResource( this T element, string path) @@ -2376,6 +2512,22 @@ public static T SetUnityBackgroundImageTintColor( return element; } + /// + /// Sets the background image tint color by parsing an HTML color string via . + /// + /// The element type. + /// The element to modify. + /// The HTML color string (e.g. "#FF0000", "red"). + /// The element, for chaining. + public static T SetUnityBackgroundImageTintColor( + this T element, + string value) + where T : VisualElement + { + element.style.SetUnityBackgroundImageTintColor(value); + return element; + } + /// /// Sets , and returns the element for chaining. /// diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/VisualElementExtensions.Uss.cs b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/VisualElementExtensions.Uss.cs index cacaf750..bf9808b6 100644 --- a/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/VisualElementExtensions.Uss.cs +++ b/Aspid.FastTools/Assets/Aspid/FastTools/Unity/Runtime/VisualElements/Extensions/VisualElementExtensions.Uss.cs @@ -96,7 +96,14 @@ public static T AddStyleSheets(this T element, StyleSheet value) public static T AddStyleSheetsFromResource(this T element, string path) where T : VisualElement { - return element.AddStyleSheets(Resources.Load(path)); + var styleSheet = Resources.Load(path); + if (styleSheet == null) + { + Debug.LogWarning($"Failed to load StyleSheet from Resources path: '{path}'"); + return element; + } + + return element.AddStyleSheets(styleSheet); } /// @@ -121,7 +128,14 @@ public static T RemoveStyleSheets(this T element, StyleSheet value) public static T RemoveStyleSheetsFromResource(this T element, string path) where T : VisualElement { - return element.RemoveStyleSheets(Resources.Load(path)); + var styleSheet = Resources.Load(path); + if (styleSheet == null) + { + Debug.LogWarning($"Failed to load StyleSheet from Resources path: '{path}'"); + return element; + } + + return element.RemoveStyleSheets(styleSheet); } #endregion } diff --git a/Aspid.FastTools/Assets/Plugins.meta b/Aspid.FastTools/Assets/Plugins.meta deleted file mode 100644 index 68d8afc0..00000000 --- a/Aspid.FastTools/Assets/Plugins.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: f2451a51b0641425cbe482e7070eb55d -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Aspid.FastTools/ProjectSettings/ProjectSettings.asset b/Aspid.FastTools/ProjectSettings/ProjectSettings.asset index 29a562d5..e96cabfe 100644 --- a/Aspid.FastTools/ProjectSettings/ProjectSettings.asset +++ b/Aspid.FastTools/ProjectSettings/ProjectSettings.asset @@ -934,7 +934,7 @@ PlayerSettings: qnxGraphicConfPath: apiCompatibilityLevel: 6 captureStartupLogs: {} - activeInputHandler: 0 + activeInputHandler: 2 windowsGamepadBackendHint: 0 cloudProjectId: framebufferDepthMemorylessMode: 0 From 4554c7eb2b15e3cf5276afa5d325bd77c2a6a621 Mon Sep 17 00:00:00 2001 From: Vladislav Panin Date: Sun, 24 May 2026 23:29:12 +0300 Subject: [PATCH 3/8] Update changelog with Unreleased section for VE extensions --- .../Assets/Aspid/FastTools/CHANGELOG.md | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/CHANGELOG.md b/Aspid.FastTools/Assets/Aspid/FastTools/CHANGELOG.md index 3ca8b5b5..66055295 100644 --- a/Aspid.FastTools/Assets/Aspid/FastTools/CHANGELOG.md +++ b/Aspid.FastTools/Assets/Aspid/FastTools/CHANGELOG.md @@ -7,6 +7,26 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Added + +#### VisualElement fluent extensions +- Per-type `SetLabel` overloads for `BaseField` covering 25 Unity types (`Quaternion`, `AnimationCurve`, `Bounds`, `BoundsInt`, `Color`, `Color32`, `Gradient`, `Hash128`, `Rect`, `Vector2/3/4`, `Vector2Int/3Int`, `int`, `uint`, `long`, `ulong`, `float`, `double`, `decimal`, `short`, `ushort`, `byte`, `sbyte`, `char`, `string`, `Enum`, `Object`). +- Raw-enum overloads for all `StyleEnum` setters on `IStyleExtensions` and `VisualElementExtensions.Style` (e.g. `SetFlexWrap(Wrap)` alongside `SetFlexWrap(StyleEnum)`). +- Conditional `*If` variants (`AddChildIf`, `InsertChildIf`, `AddChildrenIf`, `InsertChildrenIf`) for all child management methods across `VisualElement`, `IEnumerable`, array and `List` sources. +- `BindTo(SerializedObject)` and `UnbindFrom()` editor-side fluent extensions for `VisualElement`. +- `SetLabel` for `PropertyField`, `SetBindingPath` for `IBindable` (editor-side). +- Extended `INotifyValueChanged` `ValueChanged` with per-type overloads for common Unity types. +- Extended `Button` (`SetText`), `Focusable`, `Manipulators` (`RemoveManipulator`), `ProgressBar` (`SetTitle`), `BaseListView`, `MultiColumnListView`, `MultiColumnTreeView` with new fluent methods. +- Math-assembly `SetValue` extensions for `float2/3/4`, `int2/3/4` types. + +### Changed +- Reorganized `BaseFieldExtensions` into `BaseFields/` subdirectory. +- Renamed `Unbind` extension to `UnbindFrom` for consistency with `BindTo`. +- Tightened `BindPropertyTo` generic constraint from `where T : IBindable` to `where T : VisualElement, IBindable`. + +### Fixed +- `SetMinSize` parameter naming bug (`maxHeight` → `minHeight`). + ## [1.0.0-rc.2] — 2026-05-18 Release-workflow validation build. No functional changes versus `1.0.0-rc.1`. From 27b52117819ce8bba344cf3ecb207d4e54f66aeb Mon Sep 17 00:00:00 2001 From: Vladislav Panin Date: Mon, 25 May 2026 08:53:28 +0300 Subject: [PATCH 4/8] Add PR reference to changelog entries --- .../Assets/Aspid/FastTools/CHANGELOG.md | 26 ++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/CHANGELOG.md b/Aspid.FastTools/Assets/Aspid/FastTools/CHANGELOG.md index 66055295..a47bf6c9 100644 --- a/Aspid.FastTools/Assets/Aspid/FastTools/CHANGELOG.md +++ b/Aspid.FastTools/Assets/Aspid/FastTools/CHANGELOG.md @@ -10,22 +10,24 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added #### VisualElement fluent extensions -- Per-type `SetLabel` overloads for `BaseField` covering 25 Unity types (`Quaternion`, `AnimationCurve`, `Bounds`, `BoundsInt`, `Color`, `Color32`, `Gradient`, `Hash128`, `Rect`, `Vector2/3/4`, `Vector2Int/3Int`, `int`, `uint`, `long`, `ulong`, `float`, `double`, `decimal`, `short`, `ushort`, `byte`, `sbyte`, `char`, `string`, `Enum`, `Object`). -- Raw-enum overloads for all `StyleEnum` setters on `IStyleExtensions` and `VisualElementExtensions.Style` (e.g. `SetFlexWrap(Wrap)` alongside `SetFlexWrap(StyleEnum)`). -- Conditional `*If` variants (`AddChildIf`, `InsertChildIf`, `AddChildrenIf`, `InsertChildrenIf`) for all child management methods across `VisualElement`, `IEnumerable`, array and `List` sources. -- `BindTo(SerializedObject)` and `UnbindFrom()` editor-side fluent extensions for `VisualElement`. -- `SetLabel` for `PropertyField`, `SetBindingPath` for `IBindable` (editor-side). -- Extended `INotifyValueChanged` `ValueChanged` with per-type overloads for common Unity types. -- Extended `Button` (`SetText`), `Focusable`, `Manipulators` (`RemoveManipulator`), `ProgressBar` (`SetTitle`), `BaseListView`, `MultiColumnListView`, `MultiColumnTreeView` with new fluent methods. -- Math-assembly `SetValue` extensions for `float2/3/4`, `int2/3/4` types. +- Per-type `SetLabel` overloads for `BaseField` covering 25 Unity types (`Quaternion`, `AnimationCurve`, `Bounds`, `BoundsInt`, `Color`, `Color32`, `Gradient`, `Hash128`, `Rect`, `Vector2/3/4`, `Vector2Int/3Int`, `int`, `uint`, `long`, `ulong`, `float`, `double`, `decimal`, `short`, `ushort`, `byte`, `sbyte`, `char`, `string`, `Enum`, `Object`). ([#33]) +- Raw-enum overloads for all `StyleEnum` setters on `IStyleExtensions` and `VisualElementExtensions.Style` (e.g. `SetFlexWrap(Wrap)` alongside `SetFlexWrap(StyleEnum)`). ([#33]) +- Conditional `*If` variants (`AddChildIf`, `InsertChildIf`, `AddChildrenIf`, `InsertChildrenIf`) for all child management methods across `VisualElement`, `IEnumerable`, array and `List` sources. ([#33]) +- `BindTo(SerializedObject)` and `UnbindFrom()` editor-side fluent extensions for `VisualElement`. ([#33]) +- `SetLabel` for `PropertyField`, `SetBindingPath` for `IBindable` (editor-side). ([#33]) +- Extended `INotifyValueChanged` `ValueChanged` with per-type overloads for common Unity types. ([#33]) +- Extended `Button` (`SetText`), `Focusable`, `Manipulators` (`RemoveManipulator`), `ProgressBar` (`SetTitle`), `BaseListView`, `MultiColumnListView`, `MultiColumnTreeView` with new fluent methods. ([#33]) +- Math-assembly `SetValue` extensions for `float2/3/4`, `int2/3/4` types. ([#33]) ### Changed -- Reorganized `BaseFieldExtensions` into `BaseFields/` subdirectory. -- Renamed `Unbind` extension to `UnbindFrom` for consistency with `BindTo`. -- Tightened `BindPropertyTo` generic constraint from `where T : IBindable` to `where T : VisualElement, IBindable`. +- Reorganized `BaseFieldExtensions` into `BaseFields/` subdirectory. ([#33]) +- Renamed `Unbind` extension to `UnbindFrom` for consistency with `BindTo`. ([#33]) +- Tightened `BindPropertyTo` generic constraint from `where T : IBindable` to `where T : VisualElement, IBindable`. ([#33]) ### Fixed -- `SetMinSize` parameter naming bug (`maxHeight` → `minHeight`). +- `SetMinSize` parameter naming bug (`maxHeight` → `minHeight`). ([#33]) + +[#33]: https://github.com/VPDPersonal/Aspid.FastTools/pull/33 ## [1.0.0-rc.2] — 2026-05-18 From bb3e7395582559c92f9c78f75d001db1bab88b9f Mon Sep 17 00:00:00 2001 From: Vladislav Panin Date: Mon, 25 May 2026 08:57:19 +0300 Subject: [PATCH 5/8] Remove redundant subsection header from changelog --- .../Assets/Aspid/FastTools/CHANGELOG.md | 2 - Preview/05b_Overview2.png | Bin 0 -> 110625 bytes Preview/aspid_banner_bg.html | 775 ++++++++++++++++++ 3 files changed, 775 insertions(+), 2 deletions(-) create mode 100644 Preview/05b_Overview2.png create mode 100644 Preview/aspid_banner_bg.html diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/CHANGELOG.md b/Aspid.FastTools/Assets/Aspid/FastTools/CHANGELOG.md index a47bf6c9..d56abca3 100644 --- a/Aspid.FastTools/Assets/Aspid/FastTools/CHANGELOG.md +++ b/Aspid.FastTools/Assets/Aspid/FastTools/CHANGELOG.md @@ -8,8 +8,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] ### Added - -#### VisualElement fluent extensions - Per-type `SetLabel` overloads for `BaseField` covering 25 Unity types (`Quaternion`, `AnimationCurve`, `Bounds`, `BoundsInt`, `Color`, `Color32`, `Gradient`, `Hash128`, `Rect`, `Vector2/3/4`, `Vector2Int/3Int`, `int`, `uint`, `long`, `ulong`, `float`, `double`, `decimal`, `short`, `ushort`, `byte`, `sbyte`, `char`, `string`, `Enum`, `Object`). ([#33]) - Raw-enum overloads for all `StyleEnum` setters on `IStyleExtensions` and `VisualElementExtensions.Style` (e.g. `SetFlexWrap(Wrap)` alongside `SetFlexWrap(StyleEnum)`). ([#33]) - Conditional `*If` variants (`AddChildIf`, `InsertChildIf`, `AddChildrenIf`, `InsertChildrenIf`) for all child management methods across `VisualElement`, `IEnumerable`, array and `List` sources. ([#33]) diff --git a/Preview/05b_Overview2.png b/Preview/05b_Overview2.png new file mode 100644 index 0000000000000000000000000000000000000000..09f8dc1b356502b778b528c120866b662bebfeed GIT binary patch literal 110625 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 literal 0 HcmV?d00001 diff --git a/Preview/aspid_banner_bg.html b/Preview/aspid_banner_bg.html new file mode 100644 index 00000000..374a7dc6 --- /dev/null +++ b/Preview/aspid_banner_bg.html @@ -0,0 +1,775 @@ + + + + + Aspid.FastTools — animated banner background + + + +
+
+ +
Drop an image to overlay
+
+
+ +
+
+ REC + 00:00 +
+ +
+ +
+

Banner Background

+ + +
+ +
+ + + + + + + + + + + + +
+ +
+ +
+ + +
+ +
+ + +
+ + +
Capture
+ + +
+ +
+ + +
+ +
+ + + +
+ + +
+ +
+ H hide panel · Space pause · S screenshot · R record/stop. +
Drop image onto canvas to overlay. +
+
+ + + + From 05b363ca2a0cad25d6c587f7b664a4513f305a8c Mon Sep 17 00:00:00 2001 From: Vladislav Panin Date: Mon, 25 May 2026 09:02:38 +0300 Subject: [PATCH 6/8] Remove accidentally committed Preview/ files --- Preview/05b_Overview2.png | Bin 110625 -> 0 bytes Preview/aspid_banner_bg.html | 775 ----------------------------------- 2 files changed, 775 deletions(-) delete mode 100644 Preview/05b_Overview2.png delete mode 100644 Preview/aspid_banner_bg.html diff --git a/Preview/05b_Overview2.png b/Preview/05b_Overview2.png deleted file mode 100644 index 09f8dc1b356502b778b528c120866b662bebfeed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 110625 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 diff --git a/Preview/aspid_banner_bg.html b/Preview/aspid_banner_bg.html deleted file mode 100644 index 374a7dc6..00000000 --- a/Preview/aspid_banner_bg.html +++ /dev/null @@ -1,775 +0,0 @@ - - - - - Aspid.FastTools — animated banner background - - - -
-
- -
Drop an image to overlay
-
-
- -
-
- REC - 00:00 -
- -
- -
-

Banner Background

- - -
- -
- - - - - - - - - - - - -
- -
- -
- - -
- -
- - -
- - -
Capture
- - -
- -
- - -
- -
- - - -
- - -
- -
- H hide panel · Space pause · S screenshot · R record/stop. -
Drop image onto canvas to overlay. -
-
- - - - From 985217e319bf59448cbf687fd5e2fe25d87cc7a0 Mon Sep 17 00:00:00 2001 From: Vladislav Panin Date: Mon, 25 May 2026 09:05:28 +0300 Subject: [PATCH 7/8] Add PR references to all changelog entries --- .../Assets/Aspid/FastTools/CHANGELOG.md | 82 ++++++++++--------- 1 file changed, 42 insertions(+), 40 deletions(-) diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/CHANGELOG.md b/Aspid.FastTools/Assets/Aspid/FastTools/CHANGELOG.md index d56abca3..3b99c630 100644 --- a/Aspid.FastTools/Assets/Aspid/FastTools/CHANGELOG.md +++ b/Aspid.FastTools/Assets/Aspid/FastTools/CHANGELOG.md @@ -32,7 +32,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 Release-workflow validation build. No functional changes versus `1.0.0-rc.1`. ### Changed -- Integration URL in all four READMEs now points at the dedicated `upm` branch / `upm/` tag published by the release workflow (no `?path=` query needed). +- Integration URL in all four READMEs now points at the dedicated `upm` branch / `upm/` tag published by the release workflow (no `?path=` query needed). ([#30]) ## [1.0.0-rc.1] — 2026-05-18 @@ -41,74 +41,76 @@ First release candidate for `1.0.0`. Marketed as a preview while the **ID System ### Added #### ProfilerMarkers -- `this.Marker()` extension method that resolves to a `ProfilerMarker` unique to the call-site (enclosing type + method/field/property + line number). -- `ProfilerMarkersGenerator` (Roslyn incremental source generator) that emits one `ProfilerMarker` field per call-site and a per-type dispatcher. Walks through lambdas and local functions; supports `.WithName(literal)` and plain `$"..."` interpolated names; deduplicates fields when several call-sites share a line. -- Semantic gating: only `ProfilerMarkerExtensionsForGenerator.Marker` is rewritten, user-defined `Marker()` extensions are left untouched. -- The generated dispatcher is wrapped in `#if ENABLE_PROFILER` and falls back to `return default;`, so non-development builds carry no per-call cost. +- `this.Marker()` extension method that resolves to a `ProfilerMarker` unique to the call-site (enclosing type + method/field/property + line number). ([#8]) +- `ProfilerMarkersGenerator` (Roslyn incremental source generator) that emits one `ProfilerMarker` field per call-site and a per-type dispatcher. Walks through lambdas and local functions; supports `.WithName(literal)` and plain `$"..."` interpolated names; deduplicates fields when several call-sites share a line. ([#8]) +- Semantic gating: only `ProfilerMarkerExtensionsForGenerator.Marker` is rewritten, user-defined `Marker()` extensions are left untouched. ([#8]) +- The generated dispatcher is wrapped in `#if ENABLE_PROFILER` and falls back to `return default;`, so non-development builds carry no per-call cost. ([#8]) #### Serializable Type System -- `SerializableType` — `[Serializable]` wrapper around `System.Type` that stores the assembly-qualified name and resolves the type lazily on first access; implicit conversion to `Type`. -- `SerializableType` — generic variant with a base-type constraint enforced both at compile time and in the editor picker. -- `TypeSelectorAttribute` — `PropertyAttribute` (editor-only via `[Conditional("UNITY_EDITOR")]`) that drives the type picker on `string` fields and lets you constrain the picker to one or more base types. -- `TypeAllow` — `[Flags]` enum that opts the picker into abstract classes (`Abstract`), interfaces (`Interface`) or both (`All`); defaults to concrete classes only. -- `ComponentTypeSelector` — `[Serializable]` helper that surfaces a `Component`-typed sibling on the same `GameObject` through the inspector. -- `TypeSelectorWindow` — `EditorWindow`-based hierarchical type picker with namespace tree, fuzzy search, keyboard navigation and a public `Show(...)` API for invoking it from custom editors. -- Property drawers for `SerializableType`, `SerializableType`, `ComponentTypeSelector` and `[TypeSelector]` strings (IMGUI + UI Toolkit). UI Toolkit drawer renders a reusable `TypeField` / `InspectorTypeField` element. +- `SerializableType` — `[Serializable]` wrapper around `System.Type` that stores the assembly-qualified name and resolves the type lazily on first access; implicit conversion to `Type`. ([#8]) +- `SerializableType` — generic variant with a base-type constraint enforced both at compile time and in the editor picker. ([#8]) +- `TypeSelectorAttribute` — `PropertyAttribute` (editor-only via `[Conditional("UNITY_EDITOR")]`) that drives the type picker on `string` fields and lets you constrain the picker to one or more base types. ([#8]) +- `TypeAllow` — `[Flags]` enum that opts the picker into abstract classes (`Abstract`), interfaces (`Interface`) or both (`All`); defaults to concrete classes only. ([#8]) +- `ComponentTypeSelector` — `[Serializable]` helper that surfaces a `Component`-typed sibling on the same `GameObject` through the inspector. ([#8]) +- `TypeSelectorWindow` — `EditorWindow`-based hierarchical type picker with namespace tree, fuzzy search, keyboard navigation and a public `Show(...)` API for invoking it from custom editors. ([#8]) +- Property drawers for `SerializableType`, `SerializableType`, `ComponentTypeSelector` and `[TypeSelector]` strings (IMGUI + UI Toolkit). UI Toolkit drawer renders a reusable `TypeField` / `InspectorTypeField` element. ([#8]) #### Enum System -- `EnumValues` — `[Serializable]` enum-keyed dictionary that survives Unity serialization and handles `[Flags]` enums. -- `EnumValue` — single-entry building block used by the dictionary and exposed for standalone use. -- Custom property drawers for both types with inline editing in the inspector. +- `EnumValues` — `[Serializable]` enum-keyed dictionary that survives Unity serialization and handles `[Flags]` enums. ([#8]) +- `EnumValue` — single-entry building block used by the dictionary and exposed for standalone use. ([#8]) +- Custom property drawers for both types with inline editing in the inspector. ([#8]) #### ID System (Beta) -- `IId` marker interface and `[UniqueId]` attribute for ID-struct types (one struct ↔ one `IdRegistry`). -- `IdRegistry` (`ScriptableObject`) holding the canonical `int ↔ string` map; runtime lookups via `TryGetId`, `TryGetName`, `Contains(int)`, `Contains(string)`. -- `IdRegistryResolver` — lazily builds a `Type AQN → registry` index on first lookup and keeps it incrementally up to date through an `AssetPostprocessor`; `IdRegistry.OnEnable` marks the cache dirty so re-imports are picked up. -- `UniqueIdIndex` — sibling index used by the editor to detect `[UniqueId]` field-value collisions across registries. -- `IdStructGenerator` (Roslyn incremental source generator) emits the struct-side boilerplate (`_id`, `Id`, `__stringId`, equality, conversions) and supports generic target structs as well as generic containing types. -- Analyzer diagnostics: `AFID001` (the target `IId` struct must be `partial`) and `AFID002` (one of the generated members is already declared by the user). -- Editor UI driven by `RegistryEditorCore`: C#-identifier name validation, full Undo, explicit clean-up flow for invalid/duplicate entries, Sort/Group toolbar, manual next-id entry with backward-step warning, Open-Registry shortcut from the `IdStruct` property drawer. -- `Assets → Create → Aspid/Id Registry/Id Registry` menu entry for creating registry assets. +- `IId` marker interface and `[UniqueId]` attribute for ID-struct types (one struct ↔ one `IdRegistry`). ([#8]) +- `IdRegistry` (`ScriptableObject`) holding the canonical `int ↔ string` map; runtime lookups via `TryGetId`, `TryGetName`, `Contains(int)`, `Contains(string)`. ([#8]) +- `IdRegistryResolver` — lazily builds a `Type AQN → registry` index on first lookup and keeps it incrementally up to date through an `AssetPostprocessor`; `IdRegistry.OnEnable` marks the cache dirty so re-imports are picked up. ([#8]) +- `UniqueIdIndex` — sibling index used by the editor to detect `[UniqueId]` field-value collisions across registries. ([#8]) +- `IdStructGenerator` (Roslyn incremental source generator) emits the struct-side boilerplate (`_id`, `Id`, `__stringId`, equality, conversions) and supports generic target structs as well as generic containing types. ([#8]) +- Analyzer diagnostics: `AFID001` (the target `IId` struct must be `partial`) and `AFID002` (one of the generated members is already declared by the user). ([#8]) +- Editor UI driven by `RegistryEditorCore`: C#-identifier name validation, full Undo, explicit clean-up flow for invalid/duplicate entries, Sort/Group toolbar, manual next-id entry with backward-step warning, Open-Registry shortcut from the `IdStruct` property drawer. ([#8]) +- `Assets → Create → Aspid/Id Registry/Id Registry` menu entry for creating registry assets. ([#8]) #### VisualElement fluent extensions -- Extensive UI Toolkit fluent API on `VisualElement` and friends — layout, sizing, style, borders, colors, transitions, callbacks, USS classes/sheets, child management. -- Per-element helper sets: `Button`, `Field`, `Focusable`, `Foldout`, `HelpBox`, `Image`, `IMGUIContainer`, `IMixedValueSupport`, `INotifyValueChanged`, `IStyle`, `List`, `Manipulators`, `ProgressBar`, `Slider`, `TextElement`, `CallbackEventHandler`, `ICustomStyle`. -- Style preset helpers via `VisualElementExtensions.Style.Preset.cs` and reusable `ICustomStyle.TryGetByEnum` extension for USS-driven enum bindings. -- Editor-side `VisualElement` command extensions in `Unity.Editor/Scripts/VisualElements/Extensions/`. +- Extensive UI Toolkit fluent API on `VisualElement` and friends — layout, sizing, style, borders, colors, transitions, callbacks, USS classes/sheets, child management. ([#8]) +- Per-element helper sets: `Button`, `Field`, `Focusable`, `Foldout`, `HelpBox`, `Image`, `IMGUIContainer`, `IMixedValueSupport`, `INotifyValueChanged`, `IStyle`, `List`, `Manipulators`, `ProgressBar`, `Slider`, `TextElement`, `CallbackEventHandler`, `ICustomStyle`. ([#8]) +- Style preset helpers via `VisualElementExtensions.Style.Preset.cs` and reusable `ICustomStyle.TryGetByEnum` extension for USS-driven enum bindings. ([#8]) +- Editor-side `VisualElement` command extensions in `Unity.Editor/Scripts/VisualElements/Extensions/`. ([#8]) #### Optional Mathematics integration -- Satellite assembly `Aspid.FastTools.Unity.VisualElements.Math` adds `INotifyValueChanged` extensions (`SetValue`, `ValueChanged`) for `Unity.Mathematics` types (`float2/3/4`, `int2/3/4`, etc.). -- Compiled only when `com.unity.mathematics` is installed (`versionDefines` gate, define symbol `ASPID_FASTTOOLS_UNITY_MATHEMATICS_INTEGRATION`). +- Satellite assembly `Aspid.FastTools.Unity.VisualElements.Math` adds `INotifyValueChanged` extensions (`SetValue`, `ValueChanged`) for `Unity.Mathematics` types (`float2/3/4`, `int2/3/4`, etc.). ([#8]) +- Compiled only when `com.unity.mathematics` is installed (`versionDefines` gate, define symbol `ASPID_FASTTOOLS_UNITY_MATHEMATICS_INTEGRATION`). ([#8]) #### Internal editor components Shared UI Toolkit elements used across the package's editor surfaces, all built on the base palette `Aspid-FastTools-Default-Dark.uss`: -- `AspidLabel`, `AspidBox`, `AspidGradientButton`, `AspidHelpBox`, `AspidInspectorHeader`, `AspidDividingLine`, `AspidAnimatedLogo`, `AspidAnimatedTitle`, `AspidAnimatedDotsBackground`, `AspidHoverGradientOverlay`. -- USS-driven style structs (`AspidLabelSizeStyle`, `AspidLabelFontStyle`, `AspidDividingLineSizeStyle`, `AspidDividingLineDirectionStyle`, `AspidAnimatedLogoPulseSpeedStyle`, `AspidAnimatedLogoPulseHoverAmplitudeStyle`, `AspidAnimatedLogoLayerImageStyle`, `StatusStyle`, `ThemeStyle`, …). -- Shared helpers: `AspidStyles` (single source of truth for USS class/property names), `InlineStyle` (USS-vs-code precedence helper), `DoubleClickTracker`. +- `AspidLabel`, `AspidBox`, `AspidGradientButton`, `AspidHelpBox`, `AspidInspectorHeader`, `AspidDividingLine`, `AspidAnimatedLogo`, `AspidAnimatedTitle`, `AspidAnimatedDotsBackground`, `AspidHoverGradientOverlay`. ([#8]) +- USS-driven style structs (`AspidLabelSizeStyle`, `AspidLabelFontStyle`, `AspidDividingLineSizeStyle`, `AspidDividingLineDirectionStyle`, `AspidAnimatedLogoPulseSpeedStyle`, `AspidAnimatedLogoPulseHoverAmplitudeStyle`, `AspidAnimatedLogoLayerImageStyle`, `StatusStyle`, `ThemeStyle`, …). ([#8]) +- Shared helpers: `AspidStyles` (single source of truth for USS class/property names), `InlineStyle` (USS-vs-code precedence helper), `DoubleClickTracker`. ([#8]) #### SerializedProperty extensions -- Fluent chainable helpers in `SerializePropertyExtensions` (`SetValue`, `Apply`, `Persistent`) and a `Reflection` partial that exposes the backing field/value behind a `SerializedProperty`. +- Fluent chainable helpers in `SerializePropertyExtensions` (`SetValue`, `Apply`, `Persistent`) and a `Reflection` partial that exposes the backing field/value behind a `SerializedProperty`. ([#8]) #### IMGUI scopes -- Disposable `VerticalScope`, `HorizontalScope`, `ScrollViewScope` wrappers that expose the layout `Rect` for hit-testing. +- Disposable `VerticalScope`, `HorizontalScope`, `ScrollViewScope` wrappers that expose the layout `Rect` for hit-testing. ([#8]) #### Editor helper extensions -- `MonoScript.GetScriptName()` and `MonoScript.GetScriptNameWithIndex()` — respect `[AddComponentMenu]` and append an index suffix when several copies of the same component live on one `GameObject`. +- `MonoScript.GetScriptName()` and `MonoScript.GetScriptNameWithIndex()` — respect `[AddComponentMenu]` and append an index suffix when several copies of the same component live on one `GameObject`. ([#8]) #### Welcome window -- `WelcomeWindow` editor window (menu `Tools/Aspid FastTools/Welcome`) listing the package's installable samples by parsing `package.json`. -- `WelcomeWindowStartup` shows the window automatically on first import. +- `WelcomeWindow` editor window (menu `Tools/Aspid FastTools/Welcome`) listing the package's installable samples by parsing `package.json`. ([#8]) +- `WelcomeWindowStartup` shows the window automatically on first import. ([#8]) #### Samples Five installable samples shipped under `Samples~/` (UPM convention, imported via Package Manager): -- `Types`, `EnumValues`, `Ids`, `ProfilerMarkers`, `VisualElements`. +- `Types`, `EnumValues`, `Ids`, `ProfilerMarkers`, `VisualElements`. ([#8]) #### Documentation -- EN and RU READMEs at the package root and at `Documentation/EN/` and `Documentation/RU/`, mirroring the same content with language-appropriate image paths. -- Per-feature reference documents next to each README: `SerializedPropertyExtensions.md`, `VisualElementExtensions.md`. +- EN and RU READMEs at the package root and at `Documentation/EN/` and `Documentation/RU/`, mirroring the same content with language-appropriate image paths. ([#8]) +- Per-feature reference documents next to each README: `SerializedPropertyExtensions.md`, `VisualElementExtensions.md`. ([#8]) +[#8]: https://github.com/VPDPersonal/Aspid.FastTools/pull/8 +[#30]: https://github.com/VPDPersonal/Aspid.FastTools/pull/30 [Unreleased]: https://github.com/VPDPersonal/Aspid.FastTools/compare/v1.0.0-rc.2...HEAD [1.0.0-rc.2]: https://github.com/VPDPersonal/Aspid.FastTools/compare/v1.0.0-rc.1...v1.0.0-rc.2 [1.0.0-rc.1]: https://github.com/VPDPersonal/Aspid.FastTools/releases/tag/v1.0.0-rc.1 From b914438031f595a01c0cee0bcf57726183e944da Mon Sep 17 00:00:00 2001 From: Vladislav Panin Date: Mon, 25 May 2026 12:51:34 +0300 Subject: [PATCH 8/8] docs: fix type count and add missing fixes to changelog Correct SetLabel type count from 25 to 29 and add two missing Fixed entries: FocusableExtensions null-safety and StyleSheet resource loading null-guard. --- Aspid.FastTools/Assets/Aspid/FastTools/CHANGELOG.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Aspid.FastTools/Assets/Aspid/FastTools/CHANGELOG.md b/Aspid.FastTools/Assets/Aspid/FastTools/CHANGELOG.md index 3b99c630..1c0d0e4d 100644 --- a/Aspid.FastTools/Assets/Aspid/FastTools/CHANGELOG.md +++ b/Aspid.FastTools/Assets/Aspid/FastTools/CHANGELOG.md @@ -8,7 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] ### Added -- Per-type `SetLabel` overloads for `BaseField` covering 25 Unity types (`Quaternion`, `AnimationCurve`, `Bounds`, `BoundsInt`, `Color`, `Color32`, `Gradient`, `Hash128`, `Rect`, `Vector2/3/4`, `Vector2Int/3Int`, `int`, `uint`, `long`, `ulong`, `float`, `double`, `decimal`, `short`, `ushort`, `byte`, `sbyte`, `char`, `string`, `Enum`, `Object`). ([#33]) +- Per-type `SetLabel` overloads for `BaseField` covering 29 Unity types (`Quaternion`, `AnimationCurve`, `Bounds`, `BoundsInt`, `Color`, `Color32`, `Gradient`, `Hash128`, `Rect`, `Vector2/3/4`, `Vector2Int/3Int`, `int`, `uint`, `long`, `ulong`, `float`, `double`, `decimal`, `short`, `ushort`, `byte`, `sbyte`, `char`, `string`, `Enum`, `Object`). ([#33]) - Raw-enum overloads for all `StyleEnum` setters on `IStyleExtensions` and `VisualElementExtensions.Style` (e.g. `SetFlexWrap(Wrap)` alongside `SetFlexWrap(StyleEnum)`). ([#33]) - Conditional `*If` variants (`AddChildIf`, `InsertChildIf`, `AddChildrenIf`, `InsertChildrenIf`) for all child management methods across `VisualElement`, `IEnumerable`, array and `List` sources. ([#33]) - `BindTo(SerializedObject)` and `UnbindFrom()` editor-side fluent extensions for `VisualElement`. ([#33]) @@ -24,6 +24,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - `SetMinSize` parameter naming bug (`maxHeight` → `minHeight`). ([#33]) +- Null-safety in `FocusableExtensions.IsFocus` — `focusController` is now null-checked to prevent `NullReferenceException`. ([#33]) +- `AddStyleSheetsFromResource` / `RemoveStyleSheetsFromResource` now log a warning and return gracefully instead of throwing when the stylesheet path is not found. ([#33]) [#33]: https://github.com/VPDPersonal/Aspid.FastTools/pull/33