diff options
author | andreykproductengine <andreykproductengine@lindenlab.com> | 2018-05-11 20:10:08 +0300 |
---|---|---|
committer | andreykproductengine <andreykproductengine@lindenlab.com> | 2018-05-11 20:10:08 +0300 |
commit | cef4e29b901c5a8964e53ec3eb6659faeea0059a (patch) | |
tree | c91810c6c53c4b82617a7a77ccb3945946ac6f89 /indra | |
parent | 3c18de21369260ec9b7ba39c0e360045dd65e30d (diff) |
MAINT-8344 Day cycle editor (part 1)
Diffstat (limited to 'indra')
-rw-r--r-- | indra/llinventory/llsettingsdaycycle.cpp | 49 | ||||
-rw-r--r-- | indra/llinventory/llsettingsdaycycle.h | 3 | ||||
-rw-r--r-- | indra/newview/llfloatereditextdaycycle.cpp | 262 | ||||
-rw-r--r-- | indra/newview/llfloatereditextdaycycle.h | 38 | ||||
-rw-r--r-- | indra/newview/llviewerwindow.cpp | 2 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/floater_edit_ext_day_cycle.xml | 476 |
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 & 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 & 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" |