[FIRE-36340] FS AO loads default set at login again unless no default is selected, then loads last sessions AO set

This commit is contained in:
Hecklezz
2026-02-05 18:38:48 +10:00
parent cb12d9fa42
commit d4876a1f77
3 changed files with 27 additions and 22 deletions
+3 -3
View File
@@ -82,7 +82,6 @@ void FloaterAO::updateSetParameters()
mDisableMouselookCheckBox->setValue(mSelectedSet->getMouselookStandDisable());
bool isDefault = (mSelectedSet == AOEngine::instance().getDefaultSet());
mDefaultCheckBox->setValue(isDefault);
mDefaultCheckBox->setEnabled(!isDefault);
updateSmart();
}
@@ -310,7 +309,7 @@ void FloaterAO::enableSetControls(bool enable)
mSetSelectorSmall->setEnabled(enable);
mActivateSetButton->setEnabled(enable);
mRemoveButton->setEnabled(enable);
mDefaultCheckBox->setEnabled(enable && (mSelectedSet != AOEngine::instance().getDefaultSet()));
mDefaultCheckBox->setEnabled(enable);
mOverrideSitsCheckBox->setEnabled(enable);
mOverrideSitsCheckBoxSmall->setEnabled(enable);
mDisableMouselookCheckBox->setEnabled(enable);
@@ -589,7 +588,8 @@ void FloaterAO::onCheckDefault()
{
if (mSelectedSet)
{
AOEngine::instance().setDefaultSet(mSelectedSet);
AOSet* selectedSet = mDefaultCheckBox->getValue().asBoolean() ? mSelectedSet : nullptr;
AOEngine::instance().setDefaultSet(selectedSet);
}
}
+23 -18
View File
@@ -1584,6 +1584,7 @@ void AOEngine::update()
if (categories)
{
std::vector<std::pair<LLUUID, AOSet*>> setsToRead;
for (const auto& currentCategory : *categories)
{
const std::string& setFolderName = currentCategory->getName();
@@ -1610,13 +1611,7 @@ void AOEngine::update()
newSet = new AOSet(currentCategory->getUUID());
newSet->setName(setName);
mSets.emplace_back(newSet);
if (auto currentState = gSavedPerAccountSettings.getLLSD("FSCurrentAOState");
currentState.has("CurrentSet") && currentState["CurrentSet"].asString() == setName)
{
LL_DEBUGS("AOEngine") << "Selecting current set from settings: " << setName << LL_ENDL;
mCurrentSet = newSet;
}
setsToRead.push_back({ currentCategory->getUUID(), newSet });
}
else
{
@@ -1650,31 +1645,41 @@ void AOEngine::update()
else if (params[num] == "**")
{
mDefaultSet = newSet;
if (!mCurrentSet)
{
LL_DEBUGS("AOEngine") << "No set selected as current yet - setting default set as current: " << setName << LL_ENDL;
mCurrentSet = newSet;
}
mCurrentSet = newSet;
}
else
{
LL_WARNS("AOEngine") << "Unknown AO set option " << params[num] << LL_ENDL;
}
}
}
if (gInventory.isCategoryComplete(currentCategory->getUUID()))
for (const auto& [categoryUUID, newSet] : setsToRead)
{
if (!mDefaultSet)
{
LL_DEBUGS("AOEngine") << "Set " << params[0] << " is complete, reading states ..." << LL_ENDL;
// No default is set, so instead use the set saved in FSCurrentAOState
if (auto currentState = gSavedPerAccountSettings.getLLSD("FSCurrentAOState");
currentState.has("CurrentSet") && currentState["CurrentSet"].asString() == newSet->getName())
{
LL_DEBUGS("AOEngine") << "Selecting current set from settings: " << newSet->getName() << LL_ENDL;
mCurrentSet = newSet;
}
}
if (gInventory.isCategoryComplete(categoryUUID))
{
LL_DEBUGS("AOEngine") << "Set " << newSet->getName() << " is complete, reading states ..." << LL_ENDL;
LLInventoryModel::cat_array_t* stateCategories;
gInventory.getDirectDescendentsOf(currentCategory->getUUID(), stateCategories, items);
gInventory.getDirectDescendentsOf(categoryUUID, stateCategories, items);
newSet->setComplete(true);
for (const auto& stateCategory : *stateCategories)
{
std::vector<std::string> state_params;
LLStringUtil::getTokens(stateCategory->getName(), state_params, ":");
if (params.empty())
if (state_params.empty())
{
LL_WARNS("AOEngine") << "Unexpected state folder found in ao set: " << stateCategory->getName() << LL_ENDL;
continue;
@@ -1726,8 +1731,8 @@ void AOEngine::update()
}
else
{
LL_DEBUGS("AOEngine") << "Set " << setName << " is incomplete, fetching descendents" << LL_ENDL;
gInventory.fetchDescendentsOf(currentCategory->getUUID());
LL_DEBUGS("AOEngine") << "Set " << newSet->getName() << " is incomplete, fetching descendents" << LL_ENDL;
gInventory.fetchDescendentsOf(categoryUUID);
}
}
}
@@ -55,7 +55,7 @@
<check_box
name="ao_default"
label="Default"
tool_tip="Make this animation set the default set that plays when you log in."
tool_tip="Make this animation set the default set that plays when you log in. If no animation set is the default, use the animation set from last session."
left="0"
top_pad="8"
width="20"