A small update that introduces one new module:



1.jpg


In addition, two small fixes
  • Fixed error when right clicking on a UI element before any atom UI had been opened (Right Click Menu)
  • The plugin no longer disables a module if an error occurs in the module (to prevent it from staying disabled after a reload given that UXPlus stores the plugin data to a preferences file)
  • fixed bug in the plugins list Reorder function where incorrect plugin ids were assigned to triggers in the scene targeting the plugins when multiple plugin# numbers were updated in one go, causing the reordering to break triggers
  • fixed error when right clicking some local custom morph sliders - RightClickMenu should now reliably identify the triggerable parameter
  • the "pluginLabel" triggerable string parameter is now identified by RightClickMenu when right clicking on the label input field in the plugins list
  • logging improvements (always print full stack trace when an error is caught)
This update introduces script presets for saving, loading and setting user defaults for individual scripts. The Alternate Plugins List module of UXPlus is now finalized and UXPlus is out of beta! ?

Script Presets​

Script presets are like plugin presets, but individual to each script storable. Most plugins have only one script (sometimes called a module), while some have multiple scripts (e.g. Naturalis has TittyMagic, BootyMagic etc.).

With script presets, you can now save and load presets and set user defaults for any script, without each plugin having to have separately implemented their own saving and loading functions, and without having to mess around with Plugin Presets which are inherently designed for collections of plugins rather than individual plugins or scripts.

The new functions are listed in a new Actions menu that opens up to the side of the plugins tab:

1720017688159.png

  • Save preset file: Opens a file browser to save a new preset file. Presets are stored in Saves/PluginData/ScriptPresets/Script_Name/
  • Load preset file: Opens a file browser to load an existing preset file.
  • Set current as user defaults: Stores the current plugin parameters to file UserDefaults.json.
  • Load user defaults: Loads UserDefaults.json if it exists.
  • Clear user defaults: Deletes UserDefaults.json if it exists. It asks for confirmation.
The other two options are moved from the Restore menu which is gone from the plugin button row:
  • Load plugin defaults: Restores the script from an empty JSON which sets all of its storable parameters to default values
  • Load pre-reload settings: Restores the script's parameters from before it was reloaded
Going into more detail:

If the user defaults file exists, it's automatically loaded when you add the plugin via Add Plugin, Add Recent or Favorites. Other means of adding a plugin (such as when plugins programmatically add them) do not trigger the default preset to load.

The same user defaults file is loaded regardless of which atom type you add the plugin to, and regardless of which var package the plugin is from. Plugin authors need to ensure newer versions of their plugins are backwards compatible anyway, so loading presets saved with parameters of earlier versions should work in the newer versions as well. However: it may not work correctly the other way around! If you save a user default preset with a plugin from package version 2, and then add the plugin from package version 1, UXPlus will try to automatically load the user defaults that were saved with the newer version's parameters. This could result in some unexpected behavior.

It's a good idea to type something into the plugin label field before saving a preset. The label is restored when you load the preset, so if you're descriptive with the labels, you'll know based on the label which preset you've loaded. UXPlus does not enforce the preset filename to be the same as the label, think of the label more as a description. However, when setting current as user defaults, if the label is empty it will automatically be set to "UserDefaults".

In the configuration UI of Alternate Plugins List, there are two additional options, both enabled by default:

1720017697299.png


Other​

  • The selected option in the right click menu is now highlighted just with the usual button color change rather than bold text
  • UXPlus source files are now merged into one .cs file in the var package (which is then loaded via UXPlus.cslist)
Alternate Plugins List: Auto-download latest versions of Hub hosted favorited plugins

The latest versions of Hub-hosted favorited plugins are now automatically downloaded when UXPlus starts up (i.e. at VAM start if it's in the user default session plugins preset). The configuration UI for Alternate Plugins List has these options:

1711824806358.png


You can enable the Download Latest When Favorited to also check for and download the latest version when you favorite a plugin. Note that if the latest version downloads after you toggle the favorite on, the plugins list doesn't automatically update to show that there is an Update available to the plugin. You need to navigate away from and back to the plugins tab, it should show the "Update..." button as clickable then.

Fixes & Other
  • Fixed issue where the Alternate Plugins List's data about favorites and recent plugins was purged if you reloaded or removed UXPlus when the Alternate Plugins List module (or UXPlus itself) hadn't been enabled on startup
  • Fixed bug where a plugin was not reliably recognized as favorite if it was loaded at latest installed package version
  • Fixed issue where a plugin that loads with a compile error (red panel) couldn't be reloaded (not really an end user issue, more an issue for plugin developers)
  • Moved the PreviewCamHelper toggles from the configuration window to the "main card", replacing the Enabled toggle. The module gets disabled if both "Pause Auto Blink" and "Pause Auto Expressions" toggles are disabled.
Alternate Plugins List: New Features

Recent Plugins

Plugins that you have added via the Add Plugin file browser or the Add Recent or Favorites menus accumulate into the Add Recent menu, sorted by most recently added:

1711637957365.png


This list contains the exact versions that were added. You can remove an option by clicking on the "x" in the corner.

Note
The recent plugins are separate for session plugins, scene plugins, person plugins and other atom plugins. However, recent non-person atom plugins will also show up on the person atom.

Updating Plugins

update_example.jpg


If there is a newer version of the plugin installed, the "Update..." button opens a dropdown that shows the var package version that you can update to. If the current version is the latest version, the button is greyed out.

Updating preserves the current plugin parameters! As long as the plugin implements saving and loading its parameters with the scene correctly, nothing should break when updating.

The plugin# number should stay the same as well, and any triggers that were targeting the old version should still work. However, the plugin is loaded at the end of the list, which you can fix by Reordering the plugins list.

Plugins not loaded from var package just show N/A.

Fixes & other
  • Fixed a bug that caused plugin panels to be permanently invisible if a filter was active when exiting the plugins list UI. Now the filter is always cleared when exiting.
  • Fixed an error that occurred when filtering a plugins list containing plugins not loaded from a package.
  • Fixed reordering when a plugin has multiple scripts (e.g. Naturalis has two scripts, TittyMagic and BootyMagic) - only the first script's parameters were restored and the rest reverted back to default values. The parameters of all scripts are now correctly restored.
  • Fixed issue where the bottom half of the Select.., Reload etc. buttons was not clickable due to an overlapping element.
  • Layout and styling improvements (button spacing/sizes, font sizes, dropdown highlighted option colors etc.)
  • UXPlus's own plugin parameters are now saved and loaded to/from a configuration file, overriding the plugin's parameters in the session plugin preset.
Alternate Plugins List improvements
  • The plugins list UI design is finalized
  • Added Favorites feature
    • Greatly reduces the number of clicks needed to add an often needed plugin
    • You can easily make any plugin a favorite with the Fav checkbox, and it'll show up in the Favorites menu
    • Favorites also keep up to date as you install new plugin versions
  • Restore plugin defaults without reloading
  • Reordering plugins and changing their plugin # numbers is now possible in the Reorder window!
  • The main post is updated: https://hub.virtamate.com/resources/uxplus.44333/
1711473746520.jpeg


1711473762725.jpeg


1711473777247.jpeg


New module: Scenes Per Page

1711473838001.png
New Module: Alternate Plugins List

This module improves every plugins tab UI (Session Plugins, Scene Plugins and Plugins on atoms). Example:

person_altplugins.jpg


uxplus_altplugins.gif

Features
  • Compact layout which fits more plugins in the window
  • Filter the plugins list with keywords!
  • Restore pre-reload feature:
    • "Reload" stores the plugin's parameters in memory before triggering the actual plugin reload, and "Restore pre-reload" allows you to restore those parameters at any time after reloading - reloading will no longer be a headache with plugins where a lot of parameters have been modified!
  • Add Plugin button automatically opens the plugin file browser instead of just creating a new blank plugin that you need to scroll to
    • This can be toggled off in the plugin UI
  • Thicker scroll bar handle
The filtering is based on "contains input string" checks to any of these highlighted parts:

1710698240228.png


This allows you to search with any of author name, package name and version, file path, script name, and plugin index number or identifier.

Note: the empty button on the right of the plugin panel is a placeholder for an upcoming feature.

Fixes
  • fixed issue where the Enabled checkbox of a module didn't save
  • fixed check for duplicate UXPlus instance
Back
Top Bottom