Skip to content

Commit

Permalink
fix: empty menu if no wearables
Browse files Browse the repository at this point in the history
  • Loading branch information
poi-vrc committed Dec 11, 2023
1 parent 738f4f6 commit 5cc3149
Showing 1 changed file with 29 additions and 26 deletions.
55 changes: 29 additions & 26 deletions Editor/Integrations/VRChat/VRCCabinetAnimCabinetModuleProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -269,43 +269,46 @@ private static bool ApplyAnimationsAndMenu(ApplyCabinetContext cabCtx, VRCCabine
PrepareAnimatorAndExpressions(cabCtx, avatarDescriptor, out var fxController, out var exParams, out var exMenu, out var parametersToAdd, out var pairs);
var refTransition = GetStateTransitionReference();

var baseSubMenu = new ExpressionMenuBuilder();
baseSubMenu.AddToggle("Original", "cpDT_Cabinet", 0);
baseSubMenu.CreateAsset(cabCtx.MakeUniqueAssetPath("Cabinet_Menu.asset"));

// get wearables
var wearables = DKEditorUtils.GetCabinetWearables(cabCtx.avatarGameObject);
var cabinetMenu = baseSubMenu;
var cabinetMenuIndex = 0;
var originalLayerLength = fxController.layers.Length;

for (var i = 0; i < wearables.Length; i++)
{
// obtain the wearable context
var wearCtx = cabCtx.wearableContexts[wearables[i]];
var config = wearCtx.wearableConfig;
if (wearables.Length > 0) {
var baseSubMenu = new ExpressionMenuBuilder();
baseSubMenu.AddToggle("Original", "cpDT_Cabinet", 0);
baseSubMenu.CreateAsset(cabCtx.MakeUniqueAssetPath("Cabinet_Menu.asset"));

EditorUtility.DisplayProgressBar(t._("tool.name"), t._("integrations.vrc.progressBar.msg.generatingWearableAnimations", config.info.name), i / (float)wearables.Length);
var cabinetMenu = baseSubMenu;
var cabinetMenuIndex = 0;
var originalLayerLength = fxController.layers.Length;

// find the animation generation module
var agm = config.FindModuleConfig<CabinetAnimWearableModuleConfig>();
if (agm == null)
for (var i = 0; i < wearables.Length; i++)
{
continue;
}
// obtain the wearable context
var wearCtx = cabCtx.wearableContexts[wearables[i]];
var config = wearCtx.wearableConfig;

ApplyWearableAnimationsAndMenus(cabCtx, wearCtx, vrcm, agm, i, refTransition, fxController, pairs, parametersToAdd, ref cabinetMenu, ref cabinetMenuIndex);
}
EditorUtility.DisplayProgressBar(t._("tool.name"), t._("integrations.vrc.progressBar.msg.generatingWearableAnimations", config.info.name), i / (float)wearables.Length);

// create cabinet layer
AnimationUtils.GenerateAnyStateLayer(fxController, "cpDT_Cabinet", "cpDT_Cabinet", pairs, cabCtx.cabinetConfig.animationWriteDefaults, null, refTransition);
// find the animation generation module
var agm = config.FindModuleConfig<CabinetAnimWearableModuleConfig>();
if (agm == null)
{
continue;
}

// we push our cabinet layer to the top
PushCabinetLayerToTop(fxController, originalLayerLength);
ApplyWearableAnimationsAndMenus(cabCtx, wearCtx, vrcm, agm, i, refTransition, fxController, pairs, parametersToAdd, ref cabinetMenu, ref cabinetMenuIndex);
}

// create cabinet layer
AnimationUtils.GenerateAnyStateLayer(fxController, "cpDT_Cabinet", "cpDT_Cabinet", pairs, cabCtx.cabinetConfig.animationWriteDefaults, null, refTransition);

EditorUtility.DisplayProgressBar(t._("tool.name"), t._("integrations.vrc.progressBar.msg.addingExParams"), 1.0f);
// we push our cabinet layer to the top
PushCabinetLayerToTop(fxController, originalLayerLength);

if (!TryAddExMenusAndParams(cabCtx, exParams, exMenu, baseSubMenu, parametersToAdd)) return false;
EditorUtility.DisplayProgressBar(t._("tool.name"), t._("integrations.vrc.progressBar.msg.addingExParams"), 1.0f);

if (!TryAddExMenusAndParams(cabCtx, exParams, exMenu, baseSubMenu, parametersToAdd)) return false;
}

EditorUtility.SetDirty(fxController);
EditorUtility.SetDirty(exMenu);
Expand Down

0 comments on commit 5cc3149

Please sign in to comment.