DependencyViewer

Plugins DependencyViewer

DemonLord

Well-known member
Messages
51
Reactions
610
Points
83
DemonLord submitted a new resource:

DependencyViewer - Trace all of that trash dependencies!

DependencyViewer is a script for finding all depencencies in scene and their sub depencencies.

You can scan current scene or select VAM preset / json file.
Select dependency from list of root dependencies, and look each case of its usage.
To remove sub dependency you need to remove their root dependency, because only it appears in scene.

Script traces each occurrence of ":/" string in json code.

Main tab has root dependencies, and generate their sub dependencies iteratively...

Read more about this resource...
 
@DemonLord for some reason when i try to load my json file, nothing loaded, it's blank
It's can be: meta.json (working on it for download button reason), or maybe old version file, or some special case I don't know about.
Can you send me that file to check? And the name of .var package (if its from package).
 
Last edited:
Hey, great plugin.
Could you add a feature to blacklist certain packages from showing up in the downloader or being downloaded by the download all button? Some packages, which aren't necessary to run dependent scenes, I don't want to download ever. A toggle to exclude older versions of existing packages would be great, too.

In return, I could offer code reviews and/or to refactor your quote big, messy, hard to understand unquote code. ;)

Cheers
 
Last edited:
Hey, great plugin.
Could you add a feature to blacklist certain packages from showing up in the downloader or being downloaded by the download all button? Some packages, which aren't necessary to run dependent scenes, I don't want to download ever. A toggle to exclude older versions of existing packages would be great, too.

In return, I could offer code reviews and/or to refactor your quote big, messy, hard to understand unquote code. ;)

Cheers
1. About packages blacklist, it's not that hard to do, but is it that necessary? I almost newer use the download all button, just download any required package depend on it's file side, not to be large, under 10Mb or 100Mb, hate that 500Mb things. Filtering to not show a name in download, from some file is easy, but to add names in that file is a problem, creating UI for this isn't cost it.
2. What do you mean by exclude older versions? When creating package, default option for dependency package version is "latest" and "exact" for scripts, because new versions of scripts loaded in old scene may brake it. So I want to be able download exact old version if its necessary from meta.json file.

Reviewing code by someone isn't necessary, this code will end up like this, because it's totally fulfill the reasons why its created. And I'm not a real programmer. For me it's just a step to create Paid scenes for VAM in future.
 

Attachments

  • изображение_2024-01-17_134028655.png
    изображение_2024-01-17_134028655.png
    93.3 KB · Views: 0
1. About packages blacklist, it's not that hard to do, but is it that necessary? I almost newer use the download all button, just download any required package depend on it's file side, not to be large, under 10Mb or 100Mb, hate that 500Mb things. Filtering to not show a name in download, from some file is easy, but to add names in that file is a problem, creating UI for this isn't cost it.
2. What do you mean by exclude older versions? When creating package, default option for dependency package version is "latest" and "exact" for scripts, because new versions of scripts loaded in old scene may brake it. So I want to be able download exact old version if its necessary from meta.json file.

Reviewing code by someone isn't necessary, this code will end up like this, because it's totally fulfill the reasons why its created. And I'm not a real programmer. For me it's just a step to create Paid scenes for VAM in future.
I'd like to be able to use the download all button but I can't because it'll download packages I don't want. It's mostly the same packages over and over so a black list would be helpful. You're right that adding a check box is easy. Persistence for the black list could just be some [package name].blacklist files under /Saves/PluginData or a proper json file.
There are a lot of scenes that depend on old versions of plugins, which would work totally fine with the most recent ones. In these cases a "don't look for older versions of package X" toggle would be great.

I'm not a real programmer. For me it's just a step to create Paid scenes for VAM in future.
That's why I'm offering a professional once-over. It's a useful plugin but maintainability could be improved.
 
I'd like to be able to use the download all button but I can't because it'll download packages I don't want. It's mostly the same packages over and over so a black list would be helpful. You're right that adding a check box is easy. Persistence for the black list could just be some [package name].blacklist files under /Saves/PluginData or a proper json file.
There are a lot of scenes that depend on old versions of plugins, which would work totally fine with the most recent ones. In these cases a "don't look for older versions of package X" toggle would be great.


That's why I'm offering a professional once-over. It's a useful plugin but maintainability could be improved.
I mean UI is a problem, even for toggle. To add name filtering from blacklist is like 3 hours of work, but add toggle (looks like two of them) per each download item is like 20hours.
And my script require main package downloaded, you will spend more time to get it from hub, open in my plugin and press download all, then just manually select each dependency download at that hub page.
Maintainability isn't really required in this case.
 
I mean UI is a problem, even for toggle. To add name filtering from blacklist is like 3 hours of work, but add toggle (looks like two of them) per each download item is like 20hours.
And my script require main package downloaded, you will spend more time to get it from hub, open in my plugin and press download all, then just manually select each dependency download at that hub page.
Maintainability isn't really required in this case.
It's more useful for paid scenes that don't have a hub page to download dependencies from (within vam). You can either look each dependency up manually or load the scene and look at the package viewer, which is a pain.
 
DemonLord updated DependencyViewer with a new update entry:

Update 2.1

- On download page, sub dependencies are now "shifted" (if they are not required for current scan).
- Added coloring for "Id category" sclera, irises, lacrimals, teeth, tongue, mouth, FemaleEyelashes, MaleEyelashes with same color as "textures", or if it has "Materia" name in it (for coloring materials from Clothing or Hair items if they have a textures from another package).
- Fixed "Download All", it was stuck if there were packages on the list that were not found on hub.

Read the rest of this update entry...
 
I keep getting input string is not in correct format. Am I doing something wrong?
 
I keep getting input string is not in correct format. Am I doing something wrong?
This may be some special case or you trying to open the wrong file.
I need to test in myself, can you say what that file is? what package? so I can download and test it.
 
This may be some special case or you trying to open the wrong file.
I need to test in myself, can you say what that file is? what package? so I can download and test it.
It’s my own scene, and it admittedly has quite a lot of stuff XD Does your plugin need for it to been a .var to work? As mine isn’t in that form. I’ve just been working on it in the creator, and saving it every now and then. It will show me the download dependencies, but nothing else. I can't see the All Dependencies tab, or any other besides Start info.

Or actually, does missing dependencies cause an issue? As I changed something in timeline, that references something else and had yet to fix it. Would that cause an issue?
 
@JC318 When you press "Check Current Scene", it crashes? what it say in "Error Log"? Can you copy the text or send the screenshot?
1712704946418.png
 
@JC318 When you press "Check Current Scene", it crashes? what it say in "Error Log"? Can you copy the text or send the screenshot?
View attachment 354194
No, it doesn't crash. And nothing appears in the error log, just the message log:

DrawUI System.FormatException: Input string was not in the correct format
at System.Int32.Parse (System.String s) [0x00000] in <filename unknown>:0
at DLPlugin.DependencyViewer.AddDep (SimpleJSON.JSONClass js, System.String pref) [0x00000] in <filename unknown>:0
at DLPlugin.DependencyViewer.DrawUI () [0x00000] in <filename unknown>:0

Appears every time I hit Check Current Scene or Rescan. Thus based on this, I assumed it needed to be a .var first.
 
No, it doesn't crash. And nothing appears in the error log, just the message log:

DrawUI System.FormatException: Input string was not in the correct format
at System.Int32.Parse (System.String s) [0x00000] in <filename unknown>:0
at DLPlugin.DependencyViewer.AddDep (SimpleJSON.JSONClass js, System.String pref) [0x00000] in <filename unknown>:0
at DLPlugin.DependencyViewer.DrawUI () [0x00000] in <filename unknown>:0

Appears every time I hit Check Current Scene or Rescan. Thus based on this, I assumed it needed to be a .var first.
Put file some where in Custom/Scripts, then find and open it as a plugin.
It must write another message, like "AddDep: package name has wrong version format: ....." give me what it says.
 

Attachments

  • DependencyViewer.cs
    66.5 KB · Views: 0
Last edited:
Put file some where in Custom/Scripts, then find and open it as a plugin.
It must write another message, like "AddDep: package name has wrong version format: ....." give me what it says.
Do I need to unpack the file first? I tried moving it there, and it didn't appear when trying to open it.
 
Do I need to unpack the file first? I tried moving it there, and it didn't appear when trying to open it.
There is nothing to unpack, it is a text file, if the path like this \Custom\Scripts\DependencyViewer.cs , than in game just open it there. New plugin -> Select file -> "Custom\Scripts" shortcut on the left -> and select file. It must be there, you don't even need to restart the game or something
 
There is nothing to unpack, it is a text file, if the path like this \Custom\Scripts\DependencyViewer.cs , than in game just open it there. New plugin -> Select file -> "Custom\Scripts" shortcut on the left -> and select file. It must be there, you don't even need to restart the game or something
Ohhhhh, I missed your attachment. I thought you meant the .var. Sorry about that. And that actually worked! Everything is fine doing it like this! Not sure what the issue is with the .var file then.
 
Ohhhhh, I missed your attachment. I thought you meant the .var. Sorry about that. And that actually worked! Everything is fine doing it like this! Not sure what the issue is with the .var file then.
I tried bypass the problem, it looks like one of your packages has wrong name pattern, it must be "AuthorName.PackageName.VersionNumber.var"
Is it send message now? what plugin says?

Later I will pack this fix, and upload the package update
 
DemonLord updated DependencyViewer with a new update entry:

Update 2.2

- Fix for "DrawUI System.FormatException: Input string was not in the correct format". Plugin was stuck if it finds a package with wrong name pattern, in must be "AuthorName.PackageName.VersionNumber.var", and the version number was in wrong format. Now it will skip this file while scan.

Read the rest of this update entry...
 
When using the "Check Current Scene" button, nothing happens unless line 719 is changed...

Code:
                foreach (string key in js.Keys)
                {
-                    if (js[key].Value != string.Empty)
+                    if (js[key] != null && js[key].Value != string.Empty)

Not sure why I am the only one with this problem.
 
DemonLord updated DependencyViewer with a new update entry:

Update 2.3

- Fix for wrong named package. (Trigger actions has names, and they add things like "A_faceDiffuseUrl:" or "A_clothing:" with name of package, and my plugin tries to find a package with that thing in front as a full name. It was end up like this "[MISSING][NOTFOUND]A_faceDiffuseUrl:Author.PackageName.1" )

Read the rest of this update entry...
 
Thank you for picking this up. I have not had time recently to update Var Inspector, so I'm glad someone is giving it a shot. Great idea to make it an in-game plugin. 💕
 
Back
Top Bottom