aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linden/indra
diff options
context:
space:
mode:
authorJacek Antonelli2008-08-15 23:44:57 -0500
committerJacek Antonelli2008-08-15 23:44:57 -0500
commitda68d3a57ecb27eba5d7efb8ff77d9640c0be65e (patch)
treef2fa2b9ed6e8cf49c8a3cb2a1893c4e5c61916a1 /linden/indra
parentSecond Life viewer sources 1.15.1.3 (diff)
downloadmeta-impy-da68d3a57ecb27eba5d7efb8ff77d9640c0be65e.zip
meta-impy-da68d3a57ecb27eba5d7efb8ff77d9640c0be65e.tar.gz
meta-impy-da68d3a57ecb27eba5d7efb8ff77d9640c0be65e.tar.bz2
meta-impy-da68d3a57ecb27eba5d7efb8ff77d9640c0be65e.tar.xz
Second Life viewer sources 1.16.0.5
Diffstat (limited to 'linden/indra')
-rw-r--r--linden/indra/llcommon/llbase32.cpp32
-rw-r--r--linden/indra/llcommon/llchat.h3
-rw-r--r--linden/indra/llcommon/llcommon_vc8.vcproj1522
-rw-r--r--linden/indra/llcommon/lllslconstants.h6
-rw-r--r--linden/indra/llcommon/llversion.h6
-rw-r--r--linden/indra/llinventory/llinventory_vc8.vcproj8
-rw-r--r--linden/indra/llinventory/llparcel.h2
-rw-r--r--linden/indra/llinventory/lltransactiontypes.h2
-rw-r--r--linden/indra/llmath/llvolume.cpp278
-rw-r--r--linden/indra/llmath/llvolume.h44
-rw-r--r--linden/indra/llmessage/llcachename.cpp14
-rw-r--r--linden/indra/llmessage/llcurl.cpp33
-rw-r--r--linden/indra/llmessage/llcurl.h33
-rw-r--r--linden/indra/llmessage/llmessage_vc8.vcproj80
-rw-r--r--linden/indra/llmessage/lluseroperation.h2
-rw-r--r--linden/indra/llmessage/message_prehash.cpp14
-rw-r--r--linden/indra/llmessage/message_prehash.h7
-rw-r--r--linden/indra/llprimitive/llprimitive.cpp97
-rw-r--r--linden/indra/llprimitive/llprimitive.h28
-rw-r--r--linden/indra/llprimitive/lltextureentry.cpp15
-rw-r--r--linden/indra/llprimitive/lltextureentry.h8
-rw-r--r--linden/indra/llui/lldraghandle.cpp14
-rw-r--r--linden/indra/llui/llfloater.cpp79
-rw-r--r--linden/indra/llui/llfloater.h3
-rw-r--r--linden/indra/llwindow/llwindow_vc8.vcproj225
-rw-r--r--linden/indra/lscript/lscript_compile/indra.l8
-rw-r--r--linden/indra/lscript/lscript_library/lscript_library.cpp1
-rw-r--r--linden/indra/newview/English.lproj/InfoPlist.strings4
-rw-r--r--linden/indra/newview/Info-SecondLife.plist2
-rw-r--r--linden/indra/newview/app_settings/keywords.ini10
-rw-r--r--linden/indra/newview/llagent.cpp8
-rw-r--r--linden/indra/newview/llassetuploadresponders.cpp4
-rw-r--r--linden/indra/newview/llcontroldef.cpp10
-rw-r--r--linden/indra/newview/llface.cpp21
-rw-r--r--linden/indra/newview/llfirstuse.h4
-rw-r--r--linden/indra/newview/llfloaterimagepreview.cpp215
-rw-r--r--linden/indra/newview/llfloaterimagepreview.h29
-rw-r--r--linden/indra/newview/llfloaterlandholdings.cpp2
-rw-r--r--linden/indra/newview/llfloaterregioninfo.cpp2
-rw-r--r--linden/indra/newview/llgivemoney.cpp6
-rw-r--r--linden/indra/newview/llgivemoney.h4
-rw-r--r--linden/indra/newview/llhoverview.cpp2
-rw-r--r--linden/indra/newview/llmanipscale.cpp4
-rw-r--r--linden/indra/newview/llpanelgrouplandmoney.cpp18
-rw-r--r--linden/indra/newview/llpanelgrouplandmoney.h2
-rw-r--r--linden/indra/newview/llpanelobject.cpp199
-rw-r--r--linden/indra/newview/llpanelobject.h15
-rw-r--r--linden/indra/newview/llpreview.cpp16
-rw-r--r--linden/indra/newview/llstartup.cpp4
-rw-r--r--linden/indra/newview/llviewercamera.cpp2
-rw-r--r--linden/indra/newview/llviewerinventory.cpp1
-rw-r--r--linden/indra/newview/llviewermessage.cpp2
-rw-r--r--linden/indra/newview/llviewerobject.cpp15
-rw-r--r--linden/indra/newview/llviewerregion.cpp2
-rw-r--r--linden/indra/newview/llvovolume.cpp126
-rw-r--r--linden/indra/newview/llvovolume.h4
-rw-r--r--linden/indra/newview/newview_vc8.vcproj75
-rw-r--r--linden/indra/newview/releasenotes.txt52
-rw-r--r--linden/indra/newview/res/newViewRes.rc8
-rw-r--r--linden/indra/newview/skins/xui/en-us/alerts.xml1289
-rw-r--r--linden/indra/newview/skins/xui/en-us/floater_about.xml6
-rw-r--r--linden/indra/newview/skins/xui/en-us/floater_image_preview.xml3
-rw-r--r--linden/indra/newview/skins/xui/en-us/floater_tools.xml7
-rw-r--r--linden/indra/test/test_vc8.vcproj110
64 files changed, 2928 insertions, 1919 deletions
diff --git a/linden/indra/llcommon/llbase32.cpp b/linden/indra/llcommon/llbase32.cpp
index 711ba63..27f7284 100644
--- a/linden/indra/llcommon/llbase32.cpp
+++ b/linden/indra/llcommon/llbase32.cpp
@@ -6,6 +6,32 @@
6 * Based on code from bitter 6 * Based on code from bitter
7 * http://ghostwhitecrab.com/bitter/ 7 * http://ghostwhitecrab.com/bitter/
8 * 8 *
9 * Some parts of this file are:
10 * Copyright (c) 2007-2007, Linden Research, Inc.
11 *
12 * Second Life Viewer Source Code
13 * The source code in this file ("Source Code") is provided by Linden Lab
14 * to you under the terms of the GNU General Public License, version 2.0
15 * ("GPL"), unless you have obtained a separate licensing agreement
16 * ("Other License"), formally executed by you and Linden Lab. Terms of
17 * the GPL can be found in doc/GPL-license.txt in this distribution, or
18 * online at http://secondlife.com/developers/opensource/gplv2
19 *
20 * There are special exceptions to the terms and conditions of the GPL as
21 * it is applied to this Source Code. View the full text of the exception
22 * in the file doc/FLOSS-exception.txt in this software distribution, or
23 * online at http://secondlife.com/developers/opensource/flossexception
24 *
25 * By copying, modifying or distributing this software, you acknowledge
26 * that you have read and understood your obligations described above,
27 * and agree to abide by those obligations.
28 *
29 * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
30 * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
31 * COMPLETENESS OR PERFORMANCE.
32 */
33
34/**
9 * Copyright (c) 2006 Christian Biere <christianbiere@gmx.de> 35 * Copyright (c) 2006 Christian Biere <christianbiere@gmx.de>
10 * All rights reserved. 36 * All rights reserved.
11 * 37 *
@@ -192,6 +218,8 @@ base32_decode(char *dst, size_t size, const void *data, size_t len)
192*/ 218*/
193 219
194 220
221// The following is
222// Copyright (c) 2007-$CurrentYear$, Linden Research, Inc.
195// static 223// static
196std::string LLBase32::encode(const U8* input, size_t input_size) 224std::string LLBase32::encode(const U8* input, size_t input_size)
197{ 225{
@@ -207,8 +235,8 @@ std::string LLBase32::encode(const U8* input, size_t input_size)
207 235
208 size_t encoded = base32_encode(&output[0], output_size, input, input_size); 236 size_t encoded = base32_encode(&output[0], output_size, input, input_size);
209 237
210 llinfos << "encoded " << encoded << " into buffer of size " << output_size 238 llinfos << "encoded " << encoded << " into buffer of size "
211 << llendl; 239 << output_size << llendl;
212 } 240 }
213 return output; 241 return output;
214} 242}
diff --git a/linden/indra/llcommon/llchat.h b/linden/indra/llcommon/llchat.h
index b1635a7..bb2610b 100644
--- a/linden/indra/llcommon/llchat.h
+++ b/linden/indra/llcommon/llchat.h
@@ -49,7 +49,8 @@ typedef enum e_chat_type
49 CHAT_TYPE_SHOUT = 2, 49 CHAT_TYPE_SHOUT = 2,
50 CHAT_TYPE_START = 4, 50 CHAT_TYPE_START = 4,
51 CHAT_TYPE_STOP = 5, 51 CHAT_TYPE_STOP = 5,
52 CHAT_TYPE_DEBUG_MSG = 6 52 CHAT_TYPE_DEBUG_MSG = 6,
53 CHAT_TYPE_REGION = 7
53} EChatType; 54} EChatType;
54 55
55typedef enum e_chat_audible_level 56typedef enum e_chat_audible_level
diff --git a/linden/indra/llcommon/llcommon_vc8.vcproj b/linden/indra/llcommon/llcommon_vc8.vcproj
index 0a34543..15371f5 100644
--- a/linden/indra/llcommon/llcommon_vc8.vcproj
+++ b/linden/indra/llcommon/llcommon_vc8.vcproj
@@ -1,759 +1,763 @@
1<?xml version="1.0" encoding="Windows-1252"?> 1<?xml version="1.0" encoding="Windows-1252"?>
2<VisualStudioProject 2<VisualStudioProject
3 ProjectType="Visual C++" 3 ProjectType="Visual C++"
4 Version="8.00" 4 Version="8.00"
5 Name="llcommon" 5 Name="llcommon"
6 ProjectGUID="{7BCB4B2C-8378-4186-88EA-5742B5ABE17F}" 6 ProjectGUID="{7BCB4B2C-8378-4186-88EA-5742B5ABE17F}"
7 RootNamespace="llcommon" 7 RootNamespace="llcommon"
8 Keyword="Win32Proj" 8 Keyword="Win32Proj"
9 > 9 >
10 <Platforms> 10 <Platforms>
11 <Platform 11 <Platform
12 Name="Win32" 12 Name="Win32"
13 /> 13 />
14 </Platforms> 14 </Platforms>
15 <ToolFiles> 15 <ToolFiles>
16 </ToolFiles> 16 </ToolFiles>
17 <Configurations> 17 <Configurations>
18 <Configuration 18 <Configuration
19 Name="Debug|Win32" 19 Name="Debug|Win32"
20 OutputDirectory="../lib_$(ConfigurationName)/i686-win32" 20 OutputDirectory="../lib_$(ConfigurationName)/i686-win32"
21 IntermediateDirectory="$(ConfigurationName)" 21 IntermediateDirectory="$(ConfigurationName)"
22 ConfigurationType="4" 22 ConfigurationType="4"
23 InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" 23 InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
24 CharacterSet="1" 24 CharacterSet="1"
25 > 25 >
26 <Tool 26 <Tool
27 Name="VCPreBuildEventTool" 27 Name="VCPreBuildEventTool"
28 /> 28 />
29 <Tool 29 <Tool
30 Name="VCCustomBuildTool" 30 Name="VCCustomBuildTool"
31 /> 31 />
32 <Tool 32 <Tool
33 Name="VCXMLDataGeneratorTool" 33 Name="VCXMLDataGeneratorTool"
34 /> 34 />
35 <Tool 35 <Tool
36 Name="VCWebServiceProxyGeneratorTool" 36 Name="VCWebServiceProxyGeneratorTool"
37 /> 37 />
38 <Tool 38 <Tool
39 Name="VCMIDLTool" 39 Name="VCMIDLTool"
40 /> 40 />
41 <Tool 41 <Tool
42 Name="VCCLCompilerTool" 42 Name="VCCLCompilerTool"
43 Optimization="0" 43 Optimization="0"
44 AdditionalIncludeDirectories="..\..\libraries\i686-win32\include;..\..\libraries\include\" 44 AdditionalIncludeDirectories="..\..\libraries\i686-win32\include;..\..\libraries\include\"
45 PreprocessorDefinitions="WIN32;_DEBUG;_LIB;LL_WINDOWS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_USE_32BIT_TIME_T;LL_DEBUG;XML_STATIC;APR_DECLARE_STATIC" 45 PreprocessorDefinitions="WIN32;_DEBUG;_LIB;LL_WINDOWS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_USE_32BIT_TIME_T;LL_DEBUG;XML_STATIC;APR_DECLARE_STATIC"
46 MinimalRebuild="true" 46 MinimalRebuild="true"
47 BasicRuntimeChecks="3" 47 BasicRuntimeChecks="3"
48 RuntimeLibrary="1" 48 RuntimeLibrary="1"
49 StructMemberAlignment="4" 49 StructMemberAlignment="4"
50 TreatWChar_tAsBuiltInType="false" 50 TreatWChar_tAsBuiltInType="false"
51 ForceConformanceInForLoopScope="true" 51 ForceConformanceInForLoopScope="true"
52 UsePrecompiledHeader="0" 52 UsePrecompiledHeader="0"
53 WarningLevel="3" 53 WarningLevel="3"
54 WarnAsError="true" 54 WarnAsError="true"
55 Detect64BitPortabilityProblems="false" 55 Detect64BitPortabilityProblems="false"
56 DebugInformationFormat="4" 56 DebugInformationFormat="4"
57 /> 57 />
58 <Tool 58 <Tool
59 Name="VCManagedResourceCompilerTool" 59 Name="VCManagedResourceCompilerTool"
60 /> 60 />
61 <Tool 61 <Tool
62 Name="VCResourceCompilerTool" 62 Name="VCResourceCompilerTool"
63 /> 63 />
64 <Tool 64 <Tool
65 Name="VCPreLinkEventTool" 65 Name="VCPreLinkEventTool"
66 /> 66 />
67 <Tool 67 <Tool
68 Name="VCLibrarianTool" 68 Name="VCLibrarianTool"
69 OutputFile="$(OutDir)/llcommon.lib" 69 OutputFile="$(OutDir)/llcommon.lib"
70 /> 70 />
71 <Tool 71 <Tool
72 Name="VCALinkTool" 72 Name="VCALinkTool"
73 /> 73 />
74 <Tool 74 <Tool
75 Name="VCXDCMakeTool" 75 Name="VCXDCMakeTool"
76 /> 76 />
77 <Tool 77 <Tool
78 Name="VCBscMakeTool" 78 Name="VCBscMakeTool"
79 /> 79 />
80 <Tool 80 <Tool
81 Name="VCFxCopTool" 81 Name="VCFxCopTool"
82 /> 82 />
83 <Tool 83 <Tool
84 Name="VCPostBuildEventTool" 84 Name="VCPostBuildEventTool"
85 /> 85 />
86 </Configuration> 86 </Configuration>
87 <Configuration 87 <Configuration
88 Name="Release|Win32" 88 Name="Release|Win32"
89 OutputDirectory="../lib_$(ConfigurationName)/i686-win32" 89 OutputDirectory="../lib_$(ConfigurationName)/i686-win32"
90 IntermediateDirectory="$(ConfigurationName)" 90 IntermediateDirectory="$(ConfigurationName)"
91 ConfigurationType="4" 91 ConfigurationType="4"
92 InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" 92 InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
93 CharacterSet="1" 93 CharacterSet="1"
94 > 94 >
95 <Tool 95 <Tool
96 Name="VCPreBuildEventTool" 96 Name="VCPreBuildEventTool"
97 /> 97 />
98 <Tool 98 <Tool
99 Name="VCCustomBuildTool" 99 Name="VCCustomBuildTool"
100 /> 100 />
101 <Tool 101 <Tool
102 Name="VCXMLDataGeneratorTool" 102 Name="VCXMLDataGeneratorTool"
103 /> 103 />
104 <Tool 104 <Tool
105 Name="VCWebServiceProxyGeneratorTool" 105 Name="VCWebServiceProxyGeneratorTool"
106 /> 106 />
107 <Tool 107 <Tool
108 Name="VCMIDLTool" 108 Name="VCMIDLTool"
109 /> 109 />
110 <Tool 110 <Tool
111 Name="VCCLCompilerTool" 111 Name="VCCLCompilerTool"
112 InlineFunctionExpansion="2" 112 InlineFunctionExpansion="2"
113 EnableIntrinsicFunctions="true" 113 EnableIntrinsicFunctions="true"
114 AdditionalIncludeDirectories="..\..\libraries\i686-win32\include;..\..\libraries\include\" 114 AdditionalIncludeDirectories="..\..\libraries\i686-win32\include;..\..\libraries\include\"
115 PreprocessorDefinitions="WIN32;NDEBUG;_LIB;LL_WINDOWS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_USE_32BIT_TIME_T;LL_RELEASE;XML_STATIC;APR_DECLARE_STATIC" 115 PreprocessorDefinitions="WIN32;NDEBUG;_LIB;LL_WINDOWS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_USE_32BIT_TIME_T;LL_RELEASE;XML_STATIC;APR_DECLARE_STATIC"
116 RuntimeLibrary="0" 116 RuntimeLibrary="0"
117 StructMemberAlignment="0" 117 StructMemberAlignment="0"
118 TreatWChar_tAsBuiltInType="false" 118 TreatWChar_tAsBuiltInType="false"
119 ForceConformanceInForLoopScope="true" 119 ForceConformanceInForLoopScope="true"
120 UsePrecompiledHeader="0" 120 UsePrecompiledHeader="0"
121 WarningLevel="3" 121 WarningLevel="3"
122 WarnAsError="true" 122 WarnAsError="true"
123 Detect64BitPortabilityProblems="false" 123 Detect64BitPortabilityProblems="false"
124 DebugInformationFormat="3" 124 DebugInformationFormat="3"
125 /> 125 />
126 <Tool 126 <Tool
127 Name="VCManagedResourceCompilerTool" 127 Name="VCManagedResourceCompilerTool"
128 /> 128 />
129 <Tool 129 <Tool
130 Name="VCResourceCompilerTool" 130 Name="VCResourceCompilerTool"
131 /> 131 />
132 <Tool 132 <Tool
133 Name="VCPreLinkEventTool" 133 Name="VCPreLinkEventTool"
134 /> 134 />
135 <Tool 135 <Tool
136 Name="VCLibrarianTool" 136 Name="VCLibrarianTool"
137 OutputFile="$(OutDir)/llcommon.lib" 137 OutputFile="$(OutDir)/llcommon.lib"
138 /> 138 />
139 <Tool 139 <Tool
140 Name="VCALinkTool" 140 Name="VCALinkTool"
141 /> 141 />
142 <Tool 142 <Tool
143 Name="VCXDCMakeTool" 143 Name="VCXDCMakeTool"
144 /> 144 />
145 <Tool 145 <Tool
146 Name="VCBscMakeTool" 146 Name="VCBscMakeTool"
147 /> 147 />
148 <Tool 148 <Tool
149 Name="VCFxCopTool" 149 Name="VCFxCopTool"
150 /> 150 />
151 <Tool 151 <Tool
152 Name="VCPostBuildEventTool" 152 Name="VCPostBuildEventTool"
153 /> 153 />
154 </Configuration> 154 </Configuration>
155 <Configuration 155 <Configuration
156 Name="ReleaseNoOpt|Win32" 156 Name="ReleaseNoOpt|Win32"
157 OutputDirectory="../lib_$(ConfigurationName)/i686-win32" 157 OutputDirectory="../lib_$(ConfigurationName)/i686-win32"
158 IntermediateDirectory="$(ConfigurationName)" 158 IntermediateDirectory="$(ConfigurationName)"
159 ConfigurationType="4" 159 ConfigurationType="4"
160 InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" 160 InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
161 CharacterSet="1" 161 CharacterSet="1"
162 > 162 >
163 <Tool 163 <Tool
164 Name="VCPreBuildEventTool" 164 Name="VCPreBuildEventTool"
165 /> 165 />
166 <Tool 166 <Tool
167 Name="VCCustomBuildTool" 167 Name="VCCustomBuildTool"
168 /> 168 />
169 <Tool 169 <Tool
170 Name="VCXMLDataGeneratorTool" 170 Name="VCXMLDataGeneratorTool"
171 /> 171 />
172 <Tool 172 <Tool
173 Name="VCWebServiceProxyGeneratorTool" 173 Name="VCWebServiceProxyGeneratorTool"
174 /> 174 />
175 <Tool 175 <Tool
176 Name="VCMIDLTool" 176 Name="VCMIDLTool"
177 /> 177 />
178 <Tool 178 <Tool
179 Name="VCCLCompilerTool" 179 Name="VCCLCompilerTool"
180 Optimization="0" 180 Optimization="0"
181 AdditionalIncludeDirectories="..\..\libraries\i686-win32\include;..\..\libraries\include\" 181 AdditionalIncludeDirectories="..\..\libraries\i686-win32\include;..\..\libraries\include\"
182 PreprocessorDefinitions="WIN32;NDEBUG;_LIB;LL_WINDOWS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_USE_32BIT_TIME_T;LL_RELEASE;XML_STATIC;APR_DECLARE_STATIC" 182 PreprocessorDefinitions="WIN32;NDEBUG;_LIB;LL_WINDOWS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_USE_32BIT_TIME_T;LL_RELEASE;XML_STATIC;APR_DECLARE_STATIC"
183 RuntimeLibrary="0" 183 RuntimeLibrary="0"
184 StructMemberAlignment="0" 184 StructMemberAlignment="0"
185 TreatWChar_tAsBuiltInType="false" 185 TreatWChar_tAsBuiltInType="false"
186 ForceConformanceInForLoopScope="true" 186 ForceConformanceInForLoopScope="true"
187 UsePrecompiledHeader="0" 187 UsePrecompiledHeader="0"
188 WarningLevel="3" 188 WarningLevel="3"
189 WarnAsError="true" 189 WarnAsError="true"
190 Detect64BitPortabilityProblems="false" 190 Detect64BitPortabilityProblems="false"
191 DebugInformationFormat="3" 191 DebugInformationFormat="3"
192 /> 192 />
193 <Tool 193 <Tool
194 Name="VCManagedResourceCompilerTool" 194 Name="VCManagedResourceCompilerTool"
195 /> 195 />
196 <Tool 196 <Tool
197 Name="VCResourceCompilerTool" 197 Name="VCResourceCompilerTool"
198 /> 198 />
199 <Tool 199 <Tool
200 Name="VCPreLinkEventTool" 200 Name="VCPreLinkEventTool"
201 /> 201 />
202 <Tool 202 <Tool
203 Name="VCLibrarianTool" 203 Name="VCLibrarianTool"
204 OutputFile="$(OutDir)/llcommon.lib" 204 OutputFile="$(OutDir)/llcommon.lib"
205 /> 205 />
206 <Tool 206 <Tool
207 Name="VCALinkTool" 207 Name="VCALinkTool"
208 /> 208 />
209 <Tool 209 <Tool
210 Name="VCXDCMakeTool" 210 Name="VCXDCMakeTool"
211 /> 211 />
212 <Tool 212 <Tool
213 Name="VCBscMakeTool" 213 Name="VCBscMakeTool"
214 /> 214 />
215 <Tool 215 <Tool
216 Name="VCFxCopTool" 216 Name="VCFxCopTool"
217 /> 217 />
218 <Tool 218 <Tool
219 Name="VCPostBuildEventTool" 219 Name="VCPostBuildEventTool"
220 /> 220 />
221 </Configuration> 221 </Configuration>
222 </Configurations> 222 </Configurations>
223 <References> 223 <References>
224 </References> 224 </References>
225 <Files> 225 <Files>
226 <Filter 226 <Filter
227 Name="Source Files" 227 Name="Source Files"
228 Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx" 228 Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
229 UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}" 229 UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
230 > 230 >
231 <File 231 <File
232 RelativePath=".\bitpack.cpp" 232 RelativePath=".\llapp.cpp"
233 > 233 >
234 </File> 234 </File>
235 <File 235 <File
236 RelativePath=".\llapp.cpp" 236 RelativePath=".\llapr.cpp"
237 > 237 >
238 </File> 238 </File>
239 <File 239 <File
240 RelativePath=".\llapr.cpp" 240 RelativePath=".\llassettype.cpp"
241 > 241 >
242 </File> 242 </File>
243 <File 243 <File
244 RelativePath=".\llassettype.cpp" 244 RelativePath=".\llbase64.cpp"
245 > 245 >
246 </File> 246 </File>
247 <File 247 <File
248 RelativePath=".\llbase64.cpp" 248 RelativePath=".\llcommon.cpp"
249 > 249 >
250 </File> 250 </File>
251 <File 251 <File
252 RelativePath=".\llcommon.cpp" 252 RelativePath=".\llcriticaldamp.cpp"
253 > 253 >
254 </File> 254 </File>
255 <File 255 <File
256 RelativePath=".\llcriticaldamp.cpp" 256 RelativePath=".\lldate.cpp"
257 > 257 >
258 </File> 258 </File>
259 <File 259 <File
260 RelativePath=".\lldate.cpp" 260 RelativePath=".\llerror.cpp"
261 > 261 >
262 </File> 262 </File>
263 <File 263 <File
264 RelativePath=".\llerror.cpp" 264 RelativePath=".\llerrorthread.cpp"
265 > 265 >
266 </File> 266 </File>
267 <File 267 <File
268 RelativePath=".\llerrorthread.cpp" 268 RelativePath=".\llevent.cpp"
269 > 269 >
270 </File> 270 </File>
271 <File 271 <File
272 RelativePath=".\llevent.cpp" 272 RelativePath=".\llfasttimer.cpp"
273 > 273 >
274 </File> 274 </File>
275 <File 275 <File
276 RelativePath=".\llfasttimer.cpp" 276 RelativePath=".\llfile.cpp"
277 > 277 >
278 </File> 278 </File>
279 <File 279 <File
280 RelativePath=".\llfile.cpp" 280 RelativePath=".\llfixedbuffer.cpp"
281 > 281 >
282 </File> 282 </File>
283 <File 283 <File
284 RelativePath=".\llfixedbuffer.cpp" 284 RelativePath=".\llformat.cpp"
285 > 285 >
286 </File> 286 </File>
287 <File 287 <File
288 RelativePath=".\llformat.cpp" 288 RelativePath=".\llframetimer.cpp"
289 > 289 >
290 </File> 290 </File>
291 <File 291 <File
292 RelativePath=".\llframetimer.cpp" 292 RelativePath=".\llliveappconfig.cpp"
293 > 293 >
294 </File> 294 </File>
295 <File 295 <File
296 RelativePath=".\lllivefile.cpp" 296 RelativePath=".\lllivefile.cpp"
297 > 297 >
298 </File> 298 </File>
299 <File 299 <File
300 RelativePath=".\llmemory.cpp" 300 RelativePath=".\llmemory.cpp"
301 > 301 >
302 </File> 302 </File>
303 <File 303 <File
304 RelativePath=".\llmemorystream.cpp" 304 RelativePath=".\llmemorystream.cpp"
305 > 305 >
306 </File> 306 </File>
307 <File 307 <File
308 RelativePath=".\llmortician.cpp" 308 RelativePath=".\llmortician.cpp"
309 > 309 >
310 </File> 310 </File>
311 <File 311 <File
312 RelativePath=".\llprocessor.cpp" 312 RelativePath=".\llprocessor.cpp"
313 > 313 >
314 </File> 314 </File>
315 <File 315 <File
316 RelativePath=".\llqueuedthread.cpp" 316 RelativePath=".\llqueuedthread.cpp"
317 > 317 >
318 </File> 318 </File>
319 <File 319 <File
320 RelativePath=".\llrun.cpp" 320 RelativePath=".\llrun.cpp"
321 > 321 >
322 </File> 322 </File>
323 <File 323 <File
324 RelativePath=".\llsd.cpp" 324 RelativePath=".\llsd.cpp"
325 > 325 >
326 </File> 326 </File>
327 <File 327 <File
328 RelativePath=".\llsdserialize.cpp" 328 RelativePath=".\llsdserialize.cpp"
329 > 329 >
330 </File> 330 </File>
331 <File 331 <File
332 RelativePath=".\llsdserialize_xml.cpp" 332 RelativePath=".\llsdserialize_xml.cpp"
333 > 333 >
334 </File> 334 </File>
335 <File 335 <File
336 RelativePath=".\llsdutil.cpp" 336 RelativePath=".\llsdutil.cpp"
337 > 337 >
338 </File> 338 </File>
339 <File 339 <File
340 RelativePath=".\llsecondlifeurls.cpp" 340 RelativePath=".\llsecondlifeurls.cpp"
341 > 341 >
342 </File> 342 </File>
343 <File 343 <File
344 RelativePath=".\llstat.cpp" 344 RelativePath=".\llstat.cpp"
345 > 345 >
346 </File> 346 </File>
347 <File 347 <File
348 RelativePath=".\llstreamtools.cpp" 348 RelativePath=".\llstreamtools.cpp"
349 > 349 >
350 </File> 350 </File>
351 <File 351 <File
352 RelativePath=".\llstring.cpp" 352 RelativePath=".\llstring.cpp"
353 > 353 >
354 </File> 354 </File>
355 <File 355 <File
356 RelativePath=".\llstringtable.cpp" 356 RelativePath=".\llstringtable.cpp"
357 > 357 >
358 </File> 358 </File>
359 <File 359 <File
360 RelativePath=".\llsys.cpp" 360 RelativePath=".\llsys.cpp"
361 > 361 >
362 </File> 362 </File>
363 <File 363 <File
364 RelativePath=".\llthread.cpp" 364 RelativePath=".\llthread.cpp"
365 > 365 >
366 </File> 366 </File>
367 <File 367 <File
368 RelativePath=".\lltimer.cpp" 368 RelativePath=".\lltimer.cpp"
369 > 369 >
370 </File> 370 </File>
371 <File 371 <File
372 RelativePath=".\lluri.cpp" 372 RelativePath=".\lluri.cpp"
373 > 373 >
374 </File> 374 </File>
375 <File 375 <File
376 RelativePath=".\llworkerthread.cpp" 376 RelativePath=".\llworkerthread.cpp"
377 > 377 >
378 </File> 378 </File>
379 <File 379 <File
380 RelativePath=".\metaclass.cpp" 380 RelativePath=".\metaclass.cpp"
381 > 381 >
382 </File> 382 </File>
383 <File 383 <File
384 RelativePath=".\metaproperty.cpp" 384 RelativePath=".\metaproperty.cpp"
385 > 385 >
386 </File> 386 </File>
387 <File 387 <File
388 RelativePath=".\reflective.cpp" 388 RelativePath=".\reflective.cpp"
389 > 389 >
390 </File> 390 </File>
391 <File 391 <File
392 RelativePath=".\timing.cpp" 392 RelativePath=".\timing.cpp"
393 > 393 >
394 </File> 394 </File>
395 <File 395 <File
396 RelativePath=".\u64.cpp" 396 RelativePath=".\u64.cpp"
397 > 397 >
398 </File> 398 </File>
399 </Filter> 399 </Filter>
400 <Filter 400 <Filter
401 Name="Header Files" 401 Name="Header Files"
402 Filter="h;hpp;hxx;hm;inl;inc;xsd" 402 Filter="h;hpp;hxx;hm;inl;inc;xsd"
403 UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}" 403 UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
404 > 404 >
405 <File 405 <File
406 RelativePath=".\bitpack.h" 406 RelativePath=".\bitpack.h"
407 > 407 >
408 </File> 408 </File>
409 <File 409 <File
410 RelativePath=".\doublelinkedlist.h" 410 RelativePath=".\doublelinkedlist.h"
411 > 411 >
412 </File> 412 </File>
413 <File 413 <File
414 RelativePath=".\imageids.h" 414 RelativePath=".\imageids.h"
415 > 415 >
416 </File> 416 </File>
417 <File 417 <File
418 RelativePath=".\indra_constants.h" 418 RelativePath=".\indra_constants.h"
419 > 419 >
420 </File> 420 </File>
421 <File 421 <File
422 RelativePath=".\linden_common.h" 422 RelativePath=".\linden_common.h"
423 > 423 >
424 </File> 424 </File>
425 <File 425 <File
426 RelativePath=".\linked_lists.h" 426 RelativePath=".\linked_lists.h"
427 > 427 >
428 </File> 428 </File>
429 <File 429 <File
430 RelativePath=".\llagentconstants.h" 430 RelativePath=".\llagentconstants.h"
431 > 431 >
432 </File> 432 </File>
433 <File 433 <File
434 RelativePath=".\llapp.h" 434 RelativePath=".\llapp.h"
435 > 435 >
436 </File> 436 </File>
437 <File 437 <File
438 RelativePath=".\llapr.h" 438 RelativePath=".\llapr.h"
439 > 439 >
440 </File> 440 </File>
441 <File 441 <File
442 RelativePath=".\llassettype.h" 442 RelativePath=".\llassettype.h"
443 > 443 >
444 </File> 444 </File>
445 <File 445 <File
446 RelativePath=".\llassoclist.h" 446 RelativePath=".\llassoclist.h"
447 > 447 >
448 </File> 448 </File>
449 <File 449 <File
450 RelativePath=".\llavatarconstants.h" 450 RelativePath=".\llavatarconstants.h"
451 > 451 >
452 </File> 452 </File>
453 <File 453 <File
454 RelativePath=".\llbase64.h" 454 RelativePath=".\llbase64.h"
455 > 455 >
456 </File> 456 </File>
457 <File 457 <File
458 RelativePath=".\llboost.h" 458 RelativePath=".\llboost.h"
459 > 459 >
460 </File> 460 </File>
461 <File 461 <File
462 RelativePath=".\llchat.h" 462 RelativePath=".\llchat.h"
463 > 463 >
464 </File> 464 </File>
465 <File 465 <File
466 RelativePath=".\llclickaction.h" 466 RelativePath=".\llclickaction.h"
467 > 467 >
468 </File> 468 </File>
469 <File 469 <File
470 RelativePath=".\llcommon.h" 470 RelativePath=".\llcommon.h"
471 > 471 >
472 </File> 472 </File>
473 <File 473 <File
474 RelativePath=".\llcriticaldamp.h" 474 RelativePath=".\llcriticaldamp.h"
475 > 475 >
476 </File> 476 </File>
477 <File 477 <File
478 RelativePath=".\lldarray.h" 478 RelativePath=".\lldarray.h"
479 > 479 >
480 </File> 480 </File>
481 <File 481 <File
482 RelativePath=".\lldarrayptr.h" 482 RelativePath=".\lldarrayptr.h"
483 > 483 >
484 </File> 484 </File>
485 <File 485 <File
486 RelativePath=".\lldate.h" 486 RelativePath=".\lldate.h"
487 > 487 >
488 </File> 488 </File>
489 <File 489 <File
490 RelativePath=".\lldefs.h" 490 RelativePath=".\lldefs.h"
491 > 491 >
492 </File> 492 </File>
493 <File 493 <File
494 RelativePath=".\lldlinked.h" 494 RelativePath=".\lldlinked.h"
495 > 495 >
496 </File> 496 </File>
497 <File 497 <File
498 RelativePath=".\lldqueueptr.h" 498 RelativePath=".\lldqueueptr.h"
499 > 499 >
500 </File> 500 </File>
501 <File 501 <File
502 RelativePath=".\llendianswizzle.h" 502 RelativePath=".\llendianswizzle.h"
503 > 503 >
504 </File> 504 </File>
505 <File 505 <File
506 RelativePath=".\llenum.h" 506 RelativePath=".\llenum.h"
507 > 507 >
508 </File> 508 </File>
509 <File 509 <File
510 RelativePath=".\llerror.h" 510 RelativePath=".\llerror.h"
511 > 511 >
512 </File> 512 </File>
513 <File 513 <File
514 RelativePath=".\llerrorcontrol.h" 514 RelativePath=".\llerrorcontrol.h"
515 > 515 >
516 </File> 516 </File>
517 <File 517 <File
518 RelativePath=".\llerrorthread.h" 518 RelativePath=".\llerrorthread.h"
519 > 519 >
520 </File> 520 </File>
521 <File 521 <File
522 RelativePath=".\llevent.h" 522 RelativePath=".\llevent.h"
523 > 523 >
524 </File> 524 </File>
525 <File 525 <File
526 RelativePath=".\llfasttimer.h" 526 RelativePath=".\llfasttimer.h"
527 > 527 >
528 </File> 528 </File>
529 <File 529 <File
530 RelativePath=".\llfile.h" 530 RelativePath=".\llfile.h"
531 > 531 >
532 </File> 532 </File>
533 <File 533 <File
534 RelativePath=".\llfixedbuffer.h" 534 RelativePath=".\llfixedbuffer.h"
535 > 535 >
536 </File> 536 </File>
537 <File 537 <File
538 RelativePath=".\llformat.h" 538 RelativePath=".\llformat.h"
539 > 539 >
540 </File> 540 </File>
541 <File 541 <File
542 RelativePath=".\llframecallbackmanager.h" 542 RelativePath=".\llframecallbackmanager.h"
543 > 543 >
544 </File> 544 </File>
545 <File 545 <File
546 RelativePath=".\llframetimer.h" 546 RelativePath=".\llframetimer.h"
547 > 547 >
548 </File> 548 </File>
549 <File 549 <File
550 RelativePath=".\llhash.h" 550 RelativePath=".\llhash.h"
551 > 551 >
552 </File> 552 </File>
553 <File 553 <File
554 RelativePath=".\llindexedqueue.h" 554 RelativePath=".\llindexedqueue.h"
555 > 555 >
556 </File> 556 </File>
557 <File 557 <File
558 RelativePath=".\lllinkedqueue.h" 558 RelativePath=".\lllinkedqueue.h"
559 > 559 >
560 </File> 560 </File>
561 <File 561 <File
562 RelativePath=".\lllivefile.h" 562 RelativePath=".\llliveappconfig.h"
563 > 563 >
564 </File> 564 </File>
565 <File 565 <File
566 RelativePath=".\lllocalidhashmap.h" 566 RelativePath=".\lllivefile.h"
567 > 567 >
568 </File> 568 </File>
569 <File 569 <File
570 RelativePath=".\lllslconstants.h" 570 RelativePath=".\lllocalidhashmap.h"
571 > 571 >
572 </File> 572 </File>
573 <File 573 <File
574 RelativePath=".\llmap.h" 574 RelativePath=".\lllslconstants.h"
575 > 575 >
576 </File> 576 </File>
577 <File 577 <File
578 RelativePath=".\llmemory.h" 578 RelativePath=".\llmap.h"
579 > 579 >
580 </File> 580 </File>
581 <File 581 <File
582 RelativePath=".\llmemorystream.h" 582 RelativePath=".\llmemory.h"
583 > 583 >
584 </File> 584 </File>
585 <File 585 <File
586 RelativePath=".\llmortician.h" 586 RelativePath=".\llmemorystream.h"
587 > 587 >
588 </File> 588 </File>
589 <File 589 <File
590 RelativePath=".\llnametable.h" 590 RelativePath=".\llmortician.h"
591 > 591 >
592 </File> 592 </File>
593 <File 593 <File
594 RelativePath=".\llpagemem.h" 594 RelativePath=".\llnametable.h"
595 > 595 >
596 </File> 596 </File>
597 <File 597 <File
598 RelativePath=".\llpreprocessor.h" 598 RelativePath=".\llpagemem.h"
599 > 599 >
600 </File> 600 </File>
601 <File 601 <File
602 RelativePath=".\llpriqueuemap.h" 602 RelativePath=".\llpreprocessor.h"
603 > 603 >
604 </File> 604 </File>
605 <File 605 <File
606 RelativePath=".\llprocessor.h" 606 RelativePath=".\llpriqueuemap.h"
607 > 607 >
608 </File> 608 </File>
609 <File 609 <File
610 RelativePath=".\llptrskiplist.h" 610 RelativePath=".\llprocessor.h"
611 > 611 >
612 </File> 612 </File>
613 <File 613 <File
614 RelativePath=".\llptrskipmap.h" 614 RelativePath=".\llptrskiplist.h"
615 > 615 >
616 </File> 616 </File>
617 <File 617 <File
618 RelativePath=".\llqueuedthread.h" 618 RelativePath=".\llptrskipmap.h"
619 > 619 >
620 </File> 620 </File>
621 <File 621 <File
622 RelativePath=".\llrun.h" 622 RelativePath=".\llqueuedthread.h"
623 > 623 >
624 </File> 624 </File>
625 <File 625 <File
626 RelativePath=".\llsd.h" 626 RelativePath=".\llrun.h"
627 > 627 >
628 </File> 628 </File>
629 <File 629 <File
630 RelativePath=".\llsdserialize.h" 630 RelativePath=".\llsd.h"
631 > 631 >
632 </File> 632 </File>
633 <File 633 <File
634 RelativePath=".\llsdserialize_xml.h" 634 RelativePath=".\llsdserialize.h"
635 > 635 >
636 </File> 636 </File>
637 <File 637 <File
638 RelativePath=".\llsdutil.h" 638 RelativePath=".\llsdserialize_xml.h"
639 > 639 >
640 </File> 640 </File>
641 <File 641 <File
642 RelativePath=".\llsecondlifeurls.h" 642 RelativePath=".\llsdutil.h"
643 > 643 >
644 </File> 644 </File>
645 <File 645 <File
646 RelativePath=".\llskiplist.h" 646 RelativePath=".\llsecondlifeurls.h"
647 > 647 >
648 </File> 648 </File>
649 <File 649 <File
650 RelativePath=".\llskipmap.h" 650 RelativePath=".\llskiplist.h"
651 > 651 >
652 </File> 652 </File>
653 <File 653 <File
654 RelativePath=".\llstat.h" 654 RelativePath=".\llskipmap.h"
655 > 655 >
656 </File> 656 </File>
657 <File 657 <File
658 RelativePath=".\llstatenums.h" 658 RelativePath=".\llstat.h"
659 > 659 >
660 </File> 660 </File>
661 <File 661 <File
662 RelativePath=".\llstl.h" 662 RelativePath=".\llstatenums.h"
663 > 663 >
664 </File> 664 </File>
665 <File 665 <File
666 RelativePath=".\llstreamtools.h" 666 RelativePath=".\llstl.h"
667 > 667 >
668 </File> 668 </File>
669 <File 669 <File
670 RelativePath=".\llstrider.h" 670 RelativePath=".\llstreamtools.h"
671 > 671 >
672 </File> 672 </File>
673 <File 673 <File
674 RelativePath=".\llstring.h" 674 RelativePath=".\llstrider.h"
675 > 675 >
676 </File> 676 </File>
677 <File 677 <File
678 RelativePath=".\llstringtable.h" 678 RelativePath=".\llstring.h"
679 > 679 >
680 </File> 680 </File>
681 <File 681 <File
682 RelativePath=".\llsys.h" 682 RelativePath=".\llstringtable.h"
683 > 683 >
684 </File> 684 </File>
685 <File 685 <File
686 RelativePath=".\llthread.h" 686 RelativePath=".\llsys.h"
687 > 687 >
688 </File> 688 </File>
689 <File 689 <File
690 RelativePath=".\lltimer.h" 690 RelativePath=".\llthread.h"
691 > 691 >
692 </File> 692 </File>
693 <File 693 <File
694 RelativePath=".\lluri.h" 694 RelativePath=".\lltimer.h"
695 > 695 >
696 </File> 696 </File>
697 <File 697 <File
698 RelativePath=".\lluuidhashmap.h" 698 RelativePath=".\lluri.h"
699 > 699 >
700 </File> 700 </File>
701 <File 701 <File
702 RelativePath=".\llversion.h" 702 RelativePath=".\lluuidhashmap.h"
703 > 703 >
704 </File> 704 </File>
705 <File 705 <File
706 RelativePath=".\llworkerthread.h" 706 RelativePath=".\llversion.h"
707 > 707 >
708 </File> 708 </File>
709 <File 709 <File
710 RelativePath=".\new_mem_ops.h" 710 RelativePath=".\llworkerthread.h"
711 > 711 >
712 </File> 712 </File>
713 <File 713 <File
714 RelativePath=".\priqueue.h" 714 RelativePath=".\new_mem_ops.h"
715 > 715 >
716 </File> 716 </File>
717 <File 717 <File
718 RelativePath=".\processor.h" 718 RelativePath=".\priqueue.h"
719 > 719 >
720 </File> 720 </File>
721 <File 721 <File
722 RelativePath=".\roles_constants.h" 722 RelativePath=".\processor.h"
723 > 723 >
724 </File> 724 </File>
725 <File 725 <File
726 RelativePath=".\stdenums.h" 726 RelativePath=".\roles_constants.h"
727 > 727 >
728 </File> 728 </File>
729 <File 729 <File
730 RelativePath=".\stdtypes.h" 730 RelativePath=".\stdenums.h"
731 > 731 >
732 </File> 732 </File>
733 <File 733 <File
734 RelativePath=".\string_table.h" 734 RelativePath=".\stdtypes.h"
735 > 735 >
736 </File> 736 </File>
737 <File 737 <File
738 RelativePath=".\timer.h" 738 RelativePath=".\string_table.h"
739 > 739 >
740 </File> 740 </File>
741 <File 741 <File
742 RelativePath=".\timing.h" 742 RelativePath=".\timer.h"
743 > 743 >
744 </File> 744 </File>
745 <File 745 <File
746 RelativePath=".\u64.h" 746 RelativePath=".\timing.h"
747 > 747 >
748 </File> 748 </File>
749 </Filter> 749 <File
750 <Filter 750 RelativePath=".\u64.h"
751 Name="Resource Files" 751 >
752 Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx" 752 </File>
753 UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}" 753 </Filter>
754 > 754 <Filter
755 </Filter> 755 Name="Resource Files"
756 </Files> 756 Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
757 <Globals> 757 UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
758 </Globals> 758 >
759</VisualStudioProject> \ No newline at end of file 759 </Filter>
760 </Files>
761 <Globals>
762 </Globals>
763</VisualStudioProject>
diff --git a/linden/indra/llcommon/lllslconstants.h b/linden/indra/llcommon/lllslconstants.h
index 59d1cc8..afe4a9e 100644
--- a/linden/indra/llcommon/lllslconstants.h
+++ b/linden/indra/llcommon/lllslconstants.h
@@ -75,6 +75,7 @@ const S32 LSL_PRIM_TYPE_SPHERE = 3;
75const S32 LSL_PRIM_TYPE_TORUS = 4; 75const S32 LSL_PRIM_TYPE_TORUS = 4;
76const S32 LSL_PRIM_TYPE_TUBE = 5; 76const S32 LSL_PRIM_TYPE_TUBE = 5;
77const S32 LSL_PRIM_TYPE_RING = 6; 77const S32 LSL_PRIM_TYPE_RING = 6;
78const S32 LSL_PRIM_TYPE_SCULPT = 7;
78 79
79const S32 LSL_PRIM_HOLE_DEFAULT = 0x00; 80const S32 LSL_PRIM_HOLE_DEFAULT = 0x00;
80const S32 LSL_PRIM_HOLE_CIRCLE = 0x10; 81const S32 LSL_PRIM_HOLE_CIRCLE = 0x10;
@@ -117,6 +118,11 @@ const S32 LSL_PRIM_BUMP_STUCCO = 15;
117const S32 LSL_PRIM_BUMP_SUCTION = 16; 118const S32 LSL_PRIM_BUMP_SUCTION = 16;
118const S32 LSL_PRIM_BUMP_WEAVE = 17; 119const S32 LSL_PRIM_BUMP_WEAVE = 17;
119 120
121const S32 LSL_PRIM_SCULPT_TYPE_SPHERE = 1;
122const S32 LSL_PRIM_SCULPT_TYPE_TORUS = 2;
123const S32 LSL_PRIM_SCULPT_TYPE_PLANE = 3;
124const S32 LSL_PRIM_SCULPT_TYPE_CYLINDER = 4;
125
120const S32 LSL_ALL_SIDES = -1; 126const S32 LSL_ALL_SIDES = -1;
121const S32 LSL_LINK_ROOT = 1; 127const S32 LSL_LINK_ROOT = 1;
122const S32 LSL_LINK_FIRST_CHILD = 2; 128const S32 LSL_LINK_FIRST_CHILD = 2;
diff --git a/linden/indra/llcommon/llversion.h b/linden/indra/llcommon/llversion.h
index a76551d..f2ea20d 100644
--- a/linden/indra/llcommon/llversion.h
+++ b/linden/indra/llcommon/llversion.h
@@ -30,8 +30,8 @@
30#define LL_LLVERSION_H 30#define LL_LLVERSION_H
31 31
32const S32 LL_VERSION_MAJOR = 1; 32const S32 LL_VERSION_MAJOR = 1;
33const S32 LL_VERSION_MINOR = 15; 33const S32 LL_VERSION_MINOR = 16;
34const S32 LL_VERSION_PATCH = 1; 34const S32 LL_VERSION_PATCH = 0;
35const S32 LL_VERSION_BUILD = 3; 35const S32 LL_VERSION_BUILD = 5;
36 36
37#endif 37#endif
diff --git a/linden/indra/llinventory/llinventory_vc8.vcproj b/linden/indra/llinventory/llinventory_vc8.vcproj
index d66f352..2763cac 100644
--- a/linden/indra/llinventory/llinventory_vc8.vcproj
+++ b/linden/indra/llinventory/llinventory_vc8.vcproj
@@ -238,6 +238,10 @@
238 > 238 >
239 </File> 239 </File>
240 <File 240 <File
241 RelativePath=".\llinventorytype.cpp"
242 >
243 </File>
244 <File
241 RelativePath=".\lllandmark.cpp" 245 RelativePath=".\lllandmark.cpp"
242 > 246 >
243 </File> 247 </File>
@@ -284,6 +288,10 @@
284 > 288 >
285 </File> 289 </File>
286 <File 290 <File
291 RelativePath=".\llinventorytype.h"
292 >
293 </File>
294 <File
287 RelativePath=".\lllandmark.h" 295 RelativePath=".\lllandmark.h"
288 > 296 >
289 </File> 297 </File>
diff --git a/linden/indra/llinventory/llparcel.h b/linden/indra/llinventory/llparcel.h
index cc20182..3144eb9 100644
--- a/linden/indra/llinventory/llparcel.h
+++ b/linden/indra/llinventory/llparcel.h
@@ -347,7 +347,7 @@ public:
347 void startSale(const LLUUID& buyer_id, BOOL is_buyer_group); 347 void startSale(const LLUUID& buyer_id, BOOL is_buyer_group);
348 348
349 // do the expiration logic, which needs to return values usable in 349 // do the expiration logic, which needs to return values usable in
350 // a money transaction. 350 // a L$ transaction.
351 void expireSale(U32& type, U8& flags, LLUUID& from_id, LLUUID& to_id); 351 void expireSale(U32& type, U8& flags, LLUUID& from_id, LLUUID& to_id);
352 void completeSale(U32& type, U8& flags, LLUUID& to_id); 352 void completeSale(U32& type, U8& flags, LLUUID& to_id);
353 void clearSale(); 353 void clearSale();
diff --git a/linden/indra/llinventory/lltransactiontypes.h b/linden/indra/llinventory/lltransactiontypes.h
index 49ba6aa..6eaced9 100644
--- a/linden/indra/llinventory/lltransactiontypes.h
+++ b/linden/indra/llinventory/lltransactiontypes.h
@@ -35,7 +35,7 @@
35// insert into transaction_description 35// insert into transaction_description
36// set type = 1000, description = 'Object Claim'; 36// set type = 1000, description = 'Object Claim';
37// 37//
38// Also add it to the various money string lookups on the dataserver 38// Also add it to the various L$ string lookups on the dataserver
39// in lldatamoney 39// in lldatamoney
40 40
41// Money transaction failure codes 41// Money transaction failure codes
diff --git a/linden/indra/llmath/llvolume.cpp b/linden/indra/llmath/llvolume.cpp
index 89644a5..fb745b8 100644
--- a/linden/indra/llmath/llvolume.cpp
+++ b/linden/indra/llmath/llvolume.cpp
@@ -454,9 +454,18 @@ LLProfile::Face* LLProfile::addHole(BOOL flat, F32 sides, F32 offset, F32 box_ho
454 return face; 454 return face;
455} 455}
456 456
457BOOL LLProfile::generate(BOOL path_open,F32 detail, S32 split) 457
458F32 next_power_of_two(F32 value)
458{ 459{
459 if (!mDirty) 460 S32 power = (S32)llceil((F32)log((double)value)/(F32)log(2.0));
461 return pow(2.0f, power);
462}
463
464
465
466BOOL LLProfile::generate(BOOL path_open,F32 detail, S32 split, BOOL is_sculpted)
467{
468 if ((!mDirty) && (!is_sculpted))
460 { 469 {
461 return FALSE; 470 return FALSE;
462 } 471 }
@@ -592,10 +601,14 @@ BOOL LLProfile::generate(BOOL path_open,F32 detail, S32 split)
592 circle_detail = llceil(circle_detail / 4.0f) * 4.0f; 601 circle_detail = llceil(circle_detail / 4.0f) * 4.0f;
593 } 602 }
594 } 603 }
604
605 S32 sides = (S32)circle_detail;
606
607 if (is_sculpted)
608 sides = (S32)next_power_of_two((F32)sides);
609
610 genNGon(sides);
595 611
596 //llinfos << "(CIRCLE) detail: " << detail << "; genNGon("
597 // << llfloor(circle_detail) << ")" << llendl;
598 genNGon(llfloor(circle_detail));
599 if (path_open) 612 if (path_open)
600 { 613 {
601 addCap (LL_FACE_PATH_BEGIN); 614 addCap (LL_FACE_PATH_BEGIN);
@@ -844,7 +857,7 @@ BOOL LLProfileParams::importLegacyStream(std::istream& input_stream)
844 } 857 }
845 else 858 else
846 { 859 {
847 llwarns << "unknown keyword " << keyword << " in profile import" << llendl; 860 llwarns << "unknown keyword " << keyword << " in profile import" << llendl;
848 } 861 }
849 } 862 }
850 863
@@ -1074,9 +1087,9 @@ const LLVector2 LLPathParams::getEndScale() const
1074 return end_scale; 1087 return end_scale;
1075} 1088}
1076 1089
1077BOOL LLPath::generate(F32 detail, S32 split) 1090BOOL LLPath::generate(F32 detail, S32 split, BOOL is_sculpted)
1078{ 1091{
1079 if (!mDirty) 1092 if ((!mDirty) && (!is_sculpted))
1080 { 1093 {
1081 return FALSE; 1094 return FALSE;
1082 } 1095 }
@@ -1131,7 +1144,13 @@ BOOL LLPath::generate(F32 detail, S32 split)
1131 { 1144 {
1132 // Increase the detail as the revolutions and twist increase. 1145 // Increase the detail as the revolutions and twist increase.
1133 F32 twist_mag = fabs(mParams.getTwistBegin() - mParams.getTwist()); 1146 F32 twist_mag = fabs(mParams.getTwistBegin() - mParams.getTwist());
1134 genNGon(llfloor(llfloor((MIN_DETAIL_FACES * detail + twist_mag * 3.5f * (detail-0.5f))) * mParams.getRevolutions())); 1147
1148 S32 sides = (S32)llfloor(llfloor((MIN_DETAIL_FACES * detail + twist_mag * 3.5f * (detail-0.5f))) * mParams.getRevolutions());
1149
1150 if (is_sculpted)
1151 sides = (S32)next_power_of_two((F32)sides);
1152
1153 genNGon(sides);
1135 } 1154 }
1136 break; 1155 break;
1137 1156
@@ -1194,7 +1213,7 @@ BOOL LLPath::generate(F32 detail, S32 split)
1194 return TRUE; 1213 return TRUE;
1195} 1214}
1196 1215
1197BOOL LLDynamicPath::generate(F32 detail, S32 split) 1216BOOL LLDynamicPath::generate(F32 detail, S32 split, BOOL is_sculpted)
1198{ 1217{
1199 mOpen = TRUE; // Draw end caps 1218 mOpen = TRUE; // Draw end caps
1200 if (getPathLength() == 0) 1219 if (getPathLength() == 0)
@@ -1555,13 +1574,15 @@ LLProfile::~LLProfile()
1555} 1574}
1556 1575
1557 1576
1558S32 LLVolume::mNumMeshPoints = 0; 1577S32 LLVolume::sNumMeshPoints = 0;
1559 1578
1560LLVolume::LLVolume(const LLVolumeParams &params, const F32 detail, const BOOL generate_single_face, const BOOL is_unique) : mParams(params) 1579LLVolume::LLVolume(const LLVolumeParams &params, const F32 detail, const BOOL generate_single_face, const BOOL is_unique) : mParams(params)
1561{ 1580{
1562 mUnique = is_unique; 1581 mUnique = is_unique;
1563 mFaceMask = 0x0; 1582 mFaceMask = 0x0;
1564 mDetail = detail; 1583 mDetail = detail;
1584 mSculptLevel = -2;
1585
1565 // set defaults 1586 // set defaults
1566 if (mParams.getPathParams().getCurveType() == LL_PCODE_PATH_FLEXIBLE) 1587 if (mParams.getPathParams().getCurveType() == LL_PCODE_PATH_FLEXIBLE)
1567 { 1588 {
@@ -1578,7 +1599,10 @@ LLVolume::LLVolume(const LLVolumeParams &params, const F32 detail, const BOOL ge
1578 mGenerateSingleFace = generate_single_face; 1599 mGenerateSingleFace = generate_single_face;
1579 1600
1580 generate(); 1601 generate();
1581 createVolumeFaces(); 1602 if (mParams.getSculptID().isNull())
1603 {
1604 createVolumeFaces();
1605 }
1582} 1606}
1583 1607
1584void LLVolume::regen() 1608void LLVolume::regen()
@@ -1589,7 +1613,7 @@ void LLVolume::regen()
1589 1613
1590LLVolume::~LLVolume() 1614LLVolume::~LLVolume()
1591{ 1615{
1592 mNumMeshPoints -= mMesh.size(); 1616 sNumMeshPoints -= mMesh.size();
1593 delete mPathp; 1617 delete mPathp;
1594 delete mProfilep; 1618 delete mProfilep;
1595 delete[] mVolumeFaces; 1619 delete[] mVolumeFaces;
@@ -1640,9 +1664,9 @@ BOOL LLVolume::generate()
1640 1664
1641 if (regenPath || regenProf ) 1665 if (regenPath || regenProf )
1642 { 1666 {
1643 mNumMeshPoints -= mMesh.size(); 1667 sNumMeshPoints -= mMesh.size();
1644 mMesh.resize(mProfilep->mProfile.size() * mPathp->mPath.size()); 1668 mMesh.resize(mProfilep->mProfile.size() * mPathp->mPath.size());
1645 mNumMeshPoints += mMesh.size(); 1669 sNumMeshPoints += mMesh.size();
1646 1670
1647 S32 s = 0, t=0; 1671 S32 s = 0, t=0;
1648 S32 sizeS = mPathp->mPath.size(); 1672 S32 sizeS = mPathp->mPath.size();
@@ -1772,6 +1796,128 @@ void LLVolume::createVolumeFaces()
1772} 1796}
1773 1797
1774 1798
1799// sculpt replaces generate() for sculpted surfaces
1800void LLVolume::sculpt(U16 sculpt_width, U16 sculpt_height, S8 sculpt_components, const U8* sculpt_data, S32 sculpt_level)
1801{
1802 BOOL data_is_empty = FALSE;
1803
1804 if (sculpt_width == 0 || sculpt_height == 0 || sculpt_data == NULL)
1805 {
1806 sculpt_level = -1;
1807 data_is_empty = TRUE;
1808 }
1809
1810 mPathp->generate(mDetail, 0, TRUE);
1811 mProfilep->generate(mPathp->isOpen(), mDetail, 0, TRUE);
1812
1813
1814 S32 sizeS = mPathp->mPath.size();
1815 S32 sizeT = mProfilep->mProfile.size();
1816
1817 sNumMeshPoints -= mMesh.size();
1818 mMesh.resize(sizeS * sizeT);
1819 sNumMeshPoints += mMesh.size();
1820
1821 S32 vertex_change = 0;
1822 // first test to see if image has enough variation to create geometry
1823 if (!data_is_empty)
1824 {
1825 S32 last_index = 0;
1826 for (S32 s = 0; s < sizeS; s++)
1827 for (S32 t = 0; t < sizeT; t++)
1828 {
1829 U32 x = (U32) ((F32)s/(sizeS-1) * (F32) sculpt_width);
1830 U32 y = (U32) ((F32)t/(sizeT-1) * (F32) sculpt_height);
1831
1832 if (y == sculpt_height) // clamp to bottom row
1833 y = sculpt_height - 1;
1834
1835 if (x == sculpt_width) // stitch sides
1836 x = 0;
1837
1838 if ((y == 0) || (y == sculpt_height-1)) // stitch top and bottom
1839 x = sculpt_width / 2;
1840
1841 U32 index = (x + y * sculpt_width) * sculpt_components;
1842
1843 if (fabs((F32)(sculpt_data[index] - sculpt_data[last_index])) +
1844 fabs((F32)(sculpt_data[index+1] - sculpt_data[last_index+1])) +
1845 fabs((F32)(sculpt_data[index+2] - sculpt_data[last_index+2])) > 256 * 0.02)
1846 vertex_change++;
1847
1848 last_index = index;
1849 }
1850 }
1851
1852
1853 if ((F32)vertex_change / sizeS / sizeT < 0.05) // less than 5%
1854 data_is_empty = TRUE;
1855
1856
1857 //generate vertex positions
1858 // Run along the path.
1859 S32 s = 0, t = 0;
1860 S32 line = 0;
1861 while (s < sizeS)
1862 {
1863 t = 0;
1864 // Run along the profile.
1865 while (t < sizeT)
1866 {
1867 S32 i = t + line;
1868 Point& pt = mMesh[i];
1869
1870 U32 x = (U32) ((F32)t/(sizeT-1) * (F32) sculpt_width);
1871 U32 y = (U32) ((F32)s/(sizeS-1) * (F32) sculpt_height);
1872
1873 if (y == sculpt_height) // clamp to bottom row
1874 y = sculpt_height - 1;
1875
1876 if (x == sculpt_width) // stitch sides
1877 x = 0;
1878
1879 if ((y == 0) || (y == sculpt_height-1)) // stitch top and bottom
1880 x = sculpt_width / 2;
1881
1882
1883 if (data_is_empty) // if empty, make a sphere
1884 {
1885 F32 u = (F32)s/(sizeS-1);
1886 F32 v = (F32)t/(sizeT-1);
1887
1888 const F32 RADIUS = (F32) 0.3;
1889
1890 pt.mPos.mV[0] = (F32)(sin(F_PI * v) * cos(2.0 * F_PI * u) * RADIUS);
1891 pt.mPos.mV[1] = (F32)(sin(F_PI * v) * sin(2.0 * F_PI * u) * RADIUS);
1892 pt.mPos.mV[2] = (F32)(cos(F_PI * v) * RADIUS);
1893 }
1894
1895 else
1896 {
1897 U32 index = (x + y * sculpt_width) * sculpt_components;
1898 pt.mPos.mV[0] = sculpt_data[index ] / 256.f - 0.5f;
1899 pt.mPos.mV[1] = sculpt_data[index+1] / 256.f - 0.5f;
1900 pt.mPos.mV[2] = sculpt_data[index+2] / 256.f - 0.5f;
1901 }
1902
1903 t++;
1904 }
1905 line += sizeT;
1906 s++;
1907 }
1908
1909 for (S32 i = 0; i < (S32)mProfilep->mFaces.size(); i++)
1910 {
1911 mFaceMask |= mProfilep->mFaces[i].mFaceID;
1912 }
1913
1914 mSculptLevel = sculpt_level;
1915 createVolumeFaces();
1916}
1917
1918
1919
1920
1775BOOL LLVolume::isCap(S32 face) 1921BOOL LLVolume::isCap(S32 face)
1776{ 1922{
1777 return mProfilep->mFaces[face].mCap; 1923 return mProfilep->mFaces[face].mCap;
@@ -1785,14 +1931,18 @@ BOOL LLVolume::isFlat(S32 face)
1785 1931
1786bool LLVolumeParams::operator==(const LLVolumeParams &params) const 1932bool LLVolumeParams::operator==(const LLVolumeParams &params) const
1787{ 1933{
1788 return (getPathParams() == params.getPathParams()) && 1934 return ( (getPathParams() == params.getPathParams()) &&
1789 (getProfileParams() == params.getProfileParams()); 1935 (getProfileParams() == params.getProfileParams()) &&
1936 (mSculptID == params.mSculptID) &&
1937 (mSculptType == params.mSculptType) );
1790} 1938}
1791 1939
1792bool LLVolumeParams::operator!=(const LLVolumeParams &params) const 1940bool LLVolumeParams::operator!=(const LLVolumeParams &params) const
1793{ 1941{
1794 return (getPathParams() != params.getPathParams()) || 1942 return ( (getPathParams() != params.getPathParams()) ||
1795 (getProfileParams() != params.getProfileParams()); 1943 (getProfileParams() != params.getProfileParams()) ||
1944 (mSculptID != params.mSculptID) ||
1945 (mSculptType != params.mSculptType) );
1796} 1946}
1797 1947
1798bool LLVolumeParams::operator<(const LLVolumeParams &params) const 1948bool LLVolumeParams::operator<(const LLVolumeParams &params) const
@@ -1801,16 +1951,29 @@ bool LLVolumeParams::operator<(const LLVolumeParams &params) const
1801 { 1951 {
1802 return getPathParams() < params.getPathParams(); 1952 return getPathParams() < params.getPathParams();
1803 } 1953 }
1804 else 1954
1955 if (getProfileParams() != params.getProfileParams())
1805 { 1956 {
1806 return getProfileParams() < params.getProfileParams(); 1957 return getProfileParams() < params.getProfileParams();
1807 } 1958 }
1959
1960 if (mSculptID != params.mSculptID)
1961 {
1962 return mSculptID < params.mSculptID;
1963 }
1964
1965
1966 return mSculptType < params.mSculptType;
1967
1968
1808} 1969}
1809 1970
1810void LLVolumeParams::copyParams(const LLVolumeParams &params) 1971void LLVolumeParams::copyParams(const LLVolumeParams &params)
1811{ 1972{
1812 mProfileParams.copyParams(params.mProfileParams); 1973 mProfileParams.copyParams(params.mProfileParams);
1813 mPathParams.copyParams(params.mPathParams); 1974 mPathParams.copyParams(params.mPathParams);
1975 mSculptID = params.getSculptID();
1976 mSculptType = params.getSculptType();
1814} 1977}
1815 1978
1816// Less restricitve approx 0 for volumes 1979// Less restricitve approx 0 for volumes
@@ -2070,6 +2233,13 @@ bool LLVolumeParams::setSkew(const F32 skew_value)
2070 return valid; 2233 return valid;
2071} 2234}
2072 2235
2236bool LLVolumeParams::setSculptID(const LLUUID sculpt_id, U8 sculpt_type)
2237{
2238 mSculptID = sculpt_id;
2239 mSculptType = sculpt_type;
2240 return true;
2241}
2242
2073bool LLVolumeParams::setType(U8 profile, U8 path) 2243bool LLVolumeParams::setType(U8 profile, U8 path)
2074{ 2244{
2075 bool result = true; 2245 bool result = true;
@@ -2829,7 +2999,7 @@ void LLVolume::generateSilhouetteVertices(std::vector<LLVector3> &vertices,
2829 segments.clear(); 2999 segments.clear();
2830 3000
2831 //for each face 3001 //for each face
2832 for (S32 i = 0; i < getNumFaces(); i++) { 3002 for (S32 i = 0; i < getNumVolumeFaces(); i++) {
2833 LLVolumeFace face = this->getVolumeFace(i); 3003 LLVolumeFace face = this->getVolumeFace(i);
2834 3004
2835 if (face.mTypeMask & (LLVolumeFace::CAP_MASK)) { 3005 if (face.mTypeMask & (LLVolumeFace::CAP_MASK)) {
@@ -4436,6 +4606,9 @@ BOOL LLVolumeFace::createSide()
4436 } 4606 }
4437 } 4607 }
4438 4608
4609 BOOL s_bottom_converges = ((mVertices[0].mPosition - mVertices[mNumS*(mNumT-2)].mPosition).magVecSquared() < 0.000001f);
4610 BOOL s_top_converges = ((mVertices[mNumS-1].mPosition - mVertices[mNumS*(mNumT-2)+mNumS-1].mPosition).magVecSquared() < 0.000001f);
4611
4439 if (mVolumep->getPath().isOpen() == FALSE) { //wrap normals on T 4612 if (mVolumep->getPath().isOpen() == FALSE) { //wrap normals on T
4440 for (S32 i = 0; i < mNumS; i++) { 4613 for (S32 i = 0; i < mNumS; i++) {
4441 LLVector3 norm = mVertices[i].mNormal + mVertices[mNumS*(mNumT-1)+i].mNormal; 4614 LLVector3 norm = mVertices[i].mNormal + mVertices[mNumS*(mNumT-1)+i].mNormal;
@@ -4444,30 +4617,73 @@ BOOL LLVolumeFace::createSide()
4444 } 4617 }
4445 } 4618 }
4446 4619
4447 if (mVolumep->getProfile().isOpen() == FALSE) { //wrap normals on S 4620 if ((mVolumep->getProfile().isOpen() == FALSE) &&
4448 for (S32 i = 0; i < mNumT; i++) { 4621 !(s_bottom_converges))
4449 LLVector3 norm = mVertices[mNumS*i].mNormal + mVertices[mNumS*i+mNumS-1].mNormal; 4622 { //wrap normals on S
4450 mVertices[mNumS * i].mNormal = norm; 4623 for (S32 i = 0; i < mNumT; i++) {
4451 mVertices[mNumS * i+mNumS-1].mNormal = norm; 4624 LLVector3 norm = mVertices[mNumS*i].mNormal + mVertices[mNumS*i+mNumS-1].mNormal;
4625 mVertices[mNumS * i].mNormal = norm;
4626 mVertices[mNumS * i+mNumS-1].mNormal = norm;
4627 }
4452 } 4628 }
4453 }
4454 4629
4455 if (mVolumep->getPathType() == LL_PCODE_PATH_CIRCLE && ((mVolumep->getProfileType() & LL_PCODE_PROFILE_MASK) == LL_PCODE_PROFILE_CIRCLE_HALF)) { 4630 if (mVolumep->getPathType() == LL_PCODE_PATH_CIRCLE &&
4456 if ((mVertices[0].mPosition - mVertices[mNumS*(mNumT-2)].mPosition).magVecSquared() < 0.000001f) 4631 ((mVolumep->getProfileType() & LL_PCODE_PROFILE_MASK) == LL_PCODE_PROFILE_CIRCLE_HALF))
4632 {
4633 if (s_bottom_converges)
4457 { //all lower S have same normal 4634 { //all lower S have same normal
4458 for (S32 i = 0; i < mNumT; i++) { 4635 for (S32 i = 0; i < mNumT; i++) {
4459 mVertices[mNumS*i].mNormal = LLVector3(1,0,0); 4636 mVertices[mNumS*i].mNormal = LLVector3(1,0,0);
4460 } 4637 }
4461 } 4638 }
4462 4639
4463 if ((mVertices[mNumS-1].mPosition - mVertices[mNumS*(mNumT-2)+mNumS-1].mPosition).magVecSquared() < 0.000001f) 4640 if (s_top_converges)
4464 { //all upper T have same normal 4641 { //all upper S have same normal
4465 for (S32 i = 0; i < mNumT; i++) { 4642 for (S32 i = 0; i < mNumT; i++) {
4466 mVertices[mNumS*i+mNumS-1].mNormal = LLVector3(-1,0,0); 4643 mVertices[mNumS*i+mNumS-1].mNormal = LLVector3(-1,0,0);
4467 } 4644 }
4468 } 4645 }
4469 } 4646 }
4470 4647
4648 U8 sculpt_type = mVolumep->getParams().getSculptType();
4649
4650 if (sculpt_type == LL_SCULPT_TYPE_SPHERE)
4651 {
4652 // average normals for north pole
4653
4654 LLVector3 average(0.0, 0.0, 0.0);
4655 for (S32 i = 0; i < mNumS; i++)
4656 {
4657 average += mVertices[i].mNormal;
4658 }
4659
4660 // set average
4661 for (S32 i = 0; i < mNumS; i++)
4662 {
4663 mVertices[i].mNormal = average;
4664 }
4665 }
4666
4667
4668 if (sculpt_type == LL_SCULPT_TYPE_SPHERE)
4669 {
4670 // average normals for south pole
4671
4672 LLVector3 average(0.0, 0.0, 0.0);
4673 for (S32 i = 0; i < mNumS; i++)
4674 {
4675 average += mVertices[i + mNumS * (mNumT - 1)].mNormal;
4676 }
4677
4678 // set average
4679 for (S32 i = 0; i < mNumS; i++)
4680 {
4681 mVertices[i + mNumS * (mNumT - 1)].mNormal = average;
4682 }
4683 }
4684
4685
4686
4471 //normalize normals and binormals here so the meshes that reference 4687 //normalize normals and binormals here so the meshes that reference
4472 //this volume data don't have to 4688 //this volume data don't have to
4473 for (U32 i = 0; i < mVertices.size(); i++) 4689 for (U32 i = 0; i < mVertices.size(); i++)
diff --git a/linden/indra/llmath/llvolume.h b/linden/indra/llmath/llvolume.h
index 7137346..a3e89ab 100644
--- a/linden/indra/llmath/llvolume.h
+++ b/linden/indra/llmath/llvolume.h
@@ -169,6 +169,16 @@ const LLFaceID LL_FACE_OUTER_SIDE_3 = 0x1 << 8;
169 169
170//============================================================================ 170//============================================================================
171 171
172// sculpt types
173
174const U8 LL_SCULPT_TYPE_NONE = 0;
175const U8 LL_SCULPT_TYPE_SPHERE = 1;
176const U8 LL_SCULPT_TYPE_TORUS = 2;
177const U8 LL_SCULPT_TYPE_PLAIN = 3;
178const U8 LL_SCULPT_TYPE_CYLINDER = 4;
179
180
181
172class LLProfileParams 182class LLProfileParams
173{ 183{
174public: 184public:
@@ -512,8 +522,9 @@ public:
512 { 522 {
513 } 523 }
514 524
515 LLVolumeParams(LLProfileParams &profile, LLPathParams &path) 525 LLVolumeParams(LLProfileParams &profile, LLPathParams &path,
516 : mProfileParams(profile), mPathParams(path) 526 LLUUID sculpt_id = LLUUID::null, U8 sculpt_type = LL_SCULPT_TYPE_NONE)
527 : mProfileParams(profile), mPathParams(path), mSculptID(sculpt_id), mSculptType(sculpt_type)
517 { 528 {
518 } 529 }
519 530
@@ -564,6 +575,7 @@ public:
564 bool setRevolutions(const F32 revolutions); // 1 to 4 575 bool setRevolutions(const F32 revolutions); // 1 to 4
565 bool setRadiusOffset(const F32 radius_offset); 576 bool setRadiusOffset(const F32 radius_offset);
566 bool setSkew(const F32 skew); 577 bool setSkew(const F32 skew);
578 bool setSculptID(const LLUUID sculpt_id, U8 sculpt_type);
567 579
568 static bool validate(U8 prof_curve, F32 prof_begin, F32 prof_end, F32 hollow, 580 static bool validate(U8 prof_curve, F32 prof_begin, F32 prof_end, F32 hollow,
569 U8 path_curve, F32 path_begin, F32 path_end, 581 U8 path_curve, F32 path_begin, F32 path_end,
@@ -591,6 +603,8 @@ public:
591 const F32& getTaperY() const { return mPathParams.getTaperY(); } 603 const F32& getTaperY() const { return mPathParams.getTaperY(); }
592 const F32& getRevolutions() const { return mPathParams.getRevolutions(); } 604 const F32& getRevolutions() const { return mPathParams.getRevolutions(); }
593 const F32& getSkew() const { return mPathParams.getSkew(); } 605 const F32& getSkew() const { return mPathParams.getSkew(); }
606 const LLUUID& getSculptID() const { return mSculptID; }
607 const U8& getSculptType() const { return mSculptType; }
594 608
595 BOOL isConvex() const; 609 BOOL isConvex() const;
596 610
@@ -613,6 +627,8 @@ public:
613protected: 627protected:
614 LLProfileParams mProfileParams; 628 LLProfileParams mProfileParams;
615 LLPathParams mPathParams; 629 LLPathParams mPathParams;
630 LLUUID mSculptID;
631 U8 mSculptType;
616}; 632};
617 633
618 634
@@ -635,7 +651,7 @@ public:
635 BOOL isFlat(S32 face) const { return (mFaces[face].mCount == 2); } 651 BOOL isFlat(S32 face) const { return (mFaces[face].mCount == 2); }
636 BOOL isOpen() const { return mOpen; } 652 BOOL isOpen() const { return mOpen; }
637 void setDirty() { mDirty = TRUE; } 653 void setDirty() { mDirty = TRUE; }
638 BOOL generate(BOOL path_open, F32 detail = 1.0f, S32 split = 0); 654 BOOL generate(BOOL path_open, F32 detail = 1.0f, S32 split = 0, BOOL is_sculpted = FALSE);
639 BOOL isConcave() const { return mConcave; } 655 BOOL isConcave() const { return mConcave; }
640public: 656public:
641 const LLProfileParams &mParams; 657 const LLProfileParams &mParams;
@@ -704,7 +720,7 @@ public:
704 virtual ~LLPath(); 720 virtual ~LLPath();
705 721
706 void genNGon(S32 sides, F32 offset=0.0f, F32 end_scale = 1.f, F32 twist_scale = 1.f); 722 void genNGon(S32 sides, F32 offset=0.0f, F32 end_scale = 1.f, F32 twist_scale = 1.f);
707 virtual BOOL generate(F32 detail=1.0f, S32 split = 0); 723 virtual BOOL generate(F32 detail=1.0f, S32 split = 0, BOOL is_sculpted = FALSE);
708 724
709 BOOL isOpen() const { return mOpen; } 725 BOOL isOpen() const { return mOpen; }
710 F32 getStep() const { return mStep; } 726 F32 getStep() const { return mStep; }
@@ -731,7 +747,7 @@ class LLDynamicPath : public LLPath
731{ 747{
732public: 748public:
733 LLDynamicPath(const LLPathParams &params) : LLPath(params) { } 749 LLDynamicPath(const LLPathParams &params) : LLPath(params) { }
734 BOOL generate(F32 detail=1.0f, S32 split = 0); 750 BOOL generate(F32 detail=1.0f, S32 split = 0, BOOL is_sculpted = FALSE);
735}; 751};
736 752
737// Yet another "face" class - caches volume-specific, but not instance-specific data for faces) 753// Yet another "face" class - caches volume-specific, but not instance-specific data for faces)
@@ -821,7 +837,7 @@ public:
821 U8 getProfileType() const { return mProfilep->mParams.getCurveType(); } 837 U8 getProfileType() const { return mProfilep->mParams.getCurveType(); }
822 U8 getPathType() const { return mPathp->mParams.getCurveType(); } 838 U8 getPathType() const { return mPathp->mParams.getCurveType(); }
823 S32 getNumFaces() const { return (S32)mProfilep->mFaces.size(); } 839 S32 getNumFaces() const { return (S32)mProfilep->mFaces.size(); }
824 840 S32 getNumVolumeFaces() const { return mNumVolumeFaces; }
825 const F32 getDetail() const { return mDetail; } 841 const F32 getDetail() const { return mDetail; }
826 const LLVolumeParams & getParams() const { return mParams; } 842 const LLVolumeParams & getParams() const { return mParams; }
827 LLVolumeParams getCopyOfParams() const { return mParams; } 843 LLVolumeParams getCopyOfParams() const { return mParams; }
@@ -839,6 +855,11 @@ public:
839 BOOL isFlat(S32 face); 855 BOOL isFlat(S32 face);
840 BOOL isUnique() const { return mUnique; } 856 BOOL isUnique() const { return mUnique; }
841 857
858 S32 getSculptLevel() const { return mSculptLevel; }
859 void setSculptLevel(S32 level) { mSculptLevel = level; }
860
861 U8 getSculptType() const { return mSculptType; }
862
842 S32 *getTriangleIndices(U32 &num_indices) const; 863 S32 *getTriangleIndices(U32 &num_indices) const;
843 void generateSilhouetteVertices(std::vector<LLVector3> &vertices, std::vector<LLVector3> &normals, std::vector<S32> &segments, const LLVector3& view_vec, 864 void generateSilhouetteVertices(std::vector<LLVector3> &vertices, std::vector<LLVector3> &normals, std::vector<S32> &segments, const LLVector3& view_vec,
844 const LLMatrix4& mat, 865 const LLMatrix4& mat,
@@ -863,7 +884,7 @@ public:
863 LLFaceID generateFaceMask(); 884 LLFaceID generateFaceMask();
864 885
865 BOOL isFaceMaskValid(LLFaceID face_mask); 886 BOOL isFaceMaskValid(LLFaceID face_mask);
866 static S32 mNumMeshPoints; 887 static S32 sNumMeshPoints;
867 888
868 friend std::ostream& operator<<(std::ostream &s, const LLVolume &volume); 889 friend std::ostream& operator<<(std::ostream &s, const LLVolume &volume);
869 friend std::ostream& operator<<(std::ostream &s, const LLVolume *volumep); // HACK to bypass Windoze confusion over 890 friend std::ostream& operator<<(std::ostream &s, const LLVolume *volumep); // HACK to bypass Windoze confusion over
@@ -872,14 +893,19 @@ public:
872 893
873 U32 mFaceMask; // bit array of which faces exist in this volume 894 U32 mFaceMask; // bit array of which faces exist in this volume
874 LLVector3 mLODScaleBias; // vector for biasing LOD based on scale 895 LLVector3 mLODScaleBias; // vector for biasing LOD based on scale
875 896
897 void sculpt(U16 sculpt_width, U16 sculpt_height, S8 sculpt_components, const U8* sculpt_data, S32 sculpt_level);
898
876protected: 899protected:
877 BOOL generate(); 900 BOOL generate();
878 void createVolumeFaces(); 901 void createVolumeFaces();
879 902
880protected: 903 protected:
881 BOOL mUnique; 904 BOOL mUnique;
882 F32 mDetail; 905 F32 mDetail;
906 S32 mSculptLevel;
907 U8 mSculptType;
908
883 LLVolumeParams mParams; 909 LLVolumeParams mParams;
884 LLPath *mPathp; 910 LLPath *mPathp;
885 LLProfile *mProfilep; 911 LLProfile *mProfilep;
diff --git a/linden/indra/llmessage/llcachename.cpp b/linden/indra/llmessage/llcachename.cpp
index 1cc7e09..3df4b82 100644
--- a/linden/indra/llmessage/llcachename.cpp
+++ b/linden/indra/llmessage/llcachename.cpp
@@ -528,26 +528,28 @@ void LLCacheName::get(const LLUUID& id, BOOL is_group, LLCacheNameCallback callb
528 LLCacheNameEntry* entry = get_ptr_in_map(impl.mCache, id ); 528 LLCacheNameEntry* entry = get_ptr_in_map(impl.mCache, id );
529 if (entry) 529 if (entry)
530 { 530 {
531 if (!entry->mIsGroup) 531 // id found in map therefore we can call the callback immediately.
532 if (entry->mIsGroup)
532 { 533 {
533 callback(id, entry->mFirstName, entry->mLastName, entry->mIsGroup, user_data); 534 callback(id, entry->mGroupName, "", entry->mIsGroup, user_data);
534 } 535 }
535 else 536 else
536 { 537 {
537 callback(id, entry->mGroupName, "", entry->mIsGroup, user_data); 538 callback(id, entry->mFirstName, entry->mLastName, entry->mIsGroup, user_data);
538 } 539 }
539 } 540 }
540 else 541 else
541 { 542 {
543 // id not found in map so we must queue the callback call until available.
542 if (!impl.isRequestPending(id)) 544 if (!impl.isRequestPending(id))
543 { 545 {
544 if (!is_group) 546 if (is_group)
545 { 547 {
546 impl.mAskNameQueue.insert(id); 548 impl.mAskGroupQueue.insert(id);
547 } 549 }
548 else 550 else
549 { 551 {
550 impl.mAskGroupQueue.insert(id); 552 impl.mAskNameQueue.insert(id);
551 } 553 }
552 } 554 }
553 impl.mReplyQueue.push_back(PendingReply(id, callback, user_data)); 555 impl.mReplyQueue.push_back(PendingReply(id, callback, user_data));
diff --git a/linden/indra/llmessage/llcurl.cpp b/linden/indra/llmessage/llcurl.cpp
index 886697e..9d883a7 100644
--- a/linden/indra/llmessage/llcurl.cpp
+++ b/linden/indra/llmessage/llcurl.cpp
@@ -1,10 +1,31 @@
1/* 1/**
2 * llcurl.cpp 2 * @file llcurl.h
3 * MacTester 3 * @author Zero / Donovan
4 * 4 * @date 2006-10-15
5 * Created by Zero Linden on 10/15/06. 5 * @brief Curl wrapper
6 * Copyright 2006 __MyCompanyName__. All rights reserved.
7 * 6 *
7 * Copyright (c) 2006-2007, Linden Research, Inc.
8 *
9 * Second Life Viewer Source Code
10 * The source code in this file ("Source Code") is provided by Linden Lab
11 * to you under the terms of the GNU General Public License, version 2.0
12 * ("GPL"), unless you have obtained a separate licensing agreement
13 * ("Other License"), formally executed by you and Linden Lab. Terms of
14 * the GPL can be found in doc/GPL-license.txt in this distribution, or
15 * online at http://secondlife.com/developers/opensource/gplv2
16 *
17 * There are special exceptions to the terms and conditions of the GPL as
18 * it is applied to this Source Code. View the full text of the exception
19 * in the file doc/FLOSS-exception.txt in this software distribution, or
20 * online at http://secondlife.com/developers/opensource/flossexception
21 *
22 * By copying, modifying or distributing this software, you acknowledge
23 * that you have read and understood your obligations described above,
24 * and agree to abide by those obligations.
25 *
26 * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
27 * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
28 * COMPLETENESS OR PERFORMANCE.
8 */ 29 */
9 30
10#include "llcurl.h" 31#include "llcurl.h"
diff --git a/linden/indra/llmessage/llcurl.h b/linden/indra/llmessage/llcurl.h
index 4f1b5e6..e188c38 100644
--- a/linden/indra/llmessage/llcurl.h
+++ b/linden/indra/llmessage/llcurl.h
@@ -1,10 +1,31 @@
1/* 1/**
2 * llcurl.h 2 * @file llcurl.h
3 * MacTester 3 * @author Zero / Donovan
4 * 4 * @date 2006-10-15
5 * Created by Zero Linden on 10/15/06. 5 * @brief Curl wrapper
6 * Copyright 2006 __MyCompanyName__. All rights reserved.
7 * 6 *
7 * Copyright (c) 2006-2007, Linden Research, Inc.
8 *
9 * Second Life Viewer Source Code
10 * The source code in this file ("Source Code") is provided by Linden Lab
11 * to you under the terms of the GNU General Public License, version 2.0
12 * ("GPL"), unless you have obtained a separate licensing agreement
13 * ("Other License"), formally executed by you and Linden Lab. Terms of
14 * the GPL can be found in doc/GPL-license.txt in this distribution, or
15 * online at http://secondlife.com/developers/opensource/gplv2
16 *
17 * There are special exceptions to the terms and conditions of the GPL as
18 * it is applied to this Source Code. View the full text of the exception
19 * in the file doc/FLOSS-exception.txt in this software distribution, or
20 * online at http://secondlife.com/developers/opensource/flossexception
21 *
22 * By copying, modifying or distributing this software, you acknowledge
23 * that you have read and understood your obligations described above,
24 * and agree to abide by those obligations.
25 *
26 * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
27 * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
28 * COMPLETENESS OR PERFORMANCE.
8 */ 29 */
9 30
10#ifndef LL_LLCURL_H 31#ifndef LL_LLCURL_H
diff --git a/linden/indra/llmessage/llmessage_vc8.vcproj b/linden/indra/llmessage/llmessage_vc8.vcproj
index ac32525..9692930 100644
--- a/linden/indra/llmessage/llmessage_vc8.vcproj
+++ b/linden/indra/llmessage/llmessage_vc8.vcproj
@@ -295,6 +295,10 @@
295 > 295 >
296 </File> 296 </File>
297 <File 297 <File
298 RelativePath=".\llhttpsender.cpp"
299 >
300 </File>
301 <File
298 RelativePath=".\llinstantmessage.cpp" 302 RelativePath=".\llinstantmessage.cpp"
299 > 303 >
300 </File> 304 </File>
@@ -327,6 +331,22 @@
327 > 331 >
328 </File> 332 </File>
329 <File 333 <File
334 RelativePath=".\llmessagebuilder.cpp"
335 >
336 </File>
337 <File
338 RelativePath=".\llmessageconfig.cpp"
339 >
340 </File>
341 <File
342 RelativePath=".\llmessagereader.cpp"
343 >
344 </File>
345 <File
346 RelativePath=".\llmessagetemplate.cpp"
347 >
348 </File>
349 <File
330 RelativePath=".\llmessagethrottle.cpp" 350 RelativePath=".\llmessagethrottle.cpp"
331 > 351 >
332 </File> 352 </File>
@@ -367,7 +387,11 @@
367 > 387 >
368 </File> 388 </File>
369 <File 389 <File
370 RelativePath=".\llsdmessagesystem.cpp" 390 RelativePath=".\llsdmessagebuilder.cpp"
391 >
392 </File>
393 <File
394 RelativePath=".\llsdmessagereader.cpp"
371 > 395 >
372 </File> 396 </File>
373 <File 397 <File
@@ -383,6 +407,18 @@
383 > 407 >
384 </File> 408 </File>
385 <File 409 <File
410 RelativePath=".\llservicebuilder.cpp"
411 >
412 </File>
413 <File
414 RelativePath=".\lltemplatemessagebuilder.cpp"
415 >
416 </File>
417 <File
418 RelativePath=".\lltemplatemessagereader.cpp"
419 >
420 </File>
421 <File
386 RelativePath=".\llthrottle.cpp" 422 RelativePath=".\llthrottle.cpp"
387 > 423 >
388 </File> 424 </File>
@@ -573,6 +609,14 @@
573 > 609 >
574 </File> 610 </File>
575 <File 611 <File
612 RelativePath=".\llhttpnode.h"
613 >
614 </File>
615 <File
616 RelativePath=".\llhttpsender.h"
617 >
618 </File>
619 <File
576 RelativePath=".\llinstantmessage.h" 620 RelativePath=".\llinstantmessage.h"
577 > 621 >
578 </File> 622 </File>
@@ -617,6 +661,22 @@
617 > 661 >
618 </File> 662 </File>
619 <File 663 <File
664 RelativePath=".\llmessagebuilder.h"
665 >
666 </File>
667 <File
668 RelativePath=".\llmessageconfig.h"
669 >
670 </File>
671 <File
672 RelativePath=".\llmessagereader.h"
673 >
674 </File>
675 <File
676 RelativePath=".\llmessagetemplate.h"
677 >
678 </File>
679 <File
620 RelativePath=".\llmessagethrottle.h" 680 RelativePath=".\llmessagethrottle.h"
621 > 681 >
622 </File> 682 </File>
@@ -673,7 +733,11 @@
673 > 733 >
674 </File> 734 </File>
675 <File 735 <File
676 RelativePath=".\llsdmessagesystem.h" 736 RelativePath=".\llsdmessagebuilder.h"
737 >
738 </File>
739 <File
740 RelativePath=".\llsdmessagereader.h"
677 > 741 >
678 </File> 742 </File>
679 <File 743 <File
@@ -689,6 +753,10 @@
689 > 753 >
690 </File> 754 </File>
691 <File 755 <File
756 RelativePath=".\llservicebuilder.h"
757 >
758 </File>
759 <File
692 RelativePath=".\lltaskname.h" 760 RelativePath=".\lltaskname.h"
693 > 761 >
694 </File> 762 </File>
@@ -697,6 +765,14 @@
697 > 765 >
698 </File> 766 </File>
699 <File 767 <File
768 RelativePath=".\lltemplatemessagebuilder.h"
769 >
770 </File>
771 <File
772 RelativePath=".\lltemplatemessagereader.h"
773 >
774 </File>
775 <File
700 RelativePath=".\llthrottle.h" 776 RelativePath=".\llthrottle.h"
701 > 777 >
702 </File> 778 </File>
diff --git a/linden/indra/llmessage/lluseroperation.h b/linden/indra/llmessage/lluseroperation.h
index 325567c..2b351f9 100644
--- a/linden/indra/llmessage/lluseroperation.h
+++ b/linden/indra/llmessage/lluseroperation.h
@@ -1,7 +1,7 @@
1/** 1/**
2 * @file lluseroperation.h 2 * @file lluseroperation.h
3 * @brief LLUserOperation class header file - used for message based 3 * @brief LLUserOperation class header file - used for message based
4 * transaction. For example, money transactions. 4 * transaction. For example, L$ transactions.
5 * 5 *
6 * Copyright (c) 2002-2007, Linden Research, Inc. 6 * Copyright (c) 2002-2007, Linden Research, Inc.
7 * 7 *
diff --git a/linden/indra/llmessage/message_prehash.cpp b/linden/indra/llmessage/message_prehash.cpp
index 39b3737..3e26726 100644
--- a/linden/indra/llmessage/message_prehash.cpp
+++ b/linden/indra/llmessage/message_prehash.cpp
@@ -554,8 +554,8 @@ char * _PREHASH_ReturnIDs;
554char * _PREHASH_Date; 554char * _PREHASH_Date;
555char * _PREHASH_AgentWearablesUpdate; 555char * _PREHASH_AgentWearablesUpdate;
556char * _PREHASH_AgentDataUpdate; 556char * _PREHASH_AgentDataUpdate;
557char * _PREHASH_Hash;
558char * _PREHASH_GroupDataUpdate; 557char * _PREHASH_GroupDataUpdate;
558char * _PREHASH_Hash;
559char * _PREHASH_AgentGroupDataUpdate; 559char * _PREHASH_AgentGroupDataUpdate;
560char * _PREHASH_Left; 560char * _PREHASH_Left;
561char * _PREHASH_Mask; 561char * _PREHASH_Mask;
@@ -683,7 +683,6 @@ char * _PREHASH_CreateNewOutfitAttachments;
683char * _PREHASH_RegionHandle; 683char * _PREHASH_RegionHandle;
684char * _PREHASH_TeleportProgress; 684char * _PREHASH_TeleportProgress;
685char * _PREHASH_AgentQuitCopy; 685char * _PREHASH_AgentQuitCopy;
686char * _PREHASH_ToViewer;
687char * _PREHASH_AvatarInterestsUpdate; 686char * _PREHASH_AvatarInterestsUpdate;
688char * _PREHASH_GroupNoticeID; 687char * _PREHASH_GroupNoticeID;
689char * _PREHASH_ParcelName; 688char * _PREHASH_ParcelName;
@@ -742,6 +741,7 @@ char * _PREHASH_LogoutReply;
742char * _PREHASH_FeatureDisabled; 741char * _PREHASH_FeatureDisabled;
743char * _PREHASH_ObjectLocalID; 742char * _PREHASH_ObjectLocalID;
744char * _PREHASH_Dropped; 743char * _PREHASH_Dropped;
744char * _PREHASH_PhysicalAvatarEventList;
745char * _PREHASH_WebProfilesDisabled; 745char * _PREHASH_WebProfilesDisabled;
746char * _PREHASH_Destination; 746char * _PREHASH_Destination;
747char * _PREHASH_MasterID; 747char * _PREHASH_MasterID;
@@ -1015,7 +1015,6 @@ char * _PREHASH_TrackAgentSession;
1015char * _PREHASH_CacheMissType; 1015char * _PREHASH_CacheMissType;
1016char * _PREHASH_VFileID; 1016char * _PREHASH_VFileID;
1017char * _PREHASH_GroupInsigniaID; 1017char * _PREHASH_GroupInsigniaID;
1018char * _PREHASH_FromID;
1019char * _PREHASH_Online; 1018char * _PREHASH_Online;
1020char * _PREHASH_KickFlags; 1019char * _PREHASH_KickFlags;
1021char * _PREHASH_CovenantID; 1020char * _PREHASH_CovenantID;
@@ -1199,7 +1198,6 @@ char * _PREHASH_EventData;
1199char * _PREHASH_Final; 1198char * _PREHASH_Final;
1200char * _PREHASH_TelehubPos; 1199char * _PREHASH_TelehubPos;
1201char * _PREHASH_ReportAutosaveCrash; 1200char * _PREHASH_ReportAutosaveCrash;
1202char * _PREHASH_Reset;
1203char * _PREHASH_CreateTrustedCircuit; 1201char * _PREHASH_CreateTrustedCircuit;
1204char * _PREHASH_DenyTrustedCircuit; 1202char * _PREHASH_DenyTrustedCircuit;
1205char * _PREHASH_RequestTrustedCircuit; 1203char * _PREHASH_RequestTrustedCircuit;
@@ -1382,7 +1380,6 @@ char * _PREHASH_SimulatorPublicHostBlock;
1382char * _PREHASH_HeaderData; 1380char * _PREHASH_HeaderData;
1383char * _PREHASH_RequestMultipleObjects; 1381char * _PREHASH_RequestMultipleObjects;
1384char * _PREHASH_RetrieveInstantMessages; 1382char * _PREHASH_RetrieveInstantMessages;
1385char * _PREHASH_DequeueInstantMessages;
1386char * _PREHASH_OpenCircuit; 1383char * _PREHASH_OpenCircuit;
1387char * _PREHASH_SecureSessionID; 1384char * _PREHASH_SecureSessionID;
1388char * _PREHASH_CrossedRegion; 1385char * _PREHASH_CrossedRegion;
@@ -2020,8 +2017,8 @@ void init_prehash_data()
2020 _PREHASH_Date = gMessageStringTable.getString("Date"); 2017 _PREHASH_Date = gMessageStringTable.getString("Date");
2021 _PREHASH_AgentWearablesUpdate = gMessageStringTable.getString("AgentWearablesUpdate"); 2018 _PREHASH_AgentWearablesUpdate = gMessageStringTable.getString("AgentWearablesUpdate");
2022 _PREHASH_AgentDataUpdate = gMessageStringTable.getString("AgentDataUpdate"); 2019 _PREHASH_AgentDataUpdate = gMessageStringTable.getString("AgentDataUpdate");
2023 _PREHASH_Hash = gMessageStringTable.getString("Hash");
2024 _PREHASH_GroupDataUpdate = gMessageStringTable.getString("GroupDataUpdate"); 2020 _PREHASH_GroupDataUpdate = gMessageStringTable.getString("GroupDataUpdate");
2021 _PREHASH_Hash = gMessageStringTable.getString("Hash");
2025 _PREHASH_AgentGroupDataUpdate = gMessageStringTable.getString("AgentGroupDataUpdate"); 2022 _PREHASH_AgentGroupDataUpdate = gMessageStringTable.getString("AgentGroupDataUpdate");
2026 _PREHASH_Left = gMessageStringTable.getString("Left"); 2023 _PREHASH_Left = gMessageStringTable.getString("Left");
2027 _PREHASH_Mask = gMessageStringTable.getString("Mask"); 2024 _PREHASH_Mask = gMessageStringTable.getString("Mask");
@@ -2149,7 +2146,6 @@ void init_prehash_data()
2149 _PREHASH_RegionHandle = gMessageStringTable.getString("RegionHandle"); 2146 _PREHASH_RegionHandle = gMessageStringTable.getString("RegionHandle");
2150 _PREHASH_TeleportProgress = gMessageStringTable.getString("TeleportProgress"); 2147 _PREHASH_TeleportProgress = gMessageStringTable.getString("TeleportProgress");
2151 _PREHASH_AgentQuitCopy = gMessageStringTable.getString("AgentQuitCopy"); 2148 _PREHASH_AgentQuitCopy = gMessageStringTable.getString("AgentQuitCopy");
2152 _PREHASH_ToViewer = gMessageStringTable.getString("ToViewer");
2153 _PREHASH_AvatarInterestsUpdate = gMessageStringTable.getString("AvatarInterestsUpdate"); 2149 _PREHASH_AvatarInterestsUpdate = gMessageStringTable.getString("AvatarInterestsUpdate");
2154 _PREHASH_GroupNoticeID = gMessageStringTable.getString("GroupNoticeID"); 2150 _PREHASH_GroupNoticeID = gMessageStringTable.getString("GroupNoticeID");
2155 _PREHASH_ParcelName = gMessageStringTable.getString("ParcelName"); 2151 _PREHASH_ParcelName = gMessageStringTable.getString("ParcelName");
@@ -2208,6 +2204,7 @@ void init_prehash_data()
2208 _PREHASH_FeatureDisabled = gMessageStringTable.getString("FeatureDisabled"); 2204 _PREHASH_FeatureDisabled = gMessageStringTable.getString("FeatureDisabled");
2209 _PREHASH_ObjectLocalID = gMessageStringTable.getString("ObjectLocalID"); 2205 _PREHASH_ObjectLocalID = gMessageStringTable.getString("ObjectLocalID");
2210 _PREHASH_Dropped = gMessageStringTable.getString("Dropped"); 2206 _PREHASH_Dropped = gMessageStringTable.getString("Dropped");
2207 _PREHASH_PhysicalAvatarEventList = gMessageStringTable.getString("PhysicalAvatarEventList");
2211 _PREHASH_WebProfilesDisabled = gMessageStringTable.getString("WebProfilesDisabled"); 2208 _PREHASH_WebProfilesDisabled = gMessageStringTable.getString("WebProfilesDisabled");
2212 _PREHASH_Destination = gMessageStringTable.getString("Destination"); 2209 _PREHASH_Destination = gMessageStringTable.getString("Destination");
2213 _PREHASH_MasterID = gMessageStringTable.getString("MasterID"); 2210 _PREHASH_MasterID = gMessageStringTable.getString("MasterID");
@@ -2481,7 +2478,6 @@ void init_prehash_data()
2481 _PREHASH_CacheMissType = gMessageStringTable.getString("CacheMissType"); 2478 _PREHASH_CacheMissType = gMessageStringTable.getString("CacheMissType");
2482 _PREHASH_VFileID = gMessageStringTable.getString("VFileID"); 2479 _PREHASH_VFileID = gMessageStringTable.getString("VFileID");
2483 _PREHASH_GroupInsigniaID = gMessageStringTable.getString("GroupInsigniaID"); 2480 _PREHASH_GroupInsigniaID = gMessageStringTable.getString("GroupInsigniaID");
2484 _PREHASH_FromID = gMessageStringTable.getString("FromID");
2485 _PREHASH_Online = gMessageStringTable.getString("Online"); 2481 _PREHASH_Online = gMessageStringTable.getString("Online");
2486 _PREHASH_KickFlags = gMessageStringTable.getString("KickFlags"); 2482 _PREHASH_KickFlags = gMessageStringTable.getString("KickFlags");
2487 _PREHASH_CovenantID = gMessageStringTable.getString("CovenantID"); 2483 _PREHASH_CovenantID = gMessageStringTable.getString("CovenantID");
@@ -2665,7 +2661,6 @@ void init_prehash_data()
2665 _PREHASH_Final = gMessageStringTable.getString("Final"); 2661 _PREHASH_Final = gMessageStringTable.getString("Final");
2666 _PREHASH_TelehubPos = gMessageStringTable.getString("TelehubPos"); 2662 _PREHASH_TelehubPos = gMessageStringTable.getString("TelehubPos");
2667 _PREHASH_ReportAutosaveCrash = gMessageStringTable.getString("ReportAutosaveCrash"); 2663 _PREHASH_ReportAutosaveCrash = gMessageStringTable.getString("ReportAutosaveCrash");
2668 _PREHASH_Reset = gMessageStringTable.getString("Reset");
2669 _PREHASH_CreateTrustedCircuit = gMessageStringTable.getString("CreateTrustedCircuit"); 2664 _PREHASH_CreateTrustedCircuit = gMessageStringTable.getString("CreateTrustedCircuit");
2670 _PREHASH_DenyTrustedCircuit = gMessageStringTable.getString("DenyTrustedCircuit"); 2665 _PREHASH_DenyTrustedCircuit = gMessageStringTable.getString("DenyTrustedCircuit");
2671 _PREHASH_RequestTrustedCircuit = gMessageStringTable.getString("RequestTrustedCircuit"); 2666 _PREHASH_RequestTrustedCircuit = gMessageStringTable.getString("RequestTrustedCircuit");
@@ -2848,7 +2843,6 @@ void init_prehash_data()
2848 _PREHASH_HeaderData = gMessageStringTable.getString("HeaderData"); 2843 _PREHASH_HeaderData = gMessageStringTable.getString("HeaderData");
2849 _PREHASH_RequestMultipleObjects = gMessageStringTable.getString("RequestMultipleObjects"); 2844 _PREHASH_RequestMultipleObjects = gMessageStringTable.getString("RequestMultipleObjects");
2850 _PREHASH_RetrieveInstantMessages = gMessageStringTable.getString("RetrieveInstantMessages"); 2845 _PREHASH_RetrieveInstantMessages = gMessageStringTable.getString("RetrieveInstantMessages");
2851 _PREHASH_DequeueInstantMessages = gMessageStringTable.getString("DequeueInstantMessages");
2852 _PREHASH_OpenCircuit = gMessageStringTable.getString("OpenCircuit"); 2846 _PREHASH_OpenCircuit = gMessageStringTable.getString("OpenCircuit");
2853 _PREHASH_SecureSessionID = gMessageStringTable.getString("SecureSessionID"); 2847 _PREHASH_SecureSessionID = gMessageStringTable.getString("SecureSessionID");
2854 _PREHASH_CrossedRegion = gMessageStringTable.getString("CrossedRegion"); 2848 _PREHASH_CrossedRegion = gMessageStringTable.getString("CrossedRegion");
diff --git a/linden/indra/llmessage/message_prehash.h b/linden/indra/llmessage/message_prehash.h
index 84c769e..06a8a9c 100644
--- a/linden/indra/llmessage/message_prehash.h
+++ b/linden/indra/llmessage/message_prehash.h
@@ -554,8 +554,8 @@ extern char * _PREHASH_ReturnIDs;
554extern char * _PREHASH_Date; 554extern char * _PREHASH_Date;
555extern char * _PREHASH_AgentWearablesUpdate; 555extern char * _PREHASH_AgentWearablesUpdate;
556extern char * _PREHASH_AgentDataUpdate; 556extern char * _PREHASH_AgentDataUpdate;
557extern char * _PREHASH_Hash;
558extern char * _PREHASH_GroupDataUpdate; 557extern char * _PREHASH_GroupDataUpdate;
558extern char * _PREHASH_Hash;
559extern char * _PREHASH_AgentGroupDataUpdate; 559extern char * _PREHASH_AgentGroupDataUpdate;
560extern char * _PREHASH_Left; 560extern char * _PREHASH_Left;
561extern char * _PREHASH_Mask; 561extern char * _PREHASH_Mask;
@@ -683,7 +683,6 @@ extern char * _PREHASH_CreateNewOutfitAttachments;
683extern char * _PREHASH_RegionHandle; 683extern char * _PREHASH_RegionHandle;
684extern char * _PREHASH_TeleportProgress; 684extern char * _PREHASH_TeleportProgress;
685extern char * _PREHASH_AgentQuitCopy; 685extern char * _PREHASH_AgentQuitCopy;
686extern char * _PREHASH_ToViewer;
687extern char * _PREHASH_AvatarInterestsUpdate; 686extern char * _PREHASH_AvatarInterestsUpdate;
688extern char * _PREHASH_GroupNoticeID; 687extern char * _PREHASH_GroupNoticeID;
689extern char * _PREHASH_ParcelName; 688extern char * _PREHASH_ParcelName;
@@ -742,6 +741,7 @@ extern char * _PREHASH_LogoutReply;
742extern char * _PREHASH_FeatureDisabled; 741extern char * _PREHASH_FeatureDisabled;
743extern char * _PREHASH_ObjectLocalID; 742extern char * _PREHASH_ObjectLocalID;
744extern char * _PREHASH_Dropped; 743extern char * _PREHASH_Dropped;
744extern char * _PREHASH_PhysicalAvatarEventList;
745extern char * _PREHASH_WebProfilesDisabled; 745extern char * _PREHASH_WebProfilesDisabled;
746extern char * _PREHASH_Destination; 746extern char * _PREHASH_Destination;
747extern char * _PREHASH_MasterID; 747extern char * _PREHASH_MasterID;
@@ -1015,7 +1015,6 @@ extern char * _PREHASH_TrackAgentSession;
1015extern char * _PREHASH_CacheMissType; 1015extern char * _PREHASH_CacheMissType;
1016extern char * _PREHASH_VFileID; 1016extern char * _PREHASH_VFileID;
1017extern char * _PREHASH_GroupInsigniaID; 1017extern char * _PREHASH_GroupInsigniaID;
1018extern char * _PREHASH_FromID;
1019extern char * _PREHASH_Online; 1018extern char * _PREHASH_Online;
1020extern char * _PREHASH_KickFlags; 1019extern char * _PREHASH_KickFlags;
1021extern char * _PREHASH_CovenantID; 1020extern char * _PREHASH_CovenantID;
@@ -1199,7 +1198,6 @@ extern char * _PREHASH_EventData;
1199extern char * _PREHASH_Final; 1198extern char * _PREHASH_Final;
1200extern char * _PREHASH_TelehubPos; 1199extern char * _PREHASH_TelehubPos;
1201extern char * _PREHASH_ReportAutosaveCrash; 1200extern char * _PREHASH_ReportAutosaveCrash;
1202extern char * _PREHASH_Reset;
1203extern char * _PREHASH_CreateTrustedCircuit; 1201extern char * _PREHASH_CreateTrustedCircuit;
1204extern char * _PREHASH_DenyTrustedCircuit; 1202extern char * _PREHASH_DenyTrustedCircuit;
1205extern char * _PREHASH_RequestTrustedCircuit; 1203extern char * _PREHASH_RequestTrustedCircuit;
@@ -1382,7 +1380,6 @@ extern char * _PREHASH_SimulatorPublicHostBlock;
1382extern char * _PREHASH_HeaderData; 1380extern char * _PREHASH_HeaderData;
1383extern char * _PREHASH_RequestMultipleObjects; 1381extern char * _PREHASH_RequestMultipleObjects;
1384extern char * _PREHASH_RetrieveInstantMessages; 1382extern char * _PREHASH_RetrieveInstantMessages;
1385extern char * _PREHASH_DequeueInstantMessages;
1386extern char * _PREHASH_OpenCircuit; 1383extern char * _PREHASH_OpenCircuit;
1387extern char * _PREHASH_SecureSessionID; 1384extern char * _PREHASH_SecureSessionID;
1388extern char * _PREHASH_CrossedRegion; 1385extern char * _PREHASH_CrossedRegion;
diff --git a/linden/indra/llprimitive/llprimitive.cpp b/linden/indra/llprimitive/llprimitive.cpp
index 9ab44f7..1dfc570 100644
--- a/linden/indra/llprimitive/llprimitive.cpp
+++ b/linden/indra/llprimitive/llprimitive.cpp
@@ -107,6 +107,9 @@ const BOOL FLEXIBLE_OBJECT_DEFAULT_USING_COLLISION_SPHERE = FALSE;
107const BOOL FLEXIBLE_OBJECT_DEFAULT_RENDERING_COLLISION_SPHERE = FALSE; 107const BOOL FLEXIBLE_OBJECT_DEFAULT_RENDERING_COLLISION_SPHERE = FALSE;
108 108
109 109
110const char *SCULPT_DEFAULT_TEXTURE = "be293869-d0d9-0a69-5989-ad27f1946fd4"; // old inverted texture: "7595d345-a24c-e7ef-f0bd-78793792133e";
111
112
110//=============================================================== 113//===============================================================
111LLPrimitive::LLPrimitive() 114LLPrimitive::LLPrimitive()
112{ 115{
@@ -511,6 +514,18 @@ S32 LLPrimitive::setTEMediaFlags(const U8 te, const U8 media_flags)
511 return mTextureList[te].setMediaFlags( media_flags ); 514 return mTextureList[te].setMediaFlags( media_flags );
512} 515}
513 516
517S32 LLPrimitive::setTEGlow(const U8 te, const F32 glow)
518{
519 // if we're asking for a non-existent face, return null
520 if (te >= mNumTEs)
521 {
522 llwarns << "setting non-existent te " << te << llendl
523 return 0;
524 }
525
526 return mTextureList[te].setGlow( glow );
527}
528
514 529
515LLPCode LLPrimitive::legacyToPCode(const U8 legacy) 530LLPCode LLPrimitive::legacyToPCode(const U8 legacy)
516{ 531{
@@ -1292,7 +1307,8 @@ BOOL LLPrimitive::packTEMessage(LLMessageSystem *mesgsys) const
1292 S16 image_rot[MAX_TES]; 1307 S16 image_rot[MAX_TES];
1293 U8 bump[MAX_TES]; 1308 U8 bump[MAX_TES];
1294 U8 media_flags[MAX_TES]; 1309 U8 media_flags[MAX_TES];
1295 1310 U8 glow[MAX_TES];
1311
1296 const U32 MAX_TE_BUFFER = 4096; 1312 const U32 MAX_TE_BUFFER = 4096;
1297 U8 packed_buffer[MAX_TE_BUFFER]; 1313 U8 packed_buffer[MAX_TE_BUFFER];
1298 U8 *cur_ptr = packed_buffer; 1314 U8 *cur_ptr = packed_buffer;
@@ -1328,7 +1344,7 @@ BOOL LLPrimitive::packTEMessage(LLMessageSystem *mesgsys) const
1328 image_rot[face_index] = (S16) llround(((fmod(te->mRotation, F_TWO_PI)/F_TWO_PI) * (F32)0x7FFF)); 1344 image_rot[face_index] = (S16) llround(((fmod(te->mRotation, F_TWO_PI)/F_TWO_PI) * (F32)0x7FFF));
1329 bump[face_index] = te->getBumpShinyFullbright(); 1345 bump[face_index] = te->getBumpShinyFullbright();
1330 media_flags[face_index] = te->getMediaTexGen(); 1346 media_flags[face_index] = te->getMediaTexGen();
1331// llinfos << "BUMP pack [" << (S32)face_index << "]=" << (S32) bump[face_index] << llendl; 1347 glow[face_index] = (U8) llround((llclamp(te->getGlow(), 0.0f, 1.0f) * (F32)0xFF));
1332 } 1348 }
1333 1349
1334 cur_ptr += packTEField(cur_ptr, (U8 *)image_ids, sizeof(LLUUID),last_face_index, MVT_LLUUID); 1350 cur_ptr += packTEField(cur_ptr, (U8 *)image_ids, sizeof(LLUUID),last_face_index, MVT_LLUUID);
@@ -1348,6 +1364,8 @@ BOOL LLPrimitive::packTEMessage(LLMessageSystem *mesgsys) const
1348 cur_ptr += packTEField(cur_ptr, (U8 *)bump, 1 ,last_face_index, MVT_U8); 1364 cur_ptr += packTEField(cur_ptr, (U8 *)bump, 1 ,last_face_index, MVT_U8);
1349 *cur_ptr++ = 0; 1365 *cur_ptr++ = 0;
1350 cur_ptr += packTEField(cur_ptr, (U8 *)media_flags, 1 ,last_face_index, MVT_U8); 1366 cur_ptr += packTEField(cur_ptr, (U8 *)media_flags, 1 ,last_face_index, MVT_U8);
1367 *cur_ptr++ = 0;
1368 cur_ptr += packTEField(cur_ptr, (U8 *)glow, 1 ,last_face_index, MVT_U8);
1351 } 1369 }
1352 mesgsys->addBinaryDataFast(_PREHASH_TextureEntry, packed_buffer, (S32)(cur_ptr - packed_buffer)); 1370 mesgsys->addBinaryDataFast(_PREHASH_TextureEntry, packed_buffer, (S32)(cur_ptr - packed_buffer));
1353 1371
@@ -1368,7 +1386,8 @@ BOOL LLPrimitive::packTEMessage(LLDataPacker &dp) const
1368 S16 image_rot[MAX_TES]; 1386 S16 image_rot[MAX_TES];
1369 U8 bump[MAX_TES]; 1387 U8 bump[MAX_TES];
1370 U8 media_flags[MAX_TES]; 1388 U8 media_flags[MAX_TES];
1371 1389 U8 glow[MAX_TES];
1390
1372 const U32 MAX_TE_BUFFER = 4096; 1391 const U32 MAX_TE_BUFFER = 4096;
1373 U8 packed_buffer[MAX_TE_BUFFER]; 1392 U8 packed_buffer[MAX_TE_BUFFER];
1374 U8 *cur_ptr = packed_buffer; 1393 U8 *cur_ptr = packed_buffer;
@@ -1404,8 +1423,7 @@ BOOL LLPrimitive::packTEMessage(LLDataPacker &dp) const
1404 image_rot[face_index] = (S16) llround(((fmod(te->mRotation, F_TWO_PI)/F_TWO_PI) * (F32)0x7FFF)); 1423 image_rot[face_index] = (S16) llround(((fmod(te->mRotation, F_TWO_PI)/F_TWO_PI) * (F32)0x7FFF));
1405 bump[face_index] = te->getBumpShinyFullbright(); 1424 bump[face_index] = te->getBumpShinyFullbright();
1406 media_flags[face_index] = te->getMediaTexGen(); 1425 media_flags[face_index] = te->getMediaTexGen();
1407 1426 glow[face_index] = (U8) llround((llclamp(te->getGlow(), 0.0f, 1.0f) * (F32)0xFF));
1408// llinfos << "BUMP pack (Datapacker) [" << (S32)face_index << "]=" << (S32) bump[face_index] << llendl;
1409 } 1427 }
1410 1428
1411 cur_ptr += packTEField(cur_ptr, (U8 *)image_ids, sizeof(LLUUID),last_face_index, MVT_LLUUID); 1429 cur_ptr += packTEField(cur_ptr, (U8 *)image_ids, sizeof(LLUUID),last_face_index, MVT_LLUUID);
@@ -1425,6 +1443,8 @@ BOOL LLPrimitive::packTEMessage(LLDataPacker &dp) const
1425 cur_ptr += packTEField(cur_ptr, (U8 *)bump, 1 ,last_face_index, MVT_U8); 1443 cur_ptr += packTEField(cur_ptr, (U8 *)bump, 1 ,last_face_index, MVT_U8);
1426 *cur_ptr++ = 0; 1444 *cur_ptr++ = 0;
1427 cur_ptr += packTEField(cur_ptr, (U8 *)media_flags, 1 ,last_face_index, MVT_U8); 1445 cur_ptr += packTEField(cur_ptr, (U8 *)media_flags, 1 ,last_face_index, MVT_U8);
1446 *cur_ptr++ = 0;
1447 cur_ptr += packTEField(cur_ptr, (U8 *)glow, 1 ,last_face_index, MVT_U8);
1428 } 1448 }
1429 1449
1430 dp.packBinaryData(packed_buffer, (S32)(cur_ptr - packed_buffer), "TextureEntry"); 1450 dp.packBinaryData(packed_buffer, (S32)(cur_ptr - packed_buffer), "TextureEntry");
@@ -1453,7 +1473,8 @@ S32 LLPrimitive::unpackTEMessage(LLMessageSystem *mesgsys, char *block_name, con
1453 S16 image_rot[MAX_TES]; 1473 S16 image_rot[MAX_TES];
1454 U8 bump[MAX_TES]; 1474 U8 bump[MAX_TES];
1455 U8 media_flags[MAX_TES]; 1475 U8 media_flags[MAX_TES];
1456 1476 U8 glow[MAX_TES];
1477
1457 const U32 MAX_TE_BUFFER = 4096; 1478 const U32 MAX_TE_BUFFER = 4096;
1458 U8 packed_buffer[MAX_TE_BUFFER]; 1479 U8 packed_buffer[MAX_TE_BUFFER];
1459 U8 *cur_ptr = packed_buffer; 1480 U8 *cur_ptr = packed_buffer;
@@ -1503,7 +1524,9 @@ S32 LLPrimitive::unpackTEMessage(LLMessageSystem *mesgsys, char *block_name, con
1503 cur_ptr += unpackTEField(cur_ptr, packed_buffer+size, (U8 *)bump, 1, face_count, MVT_U8); 1524 cur_ptr += unpackTEField(cur_ptr, packed_buffer+size, (U8 *)bump, 1, face_count, MVT_U8);
1504 cur_ptr++; 1525 cur_ptr++;
1505 cur_ptr += unpackTEField(cur_ptr, packed_buffer+size, (U8 *)media_flags, 1, face_count, MVT_U8); 1526 cur_ptr += unpackTEField(cur_ptr, packed_buffer+size, (U8 *)media_flags, 1, face_count, MVT_U8);
1506 1527 cur_ptr++;
1528 cur_ptr += unpackTEField(cur_ptr, packed_buffer+size, (U8 *)glow, 1, face_count, MVT_U8);
1529
1507 LLColor4 color; 1530 LLColor4 color;
1508 LLColor4U coloru; 1531 LLColor4U coloru;
1509 for (U32 i = 0; i < face_count; i++) 1532 for (U32 i = 0; i < face_count; i++)
@@ -1514,6 +1537,7 @@ S32 LLPrimitive::unpackTEMessage(LLMessageSystem *mesgsys, char *block_name, con
1514 retval |= setTERotation(i, ((F32)image_rot[i]/ (F32)0x7FFF) * F_TWO_PI); 1537 retval |= setTERotation(i, ((F32)image_rot[i]/ (F32)0x7FFF) * F_TWO_PI);
1515 retval |= setTEBumpShinyFullbright(i, bump[i]); 1538 retval |= setTEBumpShinyFullbright(i, bump[i]);
1516 retval |= setTEMediaTexGen(i, media_flags[i]); 1539 retval |= setTEMediaTexGen(i, media_flags[i]);
1540 retval |= setTEGlow(i, (F32)glow[i] / (F32)0xFF);
1517 coloru = LLColor4U(colors + 4*i); 1541 coloru = LLColor4U(colors + 4*i);
1518 1542
1519 // Note: This is an optimization to send common colors (1.f, 1.f, 1.f, 1.f) 1543 // Note: This is an optimization to send common colors (1.f, 1.f, 1.f, 1.f)
@@ -1548,6 +1572,7 @@ S32 LLPrimitive::unpackTEMessage(LLDataPacker &dp)
1548 S16 image_rot[MAX_TES]; 1572 S16 image_rot[MAX_TES];
1549 U8 bump[MAX_TES]; 1573 U8 bump[MAX_TES];
1550 U8 media_flags[MAX_TES]; 1574 U8 media_flags[MAX_TES];
1575 U8 glow[MAX_TES];
1551 1576
1552 const U32 MAX_TE_BUFFER = 4096; 1577 const U32 MAX_TE_BUFFER = 4096;
1553 U8 packed_buffer[MAX_TE_BUFFER]; 1578 U8 packed_buffer[MAX_TE_BUFFER];
@@ -1588,10 +1613,11 @@ S32 LLPrimitive::unpackTEMessage(LLDataPacker &dp)
1588 cur_ptr += unpackTEField(cur_ptr, packed_buffer+size, (U8 *)bump, 1, face_count, MVT_U8); 1613 cur_ptr += unpackTEField(cur_ptr, packed_buffer+size, (U8 *)bump, 1, face_count, MVT_U8);
1589 cur_ptr++; 1614 cur_ptr++;
1590 cur_ptr += unpackTEField(cur_ptr, packed_buffer+size, (U8 *)media_flags, 1, face_count, MVT_U8); 1615 cur_ptr += unpackTEField(cur_ptr, packed_buffer+size, (U8 *)media_flags, 1, face_count, MVT_U8);
1616 cur_ptr++;
1617 cur_ptr += unpackTEField(cur_ptr, packed_buffer+size, (U8 *)glow, 1, face_count, MVT_U8);
1591 1618
1592 for (i = 0; i < face_count; i++) 1619 for (i = 0; i < face_count; i++)
1593 { 1620 {
1594// llinfos << "BUMP unpack (Datapacker) [" << i << "]=" << S32(bump[i]) <<llendl;
1595 memcpy(image_ids[i].mData,&image_data[i*16],16); /* Flawfinder: ignore */ 1621 memcpy(image_ids[i].mData,&image_data[i*16],16); /* Flawfinder: ignore */
1596 } 1622 }
1597 1623
@@ -1605,6 +1631,7 @@ S32 LLPrimitive::unpackTEMessage(LLDataPacker &dp)
1605 retval |= setTERotation(i, ((F32)image_rot[i]/ (F32)0x7FFF) * F_TWO_PI); 1631 retval |= setTERotation(i, ((F32)image_rot[i]/ (F32)0x7FFF) * F_TWO_PI);
1606 retval |= setTEBumpShinyFullbright(i, bump[i]); 1632 retval |= setTEBumpShinyFullbright(i, bump[i]);
1607 retval |= setTEMediaTexGen(i, media_flags[i]); 1633 retval |= setTEMediaTexGen(i, media_flags[i]);
1634 retval |= setTEGlow(i, (F32)glow[i] / (F32)0xFF);
1608 coloru = LLColor4U(colors + 4*i); 1635 coloru = LLColor4U(colors + 4*i);
1609 1636
1610 // Note: This is an optimization to send common colors (1.f, 1.f, 1.f, 1.f) 1637 // Note: This is an optimization to send common colors (1.f, 1.f, 1.f, 1.f)
@@ -1641,6 +1668,8 @@ BOOL LLNetworkData::isValid(U16 param_type, U32 size)
1641 return (size == 16); 1668 return (size == 16);
1642 case PARAMS_LIGHT: 1669 case PARAMS_LIGHT:
1643 return (size == 16); 1670 return (size == 16);
1671 case PARAMS_SCULPT:
1672 return (size == 17);
1644 } 1673 }
1645 1674
1646 return FALSE; 1675 return FALSE;
@@ -1796,3 +1825,55 @@ void LLFlexibleObjectData::copy(const LLNetworkData& data)
1796 //mUsingCollisionSphere = flex_data->mUsingCollisionSphere; 1825 //mUsingCollisionSphere = flex_data->mUsingCollisionSphere;
1797 //mRenderingCollisionSphere = flex_data->mRenderingCollisionSphere; 1826 //mRenderingCollisionSphere = flex_data->mRenderingCollisionSphere;
1798} 1827}
1828
1829
1830//============================================================================
1831
1832LLSculptParams::LLSculptParams()
1833{
1834 mType = PARAMS_SCULPT;
1835 mSculptTexture.set(SCULPT_DEFAULT_TEXTURE);
1836 mSculptType = LL_SCULPT_TYPE_SPHERE;
1837}
1838
1839BOOL LLSculptParams::pack(LLDataPacker &dp) const
1840{
1841 dp.packUUID(mSculptTexture, "texture");
1842 dp.packU8(mSculptType, "type");
1843
1844 return TRUE;
1845}
1846
1847BOOL LLSculptParams::unpack(LLDataPacker &dp)
1848{
1849 dp.unpackUUID(mSculptTexture, "texture");
1850 dp.unpackU8(mSculptType, "type");
1851
1852 return TRUE;
1853}
1854
1855bool LLSculptParams::operator==(const LLNetworkData& data) const
1856{
1857 if (data.mType != PARAMS_SCULPT)
1858 {
1859 return false;
1860 }
1861
1862 const LLSculptParams *param = (const LLSculptParams*)&data;
1863 if ( (param->mSculptTexture != mSculptTexture) ||
1864 (param->mSculptType != mSculptType) )
1865
1866 {
1867 return false;
1868 }
1869
1870 return true;
1871}
1872
1873void LLSculptParams::copy(const LLNetworkData& data)
1874{
1875 const LLSculptParams *param = (LLSculptParams*)&data;
1876 mSculptTexture = param->mSculptTexture;
1877 mSculptType = param->mSculptType;
1878}
1879
diff --git a/linden/indra/llprimitive/llprimitive.h b/linden/indra/llprimitive/llprimitive.h
index 89e6623..29cd09f 100644
--- a/linden/indra/llprimitive/llprimitive.h
+++ b/linden/indra/llprimitive/llprimitive.h
@@ -88,6 +88,7 @@ extern const F32 OBJECT_REV_MIN;
88extern const F32 OBJECT_REV_MAX; 88extern const F32 OBJECT_REV_MAX;
89extern const F32 OBJECT_REV_INC; 89extern const F32 OBJECT_REV_INC;
90 90
91extern const char *SCULPT_DEFAULT_TEXTURE;
91 92
92//============================================================================ 93//============================================================================
93 94
@@ -99,7 +100,8 @@ public:
99 enum 100 enum
100 { 101 {
101 PARAMS_FLEXIBLE = 0x10, 102 PARAMS_FLEXIBLE = 0x10,
102 PARAMS_LIGHT = 0x20 103 PARAMS_LIGHT = 0x20,
104 PARAMS_SCULPT = 0x30
103 }; 105 };
104 106
105public: 107public:
@@ -226,6 +228,29 @@ public:
226 void copy(const LLNetworkData& data); 228 void copy(const LLNetworkData& data);
227};// end of attributes structure 229};// end of attributes structure
228 230
231
232
233class LLSculptParams : public LLNetworkData
234{
235protected:
236 LLUUID mSculptTexture;
237 U8 mSculptType;
238
239public:
240 LLSculptParams();
241 /*virtual*/ BOOL pack(LLDataPacker &dp) const;
242 /*virtual*/ BOOL unpack(LLDataPacker &dp);
243 /*virtual*/ bool operator==(const LLNetworkData& data) const;
244 /*virtual*/ void copy(const LLNetworkData& data);
245
246 void setSculptTexture(const LLUUID& id) { mSculptTexture = id; }
247 LLUUID getSculptTexture() { return mSculptTexture; }
248 void setSculptType(U8 type) { mSculptType = type; }
249 U8 getSculptType() { return mSculptType; }
250};
251
252
253
229class LLPrimitive : public LLXform 254class LLPrimitive : public LLXform
230{ 255{
231public: 256public:
@@ -266,6 +291,7 @@ public:
266 virtual S32 setTEShiny(const U8 te, const U8 shiny); 291 virtual S32 setTEShiny(const U8 te, const U8 shiny);
267 virtual S32 setTEFullbright(const U8 te, const U8 fullbright); 292 virtual S32 setTEFullbright(const U8 te, const U8 fullbright);
268 virtual S32 setTEMediaFlags(const U8 te, const U8 flags); 293 virtual S32 setTEMediaFlags(const U8 te, const U8 flags);
294 virtual S32 setTEGlow(const U8 te, const F32 glow);
269 virtual BOOL setMaterial(const U8 material); // returns TRUE if material changed 295 virtual BOOL setMaterial(const U8 material); // returns TRUE if material changed
270 296
271 void setTEArrays(const U8 size, 297 void setTEArrays(const U8 size,
diff --git a/linden/indra/llprimitive/lltextureentry.cpp b/linden/indra/llprimitive/lltextureentry.cpp
index 81bfd6f..4f329f2 100644
--- a/linden/indra/llprimitive/lltextureentry.cpp
+++ b/linden/indra/llprimitive/lltextureentry.cpp
@@ -57,6 +57,7 @@ LLTextureEntry::LLTextureEntry(const LLTextureEntry &rhs)
57 mColor = rhs.mColor; 57 mColor = rhs.mColor;
58 mBump = rhs.mBump; 58 mBump = rhs.mBump;
59 mMediaFlags = rhs.mMediaFlags; 59 mMediaFlags = rhs.mMediaFlags;
60 mGlow = rhs.mGlow;
60} 61}
61 62
62LLTextureEntry &LLTextureEntry::operator=(const LLTextureEntry &rhs) 63LLTextureEntry &LLTextureEntry::operator=(const LLTextureEntry &rhs)
@@ -72,6 +73,7 @@ LLTextureEntry &LLTextureEntry::operator=(const LLTextureEntry &rhs)
72 mColor = rhs.mColor; 73 mColor = rhs.mColor;
73 mBump = rhs.mBump; 74 mBump = rhs.mBump;
74 mMediaFlags = rhs.mMediaFlags; 75 mMediaFlags = rhs.mMediaFlags;
76 mGlow = rhs.mGlow;
75 } 77 }
76 78
77 return *this; 79 return *this;
@@ -88,7 +90,8 @@ void LLTextureEntry::init(const LLUUID& tex_id, F32 scale_s, F32 scale_t, F32 of
88 mRotation = rotation; 90 mRotation = rotation;
89 mBump = bump; 91 mBump = bump;
90 mMediaFlags = 0x0; 92 mMediaFlags = 0x0;
91 93 mGlow = 0;
94
92 setColor(LLColor4(1.f, 1.f, 1.f, 1.f)); 95 setColor(LLColor4(1.f, 1.f, 1.f, 1.f));
93} 96}
94 97
@@ -366,3 +369,13 @@ S32 LLTextureEntry::setTexGen(U8 tex_gen)
366 return 0; 369 return 0;
367} 370}
368 371
372S32 LLTextureEntry::setGlow(F32 glow)
373{
374 if (mGlow != glow)
375 {
376 mGlow = glow;
377 return TEM_CHANGE_TEXTURE;
378 }
379 return 0;
380}
381
diff --git a/linden/indra/llprimitive/lltextureentry.h b/linden/indra/llprimitive/lltextureentry.h
index 861b585..c1f355b 100644
--- a/linden/indra/llprimitive/lltextureentry.h
+++ b/linden/indra/llprimitive/lltextureentry.h
@@ -107,7 +107,8 @@ public:
107 S32 setMediaFlags(U8 media_flags); 107 S32 setMediaFlags(U8 media_flags);
108 S32 setTexGen(U8 texGen); 108 S32 setTexGen(U8 texGen);
109 S32 setMediaTexGen(U8 media); 109 S32 setMediaTexGen(U8 media);
110 110 S32 setGlow(F32 glow);
111
111 const LLUUID &getID() const { return mID; } 112 const LLUUID &getID() const { return mID; }
112 const LLColor4 &getColor() const { return mColor; } 113 const LLColor4 &getColor() const { return mColor; }
113 void getScale(F32 *s, F32 *t) const { *s = mScaleS; *t = mScaleT; } 114 void getScale(F32 *s, F32 *t) const { *s = mScaleS; *t = mScaleT; }
@@ -124,7 +125,8 @@ public:
124 U8 getMediaFlags() const { return mMediaFlags & TEM_MEDIA_MASK; } 125 U8 getMediaFlags() const { return mMediaFlags & TEM_MEDIA_MASK; }
125 U8 getTexGen() const { return mMediaFlags & TEM_TEX_GEN_MASK; } 126 U8 getTexGen() const { return mMediaFlags & TEM_TEX_GEN_MASK; }
126 U8 getMediaTexGen() const { return mMediaFlags; } 127 U8 getMediaTexGen() const { return mMediaFlags; }
127 128 F32 getGlow() const { return mGlow; }
129
128 // Media flags 130 // Media flags
129 enum { MF_NONE = 0x0, MF_WEB_PAGE = 0x1 }; 131 enum { MF_NONE = 0x0, MF_WEB_PAGE = 0x1 };
130 132
@@ -141,6 +143,8 @@ protected:
141 LLColor4 mColor; 143 LLColor4 mColor;
142 U8 mBump; // Bump map, shiny, and fullbright 144 U8 mBump; // Bump map, shiny, and fullbright
143 U8 mMediaFlags; // replace with web page, movie, etc. 145 U8 mMediaFlags; // replace with web page, movie, etc.
146 F32 mGlow;
147
144}; 148};
145 149
146#endif 150#endif
diff --git a/linden/indra/llui/lldraghandle.cpp b/linden/indra/llui/lldraghandle.cpp
index a3d28ad..3497f0d 100644
--- a/linden/indra/llui/lldraghandle.cpp
+++ b/linden/indra/llui/lldraghandle.cpp
@@ -328,7 +328,12 @@ BOOL LLDragHandle::handleHover(S32 x, S32 y, MASK mask)
328 // Resize the parent 328 // Resize the parent
329 S32 delta_x = screen_x - mDragLastScreenX; 329 S32 delta_x = screen_x - mDragLastScreenX;
330 S32 delta_y = screen_y - mDragLastScreenY; 330 S32 delta_y = screen_y - mDragLastScreenY;
331 getParent()->translate(delta_x, delta_y); 331
332 LLRect original_rect = getParent()->getRect();
333 LLRect translated_rect = getParent()->getRect();
334 translated_rect.translate(delta_x, delta_y);
335 // temporarily slam dragged window to new position
336 getParent()->setRect(translated_rect);
332 S32 pre_snap_x = getParent()->getRect().mLeft; 337 S32 pre_snap_x = getParent()->getRect().mLeft;
333 S32 pre_snap_y = getParent()->getRect().mBottom; 338 S32 pre_snap_y = getParent()->getRect().mBottom;
334 mDragLastScreenX = screen_x; 339 mDragLastScreenX = screen_x;
@@ -348,7 +353,12 @@ BOOL LLDragHandle::handleHover(S32 x, S32 y, MASK mask)
348 getParent()->snappedTo(snap_view); 353 getParent()->snappedTo(snap_view);
349 delta_x = new_rect.mLeft - pre_snap_x; 354 delta_x = new_rect.mLeft - pre_snap_x;
350 delta_y = new_rect.mBottom - pre_snap_y; 355 delta_y = new_rect.mBottom - pre_snap_y;
351 getParent()->translate(delta_x, delta_y); 356 translated_rect.translate(delta_x, delta_y);
357
358 // restore original rect so delta are detected, then call user reshape method to handle snapped floaters, etc
359 getParent()->setRect(original_rect);
360 getParent()->userSetShape(translated_rect);
361
352 mDragLastScreenX += delta_x; 362 mDragLastScreenX += delta_x;
353 mDragLastScreenY += delta_y; 363 mDragLastScreenY += delta_y;
354 364
diff --git a/linden/indra/llui/llfloater.cpp b/linden/indra/llui/llfloater.cpp
index 1613fd7..df44a58 100644
--- a/linden/indra/llui/llfloater.cpp
+++ b/linden/indra/llui/llfloater.cpp
@@ -675,25 +675,6 @@ const LLString& LLFloater::getTitle() const
675 return mDragHandle ? mDragHandle->getTitle() : LLString::null; 675 return mDragHandle ? mDragHandle->getTitle() : LLString::null;
676} 676}
677 677
678void LLFloater::translate(S32 x, S32 y)
679{
680 LLPanel::translate(x, y);
681
682 if (x != 0 || y != 0)
683 {
684 for(handle_set_iter_t dependent_it = mDependents.begin();
685 dependent_it != mDependents.end(); ++dependent_it)
686 {
687 LLFloater* floaterp = LLFloater::getFloaterByHandle(*dependent_it);
688 // is a dependent snapped to us?
689 if (floaterp && floaterp->getSnapTarget() == mViewHandle)
690 {
691 floaterp->translate(x, y);
692 }
693 }
694 }
695}
696
697BOOL LLFloater::canSnapTo(LLView* other_view) 678BOOL LLFloater::canSnapTo(LLView* other_view)
698{ 679{
699 if (NULL == other_view) 680 if (NULL == other_view)
@@ -731,14 +712,13 @@ void LLFloater::snappedTo(LLView* snap_view)
731 } 712 }
732} 713}
733 714
734void LLFloater::reshape(S32 width, S32 height, BOOL called_from_parent) 715void LLFloater::userSetShape(const LLRect& new_rect)
735{ 716{
736 S32 old_width = mRect.getWidth(); 717 LLRect old_rect = mRect;
737 S32 old_height = mRect.getHeight(); 718 LLView::userSetShape(new_rect);
738
739 LLView::reshape(width, height, called_from_parent);
740 719
741 if (width != old_width || height != old_height) 720 // if not minimized, adjust all snapped dependents to new shape
721 if (!isMinimized())
742 { 722 {
743 // gather all snapped dependents 723 // gather all snapped dependents
744 for(handle_set_iter_t dependent_it = mDependents.begin(); 724 for(handle_set_iter_t dependent_it = mDependents.begin();
@@ -750,22 +730,27 @@ void LLFloater::reshape(S32 width, S32 height, BOOL called_from_parent)
750 { 730 {
751 S32 delta_x = 0; 731 S32 delta_x = 0;
752 S32 delta_y = 0; 732 S32 delta_y = 0;
753 // check to see if it snapped to right or top 733 // check to see if it snapped to right or top, and move if dependee floater is resizing
754 LLRect floater_rect = floaterp->getRect(); 734 LLRect dependent_rect = floaterp->getRect();
755 if (floater_rect.mLeft - mRect.mLeft >= old_width || 735 if (dependent_rect.mLeft - mRect.mLeft >= old_rect.getWidth() || // dependent on my right?
756 floater_rect.mRight == mRect.mLeft + old_width) 736 dependent_rect.mRight == mRect.mLeft + old_rect.getWidth()) // dependent aligned with my right
757 { 737 {
758 // was snapped directly onto right side or aligned with it 738 // was snapped directly onto right side or aligned with it
759 delta_x += width - old_width; 739 delta_x += new_rect.getWidth() - old_rect.getWidth();
760 } 740 }
761 if (floater_rect.mBottom - mRect.mBottom >= old_height || 741 if (dependent_rect.mBottom - mRect.mBottom >= old_rect.getHeight() ||
762 floater_rect.mTop == mRect.mBottom + old_height) 742 dependent_rect.mTop == mRect.mBottom + old_rect.getHeight())
763 { 743 {
764 // was snapped directly onto top side or aligned with it 744 // was snapped directly onto top side or aligned with it
765 delta_y += height - old_height; 745 delta_y += new_rect.getHeight() - old_rect.getHeight();
766 } 746 }
767 747
768 floaterp->translate(delta_x, delta_y); 748 // take translation of dependee floater into account as well
749 delta_x += new_rect.mLeft - old_rect.mLeft;
750 delta_y += new_rect.mBottom - old_rect.mBottom;
751
752 dependent_rect.translate(delta_x, delta_y);
753 floaterp->userSetShape(dependent_rect);
769 } 754 }
770 } 755 }
771 } 756 }
@@ -812,28 +797,33 @@ void LLFloater::setMinimized(BOOL minimize)
812 setBorderVisible(TRUE); 797 setBorderVisible(TRUE);
813 798
814 for(handle_set_iter_t dependent_it = mDependents.begin(); 799 for(handle_set_iter_t dependent_it = mDependents.begin();
815 dependent_it != mDependents.end(); ) 800 dependent_it != mDependents.end();
801 ++dependent_it)
816 { 802 {
817 LLFloater* floaterp = LLFloater::getFloaterByHandle(*dependent_it); 803 LLFloater* floaterp = LLFloater::getFloaterByHandle(*dependent_it);
818 if (floaterp) 804 if (floaterp)
819 { 805 {
820 floaterp->setVisible(FALSE); 806 if (floaterp->isMinimizeable())
807 {
808 floaterp->setMinimized(TRUE);
809 }
810 else if (!floaterp->isMinimized())
811 {
812 floaterp->setVisible(FALSE);
813 }
821 } 814 }
822 ++dependent_it;
823 } 815 }
824 816
825 mMinimized = TRUE;
826
827 // Lose keyboard focus when minimized 817 // Lose keyboard focus when minimized
828 releaseFocus(); 818 releaseFocus();
819
820 mMinimized = TRUE;
829 } 821 }
830 else 822 else
831 { 823 {
832 reshape( mPreviousRect.getWidth(), mPreviousRect.getHeight(), TRUE ); 824 reshape( mPreviousRect.getWidth(), mPreviousRect.getHeight(), TRUE );
833 setOrigin( mPreviousRect.mLeft, mPreviousRect.mBottom ); 825 setOrigin( mPreviousRect.mLeft, mPreviousRect.mBottom );
834 826
835 mMinimized = FALSE;
836
837 if (mButtonsEnabled[BUTTON_RESTORE]) 827 if (mButtonsEnabled[BUTTON_RESTORE])
838 { 828 {
839 mButtonsEnabled[BUTTON_MINIMIZE] = TRUE; 829 mButtonsEnabled[BUTTON_MINIMIZE] = TRUE;
@@ -857,15 +847,18 @@ void LLFloater::setMinimized(BOOL minimize)
857 847
858 // show dependent floater 848 // show dependent floater
859 for(handle_set_iter_t dependent_it = mDependents.begin(); 849 for(handle_set_iter_t dependent_it = mDependents.begin();
860 dependent_it != mDependents.end(); ) 850 dependent_it != mDependents.end();
851 ++dependent_it)
861 { 852 {
862 LLFloater* floaterp = LLFloater::getFloaterByHandle(*dependent_it); 853 LLFloater* floaterp = LLFloater::getFloaterByHandle(*dependent_it);
863 if (floaterp) 854 if (floaterp)
864 { 855 {
856 floaterp->setMinimized(FALSE);
865 floaterp->setVisible(TRUE); 857 floaterp->setVisible(TRUE);
866 } 858 }
867 ++dependent_it;
868 } 859 }
860
861 mMinimized = FALSE;
869 } 862 }
870 make_ui_sound("UISndWindowClose"); 863 make_ui_sound("UISndWindowClose");
871 updateButtons(); 864 updateButtons();
diff --git a/linden/indra/llui/llfloater.h b/linden/indra/llui/llfloater.h
index e752d8b..cd45762 100644
--- a/linden/indra/llui/llfloater.h
+++ b/linden/indra/llui/llfloater.h
@@ -108,8 +108,7 @@ public:
108 static LLView* fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory); 108 static LLView* fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory);
109 void initFloaterXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory, BOOL open = TRUE); 109 void initFloaterXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory, BOOL open = TRUE);
110 110
111 /*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = 1); 111 /*virtual*/ void userSetShape(const LLRect& new_rect);
112 /*virtual*/ void translate(S32 x, S32 y);
113 /*virtual*/ BOOL canSnapTo(LLView* other_view); 112 /*virtual*/ BOOL canSnapTo(LLView* other_view);
114 /*virtual*/ void snappedTo(LLView* snap_view); 113 /*virtual*/ void snappedTo(LLView* snap_view);
115 /*virtual*/ void setFocus( BOOL b ); 114 /*virtual*/ void setFocus( BOOL b );
diff --git a/linden/indra/llwindow/llwindow_vc8.vcproj b/linden/indra/llwindow/llwindow_vc8.vcproj
index 4d6bbcb..803f11c 100644
--- a/linden/indra/llwindow/llwindow_vc8.vcproj
+++ b/linden/indra/llwindow/llwindow_vc8.vcproj
@@ -42,11 +42,12 @@
42 Name="VCCLCompilerTool" 42 Name="VCCLCompilerTool"
43 Optimization="0" 43 Optimization="0"
44 AdditionalIncludeDirectories="..\llcommon;..\llmath;..\llxml;..\llvfs;..\llmessage;..\llscene;..\llimage;&quot;..\..\libraries\i686-win32\include&quot;;..\..\libraries\include\;Logitech_LCD;Logitech_LCD\LCDUI" 44 AdditionalIncludeDirectories="..\llcommon;..\llmath;..\llxml;..\llvfs;..\llmessage;..\llscene;..\llimage;&quot;..\..\libraries\i686-win32\include&quot;;..\..\libraries\include\;Logitech_LCD;Logitech_LCD\LCDUI"
45 PreprocessorDefinitions="WIN32;_DEBUG;_LIB;LL_WINDOWS;LL_DEBUG" 45 PreprocessorDefinitions="WIN32;_DEBUG;_LIB;LL_WINDOWS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_USE_32BIT_TIME_T;LL_DEBUG"
46 MinimalRebuild="true" 46 MinimalRebuild="true"
47 BasicRuntimeChecks="3" 47 BasicRuntimeChecks="3"
48 RuntimeLibrary="1" 48 RuntimeLibrary="1"
49 StructMemberAlignment="4" 49 StructMemberAlignment="4"
50 TreatWChar_tAsBuiltInType="false"
50 ForceConformanceInForLoopScope="true" 51 ForceConformanceInForLoopScope="true"
51 UsePrecompiledHeader="0" 52 UsePrecompiledHeader="0"
52 WarningLevel="3" 53 WarningLevel="3"
@@ -171,11 +172,12 @@
171 Name="VCCLCompilerTool" 172 Name="VCCLCompilerTool"
172 Optimization="0" 173 Optimization="0"
173 AdditionalIncludeDirectories="..\llcommon;..\llmath;..\llxml;..\llvfs;..\llmessage;..\llscene;..\llimage;&quot;..\..\libraries\i686-win32\include&quot;;..\..\libraries\include\GLMESA;..\..\libraries\include\;Logitech_LCD;Logitech_LCD\LCDUI" 174 AdditionalIncludeDirectories="..\llcommon;..\llmath;..\llxml;..\llvfs;..\llmessage;..\llscene;..\llimage;&quot;..\..\libraries\i686-win32\include&quot;;..\..\libraries\include\GLMESA;..\..\libraries\include\;Logitech_LCD;Logitech_LCD\LCDUI"
174 PreprocessorDefinitions="WIN32;_DEBUG;_LIB;LL_WINDOWS;LL_DEBUG;LL_MESA;LL_MESA_HEADLESS" 175 PreprocessorDefinitions="WIN32;_DEBUG;_LIB;LL_WINDOWS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_USE_32BIT_TIME_T;LL_DEBUG;LL_MESA;LL_MESA_HEADLESS"
175 MinimalRebuild="true" 176 MinimalRebuild="true"
176 BasicRuntimeChecks="3" 177 BasicRuntimeChecks="3"
177 RuntimeLibrary="1" 178 RuntimeLibrary="1"
178 StructMemberAlignment="4" 179 StructMemberAlignment="4"
180 TreatWChar_tAsBuiltInType="false"
179 ForceConformanceInForLoopScope="true" 181 ForceConformanceInForLoopScope="true"
180 UsePrecompiledHeader="0" 182 UsePrecompiledHeader="0"
181 WarningLevel="3" 183 WarningLevel="3"
@@ -238,9 +240,10 @@
238 Name="VCCLCompilerTool" 240 Name="VCCLCompilerTool"
239 Optimization="0" 241 Optimization="0"
240 AdditionalIncludeDirectories="..\llcommon;..\llmath;..\llxml;..\llvfs;..\llmessage;..\llscene;..\llimage;&quot;..\..\libraries\i686-win32\include&quot;;..\..\libraries\include\;Logitech_LCD;Logitech_LCD\LCDUI" 242 AdditionalIncludeDirectories="..\llcommon;..\llmath;..\llxml;..\llvfs;..\llmessage;..\llscene;..\llimage;&quot;..\..\libraries\i686-win32\include&quot;;..\..\libraries\include\;Logitech_LCD;Logitech_LCD\LCDUI"
241 PreprocessorDefinitions="WIN32;NDEBUG;_LIB;LL_WINDOWS;LL_RELEASE" 243 PreprocessorDefinitions="WIN32;NDEBUG;_LIB;LL_WINDOWS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_USE_32BIT_TIME_T;LL_RELEASE"
242 RuntimeLibrary="0" 244 RuntimeLibrary="0"
243 StructMemberAlignment="0" 245 StructMemberAlignment="0"
246 TreatWChar_tAsBuiltInType="false"
244 ForceConformanceInForLoopScope="true" 247 ForceConformanceInForLoopScope="true"
245 UsePrecompiledHeader="0" 248 UsePrecompiledHeader="0"
246 WarningLevel="3" 249 WarningLevel="3"
@@ -378,222 +381,6 @@
378 UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}" 381 UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
379 > 382 >
380 </Filter> 383 </Filter>
381 <Filter
382 Name="Logitech LCD"
383 >
384 <Filter
385 Name="Header Files"
386 >
387 <File
388 RelativePath=".\Logitech_LCD\EZ_LCD.h"
389 >
390 </File>
391 <File
392 RelativePath=".\Logitech_LCD\EZ_LCD_Defines.h"
393 >
394 </File>
395 <File
396 RelativePath=".\Logitech_LCD\EZ_LCD_Page.h"
397 >
398 </File>
399 <File
400 RelativePath=".\Logitech_LCD\LCD.h"
401 >
402 </File>
403 <File
404 RelativePath=".\Logitech_LCD\lglcd.h"
405 >
406 </File>
407 </Filter>
408 <Filter
409 Name="Source Files"
410 >
411 <File
412 RelativePath=".\Logitech_LCD\EZ_LCD.cpp"
413 >
414 </File>
415 <File
416 RelativePath=".\Logitech_LCD\EZ_LCD_Page.cpp"
417 >
418 </File>
419 <File
420 RelativePath=".\Logitech_LCD\LCD.cpp"
421 >
422 </File>
423 </Filter>
424 <Filter
425 Name="SDK"
426 >
427 <Filter
428 Name="Header Files"
429 >
430 <File
431 RelativePath=".\Logitech_LCD\LCDUI\LCDAnimatedBitmap.h"
432 >
433 </File>
434 <File
435 RelativePath=".\Logitech_LCD\LCDUI\LCDBase.h"
436 >
437 </File>
438 <File
439 RelativePath=".\Logitech_LCD\LCDUI\LCDBitmap.h"
440 >
441 </File>
442 <File
443 RelativePath=".\Logitech_LCD\LCDUI\LCDCollection.h"
444 >
445 </File>
446 <File
447 RelativePath=".\Logitech_LCD\LCDUI\LCDGfx.h"
448 >
449 </File>
450 <File
451 RelativePath=".\Logitech_LCD\LCDUI\LCDIcon.h"
452 >
453 </File>
454 <File
455 RelativePath=".\Logitech_LCD\LCDUI\LCDManager.h"
456 >
457 </File>
458 <File
459 RelativePath=".\Logitech_LCD\LCDUI\LCDOutput.h"
460 >
461 </File>
462 <File
463 RelativePath=".\Logitech_LCD\LCDUI\LCDProgressBar.h"
464 >
465 </File>
466 <File
467 RelativePath=".\Logitech_LCD\LCDUI\LCDScrollingText.h"
468 >
469 </File>
470 <File
471 RelativePath=".\Logitech_LCD\LCDUI\LCDStreamingText.h"
472 >
473 </File>
474 <File
475 RelativePath=".\Logitech_LCD\LCDUI\LCDText.h"
476 >
477 </File>
478 </Filter>
479 <Filter
480 Name="Source Files"
481 >
482 <File
483 RelativePath=".\Logitech_LCD\LCDUI\LCDAnimatedBitmap.cpp"
484 >
485 </File>
486 <File
487 RelativePath=".\Logitech_LCD\LCDUI\LCDBase.cpp"
488 >
489 </File>
490 <File
491 RelativePath=".\Logitech_LCD\LCDUI\LCDBitmap.cpp"
492 >
493 </File>
494 <File
495 RelativePath=".\Logitech_LCD\LCDUI\LCDCollection.cpp"
496 >
497 </File>
498 <File
499 RelativePath=".\Logitech_LCD\LCDUI\LCDGfx.cpp"
500 >
501 </File>
502 <File
503 RelativePath=".\Logitech_LCD\LCDUI\LCDIcon.cpp"
504 >
505 </File>
506 <File
507 RelativePath=".\Logitech_LCD\LCDUI\LCDManager.cpp"
508 >
509 </File>
510 <File
511 RelativePath=".\Logitech_LCD\LCDUI\LCDOutput.cpp"
512 >
513 </File>
514 <File
515 RelativePath=".\Logitech_LCD\LCDUI\LCDProgressBar.cpp"
516 >
517 </File>
518 <File
519 RelativePath=".\Logitech_LCD\LCDUI\LCDScrollingText.cpp"
520 >
521 </File>
522 <File
523 RelativePath=".\Logitech_LCD\LCDUI\LCDStreamingText.cpp"
524 >
525 <FileConfiguration
526 Name="Debug|Win32"
527 >
528 <Tool
529 Name="VCCLCompilerTool"
530 WarningLevel="0"
531 />
532 </FileConfiguration>
533 <FileConfiguration
534 Name="Release|Win32"
535 >
536 <Tool
537 Name="VCCLCompilerTool"
538 WarningLevel="0"
539 />
540 </FileConfiguration>
541 <FileConfiguration
542 Name="DebugMesaHeadless|Win32"
543 >
544 <Tool
545 Name="VCCLCompilerTool"
546 WarningLevel="0"
547 />
548 </FileConfiguration>
549 <FileConfiguration
550 Name="ReleaseNoOpt|Win32"
551 >
552 <Tool
553 Name="VCCLCompilerTool"
554 WarningLevel="0"
555 />
556 </FileConfiguration>
557 </File>
558 <File
559 RelativePath=".\Logitech_LCD\LCDUI\LCDText.cpp"
560 >
561 <FileConfiguration
562 Name="Debug|Win32"
563 >
564 <Tool
565 Name="VCCLCompilerTool"
566 WarningLevel="0"
567 />
568 </FileConfiguration>
569 <FileConfiguration
570 Name="Release|Win32"
571 >
572 <Tool
573 Name="VCCLCompilerTool"
574 WarningLevel="0"
575 />
576 </FileConfiguration>
577 <FileConfiguration
578 Name="DebugMesaHeadless|Win32"
579 >
580 <Tool
581 Name="VCCLCompilerTool"
582 WarningLevel="0"
583 />
584 </FileConfiguration>
585 <FileConfiguration
586 Name="ReleaseNoOpt|Win32"
587 >
588 <Tool
589 Name="VCCLCompilerTool"
590 WarningLevel="0"
591 />
592 </FileConfiguration>
593 </File>
594 </Filter>
595 </Filter>
596 </Filter>
597 </Files> 384 </Files>
598 <Globals> 385 <Globals>
599 </Globals> 386 </Globals>
diff --git a/linden/indra/lscript/lscript_compile/indra.l b/linden/indra/lscript/lscript_compile/indra.l
index f4199df..7c9b3aa 100644
--- a/linden/indra/lscript/lscript_compile/indra.l
+++ b/linden/indra/lscript/lscript_compile/indra.l
@@ -4,7 +4,7 @@ L [a-zA-Z_]
4H [a-fA-F0-9] 4H [a-fA-F0-9]
5E [Ee][+-]?{D}+ 5E [Ee][+-]?{D}+
6FS (f|F) 6FS (f|F)
7%e 9000 7%e 10000
8%n 4000 8%n 4000
9%p 5000 9%p 5000
10 10
@@ -434,6 +434,7 @@ extern "C" { int yyerror(const char *fmt, ...); }
434"PRIM_TYPE_TORUS" { count(); yylval.ival = LSL_PRIM_TYPE_TORUS; return(INTEGER_CONSTANT); } 434"PRIM_TYPE_TORUS" { count(); yylval.ival = LSL_PRIM_TYPE_TORUS; return(INTEGER_CONSTANT); }
435"PRIM_TYPE_TUBE" { count(); yylval.ival = LSL_PRIM_TYPE_TUBE; return(INTEGER_CONSTANT); } 435"PRIM_TYPE_TUBE" { count(); yylval.ival = LSL_PRIM_TYPE_TUBE; return(INTEGER_CONSTANT); }
436"PRIM_TYPE_RING" { count(); yylval.ival = LSL_PRIM_TYPE_RING; return(INTEGER_CONSTANT); } 436"PRIM_TYPE_RING" { count(); yylval.ival = LSL_PRIM_TYPE_RING; return(INTEGER_CONSTANT); }
437"PRIM_TYPE_SCULPT" { count(); yylval.ival = LSL_PRIM_TYPE_SCULPT; return(INTEGER_CONSTANT); }
437 438
438"PRIM_HOLE_DEFAULT" { count(); yylval.ival = LSL_PRIM_HOLE_DEFAULT; return(INTEGER_CONSTANT); } 439"PRIM_HOLE_DEFAULT" { count(); yylval.ival = LSL_PRIM_HOLE_DEFAULT; return(INTEGER_CONSTANT); }
439"PRIM_HOLE_CIRCLE" { count(); yylval.ival = LSL_PRIM_HOLE_CIRCLE; return(INTEGER_CONSTANT); } 440"PRIM_HOLE_CIRCLE" { count(); yylval.ival = LSL_PRIM_HOLE_CIRCLE; return(INTEGER_CONSTANT); }
@@ -476,6 +477,11 @@ extern "C" { int yyerror(const char *fmt, ...); }
476"PRIM_TEXGEN_DEFAULT" { count(); yylval.ival = LSL_PRIM_TEXGEN_DEFAULT; return(INTEGER_CONSTANT); } 477"PRIM_TEXGEN_DEFAULT" { count(); yylval.ival = LSL_PRIM_TEXGEN_DEFAULT; return(INTEGER_CONSTANT); }
477"PRIM_TEXGEN_PLANAR" { count(); yylval.ival = LSL_PRIM_TEXGEN_PLANAR; return(INTEGER_CONSTANT); } 478"PRIM_TEXGEN_PLANAR" { count(); yylval.ival = LSL_PRIM_TEXGEN_PLANAR; return(INTEGER_CONSTANT); }
478 479
480"PRIM_SCULPT_TYPE_SPHERE" { count(); yylval.ival = LSL_PRIM_SCULPT_TYPE_SPHERE; return(INTEGER_CONSTANT); }
481"PRIM_SCULPT_TYPE_TORUS" { count(); yylval.ival = LSL_PRIM_SCULPT_TYPE_TORUS; return(INTEGER_CONSTANT); }
482"PRIM_SCULPT_TYPE_PLANE" { count(); yylval.ival = LSL_PRIM_SCULPT_TYPE_PLANE; return(INTEGER_CONSTANT); }
483"PRIM_SCULPT_TYPE_CYLINDER" { count(); yylval.ival = LSL_PRIM_SCULPT_TYPE_CYLINDER; return(INTEGER_CONSTANT); }
484
479"MASK_BASE" { count(); yylval.ival = 0; return(INTEGER_CONSTANT); } 485"MASK_BASE" { count(); yylval.ival = 0; return(INTEGER_CONSTANT); }
480"MASK_OWNER" { count(); yylval.ival = 1; return(INTEGER_CONSTANT); } 486"MASK_OWNER" { count(); yylval.ival = 1; return(INTEGER_CONSTANT); }
481"MASK_GROUP" { count(); yylval.ival = 2; return(INTEGER_CONSTANT); } 487"MASK_GROUP" { count(); yylval.ival = 2; return(INTEGER_CONSTANT); }
diff --git a/linden/indra/lscript/lscript_library/lscript_library.cpp b/linden/indra/lscript/lscript_library/lscript_library.cpp
index 7d38621..c44e1c0 100644
--- a/linden/indra/lscript/lscript_library/lscript_library.cpp
+++ b/linden/indra/lscript/lscript_library/lscript_library.cpp
@@ -424,6 +424,7 @@ void LLScriptLibrary::init()
424 424
425 425
426 addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llStringTrim", "s", "si", "string llStringTrim(string src, integer trim_type)\nTrim leading and/or trailing spaces from a string.\nUses trim_type of STRING_TRIM, STRING_TRIM_HEAD or STRING_TRIM_TAIL.")); 426 addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llStringTrim", "s", "si", "string llStringTrim(string src, integer trim_type)\nTrim leading and/or trailing spaces from a string.\nUses trim_type of STRING_TRIM, STRING_TRIM_HEAD or STRING_TRIM_TAIL."));
427 addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llRegionSay", NULL, "is", "llRegionSay(integer channel, string msg)\nbroadcasts msg to entire region on channel (not 0.)"));
427 428
428 // energy, sleep, dummy_func, name, return type, parameters, help text, gods-only 429 // energy, sleep, dummy_func, name, return type, parameters, help text, gods-only
429 430
diff --git a/linden/indra/newview/English.lproj/InfoPlist.strings b/linden/indra/newview/English.lproj/InfoPlist.strings
index e9cd858..8fae01f 100644
--- a/linden/indra/newview/English.lproj/InfoPlist.strings
+++ b/linden/indra/newview/English.lproj/InfoPlist.strings
@@ -1,5 +1,5 @@
1/* Localized versions of Info.plist keys */ 1/* Localized versions of Info.plist keys */
2 2
3CFBundleName = "Second Life"; 3CFBundleName = "Second Life";
4CFBundleShortVersionString = "Second Life version 1.15.1.3"; 4CFBundleShortVersionString = "Second Life version 1.16.0.5";
5CFBundleGetInfoString = "Second Life version 1.15.1.3, Copyright 2004-2007 Linden Research, Inc."; 5CFBundleGetInfoString = "Second Life version 1.16.0.5, Copyright 2004-2007 Linden Research, Inc.";
diff --git a/linden/indra/newview/Info-SecondLife.plist b/linden/indra/newview/Info-SecondLife.plist
index 108f716..764b152 100644
--- a/linden/indra/newview/Info-SecondLife.plist
+++ b/linden/indra/newview/Info-SecondLife.plist
@@ -32,7 +32,7 @@
32 </dict> 32 </dict>
33 </array> 33 </array>
34 <key>CFBundleVersion</key> 34 <key>CFBundleVersion</key>
35 <string>1.15.1.3</string> 35 <string>1.16.0.5</string>
36 <key>CSResourcesFileMapped</key> 36 <key>CSResourcesFileMapped</key>
37 <true/> 37 <true/>
38</dict> 38</dict>
diff --git a/linden/indra/newview/app_settings/keywords.ini b/linden/indra/newview/app_settings/keywords.ini
index f53a384..c7f8426 100644
--- a/linden/indra/newview/app_settings/keywords.ini
+++ b/linden/indra/newview/app_settings/keywords.ini
@@ -37,7 +37,7 @@ at_target at_target(integer tnum, vector targetpos, vector ourpos):Result of ll
37not_at_target not_at_target():Result of llTarget library function call 37not_at_target not_at_target():Result of llTarget library function call
38at_rot_target at_rot_target(integer tnum, rotation targetrot, rotation ourrot):Result of LLRotTarget library function call 38at_rot_target at_rot_target(integer tnum, rotation targetrot, rotation ourrot):Result of LLRotTarget library function call
39not_at_rot_target not_at_rot_target():Result of LLRotTarget library function call 39not_at_rot_target not_at_rot_target():Result of LLRotTarget library function call
40money money(key id, integer amount):Triggered when money is given to task 40money money(key id, integer amount):Triggered when L$ is given to task
41email email(string time, string address, string subj, string message, integer num_left):Triggered when task receives email 41email email(string time, string address, string subj, string message, integer num_left):Triggered when task receives email
42run_time_permissions run_time_permissions(integer perm):Triggered when an agent grants run time permissions to task 42run_time_permissions run_time_permissions(integer perm):Triggered when an agent grants run time permissions to task
43attach attach(key id):Triggered when an agent attaches or detaches from agent 43attach attach(key id):Triggered when an agent attaches or detaches from agent
@@ -79,7 +79,7 @@ CONTROL_UP Passed to llTakeControls library function and used control event
79CONTROL_DOWN Passed to llTakeControls library function and used control event handler to test for agent down control 79CONTROL_DOWN Passed to llTakeControls library function and used control event handler to test for agent down control
80CONTROL_LBUTTON Passed to llTakeControls library function and used control event handler to test for agent left button control 80CONTROL_LBUTTON Passed to llTakeControls library function and used control event handler to test for agent left button control
81CONTROL_ML_LBUTTON Passed to llTakeControls library function and used control event handler to test for agent left button control with the agent in mouse look 81CONTROL_ML_LBUTTON Passed to llTakeControls library function and used control event handler to test for agent left button control with the agent in mouse look
82PERMISSION_DEBIT Passed to llRequestPermissions library function to request permission to take money from agent's account 82PERMISSION_DEBIT Passed to llRequestPermissions library function to request permission to take L$ from agent's account
83PERMISSION_TAKE_CONTROLS Passed to llRequestPermissions library function to request permission to take agent's controls 83PERMISSION_TAKE_CONTROLS Passed to llRequestPermissions library function to request permission to take agent's controls
84# PERMISSION_REMAP_CONTROLS Passed to llRequestPermissions library function to request permission to remap agent's controls (not implemented yet) 84# PERMISSION_REMAP_CONTROLS Passed to llRequestPermissions library function to request permission to remap agent's controls (not implemented yet)
85PERMISSION_TRIGGER_ANIMATION Passed to llRequestPermissions library function to request permission to trigger animation on agent 85PERMISSION_TRIGGER_ANIMATION Passed to llRequestPermissions library function to request permission to trigger animation on agent
@@ -346,6 +346,7 @@ PRIM_TYPE_SPHERE Followed by integer hole shape, vector cut, float hollow, vecto
346PRIM_TYPE_TORUS Followed by integer hole shape, vector cut, float hollow, vector twist,:vector hole size, vector top shear, vector advanced cut, vector taper,:float revolutions, float radius offset, and float skew 346PRIM_TYPE_TORUS Followed by integer hole shape, vector cut, float hollow, vector twist,:vector hole size, vector top shear, vector advanced cut, vector taper,:float revolutions, float radius offset, and float skew
347PRIM_TYPE_TUBE Followed by integer hole shape, vector cut, float hollow, vector twist,:vector hole size, vector top shear, vector advanced cut, vector taper,:float revolutions, float radius offset, and float skew 347PRIM_TYPE_TUBE Followed by integer hole shape, vector cut, float hollow, vector twist,:vector hole size, vector top shear, vector advanced cut, vector taper,:float revolutions, float radius offset, and float skew
348PRIM_TYPE_RING Followed by integer hole shape, vector cut, float hollow, vector twist,:vector hole size, vector top shear, vector advanced cut, vector taper,:float revolutions, float radius offset, and float skew 348PRIM_TYPE_RING Followed by integer hole shape, vector cut, float hollow, vector twist,:vector hole size, vector top shear, vector advanced cut, vector taper,:float revolutions, float radius offset, and float skew
349PRIM_TYPE_SCULPT Followed by a key or string texture uuid.
349 350
350PRIM_HOLE_DEFAULT Sets hole type to match the prim type. 351PRIM_HOLE_DEFAULT Sets hole type to match the prim type.
351PRIM_HOLE_SQUARE Sets hole type to square. 352PRIM_HOLE_SQUARE Sets hole type to square.
@@ -388,6 +389,11 @@ PRIM_BUMP_WEAVE Weave bump map
388PRIM_TEXGEN_DEFAULT Default texture mapping 389PRIM_TEXGEN_DEFAULT Default texture mapping
389PRIM_TEXGEN_PLANAR Planar texture mapping 390PRIM_TEXGEN_PLANAR Planar texture mapping
390 391
392PRIM_SCULPT_TYPE_SPHERE Stitch edges in a sphere-like way
393PRIM_SCULPT_TYPE_TORUS Stitch edges in a torus-like way
394PRIM_SCULPT_TYPE_PLANE Do not stitch edges
395PRIM_SCULPT_TYPE_CYLINDER Stitch edges in a cylinder-like way
396
391MASK_BASE Base permissions 397MASK_BASE Base permissions
392MASK_OWNER Owner permissions 398MASK_OWNER Owner permissions
393MASK_GROUP Group permissions 399MASK_GROUP Group permissions
diff --git a/linden/indra/newview/llagent.cpp b/linden/indra/newview/llagent.cpp
index 85c268b..ab51120 100644
--- a/linden/indra/newview/llagent.cpp
+++ b/linden/indra/newview/llagent.cpp
@@ -4937,6 +4937,8 @@ void LLAgent::sendAnimationRequests(LLDynamicArray<LLUUID> &anim_ids, EAnimReque
4937 num_valid_anims++; 4937 num_valid_anims++;
4938 } 4938 }
4939 4939
4940 msg->nextBlockFast(_PREHASH_PhysicalAvatarEventList);
4941 msg->addBinaryDataFast(_PREHASH_TypeData, NULL, 0);
4940 if (num_valid_anims) 4942 if (num_valid_anims)
4941 { 4943 {
4942 sendReliableMessage(); 4944 sendReliableMessage();
@@ -4960,6 +4962,8 @@ void LLAgent::sendAnimationRequest(const LLUUID &anim_id, EAnimRequest request)
4960 msg->addUUIDFast(_PREHASH_AnimID, (anim_id) ); 4962 msg->addUUIDFast(_PREHASH_AnimID, (anim_id) );
4961 msg->addBOOLFast(_PREHASH_StartAnim, (request == ANIM_REQUEST_START) ? TRUE : FALSE); 4963 msg->addBOOLFast(_PREHASH_StartAnim, (request == ANIM_REQUEST_START) ? TRUE : FALSE);
4962 4964
4965 msg->nextBlockFast(_PREHASH_PhysicalAvatarEventList);
4966 msg->addBinaryDataFast(_PREHASH_TypeData, NULL, 0);
4963 sendReliableMessage(); 4967 sendReliableMessage();
4964} 4968}
4965 4969
@@ -6773,7 +6777,7 @@ void LLAgent::removeWearable( EWearableType type )
6773 if( old_wearable->isDirty() ) 6777 if( old_wearable->isDirty() )
6774 { 6778 {
6775 // Bring up view-modal dialog: Save changes? Yes, No, Cancel 6779 // Bring up view-modal dialog: Save changes? Yes, No, Cancel
6776 gViewerWindow->alertXml("RemoveWearableSave", LLAgent::onRemoveWearableDialog, (void*)(S32)type ); 6780 gViewerWindow->alertXml("WearableSave", LLAgent::onRemoveWearableDialog, (void*)(S32)type );
6777 return; 6781 return;
6778 } 6782 }
6779 else 6783 else
@@ -7003,7 +7007,7 @@ void LLAgent::setWearable( LLInventoryItem* new_item, LLWearable* new_wearable )
7003 if( old_wearable->isDirty() ) 7007 if( old_wearable->isDirty() )
7004 { 7008 {
7005 // Bring up modal dialog: Save changes? Yes, No, Cancel 7009 // Bring up modal dialog: Save changes? Yes, No, Cancel
7006 gViewerWindow->alertXml( "SetWearableSave", LLAgent::onSetWearableDialog, 7010 gViewerWindow->alertXml( "WearableSave", LLAgent::onSetWearableDialog,
7007 new LLSetWearableData( new_item->getUUID(), new_wearable )); 7011 new LLSetWearableData( new_item->getUUID(), new_wearable ));
7008 return; 7012 return;
7009 } 7013 }
diff --git a/linden/indra/newview/llassetuploadresponders.cpp b/linden/indra/newview/llassetuploadresponders.cpp
index 26c606f..789beaa 100644
--- a/linden/indra/newview/llassetuploadresponders.cpp
+++ b/linden/indra/newview/llassetuploadresponders.cpp
@@ -128,7 +128,7 @@ void LLAssetUploadResponder::uploadUpload(const LLSD& content)
128void LLAssetUploadResponder::uploadFailure(const LLSD& content) 128void LLAssetUploadResponder::uploadFailure(const LLSD& content)
129{ 129{
130 std::string reason = content["state"]; 130 std::string reason = content["state"];
131 // deal with money errors 131 // deal with L$ errors
132 if (reason == "insufficient funds") 132 if (reason == "insufficient funds")
133 { 133 {
134 LLFloaterBuyCurrency::buyCurrency("Uploading costs", gGlobalEconomy->getPriceUpload()); 134 LLFloaterBuyCurrency::buyCurrency("Uploading costs", gGlobalEconomy->getPriceUpload());
@@ -166,7 +166,7 @@ void LLNewAgentInventoryResponder::uploadComplete(const LLSD& content)
166 LLAssetType::EType asset_type = LLAssetType::lookup(mPostData["asset_type"].asString().c_str()); 166 LLAssetType::EType asset_type = LLAssetType::lookup(mPostData["asset_type"].asString().c_str());
167 LLInventoryType::EType inventory_type = LLInventoryType::lookup(mPostData["inventory_type"].asString().c_str()); 167 LLInventoryType::EType inventory_type = LLInventoryType::lookup(mPostData["inventory_type"].asString().c_str());
168 168
169 // Update money and ownership credit information 169 // Update L$ and ownership credit information
170 // since it probably changed on the server 170 // since it probably changed on the server
171 if (asset_type == LLAssetType::AT_TEXTURE || 171 if (asset_type == LLAssetType::AT_TEXTURE ||
172 asset_type == LLAssetType::AT_SOUND || 172 asset_type == LLAssetType::AT_SOUND ||
diff --git a/linden/indra/newview/llcontroldef.cpp b/linden/indra/newview/llcontroldef.cpp
index 11b97b4..01d7edf 100644
--- a/linden/indra/newview/llcontroldef.cpp
+++ b/linden/indra/newview/llcontroldef.cpp
@@ -865,7 +865,7 @@ void declare_settings()
865 // recompile everything dialog 865 // recompile everything dialog
866 gSavedSettings.declareRect("CompileOutputRect", LLRect(0, 400, 300, 0), "Rectangle for script Recompile Everything output window"); 866 gSavedSettings.declareRect("CompileOutputRect", LLRect(0, 400, 300, 0), "Rectangle for script Recompile Everything output window");
867 867
868 // money 868 // L$
869 gSavedSettings.declareRect("FloaterPayRectB", LLRect(0, 150, 400, 0), "Rectangle for pay window"); 869 gSavedSettings.declareRect("FloaterPayRectB", LLRect(0, 150, 400, 0), "Rectangle for pay window");
870 870
871 // Buy 871 // Buy
@@ -1015,7 +1015,7 @@ void declare_settings()
1015 gSavedSettings.declareBOOL("UISndDebugSpamToggle", FALSE, "Log UI sound effects as they are played"); 1015 gSavedSettings.declareBOOL("UISndDebugSpamToggle", FALSE, "Log UI sound effects as they are played");
1016 1016
1017 gSavedSettings.declareF32("UISndHealthReductionThreshold", 10.f, "Amount of health reduction required to trigger \"pain\" sound"); 1017 gSavedSettings.declareF32("UISndHealthReductionThreshold", 10.f, "Amount of health reduction required to trigger \"pain\" sound");
1018 gSavedSettings.declareF32("UISndMoneyChangeThreshold", 50.f, "Amount of change in bank balance required to trigger \"money\" sound"); 1018 gSavedSettings.declareF32("UISndMoneyChangeThreshold", 50.f, "Amount of change in L$ balance required to trigger \"money\" sound");
1019 1019
1020 gSavedSettings.declareString("UISndAlert", "ed124764-705d-d497-167a-182cd9fa2e6c", "Sound file for alerts (uuid for sound asset)"); 1020 gSavedSettings.declareString("UISndAlert", "ed124764-705d-d497-167a-182cd9fa2e6c", "Sound file for alerts (uuid for sound asset)");
1021 //gSavedSettings.declareString("UISndAppearanceAnimate", "6cf2be26-90cb-2669-a599-f5ab7698225f", "[NOT USED]"); 1021 //gSavedSettings.declareString("UISndAppearanceAnimate", "6cf2be26-90cb-2669-a599-f5ab7698225f", "[NOT USED]");
@@ -1031,8 +1031,8 @@ void declare_settings()
1031 //gSavedSettings.declareString("UISndInvApplyToObject", "00000000-0000-0000-0000-000000000000", "[NOT USED]"); 1031 //gSavedSettings.declareString("UISndInvApplyToObject", "00000000-0000-0000-0000-000000000000", "[NOT USED]");
1032 gSavedSettings.declareString("UISndInvalidOp", "4174f859-0d3d-c517-c424-72923dc21f65", "Sound file for invalid operations (uuid for sound asset)"); 1032 gSavedSettings.declareString("UISndInvalidOp", "4174f859-0d3d-c517-c424-72923dc21f65", "Sound file for invalid operations (uuid for sound asset)");
1033 //gSavedSettings.declareString("UISndInventoryCopyToInv", "00000000-0000-0000-0000-000000000000", "[NOT USED]"); 1033 //gSavedSettings.declareString("UISndInventoryCopyToInv", "00000000-0000-0000-0000-000000000000", "[NOT USED]");
1034 gSavedSettings.declareString("UISndMoneyChangeDown", "104974e3-dfda-428b-99ee-b0d4e748d3a3", "Sound file for bank balance increase (uuid for sound asset)"); 1034 gSavedSettings.declareString("UISndMoneyChangeDown", "104974e3-dfda-428b-99ee-b0d4e748d3a3", "Sound file for L$ balance increase (uuid for sound asset)");
1035 gSavedSettings.declareString("UISndMoneyChangeUp", "77a018af-098e-c037-51a6-178f05877c6f", "Sound file for bank balance decrease(uuid for sound asset)"); 1035 gSavedSettings.declareString("UISndMoneyChangeUp", "77a018af-098e-c037-51a6-178f05877c6f", "Sound file for L$ balance decrease(uuid for sound asset)");
1036 gSavedSettings.declareString("UISndNewIncomingIMSession", "67cc2844-00f3-2b3c-b991-6418d01e1bb7", "Sound file for new instant message session(uuid for sound asset)"); 1036 gSavedSettings.declareString("UISndNewIncomingIMSession", "67cc2844-00f3-2b3c-b991-6418d01e1bb7", "Sound file for new instant message session(uuid for sound asset)");
1037 //gSavedSettings.declareString("UISndObjectCopyToInv", "00000000-0000-0000-0000-000000000000", "[NOT USED]"); 1037 //gSavedSettings.declareString("UISndObjectCopyToInv", "00000000-0000-0000-0000-000000000000", "[NOT USED]");
1038 gSavedSettings.declareString("UISndObjectCreate", "f4a0660f-5446-dea2-80b7-6482a082803c", "Sound file for object creation (uuid for sound asset)"); 1038 gSavedSettings.declareString("UISndObjectCreate", "f4a0660f-5446-dea2-80b7-6482a082803c", "Sound file for object creation (uuid for sound asset)");
@@ -1144,7 +1144,7 @@ void declare_settings()
1144 gSavedSettings.declareF32("NotifyTipDuration", 4.f, "Length of time that notification tips stay on screen (seconds)"); 1144 gSavedSettings.declareF32("NotifyTipDuration", 4.f, "Length of time that notification tips stay on screen (seconds)");
1145 1145
1146 1146
1147 gSavedSettings.declareBOOL("NotifyMoneyChange", TRUE, "Pop up notifications for all financial transactions"); 1147 gSavedSettings.declareBOOL("NotifyMoneyChange", TRUE, "Pop up notifications for all L$ transactions");
1148 gSavedSettings.declareBOOL("ShowNewInventory", TRUE, 1148 gSavedSettings.declareBOOL("ShowNewInventory", TRUE,
1149 "Automatic Previews of new notecards/textures/landmarks"); 1149 "Automatic Previews of new notecards/textures/landmarks");
1150 1150
diff --git a/linden/indra/newview/llface.cpp b/linden/indra/newview/llface.cpp
index 3b47e21..342c76e 100644
--- a/linden/indra/newview/llface.cpp
+++ b/linden/indra/newview/llface.cpp
@@ -726,8 +726,6 @@ BOOL LLFace::genVolumeBBoxes(const LLVolume &volume, S32 f,
726{ 726{
727 LLMemType mt1(LLMemType::MTYPE_DRAWABLE); 727 LLMemType mt1(LLMemType::MTYPE_DRAWABLE);
728 728
729 const LLVolumeFace &face = volume.getVolumeFace(f);
730
731 //get bounding box 729 //get bounding box
732 if (mDrawablep->isState(LLDrawable::REBUILD_VOLUME | LLDrawable::REBUILD_POSITION)) 730 if (mDrawablep->isState(LLDrawable::REBUILD_VOLUME | LLDrawable::REBUILD_POSITION))
733 { 731 {
@@ -738,9 +736,18 @@ BOOL LLFace::genVolumeBBoxes(const LLVolume &volume, S32 f,
738 } 736 }
739 737
740 LLVector3 min,max; 738 LLVector3 min,max;
741 739
742 min = face.mExtents[0]; 740 if (f >= volume.getNumVolumeFaces())
743 max = face.mExtents[1]; 741 {
742 min = LLVector3(-1,-1,-1);
743 max = LLVector3(1,1,1);
744 }
745 else
746 {
747 const LLVolumeFace &face = volume.getVolumeFace(f);
748 min = face.mExtents[0];
749 max = face.mExtents[1];
750 }
744 751
745 //min, max are in volume space, convert to drawable render space 752 //min, max are in volume space, convert to drawable render space
746 LLVector3 center = ((min + max) * 0.5f)*mat_vert; 753 LLVector3 center = ((min + max) * 0.5f)*mat_vert;
@@ -904,6 +911,10 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
904 full_rebuild = TRUE; 911 full_rebuild = TRUE;
905 } 912 }
906 } 913 }
914 else
915 {
916 full_rebuild = TRUE;
917 }
907 } 918 }
908 else 919 else
909 { 920 {
diff --git a/linden/indra/newview/llfirstuse.h b/linden/indra/newview/llfirstuse.h
index 89a58be..4d0e754 100644
--- a/linden/indra/newview/llfirstuse.h
+++ b/linden/indra/newview/llfirstuse.h
@@ -49,8 +49,8 @@ reduced range, how to leave conversation, arrow keys to orbit.
496. First lft-click that does nothing (land,object): Explain that rgt-click 496. First lft-click that does nothing (land,object): Explain that rgt-click
50gives menu, lft-click interacts or moves if physical 50gives menu, lft-click interacts or moves if physical
51 51
527. On first receipt of money (not rez/derez) explain that objects or people may 527. On first receipt of L$ (not rez/derez) explain that objects or people may
53give you money, and how to give someone or something money ('Pay...'). 53give you L$, and how to give someone or something money ('Pay...').
54 54
558. After first teleporting and being sent to nearest hub, a dialog explaining 558. After first teleporting and being sent to nearest hub, a dialog explaining
56how to find and move toward the beacon. 56how to find and move toward the beacon.
diff --git a/linden/indra/newview/llfloaterimagepreview.cpp b/linden/indra/newview/llfloaterimagepreview.cpp
index 9237380..9dfaa49 100644
--- a/linden/indra/newview/llfloaterimagepreview.cpp
+++ b/linden/indra/newview/llfloaterimagepreview.cpp
@@ -102,10 +102,14 @@ BOOL LLFloaterImagePreview::postBuild()
102 { 102 {
103 mAvatarPreview = new LLImagePreviewAvatar(256, 256); 103 mAvatarPreview = new LLImagePreviewAvatar(256, 256);
104 mAvatarPreview->setPreviewTarget("mPelvis", "mUpperBodyMesh0", mRawImagep, 2.f, FALSE); 104 mAvatarPreview->setPreviewTarget("mPelvis", "mUpperBodyMesh0", mRawImagep, 2.f, FALSE);
105
106 mSculptedPreview = new LLImagePreviewSculpted(256, 256);
107 mSculptedPreview->setPreviewTarget(mRawImagep, 2.0f);
105 } 108 }
106 else 109 else
107 { 110 {
108 mAvatarPreview = NULL; 111 mAvatarPreview = NULL;
112 mSculptedPreview = NULL;
109 childShow("bad_image_text"); 113 childShow("bad_image_text");
110 childDisable("clothing_type_combo"); 114 childDisable("clothing_type_combo");
111 childDisable("ok_btn"); 115 childDisable("ok_btn");
@@ -121,6 +125,8 @@ LLFloaterImagePreview::~LLFloaterImagePreview()
121{ 125{
122 mRawImagep = NULL; 126 mRawImagep = NULL;
123 delete mAvatarPreview; 127 delete mAvatarPreview;
128 delete mSculptedPreview;
129
124 if (mGLName) 130 if (mGLName)
125 { 131 {
126 glDeleteTextures(1, &mGLName ); 132 glDeleteTextures(1, &mGLName );
@@ -135,7 +141,7 @@ void LLFloaterImagePreview::onPreviewTypeCommit(LLUICtrl* ctrl, void* userdata)
135{ 141{
136 LLFloaterImagePreview *fp =(LLFloaterImagePreview *)userdata; 142 LLFloaterImagePreview *fp =(LLFloaterImagePreview *)userdata;
137 143
138 if (!fp->mAvatarPreview) 144 if (!fp->mAvatarPreview || !fp->mSculptedPreview)
139 { 145 {
140 return; 146 return;
141 } 147 }
@@ -176,10 +182,15 @@ void LLFloaterImagePreview::onPreviewTypeCommit(LLUICtrl* ctrl, void* userdata)
176 case 8: 182 case 8:
177 fp->mAvatarPreview->setPreviewTarget("mKneeLeft", "mSkirtMesh0", fp->mRawImagep, 1.3f, FALSE); 183 fp->mAvatarPreview->setPreviewTarget("mKneeLeft", "mSkirtMesh0", fp->mRawImagep, 1.3f, FALSE);
178 break; 184 break;
185 case 9:
186 fp->mSculptedPreview->setPreviewTarget(fp->mRawImagep, 2.0f);
187 break;
179 default: 188 default:
180 break; 189 break;
181 } 190 }
191
182 fp->mAvatarPreview->refresh(); 192 fp->mAvatarPreview->refresh();
193 fp->mSculptedPreview->refresh();
183} 194}
184 195
185//----------------------------------------------------------------------------- 196//-----------------------------------------------------------------------------
@@ -193,7 +204,11 @@ void LLFloaterImagePreview::draw()
193 if (mRawImagep.notNull()) 204 if (mRawImagep.notNull())
194 { 205 {
195 LLCtrlSelectionInterface* iface = childGetSelectionInterface("clothing_type_combo"); 206 LLCtrlSelectionInterface* iface = childGetSelectionInterface("clothing_type_combo");
196 if (iface && iface->getFirstSelectedIndex() <= 0) 207 U32 selected = 0;
208 if (iface)
209 selected = iface->getFirstSelectedIndex();
210
211 if (selected <= 0)
197 { 212 {
198 gl_rect_2d_checkerboard(mPreviewRect); 213 gl_rect_2d_checkerboard(mPreviewRect);
199 LLGLDisable gls_alpha(GL_ALPHA_TEST); 214 LLGLDisable gls_alpha(GL_ALPHA_TEST);
@@ -230,6 +245,7 @@ void LLFloaterImagePreview::draw()
230 if (mAvatarPreview) 245 if (mAvatarPreview)
231 { 246 {
232 mAvatarPreview->setTexture(mGLName); 247 mAvatarPreview->setTexture(mGLName);
248 mSculptedPreview->setTexture(mGLName);
233 } 249 }
234 } 250 }
235 251
@@ -253,10 +269,14 @@ void LLFloaterImagePreview::draw()
253 } 269 }
254 else 270 else
255 { 271 {
256 if (mAvatarPreview) 272 if ((mAvatarPreview) && (mSculptedPreview))
257 { 273 {
258 glColor3f(1.f, 1.f, 1.f); 274 glColor3f(1.f, 1.f, 1.f);
259 mAvatarPreview->bindTexture(); 275
276 if (selected == 9)
277 mSculptedPreview->bindTexture();
278 else
279 mAvatarPreview->bindTexture();
260 280
261 glBegin( GL_QUADS ); 281 glBegin( GL_QUADS );
262 { 282 {
@@ -271,12 +291,16 @@ void LLFloaterImagePreview::draw()
271 } 291 }
272 glEnd(); 292 glEnd();
273 293
274 mAvatarPreview->unbindTexture(); 294 if (selected == 9)
295 mSculptedPreview->unbindTexture();
296 else
297 mAvatarPreview->unbindTexture();
275 } 298 }
276 } 299 }
277 } 300 }
278} 301}
279 302
303
280//----------------------------------------------------------------------------- 304//-----------------------------------------------------------------------------
281// loadImage() 305// loadImage()
282//----------------------------------------------------------------------------- 306//-----------------------------------------------------------------------------
@@ -417,6 +441,7 @@ BOOL LLFloaterImagePreview::handleHover(S32 x, S32 y, MASK mask)
417 else 441 else
418 { 442 {
419 mAvatarPreview->pan((F32)(x - mLastMouseX) * -0.005f, (F32)(y - mLastMouseY) * -0.005f); 443 mAvatarPreview->pan((F32)(x - mLastMouseX) * -0.005f, (F32)(y - mLastMouseY) * -0.005f);
444 mSculptedPreview->pan((F32)(x - mLastMouseX) * -0.005f, (F32)(y - mLastMouseY) * -0.005f);
420 } 445 }
421 } 446 }
422 else if (local_mask == MASK_ORBIT) 447 else if (local_mask == MASK_ORBIT)
@@ -425,6 +450,7 @@ BOOL LLFloaterImagePreview::handleHover(S32 x, S32 y, MASK mask)
425 F32 pitch_radians = (F32)(y - mLastMouseY) * 0.02f; 450 F32 pitch_radians = (F32)(y - mLastMouseY) * 0.02f;
426 451
427 mAvatarPreview->rotate(yaw_radians, pitch_radians); 452 mAvatarPreview->rotate(yaw_radians, pitch_radians);
453 mSculptedPreview->rotate(yaw_radians, pitch_radians);
428 } 454 }
429 else 455 else
430 { 456 {
@@ -441,6 +467,8 @@ BOOL LLFloaterImagePreview::handleHover(S32 x, S32 y, MASK mask)
441 467
442 mAvatarPreview->rotate(yaw_radians, 0.f); 468 mAvatarPreview->rotate(yaw_radians, 0.f);
443 mAvatarPreview->zoom(zoom_amt); 469 mAvatarPreview->zoom(zoom_amt);
470 mSculptedPreview->rotate(yaw_radians, 0.f);
471 mSculptedPreview->zoom(zoom_amt);
444 } 472 }
445 } 473 }
446 474
@@ -486,12 +514,13 @@ BOOL LLFloaterImagePreview::handleHover(S32 x, S32 y, MASK mask)
486 else 514 else
487 { 515 {
488 mAvatarPreview->refresh(); 516 mAvatarPreview->refresh();
517 mSculptedPreview->refresh();
489 } 518 }
490 519
491 LLUI::setCursorPositionLocal(this, mLastMouseX, mLastMouseY); 520 LLUI::setCursorPositionLocal(this, mLastMouseX, mLastMouseY);
492 } 521 }
493 522
494 if (!mPreviewRect.pointInRect(x, y) || !mAvatarPreview) 523 if (!mPreviewRect.pointInRect(x, y) || !mAvatarPreview || !mSculptedPreview)
495 { 524 {
496 return LLFloater::handleHover(x, y, mask); 525 return LLFloater::handleHover(x, y, mask);
497 } 526 }
@@ -520,6 +549,9 @@ BOOL LLFloaterImagePreview::handleScrollWheel(S32 x, S32 y, S32 clicks)
520 { 549 {
521 mAvatarPreview->zoom((F32)clicks * -0.2f); 550 mAvatarPreview->zoom((F32)clicks * -0.2f);
522 mAvatarPreview->refresh(); 551 mAvatarPreview->refresh();
552
553 mSculptedPreview->zoom((F32)clicks * -0.2f);
554 mSculptedPreview->refresh();
523 } 555 }
524 556
525 return TRUE; 557 return TRUE;
@@ -560,6 +592,7 @@ LLImagePreviewAvatar::LLImagePreviewAvatar(S32 width, S32 height) : LLDynamicTex
560 mTextureName = 0; 592 mTextureName = 0;
561} 593}
562 594
595
563LLImagePreviewAvatar::~LLImagePreviewAvatar() 596LLImagePreviewAvatar::~LLImagePreviewAvatar()
564{ 597{
565 mDummyAvatar->markDead(); 598 mDummyAvatar->markDead();
@@ -602,7 +635,7 @@ void LLImagePreviewAvatar::setPreviewTarget(const char* joint_name, const char*
602//----------------------------------------------------------------------------- 635//-----------------------------------------------------------------------------
603// update() 636// update()
604//----------------------------------------------------------------------------- 637//-----------------------------------------------------------------------------
605BOOL LLImagePreviewAvatar::render() 638BOOL LLImagePreviewAvatar::render()
606{ 639{
607 mNeedsUpdate = FALSE; 640 mNeedsUpdate = FALSE;
608 LLVOAvatar* avatarp = mDummyAvatar; 641 LLVOAvatar* avatarp = mDummyAvatar;
@@ -640,6 +673,7 @@ BOOL LLImagePreviewAvatar::render()
640 673
641 stop_glerror(); 674 stop_glerror();
642 675
676 gCamera->setAspect((F32)mWidth / mHeight);
643 gCamera->setView(gCamera->getDefaultFOV() / mCameraZoom); 677 gCamera->setView(gCamera->getDefaultFOV() / mCameraZoom);
644 gCamera->setPerspective(FALSE, mOrigin.mX, mOrigin.mY, mWidth, mHeight, FALSE); 678 gCamera->setPerspective(FALSE, mOrigin.mX, mOrigin.mY, mWidth, mHeight, FALSE);
645 679
@@ -692,3 +726,170 @@ void LLImagePreviewAvatar::pan(F32 right, F32 up)
692 mCameraOffset.mV[VY] = llclamp(mCameraOffset.mV[VY] + right * mCameraDistance / mCameraZoom, -1.f, 1.f); 726 mCameraOffset.mV[VY] = llclamp(mCameraOffset.mV[VY] + right * mCameraDistance / mCameraZoom, -1.f, 1.f);
693 mCameraOffset.mV[VZ] = llclamp(mCameraOffset.mV[VZ] + up * mCameraDistance / mCameraZoom, -1.f, 1.f); 727 mCameraOffset.mV[VZ] = llclamp(mCameraOffset.mV[VZ] + up * mCameraDistance / mCameraZoom, -1.f, 1.f);
694} 728}
729
730
731//-----------------------------------------------------------------------------
732// LLImagePreviewSculpted
733//-----------------------------------------------------------------------------
734
735LLImagePreviewSculpted::LLImagePreviewSculpted(S32 width, S32 height) : LLDynamicTexture(width, height, 3, ORDER_MIDDLE, FALSE)
736{
737 mNeedsUpdate = TRUE;
738 mCameraDistance = 0.f;
739 mCameraYaw = 0.f;
740 mCameraPitch = 0.f;
741 mCameraZoom = 1.f;
742 mTextureName = 0;
743
744 LLVolumeParams volume_params;
745 volume_params.setType(LL_PCODE_PROFILE_CIRCLE, LL_PCODE_PATH_CIRCLE);
746 mVolume = new LLVolume(volume_params, (F32) MAX_LOD);
747
748 /*
749 mDummyAvatar = new LLVOAvatar(LLUUID::null, LL_PCODE_LEGACY_AVATAR, gAgent.getRegion());
750 mDummyAvatar->createDrawable(&gPipeline);
751 mDummyAvatar->mIsDummy = TRUE;
752 mDummyAvatar->mSpecialRenderMode = 2;
753 mDummyAvatar->setPositionAgent(LLVector3::zero);
754 mDummyAvatar->slamPosition();
755 mDummyAvatar->updateJointLODs();
756 mDummyAvatar->updateGeometry(mDummyAvatar->mDrawable);
757 gPipeline.markVisible(mDummyAvatar->mDrawable, *gCamera);
758 mTextureName = 0;
759 */
760}
761
762
763LLImagePreviewSculpted::~LLImagePreviewSculpted()
764{
765 /*
766 mDummyAvatar->markDead();
767 */
768}
769
770
771void LLImagePreviewSculpted::setPreviewTarget(LLImageRaw* imagep, F32 distance)
772{
773 mCameraDistance = distance;
774 mCameraZoom = 1.f;
775 mCameraPitch = 0.f;
776 mCameraYaw = 0.f;
777 mCameraOffset.clearVec();
778
779 if (imagep)
780 {
781 mVolume->sculpt(imagep->getWidth(), imagep->getHeight(), imagep->getComponents(), imagep->getData(), 0);
782 }
783
784}
785
786
787//-----------------------------------------------------------------------------
788// render()
789//-----------------------------------------------------------------------------
790BOOL LLImagePreviewSculpted::render()
791{
792 mNeedsUpdate = FALSE;
793
794 LLGLSUIDefault def;
795 LLGLDisable no_blend(GL_BLEND);
796 LLGLEnable cull(GL_CULL_FACE);
797 LLGLDepthTest depth(GL_TRUE);
798
799 glMatrixMode(GL_PROJECTION);
800 glPushMatrix();
801 glLoadIdentity();
802 glOrtho(0.0f, mWidth, 0.0f, mHeight, -1.0f, 1.0f);
803
804 glMatrixMode(GL_MODELVIEW);
805 glPushMatrix();
806 glLoadIdentity();
807
808 glColor4f(0.15f, 0.2f, 0.3f, 1.f);
809
810 gl_rect_2d_simple( mWidth, mHeight );
811
812 glMatrixMode(GL_PROJECTION);
813 glPopMatrix();
814
815 glMatrixMode(GL_MODELVIEW);
816 glPopMatrix();
817
818 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
819
820 LLVector3 target_pos(0, 0, 0);
821
822 LLQuaternion camera_rot = LLQuaternion(mCameraPitch, LLVector3::y_axis) *
823 LLQuaternion(mCameraYaw, LLVector3::z_axis);
824
825 LLQuaternion av_rot = camera_rot;
826 gCamera->setOriginAndLookAt(
827 target_pos + ((LLVector3(mCameraDistance, 0.f, 0.f) + mCameraOffset) * av_rot), // camera
828 LLVector3::z_axis, // up
829 target_pos + (mCameraOffset * av_rot) ); // point of interest
830
831 stop_glerror();
832
833 gCamera->setAspect((F32) mWidth / mHeight);
834 gCamera->setView(gCamera->getDefaultFOV() / mCameraZoom);
835 gCamera->setPerspective(FALSE, mOrigin.mX, mOrigin.mY, mWidth, mHeight, FALSE);
836
837 gPipeline.enableLightsAvatar(0.0);
838
839
840 glPushMatrix();
841 glScalef(0.5, 0.5, 0.5);
842
843 glBegin(GL_TRIANGLES);
844 glColor3f(0.8f, 0.8f, 0.8f);
845
846 const LLVolumeFace &vf = mVolume->getVolumeFace(0);
847 S32 num_indices = (S32)vf.mIndices.size();
848 for (U32 i = 0; (S32)i < num_indices; i++)
849 {
850 LLVector3 normal = vf.mVertices[vf.mIndices[i]].mNormal;
851 normal.normVec();
852 glNormal3f(normal.mV[VX], normal.mV[VY], normal.mV[VZ]);
853
854 LLVector3 position = vf.mVertices[vf.mIndices[i]].mPosition;
855 glVertex3f(position.mV[VX], position.mV[VY], position.mV[VZ]);
856 }
857
858 glEnd();
859
860 glPopMatrix();
861
862 return TRUE;
863}
864
865//-----------------------------------------------------------------------------
866// refresh()
867//-----------------------------------------------------------------------------
868void LLImagePreviewSculpted::refresh()
869{
870 mNeedsUpdate = TRUE;
871}
872
873//-----------------------------------------------------------------------------
874// rotate()
875//-----------------------------------------------------------------------------
876void LLImagePreviewSculpted::rotate(F32 yaw_radians, F32 pitch_radians)
877{
878 mCameraYaw = mCameraYaw + yaw_radians;
879
880 mCameraPitch = llclamp(mCameraPitch + pitch_radians, F_PI_BY_TWO * -0.8f, F_PI_BY_TWO * 0.8f);
881}
882
883//-----------------------------------------------------------------------------
884// zoom()
885//-----------------------------------------------------------------------------
886void LLImagePreviewSculpted::zoom(F32 zoom_amt)
887{
888 mCameraZoom = llclamp(mCameraZoom + zoom_amt, 1.f, 10.f);
889}
890
891void LLImagePreviewSculpted::pan(F32 right, F32 up)
892{
893 mCameraOffset.mV[VY] = llclamp(mCameraOffset.mV[VY] + right * mCameraDistance / mCameraZoom, -1.f, 1.f);
894 mCameraOffset.mV[VZ] = llclamp(mCameraOffset.mV[VZ] + up * mCameraDistance / mCameraZoom, -1.f, 1.f);
895}
diff --git a/linden/indra/newview/llfloaterimagepreview.h b/linden/indra/newview/llfloaterimagepreview.h
index 57874f1..1d212be 100644
--- a/linden/indra/newview/llfloaterimagepreview.h
+++ b/linden/indra/newview/llfloaterimagepreview.h
@@ -39,6 +39,34 @@ class LLViewerJointMesh;
39class LLVOAvatar; 39class LLVOAvatar;
40class LLTextBox; 40class LLTextBox;
41 41
42class LLImagePreviewSculpted : public LLDynamicTexture
43{
44 public:
45 LLImagePreviewSculpted(S32 width, S32 height);
46 virtual ~LLImagePreviewSculpted();
47
48 void setPreviewTarget(LLImageRaw *imagep, F32 distance);
49 void setTexture(U32 name) { mTextureName = name; }
50
51 BOOL render();
52 void refresh();
53 void rotate(F32 yaw_radians, F32 pitch_radians);
54 void zoom(F32 zoom_amt);
55 void pan(F32 right, F32 up);
56 virtual BOOL needsRender() { return mNeedsUpdate; }
57
58 protected:
59 BOOL mNeedsUpdate;
60 U32 mTextureName;
61 F32 mCameraDistance;
62 F32 mCameraYaw;
63 F32 mCameraPitch;
64 F32 mCameraZoom;
65 LLVector3 mCameraOffset;
66 LLPointer<LLVolume> mVolume;
67};
68
69
42class LLImagePreviewAvatar : public LLDynamicTexture 70class LLImagePreviewAvatar : public LLDynamicTexture
43{ 71{
44public: 72public:
@@ -91,6 +119,7 @@ protected:
91 119
92 LLPointer<LLImageRaw> mRawImagep; 120 LLPointer<LLImageRaw> mRawImagep;
93 LLImagePreviewAvatar* mAvatarPreview; 121 LLImagePreviewAvatar* mAvatarPreview;
122 LLImagePreviewSculpted* mSculptedPreview;
94 S32 mLastMouseX; 123 S32 mLastMouseX;
95 S32 mLastMouseY; 124 S32 mLastMouseY;
96 LLRect mPreviewRect; 125 LLRect mPreviewRect;
diff --git a/linden/indra/newview/llfloaterlandholdings.cpp b/linden/indra/newview/llfloaterlandholdings.cpp
index 3bdfdd9..9ebd18c 100644
--- a/linden/indra/newview/llfloaterlandholdings.cpp
+++ b/linden/indra/newview/llfloaterlandholdings.cpp
@@ -72,7 +72,7 @@ void LLFloaterLandHoldings::show(void*)
72 LLParcel::C_ANY, 72 LLParcel::C_ANY,
73 ""); 73 "");
74 74
75 // TODO: request updated money balance? 75 // TODO: request updated L$ balance?
76 floater->open(); /* Flawfinder: ignore */ 76 floater->open(); /* Flawfinder: ignore */
77} 77}
78 78
diff --git a/linden/indra/newview/llfloaterregioninfo.cpp b/linden/indra/newview/llfloaterregioninfo.cpp
index 682fda8..85fbfe1 100644
--- a/linden/indra/newview/llfloaterregioninfo.cpp
+++ b/linden/indra/newview/llfloaterregioninfo.cpp
@@ -2791,7 +2791,7 @@ bool LLDispatchEstateUpdateInfo::operator()(
2791 // UI, as anyone can teleport there. 2791 // UI, as anyone can teleport there.
2792 // However, gods need to be able to edit the access list for 2792 // However, gods need to be able to edit the access list for
2793 // linden estates, regardless of visibility, to allow object 2793 // linden estates, regardless of visibility, to allow object
2794 // and money transfers. 2794 // and L$ transfers.
2795 bool enable_agent = (!visible_from_mainland || (god && linden_estate)); 2795 bool enable_agent = (!visible_from_mainland || (god && linden_estate));
2796 bool enable_group = enable_agent; 2796 bool enable_group = enable_agent;
2797 bool enable_ban = !linden_estate; 2797 bool enable_ban = !linden_estate;
diff --git a/linden/indra/newview/llgivemoney.cpp b/linden/indra/newview/llgivemoney.cpp
index e89ab3d..9ae6c67 100644
--- a/linden/indra/newview/llgivemoney.cpp
+++ b/linden/indra/newview/llgivemoney.cpp
@@ -319,7 +319,7 @@ void LLFloaterPay::payViaObject(money_callback callback, const LLUUID& object_id
319 LLViewerObject* object = gObjectList.findObject(object_id); 319 LLViewerObject* object = gObjectList.findObject(object_id);
320 if (!object) return; 320 if (!object) return;
321 321
322 LLFloaterPay *floater = new LLFloaterPay("Give Money", callback, object_id, TRUE); 322 LLFloaterPay *floater = new LLFloaterPay("Give L$", callback, object_id, TRUE);
323 if (!floater) return; 323 if (!floater) return;
324 324
325 LLSelectNode* node = floater->mObjectSelection->getFirstRootNode(); 325 LLSelectNode* node = floater->mObjectSelection->getFirstRootNode();
@@ -352,7 +352,7 @@ void LLFloaterPay::payDirectly(money_callback callback,
352 const LLUUID& target_id, 352 const LLUUID& target_id,
353 BOOL is_group) 353 BOOL is_group)
354{ 354{
355 LLFloaterPay *floater = new LLFloaterPay("Give Money", callback, target_id, FALSE); 355 LLFloaterPay *floater = new LLFloaterPay("Give L$", callback, target_id, FALSE);
356 if (!floater) return; 356 if (!floater) return;
357 357
358 floater->childSetVisible("amount", TRUE); 358 floater->childSetVisible("amount", TRUE);
@@ -476,7 +476,7 @@ void LLFloaterPay::give(S32 amount)
476 } 476 }
477 else 477 else
478 { 478 {
479 // just transfer the money 479 // just transfer the L$
480 mCallback(mTargetUUID, gAgent.getRegion(), amount, mTargetIsGroup, TRANS_GIFT, LLString::null); 480 mCallback(mTargetUUID, gAgent.getRegion(), amount, mTargetIsGroup, TRANS_GIFT, LLString::null);
481 } 481 }
482 } 482 }
diff --git a/linden/indra/newview/llgivemoney.h b/linden/indra/newview/llgivemoney.h
index 664d1c8..f2b5a9a 100644
--- a/linden/indra/newview/llgivemoney.h
+++ b/linden/indra/newview/llgivemoney.h
@@ -56,13 +56,13 @@ public:
56 virtual ~LLFloaterPay(); 56 virtual ~LLFloaterPay();
57 57
58 // Pay into an in-world object, which will trigger scripts and eventually 58 // Pay into an in-world object, which will trigger scripts and eventually
59 // transfer the money to the resident or group that owns the object. 59 // transfer the L$ to the resident or group that owns the object.
60 // Object must be selected. Must pass object id, because it may be 60 // Object must be selected. Must pass object id, because it may be
61 // a child of the selected object. 61 // a child of the selected object.
62 static void payViaObject(money_callback callback, const LLUUID& object_id); 62 static void payViaObject(money_callback callback, const LLUUID& object_id);
63 63
64 // Pay an avatar or group directly, not via an object in the world. 64 // Pay an avatar or group directly, not via an object in the world.
65 // Scripts are not notified, money can be direcly transferred. 65 // Scripts are not notified, L$ can be direcly transferred.
66 static void payDirectly(money_callback callback, 66 static void payDirectly(money_callback callback,
67 const LLUUID& target_id, 67 const LLUUID& target_id,
68 BOOL is_group); 68 BOOL is_group);
diff --git a/linden/indra/newview/llhoverview.cpp b/linden/indra/newview/llhoverview.cpp
index 8296e14..d00b062 100644
--- a/linden/indra/newview/llhoverview.cpp
+++ b/linden/indra/newview/llhoverview.cpp
@@ -378,7 +378,7 @@ void LLHoverView::updateText()
378 378
379 if (object->flagTakesMoney() || (parent && parent->flagTakesMoney()) ) 379 if (object->flagTakesMoney() || (parent && parent->flagTakesMoney()) )
380 { 380 {
381 temp_str->append("Money "); 381 temp_str->append("L$ ");
382 suppressObjectHoverDisplay = FALSE; // Show tip 382 suppressObjectHoverDisplay = FALSE; // Show tip
383 } 383 }
384 384
diff --git a/linden/indra/newview/llmanipscale.cpp b/linden/indra/newview/llmanipscale.cpp
index c153339..648be34 100644
--- a/linden/indra/newview/llmanipscale.cpp
+++ b/linden/indra/newview/llmanipscale.cpp
@@ -604,6 +604,7 @@ void LLManipScale::renderFaces( const LLBBox& bbox )
604 if (mManipPart == LL_NO_PART) 604 if (mManipPart == LL_NO_PART)
605 { 605 {
606 glColor4fv( default_normal_color.mV ); 606 glColor4fv( default_normal_color.mV );
607 LLGLDepthTest gls_depth(GL_FALSE);
607 glBegin(GL_QUADS); 608 glBegin(GL_QUADS);
608 { 609 {
609 // Face 0 610 // Face 0
@@ -766,7 +767,8 @@ void LLManipScale::renderCorners( const LLBBox& bbox )
766void LLManipScale::renderBoxHandle( F32 x, F32 y, F32 z ) 767void LLManipScale::renderBoxHandle( F32 x, F32 y, F32 z )
767{ 768{
768 LLGLDisable gls_tex(GL_TEXTURE_2D); 769 LLGLDisable gls_tex(GL_TEXTURE_2D);
769 770 LLGLDepthTest gls_depth(GL_FALSE);
771
770 glPushMatrix(); 772 glPushMatrix();
771 { 773 {
772 glTranslatef( x, y, z ); 774 glTranslatef( x, y, z );
diff --git a/linden/indra/newview/llpanelgrouplandmoney.cpp b/linden/indra/newview/llpanelgrouplandmoney.cpp
index 02aaec4..b7a74b1 100644
--- a/linden/indra/newview/llpanelgrouplandmoney.cpp
+++ b/linden/indra/newview/llpanelgrouplandmoney.cpp
@@ -1,6 +1,6 @@
1/** 1/**
2 * @file llpanelgrouplandmoney.cpp 2 * @file llpanelgrouplandmoney.cpp
3 * @brief Panel for group land and money. 3 * @brief Panel for group land and L$.
4 * 4 *
5 * Copyright (c) 2006-2007, Linden Research, Inc. 5 * Copyright (c) 2006-2007, Linden Research, Inc.
6 * 6 *
@@ -481,7 +481,7 @@ void LLPanelGroupLandMoney::update(LLGroupChange gc)
481 481
482 panelp = tabp->getCurrentPanel(); 482 panelp = tabp->getCurrentPanel();
483 483
484 //now pull the event handler associated with that money tab 484 //now pull the event handler associated with that L$ tab
485 if ( panelp ) 485 if ( panelp )
486 { 486 {
487 eh = get_if_there(LLGroupMoneyTabEventHandler::sTabsToHandlers, 487 eh = get_if_there(LLGroupMoneyTabEventHandler::sTabsToHandlers,
@@ -634,7 +634,7 @@ BOOL LLPanelGroupLandMoney::postBuild()
634 } 634 }
635 635
636 636
637 //pull out the widgets for the money details tab 637 //pull out the widgets for the L$ details tab
638 earlierp = (LLButton*) getChildByName("earlier_details_button", true); 638 earlierp = (LLButton*) getChildByName("earlier_details_button", true);
639 laterp = (LLButton*) getChildByName("later_details_button", true); 639 laterp = (LLButton*) getChildByName("later_details_button", true);
640 textp = (LLTextEditor*) getChildByName("group_money_details_text", true); 640 textp = (LLTextEditor*) getChildByName("group_money_details_text", true);
@@ -671,7 +671,7 @@ BOOL LLPanelGroupLandMoney::postBuild()
671 mGroupID); 671 mGroupID);
672 } 672 }
673 673
674 //pull out the widgets for the money sales tab 674 //pull out the widgets for the L$ sales tab
675 earlierp = (LLButton*) getChildByName("earlier_sales_button", true); 675 earlierp = (LLButton*) getChildByName("earlier_sales_button", true);
676 laterp = (LLButton*) getChildByName("later_sales_button", true); 676 laterp = (LLButton*) getChildByName("later_sales_button", true);
677 textp = (LLTextEditor*) getChildByName("group_money_sales_text", true); 677 textp = (LLTextEditor*) getChildByName("group_money_sales_text", true);
@@ -708,7 +708,7 @@ void LLPanelGroupLandMoney::processPlacesReply(LLMessageSystem* msg, void**)
708 LLPanelGroupLandMoney* selfp = sGroupIDs.getIfThere(group_id); 708 LLPanelGroupLandMoney* selfp = sGroupIDs.getIfThere(group_id);
709 if(!selfp) 709 if(!selfp)
710 { 710 {
711 llinfos << "Group Panel Land Money " << group_id << " no longer in existence." 711 llinfos << "Group Panel Land L$ " << group_id << " no longer in existence."
712 << llendl; 712 << llendl;
713 return; 713 return;
714 } 714 }
@@ -1042,7 +1042,7 @@ void LLGroupMoneyDetailsTabEventHandler::processGroupAccountDetailsReply(LLMessa
1042 msg->getUUIDFast(_PREHASH_AgentData, _PREHASH_AgentID, agent_id ); 1042 msg->getUUIDFast(_PREHASH_AgentData, _PREHASH_AgentID, agent_id );
1043 if (gAgent.getID() != agent_id) 1043 if (gAgent.getID() != agent_id)
1044 { 1044 {
1045 llwarns << "Got group money history reply for another agent!" 1045 llwarns << "Got group L$ history reply for another agent!"
1046 << " Probably a userserver bug!" << llendl; 1046 << " Probably a userserver bug!" << llendl;
1047 return; 1047 return;
1048 } 1048 }
@@ -1217,7 +1217,7 @@ void LLGroupMoneySalesTabEventHandler::processGroupAccountTransactionsReply(LLMe
1217 msg->getUUIDFast(_PREHASH_AgentData, _PREHASH_AgentID, agent_id ); 1217 msg->getUUIDFast(_PREHASH_AgentData, _PREHASH_AgentID, agent_id );
1218 if (gAgent.getID() != agent_id) 1218 if (gAgent.getID() != agent_id)
1219 { 1219 {
1220 llwarns << "Got group money history reply for another agent!" 1220 llwarns << "Got group L$ history reply for another agent!"
1221 << " Probably a userserver bug!" << llendl; 1221 << " Probably a userserver bug!" << llendl;
1222 return; 1222 return;
1223 } 1223 }
@@ -1386,7 +1386,7 @@ void LLGroupMoneyPlanningTabEventHandler::processGroupAccountSummaryReply(LLMess
1386 msg->getUUIDFast(_PREHASH_AgentData, _PREHASH_AgentID, agent_id ); 1386 msg->getUUIDFast(_PREHASH_AgentData, _PREHASH_AgentID, agent_id );
1387 if (gAgent.getID() != agent_id) 1387 if (gAgent.getID() != agent_id)
1388 { 1388 {
1389 llwarns << "Got group money history reply for another agent!" 1389 llwarns << "Got group L$ history reply for another agent!"
1390 << " Probably a userserver bug!" << llendl; 1390 << " Probably a userserver bug!" << llendl;
1391 return; 1391 return;
1392 } 1392 }
@@ -1399,7 +1399,7 @@ void LLGroupMoneyPlanningTabEventHandler::processGroupAccountSummaryReply(LLMess
1399 self = LLGroupMoneyTabEventHandler::sInstanceIDs.getIfThere(request_id); 1399 self = LLGroupMoneyTabEventHandler::sInstanceIDs.getIfThere(request_id);
1400 if (!self) 1400 if (!self)
1401 { 1401 {
1402 llwarns << "GroupAccountSummary recieved for non-existent group money planning tab." << llendl; 1402 llwarns << "GroupAccountSummary recieved for non-existent group L$ planning tab." << llendl;
1403 return; 1403 return;
1404 } 1404 }
1405 1405
diff --git a/linden/indra/newview/llpanelgrouplandmoney.h b/linden/indra/newview/llpanelgrouplandmoney.h
index 6cd4753..8ac8bc7 100644
--- a/linden/indra/newview/llpanelgrouplandmoney.h
+++ b/linden/indra/newview/llpanelgrouplandmoney.h
@@ -1,6 +1,6 @@
1/** 1/**
2 * @file llpanelgrouplandmoney.h 2 * @file llpanelgrouplandmoney.h
3 * @brief Panel for group land and money. 3 * @brief Panel for group land and L$.
4 * 4 *
5 * Copyright (c) 2006-2007, Linden Research, Inc. 5 * Copyright (c) 2006-2007, Linden Research, Inc.
6 * 6 *
diff --git a/linden/indra/newview/llpanelobject.cpp b/linden/indra/newview/llpanelobject.cpp
index fb740a4..9fe94f9 100644
--- a/linden/indra/newview/llpanelobject.cpp
+++ b/linden/indra/newview/llpanelobject.cpp
@@ -53,6 +53,7 @@
53#include "llresmgr.h" 53#include "llresmgr.h"
54#include "llselectmgr.h" 54#include "llselectmgr.h"
55#include "llspinctrl.h" 55#include "llspinctrl.h"
56#include "lltexturectrl.h"
56#include "lltextbox.h" 57#include "lltextbox.h"
57#include "lltool.h" 58#include "lltool.h"
58#include "lltoolcomp.h" 59#include "lltoolcomp.h"
@@ -80,6 +81,7 @@ enum {
80 MI_TORUS, 81 MI_TORUS,
81 MI_TUBE, 82 MI_TUBE,
82 MI_RING, 83 MI_RING,
84 MI_SCULPT,
83 MI_NONE, 85 MI_NONE,
84 MI_VOLUME_COUNT 86 MI_VOLUME_COUNT
85}; 87};
@@ -252,6 +254,34 @@ BOOL LLPanelObject::postBuild()
252 childSetCommitCallback("Revolutions",onCommitParametric,this); 254 childSetCommitCallback("Revolutions",onCommitParametric,this);
253 mSpinRevolutions->setValidateBeforeCommit( &precommitValidate ); 255 mSpinRevolutions->setValidateBeforeCommit( &precommitValidate );
254 256
257 // Sculpt
258 mCtrlSculptTexture = LLUICtrlFactory::getTexturePickerByName(this,"sculpt texture control");
259 mCtrlSculptTexture->setDefaultImageAssetID(LLUUID(SCULPT_DEFAULT_TEXTURE));
260 mCtrlSculptTexture->setCommitCallback( LLPanelObject::onCommitSculpt );
261 mCtrlSculptTexture->setOnCancelCallback( LLPanelObject::onCancelSculpt );
262 mCtrlSculptTexture->setOnSelectCallback( LLPanelObject::onSelectSculpt );
263 mCtrlSculptTexture->setDropCallback(LLPanelObject::onDropSculpt);
264 mCtrlSculptTexture->setCallbackUserData( this );
265 // Don't allow (no copy) or (no transfer) textures to be selected during immediate mode
266 mCtrlSculptTexture->setImmediateFilterPermMask(PERM_COPY | PERM_TRANSFER);
267 // Allow any texture to be used during non-immediate mode.
268 mCtrlSculptTexture->setNonImmediateFilterPermMask(PERM_NONE);
269 LLAggregatePermissions texture_perms;
270 if (gSelectMgr->selectGetAggregateTexturePermissions(texture_perms))
271 {
272 BOOL can_copy =
273 texture_perms.getValue(PERM_COPY) == LLAggregatePermissions::AP_EMPTY ||
274 texture_perms.getValue(PERM_COPY) == LLAggregatePermissions::AP_ALL;
275 BOOL can_transfer =
276 texture_perms.getValue(PERM_TRANSFER) == LLAggregatePermissions::AP_EMPTY ||
277 texture_perms.getValue(PERM_TRANSFER) == LLAggregatePermissions::AP_ALL;
278 mCtrlSculptTexture->setCanApplyImmediately(can_copy && can_transfer);
279 }
280 else
281 {
282 mCtrlSculptTexture->setCanApplyImmediately(FALSE);
283 }
284
255 // Start with everyone disabled 285 // Start with everyone disabled
256 clearCtrls(); 286 clearCtrls();
257 287
@@ -603,6 +633,14 @@ void LLPanelObject::getState( )
603 llinfos << "Unknown path " << (S32) path << " profile " << (S32) profile << " in getState" << llendl; 633 llinfos << "Unknown path " << (S32) path << " profile " << (S32) profile << " in getState" << llendl;
604 selected_item = MI_BOX; 634 selected_item = MI_BOX;
605 } 635 }
636
637
638 if (objectp->getParameterEntryInUse(LLNetworkData::PARAMS_SCULPT))
639 {
640 selected_item = MI_SCULPT;
641 }
642
643
606 mComboBaseType ->setCurrentByIndex( selected_item ); 644 mComboBaseType ->setCurrentByIndex( selected_item );
607 mSelectedType = selected_item; 645 mSelectedType = selected_item;
608 646
@@ -760,6 +798,8 @@ void LLPanelObject::getState( )
760 798
761 // Compute control visibility, label names, and twist range. 799 // Compute control visibility, label names, and twist range.
762 // Start with defaults. 800 // Start with defaults.
801 BOOL cut_visible = TRUE;
802 BOOL hollow_visible = TRUE;
763 BOOL top_size_x_visible = TRUE; 803 BOOL top_size_x_visible = TRUE;
764 BOOL top_size_y_visible = TRUE; 804 BOOL top_size_y_visible = TRUE;
765 BOOL top_shear_x_visible = TRUE; 805 BOOL top_shear_x_visible = TRUE;
@@ -770,6 +810,7 @@ void LLPanelObject::getState( )
770 BOOL skew_visible = FALSE; 810 BOOL skew_visible = FALSE;
771 BOOL radius_offset_visible = FALSE; 811 BOOL radius_offset_visible = FALSE;
772 BOOL revolutions_visible = FALSE; 812 BOOL revolutions_visible = FALSE;
813 BOOL sculpt_texture_visible = FALSE;
773 F32 twist_min = OBJECT_TWIST_LINEAR_MIN; 814 F32 twist_min = OBJECT_TWIST_LINEAR_MIN;
774 F32 twist_max = OBJECT_TWIST_LINEAR_MAX; 815 F32 twist_max = OBJECT_TWIST_LINEAR_MAX;
775 F32 twist_inc = OBJECT_TWIST_LINEAR_INC; 816 F32 twist_inc = OBJECT_TWIST_LINEAR_INC;
@@ -809,6 +850,23 @@ void LLPanelObject::getState( )
809 twist_inc = OBJECT_TWIST_INC; 850 twist_inc = OBJECT_TWIST_INC;
810 851
811 break; 852 break;
853
854 case MI_SCULPT:
855 cut_visible = FALSE;
856 hollow_visible = FALSE;
857 twist_visible = FALSE;
858 top_size_x_visible = FALSE;
859 top_size_y_visible = FALSE;
860 top_shear_x_visible = FALSE;
861 top_shear_y_visible = FALSE;
862 skew_visible = FALSE;
863 advanced_cut_visible = FALSE;
864 taper_visible = FALSE;
865 radius_offset_visible = FALSE;
866 revolutions_visible = FALSE;
867 sculpt_texture_visible = TRUE;
868
869 break;
812 870
813 case MI_BOX: 871 case MI_BOX:
814 case MI_CYLINDER: 872 case MI_CYLINDER:
@@ -929,6 +987,15 @@ void LLPanelObject::getState( )
929 mSpinRevolutions ->setEnabled( enabled ); 987 mSpinRevolutions ->setEnabled( enabled );
930 988
931 // Update field visibility 989 // Update field visibility
990 mLabelCut ->setVisible( cut_visible );
991 mSpinCutBegin ->setVisible( cut_visible );
992 mSpinCutEnd ->setVisible( cut_visible );
993
994 mLabelHollow ->setVisible( hollow_visible );
995 mSpinHollow ->setVisible( hollow_visible );
996 mLabelHoleType ->setVisible( hollow_visible );
997 mComboHoleType ->setVisible( hollow_visible );
998
932 mLabelTwist ->setVisible( twist_visible ); 999 mLabelTwist ->setVisible( twist_visible );
933 mSpinTwist ->setVisible( twist_visible ); 1000 mSpinTwist ->setVisible( twist_visible );
934 mSpinTwistBegin ->setVisible( twist_visible ); 1001 mSpinTwistBegin ->setVisible( twist_visible );
@@ -962,6 +1029,30 @@ void LLPanelObject::getState( )
962 mLabelRevolutions->setVisible( revolutions_visible ); 1029 mLabelRevolutions->setVisible( revolutions_visible );
963 mSpinRevolutions ->setVisible( revolutions_visible ); 1030 mSpinRevolutions ->setVisible( revolutions_visible );
964 1031
1032 mCtrlSculptTexture->setVisible( sculpt_texture_visible );
1033
1034
1035 // sculpt texture
1036
1037 if (selected_item == MI_SCULPT)
1038 {
1039 LLUUID id;
1040 LLSculptParams *sculpt_params = (LLSculptParams *)objectp->getParameterEntry(LLNetworkData::PARAMS_SCULPT);
1041
1042 LLTextureCtrl* mTextureCtrl = LLViewerUICtrlFactory::getTexturePickerByName(this,"sculpt texture control");
1043 if((mTextureCtrl) && (sculpt_params))
1044 {
1045 mTextureCtrl->setTentative(FALSE);
1046 mTextureCtrl->setEnabled(editable);
1047 mTextureCtrl->setImageAssetID(sculpt_params->getSculptTexture());
1048
1049 if (mObject != objectp) // we've just selected a new object, so save for undo
1050 mSculptTextureRevert = sculpt_params->getSculptTexture();
1051 }
1052
1053 }
1054
1055
965 //---------------------------------------------------------------------------- 1056 //----------------------------------------------------------------------------
966 1057
967 mObject = objectp; 1058 mObject = objectp;
@@ -1083,9 +1174,26 @@ void LLPanelObject::onCommitParametric( LLUICtrl* ctrl, void* userdata )
1083 LLVolumeParams volume_params; 1174 LLVolumeParams volume_params;
1084 self->getVolumeParams(volume_params); 1175 self->getVolumeParams(volume_params);
1085 1176
1177
1178
1179 // set sculpting
1180 S32 selected_type = self->mComboBaseType->getCurrentIndex();
1181
1182 if (selected_type == MI_SCULPT)
1183 {
1184 self->mObject->setParameterEntryInUse(LLNetworkData::PARAMS_SCULPT, TRUE, TRUE);
1185 }
1186 else
1187 {
1188 LLSculptParams *sculpt_params = (LLSculptParams *)self->mObject->getParameterEntry(LLNetworkData::PARAMS_SCULPT);
1189 if (sculpt_params)
1190 self->mObject->setParameterEntryInUse(LLNetworkData::PARAMS_SCULPT, FALSE, TRUE);
1191 }
1192
1086 // Update the volume, if necessary. 1193 // Update the volume, if necessary.
1087 self->mObject->updateVolume(volume_params); 1194 self->mObject->updateVolume(volume_params);
1088 1195
1196
1089 // This was added to make sure thate when changes are made, the UI 1197 // This was added to make sure thate when changes are made, the UI
1090 // adjusts to present valid options. 1198 // adjusts to present valid options.
1091 // *FIX: only some changes, ie, hollow or primitive type changes, 1199 // *FIX: only some changes, ie, hollow or primitive type changes,
@@ -1138,6 +1246,11 @@ void LLPanelObject::getVolumeParams(LLVolumeParams& volume_params)
1138 path = LL_PCODE_PATH_CIRCLE; 1246 path = LL_PCODE_PATH_CIRCLE;
1139 break; 1247 break;
1140 1248
1249 case MI_SCULPT:
1250 profile = LL_PCODE_PROFILE_CIRCLE;
1251 path = LL_PCODE_PATH_CIRCLE;
1252 break;
1253
1141 default: 1254 default:
1142 llwarns << "Unknown base type " << selected_type 1255 llwarns << "Unknown base type " << selected_type
1143 << " in getVolumeParams()" << llendl; 1256 << " in getVolumeParams()" << llendl;
@@ -1148,6 +1261,7 @@ void LLPanelObject::getVolumeParams(LLVolumeParams& volume_params)
1148 break; 1261 break;
1149 } 1262 }
1150 1263
1264
1151 if (path == LL_PCODE_PATH_LINE) 1265 if (path == LL_PCODE_PATH_LINE)
1152 { 1266 {
1153 LLVOVolume *volobjp = (LLVOVolume *)(LLViewerObject*)(mObject); 1267 LLVOVolume *volobjp = (LLVOVolume *)(LLViewerObject*)(mObject);
@@ -1358,6 +1472,23 @@ void LLPanelObject::getVolumeParams(LLVolumeParams& volume_params)
1358 F32 shear_x = mSpinShearX->get(); 1472 F32 shear_x = mSpinShearX->get();
1359 F32 shear_y = mSpinShearY->get(); 1473 F32 shear_y = mSpinShearY->get();
1360 volume_params.setShear( shear_x, shear_y ); 1474 volume_params.setShear( shear_x, shear_y );
1475
1476 if (selected_type == MI_SCULPT)
1477 {
1478 volume_params.setSculptID(LLUUID::null, 0);
1479 volume_params.setBeginAndEndT (0, 1);
1480 volume_params.setBeginAndEndS (0, 1);
1481 volume_params.setHollow (0);
1482 volume_params.setTwistBegin (0);
1483 volume_params.setTwistEnd (0);
1484 volume_params.setRatio (1, 0.5);
1485 volume_params.setShear (0, 0);
1486 volume_params.setTaper (0, 0);
1487 volume_params.setRevolutions (1);
1488 volume_params.setRadiusOffset (0);
1489 volume_params.setSkew (0);
1490 }
1491
1361} 1492}
1362 1493
1363// BUG: Make work with multiple objects 1494// BUG: Make work with multiple objects
@@ -1502,6 +1633,18 @@ void LLPanelObject::sendPosition()
1502 } 1633 }
1503} 1634}
1504 1635
1636void LLPanelObject::sendSculpt()
1637{
1638 LLTextureCtrl* mTextureCtrl = gUICtrlFactory->getTexturePickerByName(this,"sculpt texture control");
1639 if(!mTextureCtrl)
1640 return;
1641
1642 LLSculptParams sculpt_params;
1643 sculpt_params.setSculptTexture(mTextureCtrl->getImageAssetID());
1644 sculpt_params.setSculptType(LL_SCULPT_TYPE_SPHERE);
1645
1646 mObject->setParameterEntry(LLNetworkData::PARAMS_SCULPT, sculpt_params, TRUE);
1647}
1505 1648
1506void LLPanelObject::refresh() 1649void LLPanelObject::refresh()
1507{ 1650{
@@ -1697,3 +1840,59 @@ void LLPanelObject::onCommitCastShadows( LLUICtrl* ctrl, void* userdata )
1697 LLPanelObject* self = (LLPanelObject*) userdata; 1840 LLPanelObject* self = (LLPanelObject*) userdata;
1698 self->sendCastShadows(); 1841 self->sendCastShadows();
1699} 1842}
1843
1844
1845// static
1846void LLPanelObject::onSelectSculpt(LLUICtrl* ctrl, void* userdata)
1847{
1848 LLPanelObject* self = (LLPanelObject*) userdata;
1849
1850 LLTextureCtrl* mTextureCtrl = gUICtrlFactory->getTexturePickerByName(self, "sculpt texture control");
1851
1852 if (mTextureCtrl)
1853 self->mSculptTextureRevert = mTextureCtrl->getImageAssetID();
1854
1855 self->sendSculpt();
1856}
1857
1858
1859void LLPanelObject::onCommitSculpt( LLUICtrl* ctrl, void* userdata )
1860{
1861 LLPanelObject* self = (LLPanelObject*) userdata;
1862
1863 self->sendSculpt();
1864}
1865
1866// static
1867BOOL LLPanelObject::onDropSculpt(LLUICtrl*, LLInventoryItem* item, void* userdata)
1868{
1869 LLPanelObject* self = (LLPanelObject*) userdata;
1870
1871 LLTextureCtrl* mTextureCtrl = gUICtrlFactory->getTexturePickerByName(self, "sculpt texture control");
1872
1873 if (mTextureCtrl)
1874 {
1875 LLUUID asset = item->getAssetUUID();
1876
1877 mTextureCtrl->setImageAssetID(asset);
1878 self->mSculptTextureRevert = asset;
1879 }
1880
1881
1882 return TRUE;
1883}
1884
1885
1886// static
1887void LLPanelObject::onCancelSculpt(LLUICtrl* ctrl, void* userdata)
1888{
1889 LLPanelObject* self = (LLPanelObject*) userdata;
1890
1891 LLTextureCtrl* mTextureCtrl = gUICtrlFactory->getTexturePickerByName(self,"sculpt texture control");
1892 if(!mTextureCtrl)
1893 return;
1894
1895 mTextureCtrl->setImageAssetID(self->mSculptTextureRevert);
1896
1897 self->sendSculpt();
1898}
diff --git a/linden/indra/newview/llpanelobject.h b/linden/indra/newview/llpanelobject.h
index 76b0dab..c734b38 100644
--- a/linden/indra/newview/llpanelobject.h
+++ b/linden/indra/newview/llpanelobject.h
@@ -43,6 +43,9 @@ class LLViewerObject;
43class LLComboBox; 43class LLComboBox;
44class LLPanelInventory; 44class LLPanelInventory;
45class LLColorSwatchCtrl; 45class LLColorSwatchCtrl;
46class LLTextureCtrl;
47class LLInventoryItem;
48class LLUUID;
46 49
47class LLPanelObject : public LLPanel 50class LLPanelObject : public LLPanel
48{ 51{
@@ -70,6 +73,11 @@ public:
70 static void onCommitParametric(LLUICtrl* ctrl, void* userdata); 73 static void onCommitParametric(LLUICtrl* ctrl, void* userdata);
71 74
72 static void onCommitMaterial( LLUICtrl* ctrl, void* userdata); 75 static void onCommitMaterial( LLUICtrl* ctrl, void* userdata);
76
77 static void onCommitSculpt( LLUICtrl* ctrl, void* userdata);
78 static void onCancelSculpt( LLUICtrl* ctrl, void* userdata);
79 static void onSelectSculpt( LLUICtrl* ctrl, void* userdata);
80 static BOOL onDropSculpt(LLUICtrl* ctrl, LLInventoryItem* item, void* ud);
73 81
74protected: 82protected:
75 void getState(); 83 void getState();
@@ -81,7 +89,8 @@ protected:
81 void sendIsTemporary(); 89 void sendIsTemporary();
82 void sendIsPhantom(); 90 void sendIsPhantom();
83 void sendCastShadows(); 91 void sendCastShadows();
84 92 void sendSculpt();
93
85 void getVolumeParams(LLVolumeParams& volume_params); 94 void getVolumeParams(LLVolumeParams& volume_params);
86 95
87protected: 96protected:
@@ -153,12 +162,16 @@ protected:
153 LLCheckBoxCtrl *mCheckPhantom; 162 LLCheckBoxCtrl *mCheckPhantom;
154 LLCheckBoxCtrl *mCheckCastShadows; 163 LLCheckBoxCtrl *mCheckCastShadows;
155 164
165 LLTextureCtrl *mCtrlSculptTexture;
166
156 LLVector3 mCurEulerDegrees; // to avoid sending rotation when not changed 167 LLVector3 mCurEulerDegrees; // to avoid sending rotation when not changed
157 BOOL mIsPhysical; // to avoid sending "physical" when not changed 168 BOOL mIsPhysical; // to avoid sending "physical" when not changed
158 BOOL mIsTemporary; // to avoid sending "temporary" when not changed 169 BOOL mIsTemporary; // to avoid sending "temporary" when not changed
159 BOOL mIsPhantom; // to avoid sending "phantom" when not changed 170 BOOL mIsPhantom; // to avoid sending "phantom" when not changed
160 BOOL mCastShadows; // to avoid sending "cast shadows" when not changed 171 BOOL mCastShadows; // to avoid sending "cast shadows" when not changed
161 S32 mSelectedType; // So we know what selected type we last were 172 S32 mSelectedType; // So we know what selected type we last were
173
174 LLUUID mSculptTextureRevert; // so we can revert the sculpt texture on cancel
162 175
163 LLPointer<LLViewerObject> mObject; 176 LLPointer<LLViewerObject> mObject;
164 LLPointer<LLViewerObject> mRootObject; 177 LLPointer<LLViewerObject> mRootObject;
diff --git a/linden/indra/newview/llpreview.cpp b/linden/indra/newview/llpreview.cpp
index 23f31aa..7137f85 100644
--- a/linden/indra/newview/llpreview.cpp
+++ b/linden/indra/newview/llpreview.cpp
@@ -484,8 +484,11 @@ LLPreview* LLPreview::getFirstPreviewForSource(const LLUUID& source_id)
484 484
485void LLPreview::userSetShape(const LLRect& new_rect) 485void LLPreview::userSetShape(const LLRect& new_rect)
486{ 486{
487 userResized(); 487 if(new_rect.getWidth() != mRect.getWidth() || new_rect.getHeight() != mRect.getHeight())
488 LLView::userSetShape(new_rect); 488 {
489 userResized();
490 }
491 LLFloater::userSetShape(new_rect);
489} 492}
490 493
491// 494//
@@ -510,9 +513,12 @@ void LLMultiPreview::open() /*Flawfinder: ignore*/
510 513
511void LLMultiPreview::userSetShape(const LLRect& new_rect) 514void LLMultiPreview::userSetShape(const LLRect& new_rect)
512{ 515{
513 LLPreview* frontmost_preview = (LLPreview*)mTabContainer->getCurrentPanel(); 516 if(new_rect.getWidth() != mRect.getWidth() || new_rect.getHeight() != mRect.getHeight())
514 if (frontmost_preview) frontmost_preview->userResized(); 517 {
515 LLView::userSetShape(new_rect); 518 LLPreview* frontmost_preview = (LLPreview*)mTabContainer->getCurrentPanel();
519 if (frontmost_preview) frontmost_preview->userResized();
520 }
521 LLFloater::userSetShape(new_rect);
516} 522}
517 523
518 524
diff --git a/linden/indra/newview/llstartup.cpp b/linden/indra/newview/llstartup.cpp
index e83aa0d..54161c0 100644
--- a/linden/indra/newview/llstartup.cpp
+++ b/linden/indra/newview/llstartup.cpp
@@ -2124,7 +2124,7 @@ BOOL idle_startup()
2124 // request mute list 2124 // request mute list
2125 gMuteListp->requestFromServer(gAgent.getID()); 2125 gMuteListp->requestFromServer(gAgent.getID());
2126 2126
2127 // Get money and ownership credit information 2127 // Get L$ and ownership credit information
2128 msg->newMessageFast(_PREHASH_MoneyBalanceRequest); 2128 msg->newMessageFast(_PREHASH_MoneyBalanceRequest);
2129 msg->nextBlockFast(_PREHASH_AgentData); 2129 msg->nextBlockFast(_PREHASH_AgentData);
2130 msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); 2130 msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
@@ -2320,7 +2320,7 @@ BOOL idle_startup()
2320 gViewerWindow->sendShapeToSim(); 2320 gViewerWindow->sendShapeToSim();
2321 2321
2322 // Ignore stipend information for now. Money history is on the web site. 2322 // Ignore stipend information for now. Money history is on the web site.
2323 // if needed, show the money history window 2323 // if needed, show the L$ history window
2324 //if (stipend_since_login && !gNoRender) 2324 //if (stipend_since_login && !gNoRender)
2325 //{ 2325 //{
2326 //} 2326 //}
diff --git a/linden/indra/newview/llviewercamera.cpp b/linden/indra/newview/llviewercamera.cpp
index 3a21ddf..c52b51c 100644
--- a/linden/indra/newview/llviewercamera.cpp
+++ b/linden/indra/newview/llviewercamera.cpp
@@ -622,7 +622,7 @@ BOOL LLViewerCamera::areVertsVisible(LLViewerObject* volumep, BOOL all_verts)
622 622
623 LLMatrix4 render_mat(vo_volume->getRenderRotation(), LLVector4(vo_volume->getRenderPosition())); 623 LLMatrix4 render_mat(vo_volume->getRenderRotation(), LLVector4(vo_volume->getRenderPosition()));
624 624
625 num_faces = volume->getNumFaces(); 625 num_faces = volume->getNumVolumeFaces();
626 for (i = 0; i < num_faces; i++) 626 for (i = 0; i < num_faces; i++)
627 { 627 {
628 const LLVolumeFace& face = volume->getVolumeFace(i); 628 const LLVolumeFace& face = volume->getVolumeFace(i);
diff --git a/linden/indra/newview/llviewerinventory.cpp b/linden/indra/newview/llviewerinventory.cpp
index d271af5..0a65b8b 100644
--- a/linden/indra/newview/llviewerinventory.cpp
+++ b/linden/indra/newview/llviewerinventory.cpp
@@ -184,6 +184,7 @@ void LLViewerInventoryItem::updateServer(BOOL is_new) const
184 msg->nextBlockFast(_PREHASH_AgentData); 184 msg->nextBlockFast(_PREHASH_AgentData);
185 msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); 185 msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
186 msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); 186 msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
187 msg->addUUIDFast(_PREHASH_TransactionID, mTransactionID);
187 msg->nextBlockFast(_PREHASH_InventoryData); 188 msg->nextBlockFast(_PREHASH_InventoryData);
188 msg->addU32Fast(_PREHASH_CallbackID, 0); 189 msg->addU32Fast(_PREHASH_CallbackID, 0);
189 packMessage(msg); 190 packMessage(msg);
diff --git a/linden/indra/newview/llviewermessage.cpp b/linden/indra/newview/llviewermessage.cpp
index 5eafd9d..4973989 100644
--- a/linden/indra/newview/llviewermessage.cpp
+++ b/linden/indra/newview/llviewermessage.cpp
@@ -4000,7 +4000,7 @@ void process_money_balance_reply( LLMessageSystem* msg, void** )
4000 msg->getS32("MoneyData", "SquareMetersCredit", credit); 4000 msg->getS32("MoneyData", "SquareMetersCredit", credit);
4001 msg->getS32("MoneyData", "SquareMetersCommitted", committed); 4001 msg->getS32("MoneyData", "SquareMetersCommitted", committed);
4002 msg->getStringFast(_PREHASH_MoneyData, _PREHASH_Description, STD_STRING_BUF_SIZE, desc); 4002 msg->getStringFast(_PREHASH_MoneyData, _PREHASH_Description, STD_STRING_BUF_SIZE, desc);
4003 llinfos << "money, credit, committed: " << balance << " " << credit << " " 4003 llinfos << "L$, credit, committed: " << balance << " " << credit << " "
4004 << committed << llendl; 4004 << committed << llendl;
4005 4005
4006 if (gStatusBar) 4006 if (gStatusBar)
diff --git a/linden/indra/newview/llviewerobject.cpp b/linden/indra/newview/llviewerobject.cpp
index 58d57b5..88ac978 100644
--- a/linden/indra/newview/llviewerobject.cpp
+++ b/linden/indra/newview/llviewerobject.cpp
@@ -1328,9 +1328,8 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys,
1328 1328
1329 U32 value; 1329 U32 value;
1330 dp->unpackU32(value, "SpecialCode"); 1330 dp->unpackU32(value, "SpecialCode");
1331
1332 dp->setPassFlags(value); 1331 dp->setPassFlags(value);
1333 1332 dp->unpackUUID(owner_id, "Owner");
1334 1333
1335 if (value & 0x80) 1334 if (value & 0x80)
1336 { 1335 {
@@ -1469,7 +1468,6 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys,
1469 if (value & 0x10) 1468 if (value & 0x10)
1470 { 1469 {
1471 dp->unpackUUID(sound_uuid, "SoundUUID"); 1470 dp->unpackUUID(sound_uuid, "SoundUUID");
1472 dp->unpackUUID(owner_id, "OwnerID");
1473 dp->unpackF32(gain, "SoundGain"); 1471 dp->unpackF32(gain, "SoundGain");
1474 dp->unpackU8(sound_flags, "SoundFlags"); 1472 dp->unpackU8(sound_flags, "SoundFlags");
1475 dp->unpackF32(cutoff, "SoundRadius"); 1473 dp->unpackF32(cutoff, "SoundRadius");
@@ -4016,9 +4014,9 @@ void LLViewerObject::unpackParticleSource(const S32 block_num, const LLUUID& own
4016 } 4014 }
4017 else 4015 else
4018 { 4016 {
4017 LLViewerPartSourceScript *pss = LLViewerPartSourceScript::unpackPSS(this, NULL, block_num);
4019 //If the owner is muted, don't create the system 4018 //If the owner is muted, don't create the system
4020 if(gMuteListp->isMuted(owner_id)) return; 4019 if(gMuteListp->isMuted(owner_id)) return;
4021 LLViewerPartSourceScript *pss = LLViewerPartSourceScript::unpackPSS(this, NULL, block_num);
4022 4020
4023 // We need to be able to deal with a particle source that hasn't changed, but still got an update! 4021 // We need to be able to deal with a particle source that hasn't changed, but still got an update!
4024 if (pss) 4022 if (pss)
@@ -4065,10 +4063,9 @@ void LLViewerObject::unpackParticleSource(LLDataPacker &dp, const LLUUID& owner_
4065 } 4063 }
4066 else 4064 else
4067 { 4065 {
4066 LLViewerPartSourceScript *pss = LLViewerPartSourceScript::unpackPSS(this, NULL, dp);
4068 //If the owner is muted, don't create the system 4067 //If the owner is muted, don't create the system
4069 if(gMuteListp->isMuted(owner_id)) return; 4068 if(gMuteListp->isMuted(owner_id)) return;
4070 LLViewerPartSourceScript *pss = LLViewerPartSourceScript::unpackPSS(this, NULL, dp);
4071
4072 // We need to be able to deal with a particle source that hasn't changed, but still got an update! 4069 // We need to be able to deal with a particle source that hasn't changed, but still got an update!
4073 if (pss) 4070 if (pss)
4074 { 4071 {
@@ -4260,6 +4257,12 @@ LLViewerObject::ExtraParameter* LLViewerObject::createNewParameterEntry(U16 para
4260 new_block = new LLLightParams(); 4257 new_block = new LLLightParams();
4261 break; 4258 break;
4262 } 4259 }
4260 case LLNetworkData::PARAMS_SCULPT:
4261 {
4262 new_block = new LLSculptParams();
4263 break;
4264 }
4265
4263 default: 4266 default:
4264 { 4267 {
4265 llinfos << "Unknown param type." << llendl; 4268 llinfos << "Unknown param type." << llendl;
diff --git a/linden/indra/newview/llviewerregion.cpp b/linden/indra/newview/llviewerregion.cpp
index 51b1ebe..4409f8b 100644
--- a/linden/indra/newview/llviewerregion.cpp
+++ b/linden/indra/newview/llviewerregion.cpp
@@ -62,7 +62,7 @@
62 62
63// Viewer object cache version, change if object update 63// Viewer object cache version, change if object update
64// format changes. JC 64// format changes. JC
65const U32 INDRA_OBJECT_CACHE_VERSION = 12; 65const U32 INDRA_OBJECT_CACHE_VERSION = 14;
66 66
67 67
68extern BOOL gNoRender; 68extern BOOL gNoRender;
diff --git a/linden/indra/newview/llvovolume.cpp b/linden/indra/newview/llvovolume.cpp
index 0a778e4..b9bdddc 100644
--- a/linden/indra/newview/llvovolume.cpp
+++ b/linden/indra/newview/llvovolume.cpp
@@ -89,6 +89,8 @@ LLVOVolume::LLVOVolume(const LLUUID &id, const LLPCode pcode, LLViewerRegion *re
89 mGlobalVolume = FALSE; 89 mGlobalVolume = FALSE;
90 mVObjRadius = LLVector3(1,1,0.5f).magVec(); 90 mVObjRadius = LLVector3(1,1,0.5f).magVec();
91 mNumFaces = 0; 91 mNumFaces = 0;
92 mLODChanged = FALSE;
93 mSculptChanged = FALSE;
92} 94}
93 95
94LLVOVolume::~LLVOVolume() 96LLVOVolume::~LLVOVolume()
@@ -116,6 +118,15 @@ U32 LLVOVolume::processUpdateMessage(LLMessageSystem *mesgsys,
116 // Do base class updates... 118 // Do base class updates...
117 U32 retval = LLViewerObject::processUpdateMessage(mesgsys, user_data, block_num, update_type, dp); 119 U32 retval = LLViewerObject::processUpdateMessage(mesgsys, user_data, block_num, update_type, dp);
118 120
121 LLUUID sculpt_id;
122 U8 sculpt_type = 0;
123 if (isSculpted())
124 {
125 LLSculptParams *sculpt_params = (LLSculptParams *)getParameterEntry(LLNetworkData::PARAMS_SCULPT);
126 sculpt_id = sculpt_params->getSculptTexture();
127 sculpt_type = sculpt_params->getSculptType();
128 }
129
119 if (!dp) 130 if (!dp)
120 { 131 {
121 if (update_type == OUT_FULL) 132 if (update_type == OUT_FULL)
@@ -157,6 +168,7 @@ U32 LLVOVolume::processUpdateMessage(LLMessageSystem *mesgsys,
157 // Unpack volume data 168 // Unpack volume data
158 LLVolumeParams volume_params; 169 LLVolumeParams volume_params;
159 LLVolumeMessage::unpackVolumeParams(&volume_params, mesgsys, _PREHASH_ObjectData, block_num); 170 LLVolumeMessage::unpackVolumeParams(&volume_params, mesgsys, _PREHASH_ObjectData, block_num);
171 volume_params.setSculptID(sculpt_id, sculpt_type);
160 172
161 if (setVolume(volume_params, 0)) 173 if (setVolume(volume_params, 0))
162 { 174 {
@@ -186,7 +198,9 @@ U32 LLVOVolume::processUpdateMessage(LLMessageSystem *mesgsys,
186 llwarns << "Bogus volume parameters in object " << getID() << llendl; 198 llwarns << "Bogus volume parameters in object " << getID() << llendl;
187 llwarns << getRegion()->getOriginGlobal() << llendl; 199 llwarns << getRegion()->getOriginGlobal() << llendl;
188 } 200 }
189 201
202 volume_params.setSculptID(sculpt_id, sculpt_type);
203
190 if (setVolume(volume_params, 0)) 204 if (setVolume(volume_params, 0))
191 { 205 {
192 markForUpdate(TRUE); 206 markForUpdate(TRUE);
@@ -462,6 +476,28 @@ void LLVOVolume::updateTextures()
462 if (pri > max_vsize) max_vsize = pri; 476 if (pri > max_vsize) max_vsize = pri;
463 } 477 }
464 } 478 }
479
480 if (isSculpted())
481 {
482 LLSculptParams *sculpt_params = (LLSculptParams *)getParameterEntry(LLNetworkData::PARAMS_SCULPT);
483 LLUUID id = sculpt_params->getSculptTexture();
484 mSculptTexture = gImageList.getImage(id);
485 if (mSculptTexture.notNull())
486 {
487 mSculptTexture->addTextureStats(mPixelArea);
488 }
489
490 S32 desired_discard = MAX_LOD - mLOD;
491 S32 current_discard = getVolume()->getSculptLevel();
492
493 if (desired_discard != current_discard)
494 {
495 gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_VOLUME, FALSE);
496 mSculptChanged = TRUE;
497 }
498
499 }
500
465 501
466 if (gPipeline.hasRenderDebugMask(LLPipeline::RENDER_DEBUG_TEXTURE_AREA)) 502 if (gPipeline.hasRenderDebugMask(LLPipeline::RENDER_DEBUG_TEXTURE_AREA))
467 { 503 {
@@ -624,22 +660,79 @@ BOOL LLVOVolume::setVolume(const LLVolumeParams &volume_params, const S32 detail
624 } 660 }
625 } 661 }
626 } 662 }
663
627 mGlobalVolume = (mVolumeImpl && mVolumeImpl->isVolumeGlobal()); 664 mGlobalVolume = (mVolumeImpl && mVolumeImpl->isVolumeGlobal());
628 665
629 if (LLPrimitive::setVolume(volume_params, mLOD, (mVolumeImpl && mVolumeImpl->isVolumeUnique()))) 666 if ((LLPrimitive::setVolume(volume_params, mLOD, (mVolumeImpl && mVolumeImpl->isVolumeUnique()))) || mSculptChanged)
630 { 667 {
631 mFaceMappingChanged = TRUE; 668 mFaceMappingChanged = TRUE;
632 669
633 if (mVolumeImpl) 670 if (mVolumeImpl)
634 { 671 {
635 mVolumeImpl->onSetVolume(volume_params, detail); 672 mVolumeImpl->onSetVolume(volume_params, detail);
636 } 673 }
674
675 if (isSculpted())
676 {
677 mSculptTexture = gImageList.getImage(volume_params.getSculptID());
678 if (mSculptTexture.notNull())
679 {
680 sculpt();
681 }
682 }
683 else
684 {
685 mSculptTexture = NULL;
686 }
637 687
638 return TRUE; 688 return TRUE;
639 } 689 }
640 return FALSE; 690 return FALSE;
641} 691}
642 692
693// sculpt replaces generate() for sculpted surfaces
694void LLVOVolume::sculpt()
695{
696 U16 sculpt_height = 0;
697 U16 sculpt_width = 0;
698 S8 sculpt_components = 0;
699 const U8* sculpt_data = NULL;
700
701 if (mSculptTexture.notNull())
702 {
703 S32 discard_level;
704 S32 desired_discard = MAX_LOD - mLOD; // desired
705
706 discard_level = desired_discard;
707
708 S32 max_discard = mSculptTexture->getMaxDiscardLevel();
709 if (discard_level > max_discard)
710 discard_level = max_discard; // clamp to the best we can do
711
712 S32 best_discard = mSculptTexture->getDiscardLevel();
713 if (discard_level < best_discard)
714 discard_level = best_discard; // clamp to what we have
715
716 if (best_discard == -1)
717 discard_level = -1; // and if we have nothing, set to nothing
718
719
720 S32 current_discard = getVolume()->getSculptLevel();
721 if (current_discard == discard_level) // no work to do here
722 return;
723
724 LLPointer<LLImageRaw> raw_image = new LLImageRaw();
725 mSculptTexture->readBackRaw(discard_level, raw_image, TRUE);
726
727 sculpt_height = raw_image->getHeight();
728 sculpt_width = raw_image->getWidth();
729
730 sculpt_components = raw_image->getComponents();
731 sculpt_data = raw_image->getData();
732 getVolume()->sculpt(sculpt_width, sculpt_height, sculpt_components, sculpt_data, discard_level);
733 }
734}
735
643S32 LLVOVolume::computeLODDetail(F32 distance, F32 radius) 736S32 LLVOVolume::computeLODDetail(F32 distance, F32 radius)
644{ 737{
645 S32 cur_detail; 738 S32 cur_detail;
@@ -978,7 +1071,7 @@ BOOL LLVOVolume::updateGeometry(LLDrawable *drawable)
978 genBBoxes(FALSE); 1071 genBBoxes(FALSE);
979 } 1072 }
980 } 1073 }
981 else if (mLODChanged) 1074 else if ((mLODChanged) || (mSculptChanged))
982 { 1075 {
983 LLPointer<LLVolume> old_volumep, new_volumep; 1076 LLPointer<LLVolume> old_volumep, new_volumep;
984 F32 old_lod, new_lod; 1077 F32 old_lod, new_lod;
@@ -994,7 +1087,7 @@ BOOL LLVOVolume::updateGeometry(LLDrawable *drawable)
994 new_volumep = getVolume(); 1087 new_volumep = getVolume();
995 new_lod = new_volumep->getDetail(); 1088 new_lod = new_volumep->getDetail();
996 1089
997 if (new_lod != old_lod) 1090 if ((new_lod != old_lod) || mSculptChanged)
998 { 1091 {
999 compiled = TRUE; 1092 compiled = TRUE;
1000 sNumLODChanges += getVolume()->getNumFaces(); 1093 sNumLODChanges += getVolume()->getNumFaces();
@@ -1030,6 +1123,7 @@ BOOL LLVOVolume::updateGeometry(LLDrawable *drawable)
1030 1123
1031 mVolumeChanged = FALSE; 1124 mVolumeChanged = FALSE;
1032 mLODChanged = FALSE; 1125 mLODChanged = FALSE;
1126 mSculptChanged = FALSE;
1033 mFaceMappingChanged = FALSE; 1127 mFaceMappingChanged = FALSE;
1034 1128
1035 return TRUE; 1129 return TRUE;
@@ -1037,9 +1131,16 @@ BOOL LLVOVolume::updateGeometry(LLDrawable *drawable)
1037 1131
1038void LLVOVolume::updateFaceSize(S32 idx) 1132void LLVOVolume::updateFaceSize(S32 idx)
1039{ 1133{
1040 const LLVolumeFace& vol_face = getVolume()->getVolumeFace(idx);
1041 LLFace* facep = mDrawable->getFace(idx); 1134 LLFace* facep = mDrawable->getFace(idx);
1042 facep->setSize(vol_face.mVertices.size(), vol_face.mIndices.size()); 1135 if (idx >= getVolume()->getNumVolumeFaces())
1136 {
1137 facep->setSize(0,0);
1138 }
1139 else
1140 {
1141 const LLVolumeFace& vol_face = getVolume()->getVolumeFace(idx);
1142 facep->setSize(vol_face.mVertices.size(), vol_face.mIndices.size());
1143 }
1043} 1144}
1044 1145
1045BOOL LLVOVolume::isRootEdit() const 1146BOOL LLVOVolume::isRootEdit() const
@@ -1469,7 +1570,6 @@ BOOL LLVOVolume::isFlexible() const
1469 { 1570 {
1470 if (getVolume()->getParams().getPathParams().getCurveType() != LL_PCODE_PATH_FLEXIBLE) 1571 if (getVolume()->getParams().getPathParams().getCurveType() != LL_PCODE_PATH_FLEXIBLE)
1471 { 1572 {
1472 llwarns << "wtf" << llendl;
1473 LLVolumeParams volume_params = getVolume()->getParams(); 1573 LLVolumeParams volume_params = getVolume()->getParams();
1474 U8 profile_and_hole = volume_params.getProfileParams().getCurveType(); 1574 U8 profile_and_hole = volume_params.getProfileParams().getCurveType();
1475 volume_params.setType(profile_and_hole, LL_PCODE_PATH_FLEXIBLE); 1575 volume_params.setType(profile_and_hole, LL_PCODE_PATH_FLEXIBLE);
@@ -1482,6 +1582,16 @@ BOOL LLVOVolume::isFlexible() const
1482 } 1582 }
1483} 1583}
1484 1584
1585BOOL LLVOVolume::isSculpted() const
1586{
1587 if (getParameterEntryInUse(LLNetworkData::PARAMS_SCULPT))
1588 {
1589 return TRUE;
1590 }
1591
1592 return FALSE;
1593}
1594
1485BOOL LLVOVolume::isVolumeGlobal() const 1595BOOL LLVOVolume::isVolumeGlobal() const
1486{ 1596{
1487 if (mVolumeImpl) 1597 if (mVolumeImpl)
diff --git a/linden/indra/newview/llvovolume.h b/linden/indra/newview/llvovolume.h
index 80e4e8a..14c640f 100644
--- a/linden/indra/newview/llvovolume.h
+++ b/linden/indra/newview/llvovolume.h
@@ -152,6 +152,7 @@ public:
152 void setTexture(const S32 face); 152 void setTexture(const S32 face);
153 153
154 /*virtual*/ BOOL setVolume(const LLVolumeParams &volume_params, const S32 detail, bool unique_volume = false); 154 /*virtual*/ BOOL setVolume(const LLVolumeParams &volume_params, const S32 detail, bool unique_volume = false);
155 void sculpt();
155 void updateRelativeXform(); 156 void updateRelativeXform();
156 /*virtual*/ BOOL updateGeometry(LLDrawable *drawable); 157 /*virtual*/ BOOL updateGeometry(LLDrawable *drawable);
157 /*virtual*/ void updateFaceSize(S32 idx); 158 /*virtual*/ void updateFaceSize(S32 idx);
@@ -197,6 +198,7 @@ public:
197 // Flexible Objects 198 // Flexible Objects
198 U32 getVolumeInterfaceID() const; 199 U32 getVolumeInterfaceID() const;
199 virtual BOOL isFlexible() const; 200 virtual BOOL isFlexible() const;
201 virtual BOOL isSculpted() const;
200 BOOL isVolumeGlobal() const; 202 BOOL isVolumeGlobal() const;
201 BOOL canBeFlexible() const; 203 BOOL canBeFlexible() const;
202 BOOL setIsFlexible(BOOL is_flexible); 204 BOOL setIsFlexible(BOOL is_flexible);
@@ -223,12 +225,14 @@ protected:
223 LLFrameTimer mTextureUpdateTimer; 225 LLFrameTimer mTextureUpdateTimer;
224 S32 mLOD; 226 S32 mLOD;
225 BOOL mLODChanged; 227 BOOL mLODChanged;
228 BOOL mSculptChanged;
226 F32 mRadius; 229 F32 mRadius;
227 LLMatrix4 mRelativeXform; 230 LLMatrix4 mRelativeXform;
228 LLMatrix3 mRelativeXformInvTrans; 231 LLMatrix3 mRelativeXformInvTrans;
229 BOOL mVolumeChanged; 232 BOOL mVolumeChanged;
230 F32 mVObjRadius; 233 F32 mVObjRadius;
231 LLVolumeInterface *mVolumeImpl; 234 LLVolumeInterface *mVolumeImpl;
235 LLPointer<LLViewerImage> mSculptTexture;
232 236
233 // statics 237 // statics
234public: 238public:
diff --git a/linden/indra/newview/newview_vc8.vcproj b/linden/indra/newview/newview_vc8.vcproj
index 4cb359b..8b55869 100644
--- a/linden/indra/newview/newview_vc8.vcproj
+++ b/linden/indra/newview/newview_vc8.vcproj
@@ -42,11 +42,12 @@
42 Name="VCCLCompilerTool" 42 Name="VCCLCompilerTool"
43 Optimization="0" 43 Optimization="0"
44 AdditionalIncludeDirectories="..\llcommon;..\llmath;..\llvfs;..\llaudio;..\llmedia;..\llimage;..\llscene;..\llxml;..\llmessage;..\llprimitive;..\llrender;..\llwindow;..\llcharacter;..\llinventory;..\llui;..\lscript;&quot;..\..\libraries\i686-win32\include&quot;;..\..\libraries\include\;&quot;..\..\libraries\i686-win32\include\quicktime&quot;;..\llwindow\Logitech_LCD;..\llwindow\Logitech_LCD\LCDUI" 44 AdditionalIncludeDirectories="..\llcommon;..\llmath;..\llvfs;..\llaudio;..\llmedia;..\llimage;..\llscene;..\llxml;..\llmessage;..\llprimitive;..\llrender;..\llwindow;..\llcharacter;..\llinventory;..\llui;..\lscript;&quot;..\..\libraries\i686-win32\include&quot;;..\..\libraries\include\;&quot;..\..\libraries\i686-win32\include\quicktime&quot;;..\llwindow\Logitech_LCD;..\llwindow\Logitech_LCD\LCDUI"
45 PreprocessorDefinitions="WIN32;_DEBUG;LL_WINDOWS;LL_DEBUG;XP_WIN;XP_WIN32;MOZILLA_INTERNAL_API" 45 PreprocessorDefinitions="WIN32;_DEBUG;LL_WINDOWS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_USE_32BIT_TIME_T;LL_DEBUG;XP_WIN;XP_WIN32;MOZILLA_INTERNAL_API"
46 MinimalRebuild="false" 46 MinimalRebuild="false"
47 BasicRuntimeChecks="3" 47 BasicRuntimeChecks="3"
48 RuntimeLibrary="1" 48 RuntimeLibrary="1"
49 StructMemberAlignment="4" 49 StructMemberAlignment="4"
50 TreatWChar_tAsBuiltInType="false"
50 ForceConformanceInForLoopScope="true" 51 ForceConformanceInForLoopScope="true"
51 UsePrecompiledHeader="0" 52 UsePrecompiledHeader="0"
52 PrecompiledHeaderThrough="llviewerprecompiledheaders.h" 53 PrecompiledHeaderThrough="llviewerprecompiledheaders.h"
@@ -66,11 +67,11 @@
66 /> 67 />
67 <Tool 68 <Tool
68 Name="VCLinkerTool" 69 Name="VCLinkerTool"
69 AdditionalDependencies="advapi32.lib apr-1.lib aprutil-1.lib comdlg32.lib dinput8.lib dsound.lib dxerr8.lib dxguid.lib fmodvc.lib freetype.lib gdi32.lib glu32.lib jpeglib_6b.lib kernel32.lib libboost_regex-vc71-mt-s.lib libcurl.lib libeay32.lib libexpatMT.lib LibOpenJPEG.lib llmozlib.lib mswsock.lib netapi32.lib odbc32.lib odbccp32.lib ogg_static_mt.lib ole32.lib oleaut32.lib opengl32.lib qtmlclient.lib shell32.lib ssleay32.lib user32.lib Vfw32.lib vorbis_static_mt.lib vorbisenc_static_mt.lib vorbisfile_static_mt.lib winmm.lib winspool.lib ws2_32.lib xmlrpcepi.lib zlib.lib lglcd.lib" 70 AdditionalDependencies="advapi32.lib apr-1.lib aprutil-1.lib comdlg32.lib dinput8.lib dsound.lib dxerr8.lib dxguid.lib fmodvc.lib freetype.lib gdi32.lib glu32.lib jpeglib_6b.lib kernel32.lib libboost_regex-vc80-mt-s.lib libcurl.lib libeay32.lib libexpatMT.lib LibOpenJPEG.lib llmozlib-vc80.lib mswsock.lib netapi32.lib odbc32.lib odbccp32.lib ogg_static_mt.lib ole32.lib oleaut32.lib opengl32.lib qtmlclient.lib shell32.lib ssleay32.lib user32.lib Vfw32.lib vorbis_static_mt.lib vorbisenc_static_mt.lib vorbisfile_static_mt.lib winmm.lib winspool.lib ws2_32.lib xmlrpcepi.lib zlib.lib"
70 OutputFile="$(ConfigurationName)/debugview.exe" 71 OutputFile="$(ConfigurationName)/debugview.exe"
71 LinkIncremental="2" 72 LinkIncremental="2"
72 AdditionalLibraryDirectories="&quot;../lib_$(ConfigurationName)/i686-win32&quot;;&quot;../../libraries/i686-win32/lib_debug&quot;" 73 AdditionalLibraryDirectories="&quot;../lib_$(ConfigurationName)/i686-win32&quot;;&quot;../../libraries/i686-win32/lib_debug&quot;"
73 IgnoreDefaultLibraryNames="msvcrtd;libcd.lib" 74 IgnoreDefaultLibraryNames="msvcrtd;libcd;libcmt"
74 GenerateDebugInformation="true" 75 GenerateDebugInformation="true"
75 ProgramDatabaseFile="$(TargetName).pdb" 76 ProgramDatabaseFile="$(TargetName).pdb"
76 SubSystem="2" 77 SubSystem="2"
@@ -157,7 +158,7 @@
157 /> 158 />
158 <Tool 159 <Tool
159 Name="VCLinkerTool" 160 Name="VCLinkerTool"
160 AdditionalDependencies="advapi32.lib apr-1.lib aprutil-1.lib comdlg32.lib dinput8.lib dsound.lib dxerr8.lib dxguid.lib fmodvc.lib freetype.lib gdi32.lib glu32.lib jpeglib_6b.lib kernel32.lib libboost_regex-vc80-mt-s.lib libcurl.lib libeay32.lib libexpatMT.lib LibOpenJPEG.lib llaudio.lib llmedia.lib llcharacter.lib llcommon.lib llimage.lib llimagej2coj.lib llinventory.lib llmath.lib llmessage.lib llmozlib-vc80.lib llprimitive.lib llrender.lib llui.lib llvfs.lib llwindow.lib llxml.lib lscript_library.lib mswsock.lib netapi32.lib odbc32.lib odbccp32.lib ogg_static_mt.lib ole32.lib oleaut32.lib opengl32.lib qtmlclient.lib shell32.lib ssleay32.lib user32.lib Vfw32.lib vorbis_static_mt.lib vorbisenc_static_mt.lib vorbisfile_static_mt.lib winmm.lib winspool.lib ws2_32.lib xmlrpcepi.lib zlib.lib lglcd.lib" 161 AdditionalDependencies="advapi32.lib apr-1.lib aprutil-1.lib comdlg32.lib dinput8.lib dsound.lib dxerr8.lib dxguid.lib fmodvc.lib freetype.lib gdi32.lib glu32.lib jpeglib_6b.lib kernel32.lib libboost_regex-vc80-mt-s.lib libcurl.lib libeay32.lib libexpatMT.lib LibOpenJPEG.lib llaudio.lib llmedia.lib llcharacter.lib llcommon.lib llimage.lib llimagej2coj.lib llinventory.lib llmath.lib llmessage.lib llmozlib-vc80.lib llprimitive.lib llrender.lib llui.lib llvfs.lib llwindow.lib llxml.lib lscript_library.lib mswsock.lib netapi32.lib odbc32.lib odbccp32.lib ogg_static_mt.lib ole32.lib oleaut32.lib opengl32.lib qtmlclient.lib shell32.lib ssleay32.lib user32.lib Vfw32.lib vorbis_static_mt.lib vorbisenc_static_mt.lib vorbisfile_static_mt.lib winmm.lib winspool.lib ws2_32.lib xmlrpcepi.lib zlib.lib"
161 OutputFile="$(ConfigurationName)/newview.exe" 162 OutputFile="$(ConfigurationName)/newview.exe"
162 LinkIncremental="2" 163 LinkIncremental="2"
163 AdditionalLibraryDirectories="&quot;../lib_$(ConfigurationName)/i686-win32&quot;;&quot;../../libraries/i686-win32/lib_release&quot;" 164 AdditionalLibraryDirectories="&quot;../lib_$(ConfigurationName)/i686-win32&quot;;&quot;../../libraries/i686-win32/lib_release&quot;"
@@ -225,9 +226,10 @@
225 <Tool 226 <Tool
226 Name="VCCLCompilerTool" 227 Name="VCCLCompilerTool"
227 AdditionalIncludeDirectories="..\llcommon;..\llmath;..\llvfs;..\llaudio;..\llmedia;..\llimage;..\llscene;..\llxml;..\llmessage;..\llprimitive;..\llrender;..\llwindow;..\llcharacter;..\llinventory;..\llui;..\lscript;&quot;..\..\libraries\i686-win32\include&quot;;..\..\libraries\include\;&quot;..\..\libraries\i686-win32\include\quicktime&quot;;..\llwindow\Logitech_LCD;..\llwindow\Logitech_LCD\LCDUI" 228 AdditionalIncludeDirectories="..\llcommon;..\llmath;..\llvfs;..\llaudio;..\llmedia;..\llimage;..\llscene;..\llxml;..\llmessage;..\llprimitive;..\llrender;..\llwindow;..\llcharacter;..\llinventory;..\llui;..\lscript;&quot;..\..\libraries\i686-win32\include&quot;;..\..\libraries\include\;&quot;..\..\libraries\i686-win32\include\quicktime&quot;;..\llwindow\Logitech_LCD;..\llwindow\Logitech_LCD\LCDUI"
228 PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;LL_WINDOWS;LL_RELEASE;LL_RELEASE_FOR_DOWNLOAD;XP_WIN;XP_WIN32;MOZILLA_INTERNAL_API" 229 PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;LL_WINDOWS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_USE_32BIT_TIME_T;LL_RELEASE;LL_RELEASE_FOR_DOWNLOAD;XP_WIN;XP_WIN32;MOZILLA_INTERNAL_API"
229 RuntimeLibrary="0" 230 RuntimeLibrary="0"
230 StructMemberAlignment="0" 231 StructMemberAlignment="0"
232 TreatWChar_tAsBuiltInType="false"
231 UsePrecompiledHeader="2" 233 UsePrecompiledHeader="2"
232 PrecompiledHeaderThrough="llviewerprecompiledheaders.h" 234 PrecompiledHeaderThrough="llviewerprecompiledheaders.h"
233 WarningLevel="3" 235 WarningLevel="3"
@@ -246,7 +248,7 @@
246 /> 248 />
247 <Tool 249 <Tool
248 Name="VCLinkerTool" 250 Name="VCLinkerTool"
249 AdditionalDependencies="advapi32.lib apr-1.lib aprutil-1.lib comdlg32.lib dinput8.lib dsound.lib dxerr8.lib dxguid.lib fmodvc.lib freetype.lib gdi32.lib glu32.lib jpeglib_6b.lib kernel32.lib libboost_regex-vc71-mt-s.lib libcurl.lib libeay32.lib libexpatMT.lib LibOpenJPEG.lib llaudio.lib llmedia.lib llcharacter.lib llcommon.lib llimage.lib llimagej2coj.lib llinventory.lib llmath.lib llmessage.lib llmozlib.lib llprimitive.lib llrender.lib llui.lib llvfs.lib llwindow.lib llxml.lib lscript_library.lib mswsock.lib netapi32.lib odbc32.lib odbccp32.lib ogg_static_mt.lib ole32.lib oleaut32.lib opengl32.lib qtmlclient.lib shell32.lib ssleay32.lib user32.lib Vfw32.lib vorbis_static_mt.lib vorbisenc_static_mt.lib vorbisfile_static_mt.lib winmm.lib winspool.lib ws2_32.lib xmlrpcepi.lib zlib.lib lglcd.lib" 251 AdditionalDependencies="advapi32.lib apr-1.lib aprutil-1.lib comdlg32.lib dinput8.lib dsound.lib dxerr8.lib dxguid.lib fmodvc.lib freetype.lib gdi32.lib glu32.lib jpeglib_6b.lib kernel32.lib libboost_regex-vc80-mt-s.lib libcurl.lib libeay32.lib libexpatMT.lib LibOpenJPEG.lib llaudio.lib llmedia.lib llcharacter.lib llcommon.lib llimage.lib llimagej2coj.lib llinventory.lib llmath.lib llmessage.lib llmozlib-vc80.lib llprimitive.lib llrender.lib llui.lib llvfs.lib llwindow.lib llxml.lib lscript_library.lib mswsock.lib netapi32.lib odbc32.lib odbccp32.lib ogg_static_mt.lib ole32.lib oleaut32.lib opengl32.lib qtmlclient.lib shell32.lib ssleay32.lib user32.lib Vfw32.lib vorbis_static_mt.lib vorbisenc_static_mt.lib vorbisfile_static_mt.lib winmm.lib winspool.lib ws2_32.lib xmlrpcepi.lib zlib.lib"
250 OutputFile="$(ConfigurationName)/SecondLife.exe" 252 OutputFile="$(ConfigurationName)/SecondLife.exe"
251 LinkIncremental="0" 253 LinkIncremental="0"
252 AdditionalLibraryDirectories="&quot;../lib_release/i686-win32&quot;;&quot;../../libraries/i686-win32/lib_release&quot;" 254 AdditionalLibraryDirectories="&quot;../lib_release/i686-win32&quot;;&quot;../../libraries/i686-win32/lib_release&quot;"
@@ -312,9 +314,10 @@
312 Name="VCCLCompilerTool" 314 Name="VCCLCompilerTool"
313 Optimization="0" 315 Optimization="0"
314 AdditionalIncludeDirectories="..\llcommon;..\llmath;..\llvfs;..\llaudio;..\llmedia;..\llimage;..\llscene;..\llxml;..\llmessage;..\llprimitive;..\llrender;..\llwindow;..\llcharacter;..\llinventory;..\llui;..\lscript;&quot;..\..\libraries\i686-win32\include&quot;;..\..\libraries\include\;&quot;..\..\libraries\i686-win32\include\quicktime&quot;;..\llwindow\Logitech_LCD;..\llwindow\Logitech_LCD\LCDUI" 316 AdditionalIncludeDirectories="..\llcommon;..\llmath;..\llvfs;..\llaudio;..\llmedia;..\llimage;..\llscene;..\llxml;..\llmessage;..\llprimitive;..\llrender;..\llwindow;..\llcharacter;..\llinventory;..\llui;..\lscript;&quot;..\..\libraries\i686-win32\include&quot;;..\..\libraries\include\;&quot;..\..\libraries\i686-win32\include\quicktime&quot;;..\llwindow\Logitech_LCD;..\llwindow\Logitech_LCD\LCDUI"
315 PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;LL_WINDOWS;LL_RELEASE;XP_WIN;XP_WIN32;MOZILLA_INTERNAL_API" 317 PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;LL_WINDOWS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_USE_32BIT_TIME_T;LL_RELEASE;XP_WIN;XP_WIN32;MOZILLA_INTERNAL_API"
316 RuntimeLibrary="0" 318 RuntimeLibrary="0"
317 StructMemberAlignment="0" 319 StructMemberAlignment="0"
320 TreatWChar_tAsBuiltInType="false"
318 ForceConformanceInForLoopScope="true" 321 ForceConformanceInForLoopScope="true"
319 UsePrecompiledHeader="2" 322 UsePrecompiledHeader="2"
320 PrecompiledHeaderThrough="llviewerprecompiledheaders.h" 323 PrecompiledHeaderThrough="llviewerprecompiledheaders.h"
@@ -334,7 +337,7 @@
334 /> 337 />
335 <Tool 338 <Tool
336 Name="VCLinkerTool" 339 Name="VCLinkerTool"
337 AdditionalDependencies="advapi32.lib apr-1.lib aprutil-1.lib comdlg32.lib dinput8.lib dsound.lib dxerr8.lib dxguid.lib fmodvc.lib freetype.lib gdi32.lib glu32.lib jpeglib_6b.lib kernel32.lib libboost_regex-vc71-mt-s.lib libcurl.lib libeay32.lib libexpatMT.lib LibOpenJPEG.lib llmozlib.lib mswsock.lib netapi32.lib odbc32.lib odbccp32.lib ogg_static_mt.lib ole32.lib oleaut32.lib opengl32.lib qtmlclient.lib shell32.lib ssleay32.lib user32.lib Vfw32.lib vorbis_static_mt.lib vorbisenc_static_mt.lib vorbisfile_static_mt.lib winmm.lib winspool.lib ws2_32.lib xmlrpcepi.lib zlib.lib lglcd.lib" 340 AdditionalDependencies="advapi32.lib apr-1.lib aprutil-1.lib comdlg32.lib dinput8.lib dsound.lib dxerr8.lib dxguid.lib fmodvc.lib freetype.lib gdi32.lib glu32.lib jpeglib_6b.lib kernel32.lib libboost_regex-vc80-mt-s.lib libcurl.lib libeay32.lib libexpatMT.lib LibOpenJPEG.lib llaudio.lib llmedia.lib llcharacter.lib llcommon.lib llimage.lib llimagej2coj.lib llinventory.lib llmath.lib llmessage.lib llmozlib-vc80.lib llprimitive.lib llrender.lib llui.lib llvfs.lib llwindow.lib llxml.lib lscript_library.lib mswsock.lib netapi32.lib odbc32.lib odbccp32.lib ogg_static_mt.lib ole32.lib oleaut32.lib opengl32.lib qtmlclient.lib shell32.lib ssleay32.lib user32.lib Vfw32.lib vorbis_static_mt.lib vorbisenc_static_mt.lib vorbisfile_static_mt.lib winmm.lib winspool.lib ws2_32.lib xmlrpcepi.lib zlib.lib"
338 OutputFile="$(ConfigurationName)/newview_noopt.exe" 341 OutputFile="$(ConfigurationName)/newview_noopt.exe"
339 LinkIncremental="2" 342 LinkIncremental="2"
340 AdditionalLibraryDirectories="&quot;../lib_releasenoopt/i686-win32&quot;;&quot;../../libraries/i686-win32/lib_release&quot;" 343 AdditionalLibraryDirectories="&quot;../lib_releasenoopt/i686-win32&quot;;&quot;../../libraries/i686-win32/lib_release&quot;"
@@ -445,6 +448,10 @@
445 > 448 >
446 </File> 449 </File>
447 <File 450 <File
451 RelativePath=".\llcaphttpsender.cpp"
452 >
453 </File>
454 <File
448 RelativePath=".\llchatbar.cpp" 455 RelativePath=".\llchatbar.cpp"
449 > 456 >
450 </File> 457 </File>
@@ -785,10 +792,6 @@
785 > 792 >
786 </File> 793 </File>
787 <File 794 <File
788 RelativePath=".\llfloaterrate.cpp"
789 >
790 </File>
791 <File
792 RelativePath=".\llfloaterregioninfo.cpp" 795 RelativePath=".\llfloaterregioninfo.cpp"
793 > 796 >
794 </File> 797 </File>
@@ -973,10 +976,6 @@
973 > 976 >
974 </File> 977 </File>
975 <File 978 <File
976 RelativePath=".\lllcd.cpp"
977 >
978 </File>
979 <File
980 RelativePath=".\lllocalanimationobject.cpp" 979 RelativePath=".\lllocalanimationobject.cpp"
981 > 980 >
982 </File> 981 </File>
@@ -1173,10 +1172,6 @@
1173 > 1172 >
1174 </File> 1173 </File>
1175 <File 1174 <File
1176 RelativePath=".\llpanelLCD.cpp"
1177 >
1178 </File>
1179 <File
1180 RelativePath=".\llpanellogin.cpp" 1175 RelativePath=".\llpanellogin.cpp"
1181 > 1176 >
1182 </File> 1177 </File>
@@ -1485,6 +1480,10 @@
1485 > 1480 >
1486 </File> 1481 </File>
1487 <File 1482 <File
1483 RelativePath=".\llviewergenericmessage.cpp"
1484 >
1485 </File>
1486 <File
1488 RelativePath=".\llviewergesture.cpp" 1487 RelativePath=".\llviewergesture.cpp"
1489 > 1488 >
1490 </File> 1489 </File>
@@ -1533,6 +1532,10 @@
1533 > 1532 >
1534 </File> 1533 </File>
1535 <File 1534 <File
1535 RelativePath=".\llviewermenufile.cpp"
1536 >
1537 </File>
1538 <File
1536 RelativePath=".\llviewermessage.cpp" 1539 RelativePath=".\llviewermessage.cpp"
1537 > 1540 >
1538 </File> 1541 </File>
@@ -1569,10 +1572,6 @@
1569 > 1572 >
1570 </File> 1573 </File>
1571 <File 1574 <File
1572 RelativePath=".\llviewerreputation.cpp"
1573 >
1574 </File>
1575 <File
1576 RelativePath=".\llviewerstats.cpp" 1575 RelativePath=".\llviewerstats.cpp"
1577 > 1576 >
1578 </File> 1577 </File>
@@ -1803,6 +1802,10 @@
1803 > 1802 >
1804 </File> 1803 </File>
1805 <File 1804 <File
1805 RelativePath=".\llcaphttpsender.h"
1806 >
1807 </File>
1808 <File
1806 RelativePath=".\llchatbar.h" 1809 RelativePath=".\llchatbar.h"
1807 > 1810 >
1808 </File> 1811 </File>
@@ -2143,10 +2146,6 @@
2143 > 2146 >
2144 </File> 2147 </File>
2145 <File 2148 <File
2146 RelativePath=".\llfloaterrate.h"
2147 >
2148 </File>
2149 <File
2150 RelativePath=".\llfloaterregioninfo.h" 2149 RelativePath=".\llfloaterregioninfo.h"
2151 > 2150 >
2152 </File> 2151 </File>
@@ -2323,10 +2322,6 @@
2323 > 2322 >
2324 </File> 2323 </File>
2325 <File 2324 <File
2326 RelativePath=".\lllcd.h"
2327 >
2328 </File>
2329 <File
2330 RelativePath=".\lllightconstants.h" 2325 RelativePath=".\lllightconstants.h"
2331 > 2326 >
2332 </File> 2327 </File>
@@ -2527,10 +2522,6 @@
2527 > 2522 >
2528 </File> 2523 </File>
2529 <File 2524 <File
2530 RelativePath=".\llpanelLCD.h"
2531 >
2532 </File>
2533 <File
2534 RelativePath=".\llpanellogin.h" 2525 RelativePath=".\llpanellogin.h"
2535 > 2526 >
2536 </File> 2527 </File>
@@ -2859,6 +2850,10 @@
2859 > 2850 >
2860 </File> 2851 </File>
2861 <File 2852 <File
2853 RelativePath=".\llviewergenericmessage.h"
2854 >
2855 </File>
2856 <File
2862 RelativePath=".\llviewergesture.h" 2857 RelativePath=".\llviewergesture.h"
2863 > 2858 >
2864 </File> 2859 </File>
@@ -2907,6 +2902,10 @@
2907 > 2902 >
2908 </File> 2903 </File>
2909 <File 2904 <File
2905 RelativePath=".\llviewermenufile.h"
2906 >
2907 </File>
2908 <File
2910 RelativePath=".\llviewermessage.h" 2909 RelativePath=".\llviewermessage.h"
2911 > 2910 >
2912 </File> 2911 </File>
@@ -2943,10 +2942,6 @@
2943 > 2942 >
2944 </File> 2943 </File>
2945 <File 2944 <File
2946 RelativePath=".\llviewerreputation.h"
2947 >
2948 </File>
2949 <File
2950 RelativePath=".\llviewerstats.h" 2945 RelativePath=".\llviewerstats.h"
2951 > 2946 >
2952 </File> 2947 </File>
diff --git a/linden/indra/newview/releasenotes.txt b/linden/indra/newview/releasenotes.txt
index c6c57f0..a223e08 100644
--- a/linden/indra/newview/releasenotes.txt
+++ b/linden/indra/newview/releasenotes.txt
@@ -1,3 +1,55 @@
1Release Notes for Second Life 1.16.0(5) May 23, 2007
2=====================================
3New Features:
4* Sculpted Prims
5** Sculpted Prims are a new primitive type that uses a texture to control its 3D shape
6** See http://wiki.secondlife.com/wiki/Sculpted_Prims for FAQ and detailed information
7* Add "Mute" button to block unwanted notecards, landmarks, and textures
8
9Changes:
10* Improved muting of particle systems
11
12LSL Changes:
13* New function: llRegionSay()
14** Allows object to communicate region-wide
15** Does not allow communication on channel 0
16** This is intended to reduce simulator load by eliminating the need for relay objects
17
18Bug fixes:
19* Text for several alert messages has been updated
20* Fixed positioning of maximize button when minimizing both script and lsl window
21* Fixed positioning of LSL help window after minimizing/maximizing main script window
22* Fixed group chat IM showing sender as the only participant until someone responds
23* Fixed group chat IM reopening with an error when sending a message after user closes group chat
24* Fixed '... has left the session' when leaving group chat after talking
25* Fixed failed email when no subject is included
26* Fixed object loss occuring when taking an item
27* VWR-657: Beta -> Linux -> Startup -> Crash
28
29Release Notes for Second Life 1.15.3(0) May 22, 2007 (Server-Only Update)
30=====================================
31Bug fixes:
32* SVC-213: llGiveInventoryList not creating a folder to place items
33
34
35Release Notes for Second Life 1.15.2(0) May 18, 2007 (Server-Only Update)
36=====================================
37Changes:
38* IMs and emails received when inventory is given now include the item name, owner, position and SLURL.
39** This is useful to track down spamming objects.
40
41Bug fixes:
42* SVC-85: Friends online in the grid does not reflect who is actually online
43* SVC-138: Land sales search sorting doesn't work
44* MISC-37: Continued breakdowns in group notice popup functionality
45* Teleporting to Help Island no longer allows you to teleport back to Orientation Island
46* No-copy objects that fail to rez now reappear in inventory (may take up to one minute)
47* Scripted attachments work again correctly on group land
48* Fixed a bug where email sent by script with an empty subject would fail (valid per RFC2822)
49* Fixed several server-side memory leaks, and changed to new memory allocation library
50* Fixed several server-side crashes
51
52
1Release Notes for Second Life 1.15.1(3) May 14, 2007 53Release Notes for Second Life 1.15.1(3) May 14, 2007
2===================================== 54=====================================
3Changes: 55Changes:
diff --git a/linden/indra/newview/res/newViewRes.rc b/linden/indra/newview/res/newViewRes.rc
index e9ac143..482f14e 100644
--- a/linden/indra/newview/res/newViewRes.rc
+++ b/linden/indra/newview/res/newViewRes.rc
@@ -227,8 +227,8 @@ TOOLPIPETTE CURSOR "toolpipette.cur"
227// 227//
228 228
229VS_VERSION_INFO VERSIONINFO 229VS_VERSION_INFO VERSIONINFO
230 FILEVERSION 1,15,1,3 230 FILEVERSION 1,16,0,5
231 PRODUCTVERSION 1,15,1,3 231 PRODUCTVERSION 1,16,0,5
232 FILEFLAGSMASK 0x3fL 232 FILEFLAGSMASK 0x3fL
233#ifdef _DEBUG 233#ifdef _DEBUG
234 FILEFLAGS 0x1L 234 FILEFLAGS 0x1L
@@ -245,12 +245,12 @@ BEGIN
245 BEGIN 245 BEGIN
246 VALUE "CompanyName", "Linden Lab" 246 VALUE "CompanyName", "Linden Lab"
247 VALUE "FileDescription", "Second Life" 247 VALUE "FileDescription", "Second Life"
248 VALUE "FileVersion", "1.15.1.3" 248 VALUE "FileVersion", "1.16.0.5"
249 VALUE "InternalName", "Second Life" 249 VALUE "InternalName", "Second Life"
250 VALUE "LegalCopyright", "Copyright © 2001-2007, Linden Research, Inc." 250 VALUE "LegalCopyright", "Copyright © 2001-2007, Linden Research, Inc."
251 VALUE "OriginalFilename", "SecondLife.exe" 251 VALUE "OriginalFilename", "SecondLife.exe"
252 VALUE "ProductName", "Second Life" 252 VALUE "ProductName", "Second Life"
253 VALUE "ProductVersion", "1.15.1.3" 253 VALUE "ProductVersion", "1.16.0.5"
254 END 254 END
255 END 255 END
256 BLOCK "VarFileInfo" 256 BLOCK "VarFileInfo"
diff --git a/linden/indra/newview/skins/xui/en-us/alerts.xml b/linden/indra/newview/skins/xui/en-us/alerts.xml
index a783d00..cac8dc4 100644
--- a/linden/indra/newview/skins/xui/en-us/alerts.xml
+++ b/linden/indra/newview/skins/xui/en-us/alerts.xml
@@ -11,7 +11,7 @@
11 <alert modal="true" name="FloaterNotFound"> 11 <alert modal="true" name="FloaterNotFound">
12 <message name="message"> 12 <message name="message">
13 Floater error: Could not find the following controls: 13 Floater error: Could not find the following controls:
14 14
15[CONTROLS] 15[CONTROLS]
16 </message> 16 </message>
17 <option name="OK"> 17 <option name="OK">
@@ -58,21 +58,7 @@ for advice and a link to the system status web page.
58 Help 58 Help
59 </option> 59 </option>
60 </alert> 60 </alert>
61 <alert modal="true" name="RemoveWearableSave"> 61 <alert modal="true" name="WearableSave">
62 <message name="message">
63 Save changes to current clothing/body part?
64 </message>
65 <option name="Save">
66 Save
67 </option>
68 <option name="Don&apos;tSave">
69 Don&apos;t Save
70 </option>
71 <option name="Cancel">
72 Cancel
73 </option>
74 </alert>
75 <alert modal="true" name="SetWearableSave">
76 <message name="message"> 62 <message name="message">
77 Save changes to current clothing/body part? 63 Save changes to current clothing/body part?
78 </message> 64 </message>
@@ -98,7 +84,7 @@ for advice and a link to the system status web page.
98 </alert> 84 </alert>
99 <alert modal="true" name="WriteAnimationFail"> 85 <alert modal="true" name="WriteAnimationFail">
100 <message name="message"> 86 <message name="message">
101 Failure writing animation data. 87 There was a problem writing animation data. Please try again later.
102 </message> 88 </message>
103 </alert> 89 </alert>
104 <alert modal="true" name="UploadAuctionSnapshotFail"> 90 <alert modal="true" name="UploadAuctionSnapshotFail">
@@ -126,7 +112,7 @@ Enter a brief description of the group&apos;s purpose.
126 <alert modal="true" name="CharacterSnapshotSaved"> 112 <alert modal="true" name="CharacterSnapshotSaved">
127 <message name="message"> 113 <message name="message">
128 A snapshot of your character has been saved. 114 A snapshot of your character has been saved.
129 115
130Visit the Webpage Studio exhibit to see it. 116Visit the Webpage Studio exhibit to see it.
131 </message> 117 </message>
132 </alert> 118 </alert>
@@ -146,8 +132,8 @@ Visit the Webpage Studio exhibit to see it.
146 </alert> 132 </alert>
147 <alert modal="true" name="GrantModifyRights"> 133 <alert modal="true" name="GrantModifyRights">
148 <message name="message"> 134 <message name="message">
149 Granting modify rights to another resident allows them to change 135 Granting modify rights to another resident allows them to change
150ANY objects you may have in-world. Be VERY careful when handing 136ANY objects you may have in-world. Be VERY careful when handing
151out this permission. 137out this permission.
152Do you want to grant modify rights for [FIRST_NAME] [LAST_NAME]? 138Do you want to grant modify rights for [FIRST_NAME] [LAST_NAME]?
153 </message> 139 </message>
@@ -171,7 +157,7 @@ Do you want to grant modify rights for [FIRST_NAME] [LAST_NAME]?
171 </alert> 157 </alert>
172 <alert modal="true" name="RemoveFriend"> 158 <alert modal="true" name="RemoveFriend">
173 <message name="message"> 159 <message name="message">
174 Do you want to remove [FIRST] [LAST] from your friends? 160 Do you want to remove [FIRST] [LAST] from your list of friends?
175 </message> 161 </message>
176 <option name="Remove"> 162 <option name="Remove">
177 Remove 163 Remove
@@ -212,10 +198,10 @@ Do you want to grant modify rights for [FIRST_NAME] [LAST_NAME]?
212 <alert modal="true" name="CreateGroupCanAfford"> 198 <alert modal="true" name="CreateGroupCanAfford">
213 <message name="message"> 199 <message name="message">
214 Creating a group costs L$[COST]. 200 Creating a group costs L$[COST].
215 201
216To maintain the group for more than three days, 202To maintain the group for more than three days,
217you must reach a total of three or more members. 203you must reach a total of two or more members.
218 204
219Create group? 205Create group?
220 </message> 206 </message>
221 <option name="Create"> 207 <option name="Create">
@@ -228,7 +214,7 @@ Create group?
228 <alert modal="true" name="CreateGroupCannotAfford"> 214 <alert modal="true" name="CreateGroupCannotAfford">
229 <message name="message"> 215 <message name="message">
230 Creating a group costs L$[COST]. 216 Creating a group costs L$[COST].
231You do not have enough money to create this group. 217You do not have enough L$ to create this group.
232 </message> 218 </message>
233 </alert> 219 </alert>
234 <alert modal="true" name="GroupNameTooShort"> 220 <alert modal="true" name="GroupNameTooShort">
@@ -238,7 +224,7 @@ You do not have enough money to create this group.
238 </alert> 224 </alert>
239 <alert modal="true" name="GroupNameUsesReservedWord"> 225 <alert modal="true" name="GroupNameUsesReservedWord">
240 <message name="message"> 226 <message name="message">
241 The group name uses a reserved word. Please 227 The group name uses a censored word. Please
242choose a different name. 228choose a different name.
243 </message> 229 </message>
244 </alert> 230 </alert>
@@ -275,16 +261,16 @@ Are you sure you want to continue?
275 </alert> 261 </alert>
276 <alert modal="true" name="AssignDangerousActionWarning"> 262 <alert modal="true" name="AssignDangerousActionWarning">
277 <message name="message"> 263 <message name="message">
278 You are about to add the Ability &apos;[ACTION_NAME]&apos; to the 264 You are about to add the Ability &apos;[ACTION_NAME]&apos; to the
279Role &apos;[ROLE_NAME]&apos;. 265Role &apos;[ROLE_NAME]&apos;.
280 266
281 *WARNING* 267 *WARNING*
282 Any Member in a Role with this Ability can assign themselves-- 268 Any Member in a Role with this Ability can assign themselves--
283 and any other member--to Roles that have more powers than they 269 and any other member--to Roles that have more powers than they
284 currently have, potentially elevating themselves to 270 currently have, potentially elevating themselves to
285 near-Owner power. Be sure you know what you&apos;re doing before 271 near-Owner power. Be sure you know what you&apos;re doing before
286 assigning this Ability. 272 assigning this Ability.
287 273
288Add this Ability to &apos;[ROLE_NAME]&apos;? 274Add this Ability to &apos;[ROLE_NAME]&apos;?
289 </message> 275 </message>
290 <option name="Yes"> 276 <option name="Yes">
@@ -296,14 +282,14 @@ Add this Ability to &apos;[ROLE_NAME]&apos;?
296 </alert> 282 </alert>
297 <alert modal="true" name="AssignDangerousAbilityWarning"> 283 <alert modal="true" name="AssignDangerousAbilityWarning">
298 <message name="message"> 284 <message name="message">
299 You are about to add the Ability &apos;[ACTION_NAME]&apos; to the 285 You are about to add the Ability &apos;[ACTION_NAME]&apos; to the
300Role &apos;[ROLE_NAME]&apos;. 286Role &apos;[ROLE_NAME]&apos;.
301 287
302 *WARNING* 288 *WARNING*
303 Any Member in a Role with this Ability can assign themselves-- 289 Any Member in a Role with this Ability can assign themselves--
304 and any other member--all Abilities, elevating themselves 290 and any other member--all Abilities, elevating themselves
305 to near-Owner power. 291 to near-Owner power.
306 292
307Add this Ability to &apos;[ROLE_NAME]&apos;? 293Add this Ability to &apos;[ROLE_NAME]&apos;?
308 </message> 294 </message>
309 <option name="Yes"> 295 <option name="Yes">
@@ -364,7 +350,7 @@ Go to the Second Life web site for more information on partnering?
364 If this resident has a web profile URL set then you can: 350 If this resident has a web profile URL set then you can:
365 * Click Load to load the page with the embedded web browser. 351 * Click Load to load the page with the embedded web browser.
366 * Click Open to view externally in your default web browser. 352 * Click Open to view externally in your default web browser.
367 353
368When viewing your profile you can enter any URL as your Web Profile. 354When viewing your profile you can enter any URL as your Web Profile.
369Residents can visit the URL you specify when they view your profile. 355Residents can visit the URL you specify when they view your profile.
370 </message> 356 </message>
@@ -373,7 +359,7 @@ Residents can visit the URL you specify when they view your profile.
373 <message name="message"> 359 <message name="message">
374 If this resident has a web profile URL set then you can: 360 If this resident has a web profile URL set then you can:
375 * Click Open to view externally in your default web browser. 361 * Click Open to view externally in your default web browser.
376 362
377When viewing your profile you can enter any URL as your Web Profile. 363When viewing your profile you can enter any URL as your Web Profile.
378Residents can visit the URL you specify when they view your profile. 364Residents can visit the URL you specify when they view your profile.
379 </message> 365 </message>
@@ -470,19 +456,18 @@ are sure you want to start an auction.
470 </alert> 456 </alert>
471 <alert modal="true" name="SalePriceRestriction"> 457 <alert modal="true" name="SalePriceRestriction">
472 <message name="message"> 458 <message name="message">
473 Sale price must be set to &gt; L$0 if selling to anybody. 459 Sale price must be set to more than L$0 if selling to anyone.
474Please select an individual to sell to if selling for L$0. 460Please select an individual to sell to if selling for L$0.
475 </message> 461 </message>
476 </alert> 462 </alert>
477 <alert modal="true" name="ConfirmLandSaleChange"> 463 <alert modal="true" name="ConfirmLandSaleChange">
478 <message name="message"> 464 <message name="message">
479 The selected [LAND_SIZE] sq. m. land is being set for sale. 465 The selected [LAND_SIZE] m2 land is being set for sale.
480Your selling price will be L$[SALE_PRICE] and will be authorized for sale to [NAME]. 466Your selling price will be L$[SALE_PRICE] and will be authorized for sale to [NAME].
481 467
482Would you like to continue making this change?
483 </message> 468 </message>
484 <option name="Continue"> 469 <option name="Continue">
485 Continue 470 OK
486 </option> 471 </option>
487 <option default="true" name="Cancel"> 472 <option default="true" name="Cancel">
488 Cancel 473 Cancel
@@ -493,14 +478,14 @@ Would you like to continue making this change?
493 Are you sure you want to return all objects shared with 478 Are you sure you want to return all objects shared with
494the group &apos;[NAME]&apos; on this parcel of land 479the group &apos;[NAME]&apos; on this parcel of land
495back to their previous owner&apos;s inventory? 480back to their previous owner&apos;s inventory?
496 481
497*WARNING* This will delete the non-transferable objects 482*WARNING* This will delete the non-transferable objects
498deeded to the group! 483deeded to the group!
499 484
500Objects: [N] 485Objects: [N]
501 </message> 486 </message>
502 <option name="Return"> 487 <option name="Return">
503 Return 488 OK
504 </option> 489 </option>
505 <option name="Cancel"> 490 <option name="Cancel">
506 Cancel 491 Cancel
@@ -509,13 +494,13 @@ Objects: [N]
509 <alert modal="true" name="ReturnObjectsOwnedByUser"> 494 <alert modal="true" name="ReturnObjectsOwnedByUser">
510 <message name="message"> 495 <message name="message">
511 Are you sure you want to return all objects owned by the 496 Are you sure you want to return all objects owned by the
512resident &apos;[NAME]&apos; on this parcel of land 497Resident &apos;[NAME]&apos; on this parcel of land
513back to their inventory? 498back to their inventory?
514 499
515Objects: [N] 500Objects: [N]
516 </message> 501 </message>
517 <option name="Return"> 502 <option name="Return">
518 Return 503 OK
519 </option> 504 </option>
520 <option name="Cancel"> 505 <option name="Cancel">
521 Cancel 506 Cancel
@@ -526,11 +511,11 @@ Objects: [N]
526 Are you sure you want to return all objects 511 Are you sure you want to return all objects
527owned by you on this parcel of land back to 512owned by you on this parcel of land back to
528your inventory? 513your inventory?
529 514
530Objects: [N] 515Objects: [N]
531 </message> 516 </message>
532 <option name="Return"> 517 <option name="Return">
533 Return 518 OK
534 </option> 519 </option>
535 <option name="Cancel"> 520 <option name="Cancel">
536 Cancel 521 Cancel
@@ -542,14 +527,14 @@ Objects: [N]
542by you on this parcel of land back to their owner&apos;s inventory? 527by you on this parcel of land back to their owner&apos;s inventory?
543Transferable objects deeded to a group will be 528Transferable objects deeded to a group will be
544returned to their previous owners. 529returned to their previous owners.
545 530
546*WARNING* This will delete the non-transferable objects 531*WARNING* This will delete the non-transferable objects
547deeded to the group! 532deeded to the group!
548 533
549Objects: [N] 534Objects: [N]
550 </message> 535 </message>
551 <option name="Return"> 536 <option name="Return">
552 Return 537 OK
553 </option> 538 </option>
554 <option name="Cancel"> 539 <option name="Cancel">
555 Cancel 540 Cancel
@@ -561,14 +546,14 @@ Objects: [N]
561by [NAME] on this parcel of land back to their owner&apos;s inventory? 546by [NAME] on this parcel of land back to their owner&apos;s inventory?
562Transferable objects deeded to a group will be 547Transferable objects deeded to a group will be
563returned to their previous owners. 548returned to their previous owners.
564 549
565*WARNING* This will delete the non-transferable objects 550*WARNING* This will delete the non-transferable objects
566deeded to the group! 551deeded to the group!
567 552
568Objects: [N] 553Objects: [N]
569 </message> 554 </message>
570 <option name="Return"> 555 <option name="Return">
571 Return 556 OK
572 </option> 557 </option>
573 <option name="Cancel"> 558 <option name="Cancel">
574 Cancel 559 Cancel
@@ -580,7 +565,7 @@ Objects: [N]
580in this region back to their owner&apos;s inventory? 565in this region back to their owner&apos;s inventory?
581 </message> 566 </message>
582 <option name="Return"> 567 <option name="Return">
583 Return 568 OK
584 </option> 569 </option>
585 <option name="Cancel"> 570 <option name="Cancel">
586 Cancel 571 Cancel
@@ -591,7 +576,7 @@ in this region back to their owner&apos;s inventory?
591 Are you sure you want to disable all objects in this region? 576 Are you sure you want to disable all objects in this region?
592 </message> 577 </message>
593 <option name="Disable"> 578 <option name="Disable">
594 Disable 579 OK
595 </option> 580 </option>
596 <option name="Cancel"> 581 <option name="Cancel">
597 Cancel 582 Cancel
@@ -602,11 +587,11 @@ in this region back to their owner&apos;s inventory?
602 Return the objects on this parcel of land 587 Return the objects on this parcel of land
603that are NOT shared with the group [NAME] 588that are NOT shared with the group [NAME]
604back to their owners? 589back to their owners?
605 590
606Objects: [N] 591Objects: [N]
607 </message> 592 </message>
608 <option name="Return"> 593 <option name="Return">
609 Return 594 OK
610 </option> 595 </option>
611 <option name="Cancel"> 596 <option name="Cancel">
612 Cancel 597 Cancel
@@ -614,9 +599,9 @@ Objects: [N]
614 </alert> 599 </alert>
615 <alert modal="true" name="UnableToDisableOutsideScripts"> 600 <alert modal="true" name="UnableToDisableOutsideScripts">
616 <message name="message"> 601 <message name="message">
617 Unable to disable outside scripts. 602 Can not disable scripts.
618This entire region is health enabled (not safe). 603This entire region is damage enabled.
619Scripts must be allowed to run for guns to work. 604Scripts must be allowed to run for weapons to work.
620 </message> 605 </message>
621 </alert> 606 </alert>
622 <alert modal="true" name="MustBeInParcel"> 607 <alert modal="true" name="MustBeInParcel">
@@ -642,7 +627,7 @@ to set its Landing Point.
642 </alert> 627 </alert>
643 <alert modal="true" name="ErrorEncodingSnapshot"> 628 <alert modal="true" name="ErrorEncodingSnapshot">
644 <message name="message"> 629 <message name="message">
645 Error encoding snapshot! 630 Error encoding snapshot.
646 </message> 631 </message>
647 </alert> 632 </alert>
648 <alert modal="true" name="ErrorUploadingPostcard"> 633 <alert modal="true" name="ErrorUploadingPostcard">
@@ -668,12 +653,12 @@ The outfit folder contains no clothing, body parts, or attachments.
668 </alert> 653 </alert>
669 <alert modal="true" name="CannotWearTrash"> 654 <alert modal="true" name="CannotWearTrash">
670 <message name="message"> 655 <message name="message">
671 Cannot wear clothes or body parts that are in the trash 656 You can not wear clothes or body parts that are in the trash
672 </message> 657 </message>
673 </alert> 658 </alert>
674 <alert modal="true" name="CannotWearInfoNotComplete"> 659 <alert modal="true" name="CannotWearInfoNotComplete">
675 <message name="message"> 660 <message name="message">
676 Cannot wear that item since the complete information set it not yet available. Please try again in a minute. 661 You can not wear that item because it has not yet loaded. Please try again in a minute.
677 </message> 662 </message>
678 </alert> 663 </alert>
679 <alert modal="true" name="MustHaveAccountToLogInNoLinks"> 664 <alert modal="true" name="MustHaveAccountToLogInNoLinks">
@@ -681,17 +666,14 @@ The outfit folder contains no clothing, body parts, or attachments.
681 You must have an account to connect to [SECOND_LIFE]. 666 You must have an account to connect to [SECOND_LIFE].
682 </message> 667 </message>
683 <option name="OK"> 668 <option name="OK">
684 OK 669 Close
685 </option>
686 <option name="Cancel">
687 Cancel
688 </option> 670 </option>
689 </alert> 671 </alert>
690 <alert modal="true" name="MustHaveAccountToLogIn"> 672 <alert modal="true" name="MustHaveAccountToLogIn">
691 <message name="message"> 673 <message name="message">
692 You must have an account to connect to [SECOND_LIFE]. 674 You must have an account to connect to [SECOND_LIFE].
693 675
694Go to www.secondlife.com to create a new account? 676Go to www.secondlife.com to create an account?
695 </message> 677 </message>
696 <option name="OK"> 678 <option name="OK">
697 OK 679 OK
@@ -703,11 +685,11 @@ Go to www.secondlife.com to create a new account?
703 <alert modal="true" name="AddClassified"> 685 <alert modal="true" name="AddClassified">
704 <message name="message"> 686 <message name="message">
705 Classified ads appear in the &apos;Classified&apos; section of the 687 Classified ads appear in the &apos;Classified&apos; section of the
706Search directory for one week. 688Search directory and on www.secondlife.com for one week.
707 689
708Fill out your ad, then click &apos;Publish...&apos; to add it to the 690Fill out your ad, then click &apos;Publish...&apos; to add it to the
709directory. 691directory.
710 692
711You&apos;ll be asked for a price to pay when clicking Publish. 693You&apos;ll be asked for a price to pay when clicking Publish.
712Paying more makes your ad appear higher in the list, and 694Paying more makes your ad appear higher in the list, and
713also appear higher when people search for keywords. 695also appear higher when people search for keywords.
@@ -728,7 +710,7 @@ also appear higher when people search for keywords.
728There is no reimbursement for fees paid. 710There is no reimbursement for fees paid.
729 </message> 711 </message>
730 <option name="Delete"> 712 <option name="Delete">
731 Delete 713 OK
732 </option> 714 </option>
733 <option name="Cancel"> 715 <option name="Cancel">
734 Cancel 716 Cancel
@@ -739,7 +721,7 @@ There is no reimbursement for fees paid.
739 Delete pick [PICK]? 721 Delete pick [PICK]?
740 </message> 722 </message>
741 <option name="Delete"> 723 <option name="Delete">
742 Delete 724 OK
743 </option> 725 </option>
744 <option name="Cancel"> 726 <option name="Cancel">
745 Cancel 727 Cancel
@@ -750,7 +732,7 @@ There is no reimbursement for fees paid.
750 Some of the display changes that you have made 732 Some of the display changes that you have made
751require [SECOND_LIFE] to shut down immediately, 733require [SECOND_LIFE] to shut down immediately,
752which will cause you to lose any work in progress. 734which will cause you to lose any work in progress.
753 735
754Apply those changes and quit 736Apply those changes and quit
755 </message> 737 </message>
756 <option name="ApplyandQuit"> 738 <option name="ApplyandQuit">
@@ -765,7 +747,7 @@ Apply those changes and quit
765 Go to the [SECOND_LIFE] events web page? 747 Go to the [SECOND_LIFE] events web page?
766 </message> 748 </message>
767 <option name="GotoPage"> 749 <option name="GotoPage">
768 Go to Page 750 OK
769 </option> 751 </option>
770 <option name="Cancel"> 752 <option name="Cancel">
771 Cancel 753 Cancel
@@ -778,7 +760,7 @@ Apply those changes and quit
778 </alert> 760 </alert>
779 <alert modal="true" name="SelectItemToView"> 761 <alert modal="true" name="SelectItemToView">
780 <message name="message"> 762 <message name="message">
781 Please select an item to view. 763 Please select a proposal to view.
782 </message> 764 </message>
783 </alert> 765 </alert>
784 <alert modal="true" name="SelectProposalToView"> 766 <alert modal="true" name="SelectProposalToView">
@@ -824,7 +806,7 @@ Note: This will clear the cache.
824or make a bid? 806or make a bid?
825 </message> 807 </message>
826 <option name="GotoPage"> 808 <option name="GotoPage">
827 Go to Page 809 OK
828 </option> 810 </option>
829 <option name="Cancel"> 811 <option name="Cancel">
830 Cancel 812 Cancel
@@ -882,13 +864,13 @@ The object may be out of range or may have been deleted.
882 <message name="message"> 864 <message name="message">
883 Could not undo all changes in your version of the script. 865 Could not undo all changes in your version of the script.
884Would you like to load the server&apos;s last saved version? 866Would you like to load the server&apos;s last saved version?
885(Note: this operation cannot be undone.) 867(**Warning** This operation cannot be undone.)
886 </message> 868 </message>
887 <option name="Yes"> 869 <option name="Yes">
888 Yes 870 OK
889 </option> 871 </option>
890 <option name="No"> 872 <option name="No">
891 No 873 Cancel
892 </option> 874 </option>
893 </alert> 875 </alert>
894 <alert modal="true" name="SaveScriptFailReason"> 876 <alert modal="true" name="SaveScriptFailReason">
@@ -898,7 +880,7 @@ Would you like to load the server&apos;s last saved version?
898 </alert> 880 </alert>
899 <alert modal="true" name="SaveScriptFailObjectNotFound"> 881 <alert modal="true" name="SaveScriptFailObjectNotFound">
900 <message name="message"> 882 <message name="message">
901 Could not save the script because the object it is on could not be found. 883 Could not save the script because the object it is in could not be found.
902The object may be out of range or may have been deleted. 884The object may be out of range or may have been deleted.
903 </message> 885 </message>
904 </alert> 886 </alert>
@@ -930,7 +912,7 @@ The object may be out of range or may have been deleted.
930 </alert> 912 </alert>
931 <alert modal="true" name="CannotLoadWearable"> 913 <alert modal="true" name="CannotLoadWearable">
932 <message name="message"> 914 <message name="message">
933 Sorry, unable to load wearable. 915 Unable to load wearable.
934 </message> 916 </message>
935 </alert> 917 </alert>
936 <alert modal="true" name="ConfirmDeleteComplicated"> 918 <alert modal="true" name="ConfirmDeleteComplicated">
@@ -960,6 +942,15 @@ based on your system configuration.
960 OK 942 OK
961 </option> 943 </option>
962 </alert> 944 </alert>
945 <alert modal="true" name="DisplaySettingsNoShaders">
946 <message name="message">
947 [SECOND_LIFE] crashed while initializing graphics drivers.
948Shaders will be disabled in order to avoid some common driver errors.
949This will disable some graphics features.
950We recommend updating your graphics card drivers.
951Shaders can be re-enabled in Preferences &gt; Graphics Detail.
952 </message>
953 </alert>
963 <alert modal="true" name="CannotRequestDomain"> 954 <alert modal="true" name="CannotRequestDomain">
964 <message name="message"> 955 <message name="message">
965 Unable to connect to server. 956 Unable to connect to server.
@@ -971,7 +962,7 @@ Could not request domain name: [HOST]
971 Unable to find the server domain name. 962 Unable to find the server domain name.
972This could be the result of a lost network connection 963This could be the result of a lost network connection
973or a server problem. 964or a server problem.
974 965
975Please try again in a few minutes, or click Help 966Please try again in a few minutes, or click Help
976for advice and a link to the system status web page. 967for advice and a link to the system status web page.
977 </message> 968 </message>
@@ -994,18 +985,17 @@ Unable to connect to [SERVER]
994DNS could not resolve the host name. 985DNS could not resolve the host name.
995Please verify that you can connect to the www.secondlife.com 986Please verify that you can connect to the www.secondlife.com
996web site. If you can, but continue to receive this error, 987web site. If you can, but continue to receive this error,
997please go to the support section and report this problem. 988please go to www.secondlife.com/support and report this problem.
998 </message> 989 </message>
999 </alert> 990 </alert>
1000 <alert modal="true" name="CannotConnectSecurityError"> 991 <alert modal="true" name="CannotConnectSecurityError">
1001 <message name="message"> 992 <message name="message">
1002 Unable to establish a secure connection to the login server. 993 Unable to establish a secure connection to the login server.
1003Often this means that your computer&apos;s clock is set incorrectly. 994Often this means that your computer&apos;s clock is set incorrectly.
1004Please go to Control Panels and make sure the time and date 995Please ensure the time and date are set correctly.
1005are set correctly. 996
1006
1007If you continue to receive this error, please go 997If you continue to receive this error, please go
1008to the Support section of the SecondLife.com web site 998to www.secondlife.com/support
1009and report the problem. 999and report the problem.
1010 </message> 1000 </message>
1011 </alert> 1001 </alert>
@@ -1014,7 +1004,7 @@ and report the problem.
1014 Unable to connect to [SECOND_LIFE]. 1004 Unable to connect to [SECOND_LIFE].
1015The login server couldn&apos;t verify itself via SSL. 1005The login server couldn&apos;t verify itself via SSL.
1016If you continue to receive this error, please go 1006If you continue to receive this error, please go
1017to the Support section of the SecondLife.com web site 1007to www.secondlife.com/support
1018and report the problem. 1008and report the problem.
1019 </message> 1009 </message>
1020 </alert> 1010 </alert>
@@ -1022,7 +1012,7 @@ and report the problem.
1022 <message name="message"> 1012 <message name="message">
1023 Unable to connect to [SECOND_LIFE]. 1013 Unable to connect to [SECOND_LIFE].
1024Despite our best efforts, something unexpected has gone wrong. 1014Despite our best efforts, something unexpected has gone wrong.
1025Please go to the Support section of the SecondLife.com web site 1015Please go to www.secondlife.com/support
1026and report the problem. If possible, include your SecondLife.log 1016and report the problem. If possible, include your SecondLife.log
1027file from: C:\Documents and Settings\(name)\Application Data\SecondLife\logs 1017file from: C:\Documents and Settings\(name)\Application Data\SecondLife\logs
1028Thank you. 1018Thank you.
@@ -1032,7 +1022,7 @@ Thank you.
1032 <message name="message"> 1022 <message name="message">
1033 Unable to connect to [SECOND_LIFE]. 1023 Unable to connect to [SECOND_LIFE].
1034Despite our best efforts, something unexpected has gone wrong. 1024Despite our best efforts, something unexpected has gone wrong.
1035Please go to the Support section of the SecondLife.com web site 1025Please go to www.secondlife.com/support
1036and report the problem. If possible, include your SecondLife.log 1026and report the problem. If possible, include your SecondLife.log
1037file from: ~/Library/Application Support/SecondLife/logs 1027file from: ~/Library/Application Support/SecondLife/logs
1038Thank you. 1028Thank you.
@@ -1043,15 +1033,13 @@ Thank you.
1043 There was a problem resolving your login 1033 There was a problem resolving your login
1044authentication token. Please try logging in 1034authentication token. Please try logging in
1045again. If you continue to receive this error, 1035again. If you continue to receive this error,
1046please goto the Support section of the 1036please go to www.secondlife.com/support.
1047SecondLife.com web site.
1048 </message> 1037 </message>
1049 </alert> 1038 </alert>
1050 <alert modal="true" name="CannotConnectNoMessage"> 1039 <alert modal="true" name="CannotConnectNoMessage">
1051 <message name="message"> 1040 <message name="message">
1052 Unknown problem trying to connect. 1041 Unknown problem trying to connect.
1053(Blank error message from server.) 1042
1054
1055Please try again in a few minutes, or click Help 1043Please try again in a few minutes, or click Help
1056for advice and a link to the system status web page. 1044for advice and a link to the system status web page.
1057 </message> 1045 </message>
@@ -1065,7 +1053,7 @@ for advice and a link to the system status web page.
1065 <alert modal="true" name="CannotConnectNoReplyFromLogin"> 1053 <alert modal="true" name="CannotConnectNoReplyFromLogin">
1066 <message name="message"> 1054 <message name="message">
1067 Unable to connect. No reply from login database. 1055 Unable to connect. No reply from login database.
1068 1056
1069Please try again in a few minutes, or click Help 1057Please try again in a few minutes, or click Help
1070for advice and a link to the system status web page. 1058for advice and a link to the system status web page.
1071 </message> 1059 </message>
@@ -1084,10 +1072,10 @@ for advice and a link to the system status web page.
1084 <alert modal="true" name="FirstRunDialog"> 1072 <alert modal="true" name="FirstRunDialog">
1085 <message name="message"> 1073 <message name="message">
1086 [SECOND_LIFE] installation is complete. 1074 [SECOND_LIFE] installation is complete.
1087 1075
1088If this is your first time using [SECOND_LIFE], you will need to create 1076If this is your first time using [SECOND_LIFE], you will need to create
1089an account before you can log on. 1077an account before you can log on.
1090 1078
1091Return to www.secondlife.com to create a new account? 1079Return to www.secondlife.com to create a new account?
1092 </message> 1080 </message>
1093 <option name="NewAccount..."> 1081 <option name="NewAccount...">
@@ -1099,8 +1087,8 @@ Return to www.secondlife.com to create a new account?
1099 </alert> 1087 </alert>
1100 <alert modal="true" name="ClothingStillDownloading"> 1088 <alert modal="true" name="ClothingStillDownloading">
1101 <message name="message"> 1089 <message name="message">
1102 Your clothing is still downloading. 1090 Your avatar is still downloading.
1103You can use the world normally, and other users 1091You can use [SECOND_LIFE] normally, and other Residents
1104will see you correctly. 1092will see you correctly.
1105 </message> 1093 </message>
1106 </alert> 1094 </alert>
@@ -1115,7 +1103,7 @@ Please check your network connection.
1115 <message name="message"> 1103 <message name="message">
1116 Unable to connect. Login packet never received by 1104 Unable to connect. Login packet never received by
1117login server. 1105login server.
1118 1106
1119Please try again in a few minutes, or click Help 1107Please try again in a few minutes, or click Help
1120for advice and a link to the system status web page. 1108for advice and a link to the system status web page.
1121 </message> 1109 </message>
@@ -1128,11 +1116,11 @@ for advice and a link to the system status web page.
1128 </alert> 1116 </alert>
1129 <alert modal="true" name="WelcomeToSecondLife"> 1117 <alert modal="true" name="WelcomeToSecondLife">
1130 <message name="message"> 1118 <message name="message">
1131 Welcome to [SECOND_LIFE]! 1119 Welcome to [SECOND_LIFE]!
1132 1120
1133Use arrow keys to walk. 1121Use arrow keys to walk.
1134 1122
1135Please choose the male or female character. 1123Please choose the male or female avatar.
1136You can change your mind later. 1124You can change your mind later.
1137 </message> 1125 </message>
1138 <option name="Male"> 1126 <option name="Male">
@@ -1144,11 +1132,11 @@ You can change your mind later.
1144 </alert> 1132 </alert>
1145 <alert modal="true" name="WelcomeToSecondLifeSimple"> 1133 <alert modal="true" name="WelcomeToSecondLifeSimple">
1146 <message name="message"> 1134 <message name="message">
1147 Welcome to [SECOND_LIFE]! 1135 Welcome to [SECOND_LIFE]!
1148 1136
1149Use arrow keys to walk. 1137Use arrow keys to walk.
1150 1138
1151Please choose the male or female character. 1139Please choose the male or female avatar.
1152 </message> 1140 </message>
1153 <option name="Male"> 1141 <option name="Male">
1154 Male 1142 Male
@@ -1171,8 +1159,6 @@ Please choose the male or female character.
1171 <alert modal="true" name="RegionNoTerraforming"> 1159 <alert modal="true" name="RegionNoTerraforming">
1172 <message name="message"> 1160 <message name="message">
1173 The region [REGION] does not allow terraforming. 1161 The region [REGION] does not allow terraforming.
1174You will need to buy land in another part of the world
1175to terraform it.
1176 </message> 1162 </message>
1177 </alert> 1163 </alert>
1178 <alert modal="true" name="CannotCopyWarning"> 1164 <alert modal="true" name="CannotCopyWarning">
@@ -1201,12 +1187,13 @@ really want to offer this item?
1201 </alert> 1187 </alert>
1202 <alert modal="true" name="TooManyItems"> 1188 <alert modal="true" name="TooManyItems">
1203 <message name="message"> 1189 <message name="message">
1204 Cannot give that many items in a single inventory transfer. 1190 Cannot give more than 42 items in a single inventory transfer.
1205 </message> 1191 </message>
1206 </alert> 1192 </alert>
1207 <alert modal="true" name="NoItems"> 1193 <alert modal="true" name="NoItems">
1208 <message name="message"> 1194 <message name="message">
1209 No items you can give. 1195 You do not have permission to transfer
1196 the selected items.
1210 </message> 1197 </message>
1211 </alert> 1198 </alert>
1212 <alert modal="true" name="CannotCopyCountItems"> 1199 <alert modal="true" name="CannotCopyCountItems">
@@ -1225,7 +1212,8 @@ Do you really want to give these items?
1225 </alert> 1212 </alert>
1226 <alert modal="true" name="CannotGiveCategory"> 1213 <alert modal="true" name="CannotGiveCategory">
1227 <message name="message"> 1214 <message name="message">
1228 Unable to give inventory category. 1215 You do not have permission to transfer
1216 the selected folder.
1229 </message> 1217 </message>
1230 </alert> 1218 </alert>
1231 <alert modal="true" name="FreezeAvatar"> 1219 <alert modal="true" name="FreezeAvatar">
@@ -1260,7 +1248,7 @@ chat, or interact with the world.
1260 </alert> 1248 </alert>
1261 <alert modal="true" name="InvalidUUID"> 1249 <alert modal="true" name="InvalidUUID">
1262 <message name="message"> 1250 <message name="message">
1263 Not a valid uuid 1251 Not a valid UUID.
1264 </message> 1252 </message>
1265 </alert> 1253 </alert>
1266 <alert modal="true" name="AcquireErrorTooManyObjects"> 1254 <alert modal="true" name="AcquireErrorTooManyObjects">
@@ -1278,29 +1266,28 @@ same region.
1278 <alert modal="true" name="TakeLockedOrNotOwnedBy"> 1266 <alert modal="true" name="TakeLockedOrNotOwnedBy">
1279 <message name="message"> 1267 <message name="message">
1280 At least one object is locked or not owned by you. 1268 At least one object is locked or not owned by you.
1281If an object is not owned by you and you take it, 1269If an object is not owned by you and you take it,
1282next owner permissions will be applied to it and 1270next owner permissions will be applied to it and
1283possibly restrict your ability to modify or copy it 1271possibly restrict your ability to modify or copy it.
1284in the future. 1272
1285However, you can still take the current selection.
1286Are you sure you want to take these itmes? 1273Are you sure you want to take these itmes?
1287 </message> 1274 </message>
1288 <option name="Yes"> 1275 <option name="Yes">
1289 Yes 1276 OK
1290 </option> 1277 </option>
1291 <option default="true" name="No"> 1278 <option default="true" name="No">
1292 No 1279 Cancel
1293 </option> 1280 </option>
1294 </alert> 1281 </alert>
1295 <alert modal="true" name="PromptGoToCurrencyPage"> 1282 <alert modal="true" name="PromptGoToCurrencyPage">
1296 <message name="message"> 1283 <message name="message">
1297 [EXTRA] 1284 [EXTRA]
1298 1285
1299 1286
1300Go to [URL] for information on purchasing currency? 1287Go to [URL] for information on purchasing currency?
1301 </message> 1288 </message>
1302 <option name="GotoPage"> 1289 <option name="GotoPage">
1303 Go to Page 1290 OK
1304 </option> 1291 </option>
1305 <option name="Cancel"> 1292 <option name="Cancel">
1306 Cancel 1293 Cancel
@@ -1310,7 +1297,6 @@ Go to [URL] for information on purchasing currency?
1310 <message name="message"> 1297 <message name="message">
1311 Unable to link these [COUNT] objects. 1298 Unable to link these [COUNT] objects.
1312You can link a maximum of [MAX] objects. 1299You can link a maximum of [MAX] objects.
1313Try selecting fewer objects.
1314 </message> 1300 </message>
1315 </alert> 1301 </alert>
1316 <alert modal="true" name="CannotLinkIncompleteSet"> 1302 <alert modal="true" name="CannotLinkIncompleteSet">
@@ -1349,56 +1335,56 @@ Expected [VALIDS]
1349 </alert> 1335 </alert>
1350 <alert modal="true" name="CannotUploadSoundFile"> 1336 <alert modal="true" name="CannotUploadSoundFile">
1351 <message name="message"> 1337 <message name="message">
1352 Couldn&apos;t open upload sound file for reading: 1338 Couldn&apos;t open uploaded sound file for reading:
1353[FILE] 1339[FILE]
1354 </message> 1340 </message>
1355 </alert> 1341 </alert>
1356 <alert modal="true" name="SoundFileNotRIFF"> 1342 <alert modal="true" name="SoundFileNotRIFF">
1357 <message name="message"> 1343 <message name="message">
1358 File does not appear to be a RIFF WAVE file: 1344 File does not appear to be a RIFF WAVE file:
1359[FILE] 1345[FILE]
1360 </message> 1346 </message>
1361 </alert> 1347 </alert>
1362 <alert modal="true" name="SoundFileNotPCM"> 1348 <alert modal="true" name="SoundFileNotPCM">
1363 <message name="message"> 1349 <message name="message">
1364 File does not appear to be a PCM WAVE audio file: 1350 File does not appear to be a PCM WAVE audio file:
1365[FILE] 1351[FILE]
1366 </message> 1352 </message>
1367 </alert> 1353 </alert>
1368 <alert modal="true" name="SoundFileInvalidChannelCount"> 1354 <alert modal="true" name="SoundFileInvalidChannelCount">
1369 <message name="message"> 1355 <message name="message">
1370 File has invalid number of channels (must be mono or stereo): 1356 File has invalid number of channels (must be mono or stereo):
1371[FILE] 1357[FILE]
1372 </message> 1358 </message>
1373 </alert> 1359 </alert>
1374 <alert modal="true" name="SoundFileInvalidSampleRate"> 1360 <alert modal="true" name="SoundFileInvalidSampleRate">
1375 <message name="message"> 1361 <message name="message">
1376 File does not appear to be a supported sample rate (must be 44.1k): 1362 File does not appear to be a supported sample rate (must be 44.1k):
1377[FILE] 1363[FILE]
1378 </message> 1364 </message>
1379 </alert> 1365 </alert>
1380 <alert modal="true" name="SoundFileInvalidWordSize"> 1366 <alert modal="true" name="SoundFileInvalidWordSize">
1381 <message name="message"> 1367 <message name="message">
1382 File does not appear to be a supported word size (must be 8 or 16 bit): 1368 File does not appear to be a supported word size (must be 8 or 16 bit):
1383[FILE] 1369[FILE]
1384 </message> 1370 </message>
1385 </alert> 1371 </alert>
1386 <alert modal="true" name="SoundFileInvalidHeader"> 1372 <alert modal="true" name="SoundFileInvalidHeader">
1387 <message name="message"> 1373 <message name="message">
1388 Could not find &apos;data&apos; chunk in WAV header: 1374 Could not find &apos;data&apos; chunk in WAV header:
1389[FILE] 1375[FILE]
1390 </message> 1376 </message>
1391 </alert> 1377 </alert>
1392 <alert modal="true" name="SoundFileInvalidTooLong"> 1378 <alert modal="true" name="SoundFileInvalidTooLong">
1393 <message name="message"> 1379 <message name="message">
1394 Audio file is too long (10 second maximum): 1380 Audio file is too long (10 second maximum):
1395[FILE] 1381[FILE]
1396 </message> 1382 </message>
1397 </alert> 1383 </alert>
1398 <alert modal="true" name="ProblemWithFile"> 1384 <alert modal="true" name="ProblemWithFile">
1399 <message name="message"> 1385 <message name="message">
1400 Problem with file [FILE]: 1386 Problem with file [FILE]:
1401 1387
1402[ERROR] 1388[ERROR]
1403 </message> 1389 </message>
1404 </alert> 1390 </alert>
@@ -1409,17 +1395,17 @@ Expected [VALIDS]
1409 </alert> 1395 </alert>
1410 <alert modal="true" name="UnknownVorbisEncodeFailure"> 1396 <alert modal="true" name="UnknownVorbisEncodeFailure">
1411 <message name="message"> 1397 <message name="message">
1412 Unknown vorbis encode failure on: [FILE] 1398 Unknown Vorbis encode failure on: [FILE]
1413 </message> 1399 </message>
1414 </alert> 1400 </alert>
1415 <alert modal="true" name="CorruptResourceFile"> 1401 <alert modal="true" name="CorruptResourceFile">
1416 <message name="message"> 1402 <message name="message">
1417 corrupt resource file: [FILE] 1403 Corrupt resource file: [FILE]
1418 </message> 1404 </message>
1419 </alert> 1405 </alert>
1420 <alert modal="true" name="UnknownResourceFileVersion"> 1406 <alert modal="true" name="UnknownResourceFileVersion">
1421 <message name="message"> 1407 <message name="message">
1422 unknown linden resource file version in file: [FILE] 1408 Unknown Linden resource file version in file: [FILE]
1423 </message> 1409 </message>
1424 </alert> 1410 </alert>
1425 <alert modal="true" name="UnableToCreateOutputFile"> 1411 <alert modal="true" name="UnableToCreateOutputFile">
@@ -1429,7 +1415,7 @@ Expected [VALIDS]
1429 </alert> 1415 </alert>
1430 <alert modal="true" name="DoNotSupportBulkAnimationUpload"> 1416 <alert modal="true" name="DoNotSupportBulkAnimationUpload">
1431 <message name="message"> 1417 <message name="message">
1432 We do not currently support bulk upload of animation files 1418 We do not currently support bulk upload of animation files.
1433 </message> 1419 </message>
1434 </alert> 1420 </alert>
1435 <alert modal="true" name="CannotAccessOutputFile"> 1421 <alert modal="true" name="CannotAccessOutputFile">
@@ -1439,12 +1425,12 @@ Expected [VALIDS]
1439 </alert> 1425 </alert>
1440 <alert modal="true" name="InsufficientFundsToUploadFile"> 1426 <alert modal="true" name="InsufficientFundsToUploadFile">
1441 <message name="message"> 1427 <message name="message">
1442 Insufficient funds to upload file: cost is L$[COST], balance is L$[BALANCE] 1428 Insufficient L$ to upload file: the price is L$[COST], your balance is L$[BALANCE]
1443 </message> 1429 </message>
1444 </alert> 1430 </alert>
1445 <alert modal="true" name="InsufficientFundsToFinishUpload"> 1431 <alert modal="true" name="InsufficientFundsToFinishUpload">
1446 <message name="message"> 1432 <message name="message">
1447 Insufficient funds to finish uploading [FILE]: cost is L$[COST], balance is L$[BALANCE] 1433 Insufficient L$ to finish uploading [FILE]: the price is L$[COST], your balance is L$[BALANCE]
1448 </message> 1434 </message>
1449 </alert> 1435 </alert>
1450 <alert modal="true" name="CannotUploadReason"> 1436 <alert modal="true" name="CannotUploadReason">
@@ -1457,68 +1443,63 @@ Please try again later.
1457 <message name="message"> 1443 <message name="message">
1458 You cannot create a landmark here because 1444 You cannot create a landmark here because
1459the owner of the land doesn&apos;t allow it. 1445the owner of the land doesn&apos;t allow it.
1460Try moving a few meters away first.
1461 </message> 1446 </message>
1462 </alert> 1447 </alert>
1463 <alert modal="true" name="CannotRecompileSelectObjectsNoScripts"> 1448 <alert modal="true" name="CannotRecompileSelectObjectsNoScripts">
1464 <message name="message"> 1449 <message name="message">
1465 Not able to perform recompilation. 1450 Not able to perform &apos;recompilation&apos;.
1466Select objects with scripts that 1451Select an object with a script.
1467are valid.
1468 </message> 1452 </message>
1469 </alert> 1453 </alert>
1470 <alert modal="true" name="CannotRecompileSelectObjectsNoPermission"> 1454 <alert modal="true" name="CannotRecompileSelectObjectsNoPermission">
1471 <message name="message"> 1455 <message name="message">
1472 Not able to perform recompilation. 1456 Not able to perform &apos;recompilation&apos;.
1473Select objects with scripts that you 1457Select objects with scripts that you
1474have permission to modify. 1458have permission to modify.
1475 </message> 1459 </message>
1476 </alert> 1460 </alert>
1477 <alert modal="true" name="CannotResetSelectObjectsNoScripts"> 1461 <alert modal="true" name="CannotResetSelectObjectsNoScripts">
1478 <message name="message"> 1462 <message name="message">
1479 Not able to perform reset. 1463 Not able to perform &apos;reset&apos;.
1480Select objects with scripts that you 1464Select objects with scripts.
1481are valid.
1482 </message> 1465 </message>
1483 </alert> 1466 </alert>
1484 <alert modal="true" name="CannotResetSelectObjectsNoPermission"> 1467 <alert modal="true" name="CannotResetSelectObjectsNoPermission">
1485 <message name="message"> 1468 <message name="message">
1486 Not able to perform reset. 1469 Not able to perform &apos;reset&apos;.
1487Select objects with scripts that you 1470Select objects with scripts that you
1488have permission to modify. 1471have permission to modify.
1489 </message> 1472 </message>
1490 </alert> 1473 </alert>
1491 <alert modal="true" name="CannotSetRunningSelectObjectsNoScripts"> 1474 <alert modal="true" name="CannotSetRunningSelectObjectsNoScripts">
1492 <message name="message"> 1475 <message name="message">
1493 Not able to set any scripts to running. 1476 Not able to set any scripts to &apos;running&apos;.
1494Select objects with scripts that 1477Select objects with scripts.
1495are valid.
1496 </message> 1478 </message>
1497 </alert> 1479 </alert>
1498 <alert modal="true" name="CannotSetRunningSelectObjectsNoPermission"> 1480 <alert modal="true" name="CannotSetRunningSelectObjectsNoPermission">
1499 <message name="message"> 1481 <message name="message">
1500 Not able to set any scripts to running. 1482 Not able to set any scripts to &apos;running&apos;.
1501Select objects with scripts that you 1483Select objects with scripts that you
1502have permission to modify. 1484have permission to modify.
1503 </message> 1485 </message>
1504 </alert> 1486 </alert>
1505 <alert modal="true" name="CannotSetRunningNotSelectObjectsNoScripts"> 1487 <alert modal="true" name="CannotSetRunningNotSelectObjectsNoScripts">
1506 <message name="message"> 1488 <message name="message">
1507 Not able to set any scripts to not running. 1489 Unable to set any scripts to &apos;not running&apos;.
1508Select objects with scripts that 1490Select objects with scripts.
1509are valid.
1510 </message> 1491 </message>
1511 </alert> 1492 </alert>
1512 <alert modal="true" name="CannotSetRunningNotSelectObjectsNoPermission"> 1493 <alert modal="true" name="CannotSetRunningNotSelectObjectsNoPermission">
1513 <message name="message"> 1494 <message name="message">
1514 Not able to set any scripts to not running. 1495 Unable to set any scripts to &apos;not running&apos;.
1515Select objects with scripts that you 1496Select objects with scripts that you
1516have permission to modify. 1497have permission to modify.
1517 </message> 1498 </message>
1518 </alert> 1499 </alert>
1519 <alert modal="true" name="NoFrontmostFloater"> 1500 <alert modal="true" name="NoFrontmostFloater">
1520 <message name="message"> 1501 <message name="message">
1521 No frontmost floater to save 1502 No frontmost floater to save.
1522 </message> 1503 </message>
1523 </alert> 1504 </alert>
1524 <alert modal="true" name="ColladaExportFailedUnknownServerError"> 1505 <alert modal="true" name="ColladaExportFailedUnknownServerError">
@@ -1560,7 +1541,7 @@ have permission to modify.
1560 <alert modal="true" name="CannotSetLandOwnerNothingSelected"> 1541 <alert modal="true" name="CannotSetLandOwnerNothingSelected">
1561 <message name="message"> 1542 <message name="message">
1562 Unable to set land owner: 1543 Unable to set land owner:
1563Nothing selected. 1544No parcel selected.
1564 </message> 1545 </message>
1565 </alert> 1546 </alert>
1566 <alert modal="true" name="CannotSetLandOwnerMultipleRegions"> 1547 <alert modal="true" name="CannotSetLandOwnerMultipleRegions">
@@ -1576,7 +1557,7 @@ cancel the auction and potentially make some residents
1576unhappy if bidding has begun. Force ownership? 1557unhappy if bidding has begun. Force ownership?
1577 </message> 1558 </message>
1578 <option name="Force"> 1559 <option name="Force">
1579 Force 1560 OK
1580 </option> 1561 </option>
1581 <option name="Cancel"> 1562 <option name="Cancel">
1582 Cancel 1563 Cancel
@@ -1585,19 +1566,19 @@ unhappy if bidding has begun. Force ownership?
1585 <alert modal="true" name="CannotContentifyNothingSelected"> 1566 <alert modal="true" name="CannotContentifyNothingSelected">
1586 <message name="message"> 1567 <message name="message">
1587 Unable to contentify: 1568 Unable to contentify:
1588Nothing selected. 1569No parcel selected.
1589 </message> 1570 </message>
1590 </alert> 1571 </alert>
1591 <alert modal="true" name="CannotContentifyNoRegion"> 1572 <alert modal="true" name="CannotContentifyNoRegion">
1592 <message name="message"> 1573 <message name="message">
1593 Unable to contentify: 1574 Unable to contentify:
1594No region. 1575No region selected.
1595 </message> 1576 </message>
1596 </alert> 1577 </alert>
1597 <alert modal="true" name="CannotReleaseLandNothingSelected"> 1578 <alert modal="true" name="CannotReleaseLandNothingSelected">
1598 <message name="message"> 1579 <message name="message">
1599 Unable to abandon land: 1580 Unable to abandon land:
1600Nothing selected. 1581No parcel selected.
1601 </message> 1582 </message>
1602 </alert> 1583 </alert>
1603 <alert modal="true" name="CannotReleaseLandNoRegion"> 1584 <alert modal="true" name="CannotReleaseLandNoRegion">
@@ -1609,7 +1590,7 @@ Cannot find region.
1609 <alert modal="true" name="CannotBuyLandNothingSelected"> 1590 <alert modal="true" name="CannotBuyLandNothingSelected">
1610 <message name="message"> 1591 <message name="message">
1611 Unable to buy land: 1592 Unable to buy land:
1612Nothing selected. 1593No parcel selected.
1613 </message> 1594 </message>
1614 </alert> 1595 </alert>
1615 <alert modal="true" name="CannotBuyLandNoRegion"> 1596 <alert modal="true" name="CannotBuyLandNoRegion">
@@ -1621,13 +1602,13 @@ Cannot find the region this land is in.
1621 <alert modal="true" name="CannotDeedLandNothingSelected"> 1602 <alert modal="true" name="CannotDeedLandNothingSelected">
1622 <message name="message"> 1603 <message name="message">
1623 Unable to deed land: 1604 Unable to deed land:
1624Nothing selected. 1605No parcel selected.
1625 </message> 1606 </message>
1626 </alert> 1607 </alert>
1627 <alert modal="true" name="CannotDeedLandNoGroup"> 1608 <alert modal="true" name="CannotDeedLandNoGroup">
1628 <message name="message"> 1609 <message name="message">
1629 Unable to deed land: 1610 Unable to deed land:
1630No Group. 1611No Group selected.
1631 </message> 1612 </message>
1632 </alert> 1613 </alert>
1633 <alert modal="true" name="CannotDeedLandNoRegion"> 1614 <alert modal="true" name="CannotDeedLandNoRegion">
@@ -1640,7 +1621,7 @@ Please use Tools -&gt; Report Bug to report this.
1640 <alert modal="true" name="CannotSetLandOwnerNothingSelected"> 1621 <alert modal="true" name="CannotSetLandOwnerNothingSelected">
1641 <message name="message"> 1622 <message name="message">
1642 Unable to set land owner: 1623 Unable to set land owner:
1643Nothing selected. 1624No parcel selected.
1644 </message> 1625 </message>
1645 </alert> 1626 </alert>
1646 <alert modal="true" name="CannotBuyLandMultipleRegions"> 1627 <alert modal="true" name="CannotBuyLandMultipleRegions">
@@ -1652,15 +1633,15 @@ Please select a smaller area and try again.
1652 <alert modal="true" name="CannotBuyLandMultipleSelected"> 1633 <alert modal="true" name="CannotBuyLandMultipleSelected">
1653 <message name="message"> 1634 <message name="message">
1654 Unable to buy land: 1635 Unable to buy land:
1655Multiple different parcels selected. 1636Multiple parcels selected.
1656Try selecting a smaller area. 1637Try selecting a single parcel.
1657 </message> 1638 </message>
1658 </alert> 1639 </alert>
1659 <alert modal="true" name="CannotDeedLandMultipleSelected"> 1640 <alert modal="true" name="CannotDeedLandMultipleSelected">
1660 <message name="message"> 1641 <message name="message">
1661 Unable to deed land: 1642 Unable to deed land:
1662Multiple different parcels selected. 1643Multiple parcels selected.
1663Try selecting a smaller area. 1644Try selecting a single parcel.
1664 </message> 1645 </message>
1665 </alert> 1646 </alert>
1666 <alert modal="true" name="RegionNotFound"> 1647 <alert modal="true" name="RegionNotFound">
@@ -1670,11 +1651,11 @@ Try selecting a smaller area.
1670 </alert> 1651 </alert>
1671 <alert modal="true" name="ParcelCanPlayMusic"> 1652 <alert modal="true" name="ParcelCanPlayMusic">
1672 <message name="message"> 1653 <message name="message">
1673 This location can play streaming music. 1654 This location can play streaming music.
1674 1655
1675Music requires a 768 kbps or faster 1656Music requires a 768 kbps or faster
1676Internet connection. 1657Internet connection.
1677 1658
1678Play music when available? 1659Play music when available?
1679 </message> 1660 </message>
1680 <option name="PlayMusic"> 1661 <option name="PlayMusic">
@@ -1686,14 +1667,14 @@ Play music when available?
1686 </alert> 1667 </alert>
1687 <alert modal="true" name="ParcelCanPlayMedia"> 1668 <alert modal="true" name="ParcelCanPlayMedia">
1688 <message name="message"> 1669 <message name="message">
1689 This location can play streaming video. 1670 This location can play streaming video.
1690 1671
1691Streaming video requires a 768 kbps or 1672Streaming video requires a 768 kbps or
1692faster Internet connection. 1673faster Internet connection.
1693 1674
1694Play streaming video when available? 1675Play streaming video when available?
1695 1676
1696(You can change this option later under 1677(You can change this option later under
1697Preferences &gt; Audio &amp; Video.) 1678Preferences &gt; Audio &amp; Video.)
1698 </message> 1679 </message>
1699 <option name="PlayMedia"> 1680 <option name="PlayMedia">
@@ -1707,14 +1688,14 @@ Preferences &gt; Audio &amp; Video.)
1707 <message name="message"> 1688 <message name="message">
1708 Unable to buy land: 1689 Unable to buy land:
1709Waiting for server to report cost. 1690Waiting for server to report cost.
1710Try again in a few seconds. 1691Please try again.
1711 </message> 1692 </message>
1712 </alert> 1693 </alert>
1713 <alert modal="true" name="CannotDeedLandWaitingForServer"> 1694 <alert modal="true" name="CannotDeedLandWaitingForServer">
1714 <message name="message"> 1695 <message name="message">
1715 Unable to deed land: 1696 Unable to deed land:
1716Waiting for server to report ownership. 1697Waiting for server to report ownership.
1717Try again in a few seconds. 1698Please try again.
1718 </message> 1699 </message>
1719 </alert> 1700 </alert>
1720 <alert modal="true" name="CannotBuyLandNoPublic"> 1701 <alert modal="true" name="CannotBuyLandNoPublic">
@@ -1726,8 +1707,8 @@ The selection doesn&apos;t contain any public land.
1726 <alert modal="true" name="CannotBuyLandLandOwned"> 1707 <alert modal="true" name="CannotBuyLandLandOwned">
1727 <message name="message"> 1708 <message name="message">
1728 Unable to buy land: 1709 Unable to buy land:
1729Land owned by another user is selected. 1710You have selected a parcel owned
1730Try selecting a smaller area. 1711by another Resident.
1731 </message> 1712 </message>
1732 </alert> 1713 </alert>
1733 <alert modal="true" name="CannotButLandRegionNotFound"> 1714 <alert modal="true" name="CannotButLandRegionNotFound">
@@ -1758,28 +1739,28 @@ Please activate another group using Edit -&gt; Groups...
1758 </alert> 1739 </alert>
1759 <alert modal="true" name="CannotBuyLandInsufficientFunds"> 1740 <alert modal="true" name="CannotBuyLandInsufficientFunds">
1760 <message name="message"> 1741 <message name="message">
1761 Buying this [AREA] sq. meters of land costs L$[PRICE]. 1742 Buying this [AREA] m2 of land costs L$[PRICE].
1762You only have L$[BALANCE]. 1743You only have L$[BALANCE].
1763 </message> 1744 </message>
1764 </alert> 1745 </alert>
1765 <alert modal="true" name="CannotReleaseLandNothingSelected"> 1746 <alert modal="true" name="CannotReleaseLandNothingSelected">
1766 <message name="message"> 1747 <message name="message">
1767 Unable to abandon land: 1748 Unable to abandon land:
1768Nothing selected. 1749No parcel selected.
1769 </message> 1750 </message>
1770 </alert> 1751 </alert>
1771 <alert modal="true" name="CannotReleaseLandWatingForServer"> 1752 <alert modal="true" name="CannotReleaseLandWatingForServer">
1772 <message name="message"> 1753 <message name="message">
1773 Unable to abandon land: 1754 Unable to abandon land:
1774Waiting for server to report cost. 1755Waiting for server to update parcel information.
1775Try again in a few seconds. 1756Try again in a few seconds.
1776 </message> 1757 </message>
1777 </alert> 1758 </alert>
1778 <alert modal="true" name="CannotReleaseLandSelected"> 1759 <alert modal="true" name="CannotReleaseLandSelected">
1779 <message name="message"> 1760 <message name="message">
1780 Unable to abandon land: 1761 Unable to abandon land:
1781Multiple different parcels selected. 1762You do not own all the parcels selected.
1782Try selecting a smaller area. 1763Please select a single parcel.
1783 </message> 1764 </message>
1784 </alert> 1765 </alert>
1785 <alert modal="true" name="CannotReleaseLandDontOwn"> 1766 <alert modal="true" name="CannotReleaseLandDontOwn">
@@ -1806,20 +1787,19 @@ The region [REGION] does not allow transfer of land.
1806 <message name="message"> 1787 <message name="message">
1807 Unable to abandon land: 1788 Unable to abandon land:
1808You must select an entire parcel to release it. 1789You must select an entire parcel to release it.
1809Try double-clicking to select an entire parcel, or 1790Select an entire parcel, or divide your parcel first.
1810first divide your parcel.
1811 </message> 1791 </message>
1812 </alert> 1792 </alert>
1813 <alert modal="true" name="ReleaseLandWarning"> 1793 <alert modal="true" name="ReleaseLandWarning">
1814 <message name="message"> 1794 <message name="message">
1815 You are about to release [AREA] sq. meters of land. 1795 You are about to release [AREA] m2 of land.
1816Releasing this parcel will remove it from your land 1796Releasing this parcel will remove it from your land
1817holdings, but will not credit any L$. 1797holdings, but will not grant any L$.
1818 1798
1819Release this land? 1799Release this land?
1820 </message> 1800 </message>
1821 <option name="Release"> 1801 <option name="Release">
1822 Release 1802 OK
1823 </option> 1803 </option>
1824 <option default="true" name="Cancel"> 1804 <option default="true" name="Cancel">
1825 Cancel 1805 Cancel
@@ -1828,15 +1808,14 @@ Release this land?
1828 <alert modal="true" name="CannotDivideLandNothingSelected"> 1808 <alert modal="true" name="CannotDivideLandNothingSelected">
1829 <message name="message"> 1809 <message name="message">
1830 Unable to divide land: 1810 Unable to divide land:
1831Nothing selected. 1811No parcels selected.
1832 </message> 1812 </message>
1833 </alert> 1813 </alert>
1834 <alert modal="true" name="CannotDivideLandPartialSelection"> 1814 <alert modal="true" name="CannotDivideLandPartialSelection">
1835 <message name="message"> 1815 <message name="message">
1836 Unable to divide land: 1816 Unable to divide land:
1837You have an entire parcel selected. 1817You have an entire parcel selected.
1838Try selecting a smaller area by clicking 1818Try selecting a part of the parcel.
1839and dragging.
1840 </message> 1819 </message>
1841 </alert> 1820 </alert>
1842 <alert modal="true" name="LandDivideWarning"> 1821 <alert modal="true" name="LandDivideWarning">
@@ -1844,11 +1823,11 @@ and dragging.
1844 Dividing this land will split this parcel into two 1823 Dividing this land will split this parcel into two
1845and each parcel can have its own settings. Some settings 1824and each parcel can have its own settings. Some settings
1846will be reset to defaults after the operation. 1825will be reset to defaults after the operation.
1847 1826
1848Divide land? 1827Divide land?
1849 </message> 1828 </message>
1850 <option name="Divide"> 1829 <option name="Divide">
1851 Divide 1830 OK
1852 </option> 1831 </option>
1853 <option name="Cancel"> 1832 <option name="Cancel">
1854 Cancel 1833 Cancel
@@ -1871,37 +1850,35 @@ Please use Tools -&gt; Report Bug to report this.
1871 <alert modal="true" name="CannotJoinLandNothingSelected"> 1850 <alert modal="true" name="CannotJoinLandNothingSelected">
1872 <message name="message"> 1851 <message name="message">
1873 Unable to join land: 1852 Unable to join land:
1874Nothing selected. 1853No parcels selected.
1875 </message> 1854 </message>
1876 </alert> 1855 </alert>
1877 <alert modal="true" name="CannotJoinLandEntireParcelSelected"> 1856 <alert modal="true" name="CannotJoinLandEntireParcelSelected">
1878 <message name="message"> 1857 <message name="message">
1879 Unable to join land: 1858 Unable to join land:
1880You have an entire parcel selected. 1859You only have one parcel selected.
1881Try selecting a larger area by clicking 1860Select land across both parcels.
1882and dragging.
1883 </message> 1861 </message>
1884 </alert> 1862 </alert>
1885 <alert modal="true" name="CannotJoinLandSelection"> 1863 <alert modal="true" name="CannotJoinLandSelection">
1886 <message name="message"> 1864 <message name="message">
1887 Unable to join land: 1865 Unable to join land:
1888You must select more than one parcel. 1866You must select more than one parcel.
1889Try selecting a larger area by clicking 1867Select land across both parcels.
1890and dragging.
1891 </message> 1868 </message>
1892 </alert> 1869 </alert>
1893 <alert modal="true" name="JoinLandWarning"> 1870 <alert modal="true" name="JoinLandWarning">
1894 <message name="message"> 1871 <message name="message">
1895 Joining this land will create one large parcel 1872 Joining this land will create one large parcel
1896out of all parcels intersecting the selected rectangle. 1873out of all parcels intersecting the selected rectangle.
1897 1874
1898You will need to reset the name and options of the 1875You will need to reset the name and options of the
1899new parcel. 1876new parcel.
1900 1877
1901Join land? 1878Join land?
1902 </message> 1879 </message>
1903 <option name="Join"> 1880 <option name="Join">
1904 Join 1881 OK
1905 </option> 1882 </option>
1906 <option name="Cancel"> 1883 <option name="Cancel">
1907 Cancel 1884 Cancel
@@ -1912,7 +1889,7 @@ Join land?
1912 This notecard needs to be saved before the item can be copied or viewed. Save notecard? 1889 This notecard needs to be saved before the item can be copied or viewed. Save notecard?
1913 </message> 1890 </message>
1914 <option default="true" name="Save"> 1891 <option default="true" name="Save">
1915 Save 1892 OK
1916 </option> 1893 </option>
1917 <option name="Cancel"> 1894 <option name="Cancel">
1918 Cancel 1895 Cancel
@@ -1920,10 +1897,10 @@ Join land?
1920 </alert> 1897 </alert>
1921 <alert modal="true" name="ConfirmLandmarkCopy"> 1898 <alert modal="true" name="ConfirmLandmarkCopy">
1922 <message name="message"> 1899 <message name="message">
1923 Copy this item to your inventory? 1900 Copy this landmark to your inventory?
1924 </message> 1901 </message>
1925 <option name="Copy"> 1902 <option name="Copy">
1926 Copy 1903 OK
1927 </option> 1904 </option>
1928 <option name="Cancel"> 1905 <option name="Cancel">
1929 Cancel 1906 Cancel
@@ -1975,7 +1952,7 @@ and provide details about your network setup.
1975 <alert modal="true" name="AppEarlyExit"> 1952 <alert modal="true" name="AppEarlyExit">
1976 <message name="message"> 1953 <message name="message">
1977 [MESSAGE] 1954 [MESSAGE]
1978 1955
1979We are unable to recover from this problem. Please 1956We are unable to recover from this problem. Please
1980uninstall and reinstall before trying again. If this 1957uninstall and reinstall before trying again. If this
1981problem persists, check the Tech Support FAQ at: 1958problem persists, check the Tech Support FAQ at:
@@ -1988,9 +1965,9 @@ www.secondlife.com/support.
1988 <alert modal="true" name="YouHaveBeenLoggedOut"> 1965 <alert modal="true" name="YouHaveBeenLoggedOut">
1989 <message name="message"> 1966 <message name="message">
1990 You have been logged out of [SECOND_LIFE]: 1967 You have been logged out of [SECOND_LIFE]:
1991 1968
1992[MESSAGE] 1969[MESSAGE]
1993 1970
1994Click Continue to look at existing IM and chat. 1971Click Continue to look at existing IM and chat.
1995You will not be able to perform any other operations. 1972You will not be able to perform any other operations.
1996Click Quit to exit [SECOND_LIFE] immediately. 1973Click Quit to exit [SECOND_LIFE] immediately.
@@ -2006,19 +1983,18 @@ Click Quit to exit [SECOND_LIFE] immediately.
2006 <message name="message"> 1983 <message name="message">
2007 Unable to buy land for the group: 1984 Unable to buy land for the group:
2008You do not have permission to buy land for your active group. 1985You do not have permission to buy land for your active group.
2009Please activate another group using Edit -&gt; Groups...
2010 </message> 1986 </message>
2011 </alert> 1987 </alert>
2012 <alert model="true" name="AddFriend" title="Add Friend"> 1988 <alert model="true" name="AddFriend" title="Add Friend">
2013 <message name="message"> 1989 <message name="message">
2014 Friends can give permissions to 1990 Friends can give permissions to
2015track each other on the map and 1991track each other on the map and
2016receive online status updates. 1992receive online status updates.
2017 1993
2018Offer friendship to [NAME]? 1994Offer friendship to [NAME]?
2019 </message> 1995 </message>
2020 <option name="Offer"> 1996 <option name="Offer">
2021 Offer 1997 OK
2022 </option> 1998 </option>
2023 <option name="Cancel"> 1999 <option name="Cancel">
2024 Cancel 2000 Cancel
@@ -2026,10 +2002,10 @@ Offer friendship to [NAME]?
2026 </alert> 2002 </alert>
2027 <alert modal="true" name="RemoveFromFriends"> 2003 <alert modal="true" name="RemoveFromFriends">
2028 <message name="message"> 2004 <message name="message">
2029 Do you want to remove [FIRST_NAME] [LAST_NAME] from your friends? 2005 Do you want to remove [FIRST_NAME] [LAST_NAME] from your Friends List?
2030 </message> 2006 </message>
2031 <option name="Remove"> 2007 <option name="Remove">
2032 Remove 2008 OK
2033 </option> 2009 </option>
2034 <option name="Cancel"> 2010 <option name="Cancel">
2035 Cancel 2011 Cancel
@@ -2037,10 +2013,10 @@ Offer friendship to [NAME]?
2037 </alert> 2013 </alert>
2038 <alert modal="true" name="RemoveMultipleFromFriends"> 2014 <alert modal="true" name="RemoveMultipleFromFriends">
2039 <message name="message"> 2015 <message name="message">
2040 Do you want to remove multiple friends from your friends list? 2016 Do you want to remove multiple friends from your Friends list?
2041 </message> 2017 </message>
2042 <option name="Remove"> 2018 <option name="Remove">
2043 Remove 2019 OK
2044 </option> 2020 </option>
2045 <option name="Cancel"> 2021 <option name="Cancel">
2046 Cancel 2022 Cancel
@@ -2049,13 +2025,13 @@ Offer friendship to [NAME]?
2049 <alert modal="true" name="GodDeleteAllScriptedPublicObjectsByUser"> 2025 <alert modal="true" name="GodDeleteAllScriptedPublicObjectsByUser">
2050 <message name="message"> 2026 <message name="message">
2051 Are you sure you want to delete all scripted objects owned by 2027 Are you sure you want to delete all scripted objects owned by
2052 2028
2053** [AVATAR_NAME] ** 2029** [AVATAR_NAME] **
2054 2030
2055on all others land in this sim? 2031on all others land in this sim?
2056 </message> 2032 </message>
2057 <option name="DELETE!!"> 2033 <option name="DELETE!!">
2058 DELETE!! 2034 OK
2059 </option> 2035 </option>
2060 <option default="true" name="Cancel"> 2036 <option default="true" name="Cancel">
2061 Cancel 2037 Cancel
@@ -2064,13 +2040,13 @@ on all others land in this sim?
2064 <alert modal="true" name="GodDeleteAllScriptedObjectsByUser"> 2040 <alert modal="true" name="GodDeleteAllScriptedObjectsByUser">
2065 <message name="message"> 2041 <message name="message">
2066 Are you sure you want to DELETE ALL scripted objects owned by 2042 Are you sure you want to DELETE ALL scripted objects owned by
2067 2043
2068** [AVATAR_NAME] ** 2044** [AVATAR_NAME] **
2069 2045
2070on ALL LAND in this sim? 2046on ALL LAND in this sim?
2071 </message> 2047 </message>
2072 <option name="!!DELETEALL!!"> 2048 <option name="!!DELETEALL!!">
2073 !!DELETE ALL!! 2049 OK
2074 </option> 2050 </option>
2075 <option default="true" name="Cancel"> 2051 <option default="true" name="Cancel">
2076 Cancel 2052 Cancel
@@ -2080,13 +2056,13 @@ on ALL LAND in this sim?
2080 <message name="message"> 2056 <message name="message">
2081 Are you sure you want to DELETE ALL objects (scripted or not) 2057 Are you sure you want to DELETE ALL objects (scripted or not)
2082owned by 2058owned by
2083 2059
2084** [AVATAR_NAME] ** 2060** [AVATAR_NAME] **
2085 2061
2086on ALL LAND in this sim? 2062on ALL LAND in this sim?
2087 </message> 2063 </message>
2088 <option name="!!DELETEALL!!"> 2064 <option name="!!DELETEALL!!">
2089 !!DELETE ALL!! 2065 OK
2090 </option> 2066 </option>
2091 <option default="true" name="Cancel"> 2067 <option default="true" name="Cancel">
2092 Cancel 2068 Cancel
@@ -2095,7 +2071,7 @@ on ALL LAND in this sim?
2095 <alert modal="true" name="PublishGroupInfoToWeb"> 2071 <alert modal="true" name="PublishGroupInfoToWeb">
2096 <message name="message"> 2072 <message name="message">
2097 Selecting the &quot;Publish on the Web&quot; option allows us to publish 2073 Selecting the &quot;Publish on the Web&quot; option allows us to publish
2098the group name, insignia, charter, titles, and founder on the 2074the group name, insignia, charter, titles, and founder on the
2099[SECOND_LIFE] website. You are responsible for indicating if any 2075[SECOND_LIFE] website. You are responsible for indicating if any
2100of the above content is considered Mature according to the 2076of the above content is considered Mature according to the
2101Community Standards. 2077Community Standards.
@@ -2108,13 +2084,13 @@ Community Standards.
2108 </alert> 2084 </alert>
2109 <alert modal="true" name="BlankClassifiedName"> 2085 <alert modal="true" name="BlankClassifiedName">
2110 <message name="message"> 2086 <message name="message">
2111 You must specify a non-blank name for your classified. 2087 You must specify a name for your classified.
2112 </message> 2088 </message>
2113 </alert> 2089 </alert>
2114 <alert modal="true" name="MinClassifiedPrice"> 2090 <alert modal="true" name="MinClassifiedPrice">
2115 <message name="message"> 2091 <message name="message">
2116 Price to pay for listing must be at least L$[MIN_PRICE]. 2092 Price to pay for listing must be at least L$[MIN_PRICE].
2117 2093
2118Please enter a higher price. 2094Please enter a higher price.
2119 </message> 2095 </message>
2120 </alert> 2096 </alert>
@@ -2125,83 +2101,83 @@ Please enter a higher price.
2125 </alert> 2101 </alert>
2126 <alert modal="true" name="ConfirmObjectDeleteLock"> 2102 <alert modal="true" name="ConfirmObjectDeleteLock">
2127 <message name="message"> 2103 <message name="message">
2128 At least one object is locked. 2104 At least one of the items you have selected is locked.
2129However, you can delete the current selection. 2105
2130Are you sure you want to delete these items? 2106Are you sure you want to delete these items?
2131 </message> 2107 </message>
2132 <option name="Yes"> 2108 <option name="Yes">
2133 Yes 2109 OK
2134 </option> 2110 </option>
2135 <option name="No"> 2111 <option name="No">
2136 No 2112 Cancel
2137 </option> 2113 </option>
2138 </alert> 2114 </alert>
2139 <alert modal="true" name="ConfirmObjectDeleteNoCopy"> 2115 <alert modal="true" name="ConfirmObjectDeleteNoCopy">
2140 <message name="message"> 2116 <message name="message">
2141 At least one object is not copyable. 2117 At least one of the items you have selected is not copyable.
2142However, you can delete the current selection. 2118
2143Are you sure you want to delete these items? 2119Are you sure you want to delete these items?
2144 </message> 2120 </message>
2145 <option name="Yes"> 2121 <option name="Yes">
2146 Yes 2122 OK
2147 </option> 2123 </option>
2148 <option name="No"> 2124 <option name="No">
2149 No 2125 Cancel
2150 </option> 2126 </option>
2151 </alert> 2127 </alert>
2152 <alert modal="true" name="ConfirmObjectDeleteNoOwn"> 2128 <alert modal="true" name="ConfirmObjectDeleteNoOwn">
2153 <message name="message"> 2129 <message name="message">
2154 You do not own least one object. 2130 You do not own least one of the items you have selected .
2155However, you can delete the current selection. 2131
2156Are you sure you want to delete these items? 2132Are you sure you want to delete these items?
2157 </message> 2133 </message>
2158 <option name="Yes"> 2134 <option name="Yes">
2159 Yes 2135 OK
2160 </option> 2136 </option>
2161 <option name="No"> 2137 <option name="No">
2162 No 2138 Cancel
2163 </option> 2139 </option>
2164 </alert> 2140 </alert>
2165 <alert modal="true" name="ConfirmObjectDeleteLockNoCopy"> 2141 <alert modal="true" name="ConfirmObjectDeleteLockNoCopy">
2166 <message name="message"> 2142 <message name="message">
2167 At least one object is locked. 2143 At least one object is locked.
2168At least one object is not copyable. 2144At least one object is not copyable.
2169However, you can delete the current selection. 2145
2170Are you sure you want to delete these items? 2146Are you sure you want to delete these items?
2171 </message> 2147 </message>
2172 <option name="Yes"> 2148 <option name="Yes">
2173 Yes 2149 OK
2174 </option> 2150 </option>
2175 <option name="No"> 2151 <option name="No">
2176 No 2152 Cancel
2177 </option> 2153 </option>
2178 </alert> 2154 </alert>
2179 <alert modal="true" name="ConfirmObjectDeleteLockNoOwn"> 2155 <alert modal="true" name="ConfirmObjectDeleteLockNoOwn">
2180 <message name="message"> 2156 <message name="message">
2181 At least one object is locked. 2157 At least one object is locked.
2182You do not own least one object. 2158You do not own least one object.
2183However, you can delete the current selection. 2159
2184Are you sure you want to delete these items? 2160Are you sure you want to delete these items?
2185 </message> 2161 </message>
2186 <option name="Yes"> 2162 <option name="Yes">
2187 Yes 2163 OK
2188 </option> 2164 </option>
2189 <option name="No"> 2165 <option name="No">
2190 No 2166 Cancel
2191 </option> 2167 </option>
2192 </alert> 2168 </alert>
2193 <alert modal="true" name="ConfirmObjectDeleteNoCopyNoOwn"> 2169 <alert modal="true" name="ConfirmObjectDeleteNoCopyNoOwn">
2194 <message name="message"> 2170 <message name="message">
2195 At least one object is not copyable. 2171 At least one object is not copyable.
2196You do not own least one object. 2172You do not own least one object.
2197However, you can delete the current selection. 2173
2198Are you sure you want to delete these items? 2174Are you sure you want to delete these items?
2199 </message> 2175 </message>
2200 <option name="Yes"> 2176 <option name="Yes">
2201 Yes 2177 OK
2202 </option> 2178 </option>
2203 <option name="No"> 2179 <option name="No">
2204 No 2180 Cancel
2205 </option> 2181 </option>
2206 </alert> 2182 </alert>
2207 <alert modal="true" name="ConfirmObjectDeleteLockNoCopyNoOwn"> 2183 <alert modal="true" name="ConfirmObjectDeleteLockNoCopyNoOwn">
@@ -2209,43 +2185,43 @@ Are you sure you want to delete these items?
2209 At least one object is locked. 2185 At least one object is locked.
2210At least one object is not copyable. 2186At least one object is not copyable.
2211You do not own least one object. 2187You do not own least one object.
2212However, you can delete the current selection. 2188
2213Are you sure you want to delete these items? 2189Are you sure you want to delete these items?
2214 </message> 2190 </message>
2215 <option name="Yes"> 2191 <option name="Yes">
2216 Yes 2192 OK
2217 </option> 2193 </option>
2218 <option name="No"> 2194 <option name="No">
2219 No 2195 cancel
2220 </option> 2196 </option>
2221 </alert> 2197 </alert>
2222 <alert modal="true" name="ConfirmObjectTakeLock"> 2198 <alert modal="true" name="ConfirmObjectTakeLock">
2223 <message name="message"> 2199 <message name="message">
2224 At least one object is locked. 2200 At least one object is locked.
2225However, you can take the current selection. 2201
2226Are you sure you want to take these items? 2202Are you sure you want to take these items?
2227 </message> 2203 </message>
2228 <option name="Yes"> 2204 <option name="Yes">
2229 Yes 2205 OK
2230 </option> 2206 </option>
2231 <option default="true" name="No"> 2207 <option default="true" name="No">
2232 No 2208 Cancel
2233 </option> 2209 </option>
2234 </alert> 2210 </alert>
2235 <alert modal="true" name="ConfirmObjectTakeNoOwn"> 2211 <alert modal="true" name="ConfirmObjectTakeNoOwn">
2236 <message name="message"> 2212 <message name="message">
2237 You do not own all of the objects you are taking. 2213 You do not own all of the objects you are taking.
2238If you continue, next owner permissions will be 2214If you continue, next owner permissions will be
2239applied to the objects and possibly restrict your 2215applied and possibly restrict your
2240ability to modify or copy them in the future. 2216ability to modify or copy them.
2241However, you can take the current selection. 2217
2242Are you sure you want to take these items? 2218Are you sure you want to take these items?
2243 </message> 2219 </message>
2244 <option name="Yes"> 2220 <option name="Yes">
2245 Yes 2221 OK
2246 </option> 2222 </option>
2247 <option default="true" name="No"> 2223 <option default="true" name="No">
2248 No 2224 Cancel
2249 </option> 2225 </option>
2250 </alert> 2226 </alert>
2251 <alert modal="true" name="ConfirmObjectTakeLockNoOwn"> 2227 <alert modal="true" name="ConfirmObjectTakeLockNoOwn">
@@ -2253,16 +2229,16 @@ Are you sure you want to take these items?
2253 At least one object is locked. 2229 At least one object is locked.
2254You do not own all of the objects you are taking. 2230You do not own all of the objects you are taking.
2255If you continue, next owner permissions will be 2231If you continue, next owner permissions will be
2256applied to the objects and possibly restrict your 2232applied and possibly restrict your
2257ability to modify or copy them in the future. 2233ability to modify or copy them.
2258However, you can take the current selection. 2234However, you can take the current selection.
2259Are you sure you want to take these items? 2235Are you sure you want to take these items?
2260 </message> 2236 </message>
2261 <option name="Yes"> 2237 <option name="Yes">
2262 Yes 2238 OK
2263 </option> 2239 </option>
2264 <option default="true" name="No"> 2240 <option default="true" name="No">
2265 No 2241 Cancel
2266 </option> 2242 </option>
2267 </alert> 2243 </alert>
2268 <alert modal="true" name="CantBuyLandAcrossMultipleRegions"> 2244 <alert modal="true" name="CantBuyLandAcrossMultipleRegions">
@@ -2275,16 +2251,16 @@ Please select a smaller area and try again.
2275 <message name="message"> 2251 <message name="message">
2276 By deeding this parcel, the group will be required 2252 By deeding this parcel, the group will be required
2277to have and maintain sufficient land use credits. 2253to have and maintain sufficient land use credits.
2278 2254
2279The purchase price of the land is not refunded to 2255The purchase price of the land is not refunded to
2280the owner. If a deeded parcel is sold, the sale 2256the owner. If a deeded parcel is sold, the sale
2281price will be divided evenly among group members. 2257price will be divided evenly among group members.
2282 2258
2283Deed this [AREA] square meters of land to the group 2259Deed this [AREA] m2 of land to the group
2284&apos;[GROUP_NAME]&apos;? 2260&apos;[GROUP_NAME]&apos;?
2285 </message> 2261 </message>
2286 <option name="Deed"> 2262 <option name="Deed">
2287 Deed 2263 OK
2288 </option> 2264 </option>
2289 <option name="Cancel"> 2265 <option name="Cancel">
2290 Cancel 2266 Cancel
@@ -2294,19 +2270,19 @@ Deed this [AREA] square meters of land to the group
2294 <message name="message"> 2270 <message name="message">
2295 By deeding this parcel, the group will be required 2271 By deeding this parcel, the group will be required
2296to have and maintain sufficient land use credits. 2272to have and maintain sufficient land use credits.
2297 2273
2298The deed will include a simultaneous land 2274The deed will include a simultaneous land
2299contribution to the group from &apos;[FIRST_NAME] [LAST_NAME]&apos;. 2275contribution to the group from &apos;[FIRST_NAME] [LAST_NAME]&apos;.
2300 2276
2301The purchase price of the land is not refunded to 2277The purchase price of the land is not refunded to
2302the owner. If a deeded parcel is sold, the sale 2278the owner. If a deeded parcel is sold, the sale
2303price will be divided evenly among group members. 2279price will be divided evenly among group members.
2304 2280
2305Deed this [AREA] square meters of land to the group 2281Deed this [AREA] m2 of land to the group
2306&apos;[GROUP_NAME]&apos;? 2282&apos;[GROUP_NAME]&apos;?
2307 </message> 2283 </message>
2308 <option name="Deed"> 2284 <option name="Deed">
2309 Deed 2285 OK
2310 </option> 2286 </option>
2311 <option name="Cancel"> 2287 <option name="Cancel">
2312 Cancel 2288 Cancel
@@ -2335,7 +2311,7 @@ Could not request domain name: [HOST_NAME]
2335 Unable to find the server domain name. 2311 Unable to find the server domain name.
2336This could be the result of a lost network connection 2312This could be the result of a lost network connection
2337or a server problem. 2313or a server problem.
2338 2314
2339Please try again in a few minutes, or click Help 2315Please try again in a few minutes, or click Help
2340for advice and a link to the system status web page. 2316for advice and a link to the system status web page.
2341 </message> 2317 </message>
@@ -2374,7 +2350,7 @@ for advice and a link to the system status web page.
2374 <alert modal="true" name="AvatarMoved"> 2350 <alert modal="true" name="AvatarMoved">
2375 <message name="message"> 2351 <message name="message">
2376 Your [TYPE] location is not currently available. 2352 Your [TYPE] location is not currently available.
2377[HELP] 2353[HELP]
2378You have been moved into a nearby region. 2354You have been moved into a nearby region.
2379 </message> 2355 </message>
2380 </alert> 2356 </alert>
@@ -2388,10 +2364,10 @@ will see you correctly.
2388 <alert modal="true" name="FirstRun"> 2364 <alert modal="true" name="FirstRun">
2389 <message name="message"> 2365 <message name="message">
2390 [SECOND_LIFE] installation is complete. 2366 [SECOND_LIFE] installation is complete.
2391 2367
2392If this is your first time using [SECOND_LIFE], you will need to create 2368If this is your first time using [SECOND_LIFE], you will need to create
2393an account before you can log on. 2369an account before you can log on.
2394 2370
2395Return to www.secondlife.com to create a new account? 2371Return to www.secondlife.com to create a new account?
2396 </message> 2372 </message>
2397 <option name="NewAccount..."> 2373 <option name="NewAccount...">
@@ -2412,7 +2388,7 @@ Please check your network connection.
2412 <message name="message"> 2388 <message name="message">
2413 Unable to connect. Login packet never received by 2389 Unable to connect. Login packet never received by
2414login server. 2390login server.
2415 2391
2416Please try again in a few minutes, or click Help 2392Please try again in a few minutes, or click Help
2417for advice and a link to the system status web page. 2393for advice and a link to the system status web page.
2418 </message> 2394 </message>
@@ -2426,9 +2402,9 @@ for advice and a link to the system status web page.
2426 <alert modal="true" name="WelcomeNoClothes"> 2402 <alert modal="true" name="WelcomeNoClothes">
2427 <message name="message"> 2403 <message name="message">
2428 Your character will appear in a moment. 2404 Your character will appear in a moment.
2429 2405
2430Use arrow keys to walk. 2406Use arrow keys to walk.
2431 2407
2432Press the F1 key at any time for help or 2408Press the F1 key at any time for help or
2433to learn more about [SECOND_LIFE]. 2409to learn more about [SECOND_LIFE].
2434 </message> 2410 </message>
@@ -2436,13 +2412,13 @@ to learn more about [SECOND_LIFE].
2436 <alert modal="true" name="WelcomeChooseSex" nodefault="true"> 2412 <alert modal="true" name="WelcomeChooseSex" nodefault="true">
2437 <message name="message"> 2413 <message name="message">
2438 Your character will appear in a moment. 2414 Your character will appear in a moment.
2439 2415
2440Use arrow keys to walk. 2416Use arrow keys to walk.
2441 2417
2442Press the F1 key at any time for help or 2418Press the F1 key at any time for help or
2443to learn more about [SECOND_LIFE]. 2419to learn more about [SECOND_LIFE].
2444 2420
2445Please choose the male or female character. 2421Please choose the male or female avatar.
2446You can change your mind later. 2422You can change your mind later.
2447 </message> 2423 </message>
2448 <option name="Male"> 2424 <option name="Male">
@@ -2470,10 +2446,10 @@ You can change your mind later.
2470 <alert modal="true" name="FlushMapVisibilityCaches"> 2446 <alert modal="true" name="FlushMapVisibilityCaches">
2471 <message name="message"> 2447 <message name="message">
2472 This will flush the map caches on this region. 2448 This will flush the map caches on this region.
2473 2449
2474This is really only useful for debugging. 2450This is really only useful for debugging.
2475 2451
2476(In production, wait 5 minutes, then everyone&apos;s map will 2452(In production, wait 5 minutes, then everyone&apos;s map will
2477update after they relog.) 2453update after they relog.)
2478 </message> 2454 </message>
2479 <option name="OK"> 2455 <option name="OK">
@@ -2497,7 +2473,7 @@ Please select only one object and try again.
2497 </alert> 2473 </alert>
2498 <alert modal="true" name="KickUsersFromRegion"> 2474 <alert modal="true" name="KickUsersFromRegion">
2499 <message name="message"> 2475 <message name="message">
2500 Teleport home all users in this region? 2476 Teleport all Residents in this region home?
2501 </message> 2477 </message>
2502 <option name="OK"> 2478 <option name="OK">
2503 OK 2479 OK
@@ -2510,10 +2486,10 @@ Please select only one object and try again.
2510 <message name="message"> 2486 <message name="message">
2511 Are you sure you want to return all scripted objects owned by 2487 Are you sure you want to return all scripted objects owned by
2512** [USER_NAME] ** 2488** [USER_NAME] **
2513non all land but his/her own? 2489on all land in this region they do not own?
2514 </message> 2490 </message>
2515 <option name="Return"> 2491 <option name="Return">
2516 Return 2492 OK
2517 </option> 2493 </option>
2518 <option default="true" name="Cancel"> 2494 <option default="true" name="Cancel">
2519 Cancel 2495 Cancel
@@ -2523,10 +2499,10 @@ non all land but his/her own?
2523 <message name="message"> 2499 <message name="message">
2524 Are you sure you want to return ALL scripted objects owned by 2500 Are you sure you want to return ALL scripted objects owned by
2525** [USER_NAME] ** 2501** [USER_NAME] **
2526non ALL LAND in this region? 2502on ALL LAND in this region?
2527 </message> 2503 </message>
2528 <option name="Return"> 2504 <option name="Return">
2529 Return 2505 OK
2530 </option> 2506 </option>
2531 <option default="true" name="Cancel"> 2507 <option default="true" name="Cancel">
2532 Cancel 2508 Cancel
@@ -2534,38 +2510,38 @@ non ALL LAND in this region?
2534 </alert> 2510 </alert>
2535 <alert modal="true" name="InvalidTerrainBitDepth"> 2511 <alert modal="true" name="InvalidTerrainBitDepth">
2536 <message name="message"> 2512 <message name="message">
2537 Couldn&apos;t set region textures: 2513 Couldn&apos;t set region textures:
2538 2514
2539Terrain texture [TEXTURE_NUM] has an invalid bit depth of [TEXTURE_BIT_DEPTH]. 2515Terrain texture [TEXTURE_NUM] has an invalid bit depth of [TEXTURE_BIT_DEPTH].
2540 2516
2541Replace texture [TEXTURE_NUM] with a 24 bit 512x512 or smaller image 2517Replace texture [TEXTURE_NUM] with a 24-bit 512x512 or smaller image
2542then click &quot;Set&quot; again. 2518then click &quot;Apply&quot; again.
2543 </message> 2519 </message>
2544 </alert> 2520 </alert>
2545 <alert modal="true" name="InvalidTerrainSize"> 2521 <alert modal="true" name="InvalidTerrainSize">
2546 <message name="message"> 2522 <message name="message">
2547 Couldn&apos;t set region textures: 2523 Couldn&apos;t set region textures:
2548 2524
2549Terrain texture [TEXTURE_NUM] is too large at [TEXTURE_SIZE_X]x[TEXTURE_SIZE_Y]. 2525Terrain texture [TEXTURE_NUM] is too large at [TEXTURE_SIZE_X]x[TEXTURE_SIZE_Y].
2550 2526
2551Replace texture [TEXTURE_NUM] with a 24 bit 512x512 or smaller image 2527Replace texture [TEXTURE_NUM] with a 24-bit 512x512 or smaller image
2552then click &quot;Set&quot; again. 2528then click &quot;Apply&quot; again.
2553 </message> 2529 </message>
2554 </alert> 2530 </alert>
2555 <alert modal="true" name="RawUploadStarted"> 2531 <alert modal="true" name="RawUploadStarted">
2556 <message name="message"> 2532 <message name="message">
2557 Upload started. It may take up to two minutes, 2533 Upload started. It may take up to two minutes,
2558depending on your connection speed. 2534depending on your connection speed.
2559 </message> 2535 </message>
2560 </alert> 2536 </alert>
2561 <alert modal="true" name="ConfirmBakeTerrain"> 2537 <alert modal="true" name="ConfirmBakeTerrain">
2562 <message name="message"> 2538 <message name="message">
2563 Do you really want to bake the current terrain, 2539 Do you really want to bake the current terrain,
2564make it the center for terrain raise/lower limits 2540make it the center for terrain raise/lower limits
2565and the default for the &apos;Revert&apos; tool? 2541and the default for the &apos;Revert&apos; tool?
2566 </message> 2542 </message>
2567 <option name="Bake"> 2543 <option name="Bake">
2568 Bake 2544 OK
2569 </option> 2545 </option>
2570 <option name="Cancel"> 2546 <option name="Cancel">
2571 Cancel 2547 Cancel
@@ -2573,12 +2549,12 @@ and the default for the &apos;Revert&apos; tool?
2573 </alert> 2549 </alert>
2574 <alert modal="true" name="MaxAllowedAgentOnRegion"> 2550 <alert modal="true" name="MaxAllowedAgentOnRegion">
2575 <message name="message"> 2551 <message name="message">
2576 You can only have [MAX_AGENTS] allowed residents. 2552 You can only have [MAX_AGENTS] Allowed Residents.
2577 </message> 2553 </message>
2578 </alert> 2554 </alert>
2579 <alert modal="true" name="MaxAllowedGroupsOnRegion"> 2555 <alert modal="true" name="MaxAllowedGroupsOnRegion">
2580 <message name="message"> 2556 <message name="message">
2581 You can only have [MAX_GROUPS] allowed groups. 2557 You can only have [MAX_GROUPS] Allowed Groups.
2582 </message> 2558 </message>
2583 <option name="Bake"> 2559 <option name="Bake">
2584 Bake 2560 Bake
@@ -2589,17 +2565,17 @@ and the default for the &apos;Revert&apos; tool?
2589 </alert> 2565 </alert>
2590 <alert modal="true" name="MaxBannedAgentsOnRegion"> 2566 <alert modal="true" name="MaxBannedAgentsOnRegion">
2591 <message name="message"> 2567 <message name="message">
2592 You can only have [MAX_BANNED] banned residents. 2568 You can only have [MAX_BANNED] Banned Residents.
2593 </message> 2569 </message>
2594 </alert> 2570 </alert>
2595 <alert modal="true" name="MaxManagersOnRegion"> 2571 <alert modal="true" name="MaxManagersOnRegion">
2596 <message name="message"> 2572 <message name="message">
2597 You can only have [MAX_MANAGER] banned residents. 2573 You can only have [MAX_MANAGER] Banned Residents.
2598 </message> 2574 </message>
2599 </alert> 2575 </alert>
2600 <alert modal="true" name="OwnerCanNotBeDenied"> 2576 <alert modal="true" name="OwnerCanNotBeDenied">
2601 <message name="message"> 2577 <message name="message">
2602 Can&apos;t add estate owner to estate &apos;Access denied&apos; list. 2578 Can&apos;t add estate owner to estate &apos;Banned Resident&apos; list.
2603 </message> 2579 </message>
2604 </alert> 2580 </alert>
2605 <alert modal="true" name="CanNotChangeAppearanceUntilLoaded"> 2581 <alert modal="true" name="CanNotChangeAppearanceUntilLoaded">
@@ -2609,28 +2585,28 @@ and the default for the &apos;Revert&apos; tool?
2609 </alert> 2585 </alert>
2610 <alert modal="true" name="ClassifiedMustBeAlphanumeric"> 2586 <alert modal="true" name="ClassifiedMustBeAlphanumeric">
2611 <message name="message"> 2587 <message name="message">
2612 The name of your classified must start with a letter 2588 The name of your classified must start with a letter
2613from A to Z or a number. No punctuation is allowed. 2589from A to Z or a number. No punctuation is allowed.
2614 </message> 2590 </message>
2615 </alert> 2591 </alert>
2616 <alert modal="true" name="CantSetBuyObject"> 2592 <alert modal="true" name="CantSetBuyObject">
2617 <message name="message"> 2593 <message name="message">
2618 Can&apos;t set Buy Object, because the object is not for sale. 2594 Can&apos;t set Buy Object, because the object is not for sale.
2619Please set the object for sale and try again. 2595Please set the object for sale and try again.
2620 </message> 2596 </message>
2621 </alert> 2597 </alert>
2622 <alert modal="true" name="FinishedRawDownload"> 2598 <alert modal="true" name="FinishedRawDownload">
2623 <message name="message"> 2599 <message name="message">
2624 Finished download of raw terrain file to: 2600 Finished download of raw terrain file to:
2625[DOWNLOAD_PATH] 2601[DOWNLOAD_PATH].
2626 </message> 2602 </message>
2627 </alert> 2603 </alert>
2628 <alert modal="true" name="DownloadWindowsMandatory"> 2604 <alert modal="true" name="DownloadWindowsMandatory">
2629 <message name="message"> 2605 <message name="message">
2630 A new version of [SECOND_LIFE] is available. 2606 A new version of [SECOND_LIFE] is available.
2631[MESSAGE] 2607[MESSAGE]
2632 2608
2633You must download this update to use the system. 2609You must download this update to use [SECOND_LIFE].
2634 </message> 2610 </message>
2635 <option name="Download"> 2611 <option name="Download">
2636 Download 2612 Download
@@ -2643,7 +2619,7 @@ You must download this update to use the system.
2643 <message name="message"> 2619 <message name="message">
2644 An updated version of [SECOND_LIFE] is available. 2620 An updated version of [SECOND_LIFE] is available.
2645[MESSAGE] 2621[MESSAGE]
2646 2622
2647This update is not required, but we suggest you install it to improve performance and stability. 2623This update is not required, but we suggest you install it to improve performance and stability.
2648 </message> 2624 </message>
2649 <option name="Download"> 2625 <option name="Download">
@@ -2657,7 +2633,7 @@ This update is not required, but we suggest you install it to improve performanc
2657 <message name="message"> 2633 <message name="message">
2658 An updated version of [SECOND_LIFE] is available. 2634 An updated version of [SECOND_LIFE] is available.
2659[MESSAGE] 2635[MESSAGE]
2660 2636
2661This update is not required, but we suggest you install it to improve performance and stability. 2637This update is not required, but we suggest you install it to improve performance and stability.
2662 </message> 2638 </message>
2663 <option name="Download"> 2639 <option name="Download">
@@ -2672,8 +2648,8 @@ This update is not required, but we suggest you install it to improve performanc
2672 A new version of [SECOND_LIFE] is available. 2648 A new version of [SECOND_LIFE] is available.
2673[MESSAGE] 2649[MESSAGE]
2674 2650
2675You must download this update to use the system. 2651You must download this update to use [SECOND_LIFE].
2676 2652
2677Download to your Applications folder? 2653Download to your Applications folder?
2678 </message> 2654 </message>
2679 <option name="Download"> 2655 <option name="Download">
@@ -2687,9 +2663,9 @@ Download to your Applications folder?
2687 <message name="message"> 2663 <message name="message">
2688 An updated version of [SECOND_LIFE] is available. 2664 An updated version of [SECOND_LIFE] is available.
2689[MESSAGE] 2665[MESSAGE]
2690 2666
2691This update is not required, but we suggest you install it to improve performance and stability. 2667This update is not required, but we suggest you install it to improve performance and stability.
2692 2668
2693Download to your Applications folder? 2669Download to your Applications folder?
2694 </message> 2670 </message>
2695 <option name="Download"> 2671 <option name="Download">
@@ -2703,9 +2679,9 @@ Download to your Applications folder?
2703 <message name="message"> 2679 <message name="message">
2704 An updated version of [SECOND_LIFE] is available. 2680 An updated version of [SECOND_LIFE] is available.
2705[MESSAGE] 2681[MESSAGE]
2706 2682
2707This update is not required, but we suggest you install it to improve performance and stability. 2683This update is not required, but we suggest you install it to improve performance and stability.
2708 2684
2709Download to your Applications folder? 2685Download to your Applications folder?
2710 </message> 2686 </message>
2711 <option name="Download"> 2687 <option name="Download">
@@ -2718,7 +2694,7 @@ Download to your Applications folder?
2718 <alert modal="true" name="DeedObjectToGroup"> 2694 <alert modal="true" name="DeedObjectToGroup">
2719 <message name="message"> 2695 <message name="message">
2720 Deeding this object will cause the group to: 2696 Deeding this object will cause the group to:
2721* Receive money paid into the object 2697* Receive L$ paid into the object
2722 </message> 2698 </message>
2723 <ignore> 2699 <ignore>
2724 When deeding objects to groups 2700 When deeding objects to groups
@@ -2734,10 +2710,10 @@ Download to your Applications folder?
2734 <message name="message"> 2710 <message name="message">
2735 Classified ads appear in the &apos;Classified&apos; section of the 2711 Classified ads appear in the &apos;Classified&apos; section of the
2736Find directory for one week. 2712Find directory for one week.
2737 2713
2738Fill out your ad, then click &apos;Publish...&apos; to add it to the 2714Fill out your ad, then click &apos;Publish...&apos; to add it to the
2739directory. 2715directory.
2740 2716
2741You&apos;ll be asked for a price to pay when clicking Publish. 2717You&apos;ll be asked for a price to pay when clicking Publish.
2742Paying more makes your ad appear higher in the list, and 2718Paying more makes your ad appear higher in the list, and
2743also appear higher when people search for keywords. 2719also appear higher when people search for keywords.
@@ -2774,7 +2750,7 @@ also appear higher when people search for keywords.
2774 When launching web browser to view the Bug Reporting 101 Wiki 2750 When launching web browser to view the Bug Reporting 101 Wiki
2775 </ignore> 2751 </ignore>
2776 <option name="Gotopage"> 2752 <option name="Gotopage">
2777 Go to page 2753 OK
2778 </option> 2754 </option>
2779 <option name="Cancel"> 2755 <option name="Cancel">
2780 Cancel 2756 Cancel
@@ -2788,7 +2764,7 @@ also appear higher when people search for keywords.
2788 When launching web browser to view Security Issues Wiki 2764 When launching web browser to view Security Issues Wiki
2789 </ignore> 2765 </ignore>
2790 <option name="Gotopage"> 2766 <option name="Gotopage">
2791 Go to page 2767 OK
2792 </option> 2768 </option>
2793 <option name="Cancel"> 2769 <option name="Cancel">
2794 Cancel 2770 Cancel
@@ -2830,7 +2806,7 @@ also appear higher when people search for keywords.
2830 When launching web browser to view the knowledge base 2806 When launching web browser to view the knowledge base
2831 </ignore> 2807 </ignore>
2832 <option name="Gotopage"> 2808 <option name="Gotopage">
2833 Go to page 2809 OK
2834 </option> 2810 </option>
2835 <option name="Cancel"> 2811 <option name="Cancel">
2836 Cancel 2812 Cancel
@@ -2844,7 +2820,7 @@ also appear higher when people search for keywords.
2844 When launching web browser to contact support 2820 When launching web browser to contact support
2845 </ignore> 2821 </ignore>
2846 <option name="Gotopage"> 2822 <option name="Gotopage">
2847 Go to page 2823 OK
2848 </option> 2824 </option>
2849 <option name="Cancel"> 2825 <option name="Cancel">
2850 Cancel 2826 Cancel
@@ -2858,7 +2834,7 @@ also appear higher when people search for keywords.
2858 When launching web browser to view the blog 2834 When launching web browser to view the blog
2859 </ignore> 2835 </ignore>
2860 <option name="Gotopage"> 2836 <option name="Gotopage">
2861 Go to page 2837 OK
2862 </option> 2838 </option>
2863 <option name="Cancel"> 2839 <option name="Cancel">
2864 Cancel 2840 Cancel
@@ -2866,13 +2842,13 @@ also appear higher when people search for keywords.
2866 </alert> 2842 </alert>
2867 <alert modal="true" name="WebLaunchLSLGuide"> 2843 <alert modal="true" name="WebLaunchLSLGuide">
2868 <message name="message"> 2844 <message name="message">
2869 Go to the LSL Guide for scripting help? 2845 Go to the Scripting Guide for scripting help?
2870 </message> 2846 </message>
2871 <ignore> 2847 <ignore>
2872 When launching web browser to view the LSL Guide 2848 When launching web browser to view the Scripting Guide
2873 </ignore> 2849 </ignore>
2874 <option name="Gotopage"> 2850 <option name="Gotopage">
2875 Go to page 2851 OK
2876 </option> 2852 </option>
2877 <option name="Cancel"> 2853 <option name="Cancel">
2878 Cancel 2854 Cancel
@@ -2900,7 +2876,7 @@ also appear higher when people search for keywords.
2900 When launching web browser to view the Release Notes 2876 When launching web browser to view the Release Notes
2901 </ignore> 2877 </ignore>
2902 <option name="Gotopage"> 2878 <option name="Gotopage">
2903 Go to page 2879 OK
2904 </option> 2880 </option>
2905 <option name="Cancel"> 2881 <option name="Cancel">
2906 Cancel 2882 Cancel
@@ -2911,15 +2887,14 @@ also appear higher when people search for keywords.
2911 Are you sure you want to return the selected 2887 Are you sure you want to return the selected
2912objects to their owners? Transferable deeded 2888objects to their owners? Transferable deeded
2913objects will be returned to their previous owners. 2889objects will be returned to their previous owners.
2914(All objects returned will return to the folder they were last in.) 2890
2915
2916*WARNING* No-transfer deeded objects will be deleted! 2891*WARNING* No-transfer deeded objects will be deleted!
2917 </message> 2892 </message>
2918 <ignore> 2893 <ignore>
2919 When returning objects to their owners 2894 When returning objects to their owners
2920 </ignore> 2895 </ignore>
2921 <option name="Return"> 2896 <option name="Return">
2922 Return 2897 OK
2923 </option> 2898 </option>
2924 <option name="Cancel"> 2899 <option name="Cancel">
2925 Cancel 2900 Cancel
@@ -2933,7 +2908,7 @@ objects will be returned to their previous owners.
2933 When viewing the release notes 2908 When viewing the release notes
2934 </ignore> 2909 </ignore>
2935 <option name="Gotopage"> 2910 <option name="Gotopage">
2936 Go to page 2911 OK
2937 </option> 2912 </option>
2938 <option name="Cancel"> 2913 <option name="Cancel">
2939 Cancel 2914 Cancel
@@ -2945,7 +2920,7 @@ objects will be returned to their previous owners.
2945Leave Group? 2920Leave Group?
2946 </message> 2921 </message>
2947 <option name="Leave"> 2922 <option name="Leave">
2948 Leave 2923 OK
2949 </option> 2924 </option>
2950 <option name="Cancel"> 2925 <option name="Cancel">
2951 Cancel 2926 Cancel
@@ -2957,7 +2932,7 @@ Leave Group?
2957Leave Group? 2932Leave Group?
2958 </message> 2933 </message>
2959 <option name="Leave"> 2934 <option name="Leave">
2960 Leave 2935 OK
2961 </option> 2936 </option>
2962 <option name="Cancel"> 2937 <option name="Cancel">
2963 Cancel 2938 Cancel
@@ -2978,7 +2953,7 @@ Leave Group?
2978 </alert> 2953 </alert>
2979 <alert modal="true" name="MuteByName" title="Mute object by name"> 2954 <alert modal="true" name="MuteByName" title="Mute object by name">
2980 <message name="message"> 2955 <message name="message">
2981 Mute by name only affects object chat and IM, not sounds. 2956 Mute by name only affects object chat and IM, not sounds.
2982You must type the object&apos;s name exactly. 2957You must type the object&apos;s name exactly.
2983 </message> 2958 </message>
2984 <editline> 2959 <editline>
@@ -3001,14 +2976,14 @@ You must type the object&apos;s name exactly.
3001 </alert> 2976 </alert>
3002 <alert name="RemoveItemWarn"> 2977 <alert name="RemoveItemWarn">
3003 <message name="message"> 2978 <message name="message">
3004 Though permitted, deleting inventory may damage the 2979 Though permitted, deleting contents may damage the
3005object. Do you want to delete that inventory item? 2980object. Do you want to delete that item?
3006 </message> 2981 </message>
3007 <option name="Yes"> 2982 <option name="Yes">
3008 Yes 2983 OK
3009 </option> 2984 </option>
3010 <option default="true" name="No"> 2985 <option default="true" name="No">
3011 No 2986 Cancel
3012 </option> 2987 </option>
3013 </alert> 2988 </alert>
3014 <alert name="CantRateOwnedByGroup"> 2989 <alert name="CantRateOwnedByGroup">
@@ -3038,7 +3013,6 @@ object. Do you want to delete that inventory item?
3038 <alert name="CantSetHome"> 3013 <alert name="CantSetHome">
3039 <message name="message"> 3014 <message name="message">
3040 Can&apos;t set home to here. 3015 Can&apos;t set home to here.
3041Your home must be on land you or your group owns.
3042 </message> 3016 </message>
3043 <option name="OK"> 3017 <option name="OK">
3044 OK 3018 OK
@@ -3048,7 +3022,7 @@ Your home must be on land you or your group owns.
3048 <message name="message"> 3022 <message name="message">
3049 Busy mode set. 3023 Busy mode set.
3050Chat and instant messages will be hidden. Instant 3024Chat and instant messages will be hidden. Instant
3051messages will get your busy reply. All teleportation 3025messages will get your Busy mode response. All teleportation
3052and inventory offers will be declined. 3026and inventory offers will be declined.
3053 </message> 3027 </message>
3054 <ignore> 3028 <ignore>
@@ -3220,17 +3194,17 @@ sent to everyone currently in your estate.
3220 </alert> 3194 </alert>
3221 <alert name="ChangeLindenEstate" title="Change Linden Estate"> 3195 <alert name="ChangeLindenEstate" title="Change Linden Estate">
3222 <message name="message"> 3196 <message name="message">
3223 You are about to change a Linden owned estate (mainland, 3197 You are about to change a Linden owned estate (mainland,
3224teen grid, orientation, etc.). 3198teen grid, orientation, etc.).
3225 3199
3226This is EXTREMELY DANGEROUS because it can fundamentally 3200This is EXTREMELY DANGEROUS because it can fundamentally
3227affect the user experience. On the mainland, it will change 3201affect the user experience. On the mainland, it will change
3228thousands of regions and make the spaceserver hiccup. 3202thousands of regions and make the spaceserver hiccup.
3229 3203
3230Proceed? 3204Proceed?
3231 </message> 3205 </message>
3232 <option name="ChangeEstate"> 3206 <option name="ChangeEstate">
3233 Change Estate 3207 OK
3234 </option> 3208 </option>
3235 <option name="Cancel"> 3209 <option name="Cancel">
3236 Cancel 3210 Cancel
@@ -3238,20 +3212,18 @@ Proceed?
3238 </alert> 3212 </alert>
3239 <alert name="ChangeLindenAccess" title="Change Linden Estate Access"> 3213 <alert name="ChangeLindenAccess" title="Change Linden Estate Access">
3240 <message name="message"> 3214 <message name="message">
3241 You are about to change the access list for a Linden owned 3215 You are about to change the access list for a Linden owned
3242estate (mainland, teen grid, orientation, etc.). 3216estate (mainland, teen grid, orientation, etc.).
3243 3217
3244This is DANGEROUS and should only be done to invoke the 3218This is DANGEROUS and should only be done to invoke the
3245hack allowing objects/money to be transfered in/out of 3219hack allowing objects/L$ to be transfered in/out of
3246a grid. 3220a grid.
3247 3221
3248It will change thousands of regions and make the 3222It will change thousands of regions and make the
3249spaceserver hiccup. 3223spaceserver hiccup.
3250
3251Proceed?
3252 </message> 3224 </message>
3253 <option name="ChangeEstate"> 3225 <option name="ChangeEstate">
3254 Change Estate 3226 OK
3255 </option> 3227 </option>
3256 <option name="Cancel"> 3228 <option name="Cancel">
3257 Cancel 3229 Cancel
@@ -3329,7 +3301,7 @@ Proceed?
3329 </alert> 3301 </alert>
3330 <alert name="EstateBannedAgentRemove" title="Select estate"> 3302 <alert name="EstateBannedAgentRemove" title="Select estate">
3331 <message name="message"> 3303 <message name="message">
3332 Stop denying access for this estate only or for [ALL_ESTATES]? 3304 Remove this Resident from the ban list for access for this estate only or for [ALL_ESTATES]?
3333 </message> 3305 </message>
3334 <option name="ThisEstate"> 3306 <option name="ThisEstate">
3335 This Estate 3307 This Estate
@@ -3343,7 +3315,7 @@ Proceed?
3343 </alert> 3315 </alert>
3344 <alert name="EstateManagerAdd" title="Select estate"> 3316 <alert name="EstateManagerAdd" title="Select estate">
3345 <message name="message"> 3317 <message name="message">
3346 Add estate manager for this estate only or for all your estates? 3318 Add estate manager for this estate only or for [ALL_ESTATES]?
3347 </message> 3319 </message>
3348 <option name="ThisEstate"> 3320 <option name="ThisEstate">
3349 This Estate 3321 This Estate
@@ -3357,7 +3329,7 @@ Proceed?
3357 </alert> 3329 </alert>
3358 <alert name="EstateManagerRemove" title="Select estate"> 3330 <alert name="EstateManagerRemove" title="Select estate">
3359 <message name="message"> 3331 <message name="message">
3360 Remove estate manager for this estate only or for all your estates? 3332 Remove estate manager for this estate only or for [ALL_ESTATES]?
3361 </message> 3333 </message>
3362 <option name="ThisEstate"> 3334 <option name="ThisEstate">
3363 This Estate 3335 This Estate
@@ -3388,7 +3360,7 @@ Proceed?
3388 Kick [EVIL_USER] from this estate? 3360 Kick [EVIL_USER] from this estate?
3389 </message> 3361 </message>
3390 <option name="Kick"> 3362 <option name="Kick">
3391 Kick 3363 OK
3392 </option> 3364 </option>
3393 <option name="Cancel"> 3365 <option name="Cancel">
3394 Cancel 3366 Cancel
@@ -3399,7 +3371,7 @@ Proceed?
3399 Are you sure you want to change the Estate Covenant? 3371 Are you sure you want to change the Estate Covenant?
3400 </message> 3372 </message>
3401 <option name="Change"> 3373 <option name="Change">
3402 Change 3374 OK
3403 </option> 3375 </option>
3404 <option name="Cancel"> 3376 <option name="Cancel">
3405 Cancel 3377 Cancel
@@ -3440,11 +3412,11 @@ Proceed?
3440 <alert name="PublishClassified"> 3412 <alert name="PublishClassified">
3441 <message name="message"> 3413 <message name="message">
3442 Remember: Classified ad fees are non-refundable. 3414 Remember: Classified ad fees are non-refundable.
3443 3415
3444Publish this classified now for L$[AMOUNT]? 3416Publish this classified now for L$[AMOUNT]?
3445 </message> 3417 </message>
3446 <option name="Publish"> 3418 <option name="Publish">
3447 Publish 3419 OK
3448 </option> 3420 </option>
3449 <option name="Cancel"> 3421 <option name="Cancel">
3450 Cancel 3422 Cancel
@@ -3455,7 +3427,7 @@ Publish this classified now for L$[AMOUNT]?
3455 Do you really want to restart this region in 2 minutes? 3427 Do you really want to restart this region in 2 minutes?
3456 </message> 3428 </message>
3457 <option name="Restart"> 3429 <option name="Restart">
3458 Restart 3430 OK
3459 </option> 3431 </option>
3460 <option name="Cancel"> 3432 <option name="Cancel">
3461 Cancel 3433 Cancel
@@ -3478,7 +3450,7 @@ sent to everyone in this region.
3478 <message name="message"> 3450 <message name="message">
3479 If this box is checked, land owners will not be able to terraform 3451 If this box is checked, land owners will not be able to terraform
3480their land regardless of the per-parcel &apos;Edit Terrain&apos; setting. 3452their land regardless of the per-parcel &apos;Edit Terrain&apos; setting.
3481 3453
3482Default: off 3454Default: off
3483 </message> 3455 </message>
3484 </alert> 3456 </alert>
@@ -3486,106 +3458,103 @@ Default: off
3486 <message name="message"> 3458 <message name="message">
3487 If this box is checked, people will not be able to fly in this region 3459 If this box is checked, people will not be able to fly in this region
3488regardless of the per-parcel &apos;Fly&apos; setting. 3460regardless of the per-parcel &apos;Fly&apos; setting.
3489 3461
3490Default: off 3462Default: off
3491 </message> 3463 </message>
3492 </alert> 3464 </alert>
3493 <alert modal="true" name="HelpRegionAllowDamage" title="Allow Damange"> 3465 <alert modal="true" name="HelpRegionAllowDamage" title="Allow Damange">
3494 <message name="message"> 3466 <message name="message">
3495 Checking this box enables the health system across all parcels 3467 If this box is checked, the health system across all parcels
3496regardless of individual parcel settings. If this box is left 3468regardless of individual parcel settings. If this box is left
3497unchecked, individual parcel owners will still be able to 3469unchecked, individual parcel owners will still be able to
3498activate the health system on their parcels. 3470activate the health system on their parcels.
3499 3471
3500Default: off 3472Default: off
3501 </message> 3473 </message>
3502 </alert> 3474 </alert>
3503 <alert modal="true" name="HelpRegionAgentLimit" title="Agent Limit"> 3475 <alert modal="true" name="HelpRegionAgentLimit" title="Agent Limit">
3504 <message name="message"> 3476 <message name="message">
3505 Sets the maximum number of avatars allowed in this region. 3477 Sets the maximum number of avatars allowed in this region.
3506Note that the more avatars you have in one region, the worse 3478Performance may vary depending on the
3507the performance can be. 3479number avatars present.
3508 3480
3509Default: 30 3481Default: 40
3510 </message> 3482 </message>
3511 </alert> 3483 </alert>
3512 <alert modal="true" name="HelpRegionObjectBonus" title="Object Bonus"> 3484 <alert modal="true" name="HelpRegionObjectBonus" title="Object Bonus">
3513 <message name="message"> 3485 <message name="message">
3514 The Object Bonus is a multiplier for primitives allowed on any given 3486 The Object Bonus is a multiplier for primitives allowed on any given
3515parcel. The range allowed is 1 to 10. Set at &apos;1&apos; each 512m2 parcel 3487parcel. The range allowed is 1 to 10. Set at &apos;1&apos;, each 512m2 parcel
3516would be allowed 117 objects. Set at &apos;2&apos; each 512m2 parcel would be 3488is allowed 117 objects. Set at &apos;2&apos;, each 512m2 parcel is
3517allowed 234, or twice as many, and so on. The max number of objects 3489allowed 234, or twice as many, and so on. The max number of objects
3518allowed per region remains 15,000 no matter what the value set for 3490allowed per region remains 15,000 no matter what the
3519Object Bonus. Once this value is set, it should not be lowered until 3491Object Bonus is. once set, be aware that lowering the Object Bonus may cause
3520you are certain that changing it will not force return or deletion of 3492objects to be returned or deleted.
3521the objects currently on parcels. 3493
3522
3523Default: 1.0 3494Default: 1.0
3524 </message> 3495 </message>
3525 </alert> 3496 </alert>
3526 <alert modal="true" name="HelpRegionMaturity" title="Maturity"> 3497 <alert modal="true" name="HelpRegionMaturity" title="Maturity">
3527 <message name="message"> 3498 <message name="message">
3528 Sets the maturity of the region, as shown in the upper right hand 3499 Sets the maturity of the region, as shown at the top
3529corner of the screen and in pop-up tips on the map. Maturity 3500 of the screen and in pop-up tips on the map. This setting
3530also affects search results - residents can choose not to find 3501also affects search results - Residents can choose not to find
3531content in Mature regions. 3502content in Mature regions.
3532 3503
3533The pop-up tips on the map will not change for 5 minutes, because 3504It may take some time for this change to be reflected
3534the system only updates map information periodically. 3505on the map.
3535 3506
3536Default: PG 3507Default: PG
3537 </message> 3508 </message>
3538 </alert> 3509 </alert>
3539 <alert modal="true" name="HelpRegionRestrictPushObject" title="Restrict Pushing"> 3510 <alert modal="true" name="HelpRegionRestrictPushObject" title="Restrict Pushing">
3540 <message name="message"> 3511 <message name="message">
3541 Sets the full region to restricted push permissions. 3512 This checkbox sets the full region to restricted push permissions.
3542Agents may only push themselves, or be pushed by scripts owned by 3513When enabled, Residents may only be pushed by themselves
3543the owner of a parcel, or that are set to the group of the parcel, 3514or by the parcel&apos;s owner.
3544assuming the parcel has a group set/deeded. 3515(Push refers to the llPushObject() LSL function.)
3545Push refers to the llPushObject() LSL function. 3516
3546
3547Default: Off 3517Default: Off
3548 </message> 3518 </message>
3549 </alert> 3519 </alert>
3550 <alert modal="true" name="HelpParcelChanges" title="Parcel Join/Subdivide"> 3520 <alert modal="true" name="HelpParcelChanges" title="Parcel Join/Subdivide">
3551 <message name="message"> 3521 <message name="message">
3552 Sets whether or not parcels not owned by the estate owner 3522 This checkbox sets whether or not parcels not owned by the estate owner
3553can be joined or subdivided. 3523can be joined or subdivided.
3554If this option is unchecked: 3524If this option is unchecked:
3555 * Only estate owners or managers can join or subdivide parcels. 3525 * Only estate owners or managers can join or subdivide parcels.
3556 * They may only join or subdivide parcels belonging to the owner, 3526 * They may only join or subdivide parcels belonging to the owner,
3557 or to a group where they have the appropriate group powers. 3527 or to a group where they have the appropriate group powers.
3558If this option is checked: 3528If this option is checked:
3559 * All parcel owners can join or subdivide the parcels they own. 3529 * All parcel owners can join or subdivide the parcels they own.
3560 * For group owned parcels, those with appropriate group powers 3530 * For group owned parcels, those with appropriate group powers
3561 may join or subdivide parcels. 3531 may join or subdivide parcels.
3562 3532
3563Default: Checked 3533Default: Checked
3564 </message> 3534 </message>
3565 </alert> 3535 </alert>
3566 <alert modal="true" name="RegionMaturityChange" title="Changed Region Maturity"> 3536 <alert modal="true" name="RegionMaturityChange" title="Changed Region Maturity">
3567 <message name="message"> 3537 <message name="message">
3568 The maturity rating for this region has been updated. 3538 The maturity rating for this region has been updated.
3569 3539
3570The world map, however, will take approximately 5 minutes 3540It may take some time for the change to be
3571to update, because the system only updates map information 3541reflected on the map.
3572periodically.
3573 </message> 3542 </message>
3574 </alert> 3543 </alert>
3575 <alert modal="true" name="HelpRegionLandResell" title="Land Resale"> 3544 <alert modal="true" name="HelpRegionLandResell" title="Land Resale">
3576 <message name="message"> 3545 <message name="message">
3577 Estate owners and managers can sell any land owned by the estate owner. 3546 Estate owners and managers can sell any land owned by the estate owner.
3578If this option is left unchecked, buyers cannot resell their land in this region. 3547If this option is left unchecked, buyers cannot resell their land in this region.
3579If this option is checked, buyers can resell their land in this region. 3548If this option is checked, buyers can resell their land in this region.
3580 3549
3581Default: Disallow 3550Default: Disallow
3582 </message> 3551 </message>
3583 </alert> 3552 </alert>
3584 <alert modal="true" name="HelpEstateCovenantID" title="Covenant Asset ID"> 3553 <alert modal="true" name="HelpEstateCovenantID" title="Covenant Asset ID">
3585 <message name="message"> 3554 <message name="message">
3586 Sets the notecard asset ID for the Estate Covenant belonging to this 3555 Sets the notecard asset ID for the Estate Covenant belonging to this
3587estate. 3556estate.
3588 3557
3589Default: 00000000-0000-0000-0000-000000000000 or none 3558Default: 00000000-0000-0000-0000-000000000000 or none
3590 </message> 3559 </message>
3591 </alert> 3560 </alert>
@@ -3593,292 +3562,282 @@ Default: 00000000-0000-0000-0000-000000000000 or none
3593 <message name="message"> 3562 <message name="message">
3594 When sim performance is poor, a script may be to blame. Open the 3563 When sim performance is poor, a script may be to blame. Open the
3595Statistics Bar (Ctrl-Shift-1). Look at the Simulator Physics FPS. 3564Statistics Bar (Ctrl-Shift-1). Look at the Simulator Physics FPS.
3596If it is lower than 45 then open the &apos;Time&apos; panel located at the 3565If it is lower than 45, open the Time panel located at the
3597bottom of the Stats Bar. If Script Time reads 25 ms or higher, click 3566bottom of the Stats Bar. If Script Time reads 25 ms or higher, click
3598the &apos;Get Top Scripts&apos; button. You will be given the name and location 3567the Get Top Scripts button. You will be given the name and location
3599of scripts that may be causing poor performance. 3568of scripts that may be causing poor performance.
3600 3569
3601Checking the &apos;Disable Scripts&apos; box and then pressing the &apos;Apply&apos; 3570Checking the Disable Scripts box and then pressing the Apply
3602button will temporarily disable all scripts in this region. You may 3571button will temporarily disable all scripts in this region. You may
3603need to do this in order to travel to the location of a noted 3572need to do this in order to travel to the location of a noted
3604&apos;top script&apos;. Once you have arrived at the location, investigate the 3573&apos;top script&apos;. Once you have arrived at the location, investigate the
3605script to determine if it is causing the problem. You may want to 3574script to determine if it is causing the problem. You may want to
3606contact the owner of the script or delete or return the object. 3575contact the owner of the script or delete or return the object.
3607Uncheck the &apos;Disable Script&apos; box and then &apos;Apply&apos; to reactivate 3576Uncheck the Disable Script box and then Apply to reactivate
3608the scripts in the region. 3577the scripts in the region.
3609 3578
3610Default: off 3579Default: off
3611 </message> 3580 </message>
3612 </alert> 3581 </alert>
3613 <alert modal="true" name="HelpRegionDisableCollisions" title="Disable Collisions"> 3582 <alert modal="true" name="HelpRegionDisableCollisions" title="Disable Collisions">
3614 <message name="message"> 3583 <message name="message">
3615 When sim performance is poor, physical objects may be to blame. 3584 When sim performance is poor, physical objects may be to blame.
3616Open the Statistics Bar (Ctrl-Shift-1). Look at the Simulator 3585Open the Statistics Bar (Ctrl-Shift-1). Look at the Simulator
3617Physics FPS. If it is lower than 45 then open the &apos;Time&apos; panel 3586Physics FPS. If it is lower than 45, open the Time panel
3618located at the bottom of the Stats Bar. If Sim Time (Physics) 3587located at the bottom of the Stats Bar. If Sim Time (Physics)
3619reads 20 ms or higher, click the &apos;Get Top Colliders&apos; button. 3588reads 20 ms or higher, click the Get Top Colliders button.
3620You will be given the name and location of physical objects 3589You will be given the name and location of physical objects
3621that may be causing poor performance. 3590that may be causing poor performance.
3622 3591
3623Checking the &apos;Disable Collisions&apos; box and then pressing the &apos;Apply&apos; 3592Checking the Disable Collisions box and then pressing the Apply
3624button will temporarily disable object-object collisions. You may 3593button will temporarily disable object-object collisions. You may
3625need to do this in order to travel to the location of a noted 3594need to do this in order to travel to the location of a noted
3626&apos;top collider&apos;. Once you have arrived at the location, investigate the 3595&apos;top collider&apos;. Once you have arrived at the location, investigate the
3627object - is it constantly colliding with other objects? You may want to 3596object - is it constantly colliding with other objects? You may want to
3628contact the owner of the object or delete or return the object. 3597contact the owner of the object or delete or return the object.
3629Uncheck the &apos;Disable Collisions&apos; box and then &apos;Apply&apos; to reactivate 3598Uncheck the Disable Collisions box and then Applyto reactivate
3630collisions in the region. 3599collisions in the region.
3631 3600
3632Default: off 3601Default: off
3633 </message> 3602 </message>
3634 </alert> 3603 </alert>
3635 <alert modal="true" name="HelpRegionDisablePhysics" title="Disable Physics"> 3604 <alert modal="true" name="HelpRegionDisablePhysics" title="Disable Physics">
3636 <message name="message"> 3605 <message name="message">
3637 Disable Physics is similar to Disable Collisions, except all 3606 Disable Physics is similar to Disable Collisions, except all
3638physics simulation is disabled. This means that not only will 3607physics simulation is disabled. This means that not only will
3639objects stop colliding, but avatars will be unable to move. 3608objects stop colliding, but avatars will be unable to move.
3640 3609
3641This should only be used when Disable Collisions does not 3610This should only be used when Disable Collisions does not
3642give back enough performance to the region to investigate 3611give back enough performance to the region to investigate
3643a physics problem or &apos;Top Collider&apos;. 3612a physics problem or Top Collider.
3644 3613
3645Be sure to re-enable physics when you are done, or avatars 3614Be sure to re-enable physics when you are done, or avatars
3646will continue to be unable to move. 3615will continue to be unable to move.
3647 3616
3648Default: off 3617Default: off
3649 </message> 3618 </message>
3650 </alert> 3619 </alert>
3651 <alert modal="true" name="HelpRegionTopColliders" title="Top Colliders"> 3620 <alert modal="true" name="HelpRegionTopColliders" title="Top Colliders">
3652 <message name="message"> 3621 <message name="message">
3653 Show a list of objects experiencing the greatest number 3622 Show a list of objects experiencing the greatest number
3654of potential object-object collisions. These objects can 3623of potential object-object collisions. These objects can
3655slow sim performance. Select View &gt; Statistics Bar and 3624slow performance. Select View &gt; Statistics Bar and
3656look under Simulator &gt; Time &gt; Sim Time (Physics) to see 3625look under Simulator &gt; Time &gt; Sim Time (Physics) to see
3657if more than 20 ms is being spent in physics. 3626if more than 20 ms is being spent in physics.
3658 </message> 3627 </message>
3659 </alert> 3628 </alert>
3660 <alert modal="true" name="HelpRegionTopScripts" title="Top Scripts"> 3629 <alert modal="true" name="HelpRegionTopScripts" title="Top Scripts">
3661 <message name="message"> 3630 <message name="message">
3662 Show a list of objects spending the most time running 3631 Show a list of objects spending the most time running
3663LSL scripts. These objects can slow sim performance. 3632LSL scripts. These objects can slow performance.
3664Select View &gt; Statistics Bar and look under 3633Select View &gt; Statistics Bar and look under
3665Simulator &gt; Time &gt; Script Time to see if more than 3634Simulator &gt; Time &gt; Script Time to see if more than
366625 ms is being spent in scripts. 363525 ms is being spent in scripts.
3667 </message> 3636 </message>
3668 </alert> 3637 </alert>
3669 <alert modal="true" name="HelpRegionRestart" title="Restart Region"> 3638 <alert modal="true" name="HelpRegionRestart" title="Restart Region">
3670 <message name="message"> 3639 <message name="message">
3671 Restart the server process running this region after a 3640 Restart the server process running this region after a
3672two minute warning. All residents in the region will be 3641two minute warning. All Residents in the region will be
3673disconnected. The region will save its data, and should 3642disconnected. The region will save its data, and should
3674come back up within 90 seconds. 3643come back up within 90 seconds.
3675 3644
3676Restarting the region will not fix most performance 3645Restarting the region will not fix most performance
3677problems, and should usually be used only when directed. 3646problems, and should usually be used only when directed.
3678 </message> 3647 </message>
3679 </alert> 3648 </alert>
3680 <alert modal="true" name="HelpRegionWaterHeight" title="Water Height"> 3649 <alert modal="true" name="HelpRegionWaterHeight" title="Water Height">
3681 <message name="message"> 3650 <message name="message">
3682 This is the height in meters where water appears. If 3651 This is the height in meters where water appears. If
3683this setting is anything other than 20 and you have 3652this setting is anything other than 20 and you have
3684water that is adjacent to the edge of world or &apos;void&apos; 3653water that is adjacent to the edge of world or &apos;void&apos;
3685water, there will be a visible gap. 3654water, there will be a visible gap.
3686 3655
3687Default: 20 3656Default: 20
3688 </message> 3657 </message>
3689 </alert> 3658 </alert>
3690 <alert modal="true" name="HelpRegionTerrainRaise" title="Terrain Raise"> 3659 <alert modal="true" name="HelpRegionTerrainRaise" title="Terrain Raise">
3691 <message name="message"> 3660 <message name="message">
3692 This is the distance that parcel owners can raise 3661 This is the distance in meters that parcel owners can raise
3693their terrain above the &apos;baked&apos; terrain default 3662their terrain above the &apos;baked&apos; terrain default
3694height. 3663height.
3695 3664
3696Default: 4 3665Default: 4
3697 </message> 3666 </message>
3698 </alert> 3667 </alert>
3699 <alert modal="true" name="HelpRegionTerrainLower" title="Terrain Lower"> 3668 <alert modal="true" name="HelpRegionTerrainLower" title="Terrain Lower">
3700 <message name="message"> 3669 <message name="message">
3701 This is the distance that parcel owners can lower 3670 This is the distance in meters that parcel owners can lower
3702their terrain below the &apos;baked&apos; terrain default 3671their terrain below the &apos;baked&apos; terrain default
3703height. 3672height.
3704 3673
3705Default: -4 3674Default: -4
3706 </message> 3675 </message>
3707 </alert> 3676 </alert>
3708 <alert modal="true" name="HelpRegionUploadRaw" title="Upload RAW Terrain"> 3677 <alert modal="true" name="HelpRegionUploadRaw" title="Upload RAW Terrain">
3709 <message name="message"> 3678 <message name="message">
3710 This button uploads a .RAW file to the region you are in. 3679 This button uploads a .RAW file to the region you are in.
3711The file must have the correct dimensions/number of channels: 3680The file must have the correct dimensions (RGB, 256x256)
3712RGB, 256x256 and 13 channels. The best way to create a 3681and 13 channels. The best way to create a
3713terrain file is to download the existing RAW file. A good 3682terrain file is to download the existing RAW file. A good
3714first step is to modify the first channel (land height), 3683first step is to modify the red channel (land height),
3715and upload it. 3684and upload it.
3716 3685
3717The upload can take up to 45 seconds. Note that uploading a 3686The upload can take up to 45 seconds. Note that uploading a
3718terrain file *will not* move the objects that are on the land, 3687terrain file *will not* move the objects that are on the land,
3719only the terrain itself and the permissions associated with the 3688only the terrain itself and the permissions associated with the
3720parcels. This can result in objects going underground. 3689parcels. This can result in objects going underground.
3721 3690
3722For more information on editing region height fields, go to: 3691For more information on editing region height fields, consult F1 Help.
3723http://secondlife.com/tiki/tiki-index.php?page=RawTerrainFile
3724 </message> 3692 </message>
3725 </alert> 3693 </alert>
3726 <alert modal="true" name="HelpRegionDownloadRaw" title="Download RAW Terrain"> 3694 <alert modal="true" name="HelpRegionDownloadRaw" title="Download RAW Terrain">
3727 <message name="message"> 3695 <message name="message">
3728 This button downloads a file containing the height field data, 3696 This button downloads a file containing the height field data,
3729parcel dimensions, parcel for sale status and some parcel permissions 3697parcel dimensions, parcel for sale status and some parcel permissions
3730for this region. When opening the file in a program such as 3698for this region. When opening the file in a program such as
3731Photoshop you must specify the document&apos;s dimensions which 3699Photoshop you must specify the document&apos;s dimensions which
3732are: RGB, 256x256 with 13 channels. This terrain file cannot 3700are: RGB, 256x256 with 13 channels. This terrain file cannot
3733be opened in any other way. 3701be opened in any other way.
3734 3702
3735For more information on editing region height fields, go to: 3703For more information on editing region height fields, consult F1 help.
3736http://secondlife.com/tiki/tiki-index.php?page=RawTerrainFile
3737 </message> 3704 </message>
3738 </alert> 3705 </alert>
3739 <alert modal="true" name="HelpRegionUseEstateSun" title="Use Estate Sun"> 3706 <alert modal="true" name="HelpRegionUseEstateSun" title="Use Estate Sun">
3740 <message name="message"> 3707 <message name="message">
3741 This checkbox makes the sun position in this region the 3708 This checkbox makes the sun position in this region the
3742same as the sun position in the rest of the estate. 3709same as the sun position in the rest of the estate.
3743 3710
3744Default: on 3711Default: on
3745 </message> 3712 </message>
3746 </alert> 3713 </alert>
3747 <alert modal="true" name="HelpRegionFixedSun" title="Fixed Sun"> 3714 <alert modal="true" name="HelpRegionFixedSun" title="Fixed Sun">
3748 <message name="message"> 3715 <message name="message">
3749 This checkbox sets the sun position to the position 3716 This checkbox sets the sun position to the position
3750in the Phase slider and stops the sun from moving. 3717in the Phase slider and stops the sun from moving.
3751 3718
3752Default: off 3719Default: off
3753 </message> 3720 </message>
3754 </alert> 3721 </alert>
3755 <alert modal="true" name="HelpRegionBakeTerrain" title="Bake Terrain"> 3722 <alert modal="true" name="HelpRegionBakeTerrain" title="Bake Terrain">
3756 <message name="message"> 3723 <message name="message">
3757 This button saves the current shape of the terrain as the 3724 This button saves the current shape of the terrain as the
3758new default for the region. Once baked, the land can revert 3725new default for the region. Once baked, the land can revert
3759to the saved shape whenever you or others use the Edit Terrain 3726to the saved shape whenever you or others use the Edit Terrain
3760&apos;Revert&apos; option/tool. The baked terrain is also the middle 3727&apos;Revert&apos; option. The baked terrain is also the middle
3761point for the terrain raise and lower limits. 3728point for the terrain raise and lower limits.
3762 </message> 3729 </message>
3763 </alert> 3730 </alert>
3764 <alert modal="true" name="HelpEstateEstateManager" title="Estate Managers"> 3731 <alert modal="true" name="HelpEstateEstateManager" title="Estate Managers">
3765 <message name="message"> 3732 <message name="message">
3766 An estate manager is a resident to whom you have delegated 3733 An estate manager is a Resident to whom you have delegated
3767control of region and estate settings. An estate manager 3734control of region and estate settings. An estate manager
3768can change any setting in these panels, except for uploading, 3735can change any setting in these panels, except for uploading,
3769downloading, and baking terrain. In particular, they can 3736downloading, and baking terrain. In particular, they can
3770allow or ban residents from your estate. 3737allow or ban Residents from your estate.
3771 3738
3772Estate managers can only be added or removed by the owner 3739Estate managers can only be added or removed by the owner
3773of the estate, not by each other. Please only choose 3740of the estate, not by each other. Please only choose
3774residents you trust as estate managers, as you will be 3741Residents you trust as estate managers, as you will be
3775ultimately responsible for their actions. 3742ultimately responsible for their actions.
3776 </message> 3743 </message>
3777 </alert> 3744 </alert>
3778 <alert modal="true" name="HelpEstateUseGlobalTime" title="Use Global Time"> 3745 <alert modal="true" name="HelpEstateUseGlobalTime" title="Use Global Time">
3779 <message name="message"> 3746 <message name="message">
3780 This checkbox makes the sun in your estate follow 3747 This checkbox makes the sun in your estate follow
3781the same position as on the Linden-owned &apos;mainland&apos; 3748the same position as on the Linden-owned &apos;mainland&apos;
3782estates. 3749estates.
3783 3750
3784Default: on 3751Default: on
3785 </message> 3752 </message>
3786 </alert> 3753 </alert>
3787 <alert modal="true" name="HelpEstateFixedSun" title="Fixed Sun"> 3754 <alert modal="true" name="HelpEstateFixedSun" title="Fixed Sun">
3788 <message name="message"> 3755 <message name="message">
3789 This checkbox sets the sun position to the position 3756 This checkbox sets the sun position to the position
3790in the Phase slider and stops the sun from moving. 3757in the Phase slider and stops the sun from moving.
3791 </message> 3758 </message>
3792 </alert> 3759 </alert>
3793 <alert modal="true" name="HelpEstateExternallyVisible" title="Public Access"> 3760 <alert modal="true" name="HelpEstateExternallyVisible" title="Public Access">
3794 <message name="message"> 3761 <message name="message">
3795 Sets whether residents who are on other estates can enter this 3762 This checkbox sets whether Residents who are on other estates can enter this
3796 estate without being on an access list. 3763 estate without being on an access list.
3797 3764
3798Default: on 3765Default: on
3799 </message> 3766 </message>
3800 </alert> 3767 </alert>
3801 <alert modal="true" name="HelpEstateAllowDirectTeleport" title="Allow Direct Teleport"> 3768 <alert modal="true" name="HelpEstateAllowDirectTeleport" title="Allow Direct Teleport">
3802 <message name="message"> 3769 <message name="message">
3803 When checked, allows residents to directly teleport to any 3770 When checked, allows Residents to directly teleport to any
3804point in your estate. When unchecked, residents teleport 3771point in your estate. When unchecked, Residents teleport
3805to the nearest telehub. 3772to the nearest telehub.
3806 3773
3807Default: off 3774Default: off
3808 </message> 3775 </message>
3809 </alert> 3776 </alert>
3810 <alert modal="true" name="HelpEstateAllowResident" title="Allow Access"> 3777 <alert modal="true" name="HelpEstateAllowResident" title="Allow Access">
3811 <message name="message"> 3778 <message name="message">
3812 If any resident is listed here, access to the estate will be 3779 Access to this estate will be limited to Residents
3813limited to residents on this list and groups listed below. 3780 listed here and any groups below. This setting is
3814 3781 only available when Visible from Mainland is
3815(If the estate is visible from the mainland, access cannot be 3782 unchecked.
3816limited to a resident or group list, and these controls will be
3817disabled. Only the &apos;access denied&apos; list will be used.)
3818 </message> 3783 </message>
3819 </alert> 3784 </alert>
3820 <alert modal="true" name="HelpEstateAllowGroup" title="Allow Group Access"> 3785 <alert modal="true" name="HelpEstateAllowGroup" title="Allow Group Access">
3821 <message name="message"> 3786 <message name="message">
3822 If any group is listed here, access to the estate will be 3787 Access to this estate will be limited to groups
3823limited to the groups on this list and residents specifically 3788 listed here and any Residents above. This setting is
3824allowed above. 3789 only available when Visible from Mainland is
3825 3790 unchecked.
3826(If the estate is visible from the mainland, access cannot be
3827limited to a resident or group list, and these controls will be
3828disabled. Only the &apos;access denied&apos; list will be used.)
3829 </message> 3791 </message>
3830 </alert> 3792 </alert>
3831 <alert modal="true" name="HelpEstateBanResident" title="Deny Access"> 3793 <alert modal="true" name="HelpEstateBanResident" title="Deny Access">
3832 <message name="message"> 3794 <message name="message">
3833 Residents on this list are denied access to your estate, 3795 Residents on this list are denied access to your estate,
3834regardless of the allow and group settings above. 3796regardless of any other settings.
3835
3836Adding a resident to this list will remove them from
3837the allow list.
3838 </message> 3797 </message>
3839 </alert> 3798 </alert>
3840 <alert modal="true" name="HelpEstateCovenant" title="Estate Covenant"> 3799 <alert modal="true" name="HelpEstateCovenant" title="Estate Covenant">
3841 <message name="message"> 3800 <message name="message">
3842 Setting an estate covenant enables you to sell parcels 3801 Setting an estate covenant enables you to sell parcels
3843within that estate. If a covenant is not set, you cannot 3802within that estate. If a covenant is not set, you cannot
3844sell the land. The notecard for your covenant can be empty 3803sell the land. The notecard for your covenant can be empty
3845if you do not wish to apply any rules or advise buyers of 3804if you do not wish to apply any rules or advise buyers of
3846anything in relation to the land before they buy it. 3805anything in relation to the land before they buy it.
3847 3806
3848A covenant can be used to communicate rules, guidelines, 3807A covenant can be used to communicate rules, guidelines,
3849cultural information or simply your own expectations to the 3808cultural information or simply your own expectations to the
3850prospective buyer. This can include zoning, building regulations, 3809prospective buyer. This can include zoning, building regulations,
3851payment options or any other information you feel it is 3810payment options or any other information you feel it is
3852important for the new owner to have seen and to have agreed 3811important for the new owner to have seen and to have agreed
3853to before they purchase. 3812to before they purchase.
3854 3813
3855The buyer must agree to the covenant by ticking the check box 3814The buyer must agree to the covenant by ticking the check box
3856before they will be able to finish the purchase. Estate 3815before they will be able to finish the purchase. Estate
3857covenants are always visible in the About Land dialog for 3816covenants are always visible in the About Land dialog for
3858any parcels that have one set. 3817any parcels that have one set.
3859 </message> 3818 </message>
3860 </alert> 3819 </alert>
3861 <alert modal="true" name="BuyObjectOneOnly" title="Can&apos;t Buy Objects"> 3820 <alert modal="true" name="BuyObjectOneOnly" title="Can&apos;t Buy Objects">
3862 <message name="message"> 3821 <message name="message">
3863 Unable to buy more than one object at a time. 3822 Unable to buy more than one object at a time.
3864Please select only one object and try again. 3823Please select only one object and try again.
3865 </message> 3824 </message>
3866 </alert> 3825 </alert>
3867 <alert modal="true" name="BuyObjectOneOwner" title="Can&apos;t Buy Objects"> 3826 <alert modal="true" name="BuyObjectOneOwner" title="Can&apos;t Buy Objects">
3868 <message name="message"> 3827 <message name="message">
3869 Cannot buy objects from different owners at the same time. 3828 Cannot buy objects from different owners at the same time.
3870Please select only one object and try again. 3829Please select only one object and try again.
3871 </message> 3830 </message>
3872 </alert> 3831 </alert>
3873 <alert modal="true" name="BuyContentsOneOnly" title="Can&apos;t Buy Contents"> 3832 <alert modal="true" name="BuyContentsOneOnly" title="Can&apos;t Buy Contents">
3874 <message name="message"> 3833 <message name="message">
3875 Unable to buy the contents of more than one object at a time. 3834 Unable to buy the contents of more than one object at a time.
3876Please select only one object and try again. 3835Please select only one object and try again.
3877 </message> 3836 </message>
3878 </alert> 3837 </alert>
3879 <alert modal="true" name="BuyContentsOneOwner" title="Can&apos;t Buy Contents"> 3838 <alert modal="true" name="BuyContentsOneOwner" title="Can&apos;t Buy Contents">
3880 <message name="message"> 3839 <message name="message">
3881 Cannot buy objects from different owners at the same time. 3840 Cannot buy objects from different owners at the same time.
3882Please select only one object and try again. 3841Please select only one object and try again.
3883 </message> 3842 </message>
3884 </alert> 3843 </alert>
@@ -3902,7 +3861,7 @@ You will be able to:
3902 Resell or Give Away: [RESELLPERM] 3861 Resell or Give Away: [RESELLPERM]
3903 </message> 3862 </message>
3904 <option name="Buy"> 3863 <option name="Buy">
3905 Buy 3864 OK
3906 </option> 3865 </option>
3907 <option name="Cancel"> 3866 <option name="Cancel">
3908 Cancel 3867 Cancel
@@ -3918,7 +3877,7 @@ You will be able to:
3918 Resell or Give Away: [RESELLPERM] 3877 Resell or Give Away: [RESELLPERM]
3919 </message> 3878 </message>
3920 <option name="Buy"> 3879 <option name="Buy">
3921 Buy 3880 OK
3922 </option> 3881 </option>
3923 <option name="Cancel"> 3882 <option name="Cancel">
3924 Cancel 3883 Cancel
@@ -3934,7 +3893,7 @@ You will be able to:
3934 Resell or Give Away: [RESELLPERM] 3893 Resell or Give Away: [RESELLPERM]
3935 </message> 3894 </message>
3936 <option name="Buy"> 3895 <option name="Buy">
3937 Buy 3896 OK
3938 </option> 3897 </option>
3939 <option name="Cancel"> 3898 <option name="Cancel">
3940 Cancel 3899 Cancel
@@ -3950,7 +3909,7 @@ You will be able to:
3950 Resell or Give Away: [RESELLPERM] 3909 Resell or Give Away: [RESELLPERM]
3951 </message> 3910 </message>
3952 <option name="Buy"> 3911 <option name="Buy">
3953 Buy 3912 OK
3954 </option> 3913 </option>
3955 <option name="Cancel"> 3914 <option name="Cancel">
3956 Cancel 3915 Cancel
@@ -3962,7 +3921,7 @@ You will be able to:
3962They will be copied to your inventory. 3921They will be copied to your inventory.
3963 </message> 3922 </message>
3964 <option name="Buy"> 3923 <option name="Buy">
3965 Buy 3924 OK
3966 </option> 3925 </option>
3967 <option name="Cancel"> 3926 <option name="Cancel">
3968 Cancel 3927 Cancel
@@ -3974,7 +3933,7 @@ They will be copied to your inventory.
3974They will be copied to your inventory. 3933They will be copied to your inventory.
3975 </message> 3934 </message>
3976 <option name="Buy"> 3935 <option name="Buy">
3977 Buy 3936 OK
3978 </option> 3937 </option>
3979 <option name="Cancel"> 3938 <option name="Cancel">
3980 Cancel 3939 Cancel
@@ -3983,13 +3942,13 @@ They will be copied to your inventory.
3983 <alert modal="true" name="ConfirmPurchase" nodefault="true"> 3942 <alert modal="true" name="ConfirmPurchase" nodefault="true">
3984 <message name="message"> 3943 <message name="message">
3985 This transaction will: 3944 This transaction will:
3986 3945
3987[ACTION] 3946[ACTION]
3988 3947
3989Are you sure you want to proceed with this purchase? 3948Are you sure you want to proceed with this purchase?
3990 </message> 3949 </message>
3991 <option name="Confirm"> 3950 <option name="Confirm">
3992 Confirm 3951 OK
3993 </option> 3952 </option>
3994 <option name="Cancel"> 3953 <option name="Cancel">
3995 Cancel 3954 Cancel
@@ -3998,15 +3957,15 @@ Are you sure you want to proceed with this purchase?
3998 <alert modal="true" name="ConfirmPurchasePassword" nodefault="true"> 3957 <alert modal="true" name="ConfirmPurchasePassword" nodefault="true">
3999 <message name="message"> 3958 <message name="message">
4000 This transaction will: 3959 This transaction will:
4001 3960
4002[ACTION] 3961[ACTION]
4003 3962
4004Are you sure you want to proceed with this purchase? 3963Are you sure you want to proceed with this purchase?
4005Please re-enter your password and click Confirm. 3964Please re-enter your password and click OK.
4006 </message> 3965 </message>
4007 <editline /> 3966 <editline />
4008 <option name="ConfirmPurchase"> 3967 <option name="ConfirmPurchase">
4009 Confirm Purchase 3968 OK
4010 </option> 3969 </option>
4011 <option name="Cancel"> 3970 <option name="Cancel">
4012 Cancel 3971 Cancel
@@ -4027,45 +3986,43 @@ will retain their original values.
4027 <message name="message"> 3986 <message name="message">
4028 You have selected &apos;no copy&apos; inventory items. 3987 You have selected &apos;no copy&apos; inventory items.
4029These items will be moved to your inventory, not copied. 3988These items will be moved to your inventory, not copied.
4030 3989
4031Move the inventory item(s)? 3990Move the inventory item(s)?
4032 </message> 3991 </message>
4033 <ignore> 3992 <ignore>
4034 When moving no-copy inventory from objects 3993 When moving no-copy inventory from objects
4035 </ignore> 3994 </ignore>
4036 <option name="Move"> 3995 <option name="Move">
4037 Move 3996 OK
4038 </option> 3997 </option>
4039 <option name="Don&apos;tMove"> 3998 <option name="Don&apos;tMove">
4040 Don&apos;t Move 3999 Cancel
4041 </option> 4000 </option>
4042 </alert> 4001 </alert>
4043 <alert modal="true" name="MoveInventoryFromScriptedObject"> 4002 <alert modal="true" name="MoveInventoryFromScriptedObject">
4044 <message name="message"> 4003 <message name="message">
4045 You have selected &apos;no copy&apos; inventory items. These items 4004 You have selected &apos;no copy&apos; inventory items. These items
4046will be moved to your inventory, not copied. 4005will be moved to your inventory, not copied.
4047 4006
4048Because this object is scripted, moving these items 4007Because this object is scripted, moving these items
4049to your inventory may cause the script to malfunction. 4008to your inventory may cause the script to malfunction.
4050 4009
4051Move the inventory item(s)? 4010Move the inventory item(s)?
4052 </message> 4011 </message>
4053 <ignore> 4012 <ignore>
4054 When moving no-copy inventory from scripted objects 4013 When moving no-copy inventory from scripted objects
4055 </ignore> 4014 </ignore>
4056 <option name="Move"> 4015 <option name="Move">
4057 Move 4016 OK
4058 </option> 4017 </option>
4059 <option name="Don&apos;tMove"> 4018 <option name="Don&apos;tMove">
4060 Don&apos;t Move 4019 Cancel
4061 </option> 4020 </option>
4062 </alert> 4021 </alert>
4063 <alert name="ClickActionNotPayable"> 4022 <alert name="ClickActionNotPayable">
4064 <message name="message"> 4023 <message name="message">
4065 Warning: The Pay Object click action has been set, but it 4024 Warning: The Pay Object click action has been set, but it
4066will only work if a script is added with a money() event. 4025will only work if a script is added with a money() event.
4067This is because residents generally expect that objects
4068will react somehow when money is payed into them.
4069 </message> 4026 </message>
4070 <ignore> 4027 <ignore>
4071 When Setting &apos;Pay&apos; on objects without money() events 4028 When Setting &apos;Pay&apos; on objects without money() events
@@ -4092,48 +4049,48 @@ will react somehow when money is payed into them.
4092 </alert> 4049 </alert>
4093 <alert modal="true" name="HelpReportAbuseEmailLL" > 4050 <alert modal="true" name="HelpReportAbuseEmailLL" >
4094 <message name="message"> 4051 <message name="message">
4095Use this tool to report violations of the Terms of Service 4052Use this tool to report violations of the Terms of Service
4096and Community Standards. See: 4053and Community Standards. See:
4097- 4054-
4098http://secondlife.com/corporate/tos.php 4055http://secondlife.com/corporate/tos.php
4099http://secondlife.com/corporate/cs.php 4056http://secondlife.com/corporate/cs.php
4100- 4057-
4101All reported abuses of the Terms of Service and Community Standards 4058All reported abuses of the Terms of Service and Community Standards
4102are investigated and resolved. You will receive an email informing you 4059are investigated and resolved. You will receive an email informing you
4103of the resolution when it occurs. You can also view the incident 4060of the resolution when it occurs. You can also view the incident
4104resolution on the Police Blotter at: 4061resolution on the Police Blotter at:
4105- 4062-
4106http://secondlife.com/community/blotter.php 4063http://secondlife.com/community/blotter.php
4107 </message> 4064 </message>
4108 </alert> 4065 </alert>
4109 <alert modal="true" name="HelpReportAbuseEmailEO"> 4066 <alert modal="true" name="HelpReportAbuseEmailEO">
4110 <message name="message"> 4067 <message name="message">
4111IMPORTANT: This report will go to the owner of the 4068IMPORTANT: This report will go to the owner of the
4112region you are currently in and not to Linden Lab. 4069region you are currently in and not to Linden Lab.
4113- 4070-
4114As a service to residents and visitors, the owner of 4071As a service to residents and visitors, the owner of
4115the region you are in has elected to receive and resolve 4072the region you are in has elected to receive and resolve
4116all reports originating in this region. Linden Lab will 4073all reports originating in this region. Linden Lab will
4117not investigate reports you file from this location. 4074not investigate reports you file from this location.
4118The region owner will resolve reports based on the local 4075The region owner will resolve reports based on the local
4119rules of this region as outlined in the estate Covenant. 4076rules of this region as outlined in the estate Covenant.
4120(View covenants by going to the World menu and selecting 4077(View covenants by going to the World menu and selecting
4121About Land.) 4078About Land.)
4122- 4079-
4123The resolution of this report applies only to this Region; 4080The resolution of this report applies only to this Region;
4124Residents access to other areas of Second Life will not be 4081Residents access to other areas of Second Life will not be
4125affected by the outcome of this report. Only Linden Lab can 4082affected by the outcome of this report. Only Linden Lab can
4126restrict access to the entirety of Second Life. 4083restrict access to the entirety of Second Life.
4127 </message> 4084 </message>
4128 </alert> 4085 </alert>
4129 <alert modal="true" name="HelpReportBug"> 4086 <alert modal="true" name="HelpReportBug">
4130 <message name="message"> 4087 <message name="message">
4131 Use this tool to *only* report technical features that do not perform as 4088 Use this tool to *only* report technical features that do not perform as
4132described or expected, please provide as much detail as possible, You 4089described or expected, please provide as much detail as possible, You
4133may reply to the auto-response email to add more details to your report. 4090may reply to the auto-response email to add more details to your report.
4134All bug reports are investigated and assessed. No email response will be sent. 4091All bug reports are investigated and assessed. No email response will be sent.
4135- 4092-
4136If you are having a technical difficulty, please contact Support at: 4093If you are having a technical difficulty, please contact Support at:
4137http://secondlife.com/community/support.php 4094http://secondlife.com/community/support.php
4138- 4095-
4139Note: Incomplete reports will not be investigated 4096Note: Incomplete reports will not be investigated
@@ -4142,42 +4099,42 @@ Note: Incomplete reports will not be investigated
4142 <alert modal="true" name="HelpReportAbuseSelectCategory"> 4099 <alert modal="true" name="HelpReportAbuseSelectCategory">
4143 <message name="message"> 4100 <message name="message">
4144 Please select a category for this abuse report. 4101 Please select a category for this abuse report.
4145 4102
4146Selecting a category helps us file and process abuse reports. 4103Selecting a category helps us file and process abuse reports.
4147 </message> 4104 </message>
4148 </alert> 4105 </alert>
4149 <alert modal="true" name="HelpReportBugSelectCategory"> 4106 <alert modal="true" name="HelpReportBugSelectCategory">
4150 <message name="message"> 4107 <message name="message">
4151 Please select a category for this bug. 4108 Please select a category for this bug.
4152 4109
4153Selecting a category helps us file and process bug reports. 4110Selecting a category helps us file and process bug reports.
4154 </message> 4111 </message>
4155 </alert> 4112 </alert>
4156 <alert modal="true" name="HelpReportAbuseAbuserNameEmpty"> 4113 <alert modal="true" name="HelpReportAbuseAbuserNameEmpty">
4157 <message name="message"> 4114 <message name="message">
4158 Please enter the name of the abuser. 4115 Please enter the name of the abuser.
4159 4116
4160Entering an accurate value helps us file and process abuse reports. 4117Entering an accurate value helps us file and process abuse reports.
4161 </message> 4118 </message>
4162 </alert> 4119 </alert>
4163 <alert modal="true" name="HelpReportAbuseAbuserLocationEmpty"> 4120 <alert modal="true" name="HelpReportAbuseAbuserLocationEmpty">
4164 <message name="message"> 4121 <message name="message">
4165 Please enter the location where the abuse took place. 4122 Please enter the location where the abuse took place.
4166 4123
4167Entering an accurate value helps us file and process abuse reports. 4124Entering an accurate value helps us file and process abuse reports.
4168 </message> 4125 </message>
4169 </alert> 4126 </alert>
4170 <alert modal="true" name="HelpReportAbuseSummaryEmpty"> 4127 <alert modal="true" name="HelpReportAbuseSummaryEmpty">
4171 <message name="message"> 4128 <message name="message">
4172 Please enter a summary of the abuse that took place. 4129 Please enter a summary of the abuse that took place.
4173 4130
4174Entering an accurate summary helps us file and process abuse reports. 4131Entering an accurate summary helps us file and process abuse reports.
4175 </message> 4132 </message>
4176 </alert> 4133 </alert>
4177 <alert modal="true" name="HelpReportBugSummaryEmpty"> 4134 <alert modal="true" name="HelpReportBugSummaryEmpty">
4178 <message name="message"> 4135 <message name="message">
4179 Please enter a summary of the bug. 4136 Please enter a summary of the bug.
4180 4137
4181Entering an accurate summary helps us file and process bug reports. 4138Entering an accurate summary helps us file and process bug reports.
4182 </message> 4139 </message>
4183 </alert> 4140 </alert>
@@ -4186,7 +4143,7 @@ Entering an accurate summary helps us file and process bug reports.
4186 Please enter a detailed description of the abuse that took place. 4143 Please enter a detailed description of the abuse that took place.
4187Be as specific as you can, including names and the details of the 4144Be as specific as you can, including names and the details of the
4188incident you are reporting. 4145incident you are reporting.
4189 4146
4190Entering an accurate description helps us file and process abuse reports. 4147Entering an accurate description helps us file and process abuse reports.
4191 </message> 4148 </message>
4192 </alert> 4149 </alert>
@@ -4195,24 +4152,24 @@ Entering an accurate description helps us file and process abuse reports.
4195 Please enter a detailed description of the bug. 4152 Please enter a detailed description of the bug.
4196Be as specific as you can, including steps to reproduce the bug 4153Be as specific as you can, including steps to reproduce the bug
4197if possible. 4154if possible.
4198 4155
4199Entering an accurate description helps us file and process bug reports. 4156Entering an accurate description helps us file and process bug reports.
4200 </message> 4157 </message>
4201 </alert> 4158 </alert>
4202 <alert modal="true" name="HelpReportAbuseContainsCopyright"> 4159 <alert modal="true" name="HelpReportAbuseContainsCopyright">
4203 <message name="message"> 4160 <message name="message">
4204 Dear Resident, 4161 Dear Resident,
4205 4162
4206Reports about copyright infringement can only be submitted 4163Reports about copyright infringement can only be submitted
4207as described at http://secondlife.com/corporate/dmca.php. 4164as described at http://secondlife.com/corporate/dmca.php.
4208 4165
4209Reports concerning copyright infringement will automatically 4166Reports concerning copyright infringement will automatically
4210be discarded if they are submitted through the &apos;Abuse Report&apos; 4167be discarded if they are submitted through the &apos;Abuse Report&apos;
4211feature. If your report does not relate to copyright infringement, 4168feature. If your report does not relate to copyright infringement,
4212you may close this window and finish submitting your report. 4169you may close this window and finish submitting your report.
4213 4170
4214Thank you, 4171Thank you,
4215 4172
4216Linden Lab 4173Linden Lab
4217 </message> 4174 </message>
4218 </alert> 4175 </alert>
@@ -4231,10 +4188,10 @@ Do you want to replace it with the selected object?
4231 When replacing existing attachments 4188 When replacing existing attachments
4232 </ignore> 4189 </ignore>
4233 <option ignore="Replace Automatically" name="Yes"> 4190 <option ignore="Replace Automatically" name="Yes">
4234 Yes 4191 OK
4235 </option> 4192 </option>
4236 <option ignore="Never Replace" name="No"> 4193 <option ignore="Never Replace" name="No">
4237 No 4194 Cancel
4238 </option> 4195 </option>
4239 </alert> 4196 </alert>
4240 <alert name="BusyModePay" title="Busy Mode Warning"> 4197 <alert name="BusyModePay" title="Busy Mode Warning">
@@ -4242,7 +4199,7 @@ Do you want to replace it with the selected object?
4242 You are in Busy Mode, which means you will not 4199 You are in Busy Mode, which means you will not
4243receive any items offered in exchange for 4200receive any items offered in exchange for
4244this payment. 4201this payment.
4245 4202
4246Would you like to leave Busy Mode before 4203Would you like to leave Busy Mode before
4247completing this transaction? 4204completing this transaction?
4248 </message> 4205 </message>
@@ -4250,10 +4207,10 @@ completing this transaction?
4250 When paying a person or object in busy mode 4207 When paying a person or object in busy mode
4251 </ignore> 4208 </ignore>
4252 <option ignore="Always leave Busy Mode" name="Yes"> 4209 <option ignore="Always leave Busy Mode" name="Yes">
4253 Yes 4210 OK
4254 </option> 4211 </option>
4255 <option ignore="Never leave Busy Mode" name="No"> 4212 <option ignore="Never leave Busy Mode" name="No">
4256 No 4213 Cancel
4257 </option> 4214 </option>
4258 </alert> 4215 </alert>
4259 <alert modal="true" name="ConfirmEmptyTrash"> 4216 <alert modal="true" name="ConfirmEmptyTrash">
@@ -4265,10 +4222,10 @@ the contents of your Trash folder?
4265 When emptying your inventory trash folder 4222 When emptying your inventory trash folder
4266 </ignore> 4223 </ignore>
4267 <option default="true" name="Yes"> 4224 <option default="true" name="Yes">
4268 Yes 4225 OK
4269 </option> 4226 </option>
4270 <option name="No"> 4227 <option name="No">
4271 No 4228 Cancel
4272 </option> 4229 </option>
4273 </alert> 4230 </alert>
4274 <alert modal="true" name="ConfirmEmptyLostAndFound"> 4231 <alert modal="true" name="ConfirmEmptyLostAndFound">
@@ -4289,9 +4246,9 @@ the contents of your Lost And Found folder?
4289 <alert modal="true" name="CopySLURL"> 4246 <alert modal="true" name="CopySLURL">
4290 <message name="message"> 4247 <message name="message">
4291 The following SLURL has been copied to your clipboard: 4248 The following SLURL has been copied to your clipboard:
4292 4249
4293 [SLURL] 4250 [SLURL]
4294 4251
4295 Put it in a web page to give others easy access to this location or 4252 Put it in a web page to give others easy access to this location or
4296 try it out yourself by pasting it into the address bar of your web browser. 4253 try it out yourself by pasting it into the address bar of your web browser.
4297 </message> 4254 </message>
diff --git a/linden/indra/newview/skins/xui/en-us/floater_about.xml b/linden/indra/newview/skins/xui/en-us/floater_about.xml
index 09eba16..ea855d9 100644
--- a/linden/indra/newview/skins/xui/en-us/floater_about.xml
+++ b/linden/indra/newview/skins/xui/en-us/floater_about.xml
@@ -7,9 +7,9 @@
7 follows="left|top|right|bottom" font="SansSerifSmall" height="168" left="6" 7 follows="left|top|right|bottom" font="SansSerifSmall" height="168" left="6"
8 max_length="65536" mouse_opaque="true" name="credits_editor" 8 max_length="65536" mouse_opaque="true" name="credits_editor"
9 text_color="1, 1, 1, 1" text_readonly_color="1, 1, 1, 1" width="458" 9 text_color="1, 1, 1, 1" text_readonly_color="1, 1, 1, 1" width="458"
10 word_wrap="true">Second Life is brought to you by Philip, Andrew, Tessa, Cory, Frank, James, Doug, Hunter, Richard, John, Eric, Avi, AaronB, AaronY, Ian, Peter, Mark, Robin, Stephen, Tracy, Ryan, Alberto, Haney, Tanya, JimJ, Dan, Ben, Stephanie, Tim, Evan, Catherine, Colin, Chris, Reuben, Charity, Jeska, James, JonHenry, Kelly, Callum, Char, Daniel, DavidF, Don, Jeff, Lauren, Lee, Michael, Ramzi, Vektor, Steve, TomY, Tess, Kona, Brent, Clarissa, PeterP, Jesse, Annette, Cyn, Blue, Ginsu, Jonathan, Karen, Adam, Nova, Deana, Lizzie, Patsy, DavidK, Isaac, Pathfinder, Monroe, Jill, Benny, Altruima, Rheya, Jennifer, Jack, DaveP, Brad, Mick, Babbage, Elisabeth, Brian, Beth, Data, Ethan, Wendy, Nicole, Sky, Jeffrey, Zero, Coffee, Tesla, Kenny, Makiko, Nigel, Teeple, Lucy, Mia, Dee, Guy, Harry, Liana, Branka, Jimbo, Aura, Vasuda, SarahD, bethanye, Torley, Runitai, MikeS, PaulM, Milo, Hermia, JoeM, Melanie, Rejean, DSmith, SMiller, Susan, Jose, DongYun, Justin, Andrey, Syrah, Donovan, Henrik, Nora, Lexie, AC, Donna, ChrisC, Alex, Leyla, Kyle, Mathew, Devin, Joshua, DanC, Jessica, Harmony, Claudia, Tramel, Glenn, Betsy, Fritz, Jun, Adam, Cassandra, Ken, RyanW, Spike, Varas, Andy, Luke, RobLa, Chiyo, JohnZ, Dustin, George, Del, PeterP, Migyeong, Matthew, RMullane, CChampion, JTurbin, JamesC, Viola, Lightfoot, Jacqui, Sturm, Adrian, Buttercup, Alfred, Sunil, Alfred, Noel, Irfan, Jill, Yool, Jane, Yuki, Yoz, Matthew, Arthur, Jennifer, Karl, Brian, Ben, Janine, Christopher, Madhavi, Everett, Anthony, Joon, Jake, sean, Adreanne, Stephany, KellyJo, Jeremy, Pramod, Joshua, Sean, Christopher, Amy, Ceren, Katherine, jon, Sudheendra, James, Stephan, Kari, Kartic, Todd, Thomas, Joki, Rebecca, Belinda, Bert, Roger, Bridie, Kristi, Brian, Maria, John, Aric, Nathanel, Melinda, Darrell, Jennifer, Sandy and many others. 10 word_wrap="true">Second Life is brought to you by Philip, Andrew, Tessa, Cory, Frank, James, Doug, Hunter, Richard, John, Eric, Avi, AaronB, AaronY, Ian, Peter, Mark, Robin, Stephen, Tracy, Ryan, Alberto, Haney, Tanya, JimJ, Dan, Ben, Stephanie, Tim, Evan, Catherine, Colin, Chris, Reuben, Charity, Jeska, James, JonHenry, Kelly, Callum, Char, Daniel, DavidF, Don, Jeff, Lauren, Lee, Michael, Ramzi, Vektor, Steve, TomY, Tess, Kona, Brent, Clarissa, PeterP, Jesse, Annette, Cyn, Blue, Ginsu, Jonathan, Karen, Adam, Nova, Deana, Lizzie, Patsy, DavidK, Isaac, Pathfinder, Monroe, Jill, Benny, Altruima, Rheya, Jennifer, Jack, DaveP, Brad, Mick, Babbage, Elisabeth, Brian, Beth, Data, Ethan, Wendy, Nicole, Sky, Jeffrey, Zero, Coffee, Tesla, Kenny, Makiko, Nigel, Teeple, Lucy, Mia, Dee, Guy, Harry, Liana, Branka, Jimbo, Aura, Vasuda, SarahD, bethanye, Torley, Runitai, MikeS, PaulM, Milo, Hermia, JoeM, Melanie, Rejean, DSmith, SMiller, Susan, Jose, DongYun, Justin, Andrey, Syrah, Donovan, Henrik, Nora, Lexie, AC, Donna, ChrisC, Alex, Leyla, Kyle, Mathew, Devin, Joshua, DanC, Jessica, Harmony, Claudia, Tramel, Glenn, Betsy, Fritz, Jun, Adam, Cassandra, Ken, RyanW, Spike, Varas, Andy, Luke, RobLa, Chiyo, JohnZ, Dustin, George, Del, PeterP, Migyeong, Matthew, RMullane, CChampion, JTurbin, JamesC, Viola, Lightfoot, Jacqui, Sturm, Adrian, Buttercup, Alfred, Sunil, Alfred, Noel, Irfan, Jill, Yool, Jane, Yuki, Yoz, Matthew, Arthur, Jennifer, Karl, Brian, Ben, Janine, Christopher, Madhavi, Everett, Anthony, Joon, Jake, sean, Adreanne, Stephany, KellyJo, Jeremy, Pramod, Joshua, Sean, Christopher, Amy, Ceren, Katherine, jon, Sudheendra, James, Stephan, Kari, Kartic, Todd, Thomas, Joki, Rebecca, Belinda, Bert, Roger, Bridie, Kristi, Brian, Maria, John, Aric, Nathanel, Melinda, Darrell, Jennifer, Sandy, Greg, Rob, Brad, Chris, Eric, Palmer, Asi, Katja, Lisa, Minda, Jen, Aaron, Bryan, Mark, Jonathan, Jamie, Laurel, William, Matthew, Steve, David and many others.
11 11
12Thank you to the following residents for helping to ensure that this is the best version yet: killerpatra2000 Allen, Dnali Anabuki, Daeph Balder, Hypatia Callisto, Twinsen Clift, Elly Crispien, Fremont Cunningham, DR Dahlgren, DBDigital Epsilon, Jay Evans, Garth FairChang, Brett Finsbury, Kitto Flora, Greg Giotto, Io Giugiaro, Gizmo Gorky, Onix Harbinger, Kal Hocken, Johanna Hyacinth, Dougal Jacobs, LampLighter Jacobus, Bounder Jimenez, Lao Jun, Benja Kepler, bamboolake Klaar, Cross Lament, Johnny Lerwick, Malcolm Lewellen, Lucy Linden, Frontier Linden, Guy Linden, Gwyneth Llewelyn, Kitten Lulu, Ali Maltz, Zoren Manray, Shirley Marquez, Fabio Medby, Peter130980 Miles, Feynt Mistral, Adonica Moy, Destiny Niles, Philippo Novi, Stumbelina Ophelia, Stumbelina Ophelia, Coyote Pace, Kar Parks, Xanshin Paz, Hensonian Pennyfeather, Funk Schnook, Funk Schnook, Derek Sienkiewicz, RopeMasterDom Skjellerup, Dominick Sneerwell, Packard Sonic, Oz Spade, Khashai Steinbeck, Argent Stonecutter, Argent Stonecutter, Linnian Sugar, Aphrodite Tagore, Dirk Talamasca, DRAZIC Torok, Lyr Tuppakaka, Shade Undertone, zechi Uram, Huns Valen, Winter Ventura, Gillian Waldman, Will Webb, XaMaD Welles, Sahara Westerburg, Beatfox Xevious, Questor Yifu 12Thank you to the following residents for helping to ensure that this is the best version yet: shinmai Akebono, Evangeline Arcadia, Nargus Asturias, FireFox Bancroft, Verbuda Barragar, Logan Bauer, Freya Becquerel, phoenix Behemoth, Druida Biedermann, Bibi Book, Barney Boomslang, mckinnes1 Boyd, Ice Brodie, Darling Brody, seaone Bunyip, Hypatia Callisto, Upo Choche, Bell Clellon, pizzaguy Clutterbuck, Victor Cole, Patrice Cournoyer, Sherona DeGroot, Mecha Dinosaur, Shack Dougall, Drew Dwi, Bazzerbill Eccleston, Rosa Edelman, Gotobug Fairymeadow, Gianetti Ferlinghetti, Ante Flan, Mario Fonzarelli, Raudf Fox, Lor Gynoid, Moses Gyoza, Corax Homewood, Pietor Huygens, LampLighter Jacobus, Major Johnson, Itoku Kamachi, DaQbet Kish, Max Kleiber, Laurent Laborde, Lightfoot Lindman, Deira Llanfair, Domino Marama, Aminom Marvin, Liberty Mill, Walker Moore, Yumi Murakami, Usagi Musashi, Luciftias Neurocam, Destiny Niles, Alexandra Nino, Kinzo Nurmi, OmniCron Overlord, Julianna Pennyfeather, Coyote Pixie, Maya Remblai, Arenae Rosewood, Grey Ryder, Norm Schack, Funk Schnook, Singular Seoul, tickledgirl Shemesh, Rhyph Somme, Oz Spade, Argent Stonecutter, Eristic Strangelove, Samm Submariner, Seifert Surface, Dirk Talamasca, Ilyara Tardis, Mac Teazle, Winter Ventura, Amaranth Voss, Geri Watson, Will Webb, Patchouli Woollahra, TonyH Wrangler, malee Zhaoying.
13 13
14APR Copyright (C) 2000-2004 The Apache Software Foundation 14APR Copyright (C) 2000-2004 The Apache Software Foundation
15Cg Copyright (C) 2002, NVIDIA Corporationa. 15Cg Copyright (C) 2002, NVIDIA Corporationa.
@@ -30,7 +30,7 @@ zlib Copyright (C) 1995-2002 Jean-loup Gailly and Mark Adler.
30All rights reserved. See licenses.txt for details. 30All rights reserved. See licenses.txt for details.
31 31
32 32
33We're gonna need a bigger boat.</text_editor> 33Kilroy 2.0 is here. Kilroy 2.0 is everywhere.</text_editor>
34 <text_editor bg_readonly_color="0, 0, 0, 0" bottom_delta="174" embedded_items="false" 34 <text_editor bg_readonly_color="0, 0, 0, 0" bottom_delta="174" embedded_items="false"
35 follows="left|top|right|bottom" font="SansSerif" height="238" left="6" 35 follows="left|top|right|bottom" font="SansSerif" height="238" left="6"
36 max_length="65536" mouse_opaque="true" name="support_editor" 36 max_length="65536" mouse_opaque="true" name="support_editor"
diff --git a/linden/indra/newview/skins/xui/en-us/floater_image_preview.xml b/linden/indra/newview/skins/xui/en-us/floater_image_preview.xml
index 1adf3a5..4b668c5 100644
--- a/linden/indra/newview/skins/xui/en-us/floater_image_preview.xml
+++ b/linden/indra/newview/skins/xui/en-us/floater_image_preview.xml
@@ -44,6 +44,9 @@
44 <combo_item name="Skirt"> 44 <combo_item name="Skirt">
45 Skirt 45 Skirt
46 </combo_item> 46 </combo_item>
47 <combo_item name="SculptedPrim">
48 Sculpted Prim
49 </combo_item>
47 </combo_box> 50 </combo_box>
48 <text bottom="250" follows="top|left" left="10" name="bad_image_text"> 51 <text bottom="250" follows="top|left" left="10" name="bad_image_text">
49 Unable to read image. 52 Unable to read image.
diff --git a/linden/indra/newview/skins/xui/en-us/floater_tools.xml b/linden/indra/newview/skins/xui/en-us/floater_tools.xml
index e1031b7..835edec 100644
--- a/linden/indra/newview/skins/xui/en-us/floater_tools.xml
+++ b/linden/indra/newview/skins/xui/en-us/floater_tools.xml
@@ -693,6 +693,9 @@
693 <combo_item name="Ring" value="Ring"> 693 <combo_item name="Ring" value="Ring">
694 Ring 694 Ring
695 </combo_item> 695 </combo_item>
696 <combo_item name="Sculpted" value="Sculpted">
697 Sculpted
698 </combo_item>
696 </combo_box> 699 </combo_box>
697 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 700 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
698 bottom_delta="-12" drop_shadow_visible="true" follows="left|top" 701 bottom_delta="-12" drop_shadow_visible="true" follows="left|top"
@@ -851,6 +854,10 @@
851 <spinner bottom_delta="0" decimal_digits="2" follows="left|top" height="16" 854 <spinner bottom_delta="0" decimal_digits="2" follows="left|top" height="16"
852 hidden="false" increment="0.1" initial_val="1" left_delta="73" max_val="4" 855 hidden="false" increment="0.1" initial_val="1" left_delta="73" max_val="4"
853 min_val="1" mouse_opaque="true" name="Revolutions" width="68" /> 856 min_val="1" mouse_opaque="true" name="Revolutions" width="68" />
857 <texture_picker allow_no_texture="false" bottom="-211" can_apply_immediately="true"
858 default_image_name="Default" follows="left|top" height="141" hidden="false"
859 label="Sculpt Texture" left="121" mouse_opaque="true" name="sculpt texture control"
860 tool_tip="Click to choose a picture" width="141" />
854 </panel> 861 </panel>
855 <panel border="true" bottom="-383" follows="left|top|right|bottom" height="367" 862 <panel border="true" bottom="-383" follows="left|top|right|bottom" height="367"
856 hidden="false" label="Features" left="1" mouse_opaque="false" 863 hidden="false" label="Features" left="1" mouse_opaque="false"
diff --git a/linden/indra/test/test_vc8.vcproj b/linden/indra/test/test_vc8.vcproj
index 79af7f0..b491eea 100644
--- a/linden/indra/test/test_vc8.vcproj
+++ b/linden/indra/test/test_vc8.vcproj
@@ -41,7 +41,7 @@
41 <Tool 41 <Tool
42 Name="VCCLCompilerTool" 42 Name="VCCLCompilerTool"
43 Optimization="0" 43 Optimization="0"
44 AdditionalIncludeDirectories="..\llcommon;..\llmessage;..\llmath;..\..\libraries\include;..\llinventory;&quot;..\..\libraries\i686-win32\include&quot;;..\llxml;..\lldatabase" 44 AdditionalIncludeDirectories="..\llcommon;..\lldatabase;..\llmessage;..\llmath;..\llinventory;..\llvfs;..\llxml;..\..\libraries\include;&quot;..\..\libraries\i686-win32\include&quot;"
45 PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;LL_WINDOWS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_USE_32BIT_TIME_T;LL_DEBUG" 45 PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;LL_WINDOWS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_USE_32BIT_TIME_T;LL_DEBUG"
46 MinimalRebuild="false" 46 MinimalRebuild="false"
47 BasicRuntimeChecks="3" 47 BasicRuntimeChecks="3"
@@ -125,17 +125,21 @@
125 /> 125 />
126 <Tool 126 <Tool
127 Name="VCCLCompilerTool" 127 Name="VCCLCompilerTool"
128 Optimization="0" 128 Optimization="2"
129 AdditionalIncludeDirectories="..\llcommon;..\llmessage;..\llmath;..\..\libraries\include;..\llinventory;&quot;..\..\libraries\i686-win32\include&quot;;..\llxml;..\lldatabase" 129 InlineFunctionExpansion="2"
130 EnableIntrinsicFunctions="true"
131 AdditionalIncludeDirectories="..\llcommon;..\lldatabase;..\llmessage;..\llmath;..\llinventory;..\llvfs;..\llxml;..\..\libraries\include;&quot;..\..\libraries\i686-win32\include&quot;"
130 PreprocessorDefinitions="WIN32;__WIN32;NDEBUG;_WINDOWS;LL_WINDOWS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_USE_32BIT_TIME_T;LL_RELEASE;APR_DECLARE_STATIC;LL_HTTPD=1" 132 PreprocessorDefinitions="WIN32;__WIN32;NDEBUG;_WINDOWS;LL_WINDOWS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_USE_32BIT_TIME_T;LL_RELEASE;APR_DECLARE_STATIC;LL_HTTPD=1"
133 StringPooling="true"
131 MinimalRebuild="false" 134 MinimalRebuild="false"
132 BasicRuntimeChecks="3" 135 BasicRuntimeChecks="0"
133 RuntimeLibrary="1" 136 RuntimeLibrary="0"
134 TreatWChar_tAsBuiltInType="false" 137 TreatWChar_tAsBuiltInType="false"
135 ForceConformanceInForLoopScope="true" 138 ForceConformanceInForLoopScope="true"
136 RuntimeTypeInfo="true" 139 RuntimeTypeInfo="true"
137 UsePrecompiledHeader="0" 140 UsePrecompiledHeader="0"
138 WarningLevel="3" 141 WarningLevel="3"
142 WarnAsError="false"
139 Detect64BitPortabilityProblems="false" 143 Detect64BitPortabilityProblems="false"
140 DebugInformationFormat="3" 144 DebugInformationFormat="3"
141 /> 145 />
@@ -155,10 +159,12 @@
155 OutputFile="$(OutDir)/test.exe" 159 OutputFile="$(OutDir)/test.exe"
156 LinkIncremental="2" 160 LinkIncremental="2"
157 AdditionalLibraryDirectories="&quot;../lib_$(ConfigurationName)/i686-win32&quot;;&quot;../../libraries/i686-win32/lib_release&quot;" 161 AdditionalLibraryDirectories="&quot;../lib_$(ConfigurationName)/i686-win32&quot;;&quot;../../libraries/i686-win32/lib_release&quot;"
158 IgnoreDefaultLibraryNames="libcmt.lib" 162 IgnoreDefaultLibraryNames=""
159 GenerateDebugInformation="true" 163 GenerateDebugInformation="true"
160 ProgramDatabaseFile="$(OutDir)/test.pdb" 164 ProgramDatabaseFile="$(OutDir)/test.pdb"
161 SubSystem="1" 165 SubSystem="1"
166 OptimizeReferences="1"
167 EnableCOMDATFolding="1"
162 TargetMachine="1" 168 TargetMachine="1"
163 /> 169 />
164 <Tool 170 <Tool
@@ -213,11 +219,11 @@
213 <Tool 219 <Tool
214 Name="VCCLCompilerTool" 220 Name="VCCLCompilerTool"
215 Optimization="0" 221 Optimization="0"
216 AdditionalIncludeDirectories="..\llcommon;..\llmessage;..\llmath;..\..\libraries\include;..\llinventory;&quot;..\..\libraries\i686-win32\include&quot;;..\llxml;..\lldatabase" 222 AdditionalIncludeDirectories="..\llcommon;..\lldatabase;..\llmessage;..\llmath;..\llinventory;..\llvfs;..\llxml;..\..\libraries\include;&quot;..\..\libraries\i686-win32\include&quot;"
217 PreprocessorDefinitions="WIN32;__WIN32;NDEBUG;_WINDOWS;LL_WINDOWS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_USE_32BIT_TIME_T;LL_RELEASE;APR_DECLARE_STATIC;LL_HTTPD=1" 223 PreprocessorDefinitions="WIN32;__WIN32;NDEBUG;_WINDOWS;LL_WINDOWS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_USE_32BIT_TIME_T;LL_RELEASE;APR_DECLARE_STATIC;LL_HTTPD=1"
218 MinimalRebuild="false" 224 MinimalRebuild="false"
219 BasicRuntimeChecks="3" 225 BasicRuntimeChecks="0"
220 RuntimeLibrary="1" 226 RuntimeLibrary="0"
221 TreatWChar_tAsBuiltInType="false" 227 TreatWChar_tAsBuiltInType="false"
222 ForceConformanceInForLoopScope="true" 228 ForceConformanceInForLoopScope="true"
223 RuntimeTypeInfo="true" 229 RuntimeTypeInfo="true"
@@ -241,7 +247,7 @@
241 OutputFile="$(OutDir)/test.exe" 247 OutputFile="$(OutDir)/test.exe"
242 LinkIncremental="2" 248 LinkIncremental="2"
243 AdditionalLibraryDirectories="&quot;../lib_$(ConfigurationName)/i686-win32&quot;;&quot;../../libraries/i686-win32/lib_release&quot;" 249 AdditionalLibraryDirectories="&quot;../lib_$(ConfigurationName)/i686-win32&quot;;&quot;../../libraries/i686-win32/lib_release&quot;"
244 IgnoreDefaultLibraryNames="libcmt.lib" 250 IgnoreDefaultLibraryNames="libcmtd"
245 GenerateDebugInformation="true" 251 GenerateDebugInformation="true"
246 ProgramDatabaseFile="$(OutDir)/test.pdb" 252 ProgramDatabaseFile="$(OutDir)/test.pdb"
247 SubSystem="1" 253 SubSystem="1"
@@ -295,10 +301,30 @@
295 > 301 >
296 </File> 302 </File>
297 <File 303 <File
304 RelativePath=".\llapp_tut.cpp"
305 >
306 </File>
307 <File
308 RelativePath=".\llbase64_tut.cpp"
309 >
310 </File>
311 <File
312 RelativePath=".\llbitpack_tut.cpp"
313 >
314 </File>
315 <File
316 RelativePath=".\llblowfish_tut.cpp"
317 >
318 </File>
319 <File
298 RelativePath=".\lldatabase_tut.cpp" 320 RelativePath=".\lldatabase_tut.cpp"
299 > 321 >
300 </File> 322 </File>
301 <File 323 <File
324 RelativePath=".\lldatapacker_tut.cpp"
325 >
326 </File>
327 <File
302 RelativePath=".\llerror_tut.cpp" 328 RelativePath=".\llerror_tut.cpp"
303 > 329 >
304 </File> 330 </File>
@@ -307,10 +333,30 @@
307 > 333 >
308 </File> 334 </File>
309 <File 335 <File
336 RelativePath=".\llhttpnode_tut.cpp"
337 >
338 </File>
339 <File
340 RelativePath=".\llinventoryparcel_tut.cpp"
341 >
342 </File>
343 <File
344 RelativePath=".\lliohttpserver_tut.cpp"
345 >
346 </File>
347 <File
348 RelativePath=".\llmessageconfig_tut.cpp"
349 >
350 </File>
351 <File
310 RelativePath=".\llmime_tut.cpp" 352 RelativePath=".\llmime_tut.cpp"
311 > 353 >
312 </File> 354 </File>
313 <File 355 <File
356 RelativePath=".\llpartdata_tut.cpp"
357 >
358 </File>
359 <File
314 RelativePath=".\llpipeutil.cpp" 360 RelativePath=".\llpipeutil.cpp"
315 > 361 >
316 </File> 362 </File>
@@ -319,11 +365,15 @@
319 > 365 >
320 </File> 366 </File>
321 <File 367 <File
322 RelativePath=".\llsd_message_system_tut.cpp" 368 RelativePath=".\llsd_new_tut.cpp"
323 > 369 >
324 </File> 370 </File>
325 <File 371 <File
326 RelativePath=".\llsd_new_tut.cpp" 372 RelativePath=".\llsdmessagebuilder_tut.cpp"
373 >
374 </File>
375 <File
376 RelativePath=".\llsdmessagereader_tut.cpp"
327 > 377 >
328 </File> 378 </File>
329 <File 379 <File
@@ -331,6 +381,14 @@
331 > 381 >
332 </File> 382 </File>
333 <File 383 <File
384 RelativePath=".\llservicebuilder_tut.cpp"
385 >
386 </File>
387 <File
388 RelativePath=".\llstring_tut.cpp"
389 >
390 </File>
391 <File
334 RelativePath=".\lltiming_tut.cpp" 392 RelativePath=".\lltiming_tut.cpp"
335 > 393 >
336 </File> 394 </File>
@@ -347,6 +405,14 @@
347 > 405 >
348 </File> 406 </File>
349 <File 407 <File
408 RelativePath=".\llxfer_tut.cpp"
409 >
410 </File>
411 <File
412 RelativePath=".\m3math_tut.cpp"
413 >
414 </File>
415 <File
350 RelativePath=".\math.cpp" 416 RelativePath=".\math.cpp"
351 > 417 >
352 </File> 418 </File>
@@ -358,6 +424,22 @@
358 RelativePath=".\test.cpp" 424 RelativePath=".\test.cpp"
359 > 425 >
360 </File> 426 </File>
427 <File
428 RelativePath=".\v2math_tut.cpp"
429 >
430 </File>
431 <File
432 RelativePath=".\v3dmath_tut.cpp"
433 >
434 </File>
435 <File
436 RelativePath=".\v3math_tut.cpp"
437 >
438 </File>
439 <File
440 RelativePath=".\xform_tut.cpp"
441 >
442 </File>
361 </Filter> 443 </Filter>
362 <Filter 444 <Filter
363 Name="Header Files" 445 Name="Header Files"
@@ -369,6 +451,10 @@
369 > 451 >
370 </File> 452 </File>
371 <File 453 <File
454 RelativePath=".\llsdtraits.h"
455 >
456 </File>
457 <File
372 RelativePath=".\lltut.h" 458 RelativePath=".\lltut.h"
373 > 459 >
374 </File> 460 </File>