diff options
Diffstat (limited to 'indra/newview')
76 files changed, 6385 insertions, 5335 deletions
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 769dcf8457..523ea8a394 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -244,6 +244,7 @@ set(viewer_SOURCE_FILES llfolderviewitem.cpp llfollowcam.cpp llfriendcard.cpp + llgesturelistener.cpp llgesturemgr.cpp llgiveinventory.cpp llglsandbox.cpp @@ -321,6 +322,7 @@ set(viewer_SOURCE_FILES llnearbychat.cpp llnearbychatbar.cpp llnearbychathandler.cpp + llnearbychatbarlistener.cpp llnetmap.cpp llnotificationalerthandler.cpp llnotificationgrouphandler.cpp @@ -797,6 +799,7 @@ set(viewer_HEADER_FILES llfolderviewitem.h llfollowcam.h llfriendcard.h + llgesturelistener.h llgesturemgr.h llgiveinventory.h llgroupactions.h @@ -873,6 +876,7 @@ set(viewer_HEADER_FILES llnearbychat.h llnearbychatbar.h llnearbychathandler.h + llnearbychatbarlistener.h llnetmap.h llnotificationhandler.h llnotificationmanager.h diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index c3c8a0b7b0..fc7fd2dd8a 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -708,6 +708,17 @@ <key>Value</key> <integer>0</integer> </map> + <key>BrowserEnableJSObject</key> + <map> + <key>Comment</key> + <string>(WARNING: Advanced feature. Use if you are aware of the implications). Enable or disable the viewer to Javascript bridge object.</string> + <key>Persist</key> + <integer>0</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>0</integer> + </map> <key>BlockAvatarAppearanceMessages</key> <map> <key>Comment</key> @@ -12743,6 +12754,17 @@ <key>Value</key> <integer>1</integer> </map> + <key>SLURLPassToOtherInstance</key> + <map> + <key>Comment</key> + <string>Pass execution to prevoius viewer instances if there is a given slurl</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> <key>soundsbeacon</key> <map> <key>Comment</key> diff --git a/indra/newview/llaccountingquotamanager.cpp b/indra/newview/llaccountingquotamanager.cpp index d11b86db15..0a171959e7 100644 --- a/indra/newview/llaccountingquotamanager.cpp +++ b/indra/newview/llaccountingquotamanager.cpp @@ -2,31 +2,25 @@ * @file LLAccountingQuotaManager.cpp * @ Handles the setting and accessing for costs associated with mesh * - * $LicenseInfo:firstyear=2001&license=viewergpl$ - * - * Copyright (c) 2001-2010, Linden Research, Inc. - * + * $LicenseInfo:firstyear=2001&license=viewerlgpl$ * Second Life Viewer Source Code - * The source code in this file ("Source Code") is provided by Linden Lab - * to you under the terms of the GNU General Public License, version 2.0 - * ("GPL"), unless you have obtained a separate licensing agreement - * ("Other License"), formally executed by you and Linden Lab. Terms of - * the GPL can be found in doc/GPL-license.txt in this distribution, or - * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * Copyright (C) 2011, Linden Research, Inc. + * + * 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. * - * There are special exceptions to the terms and conditions of the GPL as - * it is applied to this Source Code. View the full text of the exception - * in the file doc/FLOSS-exception.txt in this software distribution, or - * online at - * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * 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. * - * By copying, modifying or distributing this software, you acknowledge - * that you have read and understood your obligations described above, - * and agree to abide by those obligations. + * 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 * - * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO - * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, - * COMPLETENESS OR PERFORMANCE. + * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA * $/LicenseInfo$ */ diff --git a/indra/newview/llaccountingquotamanager.h b/indra/newview/llaccountingquotamanager.h index 9551df272c..9251ef9351 100644 --- a/indra/newview/llaccountingquotamanager.h +++ b/indra/newview/llaccountingquotamanager.h @@ -2,31 +2,25 @@ * @file lllAccountingQuotaManager.h * @ * - * $LicenseInfo:firstyear=2001&license=viewergpl$ - * - * Copyright (c) 2001-2009, Linden Research, Inc. - * + * $LicenseInfo:firstyear=2001&license=viewerlgpl$ * Second Life Viewer Source Code - * The source code in this file ("Source Code") is provided by Linden Lab - * to you under the terms of the GNU General Public License, version 2.0 - * ("GPL"), unless you have obtained a separate licensing agreement - * ("Other License"), formally executed by you and Linden Lab. Terms of - * the GPL can be found in doc/GPL-license.txt in this distribution, or - * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * Copyright (C) 2011, Linden Research, Inc. + * + * 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. * - * There are special exceptions to the terms and conditions of the GPL as - * it is applied to this Source Code. View the full text of the exception - * in the file doc/FLOSS-exception.txt in this software distribution, or - * online at - * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * 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. * - * By copying, modifying or distributing this software, you acknowledge - * that you have read and understood your obligations described above, - * and agree to abide by those obligations. + * 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 * - * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO - * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, - * COMPLETENESS OR PERFORMANCE. + * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA * $/LicenseInfo$ */ diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index 08d71fc8fc..446ded8096 100644 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -206,6 +206,7 @@ LLAgent::LLAgent() : mAutoPilot(FALSE), mAutoPilotFlyOnStop(FALSE), + mAutoPilotAllowFlying(TRUE), mAutoPilotTargetGlobal(), mAutoPilotStopDistance(1.f), mAutoPilotUseRotation(FALSE), @@ -1230,17 +1231,26 @@ void LLAgent::startAutoPilotGlobal( const LLQuaternion *target_rotation, void (*finish_callback)(BOOL, void *), void *callback_data, - F32 stop_distance, F32 rot_threshold) + F32 stop_distance, + F32 rot_threshold, + BOOL allow_flying) { if (!isAgentAvatarValid()) { return; } + // Are there any pending callbacks from previous auto pilot requests? + if (mAutoPilotFinishedCallback) + { + mAutoPilotFinishedCallback(dist_vec(gAgent.getPositionGlobal(), mAutoPilotTargetGlobal) < mAutoPilotStopDistance, mAutoPilotCallbackData); + } + mAutoPilotFinishedCallback = finish_callback; mAutoPilotCallbackData = callback_data; mAutoPilotRotationThreshold = rot_threshold; mAutoPilotBehaviorName = behavior_name; + mAutoPilotAllowFlying = allow_flying; LLVector3d delta_pos( target_global ); delta_pos -= getPositionGlobal(); @@ -1268,14 +1278,23 @@ void LLAgent::startAutoPilotGlobal( } } - mAutoPilotFlyOnStop = getFlying(); + if (mAutoPilotAllowFlying) + { + mAutoPilotFlyOnStop = getFlying(); + } + else + { + mAutoPilotFlyOnStop = FALSE; + } - if (distance > 30.0) + if (distance > 30.0 && mAutoPilotAllowFlying) { setFlying(TRUE); } - if ( distance > 1.f && heightDelta > (sqrtf(mAutoPilotStopDistance) + 1.f)) + if ( distance > 1.f && + mAutoPilotAllowFlying && + heightDelta > (sqrtf(mAutoPilotStopDistance) + 1.f)) { setFlying(TRUE); // Do not force flying for "Sit" behavior to prevent flying after pressing "Stand" @@ -1285,22 +1304,8 @@ void LLAgent::startAutoPilotGlobal( } mAutoPilot = TRUE; - mAutoPilotTargetGlobal = target_global; - - // trace ray down to find height of destination from ground - LLVector3d traceEndPt = target_global; - traceEndPt.mdV[VZ] -= 20.f; + setAutoPilotTargetGlobal(target_global); - LLVector3d targetOnGround; - LLVector3 groundNorm; - LLViewerObject *obj; - - LLWorld::getInstance()->resolveStepHeightGlobal(NULL, target_global, traceEndPt, targetOnGround, groundNorm, &obj); - F64 target_height = llmax((F64)gAgentAvatarp->getPelvisToFoot(), target_global.mdV[VZ] - targetOnGround.mdV[VZ]); - - // clamp z value of target to minimum height above ground - mAutoPilotTargetGlobal.mdV[VZ] = targetOnGround.mdV[VZ] + target_height; - mAutoPilotTargetDist = (F32)dist_vec(gAgent.getPositionGlobal(), mAutoPilotTargetGlobal); if (target_rotation) { mAutoPilotUseRotation = TRUE; @@ -1318,12 +1323,36 @@ void LLAgent::startAutoPilotGlobal( //----------------------------------------------------------------------------- -// startFollowPilot() +// setAutoPilotTargetGlobal //----------------------------------------------------------------------------- -void LLAgent::startFollowPilot(const LLUUID &leader_id) +void LLAgent::setAutoPilotTargetGlobal(const LLVector3d &target_global) { - if (!mAutoPilot) return; + if (mAutoPilot) + { + mAutoPilotTargetGlobal = target_global; + + // trace ray down to find height of destination from ground + LLVector3d traceEndPt = target_global; + traceEndPt.mdV[VZ] -= 20.f; + + LLVector3d targetOnGround; + LLVector3 groundNorm; + LLViewerObject *obj; + + LLWorld::getInstance()->resolveStepHeightGlobal(NULL, target_global, traceEndPt, targetOnGround, groundNorm, &obj); + F64 target_height = llmax((F64)gAgentAvatarp->getPelvisToFoot(), target_global.mdV[VZ] - targetOnGround.mdV[VZ]); + + // clamp z value of target to minimum height above ground + mAutoPilotTargetGlobal.mdV[VZ] = targetOnGround.mdV[VZ] + target_height; + mAutoPilotTargetDist = (F32)dist_vec(gAgent.getPositionGlobal(), mAutoPilotTargetGlobal); + } +} +//----------------------------------------------------------------------------- +// startFollowPilot() +//----------------------------------------------------------------------------- +void LLAgent::startFollowPilot(const LLUUID &leader_id, BOOL allow_flying, F32 stop_distance) +{ mLeaderID = leader_id; if ( mLeaderID.isNull() ) return; @@ -1334,7 +1363,14 @@ void LLAgent::startFollowPilot(const LLUUID &leader_id) return; } - startAutoPilotGlobal(object->getPositionGlobal()); + startAutoPilotGlobal(object->getPositionGlobal(), + std::string(), // behavior_name + NULL, // target_rotation + NULL, // finish_callback + NULL, // callback_data + stop_distance, + 0.03f, // rotation_threshold + allow_flying); } @@ -1360,7 +1396,8 @@ void LLAgent::stopAutoPilot(BOOL user_cancel) //NB: auto pilot can terminate for a reason other than reaching the destination if (mAutoPilotFinishedCallback) { - mAutoPilotFinishedCallback(!user_cancel && dist_vec_squared(gAgent.getPositionGlobal(), mAutoPilotTargetGlobal) < (mAutoPilotStopDistance * mAutoPilotStopDistance), mAutoPilotCallbackData); + mAutoPilotFinishedCallback(!user_cancel && dist_vec(gAgent.getPositionGlobal(), mAutoPilotTargetGlobal) < mAutoPilotStopDistance, mAutoPilotCallbackData); + mAutoPilotFinishedCallback = NULL; } mLeaderID = LLUUID::null; @@ -1400,7 +1437,7 @@ void LLAgent::autoPilot(F32 *delta_yaw) if (!isAgentAvatarValid()) return; - if (gAgentAvatarp->mInAir) + if (gAgentAvatarp->mInAir && mAutoPilotAllowFlying) { setFlying(TRUE); } diff --git a/indra/newview/llagent.h b/indra/newview/llagent.h index 54c5649f97..67ed1923c0 100644 --- a/indra/newview/llagent.h +++ b/indra/newview/llagent.h @@ -469,19 +469,29 @@ public: public: BOOL getAutoPilot() const { return mAutoPilot; } LLVector3d getAutoPilotTargetGlobal() const { return mAutoPilotTargetGlobal; } + LLUUID getAutoPilotLeaderID() const { return mLeaderID; } + F32 getAutoPilotStopDistance() const { return mAutoPilotStopDistance; } + F32 getAutoPilotTargetDist() const { return mAutoPilotTargetDist; } + BOOL getAutoPilotUseRotation() const { return mAutoPilotUseRotation; } + LLVector3 getAutoPilotTargetFacing() const { return mAutoPilotTargetFacing; } + F32 getAutoPilotRotationThreshold() const { return mAutoPilotRotationThreshold; } + std::string getAutoPilotBehaviorName() const { return mAutoPilotBehaviorName; } + void startAutoPilotGlobal(const LLVector3d &pos_global, const std::string& behavior_name = std::string(), const LLQuaternion *target_rotation = NULL, void (*finish_callback)(BOOL, void *) = NULL, void *callback_data = NULL, - F32 stop_distance = 0.f, F32 rotation_threshold = 0.03f); - void startFollowPilot(const LLUUID &leader_id); + F32 stop_distance = 0.f, F32 rotation_threshold = 0.03f, + BOOL allow_flying = TRUE); + void startFollowPilot(const LLUUID &leader_id, BOOL allow_flying = TRUE, F32 stop_distance = 0.5f); void stopAutoPilot(BOOL user_cancel = FALSE); - void setAutoPilotGlobal(const LLVector3d &pos_global); + void setAutoPilotTargetGlobal(const LLVector3d &target_global); void autoPilot(F32 *delta_yaw); // Autopilot walking action, angles in radians void renderAutoPilotTarget(); private: BOOL mAutoPilot; BOOL mAutoPilotFlyOnStop; + BOOL mAutoPilotAllowFlying; LLVector3d mAutoPilotTargetGlobal; F32 mAutoPilotStopDistance; BOOL mAutoPilotUseRotation; diff --git a/indra/newview/llagentlistener.cpp b/indra/newview/llagentlistener.cpp index 9cea33c7c6..a8d2222c03 100644 --- a/indra/newview/llagentlistener.cpp +++ b/indra/newview/llagentlistener.cpp @@ -31,6 +31,7 @@ #include "llagentlistener.h" #include "llagent.h" +#include "llvoavatar.h" #include "llcommandhandler.h" #include "llslurl.h" #include "llurldispatcher.h" @@ -39,93 +40,242 @@ #include "llviewerregion.h" #include "llsdutil.h" #include "llsdutil_math.h" +#include "lltoolgrab.h" +#include "llhudeffectlookat.h" +#include "llagentcamera.h" LLAgentListener::LLAgentListener(LLAgent &agent) : LLEventAPI("LLAgent", "LLAgent listener to (e.g.) teleport, sit, stand, etc."), mAgent(agent) { - add("requestTeleport", + add("requestTeleport", "Teleport: [\"regionname\"], [\"x\"], [\"y\"], [\"z\"]\n" "If [\"skip_confirmation\"] is true, use LLURLDispatcher rather than LLCommandDispatcher.", &LLAgentListener::requestTeleport); - add("requestSit", - "Ask to sit on the object specified in [\"obj_uuid\"]", + add("requestSit", + "[\"obj_uuid\"]: id of object to sit on, use this or [\"position\"] to indicate the sit target" + "[\"position\"]: region position {x, y, z} where to find closest object to sit on", &LLAgentListener::requestSit); - add("requestStand", + add("requestStand", "Ask to stand up", &LLAgentListener::requestStand); + add("requestTouch", + "[\"obj_uuid\"]: id of object to touch, use this or [\"position\"] to indicate the object to touch" + "[\"position\"]: region position {x, y, z} where to find closest object to touch" + "[\"face\"]: optional object face number to touch[Default: 0]", + &LLAgentListener::requestTouch); add("resetAxes", "Set the agent to a fixed orientation (optionally specify [\"lookat\"] = array of [x, y, z])", &LLAgentListener::resetAxes); add("getAxes", + "Obsolete - use getPosition instead\n" "Send information about the agent's orientation on [\"reply\"]:\n" "[\"euler\"]: map of {roll, pitch, yaw}\n" "[\"quat\"]: array of [x, y, z, w] quaternion values", &LLAgentListener::getAxes, LLSDMap("reply", LLSD())); - add("getGroups", - "Send on [\"reply\"], in [\"groups\"], an array describing agent's groups:\n" - "[\"id\"]: UUID of group\n" - "[\"name\"]: name of group", - &LLAgentListener::getGroups, + add("getPosition", + "Send information about the agent's position and orientation on [\"reply\"]:\n" + "[\"region\"]: array of region {x, y, z} position\n" + "[\"global\"]: array of global {x, y, z} position\n" + "[\"euler\"]: map of {roll, pitch, yaw}\n" + "[\"quat\"]: array of [x, y, z, w] quaternion values", + &LLAgentListener::getPosition, LLSDMap("reply", LLSD())); + add("startAutoPilot", + "Start the autopilot system using the following parameters:\n" + "[\"target_global\"]: array of target global {x, y, z} position\n" + "[\"stop_distance\"]: target maxiumum distance from target [default: autopilot guess]\n" + "[\"target_rotation\"]: array of [x, y, z, w] quaternion values [default: no target]\n" + "[\"rotation_threshold\"]: target maximum angle from target facing rotation [default: 0.03 radians]\n" + "[\"behavior_name\"]: name of the autopilot behavior [default: \"\"]" + "[\"allow_flying\"]: allow flying during autopilot [default: True]", + //"[\"callback_pump\"]: pump to send success/failure and callback data to [default: none]\n" + //"[\"callback_data\"]: data to send back during a callback [default: none]", + &LLAgentListener::startAutoPilot); + add("getAutoPilot", + "Send information about current state of the autopilot system to [\"reply\"]:\n" + "[\"enabled\"]: boolean indicating whether or not autopilot is enabled\n" + "[\"target_global\"]: array of target global {x, y, z} position\n" + "[\"leader_id\"]: uuid of target autopilot is following\n" + "[\"stop_distance\"]: target maximum distance from target\n" + "[\"target_distance\"]: last known distance from target\n" + "[\"use_rotation\"]: boolean indicating if autopilot has a target facing rotation\n" + "[\"target_facing\"]: array of {x, y} target direction to face\n" + "[\"rotation_threshold\"]: target maximum angle from target facing rotation\n" + "[\"behavior_name\"]: name of the autopilot behavior", + &LLAgentListener::getAutoPilot, + LLSDMap("reply", LLSD())); + add("startFollowPilot", + "[\"leader_id\"]: uuid of target to follow using the autopilot system (optional with avatar_name)\n" + "[\"avatar_name\"]: avatar name to follow using the autopilot system (optional with leader_id)\n" + "[\"allow_flying\"]: allow flying during autopilot [default: True]\n" + "[\"stop_distance\"]: target maxiumum distance from target [default: autopilot guess]", + &LLAgentListener::startFollowPilot); + add("setAutoPilotTarget", + "Update target for currently running autopilot:\n" + "[\"target_global\"]: array of target global {x, y, z} position", + &LLAgentListener::setAutoPilotTarget); + add("stopAutoPilot", + "Stop the autopilot system:\n" + "[\"user_cancel\"] indicates whether or not to act as though user canceled autopilot [default: false]", + &LLAgentListener::stopAutoPilot); + add("lookAt", + "[\"type\"]: number to indicate the lookAt type, 0 to clear\n" + "[\"obj_uuid\"]: id of object to look at, use this or [\"position\"] to indicate the target\n" + "[\"position\"]: region position {x, y, z} where to find closest object or avatar to look at", + &LLAgentListener::lookAt); } void LLAgentListener::requestTeleport(LLSD const & event_data) const { - if(event_data["skip_confirmation"].asBoolean()) + if(event_data["skip_confirmation"].asBoolean()) + { + LLSD params(LLSD::emptyArray()); + params.append(event_data["regionname"]); + params.append(event_data["x"]); + params.append(event_data["y"]); + params.append(event_data["z"]); + LLCommandDispatcher::dispatch("teleport", params, LLSD(), NULL, "clicked", true); + // *TODO - lookup other LLCommandHandlers for "agent", "classified", "event", "group", "floater", "parcel", "login", login_refresh", "balance", "chat" + // should we just compose LLCommandHandler and LLDispatchListener? + } + else + { + std::string url = LLSLURL(event_data["regionname"], + LLVector3(event_data["x"].asReal(), + event_data["y"].asReal(), + event_data["z"].asReal())).getSLURLString(); + LLURLDispatcher::dispatch(url, "clicked", NULL, false); + } +} + +void LLAgentListener::requestSit(LLSD const & event_data) const +{ + //mAgent.getAvatarObject()->sitOnObject(); + // shamelessly ripped from llviewermenu.cpp:handle_sit_or_stand() + // *TODO - find a permanent place to share this code properly. + + LLViewerObject *object = NULL; + if (event_data.has("obj_uuid")) + { + object = gObjectList.findObject(event_data["obj_uuid"]); + } + else if (event_data.has("position")) { - LLSD params(LLSD::emptyArray()); - params.append(event_data["regionname"]); - params.append(event_data["x"]); - params.append(event_data["y"]); - params.append(event_data["z"]); - LLCommandDispatcher::dispatch("teleport", params, LLSD(), NULL, "clicked", true); - // *TODO - lookup other LLCommandHandlers for "agent", "classified", "event", "group", "floater", "parcel", "login", login_refresh", "balance", "chat" - // should we just compose LLCommandHandler and LLDispatchListener? + LLVector3 target_position = ll_vector3_from_sd(event_data["position"]); + object = findObjectClosestTo(target_position); } + + if (object && object->getPCode() == LL_PCODE_VOLUME) + { + gMessageSystem->newMessageFast(_PREHASH_AgentRequestSit); + gMessageSystem->nextBlockFast(_PREHASH_AgentData); + gMessageSystem->addUUIDFast(_PREHASH_AgentID, mAgent.getID()); + gMessageSystem->addUUIDFast(_PREHASH_SessionID, mAgent.getSessionID()); + gMessageSystem->nextBlockFast(_PREHASH_TargetObject); + gMessageSystem->addUUIDFast(_PREHASH_TargetID, object->mID); + gMessageSystem->addVector3Fast(_PREHASH_Offset, LLVector3(0,0,0)); + + object->getRegion()->sendReliableMessage(); + } else { - std::string url = LLSLURL(event_data["regionname"], - LLVector3(event_data["x"].asReal(), - event_data["y"].asReal(), - event_data["z"].asReal())).getSLURLString(); - LLURLDispatcher::dispatch(url, "clicked", NULL, false); + llwarns << "LLAgent requestSit could not find the sit target: " + << event_data << llendl; } } -void LLAgentListener::requestSit(LLSD const & event_data) const +void LLAgentListener::requestStand(LLSD const & event_data) const +{ + mAgent.setControlFlags(AGENT_CONTROL_STAND_UP); +} + + +LLViewerObject * LLAgentListener::findObjectClosestTo( const LLVector3 & position ) const { - //mAgent.getAvatarObject()->sitOnObject(); - // shamelessly ripped from llviewermenu.cpp:handle_sit_or_stand() - // *TODO - find a permanent place to share this code properly. - LLViewerObject *object = gObjectList.findObject(event_data["obj_uuid"]); + LLViewerObject *object = NULL; - if (object && object->getPCode() == LL_PCODE_VOLUME) + // Find the object closest to that position + F32 min_distance = 10000.0f; // Start big + S32 num_objects = gObjectList.getNumObjects(); + S32 cur_index = 0; + while (cur_index < num_objects) { - gMessageSystem->newMessageFast(_PREHASH_AgentRequestSit); - gMessageSystem->nextBlockFast(_PREHASH_AgentData); - gMessageSystem->addUUIDFast(_PREHASH_AgentID, mAgent.getID()); - gMessageSystem->addUUIDFast(_PREHASH_SessionID, mAgent.getSessionID()); - gMessageSystem->nextBlockFast(_PREHASH_TargetObject); - gMessageSystem->addUUIDFast(_PREHASH_TargetID, object->mID); - gMessageSystem->addVector3Fast(_PREHASH_Offset, LLVector3(0,0,0)); - - object->getRegion()->sendReliableMessage(); + LLViewerObject * cur_object = gObjectList.getObject(cur_index++); + if (cur_object) + { // Calculate distance from the target position + LLVector3 target_diff = cur_object->getPositionRegion() - position; + F32 distance_to_target = target_diff.length(); + if (distance_to_target < min_distance) + { // Found an object closer + min_distance = distance_to_target; + object = cur_object; + } + } } + + return object; } -void LLAgentListener::requestStand(LLSD const & event_data) const + +void LLAgentListener::requestTouch(LLSD const & event_data) const { - mAgent.setControlFlags(AGENT_CONTROL_STAND_UP); + LLViewerObject *object = NULL; + + if (event_data.has("obj_uuid")) + { + object = gObjectList.findObject(event_data["obj_uuid"]); + } + else if (event_data.has("position")) + { + LLVector3 target_position = ll_vector3_from_sd(event_data["position"]); + object = findObjectClosestTo(target_position); + } + + S32 face = 0; + if (event_data.has("face")) + { + face = event_data["face"].asInteger(); + } + + if (object && object->getPCode() == LL_PCODE_VOLUME) + { + // Fake enough pick info to get it to (hopefully) work + LLPickInfo pick; + pick.mObjectFace = face; + + /* + These values are sent to the simulator, but face seems to be easiest to use + + pick.mUVCoords "UVCoord" + pick.mSTCoords "STCoord" + pick.mObjectFace "FaceIndex" + pick.mIntersection "Position" + pick.mNormal "Normal" + pick.mBinormal "Binormal" + */ + + // A touch is a sketchy message sequence ... send a grab, immediately + // followed by un-grabbing, crossing fingers and hoping packets arrive in + // the correct order + send_ObjectGrab_message(object, pick, LLVector3::zero); + send_ObjectDeGrab_message(object, pick); + } + else + { + llwarns << "LLAgent requestTouch could not find the touch target " + << event_data["obj_uuid"].asUUID() << llendl; + } } -void LLAgentListener::resetAxes(const LLSD& event) const + +void LLAgentListener::resetAxes(const LLSD& event_data) const { - if (event.has("lookat")) + if (event_data.has("lookat")) { - mAgent.resetAxes(ll_vector3_from_sd(event["lookat"])); + mAgent.resetAxes(ll_vector3_from_sd(event_data["lookat"])); } else { @@ -134,17 +284,210 @@ void LLAgentListener::resetAxes(const LLSD& event) const } } -void LLAgentListener::getAxes(const LLSD& event) const +void LLAgentListener::getAxes(const LLSD& event_data) const { LLQuaternion quat(mAgent.getQuat()); F32 roll, pitch, yaw; quat.getEulerAngles(&roll, &pitch, &yaw); // The official query API for LLQuaternion's [x, y, z, w] values is its // public member mQ... - sendReply(LLSDMap - ("quat", llsd_copy_array(boost::begin(quat.mQ), boost::end(quat.mQ))) - ("euler", LLSDMap("roll", roll)("pitch", pitch)("yaw", yaw)), - event); + LLSD reply = LLSD::emptyMap(); + reply["quat"] = llsd_copy_array(boost::begin(quat.mQ), boost::end(quat.mQ)); + reply["euler"] = LLSD::emptyMap(); + reply["euler"]["roll"] = roll; + reply["euler"]["pitch"] = pitch; + reply["euler"]["yaw"] = yaw; + sendReply(reply, event_data); +} + +void LLAgentListener::getPosition(const LLSD& event_data) const +{ + F32 roll, pitch, yaw; + LLQuaternion quat(mAgent.getQuat()); + quat.getEulerAngles(&roll, &pitch, &yaw); + + LLSD reply = LLSD::emptyMap(); + reply["quat"] = llsd_copy_array(boost::begin(quat.mQ), boost::end(quat.mQ)); + reply["euler"] = LLSD::emptyMap(); + reply["euler"]["roll"] = roll; + reply["euler"]["pitch"] = pitch; + reply["euler"]["yaw"] = yaw; + reply["region"] = ll_sd_from_vector3(mAgent.getPositionAgent()); + reply["global"] = ll_sd_from_vector3d(mAgent.getPositionGlobal()); + + sendReply(reply, event_data); +} + + +void LLAgentListener::startAutoPilot(LLSD const & event_data) +{ + LLQuaternion target_rotation_value; + LLQuaternion* target_rotation = NULL; + if (event_data.has("target_rotation")) + { + target_rotation_value = ll_quaternion_from_sd(event_data["target_rotation"]); + target_rotation = &target_rotation_value; + } + // *TODO: Use callback_pump and callback_data + F32 rotation_threshold = 0.03f; + if (event_data.has("rotation_threshold")) + { + rotation_threshold = event_data["rotation_threshold"].asReal(); + } + + BOOL allow_flying = TRUE; + if (event_data.has("allow_flying")) + { + allow_flying = (BOOL) event_data["allow_flying"].asBoolean(); + mAgent.setFlying(allow_flying); + } + + F32 stop_distance = 0.f; + if (event_data.has("stop_distance")) + { + stop_distance = event_data["stop_distance"].asReal(); + } + + // Clear follow target, this is doing a path + mFollowTarget.setNull(); + + mAgent.startAutoPilotGlobal(ll_vector3d_from_sd(event_data["target_global"]), + event_data["behavior_name"], + target_rotation, + NULL, NULL, + stop_distance, + rotation_threshold, + allow_flying); +} + +void LLAgentListener::getAutoPilot(const LLSD& event_data) const +{ + LLSD reply = LLSD::emptyMap(); + + LLSD::Boolean enabled = mAgent.getAutoPilot(); + reply["enabled"] = enabled; + + reply["target_global"] = ll_sd_from_vector3d(mAgent.getAutoPilotTargetGlobal()); + + reply["leader_id"] = mAgent.getAutoPilotLeaderID(); + + reply["stop_distance"] = mAgent.getAutoPilotStopDistance(); + + reply["target_distance"] = mAgent.getAutoPilotTargetDist(); + if (!enabled && + mFollowTarget.notNull()) + { // Get an actual distance from the target object we were following + LLViewerObject * target = gObjectList.findObject(mFollowTarget); + if (target) + { // Found the target AV, return the actual distance to them as well as their ID + LLVector3 difference = target->getPositionRegion() - mAgent.getPositionAgent(); + reply["target_distance"] = difference.length(); + reply["leader_id"] = mFollowTarget; + } + } + + reply["use_rotation"] = (LLSD::Boolean) mAgent.getAutoPilotUseRotation(); + reply["target_facing"] = ll_sd_from_vector3(mAgent.getAutoPilotTargetFacing()); + reply["rotation_threshold"] = mAgent.getAutoPilotRotationThreshold(); + reply["behavior_name"] = mAgent.getAutoPilotBehaviorName(); + reply["fly"] = (LLSD::Boolean) mAgent.getFlying(); + + sendReply(reply, event_data); +} + +void LLAgentListener::startFollowPilot(LLSD const & event_data) +{ + LLUUID target_id; + + BOOL allow_flying = TRUE; + if (event_data.has("allow_flying")) + { + allow_flying = (BOOL) event_data["allow_flying"].asBoolean(); + } + + if (event_data.has("leader_id")) + { + target_id = event_data["leader_id"]; + } + else if (event_data.has("avatar_name")) + { // Find the avatar with matching name + std::string target_name = event_data["avatar_name"].asString(); + + if (target_name.length() > 0) + { + S32 num_objects = gObjectList.getNumObjects(); + S32 cur_index = 0; + while (cur_index < num_objects) + { + LLViewerObject * cur_object = gObjectList.getObject(cur_index++); + if (cur_object && + cur_object->asAvatar() && + cur_object->asAvatar()->getFullname() == target_name) + { // Found avatar with matching name, extract id and break out of loop + target_id = cur_object->getID(); + break; + } + } + } + } + + F32 stop_distance = 0.f; + if (event_data.has("stop_distance")) + { + stop_distance = event_data["stop_distance"].asReal(); + } + + if (target_id.notNull()) + { + mAgent.setFlying(allow_flying); + mFollowTarget = target_id; // Save follow target so we can report distance later + + mAgent.startFollowPilot(target_id, allow_flying, stop_distance); + } +} + +void LLAgentListener::setAutoPilotTarget(LLSD const & event_data) const +{ + if (event_data.has("target_global")) + { + LLVector3d target_global(ll_vector3d_from_sd(event_data["target_global"])); + mAgent.setAutoPilotTargetGlobal(target_global); + } +} + +void LLAgentListener::stopAutoPilot(LLSD const & event_data) const +{ + BOOL user_cancel = FALSE; + if (event_data.has("user_cancel")) + { + user_cancel = event_data["user_cancel"].asBoolean(); + } + mAgent.stopAutoPilot(user_cancel); +} + +void LLAgentListener::lookAt(LLSD const & event_data) const +{ + LLViewerObject *object = NULL; + if (event_data.has("obj_uuid")) + { + object = gObjectList.findObject(event_data["obj_uuid"]); + } + else if (event_data.has("position")) + { + LLVector3 target_position = ll_vector3_from_sd(event_data["position"]); + object = findObjectClosestTo(target_position); + } + + S32 look_at_type = (S32) LOOKAT_TARGET_NONE; + if (event_data.has("type")) + { + look_at_type = event_data["type"].asInteger(); + } + if (look_at_type >= (S32) LOOKAT_TARGET_NONE && + look_at_type < (S32) LOOKAT_NUM_TARGETS) + { + gAgentCamera.setLookAt((ELookAtType) look_at_type, object); + } } void LLAgentListener::getGroups(const LLSD& event) const diff --git a/indra/newview/llagentlistener.h b/indra/newview/llagentlistener.h index 5a89a99f6a..9a9c4073fe 100644 --- a/indra/newview/llagentlistener.h +++ b/indra/newview/llagentlistener.h @@ -34,22 +34,35 @@ class LLAgent; class LLSD; +class LLViewerObject; +class LLVector3d; class LLAgentListener : public LLEventAPI { public: - LLAgentListener(LLAgent &agent); + LLAgentListener(LLAgent &agent); private: - void requestTeleport(LLSD const & event_data) const; - void requestSit(LLSD const & event_data) const; - void requestStand(LLSD const & event_data) const; - void resetAxes(const LLSD& event) const; - void getAxes(const LLSD& event) const; + void requestTeleport(LLSD const & event_data) const; + void requestSit(LLSD const & event_data) const; + void requestStand(LLSD const & event_data) const; + void requestTouch(LLSD const & event_data) const; + void resetAxes(const LLSD& event_data) const; + void getAxes(const LLSD& event_data) const; void getGroups(const LLSD& event) const; + void getPosition(const LLSD& event_data) const; + void startAutoPilot(const LLSD& event_data); + void getAutoPilot(const LLSD& event_data) const; + void startFollowPilot(const LLSD& event_data); + void setAutoPilotTarget(const LLSD& event_data) const; + void stopAutoPilot(const LLSD& event_data) const; + void lookAt(LLSD const & event_data) const; + + LLViewerObject * findObjectClosestTo( const LLVector3 & position ) const; private: - LLAgent & mAgent; + LLAgent & mAgent; + LLUUID mFollowTarget; }; #endif // LL_LLAGENTLISTENER_H diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index cbdaff5b46..90f46316e8 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -1193,11 +1193,11 @@ bool LLAppViewer::mainLoop() // Scan keyboard for movement keys. Command keys and typing // are handled by windows callbacks. Don't do this until we're // done initializing. JC - if (gViewerWindow->mWindow->getVisible() + if ((gHeadlessClient || gViewerWindow->mWindow->getVisible()) && gViewerWindow->getActive() && !gViewerWindow->mWindow->getMinimized() && LLStartUp::getStartupState() == STATE_STARTED - && !gViewerWindow->getShowProgress() + && (gHeadlessClient || !gViewerWindow->getShowProgress()) && !gFocusMgr.focusLocked()) { LLMemType mjk(LLMemType::MTYPE_JOY_KEY); @@ -2516,7 +2516,8 @@ bool LLAppViewer::initConfiguration() // it relies on checking a marker file which will not work when running // out of different directories - if (LLStartUp::getStartSLURL().isValid()) + if (LLStartUp::getStartSLURL().isValid() && + (gSavedSettings.getBOOL("SLURLPassToOtherInstance"))) { if (sendURLToOtherInstance(LLStartUp::getStartSLURL().getSLURLString())) { @@ -3652,11 +3653,25 @@ bool LLAppViewer::initCache() // Init the texture cache // Allocate 80% of the cache size for textures - const S32 MB = 1024*1024; + const S32 MB = 1024 * 1024; + const S64 MIN_CACHE_SIZE = 64 * MB; + const S64 MAX_CACHE_SIZE = 9984ll * MB; + const S64 MAX_VFS_SIZE = 1024 * MB; // 1 GB + S64 cache_size = (S64)(gSavedSettings.getU32("CacheSize")) * MB; - const S64 MAX_CACHE_SIZE = 1024*MB; - cache_size = llmin(cache_size, MAX_CACHE_SIZE); - S64 texture_cache_size = ((cache_size * 8)/10); + cache_size = llclamp(cache_size, MIN_CACHE_SIZE, MAX_CACHE_SIZE); + + S64 texture_cache_size = ((cache_size * 8) / 10); + S64 vfs_size = cache_size - texture_cache_size; + + if (vfs_size > MAX_VFS_SIZE) + { + // Give the texture cache more space, since the VFS can't be bigger than 1GB. + // This happens when the user's CacheSize setting is greater than 5GB. + vfs_size = MAX_VFS_SIZE; + texture_cache_size = cache_size - MAX_VFS_SIZE; + } + S64 extra = LLAppViewer::getTextureCache()->initCache(LL_PATH_CACHE, texture_cache_size, texture_cache_mismatch); texture_cache_size -= extra; @@ -3665,21 +3680,19 @@ bool LLAppViewer::initCache() LLSplashScreen::update(LLTrans::getString("StartupInitializingVFS")); // Init the VFS - S64 vfs_size = cache_size - texture_cache_size; - const S64 MAX_VFS_SIZE = 1024 * MB; // 1 GB - vfs_size = llmin(vfs_size, MAX_VFS_SIZE); + vfs_size = llmin(vfs_size + extra, MAX_VFS_SIZE); vfs_size = (vfs_size / MB) * MB; // make sure it is MB aligned U32 vfs_size_u32 = (U32)vfs_size; U32 old_vfs_size = gSavedSettings.getU32("VFSOldSize") * MB; bool resize_vfs = (vfs_size_u32 != old_vfs_size); if (resize_vfs) { - gSavedSettings.setU32("VFSOldSize", vfs_size_u32/MB); + gSavedSettings.setU32("VFSOldSize", vfs_size_u32 / MB); } - LL_INFOS("AppCache") << "VFS CACHE SIZE: " << vfs_size/(1024*1024) << " MB" << LL_ENDL; + LL_INFOS("AppCache") << "VFS CACHE SIZE: " << vfs_size / (1024*1024) << " MB" << LL_ENDL; // This has to happen BEFORE starting the vfs - //time_t ltime; + // time_t ltime; srand(time(NULL)); // Flawfinder: ignore U32 old_salt = gSavedSettings.getU32("VFSSalt"); U32 new_salt; @@ -3700,10 +3713,10 @@ bool LLAppViewer::initCache() do { new_salt = rand(); - } while( new_salt == old_salt ); + } while(new_salt == old_salt); } - old_vfs_data_file = gDirUtilp->getExpandedFilename(LL_PATH_CACHE,VFS_DATA_FILE_BASE) + llformat("%u",old_salt); + old_vfs_data_file = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, VFS_DATA_FILE_BASE) + llformat("%u", old_salt); // make sure this file exists llstat s; @@ -3717,7 +3730,7 @@ bool LLAppViewer::initCache() mask += "*"; std::string dir; - dir = gDirUtilp->getExpandedFilename(LL_PATH_CACHE,""); + dir = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, ""); std::string found_file; LLDirIterator iter(dir, mask); @@ -3734,7 +3747,7 @@ bool LLAppViewer::initCache() } } - old_vfs_index_file = gDirUtilp->getExpandedFilename(LL_PATH_CACHE,VFS_INDEX_FILE_BASE) + llformat("%u",old_salt); + old_vfs_index_file = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, VFS_INDEX_FILE_BASE) + llformat("%u", old_salt); stat_result = LLFile::stat(old_vfs_index_file, &s); if (stat_result) @@ -3747,27 +3760,25 @@ bool LLAppViewer::initCache() // Just in case, nuke any other old cache files in the directory. std::string dir; - dir = gDirUtilp->getExpandedFilename(LL_PATH_CACHE,""); + dir = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, ""); std::string mask; - mask = gDirUtilp->getDirDelimiter(); - mask += VFS_DATA_FILE_BASE; + mask = VFS_DATA_FILE_BASE; mask += "*"; gDirUtilp->deleteFilesInDir(dir, mask); - mask = gDirUtilp->getDirDelimiter(); - mask += VFS_INDEX_FILE_BASE; + mask = VFS_INDEX_FILE_BASE; mask += "*"; gDirUtilp->deleteFilesInDir(dir, mask); } - new_vfs_data_file = gDirUtilp->getExpandedFilename(LL_PATH_CACHE,VFS_DATA_FILE_BASE) + llformat("%u",new_salt); - new_vfs_index_file = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, VFS_INDEX_FILE_BASE) + llformat("%u",new_salt); + new_vfs_data_file = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, VFS_DATA_FILE_BASE) + llformat("%u", new_salt); + new_vfs_index_file = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, VFS_INDEX_FILE_BASE) + llformat("%u", new_salt); - static_vfs_data_file = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS,"static_data.db2"); - static_vfs_index_file = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS,"static_index.db2"); + static_vfs_data_file = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "static_data.db2"); + static_vfs_index_file = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "static_index.db2"); if (resize_vfs) { @@ -3790,19 +3801,19 @@ bool LLAppViewer::initCache() // Don't remove VFS after viewer crashes. If user has corrupt data, they can reinstall. JC gVFS = LLVFS::createLLVFS(new_vfs_index_file, new_vfs_data_file, false, vfs_size_u32, false); - if( !gVFS ) + if (!gVFS) { return false; } gStaticVFS = LLVFS::createLLVFS(static_vfs_index_file, static_vfs_data_file, true, 0, false); - if( !gStaticVFS ) + if (!gStaticVFS) { return false; } BOOL success = gVFS->isValid() && gStaticVFS->isValid(); - if( !success ) + if (!success) { return false; } @@ -3823,11 +3834,11 @@ bool LLAppViewer::initCache() void LLAppViewer::purgeCache() { - LL_INFOS("AppCache") << "Purging Cache and Texture Cache..." << llendl; + LL_INFOS("AppCache") << "Purging Cache and Texture Cache..." << LL_ENDL; LLAppViewer::getTextureCache()->purgeCache(LL_PATH_CACHE); LLVOCache::getInstance()->removeCache(LL_PATH_CACHE); - std::string mask = gDirUtilp->getDirDelimiter() + "*.*"; - gDirUtilp->deleteFilesInDir(gDirUtilp->getExpandedFilename(LL_PATH_CACHE,""),mask); + std::string mask = "*.*"; + gDirUtilp->deleteFilesInDir(gDirUtilp->getExpandedFilename(LL_PATH_CACHE, ""), mask); } std::string LLAppViewer::getSecondLifeTitle() const diff --git a/indra/newview/llappviewerwin32.cpp b/indra/newview/llappviewerwin32.cpp index 6396ca91ff..445bd208ef 100644 --- a/indra/newview/llappviewerwin32.cpp +++ b/indra/newview/llappviewerwin32.cpp @@ -295,23 +295,44 @@ void create_console() // redirect unbuffered STDOUT to the console l_std_handle = (long)GetStdHandle(STD_OUTPUT_HANDLE); h_con_handle = _open_osfhandle(l_std_handle, _O_TEXT); - fp = _fdopen( h_con_handle, "w" ); - *stdout = *fp; - setvbuf( stdout, NULL, _IONBF, 0 ); + if (h_con_handle == -1) + { + llwarns << "create_console() failed to open stdout handle" << llendl; + } + else + { + fp = _fdopen( h_con_handle, "w" ); + *stdout = *fp; + setvbuf( stdout, NULL, _IONBF, 0 ); + } // redirect unbuffered STDIN to the console l_std_handle = (long)GetStdHandle(STD_INPUT_HANDLE); h_con_handle = _open_osfhandle(l_std_handle, _O_TEXT); - fp = _fdopen( h_con_handle, "r" ); - *stdin = *fp; - setvbuf( stdin, NULL, _IONBF, 0 ); + if (h_con_handle == -1) + { + llwarns << "create_console() failed to open stdin handle" << llendl; + } + else + { + fp = _fdopen( h_con_handle, "r" ); + *stdin = *fp; + setvbuf( stdin, NULL, _IONBF, 0 ); + } // redirect unbuffered STDERR to the console l_std_handle = (long)GetStdHandle(STD_ERROR_HANDLE); h_con_handle = _open_osfhandle(l_std_handle, _O_TEXT); - fp = _fdopen( h_con_handle, "w" ); - *stderr = *fp; - setvbuf( stderr, NULL, _IONBF, 0 ); + if (h_con_handle == -1) + { + llwarns << "create_console() failed to open stderr handle" << llendl; + } + else + { + fp = _fdopen( h_con_handle, "w" ); + *stderr = *fp; + setvbuf( stderr, NULL, _IONBF, 0 ); + } } LLAppViewerWin32::LLAppViewerWin32(const char* cmd_line) : diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp index cbbdcb2983..cbbdcb2983 100644..100755 --- a/indra/newview/llavataractions.cpp +++ b/indra/newview/llavataractions.cpp diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp index f51552aae5..01d19c5ba0 100644 --- a/indra/newview/llbottomtray.cpp +++ b/indra/newview/llbottomtray.cpp @@ -46,6 +46,7 @@ #include "llhints.h" #include "llimfloater.h" // for LLIMFloater #include "llnearbychatbar.h" +#include "llnearbychatbarlistener.h" #include "llsidetray.h" #include "llspeakbutton.h" #include "llsplitbutton.h" @@ -537,6 +538,8 @@ BOOL LLBottomTray::postBuild() mNearbyChatBar = findChild<LLNearbyChatBar>("chat_bar"); LLHints::registerHintTarget("chat_bar", mNearbyChatBar->LLView::getHandle()); + mListener.reset(new LLNearbyChatBarListener(*mNearbyChatBar)); + mChatBarContainer = getChild<LLLayoutPanel>("chat_bar_layout_panel"); mNearbyCharResizeHandlePanel = getChild<LLPanel>("chat_bar_resize_handle_panel"); diff --git a/indra/newview/llbottomtray.h b/indra/newview/llbottomtray.h index d9c95d82e5..62718531ef 100644 --- a/indra/newview/llbottomtray.h +++ b/indra/newview/llbottomtray.h @@ -39,6 +39,7 @@ class LLIMChiclet; class LLBottomTrayLite; class LLLayoutPanel; class LLMenuGL; +class LLNearbyChatBarListener; // Build time optimization, generate once in .cpp file #ifndef LLBOTTOMTRAY_CPP @@ -555,6 +556,9 @@ protected: * Image used to show position where dragged button will be dropped. */ LLUIImage* mImageDragIndication; + + // We want only one LLNearbyChatBarListener object, so it's tied to this singleton + boost::shared_ptr<LLNearbyChatBarListener> mListener; }; #endif // LL_LLBOTTOMPANEL_H diff --git a/indra/newview/llchatbar.cpp b/indra/newview/llchatbar.cpp index 6e58be8174..cf0374075a 100644 --- a/indra/newview/llchatbar.cpp +++ b/indra/newview/llchatbar.cpp @@ -671,6 +671,9 @@ void LLChatBar::onCommitGesture(LLUICtrl* ctrl) } } + +/* Cruft - global gChatHandler declared below has been commented out, + so this class is never used. See similar code in llnearbychatbar.cpp class LLChatHandler : public LLCommandHandler { public: @@ -691,7 +694,7 @@ public: { S32 channel = tokens[0].asInteger(); // VWR-19499 Restrict function to chat channels greater than 0. - if ((channel > 0) && (channel < 2147483647)) + if ((channel > 0) && (channel < CHAT_CHANNEL_DEBUG)) { retval = true; // Say mesg on channel @@ -710,3 +713,4 @@ public: // Creating the object registers with the dispatcher. //LLChatHandler gChatHandler; +cruft */ diff --git a/indra/newview/llcommandhandler.cpp b/indra/newview/llcommandhandler.cpp index 19dba3f917..19dba3f917 100644..100755 --- a/indra/newview/llcommandhandler.cpp +++ b/indra/newview/llcommandhandler.cpp diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp index 4b15695cbf..60a2f813aa 100644..100755 --- a/indra/newview/llfloaterpreference.cpp +++ b/indra/newview/llfloaterpreference.cpp @@ -187,12 +187,26 @@ void LLVoiceSetKeyDialog::onCancel(void* user_data) void handleNameTagOptionChanged(const LLSD& newvalue); void handleDisplayNamesOptionChanged(const LLSD& newvalue); bool callback_clear_browser_cache(const LLSD& notification, const LLSD& response); +bool callback_clear_cache(const LLSD& notification, const LLSD& response); //bool callback_skip_dialogs(const LLSD& notification, const LLSD& response, LLFloaterPreference* floater); //bool callback_reset_dialogs(const LLSD& notification, const LLSD& response, LLFloaterPreference* floater); void fractionFromDecimal(F32 decimal_val, S32& numerator, S32& denominator); +bool callback_clear_cache(const LLSD& notification, const LLSD& response) +{ + S32 option = LLNotificationsUtil::getSelectedOption(notification, response); + if ( option == 0 ) // YES + { + // flag client texture cache for clearing next time the client runs + gSavedSettings.setBOOL("PurgeCacheOnNextStartup", TRUE); + LLNotificationsUtil::add("CacheWillClear"); + } + + return false; +} + bool callback_clear_browser_cache(const LLSD& notification, const LLSD& response) { S32 option = LLNotificationsUtil::getSelectedOption(notification, response); @@ -305,7 +319,7 @@ LLFloaterPreference::LLFloaterPreference(const LLSD& key) mCommitCallbackRegistrar.add("Pref.Cancel", boost::bind(&LLFloaterPreference::onBtnCancel, this)); mCommitCallbackRegistrar.add("Pref.OK", boost::bind(&LLFloaterPreference::onBtnOK, this)); -// mCommitCallbackRegistrar.add("Pref.ClearCache", boost::bind(&LLFloaterPreference::onClickClearCache, this)); + mCommitCallbackRegistrar.add("Pref.ClearCache", boost::bind(&LLFloaterPreference::onClickClearCache, this)); mCommitCallbackRegistrar.add("Pref.WebClearCache", boost::bind(&LLFloaterPreference::onClickBrowserClearCache, this)); mCommitCallbackRegistrar.add("Pref.SetCache", boost::bind(&LLFloaterPreference::onClickSetCache, this)); mCommitCallbackRegistrar.add("Pref.ResetCache", boost::bind(&LLFloaterPreference::onClickResetCache, this)); @@ -809,6 +823,11 @@ void LLFloaterPreference::refreshEnabledGraphics() } } +void LLFloaterPreference::onClickClearCache() +{ + LLNotificationsUtil::add("ConfirmClearCache", LLSD(), LLSD(), callback_clear_cache); +} + void LLFloaterPreference::onClickBrowserClearCache() { LLNotificationsUtil::add("ConfirmClearBrowserCache", LLSD(), LLSD(), callback_clear_browser_cache); @@ -868,14 +887,15 @@ void LLFloaterPreference::onClickSetCache() void LLFloaterPreference::onClickResetCache() { - if (!gSavedSettings.getString("CacheLocation").empty()) + if (gDirUtilp->getCacheDir(false) == gDirUtilp->getCacheDir(true)) { - gSavedSettings.setString("NewCacheLocation", ""); - gSavedSettings.setString("NewCacheLocationTopFolder", ""); + // The cache location was already the default. + return; } - + gSavedSettings.setString("NewCacheLocation", ""); + gSavedSettings.setString("NewCacheLocationTopFolder", ""); LLNotificationsUtil::add("CacheWillBeMoved"); - std::string cache_location = gDirUtilp->getCacheDir(true); + std::string cache_location = gDirUtilp->getCacheDir(false); gSavedSettings.setString("CacheLocation", cache_location); std::string top_folder(gDirUtilp->getBaseFileName(cache_location)); gSavedSettings.setString("CacheLocationTopFolder", top_folder); diff --git a/indra/newview/llfloaterpreference.h b/indra/newview/llfloaterpreference.h index 5fe509fb37..ef92575347 100644 --- a/indra/newview/llfloaterpreference.h +++ b/indra/newview/llfloaterpreference.h @@ -88,7 +88,8 @@ protected: void onBtnCancel(); void onBtnApply(); - void onClickBrowserClearCache(); + void onClickClearCache(); // Clear viewer texture cache, vfs, and VO cache on next startup + void onClickBrowserClearCache(); // Clear web history and caches as well as viewer caches above void onLanguageChange(); void onNameTagOpacityChange(const LLSD& newvalue); @@ -99,7 +100,7 @@ protected: void onChangeCustom(); void updateMeterText(LLUICtrl* ctrl); void onOpenHardwareSettings(); - /// callback for defaults + // callback for defaults void setHardwareDefaults(); // callback for when client turns on shaders void onVertexShaderEnable(); diff --git a/indra/newview/llfloatersounddevices.cpp b/indra/newview/llfloatersounddevices.cpp index 9fe7c7f9dd..e692f1735a 100644 --- a/indra/newview/llfloatersounddevices.cpp +++ b/indra/newview/llfloatersounddevices.cpp @@ -68,6 +68,9 @@ BOOL LLFloaterSoundDevices::postBuild() if (panel) { panel->setUseTuningMode(false); + getChild<LLUICtrl>("voice_input_device")->setCommitCallback(boost::bind(&LLPanelVoiceDeviceSettings::apply, panel)); + getChild<LLUICtrl>("voice_output_device")->setCommitCallback(boost::bind(&LLPanelVoiceDeviceSettings::apply, panel)); + getChild<LLUICtrl>("mic_volume_slider")->setCommitCallback(boost::bind(&LLPanelVoiceDeviceSettings::apply, panel)); } return TRUE; } diff --git a/indra/newview/llfloaterworldmap.cpp b/indra/newview/llfloaterworldmap.cpp index f8a4ce7ad0..f8a4ce7ad0 100644..100755 --- a/indra/newview/llfloaterworldmap.cpp +++ b/indra/newview/llfloaterworldmap.cpp diff --git a/indra/newview/llgesturelistener.cpp b/indra/newview/llgesturelistener.cpp new file mode 100644 index 0000000000..2fff506681 --- /dev/null +++ b/indra/newview/llgesturelistener.cpp @@ -0,0 +1,159 @@ +/** + * @file llgesturelistener.cpp + * @author Dave Simmons + * @date 2011-03-28 + * @brief Implementation for LLGestureListener. + * + * $LicenseInfo:firstyear=2011&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2011, Linden Research, Inc. + * + * 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 + * + * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA + * $/LicenseInfo$ + */ + +#include "llviewerprecompiledheaders.h" + +#include "llgesturelistener.h" +#include "llgesturemgr.h" +#include "llmultigesture.h" + + +LLGestureListener::LLGestureListener() + : LLEventAPI("LLGesture", + "LLGesture listener interface to control gestures") +{ + add("getActiveGestures", + "Return information about the agent's available gestures [\"reply\"]:\n" + "[\"gestures\"]: a dictionary with UUID strings as keys\n" + " and the following dict values for each entry:\n" + " [\"name\"]: name of the gesture, may be empty\n" + " [\"trigger\"]: trigger string used to invoke via user chat, may be empty\n" + " [\"playing\"]: true or false indicating the playing state", + &LLGestureListener::getActiveGestures, + LLSDMap("reply", LLSD())); + add("isGesturePlaying", + "[\"id\"]: UUID of the gesture to query. Returns True or False in [\"playing\"] value of the result", + &LLGestureListener::isGesturePlaying); + add("startGesture", + "[\"id\"]: UUID of the gesture to start playing", + &LLGestureListener::startGesture); + add("stopGesture", + "[\"id\"]: UUID of the gesture to stop", + &LLGestureListener::stopGesture); +} + + +// "getActiveGestures" command +void LLGestureListener::getActiveGestures(const LLSD& event_data) const +{ + LLSD reply = LLSD::emptyMap(); + LLSD gesture_map = LLSD::emptyMap(); + + const LLGestureMgr::item_map_t& active_gestures = LLGestureMgr::instance().getActiveGestures(); + + // Scan active gesture map and get all the names + LLGestureMgr::item_map_t::const_iterator it; + for (it = active_gestures.begin(); it != active_gestures.end(); ++it) + { + LLMultiGesture* gesture = (*it).second; + if (gesture) + { // Add an entry to the result map with the LLUUID as key with a map containing data + LLSD info = LLSD::emptyMap(); + info["name"] = (LLSD::String) gesture->mName; + info["trigger"] = (LLSD::String) gesture->mTrigger; + info["playing"] = (LLSD::Boolean) gesture->mPlaying; + + gesture_map[(*it).first.asString()] = info; + } + } + + reply["gestures"] = gesture_map; + sendReply(reply, event_data); +} + + + +// "isGesturePlaying" command +void LLGestureListener::isGesturePlaying(const LLSD& event_data) const +{ + bool is_playing = false; + if (event_data.has("id")) + { + LLUUID gesture_id = event_data["id"].asUUID(); + if (gesture_id.notNull()) + { + is_playing = LLGestureMgr::instance().isGesturePlaying(gesture_id); + } + else + { + llwarns << "isGesturePlaying did not find a gesture object for " << gesture_id << llendl; + } + } + else + { + llwarns << "isGesturePlaying didn't have 'id' value passed in" << llendl; + } + + LLSD reply = LLSD::emptyMap(); + reply["playing"] = (LLSD::Boolean) is_playing; + sendReply(reply, event_data); +} + + +// "startGesture" command +void LLGestureListener::startGesture(LLSD const & event_data) const +{ + startOrStopGesture(event_data, true); +} + + +// "stopGesture" command +void LLGestureListener::stopGesture(LLSD const & event_data) const +{ + startOrStopGesture(event_data, false); +} + + +// Real code for "startGesture" or "stopGesture" +void LLGestureListener::startOrStopGesture(LLSD const & event_data, bool start) const +{ + if (event_data.has("id")) + { + LLUUID gesture_id = event_data["id"].asUUID(); + if (gesture_id.notNull()) + { + if (start) + { + LLGestureMgr::instance().playGesture(gesture_id); + } + else + { + LLGestureMgr::instance().stopGesture(gesture_id); + } + } + else + { + llwarns << "startOrStopGesture did not find a gesture object for " << gesture_id << llendl; + } + } + else + { + llwarns << "startOrStopGesture didn't have 'id' value passed in" << llendl; + } +} + diff --git a/indra/newview/llgesturelistener.h b/indra/newview/llgesturelistener.h new file mode 100644 index 0000000000..6f59698ed1 --- /dev/null +++ b/indra/newview/llgesturelistener.h @@ -0,0 +1,52 @@ +/** + * @file llgesturelistener.h + * @author Dave Simmons + * @date 2011-03-15 + * @brief Class definition for LLGestureListener. + * + * $LicenseInfo:firstyear=2011&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2011, Linden Research, Inc. + * + * 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 + * + * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA + * $/LicenseInfo$ + */ + + +#ifndef LL_LLGESTURELISTENER_H +#define LL_LLGESTURELISTENER_H + +#include "lleventapi.h" + +class LLSD; + +class LLGestureListener : public LLEventAPI +{ +public: + LLGestureListener(); + +private: + void getActiveGestures(LLSD const & gesture_data) const; + void isGesturePlaying(LLSD const & gesture_data) const; + void startGesture(LLSD const & gesture_data) const; + void stopGesture(LLSD const & gesture_data) const; + + void startOrStopGesture(LLSD const & event_data, bool start) const; +}; + +#endif // LL_LLGESTURELISTENER_H + diff --git a/indra/newview/llgesturemgr.cpp b/indra/newview/llgesturemgr.cpp index 2f9856c650..66ca76bfb0 100644 --- a/indra/newview/llgesturemgr.cpp +++ b/indra/newview/llgesturemgr.cpp @@ -53,6 +53,7 @@ #include "llviewerstats.h" #include "llnearbychatbar.h" #include "llappearancemgr.h" +#include "llgesturelistener.h" // Longest time, in seconds, to wait for all animations to stop playing const F32 MAX_WAIT_ANIM_SECS = 30.f; @@ -70,6 +71,7 @@ LLGestureMgr::LLGestureMgr() mLoadingCount(0) { gInventory.addObserver(this); + mListener.reset(new LLGestureListener()); } diff --git a/indra/newview/llgesturemgr.h b/indra/newview/llgesturemgr.h index 5930841cbc..26a5924ec3 100644 --- a/indra/newview/llgesturemgr.h +++ b/indra/newview/llgesturemgr.h @@ -37,6 +37,7 @@ #include "llviewerinventory.h" class LLMultiGesture; +class LLGestureListener; class LLGestureStep; class LLUUID; class LLVFS; @@ -154,9 +155,9 @@ protected: // Used by loadGesture static void onLoadComplete(LLVFS *vfs, - const LLUUID& asset_uuid, - LLAssetType::EType type, - void* user_data, S32 status, LLExtStat ext_status); + const LLUUID& asset_uuid, + LLAssetType::EType type, + void* user_data, S32 status, LLExtStat ext_status); // Used by playGesture to load an asset file // required to play a gesture step @@ -185,6 +186,9 @@ private: BOOL mValid; std::set<LLUUID> mLoadingAssets; + + // LLEventHost interface + boost::shared_ptr<LLGestureListener> mListener; }; #endif diff --git a/indra/newview/llnearbychatbar.cpp b/indra/newview/llnearbychatbar.cpp index d3fd959152..4b961db5f9 100644 --- a/indra/newview/llnearbychatbar.cpp +++ b/indra/newview/llnearbychatbar.cpp @@ -889,11 +889,11 @@ void send_chat_from_viewer(const std::string& utf8_out_text, EChatType type, S32 LLViewerStats::getInstance()->incStat(LLViewerStats::ST_CHAT_COUNT); } -class LLChatHandler : public LLCommandHandler +class LLChatCommandHandler : public LLCommandHandler { public: // not allowed from outside the app - LLChatHandler() : LLCommandHandler("chat", UNTRUSTED_BLOCK) { } + LLChatCommandHandler() : LLCommandHandler("chat", UNTRUSTED_BLOCK) { } // Your code here bool handle(const LLSD& tokens, const LLSD& query_map, @@ -909,7 +909,7 @@ public: { S32 channel = tokens[0].asInteger(); // VWR-19499 Restrict function to chat channels greater than 0. - if ((channel > 0) && (channel < 2147483647)) + if ((channel > 0) && (channel < CHAT_CHANNEL_DEBUG)) { retval = true; // Send unescaped message, see EXT-6353. @@ -927,6 +927,6 @@ public: }; // Creating the object registers with the dispatcher. -LLChatHandler gChatHandler; +LLChatCommandHandler gChatHandler; diff --git a/indra/newview/llnearbychatbarlistener.cpp b/indra/newview/llnearbychatbarlistener.cpp new file mode 100644 index 0000000000..a63e1fb76e --- /dev/null +++ b/indra/newview/llnearbychatbarlistener.cpp @@ -0,0 +1,100 @@ +/** + * @file llnearbychatbarlistener.cpp + * @author Dave Simmons + * @date 2011-03-15 + * @brief Implementation for LLNearbyChatBarListener. + * + * $LicenseInfo:firstyear=2011&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2011, Linden Research, Inc. + * + * 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 + * + * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA + * $/LicenseInfo$ + */ + +#include "llviewerprecompiledheaders.h" + +#include "llnearbychatbarlistener.h" +#include "llnearbychatbar.h" + +#include "llagent.h" +#include "llchat.h" + + + +LLNearbyChatBarListener::LLNearbyChatBarListener(LLNearbyChatBar & chatbar) + : LLEventAPI("LLChatBar", + "LLChatBar listener to (e.g.) sendChat, etc."), + mChatbar(chatbar) +{ + add("sendChat", + "Send chat to the simulator:\n" + "[\"message\"] chat message text [required]\n" + "[\"channel\"] chat channel number [default = 0]\n" + "[\"type\"] chat type \"whisper\", \"normal\", \"shout\" [default = \"normal\"]", + &LLNearbyChatBarListener::sendChat); +} + + +// "sendChat" command +void LLNearbyChatBarListener::sendChat(LLSD const & chat_data) const +{ + // Extract the data + std::string chat_text = chat_data["message"].asString(); + + S32 channel = 0; + if (chat_data.has("channel")) + { + channel = chat_data["channel"].asInteger(); + if (channel < 0 || channel >= CHAT_CHANNEL_DEBUG) + { // Use 0 up to (but not including) CHAT_CHANNEL_DEBUG + channel = 0; + } + } + + EChatType type_o_chat = CHAT_TYPE_NORMAL; + if (chat_data.has("type")) + { + std::string type_string = chat_data["type"].asString(); + if (type_string == "whisper") + { + type_o_chat = CHAT_TYPE_WHISPER; + } + else if (type_string == "shout") + { + type_o_chat = CHAT_TYPE_SHOUT; + } + } + + // Have to prepend /42 style channel numbers + std::string chat_to_send; + if (channel == 0) + { + chat_to_send = chat_text; + } + else + { + chat_to_send += "/"; + chat_to_send += chat_data["channel"].asString(); + chat_to_send += " "; + chat_to_send += chat_text; + } + + // Send it as if it was typed in + mChatbar.sendChatFromViewer(chat_to_send, type_o_chat, (BOOL)(channel == 0)); +} + diff --git a/indra/newview/llnearbychatbarlistener.h b/indra/newview/llnearbychatbarlistener.h new file mode 100644 index 0000000000..9af9bc1f7b --- /dev/null +++ b/indra/newview/llnearbychatbarlistener.h @@ -0,0 +1,50 @@ +/** + * @file llnearbychatbarlistener.h + * @author Dave Simmons + * @date 2011-03-15 + * @brief Class definition for LLNearbyChatBarListener. + * + * $LicenseInfo:firstyear=2011&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2011, Linden Research, Inc. + * + * 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 + * + * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA + * $/LicenseInfo$ + */ + + +#ifndef LL_LLNEARBYCHATBARLISTENER_H +#define LL_LLNEARBYCHATBARLISTENER_H + +#include "lleventapi.h" + +class LLSD; +class LLNearbyChatBar; + +class LLNearbyChatBarListener : public LLEventAPI +{ +public: + LLNearbyChatBarListener(LLNearbyChatBar & chatbar); + +private: + void sendChat(LLSD const & chat_data) const; + + LLNearbyChatBar & mChatbar; +}; + +#endif // LL_LLNEARBYCHATBARLISTENER_H + diff --git a/indra/newview/llnearbychathandler.cpp b/indra/newview/llnearbychathandler.cpp index b56fb65a4c..11dc496311 100644 --- a/indra/newview/llnearbychathandler.cpp +++ b/indra/newview/llnearbychathandler.cpp @@ -441,6 +441,8 @@ void LLNearbyChatScreenChannel::reshape (S32 width, S32 height, BOOL called_fr //----------------------------------------------------------------------------------------------- //LLNearbyChatHandler //----------------------------------------------------------------------------------------------- +boost::scoped_ptr<LLEventPump> LLNearbyChatHandler::sChatWatcher(new LLEventStream("LLChat")); + LLNearbyChatHandler::LLNearbyChatHandler(e_notification_type type, const LLSD& id) { mType = type; @@ -487,6 +489,27 @@ void LLNearbyChatHandler::processChat(const LLChat& chat_msg, const LLSD &args) // tmp_chat.mFromName = tmp_chat.mFromID.asString(); } + // Build notification data + LLSD notification; + notification["message"] = chat_msg.mText; + notification["from"] = chat_msg.mFromName; + notification["from_id"] = chat_msg.mFromID; + notification["time"] = chat_msg.mTime; + notification["source"] = (S32)chat_msg.mSourceType; + notification["chat_type"] = (S32)chat_msg.mChatType; + notification["chat_style"] = (S32)chat_msg.mChatStyle; + // Pass sender info so that it can be rendered properly (STORM-1021). + notification["sender_slurl"] = LLViewerChat::getSenderSLURL(chat_msg, args); + + if (chat_msg.mChatType == CHAT_TYPE_DIRECT && + chat_msg.mText.length() > 0 && + chat_msg.mText[0] == '@') + { + // Send event on to LLEventStream and exit + sChatWatcher->post(notification); + return; + } + // don't show toast and add message to chat history on receive debug message // with disabled setting showing script errors or enabled setting to show script // errors in separate window. @@ -529,6 +552,10 @@ void LLNearbyChatHandler::processChat(const LLChat& chat_msg, const LLSD &args) } + // Send event on to LLEventStream + sChatWatcher->post(notification); + + if( nearby_chat->getVisible() || ( chat_msg.mSourceType == CHAT_SOURCE_AGENT && gSavedSettings.getBOOL("UseChatBubbles") ) @@ -562,25 +589,14 @@ void LLNearbyChatHandler::processChat(const LLChat& chat_msg, const LLSD &args) } */ - // Add a nearby chat toast. - LLUUID id; - id.generate(); - LLNearbyChatScreenChannel* channel = dynamic_cast<LLNearbyChatScreenChannel*>(mChannel); - if(channel) { - LLSD notification; + // Add a nearby chat toast. + LLUUID id; + id.generate(); notification["id"] = id; - notification["message"] = chat_msg.mText; - notification["from"] = chat_msg.mFromName; - notification["from_id"] = chat_msg.mFromID; - notification["time"] = chat_msg.mTime; - notification["source"] = (S32)chat_msg.mSourceType; - notification["chat_type"] = (S32)chat_msg.mChatType; - notification["chat_style"] = (S32)chat_msg.mChatStyle; - std::string r_color_name = "White"; F32 r_color_alpha = 1.0f; LLViewerChat::getChatColor( chat_msg, r_color_name, r_color_alpha); @@ -588,13 +604,8 @@ void LLNearbyChatHandler::processChat(const LLChat& chat_msg, const LLSD &args) notification["text_color"] = r_color_name; notification["color_alpha"] = r_color_alpha; notification["font_size"] = (S32)LLViewerChat::getChatFontSize() ; - - // Pass sender info so that it can be rendered properly (STORM-1021). - notification["sender_slurl"] = LLViewerChat::getSenderSLURL(chat_msg, args); - channel->addNotification(notification); } - } void LLNearbyChatHandler::onDeleteToast(LLToast* toast) diff --git a/indra/newview/llnearbychathandler.h b/indra/newview/llnearbychathandler.h index ec1f29cdfc..b0e4f62d51 100644 --- a/indra/newview/llnearbychathandler.h +++ b/indra/newview/llnearbychathandler.h @@ -29,6 +29,8 @@ #include "llnotificationhandler.h" +class LLEventPump; + //add LLNearbyChatHandler to LLNotificationsUI namespace namespace LLNotificationsUI{ @@ -44,6 +46,8 @@ public: protected: virtual void onDeleteToast(LLToast* toast); virtual void initChannel(); + + static boost::scoped_ptr<LLEventPump> sChatWatcher; }; } diff --git a/indra/newview/llnotificationmanager.h b/indra/newview/llnotificationmanager.h index 72fa394621..16e82e4cce 100644 --- a/indra/newview/llnotificationmanager.h +++ b/indra/newview/llnotificationmanager.h @@ -69,7 +69,7 @@ public: private: //TODO (*) std::map<std::string, boost::shared_ptr<LLEventHandler> > mNotifyHandlers; - std::map<std::string, LLChatHandler*> mChatHandlers; + // cruft std::map<std::string, LLChatHandler*> mChatHandlers; }; } diff --git a/indra/newview/llpanelpicks.cpp b/indra/newview/llpanelpicks.cpp index ddce83c616..ddce83c616 100644..100755 --- a/indra/newview/llpanelpicks.cpp +++ b/indra/newview/llpanelpicks.cpp diff --git a/indra/newview/llpanelpicks.h b/indra/newview/llpanelpicks.h index 29db110523..29db110523 100644..100755 --- a/indra/newview/llpanelpicks.h +++ b/indra/newview/llpanelpicks.h diff --git a/indra/newview/llpanelprofile.cpp b/indra/newview/llpanelprofile.cpp index fd5c3362bb..fd5c3362bb 100644..100755 --- a/indra/newview/llpanelprofile.cpp +++ b/indra/newview/llpanelprofile.cpp diff --git a/indra/newview/llpanelprofile.h b/indra/newview/llpanelprofile.h index fca359f51e..fca359f51e 100644..100755 --- a/indra/newview/llpanelprofile.h +++ b/indra/newview/llpanelprofile.h diff --git a/indra/newview/llpanelvoicedevicesettings.cpp b/indra/newview/llpanelvoicedevicesettings.cpp index dc87bd0077..4a80bbbe5e 100644 --- a/indra/newview/llpanelvoicedevicesettings.cpp +++ b/indra/newview/llpanelvoicedevicesettings.cpp @@ -191,7 +191,21 @@ void LLPanelVoiceDeviceSettings::refresh() mCtrlInputDevices = getChild<LLComboBox>("voice_input_device"); mCtrlOutputDevices = getChild<LLComboBox>("voice_output_device"); - if(!LLVoiceClient::getInstance()->deviceSettingsAvailable()) + bool device_settings_available = LLVoiceClient::getInstance()->deviceSettingsAvailable(); + + if (mCtrlInputDevices) + { + mCtrlInputDevices->setEnabled(device_settings_available); + } + + if (mCtrlOutputDevices) + { + mCtrlOutputDevices->setEnabled(device_settings_available); + } + + getChild<LLSlider>("mic_volume_slider")->setEnabled(device_settings_available); + + if(!device_settings_available) { // The combo boxes are disabled, since we can't get the device settings from the daemon just now. // Put the currently set default (ONLY) in the box, and select it. @@ -207,6 +221,7 @@ void LLPanelVoiceDeviceSettings::refresh() mCtrlOutputDevices->add( mOutputDevice, ADD_BOTTOM ); mCtrlOutputDevices->setSimple(mOutputDevice); } + mDevicesUpdated = FALSE; } else if (!mDevicesUpdated) { diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index 141a81c717..86b09473ab 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -1970,7 +1970,6 @@ bool idle_startup() // Start automatic replay if the flag is set. if (gSavedSettings.getBOOL("StatsAutoRun") || gAgentPilot.getReplaySession()) { - LLUUID id; LL_DEBUGS("AppInit") << "Starting automatic playback" << LL_ENDL; gAgentPilot.startPlayback(); } diff --git a/indra/newview/lltexturecache.cpp b/indra/newview/lltexturecache.cpp index 7fb52c1939..9b417307fd 100644 --- a/indra/newview/lltexturecache.cpp +++ b/indra/newview/lltexturecache.cpp @@ -949,7 +949,7 @@ S64 LLTextureCache::initCache(ELLPath location, S64 max_size, BOOL texture_cache max_size -= sCacheMaxTexturesSize; LL_INFOS("TextureCache") << "Headers: " << sCacheMaxEntries - << " Textures size: " << sCacheMaxTexturesSize/(1024*1024) << " MB" << LL_ENDL; + << " Textures size: " << sCacheMaxTexturesSize / (1024 * 1024) << " MB" << LL_ENDL; setDirNames(location); @@ -1513,12 +1513,12 @@ void LLTextureCache::purgeAllTextures(bool purge_directories) { const char* subdirs = "0123456789abcdef"; std::string delem = gDirUtilp->getDirDelimiter(); - std::string mask = delem + "*"; + std::string mask = "*"; for (S32 i=0; i<16; i++) { std::string dirname = mTexturesDirName + delem + subdirs[i]; llinfos << "Deleting files in directory: " << dirname << llendl; - gDirUtilp->deleteFilesInDir(dirname,mask); + gDirUtilp->deleteFilesInDir(dirname, mask); if (purge_directories) { LLFile::rmdir(dirname); @@ -1655,7 +1655,7 @@ void LLTextureCache::purgeTextures(bool validate) LL_INFOS("TextureCache") << "TEXTURE CACHE:" << " PURGED: " << purge_count << " ENTRIES: " << num_entries - << " CACHE SIZE: " << mTexturesSizeTotal / 1024*1024 << " MB" + << " CACHE SIZE: " << mTexturesSizeTotal / (1024 * 1024) << " MB" << llendl; } diff --git a/indra/newview/lltoolgrab.cpp b/indra/newview/lltoolgrab.cpp index b6c0f662e5..319e2508e0 100644 --- a/indra/newview/lltoolgrab.cpp +++ b/indra/newview/lltoolgrab.cpp @@ -54,7 +54,6 @@ #include "llviewerobject.h" #include "llviewerobjectlist.h" #include "llviewerregion.h" -#include "llviewerwindow.h" #include "llvoavatarself.h" #include "llworld.h" @@ -387,22 +386,7 @@ void LLToolGrab::startGrab() mDragStartPointGlobal = grab_start_global; mDragStartFromCamera = grab_start_global - gAgentCamera.getCameraPositionGlobal(); - LLMessageSystem *msg = gMessageSystem; - msg->newMessageFast(_PREHASH_ObjectGrab); - msg->nextBlockFast(_PREHASH_AgentData); - msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); - msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); - msg->nextBlockFast(_PREHASH_ObjectData); - msg->addU32Fast(_PREHASH_LocalID, objectp->mLocalID); - msg->addVector3Fast(_PREHASH_GrabOffset, grab_offset ); - msg->nextBlock("SurfaceInfo"); - msg->addVector3("UVCoord", LLVector3(mGrabPick.mUVCoords)); - msg->addVector3("STCoord", LLVector3(mGrabPick.mSTCoords)); - msg->addS32Fast(_PREHASH_FaceIndex, mGrabPick.mObjectFace); - msg->addVector3("Position", mGrabPick.mIntersection); - msg->addVector3("Normal", mGrabPick.mNormal); - msg->addVector3("Binormal", mGrabPick.mBinormal); - msg->sendMessage( objectp->getRegion()->getHost()); + send_ObjectGrab_message(objectp, mGrabPick, grab_offset); mGrabOffsetFromCenterInitial = grab_offset; mGrabHiddenOffsetFromCamera = mDragStartFromCamera; @@ -1036,28 +1020,12 @@ void LLToolGrab::stopGrab() } // Next, send messages to simulator - LLMessageSystem *msg = gMessageSystem; switch(mMode) { case GRAB_ACTIVE_CENTER: case GRAB_NONPHYSICAL: case GRAB_LOCKED: - msg->newMessageFast(_PREHASH_ObjectDeGrab); - msg->nextBlockFast(_PREHASH_AgentData); - msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); - msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); - msg->nextBlockFast(_PREHASH_ObjectData); - msg->addU32Fast(_PREHASH_LocalID, objectp->mLocalID); - msg->nextBlock("SurfaceInfo"); - msg->addVector3("UVCoord", LLVector3(pick.mUVCoords)); - msg->addVector3("STCoord", LLVector3(pick.mSTCoords)); - msg->addS32Fast(_PREHASH_FaceIndex, pick.mObjectFace); - msg->addVector3("Position", pick.mIntersection); - msg->addVector3("Normal", pick.mNormal); - msg->addVector3("Binormal", pick.mBinormal); - - msg->sendMessage(objectp->getRegion()->getHost()); - + send_ObjectDeGrab_message(objectp, pick); mVerticalDragging = FALSE; break; @@ -1109,3 +1077,66 @@ LLVector3d LLToolGrab::getGrabPointGlobal() return gAgent.getPositionGlobal(); } } + + +void send_ObjectGrab_message(LLViewerObject* object, const LLPickInfo & pick, const LLVector3 &grab_offset) +{ + if (!object) return; + + LLMessageSystem *msg = gMessageSystem; + + msg->newMessageFast(_PREHASH_ObjectGrab); + msg->nextBlockFast( _PREHASH_AgentData); + msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); + msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); + msg->nextBlockFast( _PREHASH_ObjectData); + msg->addU32Fast( _PREHASH_LocalID, object->mLocalID); + msg->addVector3Fast(_PREHASH_GrabOffset, grab_offset); + msg->nextBlock("SurfaceInfo"); + msg->addVector3("UVCoord", LLVector3(pick.mUVCoords)); + msg->addVector3("STCoord", LLVector3(pick.mSTCoords)); + msg->addS32Fast(_PREHASH_FaceIndex, pick.mObjectFace); + msg->addVector3("Position", pick.mIntersection); + msg->addVector3("Normal", pick.mNormal); + msg->addVector3("Binormal", pick.mBinormal); + msg->sendMessage( object->getRegion()->getHost()); + + /* Diagnostic code + llinfos << "mUVCoords: " << pick.mUVCoords + << ", mSTCoords: " << pick.mSTCoords + << ", mObjectFace: " << pick.mObjectFace + << ", mIntersection: " << pick.mIntersection + << ", mNormal: " << pick.mNormal + << ", mBinormal: " << pick.mBinormal + << llendl; + + llinfos << "Avatar pos: " << gAgent.getPositionAgent() << llendl; + llinfos << "Object pos: " << object->getPosition() << llendl; + */ +} + + +void send_ObjectDeGrab_message(LLViewerObject* object, const LLPickInfo & pick) +{ + if (!object) return; + + LLMessageSystem *msg = gMessageSystem; + + msg->newMessageFast(_PREHASH_ObjectDeGrab); + msg->nextBlockFast(_PREHASH_AgentData); + msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); + msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); + msg->nextBlockFast(_PREHASH_ObjectData); + msg->addU32Fast(_PREHASH_LocalID, object->mLocalID); + msg->nextBlock("SurfaceInfo"); + msg->addVector3("UVCoord", LLVector3(pick.mUVCoords)); + msg->addVector3("STCoord", LLVector3(pick.mSTCoords)); + msg->addS32Fast(_PREHASH_FaceIndex, pick.mObjectFace); + msg->addVector3("Position", pick.mIntersection); + msg->addVector3("Normal", pick.mNormal); + msg->addVector3("Binormal", pick.mBinormal); + msg->sendMessage(object->getRegion()->getHost()); +} + + + diff --git a/indra/newview/lltoolgrab.h b/indra/newview/lltoolgrab.h index 61e3fcb8b2..06a3b662c8 100644 --- a/indra/newview/lltoolgrab.h +++ b/indra/newview/lltoolgrab.h @@ -39,6 +39,13 @@ class LLTextBox; class LLViewerObject; class LLPickInfo; + +// Message utilities +void send_ObjectGrab_message(LLViewerObject* object, const LLPickInfo & pick, const LLVector3 &grab_offset); +void send_ObjectDeGrab_message(LLViewerObject* object, const LLPickInfo & pick); + + + class LLToolGrab : public LLTool, public LLSingleton<LLToolGrab> { public: diff --git a/indra/newview/llviewerchat.cpp b/indra/newview/llviewerchat.cpp index e06fe7bda0..93687dbd5f 100644 --- a/indra/newview/llviewerchat.cpp +++ b/indra/newview/llviewerchat.cpp @@ -80,6 +80,10 @@ void LLViewerChat::getChatColor(const LLChat& chat, LLColor4& r_color) { r_color = LLUIColorTable::instance().getColor("llOwnerSayChatColor"); } + else if ( chat.mChatType == CHAT_TYPE_DIRECT ) + { + r_color = LLUIColorTable::instance().getColor("DirectChatColor"); + } else { r_color = LLUIColorTable::instance().getColor("ObjectChatColor"); @@ -146,6 +150,10 @@ void LLViewerChat::getChatColor(const LLChat& chat, std::string& r_color_name, F { r_color_name = "llOwnerSayChatColor"; } + else if ( chat.mChatType == CHAT_TYPE_DIRECT ) + { + r_color_name = "DirectChatColor"; + } else { r_color_name = "ObjectChatColor"; diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index 79c6c8db75..1e53274cd6 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -62,6 +62,7 @@ #include "llmutelist.h" #include "llpanelprofile.h" #include "llappviewer.h" +#include "lllogininstance.h" //#include "llfirstuse.h" #include "llwindow.h" @@ -2343,6 +2344,65 @@ BOOL LLViewerMediaImpl::handleMouseUp(S32 x, S32 y, MASK mask) } ////////////////////////////////////////////////////////////////////////////////////////// +void LLViewerMediaImpl::updateJavascriptObject() +{ + if ( mMediaSource ) + { + // flag to expose this information to internal browser or not. + bool expose_javascript_object = gSavedSettings.getBOOL("BrowserEnableJSObject"); + mMediaSource->jsExposeObjectEvent( expose_javascript_object ); + + // indicate if the values we have are valid (currently do this blanket-fashion for + // everything depending on whether you are logged in or not - this may require a + // more granular approach once variables are added that ARE valid before login + bool logged_in = LLLoginInstance::getInstance()->authSuccess(); + mMediaSource->jsValuesValidEvent( logged_in ); + + // current location within a region + LLVector3 agent_pos = gAgent.getPositionAgent(); + double x = agent_pos.mV[ VX ]; + double y = agent_pos.mV[ VY ]; + double z = agent_pos.mV[ VZ ]; + mMediaSource->jsAgentLocationEvent( x, y, z ); + + // current location within the grid + LLVector3d agent_pos_global = gAgent.getLastPositionGlobal(); + double global_x = agent_pos_global.mdV[ VX ]; + double global_y = agent_pos_global.mdV[ VY ]; + double global_z = agent_pos_global.mdV[ VZ ]; + mMediaSource->jsAgentGlobalLocationEvent( global_x, global_y, global_z ); + + // current agent orientation + double rotation = atan2( gAgent.getAtAxis().mV[VX], gAgent.getAtAxis().mV[VY] ); + double angle = rotation * RAD_TO_DEG; + if ( angle < 0.0f ) angle = 360.0f + angle; // TODO: has to be a better way to get orientation! + mMediaSource->jsAgentOrientationEvent( angle ); + + // current region agent is in + std::string region_name(""); + LLViewerRegion* region = gAgent.getRegion(); + if ( region ) + { + region_name = region->getName(); + }; + mMediaSource->jsAgentRegionEvent( region_name ); + + // language code the viewer is set to + mMediaSource->jsAgentLanguageEvent( LLUI::getLanguage() ); + + // maturity setting the agent has selected + if ( gAgent.prefersAdult() ) + mMediaSource->jsAgentMaturityEvent( "GMA" ); // Adult means see adult, mature and general content + else + if ( gAgent.prefersMature() ) + mMediaSource->jsAgentMaturityEvent( "GM" ); // Mature means see mature and general content + else + if ( gAgent.prefersPG() ) + mMediaSource->jsAgentMaturityEvent( "G" ); // PG means only see General content + } +} + +////////////////////////////////////////////////////////////////////////////////////////// std::string LLViewerMediaImpl::getName() const { if (mMediaSource) @@ -2640,6 +2700,9 @@ void LLViewerMediaImpl::update() { updateVolume(); + // TODO: this is updated every frame - is this bad? + updateJavascriptObject(); + // If we didn't just create the impl, it may need to get cookie updates. if(!sUpdatedCookies.empty()) { diff --git a/indra/newview/llviewermedia.h b/indra/newview/llviewermedia.h index e2e342cc45..a70c6f4887 100644 --- a/indra/newview/llviewermedia.h +++ b/indra/newview/llviewermedia.h @@ -339,7 +339,10 @@ public: LLVOVolume *getSomeObject(); void setUpdated(BOOL updated) ; BOOL isUpdated() ; - + + // updates the javascript object in the embedded browser with viewer values + void updateJavascriptObject(); + // Updates the "interest" value in this object void calculateInterest(); F64 getInterest() const { return mInterest; }; diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 2ed208bad1..41d8b57f36 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -106,6 +106,7 @@ #include "llappearancemgr.h" #include "lltrans.h" #include "lleconomy.h" +#include "lltoolgrab.h" #include "boost/unordered_map.hpp" using namespace LLVOAvatarDefines; @@ -2420,50 +2421,23 @@ class LLObjectEnableReportAbuse : public view_listener_t } }; + void handle_object_touch() { - LLViewerObject* object = LLSelectMgr::getInstance()->getSelection()->getPrimaryObject(); - if (!object) return; - - LLPickInfo pick = LLToolPie::getInstance()->getPick(); + LLViewerObject* object = LLSelectMgr::getInstance()->getSelection()->getPrimaryObject(); + if (!object) return; - LLMessageSystem *msg = gMessageSystem; + LLPickInfo pick = LLToolPie::getInstance()->getPick(); - msg->newMessageFast(_PREHASH_ObjectGrab); - msg->nextBlockFast( _PREHASH_AgentData); - msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); - msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); - msg->nextBlockFast( _PREHASH_ObjectData); - msg->addU32Fast( _PREHASH_LocalID, object->mLocalID); - msg->addVector3Fast(_PREHASH_GrabOffset, LLVector3::zero ); - msg->nextBlock("SurfaceInfo"); - msg->addVector3("UVCoord", LLVector3(pick.mUVCoords)); - msg->addVector3("STCoord", LLVector3(pick.mSTCoords)); - msg->addS32Fast(_PREHASH_FaceIndex, pick.mObjectFace); - msg->addVector3("Position", pick.mIntersection); - msg->addVector3("Normal", pick.mNormal); - msg->addVector3("Binormal", pick.mBinormal); - msg->sendMessage( object->getRegion()->getHost()); - - // *NOTE: Hope the packets arrive safely and in order or else - // there will be some problems. - // *TODO: Just fix this bad assumption. - msg->newMessageFast(_PREHASH_ObjectDeGrab); - msg->nextBlockFast(_PREHASH_AgentData); - msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); - msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); - msg->nextBlockFast(_PREHASH_ObjectData); - msg->addU32Fast(_PREHASH_LocalID, object->mLocalID); - msg->nextBlock("SurfaceInfo"); - msg->addVector3("UVCoord", LLVector3(pick.mUVCoords)); - msg->addVector3("STCoord", LLVector3(pick.mSTCoords)); - msg->addS32Fast(_PREHASH_FaceIndex, pick.mObjectFace); - msg->addVector3("Position", pick.mIntersection); - msg->addVector3("Normal", pick.mNormal); - msg->addVector3("Binormal", pick.mBinormal); - msg->sendMessage(object->getRegion()->getHost()); + // *NOTE: Hope the packets arrive safely and in order or else + // there will be some problems. + // *TODO: Just fix this bad assumption. + send_ObjectGrab_message(object, pick, LLVector3::zero); + send_ObjectDeGrab_message(object, pick); } + + static void init_default_item_label(const std::string& item_name) { boost::unordered_map<std::string, LLStringExplicit>::iterator it = sDefaultItemLabels.find(item_name); diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index fdd1199b78..3832be727f 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -3213,7 +3213,6 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data) if (is_audible) { BOOL visible_in_chat_bubble = FALSE; - std::string verb; color.setVec(1.f,1.f,1.f,1.f); msg->getStringFast(_PREHASH_ChatData, _PREHASH_Message, mesg); @@ -3262,18 +3261,19 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data) } else { + chat.mText = ""; switch(chat.mChatType) { case CHAT_TYPE_WHISPER: - verb = LLTrans::getString("whisper") + " "; + chat.mText = LLTrans::getString("whisper") + " "; break; case CHAT_TYPE_DEBUG_MSG: case CHAT_TYPE_OWNER: case CHAT_TYPE_NORMAL: - verb = ""; + case CHAT_TYPE_DIRECT: break; case CHAT_TYPE_SHOUT: - verb = LLTrans::getString("shout") + " "; + chat.mText = LLTrans::getString("shout") + " "; break; case CHAT_TYPE_START: case CHAT_TYPE_STOP: @@ -3281,13 +3281,9 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data) break; default: LL_WARNS("Messaging") << "Unknown type " << chat.mChatType << " in chat!" << LL_ENDL; - verb = ""; break; } - - chat.mText = ""; - chat.mText += verb; chat.mText += mesg; } diff --git a/indra/newview/llvocache.cpp b/indra/newview/llvocache.cpp index c605ddb1c8..bbb19a63f1 100644 --- a/indra/newview/llvocache.cpp +++ b/indra/newview/llvocache.cpp @@ -287,8 +287,6 @@ LLVOCache::~LLVOCache() void LLVOCache::setDirNames(ELLPath location) { - std::string delem = gDirUtilp->getDirDelimiter(); - mHeaderFileName = gDirUtilp->getExpandedFilename(location, object_cache_dirname, header_filename); mObjectCacheDirName = gDirUtilp->getExpandedFilename(location, object_cache_dirname); } @@ -341,8 +339,7 @@ void LLVOCache::removeCache(ELLPath location) llinfos << "about to remove the object cache due to settings." << llendl ; - std::string delem = gDirUtilp->getDirDelimiter(); - std::string mask = delem + "*"; + std::string mask = "*"; std::string cache_dir = gDirUtilp->getExpandedFilename(location, object_cache_dirname); llinfos << "Removing cache at " << cache_dir << llendl; gDirUtilp->deleteFilesInDir(cache_dir, mask); //delete all files @@ -363,8 +360,7 @@ void LLVOCache::removeCache() llinfos << "about to remove the object cache due to some error." << llendl ; - std::string delem = gDirUtilp->getDirDelimiter(); - std::string mask = delem + "*"; + std::string mask = "*"; llinfos << "Removing cache at " << mObjectCacheDirName << llendl; gDirUtilp->deleteFilesInDir(mObjectCacheDirName, mask); diff --git a/indra/newview/skins/default/colors.xml b/indra/newview/skins/default/colors.xml index d02662681b..973df6998a 100644 --- a/indra/newview/skins/default/colors.xml +++ b/indra/newview/skins/default/colors.xml @@ -760,7 +760,7 @@ <color name="MenuBarProjectBgColor" reference="MdBlue" /> - + <color name="MeshImportTableNormalColor" value="1 1 1 1"/> @@ -768,6 +768,9 @@ name="MeshImportTableHighlightColor" value="0.2 0.8 1 1"/> + <color + name="DirectChatColor" + reference="LtOrange" /> <!-- Generic color names (legacy) --> <color diff --git a/indra/newview/skins/default/xui/da/language_settings.xml b/indra/newview/skins/default/xui/da/language_settings.xml index 3e46f69af1..0e3cbfd2d2 100644 --- a/indra/newview/skins/default/xui/da/language_settings.xml +++ b/indra/newview/skins/default/xui/da/language_settings.xml @@ -4,6 +4,7 @@ <!-- Locale Information --> <string name="MicrosoftLocale">danish</string> + <string name="MacLocale">da_DK.UTF-8</string> <string name="DarwinLocale">da_DK.UTF-8</string> <string name="LinuxLocale">da_DK.UTF-8</string> diff --git a/indra/newview/skins/default/xui/de/floater_postcard.xml b/indra/newview/skins/default/xui/de/floater_postcard.xml index 49dcd4af51..28af0183cb 100644 --- a/indra/newview/skins/default/xui/de/floater_postcard.xml +++ b/indra/newview/skins/default/xui/de/floater_postcard.xml @@ -1,36 +1,36 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Postcard" title="FOTO EMAILEN">
- <text name="to_label">
- E-Mail des Empfängers:
- </text>
- <text name="from_label">
- Ihre E-Mail:
- </text>
- <text name="name_label">
- Ihr Name:
- </text>
- <text name="subject_label">
- Betreff:
- </text>
- <line_editor label="Betreff hier eingeben." name="subject_form"/>
- <text name="msg_label">
- Nachricht:
- </text>
- <text_editor name="msg_form">
- Nachricht hier eingeben.
- </text_editor>
- <text name="fine_print">
- Wenn sich der Empfänger bei SL anmeldet, erhalten Sie einen Empfehlungsbonus.
- </text>
- <button label="Abbrechen" name="cancel_btn"/>
- <button label="Senden" name="send_btn"/>
- <text name="default_subject">
- Postkarte aus [SECOND_LIFE].
- </text>
- <text name="default_message">
- Sehen Sie hier!
- </text>
- <string name="upload_message">
- Wird gesendet...
- </string>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Postcard" title="FOTO EMAILEN"> + <text name="to_label"> + E-Mail des Empfängers: + </text> + <text name="from_label"> + Ihre E-Mail: + </text> + <text name="name_label"> + Ihr Name: + </text> + <text name="subject_label"> + Betreff: + </text> + <line_editor label="Betreff hier eingeben." name="subject_form"/> + <text name="msg_label"> + Nachricht: + </text> + <text_editor name="msg_form"> + Nachricht hier eingeben. + </text_editor> + <text name="fine_print"> + Wenn sich der Empfänger bei SL anmeldet, erhalten Sie einen Empfehlungsbonus. + </text> + <button label="Abbrechen" name="cancel_btn"/> + <button label="Senden" name="send_btn"/> + <text name="default_subject"> + Postkarte aus [SECOND_LIFE]. + </text> + <text name="default_message"> + Sehen Sie hier! + </text> + <string name="upload_message"> + Wird gesendet... + </string> +</floater> diff --git a/indra/newview/skins/default/xui/de/language_settings.xml b/indra/newview/skins/default/xui/de/language_settings.xml index d54f548fe1..f9346eef7d 100644 --- a/indra/newview/skins/default/xui/de/language_settings.xml +++ b/indra/newview/skins/default/xui/de/language_settings.xml @@ -4,6 +4,7 @@ <!-- Locale Information --> <string name="MicrosoftLocale">german</string> + <string name="MacLocale">de_DE.UTF-8</string> <string name="DarwinLocale">de_DE.UTF-8</string> <string name="LinuxLocale">de_DE.UTF-8</string> diff --git a/indra/newview/skins/default/xui/en/floater_model_preview.xml b/indra/newview/skins/default/xui/en/floater_model_preview.xml index a24306456a..dce55dae12 100644 --- a/indra/newview/skins/default/xui/en/floater_model_preview.xml +++ b/indra/newview/skins/default/xui/en/floater_model_preview.xml @@ -1,547 +1,547 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater can_close="true" can_drag_on_left="false" can_minimize="false"
- can_resize="true" height="550" min_height="550" min_width="620"
- name="Model Preview" title="Upload Model" width="620">
-
- <string name="status_idle">Idle</string>
- <string name="status_reading_file">Loading...</string>
- <string name="status_generating_meshes">Generating Meshes...</string>
- <string name="status_vertex_number_overflow">Error: Vertex number is more than 65534, aborted!</string>
- <string name="high">High</string>
- <string name="medium">Medium</string>
- <string name="low">Low</string>
- <string name="lowest">Lowest</string>
- <string name="mesh_status_good">Ship it!</string>
- <string name="mesh_status_na">N/A</string>
- <string name="mesh_status_none">None</string>
- <string name="mesh_status_submesh_mismatch">Levels of detail have a different number of textureable faces.</string>
- <string name="mesh_status_mesh_mismatch">Levels of detail have a different number of mesh instances.</string>
- <string name="mesh_status_too_many_vertices">Level of detail has too many vertices.</string>
- <string name="mesh_status_missing_lod">Missing required level of detail.</string>
- <string name="layer_all">All</string> <!-- Text to display in physics layer combo box for "all layers" -->
- <string name="decomposing">Analyzing...</string>
- <string name="simplifying">Simplifying...</string>
-
-
- <text left="15" bottom="25" follows="top|left" height="15" name="name_label">
- Name:
- </text>
- <line_editor bottom_delta="20" follows="top|left|right" height="19" max_length_bytes="64"
- name="description_form" prevalidate_callback="ascii" width="290" />
-
- <text bottom_delta="20" left="15" follows="left|top" height="15" name="lod_label">
- Preview:
- </text>
- <combo_box bottom_delta="20" follows="left|top" height="18"
- name="preview_lod_combo" width="240" tool_tip="LOD to view in preview render">
- <combo_item name="high">
- Level of Detail: High
- </combo_item>
- <combo_item name="medium">
- Level of Detail: Medium
- </combo_item>
- <combo_item name="low">
- Level of Detail: Low
- </combo_item>
- <combo_item name="lowest">
- Level of Detail: Lowest
- </combo_item>
- </combo_box>
-
- <menu_button follows="top|left"
- image_hover_unselected="Toolbar_Left_Over"
- image_overlay="OptionsMenu_Off"
- image_selected="Toolbar_Left_Selected"
- image_unselected="Toolbar_Left_Off"
- layout="topleft"
- left_pad="5"
- name="options_gear_btn"
- width="31"
- height="25"/>
- <!-- Placeholder panel for 3D preview render -->
- <panel
- name="preview_panel"
- left="15"
- bevel_style="none"
- border_style="line"
- border="true"
- width="290"
- height="290"
- follows="all"/>
-
- <text bottom_delta="25" left="25" width="100" follows="bottom|left">Upload Details</text>
- <panel top_pad="5" border="true" left="15" width="290" height="70" follows="bottom|left"
- bevel_style="none" bg_alpha_color="0 0 0 0" bg_opaque_color="0 0 0 0.3">
- <text left="25" follows="bottom|left" width="140" height="15" name="streaming cost">
- Resource Cost: [COST]
- </text>
- <text left="25" top_pad="5" width="140" follows="bottom|left" height="15" name="physics cost">
- Physics Cost: [COST]
- </text>
- <text left="25" top_pad="5" follows="bottom|left" height="15" name="upload fee">
- Upload Fee: N/A
- </text>
- </panel>
-
- <text left="10" bottom="540" width="290" height="15" follows="bottom|left|right" name="status">[STATUS]</text>
-
-
- <button bottom="540" left="300" follows="bottom|right" height="20" label="Defaults"
- width="80" name="reset_btn" tool_tip="Reset to defaults"/>
- <button bottom="540" left="430" follows="bottom|right" height="20" label="Upload"
- width="80" name="ok_btn" tool_tip="Upload to simulator"/>
- <button left_pad="10" follows="right|bottom" height="20" width="80" label="Cancel" name="cancel_btn"/>
-
- <tab_container
- follows="right|top|bottom"
- top="15"
- left="310"
- height="470"
- width="300"
- name="import_tab"
- border="true"
- tab_position="top">
-
- <!-- LOD PANEL -->
- <panel
- border="true"
- label="Level of Detail"
- name="lod_panel">
-
- <text left="10" width="240" bottom="20" height="15" follows="left|top" name="lod_table_header">
- Select Level of Detail:
- </text>
-
- <text valign="center" halign="center" bg_visible="true" bottom_delta="16" left="75" width="65" height="18" follows="left|top" value="Triangles"/>
- <text valign="center" halign="center" bg_visible="true" left_pad="0" width="65" height="18" follows="left|top" value="Vertices"/>
- <text valign="center" halign="center" left_pad="0" width="65" bg_visible="true" height="18" follows="left|top" value="Status"/>
-
- <text valign="center" halign="center" bg_visible="true" name="high_label" left="10" top_pad="0" width="65" height="18" follows="left|top" value="High"/>
- <text valign="center" halign="center" bg_visible="true" name="high_triangles" left_pad="0" width="65" height="18" follows="left|top" value="0"/>
- <text valign="center" halign="center" bg_visible="true" name="high_vertices" left_pad="0" width="65" height="18" follows="left|top" value="0"/>
- <text valign="center" halign="center" bg_visible="true" name="high_status" left_pad="0" width="65" height="18" follows="left|top" value=""/>
- <icon height="16" width="16" image_name="lag_status_critical.tga" mouse_opaque="true" name="status_icon_high" left_delta="20" top_delta="0" />
-
- <text valign="center" halign="center" bg_visible="true" name="medium_label" left="10" top_pad="0" width="65" height="18" follows="left|top" value="Medium"/>
- <text valign="center" halign="center" bg_visible="true" name="medium_triangles" left_pad="0" width="65" height="18" follows="left|top" value="0"/>
- <text valign="center" halign="center" bg_visible="true" name="medium_vertices" left_pad="0" width="65" height="18" follows="left|top" value="0"/>
- <text valign="center" halign="center" bg_visible="true" name="medium_status" left_pad="0" width="65" height="18" follows="left|top" value=""/>
- <icon height="16" width="16" image_name="lag_status_critical.tga" mouse_opaque="true" name="status_icon_medium" left_delta="20" top_delta="0" />
-
- <text valign="center" halign="center" bg_visible="true" name="low_label" left="10" top_pad="0" width="65" height="18" follows="left|top" value="Low"/>
- <text valign="center" halign="center" bg_visible="true" name="low_triangles" left_pad="0" width="65" height="18" follows="left|top" value="0"/>
- <text valign="center" halign="center" bg_visible="true" name="low_vertices" left_pad="0" width="65" height="18" follows="left|top" value="0"/>
- <text valign="center" halign="center" bg_visible="true" name="low_status" left_pad="0" width="65" height="18" follows="left|top" value=""/>
- <icon height="16" width="16" image_name="lag_status_critical.tga" mouse_opaque="true" name="status_icon_low" left_delta="20" top_delta="0" />
-
- <text valign="center" halign="center" bg_visible="true" name="lowest_label" left="10" top_pad="0" width="65" height="18" follows="left|top" value="Lowest"/>
- <text valign="center" halign="center" bg_visible="true" name="lowest_triangles" left_pad="0" width="65" height="18" follows="left|top" value="0"/>
- <text valign="center" halign="center" bg_visible="true" name="lowest_vertices" left_pad="0" width="65" height="18" follows="left|top" value="0"/>
- <text valign="center" halign="center" bg_visible="true" name="lowest_status" left_pad="0" width="65" height="18" follows="left|top" value=""/>
- <icon height="16" width="16" image_name="lag_status_critical.tga" mouse_opaque="true" name="status_icon_lowest" left_delta="20" top_delta="0" />
-
- <text left="10" width="240" height="15" top_pad="15" follows="left|top" name="lod_table_footer">
- Level of Detail: [DETAIL]
- </text>
-
- <icon height="16" width="16" left="20" follows="left|top" name="lod_status_message_icon"/>
- <text left_pad="5" width="200" height="28" follows="left|top" top_pad="-15" wrap="true" name="lod_status_message_text"/>
-
- <text top_pad="-3" left="10" height="15" follows="left|top">
- Mesh
- </text>
-
- <radio_group follows="top|left" height="210" left="30" name="lod_file_or_limit" width="240" value="lod_from_file">
- <radio_item bottom="195" label="Load from file" name="lod_from_file"/>
- <radio_item bottom="150" label="Auto generate" name="lod_auto_generate"/>
- <radio_item bottom="0" label="None" name="lod_none"/>
- </radio_group>
-
- <line_editor follows="left|top" bottom_delta="-170" width="140" left="45" value="" name="lod_file" height="20"/>
- <button bottom_delta="3" name="lod_browse" label="Browse..." left_pad="5" follows="left|top" width="70" height="25"/>
-
- <combo_box follows="top|left" name="lod_mode" top_pad="22" width="100" left="45" height="20">
- <combo_item name="triangle_limit">
- Triangle Limit
- </combo_item>
- <combo_item name="error_threshold">
- Error Threshold
- </combo_item>
- </combo_box>
- <spinner follows="top|left" name="lod_triangle_limit" increment="10" left_pad="5" height="20" width="100" decimal_digits="0" enabled="true"/>
- <spinner left_delta="0" bottom_delta="0" increment="0.01" follows="top|left" name="lod_error_threshold" min_val="0" max_val="100" height="20" width="100" decimal_digits="3" visible="false" enabled="true"/>
-
- <text follows="top|left" name="build_operator_text" left="45" top_pad="10" width="100" height="15">
- Build Operator:
- </text>
- <text follows="top|left" name="queue_mode_text" left_pad="5" width="100" height="15">
- Queue Mode:
- </text>
- <combo_box follows="top|left" name="build_operator" top_pad="5" left="45" width="100" height="20">
- <combo_item name="edge_collapse">
- Edge Collapse
- </combo_item>
- <combo_item name="half_edge_collapse">
- Half Edge Collapse
- </combo_item>
- </combo_box>
-
- <combo_box follows="top|left" name="queue_mode" left_pad="5" width="100" height="20">
- <combo_item name="greedy">
- Greedy
- </combo_item>
- <combo_item name="lazy">
- Lazy
- </combo_item>
- <combo_item name="independent">
- Independent
- </combo_item>
- </combo_box>
-
- <text top_pad="10" name="border_mode_text" left="45" follows="left|top" width="100" height="15">
- Border Mode:
- </text>
-
- <text left_pad="5" name="share_tolderance_text" follows="left|top" width="100" height="15">
- Share Tolerance:
- </text>
-
- <combo_box follows="left|top" left="45" height="20" name="border_mode" width="100">
- <combo_item name="border_unlock">
- Unlock
- </combo_item>
- <combo_item name="border_lock">
- Lock
- </combo_item>
- </combo_box>
- <spinner follows="left|top" name="share_tolerance" left_pad="5" width="100" decimal_digits="5" initial_value="0.00001" height="20"/>
-
- <text left="10" top_pad="35" follows="top|left" width="240" height="15">
- Generate Normals
- </text>
- <text left="35" top_pad="5" follows="top|left" width="100" height="15" name="crease_label">
- Crease Angle:
- </text>
- <spinner follows="top|left" left_pad="5" min_val="0" max_val="180" value="75" width="60" height="20" name="crease_angle"/>
- </panel>
-
- <!-- PANEL -->
- <panel
- border="true"
- label="Physics"
- name="physics_panel">
-
- <!-- PHYSICS GEOMETRY-->
- <panel
- follows="top|left"
- name="physics geometry"
- left="0"
- top="0"
- width="300"
- height="65"
- visible="true"
- border="true"
- bevel_style="none" bg_alpha_color="0 0 0 0" bg_opaque_color="0 0 0 0.3">
-
- <radio_group follows="top|left" top="10" width="240" height="40" name="physics_load_radio" value="physics_load_from_file">
- <radio_item bottom="0" name="physics_load_from_file" label="File:"/>
- <radio_item bottom="23" name="physics_use_lod" label="Use Level of Detail:"/>
- </radio_group>
-
- <combo_box left="180" top="10" follows="left|top" height="18"
- name="physics_lod_combo" width="110" tool_tip="LOD to use for physics shape">
- <combo_item name="physics_lowest">
- Lowest
- </combo_item>
- <combo_item name="physics_low">
- Low
- </combo_item>
- <combo_item name="physics_medium">
- Medium
- </combo_item>
- <combo_item name="physics_high">
- High
- </combo_item>
- </combo_box>
-
- <line_editor follows="left|top" top_pad="5" width="140" left="60" value="" name="physics_file" height="20"/>
- <button left_pad="10" name="physics_browse" label="Browse..." follows="left|top" width="70" height="20"/>
-
- <!--
- <check_box name="physics_optimize" follows="left|top" width="130" left="10" top_pad="5" height="20" label="Optimize"/>
- <check_box name="physics_use_hull" follows="left|top" width="130" left_pad="5" height="20" label="Use Convex Hull"/>
- -->
- </panel>
-
-
- <!-- PHYSICS ANALYSIS-->
- <panel
- follows="top|left"
- name="physics analysis"
- top_pad="0"
- left="0"
- width="300"
- height="130"
- visible="true"
- border="true"
- bevel_style="none" bg_alpha_color="0 0 0 0" bg_opaque_color="0 0 0 0.3">
-
- <text follows="left|top" bottom="40" height="30" left="10" font="SansSerifBig">
- Step 1: Analysis
- </text>
-
- <text top_pad="5" width="50" follows="top|left" height="15">
- Method:
- </text>
- <combo_box name="Method" follows="top|left" left_pad="5" bottom_delta="2" height="20" width="80"/>
- <text left="160" bottom_delta="-2" width="50" follows="top|left" height="15">
- Quality:
- </text>
- <combo_box name="Decompose Quality" bottom_delta="2" follows="top|left" left_pad="5" height="20" width="80"/>
-
- <slider name="Smooth" left="10" width="280" follows="top|left" top_pad="10" height="20" label="Smooth:"/>
-
- <check_box name="Close Holes (Slow)" follows="top|left" top_pad="10" height="15" label="Close Holes (slow)"/>
-
- <button left="200" bottom_delta="0" width="90" follows="top|left" label="Analyze" name="Decompose" height="20"/>
- <button left="200" bottom_delta="0" width="90" follows="top|left" label="Cancel" name="decompose_cancel" visble="false" height="20"/>
- </panel>
-
-
- <!-- PHYSICS SIMPLIFICATION -->
- <panel
- follows="top|left"
- name="physics simplification"
- left="0"
- top_pad="0"
- width="300"
- height="150"
- visible="true"
- border="true"
- bevel_style="none" bg_alpha_color="0 0 0 0" bg_opaque_color="0 0 0 0.3">
-
- <text follows="left|top" bottom="40" height="30" left="10" font="SansSerifBig">
- Step 2: Simplification
- </text>
-
- <text left="10" top_pad="5" height="15" width="140" follows="top|left">
- Method:
- </text>
-
- <combo_box left_pad="5" height="20" width="120" follows="top|left" name="Simplify Method"/>
-
- <slider left="10" name="Combine Quality" label="Passes:" label_width="120" width="270" follows="top|left" top_pad="10" height="20"/>
- <slider name="Detail Scale" label="Detail Scale:" label_width="120" width="270" follows="top|left" top_pad="10" height="20"/>
- <slider name="Retain%" label="Retain:" label_width="120" width="270" follows="top|left" bottom_delta="0" left_delta="0" visible="false" height="20"/>
- <button left="190" width="90" follows="top|left" label="Simplify" name="Simplify" height="20"/>
- <button left="190" bottom_delta="0" width="90" follows="top|left" label="Cancel" name="simplify_cancel" height="20"/>
-
- </panel>
-
- <!-- INFO PANEL -->
- <panel
- left="0"
- top_pad="0"
- width="300"
- height="100"
- follows="left|top"
- name="physics info"
- visible="true"
- border="true"
- bevel_style="none" bg_alpha_color="0 0 0 0" bg_opaque_color="0 0 0 0.3">
-
- <slider name="physics_explode" follows="top|left" top="10" left="10" label="Preview Spread:" min_val="0.0" max_val="3.0" height="20" width="280"/>
-
- <text follows="top|left" name="physics_triangles" top_pad="10" height="15" left="10">
- Triangles: [TRIANGLES]
- </text>
- <text follows="top|left" name="physics_points" top_pad="5" height="15">
- Vertices: [POINTS]
- </text>
- <text follows="top|left" name="physics_hulls" top_pad="5" height="15">
- Hulls: [HULLS]
- </text>
-
-
- </panel>
- </panel>
-
- <!-- MODIFIERS PANEL -->
- <panel
- border="true"
- label="Modifiers"
- name="modifiers_panel">
- <text left="10" width="90" bottom="30" follows="top|left" height="15">
- Scale:
- </text>
- <text left_pad="5" width="140" follows="top|left" height="15">
- Dimensions:
- </text>
-
- <spinner left="10" height="20" follows="top|left" width="80" top_pad="5" value="1.0" min_val="0.01" max_val="64.0" name="import_scale"/>
-
- <text left_pad="20" height="15" name="import_dimensions" follows="top|left">
- [X] x [Y] x [Z] m
- </text>
-
- <text left="10" top_pad="20" follows="top|left" height="15">
- Include:
- </text>
-
- <check_box top_pad="5" name="upload_textures" height="15" follows="top|left" label="Textures"/>
- <check_box top_pad="5" name="upload_skin" height="15" follows="top|left" label="Skin weight"/>
- <check_box top_pad="5" left="20" name="upload_joints" height="15" follows="top|left" label="Joint positions"/>
-
- <text left="10" top_pad="4" width="90" bottom="30" follows="top|left" height="15">
- Pelvis Z Offset:
- </text>
-
- <spinner left="10" top_pad="4" height="20" follows="top|left" width="80" value="0.0" min_val="-3.00" max_val="3.0" name="pelvis_offset"/>
-
- </panel>
- </tab_container>
-
- <!--
- <button bottom_delta="0" left="10" width="120" name="auto fill" label="Generate LOD" tool_tip="Automatically generate levels of detail"/>
- <button bottom_delta="0" left="140" width="120" name="smooth normals" label="Generate Normals" tool_tip="Regenerate normals based on mesh shape"/>
- <button bottom_delta="0" left="260" width="120" name="consolidate" label="Consolidate" tool_tip="Combine similar submeshes (reduces number of submeshes)"/>
- <button bottom_delta="30" left="260" width="120" name="scrub materials" label="Scrub Materials" tool_tip="Remove all material information (clear textures, set all colors to white)."/>
-
- <spinner bottom_delta="0" left="140" width="120" height="16" initial_value="75" label_width="60" name="edge threshold" decimal_digits="0" min_val="0" max_val="180" increment="5" label="Hard Angle" tool_tip="Maximum angle that will be smoothed between triangles when using Generate Normals"/>
-
- <text bottom_delta="30" follows="top|left" height="15" left="10" name="high_lod_label">
- High LOD:
- </text>
- <combo_box bottom_delta="0" left="97" follows="left|top" height="18"
- name="high detail combo" width="100" tool_tip="Specify mesh for this level of detail">
- <combo_item name="high none" value="none">
- None
- </combo_item>
- <combo_item name="high choose file" value="file">
- Choose File...
- </combo_item>
- <combo_item name="high triangle limit" value="limit">
- Triangle Limit
- </combo_item>
- </combo_box>
- <spinner bottom_delta="-5" left="200" width="120" name="high limit" decimal_digits="0" increment="1" min_val="0" max_val="100" tool_tip="Triangle budget for this LOD"/>
- <text bottom_delta="25" follows="top|left" height="15" left="10" name="high info" width="300">
- [TRIANGLES] Triangles, [VERTICES] Vertices, [SUBMESHES] Submeshes.
- [MESSAGE]
- </text>
-
- <text bottom_delta="35" follows="top|left" height="15" left="10" name="medium_lod_label">
- Medium LOD:
- </text>
- <combo_box bottom_delta="0" left="97" follows="left|top" height="18"
- name="medium detail combo" width="100" tool_tip="Specify mesh for this level of detail">
- <combo_item name="medium none" value="none">
- None
- </combo_item>
- <combo_item name="medium choose file" value="file">
- Choose File...
- </combo_item>
- <combo_item name="medium triangle limit" value="limit">
- Triangle Limit
- </combo_item>
- </combo_box>
- <spinner bottom_delta="-5" left="200" width="120" name="medium limit" decimal_digits="0" increment="1" min_val="0" max_val="100" tool_tip="Triangle budget for this LOD"/>
- <text bottom_delta="25" follows="top|left" height="15" left="10" name="medium info" width="300">
- [TRIANGLES] Triangles, [VERTICES] Vertices, [SUBMESHES] Submeshes.
- [MESSAGE]
- </text>
-
- <text bottom_delta="35" follows="top|left" height="15" left="10" name="low_lod_label">
- Low LOD:
- </text>
- <combo_box bottom_delta="0" left="97" follows="left|top" height="18"
- name="low detail combo" width="100" tool_tip="Specify mesh for this level of detail">
- <combo_item name="low none" value="none">
- None
- </combo_item>
- <combo_item name="low choose file" value="file">
- Choose File...
- </combo_item>
- <combo_item name="low triangle limit" value="limit">
- Triangle Limit
- </combo_item>
- </combo_box>
- <spinner bottom_delta="-5" left="200" width="120" name="low limit" decimal_digits="0" increment="1" min_val="0" max_val="100" tool_tip="Triangle budget for this LOD"/>
- <text bottom_delta="25" follows="top|left" height="15" left="10" name="low info" width="300">
- [TRIANGLES] Triangles, [VERTICES] Vertices, [SUBMESHES] Submeshes
- [MESSAGE]
- </text>
-
- <text bottom_delta="35" follows="top|left" height="15" left="10" name="lowest_lod_label">
- Lowest LOD:
- </text>
- <combo_box bottom_delta="0" left="97" follows="left|top" height="18"
- name="lowest detail combo" width="100" tool_tip="Specify mesh for this level of detail">
- <combo_item name="lowest none" value="none">
- None
- </combo_item>
- <combo_item name="lowest choose file" value="file">
- Choose File...
- </combo_item>
- <combo_item name="lowest triangle limit" value="limit">
- Triangle Limit
- </combo_item>
- </combo_box>
- <spinner bottom_delta="-5" left="200" width="120" name="lowest limit" decimal_digits="0" increment="1" min_val="0" max_val="100" tool_tip="Triangle budget for this LOD"/>
- <text bottom_delta="25" follows="top|left" height="15" left="10" name="lowest info" width="300">
- [TRIANGLES] Triangles, [VERTICES] Vertices, [SUBMESHES] Submeshes
- [MESSAGE]
- </text>
-
- <text bottom_delta="35" follows="top|left" height="15" left="10" name="physics_lod_label">
- Physical Shape:
- </text>
- <combo_box bottom_delta="0" left="97" follows="left|top" height="18"
- name="physics detail combo" width="100">
- <combo_item name="physics none" value="none">
- None
- </combo_item>
- <combo_item name="physics choose file" value="file">
- Choose File...
- </combo_item>
- <combo_item name="physics triangle limit" value="limit">
- Triangle Limit...
- </combo_item>
- </combo_box>
- <spinner bottom_delta="-5" left="200" width="90" name="physics limit" decimal_digits="0" increment="1" min_val="0" max_val="100" tool_tip="Triangle budget for this LOD"/>
- <button bottom_delta="0" left="290" width="30" follows="left|top" height="20" label=">>"
- name="decompose_btn" tool_tip="Create convex decomposition."/>
- <text bottom_delta="25" follows="top|left" height="15" left="10" name="physics info" width="300">
- [TRIANGLES] Triangles, [HULLS] Hulls, [POINTS] Points
- </text>
-
- <text bottom_delta="25" follows="top|left" height="15" left="10" name="include label" width="300">
- Include:
- </text>
-
- <check_box bottom_delta="20" follow="bottom|left" height="20" label="Textures"
- left="15" width="125" name="upload_textures" tool_tip="Upload associated textures "/>
-
- <check_box bottom_delta="20" follow="bottom|left" height="20" label="Skin Weights"
- left="15" width="125" name="upload_skin" tool_tip="Upload vertex skin weighting information."/>
-
- <check_box bottom_delta="20" follow="bottom|left" height="20" label="Joint Positions"
- left="15" width="125" name="upload_joints" tool_tip="Upload joint position information (will override avatar joint positions when mesh is worn)."/>
-
-
- <button bottom_delta="25" follows="bottom|left" height="20" label="Upload"
- left="15" name="ok_btn" width="125" tool_tip="Upload to simulator"/>
-
- <text bottom_delta="20" left="15" width="280" follows="top|left" height="15" name="description_label" text_color="1 0.82 0.46 1">
- (No charge for upload during First Look)
- </text>
- <text bottom_delta="20" left="15" width="280" follows="top|left" height="15" name="upload_message">
- [MESSAGE]
- </text>
-
- <spinner bottom_delta="20" label="Scale" left="15" width="120" name="debug scale" decimal_digits="3" increment="0.1" min_val="0" max_val="64" initial_value="1" tool_tip="Multiplier for incoming object scale. If incoming dimensions are very small or very large, modify this value to get dimensions into an acceptable range."/>
- <text bottom_delta="30" left="15" width="280" follows="top|left" height="15" name="dimensions">
- Model Dimensions: [X]m x [Y]m x [Z]m
- </text>
- -->
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater can_close="true" can_drag_on_left="false" can_minimize="false" + can_resize="true" height="550" min_height="550" min_width="620" + name="Model Preview" title="Upload Model" width="620"> + + <string name="status_idle">Idle</string> + <string name="status_reading_file">Loading...</string> + <string name="status_generating_meshes">Generating Meshes...</string> + <string name="status_vertex_number_overflow">Error: Vertex number is more than 65534, aborted!</string> + <string name="high">High</string> + <string name="medium">Medium</string> + <string name="low">Low</string> + <string name="lowest">Lowest</string> + <string name="mesh_status_good">Ship it!</string> + <string name="mesh_status_na">N/A</string> + <string name="mesh_status_none">None</string> + <string name="mesh_status_submesh_mismatch">Levels of detail have a different number of textureable faces.</string> + <string name="mesh_status_mesh_mismatch">Levels of detail have a different number of mesh instances.</string> + <string name="mesh_status_too_many_vertices">Level of detail has too many vertices.</string> + <string name="mesh_status_missing_lod">Missing required level of detail.</string> + <string name="layer_all">All</string> <!-- Text to display in physics layer combo box for "all layers" --> + <string name="decomposing">Analyzing...</string> + <string name="simplifying">Simplifying...</string> + + + <text left="15" bottom="25" follows="top|left" height="15" name="name_label"> + Name: + </text> + <line_editor bottom_delta="20" follows="top|left|right" height="19" max_length_bytes="64" + name="description_form" prevalidate_callback="ascii" width="290" /> + + <text bottom_delta="20" left="15" follows="left|top" height="15" name="lod_label"> + Preview: + </text> + <combo_box bottom_delta="20" follows="left|top" height="18" + name="preview_lod_combo" width="240" tool_tip="LOD to view in preview render"> + <combo_item name="high"> + Level of Detail: High + </combo_item> + <combo_item name="medium"> + Level of Detail: Medium + </combo_item> + <combo_item name="low"> + Level of Detail: Low + </combo_item> + <combo_item name="lowest"> + Level of Detail: Lowest + </combo_item> + </combo_box> + + <menu_button follows="top|left" + image_hover_unselected="Toolbar_Left_Over" + image_overlay="OptionsMenu_Off" + image_selected="Toolbar_Left_Selected" + image_unselected="Toolbar_Left_Off" + layout="topleft" + left_pad="5" + name="options_gear_btn" + width="31" + height="25"/> + <!-- Placeholder panel for 3D preview render --> + <panel + name="preview_panel" + left="15" + bevel_style="none" + border_style="line" + border="true" + width="290" + height="290" + follows="all"/> + + <text bottom_delta="25" left="25" width="100" follows="bottom|left">Upload Details</text> + <panel top_pad="5" border="true" left="15" width="290" height="70" follows="bottom|left" + bevel_style="none" bg_alpha_color="0 0 0 0" bg_opaque_color="0 0 0 0.3"> + <text left="25" follows="bottom|left" width="140" height="15" name="streaming cost"> + Resource Cost: [COST] + </text> + <text left="25" top_pad="5" width="140" follows="bottom|left" height="15" name="physics cost"> + Physics Cost: [COST] + </text> + <text left="25" top_pad="5" follows="bottom|left" height="15" name="upload fee"> + Upload Fee: N/A + </text> + </panel> + + <text left="10" bottom="540" width="290" height="15" follows="bottom|left|right" name="status">[STATUS]</text> + + + <button bottom="540" left="300" follows="bottom|right" height="20" label="Defaults" + width="80" name="reset_btn" tool_tip="Reset to defaults"/> + <button bottom="540" left="430" follows="bottom|right" height="20" label="Upload" + width="80" name="ok_btn" tool_tip="Upload to simulator"/> + <button left_pad="10" follows="right|bottom" height="20" width="80" label="Cancel" name="cancel_btn"/> + + <tab_container + follows="right|top|bottom" + top="15" + left="310" + height="470" + width="300" + name="import_tab" + border="true" + tab_position="top"> + + <!-- LOD PANEL --> + <panel + border="true" + label="Level of Detail" + name="lod_panel"> + + <text left="10" width="240" bottom="20" height="15" follows="left|top" name="lod_table_header"> + Select Level of Detail: + </text> + + <text valign="center" halign="center" bg_visible="true" bottom_delta="16" left="75" width="65" height="18" follows="left|top" value="Triangles"/> + <text valign="center" halign="center" bg_visible="true" left_pad="0" width="65" height="18" follows="left|top" value="Vertices"/> + <text valign="center" halign="center" left_pad="0" width="65" bg_visible="true" height="18" follows="left|top" value="Status"/> + + <text valign="center" halign="center" bg_visible="true" name="high_label" left="10" top_pad="0" width="65" height="18" follows="left|top" value="High"/> + <text valign="center" halign="center" bg_visible="true" name="high_triangles" left_pad="0" width="65" height="18" follows="left|top" value="0"/> + <text valign="center" halign="center" bg_visible="true" name="high_vertices" left_pad="0" width="65" height="18" follows="left|top" value="0"/> + <text valign="center" halign="center" bg_visible="true" name="high_status" left_pad="0" width="65" height="18" follows="left|top" value=""/> + <icon height="16" width="16" image_name="lag_status_critical.tga" mouse_opaque="true" name="status_icon_high" left_delta="20" top_delta="0" /> + + <text valign="center" halign="center" bg_visible="true" name="medium_label" left="10" top_pad="0" width="65" height="18" follows="left|top" value="Medium"/> + <text valign="center" halign="center" bg_visible="true" name="medium_triangles" left_pad="0" width="65" height="18" follows="left|top" value="0"/> + <text valign="center" halign="center" bg_visible="true" name="medium_vertices" left_pad="0" width="65" height="18" follows="left|top" value="0"/> + <text valign="center" halign="center" bg_visible="true" name="medium_status" left_pad="0" width="65" height="18" follows="left|top" value=""/> + <icon height="16" width="16" image_name="lag_status_critical.tga" mouse_opaque="true" name="status_icon_medium" left_delta="20" top_delta="0" /> + + <text valign="center" halign="center" bg_visible="true" name="low_label" left="10" top_pad="0" width="65" height="18" follows="left|top" value="Low"/> + <text valign="center" halign="center" bg_visible="true" name="low_triangles" left_pad="0" width="65" height="18" follows="left|top" value="0"/> + <text valign="center" halign="center" bg_visible="true" name="low_vertices" left_pad="0" width="65" height="18" follows="left|top" value="0"/> + <text valign="center" halign="center" bg_visible="true" name="low_status" left_pad="0" width="65" height="18" follows="left|top" value=""/> + <icon height="16" width="16" image_name="lag_status_critical.tga" mouse_opaque="true" name="status_icon_low" left_delta="20" top_delta="0" /> + + <text valign="center" halign="center" bg_visible="true" name="lowest_label" left="10" top_pad="0" width="65" height="18" follows="left|top" value="Lowest"/> + <text valign="center" halign="center" bg_visible="true" name="lowest_triangles" left_pad="0" width="65" height="18" follows="left|top" value="0"/> + <text valign="center" halign="center" bg_visible="true" name="lowest_vertices" left_pad="0" width="65" height="18" follows="left|top" value="0"/> + <text valign="center" halign="center" bg_visible="true" name="lowest_status" left_pad="0" width="65" height="18" follows="left|top" value=""/> + <icon height="16" width="16" image_name="lag_status_critical.tga" mouse_opaque="true" name="status_icon_lowest" left_delta="20" top_delta="0" /> + + <text left="10" width="240" height="15" top_pad="15" follows="left|top" name="lod_table_footer"> + Level of Detail: [DETAIL] + </text> + + <icon height="16" width="16" left="20" follows="left|top" name="lod_status_message_icon"/> + <text left_pad="5" width="200" height="28" follows="left|top" top_pad="-15" wrap="true" name="lod_status_message_text"/> + + <text top_pad="-3" left="10" height="15" follows="left|top"> + Mesh + </text> + + <radio_group follows="top|left" height="210" left="30" name="lod_file_or_limit" width="240" value="lod_from_file"> + <radio_item bottom="195" label="Load from file" name="lod_from_file"/> + <radio_item bottom="150" label="Auto generate" name="lod_auto_generate"/> + <radio_item bottom="0" label="None" name="lod_none"/> + </radio_group> + + <line_editor follows="left|top" bottom_delta="-170" width="140" left="45" value="" name="lod_file" height="20"/> + <button bottom_delta="3" name="lod_browse" label="Browse..." left_pad="5" follows="left|top" width="70" height="25"/> + + <combo_box follows="top|left" name="lod_mode" top_pad="22" width="100" left="45" height="20"> + <combo_item name="triangle_limit"> + Triangle Limit + </combo_item> + <combo_item name="error_threshold"> + Error Threshold + </combo_item> + </combo_box> + <spinner follows="top|left" name="lod_triangle_limit" increment="10" left_pad="5" height="20" width="100" decimal_digits="0" enabled="true"/> + <spinner left_delta="0" bottom_delta="0" increment="0.01" follows="top|left" name="lod_error_threshold" min_val="0" max_val="100" height="20" width="100" decimal_digits="3" visible="false" enabled="true"/> + + <text follows="top|left" name="build_operator_text" left="45" top_pad="10" width="100" height="15"> + Build Operator: + </text> + <text follows="top|left" name="queue_mode_text" left_pad="5" width="100" height="15"> + Queue Mode: + </text> + <combo_box follows="top|left" name="build_operator" top_pad="5" left="45" width="100" height="20"> + <combo_item name="edge_collapse"> + Edge Collapse + </combo_item> + <combo_item name="half_edge_collapse"> + Half Edge Collapse + </combo_item> + </combo_box> + + <combo_box follows="top|left" name="queue_mode" left_pad="5" width="100" height="20"> + <combo_item name="greedy"> + Greedy + </combo_item> + <combo_item name="lazy"> + Lazy + </combo_item> + <combo_item name="independent"> + Independent + </combo_item> + </combo_box> + + <text top_pad="10" name="border_mode_text" left="45" follows="left|top" width="100" height="15"> + Border Mode: + </text> + + <text left_pad="5" name="share_tolderance_text" follows="left|top" width="100" height="15"> + Share Tolerance: + </text> + + <combo_box follows="left|top" left="45" height="20" name="border_mode" width="100"> + <combo_item name="border_unlock"> + Unlock + </combo_item> + <combo_item name="border_lock"> + Lock + </combo_item> + </combo_box> + <spinner follows="left|top" name="share_tolerance" left_pad="5" width="100" decimal_digits="5" initial_value="0.00001" height="20"/> + + <text left="10" top_pad="35" follows="top|left" width="240" height="15"> + Generate Normals + </text> + <text left="35" top_pad="5" follows="top|left" width="100" height="15" name="crease_label"> + Crease Angle: + </text> + <spinner follows="top|left" left_pad="5" min_val="0" max_val="180" value="75" width="60" height="20" name="crease_angle"/> + </panel> + + <!-- PANEL --> + <panel + border="true" + label="Physics" + name="physics_panel"> + + <!-- PHYSICS GEOMETRY--> + <panel + follows="top|left" + name="physics geometry" + left="0" + top="0" + width="300" + height="65" + visible="true" + border="true" + bevel_style="none" bg_alpha_color="0 0 0 0" bg_opaque_color="0 0 0 0.3"> + + <radio_group follows="top|left" top="10" width="240" height="40" name="physics_load_radio" value="physics_load_from_file"> + <radio_item bottom="0" name="physics_load_from_file" label="File:"/> + <radio_item bottom="23" name="physics_use_lod" label="Use Level of Detail:"/> + </radio_group> + + <combo_box left="180" top="10" follows="left|top" height="18" + name="physics_lod_combo" width="110" tool_tip="LOD to use for physics shape"> + <combo_item name="physics_lowest"> + Lowest + </combo_item> + <combo_item name="physics_low"> + Low + </combo_item> + <combo_item name="physics_medium"> + Medium + </combo_item> + <combo_item name="physics_high"> + High + </combo_item> + </combo_box> + + <line_editor follows="left|top" top_pad="5" width="140" left="60" value="" name="physics_file" height="20"/> + <button left_pad="10" name="physics_browse" label="Browse..." follows="left|top" width="70" height="20"/> + + <!-- + <check_box name="physics_optimize" follows="left|top" width="130" left="10" top_pad="5" height="20" label="Optimize"/> + <check_box name="physics_use_hull" follows="left|top" width="130" left_pad="5" height="20" label="Use Convex Hull"/> + --> + </panel> + + + <!-- PHYSICS ANALYSIS--> + <panel + follows="top|left" + name="physics analysis" + top_pad="0" + left="0" + width="300" + height="130" + visible="true" + border="true" + bevel_style="none" bg_alpha_color="0 0 0 0" bg_opaque_color="0 0 0 0.3"> + + <text follows="left|top" bottom="40" height="30" left="10" font="SansSerifBig"> + Step 1: Analysis + </text> + + <text top_pad="5" width="50" follows="top|left" height="15"> + Method: + </text> + <combo_box name="Method" follows="top|left" left_pad="5" bottom_delta="2" height="20" width="80"/> + <text left="160" bottom_delta="-2" width="50" follows="top|left" height="15"> + Quality: + </text> + <combo_box name="Decompose Quality" bottom_delta="2" follows="top|left" left_pad="5" height="20" width="80"/> + + <slider name="Smooth" left="10" width="280" follows="top|left" top_pad="10" height="20" label="Smooth:"/> + + <check_box name="Close Holes (Slow)" follows="top|left" top_pad="10" height="15" label="Close Holes (slow)"/> + + <button left="200" bottom_delta="0" width="90" follows="top|left" label="Analyze" name="Decompose" height="20"/> + <button left="200" bottom_delta="0" width="90" follows="top|left" label="Cancel" name="decompose_cancel" visble="false" height="20"/> + </panel> + + + <!-- PHYSICS SIMPLIFICATION --> + <panel + follows="top|left" + name="physics simplification" + left="0" + top_pad="0" + width="300" + height="150" + visible="true" + border="true" + bevel_style="none" bg_alpha_color="0 0 0 0" bg_opaque_color="0 0 0 0.3"> + + <text follows="left|top" bottom="40" height="30" left="10" font="SansSerifBig"> + Step 2: Simplification + </text> + + <text left="10" top_pad="5" height="15" width="140" follows="top|left"> + Method: + </text> + + <combo_box left_pad="5" height="20" width="120" follows="top|left" name="Simplify Method"/> + + <slider left="10" name="Combine Quality" label="Passes:" label_width="120" width="270" follows="top|left" top_pad="10" height="20"/> + <slider name="Detail Scale" label="Detail Scale:" label_width="120" width="270" follows="top|left" top_pad="10" height="20"/> + <slider name="Retain%" label="Retain:" label_width="120" width="270" follows="top|left" bottom_delta="0" left_delta="0" visible="false" height="20"/> + <button left="190" width="90" follows="top|left" label="Simplify" name="Simplify" height="20"/> + <button left="190" bottom_delta="0" width="90" follows="top|left" label="Cancel" name="simplify_cancel" height="20"/> + + </panel> + + <!-- INFO PANEL --> + <panel + left="0" + top_pad="0" + width="300" + height="100" + follows="left|top" + name="physics info" + visible="true" + border="true" + bevel_style="none" bg_alpha_color="0 0 0 0" bg_opaque_color="0 0 0 0.3"> + + <slider name="physics_explode" follows="top|left" top="10" left="10" label="Preview Spread:" min_val="0.0" max_val="3.0" height="20" width="280"/> + + <text follows="top|left" name="physics_triangles" top_pad="10" height="15" left="10"> + Triangles: [TRIANGLES] + </text> + <text follows="top|left" name="physics_points" top_pad="5" height="15"> + Vertices: [POINTS] + </text> + <text follows="top|left" name="physics_hulls" top_pad="5" height="15"> + Hulls: [HULLS] + </text> + + + </panel> + </panel> + + <!-- MODIFIERS PANEL --> + <panel + border="true" + label="Modifiers" + name="modifiers_panel"> + <text left="10" width="90" bottom="30" follows="top|left" height="15"> + Scale: + </text> + <text left_pad="5" width="140" follows="top|left" height="15"> + Dimensions: + </text> + + <spinner left="10" height="20" follows="top|left" width="80" top_pad="5" value="1.0" min_val="0.01" max_val="64.0" name="import_scale"/> + + <text left_pad="20" height="15" name="import_dimensions" follows="top|left"> + [X] x [Y] x [Z] m + </text> + + <text left="10" top_pad="20" follows="top|left" height="15"> + Include: + </text> + + <check_box top_pad="5" name="upload_textures" height="15" follows="top|left" label="Textures"/> + <check_box top_pad="5" name="upload_skin" height="15" follows="top|left" label="Skin weight"/> + <check_box top_pad="5" left="20" name="upload_joints" height="15" follows="top|left" label="Joint positions"/> + + <text left="10" top_pad="4" width="90" bottom="30" follows="top|left" height="15"> + Pelvis Z Offset: + </text> + + <spinner left="10" top_pad="4" height="20" follows="top|left" width="80" value="0.0" min_val="-3.00" max_val="3.0" name="pelvis_offset"/> + + </panel> + </tab_container> + + <!-- + <button bottom_delta="0" left="10" width="120" name="auto fill" label="Generate LOD" tool_tip="Automatically generate levels of detail"/> + <button bottom_delta="0" left="140" width="120" name="smooth normals" label="Generate Normals" tool_tip="Regenerate normals based on mesh shape"/> + <button bottom_delta="0" left="260" width="120" name="consolidate" label="Consolidate" tool_tip="Combine similar submeshes (reduces number of submeshes)"/> + <button bottom_delta="30" left="260" width="120" name="scrub materials" label="Scrub Materials" tool_tip="Remove all material information (clear textures, set all colors to white)."/> + + <spinner bottom_delta="0" left="140" width="120" height="16" initial_value="75" label_width="60" name="edge threshold" decimal_digits="0" min_val="0" max_val="180" increment="5" label="Hard Angle" tool_tip="Maximum angle that will be smoothed between triangles when using Generate Normals"/> + + <text bottom_delta="30" follows="top|left" height="15" left="10" name="high_lod_label"> + High LOD: + </text> + <combo_box bottom_delta="0" left="97" follows="left|top" height="18" + name="high detail combo" width="100" tool_tip="Specify mesh for this level of detail"> + <combo_item name="high none" value="none"> + None + </combo_item> + <combo_item name="high choose file" value="file"> + Choose File... + </combo_item> + <combo_item name="high triangle limit" value="limit"> + Triangle Limit + </combo_item> + </combo_box> + <spinner bottom_delta="-5" left="200" width="120" name="high limit" decimal_digits="0" increment="1" min_val="0" max_val="100" tool_tip="Triangle budget for this LOD"/> + <text bottom_delta="25" follows="top|left" height="15" left="10" name="high info" width="300"> + [TRIANGLES] Triangles, [VERTICES] Vertices, [SUBMESHES] Submeshes. + [MESSAGE] + </text> + + <text bottom_delta="35" follows="top|left" height="15" left="10" name="medium_lod_label"> + Medium LOD: + </text> + <combo_box bottom_delta="0" left="97" follows="left|top" height="18" + name="medium detail combo" width="100" tool_tip="Specify mesh for this level of detail"> + <combo_item name="medium none" value="none"> + None + </combo_item> + <combo_item name="medium choose file" value="file"> + Choose File... + </combo_item> + <combo_item name="medium triangle limit" value="limit"> + Triangle Limit + </combo_item> + </combo_box> + <spinner bottom_delta="-5" left="200" width="120" name="medium limit" decimal_digits="0" increment="1" min_val="0" max_val="100" tool_tip="Triangle budget for this LOD"/> + <text bottom_delta="25" follows="top|left" height="15" left="10" name="medium info" width="300"> + [TRIANGLES] Triangles, [VERTICES] Vertices, [SUBMESHES] Submeshes. + [MESSAGE] + </text> + + <text bottom_delta="35" follows="top|left" height="15" left="10" name="low_lod_label"> + Low LOD: + </text> + <combo_box bottom_delta="0" left="97" follows="left|top" height="18" + name="low detail combo" width="100" tool_tip="Specify mesh for this level of detail"> + <combo_item name="low none" value="none"> + None + </combo_item> + <combo_item name="low choose file" value="file"> + Choose File... + </combo_item> + <combo_item name="low triangle limit" value="limit"> + Triangle Limit + </combo_item> + </combo_box> + <spinner bottom_delta="-5" left="200" width="120" name="low limit" decimal_digits="0" increment="1" min_val="0" max_val="100" tool_tip="Triangle budget for this LOD"/> + <text bottom_delta="25" follows="top|left" height="15" left="10" name="low info" width="300"> + [TRIANGLES] Triangles, [VERTICES] Vertices, [SUBMESHES] Submeshes + [MESSAGE] + </text> + + <text bottom_delta="35" follows="top|left" height="15" left="10" name="lowest_lod_label"> + Lowest LOD: + </text> + <combo_box bottom_delta="0" left="97" follows="left|top" height="18" + name="lowest detail combo" width="100" tool_tip="Specify mesh for this level of detail"> + <combo_item name="lowest none" value="none"> + None + </combo_item> + <combo_item name="lowest choose file" value="file"> + Choose File... + </combo_item> + <combo_item name="lowest triangle limit" value="limit"> + Triangle Limit + </combo_item> + </combo_box> + <spinner bottom_delta="-5" left="200" width="120" name="lowest limit" decimal_digits="0" increment="1" min_val="0" max_val="100" tool_tip="Triangle budget for this LOD"/> + <text bottom_delta="25" follows="top|left" height="15" left="10" name="lowest info" width="300"> + [TRIANGLES] Triangles, [VERTICES] Vertices, [SUBMESHES] Submeshes + [MESSAGE] + </text> + + <text bottom_delta="35" follows="top|left" height="15" left="10" name="physics_lod_label"> + Physical Shape: + </text> + <combo_box bottom_delta="0" left="97" follows="left|top" height="18" + name="physics detail combo" width="100"> + <combo_item name="physics none" value="none"> + None + </combo_item> + <combo_item name="physics choose file" value="file"> + Choose File... + </combo_item> + <combo_item name="physics triangle limit" value="limit"> + Triangle Limit... + </combo_item> + </combo_box> + <spinner bottom_delta="-5" left="200" width="90" name="physics limit" decimal_digits="0" increment="1" min_val="0" max_val="100" tool_tip="Triangle budget for this LOD"/> + <button bottom_delta="0" left="290" width="30" follows="left|top" height="20" label=">>" + name="decompose_btn" tool_tip="Create convex decomposition."/> + <text bottom_delta="25" follows="top|left" height="15" left="10" name="physics info" width="300"> + [TRIANGLES] Triangles, [HULLS] Hulls, [POINTS] Points + </text> + + <text bottom_delta="25" follows="top|left" height="15" left="10" name="include label" width="300"> + Include: + </text> + + <check_box bottom_delta="20" follow="bottom|left" height="20" label="Textures" + left="15" width="125" name="upload_textures" tool_tip="Upload associated textures "/> + + <check_box bottom_delta="20" follow="bottom|left" height="20" label="Skin Weights" + left="15" width="125" name="upload_skin" tool_tip="Upload vertex skin weighting information."/> + + <check_box bottom_delta="20" follow="bottom|left" height="20" label="Joint Positions" + left="15" width="125" name="upload_joints" tool_tip="Upload joint position information (will override avatar joint positions when mesh is worn)."/> + + + <button bottom_delta="25" follows="bottom|left" height="20" label="Upload" + left="15" name="ok_btn" width="125" tool_tip="Upload to simulator"/> + + <text bottom_delta="20" left="15" width="280" follows="top|left" height="15" name="description_label" text_color="1 0.82 0.46 1"> + (No charge for upload during First Look) + </text> + <text bottom_delta="20" left="15" width="280" follows="top|left" height="15" name="upload_message"> + [MESSAGE] + </text> + + <spinner bottom_delta="20" label="Scale" left="15" width="120" name="debug scale" decimal_digits="3" increment="0.1" min_val="0" max_val="64" initial_value="1" tool_tip="Multiplier for incoming object scale. If incoming dimensions are very small or very large, modify this value to get dimensions into an acceptable range."/> + <text bottom_delta="30" left="15" width="280" follows="top|left" height="15" name="dimensions"> + Model Dimensions: [X]m x [Y]m x [Z]m + </text> + --> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_model_wizard.xml b/indra/newview/skins/default/xui/en/floater_model_wizard.xml index 6c0fffa60e..47b2e5fd79 100644 --- a/indra/newview/skins/default/xui/en/floater_model_wizard.xml +++ b/indra/newview/skins/default/xui/en/floater_model_wizard.xml @@ -1,1039 +1,1039 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater
- legacy_header_height="18"
- layout="topleft"
- name="Model Wizard"
- help_topic="model_wizard"
- bg_opaque_image_overlay="0.5 0.5 0.5 1"
- height="480"
- save_rect="true"
- title="UPLOAD MODEL WIZARD"
- width="535">
- <button
- top="32"
- tab_stop="false"
- left="410"
- height="32"
- name="upload_btn"
- enabled="false"
- label="5. Upload"
- border="false"
- image_unselected="BreadCrumbBtn_Right_Off"
- image_selected="BreadCrumbBtn_Right_Press"
- image_hover_unselected="BreadCrumbBtn_Right_Over"
- image_disabled="BreadCrumbBtn_Right_Disabled"
- image_disabled_selected="BreadCrumbBtn_Right_Disabled"
- width="110">
- <button.commit_callback
- function="Wizard.Upload"/>
- </button>
- <button
- top="32"
- left="310"
- height="32"
- tab_stop="false"
- name="review_btn"
- label="4. Review"
- enabled="false"
- border="false"
- image_unselected="BreadCrumbBtn_Middle_Off"
- image_selected="BreadCrumbBtn_Middle_Press"
- image_hover_unselected="BreadCrumbBtn_Middle_Over"
- image_disabled="BreadCrumbBtn_Middle_Disabled"
- image_disabled_selected="BreadCrumbBtn_Middle_Disabled"
- width="110">
- <button.commit_callback
- function="Wizard.Review"/>
- </button>
- <button
- top="32"
- left="210"
- height="32"
- name="physics2_btn"
- label="3. Physics"
- tab_stop="false"
- enabled="false"
- border="false"
- image_unselected="BreadCrumbBtn_Middle_Off"
- image_selected="BreadCrumbBtn_Middle_Press"
- image_hover_unselected="BreadCrumbBtn_Middle_Over"
- image_disabled="BreadCrumbBtn_Middle_Disabled"
- image_disabled_selected="BreadCrumbBtn_Middle_Disabled"
- width="110">
- <button.commit_callback
- function="Wizard.Physics2"/>
- </button>
- <button
- top="32"
- left="210"
- height="32"
- name="physics_btn"
- label="3. Physics"
- tab_stop="false"
- enabled="false"
- border="false"
- image_unselected="BreadCrumbBtn_Middle_Off"
- image_selected="BreadCrumbBtn_Middle_Press"
- image_hover_unselected="BreadCrumbBtn_Middle_Over"
- image_disabled="BreadCrumbBtn_Middle_Disabled"
- image_disabled_selected="BreadCrumbBtn_Middle_Disabled"
- width="110">
- <button.commit_callback
- function="Wizard.Physics"/>
- </button>
- <button
- top="32"
- left="115"
- name="optimize_btn"
- label="2. Optimize"
- tab_stop="false"
- height="32"
- border="false"
- image_unselected="BreadCrumbBtn_Middle_Off"
- image_selected="BreadCrumbBtn_Middle_Press"
- image_hover_unselected="BreadCrumbBtn_Middle_Over"
- image_disabled="BreadCrumbBtn_Middle_Disabled"
- image_disabled_selected="BreadCrumbBtn_Middle_Disabled"
- width="110">
- <button.commit_callback
- function="Wizard.Optimize"/>
- </button>
- <button
- top="32"
- left="15"
- name="choose_file_btn"
- tab_stop="false"
- enabled="false"
- label="1. Choose File"
- height="32"
- image_unselected="BreadCrumbBtn_Left_Off"
- image_selected="BreadCrumbBtn_Left_Press"
- image_hover_unselected="BreadCrumbBtn_Left_Over"
- image_disabled="BreadCrumbBtn_Left_Disabled"
- image_disabled_selected="BreadCrumbBtn_Left_Disabled"
- width="110">
- <button.commit_callback
- function="Wizard.Choose"/>
- </button>
- <panel
- height="388"
- top_pad="0"
- name="choose_file_panel"
- visible="false"
- width="535"
- left="0">
- <panel
- height="22"
- top_pad="15"
- width="505"
- name="header_panel"
- bg_opaque_color="DkGray2"
- background_visible="true"
- background_opaque="true"
- left="15">
- <text
- width="200"
- left="10"
- top="3"
- name="header_text"
- text_color="White"
- height="10"
- font="SansSerifBig"
- layout="topleft">
- Upload Model
- </text>
- </panel>
- <text
- top_pad="14"
- width="460"
- height="20"
- name="description"
- font="SansSerifSmall"
- layout="topleft"
- word_wrap="true"
- left_delta="5">
- This wizard will help you import mesh models to Second Life. First specify a file containing the model you wish to import. Second Life supports COLLADA (.dae) files.
- </text>
- <panel
- top_delta="40"
- left="15"
- height="270"
- width="505"
- name="content"
- bg_opaque_color="DkGray2"
- background_visible="true"
- background_opaque="true">
- <text
- type="string"
- length="1"
- text_color="White"
- follows="left|top"
- top="10"
- height="10"
- layout="topleft"
- left_delta="10"
- name="Cache location"
- width="300">
- Filename:
- </text>
- <line_editor
- border_style="line"
- border_thickness="1"
- follows="left|top"
- font="SansSerifSmall"
- height="20"
- layout="topleft"
- left_delta="0"
- max_length="4096"
- name="lod_file"
- top_pad="5"
- width="220" />
- <button
- follows="left|top"
- height="23"
- label="Browse..."
- label_selected="Browse..."
- layout="topleft"
- left_pad="5"
- name="browse"
- top_delta="-1"
- width="85">
- </button>
- <text
- top_delta="-15"
- width="200"
- height="15"
- font="SansSerifSmall"
- layout="topleft"
- text_color="White"
- left_pad="19">
- Model Preview:
- </text>
- <!-- Placeholder panel for 3D preview render -->
- <panel
- left_delta="0"
- top_pad="0"
- name="preview_panel"
- bevel_style="none"
- highlight_light_color="0.09 0.09 0.09 1"
- border="true"
- height="150"
- follows="all"
- width="150">
- </panel>
- <text
- top_pad="10"
- width="130"
- height="14"
- left="340"
- text_color="White"
- word_wrap="true">
- Dimensions (meters):
- </text>
- <text
- top_pad="0"
- width="160"
- height="15"
- font="SansSerifSmallBold"
- text_color="White"
- name="dimensions"
- left_delta="0">
- X: Y: Z:
- </text>
- <text
- top_delta="0"
- width="160"
- height="15"
- name="dimension_dividers"
- left_delta="41">
- | |
- </text>
- <text
- top_delta="0"
- width="160"
- height="15"
- name="dimension_x"
- left="356"/>
- <text
- top_delta="0"
- width="160"
- height="15"
- name="dimension_y"
- left="403"/>
- <text
- top_delta="0"
- width="160"
- height="15"
- name="dimension_z"
- left="450"/>
- <text
- top="100"
- width="320"
- height="15"
- left="10"
- text_color="White"
- word_wrap="true">
- Note:
- </text>
- <text
- top_pad="0"
- width="320"
- height="40"
- left="10"
- word_wrap="true">
-Advanced users familiar with 3d content creation tools may prefer to use the [secondlife:///app/floater/upload_model Advanced Mesh Import Window] .
- </text>
- </panel>
- </panel>
-
-
- <panel
- height="388"
- top_delta="0"
- name="optimize_panel"
- visible="false"
- width="535"
- left="0">
- <panel
- height="22"
- top_pad="15"
- name="header_panel"
- width="505"
- bg_opaque_color="DkGray2"
- background_visible="true"
- background_opaque="true"
- left="15">
- <text
- width="200"
- left="10"
- name="header_text"
- top="3"
- text_color="White"
- height="10"
- font="SansSerifBig"
- layout="topleft">
- Optimize
- </text>
- </panel>
- <text
- top_pad="14"
- width="460"
- height="20"
- font="SansSerifSmall"
- layout="topleft"
- name="description"
- word_wrap="true"
- left_delta="5">
- This wizard has optimized your model to improve performance. You may adjust the results of the optimization process bellow or click Next to continue.
- </text>
- <panel
- top_delta="40"
- visible="false"
- left="15"
- height="270"
- width="505"
- name="content"
- bg_opaque_color="DkGray2"
- background_visible="true"
- background_opaque="true">
- <text
- top="20"
- width="300"
- height="12"
- font="SansSerifBold"
- left="112">Generating Level of Detail</text>
- <progress_bar
- name="optimize_progress_bar"
- image_fill="model_wizard\progress_light.png"
- color_bg="1 1 1 1"
- color_bar="1 1 1 0.96"
- follows="left|right|top"
- width="260"
- height="16"
- image_bar="model_wizard\progress_bar_bg.png"
- top_pad="14"
- left="110"/>
- <icon
- top_pad="10"
- left_delta="0"
- width="13"
- height="12"
- image_name="model_wizard\check_mark.png"/>
- <text
- top_delta="0"
- left_delta="18"
- name="high_detail_text"
- width="200"
- height="14">Generate Level of Detail: High</text>
- <icon
- top_pad="10"
- left_delta="-18"
- width="13"
- height="12"
- image_name="model_wizard\check_mark.png"/>
- <text
- top_delta="0"
- left_delta="18"
- name="medium_detail_text"
- width="200"
- height="14">Generate Level of Detail: Medium</text>
- <icon
- top_pad="10"
- left_delta="-18"
- width="13"
- height="12"
- image_name="model_wizard\check_mark.png"/>
- <text
- top_delta="0"
- left_delta="18"
- name="low_detail_text"
- width="200"
- height="14">Generate Level of Detail: Low</text>
- <icon
- top_pad="10"
- left_delta="-18"
- width="13"
- height="12"
- image_name="model_wizard\check_mark.png"/>
- <text
- top_delta="0"
- left_delta="18"
- name="lowest_detail_text"
- width="200"
- height="14">Generate Level of Detail: Lowest</text>
- </panel>
- <panel
- top_delta="0"
- left_delta="0"
- height="270"
- width="505"
- name="content2"
- bg_opaque_color="DkGray2"
- background_visible="true"
- background_opaque="true">
- <text top="10" left="10" width="85" text_color="White" follows="left|top" height="15" name="lod_label">
- Model Preview:
- </text>
- <combo_box left_pad="5" top_delta="-5" follows="left|top" list_position="below" height="22"
- name="preview_lod_combo2" width="90" tool_tip="LOD to view in preview render">
- <combo_item name="high">
- High
- </combo_item>
- <combo_item name="medium">
- Medium
- </combo_item>
- <combo_item name="low">
- Low
- </combo_item>
- <combo_item name="lowest">
- Lowest
- </combo_item>
- </combo_box>
- <panel
- left="10"
- top_pad="5"
- name="preview_panel"
- bevel_style="none"
- highlight_light_color="0.09 0.09 0.09 1"
- border_style="line"
- border="true"
- height="185"
- follows="all"
- width="185">
- </panel>
- <text top="45" left="214" text_color="White" font="SansSerifSmallBold" halign="center" width="110" height="30" wrap="true">Higher Performance</text>
- <text top="75" left="204" halign="center" width="130" word_wrap="true" font="SansSerifSmall" height="80">Faster rendering but less detailed; lowers Resource (prim) cost.</text>
- <text top="45" left="378" text_color="White" font="SansSerifSmallBold" halign="center" width="90" height="30" wrap="true">Higher Accuracy</text>
- <text top="75" left="364" halign="center" width="130" word_wrap="true" font="SansSerifSmall" height="80">More detailed model but slower; increases Resource (prim) cost.</text>
-
- <slider
- follows="left|top"
- height="20"
- increment="1"
- layout="topleft"
- left="204"
- max_val="3"
- initial_value="2"
- min_val="0"
- name="accuracy_slider"
- show_text="false"
- top="130"
- width="290" />
- <text
- font="SansSerifSmall"
- top_pad="0"
- width="300"
- left_delta="6"
- height="4">'
- </text>
-
-
- <icon
- top_pad="14"
- left_delta="0"
- width="280"
- height="2"
- image_name="model_wizard\divider_line.png"/>
-
- <text top_delta="20" width="200" text_color="White" left_delta="50" name="streaming cost" height="20">Resource Cost: [COST]</text>
- <text
- top_pad="15"
- width="130"
- height="14"
- left="10"
- text_color="White"
- word_wrap="true">
- Dimensions (meters):
- </text>
- <text
- top_pad="0"
- width="160"
- height="15"
- font="SansSerifSmallBold"
- text_color="White"
- name="dimensions"
- left_delta="0">
- X: Y: Z:
- </text>
- <text
- top_delta="0"
- width="160"
- height="15"
- name="dimension_dividers"
- left_delta="41">
- | |
- </text>
- <text
- top_delta="0"
- width="160"
- height="15"
- name="dimension_x"
- left_delta="-25"/>
- <text
- top_delta="0"
- width="160"
- height="15"
- name="dimension_y"
- left_delta="46"/>
- <text
- top_delta="0"
- width="160"
- height="15"
- name="dimension_z"
- left_delta="46"/>
- </panel>
- </panel>
-
- <panel
- height="388"
- top_delta="0"
- name="physics_panel"
- visible="false"
- width="535"
- left="0">
- <panel
- height="22"
- top_pad="15"
- name="header_panel"
- width="505"
- bg_opaque_color="DkGray2"
- background_visible="true"
- background_opaque="true"
- left="15">
- <text
- width="200"
- left="10"
- name="header_text"
- top="3"
- height="10"
- font="SansSerifBig"
- text_color="White"
- layout="topleft">
- Physics
- </text>
- </panel>
- <text
- top_pad="10"
- width="474"
- height="50"
- font="SansSerifSmall"
- layout="topleft"
- name="description"
- word_wrap="true"
- left_delta="5">
- The wizard will create a physical shape, which determines how the object interacts with other objects and avatars. Set the slider to the detail level most appropriate for how your object will be used:
- </text>
- <panel
- top_delta="44"
- left="15"
- height="270"
- width="505"
- name="content"
- bg_opaque_color="DkGray2"
- background_visible="true"
- background_opaque="true">
- <text top="15" left="20" text_color="White" font="SansSerifSmallBold" width="110" height="30" wrap="true" halign="center">Higher Performance</text>
- <text top="45" left="10" halign="center" width="130" word_wrap="true" font="SansSerifSmall" height="80">Faster rendering but less detailed; lowers Resource (prim) cost.</text>
- <text top="15" left="372" text_color="White" font="SansSerifSmallBold" width="90" height="30" wrap="true" halign="center">Higher Accuracy</text>
- <text top="45" left="360" halign="center" width="130" word_wrap="true" font="SansSerifSmall" height="80">More detailed model but slower; increases Resource (prim) cost.</text>
-
- <slider
- follows="left|top"
- height="22"
- increment=".1"
- layout="topleft"
- left="20"
- max_val="1"
- initial_value="0.5"
- min_val="0"
- name="physics_slider"
- show_text="false"
- top="90"
- width="440" />
- <text
- font="SansSerifSmall"
- top_pad="0"
- width="500"
- left_delta="6"
- height="4">' ' ' ' ' ' ' ' ' ' '</text>
- <text top_pad="10" width="110" halign="center" word_wrap="true" left="25" height="40">Recommended for solid objects</text>
- <text top_delta="0" width="110" halign="center" word_wrap="true" left="190" height="40">Recommended for buildings</text>
- <text top_delta="0" width="110" halign="center" word_wrap="true" left="350" height="40">Recommended for vehicles</text>
-
-
- <icon
- top_pad="5"
- left="15"
- width="470"
- height="2"
- image_name="model_wizard\divider_line.png"/>
-
- <text top_delta="30" width="180" text_color="White" left="160" name="streaming cost" height="20">Resource Cost: [COST]</text>
-
- </panel>
- </panel>
-
- <panel
- height="388"
- top_delta="0"
- name="physics2_panel"
- visible="true"
- width="535"
- left="0">
- <panel
- height="22"
- top_pad="15"
- name="header_panel"
- width="505"
- bg_opaque_color="DkGray2"
- background_visible="true"
- background_opaque="true"
- left="15">
- <text
- width="200"
- left="10"
- name="header_text"
- text_color="White"
- top="3"
- height="10"
- font="SansSerifBig"
- layout="topleft">
- Physics
- </text>
- </panel>
- <text
- top_pad="14"
- width="475"
- height="50"
- font="SansSerifSmall"
- layout="topleft"
- name="description"
- word_wrap="true"
- left_delta="5">
- Preview the physics shape below then click Next to continue. To modify the physics shape, click the Back button.
- </text>
- <panel
- top_delta="40"
- left="15"
- height="270"
- width="505"
- name="content"
- bg_opaque_color="DkGray2"
- background_visible="true"
- background_opaque="true">
- <text top="10" left="10" width="85" text_color="White" follows="left|top" height="15" name="lod_label">
- Model Preview:
- </text>
- <combo_box left_pad="5" top_delta="-5" follows="left|top" list_position="below" height="22"
- name="preview_lod_combo3" width="90" tool_tip="LOD to view in preview render">
- <combo_item name="high">
- High
- </combo_item>
- <combo_item name="medium">
- Medium
- </combo_item>
- <combo_item name="low">
- Low
- </combo_item>
- <combo_item name="lowest">
- Lowest
- </combo_item>
- </combo_box>
- <panel
- left="10"
- top_pad="10"
- name="preview_panel"
- bevel_style="none"
- highlight_light_color="0.09 0.09 0.09 1"
- border_style="line"
- border="true"
- height="190"
- follows="all"
- width="190">
- </panel>
- <text
- top_pad="8"
- width="130"
- height="14"
- left="10"
- text_color="White"
- word_wrap="true">
- Dimensions (meters):
- </text>
- <text
- top_pad="0"
- width="160"
- height="15"
- font="SansSerifSmallBold"
- text_color="White"
- name="dimensions"
- left_delta="0">
- X: Y: Z:
- </text>
- <text
- top_delta="0"
- width="160"
- height="15"
- name="dimension_dividers"
- left_delta="41">
- | |
- </text>
- <text
- top_delta="0"
- width="160"
- height="15"
- name="dimension_x"
- left_delta="-25"/>
- <text
- top_delta="0"
- width="160"
- height="15"
- name="dimension_y"
- left_delta="46"/>
- <text
- top_delta="0"
- width="160"
- height="15"
- name="dimension_z"
- left_delta="46"/>
- <text top="60" width="180" text_color="White" left="225" name="streaming cost" height="20">Resource Cost: [COST]</text>
- </panel>
- </panel>
-
- <panel
- height="388"
- top_delta="0"
- name="review_panel"
- visible="false"
- width="535"
- left="0">
- <panel
- height="22"
- top_pad="15"
- name="header_panel"
- width="505"
- bg_opaque_color="DkGray2"
- background_visible="true"
- background_opaque="true"
- left="15">
- <text
- width="200"
- left="10"
- name="header_text"
- text_color="White"
- top="3"
- height="10"
- font="SansSerifBig"
- layout="topleft">
- Review
- </text>
- </panel>
- <text
- top_pad="14"
- width="470"
- height="24"
- font="SansSerifSmall"
- layout="topleft"
- name="description"
- word_wrap="true"
- left_delta="5">
- Review the details below then click. Upload to upload your model. Your L$ balance will be charged when you click Upload.
- </text>
- <icon
- top_pad="10"
- left="20"
- width="495"
- height="2"
- image_name="model_wizard\divider_line.png"/>
- <panel
- top_pad="5"
- left="15"
- height="270"
- width="505"
- name="content">
- <text top="10" left="10" width="85" text_color="White" follows="left|top" height="15" name="lod_label">
- Model Preview:
- </text>
- <combo_box left_pad="5" top_delta="-5" follows="left|top" list_position="below" height="22"
- name="preview_lod_combo" width="90" tool_tip="LOD to view in preview render">
- <combo_item name="high">
- High
- </combo_item>
- <combo_item name="medium">
- Medium
- </combo_item>
- <combo_item name="low">
- Low
- </combo_item>
- <combo_item name="lowest">
- Lowest
- </combo_item>
- </combo_box>
- <panel
- left="10"
- top_pad="10"
- name="preview_panel"
- bevel_style="none"
- highlight_light_color="0.09 0.09 0.09 1"
- border_style="line"
- border="true"
- height="190"
- follows="all"
- width="190">
- </panel>
- <text
- top_pad="8"
- width="130"
- height="14"
- left="10"
- text_color="White"
- word_wrap="true">
- Dimensions (meters):
- </text>
- <text
- top_pad="0"
- width="160"
- height="15"
- font="SansSerifSmallBold"
- text_color="White"
- name="dimensions"
- left_delta="0">
- X: Y: Z:
- </text>
- <text
- top_delta="0"
- width="160"
- height="15"
- name="dimension_dividers"
- left_delta="41">
- | |
- </text>
- <text
- top_delta="0"
- width="160"
- height="15"
- name="dimension_x"
- left_delta="-25"/>
- <text
- top_delta="0"
- width="160"
- height="15"
- name="dimension_y"
- left_delta="46"/>
- <text
- top_delta="0"
- width="160"
- height="15"
- name="dimension_z"
- left_delta="46"/>
- </panel>
- <text
- width="300"
- height="12"
- top="125"
- name="streaming cost"
- left="230"
- font="SansSerifSmallBold"
- text_color="White">Resource Cost: [COST]</text>
- <text
- width="285"
- height="30"
- top_pad="0"
- left_delta="0"
- word_wrap="true"
- font="SansSerifItalic">This is the cost to your Region's prim/object limit, at default scale</text>
- <text
- width="300"
- height="12"
- name="physics cost"
- top_pad="10"
- left_delta="0"
- font="SansSerifSmallBold"
- text_color="White">Physics Cost: [COST]</text>
- <text
- width="285"
- height="30"
- top_pad="0"
- left_delta="0"
- word_wrap="true"
- font="SansSerifItalic">This is the cost to your Region's prim/object limit, at default scale</text>
- <text
- width="200"
- height="12"
- top_pad="10"
- left_delta="0"
- font="SansSerifSmallBold"
- text_color="White">Upload Fee:</text>
- <text
- width="285"
- height="26"
- top_pad="0"
- left_delta="0"
- word_wrap="true"
- font="SansSerifItalic">This is the amount the upload will cost.</text>
- <check_box
- height="16"
- layout="topleft"
- left_delta="0"
- name="confirm_checkbox"
- top_pad="15"
- width="16" />
- <text
- height="100"
- width="240"
- word_wrap="true"
- left_delta="25"
- top_delta="0">I confirm that I have the appropriate rights to the material contained in this model. [secondlife:///app/floater/learn_more Learn more]</text>
- </panel>
-
-
-
-
- <panel
- height="388"
- top_delta="0"
- name="upload_panel"
- visible="false"
- width="535"
- left="0">
- <panel
- height="22"
- top_pad="15"
- name="header_panel"
- width="505"
- bg_opaque_color="DkGray2"
- background_visible="true"
- background_opaque="true"
- left="15">
- <text
- width="200"
- left="10"
- name="header_text"
- top="3"
- text_color="White"
- height="10"
- font="SansSerifBig"
- layout="topleft">
- Upload Complete!
- </text>
- </panel>
- <text
- top_pad="14"
- width="474"
- height="20"
- font="SansSerifSmall"
- layout="topleft"
- name="description"
- word_wrap="true"
- left_delta="5">
- Congratulations! Your model has been sucessfully uploaded. You will find the model in the Objects folder in your inventory.
- </text>
- <icon
- top_pad="15"
- left_delta="0"
- width="495"
- height="2"
- image_name="model_wizard\divider_line.png"/>
- </panel>
-
-
-
- <button
- top="440"
- right="-245"
- width="90"
- height="22"
- name="back"
- label="<< Back" />
- <button
- top_delta="0"
- right="-150"
- width="90"
- height="22"
- name="next"
- label="Next >> " />
- <button
- top_delta="0"
- right="-150"
- width="90"
- height="22"
- visible="false"
- name="upload"
- tool_tip="Upload to simulator"
- label="Upload" />
- <button
- top_delta="0"
- right="-15"
- width="90"
- height="22"
- name="cancel"
- label="Cancel" />
- <button
- top_delta="0"
- right="-15"
- width="90"
- height="22"
- name="close"
- visible="false"
- label="Close" />
- <spinner visible="false" left="10" height="20" follows="top|left" width="80" top_pad="-50" value="1.0" min_val="0.01" max_val="64.0" name="import_scale"/>
-
- <string name="status_idle">Idle</string>
- <string name="status_reading_file">Loading...</string>
- <string name="status_generating_meshes">Generating Meshes...</string>
- <string name="status_vertex_number_overflow">Error: Vertex number is more than 65534, aborted!</string>
- <string name="high">High</string>
- <string name="medium">Medium</string>
- <string name="low">Low</string>
- <string name="lowest">Lowest</string>
- <string name="mesh_status_good">Ship it!</string>
- <string name="mesh_status_na">N/A</string>
- <string name="mesh_status_none">None</string>
- <string name="mesh_status_submesh_mismatch">Levels of detail have a different number of textureable faces.</string>
- <string name="mesh_status_mesh_mismatch">Levels of detail have a different number of mesh instances.</string>
- <string name="mesh_status_too_many_vertices">Level of detail has too many vertices.</string>
- <string name="mesh_status_missing_lod">Missing required level of detail.</string>
- <string name="layer_all">All</string>
- <!-- Text to display in physics layer combo box for "all layers" -->
-
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + legacy_header_height="18" + layout="topleft" + name="Model Wizard" + help_topic="model_wizard" + bg_opaque_image_overlay="0.5 0.5 0.5 1" + height="480" + save_rect="true" + title="UPLOAD MODEL WIZARD" + width="535"> + <button + top="32" + tab_stop="false" + left="410" + height="32" + name="upload_btn" + enabled="false" + label="5. Upload" + border="false" + image_unselected="BreadCrumbBtn_Right_Off" + image_selected="BreadCrumbBtn_Right_Press" + image_hover_unselected="BreadCrumbBtn_Right_Over" + image_disabled="BreadCrumbBtn_Right_Disabled" + image_disabled_selected="BreadCrumbBtn_Right_Disabled" + width="110"> + <button.commit_callback + function="Wizard.Upload"/> + </button> + <button + top="32" + left="310" + height="32" + tab_stop="false" + name="review_btn" + label="4. Review" + enabled="false" + border="false" + image_unselected="BreadCrumbBtn_Middle_Off" + image_selected="BreadCrumbBtn_Middle_Press" + image_hover_unselected="BreadCrumbBtn_Middle_Over" + image_disabled="BreadCrumbBtn_Middle_Disabled" + image_disabled_selected="BreadCrumbBtn_Middle_Disabled" + width="110"> + <button.commit_callback + function="Wizard.Review"/> + </button> + <button + top="32" + left="210" + height="32" + name="physics2_btn" + label="3. Physics" + tab_stop="false" + enabled="false" + border="false" + image_unselected="BreadCrumbBtn_Middle_Off" + image_selected="BreadCrumbBtn_Middle_Press" + image_hover_unselected="BreadCrumbBtn_Middle_Over" + image_disabled="BreadCrumbBtn_Middle_Disabled" + image_disabled_selected="BreadCrumbBtn_Middle_Disabled" + width="110"> + <button.commit_callback + function="Wizard.Physics2"/> + </button> + <button + top="32" + left="210" + height="32" + name="physics_btn" + label="3. Physics" + tab_stop="false" + enabled="false" + border="false" + image_unselected="BreadCrumbBtn_Middle_Off" + image_selected="BreadCrumbBtn_Middle_Press" + image_hover_unselected="BreadCrumbBtn_Middle_Over" + image_disabled="BreadCrumbBtn_Middle_Disabled" + image_disabled_selected="BreadCrumbBtn_Middle_Disabled" + width="110"> + <button.commit_callback + function="Wizard.Physics"/> + </button> + <button + top="32" + left="115" + name="optimize_btn" + label="2. Optimize" + tab_stop="false" + height="32" + border="false" + image_unselected="BreadCrumbBtn_Middle_Off" + image_selected="BreadCrumbBtn_Middle_Press" + image_hover_unselected="BreadCrumbBtn_Middle_Over" + image_disabled="BreadCrumbBtn_Middle_Disabled" + image_disabled_selected="BreadCrumbBtn_Middle_Disabled" + width="110"> + <button.commit_callback + function="Wizard.Optimize"/> + </button> + <button + top="32" + left="15" + name="choose_file_btn" + tab_stop="false" + enabled="false" + label="1. Choose File" + height="32" + image_unselected="BreadCrumbBtn_Left_Off" + image_selected="BreadCrumbBtn_Left_Press" + image_hover_unselected="BreadCrumbBtn_Left_Over" + image_disabled="BreadCrumbBtn_Left_Disabled" + image_disabled_selected="BreadCrumbBtn_Left_Disabled" + width="110"> + <button.commit_callback + function="Wizard.Choose"/> + </button> + <panel + height="388" + top_pad="0" + name="choose_file_panel" + visible="false" + width="535" + left="0"> + <panel + height="22" + top_pad="15" + width="505" + name="header_panel" + bg_opaque_color="DkGray2" + background_visible="true" + background_opaque="true" + left="15"> + <text + width="200" + left="10" + top="3" + name="header_text" + text_color="White" + height="10" + font="SansSerifBig" + layout="topleft"> + Upload Model + </text> + </panel> + <text + top_pad="14" + width="460" + height="20" + name="description" + font="SansSerifSmall" + layout="topleft" + word_wrap="true" + left_delta="5"> + This wizard will help you import mesh models to Second Life. First specify a file containing the model you wish to import. Second Life supports COLLADA (.dae) files. + </text> + <panel + top_delta="40" + left="15" + height="270" + width="505" + name="content" + bg_opaque_color="DkGray2" + background_visible="true" + background_opaque="true"> + <text + type="string" + length="1" + text_color="White" + follows="left|top" + top="10" + height="10" + layout="topleft" + left_delta="10" + name="Cache location" + width="300"> + Filename: + </text> + <line_editor + border_style="line" + border_thickness="1" + follows="left|top" + font="SansSerifSmall" + height="20" + layout="topleft" + left_delta="0" + max_length="4096" + name="lod_file" + top_pad="5" + width="220" /> + <button + follows="left|top" + height="23" + label="Browse..." + label_selected="Browse..." + layout="topleft" + left_pad="5" + name="browse" + top_delta="-1" + width="85"> + </button> + <text + top_delta="-15" + width="200" + height="15" + font="SansSerifSmall" + layout="topleft" + text_color="White" + left_pad="19"> + Model Preview: + </text> + <!-- Placeholder panel for 3D preview render --> + <panel + left_delta="0" + top_pad="0" + name="preview_panel" + bevel_style="none" + highlight_light_color="0.09 0.09 0.09 1" + border="true" + height="150" + follows="all" + width="150"> + </panel> + <text + top_pad="10" + width="130" + height="14" + left="340" + text_color="White" + word_wrap="true"> + Dimensions (meters): + </text> + <text + top_pad="0" + width="160" + height="15" + font="SansSerifSmallBold" + text_color="White" + name="dimensions" + left_delta="0"> + X: Y: Z: + </text> + <text + top_delta="0" + width="160" + height="15" + name="dimension_dividers" + left_delta="41"> + | | + </text> + <text + top_delta="0" + width="160" + height="15" + name="dimension_x" + left="356"/> + <text + top_delta="0" + width="160" + height="15" + name="dimension_y" + left="403"/> + <text + top_delta="0" + width="160" + height="15" + name="dimension_z" + left="450"/> + <text + top="100" + width="320" + height="15" + left="10" + text_color="White" + word_wrap="true"> + Note: + </text> + <text + top_pad="0" + width="320" + height="40" + left="10" + word_wrap="true"> +Advanced users familiar with 3d content creation tools may prefer to use the [secondlife:///app/floater/upload_model Advanced Mesh Import Window] . + </text> + </panel> + </panel> + + + <panel + height="388" + top_delta="0" + name="optimize_panel" + visible="false" + width="535" + left="0"> + <panel + height="22" + top_pad="15" + name="header_panel" + width="505" + bg_opaque_color="DkGray2" + background_visible="true" + background_opaque="true" + left="15"> + <text + width="200" + left="10" + name="header_text" + top="3" + text_color="White" + height="10" + font="SansSerifBig" + layout="topleft"> + Optimize + </text> + </panel> + <text + top_pad="14" + width="460" + height="20" + font="SansSerifSmall" + layout="topleft" + name="description" + word_wrap="true" + left_delta="5"> + This wizard has optimized your model to improve performance. You may adjust the results of the optimization process bellow or click Next to continue. + </text> + <panel + top_delta="40" + visible="false" + left="15" + height="270" + width="505" + name="content" + bg_opaque_color="DkGray2" + background_visible="true" + background_opaque="true"> + <text + top="20" + width="300" + height="12" + font="SansSerifBold" + left="112">Generating Level of Detail</text> + <progress_bar + name="optimize_progress_bar" + image_fill="model_wizard\progress_light.png" + color_bg="1 1 1 1" + color_bar="1 1 1 0.96" + follows="left|right|top" + width="260" + height="16" + image_bar="model_wizard\progress_bar_bg.png" + top_pad="14" + left="110"/> + <icon + top_pad="10" + left_delta="0" + width="13" + height="12" + image_name="model_wizard\check_mark.png"/> + <text + top_delta="0" + left_delta="18" + name="high_detail_text" + width="200" + height="14">Generate Level of Detail: High</text> + <icon + top_pad="10" + left_delta="-18" + width="13" + height="12" + image_name="model_wizard\check_mark.png"/> + <text + top_delta="0" + left_delta="18" + name="medium_detail_text" + width="200" + height="14">Generate Level of Detail: Medium</text> + <icon + top_pad="10" + left_delta="-18" + width="13" + height="12" + image_name="model_wizard\check_mark.png"/> + <text + top_delta="0" + left_delta="18" + name="low_detail_text" + width="200" + height="14">Generate Level of Detail: Low</text> + <icon + top_pad="10" + left_delta="-18" + width="13" + height="12" + image_name="model_wizard\check_mark.png"/> + <text + top_delta="0" + left_delta="18" + name="lowest_detail_text" + width="200" + height="14">Generate Level of Detail: Lowest</text> + </panel> + <panel + top_delta="0" + left_delta="0" + height="270" + width="505" + name="content2" + bg_opaque_color="DkGray2" + background_visible="true" + background_opaque="true"> + <text top="10" left="10" width="85" text_color="White" follows="left|top" height="15" name="lod_label"> + Model Preview: + </text> + <combo_box left_pad="5" top_delta="-5" follows="left|top" list_position="below" height="22" + name="preview_lod_combo2" width="90" tool_tip="LOD to view in preview render"> + <combo_item name="high"> + High + </combo_item> + <combo_item name="medium"> + Medium + </combo_item> + <combo_item name="low"> + Low + </combo_item> + <combo_item name="lowest"> + Lowest + </combo_item> + </combo_box> + <panel + left="10" + top_pad="5" + name="preview_panel" + bevel_style="none" + highlight_light_color="0.09 0.09 0.09 1" + border_style="line" + border="true" + height="185" + follows="all" + width="185"> + </panel> + <text top="45" left="214" text_color="White" font="SansSerifSmallBold" halign="center" width="110" height="30" wrap="true">Higher Performance</text> + <text top="75" left="204" halign="center" width="130" word_wrap="true" font="SansSerifSmall" height="80">Faster rendering but less detailed; lowers Resource (prim) cost.</text> + <text top="45" left="378" text_color="White" font="SansSerifSmallBold" halign="center" width="90" height="30" wrap="true">Higher Accuracy</text> + <text top="75" left="364" halign="center" width="130" word_wrap="true" font="SansSerifSmall" height="80">More detailed model but slower; increases Resource (prim) cost.</text> + + <slider + follows="left|top" + height="20" + increment="1" + layout="topleft" + left="204" + max_val="3" + initial_value="2" + min_val="0" + name="accuracy_slider" + show_text="false" + top="130" + width="290" /> + <text + font="SansSerifSmall" + top_pad="0" + width="300" + left_delta="6" + height="4">' + </text> + + + <icon + top_pad="14" + left_delta="0" + width="280" + height="2" + image_name="model_wizard\divider_line.png"/> + + <text top_delta="20" width="200" text_color="White" left_delta="50" name="streaming cost" height="20">Resource Cost: [COST]</text> + <text + top_pad="15" + width="130" + height="14" + left="10" + text_color="White" + word_wrap="true"> + Dimensions (meters): + </text> + <text + top_pad="0" + width="160" + height="15" + font="SansSerifSmallBold" + text_color="White" + name="dimensions" + left_delta="0"> + X: Y: Z: + </text> + <text + top_delta="0" + width="160" + height="15" + name="dimension_dividers" + left_delta="41"> + | | + </text> + <text + top_delta="0" + width="160" + height="15" + name="dimension_x" + left_delta="-25"/> + <text + top_delta="0" + width="160" + height="15" + name="dimension_y" + left_delta="46"/> + <text + top_delta="0" + width="160" + height="15" + name="dimension_z" + left_delta="46"/> + </panel> + </panel> + + <panel + height="388" + top_delta="0" + name="physics_panel" + visible="false" + width="535" + left="0"> + <panel + height="22" + top_pad="15" + name="header_panel" + width="505" + bg_opaque_color="DkGray2" + background_visible="true" + background_opaque="true" + left="15"> + <text + width="200" + left="10" + name="header_text" + top="3" + height="10" + font="SansSerifBig" + text_color="White" + layout="topleft"> + Physics + </text> + </panel> + <text + top_pad="10" + width="474" + height="50" + font="SansSerifSmall" + layout="topleft" + name="description" + word_wrap="true" + left_delta="5"> + The wizard will create a physical shape, which determines how the object interacts with other objects and avatars. Set the slider to the detail level most appropriate for how your object will be used: + </text> + <panel + top_delta="44" + left="15" + height="270" + width="505" + name="content" + bg_opaque_color="DkGray2" + background_visible="true" + background_opaque="true"> + <text top="15" left="20" text_color="White" font="SansSerifSmallBold" width="110" height="30" wrap="true" halign="center">Higher Performance</text> + <text top="45" left="10" halign="center" width="130" word_wrap="true" font="SansSerifSmall" height="80">Faster rendering but less detailed; lowers Resource (prim) cost.</text> + <text top="15" left="372" text_color="White" font="SansSerifSmallBold" width="90" height="30" wrap="true" halign="center">Higher Accuracy</text> + <text top="45" left="360" halign="center" width="130" word_wrap="true" font="SansSerifSmall" height="80">More detailed model but slower; increases Resource (prim) cost.</text> + + <slider + follows="left|top" + height="22" + increment=".1" + layout="topleft" + left="20" + max_val="1" + initial_value="0.5" + min_val="0" + name="physics_slider" + show_text="false" + top="90" + width="440" /> + <text + font="SansSerifSmall" + top_pad="0" + width="500" + left_delta="6" + height="4">' ' ' ' ' ' ' ' ' ' '</text> + <text top_pad="10" width="110" halign="center" word_wrap="true" left="25" height="40">Recommended for solid objects</text> + <text top_delta="0" width="110" halign="center" word_wrap="true" left="190" height="40">Recommended for buildings</text> + <text top_delta="0" width="110" halign="center" word_wrap="true" left="350" height="40">Recommended for vehicles</text> + + + <icon + top_pad="5" + left="15" + width="470" + height="2" + image_name="model_wizard\divider_line.png"/> + + <text top_delta="30" width="180" text_color="White" left="160" name="streaming cost" height="20">Resource Cost: [COST]</text> + + </panel> + </panel> + + <panel + height="388" + top_delta="0" + name="physics2_panel" + visible="true" + width="535" + left="0"> + <panel + height="22" + top_pad="15" + name="header_panel" + width="505" + bg_opaque_color="DkGray2" + background_visible="true" + background_opaque="true" + left="15"> + <text + width="200" + left="10" + name="header_text" + text_color="White" + top="3" + height="10" + font="SansSerifBig" + layout="topleft"> + Physics + </text> + </panel> + <text + top_pad="14" + width="475" + height="50" + font="SansSerifSmall" + layout="topleft" + name="description" + word_wrap="true" + left_delta="5"> + Preview the physics shape below then click Next to continue. To modify the physics shape, click the Back button. + </text> + <panel + top_delta="40" + left="15" + height="270" + width="505" + name="content" + bg_opaque_color="DkGray2" + background_visible="true" + background_opaque="true"> + <text top="10" left="10" width="85" text_color="White" follows="left|top" height="15" name="lod_label"> + Model Preview: + </text> + <combo_box left_pad="5" top_delta="-5" follows="left|top" list_position="below" height="22" + name="preview_lod_combo3" width="90" tool_tip="LOD to view in preview render"> + <combo_item name="high"> + High + </combo_item> + <combo_item name="medium"> + Medium + </combo_item> + <combo_item name="low"> + Low + </combo_item> + <combo_item name="lowest"> + Lowest + </combo_item> + </combo_box> + <panel + left="10" + top_pad="10" + name="preview_panel" + bevel_style="none" + highlight_light_color="0.09 0.09 0.09 1" + border_style="line" + border="true" + height="190" + follows="all" + width="190"> + </panel> + <text + top_pad="8" + width="130" + height="14" + left="10" + text_color="White" + word_wrap="true"> + Dimensions (meters): + </text> + <text + top_pad="0" + width="160" + height="15" + font="SansSerifSmallBold" + text_color="White" + name="dimensions" + left_delta="0"> + X: Y: Z: + </text> + <text + top_delta="0" + width="160" + height="15" + name="dimension_dividers" + left_delta="41"> + | | + </text> + <text + top_delta="0" + width="160" + height="15" + name="dimension_x" + left_delta="-25"/> + <text + top_delta="0" + width="160" + height="15" + name="dimension_y" + left_delta="46"/> + <text + top_delta="0" + width="160" + height="15" + name="dimension_z" + left_delta="46"/> + <text top="60" width="180" text_color="White" left="225" name="streaming cost" height="20">Resource Cost: [COST]</text> + </panel> + </panel> + + <panel + height="388" + top_delta="0" + name="review_panel" + visible="false" + width="535" + left="0"> + <panel + height="22" + top_pad="15" + name="header_panel" + width="505" + bg_opaque_color="DkGray2" + background_visible="true" + background_opaque="true" + left="15"> + <text + width="200" + left="10" + name="header_text" + text_color="White" + top="3" + height="10" + font="SansSerifBig" + layout="topleft"> + Review + </text> + </panel> + <text + top_pad="14" + width="470" + height="24" + font="SansSerifSmall" + layout="topleft" + name="description" + word_wrap="true" + left_delta="5"> + Review the details below then click. Upload to upload your model. Your L$ balance will be charged when you click Upload. + </text> + <icon + top_pad="10" + left="20" + width="495" + height="2" + image_name="model_wizard\divider_line.png"/> + <panel + top_pad="5" + left="15" + height="270" + width="505" + name="content"> + <text top="10" left="10" width="85" text_color="White" follows="left|top" height="15" name="lod_label"> + Model Preview: + </text> + <combo_box left_pad="5" top_delta="-5" follows="left|top" list_position="below" height="22" + name="preview_lod_combo" width="90" tool_tip="LOD to view in preview render"> + <combo_item name="high"> + High + </combo_item> + <combo_item name="medium"> + Medium + </combo_item> + <combo_item name="low"> + Low + </combo_item> + <combo_item name="lowest"> + Lowest + </combo_item> + </combo_box> + <panel + left="10" + top_pad="10" + name="preview_panel" + bevel_style="none" + highlight_light_color="0.09 0.09 0.09 1" + border_style="line" + border="true" + height="190" + follows="all" + width="190"> + </panel> + <text + top_pad="8" + width="130" + height="14" + left="10" + text_color="White" + word_wrap="true"> + Dimensions (meters): + </text> + <text + top_pad="0" + width="160" + height="15" + font="SansSerifSmallBold" + text_color="White" + name="dimensions" + left_delta="0"> + X: Y: Z: + </text> + <text + top_delta="0" + width="160" + height="15" + name="dimension_dividers" + left_delta="41"> + | | + </text> + <text + top_delta="0" + width="160" + height="15" + name="dimension_x" + left_delta="-25"/> + <text + top_delta="0" + width="160" + height="15" + name="dimension_y" + left_delta="46"/> + <text + top_delta="0" + width="160" + height="15" + name="dimension_z" + left_delta="46"/> + </panel> + <text + width="300" + height="12" + top="125" + name="streaming cost" + left="230" + font="SansSerifSmallBold" + text_color="White">Resource Cost: [COST]</text> + <text + width="285" + height="30" + top_pad="0" + left_delta="0" + word_wrap="true" + font="SansSerifItalic">This is the cost to your Region's prim/object limit, at default scale</text> + <text + width="300" + height="12" + name="physics cost" + top_pad="10" + left_delta="0" + font="SansSerifSmallBold" + text_color="White">Physics Cost: [COST]</text> + <text + width="285" + height="30" + top_pad="0" + left_delta="0" + word_wrap="true" + font="SansSerifItalic">This is the cost to your Region's prim/object limit, at default scale</text> + <text + width="200" + height="12" + top_pad="10" + left_delta="0" + font="SansSerifSmallBold" + text_color="White">Upload Fee:</text> + <text + width="285" + height="26" + top_pad="0" + left_delta="0" + word_wrap="true" + font="SansSerifItalic">This is the amount the upload will cost.</text> + <check_box + height="16" + layout="topleft" + left_delta="0" + name="confirm_checkbox" + top_pad="15" + width="16" /> + <text + height="100" + width="240" + word_wrap="true" + left_delta="25" + top_delta="0">I confirm that I have the appropriate rights to the material contained in this model. [secondlife:///app/floater/learn_more Learn more]</text> + </panel> + + + + + <panel + height="388" + top_delta="0" + name="upload_panel" + visible="false" + width="535" + left="0"> + <panel + height="22" + top_pad="15" + name="header_panel" + width="505" + bg_opaque_color="DkGray2" + background_visible="true" + background_opaque="true" + left="15"> + <text + width="200" + left="10" + name="header_text" + top="3" + text_color="White" + height="10" + font="SansSerifBig" + layout="topleft"> + Upload Complete! + </text> + </panel> + <text + top_pad="14" + width="474" + height="20" + font="SansSerifSmall" + layout="topleft" + name="description" + word_wrap="true" + left_delta="5"> + Congratulations! Your model has been sucessfully uploaded. You will find the model in the Objects folder in your inventory. + </text> + <icon + top_pad="15" + left_delta="0" + width="495" + height="2" + image_name="model_wizard\divider_line.png"/> + </panel> + + + + <button + top="440" + right="-245" + width="90" + height="22" + name="back" + label="<< Back" /> + <button + top_delta="0" + right="-150" + width="90" + height="22" + name="next" + label="Next >> " /> + <button + top_delta="0" + right="-150" + width="90" + height="22" + visible="false" + name="upload" + tool_tip="Upload to simulator" + label="Upload" /> + <button + top_delta="0" + right="-15" + width="90" + height="22" + name="cancel" + label="Cancel" /> + <button + top_delta="0" + right="-15" + width="90" + height="22" + name="close" + visible="false" + label="Close" /> + <spinner visible="false" left="10" height="20" follows="top|left" width="80" top_pad="-50" value="1.0" min_val="0.01" max_val="64.0" name="import_scale"/> + + <string name="status_idle">Idle</string> + <string name="status_reading_file">Loading...</string> + <string name="status_generating_meshes">Generating Meshes...</string> + <string name="status_vertex_number_overflow">Error: Vertex number is more than 65534, aborted!</string> + <string name="high">High</string> + <string name="medium">Medium</string> + <string name="low">Low</string> + <string name="lowest">Lowest</string> + <string name="mesh_status_good">Ship it!</string> + <string name="mesh_status_na">N/A</string> + <string name="mesh_status_none">None</string> + <string name="mesh_status_submesh_mismatch">Levels of detail have a different number of textureable faces.</string> + <string name="mesh_status_mesh_mismatch">Levels of detail have a different number of mesh instances.</string> + <string name="mesh_status_too_many_vertices">Level of detail has too many vertices.</string> + <string name="mesh_status_missing_lod">Missing required level of detail.</string> + <string name="layer_all">All</string> + <!-- Text to display in physics layer combo box for "all layers" --> + +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml index e342b441ac..40bf7bfed7 100644 --- a/indra/newview/skins/default/xui/en/floater_tools.xml +++ b/indra/newview/skins/default/xui/en/floater_tools.xml @@ -1,3194 +1,3194 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater
- legacy_header_height="18"
- follows="left|top|right"
- height="580"
- layout="topleft"
- bg_opaque_image="Window_NoTitle_Foreground"
- bg_alpha_image="Window_NoTitle_Background"
- name="toolbox floater"
- help_topic="toolbox_floater"
- save_rect="true"
- short_title="BUILD TOOLS"
- single_instance="true"
- save_visibility="true"
- sound_flags="0"
- width="295">
- <floater.string
- name="status_rotate">
- Drag colored bands to rotate object
- </floater.string>
- <floater.string
- name="status_scale">
- Click and drag to stretch selected side
- </floater.string>
- <floater.string
- name="status_move">
- Drag to move, shift-drag to copy
- </floater.string>
- <floater.string
- name="status_modifyland">
- Click and hold to modify land
- </floater.string>
- <floater.string
- name="status_camera">
- Click and drag to move camera
- </floater.string>
- <floater.string
- name="status_grab">
- Drag to move, Ctrl to lift, Ctrl+Shift to rotate
- </floater.string>
- <floater.string
- name="status_place">
- Click inworld to build
- </floater.string>
- <floater.string
- name="status_selectland">
- Click and drag to select land
- </floater.string>
- <floater.string
- name="grid_screen_text">
- Screen
- </floater.string>
- <floater.string
- name="grid_local_text">
- Local
- </floater.string>
- <floater.string
- name="grid_world_text">
- World
- </floater.string>
- <floater.string
- name="grid_reference_text">
- Reference
- </floater.string>
- <floater.string
- name="grid_attachment_text">
- Attachment
- </floater.string>
- <button
- follows="left|top"
- height="25"
- image_bottom_pad="1"
- image_overlay="Tool_Zoom"
- image_selected="PushButton_Selected_Press"
- layout="topleft"
- left="10"
- name="button focus"
- tool_tip="Focus"
- width="35">
- <button.commit_callback
- function="BuildTool.setTool"
- parameter="Focus" />
- </button>
- <button
- follows="left|top"
- height="25"
- image_bottom_pad="1"
- image_overlay="Tool_Grab"
- image_selected="PushButton_Selected_Press"
- layout="topleft"
- left_pad="10"
- name="button move"
- tool_tip="Move"
- width="35">
- <button.commit_callback
- function="BuildTool.setTool"
- parameter="Move" />
- </button>
- <button
- follows="left|top"
- height="25"
- image_bottom_pad="1"
- image_overlay="Tool_Face"
- image_selected="PushButton_Selected_Press"
- layout="topleft"
- left_pad="10"
- name="button edit"
- tool_tip="Edit"
- width="35">
- <button.commit_callback
- function="BuildTool.setTool"
- parameter="Edit" />
- </button>
- <button
- follows="left|top"
- height="25"
- image_bottom_pad="1"
- image_overlay="Tool_Create"
- image_selected="PushButton_Selected_Press"
- layout="topleft"
- left_pad="10"
- name="button create"
- tool_tip="Create"
- width="35">
- <button.commit_callback
- function="BuildTool.setTool"
- parameter="Create" />
- </button>
- <button
- follows="left|top"
- height="25"
- image_bottom_pad="1"
- image_overlay="Tool_Dozer"
- image_selected="PushButton_Selected_Press"
- layout="topleft"
- left_pad="10"
- name="button land"
- tool_tip="Land"
- width="35">
- <button.commit_callback
- function="BuildTool.setTool"
- parameter="Land" />
- </button>
- <text
- height="30"
- word_wrap="true"
- use_ellipses="true"
- type="string"
- text_color="LabelSelectedDisabledColor"
- length="1"
- follows="left|top"
- layout="topleft"
- left="8"
- name="text status"
- top_pad="3"
- width="285">
- Drag to move, shift-drag to copy
- </text>
- <radio_group
- layout="topleft"
- left="10"
- height="70"
- top="59"
- name="focus_radio_group">
- <radio_item
- top_pad="6"
- label="Zoom"
- layout="topleft"
- name="radio zoom" />
- <radio_item
- top_pad="6"
- label="Orbit (Ctrl)"
- layout="topleft"
- name="radio orbit" />
- <radio_item
- top_pad="6"
- label="Pan (Ctrl+Shift)"
- layout="topleft"
- name="radio pan" />
- <radio_group.commit_callback
- function="BuildTool.commitRadioFocus"/>
- </radio_group>
- <slider_bar
- follows="left|top"
- height="14"
- increment="0.01"
- initial_value="0.125"
- layout="topleft"
- max_val="0.5"
- top_delta="-2"
- left_delta="100"
- name="slider zoom"
- width="134">
- <slider_bar.commit_callback
- function="BuildTool.commitZoom"/>
- </slider_bar>
- <radio_group
- left="10"
- height="70"
- top="59"
- layout="topleft"
- name="move_radio_group">
- <radio_item
- top_pad="6"
- label="Move"
- layout="topleft"
- name="radio move" />
- <radio_item
- top_pad="6"
- label="Lift (Ctrl)"
- layout="topleft"
- name="radio lift" />
- <radio_item
- top_pad="6"
- label="Spin (Ctrl+Shift)"
- layout="topleft"
- name="radio spin" />
- <radio_group.commit_callback
- function="BuildTool.commitRadioMove"/>
- </radio_group>
- <radio_group
- follows="left|top"
- left="5"
- top="59"
- height="70"
- layout="topleft"
- name="edit_radio_group">
- <radio_item
- label="Move"
- layout="topleft"
- name="radio position" />
- <radio_item
- top_pad="6"
- label="Rotate (Ctrl)"
- layout="topleft"
- name="radio rotate" />
- <radio_item
- top_pad="6"
- label="Stretch (Ctrl+Shift)"
- layout="topleft"
- name="radio stretch" />
- <radio_item
- top_pad="6"
- label="Select Face"
- layout="topleft"
- name="radio select face" />
- <radio_group.commit_callback
- function="BuildTool.commitRadioEdit"/>
- </radio_group>
- <check_box
- left="5"
- follows="left|top"
- height="28"
- control_name="EditLinkedParts"
- label="Edit linked"
- layout="topleft"
- name="checkbox edit linked parts"
- top_pad="-10">
- <check_box.commit_callback
- function="BuildTool.selectComponent"/>
- </check_box>
-
- <button
- follows="left|top"
- height="23"
- label="Link"
- top_pad="2"
- layout="topleft"
- left="5"
- name="link_btn"
- width="50">
- <button.commit_callback
- function="BuildTool.LinkObjects"/>
- </button>
- <button
- follows="left|top"
- height="23"
- label="Unlink"
- layout="topleft"
- left_pad="2"
- name="unlink_btn"
- width="50">
- <button.commit_callback
- function="BuildTool.UnlinkObjects"/>
- </button>
- <text
- text_color="LtGray_50"
- follows="top|left"
- halign="left"
- left_pad="3"
- name="RenderingCost"
- tool_tip="Shows the rendering cost calculated for this object"
- top_delta="11"
- type="string"
- width="100">
- þ: [COUNT]
- </text>
- <check_box
- control_name="ScaleUniform"
- height="19"
- label=""
- layout="topleft"
- left="143"
- name="checkbox uniform"
- top="50"
- width="20" />
- <text
- height="19"
- label="Stretch Both Sides"
- left_delta="20"
- name="checkbox uniform label"
- top_delta="2"
- width="120"
- layout="topleft"
- follows="top|left"
- wrap="true">
- Stretch Both Sides
- </text>
- <check_box
- control_name="ScaleStretchTextures"
- height="19"
- initial_value="true"
- label="Stretch Textures"
- layout="topleft"
- left="143"
- name="checkbox stretch textures"
- top_pad="-6"
- follows="left|top"
- width="134" />
- <check_box
- control_name="SnapEnabled"
- height="18"
- initial_value="true"
- label="Snap to grid"
- layout="topleft"
- top_pad="0"
- name="checkbox snap to grid"
- width="134" />
- <combo_box
- height="23"
- layout="topleft"
- follows="left|top"
- name="combobox grid mode"
- tool_tip="Choose the type of grid ruler for positioning the object"
- top_pad="0"
- width="108">
- <combo_box.item
- label="World grid"
- name="World"
- value="World" />
- <combo_box.item
- label="Local grid"
- name="Local"
- value="Local" />
- <combo_box.item
- label="Reference grid"
- name="Reference"
- value="Reference" />
- <combo_box.commit_callback
- function="BuildTool.gridMode"/>
- </combo_box>
- <button
- left_pad="0"
- image_selected="ForwardArrow_Press"
- image_unselected="ForwardArrow_Off"
- layout="topleft"
- follows="top|left"
- name="Options..."
- tool_tip="See more grid options"
- top_pad="-22"
- right="-10"
- width="18"
- height="23" >
- <button.commit_callback
- function="BuildTool.gridOptions"/>
- </button>
- <button
- follows="left|top"
- height="20"
- image_disabled="Object_Cube"
- image_disabled_selected="Object_Cube"
- image_selected="Object_Cube_Selected"
- image_unselected="Object_Cube"
- layout="topleft"
- left="10"
- name="ToolCube"
- tool_tip="Cube"
- top="51"
- width="20" />
- <button
- follows="left|top"
- height="20"
- image_disabled="Object_Prism"
- image_disabled_selected="Object_Prism"
- image_selected="Object_Prism_Selected"
- image_unselected="Object_Prism"
- layout="topleft"
- left_delta="29"
- name="ToolPrism"
- tool_tip="Prism"
- top_delta="0"
- width="20" />
- <button
- follows="left|top"
- height="20"
- image_disabled="Object_Pyramid"
- image_disabled_selected="Object_Pyramid"
- image_selected="Object_Pyramid_Selected"
- image_unselected="Object_Pyramid"
- layout="topleft"
- left_delta="29"
- name="ToolPyramid"
- tool_tip="Pyramid"
- top_delta="0"
- width="20" />
- <button
- follows="left|top"
- height="20"
- image_disabled="Object_Tetrahedron"
- image_disabled_selected="Object_Tetrahedron"
- image_selected="Object_Tetrahedron_Selected"
- image_unselected="Object_Tetrahedron"
- layout="topleft"
- left_delta="29"
- name="ToolTetrahedron"
- tool_tip="Tetrahedron"
- top_delta="0"
- width="20" />
- <button
- follows="left|top"
- height="20"
- image_disabled="Object_Cylinder"
- image_disabled_selected="Object_Cylinder"
- image_selected="Object_Cylinder_Selected"
- image_unselected="Object_Cylinder"
- layout="topleft"
- left_delta="29"
- name="ToolCylinder"
- tool_tip="Cylinder"
- top_delta="0"
- width="20" />
- <button
- follows="left|top"
- height="20"
- image_disabled="Object_Hemi_Cylinder"
- image_disabled_selected="Object_Hemi_Cylinder"
- image_selected="Object_Hemi_Cylinder_Selected"
- image_unselected="Object_Hemi_Cylinder"
- layout="topleft"
- left_delta="29"
- name="ToolHemiCylinder"
- tool_tip="Hemicylinder"
- top_delta="0"
- width="20" />
- <button
- follows="left|top"
- height="20"
- image_disabled="Object_Cone"
- image_disabled_selected="Object_Cone"
- image_selected="Object_Cone_Selected"
- image_unselected="Object_Cone"
- layout="topleft"
- left_delta="29"
- name="ToolCone"
- tool_tip="Cone"
- top_delta="0"
- width="20" />
- <button
- follows="left|top"
- height="20"
- image_disabled="Object_Hemi_Cone"
- image_disabled_selected="Object_Hemi_Cone"
- image_selected="Object_Hemi_Cone_Selected"
- image_unselected="Object_Hemi_Cone"
- layout="topleft"
- left_delta="29"
- name="ToolHemiCone"
- tool_tip="Hemicone"
- top_delta="0"
- width="20" />
- <button
- follows="left|top"
- height="20"
- image_disabled="Object_Sphere"
- image_disabled_selected="Object_Sphere"
- image_selected="Object_Sphere_Selected"
- image_unselected="Object_Sphere"
- layout="topleft"
- left_delta="29"
- name="ToolSphere"
- tool_tip="Sphere"
- top_delta="0"
- width="20" />
- <button
- follows="left|top"
- height="20"
- image_disabled="Object_Hemi_Sphere"
- image_disabled_selected="Object_Hemi_Sphere"
- image_selected="Object_Hemi_Sphere_Selected"
- image_unselected="Object_Hemi_Sphere"
- layout="topleft"
- left_delta="29"
- name="ToolHemiSphere"
- tool_tip="Hemisphere"
- top_delta="0"
- width="20" />
- <button
- follows="left|top"
- height="20"
- image_disabled="Object_Torus"
- image_disabled_selected="Object_Torus"
- image_selected="Object_Torus_Selected"
- image_unselected="Object_Torus"
- layout="topleft"
- left="10"
- name="ToolTorus"
- tool_tip="Torus"
- top="77"
- width="20" />
- <button
- follows="left|top"
- height="20"
- image_disabled="Object_Tube"
- image_disabled_selected="Object_Tube"
- image_selected="Object_Tube_Selected"
- image_unselected="Object_Tube"
- layout="topleft"
- left_delta="29"
- name="ToolTube"
- tool_tip="Tube"
- top_delta="0"
- width="20" />
- <button
- follows="left|top"
- height="20"
- image_disabled="Object_Ring"
- image_disabled_selected="Object_Ring"
- image_selected="Object_Ring_Selected"
- image_unselected="Object_Ring"
- layout="topleft"
- left_delta="29"
- name="ToolRing"
- tool_tip="Ring"
- top_delta="0"
- width="20" />
- <button
- follows="left|top"
- height="20"
- image_disabled="Object_Tree"
- image_disabled_selected="Object_Tree"
- image_selected="Object_Tree_Selected"
- image_unselected="Object_Tree"
- layout="topleft"
- left_delta="29"
- name="ToolTree"
- tool_tip="Tree"
- top_delta="0"
- width="20" />
- <button
- follows="left|top"
- height="20"
- image_disabled="Object_Grass"
- image_disabled_selected="Object_Grass"
- image_selected="Object_Grass_Selected"
- image_unselected="Object_Grass"
- image_overlay_color="Red"
- layout="topleft"
- left_delta="29"
- name="ToolGrass"
- tool_tip="Grass"
- top_delta="0"
- width="20" />
- <check_box
- control_name="CreateToolKeepSelected"
- height="19"
- label="Keep Tool selected"
- layout="topleft"
- left="4"
- name="checkbox sticky"
- top="101"
- width="128" />
- <check_box
- control_name="CreateToolCopySelection"
- height="19"
- label="Copy selection"
- layout="topleft"
- left_delta="0"
- name="checkbox copy selection"
- top_delta="15"
- width="134" />
- <check_box
- control_name="CreateToolCopyCenters"
- height="19"
- initial_value="true"
- label="Center Copy"
- layout="topleft"
- left_delta="18"
- name="checkbox copy centers"
- top="132"
- width="134" />
- <check_box
- control_name="CreateToolCopyRotates"
- height="19"
- label="Rotate Copy"
- layout="topleft"
- left_delta="0"
- name="checkbox copy rotates"
- top_delta="16"
- width="134" />
- <radio_group
- height="105"
- layout="topleft"
- left="4"
- name="land_radio_group"
- top="54"
- width="114">
- <radio_item
- height="19"
- label="Select Land"
- layout="topleft"
- left="0"
- name="radio select land"
- top="-106"
- width="134" />
- <radio_item
- height="19"
- label="Flatten"
- layout="topleft"
- left_delta="0"
- name="radio flatten"
- top_delta="15"
- width="114" />
- <radio_item
- height="19"
- label="Raise"
- layout="topleft"
- left_delta="0"
- name="radio raise"
- top_delta="15"
- width="114" />
- <radio_item
- height="19"
- label="Lower"
- layout="topleft"
- left_delta="0"
- name="radio lower"
- top_delta="15"
- width="114" />
- <radio_item
- height="19"
- label="Smooth"
- layout="topleft"
- left_delta="0"
- name="radio smooth"
- top_delta="15"
- width="114" />
- <radio_item
- height="19"
- label="Roughen"
- layout="topleft"
- left_delta="0"
- name="radio noise"
- top_delta="15"
- width="114" />
- <radio_item
- height="19"
- label="Revert"
- layout="topleft"
- left_delta="0"
- name="radio revert"
- top_delta="15"
- width="114" />
- <radio_group.commit_callback
- function="BuildTool.commitRadioLand"/>
- </radio_group>
- <text
- type="string"
- length="1"
- follows="left|top"
- height="12"
- layout="topleft"
- left="135"
- name="Bulldozer:"
- top="57"
- width="100">
- Bulldozer:
- </text>
- <text
- type="string"
- length="1"
- follows="left|top"
- height="12"
- layout="topleft"
- name="Dozer Size:"
- left="135"
- top_pad="5"
- width="50">
- Size
- </text>
- <slider_bar
- control_name ="LandBrushSize"
- follows="left|top"
- height="19"
- initial_value="2.0"
- layout="topleft"
- max_val="11"
- min_val="1"
- left_pad="0"
- name="slider brush size"
- top_delta="-3"
- width="80" />
- <text
- type="string"
- length="1"
- follows="left|top"
- height="12"
- layout="topleft"
- name="Strength:"
- left="135"
- top_pad="5"
- width="50">
- Strength
- </text>
- <slider_bar
- follows="left|top"
- height="19"
- left_pad="0"
- initial_value="0.00"
- layout="topleft"
- max_val="2"
- min_val="-1"
- name="slider force"
- top_delta="-3"
- width="80" >
- <slider_bar.commit_callback
- function="BuildTool.LandBrushForce"/>
- </slider_bar>
- <button
- follows="left|top"
- height="23"
- label="Apply"
- label_selected="Apply"
- top_pad="5"
- layout="topleft"
- left="135"
- name="button apply to selection"
- tool_tip="Modify selected land"
- width="82">
- <button.commit_callback
- function="BuildTool.applyToSelection"/>
- </button>
- <text
- text_color="LtGray_50"
- type="string"
- length="1"
- height="10"
- follows="left|top"
- halign="right"
- layout="topleft"
- right="-10"
- name="obj_count"
- top_pad="5"
- width="143">
- Objects: [COUNT]
- </text>
- <text
- text_color="LtGray_50"
- type="string"
- length="1"
- height="10"
- follows="left|top"
- halign="right"
- layout="topleft"
- right="-10"
- name="prim_count"
- width="143">
- Prims: [COUNT]
- </text>
- <text
- text_color="LtGray_50"
- type="string"
- length="1"
- height="10"
- follows="left|top"
- halign="right"
- layout="topleft"
- right="-120"
- name="linked_set_count"
- top="144"
- width="80">
- Linked Sets: [COUNT]
- </text>
- <text
- text_color="LtGray_50"
- type="string"
- length="1"
- height="10"
- follows="left|top"
- halign="right"
- layout="topleft"
- top_delta="0"
- right="-8"
- name="linked_set_cost"
- tool_tip="Cost of currently selected linked sets as [prims],[physics complexity]"
- width="80">
- Cost: [COST] / [PHYSICS]
- </text>
- <text
- text_color="LtGray_50"
- type="string"
- length="1"
- follows="left|top"
- halign="right"
- layout="topleft"
- top_pad="5"
- right="-120"
- name="object_count"
- width="80">
- Objects: [COUNT]
- </text>
- <text
- text_color="LtGray_50"
- type="string"
- length="1"
- follows="left|top"
- halign="right"
- layout="topleft"
- top_delta="0"
- right="-8"
- name="object_cost"
- tool_tip="Cost of currently selected objects as [prims] / [physics complexity]"
- width="80">
- Cost: [COST] / [PHYSICS]
- </text>
- <!-- <text -->
- <!-- text_color="LtGray_50" -->
- <!-- type="string" -->
- <!-- length="1" -->
- <!-- height="10" -->
- <!-- follows="left|top" -->
- <!-- halign="right" -->
- <!-- layout="topleft" -->
- <!-- right="-10" -->
- <!-- name="obj_count" -->
- <!-- top_pad="5" -->
- <!-- width="143"> -->
- <!-- Objects: [COUNT] -->
- <!-- </text> -->
- <!-- <text -->
- <!-- text_color="LtGray_50" -->
- <!-- type="string" -->
- <!-- length="1" -->
- <!-- follows="left|top" -->
- <!-- halign="right" -->
- <!-- layout="topleft" -->
- <!-- right="-10" -->
- <!-- name="prim_count" -->
- <!-- width="143"> -->
- <!-- Prims: [COUNT] -->
- <!-- </text> -->
- <tab_container
- follows="left|top"
- height="410"
- halign="center"
- left="0"
- name="Object Info Tabs"
- tab_max_width="100"
- tab_min_width="40"
- tab_position="top"
- tab_height="25"
- top="173"
- width="295">
-
-<panel
- border="false"
- follows="all"
- label="General"
- layout="topleft"
- mouse_opaque="false"
- help_topic="toolbox_general_tab"
- name="General"
- top="16"
- width="295">
- <panel.string
- name="text deed continued">
- Deed
- </panel.string>
- <panel.string
- name="text deed">
- Deed
- </panel.string>
- <panel.string
- name="text modify info 1">
- You can modify this object
- </panel.string>
- <panel.string
- name="text modify info 2">
- You can modify these objects
- </panel.string>
- <panel.string
- name="text modify info 3">
- You can't modify this object
- </panel.string>
- <panel.string
- name="text modify info 4">
- You can't modify these objects
- </panel.string>
- <panel.string
- name="text modify warning">
- You must select entire object to set permissions
- </panel.string>
- <panel.string
- name="Cost Default">
- Price: L$
- </panel.string>
- <panel.string
- name="Cost Total">
- Total Price: L$
- </panel.string>
- <panel.string
- name="Cost Per Unit">
- Price Per: L$
- </panel.string>
- <panel.string
- name="Cost Mixed">
- Mixed Price
- </panel.string>
- <panel.string
- name="Sale Mixed">
- Mixed Sale
- </panel.string>
- <text
- follows="left|top"
- height="10"
- left="10"
- name="Name:"
- top="5"
- width="90">
- Name:
- </text>
- <line_editor
- follows="left|top|right"
- height="19"
- left_pad="0"
- max_length_bytes="63"
- name="Object Name"
- select_on_focus="true"
- top_delta="0"
- width="170" />
- <text
- follows="left|top"
- height="10"
- left="10"
- name="Description:"
- top_pad="3"
- width="90">
- Description:
- </text>
- <line_editor
- follows="left|top|right"
- height="19"
- left_pad="0"
- max_length_bytes="127"
- name="Object Description"
- select_on_focus="true"
- top_delta="0"
- width="170" />
- <text
- type="string"
- left="10"
- length="1"
- follows="left|top"
- height="19"
- layout="topleft"
- name="Creator:"
- top_pad="7"
- width="90">
- Creator:
- </text>
- <!-- *NOTE: Intentionally wide for long names -->
- <text
- type="string"
- length="1"
- follows="left|top"
- left_pad="0"
- height="20"
- layout="topleft"
- name="Creator Name"
- top_delta="0"
- translate="false"
- width="190"
- word_wrap="true"
- use_ellipses="true">
- TestString PleaseIgnore (please.ignore)
- </text>
- <text
- type="string"
- length="1"
- left="10"
- follows="left|top"
- height="19"
- layout="topleft"
- name="Owner:"
- top_pad="13"
- width="90">
- Owner:
- </text>
- <!-- *NOTE: Intentionally wide for long names -->
- <text
- type="string"
- length="1"
- follows="left|top"
- height="20"
- layout="topleft"
- name="Owner Name"
- left_pad="0"
- top_delta="0"
- translate="false"
- width="190"
- word_wrap="true"
- use_ellipses="true">
- TestString PleaseIgnore (please.ignore)
- </text>
- <text
- type="string"
- length="1"
- follows="left|top"
- layout="topleft"
- left="10"
- height="18"
- name="Group:"
- top_pad="17"
- width="75">
- Group:
- </text>
- <name_box
- follows="left|top"
- height="18"
- initial_value="Loading..."
- layout="topleft"
- left_pad="23"
- name="Group Name Proxy"
- width="142" />
- <button
- follows="top|left"
- height="23"
- image_overlay="Edit_Wrench"
- layout="topleft"
- left_pad="13"
- name="button set group"
- tab_stop="false"
- tool_tip="Choose a group to share this object's permissions"
- width="23" />
- <check_box
- height="19"
- follows="left|top"
- label="Share"
- layout="topleft"
- name="checkbox share with group"
- tool_tip="Allow all members of the set group to share your modify permissions for this object. You must Deed to enable role restrictions."
- top_pad="10"
- left="100"
- width="87" />
- <button
- follows="top|left"
- height="23"
- label="Deed"
- label_selected="Deed"
- layout="topleft"
- name="button deed"
- left_pad="19"
- tool_tip="Deeding gives this item away with next owner permissions. Group shared objects can be deeded by a group officer."
- width="80" />
- <text
- type="string"
- length="1"
- follows="left|top"
- height="16"
- layout="topleft"
- top_pad="10"
- left="10"
- name="label click action"
- width="118">
- Click to:
- </text>
- <combo_box
- follows="left|top"
- height="23"
- layout="topleft"
- name="clickaction"
- width="148"
- left_pad="10">
- <combo_box.item
- label="Touch (default)"
- name="Touch/grab(default)"
- value="Touch" />
- <combo_box.item
- label="Sit on object"
- name="Sitonobject"
- value="Sit" />
- <combo_box.item
- label="Buy object"
- name="Buyobject"
- value="Buy" />
- <combo_box.item
- label="Pay object"
- name="Payobject"
- value="Pay" />
- <combo_box.item
- label="Open"
- name="Open"
- value="Open" />
- <combo_box.item
- label="Zoom"
- name="Zoom"
- value="Zoom" />
- </combo_box>
- <check_box
- height="23"
- label="For Sale:"
- layout="topleft"
- name="checkbox for sale"
- left="7"
- width="100" />
-<!-- NEW SALE TYPE COMBO BOX -->
- <combo_box
- left_pad="10"
- layout="topleft"
- follows="left|top"
- allow_text_entry="false"
- height="23"
- initial_value="2"
- max_chars="20"
- mouse_opaque="true"
- name="sale type"
- width="168">
- <combo_box.item
- name="Copy"
- label="Copy"
- value="2" />
- <combo_box.item
- name="Contents"
- label="Contents"
- value="3" />
- <combo_box.item
- name="Original"
- label="Original"
- value="1" />
- </combo_box>
-<!-- NEW PRICE SPINNER
-Objects are allowed to be for sale for L$0 to invoke buy UI behavior
-even though the user gets a free copy.
--->
- <spinner
- follows="left|top"
- decimal_digits="0"
- increment="1"
- top_pad="8"
- left="118"
- control_name="Edit Cost"
- name="Edit Cost"
- label="Price: L$"
- label_width="65"
- width="165"
- min_val="0"
- height="20"
- max_val="999999999" />
- <check_box
- height="15"
- width="110"
- top_pad="5"
- label="Show in search"
- layout="topleft"
- left="100"
- name="search_check"
- tool_tip="Let people see this object in search results" />
- <panel
- border="false"
- follows="left|top"
- layout="topleft"
- mouse_opaque="false"
- background_visible="true"
- bg_alpha_color="DkGray"
- name="perms_build"
- left="0"
- top_pad="4"
- height="105"
- width="290">
- <text
- type="string"
- length="1"
- left="10"
- top_pad="9"
- text_color="EmphasisColor"
- height="16"
- follows="left|top|right"
- layout="topleft"
- name="perm_modify"
- width="264">
- You can modify this object
- </text>
- <text
- type="string"
- follows="left|top"
- name="Anyone can:"
- width="250"
- left="10">
- Anyone:
- </text>
- <check_box
- height="19"
- label="Move"
- layout="topleft"
- name="checkbox allow everyone move"
- left="10"
- width="85" />
- <check_box
- height="19"
- label="Copy"
- layout="topleft"
- left_pad="0"
- name="checkbox allow everyone copy"
- width="90" />
- <text
- type="string"
- follows="left|top"
- height="19"
- name="Next owner can:"
- width="250"
- left="10">
- Next owner:
- </text>
- <check_box
- follows="left|top|right"
- label="Modify"
- layout="topleft"
- left="10"
- name="checkbox next owner can modify"
- width="85" />
- <check_box
- follows="left|top|right"
- height="19"
- label="Copy"
- layout="topleft"
- left_pad="0"
- name="checkbox next owner can copy"
- width="80" />
- <check_box
- follows="left|top|right"
- height="19"
- label="Transfer"
- layout="topleft"
- name="checkbox next owner can transfer"
- left_pad="0"
- top_delta="0"
- tool_tip="Next owner can give away or resell this object"
- width="100" />
-<!-- *NOTE: These "B/O/G/E/N/F fields may overlap "perm_modify" above,
- but that's OK, this is used only for debugging. -->
- <text
- type="string"
- text_color="EmphasisColor"
- length="1"
- top="9"
- follows="left|top"
- layout="topleft"
- left="230"
- name="B:"
- height="10"
- width="80">
- B:
- </text>
- <text
- type="string"
- text_color="White"
- length="1"
- follows="left|top"
- layout="topleft"
- left_delta="0"
- top_pad="2"
- name="O:"
- height="10"
- width="80">
- O:
- </text>
- <text
- type="string"
- text_color="EmphasisColor"
- length="1"
- follows="left|top"
- layout="topleft"
- left_delta="0"
- top_pad="2"
- name="G:"
- height="10"
- width="80">
- G:
- </text>
- <text
- type="string"
- text_color="White"
- length="1"
- follows="left|top"
- left_delta="0"
- top_pad="2"
- layout="topleft"
- name="E:"
- height="10"
- width="80">
- E:
- </text>
- <text
- type="string"
- text_color="EmphasisColor"
- length="1"
- follows="left|top"
- layout="topleft"
- left_delta="0"
- top_pad="2"
- name="N:"
- height="10"
- width="80">
- N:
- </text>
- <text
- type="string"
- text_color="White"
- length="1"
- follows="left|top"
- layout="topleft"
- left_delta="0"
- top_pad="2"
- name="F:"
- height="10"
- width="80">
- F:
- </text>
- </panel>
- </panel>
- <!-- Object tab -->
- <panel
- border="false"
- follows="all"
- height="567"
- label="Object"
- layout="topleft"
- left_delta="0"
- mouse_opaque="false"
- help_topic="toolbox_object_tab"
- name="Object"
- top="16"
- width="295">
- <check_box
- height="19"
- label="Locked"
- layout="topleft"
- name="checkbox locked"
- tool_tip="Prevents object from being moved or deleted. Frequently useful during building to avoid unintended edits."
- top_pad="5"
- left="10"
- width="123" />
- <check_box
- height="19"
- label="Physical"
- layout="topleft"
- name="Physical Checkbox Ctrl"
- tool_tip="Allows object to be pushed and affected by gravity"
- top_pad="0"
- width="123" />
- <check_box
- height="19"
- label="Temporary"
- layout="topleft"
- name="Temporary Checkbox Ctrl"
- tool_tip="Causes object to be deleted 1 minute after creation"
- top_pad="0"
- width="123" />
- <check_box
- height="19"
- label="Phantom"
- layout="topleft"
- name="Phantom Checkbox Ctrl"
- tool_tip="Causes object to not collide with other objects or avatars"
- top_pad="0"
- width="123" />
-
- <text
- type="string"
- length="1"
- follows="left|top"
- height="10"
- layout="topleft"
- name="label position"
- top_pad="10"
- width="121">
- Position (meters)
- </text>
- <spinner
- follows="left|top"
- height="19"
- increment="0.01"
- initial_value="0"
- label="X"
- label_width="10"
- layout="topleft"
- left_delta="0"
- max_val="512"
- min_val="-256"
- name="Pos X"
- text_enabled_color="1 0 0.3 .7"
- top_pad="5"
- width="87" />
- <spinner
- follows="left|top"
- height="19"
- increment="0.01"
- initial_value="0"
- label="Y"
- label_width="10"
- layout="topleft"
- left_delta="0"
- max_val="512"
- min_val="-256"
- name="Pos Y"
- text_enabled_color="EmphasisColor"
- top_pad="3"
- width="87" />
- <spinner
- follows="left|top"
- height="19"
- increment="0.01"
- initial_value="0"
- label="Z"
- label_width="10"
- layout="topleft"
- left_delta="0"
- max_val="4096"
- name="Pos Z"
- text_enabled_color="0 0.8 1 .65"
- top_pad="3"
- width="87" />
- <text
- type="string"
- length="1"
- follows="left|top"
- height="10"
- layout="topleft"
- left_delta="0"
- name="label size"
- top_pad="6"
- width="121">
- Size (meters)
- </text>
- <spinner
- follows="left|top"
- height="19"
- increment="0.01"
- initial_value="0"
- label="X"
- label_width="10"
- layout="topleft"
- left_delta="0"
- max_val="64"
- min_val="0.01"
- name="Scale X"
- text_enabled_color="1 1 1 1"
- top_pad="5"
- width="87" />
- <spinner
- follows="left|top"
- height="19"
- increment="0.01"
- initial_value="0"
- label="Y"
- label_width="10"
- layout="topleft"
- left_delta="0"
- max_val="64"
- min_val="0.01"
- name="Scale Y"
- text_enabled_color="1 1 1 1"
- top_pad="3"
- width="87" />
- <spinner
- follows="left|top"
- height="19"
- increment="0.01"
- initial_value="0"
- label="Z"
- label_width="10"
- layout="topleft"
- left_delta="0"
- max_val="64"
- min_val="0.01"
- name="Scale Z"
- text_enabled_color="1 1 1 1"
- top_pad="3"
- width="87" />
- <text
- type="string"
- length="1"
- follows="left|top"
- height="10"
- layout="topleft"
- left_delta="0"
- name="label rotation"
- top_pad="10"
- width="121">
- Rotation (degrees)
- </text>
- <spinner
- decimal_digits="2"
- follows="left|top"
- height="19"
- increment="1"
- initial_value="0"
- label="X"
- label_width="10"
- layout="topleft"
- left_delta="0"
- max_val="9999"
- min_val="-9999"
- name="Rot X"
- text_enabled_color="1 1 1 1"
- top_pad="5"
- width="87" />
- <spinner
- decimal_digits="2"
- follows="left|top"
- height="19"
- increment="1"
- initial_value="0"
- label="Y"
- label_width="10"
- layout="topleft"
- left_delta="0"
- max_val="9999"
- min_val="-9999"
- name="Rot Y"
- text_enabled_color="1 1 1 1"
- top_pad="3"
- width="87" />
- <spinner
- decimal_digits="2"
- follows="left|top"
- height="19"
- increment="1"
- initial_value="0"
- label="Z"
- label_width="10"
- layout="topleft"
- left_delta="0"
- max_val="9999"
- min_val="-9999"
- name="Rot Z"
- text_enabled_color="1 1 1 1"
- top_pad="3"
- width="87" />
- <!-- <text
- type="string"
- length="1"
- follows="left|top"
- height="10"
- layout="topleft"
- left="125"
- name="label basetype"
- top="5"
- width="150">
- Prim Type
- </text>-->
- <combo_box
- height="19"
- layout="topleft"
- name="comboBaseType"
- top="6"
- left="125"
- width="150">
- <combo_box.item
- label="Box"
- name="Box"
- value="Box" />
- <combo_box.item
- label="Cylinder"
- name="Cylinder"
- value="Cylinder" />
- <combo_box.item
- label="Prism"
- name="Prism"
- value="Prism" />
- <combo_box.item
- label="Sphere"
- name="Sphere"
- value="Sphere" />
- <combo_box.item
- label="Torus"
- name="Torus"
- value="Torus" />
- <combo_box.item
- label="Tube"
- name="Tube"
- value="Tube" />
- <combo_box.item
- label="Ring"
- name="Ring"
- value="Ring" />
- <combo_box.item
- label="Sculpted"
- name="Sculpted"
- value="Sculpted" />
- </combo_box>
- <text
- type="string"
- length="1"
- follows="left|top"
- height="10"
- layout="topleft"
- left_delta="0"
- name="text cut"
- top_pad="5"
- width="150">
- Path Cut (begin/end)
- </text>
- <spinner
- follows="left|top"
- height="16"
- increment="0.025"
- initial_value="0"
- label="B"
- label_width="10"
- layout="topleft"
- left_delta="0"
- max_val="0.98"
- name="cut begin"
- top_pad="4"
- width="68" />
- <spinner
- follows="left|top"
- height="16"
- increment="0.025"
- initial_value="1"
- label="E"
- label_width="10"
- layout="topleft"
- left_pad="10"
- min_val="0.02"
- name="cut end"
- top_delta="0"
- width="68" />
- <text
- type="string"
- length="1"
- follows="left|top"
- height="10"
- layout="topleft"
- left="125"
- name="text hollow"
- top_pad="6"
- width="68">
- Hollow
- </text>
- <text
- type="string"
- length="1"
- follows="left|top"
- height="10"
- layout="topleft"
- left_pad="10"
- name="text skew"
- width="63">
- Skew
- </text>
- <spinner
- decimal_digits="1"
- follows="left|top"
- height="19"
- increment="5"
- initial_value="0"
- layout="topleft"
- left="125"
- max_val="95"
- name="Scale 1"
- top_pad="4"
- width="68" />
- <spinner
- decimal_digits="2"
- follows="left|top"
- height="19"
- increment="0.05"
- initial_value="0"
- layout="topleft"
- left_pad="10"
- max_val="0.95"
- min_val="-0.95"
- name="Skew"
- top_delta="0"
- width="68" />
- <text
- type="string"
- length="1"
- follows="left|top"
- height="15"
- layout="topleft"
- left="125"
- name="Hollow Shape"
- top_pad="4"
- width="150">
- Hollow Shape
- </text>
- <combo_box
- height="23"
- layout="topleft"
- left_delta="0"
- name="hole"
- top_pad="-2"
- width="150">
- <combo_box.item
- label="Default"
- name="Default"
- value="Default" />
- <combo_box.item
- label="Circle"
- name="Circle"
- value="Circle" />
- <combo_box.item
- label="Square"
- name="Square"
- value="Square" />
- <combo_box.item
- label="Triangle"
- name="Triangle"
- value="Triangle" />
- </combo_box>
- <text
- type="string"
- length="1"
- follows="left|top"
- height="10"
- layout="topleft"
- left_delta="0"
- name="text twist"
- top_pad="5"
- width="150">
- Twist (begin/end)
- </text>
- <spinner
- decimal_digits="0"
- follows="left|top"
- height="19"
- increment="9"
- initial_value="0"
- label="B"
- label_width="10"
- layout="topleft"
- left_delta="0"
- max_val="180"
- min_val="-180"
- name="Twist Begin"
- top_pad="4"
- width="68" />
- <spinner
- decimal_digits="0"
- follows="left|top"
- height="19"
- increment="9"
- initial_value="0"
- label="E"
- label_width="10"
- layout="topleft"
- left_pad="10"
- max_val="180"
- min_val="-180"
- name="Twist End"
- top_delta="0"
- width="68" />
- <text
- type="string"
- length="1"
- follows="left|top"
- height="10"
- layout="topleft"
- left="125"
- name="scale_taper"
- top_pad="3"
- width="150">
- Taper
- </text>
- <text
- visible="false"
- type="string"
- length="1"
- follows="left|top"
- height="10"
- layout="topleft"
- left_delta="0"
- name="scale_hole"
- top_delta="0"
- width="150">
- Hole Size
- </text>
- <spinner
- decimal_digits="2"
- follows="left|top"
- height="19"
- increment="0.05"
- initial_value="0"
- label="X"
- label_width="10"
- layout="topleft"
- left_delta="0"
- min_val="-1"
- name="Taper Scale X"
- top_pad="4"
- width="68" />
- <spinner
- decimal_digits="2"
- follows="left|top"
- height="19"
- increment="0.05"
- initial_value="0"
- label="Y"
- label_width="10"
- layout="topleft"
- left_pad="10"
- min_val="-1"
- name="Taper Scale Y"
- top_delta="0"
- width="68" />
- <text
- type="string"
- length="1"
- follows="left|top"
- height="10"
- layout="topleft"
- left="125"
- name="text topshear"
- top_pad="3"
- width="141">
- Top Shear
- </text>
- <spinner
- decimal_digits="2"
- follows="left|top"
- height="19"
- increment="0.05"
- initial_value="0"
- label="X"
- label_width="10"
- layout="topleft"
- left_delta="0"
- max_val="0.5"
- min_val="-0.5"
- name="Shear X"
- top_pad="4"
- width="68" />
- <spinner
- decimal_digits="2"
- follows="left|top"
- height="19"
- increment="0.05"
- initial_value="0"
- label="Y"
- label_width="10"
- layout="topleft"
- left_pad="10"
- max_val="0.5"
- min_val="-0.5"
- name="Shear Y"
- top_delta="0"
- width="68" />
- <text
- visible="false"
- type="string"
- length="1"
- follows="left|top"
- height="10"
- layout="topleft"
- left="125"
- name="advanced_cut"
- top_pad="3"
- width="150">
- Profile Cut (begin/end)
- </text>
- <text
- visible="false"
- type="string"
- length="1"
- follows="left|top"
- height="10"
- layout="topleft"
- left_delta="0"
- name="advanced_dimple"
- top_delta="0"
- width="150">
- Dimple (begin/end)
- </text>
- <text
- type="string"
- length="1"
- follows="left|top"
- height="10"
- layout="topleft"
- left_delta="0"
- name="advanced_slice"
- top_delta="0"
- width="150">
- Slice (begin/end)
- </text>
- <spinner
- follows="left|top"
- height="19"
- increment="0.02"
- initial_value="0"
- label="B"
- label_width="10"
- layout="topleft"
- left_delta="0"
- max_val="0.98"
- name="Path Limit Begin"
- top_pad="3"
- width="68" />
- <spinner
- follows="left|top"
- height="19"
- increment="0.02"
- initial_value="1"
- label="E"
- label_width="10"
- layout="topleft"
- left_pad="10"
- min_val="0.02"
- name="Path Limit End"
- top_delta="0"
- width="68" />
- <text
- visible="false"
- type="string"
- length="1"
- follows="left|top"
- height="10"
- layout="topleft"
- left="125"
- name="text taper2"
- top_pad="3"
- width="150">
- Taper
- </text>
- <spinner
- visible="false"
- decimal_digits="2"
- follows="left|top"
- height="19"
- increment="0.05"
- initial_value="0"
- label="X"
- label_width="10"
- layout="topleft"
- left_delta="0"
- min_val="-1"
- name="Taper X"
- top_pad="3"
- width="68" />
- <spinner
- visible="false"
- decimal_digits="2"
- follows="left|top"
- height="19"
- increment="0.05"
- initial_value="0"
- label="Y"
- label_width="10"
- layout="topleft"
- left_pad="10"
- min_val="-1"
- name="Taper Y"
- top_delta="0"
- width="68" />
- <text
- visible="false"
- type="string"
- length="1"
- follows="left|top"
- height="10"
- layout="topleft"
- left="125"
- name="text radius delta"
- top_pad="2"
- width="78">
- Radius
- </text>
- <text
- visible="false"
- type="string"
- length="1"
- follows="left|top"
- height="10"
- layout="topleft"
- left_delta="78"
- name="text revolutions"
- width="68">
- Revolutions
- </text>
- <spinner
- visible="false"
- follows="left|top"
- height="19"
- increment="0.05"
- initial_value="0"
- layout="topleft"
- left="125"
- min_val="-1"
- name="Radius Offset"
- top_pad="4"
- width="68" />
- <spinner
- visible="false"
- decimal_digits="2"
- follows="left|top"
- height="19"
- initial_value="1"
- layout="topleft"
- left_pad="10"
- max_val="4"
- min_val="1"
- name="Revolutions"
- top_delta="0"
- width="68" />
- <texture_picker
- can_apply_immediately="true"
- default_image_name="Default"
- follows="left|top"
- height="141"
- label="Sculpt Texture"
- layout="topleft"
- left="125"
- name="sculpt texture control"
- tool_tip="Click to choose a picture"
- top="70"
- visible="false"
- width="145" />
- <check_box
- height="19"
- label="Mirror"
- layout="topleft"
- left_delta="0"
- name="sculpt mirror control"
- tool_tip="Flips sculpted prim along the X axis"
- top_pad="8"
- visible="false"
- width="130" />
- <check_box
- height="19"
- label="Inside-out"
- layout="topleft"
- left_delta="0"
- name="sculpt invert control"
- tool_tip="Inverts the sculpted prims normals, making it appear inside-out"
- top_pad="4"
- visible="false"
- width="121" />
- <text
- type="string"
- length="1"
- follows="left|top"
- height="10"
- layout="topleft"
- left_delta="0"
- name="label sculpt type"
- top_pad="10"
- visible="false"
- width="130">
- Stitching type
- </text>
- <combo_box
- height="19"
- layout="topleft"
- left_delta="0"
- name="sculpt type control"
- top_pad="4"
- visible="false"
- width="150">
- <combo_box.item
- label="(none)"
- name="None"
- value="None" />
- <combo_box.item
- label="Sphere"
- name="Sphere"
- value="Sphere" />
- <combo_box.item
- label="Torus"
- name="Torus"
- value="Torus" />
- <combo_box.item
- label="Plane"
- name="Plane"
- value="Plane" />
- <combo_box.item
- label="Cylinder"
- name="Cylinder"
- value="Cylinder" />
- <combo_box.item
- label="Mesh"
- name="Mesh"
- value="Mesh" />
- </combo_box>
- </panel>
- <panel
- border="false"
- follows="all"
- height="367"
- label="Features"
- layout="topleft"
- left_delta="0"
- mouse_opaque="false"
- help_topic="toolbox_features_tab"
- name="Features"
- top_delta="0"
- width="295">
- <panel.string name="None">None</panel.string>
- <panel.string name="Prim">Prim</panel.string>
- <panel.string name="Convex Hull">Convex Hull</panel.string>
- <text
- type="string"
- length="1"
- follows="left|top"
- height="20"
- layout="topleft"
- left="10"
- name="select_single"
- top="5"
- width="252"
- word_wrap="true">
- Select only one primitive to edit features.
- </text>
- <text
- type="string"
- length="1"
- follows="left|top"
- height="10"
- layout="topleft"
- left="10"
- name="edit_object"
- top="5"
- width="252">
- Edit object features:
- </text>
- <check_box
- height="19"
- label="Flexible Path"
- layout="topleft"
- left="10"
- name="Flexible1D Checkbox Ctrl"
- tool_tip="Allows object to flex about the Z axis (Client-side only)"
- top_pad="20"
- width="121" />
- <spinner
- follows="left|top"
- height="19"
- increment="1"
- initial_value="2"
- label="Softness"
- label_width="70"
- layout="topleft"
- left_delta="0"
- max_val="3"
- name="FlexNumSections"
- top_pad="10"
- width="128" />
- <spinner
- follows="left|top"
- height="19"
- increment="0.5"
- initial_value="0.3"
- label="Gravity"
- label_width="70"
- layout="topleft"
- left_delta="0"
- max_val="10"
- min_val="-10"
- name="FlexGravity"
- top_pad="4"
- width="128" />
- <spinner
- follows="left|top"
- height="19"
- increment="0.5"
- initial_value="2"
- label="Drag"
- label_width="70"
- layout="topleft"
- left_delta="0"
- max_val="10"
- name="FlexFriction"
- top_pad="4"
- width="128" />
- <spinner
- follows="left|top"
- height="19"
- increment="0.5"
- initial_value="0"
- label="Wind"
- label_width="70"
- layout="topleft"
- left_delta="0"
- max_val="10"
- name="FlexWind"
- top_pad="4"
- width="128" />
- <spinner
- follows="left|top"
- height="19"
- increment="0.5"
- initial_value="1"
- label="Tension"
- label_width="70"
- layout="topleft"
- left_delta="0"
- max_val="10"
- name="FlexTension"
- top_pad="4"
- width="128" />
- <spinner
- follows="left|top"
- height="19"
- increment="0.01"
- initial_value="0"
- label="Force X"
- label_width="70"
- layout="topleft"
- left_delta="0"
- max_val="10"
- min_val="-10"
- name="FlexForceX"
- top_pad="4"
- width="128" />
- <spinner
- follows="left|top"
- height="19"
- increment="0.01"
- initial_value="0"
- label="Force Y"
- label_width="70"
- layout="topleft"
- left_delta="0"
- max_val="10"
- min_val="-10"
- name="FlexForceY"
- top_pad="4"
- width="128" />
- <spinner
- follows="left|top"
- height="19"
- increment="0.01"
- initial_value="0"
- label="Force Z"
- label_width="70"
- layout="topleft"
- left_delta="0"
- max_val="10"
- min_val="-10"
- name="FlexForceZ"
- top_pad="4"
- width="128" />
-
- <check_box
- height="16"
- label="Light"
- layout="topleft"
- left="10"
- name="Light Checkbox Ctrl"
- tool_tip="Causes object to emit light"
- top_pad="15"
- width="60" />
- <color_swatch
- can_apply_immediately="true"
- color="0.5 0.5 0.5 1"
- border.border_thickness="0"
- follows="left|top"
- height="50"
- layout="topleft"
- left_pad="10"
- top_pad="-17"
- name="colorswatch"
- tool_tip="Click to open color picker"
- width="40" />
- <texture_picker
- allow_no_texture="true"
- top_delta="0"
- can_apply_immediately="true"
- default_image_name="Default"
- follows="left|top"
- height="48"
- label=""
- left_delta="57"
- mouse_opaque="true"
- name="light texture control"
- tool_tip="Click to choose a projection image (only has effect with deferred rendering enabled)"
- width="32" />
- <spinner
- follows="left|top"
- height="19"
- initial_value="0.5"
- label="Intensity"
- label_width="70"
- layout="topleft"
- left="10"
- name="Light Intensity"
- top_pad="3"
- width="128" />
- <spinner bottom_delta="0"
- decimal_digits="3"
- follows="left|top"
- height="16"
- increment="0.1"
- initial_value="0.5"
- label="FOV"
- label_width="55"
- left="144"
- max_val="3"
- min_val="0"
- mouse_opaque="true"
- name="Light FOV"
- width="120" />
- <spinner follows="left|top"
- height="19"
- initial_value="5"
- label="Radius"
- label_width="70"
- layout="topleft"
- left="10"
- max_val="20"
- name="Light Radius"
- top_pad="3"
- width="128" />
- <spinner bottom_delta="0"
- decimal_digits="3"
- follows="left|top"
- height="16"
- increment="0.5"
- initial_value="0.5"
- label="Focus"
- label_width="55"
- left="144"
- max_val="20"
- min_val="-20"
- mouse_opaque="true"
- name="Light Focus"
- width="120" />
- <spinner follows="left|top"
- height="19"
- increment="0.25"
- initial_value="1"
- label="Falloff"
- label_width="70"
- layout="topleft"
- left="10"
- max_val="2"
- name="Light Falloff"
- top_pad="3"
- width="128" />
- <spinner bottom_delta="0"
- decimal_digits="3"
- follows="left|top"
- height="16"
- increment="0.05"
- initial_value="1"
- label="Ambiance"
- label_width="55"
- left="144"
- max_val="1"
- min_val="0"
- mouse_opaque="true"
- name="Light Ambiance"
- width="120" />
- <text
- type="string"
- length="1"
- follows="left|top"
- height="10"
- layout="topleft"
- name="label physicsshapetype"
- top="38"
- width="121">
- Physics Shape Type:
- </text>
- <combo_box
- height="19"
- top_delta="15"
- layout="topleft"
- follows="left|top"
- name="Physics Shape Type Combo Ctrl"
- tool_tip="Choose the physics shape type"
- width="108"/>
- <combo_box
- height="19"
- layout="topleft"
- name="material"
- top_pad="5"
- width="150">
- <combo_box.item
- label="Stone"
- name="Stone"
- value="Stone" />
- <combo_box.item
- label="Metal"
- name="Metal"
- value="Metal" />
- <combo_box.item
- label="Glass"
- name="Glass"
- value="Glass" />
- <combo_box.item
- label="Wood"
- name="Wood"
- value="Wood" />
- <combo_box.item
- label="Flesh"
- name="Flesh"
- value="Flesh" />
- <combo_box.item
- label="Plastic"
- name="Plastic"
- value="Plastic" />
- <combo_box.item
- label="Rubber"
- name="Rubber"
- value="Rubber" />
- </combo_box>
-
- <spinner
- follows="left|top"
- height="19"
- increment="1"
- initial_value="1"
- label="Gravity"
- label_width="70"
- layout="topleft"
- min_val="-1"
- max_val="28"
- name="Physics Gravity"
- top_pad="10"
- width="132" />
-
- <spinner
- follows="left|top"
- height="19"
- increment="0.1"
- initial_value="0"
- label="Friction"
- label_width="70"
- layout="topleft"
- left_delta="0"
- max_val="255"
- min_val="0"
- name="Physics Friction"
- top_pad="4"
- width="132" />
-
- <spinner
- follows="left|top"
- height="19"
- increment="0.1"
- initial_value="0"
- label="Density"
- label_width="70"
- layout="topleft"
- left_delta="0"
- max_val="22587"
- min_val="1"
- name="Physics Density"
- top_pad="4"
- width="132" />
-
- <spinner
- follows="left|top"
- height="19"
- increment="0.01"
- initial_value="0"
- label="Restitution"
- label_width="70"
- layout="topleft"
- left_delta="0"
- max_val="1"
- min_val="0"
- name="Physics Restitution"
- top_pad="4"
- width="132" />
- </panel>
- <panel
- border="false"
- follows="all"
- height="367"
- label="Texture"
- layout="topleft"
- left_delta="0"
- mouse_opaque="false"
- help_topic="toolbox_texture_tab"
- name="Texture"
- top_delta="0"
- width="295">
- <panel.string
- name="string repeats per meter">
- Repeats Per Meter
- </panel.string>
- <panel.string
- name="string repeats per face">
- Repeats Per Face
- </panel.string>
- <texture_picker
- can_apply_immediately="true"
- default_image_name="Default"
- fallback_image="locked_image.j2c"
- follows="left|top"
- height="80"
- label="Texture"
- layout="topleft"
- left="10"
- name="texture control"
- tool_tip="Click to choose a picture"
- top="8"
- width="64" />
- <color_swatch
- can_apply_immediately="true"
- follows="left|top"
- height="80"
- label="Color"
- layout="topleft"
- left_pad="15"
- name="colorswatch"
- tool_tip="Click to open color picker"
- top_delta="0"
- width="64" />
- <text
- type="string"
- length="1"
- follows="left|top"
- height="10"
- layout="topleft"
- left_pad="15"
- name="color trans"
- text_readonly_color="LabelDisabledColor"
- top="6"
- width="110">
- Transparency %
- </text>
- <spinner
- decimal_digits="0"
- follows="left|top"
- height="19"
- increment="2"
- initial_value="0"
- layout="topleft"
- left_delta="0"
- max_val="100"
- name="ColorTrans"
- top_pad="4"
- width="80" />
- <text
- type="string"
- length="1"
- follows="left|top"
- height="10"
- layout="topleft"
- left_delta="0"
- name="glow label"
- text_readonly_color="LabelDisabledColor"
- top_pad="8"
- width="80">
- Glow
- </text>
- <spinner
- decimal_digits="2"
- follows="left|top"
- height="19"
- initial_value="0"
- layout="topleft"
- left_delta="0"
- name="glow"
- top_pad="4"
- width="80" />
- <check_box
- height="19"
- label="Full Bright"
- layout="topleft"
- left_delta="-5"
- name="checkbox fullbright"
- top_pad="4"
- width="81" />
- <text
- type="string"
- length="1"
- follows="left|top"
- height="10"
- layout="topleft"
- left="10"
- name="tex gen"
- text_readonly_color="LabelDisabledColor"
- top_pad="5"
- width="90">
- Mapping
- </text>
- <combo_box
- height="23"
- layout="topleft"
- left_delta="0"
- name="combobox texgen"
- top_pad="4"
- width="90">
- <combo_box.item
- label="Default"
- name="Default"
- value="Default" />
- <combo_box.item
- label="Planar"
- name="Planar"
- value="Planar" />
- </combo_box>
- <text
- type="string"
- length="1"
- follows="left|top"
- height="10"
- layout="topleft"
- name="label shininess"
- left_pad="4"
- text_readonly_color="LabelDisabledColor"
- top_pad="-37"
- width="90">
- Shininess
- </text>
- <combo_box
- height="23"
- layout="topleft"
- left_delta="0"
- name="combobox shininess"
- top_pad="4"
- width="90">
- <combo_box.item
- label="None"
- name="None"
- value="None" />
- <combo_box.item
- label="Low"
- name="Low"
- value="Low" />
- <combo_box.item
- label="Medium"
- name="Medium"
- value="Medium" />
- <combo_box.item
- label="High"
- name="High"
- value="High" />
- </combo_box>
- <text
- type="string"
- length="1"
- follows="left|top"
- height="10"
- layout="topleft"
- left_pad="4"
- name="label bumpiness"
- text_readonly_color="LabelDisabledColor"
- top_pad="-37"
- width="90">
- Bumpiness
- </text>
- <combo_box
- height="23"
- layout="topleft"
- left_delta="0"
- name="combobox bumpiness"
- top_pad="4"
- width="90">
- <combo_box.item
- label="None"
- name="None"
- value="None" />
- <combo_box.item
- label="Brightness"
- name="Brightness"
- value="Brightness" />
- <combo_box.item
- label="Darkness"
- name="Darkness"
- value="Darkness" />
- <combo_box.item
- label="woodgrain"
- name="woodgrain"
- value="woodgrain" />
- <combo_box.item
- label="bark"
- name="bark"
- value="bark" />
- <combo_box.item
- label="bricks"
- name="bricks"
- value="bricks" />
- <combo_box.item
- label="checker"
- name="checker"
- value="checker" />
- <combo_box.item
- label="concrete"
- name="concrete"
- value="concrete" />
- <combo_box.item
- label="crustytile"
- name="crustytile"
- value="crustytile" />
- <combo_box.item
- label="cutstone"
- name="cutstone"
- value="cutstone" />
- <combo_box.item
- label="discs"
- name="discs"
- value="discs" />
- <combo_box.item
- label="gravel"
- name="gravel"
- value="gravel" />
- <combo_box.item
- label="petridish"
- name="petridish"
- value="petridish" />
- <combo_box.item
- label="siding"
- name="siding"
- value="siding" />
- <combo_box.item
- label="stonetile"
- name="stonetile"
- value="stonetile" />
- <combo_box.item
- label="stucco"
- name="stucco"
- value="stucco" />
- <combo_box.item
- label="suction"
- name="suction"
- value="suction" />
- <combo_box.item
- label="weave"
- name="weave"
- value="weave" />
- </combo_box>
- <!--
- <line_editor
- bevel_style="in"
- border_style="line"
- border_thickness="1"
- follows="left|top"
- height="16"
- layout="topleft"
- left="10"
- max_length_bytes="63"
- name="Home Url"
- select_on_focus="true"
- top="134"
- width="250" />
- <check_box
- height="16"
- label="Media Face"
- layout="topleft"
- left_delta="0"
- name="has media"
- top_pad="6"
- width="70" />
- <button
- follows="left|top"
- font="SansSerifSmall"
- height="20"
- label="Set Media Info"
- label_selected="Set Media Info"
- layout="topleft"
- left_pad="60"
- name="media info set"
- top_delta="-4"
- width="120" />
--->
- <check_box
- follows="top|left"
- height="16"
- initial_value="false"
- label="Align planar faces"
- layout="topleft"
- left="17"
- name="checkbox planar align"
- tool_tip="Align textures on all selected faces with the last selected face. Requires Planar texture mapping."
- top_delta="26"
- width="140" />
- <text
- type="string"
- length="1"
- follows="left|top"
- height="10"
- layout="topleft"
- left="10"
- name="rpt"
- text_readonly_color="LabelDisabledColor"
- top_pad="2"
- width="140">
- Repeats / Face
- </text>
- <spinner
- follows="left|top"
- height="19"
- initial_value="0"
- label="Horizontal (U)"
- label_width="125"
- layout="topleft"
- left="20"
- max_val="100"
- name="TexScaleU"
- top_pad="5"
- width="185" />
- <check_box
- height="19"
- label="Flip"
- layout="topleft"
- left_pad="5"
- name="checkbox flip s"
- top_delta="0"
- width="70" />
- <spinner
- follows="left|top"
- height="19"
- initial_value="0"
- label="Vertical (V)"
- label_width="125"
- layout="topleft"
- left="20"
- max_val="100"
- name="TexScaleV"
- width="185" />
- <check_box
- height="19"
- label="Flip"
- layout="topleft"
- left_pad="5"
- name="checkbox flip t"
- top_delta="0"
- width="70" />
- <spinner
- decimal_digits="2"
- follows="left|top"
- height="19"
- increment="1"
- initial_value="0"
- label="Rotation˚"
- layout="topleft"
- label_width="135"
- left="10"
- max_val="9999"
- min_val="-9999"
- name="TexRot"
- width="195" />
-
- <spinner
- decimal_digits="1"
- follows="left|top"
- height="23"
- initial_value="1"
- label="Repeats / Meter"
- layout="topleft"
- label_width="135"
- left="10"
- max_val="10"
- min_val="0.1"
- name="rptctrl"
- width="195" />
- <button
- follows="left|top"
- height="23"
- label="Apply"
- label_selected="Apply"
- layout="topleft"
- left_pad="5"
- name="button apply"
- width="75" />
- <text
- type="string"
- length="1"
- follows="left|top"
- height="10"
- layout="topleft"
- left="10"
- name="tex offset"
- text_readonly_color="LabelDisabledColor"
- width="200">
- Texture Offset
- </text>
- <spinner
- follows="left|top"
- height="19"
- initial_value="0"
- label="Horizontal (U)"
- label_width="125"
- layout="topleft"
- left="20"
- min_val="-1"
- name="TexOffsetU"
- width="185" />
- <spinner
- follows="left|top"
- height="19"
- initial_value="0"
- label="Vertical (V)"
- label_width="125"
- layout="topleft"
- left_delta="0"
- min_val="-1"
- name="TexOffsetV"
- top_pad="1"
- width="185" />
- <panel
- border="false"
- follows="left|top"
- layout="topleft"
- mouse_opaque="false"
- background_visible="true"
- bg_alpha_color="DkGray"
- name="Add_Media"
- left="0"
- height="47"
- width="290">
- <text
- type="string"
- length="1"
- follows="left|top"
- height="18"
- layout="topleft"
- left="10"
- top_pad="3"
- name="media_tex"
- width="190">
- Media
- </text>
- <button
- follows="top|left"
- height="18"
- image_selected="AddItem_Press"
- image_unselected="AddItem_Off"
- image_disabled="AddItem_Disabled"
- layout="topleft"
- left_pad="0"
- name="add_media"
- tab_stop="false"
- top_delta="0"
- tool_tip="Add Media"
- width="18">
- <button.commit_callback
- function="BuildTool.AddMedia"/>
- </button>
- <button
- follows="top|left"
- height="18"
- image_selected="TrashItem_Press"
- image_unselected="TrashItem_Off"
- layout="topleft"
- left_pad="5"
- name="delete_media"
- tool_tip="Delete this media texture"
- top_delta="0"
- width="18">
- <button.commit_callback
- function="BuildTool.DeleteMedia"/>
- </button>
- <button
- follows="top|left"
- tool_tip="Edit this Media"
- height="12"
- image_disabled="Icon_Gear_Background"
- image_selected="Icon_Gear_Press"
- image_unselected="Icon_Gear_Foreground"
- layout="topleft"
- left_pad="10"
- name="edit_media"
- top_delta="3"
- width="12">
- <button.commit_callback
- function="BuildTool.EditMedia"/>
- </button>
- <text
- follows="left|top|right"
- height="9"
- layout="topleft"
- left="10"
- use_ellipses="true"
- read_only="true"
- name="media_info"
- width="280" />
- <web_browser
- visible="false"
- enabled="false"
- border_visible="true"
- bottom_delta="0"
- follows="top|left"
- left="0"
- name="title_media"
- width="4"
- height="4"
- start_url="about:blank"
- decouple_texture_size="true" />
- <button
- follows="right|top"
- height="22"
- label="Align"
- label_selected="Align Media"
- layout="topleft"
- right="-16"
- name="button align"
- top_delta="-4"
- tool_tip="Align media texture (must load first)"
- width="80" />
- </panel>
- </panel>
- <panel
- border="false"
- follows="all"
- label="Content"
- layout="topleft"
- left_delta="0"
- mouse_opaque="false"
- help_topic="toolbox_contents_tab"
- name="Contents"
- top_delta="0"
- width="295">
- <button
- follows="left|top"
- height="23"
- label="New Script"
- label_selected="New Script"
- layout="topleft"
- left="10"
- name="button new script"
- top="10"
- width="134" />
- <button
- follows="left|top"
- height="23"
- label="Permissions"
- layout="topleft"
- left_pad="8"
- name="button permissions"
- width="134" />
- <panel_inventory_object
- border="true"
- border_visible="true"
- bevel_style="in"
- follows="left|top|right"
- height="325"
- layout="topleft"
- left="10"
- name="contents_inventory"
- top="50"
- width="275" />
- </panel>
- </tab_container>
- <panel
- follows="left|top"
- height="384"
- layout="topleft"
- left_delta="0"
- name="land info panel"
- top_delta="0"
- width="295">
- <text
- type="string"
- length="1"
- font="SansSerifBig"
- follows="left|top"
- height="19"
- layout="topleft"
- left="20"
- name="label_parcel_info"
- top="24"
- width="240">
- Parcel Information
- </text>
- <text
- type="string"
- length="1"
- follows="left|top"
- height="19"
- layout="topleft"
- left="30"
- name="label_area_price"
- top="48"
- width="150">
- Price: L$[PRICE] for [AREA] m²
- </text>
- <text
- type="string"
- length="1"
- follows="left|top"
- height="19"
- layout="topleft"
- left_delta="0"
- name="label_area"
- top_delta="0"
- width="150">
- Area: [AREA] m²
- </text>
- <button
- follows="left|top"
- height="23"
- label="About Land"
- label_selected="About Land"
- layout="topleft"
- left_delta="0"
- name="button about land"
- top_pad="4"
- width="125" />
- <check_box
- control_name="ShowParcelOwners"
- height="19"
- label="Show owners"
- layout="topleft"
- left_delta="0"
- name="checkbox show owners"
- tool_tip="Colorize the parcels according to the type of owner: Green = Your land Aqua = Your group's land Red = Owned by others Yellow = For sale Purple = For auction Grey = Public"
- top_pad="8"
- width="205" />
- <text
- type="string"
- length="1"
- font="SansSerifBig"
- follows="left|top"
- height="19"
- layout="topleft"
- left="20"
- name="label_parcel_modify"
- top="152"
- width="240">
- Modify Parcel
- </text>
- <button
- follows="left|top"
- height="23"
- label="Subdivide"
- label_selected="Subdivide"
- layout="topleft"
- left="30"
- name="button subdivide land"
- top="172"
- width="125" />
- <button
- follows="left|top"
- height="23"
- label="Join"
- label_selected="Join"
- layout="topleft"
- left_delta="0"
- name="button join land"
- top_pad="4"
- width="125" />
- <text
- type="string"
- length="1"
- font="SansSerifBig"
- follows="left|top"
- height="19"
- layout="topleft"
- left="20"
- name="label_parcel_trans"
- top="256"
- width="240">
- Land Transactions
- </text>
- <button
- follows="left|top"
- height="23"
- label="Buy Land"
- label_selected="Buy Land"
- layout="topleft"
- left="30"
- name="button buy land"
- top="276"
- width="125" />
- <button
- follows="left|top"
- height="23"
- label="Abandon Land"
- label_selected="Abandon Land"
- layout="topleft"
- left_delta="0"
- name="button abandon land"
- top_pad="4"
- width="125" />
- </panel>
-<!-- end of tabs -->
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + legacy_header_height="18" + follows="left|top|right" + height="580" + layout="topleft" + bg_opaque_image="Window_NoTitle_Foreground" + bg_alpha_image="Window_NoTitle_Background" + name="toolbox floater" + help_topic="toolbox_floater" + save_rect="true" + short_title="BUILD TOOLS" + single_instance="true" + save_visibility="true" + sound_flags="0" + width="295"> + <floater.string + name="status_rotate"> + Drag colored bands to rotate object + </floater.string> + <floater.string + name="status_scale"> + Click and drag to stretch selected side + </floater.string> + <floater.string + name="status_move"> + Drag to move, shift-drag to copy + </floater.string> + <floater.string + name="status_modifyland"> + Click and hold to modify land + </floater.string> + <floater.string + name="status_camera"> + Click and drag to move camera + </floater.string> + <floater.string + name="status_grab"> + Drag to move, Ctrl to lift, Ctrl+Shift to rotate + </floater.string> + <floater.string + name="status_place"> + Click inworld to build + </floater.string> + <floater.string + name="status_selectland"> + Click and drag to select land + </floater.string> + <floater.string + name="grid_screen_text"> + Screen + </floater.string> + <floater.string + name="grid_local_text"> + Local + </floater.string> + <floater.string + name="grid_world_text"> + World + </floater.string> + <floater.string + name="grid_reference_text"> + Reference + </floater.string> + <floater.string + name="grid_attachment_text"> + Attachment + </floater.string> + <button + follows="left|top" + height="25" + image_bottom_pad="1" + image_overlay="Tool_Zoom" + image_selected="PushButton_Selected_Press" + layout="topleft" + left="10" + name="button focus" + tool_tip="Focus" + width="35"> + <button.commit_callback + function="BuildTool.setTool" + parameter="Focus" /> + </button> + <button + follows="left|top" + height="25" + image_bottom_pad="1" + image_overlay="Tool_Grab" + image_selected="PushButton_Selected_Press" + layout="topleft" + left_pad="10" + name="button move" + tool_tip="Move" + width="35"> + <button.commit_callback + function="BuildTool.setTool" + parameter="Move" /> + </button> + <button + follows="left|top" + height="25" + image_bottom_pad="1" + image_overlay="Tool_Face" + image_selected="PushButton_Selected_Press" + layout="topleft" + left_pad="10" + name="button edit" + tool_tip="Edit" + width="35"> + <button.commit_callback + function="BuildTool.setTool" + parameter="Edit" /> + </button> + <button + follows="left|top" + height="25" + image_bottom_pad="1" + image_overlay="Tool_Create" + image_selected="PushButton_Selected_Press" + layout="topleft" + left_pad="10" + name="button create" + tool_tip="Create" + width="35"> + <button.commit_callback + function="BuildTool.setTool" + parameter="Create" /> + </button> + <button + follows="left|top" + height="25" + image_bottom_pad="1" + image_overlay="Tool_Dozer" + image_selected="PushButton_Selected_Press" + layout="topleft" + left_pad="10" + name="button land" + tool_tip="Land" + width="35"> + <button.commit_callback + function="BuildTool.setTool" + parameter="Land" /> + </button> + <text + height="30" + word_wrap="true" + use_ellipses="true" + type="string" + text_color="LabelSelectedDisabledColor" + length="1" + follows="left|top" + layout="topleft" + left="8" + name="text status" + top_pad="3" + width="285"> + Drag to move, shift-drag to copy + </text> + <radio_group + layout="topleft" + left="10" + height="70" + top="59" + name="focus_radio_group"> + <radio_item + top_pad="6" + label="Zoom" + layout="topleft" + name="radio zoom" /> + <radio_item + top_pad="6" + label="Orbit (Ctrl)" + layout="topleft" + name="radio orbit" /> + <radio_item + top_pad="6" + label="Pan (Ctrl+Shift)" + layout="topleft" + name="radio pan" /> + <radio_group.commit_callback + function="BuildTool.commitRadioFocus"/> + </radio_group> + <slider_bar + follows="left|top" + height="14" + increment="0.01" + initial_value="0.125" + layout="topleft" + max_val="0.5" + top_delta="-2" + left_delta="100" + name="slider zoom" + width="134"> + <slider_bar.commit_callback + function="BuildTool.commitZoom"/> + </slider_bar> + <radio_group + left="10" + height="70" + top="59" + layout="topleft" + name="move_radio_group"> + <radio_item + top_pad="6" + label="Move" + layout="topleft" + name="radio move" /> + <radio_item + top_pad="6" + label="Lift (Ctrl)" + layout="topleft" + name="radio lift" /> + <radio_item + top_pad="6" + label="Spin (Ctrl+Shift)" + layout="topleft" + name="radio spin" /> + <radio_group.commit_callback + function="BuildTool.commitRadioMove"/> + </radio_group> + <radio_group + follows="left|top" + left="5" + top="59" + height="70" + layout="topleft" + name="edit_radio_group"> + <radio_item + label="Move" + layout="topleft" + name="radio position" /> + <radio_item + top_pad="6" + label="Rotate (Ctrl)" + layout="topleft" + name="radio rotate" /> + <radio_item + top_pad="6" + label="Stretch (Ctrl+Shift)" + layout="topleft" + name="radio stretch" /> + <radio_item + top_pad="6" + label="Select Face" + layout="topleft" + name="radio select face" /> + <radio_group.commit_callback + function="BuildTool.commitRadioEdit"/> + </radio_group> + <check_box + left="5" + follows="left|top" + height="28" + control_name="EditLinkedParts" + label="Edit linked" + layout="topleft" + name="checkbox edit linked parts" + top_pad="-10"> + <check_box.commit_callback + function="BuildTool.selectComponent"/> + </check_box> + + <button + follows="left|top" + height="23" + label="Link" + top_pad="2" + layout="topleft" + left="5" + name="link_btn" + width="50"> + <button.commit_callback + function="BuildTool.LinkObjects"/> + </button> + <button + follows="left|top" + height="23" + label="Unlink" + layout="topleft" + left_pad="2" + name="unlink_btn" + width="50"> + <button.commit_callback + function="BuildTool.UnlinkObjects"/> + </button> + <text + text_color="LtGray_50" + follows="top|left" + halign="left" + left_pad="3" + name="RenderingCost" + tool_tip="Shows the rendering cost calculated for this object" + top_delta="11" + type="string" + width="100"> + þ: [COUNT] + </text> + <check_box + control_name="ScaleUniform" + height="19" + label="" + layout="topleft" + left="143" + name="checkbox uniform" + top="50" + width="20" /> + <text + height="19" + label="Stretch Both Sides" + left_delta="20" + name="checkbox uniform label" + top_delta="2" + width="120" + layout="topleft" + follows="top|left" + wrap="true"> + Stretch Both Sides + </text> + <check_box + control_name="ScaleStretchTextures" + height="19" + initial_value="true" + label="Stretch Textures" + layout="topleft" + left="143" + name="checkbox stretch textures" + top_pad="-6" + follows="left|top" + width="134" /> + <check_box + control_name="SnapEnabled" + height="18" + initial_value="true" + label="Snap to grid" + layout="topleft" + top_pad="0" + name="checkbox snap to grid" + width="134" /> + <combo_box + height="23" + layout="topleft" + follows="left|top" + name="combobox grid mode" + tool_tip="Choose the type of grid ruler for positioning the object" + top_pad="0" + width="108"> + <combo_box.item + label="World grid" + name="World" + value="World" /> + <combo_box.item + label="Local grid" + name="Local" + value="Local" /> + <combo_box.item + label="Reference grid" + name="Reference" + value="Reference" /> + <combo_box.commit_callback + function="BuildTool.gridMode"/> + </combo_box> + <button + left_pad="0" + image_selected="ForwardArrow_Press" + image_unselected="ForwardArrow_Off" + layout="topleft" + follows="top|left" + name="Options..." + tool_tip="See more grid options" + top_pad="-22" + right="-10" + width="18" + height="23" > + <button.commit_callback + function="BuildTool.gridOptions"/> + </button> + <button + follows="left|top" + height="20" + image_disabled="Object_Cube" + image_disabled_selected="Object_Cube" + image_selected="Object_Cube_Selected" + image_unselected="Object_Cube" + layout="topleft" + left="10" + name="ToolCube" + tool_tip="Cube" + top="51" + width="20" /> + <button + follows="left|top" + height="20" + image_disabled="Object_Prism" + image_disabled_selected="Object_Prism" + image_selected="Object_Prism_Selected" + image_unselected="Object_Prism" + layout="topleft" + left_delta="29" + name="ToolPrism" + tool_tip="Prism" + top_delta="0" + width="20" /> + <button + follows="left|top" + height="20" + image_disabled="Object_Pyramid" + image_disabled_selected="Object_Pyramid" + image_selected="Object_Pyramid_Selected" + image_unselected="Object_Pyramid" + layout="topleft" + left_delta="29" + name="ToolPyramid" + tool_tip="Pyramid" + top_delta="0" + width="20" /> + <button + follows="left|top" + height="20" + image_disabled="Object_Tetrahedron" + image_disabled_selected="Object_Tetrahedron" + image_selected="Object_Tetrahedron_Selected" + image_unselected="Object_Tetrahedron" + layout="topleft" + left_delta="29" + name="ToolTetrahedron" + tool_tip="Tetrahedron" + top_delta="0" + width="20" /> + <button + follows="left|top" + height="20" + image_disabled="Object_Cylinder" + image_disabled_selected="Object_Cylinder" + image_selected="Object_Cylinder_Selected" + image_unselected="Object_Cylinder" + layout="topleft" + left_delta="29" + name="ToolCylinder" + tool_tip="Cylinder" + top_delta="0" + width="20" /> + <button + follows="left|top" + height="20" + image_disabled="Object_Hemi_Cylinder" + image_disabled_selected="Object_Hemi_Cylinder" + image_selected="Object_Hemi_Cylinder_Selected" + image_unselected="Object_Hemi_Cylinder" + layout="topleft" + left_delta="29" + name="ToolHemiCylinder" + tool_tip="Hemicylinder" + top_delta="0" + width="20" /> + <button + follows="left|top" + height="20" + image_disabled="Object_Cone" + image_disabled_selected="Object_Cone" + image_selected="Object_Cone_Selected" + image_unselected="Object_Cone" + layout="topleft" + left_delta="29" + name="ToolCone" + tool_tip="Cone" + top_delta="0" + width="20" /> + <button + follows="left|top" + height="20" + image_disabled="Object_Hemi_Cone" + image_disabled_selected="Object_Hemi_Cone" + image_selected="Object_Hemi_Cone_Selected" + image_unselected="Object_Hemi_Cone" + layout="topleft" + left_delta="29" + name="ToolHemiCone" + tool_tip="Hemicone" + top_delta="0" + width="20" /> + <button + follows="left|top" + height="20" + image_disabled="Object_Sphere" + image_disabled_selected="Object_Sphere" + image_selected="Object_Sphere_Selected" + image_unselected="Object_Sphere" + layout="topleft" + left_delta="29" + name="ToolSphere" + tool_tip="Sphere" + top_delta="0" + width="20" /> + <button + follows="left|top" + height="20" + image_disabled="Object_Hemi_Sphere" + image_disabled_selected="Object_Hemi_Sphere" + image_selected="Object_Hemi_Sphere_Selected" + image_unselected="Object_Hemi_Sphere" + layout="topleft" + left_delta="29" + name="ToolHemiSphere" + tool_tip="Hemisphere" + top_delta="0" + width="20" /> + <button + follows="left|top" + height="20" + image_disabled="Object_Torus" + image_disabled_selected="Object_Torus" + image_selected="Object_Torus_Selected" + image_unselected="Object_Torus" + layout="topleft" + left="10" + name="ToolTorus" + tool_tip="Torus" + top="77" + width="20" /> + <button + follows="left|top" + height="20" + image_disabled="Object_Tube" + image_disabled_selected="Object_Tube" + image_selected="Object_Tube_Selected" + image_unselected="Object_Tube" + layout="topleft" + left_delta="29" + name="ToolTube" + tool_tip="Tube" + top_delta="0" + width="20" /> + <button + follows="left|top" + height="20" + image_disabled="Object_Ring" + image_disabled_selected="Object_Ring" + image_selected="Object_Ring_Selected" + image_unselected="Object_Ring" + layout="topleft" + left_delta="29" + name="ToolRing" + tool_tip="Ring" + top_delta="0" + width="20" /> + <button + follows="left|top" + height="20" + image_disabled="Object_Tree" + image_disabled_selected="Object_Tree" + image_selected="Object_Tree_Selected" + image_unselected="Object_Tree" + layout="topleft" + left_delta="29" + name="ToolTree" + tool_tip="Tree" + top_delta="0" + width="20" /> + <button + follows="left|top" + height="20" + image_disabled="Object_Grass" + image_disabled_selected="Object_Grass" + image_selected="Object_Grass_Selected" + image_unselected="Object_Grass" + image_overlay_color="Red" + layout="topleft" + left_delta="29" + name="ToolGrass" + tool_tip="Grass" + top_delta="0" + width="20" /> + <check_box + control_name="CreateToolKeepSelected" + height="19" + label="Keep Tool selected" + layout="topleft" + left="4" + name="checkbox sticky" + top="101" + width="128" /> + <check_box + control_name="CreateToolCopySelection" + height="19" + label="Copy selection" + layout="topleft" + left_delta="0" + name="checkbox copy selection" + top_delta="15" + width="134" /> + <check_box + control_name="CreateToolCopyCenters" + height="19" + initial_value="true" + label="Center Copy" + layout="topleft" + left_delta="18" + name="checkbox copy centers" + top="132" + width="134" /> + <check_box + control_name="CreateToolCopyRotates" + height="19" + label="Rotate Copy" + layout="topleft" + left_delta="0" + name="checkbox copy rotates" + top_delta="16" + width="134" /> + <radio_group + height="105" + layout="topleft" + left="4" + name="land_radio_group" + top="54" + width="114"> + <radio_item + height="19" + label="Select Land" + layout="topleft" + left="0" + name="radio select land" + top="-106" + width="134" /> + <radio_item + height="19" + label="Flatten" + layout="topleft" + left_delta="0" + name="radio flatten" + top_delta="15" + width="114" /> + <radio_item + height="19" + label="Raise" + layout="topleft" + left_delta="0" + name="radio raise" + top_delta="15" + width="114" /> + <radio_item + height="19" + label="Lower" + layout="topleft" + left_delta="0" + name="radio lower" + top_delta="15" + width="114" /> + <radio_item + height="19" + label="Smooth" + layout="topleft" + left_delta="0" + name="radio smooth" + top_delta="15" + width="114" /> + <radio_item + height="19" + label="Roughen" + layout="topleft" + left_delta="0" + name="radio noise" + top_delta="15" + width="114" /> + <radio_item + height="19" + label="Revert" + layout="topleft" + left_delta="0" + name="radio revert" + top_delta="15" + width="114" /> + <radio_group.commit_callback + function="BuildTool.commitRadioLand"/> + </radio_group> + <text + type="string" + length="1" + follows="left|top" + height="12" + layout="topleft" + left="135" + name="Bulldozer:" + top="57" + width="100"> + Bulldozer: + </text> + <text + type="string" + length="1" + follows="left|top" + height="12" + layout="topleft" + name="Dozer Size:" + left="135" + top_pad="5" + width="50"> + Size + </text> + <slider_bar + control_name ="LandBrushSize" + follows="left|top" + height="19" + initial_value="2.0" + layout="topleft" + max_val="11" + min_val="1" + left_pad="0" + name="slider brush size" + top_delta="-3" + width="80" /> + <text + type="string" + length="1" + follows="left|top" + height="12" + layout="topleft" + name="Strength:" + left="135" + top_pad="5" + width="50"> + Strength + </text> + <slider_bar + follows="left|top" + height="19" + left_pad="0" + initial_value="0.00" + layout="topleft" + max_val="2" + min_val="-1" + name="slider force" + top_delta="-3" + width="80" > + <slider_bar.commit_callback + function="BuildTool.LandBrushForce"/> + </slider_bar> + <button + follows="left|top" + height="23" + label="Apply" + label_selected="Apply" + top_pad="5" + layout="topleft" + left="135" + name="button apply to selection" + tool_tip="Modify selected land" + width="82"> + <button.commit_callback + function="BuildTool.applyToSelection"/> + </button> + <text + text_color="LtGray_50" + type="string" + length="1" + height="10" + follows="left|top" + halign="right" + layout="topleft" + right="-10" + name="obj_count" + top_pad="5" + width="143"> + Objects: [COUNT] + </text> + <text + text_color="LtGray_50" + type="string" + length="1" + height="10" + follows="left|top" + halign="right" + layout="topleft" + right="-10" + name="prim_count" + width="143"> + Prims: [COUNT] + </text> + <text + text_color="LtGray_50" + type="string" + length="1" + height="10" + follows="left|top" + halign="right" + layout="topleft" + right="-120" + name="linked_set_count" + top="144" + width="80"> + Linked Sets: [COUNT] + </text> + <text + text_color="LtGray_50" + type="string" + length="1" + height="10" + follows="left|top" + halign="right" + layout="topleft" + top_delta="0" + right="-8" + name="linked_set_cost" + tool_tip="Cost of currently selected linked sets as [prims],[physics complexity]" + width="80"> + Cost: [COST] / [PHYSICS] + </text> + <text + text_color="LtGray_50" + type="string" + length="1" + follows="left|top" + halign="right" + layout="topleft" + top_pad="5" + right="-120" + name="object_count" + width="80"> + Objects: [COUNT] + </text> + <text + text_color="LtGray_50" + type="string" + length="1" + follows="left|top" + halign="right" + layout="topleft" + top_delta="0" + right="-8" + name="object_cost" + tool_tip="Cost of currently selected objects as [prims] / [physics complexity]" + width="80"> + Cost: [COST] / [PHYSICS] + </text> + <!-- <text --> + <!-- text_color="LtGray_50" --> + <!-- type="string" --> + <!-- length="1" --> + <!-- height="10" --> + <!-- follows="left|top" --> + <!-- halign="right" --> + <!-- layout="topleft" --> + <!-- right="-10" --> + <!-- name="obj_count" --> + <!-- top_pad="5" --> + <!-- width="143"> --> + <!-- Objects: [COUNT] --> + <!-- </text> --> + <!-- <text --> + <!-- text_color="LtGray_50" --> + <!-- type="string" --> + <!-- length="1" --> + <!-- follows="left|top" --> + <!-- halign="right" --> + <!-- layout="topleft" --> + <!-- right="-10" --> + <!-- name="prim_count" --> + <!-- width="143"> --> + <!-- Prims: [COUNT] --> + <!-- </text> --> + <tab_container + follows="left|top" + height="410" + halign="center" + left="0" + name="Object Info Tabs" + tab_max_width="100" + tab_min_width="40" + tab_position="top" + tab_height="25" + top="173" + width="295"> + +<panel + border="false" + follows="all" + label="General" + layout="topleft" + mouse_opaque="false" + help_topic="toolbox_general_tab" + name="General" + top="16" + width="295"> + <panel.string + name="text deed continued"> + Deed + </panel.string> + <panel.string + name="text deed"> + Deed + </panel.string> + <panel.string + name="text modify info 1"> + You can modify this object + </panel.string> + <panel.string + name="text modify info 2"> + You can modify these objects + </panel.string> + <panel.string + name="text modify info 3"> + You can't modify this object + </panel.string> + <panel.string + name="text modify info 4"> + You can't modify these objects + </panel.string> + <panel.string + name="text modify warning"> + You must select entire object to set permissions + </panel.string> + <panel.string + name="Cost Default"> + Price: L$ + </panel.string> + <panel.string + name="Cost Total"> + Total Price: L$ + </panel.string> + <panel.string + name="Cost Per Unit"> + Price Per: L$ + </panel.string> + <panel.string + name="Cost Mixed"> + Mixed Price + </panel.string> + <panel.string + name="Sale Mixed"> + Mixed Sale + </panel.string> + <text + follows="left|top" + height="10" + left="10" + name="Name:" + top="5" + width="90"> + Name: + </text> + <line_editor + follows="left|top|right" + height="19" + left_pad="0" + max_length_bytes="63" + name="Object Name" + select_on_focus="true" + top_delta="0" + width="170" /> + <text + follows="left|top" + height="10" + left="10" + name="Description:" + top_pad="3" + width="90"> + Description: + </text> + <line_editor + follows="left|top|right" + height="19" + left_pad="0" + max_length_bytes="127" + name="Object Description" + select_on_focus="true" + top_delta="0" + width="170" /> + <text + type="string" + left="10" + length="1" + follows="left|top" + height="19" + layout="topleft" + name="Creator:" + top_pad="7" + width="90"> + Creator: + </text> + <!-- *NOTE: Intentionally wide for long names --> + <text + type="string" + length="1" + follows="left|top" + left_pad="0" + height="20" + layout="topleft" + name="Creator Name" + top_delta="0" + translate="false" + width="190" + word_wrap="true" + use_ellipses="true"> + TestString PleaseIgnore (please.ignore) + </text> + <text + type="string" + length="1" + left="10" + follows="left|top" + height="19" + layout="topleft" + name="Owner:" + top_pad="13" + width="90"> + Owner: + </text> + <!-- *NOTE: Intentionally wide for long names --> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + name="Owner Name" + left_pad="0" + top_delta="0" + translate="false" + width="190" + word_wrap="true" + use_ellipses="true"> + TestString PleaseIgnore (please.ignore) + </text> + <text + type="string" + length="1" + follows="left|top" + layout="topleft" + left="10" + height="18" + name="Group:" + top_pad="17" + width="75"> + Group: + </text> + <name_box + follows="left|top" + height="18" + initial_value="Loading..." + layout="topleft" + left_pad="23" + name="Group Name Proxy" + width="142" /> + <button + follows="top|left" + height="23" + image_overlay="Edit_Wrench" + layout="topleft" + left_pad="13" + name="button set group" + tab_stop="false" + tool_tip="Choose a group to share this object's permissions" + width="23" /> + <check_box + height="19" + follows="left|top" + label="Share" + layout="topleft" + name="checkbox share with group" + tool_tip="Allow all members of the set group to share your modify permissions for this object. You must Deed to enable role restrictions." + top_pad="10" + left="100" + width="87" /> + <button + follows="top|left" + height="23" + label="Deed" + label_selected="Deed" + layout="topleft" + name="button deed" + left_pad="19" + tool_tip="Deeding gives this item away with next owner permissions. Group shared objects can be deeded by a group officer." + width="80" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + top_pad="10" + left="10" + name="label click action" + width="118"> + Click to: + </text> + <combo_box + follows="left|top" + height="23" + layout="topleft" + name="clickaction" + width="148" + left_pad="10"> + <combo_box.item + label="Touch (default)" + name="Touch/grab(default)" + value="Touch" /> + <combo_box.item + label="Sit on object" + name="Sitonobject" + value="Sit" /> + <combo_box.item + label="Buy object" + name="Buyobject" + value="Buy" /> + <combo_box.item + label="Pay object" + name="Payobject" + value="Pay" /> + <combo_box.item + label="Open" + name="Open" + value="Open" /> + <combo_box.item + label="Zoom" + name="Zoom" + value="Zoom" /> + </combo_box> + <check_box + height="23" + label="For Sale:" + layout="topleft" + name="checkbox for sale" + left="7" + width="100" /> +<!-- NEW SALE TYPE COMBO BOX --> + <combo_box + left_pad="10" + layout="topleft" + follows="left|top" + allow_text_entry="false" + height="23" + initial_value="2" + max_chars="20" + mouse_opaque="true" + name="sale type" + width="168"> + <combo_box.item + name="Copy" + label="Copy" + value="2" /> + <combo_box.item + name="Contents" + label="Contents" + value="3" /> + <combo_box.item + name="Original" + label="Original" + value="1" /> + </combo_box> +<!-- NEW PRICE SPINNER +Objects are allowed to be for sale for L$0 to invoke buy UI behavior +even though the user gets a free copy. +--> + <spinner + follows="left|top" + decimal_digits="0" + increment="1" + top_pad="8" + left="118" + control_name="Edit Cost" + name="Edit Cost" + label="Price: L$" + label_width="65" + width="165" + min_val="0" + height="20" + max_val="999999999" /> + <check_box + height="15" + width="110" + top_pad="5" + label="Show in search" + layout="topleft" + left="100" + name="search_check" + tool_tip="Let people see this object in search results" /> + <panel + border="false" + follows="left|top" + layout="topleft" + mouse_opaque="false" + background_visible="true" + bg_alpha_color="DkGray" + name="perms_build" + left="0" + top_pad="4" + height="105" + width="290"> + <text + type="string" + length="1" + left="10" + top_pad="9" + text_color="EmphasisColor" + height="16" + follows="left|top|right" + layout="topleft" + name="perm_modify" + width="264"> + You can modify this object + </text> + <text + type="string" + follows="left|top" + name="Anyone can:" + width="250" + left="10"> + Anyone: + </text> + <check_box + height="19" + label="Move" + layout="topleft" + name="checkbox allow everyone move" + left="10" + width="85" /> + <check_box + height="19" + label="Copy" + layout="topleft" + left_pad="0" + name="checkbox allow everyone copy" + width="90" /> + <text + type="string" + follows="left|top" + height="19" + name="Next owner can:" + width="250" + left="10"> + Next owner: + </text> + <check_box + follows="left|top|right" + label="Modify" + layout="topleft" + left="10" + name="checkbox next owner can modify" + width="85" /> + <check_box + follows="left|top|right" + height="19" + label="Copy" + layout="topleft" + left_pad="0" + name="checkbox next owner can copy" + width="80" /> + <check_box + follows="left|top|right" + height="19" + label="Transfer" + layout="topleft" + name="checkbox next owner can transfer" + left_pad="0" + top_delta="0" + tool_tip="Next owner can give away or resell this object" + width="100" /> +<!-- *NOTE: These "B/O/G/E/N/F fields may overlap "perm_modify" above, + but that's OK, this is used only for debugging. --> + <text + type="string" + text_color="EmphasisColor" + length="1" + top="9" + follows="left|top" + layout="topleft" + left="230" + name="B:" + height="10" + width="80"> + B: + </text> + <text + type="string" + text_color="White" + length="1" + follows="left|top" + layout="topleft" + left_delta="0" + top_pad="2" + name="O:" + height="10" + width="80"> + O: + </text> + <text + type="string" + text_color="EmphasisColor" + length="1" + follows="left|top" + layout="topleft" + left_delta="0" + top_pad="2" + name="G:" + height="10" + width="80"> + G: + </text> + <text + type="string" + text_color="White" + length="1" + follows="left|top" + left_delta="0" + top_pad="2" + layout="topleft" + name="E:" + height="10" + width="80"> + E: + </text> + <text + type="string" + text_color="EmphasisColor" + length="1" + follows="left|top" + layout="topleft" + left_delta="0" + top_pad="2" + name="N:" + height="10" + width="80"> + N: + </text> + <text + type="string" + text_color="White" + length="1" + follows="left|top" + layout="topleft" + left_delta="0" + top_pad="2" + name="F:" + height="10" + width="80"> + F: + </text> + </panel> + </panel> + <!-- Object tab --> + <panel + border="false" + follows="all" + height="567" + label="Object" + layout="topleft" + left_delta="0" + mouse_opaque="false" + help_topic="toolbox_object_tab" + name="Object" + top="16" + width="295"> + <check_box + height="19" + label="Locked" + layout="topleft" + name="checkbox locked" + tool_tip="Prevents object from being moved or deleted. Frequently useful during building to avoid unintended edits." + top_pad="5" + left="10" + width="123" /> + <check_box + height="19" + label="Physical" + layout="topleft" + name="Physical Checkbox Ctrl" + tool_tip="Allows object to be pushed and affected by gravity" + top_pad="0" + width="123" /> + <check_box + height="19" + label="Temporary" + layout="topleft" + name="Temporary Checkbox Ctrl" + tool_tip="Causes object to be deleted 1 minute after creation" + top_pad="0" + width="123" /> + <check_box + height="19" + label="Phantom" + layout="topleft" + name="Phantom Checkbox Ctrl" + tool_tip="Causes object to not collide with other objects or avatars" + top_pad="0" + width="123" /> + + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + name="label position" + top_pad="10" + width="121"> + Position (meters) + </text> + <spinner + follows="left|top" + height="19" + increment="0.01" + initial_value="0" + label="X" + label_width="10" + layout="topleft" + left_delta="0" + max_val="512" + min_val="-256" + name="Pos X" + text_enabled_color="1 0 0.3 .7" + top_pad="5" + width="87" /> + <spinner + follows="left|top" + height="19" + increment="0.01" + initial_value="0" + label="Y" + label_width="10" + layout="topleft" + left_delta="0" + max_val="512" + min_val="-256" + name="Pos Y" + text_enabled_color="EmphasisColor" + top_pad="3" + width="87" /> + <spinner + follows="left|top" + height="19" + increment="0.01" + initial_value="0" + label="Z" + label_width="10" + layout="topleft" + left_delta="0" + max_val="4096" + name="Pos Z" + text_enabled_color="0 0.8 1 .65" + top_pad="3" + width="87" /> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_delta="0" + name="label size" + top_pad="6" + width="121"> + Size (meters) + </text> + <spinner + follows="left|top" + height="19" + increment="0.01" + initial_value="0" + label="X" + label_width="10" + layout="topleft" + left_delta="0" + max_val="64" + min_val="0.01" + name="Scale X" + text_enabled_color="1 1 1 1" + top_pad="5" + width="87" /> + <spinner + follows="left|top" + height="19" + increment="0.01" + initial_value="0" + label="Y" + label_width="10" + layout="topleft" + left_delta="0" + max_val="64" + min_val="0.01" + name="Scale Y" + text_enabled_color="1 1 1 1" + top_pad="3" + width="87" /> + <spinner + follows="left|top" + height="19" + increment="0.01" + initial_value="0" + label="Z" + label_width="10" + layout="topleft" + left_delta="0" + max_val="64" + min_val="0.01" + name="Scale Z" + text_enabled_color="1 1 1 1" + top_pad="3" + width="87" /> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_delta="0" + name="label rotation" + top_pad="10" + width="121"> + Rotation (degrees) + </text> + <spinner + decimal_digits="2" + follows="left|top" + height="19" + increment="1" + initial_value="0" + label="X" + label_width="10" + layout="topleft" + left_delta="0" + max_val="9999" + min_val="-9999" + name="Rot X" + text_enabled_color="1 1 1 1" + top_pad="5" + width="87" /> + <spinner + decimal_digits="2" + follows="left|top" + height="19" + increment="1" + initial_value="0" + label="Y" + label_width="10" + layout="topleft" + left_delta="0" + max_val="9999" + min_val="-9999" + name="Rot Y" + text_enabled_color="1 1 1 1" + top_pad="3" + width="87" /> + <spinner + decimal_digits="2" + follows="left|top" + height="19" + increment="1" + initial_value="0" + label="Z" + label_width="10" + layout="topleft" + left_delta="0" + max_val="9999" + min_val="-9999" + name="Rot Z" + text_enabled_color="1 1 1 1" + top_pad="3" + width="87" /> + <!-- <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="125" + name="label basetype" + top="5" + width="150"> + Prim Type + </text>--> + <combo_box + height="19" + layout="topleft" + name="comboBaseType" + top="6" + left="125" + width="150"> + <combo_box.item + label="Box" + name="Box" + value="Box" /> + <combo_box.item + label="Cylinder" + name="Cylinder" + value="Cylinder" /> + <combo_box.item + label="Prism" + name="Prism" + value="Prism" /> + <combo_box.item + label="Sphere" + name="Sphere" + value="Sphere" /> + <combo_box.item + label="Torus" + name="Torus" + value="Torus" /> + <combo_box.item + label="Tube" + name="Tube" + value="Tube" /> + <combo_box.item + label="Ring" + name="Ring" + value="Ring" /> + <combo_box.item + label="Sculpted" + name="Sculpted" + value="Sculpted" /> + </combo_box> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_delta="0" + name="text cut" + top_pad="5" + width="150"> + Path Cut (begin/end) + </text> + <spinner + follows="left|top" + height="16" + increment="0.025" + initial_value="0" + label="B" + label_width="10" + layout="topleft" + left_delta="0" + max_val="0.98" + name="cut begin" + top_pad="4" + width="68" /> + <spinner + follows="left|top" + height="16" + increment="0.025" + initial_value="1" + label="E" + label_width="10" + layout="topleft" + left_pad="10" + min_val="0.02" + name="cut end" + top_delta="0" + width="68" /> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="125" + name="text hollow" + top_pad="6" + width="68"> + Hollow + </text> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_pad="10" + name="text skew" + width="63"> + Skew + </text> + <spinner + decimal_digits="1" + follows="left|top" + height="19" + increment="5" + initial_value="0" + layout="topleft" + left="125" + max_val="95" + name="Scale 1" + top_pad="4" + width="68" /> + <spinner + decimal_digits="2" + follows="left|top" + height="19" + increment="0.05" + initial_value="0" + layout="topleft" + left_pad="10" + max_val="0.95" + min_val="-0.95" + name="Skew" + top_delta="0" + width="68" /> + <text + type="string" + length="1" + follows="left|top" + height="15" + layout="topleft" + left="125" + name="Hollow Shape" + top_pad="4" + width="150"> + Hollow Shape + </text> + <combo_box + height="23" + layout="topleft" + left_delta="0" + name="hole" + top_pad="-2" + width="150"> + <combo_box.item + label="Default" + name="Default" + value="Default" /> + <combo_box.item + label="Circle" + name="Circle" + value="Circle" /> + <combo_box.item + label="Square" + name="Square" + value="Square" /> + <combo_box.item + label="Triangle" + name="Triangle" + value="Triangle" /> + </combo_box> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_delta="0" + name="text twist" + top_pad="5" + width="150"> + Twist (begin/end) + </text> + <spinner + decimal_digits="0" + follows="left|top" + height="19" + increment="9" + initial_value="0" + label="B" + label_width="10" + layout="topleft" + left_delta="0" + max_val="180" + min_val="-180" + name="Twist Begin" + top_pad="4" + width="68" /> + <spinner + decimal_digits="0" + follows="left|top" + height="19" + increment="9" + initial_value="0" + label="E" + label_width="10" + layout="topleft" + left_pad="10" + max_val="180" + min_val="-180" + name="Twist End" + top_delta="0" + width="68" /> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="125" + name="scale_taper" + top_pad="3" + width="150"> + Taper + </text> + <text + visible="false" + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_delta="0" + name="scale_hole" + top_delta="0" + width="150"> + Hole Size + </text> + <spinner + decimal_digits="2" + follows="left|top" + height="19" + increment="0.05" + initial_value="0" + label="X" + label_width="10" + layout="topleft" + left_delta="0" + min_val="-1" + name="Taper Scale X" + top_pad="4" + width="68" /> + <spinner + decimal_digits="2" + follows="left|top" + height="19" + increment="0.05" + initial_value="0" + label="Y" + label_width="10" + layout="topleft" + left_pad="10" + min_val="-1" + name="Taper Scale Y" + top_delta="0" + width="68" /> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="125" + name="text topshear" + top_pad="3" + width="141"> + Top Shear + </text> + <spinner + decimal_digits="2" + follows="left|top" + height="19" + increment="0.05" + initial_value="0" + label="X" + label_width="10" + layout="topleft" + left_delta="0" + max_val="0.5" + min_val="-0.5" + name="Shear X" + top_pad="4" + width="68" /> + <spinner + decimal_digits="2" + follows="left|top" + height="19" + increment="0.05" + initial_value="0" + label="Y" + label_width="10" + layout="topleft" + left_pad="10" + max_val="0.5" + min_val="-0.5" + name="Shear Y" + top_delta="0" + width="68" /> + <text + visible="false" + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="125" + name="advanced_cut" + top_pad="3" + width="150"> + Profile Cut (begin/end) + </text> + <text + visible="false" + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_delta="0" + name="advanced_dimple" + top_delta="0" + width="150"> + Dimple (begin/end) + </text> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_delta="0" + name="advanced_slice" + top_delta="0" + width="150"> + Slice (begin/end) + </text> + <spinner + follows="left|top" + height="19" + increment="0.02" + initial_value="0" + label="B" + label_width="10" + layout="topleft" + left_delta="0" + max_val="0.98" + name="Path Limit Begin" + top_pad="3" + width="68" /> + <spinner + follows="left|top" + height="19" + increment="0.02" + initial_value="1" + label="E" + label_width="10" + layout="topleft" + left_pad="10" + min_val="0.02" + name="Path Limit End" + top_delta="0" + width="68" /> + <text + visible="false" + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="125" + name="text taper2" + top_pad="3" + width="150"> + Taper + </text> + <spinner + visible="false" + decimal_digits="2" + follows="left|top" + height="19" + increment="0.05" + initial_value="0" + label="X" + label_width="10" + layout="topleft" + left_delta="0" + min_val="-1" + name="Taper X" + top_pad="3" + width="68" /> + <spinner + visible="false" + decimal_digits="2" + follows="left|top" + height="19" + increment="0.05" + initial_value="0" + label="Y" + label_width="10" + layout="topleft" + left_pad="10" + min_val="-1" + name="Taper Y" + top_delta="0" + width="68" /> + <text + visible="false" + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="125" + name="text radius delta" + top_pad="2" + width="78"> + Radius + </text> + <text + visible="false" + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_delta="78" + name="text revolutions" + width="68"> + Revolutions + </text> + <spinner + visible="false" + follows="left|top" + height="19" + increment="0.05" + initial_value="0" + layout="topleft" + left="125" + min_val="-1" + name="Radius Offset" + top_pad="4" + width="68" /> + <spinner + visible="false" + decimal_digits="2" + follows="left|top" + height="19" + initial_value="1" + layout="topleft" + left_pad="10" + max_val="4" + min_val="1" + name="Revolutions" + top_delta="0" + width="68" /> + <texture_picker + can_apply_immediately="true" + default_image_name="Default" + follows="left|top" + height="141" + label="Sculpt Texture" + layout="topleft" + left="125" + name="sculpt texture control" + tool_tip="Click to choose a picture" + top="70" + visible="false" + width="145" /> + <check_box + height="19" + label="Mirror" + layout="topleft" + left_delta="0" + name="sculpt mirror control" + tool_tip="Flips sculpted prim along the X axis" + top_pad="8" + visible="false" + width="130" /> + <check_box + height="19" + label="Inside-out" + layout="topleft" + left_delta="0" + name="sculpt invert control" + tool_tip="Inverts the sculpted prims normals, making it appear inside-out" + top_pad="4" + visible="false" + width="121" /> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_delta="0" + name="label sculpt type" + top_pad="10" + visible="false" + width="130"> + Stitching type + </text> + <combo_box + height="19" + layout="topleft" + left_delta="0" + name="sculpt type control" + top_pad="4" + visible="false" + width="150"> + <combo_box.item + label="(none)" + name="None" + value="None" /> + <combo_box.item + label="Sphere" + name="Sphere" + value="Sphere" /> + <combo_box.item + label="Torus" + name="Torus" + value="Torus" /> + <combo_box.item + label="Plane" + name="Plane" + value="Plane" /> + <combo_box.item + label="Cylinder" + name="Cylinder" + value="Cylinder" /> + <combo_box.item + label="Mesh" + name="Mesh" + value="Mesh" /> + </combo_box> + </panel> + <panel + border="false" + follows="all" + height="367" + label="Features" + layout="topleft" + left_delta="0" + mouse_opaque="false" + help_topic="toolbox_features_tab" + name="Features" + top_delta="0" + width="295"> + <panel.string name="None">None</panel.string> + <panel.string name="Prim">Prim</panel.string> + <panel.string name="Convex Hull">Convex Hull</panel.string> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left="10" + name="select_single" + top="5" + width="252" + word_wrap="true"> + Select only one primitive to edit features. + </text> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="10" + name="edit_object" + top="5" + width="252"> + Edit object features: + </text> + <check_box + height="19" + label="Flexible Path" + layout="topleft" + left="10" + name="Flexible1D Checkbox Ctrl" + tool_tip="Allows object to flex about the Z axis (Client-side only)" + top_pad="20" + width="121" /> + <spinner + follows="left|top" + height="19" + increment="1" + initial_value="2" + label="Softness" + label_width="70" + layout="topleft" + left_delta="0" + max_val="3" + name="FlexNumSections" + top_pad="10" + width="128" /> + <spinner + follows="left|top" + height="19" + increment="0.5" + initial_value="0.3" + label="Gravity" + label_width="70" + layout="topleft" + left_delta="0" + max_val="10" + min_val="-10" + name="FlexGravity" + top_pad="4" + width="128" /> + <spinner + follows="left|top" + height="19" + increment="0.5" + initial_value="2" + label="Drag" + label_width="70" + layout="topleft" + left_delta="0" + max_val="10" + name="FlexFriction" + top_pad="4" + width="128" /> + <spinner + follows="left|top" + height="19" + increment="0.5" + initial_value="0" + label="Wind" + label_width="70" + layout="topleft" + left_delta="0" + max_val="10" + name="FlexWind" + top_pad="4" + width="128" /> + <spinner + follows="left|top" + height="19" + increment="0.5" + initial_value="1" + label="Tension" + label_width="70" + layout="topleft" + left_delta="0" + max_val="10" + name="FlexTension" + top_pad="4" + width="128" /> + <spinner + follows="left|top" + height="19" + increment="0.01" + initial_value="0" + label="Force X" + label_width="70" + layout="topleft" + left_delta="0" + max_val="10" + min_val="-10" + name="FlexForceX" + top_pad="4" + width="128" /> + <spinner + follows="left|top" + height="19" + increment="0.01" + initial_value="0" + label="Force Y" + label_width="70" + layout="topleft" + left_delta="0" + max_val="10" + min_val="-10" + name="FlexForceY" + top_pad="4" + width="128" /> + <spinner + follows="left|top" + height="19" + increment="0.01" + initial_value="0" + label="Force Z" + label_width="70" + layout="topleft" + left_delta="0" + max_val="10" + min_val="-10" + name="FlexForceZ" + top_pad="4" + width="128" /> + + <check_box + height="16" + label="Light" + layout="topleft" + left="10" + name="Light Checkbox Ctrl" + tool_tip="Causes object to emit light" + top_pad="15" + width="60" /> + <color_swatch + can_apply_immediately="true" + color="0.5 0.5 0.5 1" + border.border_thickness="0" + follows="left|top" + height="50" + layout="topleft" + left_pad="10" + top_pad="-17" + name="colorswatch" + tool_tip="Click to open color picker" + width="40" /> + <texture_picker + allow_no_texture="true" + top_delta="0" + can_apply_immediately="true" + default_image_name="Default" + follows="left|top" + height="48" + label="" + left_delta="57" + mouse_opaque="true" + name="light texture control" + tool_tip="Click to choose a projection image (only has effect with deferred rendering enabled)" + width="32" /> + <spinner + follows="left|top" + height="19" + initial_value="0.5" + label="Intensity" + label_width="70" + layout="topleft" + left="10" + name="Light Intensity" + top_pad="3" + width="128" /> + <spinner bottom_delta="0" + decimal_digits="3" + follows="left|top" + height="16" + increment="0.1" + initial_value="0.5" + label="FOV" + label_width="55" + left="144" + max_val="3" + min_val="0" + mouse_opaque="true" + name="Light FOV" + width="120" /> + <spinner follows="left|top" + height="19" + initial_value="5" + label="Radius" + label_width="70" + layout="topleft" + left="10" + max_val="20" + name="Light Radius" + top_pad="3" + width="128" /> + <spinner bottom_delta="0" + decimal_digits="3" + follows="left|top" + height="16" + increment="0.5" + initial_value="0.5" + label="Focus" + label_width="55" + left="144" + max_val="20" + min_val="-20" + mouse_opaque="true" + name="Light Focus" + width="120" /> + <spinner follows="left|top" + height="19" + increment="0.25" + initial_value="1" + label="Falloff" + label_width="70" + layout="topleft" + left="10" + max_val="2" + name="Light Falloff" + top_pad="3" + width="128" /> + <spinner bottom_delta="0" + decimal_digits="3" + follows="left|top" + height="16" + increment="0.05" + initial_value="1" + label="Ambiance" + label_width="55" + left="144" + max_val="1" + min_val="0" + mouse_opaque="true" + name="Light Ambiance" + width="120" /> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + name="label physicsshapetype" + top="38" + width="121"> + Physics Shape Type: + </text> + <combo_box + height="19" + top_delta="15" + layout="topleft" + follows="left|top" + name="Physics Shape Type Combo Ctrl" + tool_tip="Choose the physics shape type" + width="108"/> + <combo_box + height="19" + layout="topleft" + name="material" + top_pad="5" + width="150"> + <combo_box.item + label="Stone" + name="Stone" + value="Stone" /> + <combo_box.item + label="Metal" + name="Metal" + value="Metal" /> + <combo_box.item + label="Glass" + name="Glass" + value="Glass" /> + <combo_box.item + label="Wood" + name="Wood" + value="Wood" /> + <combo_box.item + label="Flesh" + name="Flesh" + value="Flesh" /> + <combo_box.item + label="Plastic" + name="Plastic" + value="Plastic" /> + <combo_box.item + label="Rubber" + name="Rubber" + value="Rubber" /> + </combo_box> + + <spinner + follows="left|top" + height="19" + increment="1" + initial_value="1" + label="Gravity" + label_width="70" + layout="topleft" + min_val="-1" + max_val="28" + name="Physics Gravity" + top_pad="10" + width="132" /> + + <spinner + follows="left|top" + height="19" + increment="0.1" + initial_value="0" + label="Friction" + label_width="70" + layout="topleft" + left_delta="0" + max_val="255" + min_val="0" + name="Physics Friction" + top_pad="4" + width="132" /> + + <spinner + follows="left|top" + height="19" + increment="0.1" + initial_value="0" + label="Density" + label_width="70" + layout="topleft" + left_delta="0" + max_val="22587" + min_val="1" + name="Physics Density" + top_pad="4" + width="132" /> + + <spinner + follows="left|top" + height="19" + increment="0.01" + initial_value="0" + label="Restitution" + label_width="70" + layout="topleft" + left_delta="0" + max_val="1" + min_val="0" + name="Physics Restitution" + top_pad="4" + width="132" /> + </panel> + <panel + border="false" + follows="all" + height="367" + label="Texture" + layout="topleft" + left_delta="0" + mouse_opaque="false" + help_topic="toolbox_texture_tab" + name="Texture" + top_delta="0" + width="295"> + <panel.string + name="string repeats per meter"> + Repeats Per Meter + </panel.string> + <panel.string + name="string repeats per face"> + Repeats Per Face + </panel.string> + <texture_picker + can_apply_immediately="true" + default_image_name="Default" + fallback_image="locked_image.j2c" + follows="left|top" + height="80" + label="Texture" + layout="topleft" + left="10" + name="texture control" + tool_tip="Click to choose a picture" + top="8" + width="64" /> + <color_swatch + can_apply_immediately="true" + follows="left|top" + height="80" + label="Color" + layout="topleft" + left_pad="15" + name="colorswatch" + tool_tip="Click to open color picker" + top_delta="0" + width="64" /> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_pad="15" + name="color trans" + text_readonly_color="LabelDisabledColor" + top="6" + width="110"> + Transparency % + </text> + <spinner + decimal_digits="0" + follows="left|top" + height="19" + increment="2" + initial_value="0" + layout="topleft" + left_delta="0" + max_val="100" + name="ColorTrans" + top_pad="4" + width="80" /> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_delta="0" + name="glow label" + text_readonly_color="LabelDisabledColor" + top_pad="8" + width="80"> + Glow + </text> + <spinner + decimal_digits="2" + follows="left|top" + height="19" + initial_value="0" + layout="topleft" + left_delta="0" + name="glow" + top_pad="4" + width="80" /> + <check_box + height="19" + label="Full Bright" + layout="topleft" + left_delta="-5" + name="checkbox fullbright" + top_pad="4" + width="81" /> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="10" + name="tex gen" + text_readonly_color="LabelDisabledColor" + top_pad="5" + width="90"> + Mapping + </text> + <combo_box + height="23" + layout="topleft" + left_delta="0" + name="combobox texgen" + top_pad="4" + width="90"> + <combo_box.item + label="Default" + name="Default" + value="Default" /> + <combo_box.item + label="Planar" + name="Planar" + value="Planar" /> + </combo_box> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + name="label shininess" + left_pad="4" + text_readonly_color="LabelDisabledColor" + top_pad="-37" + width="90"> + Shininess + </text> + <combo_box + height="23" + layout="topleft" + left_delta="0" + name="combobox shininess" + top_pad="4" + width="90"> + <combo_box.item + label="None" + name="None" + value="None" /> + <combo_box.item + label="Low" + name="Low" + value="Low" /> + <combo_box.item + label="Medium" + name="Medium" + value="Medium" /> + <combo_box.item + label="High" + name="High" + value="High" /> + </combo_box> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_pad="4" + name="label bumpiness" + text_readonly_color="LabelDisabledColor" + top_pad="-37" + width="90"> + Bumpiness + </text> + <combo_box + height="23" + layout="topleft" + left_delta="0" + name="combobox bumpiness" + top_pad="4" + width="90"> + <combo_box.item + label="None" + name="None" + value="None" /> + <combo_box.item + label="Brightness" + name="Brightness" + value="Brightness" /> + <combo_box.item + label="Darkness" + name="Darkness" + value="Darkness" /> + <combo_box.item + label="woodgrain" + name="woodgrain" + value="woodgrain" /> + <combo_box.item + label="bark" + name="bark" + value="bark" /> + <combo_box.item + label="bricks" + name="bricks" + value="bricks" /> + <combo_box.item + label="checker" + name="checker" + value="checker" /> + <combo_box.item + label="concrete" + name="concrete" + value="concrete" /> + <combo_box.item + label="crustytile" + name="crustytile" + value="crustytile" /> + <combo_box.item + label="cutstone" + name="cutstone" + value="cutstone" /> + <combo_box.item + label="discs" + name="discs" + value="discs" /> + <combo_box.item + label="gravel" + name="gravel" + value="gravel" /> + <combo_box.item + label="petridish" + name="petridish" + value="petridish" /> + <combo_box.item + label="siding" + name="siding" + value="siding" /> + <combo_box.item + label="stonetile" + name="stonetile" + value="stonetile" /> + <combo_box.item + label="stucco" + name="stucco" + value="stucco" /> + <combo_box.item + label="suction" + name="suction" + value="suction" /> + <combo_box.item + label="weave" + name="weave" + value="weave" /> + </combo_box> + <!-- + <line_editor + bevel_style="in" + border_style="line" + border_thickness="1" + follows="left|top" + height="16" + layout="topleft" + left="10" + max_length_bytes="63" + name="Home Url" + select_on_focus="true" + top="134" + width="250" /> + <check_box + height="16" + label="Media Face" + layout="topleft" + left_delta="0" + name="has media" + top_pad="6" + width="70" /> + <button + follows="left|top" + font="SansSerifSmall" + height="20" + label="Set Media Info" + label_selected="Set Media Info" + layout="topleft" + left_pad="60" + name="media info set" + top_delta="-4" + width="120" /> +--> + <check_box + follows="top|left" + height="16" + initial_value="false" + label="Align planar faces" + layout="topleft" + left="17" + name="checkbox planar align" + tool_tip="Align textures on all selected faces with the last selected face. Requires Planar texture mapping." + top_delta="26" + width="140" /> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="10" + name="rpt" + text_readonly_color="LabelDisabledColor" + top_pad="2" + width="140"> + Repeats / Face + </text> + <spinner + follows="left|top" + height="19" + initial_value="0" + label="Horizontal (U)" + label_width="125" + layout="topleft" + left="20" + max_val="100" + name="TexScaleU" + top_pad="5" + width="185" /> + <check_box + height="19" + label="Flip" + layout="topleft" + left_pad="5" + name="checkbox flip s" + top_delta="0" + width="70" /> + <spinner + follows="left|top" + height="19" + initial_value="0" + label="Vertical (V)" + label_width="125" + layout="topleft" + left="20" + max_val="100" + name="TexScaleV" + width="185" /> + <check_box + height="19" + label="Flip" + layout="topleft" + left_pad="5" + name="checkbox flip t" + top_delta="0" + width="70" /> + <spinner + decimal_digits="2" + follows="left|top" + height="19" + increment="1" + initial_value="0" + label="Rotation˚" + layout="topleft" + label_width="135" + left="10" + max_val="9999" + min_val="-9999" + name="TexRot" + width="195" /> + + <spinner + decimal_digits="1" + follows="left|top" + height="23" + initial_value="1" + label="Repeats / Meter" + layout="topleft" + label_width="135" + left="10" + max_val="10" + min_val="0.1" + name="rptctrl" + width="195" /> + <button + follows="left|top" + height="23" + label="Apply" + label_selected="Apply" + layout="topleft" + left_pad="5" + name="button apply" + width="75" /> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="10" + name="tex offset" + text_readonly_color="LabelDisabledColor" + width="200"> + Texture Offset + </text> + <spinner + follows="left|top" + height="19" + initial_value="0" + label="Horizontal (U)" + label_width="125" + layout="topleft" + left="20" + min_val="-1" + name="TexOffsetU" + width="185" /> + <spinner + follows="left|top" + height="19" + initial_value="0" + label="Vertical (V)" + label_width="125" + layout="topleft" + left_delta="0" + min_val="-1" + name="TexOffsetV" + top_pad="1" + width="185" /> + <panel + border="false" + follows="left|top" + layout="topleft" + mouse_opaque="false" + background_visible="true" + bg_alpha_color="DkGray" + name="Add_Media" + left="0" + height="47" + width="290"> + <text + type="string" + length="1" + follows="left|top" + height="18" + layout="topleft" + left="10" + top_pad="3" + name="media_tex" + width="190"> + Media + </text> + <button + follows="top|left" + height="18" + image_selected="AddItem_Press" + image_unselected="AddItem_Off" + image_disabled="AddItem_Disabled" + layout="topleft" + left_pad="0" + name="add_media" + tab_stop="false" + top_delta="0" + tool_tip="Add Media" + width="18"> + <button.commit_callback + function="BuildTool.AddMedia"/> + </button> + <button + follows="top|left" + height="18" + image_selected="TrashItem_Press" + image_unselected="TrashItem_Off" + layout="topleft" + left_pad="5" + name="delete_media" + tool_tip="Delete this media texture" + top_delta="0" + width="18"> + <button.commit_callback + function="BuildTool.DeleteMedia"/> + </button> + <button + follows="top|left" + tool_tip="Edit this Media" + height="12" + image_disabled="Icon_Gear_Background" + image_selected="Icon_Gear_Press" + image_unselected="Icon_Gear_Foreground" + layout="topleft" + left_pad="10" + name="edit_media" + top_delta="3" + width="12"> + <button.commit_callback + function="BuildTool.EditMedia"/> + </button> + <text + follows="left|top|right" + height="9" + layout="topleft" + left="10" + use_ellipses="true" + read_only="true" + name="media_info" + width="280" /> + <web_browser + visible="false" + enabled="false" + border_visible="true" + bottom_delta="0" + follows="top|left" + left="0" + name="title_media" + width="4" + height="4" + start_url="about:blank" + decouple_texture_size="true" /> + <button + follows="right|top" + height="22" + label="Align" + label_selected="Align Media" + layout="topleft" + right="-16" + name="button align" + top_delta="-4" + tool_tip="Align media texture (must load first)" + width="80" /> + </panel> + </panel> + <panel + border="false" + follows="all" + label="Content" + layout="topleft" + left_delta="0" + mouse_opaque="false" + help_topic="toolbox_contents_tab" + name="Contents" + top_delta="0" + width="295"> + <button + follows="left|top" + height="23" + label="New Script" + label_selected="New Script" + layout="topleft" + left="10" + name="button new script" + top="10" + width="134" /> + <button + follows="left|top" + height="23" + label="Permissions" + layout="topleft" + left_pad="8" + name="button permissions" + width="134" /> + <panel_inventory_object + border="true" + border_visible="true" + bevel_style="in" + follows="left|top|right" + height="325" + layout="topleft" + left="10" + name="contents_inventory" + top="50" + width="275" /> + </panel> + </tab_container> + <panel + follows="left|top" + height="384" + layout="topleft" + left_delta="0" + name="land info panel" + top_delta="0" + width="295"> + <text + type="string" + length="1" + font="SansSerifBig" + follows="left|top" + height="19" + layout="topleft" + left="20" + name="label_parcel_info" + top="24" + width="240"> + Parcel Information + </text> + <text + type="string" + length="1" + follows="left|top" + height="19" + layout="topleft" + left="30" + name="label_area_price" + top="48" + width="150"> + Price: L$[PRICE] for [AREA] m² + </text> + <text + type="string" + length="1" + follows="left|top" + height="19" + layout="topleft" + left_delta="0" + name="label_area" + top_delta="0" + width="150"> + Area: [AREA] m² + </text> + <button + follows="left|top" + height="23" + label="About Land" + label_selected="About Land" + layout="topleft" + left_delta="0" + name="button about land" + top_pad="4" + width="125" /> + <check_box + control_name="ShowParcelOwners" + height="19" + label="Show owners" + layout="topleft" + left_delta="0" + name="checkbox show owners" + tool_tip="Colorize the parcels according to the type of owner: Green = Your land Aqua = Your group's land Red = Owned by others Yellow = For sale Purple = For auction Grey = Public" + top_pad="8" + width="205" /> + <text + type="string" + length="1" + font="SansSerifBig" + follows="left|top" + height="19" + layout="topleft" + left="20" + name="label_parcel_modify" + top="152" + width="240"> + Modify Parcel + </text> + <button + follows="left|top" + height="23" + label="Subdivide" + label_selected="Subdivide" + layout="topleft" + left="30" + name="button subdivide land" + top="172" + width="125" /> + <button + follows="left|top" + height="23" + label="Join" + label_selected="Join" + layout="topleft" + left_delta="0" + name="button join land" + top_pad="4" + width="125" /> + <text + type="string" + length="1" + font="SansSerifBig" + follows="left|top" + height="19" + layout="topleft" + left="20" + name="label_parcel_trans" + top="256" + width="240"> + Land Transactions + </text> + <button + follows="left|top" + height="23" + label="Buy Land" + label_selected="Buy Land" + layout="topleft" + left="30" + name="button buy land" + top="276" + width="125" /> + <button + follows="left|top" + height="23" + label="Abandon Land" + label_selected="Abandon Land" + layout="topleft" + left_delta="0" + name="button abandon land" + top_pad="4" + width="125" /> + </panel> +<!-- end of tabs --> +</floater> diff --git a/indra/newview/skins/default/xui/en/language_settings.xml b/indra/newview/skins/default/xui/en/language_settings.xml index c8a06fe401..51779e4bfd 100644 --- a/indra/newview/skins/default/xui/en/language_settings.xml +++ b/indra/newview/skins/default/xui/en/language_settings.xml @@ -4,6 +4,7 @@ <!-- Locale Information --> <string name="MicrosoftLocale">english</string> + <string name="MacLocale">C</string> <string name="DarwinLocale">C</string> <string name="LinuxLocale">C</string> diff --git a/indra/newview/skins/default/xui/en/menu_login.xml b/indra/newview/skins/default/xui/en/menu_login.xml index 0d4a095e14..4c4ff3e5c4 100644 --- a/indra/newview/skins/default/xui/en/menu_login.xml +++ b/indra/newview/skins/default/xui/en/menu_login.xml @@ -183,11 +183,11 @@ parameter="http://join.secondlife.com/"/> </menu_item_call> <menu_item_call - label="Web Content Floater Test" - name="Web Content Floater Test"> + label="Web Content Floater Debug Test" + name="Web Content Floater Debug Test"> <menu_item_call.on_click function="Advanced.WebContentTest" - parameter="http://www.google.com"/> + parameter="http://google.com"/> </menu_item_call> <menu_item_check label="Show Grid Picker" diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index ebfed990ec..ce96c488b4 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -4763,6 +4763,18 @@ Are you sure you want to delete your travel, web, and search history? notext="Cancel" yestext="OK"/> </notification> + + <notification + icon="alertmodal.tga" + name="ConfirmClearCache" + type="alertmodal"> +Are you sure you want to clear your viewer cache? + <tag>confirm</tag> + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> <notification icon="alertmodal.tga" @@ -5227,6 +5239,20 @@ Insufficient permissions to rez object. <notification icon="notifytip.tga" + name="IMAcrossParentEstates" + type="notifytip"> +Unable to send IM across parent estates. + </notification> + + <notification + icon="notifytip.tga" + name="TransferInventoryAcrossParentEstates" + type="notifytip"> +Unable to transfer inventory across parent estates. + </notification> + + <notification + icon="notifytip.tga" name="UnableToLoadNotecard" type="notifytip"> Unable to load notecard. diff --git a/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml index 37aab059a9..2cc9d9c1b0 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml @@ -20,8 +20,112 @@ height="12" layout="topleft" left="33" + name="Cache:" + top_pad="10" + width="100"> + Cache: + </text> + <spinner + control_name="CacheSize" + decimal_digits="0" + follows="left|top" + height="23" + increment="64" + initial_value="1024" + label="Cache size (64 - 9984MB)" + label_width="150" + layout="topleft" + left="80" + max_val="9984" + min_val="64" + top_pad="10" + name="cachesizespinner" + width="200" /> + <text + type="string" + length="1" + follows="left|top" + height="23" + layout="topleft" + left_pad="5" + mouse_opaque="false" + name="text_box5" + width="20"> + MB + </text> + <button + follows="left|top" + height="23" + label="Clear Cache" + label_selected="Clear Cache" + layout="topleft" + left_pad="30" + name="clear_cache" + top_delta="0" + width="100"> + <button.commit_callback + function="Pref.ClearCache" /> + </button> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="80" + name="Cache location" + top_pad="5" + width="300"> + Cache location: + </text> + <line_editor + control_name="CacheLocationTopFolder" + border_style="line" + border_thickness="1" + follows="left|top" + font="SansSerif" + height="23" + layout="topleft" + left="80" + max_length="4096" + name="cache_location" + top_pad="5" + width="205" /> + <button + follows="left|top" + height="23" + label="Browse" + label_selected="Browse" + layout="topleft" + left_pad="5" + name="set_cache" + top_delta="0" + width="100"> + <button.commit_callback + function="Pref.SetCache" /> + </button> + <button + follows="left|top" + height="23" + label="Default Location" + label_selected="Default Location" + layout="topleft" + left_pad="3" + name="default_cache_location" + top_delta="0" + width="100"> + <button.commit_callback + function="Pref.ResetCache" /> + </button> + <text + type="string" + length="1" + follows="left|top" + height="12" + layout="topleft" + left="33" name="UI Size:" - top_pad="25" + top_pad="20" width="100"> UI size: </text> diff --git a/indra/newview/skins/default/xui/en/panel_preferences_colors.xml b/indra/newview/skins/default/xui/en/panel_preferences_colors.xml index 7717872a6a..2b22f0d6e3 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_colors.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_colors.xml @@ -208,6 +208,37 @@ </text> <color_swatch can_apply_immediately="true" + color="LtOrange" + follows="left|top" + height="24" + label_height="0" + layout="topleft" + left="360" + name="direct" + top_pad="-15" + width="44" > + <color_swatch.init_callback + function="Pref.getUIColor" + parameter="DirectChatColor" /> + <color_swatch.commit_callback + function="Pref.applyUIColor" + parameter="DirectChatColor" /> + </color_swatch> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_pad="5" + mouse_opaque="false" + name="text_box10" + top_delta="5" + width="95"> + Direct + </text> + <color_swatch + can_apply_immediately="true" color="LtYellow" follows="left|top" height="24" diff --git a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml index 901a1257e0..1c22a5c02e 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml @@ -93,98 +93,6 @@ name="connection_port" top_delta="3" width="170" /> - <text - type="string" - length="1" - follows="left|top" - height="10" - layout="topleft" - left="80" - mouse_opaque="false" - name="cache_size_label_l" - top_pad="20" - width="200"> - Cache size - </text> - <slider - can_edit_text="true" - control_name="CacheSize" - decimal_digits="0" - follows="left|top" - height="15" - increment="16" - initial_value="512" - layout="topleft" - left_delta="150" - max_val="1024" - min_val="32" - name="cache_size" - top_delta="-2" - width="180" /> - <text - type="string" - length="1" - follows="left|top" - height="10" - layout="topleft" - left_pad="6" - mouse_opaque="false" - name="text_box5" - top_delta="1" - width="40"> - MB - </text> - <text - type="string" - length="1" - follows="left|top" - height="10" - layout="topleft" - left="80" - name="Cache location" - top_delta="20" - width="300"> - Cache location: - </text> - <line_editor - control_name="CacheLocationTopFolder" - border_style="line" - border_thickness="1" - follows="left|top" - font="SansSerif" - height="23" - layout="topleft" - left="80" - max_length="4096" - name="cache_location" - top_pad="5" - width="205" /> - <button - follows="left|top" - height="23" - label="Browse" - label_selected="Browse" - layout="topleft" - left_pad="5" - name="set_cache" - top_delta="-1" - width="100"> - <button.commit_callback - function="Pref.SetCache" /> - </button> - <button - follows="left|top" - height="23" - label="Reset" - label_selected="Reset" - layout="topleft" - left_pad="3" - name="reset_cache" - top_delta="0" - width="100"> - <button.commit_callback - function="Pref.ResetCache" /> - </button> <text type="string" diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index f8c90106b7..339f14eacb 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -1908,6 +1908,15 @@ Requests single-word username of an avatar. When data is available the dataserv key llRequestDisplayName(key id) Requests name of an avatar. When data is available the dataserver event will be raised. </string> +<string name="LSLTipText_llRegionSayTo" translate="false"> +llRegionSayTo(key target, integer channel, string msg) +Sends msg on channel (not DEBUG_CHANNEL) directly to prim or avatar target anywhere within the region +</string> +<string name="LSLTipText_llGetEnv" translate="false"> +llGetEnv(string name) +Returns a string with the requested data about the region +</string> + <!-- Avatar busy/away mode --> <string name="AvatarSetNotAway">Not Away</string> diff --git a/indra/newview/skins/default/xui/es/floater_camera.xml b/indra/newview/skins/default/xui/es/floater_camera.xml index ccf3d4bf91..87177e285c 100644 --- a/indra/newview/skins/default/xui/es/floater_camera.xml +++ b/indra/newview/skins/default/xui/es/floater_camera.xml @@ -13,7 +13,7 @@ Modos de cámara </floater.string> <floater.string name="pan_mode_title"> - Orbital - Zoom - Panóramica + Orbital - Zoom - Panorámica </floater.string> <floater.string name="presets_mode_title"> Vistas predefinidas @@ -59,7 +59,7 @@ </panel> <panel name="buttons"> <button label="" name="presets_btn" tool_tip="Vistas predefinidas"/> - <button label="" name="pan_btn" tool_tip="Orbital - Zoom - Panóramica"/> + <button label="" name="pan_btn" tool_tip="Orbital - Zoom - Panorámica"/> <button label="" name="avatarview_btn" tool_tip="Modos de cámara"/> </panel> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_help_browser.xml b/indra/newview/skins/default/xui/es/floater_help_browser.xml index ec3c38e8c7..5ebd7ad6e0 100644 --- a/indra/newview/skins/default/xui/es/floater_help_browser.xml +++ b/indra/newview/skins/default/xui/es/floater_help_browser.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_help_browser" title="BUSCADOR DE AYUDA"> +<floater name="floater_help_browser" title="BUSCAR EN LA AYUDA"> <floater.string name="loading_text"> Cargando... </floater.string> diff --git a/indra/newview/skins/default/xui/es/floater_tools.xml b/indra/newview/skins/default/xui/es/floater_tools.xml index fba969f267..13be47f700 100644 --- a/indra/newview/skins/default/xui/es/floater_tools.xml +++ b/indra/newview/skins/default/xui/es/floater_tools.xml @@ -58,7 +58,7 @@ <radio_item label="Horizontal (Ctrl+Shift)" name="radio spin"/> </radio_group> <radio_group name="edit_radio_group"> - <radio_item label="Moverse" name="radio position"/> + <radio_item label="Mover" name="radio position"/> <radio_item label="Girar (Ctrl)" name="radio rotate"/> <radio_item label="Estirar (Ctrl+Shift)" name="radio stretch"/> <radio_item label="Elegir la cara" name="radio select face"/> @@ -480,7 +480,7 @@ Modificar la parcela </text> <button label="Dividir" label_selected="Dividir" name="button subdivide land"/> - <button label="Inscribirse" label_selected="Inscribirse" name="button join land"/> + <button label="Unir" label_selected="Unir" name="button join land"/> <text name="label_parcel_trans"> Transacciones de terreno </text> diff --git a/indra/newview/skins/default/xui/es/language_settings.xml b/indra/newview/skins/default/xui/es/language_settings.xml index f172994077..997293a741 100644 --- a/indra/newview/skins/default/xui/es/language_settings.xml +++ b/indra/newview/skins/default/xui/es/language_settings.xml @@ -4,6 +4,7 @@ <!-- Locale Information --> <string name="MicrosoftLocale">spanish</string> + <string name="MacLocale">es_ES.UTF-8</string> <string name="DarwinLocale">es_ES.UTF-8</string> <string name="LinuxLocale">es_ES.UTF-8</string> diff --git a/indra/newview/skins/default/xui/es/menu_viewer.xml b/indra/newview/skins/default/xui/es/menu_viewer.xml index 138bbd9412..1c45d36813 100644 --- a/indra/newview/skins/default/xui/es/menu_viewer.xml +++ b/indra/newview/skins/default/xui/es/menu_viewer.xml @@ -146,7 +146,7 @@ <menu_item_check label="Estadísticas" name="Statistics Bar"/> <menu_item_check label="Mostrar cuánto cuesta renderizar el avatar" name="Avatar Rendering Cost"/> </menu> - <menu label="Realzando y Visibilidad" name="Highlighting and Visibility"> + <menu label="Realzado y Visibilidad" name="Highlighting and Visibility"> <menu_item_check label="Baliza con destellos" name="Cheesy Beacon"/> <menu_item_check label="Ocultar las partículas" name="Hide Particles"/> <menu_item_check label="Ocultar lo seleccionado" name="Hide Selected"/> diff --git a/indra/newview/skins/default/xui/es/panel_im_control_panel.xml b/indra/newview/skins/default/xui/es/panel_im_control_panel.xml index 7d4db6a630..f218324d50 100644 --- a/indra/newview/skins/default/xui/es/panel_im_control_panel.xml +++ b/indra/newview/skins/default/xui/es/panel_im_control_panel.xml @@ -8,7 +8,7 @@ <button label="Añadir como amigo" name="add_friend_btn"/> </layout_panel> <layout_panel name="teleport_btn_panel"> - <button label="Teleportarme" name="teleport_btn" tool_tip="Ofrecer teleporte a esta persona"/> + <button label="Teleportar" name="teleport_btn" tool_tip="Ofrecer teleporte a esta persona"/> </layout_panel> <layout_panel name="share_btn_panel"> <button label="Compartir" name="share_btn"/> diff --git a/indra/newview/skins/default/xui/es/panel_login.xml b/indra/newview/skins/default/xui/es/panel_login.xml index eee1844c46..0e94cbe70b 100644 --- a/indra/newview/skins/default/xui/es/panel_login.xml +++ b/indra/newview/skins/default/xui/es/panel_login.xml @@ -30,6 +30,7 @@ <combo_box name="start_location_combo"> <combo_box.item label="Mi última posición" name="MyLastLocation"/> <combo_box.item label="Mi Base" name="MyHome"/> + <combo_box.item label="<Escribe en qué región>" name="Typeregionname"/> </combo_box> </layout_panel> <layout_panel name="links"> diff --git a/indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml index 0ac3d11ab0..ac40587033 100644 --- a/indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml @@ -48,7 +48,7 @@ m </text> <slider label="Núm. máx. de partículas:" name="MaxParticleCount"/> - <slider label="N.º máximo de avatares no impostores:" name="MaxNumberAvatarDrawn"/> + <slider label="Nº máx. de avats. no impostores:" name="MaxNumberAvatarDrawn"/> <slider label="Calidad de procesamiento:" name="RenderPostProcess"/> <text name="MeshDetailText"> Detalle de la malla: diff --git a/indra/newview/skins/default/xui/es/panel_preferences_sound.xml b/indra/newview/skins/default/xui/es/panel_preferences_sound.xml index 8ce8e23138..fa7806a75a 100644 --- a/indra/newview/skins/default/xui/es/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/es/panel_preferences_sound.xml @@ -14,7 +14,7 @@ <slider label="Música en streaming" name="Music Volume"/> <check_box label="Activados" name="enable_music"/> <slider label="Multimedia" name="Media Volume"/> - <check_box label="Activada" name="enable_media"/> + <check_box label="Activados" name="enable_media"/> <slider label="Chat de voz" name="Voice Volume"/> <check_box label="Activado" name="enable_voice_check"/> <check_box label="Permitir la ejecución automática de los media" name="media_auto_play_btn" tool_tip="Marcar esto para permitir la ejecución automática de los media" value="true"/> diff --git a/indra/newview/skins/default/xui/fr/floater_postcard.xml b/indra/newview/skins/default/xui/fr/floater_postcard.xml index 948a3b973d..e65dfb09b4 100644 --- a/indra/newview/skins/default/xui/fr/floater_postcard.xml +++ b/indra/newview/skins/default/xui/fr/floater_postcard.xml @@ -1,36 +1,36 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Postcard" title="ENVOYER LA PHOTO PAR E-MAIL">
- <text name="to_label">
- E-mail du destinataire :
- </text>
- <text name="from_label">
- Votre e-mail :
- </text>
- <text name="name_label">
- Votre nom :
- </text>
- <text name="subject_label">
- Objet :
- </text>
- <line_editor label="Saisir ici votre objet" name="subject_form"/>
- <text name="msg_label">
- Message :
- </text>
- <text_editor name="msg_form">
- Saisir ici votre message
- </text_editor>
- <text name="fine_print">
- Si le destinataire s'inscrit sur [SECOND_LIFE], vous recevrez un bonus.
- </text>
- <button label="Annuler" name="cancel_btn"/>
- <button label="Envoyer" name="send_btn"/>
- <string name="default_subject">
- Carte postale de [SECOND_LIFE].
- </string>
- <string name="default_message">
- Ouvrez-moi !
- </string>
- <string name="upload_message">
- Envoi en cours...
- </string>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Postcard" title="ENVOYER LA PHOTO PAR E-MAIL"> + <text name="to_label"> + E-mail du destinataire : + </text> + <text name="from_label"> + Votre e-mail : + </text> + <text name="name_label"> + Votre nom : + </text> + <text name="subject_label"> + Objet : + </text> + <line_editor label="Saisir ici votre objet" name="subject_form"/> + <text name="msg_label"> + Message : + </text> + <text_editor name="msg_form"> + Saisir ici votre message + </text_editor> + <text name="fine_print"> + Si le destinataire s'inscrit sur [SECOND_LIFE], vous recevrez un bonus. + </text> + <button label="Annuler" name="cancel_btn"/> + <button label="Envoyer" name="send_btn"/> + <string name="default_subject"> + Carte postale de [SECOND_LIFE]. + </string> + <string name="default_message"> + Ouvrez-moi ! + </string> + <string name="upload_message"> + Envoi en cours... + </string> +</floater> diff --git a/indra/newview/skins/default/xui/fr/language_settings.xml b/indra/newview/skins/default/xui/fr/language_settings.xml index bd272e1f28..fdac9d65a7 100644 --- a/indra/newview/skins/default/xui/fr/language_settings.xml +++ b/indra/newview/skins/default/xui/fr/language_settings.xml @@ -4,6 +4,7 @@ <!-- Locale Information --> <string name="MicrosoftLocale">french</string> + <string name="MacLocale">fr_FR.UTF-8</string> <string name="DarwinLocale">fr_FR.UTF-8</string> <string name="LinuxLocale">fr_FR.UTF-8</string> diff --git a/indra/newview/skins/default/xui/it/floater_animation_preview.xml b/indra/newview/skins/default/xui/it/floater_animation_preview.xml index 77341cad63..dc99d287b9 100644 --- a/indra/newview/skins/default/xui/it/floater_animation_preview.xml +++ b/indra/newview/skins/default/xui/it/floater_animation_preview.xml @@ -115,14 +115,14 @@ La lunghezza massima è [MAX_LENGTH] secondi. <text name="description_label"> Descrizione: </text> - <spinner label="Priorità" label_width="72" name="priority" tool_tip="Definisce quali altre animazioni possono essere sostituite da questa animazione" width="110"/> + <spinner label="Priorità" name="priority" tool_tip="Definisce quali altre animazioni possono essere sostituite da questa animazione"/> <check_box label="Ciclica" name="loop_check" tool_tip="Riproduce questa animazione in ripetizione"/> <spinner label="In(%)" name="loop_in_point" tool_tip="Imposta il punto sul quale ritorna l'animazione"/> <spinner label="Out(%)" name="loop_out_point" tool_tip="Imposta il punto sul quale termina l'animazione"/> <text name="hand_label"> Postura della mano </text> - <combo_box left_delta="100" name="hand_pose_combo" tool_tip="Definisce ciò che fanno le mani durante l'animazione" width="184"> + <combo_box name="hand_pose_combo" tool_tip="Definisce ciò che fanno le mani durante l'animazione"> <combo_box.item label="Stendi" name="Spread"/> <combo_box.item label="Rilassato" name="Relaxed"/> <combo_box.item label="Indica entrambi" name="PointBoth"/> @@ -140,7 +140,7 @@ La lunghezza massima è [MAX_LENGTH] secondi. <text name="emote_label"> Espressione </text> - <combo_box left_delta="100" name="emote_combo" tool_tip="Definisce ciò che fa il viso durante l'animazione" width="184"> + <combo_box name="emote_combo" tool_tip="Definisce ciò che fa il viso durante l'animazione"> <item label="(Nessuno)" name="[None]" value=""/> <item label="Aaaaah" name="Aaaaah" value="Aaaaah"/> <item label="Spavento" name="Afraid" value="Spavento"/> @@ -162,18 +162,18 @@ La lunghezza massima è [MAX_LENGTH] secondi. <item label="Occhiolino" name="Wink" value="Occhiolino"/> <item label="Preoccupato" name="Worry" value="Preoccupato"/> </combo_box> - <text name="preview_label" width="250"> + <text name="preview_label"> Vedi anteprima mentre </text> - <combo_box left_delta="154" name="preview_base_anim" tool_tip="Da usarsi per controllare il comportamento dell'animazione mentre l'avatar svolge azioni abituali." width="130"> + <combo_box name="preview_base_anim" tool_tip="Da usarsi per controllare il comportamento dell'animazione mentre l'avatar svolge azioni abituali."> <item label="In piedi" name="Standing" value="In piedi"/> <item label="Camminando" name="Walking" value="Cammina"/> <item label="Seduto" name="Sitting" value="Seduto"/> <item label="Volo" name="Flying" value="Volo"/> </combo_box> - <spinner label="Avvio lento (sec)" label_width="125" name="ease_in_time" tool_tip="Durata (in secondi) della fusione in entrata delle animazioni" width="192"/> - <spinner bottom_delta="-20" label="Arresto lento (sec)" label_width="125" left="10" name="ease_out_time" tool_tip="Durata (in secondi) della fusione in uscita delle animazioni" width="192"/> - <button bottom_delta="-32" name="play_btn" tool_tip="Riproduci la tua animazione"/> + <spinner label="Avvio lento (sec)" name="ease_in_time" tool_tip="Durata (in secondi) della fusione in entrata delle animazioni"/> + <spinner label="Arresto lento (sec)" name="ease_out_time" tool_tip="Durata (in secondi) della fusione in uscita delle animazioni"/> + <button name="play_btn" tool_tip="Riproduci la tua animazione"/> <button name="pause_btn" tool_tip="Metti in pausa la tua animazione"/> <button label="" name="stop_btn" tool_tip="Ferma la riproduzione dell'animazione"/> <text name="bad_animation_text"> diff --git a/indra/newview/skins/default/xui/it/language_settings.xml b/indra/newview/skins/default/xui/it/language_settings.xml index 312b8e21aa..5f448fa828 100644 --- a/indra/newview/skins/default/xui/it/language_settings.xml +++ b/indra/newview/skins/default/xui/it/language_settings.xml @@ -4,6 +4,7 @@ <!-- Locale Information --> <string name="MicrosoftLocale">italian</string> + <string name="MacLocale">it_IT.UTF-8</string> <string name="DarwinLocale">it_IT.UTF-8</string> <string name="LinuxLocale">it_IT.UTF-8</string> diff --git a/indra/newview/skins/default/xui/ja/language_settings.xml b/indra/newview/skins/default/xui/ja/language_settings.xml index a6023f9b56..91e8f4be7c 100644 --- a/indra/newview/skins/default/xui/ja/language_settings.xml +++ b/indra/newview/skins/default/xui/ja/language_settings.xml @@ -4,6 +4,7 @@ <!-- Locale Information --> <string name="MicrosoftLocale">japanese</string> + <string name="MacLocale">ja_JP.UTF-8</string> <string name="DarwinLocale">ja_JP.UTF-8</string> <string name="LinuxLocale">ja_JP.UTF-8</string> diff --git a/indra/newview/skins/default/xui/nl/language_settings.xml b/indra/newview/skins/default/xui/nl/language_settings.xml index 53501d5dcb..40f4d9178a 100644 --- a/indra/newview/skins/default/xui/nl/language_settings.xml +++ b/indra/newview/skins/default/xui/nl/language_settings.xml @@ -4,6 +4,7 @@ <!-- Locale Information --> <string name="MicrosoftLocale">dutch</string> + <string name="MacLocale">nl_NL.UTF-8</string> <string name="DarwinLocale">nl_NL.UTF-8</string> <string name="LinuxLocale">nl_NL.UTF-8</string> diff --git a/indra/newview/skins/default/xui/pl/language_settings.xml b/indra/newview/skins/default/xui/pl/language_settings.xml index 681b38e9cf..93051d1317 100644 --- a/indra/newview/skins/default/xui/pl/language_settings.xml +++ b/indra/newview/skins/default/xui/pl/language_settings.xml @@ -4,6 +4,7 @@ <!-- Locale Information --> <string name="MicrosoftLocale">polish</string> + <string name="MacLocale">pl_PL.UTF-8</string> <string name="DarwinLocale">pl_PL.UTF-8</string> <string name="LinuxLocale">pl_PL.UTF-8</string> diff --git a/indra/newview/skins/default/xui/pt/floater_preview_gesture.xml b/indra/newview/skins/default/xui/pt/floater_preview_gesture.xml index b134dfeefa..089694608b 100644 --- a/indra/newview/skins/default/xui/pt/floater_preview_gesture.xml +++ b/indra/newview/skins/default/xui/pt/floater_preview_gesture.xml @@ -1,74 +1,74 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="gesture_preview">
- <floater.string name="step_anim">
- Executar animação:
- </floater.string>
- <floater.string name="step_sound">
- Executar som:
- </floater.string>
- <floater.string name="step_chat">
- Executar bate-papo:
- </floater.string>
- <floater.string name="step_wait">
- Pausa
- </floater.string>
- <floater.string name="stop_txt">
- Parar
- </floater.string>
- <floater.string name="preview_txt">
- Prévia
- </floater.string>
- <floater.string name="none_text">
- -- Nenhum --
- </floater.string>
- <floater.string name="Title">
- Gesto: [NAME]
- </floater.string>
- <text name="desc_label">
- Descrição:
- </text>
- <text name="trigger_label">
- Gatilho:
- </text>
- <text name="replace_text" tool_tip="Substituir a(s) palavra(s) de gatilho por estas palavras. Por exemplo, o gatilho 'oi' substituído por 'olá', mudará a conversa de 'Eu digo oi' para 'Eu digo olá' e também executando o gesto!">
- Trocar por:
- </text>
- <line_editor name="replace_editor" tool_tip="Substituir a(s) palavra(s) gatilho por estas palavras. Por exemplo, o gatilho 'oi' substituído por 'olá', mudará a conversa de 'Eu digo oi' para 'Eu digo olá' e também executando o gesto!"/>
- <text name="key_label">
- Atalho:
- </text>
- <combo_box label="Nenhum" name="modifier_combo" width="68"/>
- <combo_box label="Nenhum" name="key_combo" width="48"/>
- <text name="library_label">
- Biblioteca:
- </text>
- <scroll_list name="library_list">
- <scroll_list.rows name="action_animation" value="Animação"/>
- <scroll_list.rows name="action_sound" value="Som"/>
- <scroll_list.rows name="action_chat" value="Bate-papo"/>
- <scroll_list.rows name="action_wait" value="Espere"/>
- </scroll_list>
- <button label="Incluir" name="add_btn"/>
- <text name="steps_label">
- Passos:
- </text>
- <button label="P/ cima" name="up_btn" />
- <button label="P/ baixo" name="down_btn"/>
- <button label="Remover" name="delete_btn"/>
- <text name="options_text">
- (opções)
- </text>
- <radio_group name="animation_trigger_type">
- <radio_item label="Iniciar" name="start"/>
- <radio_item label="Parar" name="stop"/>
- </radio_group>
- <check_box label="até que as animações estejam concluídas" name="wait_anim_check"/>
- <check_box label="segundos:" name="wait_time_check"/>
- <line_editor name="wait_time_editor"/>
- <text name="help_label">
- Se não incluir uma pausa, todas as etapas ocorrem ao mesmo tempo.
- </text>
- <check_box label="Ativar" name="active_check" tool_tip="Gestos podem ser ativados escrevendo suas frases de gatilho no chat ou teclando o atalho. Gestos normalmente ficam inativos quando existe um conflito nas teclas de atalho."/>
- <button label="Prévia" name="preview_btn"/>
- <button label="Salvar" name="save_btn"/>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="gesture_preview"> + <floater.string name="step_anim"> + Executar animação: + </floater.string> + <floater.string name="step_sound"> + Executar som: + </floater.string> + <floater.string name="step_chat"> + Executar bate-papo: + </floater.string> + <floater.string name="step_wait"> + Pausa + </floater.string> + <floater.string name="stop_txt"> + Parar + </floater.string> + <floater.string name="preview_txt"> + Prévia + </floater.string> + <floater.string name="none_text"> + -- Nenhum -- + </floater.string> + <floater.string name="Title"> + Gesto: [NAME] + </floater.string> + <text name="desc_label"> + Descrição: + </text> + <text name="trigger_label"> + Gatilho: + </text> + <text name="replace_text" tool_tip="Substituir a(s) palavra(s) de gatilho por estas palavras. Por exemplo, o gatilho 'oi' substituído por 'olá', mudará a conversa de 'Eu digo oi' para 'Eu digo olá' e também executando o gesto!"> + Trocar por: + </text> + <line_editor name="replace_editor" tool_tip="Substituir a(s) palavra(s) gatilho por estas palavras. Por exemplo, o gatilho 'oi' substituído por 'olá', mudará a conversa de 'Eu digo oi' para 'Eu digo olá' e também executando o gesto!"/> + <text name="key_label"> + Atalho: + </text> + <combo_box label="Nenhum" name="modifier_combo" width="68"/> + <combo_box label="Nenhum" name="key_combo" width="48"/> + <text name="library_label"> + Biblioteca: + </text> + <scroll_list name="library_list"> + <scroll_list.rows name="action_animation" value="Animação"/> + <scroll_list.rows name="action_sound" value="Som"/> + <scroll_list.rows name="action_chat" value="Bate-papo"/> + <scroll_list.rows name="action_wait" value="Espere"/> + </scroll_list> + <button label="Incluir" name="add_btn"/> + <text name="steps_label"> + Passos: + </text> + <button label="P/ cima" name="up_btn" /> + <button label="P/ baixo" name="down_btn"/> + <button label="Remover" name="delete_btn"/> + <text name="options_text"> + (opções) + </text> + <radio_group name="animation_trigger_type"> + <radio_item label="Iniciar" name="start"/> + <radio_item label="Parar" name="stop"/> + </radio_group> + <check_box label="até que as animações estejam concluídas" name="wait_anim_check"/> + <check_box label="segundos:" name="wait_time_check"/> + <line_editor name="wait_time_editor"/> + <text name="help_label"> + Se não incluir uma pausa, todas as etapas ocorrem ao mesmo tempo. + </text> + <check_box label="Ativar" name="active_check" tool_tip="Gestos podem ser ativados escrevendo suas frases de gatilho no chat ou teclando o atalho. Gestos normalmente ficam inativos quando existe um conflito nas teclas de atalho."/> + <button label="Prévia" name="preview_btn"/> + <button label="Salvar" name="save_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/pt/language_settings.xml b/indra/newview/skins/default/xui/pt/language_settings.xml index e1de6ffea7..8799475ace 100644 --- a/indra/newview/skins/default/xui/pt/language_settings.xml +++ b/indra/newview/skins/default/xui/pt/language_settings.xml @@ -4,6 +4,7 @@ <!-- Locale Information --> <string name="MicrosoftLocale">portuguese</string> + <string name="MacLocale">pt_PT.UTF-8</string> <string name="DarwinLocale">pt_PT.UTF-8</string> <string name="LinuxLocale">pt_PT.UTF-8</string> |