MAINT-8052: One more step towards parcel environments.

master
Rider Linden 2018-01-23 17:34:25 -08:00
parent 5e544ee35d
commit 536aeb54a6
16 changed files with 1233 additions and 1613 deletions

View File

@ -251,7 +251,7 @@ LLSD LLSettingsBase::getSettings() const
LLSD LLSettingsBase::cloneSettings() const
{
return combineSDMaps(mSettings, LLSD());
return combineSDMaps(getSettings(), LLSD());
}
size_t LLSettingsBase::getHash() const

View File

@ -84,25 +84,6 @@ public:
static LLSD defaults();
//---------------------------------------------------------------------
S64Seconds getDayLength() const
{
return mDayLength;
}
void setDayLength(S64Seconds seconds)
{
mDayLength = seconds;
}
S64Seconds getDayOffset() const
{
return mDayOffset;
}
void setDayOffset(S64Seconds seconds)
{
mDayOffset = seconds;
}
KeyframeList_t getTrackKeyframes(S32 track);
TimeList_t getTrackTimes(S32 track);
@ -139,6 +120,12 @@ public:
virtual validation_list_t getValidationList() const;
static validation_list_t validationList();
S64Seconds getDayLength() const { return mDayLength; }
void setDayLength(S64Seconds val ) { mDayLength = val; }
S64Seconds getDayOffset() const { return mDayOffset; }
void setDayOffset(S64Seconds val) { mDayOffset = val; }
protected:
LLSettingsDay();
@ -157,8 +144,8 @@ private:
F64Seconds mLastUpdateTime;
S64Seconds mDayLength;
S64Seconds mDayOffset;
S64Seconds mDayLength;
S64Seconds mDayOffset;
F32 secondsToKeyframe(S64Seconds seconds);
F64Seconds keyframeToSeconds(F32 keyframe);

View File

@ -270,6 +270,8 @@ LLSD LLSettingsSky::defaults()
dfltsetting[SETTING_MOON_TEXTUREID] = IMG_MOON; // gMoonTextureID; // These two are returned by the login... wow!
dfltsetting[SETTING_SUN_TEXUTUREID] = IMG_SUN; // gSunTextureID;
dfltsetting[SETTING_TYPE] = "sky";
return dfltsetting;
}

View File

@ -412,6 +412,8 @@ public:
virtual validation_list_t getValidationList() const;
static validation_list_t validationList();
static LLSD translateLegacySettings(LLSD legacy);
protected:
static const std::string SETTING_LEGACY_EAST_ANGLE;
static const std::string SETTING_LEGACY_ENABLE_CLOUD_SCROLL;
@ -423,8 +425,6 @@ protected:
virtual void updateSettings();
static LLSD translateLegacySettings(LLSD legacy);
private:
static const F32 NIGHTTIME_ELEVATION;
static const F32 NIGHTTIME_ELEVATION_COS;

View File

@ -100,6 +100,8 @@ LLSD LLSettingsWater::defaults()
dfltsetting[SETTING_WAVE1_DIR] = LLVector2(1.04999f, -0.42000f).getValue();
dfltsetting[SETTING_WAVE2_DIR] = LLVector2(1.10999f, -1.16000f).getValue();
dfltsetting[SETTING_TYPE] = "water";
return dfltsetting;
}

View File

@ -201,6 +201,8 @@ public:
virtual validation_list_t getValidationList() const;
static validation_list_t validationList();
static LLSD translateLegacySettings(LLSD legacy);
protected:
static const std::string SETTING_LEGACY_BLUR_MULTIPILER;
static const std::string SETTING_LEGACY_FOG_COLOR;
@ -217,8 +219,6 @@ protected:
LLSettingsWater();
static LLSD translateLegacySettings(LLSD legacy);
LLVector4 mWaterPlane;
F32 mWaterFogKS;

File diff suppressed because it is too large Load Diff

View File

@ -28,6 +28,8 @@
#define LL_LLFLOATEREDITEXTDAYCYCLE_H
#include "llfloater.h"
#include "llsettingsdaycycle.h"
#include <boost/signals2.hpp>
class LLCheckBoxCtrl;
class LLComboBox;
@ -43,90 +45,92 @@ class LLFloaterEditExtDayCycle : public LLFloater
LOG_CLASS(LLFloaterEditExtDayCycle);
public:
typedef boost::signals2::signal<void(LLSettingsDay::ptr_t)> edit_commit_signal_t;
typedef boost::signals2::connection connection_t;
LLFloaterEditExtDayCycle(const LLSD &key);
/*virtual*/ BOOL postBuild();
/*virtual*/ void onOpen(const LLSD& key);
/*virtual*/ void onClose(bool app_quitting);
/*virtual*/ void draw();
BOOL postBuild();
void onOpen(const LLSD& key);
void onClose(bool app_quitting);
void onVisibilityChange(BOOL new_visibility);
// /*virtual*/ void draw();
connection_t setEditCommitSignal(edit_commit_signal_t::slot_type cb);
private:
/// sync the time slider with day cycle structure
void syncTimeSlider();
// makes sure key slider has what's in day cycle
void loadTrack();
/// makes sure day cycle data structure has what's in menu
void applyTrack();
/// refresh the sky presets combobox
void refreshSkyPresetsList();
/// refresh the day cycle combobox
void refreshDayCyclesList();
/// add a slider to the track
// void addSliderKey(F32 time, LLWLParamKey keyframe);
void initCallbacks();
// LLWLParamKey getSelectedDayCycle();
bool isNewDay() const;
void dumpTrack();
void enableEditing(bool enable);
void reset();
void saveRegionDayCycle();
void setApplyProgress(bool started);
bool getApplyProgress() const;
void onTimeSliderMoved(); /// time slider moved
void onKeyTimeMoved(); /// a key frame moved
void onKeyTimeChanged(); /// a key frame's time changed
void onKeyPresetChanged(); /// sky preset selected
void onAddKey(); /// new key added on slider
void onDeleteKey(); /// a key frame deleted
void onRegionSettingsChange();
void onRegionChange();
void onRegionSettingsApplied(bool success);
void onRegionInfoUpdate();
void onDayCycleNameEdited();
void onDayCycleSelected();
void onBtnSave();
void onBtnCancel();
bool onSaveAnswer(const LLSD& notification, const LLSD& response);
void onSaveConfirmed();
void onDayCycleListChange();
void onSkyPresetListChange();
static std::string getRegionName();
/// convenience class for holding keyframes mapped to sliders
// struct SliderKey
// {
// public:
// SliderKey(LLWLParamKey kf, F32 t) : keyframe(kf), time(t) {}
// SliderKey() : keyframe(), time(0.f) {} // Don't use this default constructor
// /// sync the time slider with day cycle structure
// void syncTimeSlider();
//
// LLWLParamKey keyframe;
// F32 time;
// };
// // makes sure key slider has what's in day cycle
// void loadTrack();
//
// /// makes sure day cycle data structure has what's in menu
// void applyTrack();
//
// /// refresh the sky presets combobox
void refreshSkyPresetsList();
static const F32 sHoursPerDay;
void onDayPresetChanged(); /// sky preset selected
LLLineEditor* mDayCycleNameEditor;
LLComboBox* mDayCyclesCombo;
LLMultiSliderCtrl* mTimeSlider;
LLMultiSliderCtrl* mKeysSlider;
LLComboBox* mSkyPresetsCombo;
LLTimeCtrl* mTimeCtrl;
LLCheckBoxCtrl* mMakeDefaultCheckBox;
LLButton* mSaveButton;
void onBtnSave();
void onBtnCancel();
// /// refresh the day cycle combobox
// void refreshDayCyclesList();
//
// /// add a slider to the track
// // void addSliderKey(F32 time, LLWLParamKey keyframe);
//
// void initCallbacks();
// // LLWLParamKey getSelectedDayCycle();
// bool isNewDay() const;
// void dumpTrack();
// void enableEditing(bool enable);
// void reset();
// void saveRegionDayCycle();
//
// void setApplyProgress(bool started);
// bool getApplyProgress() const;
//
// void onTimeSliderMoved(); /// time slider moved
// void onKeyTimeMoved(); /// a key frame moved
// void onKeyTimeChanged(); /// a key frame's time changed
// void onAddKey(); /// new key added on slider
// void onDeleteKey(); /// a key frame deleted
//
// void onRegionSettingsChange();
// void onRegionChange();
// void onRegionSettingsApplied(bool success);
// void onRegionInfoUpdate();
//
// void onDayCycleNameEdited();
// void onDayCycleSelected();
//
// bool onSaveAnswer(const LLSD& notification, const LLSD& response);
// void onSaveConfirmed();
//
// void onDayCycleListChange();
// void onSkyPresetListChange();
//
// static std::string getRegionName();
LLSettingsDay::ptr_t mSavedDay;
LLSettingsDay::ptr_t mEditDay;
LLComboBox* mDayPresetsCombo;
LLButton* mSaveButton;
LLButton* mCancelButton;
edit_commit_signal_t mCommitSignal;
// LLComboBox* mDayCyclesCombo;
// LLMultiSliderCtrl* mTimeSlider;
// LLMultiSliderCtrl* mKeysSlider;
// LLTimeCtrl* mTimeCtrl;
// LLCheckBoxCtrl* mMakeDefaultCheckBox;
// map of sliders to parameters
// std::map<std::string, SliderKey> mSliderToKey;

View File

@ -190,6 +190,8 @@ public:
protected:
virtual void doApply();
virtual void doEditCommited(LLSettingsDay::ptr_t &newday);
private:
LLViewerRegion * mLastRegion;
};
@ -3437,3 +3439,8 @@ void LLPanelRegionEnvironment::doApply()
LLEnvironment::instance().updateRegion(mEditingDayCycle, daylength.value(), dayoffset_s.value());
}
}
void LLPanelRegionEnvironment::doEditCommited(LLSettingsDay::ptr_t &newday)
{
mEditingDayCycle = newday;
}

View File

@ -412,67 +412,6 @@ protected:
/////////////////////////////////////////////////////////////////////////////
#if 0
class LLPanelEnvironmentInfo : public LLPanelRegionInfo
{
LOG_CLASS(LLPanelEnvironmentInfo);
public:
LLPanelEnvironmentInfo();
// LLPanel
/*virtual*/ BOOL postBuild();
/*virtual*/ void onOpen(const LLSD& key);
// LLView
/*virtual*/ void onVisibilityChange(BOOL new_visibility);
// LLPanelRegionInfo
/*virtual*/ bool refreshFromRegion(LLViewerRegion* region);
private:
void refresh();
void setControlsEnabled(bool enabled);
void setApplyProgress(bool started);
void setDirty(bool dirty);
void sendRegionSunUpdate();
void fixEstateSun();
void populateWaterPresetsList();
void populateSkyPresetsList();
void populateDayCyclesList();
bool getSelectedWaterParams(LLSD& water_params);
bool getSelectedSkyParams(LLSD& sky_params, std::string& preset_name);
bool getSelectedDayCycleParams(LLSD& day_cycle, LLSD& sky_map, short& scope);
void onSwitchRegionSettings();
void onSwitchDayCycle();
void onSelectWaterPreset();
void onSelectSkyPreset();
void onSelectDayCycle();
void onBtnApply();
void onBtnCancel();
void onRegionSettingschange();
void onRegionSettingsApplied(bool ok);
/// New environment settings that are being applied to the region.
// LLEnvironmentSettings mNewRegionSettings;
bool mEnableEditing;
LLRadioGroup* mRegionSettingsRadioGroup;
LLRadioGroup* mDayCycleSettingsRadioGroup;
LLComboBox* mWaterPresetCombo;
LLComboBox* mSkyPresetCombo;
LLComboBox* mDayCyclePresetCombo;
};
#endif
class LLPanelRegionExperiences : public LLPanelRegionInfo
{

View File

@ -37,6 +37,10 @@
#include "llslurl.h"
#include "lllayoutstack.h"
#include "llfloater.h"
#include "llfloaterreg.h"
#include "llfloatereditextdaycycle.h"
static LLPanelInjector<LLPanelEnvironmentInfo> register_environment_panel("environment_panel");
LLPanelEnvironmentInfo::LLPanelEnvironmentInfo():
@ -329,7 +333,11 @@ void LLPanelEnvironmentInfo::setDirty(bool dirty)
void LLPanelEnvironmentInfo::onSwitchDefaultSelection()
{
bool use_defaults = mRegionSettingsRadioGroup->getSelectedIndex() == 0;
getChild<LLView>("user_environment_settings")->setEnabled(!use_defaults);
getChild<LLView>("edit_btn")->setEnabled(!use_defaults);
mDayLengthSlider->setEnabled(!use_defaults);
mDayOffsetSlider->setEnabled(!use_defaults);
setDirty(true);
}
@ -352,8 +360,25 @@ void LLPanelEnvironmentInfo::onBtnCancel()
void LLPanelEnvironmentInfo::onBtnEdit()
{
LLFloaterEditExtDayCycle *dayeditor = (LLFloaterEditExtDayCycle *)LLFloaterReg::getInstance("env_edit_extdaycycle");
if (dayeditor)
{
dayeditor->setEditCommitSignal(boost::bind(&LLPanelEnvironmentInfo::onEditiCommited, this, _1));
dayeditor->openFloater();
}
}
void LLPanelEnvironmentInfo::onEditiCommited(LLSettingsDay::ptr_t newday)
{
doEditCommited(newday);
}
void LLPanelEnvironmentInfo::doEditCommited(LLSettingsDay::ptr_t &newday)
{
mEditingDayCycle = newday;
/*TODO pure virtual*/
}
// void LLPanelEnvironmentInfo::onRegionSettingschange()
// {

View File

@ -63,7 +63,10 @@ protected:
void onBtnCancel();
void onBtnEdit();
void onEditiCommited(LLSettingsDay::ptr_t newday);
virtual void doApply(); // = 0;
virtual void doEditCommited(LLSettingsDay::ptr_t &newday);
/// New environment settings that are being applied to the region.
// LLEnvironmentSettings mNewRegionSettings;

View File

@ -263,8 +263,8 @@ LLSettingsWater::ptr_t LLSettingsVOWater::buildFromLegacyPreset(const std::strin
LLSD results = LLSettingsWater::settingValidation(newsettings, validations);
if (!results["success"].asBoolean())
{
LL_WARNS("SETTINGS") << "Water setting validation failed!\n" << results << LL_ENDL;
LLSettingsWater::ptr_t();
LL_WARNS("SETTINGS") << "Water setting validation failed!: " << results << LL_ENDL;
return LLSettingsWater::ptr_t();
}
LLSettingsWater::ptr_t waterp = boost::make_shared<LLSettingsVOWater>(newsettings);
@ -292,8 +292,8 @@ LLSettingsWater::ptr_t LLSettingsVOWater::buildDefaultWater()
LLSD results = LLSettingsWater::settingValidation(settings, validations);
if (!results["success"].asBoolean())
{
LL_WARNS("SETTINGS") << "Water setting validation failed!\n" << results << LL_ENDL;
LLSettingsWater::ptr_t();
LL_WARNS("SETTINGS") << "Water setting validation failed!: " << results << LL_ENDL;
return LLSettingsWater::ptr_t();
}
LLSettingsWater::ptr_t waterp = boost::make_shared<LLSettingsVOWater>(settings);
@ -308,8 +308,8 @@ LLSettingsWater::ptr_t LLSettingsVOWater::buildClone()
LLSD results = LLSettingsWater::settingValidation(settings, validations);
if (!results["success"].asBoolean())
{
LL_WARNS("SETTINGS") << "Water setting validation failed!\n" << results << LL_ENDL;
LLSettingsWater::ptr_t();
LL_WARNS("SETTINGS") << "Water setting validation failed!: " << results << LL_ENDL;
return LLSettingsWater::ptr_t();
}
LLSettingsWater::ptr_t waterp = boost::make_shared<LLSettingsVOWater>(settings);
@ -414,31 +414,48 @@ LLSettingsVODay::LLSettingsVODay():
LLSettingsDay::ptr_t LLSettingsVODay::buildFromLegacyPreset(const std::string &name, const LLSD &oldsettings)
{
LLSD newsettings(defaults());
std::set<std::string> framenames;
newsettings[SETTING_NAME] = name;
newsettings[SETTING_DAYLENGTH] = static_cast<S32>(MINIMUM_DAYLENGTH);
LLSD watertrack = LLSDArray(
LLSDMap(SETTING_KEYKFRAME, LLSD::Real(0.0f))
(SETTING_KEYNAME, "Default"));
(SETTING_KEYNAME, "water:Default"));
LLSD skytrack = LLSD::emptyArray();
for (LLSD::array_const_iterator it = oldsettings.beginArray(); it != oldsettings.endArray(); ++it)
{
std::string framename = (*it)[1].asString();
LLSD entry = LLSDMap(SETTING_KEYKFRAME, (*it)[0].asReal())
(SETTING_KEYNAME, (*it)[1].asString());
(SETTING_KEYNAME, "sky:" + framename);
framenames.insert(framename);
skytrack.append(entry);
}
newsettings[SETTING_TRACKS] = LLSDArray(watertrack)(skytrack);
LLSD frames(LLSD::emptyMap());
{
LLSettingsWater::ptr_t pwater = LLEnvironment::instance().findWaterByName("Default");
frames["water:Default"] = pwater->getSettings();
}
for (std::set<std::string>::iterator itn = framenames.begin(); itn != framenames.end(); ++itn)
{
LLSettingsSky::ptr_t psky = LLEnvironment::instance().findSkyByName(*itn);
frames["sky:" + (*itn)] = psky->getSettings();
}
newsettings[SETTING_FRAMES] = frames;
LLSettingsDay::validation_list_t validations = LLSettingsDay::validationList();
LLSD results = LLSettingsDay::settingValidation(newsettings, validations);
if (!results["success"].asBoolean())
{
LL_WARNS("SETTINGS") << "Day setting validation failed!\n" << results << LL_ENDL;
LLSettingsDay::ptr_t();
LL_WARNS("SETTINGS") << "Day setting validation failed!: " << results << LL_ENDL;
return LLSettingsDay::ptr_t();
}
@ -463,51 +480,55 @@ LLSettingsDay::ptr_t LLSettingsVODay::buildFromLegacyPreset(const std::string &n
LLSettingsDay::ptr_t LLSettingsVODay::buildFromLegacyMessage(const LLUUID &regionId, LLSD daycycle, LLSD skydefs, LLSD waterdef)
{
LLSettingsWater::ptr_t water = LLSettingsVOWater::buildFromLegacyPreset("Region", waterdef);
if (!water)
{
LL_WARNS("WindlightCaps") << "Water construction failed." << LL_ENDL;
return LLSettingsDay::ptr_t();
}
LLEnvironment::namedSettingMap_t skys;
LLSD frames(LLSD::emptyMap());
for (LLSD::map_iterator itm = skydefs.beginMap(); itm != skydefs.endMap(); ++itm)
{
std::string name = (*itm).first;
LLSettingsSky::ptr_t sky = LLSettingsVOSky::buildFromLegacyPreset(name, (*itm).second);
LLSD newsettings = LLSettingsSky::translateLegacySettings((*itm).second);
std::string newname = "sky:" + (*itm).first;
if (!sky)
{
LL_WARNS("WindlightCaps") << "Sky construction failed." << LL_ENDL;
return LLSettingsDay::ptr_t();
}
newsettings[SETTING_NAME] = newname;
frames[newname] = newsettings;
skys[name] = sky;
LL_WARNS("WindlightCaps") << "created region sky '" << name << "'" << LL_ENDL;
LL_WARNS("SETTINGS") << "created region sky '" << newname << "'" << LL_ENDL;
}
LLSettingsDay::ptr_t dayp = buildFromLegacyPreset("Region (legacy)", daycycle);
LLSD watersettings = LLSettingsWater::translateLegacySettings(waterdef);
std::string watername = "water:"+ watersettings[SETTING_NAME].asString();
watersettings[SETTING_NAME] = watername;
frames[watername] = watersettings;
dayp->setWaterAtKeyframe(water, 0.0f);
LLSD watertrack = LLSDArray(
LLSDMap(SETTING_KEYKFRAME, LLSD::Real(0.0f))
(SETTING_KEYNAME, watername));
for (LLSD::array_iterator ita = daycycle.beginArray(); ita != daycycle.endArray(); ++ita)
LLSD skytrack(LLSD::emptyArray());
for (LLSD::array_const_iterator it = daycycle.beginArray(); it != daycycle.endArray(); ++it)
{
F32 frame = (*ita)[0].asReal();
std::string name = (*ita)[1].asString();
LLEnvironment::namedSettingMap_t::iterator it = skys.find(name);
if (it == skys.end())
continue;
dayp->setSkyAtKeyframe(boost::static_pointer_cast<LLSettingsSky>((*it).second), frame, 1);
LL_WARNS("WindlightCaps") << "Added '" << name << "' to region day cycle at " << frame << LL_ENDL;
LLSD entry = LLSDMap(SETTING_KEYKFRAME, (*it)[0].asReal())
(SETTING_KEYNAME, "sky:" + (*it)[1].asString());
skytrack.append(entry);
}
dayp->setInitialized();
LLSD newsettings = LLSDMap
( SETTING_NAME, "Region (legacy)" )
( SETTING_TRACKS, LLSDArray(watertrack)(skytrack))
( SETTING_FRAMES, frames );
LLSettingsSky::validation_list_t validations = LLSettingsSky::validationList();
LLSD results = LLSettingsDay::settingValidation(newsettings, validations);
if (!results["success"].asBoolean())
{
LL_WARNS("SETTINGS") << "Day setting validation failed!:" << results << LL_ENDL;
LLSettingsDay::ptr_t();
}
LLSettingsDay::ptr_t dayp = boost::make_shared<LLSettingsVODay>(newsettings);
if (dayp)
{
dayp->setInitialized();
}
return dayp;
}
@ -555,13 +576,13 @@ LLSettingsDay::ptr_t LLSettingsVODay::buildClone()
LLSD results = LLSettingsDay::settingValidation(settings, validations);
if (!results["success"].asBoolean())
{
LL_WARNS("SETTINGS") << "Water setting validation failed!\n" << results << LL_ENDL;
LL_WARNS("SETTINGS") << "Day setting validation failed!\n" << results << LL_ENDL;
LLSettingsDay::ptr_t();
}
LLSettingsDay::ptr_t dayp = boost::make_shared<LLSettingsVODay>(settings);
dayp->initialize();
return dayp;
}

View File

@ -226,7 +226,7 @@ void LLViewerFloaterReg::registerFloaters()
LLFloaterReg::add("env_edit_water", "floater_edit_water_preset.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterEditWater>);
LLFloaterReg::add("env_edit_day_cycle", "floater_edit_day_cycle.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterEditDayCycle>);
LLFloaterReg::add("env_edit_extdaycycle", "floater_edit_ext_daycycle.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterEditExtDayCycle>);
LLFloaterReg::add("env_edit_extdaycycle", "floater_edit_ext_day_cycle.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterEditExtDayCycle>);
LLFloaterReg::add("event", "floater_event.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterEvent>);

View File

@ -1,13 +1,13 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
legacy_header_height="18"
height="381"
layout="topleft"
name="Edit Day cycle"
help_topic="day_presets"
save_rect="true"
title="Edit Day Cycle"
width="705">
legacy_header_height="18"
height="500"
layout="topleft"
name="env_edit_extdaycycle"
help_topic="day_presets"
save_rect="true"
title="Edit Day Cycle"
width="705">
<string name="title_new">Create a New Day Cycle</string>
<string name="title_edit">Edit Day Cycle</string>
@ -15,471 +15,130 @@
<string name="hint_edit">To edit your day cycle, adjust the controls below and click "Save".</string>
<string name="combo_label">-Select a preset-</string>
<text
follows="top|left|right"
height="10"
layout="topleft"
left="10"
name="hint"
top="25"
width="685" />
<text
follows="top|left|right"
font="SansSerif"
height="10"
layout="topleft"
left="10"
name="label"
top_pad="25"
width="120">
Preset Name:
</text>
<combo_box
allow_text_entry="true"
follows="top|left"
layout="topleft"
left_pad="10"
max_chars="100"
name="day_cycle_combo"
top_delta="-5"
width="200" />
<line_editor
height="20"
left_delta="0"
name="day_cycle_name"
top_delta="0"
visible="true"
width="200" />
<text
follows="top|left|right"
height="95"
layout="topleft"
left_pad="10"
name="note"
top_delta="0"
width="345"
wrap="true">
Note: if you change the name of your preset, you will be creating a new preset and the existing preset will not be changed.
</text>
<!--======== Controls panel ========-->
<text
follows="left|top|right"
height="10"
layout="topleft"
left="10"
name="hint_item1"
top="100"
width="300">
- Click on a tab to edit the specific sky settings and time.
</text>
<text
follows="left|top|right"
height="10"
layout="topleft"
name="hint_item2"
top_pad="10"
width="300">
- Click and drag the tabs to set the transition times.
</text>
<text
follows="left|top|right"
height="10"
layout="topleft"
name="hint_item3"
top_pad="10"
width="300">
- Use the scrubber to preview your day cycle.
</text>
<panel
follows="top|left"
height="100"
name="day_cycle_slider_panel"
layout="topleft"
left_delta="25"
top_pad="15"
width="660">
<multi_slider
can_edit_text="true"
control_name="WLTimeSlider"
decimal_digits="0"
draw_track="false"
follows="bottom"
height="10"
increment="0.0833333"
initial_value="0"
layout="topleft"
left="20"
max_sliders="20"
max_val="24"
name="WLTimeSlider"
show_text="false"
top_pad="0"
use_triangle="true"
width="525" />
<multi_slider
can_edit_text="true"
control_name="WLDayCycleKeys"
decimal_digits="0"
follows="bottom"
height="10"
increment="0.0833333"
initial_value="0"
layout="topleft"
left_delta="0"
max_sliders="20"
max_val="24"
name="WLDayCycleKeys"
show_text="false"
top_pad="15"
width="525" />
<button
height="20"
label="Add Key"
label_selected="Add Key"
layout="topleft"
left_pad="20"
name="WLAddKey"
top_delta="-18"
width="96" />
<button
height="20"
label="Delete Key"
label_selected="Delete Key"
layout="topleft"
name="WLDeleteKey"
top_pad="5"
width="96" />
<text
type="string"
length="1"
border_visible="true"
follows="left|top|right"
height="16"
layout="topleft"
left="8"
name="WL12am"
top="74"
width="55">
12am
</text>
<text
type="string"
length="1"
border_visible="true"
follows="left|top|right"
height="16"
layout="topleft"
left_pad="10"
name="WL3am"
top_delta="0"
width="55">
3am
</text>
<text
type="string"
length="1"
border_visible="true"
follows="left|top|right"
height="16"
layout="topleft"
left_pad="10"
name="WL6am"
top_delta="0"
width="55">
6am
</text>
<text
type="string"
length="1"
border_visible="true"
follows="left|top|right"
height="16"
layout="topleft"
left_pad="10"
name="WL9amHash"
top_delta="0"
width="55">
9am
</text>
<text
type="string"
length="1"
border_visible="true"
follows="left|top|right"
height="16"
layout="topleft"
left_pad="10"
name="WL12pmHash"
top_delta="0"
width="55">
12pm
</text>
<text
type="string"
length="1"
border_visible="true"
follows="left|top|right"
height="16"
layout="topleft"
left_pad="10"
name="WL3pm"
top_delta="0"
width="55">
3pm
</text>
<text
type="string"
length="1"
border_visible="true"
follows="left|top|right"
height="16"
layout="topleft"
left_pad="10"
name="WL6pm"
top_delta="0"
width="55">
6pm
</text>
<text
type="string"
length="1"
border_visible="true"
follows="left|top|right"
height="16"
layout="topleft"
left_pad="10"
name="WL9pm"
top_delta="0"
width="55">
9pm
</text>
<text
type="string"
length="1"
border_visible="true"
follows="left|top|right"
height="16"
layout="topleft"
left_pad="10"
name="WL12am2"
top_delta="0"
width="55">
12am
</text>
<text
type="string"
length="1"
border_visible="true"
follows="left|top|right"
font="SansSerif"
height="14"
layout="topleft"
left="20"
name="WL12amHash"
top="54"
width="6">
|
</text>
<text
type="string"
length="1"
border_visible="true"
follows="left|top|right"
font="SansSerif"
height="11"
layout="topleft"
left_pad="59"
name="WL3amHash"
top_delta="3"
width="6">
I
</text>
<text
type="string"
length="1"
border_visible="true"
follows="left|top|right"
font="SansSerif"
height="14"
layout="topleft"
left_pad="59"
name="WL6amHash"
top_delta="-3"
width="6">
|
</text>
<text
type="string"
length="1"
border_visible="true"
follows="left|top|right"
font="SansSerif"
height="11"
layout="topleft"
left_pad="59"
name="WL9amHash2"
top_delta="3"
width="6">
I
</text>
<text
type="string"
length="1"
border_visible="true"
follows="left|top|right"
font="SansSerif"
height="14"
layout="topleft"
left_pad="59"
name="WL12pmHash2"
top_delta="-3"
width="6">
|
</text>
<text
type="string"
length="1"
border_visible="true"
follows="left|top|right"
font="SansSerif"
height="11"
layout="topleft"
left_pad="59"
name="WL3pmHash"
top_delta="3"
width="6">
I
</text>
<text
type="string"
length="1"
border_visible="true"
follows="left|top|right"
font="SansSerif"
height="14"
layout="topleft"
left_pad="59"
name="WL6pmHash"
top_delta="-3"
width="6">
|
</text>
<text
type="string"
length="1"
border_visible="true"
follows="left|top|right"
font="SansSerif"
height="11"
layout="topleft"
left_pad="59"
name="WL9pmHash"
top_delta="3"
width="6">
I
</text>
<text
type="string"
length="1"
border_visible="true"
follows="left|top|right"
font="SansSerif"
height="14"
layout="topleft"
left_pad="59"
name="WL12amHash2"
top_delta="-3"
width="6">
|
</text>
</panel>
<text
type="string"
length="1"
border_visible="true"
follows="left|top|right"
font="SansSerif"
height="16"
layout="topleft"
left_delta="192"
name="WLCurKeyPresetText"
top_pad="10"
width="80">
Sky Setting:
</text>
<combo_box
height="18"
label="Preset"
layout="topleft"
left_pad="5"
name="WLSkyPresets"
width="205" />
<text
type="string"
length="1"
border_visible="true"
follows="left|top|right"
font="SansSerif"
height="16"
layout="topleft"
left_delta="-40"
name="WLCurKeyTimeText"
top_pad="15"
width="35">
Time:
</text>
<time
follows="left|top"
height="16"
label_width="0"
layout="topleft"
left_pad="3"
name="time"
top_delta="-1"
value="6:00 AM"
width="75"/>
<view_border
bevel_style="none"
follows="top|left"
height="0"
layout="topleft"
left="10"
name="horiz_separator"
top_pad="20"
width="685"/>
<loading_indicator
height="23"
layout="topleft"
left="25"
name="progress_indicator"
top="350"
visible="false"
width="23" />
<check_box
follows="top|left"
height="10"
label="Make this my new day cycle"
layout="topleft"
left="310"
name="make_default_cb"
top_delta="13"
width="230"/>
<button
follows="bottom|right"
height="23"
label="Save"
layout="topleft"
left_pad="0"
name="save"
top_delta="-13"
width="70"/>
<button
follows="bottom|right"
height="23"
label="Cancel"
layout="topleft"
left_pad="15"
name="cancel"
top_delta="0"
width="70"/>
</floater>
<layout_stack name="test_stack"
width="705"
height="500"
follows="all"
orientation="vertical">
<layout_panel name="temp"
border="false"
auto_resize="false"
user_resize="true"
height="30"
min_height="30"
background_visible="false">
<!-- This layout_panel is for loading legacy presets -->
<text
follows="top|left|right"
font="SansSerif"
height="10"
layout="topleft"
name="label"
top_offset="20"
left_offset="10"
width="120">
Preset Name:
</text>
<combo_box
allow_text_entry="true"
follows="top|left"
layout="topleft"
left_pad="10"
max_chars="100"
name="day_cycle_preset_combo"
top_delta="-5"
width="200" />
</layout_panel>
<layout_panel name="timeline"
border="true"
bevel_style="in"
auto_resize="false"
user_resize="true"
bg_alpha_color="red"
height="150"
min_height="0"
visible="true"
background_visible="true">
<text
follows="top|left|right"
font="SansSerif"
height="10"
layout="topleft"
name="label"
top_offset="20"
left_offset="10"
width="120">
Time Line Goes here
</text>
</layout_panel>
<layout_panel name="flex"
auto_resize="true"
user_resize="true"
bg_alpha_color="blue"
height="11"
min_height="0"
visible="true"
background_visible="true">
<tab_container
follows="all"
halign="left"
height="386"
layout="topleft"
left_offset="0"
name="landtab"
tab_position="top"
tab_width="140"
tab_padding_right="3"
top_offset="6"
width="633">
<panel
border="true"
follows="all"
label="DUMMY"
layout="topleft"
left="0"
help_topic="land_general_tab"
name="land_general_panel"
top="0">
<text
follows="top|left|right"
font="SansSerif"
height="10"
layout="center"
name="label"
top_offset="20"
left_offset="10"
width="300">
Space For editing selected frame
</text>
</panel>
</tab_container>
</layout_panel>
<layout_panel name="buttons"
auto_resize="false"
user_resize="true"
height="43"
min_height="0"
background_visible="false">
<button
follows="top|left"
height="23"
label="Save"
left_offset="160"
top_offset="60"
name="save_btn"
width="100" />
<button
follows="top|left"
height="23"
label="Cancel"
layout="topleft"
left_pad="10"
name="cancel_btn"
width="100" />
</layout_panel>
</layout_stack>
</floater>

View File

@ -10,172 +10,217 @@
name="Test Floater"
title="LAYOUTSTACK TESTS"
width="420">
<layout_stack
<layout_stack name="test_stack"
left="0"
top="0"
width="420"
width="100"
height="250"
follows="left|right|top|bottom"
follows="left|top|bottom"
orientation="vertical">
<layout_panel
<layout_panel name="flex"
auto_resize="true"
user_resize="true"
bg_alpha_color="red"
max_height="200"
background_visible="false">
<layout_stack
left="5"
top="5"
right="-5"
follows="left|right|top|bottom"
orientation="horizontal">
<layout_panel
border="true"
bevel_style="in"
auto_resize="false"
user_resize="false"
width="160"
background_visible="true">
<text follows="top|left"
halign="left"
text_color="white">Environment Source</text>
<radio_group
follows="top|left"
height="45"
layout="topleft"
left_delta="10"
name="environment_select_radio_group"
bottom_delta="50"
max_width="200"
width="200">
<radio_item
label="Default Environment"
layout="topleft"
name="use_default_setting"
height="20"/>
<radio_item
label="Custom Environment"
layout="topleft"
height="20"
name="use_custom_setting"/>
</radio_group>
<button
follows="top|left"
height="23"
label="Edit Custom"
left_delta="30"
bottom_delta="30"
width="100"
name="edit_btn"/>
</layout_panel>
<layout_panel
border="true"
bevel_style="in"
auto_resize="false"
user_resize="true"
height="11"
width="220"
background_visible="true">
<text follows="top|left|right"
halign="left"
text_color="white">Day Settings</text>
<text
type="string"
length="1"
follows="left|top"
height="12"
layout="topleft"
left_delta="10"
top_pad="10"
width="200">
Day Length (hours)
</text>
<slider
can_edit_text="true"
control_name="DayLengthSLD"
decimal_digits="1"
follows="left|top"
height="20"
increment="0.5"
initial_value="4"
layout="topleft"
left_delta="0"
top_pad="6"
name="day_length_sld"
min_val="4"
max_val="178"
width="200" />
<text
type="string"
length="1"
follows="left|top"
height="12"
layout="topleft"
left_delta="0"
top_pad="10"
width="200">
Day Offset (hours)
</text>
<slider
can_edit_text="true"
control_name="DayOffsetSLD"
decimal_digits="1"
follows="left|top"
height="20"
increment="0.5"
initial_value="-8"
layout="topleft"
left_delta="0"
top_pad="6"
name="day_offset_sld"
min_val="-12"
max_val="12"
width="200" />
</layout_panel>
<layout_panel name="flex"
auto_resize="true"
user_resize="true"
visible="false"
bg_alpha_color="blue"
height="100"
background_visible="true">
</layout_panel>
</layout_stack>
bg_alpha_color="blue"
height="11"
min_height="0"
background_visible="true">
<text follows="top|left|right" halign="center" text_color="white">flex</text>
</layout_panel>
<layout_panel name="flex"
auto_resize="true"
user_resize="true"
bg_alpha_color="blue"
height="11"
min_height="0"
background_visible="false">
<check_box
control_name="may_override_chk"
height="16"
label="Parcel Owners May Override"
layout="topleft"
left="10"
top="10"
name="allow_override_chk"
width="200" />
<button
follows="bottom|left"
height="23"
label="Apply"
right="-160"
bottom="-30"
name="apply_btn"
width="100" />
<button
follows="bottom|left"
height="23"
label="Cancel"
layout="topleft"
left_pad="10"
name="cancel_btn"
width="100" />
visible="false"
background_visible="true">
<text follows="top|left|right" halign="center" text_color="white">flex</text>
</layout_panel>
<layout_panel name="flex"
auto_resize="true"
user_resize="true"
bg_alpha_color="blue"
height="11"
min_height="0"
visible="true"
background_visible="true">
<text follows="top|left|right" halign="center" text_color="white">flex</text>
</layout_panel>
<layout_panel name="flex"
auto_resize="true"
user_resize="true"
bg_alpha_color="blue"
height="11"
min_height="0"
background_visible="true">
<text follows="top|left|right" halign="center" text_color="white">flex</text>
</layout_panel>
</layout_stack>
<layout_stack name="test_stack"
left_pad="5"
top="0"
width="100"
height="250"
follows="left|top|bottom"
orientation="vertical">
<layout_panel name="flex"
auto_resize="true"
user_resize="true"
bg_alpha_color="blue"
height="100"
background_visible="true">
<text follows="top|left|right" halign="center" text_color="white">flex</text>
</layout_panel>
<layout_panel name="flex"
auto_resize="true"
user_resize="true"
visible="false"
bg_alpha_color="blue"
height="100"
background_visible="true">
<text follows="top|left|right" halign="center" text_color="white">flex</text>
</layout_panel>
<layout_panel name="fixed"
auto_resize="false"
user_resize="true"
height="50"
min_height="10"
bg_alpha_color="green"
background_visible="true">
<text follows="top|left|right" halign="center" text_color="black">fixed</text>
</layout_panel>
<layout_panel name="fixed"
auto_resize="false"
user_resize="true"
height="50"
min_height="10"
bg_alpha_color="green"
background_visible="true">
<text follows="top|left|right" halign="center" text_color="black">fixed</text>
</layout_panel>
<layout_panel name="flex"
auto_resize="true"
user_resize="true"
bg_alpha_color="blue"
height="100"
background_visible="true">
<text follows="top|left|right" halign="center" text_color="white">flex</text>
</layout_panel>
<layout_panel name="flex"
auto_resize="true"
user_resize="true"
bg_alpha_color="blue"
height="100"
background_visible="true">
<text follows="top|left|right" halign="center" text_color="white">flex</text>
</layout_panel>
<layout_panel name="flex"
auto_resize="true"
user_resize="true"
bg_alpha_color="blue"
height="100"
background_visible="true">
<text follows="top|left|right" halign="center" text_color="white">flex</text>
</layout_panel>
<layout_panel name="flex"
auto_resize="true"
user_resize="true"
bg_alpha_color="blue"
height="100"
visible="true"
background_visible="true">
<text follows="top|left|right" halign="center" text_color="white">flex</text>
</layout_panel>
</layout_stack>
<layout_stack name="test_stack"
left_pad="5"
top="0"
width="100"
height="250"
follows="left|top|bottom"
orientation="vertical">
<layout_panel name="flex"
auto_resize="true"
user_resize="true"
height="11"
bg_alpha_color="blue"
background_visible="true">
<text follows="top|left|right" halign="center" text_color="white">flex</text>
</layout_panel>
<layout_panel name="fixed"
auto_resize="false"
user_resize="true"
height="50"
bg_alpha_color="green"
background_visible="true">
<text follows="top|left|right" halign="center" text_color="black">fixed</text>
</layout_panel>
<layout_panel name="flex"
auto_resize="true"
user_resize="true"
bg_alpha_color="blue"
height="11"
background_visible="true">
<text follows="top|left|right" halign="center" text_color="white">flex</text>
</layout_panel>
</layout_stack>
<layout_stack name="test_stack"
left_pad="5"
top="0"
width="100"
height="250"
follows="left|top|bottom"
orientation="vertical">
<layout_panel name="fixed"
auto_resize="false"
user_resize="true"
height="50"
bg_alpha_color="green"
background_visible="true">
<text follows="top|left|right" halign="center" text_color="black">fixed</text>
</layout_panel>
<layout_panel name="fixed"
auto_resize="false"
user_resize="true"
height="50"
bg_alpha_color="green"
background_visible="true">
<text follows="top|left|right" halign="center" text_color="black">fixed</text>
</layout_panel>
<layout_panel name="fixed"
auto_resize="false"
user_resize="true"
height="50"
bg_alpha_color="green"
background_visible="true">
<text follows="top|left|right" halign="center" text_color="black">fixed</text>
</layout_panel>
<layout_panel name="flex"
auto_resize="true"
user_resize="true"
bg_alpha_color="blue"
height="11"
min_height="0"
background_visible="true">
<text follows="top|left|right" halign="center" text_color="white">flex</text>
</layout_panel>
<layout_panel name="flex"
auto_resize="true"
user_resize="true"
bg_alpha_color="blue"
height="11"
min_height="0"
background_visible="true">
<text follows="top|left|right" halign="center" text_color="white">flex</text>
</layout_panel>
<layout_panel name="flex"
auto_resize="true"
user_resize="true"
bg_alpha_color="blue"
height="11"
min_height="0"
background_visible="true">
<text follows="top|left|right" halign="center" text_color="white">flex</text>
</layout_panel>
</layout_stack>
</floater>