Sync
Includes: MAINT-3541 (crash in std::vector >::reserve) MAINT-3364 FIXED Call clearSelection() from root_folder MAINT-3621 FIXED Set name to "Unnamed" if object's name consists of whitespaces. MAINT-3412 add gpu_table line with distinct Intel Iris Pro OpenGL regex to match new MBP with forced Intel graphics MAINT-3119 FIXED Return common chars for triggers that matches the prefix. MAINT-3661 Fix for crash when uploading corrupt .dae file. MAINT-3671 FIXED Rename title when new tab is added. MAINT-3465 FIXED Add check mark to selected entry. BUG-5537 FIX reverting breaking changes to pectorals and belly. MAINT-535 FIXED The teleport SLAPP is changed to UNTRUSTED_THROTTLE. Confirmation dialog for teleporting via slapp is added.
This commit is contained in:
@@ -91,15 +91,17 @@ void LLTemplateMessageReader::getData(const char *blockname, const char *varname
|
||||
}
|
||||
|
||||
LLMsgBlkData *msg_block_data = iter->second;
|
||||
LLMsgVarData& vardata = msg_block_data->mMemberVarData[vnamep];
|
||||
LLMsgBlkData::msg_var_data_map_t &var_data_map = msg_block_data->mMemberVarData;
|
||||
|
||||
if (!vardata.getName())
|
||||
if (var_data_map.find(vnamep) == var_data_map.end())
|
||||
{
|
||||
llerrs << "Variable "<< vnamep << " not in message "
|
||||
<< mCurrentRMessageData->mName<< " block " << bnamep << llendl;
|
||||
return;
|
||||
}
|
||||
|
||||
LLMsgVarData& vardata = msg_block_data->mMemberVarData[vnamep];
|
||||
|
||||
if (size && size != vardata.getSize())
|
||||
{
|
||||
llerrs << "Msg " << mCurrentRMessageData->mName
|
||||
|
||||
@@ -172,6 +172,11 @@ LLModel::EModelStatus load_face_from_dom_triangles(std::vector<LLVolumeFace>& fa
|
||||
return LLModel::BAD_ELEMENT;
|
||||
}
|
||||
|
||||
if (!pos_source)
|
||||
{
|
||||
llwarns << "Unable to process mesh without position data; invalid model; invalid model." << llendl;
|
||||
return LLModel::BAD_ELEMENT;
|
||||
}
|
||||
|
||||
domPRef p = tri->getP();
|
||||
domListOfUInts& idx = p->getValue();
|
||||
@@ -181,19 +186,22 @@ LLModel::EModelStatus load_face_from_dom_triangles(std::vector<LLVolumeFace>& fa
|
||||
domListOfFloats& tc = tc_source ? tc_source->getFloat_array()->getValue() : dummy ;
|
||||
domListOfFloats& n = norm_source ? norm_source->getFloat_array()->getValue() : dummy ;
|
||||
|
||||
if (pos_source)
|
||||
{
|
||||
face.mExtents[0].set(v[0], v[1], v[2]);
|
||||
face.mExtents[1].set(v[0], v[1], v[2]);
|
||||
}
|
||||
|
||||
LLVolumeFace::VertexMapData::PointMap point_map;
|
||||
|
||||
|
||||
U32 index_count = idx.getCount();
|
||||
U32 vertex_count = pos_source ? v.getCount() : 0;
|
||||
U32 tc_count = tc_source ? tc.getCount() : 0;
|
||||
U32 norm_count = norm_source ? n.getCount() : 0;
|
||||
|
||||
if (vertex_count == 0)
|
||||
{
|
||||
llwarns << "Unable to process mesh with empty position array; invalid model." << llendl;
|
||||
return LLModel::BAD_ELEMENT;
|
||||
}
|
||||
|
||||
face.mExtents[0].set(v[0], v[1], v[2]);
|
||||
face.mExtents[1].set(v[0], v[1], v[2]);
|
||||
|
||||
for (U32 i = 0; i < index_count; i += idx_stride)
|
||||
{
|
||||
LLVolumeFace::VertexData cv;
|
||||
|
||||
@@ -3172,17 +3172,6 @@ This should be as low as possible, but too low may break functionality</string>
|
||||
<key>Value</key>
|
||||
<integer>2</integer>
|
||||
</map>
|
||||
<key>AvatarRotateThresholdMouselook</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Angle between avatar facing and camera facing at which avatar turns to face same direction as camera, when in mouselook (degrees)</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>F32</string>
|
||||
<key>Value</key>
|
||||
<real>120</real>
|
||||
</map>
|
||||
<key>AvatarBakedTextureUploadTimeout</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
|
||||
@@ -3563,7 +3563,7 @@
|
||||
<volume_morph
|
||||
name="BELLY"
|
||||
scale="0.075 0.04 0.03"
|
||||
pos="0.07 0 -0.02"/>
|
||||
pos="0.07 0 -0.07"/>
|
||||
<volume_morph
|
||||
name="PELVIS"
|
||||
scale="0.075 0.04 0.03"
|
||||
@@ -4008,7 +4008,7 @@
|
||||
label_min="Big Pectorals"
|
||||
label_max="Sunken Chest"
|
||||
value_default="0"
|
||||
value_min="-1.0"
|
||||
value_min="-0.5"
|
||||
value_max="1.1"
|
||||
camera_elevation=".3"
|
||||
camera_distance="1.2">
|
||||
|
||||
@@ -304,6 +304,10 @@ Intel HD Graphics 3000 .*Intel.*HD Graphics 3000.* 2 1
|
||||
Intel HD Graphics 3000 .*Intel.*Sandybridge.* 2 1
|
||||
Intel HD Graphics 4000 .*Intel.*HD Graphics 4000.* 2 1
|
||||
Intel HD Graphics 4000 .*Intel.*Ivybridge.* 2 1
|
||||
Intel Intel Iris Pro Graphics 5200 .*Intel.*Iris Pro Graphics 52.* 2 1
|
||||
Intel Intel Iris Graphics 5100 .*Intel.*Iris Graphics 51.* 2 1
|
||||
Intel Intel Iris OpenGL Engine .*Intel.*Iris OpenGL.* 2 1
|
||||
Intel Intel Iris Pro OpenGL Engine .*Intel.*Iris Pro OpenGL.* 3 1
|
||||
Intel HD Graphics 5000 .*Intel.*HD Graphics 5.* 2 1
|
||||
Intel HD Graphics 5000 .*Intel.*Haswell.* 2 1
|
||||
Intel HD Graphics .*Intel.*HD Graphics.* 2 1
|
||||
|
||||
@@ -1178,7 +1178,7 @@ void LLAgentCamera::updateCamera()
|
||||
|
||||
validateFocusObject();
|
||||
|
||||
bool realistic_ml(gSavedSettings.getBOOL("UseRealisticMouselook"));
|
||||
static const LLCachedControl<bool> realistic_ml("UseRealisticMouselook");
|
||||
if (isAgentAvatarValid() &&
|
||||
!realistic_ml &&
|
||||
gAgentAvatarp->isSitting() &&
|
||||
@@ -1492,16 +1492,14 @@ void LLAgentCamera::updateCamera()
|
||||
if (realistic_ml)
|
||||
{
|
||||
LLQuaternion agent_rot(gAgent.getFrameAgent().getQuaternion());
|
||||
if (isAgentAvatarValid())
|
||||
if (static_cast<LLViewerObject*>(gAgentAvatarp->getRoot())->flagCameraDecoupled())
|
||||
if (LLViewerObject* parent = static_cast<LLViewerObject*>(gAgentAvatarp->getParent()))
|
||||
if (static_cast<LLViewerObject*>(gAgentAvatarp->getRoot())->flagCameraDecoupled())
|
||||
agent_rot *= parent->getRenderRotation();
|
||||
agent_rot *= parent->getRenderRotation();
|
||||
LLViewerCamera::getInstance()->updateCameraLocation(head_pos, mCameraUpVector, gAgentAvatarp->mHeadp->getWorldPosition() + LLVector3(1.0, 0.0, 0.0) * agent_rot);
|
||||
}
|
||||
else
|
||||
{
|
||||
LLVector3 diff = mCameraPositionAgent - head_pos;
|
||||
diff = diff * ~gAgentAvatarp->mRoot->getWorldRotation();
|
||||
const LLVector3 diff = (mCameraPositionAgent - head_pos) * ~gAgentAvatarp->mRoot->getWorldRotation();
|
||||
gAgentAvatarp->mPelvisp->setPosition(gAgentAvatarp->mPelvisp->getPosition() + diff);
|
||||
}
|
||||
|
||||
|
||||
@@ -1358,6 +1358,7 @@ BOOL LLGestureMgr::matchPrefix(const std::string& in_str, std::string* out_str)
|
||||
{
|
||||
S32 in_len = in_str.length();
|
||||
|
||||
//return whole trigger, if received text equals to it
|
||||
item_map_t::iterator it;
|
||||
for (it = mActive.begin(); it != mActive.end(); ++it)
|
||||
{
|
||||
@@ -1365,7 +1366,24 @@ BOOL LLGestureMgr::matchPrefix(const std::string& in_str, std::string* out_str)
|
||||
if (gesture)
|
||||
{
|
||||
const std::string& trigger = gesture->getTrigger();
|
||||
|
||||
if (!LLStringUtil::compareInsensitive(in_str, trigger))
|
||||
{
|
||||
*out_str = trigger;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//return common chars, if more than one trigger matches the prefix
|
||||
std::string rest_of_match = "";
|
||||
std::string buf = "";
|
||||
for (it = mActive.begin(); it != mActive.end(); ++it)
|
||||
{
|
||||
LLMultiGesture* gesture = (*it).second;
|
||||
if (gesture)
|
||||
{
|
||||
const std::string& trigger = gesture->getTrigger();
|
||||
|
||||
if (in_len > (S32)trigger.length())
|
||||
{
|
||||
// too short, bail out
|
||||
@@ -1376,8 +1394,39 @@ BOOL LLGestureMgr::matchPrefix(const std::string& in_str, std::string* out_str)
|
||||
LLStringUtil::truncate(trigger_trunc, in_len);
|
||||
if (!LLStringUtil::compareInsensitive(in_str, trigger_trunc))
|
||||
{
|
||||
*out_str = trigger;
|
||||
return TRUE;
|
||||
if (rest_of_match.compare("") == 0)
|
||||
{
|
||||
rest_of_match = trigger.substr(in_str.size());
|
||||
}
|
||||
std::string cur_rest_of_match = trigger.substr(in_str.size());
|
||||
buf = "";
|
||||
S32 i=0;
|
||||
|
||||
while (i<rest_of_match.length() && i<cur_rest_of_match.length())
|
||||
{
|
||||
if (rest_of_match[i]==cur_rest_of_match[i])
|
||||
{
|
||||
buf.push_back(rest_of_match[i]);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (i==0)
|
||||
{
|
||||
rest_of_match = "";
|
||||
}
|
||||
break;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
if (rest_of_match.compare("") == 0)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
if (buf.compare("") != 0)
|
||||
{
|
||||
rest_of_match = buf;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -609,6 +609,11 @@ void LLGroupMgrGroupData::recalcAgentPowers(const LLUUID& agent_id)
|
||||
}
|
||||
}
|
||||
|
||||
bool LLGroupMgrGroupData::isSingleMemberNotOwner()
|
||||
{
|
||||
return mMembers.size() == 1 && !mMembers.begin()->second->isOwner();
|
||||
}
|
||||
|
||||
bool packRoleUpdateMessageBlock(LLMessageSystem* msg,
|
||||
const LLUUID& group_id,
|
||||
const LLUUID& role_id,
|
||||
|
||||
@@ -254,6 +254,8 @@ public:
|
||||
bool isRoleMemberDataComplete() { return mRoleMemberDataComplete; }
|
||||
bool isGroupPropertiesDataComplete() { return mGroupPropertiesDataComplete; }
|
||||
|
||||
bool isSingleMemberNotOwner();
|
||||
|
||||
F32 getAccessTime() const { return mAccessTime; }
|
||||
void setAccessed();
|
||||
|
||||
|
||||
@@ -1869,7 +1869,7 @@ void LLLiveLSLEditor::loadAsset()
|
||||
mIsModifiable = item && gAgent.allowOperation(PERM_MODIFY,
|
||||
item->getPermissions(),
|
||||
GP_OBJECT_MANIPULATE);
|
||||
|
||||
refreshFromItem(item);
|
||||
// This is commented out, because we don't completely
|
||||
// handle script exports yet.
|
||||
/*
|
||||
|
||||
@@ -875,10 +875,7 @@ void LLIMSpeakerMgr::updateSpeakers(const LLSD& update)
|
||||
}
|
||||
}
|
||||
}
|
||||
/*prep#
|
||||
virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content)
|
||||
llwarns << "ModerationResponder error [status:" << status << "]: " << content << llendl;
|
||||
*/
|
||||
|
||||
void LLIMSpeakerMgr::toggleAllowTextChat(const LLUUID& speaker_id)
|
||||
{
|
||||
LLPointer<LLSpeaker> speakerp = findSpeaker(speaker_id);
|
||||
|
||||
@@ -291,7 +291,7 @@ void LLFloaterTexturePicker::setImageID(const LLUUID& image_id)
|
||||
LLUUID item_id = findItemID(mImageAssetID, FALSE);
|
||||
if (item_id.isNull())
|
||||
{
|
||||
mInventoryPanel->clearSelection();
|
||||
mInventoryPanel->getRootFolder()->clearSelection();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -269,7 +269,7 @@ public:
|
||||
// Teleport requests *must* come from a trusted browser
|
||||
// inside the app, otherwise a malicious web page could
|
||||
// cause a constant teleport loop. JC
|
||||
LLTeleportHandler() : LLCommandHandler("teleport", UNTRUSTED_BLOCK) { }
|
||||
LLTeleportHandler() : LLCommandHandler("teleport", UNTRUSTED_THROTTLE) { }
|
||||
|
||||
bool handle(const LLSD& tokens, const LLSD& query_map,
|
||||
LLMediaCtrl* web)
|
||||
@@ -285,19 +285,52 @@ public:
|
||||
tokens[2].asReal(),
|
||||
tokens[3].asReal());
|
||||
}
|
||||
|
||||
|
||||
LLSD args;
|
||||
args["LOCATION"] = tokens[0];
|
||||
|
||||
// Region names may be %20 escaped.
|
||||
|
||||
std::string region_name = LLURI::unescape(tokens[0]);
|
||||
|
||||
|
||||
LLSD payload;
|
||||
payload["region_name"] = region_name;
|
||||
payload["callback_url"] = LLSLURL(region_name, coords).getSLURLString();
|
||||
|
||||
LLNotificationsUtil::add("TeleportViaSLAPP", args, payload);
|
||||
return true;
|
||||
}
|
||||
|
||||
static void teleport_via_slapp(std::string region_name, std::string callback_url)
|
||||
{
|
||||
|
||||
LLWorldMapMessage::getInstance()->sendNamedRegionRequest(region_name,
|
||||
LLURLDispatcherImpl::regionHandleCallback,
|
||||
LLSLURL(region_name, coords).getSLURLString(),
|
||||
callback_url,
|
||||
true); // teleport
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool teleport_via_slapp_callback(const LLSD& notification, const LLSD& response)
|
||||
{
|
||||
S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
|
||||
|
||||
std::string region_name = notification["payload"]["region_name"].asString();
|
||||
std::string callback_url = notification["payload"]["callback_url"].asString();
|
||||
|
||||
if (option == 0)
|
||||
{
|
||||
teleport_via_slapp(region_name, callback_url);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
};
|
||||
LLTeleportHandler gTeleportHandler;
|
||||
static LLNotificationFunctorRegistration open_landmark_callback_reg("TeleportViaSLAPP", LLTeleportHandler::teleport_via_slapp_callback);
|
||||
|
||||
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
|
||||
@@ -8762,6 +8762,44 @@ class LLWorldEnvSettings : public view_listener_t
|
||||
}
|
||||
};
|
||||
|
||||
class LLWorldEnableEnvSettings : public view_listener_t
|
||||
{
|
||||
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
|
||||
{
|
||||
bool result = false;
|
||||
std::string tod = userdata.asString();
|
||||
|
||||
if (tod == "region")
|
||||
{
|
||||
return LLEnvManagerNew::instance().getUseRegionSettings();
|
||||
}
|
||||
|
||||
if (LLEnvManagerNew::instance().getUseFixedSky())
|
||||
{
|
||||
if (tod == "sunrise")
|
||||
{
|
||||
result = (LLEnvManagerNew::instance().getSkyPresetName() == "Sunrise");
|
||||
}
|
||||
else if (tod == "noon")
|
||||
{
|
||||
result = (LLEnvManagerNew::instance().getSkyPresetName() == "Midday");
|
||||
}
|
||||
else if (tod == "sunset")
|
||||
{
|
||||
result = (LLEnvManagerNew::instance().getSkyPresetName() == "Sunset");
|
||||
}
|
||||
else if (tod == "midnight")
|
||||
{
|
||||
result = (LLEnvManagerNew::instance().getSkyPresetName() == "Midnight");
|
||||
}
|
||||
else
|
||||
{
|
||||
llwarns << "Unknown item" << llendl;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
};
|
||||
|
||||
class SinguCloseAllDialogs : public view_listener_t
|
||||
{
|
||||
@@ -9292,6 +9330,7 @@ void initialize_menus()
|
||||
addMenu(new LLWorldEnableTeleportHome(), "World.EnableTeleportHome");
|
||||
addMenu(new LLWorldEnableBuyLand(), "World.EnableBuyLand");
|
||||
(new LLWorldEnvSettings())->registerListener(gMenuHolder, "World.EnvSettings");
|
||||
(new LLWorldEnableEnvSettings())->registerListener(gMenuHolder, "World.EnableEnvSettings");
|
||||
|
||||
|
||||
// Tools menu
|
||||
|
||||
@@ -3801,6 +3801,12 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data)
|
||||
}
|
||||
else
|
||||
{
|
||||
// make sure that we don't have an empty or all-whitespace name
|
||||
LLStringUtil::trim(from_name);
|
||||
if (from_name.empty())
|
||||
{
|
||||
from_name = LLTrans::getString("Unnamed");
|
||||
}
|
||||
chat.mFromName = from_name;
|
||||
}
|
||||
|
||||
|
||||
@@ -4144,13 +4144,12 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)
|
||||
|
||||
static const LLCachedControl<F32> s_pelvis_rot_threshold_slow(gSavedSettings, "AvatarRotateThresholdSlow", 60.0);
|
||||
static const LLCachedControl<F32> s_pelvis_rot_threshold_fast(gSavedSettings, "AvatarRotateThresholdFast", 2.0);
|
||||
static const LLCachedControl<F32> s_pelvis_rot_threshold_ml(gSavedSettings, "AvatarRotateThresholdMouselook", 120.f);
|
||||
|
||||
F32 pelvis_rot_threshold = clamp_rescale(speed, 0.1f, 1.0f, s_pelvis_rot_threshold_slow, s_pelvis_rot_threshold_fast);
|
||||
static const LLCachedControl<bool> useRealisticMouselook("UseRealisticMouselook");
|
||||
F32 pelvis_rot_threshold = clamp_rescale(speed, 0.1f, 1.0f, useRealisticMouselook ? s_pelvis_rot_threshold_slow * 2 : s_pelvis_rot_threshold_slow, s_pelvis_rot_threshold_fast);
|
||||
|
||||
if (self_in_mouselook)
|
||||
{
|
||||
pelvis_rot_threshold = clamp_rescale(speed, 0.1f, 1.0f, s_pelvis_rot_threshold_ml, s_pelvis_rot_threshold_fast);
|
||||
pelvis_rot_threshold *= MOUSELOOK_PELVIS_FOLLOW_FACTOR;
|
||||
}
|
||||
pelvis_rot_threshold *= DEG_TO_RAD;
|
||||
|
||||
@@ -5282,7 +5281,7 @@ void LLVOAvatar::addLocalTextureStats( ETextureIndex idx, LLViewerFetchedTexture
|
||||
}
|
||||
|
||||
const S32 MAX_TEXTURE_UPDATE_INTERVAL = 64 ; //need to call updateTextures() at least every 32 frames.
|
||||
const S32 MAX_TEXTURE_VIRTURE_SIZE_RESET_INTERVAL = S32_MAX ; //frames
|
||||
const S32 MAX_TEXTURE_VIRTUAL_SIZE_RESET_INTERVAL = S32_MAX ; //frames
|
||||
void LLVOAvatar::checkTextureLoading()
|
||||
{
|
||||
static const F32 MAX_INVISIBLE_WAITING_TIME = 15.f ; //seconds
|
||||
@@ -5345,7 +5344,7 @@ const F32 ADDITIONAL_PRI = 0.5f;
|
||||
void LLVOAvatar::addBakedTextureStats( LLViewerFetchedTexture* imagep, F32 pixel_area, F32 texel_area_ratio, S32 boost_level)
|
||||
{
|
||||
//Note:
|
||||
//if this function is not called for the last MAX_TEXTURE_VIRTURE_SIZE_RESET_INTERVAL frames,
|
||||
//if this function is not called for the last MAX_TEXTURE_VIRTUAL_SIZE_RESET_INTERVAL frames,
|
||||
//the texture pipeline will stop fetching this texture.
|
||||
|
||||
imagep->resetTextureStats();
|
||||
@@ -5353,7 +5352,7 @@ void LLVOAvatar::addBakedTextureStats( LLViewerFetchedTexture* imagep, F32 pixel
|
||||
// Once server messaging is in place, we should call setCanUseHTTP(false) for old style
|
||||
// appearance requests
|
||||
imagep->setCanUseHTTP(true);
|
||||
imagep->setMaxVirtualSizeResetInterval(MAX_TEXTURE_VIRTURE_SIZE_RESET_INTERVAL);
|
||||
imagep->setMaxVirtualSizeResetInterval(MAX_TEXTURE_VIRTUAL_SIZE_RESET_INTERVAL);
|
||||
imagep->resetMaxVirtualSizeResetCounter() ;
|
||||
|
||||
mMaxPixelArea = llmax(pixel_area, mMaxPixelArea);
|
||||
|
||||
@@ -1076,6 +1076,6 @@ private:
|
||||
}; // LLVOAvatar
|
||||
|
||||
extern const F32 SELF_ADDITIONAL_PRI;
|
||||
extern const S32 MAX_TEXTURE_VIRTURE_SIZE_RESET_INTERVAL;
|
||||
extern const S32 MAX_TEXTURE_VIRTUAL_SIZE_RESET_INTERVAL;
|
||||
|
||||
#endif // LL_VOAVATAR_H
|
||||
|
||||
@@ -2662,7 +2662,7 @@ void LLVOAvatarSelf::addLocalTextureStats( ETextureIndex type, LLViewerFetchedTe
|
||||
imagep->setAdditionalDecodePriority(SELF_ADDITIONAL_PRI) ;
|
||||
}
|
||||
imagep->resetTextureStats();
|
||||
imagep->setMaxVirtualSizeResetInterval(MAX_TEXTURE_VIRTURE_SIZE_RESET_INTERVAL);
|
||||
imagep->setMaxVirtualSizeResetInterval(MAX_TEXTURE_VIRTUAL_SIZE_RESET_INTERVAL);
|
||||
imagep->addTextureStats( desired_pixels / texel_area_ratio );
|
||||
imagep->forceUpdateBindStats() ;
|
||||
if (imagep->getDiscardLevel() < 0)
|
||||
|
||||
@@ -332,9 +332,9 @@ U32 LLVOTree::processUpdateMessage(LLMessageSystem *mesgsys,
|
||||
//
|
||||
// Load Species-Specific data
|
||||
//
|
||||
static const S32 MAX_TREE_TEXTURE_VIRTURE_SIZE_RESET_INTERVAL = 32 ; //frames.
|
||||
static const S32 MAX_TREE_TEXTURE_VIRTUAL_SIZE_RESET_INTERVAL = 32 ; //frames.
|
||||
mTreeImagep = LLViewerTextureManager::getFetchedTexture(sSpeciesTable[mSpecies]->mTextureID, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
|
||||
mTreeImagep->setMaxVirtualSizeResetInterval(MAX_TREE_TEXTURE_VIRTURE_SIZE_RESET_INTERVAL); //allow to wait for at most 16 frames to reset virtual size.
|
||||
mTreeImagep->setMaxVirtualSizeResetInterval(MAX_TREE_TEXTURE_VIRTUAL_SIZE_RESET_INTERVAL); //allow to wait for at most 16 frames to reset virtual size.
|
||||
|
||||
mBranchLength = sSpeciesTable[mSpecies]->mBranchLength;
|
||||
mTrunkLength = sSpeciesTable[mSpecies]->mTrunkLength;
|
||||
|
||||
@@ -161,11 +161,11 @@
|
||||
|
||||
<menu_item_separator label="-----------" name="separator6"/>
|
||||
<menu label="Umgebungseinstellungen" name="Environment Settings">
|
||||
<menu_item_call label="Sonnenaufgang" name="Sunrise"/>
|
||||
<menu_item_call label="Mittag" name="Noon"/>
|
||||
<menu_item_call label="Sonnenuntergang" name="Sunset"/>
|
||||
<menu_item_call label="Mitternacht" name="Midnight"/>
|
||||
<menu_item_call label="Auf Regionsstandard zurücksetzen" name="Revert to Region Default"/>
|
||||
<menu_item_check label="Sonnenaufgang" name="Sunrise"/>
|
||||
<menu_item_check label="Mittag" name="Noon"/>
|
||||
<menu_item_check label="Sonnenuntergang" name="Sunset"/>
|
||||
<menu_item_check label="Mitternacht" name="Midnight"/>
|
||||
<menu_item_check label="Auf Regionsstandard zurücksetzen" name="Revert to Region Default"/>
|
||||
<menu_item_separator label="-----------" name="separator"/>
|
||||
<menu_item_call label="Umwelt-Editor" name="Environment Editor"/>
|
||||
<menu_item_call label="Tageszyklus-Editor" name="Day Cycle Editor"/>
|
||||
|
||||
@@ -614,31 +614,36 @@
|
||||
<menu bottom="-554" create_jump_keys="true" drop_shadow="true" enabled="true"
|
||||
height="117" label="Environment Settings" left="0" mouse_opaque="false"
|
||||
name="Environment Settings" opaque="true" tear_off="true" width="169">
|
||||
<menu_item_call bottom="-29" enabled="true" height="19" label="Sunrise" left="0"
|
||||
<menu_item_check bottom="-29" enabled="true" height="19" label="Sunrise" left="0"
|
||||
mouse_opaque="true" name="Sunrise" width="169">
|
||||
<on_click function="World.EnvSettings" userdata="sunrise" />
|
||||
<on_check function="World.EnableEnvSettings" userdata="sunrise" />
|
||||
<on_enable function="RLV.EnableIfNot" userdata="setenv"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call bottom="-48" enabled="true" height="19" label="Midday" left="0"
|
||||
</menu_item_check>
|
||||
<menu_item_check bottom="-48" enabled="true" height="19" label="Midday" left="0"
|
||||
mouse_opaque="true" name="Noon" shortcut="control|shift|Y" width="169">
|
||||
<on_click function="World.EnvSettings" userdata="noon" />
|
||||
<on_check function="World.EnableEnvSettings" userdata="noon" />
|
||||
<on_enable function="RLV.EnableIfNot" userdata="setenv"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call bottom="-67" enabled="true" height="19" label="Sunset" left="0"
|
||||
</menu_item_check>
|
||||
<menu_item_check bottom="-67" enabled="true" height="19" label="Sunset" left="0"
|
||||
mouse_opaque="true" name="Sunset" shortcut="control|shift|N" width="169">
|
||||
<on_click function="World.EnvSettings" userdata="sunset" />
|
||||
<on_check function="World.EnableEnvSettings" userdata="sunset" />
|
||||
<on_enable function="RLV.EnableIfNot" userdata="setenv"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call bottom="-86" enabled="true" height="19" label="Midnight" left="0"
|
||||
</menu_item_check>
|
||||
<menu_item_check bottom="-86" enabled="true" height="19" label="Midnight" left="0"
|
||||
mouse_opaque="true" name="Midnight" width="169">
|
||||
<on_click function="World.EnvSettings" userdata="midnight" />
|
||||
<on_check function="World.EnableEnvSettings" userdata="midnight" />
|
||||
<on_enable function="RLV.EnableIfNot" userdata="setenv"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call bottom="-105" enabled="false" height="19" label="Revert to Region Default"
|
||||
</menu_item_check>
|
||||
<menu_item_check bottom="-105" enabled="false" height="19" label="Revert to Region Default"
|
||||
left="0" mouse_opaque="true" name="Revert to Region Default" width="169">
|
||||
<on_click function="World.EnvSettings" userdata="default" />
|
||||
<on_check function="World.EnableEnvSettings" userdata="region" />
|
||||
<on_enable function="RLV.EnableIfNot" userdata="setenv"/>
|
||||
</menu_item_call>
|
||||
</menu_item_check>
|
||||
<menu_item_separator bottom="-113" enabled="true" height="8" label="-----------" left="0"
|
||||
mouse_opaque="true" name="separator" width="169" />
|
||||
<menu_item_call bottom="-132" enabled="false" height="19" label="Environment Editor" left="0"
|
||||
|
||||
@@ -3744,6 +3744,18 @@ Are you sure you want to teleport?
|
||||
yestext="Teleport"/>
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="alertmodal.tga"
|
||||
name="TeleportViaSLAPP"
|
||||
type="alertmodal">
|
||||
Are you sure you want to teleport to [LOCATION]?
|
||||
<usetemplate
|
||||
ignoretext="Confirm that I want to teleport via SLAPP"
|
||||
name="okcancelignore"
|
||||
notext="Cancel"
|
||||
yestext="Teleport"/>
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="alert.tga"
|
||||
label="Message everyone in your Estate"
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
left="205" name="terraform_help" width="18" />
|
||||
<check_box bottom_delta="-20" follows="left|top" height="20" label="Block Fly" left="10"
|
||||
name="block_fly_check" width="80" />
|
||||
<check_box bottom_delta="-20" follows="left|top" height="20" label="Block Parcel Fly Over" tool_tip="Extend access checks upwards to prevent flying over a parcel" left="10" name="block_fly_over_check" width="90" />
|
||||
<button bottom_delta="0" follows="left|top" font="SansSerifSmall" height="18" label="?"
|
||||
left="205" name="fly_help" width="18" />
|
||||
<check_box bottom_delta="-20" follows="left|top" height="20" label="Allow Damage"
|
||||
|
||||
@@ -126,11 +126,11 @@
|
||||
<menu_item_call label="Comprar Terreno..." name="Buy Land..."/>
|
||||
<menu_item_call label="Región/Estado..." name="Region/Estate..."/>
|
||||
<menu label="Configuración del Entorno" name="Environment Settings">
|
||||
<menu_item_call label="Amanecer" name="Sunrise"/>
|
||||
<menu_item_call label="Mediodía" name="Noon"/>
|
||||
<menu_item_call label="Atardecer" name="Sunset"/>
|
||||
<menu_item_call label="Medianoche" name="Midnight"/>
|
||||
<menu_item_call label="Volver a los valores de la Región" name="Revert to Region Default"/>
|
||||
<menu_item_check label="Amanecer" name="Sunrise"/>
|
||||
<menu_item_check label="Mediodía" name="Noon"/>
|
||||
<menu_item_check label="Atardecer" name="Sunset"/>
|
||||
<menu_item_check label="Medianoche" name="Midnight"/>
|
||||
<menu_item_check label="Volver a los valores de la Región" name="Revert to Region Default"/>
|
||||
<menu_item_call label="Editor del Entorno" name="Environment Editor"/>
|
||||
<menu_item_call label="Editor del Ciclo Diario" name="Day Cycle Editor"/>
|
||||
<menu_item_call label="Efectos de Post-Procesado" name="Post-Processing Effects"/>
|
||||
|
||||
@@ -148,11 +148,11 @@
|
||||
<menu_item_call label="Région et domaine" name="Region/Estate..."/>
|
||||
<menu_item_separator label="-----------" name="separator6"/>
|
||||
<menu label="Environnement" name="Environment Settings">
|
||||
<menu_item_call label="Aube" name="Sunrise"/>
|
||||
<menu_item_call label="Midi" name="Noon"/>
|
||||
<menu_item_call label="Coucher de soleil" name="Sunset"/>
|
||||
<menu_item_call label="Minuit" name="Midnight"/>
|
||||
<menu_item_call label="Revenir aux options par défaut" name="Revert to Region Default"/>
|
||||
<menu_item_check label="Aube" name="Sunrise"/>
|
||||
<menu_item_check label="Midi" name="Noon"/>
|
||||
<menu_item_check label="Coucher de soleil" name="Sunset"/>
|
||||
<menu_item_check label="Minuit" name="Midnight"/>
|
||||
<menu_item_check label="Revenir aux options par défaut" name="Revert to Region Default"/>
|
||||
<menu_item_separator label="-----------" name="separator"/>
|
||||
<menu_item_call label="Editeur d'environnement" name="Environment Editor"/>
|
||||
<menu_item_call label="Editeur du jour" name="Day Cycle Editor"/>
|
||||
|
||||
@@ -129,11 +129,11 @@
|
||||
<menu_item_call label="Regione/Proprietà Immobiliari..." name="Region/Estate..."/>
|
||||
<menu_item_separator label="-----------" name="separator6"/>
|
||||
<menu label="Impostazioni dell'ambiente" name="Environment Settings">
|
||||
<menu_item_call label="Alba" name="Sunrise"/>
|
||||
<menu_item_call label="Mezzogiorno" name="Noon"/>
|
||||
<menu_item_call label="Tramonto" name="Sunset"/>
|
||||
<menu_item_call label="Mezzanotte" name="Midnight"/>
|
||||
<menu_item_call label="Reimposta al default della regione" name="Revert to Region Default"/>
|
||||
<menu_item_check label="Alba" name="Sunrise"/>
|
||||
<menu_item_check label="Mezzogiorno" name="Noon"/>
|
||||
<menu_item_check label="Tramonto" name="Sunset"/>
|
||||
<menu_item_check label="Mezzanotte" name="Midnight"/>
|
||||
<menu_item_check label="Reimposta al default della regione" name="Revert to Region Default"/>
|
||||
<menu_item_separator label="-----------" name="separator"/>
|
||||
<menu_item_call label="Editor dell'ambiente" name="Environment Editor"/>
|
||||
</menu>
|
||||
|
||||
@@ -103,11 +103,11 @@
|
||||
<menu_item_call label="Comprar terreno..." name="Buy Land..."/>
|
||||
<menu_item_call label="Região/Propriedade..." name="Region/Estate..."/>
|
||||
<menu label="Configurações de ambiente" name="Environment Settings">
|
||||
<menu_item_call label="Amanhecer" name="Sunrise"/>
|
||||
<menu_item_call label="Meio-dia" name="Noon"/>
|
||||
<menu_item_call label="Pôr-do-Sol" name="Sunset"/>
|
||||
<menu_item_call label="Meia-noite" name="Midnight"/>
|
||||
<menu_item_call label="Reverter ao padrão da região" name="Revert to Region Default"/>
|
||||
<menu_item_check label="Amanhecer" name="Sunrise"/>
|
||||
<menu_item_check label="Meio-dia" name="Noon"/>
|
||||
<menu_item_check label="Pôr-do-Sol" name="Sunset"/>
|
||||
<menu_item_check label="Meia-noite" name="Midnight"/>
|
||||
<menu_item_check label="Reverter ao padrão da região" name="Revert to Region Default"/>
|
||||
<menu_item_call label="Editor de ambiente" name="Environment Editor"/>
|
||||
</menu>
|
||||
</menu>
|
||||
|
||||
Reference in New Issue
Block a user