Skip to content

Migrate off third-party SerializeReferenceDropdown to FastTools [TypeSelector] #123

Description

@VPDPersonal

Drop the external com.alexeytaranov.serializereferencedropdown dependency and replace [SerializeReferenceDropdown] with Aspid.FastTools [TypeSelector], now that FastTools draws [SerializeReference] fields natively.

Why now

FastTools is already embedded tech.aspid.fasttools ships with the StarterKit (since #26)
[TypeSelector] now covers [SerializeReference] VPDPersonal/Aspid.FastTools#49
Removes an external git dependency one less third-party package to track / pin
Free upgrades repair, reference graph, open generics, favorites & recents, multi-object edit

The current setup is a versionDefines gate: a local no-op SerializeReferenceDropdownAttribute shim compiles only while the third-party package is absent, otherwise its real attribute + drawer take over. [SerializeReferenceDropdown] is used in ~76 sites across the StarterKit (binders, converters, commands).

Migration steps

# Change
1 Packages/manifest.json — remove com.alexeytaranov.serializereferencedropdown
2 Aspid.MVVM.StarterKit.asmdef — drop the SerializeReferenceDropdownRuntime reference + the versionDefines entry; reference the FastTools assembly hosting [TypeSelector] instead
3 Replace [SerializeReferenceDropdown][TypeSelector] across the ~76 sites
4 Delete the local shim StarterKit/Runtime/Utilities/SerializeReferenceDropdown.cs
5 Regenerate packages-lock.json; update CHANGELOG / MIGRATION (EN + RU)

Risks to verify

  • Data round-trips — both attributes sit on plain [SerializeReference] fields, so stored managed-reference data should carry over unchanged; confirm no asset breakage on existing serialized fields.
  • Candidate-set parity — FastTools filters Object-derived types, open generics, etc.; check each field still offers the expected implementations, narrowing with [TypeSelector(typeof(Base))] where the old dropdown was broader.
  • Graceful absence — the shim used to no-op when the package was missing; after migration [TypeSelector] is always present via the embedded FastTools, so the gate is no longer needed.

Refs

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: editorEditor-only codearea: runtimeRuntime / player codedependenciesDependency or submodule updatetype: refactorInternal restructuring without behavior change

    Projects

    • Status
      In progress

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions