• Hi Guest!

    We are extremely excited to announce the release of our first Beta for VaM2, the next generation of Virt-A-Mate which is currently in development.
    To participate in the Beta, a subscription to the Entertainer or Creator Tier is required. Once subscribed, download instructions can be found here.

    Click here for information and guides regarding the VaM2 beta. Join our Discord server for more announcements and community discussion about VaM2.
PluginReloader

Plugins + Scripts PluginReloader

Download [0.01 MB]
Thank you so much for making this. Was thinking lately I wanted a solution for exactly this problem.

If I had one request it would be to make it optionally work for scene plugins as well, as I constantly have to reload one of the plugins there and one button for both that and plugins on atoms would be wonderful.
 
Thank you so much for making this. Was thinking lately I wanted a solution for exactly this problem.

If I had one request it would be to make it optionally work for scene plugins as well, as I constantly have to reload one of the plugins there and one button for both that and plugins on atoms would be wonderful.

Thank you! You can reload Scene Plugins with the following:

Select Atom: Core Control
Select Plugin: plugin name
 
I tried using it on awas autojuice plugin https://hub.virtamate.com/resources/autojuice.37541/ and it didn't reload the plugin as it should also reload the cum clothings

Thanks for reporting this. I did some tests yesterday and what I can tell is PluginReloader is reloading the Awas AutoJuice plugin to the last state, as on my testing it clears off some of the AutoJuice when I click a bunch of the buttons and then click Reload Plugin. But as you reported, it's not fully reloading values because the plugin has a more complex on load process. From my testing, there does not seem to be a direct/easy fix to this one.

I am working on an update to PluginReloader that may serve as a workaround for issues like this.
 
Last edited:
VamEssentials updated PluginReloader with a new update entry:

Version 2 Update

🛠 PluginReloader v2 Update​

Added: HotKey Option

You can now use a HotKey to trigger your Reload Plugin. It defaults to the F5 key which is commonly used or known as a refresh key but can be changed to another HotKey that you prefer.

Added: Delay Trigger Options

When you reload a plugin, you can now add back your setting preferences via delayed triggers...

Read the rest of this update entry...
 
Thanks for reporting this. I did some tests yesterday and what I can tell is PluginReloader is reloading the Awas AutoJuice plugin to the last state, as on my testing it clears off some of the AutoJuice when I click a bunch of the buttons and then click Reload Plugin. But as you reported, it's not fully reloading values because the plugin has a more complex on load process. From my testing, there does not seem to be a direct/easy fix to this one.

I am working on an update to PluginReloader that may serve as a workaround for issues like this.
Would you mind testing with Skynet's AutoGape on a person atom, and also Divining Lips as a scene plugin? I tried two instances of Plugin Reloader to reload these two but neither one reloaded in my case. With either of these plugins, the morphs they animate can get "stuck" not animating, and attempting to reload them using your plugin did not make them "unstuck", while navigating to those plugins directly and pressing the native reload, did.
Appreciate the help
 
Would you mind testing with Skynet's AutoGape on a person atom, and also Divining Lips as a scene plugin? I tried two instances of Plugin Reloader to reload these two but neither one reloaded in my case. With either of these plugins, the morphs they animate can get "stuck" not animating, and attempting to reload them using your plugin did not make them "unstuck", while navigating to those plugins directly and pressing the native reload, did.
Appreciate the help

The way this reloads plugins is with the related code: atom.RestoreFromLast(plugin);

I did a lot of research and testing to try to find other alternative code options, and was not able to locate any related to a general Reload or an OnClick type Reload. I don't believe there are any other options available, documented as working, or possible unfortunately.

If @VaMDeV, @MacGruber or @Acid Bubbles maybe know of a better solution, I could update the plugin but from what I researched I did not see another way unfortunately available for scene plugins like this to reload other plugins.

So as of right now it looks to be a limitation of what is possible.

As of right now it seems for more complex plugins, the workaround is to use the delayed triggers to manually fix/reset any issues after. Or you may need to reach out to the developer of that plugin to report it and see if they can possibly add a built in Reload or Reset trigger option.
 
maybe know of a better solution
Well....the obvious way would be to fix the original plugin so it does not become stuck and therefore does not need to be reloaded. A normal user never should have to reload plugins.

That said, AFAIK the most reliable way to fake a plugin reload was to literally fake a click on the reload button in VaM's UI. So, find the GameObject of that button...and the Button component on it. Find the callback....and call it.

This should to the trick once you found the button in the UI:
C#:
reloadButtonGameObject.GetComponent<Button>().onClick.Invoke();
 
"A normal user..."

Oh those plugins likely don't require reloading, on their own, for normal users. I'm assuming the occasional trouble I'm having with them to be my own fault as I have a lot of plugins running--some maybe conflicting with each other. :)
 
@VamEssentials this is an awesome idea!
I would also love a simular Plugin that allows you to save/load plugin presets for any plugin.
Essentially adding the save/load preset functionality to plugins that don't support that.
Ideally this would be used if you want to preserve the plugin# and not break existing triggers.
 
Thanks for the update, VamEssentials! This is now working perfectly.
Cheers
 
This doesn't seem to work for me.
I am trying to use it, for example to reload / reset DiviningRod parameters (or other plugin parameters) on a person.
None of the parameters are being reset.
 
This doesn't seem to work for me.
I am trying to use it, for example to reload / reset DiviningRod parameters (or other plugin parameters) on a person.
None of the parameters are being reset.
Never mind! I guess I didn't understand what reloading meant for this plugin. For my use case I can just use the RestoreFromDefaults trigger.
 
Hi VamEssentials, I have just tried your plugin in a particular case where I have active one .cslist plugin (RunRudolf.RealisticForeskin&Erection) plus the Stopper.AlternativeFuta plugin. I want to reload Stopper.AlterantiveFuta. However, if I select Stopper.AlternativeFuta in the dropdown and hit "Reload", it removes the RealisticForeskin&Erection plugin and throws the following error:

!> Plugin inside a package VamEssentials.PluginReloader.3:/Custom/Scripts/VamEssentials/PluginReloader/PluginReloader.cslist tried to load another plugin from outside of a package at path Custom\Scripts\RunRudolf\RealisticForeskin&Erection\Plugins\RunRudolf_ControlCenter.cs which is no longer allowed

The error is probably because I had my RealisticForeskin&Erection plugin loaded from the /Custom/Script folder, not from the .var. That is OK, but I find it strange that it does anything with this plugin at all, as it should reload Stopper.AtlernativeFuta only? Does that mean your "Reload" will not specifically reload one selected plugin, but all plugins that are active at this point in time?
 
Hi VamEssentials, I have just tried your plugin in a particular case where I have active one .cslist plugin (RunRudolf.RealisticForeskin&Erection) plus the Stopper.AlternativeFuta plugin. I want to reload Stopper.AlterantiveFuta. However, if I select Stopper.AlternativeFuta in the dropdown and hit "Reload", it removes the RealisticForeskin&Erection plugin and throws the following error:

!> Plugin inside a package VamEssentials.PluginReloader.3:/Custom/Scripts/VamEssentials/PluginReloader/PluginReloader.cslist tried to load another plugin from outside of a package at path Custom\Scripts\RunRudolf\RealisticForeskin&Erection\Plugins\RunRudolf_ControlCenter.cs which is no longer allowed

The error is probably because I had my RealisticForeskin&Erection plugin loaded from the /Custom/Script folder, not from the .var. That is OK, but I find it strange that it does anything with this plugin at all, as it should reload Stopper.AtlernativeFuta only? Does that mean your "Reload" will not specifically reload one selected plugin, but all plugins that are active at this point in time?
Thanks for reporting this, I will look into it to see what is going on.
 
Thanks for reporting this, I will look into it to see what is going on.
The only constant I can find is that it always reloads the top most plugin in the list, independend of what name you select in the dropdown.
I test it by adding the Plugin Name "test" to all plugins, then select one in PluginReloader and check which ones have lost the Plugin Name. These have been replaced. So far it has always been the top most plugin.

 
The only constant I can find is that it always reloads the top most plugin in the list, independend of what name you select in the dropdown.
I test it by adding the Plugin Name "test" to all plugins, then select one in PluginReloader and check which ones have lost the Plugin Name. These have been replaced. So far it has always been the top most plugin.

View attachment 491611
I think it is impossible to relate the reload buttons in the UI (their texts) and the plugins unfortunately. The pluginPanel structure seems to always includes the entire UI. Plus: plugin# and position in the UI do not necessarily match, some plugins from .cslists encompass several entries.
I have written a workaround function to both reload and remove plugins by code. I will test it a bit further and then post it here, if you want. Let me know.
 
I am having an issue with PluginReloader triggering reload of plugins other that those that I call for. I set up PluginReloader to reload an expression randomizer and to trigger TittyMagic to recalibrate. This is done via a button that the user can trigger. The problem is it also triggers an animtion plugin to reset and there is no way other than manually reloading an instance of that plugin to get it working again, and that cannot be triggered, so the saved instance of the plugin cannot be included in the var since it is not called for in the scene.
 
I think it is impossible to relate the reload buttons in the UI (their texts) and the plugins unfortunately. The pluginPanel structure seems to always includes the entire UI. Plus: plugin# and position in the UI do not necessarily match, some plugins from .cslists encompass several entries.
I have written a workaround function to both reload and remove plugins by code. I will test it a bit further and then post it here, if you want. Let me know.

Thanks, if you could please send me what you found works/is possible I can test it to see and release an update.
 
I am having an issue with PluginReloader triggering reload of plugins other that those that I call for. I set up PluginReloader to reload an expression randomizer and to trigger TittyMagic to recalibrate. This is done via a button that the user can trigger. The problem is it also triggers an animtion plugin to reset and there is no way other than manually reloading an instance of that plugin to get it working again, and that cannot be triggered, so the saved instance of the plugin cannot be included in the var since it is not called for in the scene.

Sorry this plugin has been problematic based on what is possible unfortunately.

I switched to another code process in v3 that is supposed to do more of a full plugin reload but it's not very reliable it seems, could you please test it with v2 in your scene when you get a chance. I think v2 was the most stable version but it just doesn't do a full reload on all plugins and requires using the delayed triggers to fine tune the reload on some. That was what I used with testing on ExpressionRouter reloading.

v2...

@RunRudolf did v2 work in your use case? I am wondering if v3 OnClick reloading is just not possible and may need to roll back to v2 method of reloading. I can look at your code update and see if we can test that with StyleMavin's use case to see if it resolves for both hopefully.
 
I did not try V2, but V3 actually works, just not for the plugin that is selected, but always for the top most in the pluginpanel.

I analysed the UI structure in pluginPanel, and I believe that the method to identify the pluginPanel and then search for the corresponding button or text does not do what it is expected to. I therefore wrote a workaround. Its unfortunately rather complex, but seems to do the trick. It also allows removing plugins, not only reloading, which can be helpful in some cases.

I will post my code a bit later for you to test.

Sorry this plugin has been problematic based on what is possible unfortunately.

I switched to another code process in v3 that is supposed to do more of a full plugin reload but it's not very reliable it seems, could you please test it with v2 in your scene when you get a chance. I think v2 was the most stable version but it just doesn't do a full reload on all plugins and requires using the delayed triggers to fine tune the reload on some. That was what I used with testing on ExpressionRouter reloading.

v2...

@RunRudolf did v2 work in your use case? I am wondering if v3 OnClick reloading is just not possible and may need to roll back to v2 method of reloading. I can look at your code update and see if we can test that with StyleMavin's use case to see if it resolves for both hopefully
 
Last edited:
Sorry this plugin has been problematic based on what is possible unfortunately.

I switched to another code process in v3 that is supposed to do more of a full plugin reload but it's not very reliable it seems, could you please test it with v2 in your scene when you get a chance. I think v2 was the most stable version but it just doesn't do a full reload on all plugins and requires using the delayed triggers to fine tune the reload on some. That was what I used with testing on ExpressionRouter reloading.

v2...

@RunRudolf did v2 work in your use case? I am wondering if v3 OnClick reloading is just not possible and may need to roll back to v2 method of reloading. I can look at your code update and see if we can test that with StyleMavin's use case to see if it resolves for both hopefully.
I did use v2 at first, but it did not seem to be actaually reloading the plugin I was targeting. V3 seemed to be an improvement in that the timed triggers are useful for loading presets with paths after the plugin has reloaded. The problem is the first plugin in my stack is the animation plugin that is inadvertently being reset as well.
 
I did use v2 at first, but it did not seem to be actaually reloading the plugin I was targeting. V3 seemed to be an improvement in that the timed triggers are useful for loading presets with paths after the plugin has reloaded. The problem is the first plugin in my stack is the animation plugin that is inadvertently being reset as well.
Are you sure it is reloading "as well" or is it the only one reloading? My observation was that only one plugin is reloaded, the top one.
 
Back
Top Bottom