Search Unity

Maintainer

Discussion in 'Assets and Asset Store' started by codestage, Mar 10, 2015.

  1. codestage

    codestage

    Joined:
    Jul 27, 2012
    Posts:
    1,931
    Ah, sorry, meant "magnifier" button, like this:
    upload_2021-2-17_13-33-9.png

    It will show up for any items are used elsewhere. If you have no such icon against child item - no references for that item were found.
     
  2. umair21

    umair21

    Joined:
    Mar 4, 2016
    Posts:
    147
    Yes but clicking this button initiates searching process if we click on the magnifier of specific item which I don't want because either it'll clear your list or add it somewhere at the bottom. Do you have that version with depth tree feature?
    I'll share my invoice number with you if you can provide a version with depth tree feature. :)
     
  3. codestage

    codestage

    Joined:
    Jul 27, 2012
    Posts:
    1,931
    It will not start a new search and just jump to that item if it's already exist in the list (which will be a case if you make all assets search).

    It will not clear a list if you deactivate "Clear previous results" toggle.

    Yes, it's outdated one though and may work incorrectly on actual Unity versions. Anyways feel free to drop me your invoice number in PM and I'll send you that version.
     
  4. umair21

    umair21

    Joined:
    Mar 4, 2016
    Posts:
    147
    Yes this helped. I didn't know about this. Thank you.

    Sent you my invoice number here in DM. :)
     
  5. umair21

    umair21

    Joined:
    Mar 4, 2016
    Posts:
    147
    One small feature request:

    Addition of Selection history buttons for Next selection (if we aren't on the current and end selected object) and Previous selection (if we are somewhere in between selection history list).
    E.g. I searched for "All Assets" references. Now I can easily click on Magnifier icon to jump to the child object which is somewhere in this massive list but there's no way for me to jump back to the previous object I was looking at before I clicked magnifier button. Need this feature because sometimes one object have multiple references so to easily go around the list, I think this will be a helpful feature. I don't know if something else similar to this feature is already in here in maintainer but please have a look at it if this is helpful in any way possible. Tried using CTRL+Z (Because this works in Unity selection) but didn't work. Even addition of CTRL+Z would be enough.
     
    codestage likes this.
  6. codestage

    codestage

    Joined:
    Jul 27, 2012
    Posts:
    1,931
    Thanks, Maintainer version with recursive tree sent.

    Looks helpful, thank you for the request, added to the internal tasks tracker!
     
    umair21 likes this.
  7. Telhurin

    Telhurin

    Joined:
    Feb 8, 2015
    Posts:
    18
    Hey! First of all - great job with the plugin ^^. The Maintainer helped a ton with organizing the project.

    I've encountered a small problem: I'm not able to find references to the Shader Graph VFX Asset, that are referenced inside VFX Graph. Version 1.10.0.

     
    codestage likes this.
  8. codestage

    codestage

    Joined:
    Jul 27, 2012
    Posts:
    1,931
    Hey @Telhurin, thank you, will take a look and see what can be done here!
     
    Telhurin likes this.
  9. umair21

    umair21

    Joined:
    Mar 4, 2016
    Posts:
    147
    Hi there, Just wanted to ask 2 things:

    1. When we are getting "Replace/Remove references within Maintainer" feature?
    2. When are we getting "Selection history" feature (The one I asked for in previous comments. :) ).

    Any update on progress please? :)

    Thanks for this awesome time saving tool.
     
  10. codestage

    codestage

    Joined:
    Jul 27, 2012
    Posts:
    1,931
    Hey @umair21 ,

    Currently I'm working on next ACTk update and going to switch back to the Maintainer this summer to implement something from the internal task tracker according to the priorities (most wanted features and internals enhancements are going first), so I have no ETA for those two at this moment.

    Anyways I'll post important progress news here and on twitter to let you know more about what's coming in new updates.
     
    umair21 likes this.
  11. umair21

    umair21

    Joined:
    Mar 4, 2016
    Posts:
    147
    Hi @codestage
    I am facing these 2 weird problems with my references.

    1: I searched for references of one of my footstep audio clip. Maintainer gave me it's references as expected. That audio clip was being referenced from a script call FootSteps.cs. I then opened that script and commented out all of it's code because I didn't need it. Now that means there shouldn't be any more references of this clip, right? But that didn't happen, I still getting reference for this clip on that same script which doesn't contain this audio anymore but Maintainer is still opening that script while collapsing all others which means it's getting old references. Do I really need to remove script from scene or is there any other solution for this? I don't want to remove script from scene for now, what could be reason or solution for this?

    2: I have a texture in my project which was previously being referenced from one my scenes. After remove all it's instances from my scenes, I getting 2 warnings about Resaving my scene and check for any missing scripts or prefabs. There's no missing script or prefab. Why isn't Maintainer updating references track once something is removed from my project.
     
  12. codestage

    codestage

    Joined:
    Jul 27, 2012
    Posts:
    1,931
    Hey @umair21 ,

    1. Currently, this is expected behavior since Maintainer operates on the assets level and relies to the Unity's dependencies API, which in some cases will return references even if they are already does not exist until you re-import or resave related assets.

    Anyways I'll try reproducing your specific case and will see if something could be done here from my side, added this case to the internal bugtracker, thanks!

    2. Not sure I got it =\ Do you save made changes and on new Maintainer scan get those warnings from Maintainer? In any case, as I mentioned earlier, Maintainer relies to the AssetDatabase dependences and some references may still exist while actually nothing is referenced.
    You can check if your texture is referenced from any scenes in the AssetDatabase by right-clicking scene in project browser and selecting "Select Dependencies" and checking if that texture is get selected.
     
  13. umair21

    umair21

    Joined:
    Mar 4, 2016
    Posts:
    147
    Hi @codestage , is this possible for you to add a feature of Maintainer in which it could get reference changes on runtime? As far as I know, if we try to search for object whose references changes at runtime somehow, maintainer doesn't show those runtime reference changes e.g. if we add reference of one object from one script to another, we don't get that runtime reference in maintainer. Anything that you can do for this? Is this even possible?
     
  14. codestage

    codestage

    Joined:
    Jul 27, 2012
    Posts:
    1,931
    Hey @umair21 ,

    Maintainer does uses AssetDatabase to find cross-assets references.
    Currently it will not find assets which were referenced at runtime (e.g. from scripting) since there will be no such references in target scene or prefab on the AssetDatabase level.

    However, it will find any Hierarchy object references at Play Mode without problem, here, for example, "cam" field gets assigned at runtime but still gets found by Maintainer in Play Mode:
    upload_2021-5-30_19-9-31.png

    Code (CSharp):
    1. namespace CodeStage.Maintainer.Tests
    2. {
    3.     public class DynamicReference : MonoBehaviour
    4.     {
    5.         public Camera cam;
    6.  
    7.         private void Awake()
    8.         {
    9.             cam = Camera.main;
    10.         }
    11.     }
    12. }
     

    Attached Files:

  15. umair21

    umair21

    Joined:
    Mar 4, 2016
    Posts:
    147
    Yeah that's what I was facing problem with. I had 2 enemy characters in my scene which gets enable on start of that scene. One script named as StoryManager.cs finds these characters by FindObjectOfType method and assign them into a list of type Enemy. When I tried getting references of these enemies, maintainer only returned references from scripts that were already attached to those characters like Animator, Shooting scripts etc but it didn't show any reference from StoryManager script. As you tried with camera, same is the case with my enemies then how come your references are being shown and not mine?
     
  16. codestage

    codestage

    Joined:
    Jul 27, 2012
    Posts:
    1,931
    @umair21 I'm not sure why it does not work for you, maybe real example could help shed some light here.. also, just in case, of course reference should be serializable and visible in inspector since Maintainer checks serialized properties when looking for hierarchy references.
     
  17. codestage

    codestage

    Joined:
    Jul 27, 2012
    Posts:
    1,931
    Maintainer 1.10.2 is live now!

    While I'm working hard on new Anti-Cheat Toolkit upgrade, I'm releasing few tiny updates to Maintainer with important bugfixes.

    [1.10.2] - 2021-06-17

    Changed

    - Make References Finder take embedded packages into account (thx Mr. Pink)

    Fixed
    - Fix subfolders processing at References Finder

    [1.10.1] - 2021-06-16

    Changed
    - Switch from plain text changelog to markdown-driven format

    Fixed
    - Fix References Finder picked more source assets then looking in folders in some cases
    - Fix asset selection on reveal when using two-column Project Browser

    Thanks everyone who leaves reviews, reporting bugs and provides other feedback!

    Stay tuned fore more and feel free to join Discord server.
     
  18. codestage

    codestage

    Joined:
    Jul 27, 2012
    Posts:
    1,931
    Maintainer 1.11.0 is live now!

    This time, Issues Finder missing reference search got some love ^^

    [1.11.0] - 2021-06-23

    Added

    Issues Finder
    • improve generic missing references lookup in file assets
    • add MonoScript missing default properties lookup support
    • add Materials missing texture references lookup support (thx Makaka Games)
    Removed
    - Remove additional path restrictions when dropping assets to path filters

    Fixed
    - Issues Finder: fix minor UI issues
     
    makaka-org likes this.
  19. makaka-org

    makaka-org

    Joined:
    Dec 1, 2013
    Posts:
    1,023
    I've been using the Maintainer since 2016 year. It integrated into my work pipeline to catch Garbage & Missing Stuff at the stages when something doesn't work or before publishing Apps or Unity Assets.

    Highly Recommend.

    P.S. Support is very responsive. "Materials missing texture references lookup support" in the last release was added at my request. Thank you.
     
    codestage likes this.
  20. codestage

    codestage

    Joined:
    Jul 27, 2012
    Posts:
    1,931
    Maintainer 1.12.0 is live in the store!

    This time, few filtering UX improvements were made, see changelog for details:

    [1.12.0] - 2021-06-28

    Added
    • Project Cleaner:
    • Add new quick way to treat all scenes in project as used (thx Makaka Games) 2021-06-27_23-07-32.png
    • Add new context menu action for found unused scene assets to treat them as used 2021-06-27_23-07-48.png
    Changed
    • Improve errors reporting and exceptions handling
    • Project Cleaner: improve used scenes filtering UX
    Fixed
    • Issues Finder: fix minor issues at missing references algorithm

    Another good news: Maintainer is 50% off until Jul 6 and every sold copy will get upgrade to the Maintainer 2.0 for free!

    AS-SHSS-Week02-468x60-Display.jpg
     
    makaka-org likes this.
  21. umair21

    umair21

    Joined:
    Mar 4, 2016
    Posts:
    147
    Are we going to get Maintainer 2.0 as an upgrade? By WE I mean us who already purchased Maintainer?
     
  22. makaka-org

    makaka-org

    Joined:
    Dec 1, 2013
    Posts:
    1,023
    Oh! When you will release 2.0 and what will be here?
     
  23. codestage

    codestage

    Joined:
    Jul 27, 2012
    Posts:
    1,931
    This is to be announced but yes, Maintainer 2.0 will be released as a paid upgrade with good discount for all existing customers and 1-year free grace period.

    Currently there is no exact ETA but I hope to reach this point at the Q1'22 or earlier.

    Upgrade contents to be announced, stay tuned for more news (will post them here, in discord, twitter and facebook)!
     
    makaka-org likes this.
  24. codestage

    codestage

    Joined:
    Jul 27, 2012
    Posts:
    1,931
    Hey everyone,

    Just a small status update: I'm currently in the middle of prepping one of the last free maintenance 1.3.0 release and starting implementing new features for Maintainer v2 major upgrade.

    Today I'm excited to announce one of the upcoming features in Maintainer v2: extendable Issues Finder!

    upload_2021-9-17_19-45-59.png
    It's currently in WIP stage and APIs could change, screenshot was made just to demonstrate the concept.

    This will allow you to extend built-in detectors collection with your own issue detectors using flexible API framework.

    Maintainer v2 is going to get more exciting features across all modules and will get through the Beta Test with vouchers giveaway, stay tuned!
     
  25. pistoleta

    pistoleta

    Joined:
    Sep 14, 2017
    Posts:
    539
    Uhm! I have an own Validator that goes across all my prefabs and SO's to check if their binded objects are valid... I wonder if this system could replace my ugly script

    Looking forward to see it!
     
    codestage likes this.
  26. Xtro

    Xtro

    Joined:
    Apr 17, 2013
    Posts:
    608
    Maintainer is a LIFE SAVER. I use it with love and respect. I will buy V2 the first day it's released.

    Thank you for the great work.
     
    codestage likes this.
  27. codestage

    codestage

    Joined:
    Jul 27, 2012
    Posts:
    1,931
    Hey everyone, today is a news day!

    Maintainer 2 Major Upgrade WIP update

    Extendable Issues Finder is at the final internal testing phase: all cogs are running and whole module was switched to the new extendable architecture!

    upload_2021-9-30_12-0-2.png

    This also leads to the fully dynamic list of the detectors.

    For example, here is a Issue Detectors list built from both internal detectors which now do leverage new architecture and from one external detector:

    IssuesFinder_Steps_Bevel.png

    BTW did you spot new component issue?


    You'll be able to add your own detectors and they will appear there as well so you could easily enable or disable them.
    In order to add your own detector, you just derive from IssueDetector and implement one of the interfaces to specify when to trigger your detector. And that's all you need to do: it will be automatically integrated into the Issues Finder to appear at the detectors list.

    For example, here is a code for the "Custom problem" detector:
    Code (CSharp):
    1.  
    2. internal class ExternalIssueDetector : IssueDetector, IGameObjectBeginIssueDetector
    3. {
    4.     public override DetectorInfo Info { get { return
    5.         DetectorInfo.From(
    6.             IssueGroup.Other,
    7.             DetectorKind.Defect,
    8.             IssueSeverity.Warning,
    9.             "Custom problem (⌐■_■)",
    10.             "External issue detector example: checks 'ValidationTarget' Game Object hideFlags to be HideFlags.NotEditable.");
    11.     }}
    12.     public void GameObjectBegin(DetectorResults results, GameObjectLocation location)
    13.     {
    14.         if (location.GameObject.name != "ValidationTarget")
    15.             return;
    16.         if (location.GameObject.hideFlags == HideFlags.NotEditable)
    17.             return;
    18.         var issue = GameObjectIssueRecord.ForGameObject(this, IssueKind.Other, location);
    19.         issue.BodyPostfix = "Incorrect hideFlags: " + location.GameObject.hideFlags + " while " + HideFlags.NotEditable + " expected!";
    20.         results.Add(issue);
    21.     }
    22. }
    23.  
    Please note this example uses APIs which may change closer to the Maintainer 2 Beta launch, this is just to illustrate the concept.

    Maintainer 1.13.0

    This version is going to be released soonish (expecting to arrive next week), bringing few important fixes and improvements. Details will be posted as soon as update will hit the store.

    This will be last free update for the Maintainer (could be followed by few minor bugfix patches).
    I'm going to deprecate Maintainer v1 as soon as v2 will get out but it's going to be stable and will support Unity versions up to 2022.1 thus you'll be safe for some time with it if you'll decide to stay on that version.
     
    Last edited: Sep 30, 2021
  28. Xtro

    Xtro

    Joined:
    Apr 17, 2013
    Posts:
    608
    :clap: :clap: :clap:
     
  29. codestage

    codestage

    Joined:
    Jul 27, 2012
    Posts:
    1,931
    Hey everyone,

    Glad to let you know Maintainer 1.13.0 is out now at the Asset Store!
    This update brings a plenty of fixes and improvements across all modules, here are some highlights:

    Add Filters count to the filtering tabs titles

    2021-09-15_13-49-50.png

    It's now easier to quickly spot which filters are set.

    Add automatic IDependenciesParser implementations integration in Unity 2019.2+

    It's now easier to integrate your own Dependencies Parsers: Maintainer will automatically find and register your extensions, all you need to do is just inherit from Dependencies Parser base class or implement IDependenciesParser and you're good to go. Here is a simple example:

    Code (CSharp):
    1. namespace Tests.Extension
    2. {
    3.     using CodeStage.Maintainer.Core.Dependencies;
    4.     using System.IO;
    5.     using UnityEngine;
    6.  
    7.     public class ExternalDependencyParser : DependenciesParser
    8.     {
    9.         public override Type Type { get { return typeof(CustomAssetType); } }
    10.  
    11.         public override IList<string> GetDependenciesGUIDs(AssetInfo asset)
    12.         {
    13.             var referencePath = Path.ChangeExtension(asset.Path, "mat");
    14.             var referenceGuid = AssetDatabase.AssetPathToGUID(referencePath);
    15.  
    16.             if (!string.IsNullOrEmpty(referenceGuid))
    17.                 return new []{referenceGuid};
    18.            
    19.             Debug.LogError("Couldn't find reference from ExternalDependencyParser!");
    20.             return null;
    21.         }
    22.     }
    23.    
    24.     [CreateAssetMenu(fileName = "CustomAsset", menuName = "CustomAsset", order = 1)]
    25.     public class CustomAssetType : ScriptableObject
    26.     {
    27.        
    28.     }
    29. }
    Custom Dependencies Parsers are helpful in case you're having specific dependencies which are not tracked by AssetDatabase.GetDependencies() (i.e. if you're using indirect scripted dependencies) but you still would like to track them in References Finder and take them into account at the Project Cleaner modules.

    Improvements to the Issues search in opened scenes

    2021-09-13_20-21-47.png

    2021-09-14_12-31-12.png

    Now it's easier to quickly check opened scenes for issues.
    Also it's now also possible to look for issues at the unsaved Untitled scene without save prompt.

    Improve Project Cleaner ignores context menu UX

    2021-09-13_19-35-00.png

    Now it's easier to ignore topmost Assets/* folder of any found asset.

    Other highlights

    There are lots of other fixes and improvements here and there, read full release notes below to know more about all other changes in this update.

    And stay tuned for the news about upcoming Maintainer 2: I'll keep posting WIP highlights and will start a Beta Test with voucher sweepstakes closer to the release!

    [1.13.0] - 2021-10-04

    Added
    • Add automatic IDependenciesParser implementations integration in Unity 2019.2+
    • Add Filters count to the filtering tabs titles
    • Add Tools > Code Stage > Maintainer > Find Issues In Opened Scenes along with new StartSearchInOpenedScenes API
    • Add Game Object > Maintainer > Find Issues In Opened Scenes menu
    • Add MaintainerExtension base class for extensions
    • Add DependenciesParser base class for dependency parsing extensions
    • Add items count to the Issues Finder and Project Cleaner reports
    • Add new support contact, let's chat at Discord!
    Changed
    • Improve Project Cleaner ignores context menu UX
    • Allow searching issues at the unsaved Untitled scene
    • Previous search results do not clear up anymore if new search was cancelled
    • Improve Unity 2022.1 compatibility
    • Make AssetInfo class public
    • Change IDependenciesParser.GetDependenciesGUIDs signature to allow more flexibility:
      • accept AssetInfo instance
      • return IList
    • Utilize IDependenciesParser for settings dependencies processing
    Deprecated
    • Starting from Unity 2019.2+, deprecate redundant AssetDependenciesSearcher.AddExternalDependenciesParsers API
    • Deprecate legacy .NET 3.5 (to be removed in next major upgrade in favor of newer .NET version)
    Fixed
    • Issues Finder:
      • Fix some Game Objects still could be analyzed with Game Objects option disabled
      • Fix missing components reveal didn't properly fold inspectors
      • Fix Game Object context menus were active for non-GameObject selection
      • Fix checking scenes and Game Objects with disabled corresponding options regression
      • Fix rare case with duplicate issues in prefab variants without overrides
    • References Finder:
      • Fix search terms were not reset after Unity restart causing a confusion
      • Fix rendering settings path in Exact References at Unity 2020.1+
    • Fix possibility of rare filtering issues when having "Assets" in the project path
    • Fix fallback fonts were not tracked properly leading to inclusion at the Project Cleaner
    • Fix reveal in Prefab Variants didn't set proper Selection
    • Fix window notification could not show up after window activation
    • Fix minor UI issues
    • Fix other minor issues
     
    tosiabunio likes this.
  30. zKici

    zKici

    Joined:
    Feb 12, 2014
    Posts:
    438
    Thanks for your amazing assets!

    Can we make these options possible?

    Project cleaner, filter displayed page(s) by type example: *.png
    Multi Selection, example Select #7, (hold shift) select #30, selects from #7 to 30#
     
  31. codestage

    codestage

    Joined:
    Jul 27, 2012
    Posts:
    1,931
    Hey,

    Yes this is something I have planned - both better results filtering and multi-selection are going to appear once Project Cleaner and Issues Finder will migrate to the TreeViews. No ETAs for this yet though as I'm working on a few other high demand features which are going to see the light first.
     
  32. zKici

    zKici

    Joined:
    Feb 12, 2014
    Posts:
    438
    Ooh sweet, what are those other high demands features?

    And what is TreeViews?
     
  33. codestage

    codestage

    Joined:
    Jul 27, 2012
    Posts:
    1,931
    Currently it's an expandable architecture for the Issues Finder extension what's on the table.

    That's UI component used in References Finder and which I'm going to start using in other modules as well.
     
  34. TonismoGames

    TonismoGames

    Joined:
    Jun 12, 2018
    Posts:
    111
    Hi, I an running into this issue on the latest version using Unity 2019.4.37
    while trying to use Issue Finder
    [Maintainer] Issues Finder: something went wrong :(
    System.NullReferenceException: Object reference not set to an instance of an object
    at CodeStage.Maintainer.Issues.Detectors.MissingReferenceDetector.GetDummyEvent (UnityEditor.SerializedProperty prop) [0x0000f] in C:\Users\ATN\Desktop\Unity Projects\Project 5.5\Rice Burner\Assets\Plugins\CodeStage\Maintainer\Editor\Modules\RecordsBased\Issues\Detectors\MissingReferenceDetector.cs:222
    at CodeStage.Maintainer.Issues.Detectors.MissingReferenceDetector.TryDetectUnityEventIssues (CodeStage.Maintainer.RecordLocation location, System.String assetPath, UnityEngine.GameObject target, System.Type componentType, System.String componentName, System.Int32 orderIndex, UnityEditor.SerializedProperty property) [0x00234] in C:\Users\ATN\Desktop\Unity Projects\Project 5.5\Rice Burner\Assets\Plugins\CodeStage\Maintainer\Editor\Modules\RecordsBased\Issues\Detectors\MissingReferenceDetector.cs:151
    at CodeStage.Maintainer.Issues.IssuesDetector+<>c__DisplayClass19_0.<ProcessComponent>b__0 (CodeStage.Maintainer.Tools.SerializedObjectTraverseInfo info, UnityEditor.SerializedProperty property) [0x00016] in C:\Users\ATN\Desktop\Unity Projects\Project 5.5\Rice Burner\Assets\Plugins\CodeStage\Maintainer\Editor\Modules\RecordsBased\Issues\IssuesDetector.cs:199
    at CodeStage.Maintainer.Tools.CSTraverseTools.TraverseObjectProperties (CodeStage.Maintainer.Tools.SerializedObjectTraverseInfo traverseInfo, CodeStage.Maintainer.Tools.CSTraverseTools+SerializableObjectTraverseCallback callback) [0x00046] in C:\Users\ATN\Desktop\Unity Projects\Project 5.5\Rice Burner\Assets\Plugins\CodeStage\Maintainer\Editor\Tools\CSTraverseTools.cs:262
    at CodeStage.Maintainer.Issues.IssuesDetector.ProcessComponent (UnityEngine.Component component, System.Int32 orderIndex) [0x0015b] in C:\Users\ATN\Desktop\Unity Projects\Project 5.5\Rice Burner\Assets\Plugins\CodeStage\Maintainer\Editor\Modules\RecordsBased\Issues\IssuesDetector.cs:195
    at CodeStage.Maintainer.Issues.Routines.TargetProcessor.OnComponentTraverse (CodeStage.Maintainer.Tools.ObjectTraverseInfo objectInfo, UnityEngine.Component component, System.Int32 orderIndex) [0x00001] in C:\Users\ATN\Desktop\Unity Projects\Project 5.5\Rice Burner\Assets\Plugins\CodeStage\Maintainer\Editor\Modules\RecordsBased\Issues\Routines\TargetProcessor.cs:231
    at CodeStage.Maintainer.Tools.CSTraverseTools.TraverseGameObjectComponents (CodeStage.Maintainer.Tools.ObjectTraverseInfo traverseInfo, CodeStage.Maintainer.Tools.CSTraverseTools+ComponentTraverseCallback callback) [0x000b4] in C:\Users\ATN\Desktop\Unity Projects\Project 5.5\Rice Burner\Assets\Plugins\CodeStage\Maintainer\Editor\Tools\CSTraverseTools.cs:229
    at CodeStage.Maintainer.Issues.Routines.TargetProcessor.OnGameObjectTraverse (CodeStage.Maintainer.Tools.ObjectTraverseInfo objectInfo) [0x00079] in C:\Users\ATN\Desktop\Unity Projects\Project 5.5\Rice Burner\Assets\Plugins\CodeStage\Maintainer\Editor\Modules\RecordsBased\Issues\Routines\TargetProcessor.cs:197
    at CodeStage.Maintainer.Tools.CSTraverseTools.TraverseGameObjectTree (CodeStage.Maintainer.Tools.ObjectTraverseInfo traverseInfo, CodeStage.Maintainer.Tools.CSTraverseTools+GameObjectTraverseCallback callback) [0x0009a] in C:\Users\ATN\Desktop\Unity Projects\Project 5.5\Rice Burner\Assets\Plugins\CodeStage\Maintainer\Editor\Tools\CSTraverseTools.cs:150
    at CodeStage.Maintainer.Tools.CSTraverseTools.TraverseGameObjectTree (CodeStage.Maintainer.Tools.ObjectTraverseInfo traverseInfo, CodeStage.Maintainer.Tools.CSTraverseTools+GameObjectTraverseCallback callback) [0x0011d] in C:\Users\ATN\Desktop\Unity Projects\Project 5.5\Rice Burner\Assets\Plugins\CodeStage\Maintainer\Editor\Tools\CSTraverseTools.cs:175
    at CodeStage.Maintainer.Tools.CSTraverseTools.TraverseGameObjectTree (CodeStage.Maintainer.Tools.ObjectTraverseInfo traverseInfo, CodeStage.Maintainer.Tools.CSTraverseTools+GameObjectTraverseCallback callback) [0x0011d] in C:\Users\ATN\Desktop\Unity Projects\Project 5.5\Rice Burner\Assets\Plugins\CodeStage\Maintainer\Editor\Tools\CSTraverseTools.cs:175
    at CodeStage.Maintainer.Tools.CSTraverseTools.TraverseSceneGameObjects (UnityEngine.SceneManagement.Scene scene, System.Boolean skipCleanPrefabInstances, CodeStage.Maintainer.Tools.CSTraverseTools+GameObjectTraverseCallback callback) [0x0002e] in C:\Users\ATN\Desktop\Unity Projects\Project 5.5\Rice Burner\Assets\Plugins\CodeStage\Maintainer\Editor\Tools\CSTraverseTools.cs:96
    at CodeStage.Maintainer.Issues.Routines.TargetProcessor.ProcessScene (CodeStage.Maintainer.Core.AssetInfo asset, System.String assetName, System.Int32 sceneIndex, System.Int32 totalScenes) [0x00073] in C:\Users\ATN\Desktop\Unity Projects\Project 5.5\Rice Burner\Assets\Plugins\CodeStage\Maintainer\Editor\Modules\RecordsBased\Issues\Routines\TargetProcessor.cs:122
    at CodeStage.Maintainer.Issues.Routines.TargetProcessor.ProcessAssetTargets (System.Collections.Generic.List`1[T] targetAssets, CodeStage.Maintainer.Issues.Routines.TargetProcessor+ProcessAssetCallback callback, CodeStage.Maintainer.Issues.Routines.TargetProcessor+Phase phase, System.String progressAssetLabel) [0x0008b] in C:\Users\ATN\Desktop\Unity Projects\Project 5.5\Rice Burner\Assets\Plugins\CodeStage\Maintainer\Editor\Modules\RecordsBased\Issues\Routines\TargetProcessor.cs:99
    at CodeStage.Maintainer.Issues.Routines.TargetProcessor.ProcessTargetAssets (CodeStage.Maintainer.Core.AssetInfo[] targetAssets) [0x0008d] in C:\Users\ATN\Desktop\Unity Projects\Project 5.5\Rice Burner\Assets\Plugins\CodeStage\Maintainer\Editor\Modules\RecordsBased\Issues\Routines\TargetProcessor.cs:69
    at CodeStage.Maintainer.Issues.IssuesFinder.StartSearch (System.Boolean showResults) [0x000c8] in C:\Users\ATN\Desktop\Unity Projects\Project 5.5\Rice Burner\Assets\Plugins\CodeStage\Maintainer\Editor\Modules\RecordsBased\Issues\IssuesFinder.cs:92
    UnityEngine.Debug:LogError (object)
    CodeStage.Maintainer.Issues.IssuesFinder:StartSearch (bool) (at Assets/Plugins/CodeStage/Maintainer/Editor/Modules/RecordsBased/Issues/IssuesFinder.cs:118)
    CodeStage.Maintainer.UI.IssuesTab:StartSearch () (at Assets/Plugins/CodeStage/Maintainer/Editor/UI/Tabs/IssuesFinder/IssuesTab.cs:200)
    UnityEditor.EditorApplication:Internal_CallDelayFunctions ()
     
  35. codestage

    codestage

    Joined:
    Jul 27, 2012
    Posts:
    1,931
    Hi!

    Thank you for reporting this exception, could you please let me know if it does reproduce for you at the latest Maintainer version?
     
  36. TonismoGames

    TonismoGames

    Joined:
    Jun 12, 2018
    Posts:
    111
    Its fixed thank you!It was a unity bug. I had to go into the packages folder and delete all Maintainer.unitypackage files then redownload the asset.
     
    codestage likes this.
  37. codestage

    codestage

    Joined:
    Jul 27, 2012
    Posts:
    1,931
    Glad it sorted out, thank you for letting me know.

    I hope they will fix this old version caching bug finally someday!
     
  38. CDF

    CDF

    Joined:
    Sep 14, 2013
    Posts:
    1,311
    FYI, got a null reference exception using Maintainer and Photon Fusion.
    Fusion has some files that have no asset importer. So ProjectCleaner.AssetInIgnores can fail here:
    Code (CSharp):
    1.  
    2. if (assetInfo.Type == CSReflectionTools.defaultAssetType)
    3. {
    4.     var importer = AssetImporter.GetAtPath(assetInfo.Path);
    5.     if (importer is PluginImporter) return true;
    6.     if (importer.ToString() == " (UnityEngine.DefaultImporter)") return true; //null ref if importer is undefined
    7. }
    8.  
    Fixed:
    Code (CSharp):
    1. if (assetInfo.Type == CSReflectionTools.defaultAssetType)
    2. {
    3.     var importer = AssetImporter.GetAtPath(assetInfo.Path);
    4.     if (importer is PluginImporter) return true;
    5.     if (importer == null || importer.ToString() == " (UnityEngine.DefaultImporter)") return true;
    6. }
     
    codestage likes this.
  39. CDF

    CDF

    Joined:
    Sep 14, 2013
    Posts:
    1,311
    Should maintainer be able to find Addressable references when the reference is property override on a prefab variant?
    I'm not getting accurate results when searching for a specific asset that is referenced via Addressables.

    This is an animator controller that is marked as Addressable, it's guid is:
    asset_ref.png

    Here is a prefab variant that references the controller:
    asset_ref_on_prefab.png

    Here's the results in Maintainer:
    maintainer.png

    It can only find the Addressable group that contains the controller, and not the prefab that actually references it.

    This seems like a limitation on prefab variants with modifications.
    As some direct references on base prefabs do find Addressable references.

    Searching the project in vs-code correctly finds 2 references:
    vs_code_search.png
     
  40. codestage

    codestage

    Joined:
    Jul 27, 2012
    Posts:
    1,931
    Thanks for reporting it and even providing a fix. Added it to the next bugfixing update.

    I'll investigate this, thanks for reporting it as well.
     
  41. codestage

    codestage

    Joined:
    Jul 27, 2012
    Posts:
    1,931
    I've tried reproducing it using latest Mataintainer 1.16.0, but had no luck, unfortunately.

    Could you please try the following:
    1. Make sure you're using the latest Maintainer version.
    2. Remove the Assets Map (Open Maintainer's About tab, press the CTRL+D, press the Remove Assets Map button).
    3. Try reproducing the problem.

    If it will still persist, I'd appreciate if you'd share exact steps to reproduce it at the new project or send part of your project where this issue does reproduce.
     
  42. CDF

    CDF

    Joined:
    Sep 14, 2013
    Posts:
    1,311
    I'm using 1.16.0. Deleting the assets map did not fix.

    I should also mention, the prefab that points to the Addressable reference lives in a scene that is also Addressable.
    Will try getting a small reproduction up soon
     
    codestage likes this.
  43. codestage

    codestage

    Joined:
    Jul 27, 2012
    Posts:
    1,931
    Just to follow up on this, I did try to include this into the repro and still couldn't see the issue reported in my project =\
    Actually being addressable shouldn't affect how references finder tracks references, so I believe it should repro for you even if you remove addressables package from the project.
     
  44. CDF

    CDF

    Joined:
    Sep 14, 2013
    Posts:
    1,311
    I haven't forgotten about this. But I'm super busy with work. I will try getting a repro up though
     
    codestage likes this.
  45. vladimir_game-pie

    vladimir_game-pie

    Joined:
    Jul 15, 2021
    Posts:
    1
    Hello @codestage

    Nice tool. Does it looks for links in Addressable AssetReference?

    Code (CSharp):
    1. public class AssetSpawner : MonoBehaviour
    2.     {
    3.         [SerializeField]
    4.         private AssetReference _asset;
    5.         private async void Awake()
    6.         {
    7.             var gameObj = await _asset.InstantiateAsync(transform);
    8.             gameObj.transform.localPosition = Vector3.zero;
    9.             gameObj.transform.localRotation = Quaternion.identity;
    10.         }
    11.     }
    upload_2023-1-26_11-10-42.png
     
  46. codestage

    codestage

    Joined:
    Jul 27, 2012
    Posts:
    1,931
    Hi Vladimir,

    This is not supported yet but currently in the works and being investigated, will keep you updated once I'll have anything to share!
     
  47. CDF

    CDF

    Joined:
    Sep 14, 2013
    Posts:
    1,311
    Hey, will Maintainer be able to search for references to sub assets anytime soon?

    maintainer.png

    The option is greyed out.
    And searching the parent doesn't include sub assets.

    This leads to inaccurate usages of assets
     
  48. codestage

    codestage

    Joined:
    Jul 27, 2012
    Posts:
    1,931
    Hey, noted this feature for the v2 which is in the works, please stay tuned for the updates!
     
    CDF likes this.