summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
authorandreykproductengine <andreykproductengine@lindenlab.com>2018-05-11 20:10:08 +0300
committerandreykproductengine <andreykproductengine@lindenlab.com>2018-05-11 20:10:08 +0300
commitcef4e29b901c5a8964e53ec3eb6659faeea0059a (patch)
treec91810c6c53c4b82617a7a77ccb3945946ac6f89 /indra
parent3c18de21369260ec9b7ba39c0e360045dd65e30d (diff)
MAINT-8344 Day cycle editor (part 1)
Diffstat (limited to 'indra')
-rw-r--r--indra/llinventory/llsettingsdaycycle.cpp49
-rw-r--r--indra/llinventory/llsettingsdaycycle.h3
-rw-r--r--indra/newview/llfloatereditextdaycycle.cpp262
-rw-r--r--indra/newview/llfloatereditextdaycycle.h38
-rw-r--r--indra/newview/llviewerwindow.cpp2
-rw-r--r--indra/newview/skins/default/xui/en/floater_edit_ext_day_cycle.xml476
6 files changed, 701 insertions, 129 deletions
diff --git a/indra/llinventory/llsettingsdaycycle.cpp b/indra/llinventory/llsettingsdaycycle.cpp
index 70826d1410..3f60430715 100644
--- a/indra/llinventory/llsettingsdaycycle.cpp
+++ b/indra/llinventory/llsettingsdaycycle.cpp
@@ -483,7 +483,7 @@ void LLSettingsDay::updateSettings()
//=========================================================================
LLSettingsDay::KeyframeList_t LLSettingsDay::getTrackKeyframes(S32 trackno)
{
- if ((trackno < 1) || (trackno >= TRACK_MAX))
+ if ((trackno < 0) || (trackno >= TRACK_MAX))
{
LL_WARNS("DAYCYCLE") << "Attempt get track (#" << trackno << ") out of range!" << LL_ENDL;
return KeyframeList_t();
@@ -508,6 +508,17 @@ void LLSettingsDay::setWaterAtKeyframe(const LLSettingsWaterPtr_t &water, F32 ke
setDirtyFlag(true);
}
+const LLSettingsWaterPtr_t LLSettingsDay::getWaterAtKeyframe(F32 keyframe)
+{
+ // todo: better way to identify keyframes?
+ CycleTrack_t::iterator iter = mDayTracks[TRACK_WATER].find(keyframe);
+ if (iter != mDayTracks[TRACK_WATER].end())
+ {
+ return std::dynamic_pointer_cast<LLSettingsWater>(iter->second);
+ }
+
+ return LLSettingsWaterPtr_t(NULL);
+}
void LLSettingsDay::setSkyAtKeyframe(const LLSettingsSkyPtr_t &sky, F32 keyframe, S32 track)
{
@@ -521,6 +532,42 @@ void LLSettingsDay::setSkyAtKeyframe(const LLSettingsSkyPtr_t &sky, F32 keyframe
setDirtyFlag(true);
}
+const LLSettingsSkyPtr_t LLSettingsDay::getSkyAtKeyframe(F32 keyframe, S32 track)
+{
+ if ((track < 1) || (track >= TRACK_MAX))
+ {
+ LL_WARNS("DAYCYCLE") << "Attempt to set sky track (#" << track << ") out of range!" << LL_ENDL;
+ return LLSettingsSkyPtr_t(NULL);
+ }
+
+ // todo: better way to identify keyframes?
+ CycleTrack_t::iterator iter = mDayTracks[track].find(keyframe);
+ if (iter != mDayTracks[track].end())
+ {
+ return std::dynamic_pointer_cast<LLSettingsSky>(iter->second);
+ }
+
+ return LLSettingsSkyPtr_t(NULL);
+}
+
+const LLSettingsBase::ptr_t LLSettingsDay::getSettingsAtKeyframe(F32 keyframe, S32 track)
+{
+ if ((track < 0) || (track >= TRACK_MAX))
+ {
+ LL_WARNS("DAYCYCLE") << "Attempt to set sky track (#" << track << ") out of range!" << LL_ENDL;
+ return LLSettingsBase::ptr_t(NULL);
+ }
+
+ // todo: better way to identify keyframes?
+ CycleTrack_t::iterator iter = mDayTracks[track].find(keyframe);
+ if (iter != mDayTracks[track].end())
+ {
+ return iter->second;
+ }
+
+ return LLSettingsSkyPtr_t(NULL);
+}
+
LLSettingsDay::TrackBound_t LLSettingsDay::getBoundingEntries(LLSettingsDay::CycleTrack_t &track, F32 keyframe)
{
return TrackBound_t(get_wrapping_atbefore(track, keyframe), get_wrapping_atafter(track, keyframe));
diff --git a/indra/llinventory/llsettingsdaycycle.h b/indra/llinventory/llsettingsdaycycle.h
index da572572c4..93c275bfb8 100644
--- a/indra/llinventory/llsettingsdaycycle.h
+++ b/indra/llinventory/llsettingsdaycycle.h
@@ -88,7 +88,10 @@ public:
KeyframeList_t getTrackKeyframes(S32 track);
void setWaterAtKeyframe(const LLSettingsWaterPtr_t &water, F32 keyframe);
+ const LLSettingsWaterPtr_t getWaterAtKeyframe(F32 keyframe);
void setSkyAtKeyframe(const LLSettingsSkyPtr_t &sky, F32 keyframe, S32 track);
+ const LLSettingsSkyPtr_t getSkyAtKeyframe(F32 keyframe, S32 track);
+ const LLSettingsBase::ptr_t getSettingsAtKeyframe(F32 keyframe, S32 track);
//---------------------------------------------------------------------
void startDayCycle();
diff --git a/indra/newview/llfloatereditextdaycycle.cpp b/indra/newview/llfloatereditextdaycycle.cpp
index c1063218fb..e41259feb3 100644
--- a/indra/newview/llfloatereditextdaycycle.cpp
+++ b/indra/newview/llfloatereditextdaycycle.cpp
@@ -45,16 +45,26 @@
#include "llagent.h"
#include "llregioninfomodel.h"
#include "llviewerregion.h"
+#include "llpaneleditwater.h"
+#include "llpaneleditsky.h"
#include "llenvironment.h"
#include "lltrans.h"
+static const std::string track_tabs[] = {
+ "water_track",
+ "sky4_track",
+ "sky3_track",
+ "sky2_track",
+ "sky1_track",
+ };
+
LLFloaterEditExtDayCycle::LLFloaterEditExtDayCycle(const LLSD &key):
LLFloater(key),
- mDayPresetsCombo(NULL),
mSaveButton(NULL),
- mCancelButton(NULL)
+ mCancelButton(NULL),
+ mCurrentTrack(1)
// mDayCyclesCombo(NULL)
// , mTimeSlider(NULL)
// , mKeysSlider(NULL)
@@ -62,32 +72,37 @@ LLFloaterEditExtDayCycle::LLFloaterEditExtDayCycle(const LLSD &key):
// , mMakeDefaultCheckBox(NULL)
// ,
{
+ mCommitCallbackRegistrar.add("DayCycle.Track", boost::bind(&LLFloaterEditExtDayCycle::onTrackSelectionCallback, this, _2));
}
// virtual
BOOL LLFloaterEditExtDayCycle::postBuild()
{
+ getChild<LLButton>("add_frame")->setCommitCallback(boost::bind(&LLFloaterEditExtDayCycle::onAddTrack, this));
+ getChild<LLButton>("delete_frame")->setCommitCallback(boost::bind(&LLFloaterEditExtDayCycle::onRemoveTrack, this));
+ getChild<LLLineEditor>("day_cycle_name")->setKeystrokeCallback(boost::bind(&LLFloaterEditExtDayCycle::onCommitName, this, _1, _2), NULL);
+
// mDayCyclesCombo = getChild<LLComboBox>("day_cycle_preset_combo");
// mTimeSlider = getChild<LLMultiSliderCtrl>("WLTimeSlider");
// mKeysSlider = getChild<LLMultiSliderCtrl>("WLDayCycleKeys");
- mDayPresetsCombo = getChild<LLComboBox>("day_cycle_preset_combo");
// mTimeCtrl = getChild<LLTimeCtrl>("time");
- mSaveButton = getChild<LLButton>("save_btn");
- mCancelButton = getChild<LLButton>("cancel_btn");
- mUploadButton = getChild<LLButton>("upload_btn");
+ mSaveButton = getChild<LLButton>("save_btn", true);
+ mCancelButton = getChild<LLButton>("cancel_btn", true);
+ mUploadButton = getChild<LLButton>("upload_btn", true);
+ mKeysSlider = getChild<LLMultiSliderCtrl>("WLDayCycleKeys");
+ mSkyTabContainer = getChild<LLView>("frame_settings_sky", true);
+ mWaterTabContainer = getChild<LLView>("frame_settings_water", true);
// mMakeDefaultCheckBox = getChild<LLCheckBoxCtrl>("make_default_cb");
+ //initCallbacks();
- mDayPresetsCombo->setCommitCallback(boost::bind(&LLFloaterEditExtDayCycle::onDayPresetChanged, this));
mSaveButton->setCommitCallback(boost::bind(&LLFloaterEditExtDayCycle::onBtnSave, this));
mCancelButton->setCommitCallback(boost::bind(&LLFloaterEditExtDayCycle::onBtnCancel, this));
mUploadButton->setCommitCallback(boost::bind(&LLFloaterEditExtDayCycle::onUpload, this));
- //initCallbacks();
-// // add the time slider
-// mTimeSlider->addSlider();
+ getChild<LLButton>("sky4_track", true)->setToggleState(true);
return TRUE;
}
@@ -97,7 +112,52 @@ void LLFloaterEditExtDayCycle::onOpen(const LLSD& key)
LLEnvironment::instance().setSelectedEnvironment(LLEnvironment::ENV_EDIT);
LLEnvironment::instance().updateEnvironment();
- refreshSkyPresetsList();
+
+ {
+ // TODO/TEMP
+ LLSettingsDay::ptr_t pday = LLEnvironment::instance().getEnvironmentDay(LLEnvironment::ENV_REGION);
+ mEditDay = pday->buildClone(); // pday should be passed as parameter
+ }
+
+ LLLineEditor* name_field = getChild<LLLineEditor>("day_cycle_name");
+ name_field->setText(mEditDay->getName());
+
+ selectTrack(mCurrentTrack);
+
+ /* TODO
+ if (mEditDay->hasSetting("cycle length")) // todo: figure out name
+ {
+ // extract setting
+ S32 extracted_time =
+ std::string time = LLTrans::getString("time_label", LLSD("TIME",(extracted_time * 0..100%) + offset));
+ std::string descr = LLTrans::getString("0_label", LLSD("DSC",time));
+ getChild<LLView>("p0")->setLabel(descr);
+ ...
+
+ getChild<LLView>("p1")->setLabel(descr);
+ time =
+ descr =
+ getChild<LLView>("p2")->setLabel(descr);
+ time =
+ descr =
+ getChild<LLView>("p3")->setLabel(descr);
+ time =
+ descr =
+ getChild<LLView>("p4")->setLabel(descr);
+ }
+ else
+ {
+ std::string descr = LLTrans::getString("0_label", LLSD());
+ getChild<LLView>("p0")->setLabel(descr);
+
+ }
+ */
+
+
+ /*list_name_id_t getSkyList() const;
+ list_name_id_t getWaterList() const;
+
+ getChild<LLButton>("sky4_track", true)->setToggleState(true);*/
}
void LLFloaterEditExtDayCycle::onClose(bool app_quitting)
@@ -183,54 +243,146 @@ void LLFloaterEditExtDayCycle::onVisibilityChange(BOOL new_visibility)
}
}
-//-------------------------------------------------------------------------
-void LLFloaterEditExtDayCycle::onDayPresetChanged()
+void LLFloaterEditExtDayCycle::onBtnSave()
{
- std::string dayname = mDayPresetsCombo->getSelectedValue().asString();
+ if (!mCommitSignal.empty())
+ mCommitSignal(mEditDay);
+ closeFloater();
+}
- LLSettingsDay::ptr_t pday = LLEnvironment::instance().findDayCycleByName(dayname);
+void LLFloaterEditExtDayCycle::onBtnCancel()
+{
+ closeFloater();
+}
- if (pday)
+void LLFloaterEditExtDayCycle::onAddTrack()
+{
+ F32 frame = 0; // temp?
+ mKeysSlider->addSlider(frame);
+ if (mCurrentTrack == 0)
{
- pday = pday->buildClone();
- LLEnvironment::instance().setEnvironment(LLEnvironment::ENV_EDIT, pday, LLSettingsDay::DEFAULT_DAYLENGTH, LLSettingsDay::DEFAULT_DAYOFFSET);
- mEditDay = pday;
+ mEditDay->setWaterAtKeyframe(LLSettingsVOWater::buildDefaultWater(), frame);
}
+ else
+ {
+ mEditDay->setSkyAtKeyframe(LLSettingsVOSky::buildDefaultSky(), frame, mCurrentTrack);
+ }
+}
+void LLFloaterEditExtDayCycle::onRemoveTrack()
+{
+ //mKeysSlider->deleteCurSlider();
}
-void LLFloaterEditExtDayCycle::onBtnSave()
+void LLFloaterEditExtDayCycle::onCommitName(class LLLineEditor* caller, void* user_data)
{
- if (!mCommitSignal.empty())
- mCommitSignal(mEditDay);
- closeFloater();
+ mEditDay->setName(caller->getText());
}
-void LLFloaterEditExtDayCycle::onBtnCancel()
+void LLFloaterEditExtDayCycle::onTrackSelectionCallback(const LLSD& user_data)
{
- closeFloater();
+ U32 track_index = user_data.asInteger(); // 1-5
+ selectTrack(track_index);
}
+void LLFloaterEditExtDayCycle::selectTrack(U32 track_index)
+{
+ mCurrentTrack = track_index;
+ LLButton* button = getChild<LLButton>(track_tabs[track_index], true);
+ if (button->getToggleState())
+ {
+ return;
+ }
-//-------------------------------------------------------------------------
-void LLFloaterEditExtDayCycle::refreshSkyPresetsList()
+ for (int i = 0; i < 5; i++)
+ {
+ getChild<LLButton>(track_tabs[i], true)->setToggleState(false);
+ }
+
+ button->setToggleState(true);
+
+ updateTabs();
+ updateSlider();
+}
+
+void LLFloaterEditExtDayCycle::updateTabs()
{
- mDayPresetsCombo->removeall();
+ bool show_water = mCurrentTrack == 0;
+ mSkyTabContainer->setVisible(!show_water);
+ mWaterTabContainer->setVisible(show_water);
- LLEnvironment::list_name_id_t cyclelist = LLEnvironment::instance().getDayCycleList();
+ if (show_water)
+ {
+ updateWaterTabs();
+ }
+ else
+ {
+ updateSkyTabs();
+ }
+}
- mDayPresetsCombo->removeall();
+void LLFloaterEditExtDayCycle::updateWaterTabs()
+{
+ const LLSettingsWaterPtr_t p_water = mEditDay->getWaterAtKeyframe(mKeysSlider->getCurSliderValue());
+ // Compiler warnings from getChild about LLPanelSettingsWaterMainTab not being complete/missing params constructor...
+ // Todo: fix class to work with getChild()
+ LLPanelSettingsWaterMainTab* panel = mWaterTabContainer->findChild<LLPanelSettingsWaterMainTab>("water_panel", true);
+ if (panel)
+ {
+ panel->setWater(p_water); // todo: Null disables
+ }
+}
- for (LLEnvironment::list_name_id_t::iterator it = cyclelist.begin(); it != cyclelist.end(); ++it)
+void LLFloaterEditExtDayCycle::updateSkyTabs()
+{
+ const LLSettingsSkyPtr_t p_sky = mEditDay->getSkyAtKeyframe(mKeysSlider->getCurSliderValue(), mCurrentTrack);
+
+ // Compiler warnings from getChild about tabs...
+ // Todo: fix class
+ LLPanelSettingsSky* panel;
+ panel = mSkyTabContainer->findChild<LLPanelSettingsSky>("atmosphere_panel", true);
+ if (panel)
{
- mDayPresetsCombo->add((*it).first);
+ panel->setSky(p_sky); // todo: Null disables
}
+ panel = mSkyTabContainer->findChild<LLPanelSettingsSky>("clouds_panel", true);
+ if (panel)
+ {
+ panel->setSky(p_sky);
+ }
+ panel = mSkyTabContainer->findChild<LLPanelSettingsSky>("moon_panel", true);
+ if (panel)
+ {
+ panel->setSky(p_sky);
+ }
+}
+
+void LLFloaterEditExtDayCycle::updateSlider()
+{
+ mKeysSlider->clear();
- // set defaults on combo boxes
- mDayPresetsCombo->selectFirstItem();
+ LLSettingsDay::KeyframeList_t keyframes = mEditDay->getTrackKeyframes(mCurrentTrack);
+ LLSettingsDay::KeyframeList_t::iterator iter = keyframes.begin();
+ LLSettingsDay::KeyframeList_t::iterator end = keyframes.end();
+
+ while (iter != end)
+ {
+ mKeysSlider->addSlider(*iter);
+ iter++;
+ }
}
+/*void LLFloaterEditExtDayCycle::updateTrack()
+{
+ LLMultiSliderCtrl* slider = getChild<LLMultiSliderCtrl>("WLDayCycleKeys");
+ //mEditDay->getTrackKeyframes
+
+ // todo make tracks named to allow movement
+}*/
+
+//-------------------------------------------------------------------------
+
LLFloaterEditExtDayCycle::connection_t LLFloaterEditExtDayCycle::setEditCommitSignal(LLFloaterEditExtDayCycle::edit_commit_signal_t::slot_type cb)
{
return mCommitSignal.connect(cb);
@@ -503,28 +655,26 @@ LLFloaterEditExtDayCycle::connection_t LLFloaterEditExtDayCycle::setEditCommitSi
// #endif
// }
//
-// #if 0
-// void LLFloaterEditExtDayCycle::addSliderKey(F32 time, LLWLParamKey keyframe)
-// {
-// // make a slider
-// const std::string& sldr_name = mKeysSlider->addSlider(time);
-// if (sldr_name.empty())
-// {
-// return;
-// }
-//
-// // set the key
-// SliderKey newKey(keyframe, mKeysSlider->getCurSliderValue());
-//
-// llassert_always(sldr_name != LLStringUtil::null);
-//
-// // add to map
-// mSliderToKey.insert(std::pair<std::string, SliderKey>(sldr_name, newKey));
-//
-// llassert_always(mSliderToKey.size() == mKeysSlider->getValue().size());
-// }
-// #endif
-//
+void LLFloaterEditExtDayCycle::addSliderKey(F32 time, const std::shared_ptr<LLSettingsBase> keyframe)
+{
+ // make a slider
+ const std::string& sldr_name = mKeysSlider->addSlider(time);
+ if (sldr_name.empty())
+ {
+ return;
+ }
+
+ // set the key
+ SliderKey newKey(keyframe, mKeysSlider->getCurSliderValue());
+
+ llassert_always(sldr_name != LLStringUtil::null);
+
+ // add to map
+ mSliderToKey.insert(std::pair<std::string, SliderKey>(sldr_name, newKey));
+
+ llassert_always(mSliderToKey.size() == mKeysSlider->getValue().size());
+}
+
// #if 0
// LLWLParamKey LLFloaterEditExtDayCycle::getSelectedDayCycle()
// {
diff --git a/indra/newview/llfloatereditextdaycycle.h b/indra/newview/llfloatereditextdaycycle.h
index 18d0ce2259..a9004087c9 100644
--- a/indra/newview/llfloatereditextdaycycle.h
+++ b/indra/newview/llfloatereditextdaycycle.h
@@ -37,6 +37,18 @@ class LLLineEditor;
class LLMultiSliderCtrl;
class LLTimeCtrl;
+typedef std::shared_ptr<LLSettingsBase> LLSettingsBasePtr_t;
+
+class SliderKey
+{
+public:
+ SliderKey(LLSettingsBasePtr_t kf, F32 t) : keyframe(kf), time(t) {}
+
+ LLSettingsBasePtr_t keyframe;
+ F32 time;
+};
+
+
/**
* Floater for creating or editing a day cycle.
*/
@@ -75,18 +87,26 @@ private:
// void applyTrack();
//
// /// refresh the sky presets combobox
- void refreshSkyPresetsList();
- void onDayPresetChanged(); /// sky preset selected
+ void onBtnSave();
+ void onBtnCancel();
+ void onAddTrack();
+ void onRemoveTrack();
+ void onCommitName(class LLLineEditor* caller, void* user_data);
+ void onTrackSelectionCallback(const LLSD& user_data);
- void onBtnSave();
- void onBtnCancel();
+ void selectTrack(U32 track_index);
+ void updateTabs();
+ void updateSkyTabs();
+ void updateWaterTabs();
+ void updateSlider(); //track->slider
+ //void updateTrack(); // slider->track, todo: better name
// /// refresh the day cycle combobox
// void refreshDayCyclesList();
//
// /// add a slider to the track
-// // void addSliderKey(F32 time, LLWLParamKey keyframe);
+ void addSliderKey(F32 time, const LLSettingsBasePtr_t key);
//
// void initCallbacks();
// // LLWLParamKey getSelectedDayCycle();
@@ -123,8 +143,8 @@ private:
LLSettingsDay::ptr_t mSavedDay;
LLSettingsDay::ptr_t mEditDay;
+ U32 mCurrentTrack;
- LLComboBox* mDayPresetsCombo;
LLButton* mSaveButton;
LLButton* mCancelButton;
LLButton* mUploadButton;
@@ -133,12 +153,14 @@ private:
// LLComboBox* mDayCyclesCombo;
// LLMultiSliderCtrl* mTimeSlider;
-// LLMultiSliderCtrl* mKeysSlider;
+ LLMultiSliderCtrl* mKeysSlider;
+ LLView* mSkyTabContainer;
+ LLView* mWaterTabContainer;
// LLTimeCtrl* mTimeCtrl;
// LLCheckBoxCtrl* mMakeDefaultCheckBox;
// map of sliders to parameters
-// std::map<std::string, SliderKey> mSliderToKey;
+ std::map<std::string, SliderKey> mSliderToKey;
};
#endif // LL_LLFloaterEditExtDayCycle_H
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 74deaffe16..0e30ca9090 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -1719,7 +1719,7 @@ LLViewerWindow::LLViewerWindow(const Params& p)
U32 fsaa_samples)
*/
// create window
- mWindow = LLWindowManager::createWindow(this,
+ mWindow = LLWindowManager::createWindow(this,
p.title, p.name, p.x, p.y, p.width, p.height, 0,
p.fullscreen,
gHeadlessClient,
diff --git a/indra/newview/skins/default/xui/en/floater_edit_ext_day_cycle.xml b/indra/newview/skins/default/xui/en/floater_edit_ext_day_cycle.xml
index 88423ad023..70f5e21327 100644
--- a/indra/newview/skins/default/xui/en/floater_edit_ext_day_cycle.xml
+++ b/indra/newview/skins/default/xui/en/floater_edit_ext_day_cycle.xml
@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
- legacy_header_height="18"
- height="500"
+ height="602"
layout="topleft"
name="env_edit_extdaycycle"
help_topic="day_presets"
@@ -13,43 +12,53 @@
<string name="title_edit">Edit Day Cycle</string>
<string name="hint_new">Name your day cycle, adjust the controls to create it, and click "Save".</string>
<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>
+
+ <!-- Todo: These 5 strings might be subjected to a change to get dynamic labels-->
+ <string name="0_label">0%[DSC]</string>
+ <string name="1_label">25%[DSC]</string>
+ <string name="2_label">50%[DSC]</string>
+ <string name="3_label">75%[DSC]</string>
+ <string name="4_label">100%[DSC]</string>
+ <string name="time_label"> ([TIME] hr)</string>
<layout_stack name="test_stack"
width="705"
- height="500"
+ height="602"
follows="all"
+ animate="false"
+ top="0"
orientation="vertical">
<layout_panel name="temp"
border="false"
auto_resize="false"
user_resize="true"
- height="45"
- min_height="45"
+ height="29"
+ min_height="29"
background_visible="false">
<!-- This layout_panel is for loading legacy presets -->
<text
- follows="top|left|right"
+ follows="top|left"
font="SansSerif"
height="10"
layout="topleft"
name="label"
- top_delta="70"
- width="120">
- Preset Name:
+ left="15"
+ top="5"
+ width="105">
+ Day Cycle Name:
</text>
- <combo_box
- allow_text_entry="true"
+ <line_editor
follows="top|left"
layout="topleft"
left_pad="10"
max_chars="100"
- name="day_cycle_preset_combo"
- top_delta="-5"
- width="200" />
+ name="day_cycle_name"
+ top="5"
+ width="200"
+ height="21" />
</layout_panel>
- <layout_panel name="timeline"
- border="true"
+ <layout_panel name="timeline_track_selection"
+ border="false"
bevel_style="in"
auto_resize="false"
user_resize="true"
@@ -58,74 +67,415 @@
min_height="0"
visible="true"
background_visible="true">
- <text
- follows="top|left|right"
- font="SansSerif"
+ <panel name="timeline_layers"
+ border="false"
+ follows="left|top"
+ auto_resize="false"
+ user_resize="true"
+ bg_alpha_color="yellow"
+ height="150"
+ width="110"
+ top_pad="0"
+ min_height="0"
+ visible="true"
+ background_visible="true">
+ <button
+ follows="left|top"
+ height="23"
+ label="Sky 4"
+ layout="topleft"
+ top_pad="5"
+ left="10"
+ name="sky4_track"
+ width="100">
+ <button.commit_callback
+ function="DayCycle.Track"
+ parameter="1" />
+ </button>
+ <button
+ follows="left|top"
+ height="23"
+ label="Sky 3"
+ layout="topleft"
+ top_pad="0"
+ left="10"
+ name="sky3_track"
+ width="100">
+ <button.commit_callback
+ function="DayCycle.Track"
+ parameter="2" />
+ </button>
+ <button
+ follows="left|top"
+ height="23"
+ label="Sky 2"
+ layout="topleft"
+ top_pad="0"
+ left="10"
+ name="sky2_track"
+ width="100">
+ <button.commit_callback
+ function="DayCycle.Track"
+ parameter="3" />
+ </button>
+ <button
+ follows="left|top"
+ height="23"
+ label="Sky 1"
+ layout="topleft"
+ top_pad="0"
+ left="10"
+ name="sky1_track"
+ width="100">
+ <button.commit_callback
+ function="DayCycle.Track"
+ parameter="4" />
+ </button>
+ <button
+ follows="left|top"
+ height="23"
+ label="Water"
+ layout="topleft"
+ top_pad="0"
+ left="10"
+ name="water_track"
+ width="100">
+ <button.commit_callback
+ function="DayCycle.Track"
+ parameter="0" />
+ </button>
+ </panel>
+ <panel name="timeline"
+ border="true"
+ follows="left|top"
+ auto_resize="false"
+ user_resize="true"
+ height="150"
+ min_height="0"
+ width="595"
+ min_width="595"
+ left_pad="0"
+ visible="true">
+ <text
+ follows="left|top"
+ height="15"
+ layout="topleft"
+ left="10"
+ name="p0"
+ top_pad="5"
+ value="0%"
+ width="50" />
+ <text
+ follows="left|top|right"
+ height="15"
+ layout="topleft"
+ left_pad="69"
+ name="p1"
+ top_delta="0"
+ value="25%"
+ width="50" />
+ <text
+ follows="left|top|right"
+ height="15"
+ layout="topleft"
+ left_pad="69"
+ name="p2"
+ top_delta="0"
+ value="50%"
+ width="50" />
+ <text
+ follows="left|top|right"
+ height="15"
+ layout="topleft"
+ left_pad="69"
+ name="p3"
+ top_delta="0"
+ value="75%"
+ width="50" />
+ <text
+ follows="left|top|right"
+ height="15"
+ layout="topleft"
+ left_pad="69"
+ name="p4"
+ top_delta="0"
+ value="100%"
+ width="50" />
+ <multi_slider
+ can_edit_text="true"
+ decimal_digits="0"
+ draw_track="false"
+ follows="bottom"
height="10"
+ increment="0.0833333"
+ initial_value="0"
layout="topleft"
- name="label"
- top_offset="20"
- left_offset="10"
- width="120">
- Time Line Goes here
- </text>
+ left="10"
+ max_sliders="20"
+ max_val="24"
+ name="WLTimeSlider"
+ show_text="false"
+ top_pad="0"
+ use_triangle="true"
+ width="525"
+ min_width="525"/>
+
+ <multi_slider
+ can_edit_text="true"
+ decimal_digits="0"
+ follows="bottom"
+ height="10"
+ increment="0.0833333"
+ initial_value="0"
+ layout="topleft"
+ left="10"
+ max_sliders="20"
+ max_val="24"
+ name="WLDayCycleKeys"
+ show_text="false"
+ top_pad="15"
+ width="525"
+ min_width="525" />
+
+ <line_editor
+ border_style="line"
+ border_thickness="1"
+ follows="left|bottom"
+ font="SansSerif"
+ height="20"
+ layout="topleft"
+ left_pad="0"
+ max_length_bytes="300"
+ name="timeline_field"
+ select_on_focus="true"
+ value="%"
+ tool_tip="The full path to an editor (executable) to edit floater XML files (quotes not necessary)"
+ top_delta="-5"
+ width="35" />
+
+ <layout_stack
+ name="progress_control"
+ follows="top|left"
+ height="25"
+ width="83"
+ layout="topleft"
+ animate="false"
+ left="225"
+ top_pad="40"
+ orientation="horizontal">
+
+ <layout_panel
+ name="skip_back"
+ mouse_opaque="false"
+ auto_resize="false"
+ layout="topleft"
+ top="0"
+ height="25"
+ min_width="25"
+ width="25">
+ <button
+ name="skip_back_btn"
+ follows="top"
+ image_overlay="SkipBackward_Off"
+ image_disabled="PushButton_Disabled"
+ image_disabled_selected="PushButton_Disabled"
+ image_selected="PushButton_Selected"
+ image_unselected="PushButton_Off"
+ hover_glow_amount="0.15"
+ auto_resize="false"
+ width="25"
+ height="25"
+ layout="topleft"
+ tool_tip="Step back"
+ top="0"
+ left="0"/>
+ </layout_panel>
+
+ <layout_panel
+ name="play"
+ mouse_opaque="false"
+ auto_resize="false"
+ layout="topleft"
+ top="0"
+ height="25"
+ min_width="25"
+ width="25">
+ <button
+ name="play_btn"
+ follows="top"
+ image_overlay="Play_Off"
+ image_disabled="PushButton_Disabled"
+ image_disabled_selected="PushButton_Disabled"
+ image_selected="PushButton_Selected"
+ image_unselected="PushButton_Off"
+ hover_glow_amount="0.15"
+ auto_resize="false"
+ layout="topleft"
+ height="25"
+ width="25"
+ left="0"
+ top="0" />
+ </layout_panel>
+
+ <layout_panel
+ name="pause"
+ mouse_opaque="false"
+ auto_resize="false"
+ layout="topleft"
+ top="0"
+ height="25"
+ min_width="25"
+ width="25"
+ visible="false">
+ <button
+ name="pause_btn"
+ follows="top"
+ image_overlay="Pause_Off"
+ image_disabled="PushButton_Disabled"
+ image_disabled_selected="PushButton_Disabled"
+ image_selected="PushButton_Selected"
+ image_unselected="PushButton_Off"
+ hover_glow_amount="0.15"
+ auto_resize="false"
+ layout="topleft"
+ height="25"
+ width="25"
+ left="0"
+ top="0"/>
+ </layout_panel>
+
+ <layout_panel
+ name="skip_forward"
+ mouse_opaque="false"
+ auto_resize="false"
+ layout="topleft"
+ top="0"
+ height="25"
+ min_width="25"
+ width="25">
+ <button
+ name="skip_forward_btn"
+ follows="top"
+ image_overlay="SkipForward_Off"
+ image_disabled="PushButton_Disabled"
+ image_disabled_selected="PushButton_Disabled"
+ image_selected="PushButton_Selected"
+ image_unselected="PushButton_Off"
+ hover_glow_amount="0.15"
+ width="25"
+ height="25"
+ layout="topleft"
+ tool_tip="Step forward"
+ top="0" />
+ </layout_panel>
+ </layout_stack>
+
+ <button
+ follows="top|left"
+ height="23"
+ width="90"
+ label="Add Frame"
+ left_pad="175"
+ top_delta="-12"
+ name="add_frame" />
+ <button
+ follows="left|top"
+ height="23"
+ width="90"
+ label="Delete Frame"
+ top_pad="0"
+ left_delta="0"
+ name="delete_frame" />
+ </panel>
</layout_panel>
- <layout_panel name="flex"
- auto_resize="true"
+ <layout_panel name="frame_settings_water"
+ auto_resize="false"
user_resize="true"
- bg_alpha_color="blue"
- height="11"
+ height="386"
+ width="700"
min_height="0"
- visible="true"
- background_visible="true">
+ visible="false">
<tab_container
follows="all"
halign="left"
height="386"
layout="topleft"
- left_offset="0"
- name="landtab"
+ left="0"
+ name="water_tabs"
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>
+ top_pad="0"
+ width="700">
+ <panel
+ border="true"
+ filename="panel_settings_water.xml"
+ label="Water_panel"
+ layout="topleft"
+ left_delta="0"
+ top_pad="5"
+ name="water_panel"/>
+ </tab_container>
+ </layout_panel>
+ <layout_panel name="frame_settings_sky"
+ auto_resize="false"
+ user_resize="true"
+ height="386"
+ width="700"
+ min_height="0"
+ visible="true">
+ <tab_container
+ follows="all"
+ halign="left"
+ height="386"
+ visible="true"
+ layout="topleft"
+ left="0"
+ name="sky_tabs"
+ tab_position="top"
+ tab_width="140"
+ tab_padding_right="3"
+ top_pad="0"
+ width="700">
+ <panel
+ border="true"
+ filename="panel_settings_sky_atmos.xml"
+ label="Atmosphere &amp; Lighting"
+ layout="topleft"
+ left_delta="0"
+ top_pad="5"
+ name="atmosphere_panel" />
+ <panel
+ border="true"
+ filename="panel_settings_sky_clouds.xml"
+ label="Clouds"
+ layout="topleft"
+ left_delta="0"
+ top_pad="5"
+ name="clouds_panel" />
+ <panel
+ border="true"
+ filename="panel_settings_sky_sunmoon.xml"
+ label="Sun &amp; Moon"
+ layout="topleft"
+ left_delta="0"
+ top_pad="5"
+ name="moon_panel" />
</tab_container>
</layout_panel>
<layout_panel name="buttons"
auto_resize="false"
user_resize="true"
- height="43"
+ height="26"
min_height="0"
- background_visible="false">
+ visible="true"
+ width="700">
<button
follows="top|left"
height="23"
label="Save"
- left_offset="160"
- top_offset="60"
+ left="5"
+ top_pad="0"
name="save_btn"
width="100" />
<button
@@ -138,7 +488,7 @@
width="100" />
<button
- follows="top|right"
+ follows="top|left"
height="23"
label="Upload"
layout="topleft"