Merge
commit
dbbb89a13c
|
|
@ -41,8 +41,6 @@
|
|||
|
||||
static LLDefaultChildRegistry::Register<LLMultiSlider> r("multi_slider_bar");
|
||||
|
||||
const F32 FLOAT_THRESHOLD = 0.00001f;
|
||||
|
||||
S32 LLMultiSlider::mNameCounter = 0;
|
||||
|
||||
LLMultiSlider::SliderParams::SliderParams()
|
||||
|
|
@ -54,6 +52,7 @@ LLMultiSlider::SliderParams::SliderParams()
|
|||
LLMultiSlider::Params::Params()
|
||||
: max_sliders("max_sliders", 1),
|
||||
allow_overlap("allow_overlap", false),
|
||||
overlap_threshold("overlap_threshold", 0),
|
||||
draw_track("draw_track", true),
|
||||
use_triangle("use_triangle", false),
|
||||
track_color("track_color"),
|
||||
|
|
@ -98,6 +97,15 @@ LLMultiSlider::LLMultiSlider(const LLMultiSlider::Params& p)
|
|||
setMouseUpCallback(initCommitCallback(p.mouse_up_callback));
|
||||
}
|
||||
|
||||
if (p.overlap_threshold.isProvided())
|
||||
{
|
||||
mOverlapThreshold = p.overlap_threshold;
|
||||
}
|
||||
else
|
||||
{
|
||||
mOverlapThreshold = 0;
|
||||
}
|
||||
|
||||
for (LLInitParam::ParamIterator<SliderParams>::const_iterator it = p.sliders.begin();
|
||||
it != p.sliders.end();
|
||||
++it)
|
||||
|
|
@ -143,11 +151,14 @@ void LLMultiSlider::setSliderValue(const std::string& name, F32 value, BOOL from
|
|||
// look at the current spot
|
||||
// and see if anything is there
|
||||
LLSD::map_iterator mIt = mValue.beginMap();
|
||||
F32 threshold = mOverlapThreshold + (mIncrement / 4); // increment is our distance between points, use to eliminate round error
|
||||
for(;mIt != mValue.endMap(); mIt++) {
|
||||
|
||||
F32 testVal = (F32)mIt->second.asReal() - newValue;
|
||||
if(testVal > -FLOAT_THRESHOLD && testVal < FLOAT_THRESHOLD &&
|
||||
mIt->first != name) {
|
||||
if (testVal > -threshold
|
||||
&& testVal < threshold
|
||||
&& mIt->first != name)
|
||||
{
|
||||
hit = true;
|
||||
break;
|
||||
}
|
||||
|
|
@ -300,11 +311,13 @@ bool LLMultiSlider::findUnusedValue(F32& initVal)
|
|||
|
||||
// look at the current spot
|
||||
// and see if anything is there
|
||||
F32 threshold = mOverlapThreshold + (mIncrement / 4);
|
||||
LLSD::map_iterator mIt = mValue.beginMap();
|
||||
for(;mIt != mValue.endMap(); mIt++) {
|
||||
|
||||
F32 testVal = (F32)mIt->second.asReal() - initVal;
|
||||
if(testVal > -FLOAT_THRESHOLD && testVal < FLOAT_THRESHOLD) {
|
||||
if(testVal > -threshold && testVal < threshold)
|
||||
{
|
||||
hit = true;
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -50,6 +50,8 @@ public:
|
|||
draw_track,
|
||||
use_triangle;
|
||||
|
||||
Optional<F32> overlap_threshold;
|
||||
|
||||
Optional<LLUIColor> track_color,
|
||||
thumb_disabled_color,
|
||||
thumb_outline_color,
|
||||
|
|
@ -107,6 +109,7 @@ protected:
|
|||
|
||||
S32 mMaxNumSliders;
|
||||
BOOL mAllowOverlap;
|
||||
F32 mOverlapThreshold;
|
||||
BOOL mDrawTrack;
|
||||
BOOL mUseTriangle; /// hacked in toggle to use a triangle
|
||||
|
||||
|
|
|
|||
|
|
@ -53,6 +53,7 @@ LLMultiSliderCtrl::Params::Params()
|
|||
can_edit_text("can_edit_text", false),
|
||||
max_sliders("max_sliders", 1),
|
||||
allow_overlap("allow_overlap", false),
|
||||
overlap_threshold("overlap_threshold", 0),
|
||||
draw_track("draw_track", true),
|
||||
use_triangle("use_triangle", false),
|
||||
decimal_digits("decimal_digits", 3),
|
||||
|
|
@ -167,6 +168,10 @@ LLMultiSliderCtrl::LLMultiSliderCtrl(const LLMultiSliderCtrl::Params& p)
|
|||
params.increment(p.increment);
|
||||
params.max_sliders(p.max_sliders);
|
||||
params.allow_overlap(p.allow_overlap);
|
||||
if (p.overlap_threshold.isProvided())
|
||||
{
|
||||
params.overlap_threshold = p.overlap_threshold;
|
||||
}
|
||||
params.draw_track(p.draw_track);
|
||||
params.use_triangle(p.use_triangle);
|
||||
params.control_name(p.control_name);
|
||||
|
|
|
|||
|
|
@ -57,6 +57,8 @@ public:
|
|||
draw_track,
|
||||
use_triangle;
|
||||
|
||||
Optional<F32> overlap_threshold;
|
||||
|
||||
Optional<LLUIColor> text_color,
|
||||
text_disabled_color;
|
||||
|
||||
|
|
|
|||
|
|
@ -643,8 +643,18 @@ void LLDrawPoolWater::shade()
|
|||
shader->uniform3fv(LLShaderMgr::WATER_EYEVEC, 1, LLViewerCamera::getInstance()->getOrigin().mV);
|
||||
shader->uniform3fv(LLShaderMgr::WATER_SPECULAR, 1, light_diffuse.mV);
|
||||
shader->uniform1f(LLShaderMgr::WATER_SPECULAR_EXP, light_exp);
|
||||
shader->uniform2fv(LLShaderMgr::WATER_WAVE_DIR1, 1, pwater->getWave1Dir().mV);
|
||||
shader->uniform2fv(LLShaderMgr::WATER_WAVE_DIR2, 1, pwater->getWave2Dir().mV);
|
||||
if (LLEnvironment::instance().isCloudScrollPaused())
|
||||
{
|
||||
static const std::array<F32, 2> zerowave{ {0.0f, 0.0f} };
|
||||
|
||||
shader->uniform2fv(LLShaderMgr::WATER_WAVE_DIR1, 1, zerowave.data());
|
||||
shader->uniform2fv(LLShaderMgr::WATER_WAVE_DIR2, 1, zerowave.data());
|
||||
}
|
||||
else
|
||||
{
|
||||
shader->uniform2fv(LLShaderMgr::WATER_WAVE_DIR1, 1, pwater->getWave1Dir().mV);
|
||||
shader->uniform2fv(LLShaderMgr::WATER_WAVE_DIR2, 1, pwater->getWave2Dir().mV);
|
||||
}
|
||||
shader->uniform3fv(LLShaderMgr::WATER_LIGHT_DIR, 1, light_dir.mV);
|
||||
|
||||
shader->uniform3fv(LLShaderMgr::WATER_NORM_SCALE, 1, pwater->getNormalScale().mV);
|
||||
|
|
|
|||
|
|
@ -108,7 +108,7 @@ namespace {
|
|||
|
||||
const F32 DAY_CYCLE_PLAY_TIME_SECONDS = 60;
|
||||
|
||||
const F32 FRAME_SLOP_FACTOR = 0.025f;
|
||||
const F32 FRAME_SLOP_FACTOR = 0.0251f;
|
||||
}
|
||||
|
||||
//=========================================================================
|
||||
|
|
@ -122,6 +122,7 @@ LLFloaterEditExtDayCycle::LLFloaterEditExtDayCycle(const LLSD &key) :
|
|||
mFlyoutControl(nullptr),
|
||||
mDayLength(0),
|
||||
mCurrentTrack(1),
|
||||
mShiftCopyEnabled(false),
|
||||
mTimeSlider(nullptr),
|
||||
mFramesSlider(nullptr),
|
||||
mCurrentTimeLabel(nullptr),
|
||||
|
|
@ -246,7 +247,6 @@ void LLFloaterEditExtDayCycle::onOpen(const LLSD& key)
|
|||
}
|
||||
|
||||
const LLEnvironment::altitude_list_t &altitudes = LLEnvironment::instance().getRegionAltitudes();
|
||||
|
||||
for (S32 idx = 1; idx < 4; ++idx)
|
||||
{
|
||||
std::stringstream label;
|
||||
|
|
@ -307,6 +307,40 @@ void LLFloaterEditExtDayCycle::refresh()
|
|||
LLFloater::refresh();
|
||||
}
|
||||
|
||||
/* virtual */
|
||||
BOOL LLFloaterEditExtDayCycle::handleKeyUp(KEY key, MASK mask, BOOL called_from_parent)
|
||||
{
|
||||
LL_DEBUGS("LAPRAS") << "Key: " << key << " mask: " << mask << LL_ENDL;
|
||||
if (mask == MASK_SHIFT && mShiftCopyEnabled)
|
||||
{
|
||||
mShiftCopyEnabled = false;
|
||||
std::string curslider = mFramesSlider->getCurSlider();
|
||||
if (!curslider.empty())
|
||||
{
|
||||
F32 sliderpos = mFramesSlider->getCurSliderValue();
|
||||
|
||||
keymap_t::iterator it = mSliderKeyMap.find(curslider);
|
||||
if (it != mSliderKeyMap.end())
|
||||
{
|
||||
LL_DEBUGS("LAPRAS") << "Moving frame from " << (*it).second.mFrame << " to " << sliderpos << LL_ENDL;
|
||||
if (mEditDay->moveTrackKeyframe(mCurrentTrack, (*it).second.mFrame, sliderpos))
|
||||
{
|
||||
(*it).second.mFrame = sliderpos;
|
||||
}
|
||||
else
|
||||
{
|
||||
mFramesSlider->setCurSliderValue((*it).second.mFrame);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_WARNS("LAPRAS") << "Failed to find frame " << sliderpos << " for slider " << curslider << LL_ENDL;
|
||||
}
|
||||
}
|
||||
}
|
||||
return LLFloater::handleKeyUp(key, mask, called_from_parent);
|
||||
}
|
||||
|
||||
|
||||
void LLFloaterEditExtDayCycle::onButtonApply(LLUICtrl *ctrl, const LLSD &data)
|
||||
{
|
||||
|
|
@ -459,46 +493,53 @@ void LLFloaterEditExtDayCycle::onFrameSliderCallback(const LLSD &data)
|
|||
keymap_t::iterator it = mSliderKeyMap.find(curslider);
|
||||
if (it != mSliderKeyMap.end())
|
||||
{
|
||||
// if (gKeyboard->currentMask(TRUE) == MASK_SHIFT)
|
||||
// {
|
||||
// LL_DEBUGS() << "Copying frame from " << iter->second.mFrame << " to " << new_frame << LL_ENDL;
|
||||
// LLSettingsBase::ptr_t new_settings;
|
||||
//
|
||||
// // mEditDay still remembers old position, add copy at new position
|
||||
// if (mCurrentTrack == LLSettingsDay::TRACK_WATER)
|
||||
// {
|
||||
// LLSettingsWaterPtr_t water_ptr = std::dynamic_pointer_cast<LLSettingsWater>(iter->second.pSettings)->buildClone();
|
||||
// mEditDay->setWaterAtKeyframe(water_ptr, new_frame);
|
||||
// new_settings = water_ptr;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// LLSettingsSkyPtr_t sky_ptr = std::dynamic_pointer_cast<LLSettingsSky>(iter->second.pSettings)->buildClone();
|
||||
// mEditDay->setSkyAtKeyframe(sky_ptr, new_frame, mCurrentTrack);
|
||||
// new_settings = sky_ptr;
|
||||
// }
|
||||
//
|
||||
// // mSliderKeyMap still remembers old position, for simplicity, just move it to be identical to slider
|
||||
// F32 old_frame = iter->second.mFrame;
|
||||
// iter->second.mFrame = new_frame;
|
||||
// // slider already moved old frame, create new one in old place
|
||||
// addSliderFrame(old_frame, new_settings, false /*because we are going to reselect new one*/);
|
||||
// // reselect new frame
|
||||
// mFramesSlider->setCurSlider(iter->first);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
LL_WARNS("LAPRAS") << "Moving frame from " << (*it).second.mFrame << " to " << sliderpos << LL_ENDL;
|
||||
if (mEditDay->moveTrackKeyframe(mCurrentTrack, (*it).second.mFrame, sliderpos))
|
||||
if (gKeyboard->currentMask(TRUE) == MASK_SHIFT && mShiftCopyEnabled)
|
||||
{
|
||||
(*it).second.mFrame = sliderpos;
|
||||
// don't move the point/frame as long as shift is pressed and user is attempting to copy
|
||||
// handleKeyUp will do the move if user releases key too early.
|
||||
if (!(mEditDay->getSettingsNearKeyframe(sliderpos, mCurrentTrack, FRAME_SLOP_FACTOR)).second)
|
||||
{
|
||||
LL_DEBUGS() << "Copying frame from " << it->second.mFrame << " to " << sliderpos << LL_ENDL;
|
||||
LLSettingsBase::ptr_t new_settings;
|
||||
|
||||
// mEditDay still remembers old position, add copy at new position
|
||||
if (mCurrentTrack == LLSettingsDay::TRACK_WATER)
|
||||
{
|
||||
LLSettingsWaterPtr_t water_ptr = std::dynamic_pointer_cast<LLSettingsWater>(it->second.pSettings)->buildClone();
|
||||
mEditDay->setWaterAtKeyframe(water_ptr, sliderpos);
|
||||
new_settings = water_ptr;
|
||||
}
|
||||
else
|
||||
{
|
||||
LLSettingsSkyPtr_t sky_ptr = std::dynamic_pointer_cast<LLSettingsSky>(it->second.pSettings)->buildClone();
|
||||
mEditDay->setSkyAtKeyframe(sky_ptr, sliderpos, mCurrentTrack);
|
||||
new_settings = sky_ptr;
|
||||
}
|
||||
// mSliderKeyMap still remembers old position, for simplicity, just move it to be identical to slider
|
||||
F32 old_frame = it->second.mFrame;
|
||||
it->second.mFrame = sliderpos;
|
||||
// slider already moved old frame, create new one in old place
|
||||
addSliderFrame(old_frame, new_settings, false /*because we are going to reselect new one*/);
|
||||
// reselect new frame
|
||||
mFramesSlider->setCurSlider(it->first);
|
||||
mShiftCopyEnabled = false;
|
||||
}
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
mFramesSlider->setCurSliderValue((*it).second.mFrame);
|
||||
LL_WARNS("LAPRAS") << "Moving frame from " << (*it).second.mFrame << " to " << sliderpos << LL_ENDL;
|
||||
if (mEditDay->moveTrackKeyframe(mCurrentTrack, (*it).second.mFrame, sliderpos))
|
||||
{
|
||||
(*it).second.mFrame = sliderpos;
|
||||
}
|
||||
else
|
||||
{
|
||||
mFramesSlider->setCurSliderValue((*it).second.mFrame);
|
||||
}
|
||||
|
||||
mShiftCopyEnabled = false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
mTimeSlider->setCurSliderValue(sliderpos);
|
||||
|
|
@ -509,6 +550,7 @@ void LLFloaterEditExtDayCycle::onFrameSliderCallback(const LLSD &data)
|
|||
|
||||
void LLFloaterEditExtDayCycle::onFrameSliderDoubleClick(S32 x, S32 y, MASK mask)
|
||||
{
|
||||
stopPlay();
|
||||
onAddTrack();
|
||||
}
|
||||
|
||||
|
|
@ -519,6 +561,8 @@ void LLFloaterEditExtDayCycle::onFrameSliderMouseDown(S32 x, S32 y, MASK mask)
|
|||
|
||||
std::string slidername = mFramesSlider->getCurSlider();
|
||||
|
||||
mShiftCopyEnabled = !slidername.empty() && gKeyboard->currentMask(TRUE) == MASK_SHIFT;
|
||||
|
||||
if (!slidername.empty())
|
||||
{
|
||||
F32 sliderval = mFramesSlider->getSliderValue(slidername);
|
||||
|
|
|
|||
|
|
@ -77,6 +77,8 @@ public:
|
|||
|
||||
virtual void refresh() override;
|
||||
|
||||
BOOL handleKeyUp(KEY key, MASK mask, BOOL called_from_parent) override;
|
||||
|
||||
private:
|
||||
|
||||
F32 getCurrentFrame() const;
|
||||
|
|
@ -148,6 +150,7 @@ private:
|
|||
LLSettingsDay::Seconds mDayLength;
|
||||
U32 mCurrentTrack;
|
||||
std::string mLastFrameSlider;
|
||||
bool mShiftCopyEnabled;
|
||||
|
||||
LLButton* mAddFrameButton;
|
||||
LLButton* mDeleteFrameButton;
|
||||
|
|
|
|||
|
|
@ -37,6 +37,7 @@
|
|||
#include "llsliderctrl.h"
|
||||
#include "lltabcontainer.h"
|
||||
#include "llfilepicker.h"
|
||||
#include "llsettingspicker.h"
|
||||
|
||||
#include "llviewerparcelmgr.h"
|
||||
|
||||
|
|
@ -64,6 +65,7 @@ namespace
|
|||
const std::string BUTTON_NAME_COMMIT("btn_commit");
|
||||
const std::string BUTTON_NAME_CANCEL("btn_cancel");
|
||||
const std::string BUTTON_NAME_FLYOUT("btn_flyout");
|
||||
const std::string BUTTON_NAME_LOAD("btn_load");
|
||||
|
||||
const std::string ACTION_SAVE("save_settings");
|
||||
const std::string ACTION_SAVEAS("save_as_new_settings");
|
||||
|
|
@ -102,6 +104,7 @@ BOOL LLFloaterFixedEnvironment::postBuild()
|
|||
|
||||
getChild<LLButton>(BUTTON_NAME_IMPORT)->setClickedCallback([this](LLUICtrl *, const LLSD &) { onButtonImport(); });
|
||||
getChild<LLButton>(BUTTON_NAME_CANCEL)->setClickedCallback([this](LLUICtrl *, const LLSD &) { onButtonCancel(); });
|
||||
getChild<LLButton>(BUTTON_NAME_LOAD)->setClickedCallback([this](LLUICtrl *, const LLSD &) { onButtonLoad(); });
|
||||
|
||||
mFlyoutControl = new LLFlyoutComboBtnCtrl(this, BUTTON_NAME_COMMIT, BUTTON_NAME_FLYOUT, XML_FLYOUTMENU_FILE);
|
||||
mFlyoutControl->setAction([this](LLUICtrl *ctrl, const LLSD &data) { onButtonApply(ctrl, data); });
|
||||
|
|
@ -130,6 +133,8 @@ void LLFloaterFixedEnvironment::onOpen(const LLSD& key)
|
|||
|
||||
void LLFloaterFixedEnvironment::onClose(bool app_quitting)
|
||||
{
|
||||
doCloseInventoryFloater(app_quitting);
|
||||
|
||||
LLEnvironment::instance().setSelectedEnvironment(LLEnvironment::ENV_LOCAL);
|
||||
LLEnvironment::instance().clearEnvironment(LLEnvironment::ENV_EDIT);
|
||||
|
||||
|
|
@ -226,6 +231,12 @@ void LLFloaterFixedEnvironment::loadInventoryItem(const LLUUID &inventoryId)
|
|||
[this](LLUUID asset_id, LLSettingsBase::ptr_t settins, S32 status, LLExtStat) { onAssetLoaded(asset_id, settins, status); });
|
||||
}
|
||||
|
||||
void LLFloaterFixedEnvironment::onPickerCommitSetting(LLUUID asset_id)
|
||||
{
|
||||
LLSettingsVOBase::getSettingsAsset(asset_id,
|
||||
[this](LLUUID asset_id, LLSettingsBase::ptr_t settings, S32 status, LLExtStat) { onAssetLoaded(asset_id, settings, status); });
|
||||
}
|
||||
|
||||
void LLFloaterFixedEnvironment::onAssetLoaded(LLUUID asset_id, LLSettingsBase::ptr_t settings, S32 status)
|
||||
{
|
||||
if (!settings || status)
|
||||
|
|
@ -283,6 +294,27 @@ void LLFloaterFixedEnvironment::onButtonCancel()
|
|||
this->closeFloater();
|
||||
}
|
||||
|
||||
void LLFloaterFixedEnvironment::onButtonLoad()
|
||||
{
|
||||
// LLUI::sWindow->setCursor(UI_CURSOR_WAIT);
|
||||
LLFloaterSettingsPicker *picker = static_cast<LLFloaterSettingsPicker *>(mInventoryFloater.get());
|
||||
|
||||
// Show the dialog
|
||||
if (!picker)
|
||||
{
|
||||
picker = new LLFloaterSettingsPicker(this,
|
||||
LLUUID::null, "SELECT SETTINGS");
|
||||
|
||||
mInventoryFloater = picker->getHandle();
|
||||
|
||||
picker->setCommitCallback([this](LLUICtrl *, const LLSD &data){ onPickerCommitSetting(data.asUUID()); });
|
||||
}
|
||||
|
||||
picker->setSettingsFilter(mSettings->getSettingsTypeValue());
|
||||
picker->openFloater();
|
||||
picker->setFocus(TRUE);
|
||||
}
|
||||
|
||||
void LLFloaterFixedEnvironment::doApplyCreateNewInventory()
|
||||
{
|
||||
LLUUID parent_id = mInventoryItem ? mInventoryItem->getParentUUID() : gInventory.findCategoryUUIDForType(LLFolderType::FT_SETTINGS);
|
||||
|
|
@ -344,6 +376,16 @@ void LLFloaterFixedEnvironment::doApplyEnvironment(const std::string &where)
|
|||
|
||||
}
|
||||
|
||||
void LLFloaterFixedEnvironment::doCloseInventoryFloater(bool quitting)
|
||||
{
|
||||
LLFloater* floaterp = mInventoryFloater.get();
|
||||
|
||||
if (floaterp)
|
||||
{
|
||||
floaterp->closeFloater(quitting);
|
||||
}
|
||||
}
|
||||
|
||||
void LLFloaterFixedEnvironment::onInventoryCreated(LLUUID asset_id, LLUUID inventory_id, LLSD results)
|
||||
{
|
||||
LL_WARNS("ENVIRONMENT") << "Inventory item " << inventory_id << " has been created with asset " << asset_id << " results are:" << results << LL_ENDL;
|
||||
|
|
|
|||
|
|
@ -75,6 +75,7 @@ protected:
|
|||
virtual void doApplyCreateNewInventory();
|
||||
virtual void doApplyUpdateInventory();
|
||||
virtual void doApplyEnvironment(const std::string &where);
|
||||
void doCloseInventoryFloater(bool quitting = false);
|
||||
|
||||
bool canUseInventory() const;
|
||||
bool canApplyRegion() const;
|
||||
|
|
@ -84,6 +85,7 @@ protected:
|
|||
|
||||
LLUUID mInventoryId;
|
||||
LLInventoryItem * mInventoryItem;
|
||||
LLHandle<LLFloater> mInventoryFloater;
|
||||
|
||||
void onInventoryCreated(LLUUID asset_id, LLUUID inventory_id, LLSD results);
|
||||
void onInventoryUpdated(LLUUID asset_id, LLUUID inventory_id, LLSD results);
|
||||
|
|
@ -94,7 +96,9 @@ private:
|
|||
void onButtonImport();
|
||||
void onButtonApply(LLUICtrl *ctrl, const LLSD &data);
|
||||
void onButtonCancel();
|
||||
void onButtonLoad();
|
||||
|
||||
void onPickerCommitSetting(LLUUID asset_id);
|
||||
void onAssetLoaded(LLUUID asset_id, LLSettingsBase::ptr_t settins, S32 status);
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -219,7 +219,8 @@
|
|||
draw_track="false"
|
||||
follows="bottom"
|
||||
height="10"
|
||||
increment="0.01"
|
||||
increment="0.005"
|
||||
overlap_threshold="0.026"
|
||||
initial_value="0"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
|
|
@ -235,7 +236,8 @@
|
|||
decimal_digits="0"
|
||||
follows="bottom"
|
||||
height="10"
|
||||
increment="0.01"
|
||||
increment="0.005"
|
||||
overlap_threshold="0.026"
|
||||
initial_value="0"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
|
|
|
|||
|
|
@ -48,9 +48,9 @@
|
|||
max_width="200"
|
||||
width="200">
|
||||
<radio_item
|
||||
label="Default Environment"
|
||||
label="Use Region Settings"
|
||||
layout="topleft"
|
||||
name="use_default_setting"
|
||||
name="use_region_setting"
|
||||
height="20"/>
|
||||
<radio_item
|
||||
label="Custom Environment"
|
||||
|
|
|
|||
|
|
@ -120,7 +120,7 @@
|
|||
Cloud Image:
|
||||
</text>
|
||||
<texture_picker
|
||||
height="100"
|
||||
height="123"
|
||||
layout="topleft"
|
||||
left_delta="5"
|
||||
name="cloud_map"
|
||||
|
|
|
|||
|
|
@ -169,7 +169,7 @@
|
|||
Image:
|
||||
</text>
|
||||
<texture_picker
|
||||
height="100"
|
||||
height="123"
|
||||
layout="topleft"
|
||||
left_delta="5"
|
||||
name="sun_image"
|
||||
|
|
@ -220,7 +220,7 @@
|
|||
Image:
|
||||
</text>
|
||||
<texture_picker
|
||||
height="100"
|
||||
height="123"
|
||||
layout="topleft"
|
||||
left_delta="5"
|
||||
name="moon_image"
|
||||
|
|
|
|||
|
|
@ -167,12 +167,12 @@
|
|||
Normal Map
|
||||
</text>
|
||||
<texture_picker
|
||||
height="75"
|
||||
height="84"
|
||||
layout="topleft"
|
||||
left_delta="0"
|
||||
name="water_normal_map"
|
||||
top_pad="5"
|
||||
width="75"/>
|
||||
width="61"/>
|
||||
|
||||
<text
|
||||
follows="left|top"
|
||||
|
|
@ -196,7 +196,7 @@
|
|||
min_val_y="-4"
|
||||
max_val_y="4"
|
||||
increment_y="0.5f"
|
||||
arrow_color="red"/>
|
||||
arrow_color="white"/>
|
||||
|
||||
<text
|
||||
follows="left|top"
|
||||
|
|
@ -218,7 +218,7 @@
|
|||
max_val_x="4"
|
||||
min_val_y="-4"
|
||||
max_val_y="4"
|
||||
arrow_color="green"/>
|
||||
arrow_color="white"/>
|
||||
|
||||
<text
|
||||
follows="left|top|right"
|
||||
|
|
|
|||
Loading…
Reference in New Issue