FIRE-8063: Add Open Region Settings panel to the Region Info floater for aurora-sim; Add IsInAuroraSim() to fsgridhandler

Cinders 2012-10-28 14:23:32 -06:00
parent 5a99197fa4
commit d145a7701f
9 changed files with 503 additions and 2 deletions

View File

@ -378,6 +378,23 @@
<boolean>true</boolean>
</map>
<!-- Server to client -->
<key>OpenRegionInfo</key>
<map>
<key>flavor</key>
<string>llsd</string>
<key>trusted-sender</key>
<boolean>true</boolean>
</map>
<key>WindLightRefresh</key>
<map>
<key>flavor</key>
<string>llsd</string>
<key>trusted-sender</key>
<boolean>true</boolean>
</map>
<key>ParcelVoiceInfo</key>
<map>
<key>flavor</key>

View File

@ -136,6 +136,7 @@ set(viewer_SOURCE_FILES
lggbeamscolors.cpp
lggcontactsets.cpp
lggcontactsetsfloater.cpp
llpanelopenregionsettings.cpp
llaccountingcostmanager.cpp
llagent.cpp

View File

@ -1391,6 +1391,13 @@ bool LLGridManager::isInOpenSim()
return mIsInOpenSim;
}
// <FS:CR> Aurora Sim
bool LLGridManager::isInAuroraSim()
{
return mIsInAuroraSim;
}
// </FS:CR> Aurora Sim
void LLGridManager::saveGridList()
{
// filter out just those which are not hardcoded anyway

View File

@ -92,6 +92,12 @@
#include "llagentui.h"
#include "llmeshrepository.h"
// <FS:CR> Aurora Sim - Region Settings Console
#include "llviewernetwork.h"
#include "llworld.h"
#include "llstartup.h"
// </FS:CR> Aurora Sim - Region Settings Console
const S32 TERRAIN_TEXTURE_COUNT = 4;
const S32 CORNER_COUNT = 4;
@ -199,6 +205,18 @@ BOOL LLFloaterRegionInfo::postBuild()
panel->buildFromFile("panel_region_general.xml");
mTab->addTabPanel(panel);
// <FS:CR> Aurora Sim - Region Settings Console
// We only use this panel on Aurora-based sims
std::string url = gAgent.getRegion()->getCapability("DispatchOpenRegionSettings");
if (!url.empty())
{
panel = new LLPanelRegionOpenSettingsInfo;
mInfoPanels.push_back(panel);
panel->buildFromFile("panel_region_open_region_settings.xml");
mTab->addTabPanel(panel);
}
// </FS:CR> Aurora Sim - Region Settings Console
panel = new LLPanelRegionTerrainInfo;
mInfoPanels.push_back(panel);
panel->buildFromFile("panel_region_terrain.xml");
@ -451,6 +469,18 @@ LLPanelRegionTerrainInfo* LLFloaterRegionInfo::getPanelRegionTerrain()
return panel;
}
// <FS:CR> Aurora Sim - Region Settings Console
// static
LLPanelRegionOpenSettingsInfo* LLFloaterRegionInfo::getPanelOpenSettings()
{
LLFloaterRegionInfo* floater = LLFloaterReg::getTypedInstance<LLFloaterRegionInfo>("region_info");
if (!floater) return NULL;
LLTabContainer* tab = floater->getChild<LLTabContainer>("region_panels");
LLPanelRegionOpenSettingsInfo* panel = (LLPanelRegionOpenSettingsInfo*)tab->getChild<LLPanel>("RegionSettings");
return panel;
}
// </FS:CR> Aurora Sim - Region Settings Console
void LLFloaterRegionInfo::onTabSelected(const LLSD& param)
{
LLPanel* active_panel = getChild<LLPanel>(param.asString());
@ -878,6 +908,127 @@ BOOL LLPanelRegionGeneralInfo::sendUpdate()
return TRUE;
}
// <FS:CR> Aurora Sim - Region Settings Panel
/////////////////////////////////////////////////////////////////////////////
// LLPanelRegionOpenSettingsInfo
/////////////////////////////////////////////////////////////////////////////
bool LLPanelRegionOpenSettingsInfo::refreshFromRegion(LLViewerRegion* region)
{
// Data gets filled in by hippo manager
BOOL allow_modify = gAgent.isGodlike() || (region && region->canManageEstate());
LLWorld *regionlimits = LLWorld::getInstance();
childSetValue("draw_distance", LLSD(regionlimits->getDrawDistance()));
childSetValue("force_draw_distance", LLSD(regionlimits->getLockedDrawDistance()));
childSetValue("allow_minimap", LLSD(regionlimits->getAllowMinimap()));
childSetValue("allow_physical_prims", LLSD(regionlimits->getAllowPhysicalPrims()));
childSetValue("max_drag_distance", LLSD(regionlimits->getMaxDragDistance()));
childSetValue("min_hole_size", LLSD(regionlimits->getRegionMinHoleSize()));
childSetValue("max_hollow_size", LLSD(regionlimits->getRegionMaxHollowSize()));
childSetValue("max_inventory_items_transfer", LLSD(regionlimits->getMaxInventoryItemsTransfer()));
childSetValue("max_link_count", LLSD((LLSD::Integer)regionlimits->getMaxLinkedPrims()));
childSetValue("max_link_count_phys", LLSD(regionlimits->getMaxPhysLinkedPrims()));
childSetValue("max_phys_prim_scale", LLSD(regionlimits->getMaxPhysPrimScale()));
childSetValue("max_prim_scale", LLSD(regionlimits->getRegionMaxPrimScale()));
childSetValue("min_prim_scale", LLSD(regionlimits->getRegionMinPrimScale()));
childSetValue("render_water", LLSD(regionlimits->getAllowRenderWater()));
childSetValue("show_tags", LLSD(regionlimits->getAllowRenderName()));
childSetValue("max_groups", LLSD(gMaxAgentGroups));
childSetValue("allow_parcel_windlight", LLSD(regionlimits->getAllowParcelWindLight()));
childSetValue("enable_teen_mode", LLSD(regionlimits->getEnableTeenMode()));
childSetValue("enforce_max_build", LLSD(regionlimits->getEnforceMaxBuild()));
childSetValue("terrain_detail_scale", LLSD(regionlimits->getTerrainDetailScale()));
setCtrlsEnabled(allow_modify);
return LLPanelRegionInfo::refreshFromRegion(region);
}
BOOL LLPanelRegionOpenSettingsInfo::postBuild()
{
// Enable the "Apply" button if something is changed. JC
initCtrl("draw_distance");
initCtrl("force_draw_distance");
initCtrl("max_drag_distance");
initCtrl("max_prim_scale");
initCtrl("min_prim_scale");
initCtrl("max_phys_prim_scale");
initCtrl("max_hollow_size");
initCtrl("min_hole_size");
initCtrl("max_link_count");
initCtrl("max_link_count_phys");
initCtrl("max_inventory_items_transfer");
initCtrl("max_groups");
initCtrl("render_water");
initCtrl("allow_minimap");
initCtrl("allow_physical_prims");
initCtrl("enable_teen_mode");
initCtrl("show_tags");
initCtrl("allow_parcel_windlight");
initCtrl("terrain_detail_scale");
childSetAction("force_draw_distance_help", onClickHelp, new std::string("HelpForceDrawDistance"));
childSetAction("max_inventory_items_transfer_help", onClickHelp, new std::string("HelpMaxInventoryItemsTransfer"));
childSetAction("max_groups_help", onClickHelp, new std::string("HelpMaxGroups"));
childSetAction("render_water_help", onClickHelp, new std::string("HelpRenderWater"));
childSetAction("allow_minimap_help", onClickHelp, new std::string("HelpAllowMinimap"));
childSetAction("allow_physical_prims_help", onClickHelp, new std::string("HelpAllowPhysicalPrims"));
childSetAction("enable_teen_mode_help", onClickHelp, new std::string("HelpEnableTeenMode"));
childSetAction("show_tags_help", onClickHelp, new std::string("HelpShowTags"));
childSetAction("allow_parcel_windlight_help", onClickHelp, new std::string("HelpAllowParcelWindLight"));
childSetAction("apply_ors_btn", onClickOrs, this);
refreshFromRegion(gAgent.getRegion());
return LLPanelRegionInfo::postBuild();
}
void LLPanelRegionOpenSettingsInfo::onClickHelp(void* data)
{
std::string* xml_alert = (std::string*)data;
LLNotifications::instance().add(*xml_alert);
}
void LLPanelRegionOpenSettingsInfo::onClickOrs(void* userdata)
{
LLPanelRegionOpenSettingsInfo* self;
self = (LLPanelRegionOpenSettingsInfo*)userdata;
llinfos << "LLPanelRegionOpenSettingsInfo::onClickOrs()" << llendl;
LLSD body;
std::string url = gAgent.getRegion()->getCapability("DispatchOpenRegionSettings");
if (!url.empty())
{
body["draw_distance"] = (LLSD::Integer)self->childGetValue("draw_distance");
body["force_draw_distance"] = (LLSD::Boolean)self->childGetValue("force_draw_distance");
body["allow_minimap"] = (LLSD::Boolean)self->childGetValue("allow_minimap");
body["allow_physical_prims"] = (LLSD::Boolean)self->childGetValue("allow_physical_prims");
body["max_drag_distance"] = (LLSD::Real)self->childGetValue("max_drag_distance");
body["min_hole_size"] = (LLSD::Real)self->childGetValue("min_hole_size");
body["max_hollow_size"] = (LLSD::Real)self->childGetValue("max_hollow_size");
body["max_inventory_items_transfer"] = (LLSD::Integer)self->childGetValue("max_inventory_items_transfer");
body["max_link_count"] = (LLSD::Real)self->childGetValue("max_link_count");
body["max_link_count_phys"] = (LLSD::Real)self->childGetValue("max_link_count_phys");
body["max_phys_prim_scale"] = (LLSD::Real)self->childGetValue("max_phys_prim_scale");
body["max_prim_scale"] = (LLSD::Real)self->childGetValue("max_prim_scale");
body["min_prim_scale"] = (LLSD::Real)self->childGetValue("min_prim_scale");
body["render_water"] = (LLSD::Boolean)self->childGetValue("render_water");
body["terrain_detail_scale"] = (LLSD::Real)self->childGetValue("terrain_detail_scale");
body["show_tags"] = (LLSD::Real)self->childGetValue("show_tags");
body["max_groups"] = (LLSD::Real)self->childGetValue("max_groups");
body["allow_parcel_windlight"] = (LLSD::Boolean)self->childGetValue("allow_parcel_windlight");
body["enable_teen_mode"] = (LLSD::Boolean)self->childGetValue("enable_teen_mode");
body["enforce_max_build"] = (LLSD::Boolean)self->childGetValue("enforce_max_build");
LLHTTPClient::post(url, body, new LLHTTPClient::Responder());
//llinfos << "data: " << LLSDXMLStreamer(body) << llendl;
}
}
// </FS:CR> Aurora Sim - Region Settings Console
/////////////////////////////////////////////////////////////////////////////
// LLPanelRegionDebugInfo
/////////////////////////////////////////////////////////////////////////////
@ -1233,11 +1384,20 @@ BOOL LLPanelRegionTerrainInfo::sendUpdate()
// =======================================
// Assemble and send texturedetail message
// Make sure user hasn't chosen wacky textures.
// Make sure user hasn't chosen wacky textures unless we're on Aurora-sim.
// <FS:CR> Aurora Sim - Region Settings Console
#ifdef HAS_OPENSIM_SUPPORT
if (!validateTextureSizes() && !LLGridManager::getInstance()->isInAuroraSim())
{
return FALSE;
}
#else
if (!validateTextureSizes())
{
return FALSE;
}
#endif
// </FS:CR> Aurora Sim - Region Settings Console
LLTextureCtrl* texture_ctrl;
std::string id_str;

View File

@ -56,6 +56,9 @@ class LLTextBox;
class LLVFS;
class LLPanelRegionGeneralInfo;
// <FS:CR> Aurora Sim - Region Settings Panel
class LLPanelRegionOpenSettingsInfo;
// </FS:CR> Aurora Sim - Region Settings Panel
class LLPanelRegionDebugInfo;
class LLPanelRegionTerrainInfo;
class LLPanelEstateInfo;
@ -90,6 +93,9 @@ public:
static LLPanelEstateInfo* getPanelEstate();
static LLPanelEstateCovenant* getPanelCovenant();
static LLPanelRegionTerrainInfo* getPanelRegionTerrain();
// <FS:CR> Aurora Sim - Region Settings Panel
static LLPanelRegionOpenSettingsInfo* getPanelOpenSettings();
// </FS:CR> Aurora Sim - Region Settings Panel
// from LLPanel
virtual void refresh();
@ -160,6 +166,26 @@ protected:
// Actual panels start here
/////////////////////////////////////////////////////////////////////////////
// <FS:CR> Aurora Sim - Region Settings Panel
class LLPanelRegionOpenSettingsInfo : public LLPanelRegionInfo
{
public:
LLPanelRegionOpenSettingsInfo()
: LLPanelRegionInfo() {}
~LLPanelRegionOpenSettingsInfo() {}
virtual bool refreshFromRegion(LLViewerRegion* region);
// LLPanel
virtual BOOL postBuild();
protected:
static void onClickOrs(void* userdata);
static void onClickHelp(void* data);
};
/////////////////////////////////////////////////////////////////////////////
// </FS:CR> Aurora Sim - Region Settings Panel
class LLPanelRegionGeneralInfo : public LLPanelRegionInfo
{

View File

@ -0,0 +1,208 @@
/* $LicenseInfo:firstyear=2011&license=viewerlgpl$
* @file llpanelopenregionsettings.cpp
* @brief Handler for OpenRegionInfo event queue message.
* Copyright (C) 2011, Patrick Sapinski, Matthew Beardmore
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License only.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
* $/LicenseInfo$
*/
#include "llviewerprecompiledheaders.h"
#include "llhttpnode.h"
#include "llviewercontrol.h"
#include "llagent.h"
#include "llsurface.h"
#include "llviewerregion.h"
#include "llviewerobject.h"
#include "llfloaterregioninfo.h"
#include "llworld.h"
#include "llagentcamera.h"
#include "llfloaterworldmap.h"
#include "llstartup.h"
#include "lldrawpoolterrain.h"
#include "llvlcomposition.h"
//DEBUG includes
#include "llsdserialize.h" //LLSDNotationStreamer - for dumping LLSD to string
class OpenRegionInfoUpdate : public LLHTTPNode
{
/*virtual*/ void post(
LLHTTPNode::ResponsePtr response,
const LLSD& context,
const LLSD& input) const
{
BOOL time_UTCDST = FALSE;
if (!input || !context || !input.isMap() || !input.has("body"))
{
llinfos << "malformed OpenRegionInfo update!" << llendl;
return;
}
std::string dump = input["body"].asString();
llwarns << dump << llendl;
LLWorld * regionlimits = LLWorld::getInstance();
LLSD body = input["body"];
//llinfos << "data: " << LLSDNotationStreamer(body) << llendl;
//llinfos << "data: " << LLSDXMLStreamer(body) << llendl;
//set the default limits/settings for this simulator type, as limits from our
//previous region may not exist in this one
regionlimits->refreshLimits();
if ( body.has("AllowMinimap") )
{
regionlimits->setAllowMinimap(body["AllowMinimap"].asInteger() == 1);
}
if ( body.has("AllowPhysicalPrims") )
{
regionlimits->setAllowPhysicalPrims(body["AllowPhysicalPrims"].asInteger() == 1);
}
if ( gSavedSettings.getBOOL("OpenregionsettingsEnableDrawdistance") )
{
if ( body.has("DrawDistance") )
{
F32 draw_distance = body["DrawDistance"].asReal();
if (draw_distance > 0)
{
gAgentCamera.mDrawDistance = draw_distance;
LLWorld::getInstance()->setLandFarClip(draw_distance);
}
regionlimits->setDrawDistance(body["DrawDistance"].asReal());
}
if ( body.has("ForceDrawDistance") )
{
regionlimits->setLockedDrawDistance(body["ForceDrawDistance"].asInteger() == 1 ? TRUE : FALSE);
}
}
if ( body.has("LSLFunctions") )
{
//IMPLEMENT ME
}
if ( body.has("TerrainDetailScale") )
{
//gAgent.getRegion()->getComposition()->setScaleParams(body["TerrainDetailScale"].asReal(), body["TerrainDetailScale"].asReal());
regionlimits->setTerrainDetailScale(body["TerrainDetailScale"].asReal());
gSavedSettings.setF32("RenderTerrainScale", body["TerrainDetailScale"].asReal());
LLDrawPoolTerrain::sDetailScale = 1.f/body["TerrainDetailScale"].asReal();
}
if ( body.has("MaxDragDistance") )
{
regionlimits->setMaxDragDistance(body["MaxDragDistance"].asReal());
}
if ( body.has("MinHoleSize") )
{
regionlimits->setRegionMinHoleSize(body["MinHoleSize"].asReal());
}
if ( body.has("MaxHollowSize") )
{
regionlimits->setRegionMaxHollowSize(body["MaxHollowSize"].asReal());
}
if ( body.has("MaxInventoryItemsTransfer") )
{
regionlimits->setMaxInventoryItemsTransfer(body["MaxInventoryItemsTransfer"].asReal());
}
if ( body.has("MaxLinkCount") )
{
regionlimits->setMaxLinkedPrims(body["MaxLinkCount"].asInteger());
}
if ( body.has("MaxLinkCountPhys") )
{
regionlimits->setMaxPhysLinkedPrims(body["MaxLinkCountPhys"].asInteger());
}
if ( body.has("MaxPos") )
{
regionlimits->setMaxPrimXPos(body["MaxPosX"].asReal());
regionlimits->setMaxPrimYPos(body["MaxPosY"].asReal());
regionlimits->setMaxPrimZPos(body["MaxPosZ"].asReal());
}
if ( body.has("MinPos") )
{
regionlimits->setMinPrimXPos(body["MinPosX"].asReal());
regionlimits->setMinPrimYPos(body["MinPosY"].asReal());
regionlimits->setMinPrimZPos(body["MinPosZ"].asReal());
}
if ( body.has("MaxPrimScale") )
{
regionlimits->setRegionMaxPrimScale(body["MaxPrimScale"].asReal());
regionlimits->setRegionMaxPrimScaleNoMesh(body["MaxPrimScale"].asReal());
}
if ( body.has("MaxPhysPrimScale") )
{
regionlimits->setMaxPhysPrimScale(body["MaxPhysPrimScale"].asReal());
}
if ( body.has("MinPrimScale") )
{
regionlimits->setRegionMinPrimScale(body["MinPrimScale"].asReal());
}
if ( body.has("OffsetOfUTCDST") )
{
time_UTCDST = body["OffsetOfUTCDST"].asInteger() == 1 ? TRUE : FALSE;
}
if ( body.has("OffsetOfUTC") )
{
gUTCOffset = body["OffsetOfUTC"].asInteger();
if(time_UTCDST) gUTCOffset++;
}
if ( body.has("RenderWater") )
{
regionlimits->setAllowRenderWater(body["RenderWater"].asInteger() == 1 ? TRUE : FALSE);
}
if ( body.has("SayDistance") )
{
regionlimits->setSayDistance(body["SayDistance"].asReal());
}
if ( body.has("ShoutDistance") )
{
regionlimits->setShoutDistance(body["ShoutDistance"].asReal());
}
if ( body.has("WhisperDistance") )
{
regionlimits->setWhisperDistance(body["WhisperDistance"].asReal());
}
if ( body.has("ToggleTeenMode") )
{
regionlimits->setEnableTeenMode(body["ToggleTeenMode"].asInteger() == 1 ? TRUE : FALSE);
}
if ( body.has("ShowTags") )
{
regionlimits->setAllowRenderName(body["ShowTags"].asReal());
}
if ( body.has("EnforceMaxBuild") )
{
regionlimits->setEnforceMaxBuild(body["EnforceMaxBuild"].asInteger() == 1 ? TRUE : FALSE);
}
if ( body.has("MaxGroups") )
{
gMaxAgentGroups = body["MaxGroups"].asInteger();
}
if ( body.has("AllowParcelWindLight") )
{
regionlimits->setAllowParcelWindLight(body["AllowParcelWindLight"].asInteger() == 1);
}
regionlimits->updateLimits();
}
};
LLHTTPRegistration<OpenRegionInfoUpdate>
gHTTPRegistrationOpenRegionInfoUpdate(
"/message/OpenRegionInfo");

View File

@ -0,0 +1,77 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel border="true" bottom="100" follows="top|left" height="320" label="Region Settings"
left="0" name="RegionSettings" width="480">
<spinner bottom_delta="-40" follows="left|top" height="20" increment="1"
label="Default Draw Distance" label_width="175" left="10" max_val="10000" min_val="-1"
name="draw_distance" width="250" />
<check_box bottom_delta="-20" follows="left|top" height="20" label="Force Draw Distance"
left="10" name="force_draw_distance" width="80" />
<button bottom_delta="0" follows="left|top" font="SansSerifSmall" height="18" label="?"
left="285" name="force_draw_distance_help" width="18" />
<spinner bottom_delta="-20" follows="left|top" height="20" increment="1"
label="Max Drag Distance" label_width="175" left="10" max_val="1000 0" min_val="0"
name="max_drag_distance" width="250" />
<spinner bottom_delta="-20" follows="left|top" height="20" increment="1"
label="Max Prim Scale" label_width="175" left="10" max_val="10000" min_val="0"
name="max_prim_scale" width="250" />
<spinner bottom_delta="-20" follows="left|top" height="20" increment="1"
label="Min Prim Scale" label_width="175" left="10" max_val="10000" min_val="0"
name="min_prim_scale" width="250" />
<spinner bottom_delta="-20" follows="left|top" height="20" increment="1"
label="Max Physical Prim Scale" label_width="175" left="10" max_val="10000" min_val="0"
name="max_phys_prim_scale" width="250" />
<spinner bottom_delta="-20" follows="left|top" height="20" increment="1"
label="Max Hollow Size" label_width="175" left="10" max_val="100" min_val="0"
name="max_hollow_size" width="250" />
<spinner bottom_delta="-20" follows="left|top" height="20" increment="1"
label="Min Hole Size" label_width="175" left="10" max_val="100" min_val="0"
name="min_hole_size" width="250" />
<spinner bottom_delta="-20" follows="left|top" height="20" increment="1"
label="Max Link Count" label_width="175" left="10" max_val="100000" min_val="0"
name="max_link_count" width="250" />
<spinner bottom_delta="-20" follows="left|top" height="20" increment="1"
label="Max Link Count Phys" label_width="175" left="10" max_val="100000" min_val="0"
name="max_link_count_phys" width="250" />
<spinner bottom_delta="-20" follows="left|top" height="20" increment="1"
label="Max Inventory Items To Transfer" label_width="175" left="10" max_val="10000" min_val="-1"
name="max_inventory_items_transfer" width="250" />
<spinner bottom_delta="-20" follows="left|top" height="20" increment="1"
label="Terrain Detail Scale" label_width="175" left="10" max_val="10000" min_val="-1"
name="terrain_detail_scale" width="250" />
<button bottom_delta="0" follows="left|top" font="SansSerifSmall" height="18" label="?"
left="285" name="max_inventory_items_transfer_help" width="18" />
<spinner bottom_delta="-20" follows="left|top" height="20" increment="1"
label="Show Tags" label_width="175" left="10" max_val="2" min_val="0"
name="show_tags" width="250" />
<button bottom_delta="0" follows="left|top" font="SansSerifSmall" height="18" label="?"
left="285" name="show_tags_help" width="18" />
<spinner bottom_delta="-20" follows="left|top" height="20" increment="1"
label="Max Groups" label_width="175" left="10" max_val="1000" min_val="-1"
name="max_groups" width="250" />
<button bottom_delta="0" follows="left|top" font="SansSerifSmall" height="18" label="?"
left="285" name="max_groups_help" width="18" />
<check_box bottom_delta="-20" follows="left|top" height="20" label="Render Water" left="10"
name="render_water" width="80" />
<button bottom_delta="0" follows="left|top" font="SansSerifSmall" height="18" label="?"
left="285" name="render_water_help" width="18" />
<check_box bottom_delta="-20" follows="left|top" height="20" label="Allow Minimap"
left="10" name="allow_minimap" width="80" />
<button bottom_delta="0" follows="left|top" font="SansSerifSmall" height="18" label="?"
left="285" name="allow_minimap_help" width="18" />
<check_box bottom_delta="-20" follows="left|top" height="20" label="Allow Physical Prims"
left="10" name="allow_physical_prims" width="80" />
<button bottom_delta="0" follows="left|top" font="SansSerifSmall" height="18" label="?"
left="285" name="allow_physical_prims_help" width="18" />
<button bottom_delta="0" follows="left|top" font="SansSerifSmall" height="18" label="?"
left="285" name="enable_teen_mode_help" width="18" />
<check_box bottom_delta="-20" follows="left|top" height="20" label="Enforce Max Build Constraints"
left="10" name="enforce_max_build" width="80" />
<check_box bottom_delta="-20" follows="left|top" height="20"
label="Allow Parcel WindLight" left="10"
name="allow_parcel_windlight"
width="80" />
<button bottom_delta="0" follows="left|top" font="SansSerifSmall" height="18" label="?"
left="285" name="allow_parcel_windlight_help" width="18" />
<button bottom_delta="-30" enabled="false" follows="left|top" height="20" label="Apply"
left="108" name="apply_ors_btn" width="100" />
</panel>

View File

@ -8684,6 +8684,11 @@ version 2.0
{ Agents U8 }
{ MapImageID LLUUID }
}
{
Size Variable
{ SizeX U16 }
{ SizeY U16 }
}
}
// viewer -> sim

View File

@ -1 +1 @@
465164e1a07f63d68c4ad1f00c19805dfb6ee2d7
26bd6f635ea2b2c3e9a6113ee1af2370574710d8