mirror of
https://github.com/FirestormViewer/phoenix-firestorm.git
synced 2026-08-14 00:48:30 +00:00
[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:
@@ -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
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user