Releases: VPDPersonal/Aspid.FastTools
v1.0.0-rc.3
Added
- Per-type
SetLabeloverloads forBaseField<T>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<T>setters onIStyleExtensionsandVisualElementExtensions.Style(e.g.SetFlexWrap(Wrap)alongsideSetFlexWrap(StyleEnum<Wrap>)). (#33) - Conditional
*Ifvariants (AddChildIf,InsertChildIf,AddChildrenIf,InsertChildrenIf) for all child management methods acrossVisualElement,IEnumerable, array andListsources. (#33) BindTo(SerializedObject)andUnbindFrom()editor-side fluent extensions forVisualElement. (#33)SetLabelforPropertyField,SetBindingPathforIBindable(editor-side). (#33)- Extended
INotifyValueChangedValueChangedwith per-type overloads for common Unity types. (#33) - Extended
Button(SetText),Focusable,Manipulators(RemoveManipulator),ProgressBar(SetTitle),BaseListView,MultiColumnListView,MultiColumnTreeViewwith new fluent methods. (#33) - Math-assembly
SetValueextensions forfloat2/3/4,int2/3/4types. (#33) - UPM preview branch: prerelease versions now publish to
upm-preview/upm-preview/<version>tags, keepingupmclean for stable releases. (#31) - Preview-branch documentation and installation examples added to all four READMEs. (#32)
Changed
- Reorganized
BaseFieldExtensionsintoBaseFields/subdirectory. (#33) - Renamed
Unbind<T>extension toUnbindFrom<T>for consistency withBindTo. (#33) - Tightened
BindPropertyTogeneric constraint fromwhere T : IBindabletowhere T : VisualElement, IBindable. (#33)
Fixed
SetMinSizeparameter naming bug (maxHeight→minHeight). (#33)- Null-safety in
FocusableExtensions.IsFocus—focusControlleris now null-checked to preventNullReferenceException. (#33) AddStyleSheetsFromResource/RemoveStyleSheetsFromResourcenow log a warning and return gracefully instead of throwing when the stylesheet path is not found. (#33)
v1.0.0-rc.2
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
upmbranch /upm/<version>tag published by the release workflow (no?path=query needed).
v1.0.0-rc.1
First release candidate for Aspid.FastTools 1.0.0 (com.aspid.fasttools 1.0.0-rc.1). Marketed as a preview while the ID System is finalised — its public API, generated boilerplate and editor workflow may still change before the final 1.0.0 release.
Install
Add the package to Unity via UPM (Unity Package Manager):
https://github.com/VPDPersonal/Aspid.FastTools.git?path=Aspid.FastTools/Assets/Aspid/FastTools#v1.0.0-rc.1
Requires Unity 6.0+. The optional Aspid.FastTools.Unity.VisualElements.Math satellite is compiled automatically when com.unity.mathematics is installed.
Highlights
- Source generators —
ProfilerMarkersGeneratoremits a per-call-siteProfilerMarkerforthis.Marker();IdStructGeneratoremits theIIdstruct boilerplate, withAFID001/AFID002diagnostics. - ID System (beta) — single
IdRegistryperIIdstruct, lazyType AQN → registryresolver, incrementalAssetPostprocessorcache, full editor UX (Undo, sort/group, clean-up, Open-Registry). - Serializable Type System —
SerializableType/SerializableType<T>,ComponentTypeSelector,[TypeSelector]forstringfields, shared IMGUI + UI ToolkitTypeSelectorWindow. - EnumValues —
[Serializable]enum-keyed dictionary with[Flags]support and a populate-missing context menu. - Fluent UI Toolkit API over
VisualElementand friends, plus 10 internal editor components on a shared dark palette. - Optional Mathematics integration — satellite assembly with
INotifyValueChangedextensions forfloat2/3/4,int2/3/4, etc., gated byversionDefines. - Five UPM samples —
Types,EnumValues,Ids,ProfilerMarkers,VisualElements.
Full changelog
See CHANGELOG.md for the complete list of additions.
Added
ProfilerMarkers
this.Marker()extension method that resolves to aProfilerMarkerunique to the call-site (enclosing type + method/field/property + line number).ProfilerMarkersGenerator(Roslyn incremental source generator) that emits oneProfilerMarkerfield 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.Markeris rewritten, user-definedMarker()extensions are left untouched. - The generated dispatcher is wrapped in
#if ENABLE_PROFILERand falls back toreturn default;, so non-development builds carry no per-call cost.
Serializable Type System
SerializableType—[Serializable]wrapper aroundSystem.Typethat stores the assembly-qualified name and resolves the type lazily on first access; implicit conversion toType.SerializableType<T>— 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 onstringfields 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 aComponent-typed sibling on the sameGameObjectthrough the inspector.TypeSelectorWindow—EditorWindow-based hierarchical type picker with namespace tree, fuzzy search, keyboard navigation and a publicShow(...)API for invoking it from custom editors.- Property drawers for
SerializableType,SerializableType<T>,ComponentTypeSelectorand[TypeSelector]strings (IMGUI + UI Toolkit). UI Toolkit drawer renders a reusableTypeField/InspectorTypeFieldelement.
Enum System
EnumValues<TValue>—[Serializable]enum-keyed dictionary that survives Unity serialization and handles[Flags]enums.EnumValue<TKey, TValue>— 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.
ID System (Beta)
IIdmarker interface and[UniqueId]attribute for ID-struct types (one struct ↔ oneIdRegistry).IdRegistry(ScriptableObject) holding the canonicalint ↔ stringmap; runtime lookups viaTryGetId,TryGetName,Contains(int),Contains(string).IdRegistryResolver— lazily builds aType AQN → registryindex on first lookup and keeps it incrementally up to date through anAssetPostprocessor;IdRegistry.OnEnablemarks 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 targetIIdstruct must bepartial) andAFID002(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 theIdStructproperty drawer. Assets → Create → Aspid/Id Registry/Id Registrymenu entry for creating registry assets.
VisualElement fluent extensions
- Extensive UI Toolkit fluent API on
VisualElementand 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.csand reusableICustomStyle.TryGetByEnum<T>extension for USS-driven enum bindings. - Editor-side
VisualElementcommand extensions inUnity.Editor/Scripts/VisualElements/Extensions/.
Optional Mathematics integration
- Satellite assembly
Aspid.FastTools.Unity.VisualElements.MathaddsINotifyValueChangedextensions (SetValue,ValueChanged) forUnity.Mathematicstypes (float2/3/4,int2/3/4, etc.). - Compiled only when
com.unity.mathematicsis installed (versionDefinesgate, define symbolASPID_FASTTOOLS_UNITY_MATHEMATICS_INTEGRATION).
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<T>(USS-vs-code precedence helper),DoubleClickTracker.
SerializedProperty extensions
- Fluent chainable helpers in
SerializePropertyExtensions(SetValue,Apply,Persistent) and aReflectionpartial that exposes the backing field/value behind aSerializedProperty.
IMGUI scopes
- Disposable
VerticalScope,HorizontalScope,ScrollViewScopewrappers that expose the layoutRectfor hit-testing.
Editor helper extensions
MonoScript.GetScriptName()andMonoScript.GetScriptNameWithIndex()— respect[AddComponentMenu]and append an index suffix when several copies of the same component live on oneGameObject.
Welcome window
WelcomeWindoweditor window (menuTools/Aspid FastTools/Welcome) listing the package's installable samples by parsingpackage.json.WelcomeWindowStartupshows the window automatically on first import.
Samples
Five installable samples shipped under Samples~/ (UPM convention, imported via Package Manager):
Types,EnumValues,Ids,ProfilerMarkers,VisualElements.
Documentation
- EN and RU READMEs at the package root and at
Documentation/EN/andDocumentation/RU/, mirroring the same content with language-appropriate image paths. - Per-feature reference documents next to each README:
SerializedPropertyExtensions.md,VisualElementExtensions.md.
v0.0.1-alpha.5
v0.0.1-alpha.4
Full Changelog: v.0.0.1-alpha.3...v0.0.1-alpha-4
v0.0.1-alpha.3
Full Changelog: v.0.0.1-alpha.2...v.0.0.1-alpha.3
v0.0.1-alpha.2
What's Changed
- Add editor extensions by @VPDPersonal in #5
New Contributors
- @VPDPersonal made their first contribution in #5
Full Changelog: v0.0.1-alpha.1...v.0.0.1-alpha.2
v0.0.1-alpha.1
First Release