Preliminary work for Day Cycle selecting.
Signed-off-by: Beeks <HgDelirium@gmail.com>
This commit is contained in:
@@ -64,6 +64,7 @@ include_directories(
|
|||||||
)
|
)
|
||||||
|
|
||||||
set(viewer_SOURCE_FILES
|
set(viewer_SOURCE_FILES
|
||||||
|
ascentdaycyclemanager.cpp
|
||||||
ascentfloatercontactgroups.cpp
|
ascentfloatercontactgroups.cpp
|
||||||
ascentprefssys.cpp
|
ascentprefssys.cpp
|
||||||
ascentprefsvan.cpp
|
ascentprefsvan.cpp
|
||||||
@@ -513,6 +514,7 @@ endif (LINUX)
|
|||||||
set(viewer_HEADER_FILES
|
set(viewer_HEADER_FILES
|
||||||
CMakeLists.txt
|
CMakeLists.txt
|
||||||
ViewerInstall.cmake
|
ViewerInstall.cmake
|
||||||
|
ascentdaycyclemanager.h
|
||||||
ascentfloatercontactgroups.h
|
ascentfloatercontactgroups.h
|
||||||
ascentprefssys.h
|
ascentprefssys.h
|
||||||
ascentprefsvan.h
|
ascentprefsvan.h
|
||||||
|
|||||||
@@ -867,6 +867,17 @@
|
|||||||
<key>Value</key>
|
<key>Value</key>
|
||||||
<string>Custom</string>
|
<string>Custom</string>
|
||||||
</map>
|
</map>
|
||||||
|
<key>AscentActiveDayCycle</key>
|
||||||
|
<map>
|
||||||
|
<key>Comment</key>
|
||||||
|
<string>Day cycle currently in use</string>
|
||||||
|
<key>Persist</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
<key>Type</key>
|
||||||
|
<string>String</string>
|
||||||
|
<key>Value</key>
|
||||||
|
<string>Default</string>
|
||||||
|
</map>
|
||||||
<key>AscentAutoCloseOOC</key>
|
<key>AscentAutoCloseOOC</key>
|
||||||
<map>
|
<map>
|
||||||
<key>Comment</key>
|
<key>Comment</key>
|
||||||
|
|||||||
@@ -1,36 +1,36 @@
|
|||||||
<llsd>
|
<llsd>
|
||||||
<array>
|
<array>
|
||||||
<array>
|
<array>
|
||||||
<real>0</real>
|
<real>0</real>
|
||||||
<string>A-12AM</string>
|
<string>A-12AM</string>
|
||||||
</array>
|
</array>
|
||||||
<array>
|
<array>
|
||||||
<real>0.125</real>
|
<real>0.125</real>
|
||||||
<string>A-3AM</string>
|
<string>A-3AM</string>
|
||||||
</array>
|
</array>
|
||||||
<array>
|
<array>
|
||||||
<real>0.25</real>
|
<real>0.25</real>
|
||||||
<string>A-6AM</string>
|
<string>A-6AM</string>
|
||||||
</array>
|
</array>
|
||||||
<array>
|
<array>
|
||||||
<real>0.375</real>
|
<real>0.375</real>
|
||||||
<string>A-9AM</string>
|
<string>A-9AM</string>
|
||||||
</array>
|
</array>
|
||||||
<array>
|
<array>
|
||||||
<real>0.5</real>
|
<real>0.5</real>
|
||||||
<string>A-12PM</string>
|
<string>A-12PM</string>
|
||||||
</array>
|
</array>
|
||||||
<array>
|
<array>
|
||||||
<real>0.625</real>
|
<real>0.625</real>
|
||||||
<string>A-3PM</string>
|
<string>A-3PM</string>
|
||||||
</array>
|
</array>
|
||||||
<array>
|
<array>
|
||||||
<real>0.75</real>
|
<real>0.75</real>
|
||||||
<string>A-6PM</string>
|
<string>A-6PM</string>
|
||||||
</array>
|
</array>
|
||||||
<array>
|
<array>
|
||||||
<real>0.875</real>
|
<real>0.875</real>
|
||||||
<string>A-9PM</string>
|
<string>A-9PM</string>
|
||||||
</array>
|
</array>
|
||||||
</array>
|
</array>
|
||||||
</llsd>
|
</llsd>
|
||||||
|
|||||||
@@ -37,6 +37,7 @@
|
|||||||
#include "pipeline.h"
|
#include "pipeline.h"
|
||||||
#include "llsky.h"
|
#include "llsky.h"
|
||||||
|
|
||||||
|
#include "llboost.h"
|
||||||
#include "llsliderctrl.h"
|
#include "llsliderctrl.h"
|
||||||
#include "llmultislider.h"
|
#include "llmultislider.h"
|
||||||
#include "llmultisliderctrl.h"
|
#include "llmultisliderctrl.h"
|
||||||
@@ -54,12 +55,16 @@
|
|||||||
#include "llviewerwindow.h"
|
#include "llviewerwindow.h"
|
||||||
|
|
||||||
#include "llwlparamset.h"
|
#include "llwlparamset.h"
|
||||||
|
#include "llwldaycycle.h"
|
||||||
#include "llwlparammanager.h"
|
#include "llwlparammanager.h"
|
||||||
|
#include "ascentdaycyclemanager.h" //Ascent Addition
|
||||||
#include "llpostprocess.h"
|
#include "llpostprocess.h"
|
||||||
#include "llfloaterwindlight.h"
|
#include "llfloaterwindlight.h"
|
||||||
|
|
||||||
|
|
||||||
LLFloaterDayCycle* LLFloaterDayCycle::sDayCycle = NULL;
|
LLFloaterDayCycle* LLFloaterDayCycle::sDayCycle = NULL;
|
||||||
|
|
||||||
|
std::set<std::string> LLFloaterDayCycle::sDefaultPresets;
|
||||||
std::map<std::string, LLWLSkyKey> LLFloaterDayCycle::sSliderToKey;
|
std::map<std::string, LLWLSkyKey> LLFloaterDayCycle::sSliderToKey;
|
||||||
const F32 LLFloaterDayCycle::sHoursPerDay = 24.0f;
|
const F32 LLFloaterDayCycle::sHoursPerDay = 24.0f;
|
||||||
|
|
||||||
@@ -88,6 +93,37 @@ LLFloaterDayCycle::LLFloaterDayCycle() : LLFloater(std::string("Day Cycle Floate
|
|||||||
|
|
||||||
sldr->addSlider();
|
sldr->addSlider();
|
||||||
|
|
||||||
|
// add the combo boxes
|
||||||
|
LLComboBox* comboBox = getChild<LLComboBox>("DayCyclePresetsCombo");
|
||||||
|
|
||||||
|
if(comboBox != NULL) {
|
||||||
|
|
||||||
|
std::map<std::string, LLWLDayCycle>::iterator mIt =
|
||||||
|
AscentDayCycleManager::instance()->mParamList.begin();
|
||||||
|
for(; mIt != AscentDayCycleManager::instance()->mParamList.end(); mIt++)
|
||||||
|
{
|
||||||
|
comboBox->add(mIt->first);
|
||||||
|
}
|
||||||
|
|
||||||
|
// entry for when we're in estate time
|
||||||
|
comboBox->add(LLStringUtil::null);
|
||||||
|
|
||||||
|
// set defaults on combo boxes
|
||||||
|
comboBox->selectByValue(LLSD("Default"));
|
||||||
|
}
|
||||||
|
|
||||||
|
// add the list of presets
|
||||||
|
std::string def_days = getString("DaycycleDefaultNames");
|
||||||
|
|
||||||
|
// no editing or deleting of the blank string
|
||||||
|
sDefaultPresets.insert("");
|
||||||
|
boost_tokenizer tokens(def_days, boost::char_separator<char>(":"));
|
||||||
|
for (boost_tokenizer::iterator token_iter = tokens.begin(); token_iter != tokens.end(); ++token_iter)
|
||||||
|
{
|
||||||
|
std::string tok(*token_iter);
|
||||||
|
//sDefaultPresets.insert(tok);
|
||||||
|
}
|
||||||
|
|
||||||
// load it up
|
// load it up
|
||||||
initCallbacks();
|
initCallbacks();
|
||||||
}
|
}
|
||||||
@@ -130,6 +166,15 @@ void LLFloaterDayCycle::initCallbacks(void)
|
|||||||
childSetAction("WLLoadDayCycle", onLoadDayCycle, NULL);
|
childSetAction("WLLoadDayCycle", onLoadDayCycle, NULL);
|
||||||
childSetAction("WLSaveDayCycle", onSaveDayCycle, NULL);
|
childSetAction("WLSaveDayCycle", onSaveDayCycle, NULL);
|
||||||
|
|
||||||
|
LLComboBox* comboBox = getChild<LLComboBox>("DayCyclePresetsCombo");
|
||||||
|
|
||||||
|
//childSetAction("WLLoadPreset", onLoadPreset, comboBox);
|
||||||
|
childSetAction("DayCycleNewPreset", onNewPreset, comboBox);
|
||||||
|
childSetAction("DayCycleSavePreset", onSavePreset, comboBox);
|
||||||
|
childSetAction("DayCycleDeletePreset", onDeletePreset, comboBox);
|
||||||
|
|
||||||
|
comboBox->setCommitCallback(onChangePresetName);
|
||||||
|
|
||||||
childSetAction("WLAddKey", onAddKey, NULL);
|
childSetAction("WLAddKey", onAddKey, NULL);
|
||||||
childSetAction("WLDeleteKey", onDeleteKey, NULL);
|
childSetAction("WLDeleteKey", onDeleteKey, NULL);
|
||||||
}
|
}
|
||||||
@@ -268,6 +313,216 @@ void LLFloaterDayCycle::onClose(bool app_quitting)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LLFloaterDayCycle::onNewPreset(void* userData)
|
||||||
|
{
|
||||||
|
LLNotifications::instance().add("NewDaycyclePreset", LLSD(), LLSD(), newPromptCallback);
|
||||||
|
}
|
||||||
|
|
||||||
|
void LLFloaterDayCycle::onSavePreset(void* userData)
|
||||||
|
{
|
||||||
|
// get the name
|
||||||
|
LLComboBox* comboBox = sDayCycle->getChild<LLComboBox>(
|
||||||
|
"DayCyclePresetsCombo");
|
||||||
|
|
||||||
|
// don't save the empty name
|
||||||
|
if(comboBox->getSelectedItemLabel() == "")
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// check to see if it's a default and shouldn't be overwritten
|
||||||
|
std::set<std::string>::iterator sIt = sDefaultPresets.find(
|
||||||
|
comboBox->getSelectedItemLabel());
|
||||||
|
if(sIt != sDefaultPresets.end() && !gSavedSettings.getBOOL("SkyEditPresets"))
|
||||||
|
{
|
||||||
|
LLNotifications::instance().add("WLNoEditDefault");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
LLWLParamManager::instance()->mCurParams.mName =
|
||||||
|
comboBox->getSelectedItemLabel();
|
||||||
|
|
||||||
|
LLNotifications::instance().add("WLSavePresetAlert", LLSD(), LLSD(), saveAlertCallback);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool LLFloaterDayCycle::saveAlertCallback(const LLSD& notification, const LLSD& response)
|
||||||
|
{
|
||||||
|
S32 option = LLNotification::getSelectedOption(notification, response);
|
||||||
|
// if they choose save, do it. Otherwise, don't do anything
|
||||||
|
if(option == 0)
|
||||||
|
{
|
||||||
|
LLComboBox* combo_box = sDayCycle->getChild<LLComboBox>("DayCyclePresetsCombo");
|
||||||
|
// comment this back in to save to file
|
||||||
|
LLWLParamManager::instance()->mDay.saveDayCycle(combo_box->getSelectedValue().asString());
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void LLFloaterDayCycle::onDeletePreset(void* userData)
|
||||||
|
{
|
||||||
|
LLComboBox* combo_box = sDayCycle->getChild<LLComboBox>(
|
||||||
|
"DayCyclePresetsCombo");
|
||||||
|
|
||||||
|
if(combo_box->getSelectedValue().asString() == "")
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
LLSD args;
|
||||||
|
args["SKY"] = combo_box->getSelectedValue().asString();
|
||||||
|
LLNotifications::instance().add("WLDeletePresetAlert", args, LLSD(),
|
||||||
|
boost::bind(&LLFloaterDayCycle::deleteAlertCallback, sDayCycle, _1, _2));
|
||||||
|
}
|
||||||
|
|
||||||
|
bool LLFloaterDayCycle::deleteAlertCallback(const LLSD& notification, const LLSD& response)
|
||||||
|
{
|
||||||
|
S32 option = LLNotification::getSelectedOption(notification, response);
|
||||||
|
|
||||||
|
// if they choose delete, do it. Otherwise, don't do anything
|
||||||
|
if(option == 0)
|
||||||
|
{
|
||||||
|
LLComboBox* combo_box = getChild<LLComboBox>(
|
||||||
|
"DayCyclePresetsCombo");
|
||||||
|
LLFloaterDayCycle* day_cycle = NULL;
|
||||||
|
LLComboBox* key_combo = NULL;
|
||||||
|
LLMultiSliderCtrl* mult_sldr = NULL;
|
||||||
|
|
||||||
|
if(LLFloaterDayCycle::isOpen())
|
||||||
|
{
|
||||||
|
day_cycle = LLFloaterDayCycle::instance();
|
||||||
|
key_combo = day_cycle->getChild<LLComboBox>(
|
||||||
|
"WLKeyPresets");
|
||||||
|
mult_sldr = day_cycle->getChild<LLMultiSliderCtrl>("WLDayCycleKeys");
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string name(combo_box->getSelectedValue().asString());
|
||||||
|
|
||||||
|
// check to see if it's a default and shouldn't be deleted
|
||||||
|
std::set<std::string>::iterator sIt = sDefaultPresets.find(name);
|
||||||
|
if(sIt != sDefaultPresets.end())
|
||||||
|
{
|
||||||
|
LLNotifications::instance().add("WLNoEditDefault");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
AscentDayCycleManager::instance()->removeParamSet(name, true);
|
||||||
|
|
||||||
|
// remove and choose another
|
||||||
|
S32 new_index = combo_box->getCurrentIndex();
|
||||||
|
|
||||||
|
combo_box->remove(name);
|
||||||
|
if(key_combo != NULL)
|
||||||
|
{
|
||||||
|
key_combo->remove(name);
|
||||||
|
|
||||||
|
// remove from slider, as well
|
||||||
|
day_cycle->deletePreset(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
// pick the previously selected index after delete
|
||||||
|
if(new_index > 0)
|
||||||
|
{
|
||||||
|
new_index--;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(combo_box->getItemCount() > 0)
|
||||||
|
{
|
||||||
|
combo_box->setCurrentByIndex(new_index);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool LLFloaterDayCycle::newPromptCallback(const LLSD& notification, const LLSD& response)
|
||||||
|
{
|
||||||
|
std::string text = response["message"].asString();
|
||||||
|
S32 option = LLNotification::getSelectedOption(notification, response);
|
||||||
|
|
||||||
|
if(text == "")
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(option == 0) {
|
||||||
|
LLComboBox* comboBox = sDayCycle->getChild<LLComboBox>(
|
||||||
|
"DayCyclePresetsCombo");
|
||||||
|
|
||||||
|
LLFloaterDayCycle* sDayCycle = NULL;
|
||||||
|
LLComboBox* keyCombo = NULL;
|
||||||
|
if(LLFloaterDayCycle::isOpen())
|
||||||
|
{
|
||||||
|
sDayCycle = LLFloaterDayCycle::instance();
|
||||||
|
keyCombo = sDayCycle->getChild<LLComboBox>(
|
||||||
|
"WLKeyPresets");
|
||||||
|
}
|
||||||
|
|
||||||
|
// add the current parameters to the list
|
||||||
|
// see if it's there first
|
||||||
|
std::map<std::string, LLWLDayCycle>::iterator mIt =
|
||||||
|
AscentDayCycleManager::instance()->mParamList.find(text);
|
||||||
|
|
||||||
|
// if not there, add a new one
|
||||||
|
if(mIt == AscentDayCycleManager::instance()->mParamList.end())
|
||||||
|
{
|
||||||
|
AscentDayCycleManager::instance()->addParamSet(text,
|
||||||
|
AscentDayCycleManager::instance()->mCurParams);
|
||||||
|
comboBox->add(text);
|
||||||
|
comboBox->sortByName();
|
||||||
|
|
||||||
|
// add a blank to the bottom
|
||||||
|
comboBox->selectFirstItem();
|
||||||
|
if(comboBox->getSimple() == "")
|
||||||
|
{
|
||||||
|
comboBox->remove(0);
|
||||||
|
}
|
||||||
|
comboBox->add(LLStringUtil::null);
|
||||||
|
|
||||||
|
comboBox->setSelectedByValue(text, true);
|
||||||
|
if(LLFloaterDayCycle::isOpen())
|
||||||
|
{
|
||||||
|
keyCombo->add(text);
|
||||||
|
keyCombo->sortByName();
|
||||||
|
}
|
||||||
|
LLWLParamManager::instance()->mDay.saveDayCycle(text);
|
||||||
|
|
||||||
|
// otherwise, send a message to the user
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
LLNotifications::instance().add("ExistsSkyPresetAlert");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void LLFloaterDayCycle::onChangePresetName(LLUICtrl* ctrl, void * userData)
|
||||||
|
{
|
||||||
|
|
||||||
|
LLComboBox * combo_box = static_cast<LLComboBox*>(ctrl);
|
||||||
|
|
||||||
|
if(combo_box->getSimple() == "")
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
LLWLParamManager::instance()->mDay.loadDayCycle(combo_box->getSelectedValue().asString());
|
||||||
|
gSavedSettings.setString("AscentActiveDayCycle", combo_box->getSelectedValue().asString());
|
||||||
|
// sync it all up
|
||||||
|
syncSliderTrack();
|
||||||
|
syncMenu();
|
||||||
|
|
||||||
|
// set the param manager's track to the new one
|
||||||
|
LLMultiSliderCtrl* tSldr;
|
||||||
|
tSldr = sDayCycle->getChild<LLMultiSliderCtrl>(
|
||||||
|
"WLTimeSlider");
|
||||||
|
LLWLParamManager::instance()->resetAnimator(
|
||||||
|
tSldr->getCurSliderValue() / sHoursPerDay, false);
|
||||||
|
|
||||||
|
// and draw it
|
||||||
|
LLWLParamManager::instance()->mAnimator.update(
|
||||||
|
LLWLParamManager::instance()->mCurParams);
|
||||||
|
}
|
||||||
|
|
||||||
void LLFloaterDayCycle::onRunAnimSky(void* userData)
|
void LLFloaterDayCycle::onRunAnimSky(void* userData)
|
||||||
{
|
{
|
||||||
// if no keys, do nothing
|
// if no keys, do nothing
|
||||||
@@ -307,8 +562,8 @@ void LLFloaterDayCycle::onStopAnimSky(void* userData)
|
|||||||
|
|
||||||
void LLFloaterDayCycle::onUseLindenTime(void* userData)
|
void LLFloaterDayCycle::onUseLindenTime(void* userData)
|
||||||
{
|
{
|
||||||
LLFloaterWindLight* wl = LLFloaterWindLight::instance();
|
LLFloaterDayCycle* dc = LLFloaterDayCycle::instance();
|
||||||
LLComboBox* box = wl->getChild<LLComboBox>("WLPresetsCombo");
|
LLComboBox* box = dc->getChild<LLComboBox>("DayCyclePresetsCombo");
|
||||||
box->selectByValue("");
|
box->selectByValue("");
|
||||||
|
|
||||||
LLWLParamManager::instance()->mAnimator.mIsRunning = true;
|
LLWLParamManager::instance()->mAnimator.mIsRunning = true;
|
||||||
@@ -317,7 +572,7 @@ void LLFloaterDayCycle::onUseLindenTime(void* userData)
|
|||||||
|
|
||||||
void LLFloaterDayCycle::onLoadDayCycle(void* userData)
|
void LLFloaterDayCycle::onLoadDayCycle(void* userData)
|
||||||
{
|
{
|
||||||
LLWLParamManager::instance()->mDay.loadDayCycle("Default.xml");
|
//LLWLParamManager::instance()->mDay.loadDayCycle("Default.xml");
|
||||||
|
|
||||||
// sync it all up
|
// sync it all up
|
||||||
syncSliderTrack();
|
syncSliderTrack();
|
||||||
@@ -337,7 +592,7 @@ void LLFloaterDayCycle::onLoadDayCycle(void* userData)
|
|||||||
|
|
||||||
void LLFloaterDayCycle::onSaveDayCycle(void* userData)
|
void LLFloaterDayCycle::onSaveDayCycle(void* userData)
|
||||||
{
|
{
|
||||||
LLWLParamManager::instance()->mDay.saveDayCycle("Default.xml");
|
//LLWLParamManager::instance()->mDay.saveDayCycle("Default.xml");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -99,10 +99,30 @@ public:
|
|||||||
/// delete a key frame
|
/// delete a key frame
|
||||||
static void onDeleteKey(void* userData);
|
static void onDeleteKey(void* userData);
|
||||||
|
|
||||||
/// button to load day
|
/// when user hits the load preset button
|
||||||
|
static void onNewPreset(void* userData);
|
||||||
|
|
||||||
|
/// when user hits the save preset button
|
||||||
|
static void onSavePreset(void* userData);
|
||||||
|
|
||||||
|
/// prompts a user when overwriting a preset
|
||||||
|
static bool saveAlertCallback(const LLSD& notification, const LLSD& response);
|
||||||
|
|
||||||
|
/// when user hits the save preset button
|
||||||
|
static void onDeletePreset(void* userData);
|
||||||
|
|
||||||
|
/// prompts a user when overwriting a preset
|
||||||
|
bool deleteAlertCallback(const LLSD& notification, const LLSD& response);
|
||||||
|
|
||||||
|
static bool newPromptCallback(const LLSD& notification, const LLSD& response);
|
||||||
|
|
||||||
|
/// what to do when you change the preset name
|
||||||
|
static void onChangePresetName(LLUICtrl* ctrl, void* userData);
|
||||||
|
|
||||||
|
/// button to load day OLD -HgB
|
||||||
static void onLoadDayCycle(void* userData);
|
static void onLoadDayCycle(void* userData);
|
||||||
|
|
||||||
/// button to save day
|
/// button to save day OLD -HgB
|
||||||
static void onSaveDayCycle(void* userData);
|
static void onSaveDayCycle(void* userData);
|
||||||
|
|
||||||
/// toggle for Linden time
|
/// toggle for Linden time
|
||||||
@@ -140,6 +160,9 @@ private:
|
|||||||
// map of sliders to parameters
|
// map of sliders to parameters
|
||||||
static std::map<std::string, LLWLSkyKey> sSliderToKey;
|
static std::map<std::string, LLWLSkyKey> sSliderToKey;
|
||||||
|
|
||||||
|
//Presets default
|
||||||
|
static std::set<std::string> sDefaultPresets;
|
||||||
|
|
||||||
static const F32 sHoursPerDay;
|
static const F32 sHoursPerDay;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -193,11 +193,13 @@
|
|||||||
#include "llsocks5.h"
|
#include "llsocks5.h"
|
||||||
#include "jcfloaterareasearch.h"
|
#include "jcfloaterareasearch.h"
|
||||||
|
|
||||||
|
|
||||||
// <edit>
|
// <edit>
|
||||||
#include "llpanellogin.h"
|
#include "llpanellogin.h"
|
||||||
//#include "llfloateravatars.h"
|
//#include "llfloateravatars.h"
|
||||||
//#include "llactivation.h"
|
//#include "llactivation.h"
|
||||||
#include "wlfPanel_AdvSettings.h" //Lower right Windlight and Rendering options
|
#include "wlfPanel_AdvSettings.h" //Lower right Windlight and Rendering options
|
||||||
|
#include "ascentdaycyclemanager.h"
|
||||||
#include "llao.h"
|
#include "llao.h"
|
||||||
#include "llfloaterblacklist.h"
|
#include "llfloaterblacklist.h"
|
||||||
#include "scriptcounter.h"
|
#include "scriptcounter.h"
|
||||||
@@ -2528,6 +2530,7 @@ bool idle_startup()
|
|||||||
// init the shader managers
|
// init the shader managers
|
||||||
LLPostProcess::initClass();
|
LLPostProcess::initClass();
|
||||||
LLWLParamManager::initClass();
|
LLWLParamManager::initClass();
|
||||||
|
AscentDayCycleManager::initClass();
|
||||||
LLWaterParamManager::initClass();
|
LLWaterParamManager::initClass();
|
||||||
|
|
||||||
// RN: don't initialize VO classes in drone mode, they are too closely tied to rendering
|
// RN: don't initialize VO classes in drone mode, they are too closely tied to rendering
|
||||||
|
|||||||
@@ -40,7 +40,9 @@
|
|||||||
|
|
||||||
#include <map>
|
#include <map>
|
||||||
|
|
||||||
LLWLDayCycle::LLWLDayCycle() : mDayRate(120)
|
LLWLDayCycle::LLWLDayCycle() :
|
||||||
|
mDayRate(120),
|
||||||
|
mName("Unnamed Cycle")
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -54,22 +56,39 @@ void LLWLDayCycle::loadDayCycle(const std::string & fileName)
|
|||||||
// clear the first few things
|
// clear the first few things
|
||||||
mTimeMap.clear();
|
mTimeMap.clear();
|
||||||
|
|
||||||
// now load the file
|
// bugfix for SL-46920: preventing filenames that break stuff.
|
||||||
std::string pathName(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS,
|
char * curl_str = curl_escape(fileName.c_str(), fileName.size());
|
||||||
"windlight/days", fileName));
|
std::string escaped_filename(curl_str);
|
||||||
llinfos << "Loading DayCycle settings from " << pathName << llendl;
|
curl_free(curl_str);
|
||||||
|
curl_str = NULL;
|
||||||
llifstream day_cycle_xml(pathName);
|
|
||||||
if (day_cycle_xml.is_open())
|
escaped_filename += ".xml";
|
||||||
|
|
||||||
|
std::string pathName(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "windlight/days", escaped_filename));
|
||||||
|
llinfos << "Loading Day Cycle preset from " << pathName << llendl;
|
||||||
|
|
||||||
|
llifstream day_cycle_xml;
|
||||||
|
day_cycle_xml.open(pathName.c_str());
|
||||||
|
|
||||||
|
// That failed, try loading from the users area instead.
|
||||||
|
if(!day_cycle_xml)
|
||||||
|
{
|
||||||
|
pathName=gDirUtilp->getExpandedFilename( LL_PATH_USER_SETTINGS , "windlight/days", escaped_filename);
|
||||||
|
llinfos << "Loading User Day Cycle preset from " << pathName << llendl;
|
||||||
|
day_cycle_xml.open(pathName.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (day_cycle_xml)
|
||||||
{
|
{
|
||||||
// load and parse it
|
// load and parse it
|
||||||
LLSD day_data(LLSD::emptyArray());
|
LLSD day_data(LLSD::emptyArray());
|
||||||
LLPointer<LLSDParser> parser = new LLSDXMLParser();
|
LLPointer<LLSDParser> parser = new LLSDXMLParser();
|
||||||
parser->parse(day_cycle_xml, day_data, LLSDSerialize::SIZE_UNLIMITED);
|
parser->parse(day_cycle_xml, day_data, LLSDSerialize::SIZE_UNLIMITED);
|
||||||
|
llinfos << "Loading day cycle into timeline..." << llendl;
|
||||||
// add each key
|
// add each key
|
||||||
for(S32 i = 0; i < day_data.size(); ++i)
|
for(S32 i = 0; i < day_data.size(); ++i)
|
||||||
{
|
{
|
||||||
|
llinfos << "Loading value" << i << llendl;
|
||||||
// make sure it's a two array
|
// make sure it's a two array
|
||||||
if(day_data[i].size() != 2)
|
if(day_data[i].size() != 2)
|
||||||
{
|
{
|
||||||
@@ -95,14 +114,39 @@ void LLWLDayCycle::loadDayCycle(const std::string & fileName)
|
|||||||
|
|
||||||
day_cycle_xml.close();
|
day_cycle_xml.close();
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
llwarns << "Can't find " << fileName << llendl;
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void LLWLDayCycle::saveDayCycle(const std::string & fileName)
|
void LLWLDayCycle::saveDayCycle(const std::string & fileName)
|
||||||
{
|
{
|
||||||
LLSD day_data(LLSD::emptyArray());
|
|
||||||
|
// bugfix for SL-46920: preventing filenames that break stuff.
|
||||||
|
char * curl_str = curl_escape(fileName.c_str(), fileName.size());
|
||||||
|
std::string escaped_filename(curl_str);
|
||||||
|
curl_free(curl_str);
|
||||||
|
curl_str = NULL;
|
||||||
|
|
||||||
std::string pathName(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "windlight/days", fileName));
|
escaped_filename += ".xml";
|
||||||
//llinfos << "Saving WindLight settings to " << pathName << llendl;
|
|
||||||
|
std::string pathName(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "windlight/days", escaped_filename));
|
||||||
|
llinfos << "Saving Day Cycle preset from " << pathName << llendl;
|
||||||
|
|
||||||
|
llofstream day_cycle_xml;
|
||||||
|
day_cycle_xml.open(pathName.c_str());
|
||||||
|
|
||||||
|
// That failed, try loading from the users area instead.
|
||||||
|
if(!day_cycle_xml)
|
||||||
|
{
|
||||||
|
pathName=gDirUtilp->getExpandedFilename( LL_PATH_USER_SETTINGS , "windlight/days", escaped_filename);
|
||||||
|
llinfos << "Saving User Day Cycle preset from " << pathName << llendl;
|
||||||
|
day_cycle_xml.open(pathName.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
LLSD day_data(LLSD::emptyArray());
|
||||||
|
|
||||||
for(std::map<F32, std::string>::const_iterator mIt = mTimeMap.begin();
|
for(std::map<F32, std::string>::const_iterator mIt = mTimeMap.begin();
|
||||||
mIt != mTimeMap.end();
|
mIt != mTimeMap.end();
|
||||||
@@ -114,7 +158,6 @@ void LLWLDayCycle::saveDayCycle(const std::string & fileName)
|
|||||||
day_data.append(key);
|
day_data.append(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
llofstream day_cycle_xml(pathName);
|
|
||||||
LLPointer<LLSDFormatter> formatter = new LLSDXMLFormatter();
|
LLPointer<LLSDFormatter> formatter = new LLSDXMLFormatter();
|
||||||
formatter->format(day_data, day_cycle_xml, LLSDFormatter::OPTIONS_PRETTY);
|
formatter->format(day_data, day_cycle_xml, LLSDFormatter::OPTIONS_PRETTY);
|
||||||
day_cycle_xml.close();
|
day_cycle_xml.close();
|
||||||
|
|||||||
@@ -45,6 +45,9 @@ class LLWLDayCycle;
|
|||||||
|
|
||||||
class LLWLDayCycle
|
class LLWLDayCycle
|
||||||
{
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
std::string mName;
|
||||||
public:
|
public:
|
||||||
|
|
||||||
// lists what param sets are used when during the day
|
// lists what param sets are used when during the day
|
||||||
|
|||||||
@@ -553,7 +553,7 @@ LLWLParamManager * LLWLParamManager::instance()
|
|||||||
sInstance->loadPresets(LLStringUtil::null);
|
sInstance->loadPresets(LLStringUtil::null);
|
||||||
|
|
||||||
// load the day
|
// load the day
|
||||||
sInstance->mDay.loadDayCycle(std::string("Default.xml"));
|
sInstance->mDay.loadDayCycle(gSavedSettings.getString("AscentActiveDayCycle"));
|
||||||
|
|
||||||
// *HACK - sets cloud scrolling to what we want... fix this better in the future
|
// *HACK - sets cloud scrolling to what we want... fix this better in the future
|
||||||
sInstance->getParamSet("Default", sInstance->mCurParams);
|
sInstance->getParamSet("Default", sInstance->mCurParams);
|
||||||
|
|||||||
@@ -237,14 +237,36 @@
|
|||||||
label="Use Estate Time" label_selected="Go to Estate Time"
|
label="Use Estate Time" label_selected="Go to Estate Time"
|
||||||
left_delta="55" mouse_opaque="true" name="WLUseLindenTime"
|
left_delta="55" mouse_opaque="true" name="WLUseLindenTime"
|
||||||
scale_image="true" width="140" />
|
scale_image="true" width="140" />
|
||||||
<button bottom="-195" enabled="true" font="SansSerif" halign="center" height="20"
|
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||||
|
bottom="-180" drop_shadow_visible="true"
|
||||||
|
font="SansSerif" h_pad="0" halign="left" height="16"
|
||||||
|
left="430" mouse_opaque="true" name="KeyFramePresetsText" v_pad="0"
|
||||||
|
width="110">
|
||||||
|
Presets:
|
||||||
|
</text>
|
||||||
|
<combo_box allow_text_entry="false" bottom_delta="-1" follows="left|top" height="18"
|
||||||
|
left_delta="80" max_chars="20" mouse_opaque="true" name="DayCyclePresetsCombo"
|
||||||
|
width="120" />
|
||||||
|
<button bottom_delta="-40" enabled="true" font="SansSerif" halign="center" height="20"
|
||||||
|
label="New" label_selected="New" left_delta="-80"
|
||||||
|
mouse_opaque="true" name="DayCycleNewPreset" scale_image="true" width="60" />
|
||||||
|
<button bottom_delta="0" enabled="true" font="SansSerif" halign="center" height="20"
|
||||||
|
label="Save" label_selected="Save" left_delta="70"
|
||||||
|
mouse_opaque="true" name="DayCycleSavePreset" scale_image="true" width="60" />
|
||||||
|
<button bottom_delta="0" enabled="true" font="SansSerif" halign="center" height="20"
|
||||||
|
label="Delete" label_selected="Delete" left_delta="70"
|
||||||
|
mouse_opaque="true" name="DayCycleDeletePreset" scale_image="true" width="60" />
|
||||||
|
<!--<button bottom="-295" enabled="true" font="SansSerif" halign="center" height="20"
|
||||||
label="Save Test Day" label_selected="Save Test Day"
|
label="Save Test Day" label_selected="Save Test Day"
|
||||||
left="480" mouse_opaque="true" name="WLSaveDayCycle" scale_image="true"
|
left="480" mouse_opaque="true" name="WLSaveDayCycle" scale_image="true"
|
||||||
width="150" />
|
width="150" />
|
||||||
<button bottom="-220" enabled="true" font="SansSerif" halign="center" height="20"
|
<button bottom="-320" enabled="true" font="SansSerif" halign="center" height="20"
|
||||||
label="Load Test Day" label_selected="Load Test Day"
|
label="Load Test Day" label_selected="Load Test Day"
|
||||||
left="480" mouse_opaque="true" name="WLLoadDayCycle" scale_image="true"
|
left="480" mouse_opaque="true" name="WLLoadDayCycle" scale_image="true"
|
||||||
width="150" />
|
width="150" />-->
|
||||||
</panel>
|
</panel>
|
||||||
</tab_container>
|
</tab_container>
|
||||||
|
<string name="DaycycleDefaultNames">
|
||||||
|
Default:Happy%20Bivouac
|
||||||
|
</string>
|
||||||
</floater>
|
</floater>
|
||||||
|
|||||||
@@ -655,10 +655,14 @@
|
|||||||
</menu_item_call>
|
</menu_item_call>
|
||||||
<menu_item_separator bottom="-113" enabled="true" height="8" label="-----------" left="0"
|
<menu_item_separator bottom="-113" enabled="true" height="8" label="-----------" left="0"
|
||||||
mouse_opaque="true" name="separator" width="169" />
|
mouse_opaque="true" name="separator" width="169" />
|
||||||
<menu_item_call bottom="-132" enabled="false" height="19" label="Environment Editor" left="0"
|
<menu_item_call bottom="-132" enabled="false" height="19" label="Environment Editor" left="0"
|
||||||
mouse_opaque="true" name="Environment Editor" width="169">
|
mouse_opaque="true" name="Environment Editor" width="169">
|
||||||
<on_click function="World.EnvSettings" userdata="editor" />
|
<on_click function="World.EnvSettings" userdata="editor" />
|
||||||
</menu_item_call>
|
</menu_item_call>
|
||||||
|
<menu_item_call bottom="-151" enabled="false" height="19" label="Day Cycle Editor" left="0"
|
||||||
|
mouse_opaque="true" name="Day Cycle Editor" width="169">
|
||||||
|
<on_click function="World.DayCycle" userdata="editor" />
|
||||||
|
</menu_item_call>
|
||||||
</menu>
|
</menu>
|
||||||
</menu>
|
</menu>
|
||||||
<menu bottom="-18" create_jump_keys="true" drop_shadow="true" enabled="true"
|
<menu bottom="-18" create_jump_keys="true" drop_shadow="true" enabled="true"
|
||||||
|
|||||||
@@ -4904,10 +4904,10 @@ Controls where and how fast the the small scaled version of the normal map moves
|
|||||||
icon="alert.tga"
|
icon="alert.tga"
|
||||||
name="NewSkyPreset"
|
name="NewSkyPreset"
|
||||||
type="alert">
|
type="alert">
|
||||||
Give me a name for the new sky.
|
Give me a name for the new sky.
|
||||||
<form name="form">
|
<form name="form">
|
||||||
<input name="message" type="text">
|
<input name="message" type="text">
|
||||||
New Preset
|
New Preset
|
||||||
</input>
|
</input>
|
||||||
<button
|
<button
|
||||||
default="true"
|
default="true"
|
||||||
@@ -4925,7 +4925,35 @@ New Preset
|
|||||||
icon="alertmodal.tga"
|
icon="alertmodal.tga"
|
||||||
name="ExistsSkyPresetAlert"
|
name="ExistsSkyPresetAlert"
|
||||||
type="alertmodal">
|
type="alertmodal">
|
||||||
Preset already exists!
|
Preset already exists!
|
||||||
|
</notification>
|
||||||
|
|
||||||
|
<notification
|
||||||
|
icon="alert.tga"
|
||||||
|
name="NewDaycyclePreset"
|
||||||
|
type="alert">
|
||||||
|
Set a name for the new day cycle.
|
||||||
|
<form name="form">
|
||||||
|
<input name="message" type="text">
|
||||||
|
New Day
|
||||||
|
</input>
|
||||||
|
<button
|
||||||
|
default="true"
|
||||||
|
index="0"
|
||||||
|
name="OK"
|
||||||
|
text="OK"/>
|
||||||
|
<button
|
||||||
|
index="1"
|
||||||
|
name="Cancel"
|
||||||
|
text="Cancel"/>
|
||||||
|
</form>
|
||||||
|
</notification>
|
||||||
|
|
||||||
|
<notification
|
||||||
|
icon="alertmodal.tga"
|
||||||
|
name="ExistsDaycylePresetAlert"
|
||||||
|
type="alertmodal">
|
||||||
|
Preset already exists!
|
||||||
</notification>
|
</notification>
|
||||||
|
|
||||||
<notification
|
<notification
|
||||||
|
|||||||
Reference in New Issue
Block a user