Skip to content

Releases: kodlon/AssetRouter

Release list

v0.9.5

Choose a tag to compare

@kodlon kodlon released this 22 Jul 13:29

Added

  • CreateMaterialFromTextureAction — pipeline-default fallback. When baseMaterial is null the action now resolves to the active SRP's RenderPipelineAsset.defaultMaterial (URP/HDRP) or the Built-in RP Default-Material, so the default General Textures rule produces a .mat out of the box without manual configuration. Texture assignment also falls back from the configured textureProperty to Material.mainTexture when the property isn't on the shader — makes _MainTex (Standard) and _BaseMap (URP Lit) work with the same default.
  • CreateMaterialFromTextureAction.outputFolder accepts relative paths. Absolute (Assets/...) still works as before; a relative value like Materials resolves as a subfolder of the imported texture's folder. Default is now Materials, so materials group under TextureFolder/Materials/ instead of being scattered next to textures.
  • Default database — General Textures (T_*) now runs CreateMaterialFromTextureAction. Dropping a T_*.png into the project creates a Materials/T_*_Mat.mat next to it automatically.
  • Undo cleans up assets and folders created by import actions (materials, prefabs, SOs, tile-palette entries). New IArtifactSink + ArtifactCollector; the 4 built-in Create actions and PathUtility.EnsureFolderExists feed into it. Log schema bumped to v2 with createdAssets / createdFolders; v1 files still load.
  • Undo now writes itself to the operation log with source = "Undo" (audit trail + de-facto redo when clicked again).
  • Recycle folder Assets/_AssetRouterRecycle — Undo of root-drop imports moves assets here instead of dumping them back at Assets/ root. Files originally in a subfolder still restore in place.
  • History timestamps show in local time.
  • Clear Rule Statistics menu item. Tools > Asset Router > Clear Rule Statistics resets the
    per-rule match counters shown as (N✓) in the rules list, after a confirmation dialog. Previously
    the counters could not be cleared from the UI (Library/AssetRouter/stats.json had to be deleted
    manually).
  • Beginner documentation. New Documentation~/getting-started.md (step-by-step first run),
    ui-reference.md (every window, tab, and button), patterns.md (Glob and Regex cookbook), and
    presets.md (creating and assigning presets). Stale references fixed across existing docs: old
    menu path Tools > Asset Router Settings, removed AssetsBeingMoved guard description, built-in
    action count (11, not 10), full-database JSON format documented.
  • Welcome Window on first launch. When no ImporterSettingsDatabase exists in the project and the
    Editor is running interactively, a small utility window opens once per session and asks whether to
    create a default database. Clicking Create writes the database to Assets/AssetRouter/ and opens
    the Asset Router Settings window; clicking Not now dismisses without any side-effects. The window
    is suppressed in batch/CI mode (Application.isBatchMode).
  • ConflictDetector sample-path caching. ConflictDetector.Detect now re-uses a cached set of
    sample paths across repeated calls and invalidates it on projectChanged and
    importPackageCompleted. Eliminates repeated AssetDatabase.FindAssets calls during the same Editor
    session. BuildSamplePaths also sorts the raw GUID list before truncation for deterministic overlap
    detection across machines.

Fixed

  • HandleUnknownAssets no longer opens a modal dialog in batch/CI mode (Application.isBatchMode guard).
  • DatabaseLocator no longer silently picks the first DB when the project has more than one — auto-import is disabled with a LogWarning until only one ImporterSettingsDatabase remains. Warning fires once per domain reload (from the postprocessor path only); the migrator / initializer stay silent to avoid projectChanged spam.
  • One log line per import batch instead of one per file. [AssetRouter] Moved N asset(s): a, b, c, …. Also drops the per-preset "Preset applied" info line (kept the warning on type mismatch).
  • BuildPatternPreview scopes its AssetDatabase.FindAssets to rule.scopeFolder when set — was walking all of Assets/ for 3 samples.
  • AssetCatalog.Contains / AppendToCatalogAction are O(1) now: HashSet<Object> cache rebuilt via ISerializationCallbackReceiver. Serialized list is unchanged; existing catalogs load without any migration.

Removed

  • Diagnostic Window — duplicated History, only worked while open, cleared on every assembly reload. A proper debug view is deferred.
  • Legacy model formats from default monitored extensions. .3ds and .dae were dropped; .fbx and .obj remain. The removed formats are effectively dead in modern Unity pipelines (.3ds is 30+ years old; .dae/Collada silently drops animation data). Users who need them can still add the extension back via the Settings window.
  • SetPivotAction from default UI Textures rule. Pivot on a full-image sprite is a no-op unless the sprite is set to Custom alignment first — kept the action in the codebase for users who need it, but out of defaults so a fresh database doesn't ship with a rule that silently does nothing.
  • Samples~/QuickStart sample. Content was duplicative of README.md and Documentation~/getting-started.md, and the sample shipped no asset files (only a written walkthrough). The walkthrough remains in the docs.