[Issue 662] STORM-1265: Combine Terrain and Ground Textures tabs in Region/Estate floater

This commit is contained in:
Lirusaito
2013-02-28 23:37:23 -05:00
parent c509378b24
commit 8eff717612
4 changed files with 585 additions and 302 deletions

View File

@@ -199,10 +199,6 @@ BOOL LLFloaterRegionInfo::postBuild()
LLUICtrlFactory::getInstance()->buildPanel(panel, "panel_region_terrain.xml"); LLUICtrlFactory::getInstance()->buildPanel(panel, "panel_region_terrain.xml");
mTab->addTabPanel(panel, panel->getLabel(), FALSE); mTab->addTabPanel(panel, panel->getLabel(), FALSE);
panel = new LLPanelRegionTextureInfo;
mInfoPanels.push_back(panel);
LLUICtrlFactory::getInstance()->buildPanel(panel, "panel_region_texture.xml");
mTab->addTabPanel(panel, panel->getLabel(), FALSE);
panel = new LLPanelRegionDebugInfo; panel = new LLPanelRegionDebugInfo;
mInfoPanels.push_back(panel); mInfoPanels.push_back(panel);
@@ -421,6 +417,23 @@ LLPanelEstateCovenant* LLFloaterRegionInfo::getPanelCovenant()
return panel; return panel;
} }
// static
LLPanelRegionTerrainInfo* LLFloaterRegionInfo::getPanelRegionTerrain()
{
LLFloaterRegionInfo* floater = LLFloaterRegionInfo::getInstance();
if (!floater)
{
llassert(floater);
return NULL;
}
LLTabContainer* tab_container = floater->getChild<LLTabContainer>("region_panels");
LLPanelRegionTerrainInfo* panel =
dynamic_cast<LLPanelRegionTerrainInfo*>(tab_container->getChild<LLPanel>("Terrain"));
llassert(panel);
return panel;
}
void LLFloaterRegionInfo::refreshFromRegion(LLViewerRegion* region) void LLFloaterRegionInfo::refreshFromRegion(LLViewerRegion* region)
{ {
if (!region) if (!region)
@@ -1022,127 +1035,7 @@ void LLPanelRegionDebugInfo::onClickCancelRestart(void* data)
} }
///////////////////////////////////////////////////////////////////////////// BOOL LLPanelRegionTerrainInfo::validateTextureSizes()
// LLPanelRegionTextureInfo
//
LLPanelRegionTextureInfo::LLPanelRegionTextureInfo() : LLPanelRegionInfo()
{
// nothing.
}
bool LLPanelRegionTextureInfo::refreshFromRegion(LLViewerRegion* region)
{
BOOL allow_modify = gAgent.isGodlike() || (region && region->canManageEstate());
setCtrlsEnabled(allow_modify);
childDisable("apply_btn");
if (region)
{
childSetValue("region_text", LLSD(region->getName()));
}
else
{
childSetValue("region_text", LLSD(""));
}
if (!region) return LLPanelRegionInfo::refreshFromRegion(region);
LLVLComposition* compp = region->getComposition();
LLTextureCtrl* texture_ctrl;
std::string buffer;
for(S32 i = 0; i < TERRAIN_TEXTURE_COUNT; ++i)
{
buffer = llformat("texture_detail_%d", i);
texture_ctrl = getChild<LLTextureCtrl>(buffer);
if(texture_ctrl)
{
lldebugs << "Detail Texture " << i << ": "
<< compp->getDetailTextureID(i) << llendl;
LLUUID tmp_id(compp->getDetailTextureID(i));
texture_ctrl->setImageAssetID(tmp_id);
}
}
for(S32 i = 0; i < CORNER_COUNT; ++i)
{
buffer = llformat("height_start_spin_%d", i);
childSetValue(buffer, LLSD(compp->getStartHeight(i)));
buffer = llformat("height_range_spin_%d", i);
childSetValue(buffer, LLSD(compp->getHeightRange(i)));
}
// Call the parent for common book-keeping
return LLPanelRegionInfo::refreshFromRegion(region);
}
BOOL LLPanelRegionTextureInfo::postBuild()
{
LLPanelRegionInfo::postBuild();
std::string buffer;
for(S32 i = 0; i < TERRAIN_TEXTURE_COUNT; ++i)
{
buffer = llformat("texture_detail_%d", i);
initCtrl(buffer);
}
for(S32 i = 0; i < CORNER_COUNT; ++i)
{
buffer = llformat("height_start_spin_%d", i);
initCtrl(buffer);
buffer = llformat("height_range_spin_%d", i);
initCtrl(buffer);
}
return LLPanelRegionInfo::postBuild();
}
BOOL LLPanelRegionTextureInfo::sendUpdate()
{
llinfos << "LLPanelRegionTextureInfo::sendUpdate()" << llendl;
// Make sure user hasn't chosen wacky textures.
if (!validateTextureSizes())
{
return FALSE;
}
LLTextureCtrl* texture_ctrl;
std::string buffer;
std::string id_str;
LLMessageSystem* msg = gMessageSystem;
strings_t strings;
LLUUID invoice(LLFloaterRegionInfo::getLastInvoice());
for(S32 i = 0; i < TERRAIN_TEXTURE_COUNT; ++i)
{
buffer = llformat("texture_detail_%d", i);
texture_ctrl = getChild<LLTextureCtrl>(buffer);
if(texture_ctrl)
{
LLUUID tmp_id(texture_ctrl->getImageAssetID());
tmp_id.toString(id_str);
buffer = llformat("%d %s", i, id_str.c_str());
strings.push_back(buffer);
}
}
sendEstateOwnerMessage(msg, "texturedetail", invoice, strings);
strings.clear();
for(S32 i = 0; i < CORNER_COUNT; ++i)
{
buffer = llformat("height_start_spin_%d", i);
std::string buffer2 = llformat("height_range_spin_%d", i);
std::string buffer3 = llformat("%d %f %f", i, (F32)childGetValue(buffer).asReal(), (F32)childGetValue(buffer2).asReal());
strings.push_back(buffer3);
}
sendEstateOwnerMessage(msg, "textureheights", invoice, strings);
strings.clear();
sendEstateOwnerMessage(msg, "texturecommit", invoice, strings);
return TRUE;
}
BOOL LLPanelRegionTextureInfo::validateTextureSizes()
{ {
for(S32 i = 0; i < TERRAIN_TEXTURE_COUNT; ++i) for(S32 i = 0; i < TERRAIN_TEXTURE_COUNT; ++i)
{ {
@@ -1211,11 +1104,26 @@ BOOL LLPanelRegionTerrainInfo::postBuild()
childSetCommitCallback("use_estate_sun_check", onChangeUseEstateTime, this); childSetCommitCallback("use_estate_sun_check", onChangeUseEstateTime, this);
initCtrl("sun_hour_slider"); initCtrl("sun_hour_slider");
std::string buffer;
for(S32 i = 0; i < TERRAIN_TEXTURE_COUNT; ++i)
{
buffer = llformat("texture_detail_%d", i);
initCtrl(buffer);
}
for(S32 i = 0; i < CORNER_COUNT; ++i)
{
buffer = llformat("height_start_spin_%d", i);
initCtrl(buffer);
buffer = llformat("height_range_spin_%d", i);
initCtrl(buffer);
}
childSetAction("download_raw_btn", onClickDownloadRaw, this); childSetAction("download_raw_btn", onClickDownloadRaw, this);
childSetAction("upload_raw_btn", onClickUploadRaw, this); childSetAction("upload_raw_btn", onClickUploadRaw, this);
childSetAction("bake_terrain_btn", onClickBakeTerrain, this); childSetAction("bake_terrain_btn", onClickBakeTerrain, this);
return TRUE; return LLPanelRegionInfo::postBuild();
} }
// virtual // virtual
@@ -1229,6 +1137,39 @@ bool LLPanelRegionTerrainInfo::refreshFromRegion(LLViewerRegion* region)
getChildView("apply_btn")->setEnabled(FALSE); getChildView("apply_btn")->setEnabled(FALSE);
if (region)
{
getChild<LLUICtrl>("region_text")->setValue(LLSD(region->getName()));
LLVLComposition* compp = region->getComposition();
LLTextureCtrl* texture_ctrl;
std::string buffer;
for(S32 i = 0; i < TERRAIN_TEXTURE_COUNT; ++i)
{
buffer = llformat("texture_detail_%d", i);
texture_ctrl = getChild<LLTextureCtrl>(buffer);
if(texture_ctrl)
{
lldebugs << "Detail Texture " << i << ": "
<< compp->getDetailTextureID(i) << llendl;
LLUUID tmp_id(compp->getDetailTextureID(i));
texture_ctrl->setImageAssetID(tmp_id);
}
}
for(S32 i = 0; i < CORNER_COUNT; ++i)
{
buffer = llformat("height_start_spin_%d", i);
getChild<LLUICtrl>(buffer)->setValue(LLSD(compp->getStartHeight(i)));
buffer = llformat("height_range_spin_%d", i);
getChild<LLUICtrl>(buffer)->setValue(LLSD(compp->getHeightRange(i)));
}
}
else
{
lldebugs << "no region set" << llendl;
getChild<LLUICtrl>("region_text")->setValue(LLSD(""));
}
getChildView("download_raw_btn")->setEnabled(owner_or_god); getChildView("download_raw_btn")->setEnabled(owner_or_god);
getChildView("upload_raw_btn")->setEnabled(owner_or_god); getChildView("upload_raw_btn")->setEnabled(owner_or_god);
@@ -1259,6 +1200,52 @@ BOOL LLPanelRegionTerrainInfo::sendUpdate()
// and sync the region with it // and sync the region with it
region_info.sendRegionTerrain(invoice); region_info.sendRegionTerrain(invoice);
// =======================================
// Assemble and send texturedetail message
// Make sure user hasn't chosen wacky textures.
if (!validateTextureSizes())
{
return FALSE;
}
LLTextureCtrl* texture_ctrl;
std::string id_str;
LLMessageSystem* msg = gMessageSystem;
for(S32 i = 0; i < TERRAIN_TEXTURE_COUNT; ++i)
{
buffer = llformat("texture_detail_%d", i);
texture_ctrl = getChild<LLTextureCtrl>(buffer);
if(texture_ctrl)
{
LLUUID tmp_id(texture_ctrl->getImageAssetID());
tmp_id.toString(id_str);
buffer = llformat("%d %s", i, id_str.c_str());
strings.push_back(buffer);
}
}
sendEstateOwnerMessage(msg, "texturedetail", invoice, strings);
strings.clear();
// ========================================
// Assemble and send textureheights message
for(S32 i = 0; i < CORNER_COUNT; ++i)
{
buffer = llformat("height_start_spin_%d", i);
std::string buffer2 = llformat("height_range_spin_%d", i);
std::string buffer3 = llformat("%d %f %f", i, (F32)getChild<LLUICtrl>(buffer)->getValue().asReal(), (F32)getChild<LLUICtrl>(buffer2)->getValue().asReal());
strings.push_back(buffer3);
}
sendEstateOwnerMessage(msg, "textureheights", invoice, strings);
strings.clear();
// ========================================
// Send texturecommit message
sendEstateOwnerMessage(msg, "texturecommit", invoice, strings);
// Grab estate information in case the user decided to set the // Grab estate information in case the user decided to set the
// region back to estate time. JC // region back to estate time. JC
LLFloaterRegionInfo* floater = LLFloaterRegionInfo::getInstance(); LLFloaterRegionInfo* floater = LLFloaterRegionInfo::getInstance();
@@ -2476,7 +2463,7 @@ const std::string LLPanelEstateInfo::getOwnerName() const
void LLPanelEstateInfo::setOwnerName(const std::string& name) void LLPanelEstateInfo::setOwnerName(const std::string& name)
{ {
childSetValue("estate_owner", LLSD(name)); getChild<LLUICtrl>("estate_owner")->setValue(LLSD(name));
} }
void LLPanelEstateInfo::setAccessAllowedEnabled(bool enable_agent, void LLPanelEstateInfo::setAccessAllowedEnabled(bool enable_agent,
@@ -2556,6 +2543,7 @@ void LLPanelEstateInfo::clearAccessLists()
{ {
name_list->deleteAllItems(); name_list->deleteAllItems();
} }
updateControls(gAgent.getRegion());
} }
// enables/disables the "remove" button for the various allow/ban lists // enables/disables the "remove" button for the various allow/ban lists

View File

@@ -57,7 +57,6 @@ class AIFilePicker;
class LLPanelRegionGeneralInfo; class LLPanelRegionGeneralInfo;
class LLPanelRegionDebugInfo; class LLPanelRegionDebugInfo;
class LLPanelRegionTextureInfo;
class LLPanelRegionTerrainInfo; class LLPanelRegionTerrainInfo;
class LLPanelEstateInfo; class LLPanelEstateInfo;
class LLPanelEstateCovenant; class LLPanelEstateCovenant;
@@ -87,6 +86,7 @@ public:
static LLPanelEstateInfo* getPanelEstate(); static LLPanelEstateInfo* getPanelEstate();
static LLPanelEstateCovenant* getPanelCovenant(); static LLPanelEstateCovenant* getPanelCovenant();
static LLPanelRegionTerrainInfo* getPanelRegionTerrain();
// from LLPanel // from LLPanel
virtual void refresh(); virtual void refresh();
@@ -213,23 +213,6 @@ private:
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
class LLPanelRegionTextureInfo : public LLPanelRegionInfo
{
public:
LLPanelRegionTextureInfo();
~LLPanelRegionTextureInfo() {}
virtual BOOL postBuild(); // LLPanel
virtual bool refreshFromRegion(LLViewerRegion* region); // refresh local settings from region update from simulator
protected:
virtual BOOL sendUpdate();
BOOL validateTextureSizes();
};
/////////////////////////////////////////////////////////////////////////////
class LLPanelRegionTerrainInfo : public LLPanelRegionInfo class LLPanelRegionTerrainInfo : public LLPanelRegionInfo
{ {
LOG_CLASS(LLPanelRegionTerrainInfo); LOG_CLASS(LLPanelRegionTerrainInfo);
@@ -242,10 +225,14 @@ public:
virtual bool refreshFromRegion(LLViewerRegion* region); // refresh local settings from region update from simulator virtual bool refreshFromRegion(LLViewerRegion* region); // refresh local settings from region update from simulator
BOOL validateTextureSizes();
protected: protected:
virtual BOOL sendUpdate();
static void onChangeUseEstateTime(LLUICtrl* ctrl, void* user_data); static void onChangeUseEstateTime(LLUICtrl* ctrl, void* user_data);
//static void onChangeAnything(LLUICtrl* ctrl, void* userData); // callback for any change, to enable commit button
virtual BOOL sendUpdate();
static void onClickDownloadRaw(void*); static void onClickDownloadRaw(void*);
void onClickDownloadRaw_continued(AIFilePicker* filepicker); void onClickDownloadRaw_continued(AIFilePicker* filepicker);

View File

@@ -1,60 +1,466 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?> <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel border="true" bottom="0" follows="top|left" height="320" label="Terrain" <panel
left="0" name="Terrain" width="480"> border="true"
<text bottom="-30" follows="left|top" font="SansSerif" height="20" left="10" follows="top|left"
name="region_text_lbl" width="100"> help_topic="panel_region_terrain_tab"
Region: label="Terrain"
</text> layout="topleft"
<text bottom_delta="0" follows="left|top" font="SansSerif" height="20" left="60" left="0"
name="region_text" width="400"> name="Terrain"
unknown bottom="0"
</text> height="320"
<spinner bottom_delta="-30" follows="left|top" height="20" increment=".1" width="480">
label="Water Height" label_width="120" left="15" max_val="100" min_val="0" <text
name="water_height_spin" width="180" /> follows="left|top"
<button bottom_delta="0" follows="left|top" font="SansSerifSmall" height="18" label="?" font="SansSerif"
left="200" name="water_height_help" width="18" /> height="20"
<spinner bottom_delta="-20" follows="left|top" height="20" increment=".2" layout="topleft"
label="Terrain Raise Limit" label_width="120" left="15" max_val="100" left="10"
min_val="0" name="terrain_raise_spin" width="180" /> name="region_text_lbl"
<button bottom_delta="0" follows="left|top" font="SansSerifSmall" height="18" label="?" bottom="-30"
left="200" name="terrain_raise_help" width="18" /> width="100">
<spinner bottom_delta="-20" follows="left|top" height="20" increment=".2" Region:
label="Terrain Lower Limit" label_width="120" left="15" max_val="0" </text>
min_val="-100" name="terrain_lower_spin" width="180" /> <text
<button bottom_delta="0" follows="left|top" font="SansSerifSmall" height="18" label="?" follows="left|top"
left="200" name="terrain_lower_help" width="18" /> font="SansSerif"
<check_box bottom="-55" follows="left|top" height="20" label="Use Estate Sun" left="250" height="20"
name="use_estate_sun_check" width="100" /> layout="topleft"
<button bottom_delta="0" follows="left|top" font="SansSerifSmall" height="18" label="?" left="60"
left="420" name="use_estate_sun_help" width="18" /> name="region_text"
<check_box bottom_delta="-20" follows="left|top" height="20" label="Fixed Sun" left="250" bottom_delta="0"
name="fixed_sun_check" width="100" /> width="400">
<button bottom_delta="0" follows="left|top" font="SansSerifSmall" height="18" label="?" unknown
left="420" name="fixed_sun_help" width="18" /> </text>
<icon bottom_delta="-25" follows="left|top" height="20" <spinner
image_name="icon_day_cycle.tga" left="285" name="daycycle" width="165" /> follows="left|top"
<slider bottom_delta="-25" follows="left|top" height="20" increment="0.001" height="20"
label="Phase" left="250" max_val="30" min_val="6" name="sun_hour_slider" increment=".1"
show_text="false" width="200" /> label="Water Height"
<button bottom_delta="-30" enabled="false" follows="left|top" height="20" label="Apply" label_width="120"
left="350" name="apply_btn" width="90" /> layout="topleft"
<view_border bevel_style="none" border_thickness="1" bottom_delta="-5" follows="top|left" left="15"
height="130" left="8" width="460" /> max_val="100"
<button bottom_delta="-80" follows="left|top" height="20" min_val="0"
label="Download RAW terrain..." left="10" name="download_raw_btn" name="water_height_spin"
tool_tip="Available only to estate owners, not managers" width="170" /> bottom="-60"
<button bottom_delta="0" follows="left|top" font="SansSerifSmall" height="18" label="?" width="180" />
left="190" name="download_raw_help" width="18" /> <button
<button bottom_delta="-23" follows="left|top" height="20" label="Upload RAW terrain..." bottom_delta="3"
left="10" name="upload_raw_btn" follows="left|top"
tool_tip="Available only to estate owners, not managers" width="170" /> font="SansSerifSmall"
<button bottom_delta="0" follows="left|top" font="SansSerifSmall" height="18" label="?" height="18"
left="190" name="upload_raw_help" width="18" /> label="?"
<button bottom_delta="-40" follows="left|top" height="20" label="Bake Terrain" left_delta="182"
left="10" name="bake_terrain_btn" name="water_height_help"
tool_tip="Set current terrain as mid-point for raise/lower limits" width="18" />
width="100" /> <spinner
<button bottom_delta="0" follows="left|top" font="SansSerifSmall" height="18" label="?" follows="left|top"
left="120" name="bake_terrain_help" width="18" /> height="20"
increment="0.2"
label="Terrain Raise Limit"
label_width="120"
layout="topleft"
left="240"
max_val="100"
min_val="0"
name="terrain_raise_spin"
bottom="-60"
width="180" />
<button
bottom_delta="3"
follows="left|top"
font="SansSerifSmall"
height="18"
label="?"
left_delta="182"
name="terrain_raise_help"
width="18" />
<spinner
follows="left|top"
height="20"
increment="0.2"
label="Terrain Lower Limit"
label_width="120"
layout="topleft"
left="240"
max_val="0"
min_val="-100"
name="terrain_lower_spin"
bottom_delta="-25"
width="180" />
<button
bottom_delta="3"
follows="left|top"
font="SansSerifSmall"
height="18"
label="?"
left_delta="182"
name="terrain_lower_help"
width="18" />
<view_border
bevel_style="none"
follows="top|left"
height="60"
layout="topleft"
left="8"
bottom_delta="-10"
top="30"
width="460" />
<text
type="string"
length="1"
follows="left|top"
height="20"
layout="topleft"
left="10"
name="detail_texture_text"
bottom_delta="-30"
width="300">
Terrain Textures
</text>
<texture_picker
follows="left|top"
height="100"
layout="topleft"
left_delta="0"
name="texture_detail_0"
bottom_delta="-100"
width="100" />
<texture_picker
follows="left|top"
height="100"
layout="topleft"
left_delta="110"
name="texture_detail_1"
bottom_delta="0"
width="100" />
<texture_picker
follows="left|top"
height="100"
layout="topleft"
left_delta="110"
name="texture_detail_2"
bottom_delta="0"
width="100" />
<texture_picker
follows="left|top"
height="100"
layout="topleft"
left_delta="110"
name="texture_detail_3"
bottom_delta="0"
width="100" />
<text
type="string"
length="1"
follows="left|top"
height="20"
layout="topleft"
left="10"
name="height_text_lbl"
bottom_delta="-10"
width="65">
1 (Low)
</text>
<text
type="string"
length="1"
follows="left|top"
height="20"
layout="topleft"
left_delta="110"
name="height_text_lbl2"
bottom_delta="0"
width="100">
2
</text>
<text
type="string"
length="1"
follows="left|top"
height="20"
layout="topleft"
left_delta="110"
name="height_text_lbl3"
bottom_delta="0"
width="100">
3
</text>
<text
type="string"
length="1"
follows="left|top"
height="20"
layout="topleft"
left_delta="110"
name="height_text_lbl4"
bottom_delta="0"
width="100">
4 (High)
</text>
<text
type="string"
length="1"
follows="left|top"
height="20"
layout="topleft"
left="10"
name="height_text_lbl5"
bottom_delta="-30"
top_delta="30"
width="300">
Texture Elevation Ranges
</text>
<text
follows="left|top"
height="20"
layout="topleft"
left="10"
name="height_text_lbl10"
top_delta="30"
width="200"
word_wrap="true">
These values represent the blend
range for the textures above.
</text>
<text
follows="left|top"
height="60"
layout="topleft"
left_delta="0"
name="height_text_lbl11"
bottom_delta="-80"
top_delta="32"
width="200"
word_wrap="true">
Measured in meters, the LOW value
is the MAXIMUM height of Texture #1,
and the HIGH value is the
MINIMUM height of Texture #4.
</text>
<text
follows="left|top"
height="20"
layout="topleft"
left="270"
name="height_text_lbl6"
bottom="-260"
width="100">
Northwest
</text>
<text
follows="left|top"
height="20"
layout="topleft"
left_delta="110"
name="height_text_lbl7"
bottom_delta="0"
width="100">
Northeast
</text>
<!-- northwest low-->
<spinner
follows="left|top"
height="20"
increment="0.5"
label="Low"
label_width="37"
layout="topleft"
left="230"
max_val="500"
min_val="-500"
name="height_start_spin_1"
bottom_delta="-20"
width="100" />
<!-- northeast low-->
<spinner
follows="left|top"
height="20"
increment="0.5"
label="Low"
label_width="37"
layout="topleft"
left_delta="110"
max_val="500"
min_val="-500"
name="height_start_spin_3"
bottom_delta="0"
width="100" />
<!-- northwest high-->
<spinner
follows="left|top"
height="20"
increment="0.5"
label="High"
label_width="37"
layout="topleft"
left="230"
max_val="500"
min_val="-500"
name="height_range_spin_1"
bottom_delta="-20"
width="100" />
<!-- northeast high-->
<spinner
follows="left|top"
height="20"
increment="0.5"
label="High"
label_width="37"
layout="topleft"
left_delta="110"
max_val="500"
min_val="-500"
name="height_range_spin_3"
bottom_delta="0"
width="100" />
<text
follows="left|top"
height="20"
layout="topleft"
left="270"
name="height_text_lbl8"
bottom_delta="-20"
top_pad="10"
width="100">
Southwest
</text>
<text
follows="left|top"
height="20"
layout="topleft"
left_delta="110"
name="height_text_lbl9"
bottom_delta="0"
width="100">
Southeast
</text>
<!-- southwest low-->
<spinner
follows="left|top"
height="20"
increment="0.5"
label="Low"
label_width="37"
layout="topleft"
left="230"
max_val="500"
min_val="-500"
name="height_start_spin_0"
bottom_delta="-20"
width="100" />
<!-- southeast low-->
<spinner
follows="left|top"
height="20"
increment="0.5"
label="Low"
label_width="37"
layout="topleft"
left_delta="110"
max_val="500"
min_val="-500"
name="height_start_spin_2"
bottom_delta="0"
width="100" />
<!--southwest high-->
<spinner
follows="left|top"
height="20"
increment="0.5"
label="High"
label_width="37"
layout="topleft"
left="230"
max_val="500"
min_val="-500"
name="height_range_spin_0"
bottom_delta="-20"
width="100" />
<!-- southeast high-->
<spinner
follows="left|top"
height="20"
increment="0.5"
label="High"
label_width="37"
layout="topleft"
left_delta="110"
max_val="500"
min_val="-500"
name="height_range_spin_2"
bottom_delta="0"
width="100" />
<!-- Terrain Download/Upload/Bake buttons -->
<button
follows="left|top"
height="20"
label="Download RAW terrain..."
font="SansSerifSmall"
layout="topleft"
left="10"
name="download_raw_btn"
tool_tip="Available only to estate owners, not managers"
bottom_delta="-35"
width="140" />
<button
bottom_delta="0"
follows="left|top"
font="SansSerifSmall"
height="20"
label="?"
left_delta="140"
name="download_raw_help"
width="20" />
<button
follows="left|top"
height="20"
label="Upload RAW terrain..."
font="SansSerifSmall"
layout="topleft"
left_delta="30"
bottom_delta="0"
name="upload_raw_btn"
tool_tip="Available only to estate owners, not managers"
width="130" />
<button
bottom_delta="0"
follows="left|top"
font="SansSerifSmall"
height="20"
label="?"
left_delta="130"
name="upload_raw_help"
width="20" />
<button
bottom_delta="0"
follows="left|top"
height="20"
label="Bake Terrain"
font="SansSerifSmall"
layout="topleft"
left_delta="30"
name="bake_terrain_btn"
tool_tip="Set current terrain as mid-point for raise/lower limits"
width="80" />
<button
bottom_delta="0"
follows="left|top"
font="SansSerifSmall"
height="20"
label="?"
left_delta="80"
name="bake_terrain_help"
width="20" />
<button
enabled="true"
follows="left|top"
height="20"
label="Apply"
layout="topleft"
left_delta="-80"
name="apply_btn"
bottom_delta="-40"
width="100" />
</panel> </panel>

View File

@@ -1,98 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel border="true" bottom="0" follows="top|left" height="320"
label="Ground Textures" left="0" name="Textures" width="480">
<text bottom="-30" follows="left|top" font="SansSerif" height="20" left="10"
name="region_text_lbl" width="100">
Region:
</text>
<text bottom_delta="0" follows="left|top" font="SansSerif" height="20" left="60"
name="region_text" width="400">
unknown
</text>
<text bottom_delta="-26" follows="left|top" height="20" left="10"
name="detail_texture_text" width="300">
Terrain Textures
</text>
<texture_picker bottom_delta="-100" follows="left|top" height="100" left="10"
name="texture_detail_0" width="100" />
<texture_picker bottom_delta="0" follows="left|top" height="100" left="120"
name="texture_detail_1" width="100" />
<texture_picker bottom_delta="0" follows="left|top" height="100" left="230"
name="texture_detail_2" width="100" />
<texture_picker bottom_delta="0" follows="left|top" height="100" left="340"
name="texture_detail_3" width="100" />
<text bottom_delta="-10" follows="left|top" height="20" left="10"
name="height_text_lbl" width="65">
1 (Low)
</text>
<text bottom_delta="0" follows="left|top" height="20" left="120"
name="height_text_lbl2" width="100">
2
</text>
<text bottom_delta="0" follows="left|top" height="20" left="230"
name="height_text_lbl3" width="100">
3
</text>
<text bottom_delta="0" follows="left|top" height="20" left="340"
name="height_text_lbl4" width="100">
4 (High)
</text>
<text bottom_delta="-40" follows="left|top" height="20" left="10"
name="height_text_lbl5" width="300">
Texture Elevation Ranges
</text>
<text bottom_delta="-15" follows="left|top" height="20" left="51"
name="height_text_lbl6" width="100">
Southwest
</text>
<text bottom_delta="0" follows="left|top" height="20" left="161"
name="height_text_lbl7" width="100">
Northwest
</text>
<text bottom_delta="0" follows="left|top" height="20" left="271"
name="height_text_lbl8" width="100">
Southeast
</text>
<text bottom_delta="0" follows="left|top" height="20" left="381"
name="height_text_lbl9" width="100">
Northeast
</text>
<spinner bottom_delta="-20" follows="left|top" height="20" increment="0.5" label="Low"
label_width="37" left="10" max_val="500" min_val="-500"
name="height_start_spin_0" width="100" />
<spinner bottom_delta="0" follows="left|top" height="20" increment="0.5" label="Low"
label_width="37" left="120" max_val="500" min_val="-500"
name="height_start_spin_1" width="100" />
<spinner bottom_delta="0" follows="left|top" height="20" increment="0.5" label="Low"
label_width="37" left="230" max_val="500" min_val="-500"
name="height_start_spin_2" width="100" />
<spinner bottom_delta="0" follows="left|top" height="20" increment="0.5" label="Low"
label_width="37" left="340" max_val="500" min_val="-500"
name="height_start_spin_3" width="100" />
<spinner bottom_delta="-20" follows="left|top" height="20" increment="0.5" label="High"
label_width="37" left="10" max_val="500" min_val="-500"
name="height_range_spin_0" width="100" />
<spinner bottom_delta="0" follows="left|top" height="20" increment="0.5" label="High"
label_width="37" left="120" max_val="500" min_val="-500"
name="height_range_spin_1" width="100" />
<spinner bottom_delta="0" follows="left|top" height="20" increment="0.5" label="High"
label_width="37" left="230" max_val="500" min_val="-500"
name="height_range_spin_2" width="100" />
<spinner bottom_delta="0" follows="left|top" height="20" increment="0.5" label="High"
label_width="37" left="340" max_val="500" min_val="-500"
name="height_range_spin_3" width="100" />
<text bottom_delta="-40" follows="left|top" height="20" left="25"
name="height_text_lbl10" width="480">
These values represent the blend range for the textures above.
</text>
<text bottom_delta="-16" follows="left|top" height="20" left="25"
name="height_text_lbl11" width="450">
Measured in meters, the LOW value is the MAXIMUM height of Texture #1,
</text>
<text bottom_delta="-16" follows="left|top" height="20" left="25"
name="height_text_lbl12" width="480">
and the HIGH value is the MINIMUM height of Texture #4.
</text>
<button bottom="10" enabled="false" follows="left|bottom" height="20" label="Apply"
left="350" name="apply_btn" width="100" />
</panel>