diff options
| author | Rider Linden <rider@lindenlab.com> | 2018-05-11 10:47:01 -0700 | 
|---|---|---|
| committer | Rider Linden <rider@lindenlab.com> | 2018-05-11 10:47:01 -0700 | 
| commit | 885853b41775296d536f9bcb3614264109430c2b (patch) | |
| tree | 4bbca0d12cc297a80b7b42af911adc0978c903c5 /indra | |
| parent | 834498d1717baa69e55b6609d602026248dfacc1 (diff) | |
| parent | cef4e29b901c5a8964e53ec3eb6659faeea0059a (diff) | |
Merge
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" | 
