aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linden/indra
diff options
context:
space:
mode:
Diffstat (limited to 'linden/indra')
-rw-r--r--linden/indra/cmake/CMakeLists.txt119
-rw-r--r--linden/indra/cmake/CopyWinLibs.cmake122
-rw-r--r--linden/indra/cmake/GStreamer010Plugin.cmake10
-rw-r--r--linden/indra/cmake/QuickTimePlugin.cmake2
-rw-r--r--linden/indra/cmake/cmake_dummy.cpp30
-rw-r--r--linden/indra/llcommon/indra_constants.h5
-rw-r--r--linden/indra/llcommon/llerror.cpp5
-rw-r--r--linden/indra/llcommon/lltimer.cpp6
-rw-r--r--linden/indra/llimage/llimage.cpp2
-rw-r--r--linden/indra/llimage/llpngwrapper.cpp18
-rw-r--r--linden/indra/llimage/llpngwrapper.h3
-rw-r--r--linden/indra/llinventory/llparcel.h1
-rw-r--r--linden/indra/llmessage/message_prehash.cpp2
-rw-r--r--linden/indra/llmessage/message_prehash.h2
-rw-r--r--linden/indra/llmessage/patch_code.cpp11
-rw-r--r--linden/indra/llmessage/patch_code.h2
-rw-r--r--linden/indra/llmessage/patch_dct.h2
-rw-r--r--linden/indra/llplugin/CMakeLists.txt1
-rwxr-xr-xlinden/indra/llplugin/llpluginclassmedia.cpp7
-rwxr-xr-xlinden/indra/llplugin/llpluginclassmediaowner.h2
-rw-r--r--linden/indra/llplugin/llplugincookiestore.cpp2
-rwxr-xr-xlinden/indra/llplugin/llplugininstance.cpp2
-rwxr-xr-xlinden/indra/llplugin/llpluginmessage.cpp2
-rwxr-xr-xlinden/indra/llplugin/llpluginmessagepipe.cpp2
-rwxr-xr-xlinden/indra/llplugin/llpluginprocesschild.cpp2
-rwxr-xr-xlinden/indra/llplugin/llpluginprocessparent.cpp2
-rwxr-xr-xlinden/indra/llplugin/llpluginsharedmemory.cpp3
-rwxr-xr-xlinden/indra/llplugin/slplugin/slplugin.cpp40
-rw-r--r--linden/indra/llui/lllineeditor.cpp5
-rw-r--r--linden/indra/llui/lllineeditor.h1
-rw-r--r--linden/indra/llui/llscrollbar.cpp5
-rw-r--r--linden/indra/llui/llscrollbar.h1
-rw-r--r--linden/indra/llui/llscrollcontainer.cpp17
-rw-r--r--linden/indra/llui/llscrollcontainer.h1
-rw-r--r--linden/indra/llui/llview.cpp41
-rw-r--r--linden/indra/llui/llview.h2
-rw-r--r--linden/indra/llvfs/lldir_win32.cpp2
-rw-r--r--linden/indra/llwindow/llmousehandler.cpp6
-rw-r--r--linden/indra/llwindow/llmousehandler.h1
-rw-r--r--linden/indra/llwindow/llwindow.cpp4
-rw-r--r--linden/indra/llwindow/llwindow.h1
-rw-r--r--linden/indra/llwindow/llwindowmacosx.cpp31
-rw-r--r--linden/indra/llwindow/llwindowsdl.cpp5
-rw-r--r--linden/indra/llwindow/llwindowwin32.cpp16
-rw-r--r--linden/indra/lscript/lscript_library/lscript_library.cpp1
-rwxr-xr-xlinden/indra/media_plugins/gstreamer010/media_plugin_gstreamer010.cpp110
-rw-r--r--linden/indra/newview/CMakeLists.txt2
-rw-r--r--linden/indra/newview/app_settings/default_grids.xml17
-rw-r--r--linden/indra/newview/app_settings/logcontrol.xml22
-rw-r--r--linden/indra/newview/app_settings/settings.xml52
-rw-r--r--linden/indra/newview/app_settings/viewerversion.xml2
-rw-r--r--linden/indra/newview/character/attentions.xml102
-rw-r--r--linden/indra/newview/character/attentionsN.xml102
-rw-r--r--linden/indra/newview/character/avatar_lad.xml22745
-rw-r--r--linden/indra/newview/character/avatar_skeleton.xml146
-rw-r--r--linden/indra/newview/character/genepool.xml14214
-rw-r--r--linden/indra/newview/floaterao.cpp12
-rw-r--r--linden/indra/newview/floaterao.h1
-rw-r--r--linden/indra/newview/hippolimits.cpp5
-rw-r--r--linden/indra/newview/hippolimits.h3
-rw-r--r--linden/indra/newview/kowopenregionsettings.cpp13
-rwxr-xr-xlinden/indra/newview/linux_tools/register_secondlifeprotocol.sh4
-rwxr-xr-xlinden/indra/newview/linux_tools/wrapper.sh2
-rw-r--r--linden/indra/newview/llagent.cpp6
-rw-r--r--linden/indra/newview/llagent.h1
-rw-r--r--linden/indra/newview/llappviewerwin32.cpp3
-rw-r--r--linden/indra/newview/llcloud.cpp2
-rw-r--r--linden/indra/newview/llface.h4
-rw-r--r--linden/indra/newview/llfloaterabout.cpp20
-rw-r--r--linden/indra/newview/llfloaterabout.h2
-rw-r--r--linden/indra/newview/llfloateranimpreview.cpp12
-rw-r--r--linden/indra/newview/llfloateranimpreview.h1
-rw-r--r--linden/indra/newview/llfloaterchat.cpp1
-rw-r--r--linden/indra/newview/llfloaterhtml.cpp253
-rw-r--r--linden/indra/newview/llfloaterhtml.h77
-rw-r--r--linden/indra/newview/llfloaterimagepreview.cpp16
-rw-r--r--linden/indra/newview/llfloaterimagepreview.h1
-rw-r--r--linden/indra/newview/llfloatermediabrowser.cpp5
-rw-r--r--linden/indra/newview/llfloaterpreference.cpp14
-rw-r--r--linden/indra/newview/llfloaterpreference.h3
-rw-r--r--linden/indra/newview/llfloaterregioninfo.cpp6747
-rw-r--r--linden/indra/newview/llfloatertools.cpp5
-rw-r--r--linden/indra/newview/llfloatertos.cpp611
-rw-r--r--linden/indra/newview/llglsandbox.cpp2
-rw-r--r--linden/indra/newview/llmaniptranslate.cpp2
-rw-r--r--linden/indra/newview/llmapresponders.cpp4
-rw-r--r--linden/indra/newview/llmediactrl.cpp8
-rw-r--r--linden/indra/newview/llmediaremotectrl.cpp16
-rw-r--r--linden/indra/newview/lloverlaybar.cpp21
-rw-r--r--linden/indra/newview/lloverlaybar.h4
-rw-r--r--linden/indra/newview/llpanellogin.cpp13
-rw-r--r--linden/indra/newview/llprefsim.cpp166
-rw-r--r--linden/indra/newview/llprefsim.h1
-rw-r--r--linden/indra/newview/llstartup.cpp19
-rw-r--r--linden/indra/newview/llsurface.cpp20
-rw-r--r--linden/indra/newview/lltexturecache.cpp4
-rw-r--r--linden/indra/newview/lltexturefetch.cpp15
-rw-r--r--linden/indra/newview/lltool.cpp7
-rw-r--r--linden/indra/newview/lltool.h1
-rw-r--r--linden/indra/newview/lltoolmgr.cpp21
-rw-r--r--linden/indra/newview/llviewercontrol.cpp3
-rw-r--r--linden/indra/newview/llviewerimage.cpp144
-rw-r--r--linden/indra/newview/llviewerimage.h26
-rw-r--r--linden/indra/newview/llviewerjointmesh_sse2.cpp2
-rw-r--r--linden/indra/newview/llviewermenu.cpp17
-rwxr-xr-xlinden/indra/newview/llviewermessage.cpp27
-rw-r--r--linden/indra/newview/llviewerparcelmedia.cpp397
-rw-r--r--linden/indra/newview/llviewerparcelmedia.h24
-rw-r--r--linden/indra/newview/llviewerparcelmgr.cpp33
-rw-r--r--linden/indra/newview/llviewerparcelmgr.h2
-rw-r--r--linden/indra/newview/llviewerparceloverlay.cpp4
-rw-r--r--linden/indra/newview/llviewerparceloverlay.h1
-rw-r--r--linden/indra/newview/llviewerregion.cpp3
-rw-r--r--linden/indra/newview/llviewerwindow.cpp70
-rw-r--r--linden/indra/newview/llviewerwindow.h5
-rw-r--r--linden/indra/newview/llvlmanager.cpp17
-rw-r--r--linden/indra/newview/llvoavatar.cpp63
-rw-r--r--linden/indra/newview/llvoiceclient.cpp45
-rw-r--r--linden/indra/newview/llvoiceclient.h3
-rw-r--r--linden/indra/newview/llvovolume.cpp62
-rw-r--r--linden/indra/newview/llvovolume.h6
-rw-r--r--linden/indra/newview/llvowater.cpp2
-rw-r--r--linden/indra/newview/llwind.cpp4
-rw-r--r--linden/indra/newview/llworld.cpp27
-rw-r--r--linden/indra/newview/llworld.h6
-rw-r--r--linden/indra/newview/llworldmap.cpp23
-rw-r--r--linden/indra/newview/llworldmap.h2
-rw-r--r--linden/indra/newview/llworldmapview.cpp14
-rw-r--r--linden/indra/newview/pipeline.cpp3
-rw-r--r--linden/indra/newview/skins/default/html/en-us/loading-error/index.html54
-rw-r--r--linden/indra/newview/skins/default/xui/de/floater_pay_object.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/de/panel_status_bar.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/floater_about.xml99
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/floater_media_filter.xml61
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/menu_login.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml17
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/notifications.xml50
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_preferences_im.xml3
-rw-r--r--linden/indra/newview/slfloatermediafilter.cpp350
-rw-r--r--linden/indra/newview/slfloatermediafilter.h70
-rwxr-xr-xlinden/indra/newview/viewer_manifest.py172
-rw-r--r--linden/indra/newview/viewertime.cpp16
142 files changed, 25082 insertions, 23060 deletions
diff --git a/linden/indra/cmake/CMakeLists.txt b/linden/indra/cmake/CMakeLists.txt
index e69de29..4a7d633 100644
--- a/linden/indra/cmake/CMakeLists.txt
+++ b/linden/indra/cmake/CMakeLists.txt
@@ -0,0 +1,119 @@
1# -*- cmake -*-
2
3include(00-Common)
4
5project(cmake)
6
7set(cmake_SOURCE_FILES
8 CMakeLists.txt
9
10 00-Common.cmake
11 APR.cmake
12 Audio.cmake
13 BerkeleyDB.cmake
14 Boost.cmake
15 BuildVersion.cmake
16 CARes.cmake
17 CMakeCopyIfDifferent.cmake
18 CopyBackToSource.cmake
19 CopyWinLibs.cmake
20 CSharpMacros.cmake
21 CURL.cmake
22 DBusGlib.cmake
23 DirectX.cmake
24 ELFIO.cmake
25 ExamplePlugin.cmake
26 EXPAT.cmake
27 FindAPR.cmake
28 FindBerkeleyDB.cmake
29 FindCARes.cmake
30 FindELFIO.cmake
31 FindGooglePerfTools.cmake
32 FindHunSpell.cmake
33 FindJsonCpp.cmake
34 FindLLQtWebkit.cmake
35 FindMono.cmake
36 FindMT.cmake
37 FindMySQL.cmake
38 FindNDOF.cmake
39 FindOpenJPEG.cmake
40 FindSCP.cmake
41 FindTut.cmake
42 FindXmlRpcEpi.cmake
43 FindZLIB.cmake
44 FMOD.cmake
45 FreeType.cmake
46 Glui.cmake
47 Glut.cmake
48 GooglePerfTools.cmake
49 GStreamer010Plugin.cmake
50 HUNSPELL.cmake
51 JPEG.cmake
52 JsonCpp.cmake
53 Linking.cmake
54 LLAddBuildTest.cmake
55 LLAudio.cmake
56 LLCharacter.cmake
57 LLCommon.cmake
58 LLCrashLogger.cmake
59 LLDatabase.cmake
60 LLImage.cmake
61 LLImageJ2COJ.cmake
62 LLInventory.cmake
63 LLMath.cmake
64 LLMessage.cmake
65 LLPlugin.cmake
66 LLPrimitive.cmake
67 LLRender.cmake
68 LLScene.cmake
69 LLUI.cmake
70 LLVFS.cmake
71 LLWindow.cmake
72 LLXML.cmake
73 LScript.cmake
74 MediaPluginBase.cmake
75 MonoDeps.cmake
76 MonoEmbed.cmake
77 Mozlib.cmake
78 MySQL.cmake
79 NDOF.cmake
80 OPENAL.cmake
81 OpenGL.cmake
82 OpenJPEG.cmake
83 OpenSSL.cmake
84 PluginAPI.cmake
85 PNG.cmake
86 Prebuilt.cmake
87 PulseAudio.cmake
88 Python.cmake
89 QuickTimePlugin.cmake
90 RunBuildTest.cmake
91 TemplateCheck.cmake
92 Tut.cmake
93 UI.cmake
94 UnixInstall.cmake
95 Variables.cmake
96 ViewerArtwork.cmake
97 ViewerMiscLibs.cmake
98 WebKitLibPlugin.cmake
99 XmlRpcEpi.cmake
100 ZLIB.cmake
101 )
102
103source_group("Shared Rules" FILES ${cmake_SOURCE_FILES})
104
105set(master_SOURCE_FILES
106 ../CMakeLists.txt
107 ../develop.py
108 )
109
110source_group("Master Rules" FILES ${master_SOURCE_FILES})
111
112set_source_files_properties(${cmake_SOURCE_FILES} ${master_SOURCE_FILES}
113 PROPERTIES HEADER_FILE_ONLY TRUE)
114
115add_library(cmake
116 cmake_dummy.cpp
117 ${cmake_SOURCE_FILES}
118 ${master_SOURCE_FILES}
119 )
diff --git a/linden/indra/cmake/CopyWinLibs.cmake b/linden/indra/cmake/CopyWinLibs.cmake
index b4becf7..e7f1aa3 100644
--- a/linden/indra/cmake/CopyWinLibs.cmake
+++ b/linden/indra/cmake/CopyWinLibs.cmake
@@ -32,6 +32,67 @@ set(debug_files
32 libapr-1.dll 32 libapr-1.dll
33 libaprutil-1.dll 33 libaprutil-1.dll
34 libapriconv-1.dll 34 libapriconv-1.dll
35
36 # gstreamer streaming files below
37 avcodec-gpl-52.dll
38 avdevice-gpl-52.dll
39 avfilter-gpl-1.dll
40 avformat-gpl-52.dll
41 avutil-gpl-50.dll
42 iconv.dll
43 liba52-0.dll
44 libbz2.dll
45 libcelt-0.dll
46 libdca-0.dll
47 libexpat-1.dll
48 libfaad-2.dll
49 libFLAC-8.dll
50 libgcrypt-11.dll
51 libgio-2.0-0.dll
52 libglib-2.0-0.dll
53 libgmodule-2.0-0.dll
54 libgnutls-26.dll
55 libgobject-2.0-0.dll
56 libgpg-error-0.dll
57 libgstapp-0.10.dll
58 libgstaudio-0.10.dll
59 libgstbase-0.10.dll
60 libgstcontroller-0.10.dll
61 libgstdataprotocol-0.10.dll
62 libgstfft-0.10.dll
63 libgstinterfaces-0.10.dll
64 libgstnet-0.10.dll
65 libgstnetbuffer-0.10.dll
66 libgstpbutils-0.10.dll
67 libgstphotography-0.10.dll
68 libgstreamer-0.10.dll
69 libgstriff-0.10.dll
70 libgstrtp-0.10.dll
71 libgstrtsp-0.10.dll
72 libgstsdp-0.10.dll
73 libgstsignalprocessor-0.10.dll
74 libgsttag-0.10.dll
75 libgstvideo-0.10.dll
76 libgthread-2.0-0.dll
77 libmms-0.dll
78 libmpeg2-0.dll
79 libneon-27.dll
80 libogg-0.dll
81 liboil-0.3-0.dll
82 libsoup-2.4-1.dll
83 libtasn1-3.dll
84 libtheora-0.dll
85 libtheoradec-1.dll
86 libvorbis-0.dll
87 libvorbisenc-2.dll
88 libvorbisfile-3.dll
89 libwavpack-1.dll
90 libx264-67.dll
91 libxml2-2.dll
92 libxml2.dll
93 SDL.dll
94 xvidcore.dll
95 z.dll
35 ) 96 )
36 97
37copy_if_different( 98copy_if_different(
@@ -215,6 +276,67 @@ set(release_files
215 libapr-1.dll 276 libapr-1.dll
216 libaprutil-1.dll 277 libaprutil-1.dll
217 libapriconv-1.dll 278 libapriconv-1.dll
279
280 # gstreamer streaming files below
281 avcodec-gpl-52.dll
282 avdevice-gpl-52.dll
283 avfilter-gpl-1.dll
284 avformat-gpl-52.dll
285 avutil-gpl-50.dll
286 iconv.dll
287 liba52-0.dll
288 libbz2.dll
289 libcelt-0.dll
290 libdca-0.dll
291 libexpat-1.dll
292 libfaad-2.dll
293 libFLAC-8.dll
294 libgcrypt-11.dll
295 libgio-2.0-0.dll
296 libglib-2.0-0.dll
297 libgmodule-2.0-0.dll
298 libgnutls-26.dll
299 libgobject-2.0-0.dll
300 libgpg-error-0.dll
301 libgstapp-0.10.dll
302 libgstaudio-0.10.dll
303 libgstbase-0.10.dll
304 libgstcontroller-0.10.dll
305 libgstdataprotocol-0.10.dll
306 libgstfft-0.10.dll
307 libgstinterfaces-0.10.dll
308 libgstnet-0.10.dll
309 libgstnetbuffer-0.10.dll
310 libgstpbutils-0.10.dll
311 libgstphotography-0.10.dll
312 libgstreamer-0.10.dll
313 libgstriff-0.10.dll
314 libgstrtp-0.10.dll
315 libgstrtsp-0.10.dll
316 libgstsdp-0.10.dll
317 libgstsignalprocessor-0.10.dll
318 libgsttag-0.10.dll
319 libgstvideo-0.10.dll
320 libgthread-2.0-0.dll
321 libmms-0.dll
322 libmpeg2-0.dll
323 libneon-27.dll
324 libogg-0.dll
325 liboil-0.3-0.dll
326 libsoup-2.4-1.dll
327 libtasn1-3.dll
328 libtheora-0.dll
329 libtheoradec-1.dll
330 libvorbis-0.dll
331 libvorbisenc-2.dll
332 libvorbisfile-3.dll
333 libwavpack-1.dll
334 libx264-67.dll
335 libxml2-2.dll
336 libxml2.dll
337 SDL.dll
338 xvidcore.dll
339 z.dll
218 ) 340 )
219 341
220copy_if_different( 342copy_if_different(
diff --git a/linden/indra/cmake/GStreamer010Plugin.cmake b/linden/indra/cmake/GStreamer010Plugin.cmake
index ec9b828..9d2c553 100644
--- a/linden/indra/cmake/GStreamer010Plugin.cmake
+++ b/linden/indra/cmake/GStreamer010Plugin.cmake
@@ -10,9 +10,8 @@ if (STANDALONE)
10else (STANDALONE) 10else (STANDALONE)
11 11
12 # Possibly libxml and glib should have their own .cmake file instead... 12 # Possibly libxml and glib should have their own .cmake file instead...
13 use_prebuilt_binary(glib) # gstreamer needs glib 13 use_prebuilt_binary(gstreamer) # includes glib, libxml, and iconv on Windows
14 use_prebuilt_binary(libxml) 14 use_prebuilt_binary(gstreamer-plugins)
15 use_prebuilt_binary(gstreamer)
16 set(GSTREAMER010_FOUND ON FORCE BOOL) 15 set(GSTREAMER010_FOUND ON FORCE BOOL)
17 set(GSTREAMER010_PLUGINS_BASE_FOUND ON FORCE BOOL) 16 set(GSTREAMER010_PLUGINS_BASE_FOUND ON FORCE BOOL)
18 if (WINDOWS) 17 if (WINDOWS)
@@ -22,6 +21,8 @@ else (STANDALONE)
22 ${LIBS_PREBUILT_DIR}/include/libxml2 21 ${LIBS_PREBUILT_DIR}/include/libxml2
23 ) 22 )
24 else (WINDOWS) 23 else (WINDOWS)
24 use_prebuilt_binary(glib) # gstreamer needs glib
25 use_prebuilt_binary(libxml)
25 set(GSTREAMER010_INCLUDE_DIRS 26 set(GSTREAMER010_INCLUDE_DIRS
26 ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include/gstreamer-0.10 27 ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include/gstreamer-0.10
27 ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include/glib-2.0 28 ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include/glib-2.0
@@ -38,7 +39,8 @@ if (WINDOWS)
38 gstaudio-0.10.lib 39 gstaudio-0.10.lib
39 gstbase-0.10.lib 40 gstbase-0.10.lib
40 gstreamer-0.10.lib 41 gstreamer-0.10.lib
41 gstvideo-0.10.lib 42 gstvideo-0.10.lib #slvideoplugin
43 gstinterfaces-0.10.lib
42 gobject-2.0 44 gobject-2.0
43 gmodule-2.0 45 gmodule-2.0
44 gthread-2.0 46 gthread-2.0
diff --git a/linden/indra/cmake/QuickTimePlugin.cmake b/linden/indra/cmake/QuickTimePlugin.cmake
index 8afd8f3..1693d0f 100644
--- a/linden/indra/cmake/QuickTimePlugin.cmake
+++ b/linden/indra/cmake/QuickTimePlugin.cmake
@@ -42,5 +42,7 @@ mark_as_advanced(QUICKTIME_LIBRARY)
42 42
43if (QUICKTIME_LIBRARY) 43if (QUICKTIME_LIBRARY)
44 set(QUICKTIME ON CACHE BOOL "Build with QuickTime streaming media support.") 44 set(QUICKTIME ON CACHE BOOL "Build with QuickTime streaming media support.")
45else (QUICKTIME_LIBRARY)
46 message(STATUS "CMake cannot find the Quicktime SDK. Building without Quicktime support!")
45endif (QUICKTIME_LIBRARY) 47endif (QUICKTIME_LIBRARY)
46 48
diff --git a/linden/indra/cmake/cmake_dummy.cpp b/linden/indra/cmake/cmake_dummy.cpp
new file mode 100644
index 0000000..25191e2
--- /dev/null
+++ b/linden/indra/cmake/cmake_dummy.cpp
@@ -0,0 +1,30 @@
1/**
2 * @file cmake_dummy.cpp
3 *
4 * $LicenseInfo:firstyear=2008&license=viewergpl$
5 *
6 * Copyright (c) 2008-2009, Linden Research, Inc.
7 *
8 * Second Life Viewer Source Code
9 * The source code in this file ("Source Code") is provided by Linden Lab
10 * to you under the terms of the GNU General Public License, version 2.0
11 * ("GPL"), unless you have obtained a separate licensing agreement
12 * ("Other License"), formally executed by you and Linden Lab. Terms of
13 * the GPL can be found in doc/GPL-license.txt in this distribution, or
14 * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
15 *
16 * There are special exceptions to the terms and conditions of the GPL as
17 * it is applied to this Source Code. View the full text of the exception
18 * in the file doc/FLOSS-exception.txt in this software distribution, or
19 * online at
20 * http://secondlifegrid.net/programs/open_source/licensing/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.
29 * $/LicenseInfo$
30 */
diff --git a/linden/indra/llcommon/indra_constants.h b/linden/indra/llcommon/indra_constants.h
index e64ee62..84ec455 100644
--- a/linden/indra/llcommon/indra_constants.h
+++ b/linden/indra/llcommon/indra_constants.h
@@ -154,6 +154,11 @@ const char WATER_LAYER_CODE = 'W';
154const char WIND_LAYER_CODE = '7'; 154const char WIND_LAYER_CODE = '7';
155const char CLOUD_LAYER_CODE = '8'; 155const char CLOUD_LAYER_CODE = '8';
156 156
157// Extended land layer for Aurora Sim
158const char AURORA_LAND_LAYER_CODE = 'M';
159const char AURORA_WIND_LAYER_CODE = '9';
160const char AURORA_CLOUD_LAYER_CODE = ':';
161
157// keys 162// keys
158// Bit masks for various keyboard modifier keys. 163// Bit masks for various keyboard modifier keys.
159const MASK MASK_NONE = 0x0000; 164const MASK MASK_NONE = 0x0000;
diff --git a/linden/indra/llcommon/llerror.cpp b/linden/indra/llcommon/llerror.cpp
index a9587c6..aeba629 100644
--- a/linden/indra/llcommon/llerror.cpp
+++ b/linden/indra/llcommon/llerror.cpp
@@ -168,6 +168,9 @@ namespace {
168 } 168 }
169 } 169 }
170 fprintf(stderr, "%s\n", message.c_str()); 170 fprintf(stderr, "%s\n", message.c_str());
171#if LL_WINDOWS
172 fflush(stderr); //Now using a buffer. flush is required.
173#endif
171 if (ANSI_YES == mUseANSI) colorANSI("0"); // reset 174 if (ANSI_YES == mUseANSI) colorANSI("0"); // reset
172 } 175 }
173 176
@@ -563,7 +566,7 @@ namespace
563#if LL_WINDOWS 566#if LL_WINDOWS
564 LLError::addRecorder(new RecordToWinDebug); 567 LLError::addRecorder(new RecordToWinDebug);
565#endif 568#endif
566 569 llwarns << "Load LogControlFile from Directory:"<< dir << llendl;
567 LogControlFile& e = LogControlFile::fromDirectory(dir); 570 LogControlFile& e = LogControlFile::fromDirectory(dir);
568 571
569 // NOTE: We want to explicitly load the file before we add it to the event timer 572 // NOTE: We want to explicitly load the file before we add it to the event timer
diff --git a/linden/indra/llcommon/lltimer.cpp b/linden/indra/llcommon/lltimer.cpp
index 2d283ec..b825c1e 100644
--- a/linden/indra/llcommon/lltimer.cpp
+++ b/linden/indra/llcommon/lltimer.cpp
@@ -529,14 +529,14 @@ struct tm* utc_to_offset_time(time_t utc_time, S32 offset, BOOL DST)
529{ 529{
530 if (DST) 530 if (DST)
531 { 531 {
532 //Subtract one then 532 //Add one then
533 offset--; 533 offset++;
534 } 534 }
535 535
536 // We subtract off the PST/PDT offset _before_ getting 536 // We subtract off the PST/PDT offset _before_ getting
537 // "UTC" time, because this will handle wrapping around 537 // "UTC" time, because this will handle wrapping around
538 // for 5 AM UTC -> 10 PM PDT of the previous day. 538 // for 5 AM UTC -> 10 PM PDT of the previous day.
539 utc_time -= offset * MIN_PER_HOUR * SEC_PER_MIN; 539 utc_time -= (-1 * offset) * MIN_PER_HOUR * SEC_PER_MIN;
540 540
541 // Internal buffer to PST/PDT (see above) 541 // Internal buffer to PST/PDT (see above)
542 struct tm* internal_time = gmtime(&utc_time); 542 struct tm* internal_time = gmtime(&utc_time);
diff --git a/linden/indra/llimage/llimage.cpp b/linden/indra/llimage/llimage.cpp
index e933750..3a8dc3b 100644
--- a/linden/indra/llimage/llimage.cpp
+++ b/linden/indra/llimage/llimage.cpp
@@ -269,7 +269,7 @@ LLImageRaw::LLImageRaw(U8 *data, U16 width, U16 height, S8 components)
269 : LLImageBase() 269 : LLImageBase()
270{ 270{
271 mMemType = LLMemType::MTYPE_IMAGERAW; 271 mMemType = LLMemType::MTYPE_IMAGERAW;
272 if(allocateDataSize(width, height, components)) 272 if(allocateDataSize(width, height, components) && data)
273 { 273 {
274 memcpy(getData(), data, width*height*components); 274 memcpy(getData(), data, width*height*components);
275 } 275 }
diff --git a/linden/indra/llimage/llpngwrapper.cpp b/linden/indra/llimage/llpngwrapper.cpp
index 0dd991a..2274a38 100644
--- a/linden/indra/llimage/llpngwrapper.cpp
+++ b/linden/indra/llimage/llpngwrapper.cpp
@@ -56,8 +56,6 @@ LLPngWrapper::LLPngWrapper()
56 mCompressionType( 0 ), 56 mCompressionType( 0 ),
57 mFilterMethod( 0 ), 57 mFilterMethod( 0 ),
58 mFinalSize( 0 ), 58 mFinalSize( 0 ),
59 mHasBKGD(false),
60 mBackgroundColor(),
61 mGamma(0.f) 59 mGamma(0.f)
62{ 60{
63} 61}
@@ -117,9 +115,9 @@ void LLPngWrapper::writeFlush(png_structp png_ptr)
117} 115}
118 116
119// Read the PNG file using the libpng. The low-level interface is used here 117// Read the PNG file using the libpng. The low-level interface is used here
120// because we want to do various transformations (including setting the 118// because we want to do various transformations (including applying gama)
121// matte background if any, and applying gama) which can't be done with 119// which can't be done with the high-level interface.
122// the high-level interface. The scanline also begins at the bottom of 120// The scanline also begins at the bottom of
123// the image (per SecondLife conventions) instead of at the top, so we 121// the image (per SecondLife conventions) instead of at the top, so we
124// must assign row-pointers in "reverse" order. 122// must assign row-pointers in "reverse" order.
125BOOL LLPngWrapper::readPng(U8* src, LLImageRaw* rawImage, ImageInfo *infop) 123BOOL LLPngWrapper::readPng(U8* src, LLImageRaw* rawImage, ImageInfo *infop)
@@ -207,8 +205,7 @@ void LLPngWrapper::normalizeImage()
207 // 2. Convert grayscales to RGB 205 // 2. Convert grayscales to RGB
208 // 3. Create alpha layer from transparency 206 // 3. Create alpha layer from transparency
209 // 4. Ensure 8-bpp for all images 207 // 4. Ensure 8-bpp for all images
210 // 5. Apply background matte if any 208 // 5. Set (or guess) gamma
211 // 6. Set (or guess) gamma
212 209
213 if (mColorType == PNG_COLOR_TYPE_PALETTE) 210 if (mColorType == PNG_COLOR_TYPE_PALETTE)
214 { 211 {
@@ -235,12 +232,6 @@ void LLPngWrapper::normalizeImage()
235 { 232 {
236 png_set_strip_16(mReadPngPtr); 233 png_set_strip_16(mReadPngPtr);
237 } 234 }
238 mHasBKGD = png_get_bKGD(mReadPngPtr, mReadInfoPtr, &mBackgroundColor);
239 if (mHasBKGD)
240 {
241 png_set_background(mReadPngPtr, mBackgroundColor,
242 PNG_BACKGROUND_GAMMA_FILE, 1, 1.0);
243 }
244 235
245#if LL_DARWIN 236#if LL_DARWIN
246 const F64 SCREEN_GAMMA = 1.8; 237 const F64 SCREEN_GAMMA = 1.8;
@@ -267,7 +258,6 @@ void LLPngWrapper::updateMetaData()
267 mBitDepth = png_get_bit_depth(mReadPngPtr, mReadInfoPtr); 258 mBitDepth = png_get_bit_depth(mReadPngPtr, mReadInfoPtr);
268 mColorType = png_get_color_type(mReadPngPtr, mReadInfoPtr); 259 mColorType = png_get_color_type(mReadPngPtr, mReadInfoPtr);
269 mChannels = png_get_channels(mReadPngPtr, mReadInfoPtr); 260 mChannels = png_get_channels(mReadPngPtr, mReadInfoPtr);
270 mHasBKGD = png_get_bKGD(mReadPngPtr, mReadInfoPtr, &mBackgroundColor);
271} 261}
272 262
273// Method to write raw image into PNG at dest. The raw scanline begins 263// Method to write raw image into PNG at dest. The raw scanline begins
diff --git a/linden/indra/llimage/llpngwrapper.h b/linden/indra/llimage/llpngwrapper.h
index 2e6c1dc..0c3168c 100644
--- a/linden/indra/llimage/llpngwrapper.h
+++ b/linden/indra/llimage/llpngwrapper.h
@@ -94,9 +94,6 @@ private:
94 94
95 U32 mFinalSize; 95 U32 mFinalSize;
96 96
97 bool mHasBKGD;
98 png_color_16p mBackgroundColor;
99
100 F64 mGamma; 97 F64 mGamma;
101 98
102 std::string mErrorMessage; 99 std::string mErrorMessage;
diff --git a/linden/indra/llinventory/llparcel.h b/linden/indra/llinventory/llparcel.h
index 0af9ab7..1a1205b 100644
--- a/linden/indra/llinventory/llparcel.h
+++ b/linden/indra/llinventory/llparcel.h
@@ -67,6 +67,7 @@ const F32 PARCEL_PASS_HOURS_DEFAULT = 1.f;
67 67
68// Number of "chunks" in which parcel overlay data is sent 68// Number of "chunks" in which parcel overlay data is sent
69// Chunk 0 = southern rows, entire width 69// Chunk 0 = southern rows, entire width
70// NOTE: NOT USABLE FOR VAR SIZED REGIONS!
70const S32 PARCEL_OVERLAY_CHUNKS = 4; 71const S32 PARCEL_OVERLAY_CHUNKS = 4;
71 72
72// Bottom three bits are a color index for the land overlay 73// Bottom three bits are a color index for the land overlay
diff --git a/linden/indra/llmessage/message_prehash.cpp b/linden/indra/llmessage/message_prehash.cpp
index ecb45bf..78b9d07 100644
--- a/linden/indra/llmessage/message_prehash.cpp
+++ b/linden/indra/llmessage/message_prehash.cpp
@@ -587,6 +587,8 @@ char* _PREHASH_LastName = LLMessageStringTable::getInstance()->getString("LastNa
587char* _PREHASH_From = LLMessageStringTable::getInstance()->getString("From"); 587char* _PREHASH_From = LLMessageStringTable::getInstance()->getString("From");
588char* _PREHASH_RoleChange = LLMessageStringTable::getInstance()->getString("RoleChange"); 588char* _PREHASH_RoleChange = LLMessageStringTable::getInstance()->getString("RoleChange");
589char* _PREHASH_Port = LLMessageStringTable::getInstance()->getString("Port"); 589char* _PREHASH_Port = LLMessageStringTable::getInstance()->getString("Port");
590char* _PREHASH_RegionSizeX = LLMessageStringTable::getInstance()->getString("RegionSizeX");
591char* _PREHASH_RegionSizeY = LLMessageStringTable::getInstance()->getString("RegionSizeY");
590char* _PREHASH_MemberTitle = LLMessageStringTable::getInstance()->getString("MemberTitle"); 592char* _PREHASH_MemberTitle = LLMessageStringTable::getInstance()->getString("MemberTitle");
591char* _PREHASH_LogParcelChanges = LLMessageStringTable::getInstance()->getString("LogParcelChanges"); 593char* _PREHASH_LogParcelChanges = LLMessageStringTable::getInstance()->getString("LogParcelChanges");
592char* _PREHASH_AgentCachedTextureResponse = LLMessageStringTable::getInstance()->getString("AgentCachedTextureResponse"); 594char* _PREHASH_AgentCachedTextureResponse = LLMessageStringTable::getInstance()->getString("AgentCachedTextureResponse");
diff --git a/linden/indra/llmessage/message_prehash.h b/linden/indra/llmessage/message_prehash.h
index 8516483..64544dd 100644
--- a/linden/indra/llmessage/message_prehash.h
+++ b/linden/indra/llmessage/message_prehash.h
@@ -587,6 +587,8 @@ extern char * _PREHASH_LastName;
587extern char * _PREHASH_From; 587extern char * _PREHASH_From;
588extern char * _PREHASH_RoleChange; 588extern char * _PREHASH_RoleChange;
589extern char * _PREHASH_Port; 589extern char * _PREHASH_Port;
590extern char * _PREHASH_RegionSizeX;
591extern char * _PREHASH_RegionSizeY;
590extern char * _PREHASH_MemberTitle; 592extern char * _PREHASH_MemberTitle;
591extern char * _PREHASH_LogParcelChanges; 593extern char * _PREHASH_LogParcelChanges;
592extern char * _PREHASH_AgentCachedTextureResponse; 594extern char * _PREHASH_AgentCachedTextureResponse;
diff --git a/linden/indra/llmessage/patch_code.cpp b/linden/indra/llmessage/patch_code.cpp
index 90fb236..0cf8d2e 100644
--- a/linden/indra/llmessage/patch_code.cpp
+++ b/linden/indra/llmessage/patch_code.cpp
@@ -235,7 +235,7 @@ void decode_patch_group_header(LLBitPack &bitpack, LLGroupHeader *gopp)
235 gPatchSize = gopp->patch_size; 235 gPatchSize = gopp->patch_size;
236} 236}
237 237
238void decode_patch_header(LLBitPack &bitpack, LLPatchHeader *ph) 238void decode_patch_header(LLBitPack &bitpack, LLPatchHeader *ph, BOOL b_large_patch)
239{ 239{
240 U8 retvalu8; 240 U8 retvalu8;
241 241
@@ -274,15 +274,18 @@ void decode_patch_header(LLBitPack &bitpack, LLPatchHeader *ph)
274#endif 274#endif
275 ph->range = retvalu16; 275 ph->range = retvalu16;
276 276
277 retvalu16 = 0; 277 retvalu32 = 0;
278#ifdef LL_BIG_ENDIAN 278#ifdef LL_BIG_ENDIAN
279 ret = (U8 *)&retvalu16; 279 ret = (U8 *)&retvalu16;
280 bitpack.bitUnpack(&(ret[1]), 8); 280 bitpack.bitUnpack(&(ret[1]), 8);
281 bitpack.bitUnpack(&(ret[0]), 2); 281 bitpack.bitUnpack(&(ret[0]), 2);
282#else 282#else
283 bitpack.bitUnpack((U8 *)&retvalu16, 10); 283 if (b_large_patch)
284 bitpack.bitUnpack((U8 *)&retvalu32, 32);
285 else
286 bitpack.bitUnpack((U8 *)&retvalu32, 10);
284#endif 287#endif
285 ph->patchids = retvalu16; 288 ph->patchids = retvalu32;
286 289
287 gWordBits = (ph->quant_wbits & 0xf) + 2; 290 gWordBits = (ph->quant_wbits & 0xf) + 2;
288} 291}
diff --git a/linden/indra/llmessage/patch_code.h b/linden/indra/llmessage/patch_code.h
index 82fa6bb..dbfdf70 100644
--- a/linden/indra/llmessage/patch_code.h
+++ b/linden/indra/llmessage/patch_code.h
@@ -46,7 +46,7 @@ void end_patch_coding(LLBitPack &bitpack);
46 46
47void init_patch_decoding(LLBitPack &bitpack); 47void init_patch_decoding(LLBitPack &bitpack);
48void decode_patch_group_header(LLBitPack &bitpack, LLGroupHeader *gopp); 48void decode_patch_group_header(LLBitPack &bitpack, LLGroupHeader *gopp);
49void decode_patch_header(LLBitPack &bitpack, LLPatchHeader *ph); 49void decode_patch_header(LLBitPack &bitpack, LLPatchHeader *ph, BOOL b_large_patch);
50void decode_patch(LLBitPack &bitpack, S32 *patches); 50void decode_patch(LLBitPack &bitpack, S32 *patches);
51 51
52#endif 52#endif
diff --git a/linden/indra/llmessage/patch_dct.h b/linden/indra/llmessage/patch_dct.h
index 663e146..ba21be7 100644
--- a/linden/indra/llmessage/patch_dct.h
+++ b/linden/indra/llmessage/patch_dct.h
@@ -79,7 +79,7 @@ public:
79 F32 dc_offset; // 4 bytes 79 F32 dc_offset; // 4 bytes
80 U16 range; // 2 = 7 ((S16) FP range (breaks if we need > 32K meters in 1 patch) 80 U16 range; // 2 = 7 ((S16) FP range (breaks if we need > 32K meters in 1 patch)
81 U8 quant_wbits; // 1 = 8 (upper 4 bits is quant - 2, lower 4 bits is word bits - 2) 81 U8 quant_wbits; // 1 = 8 (upper 4 bits is quant - 2, lower 4 bits is word bits - 2)
82 U16 patchids; // 2 = 10 (actually only uses 10 bits, 5 for each) 82 U32 patchids; // 2 = 10 (actually only uses 10 bits, 5 for each)
83}; 83};
84 84
85// Compression routines 85// Compression routines
diff --git a/linden/indra/llplugin/CMakeLists.txt b/linden/indra/llplugin/CMakeLists.txt
index 7a7f4e5..5dbe07c 100644
--- a/linden/indra/llplugin/CMakeLists.txt
+++ b/linden/indra/llplugin/CMakeLists.txt
@@ -20,7 +20,6 @@ include_directories(
20 ${LLRENDER_INCLUDE_DIRS} 20 ${LLRENDER_INCLUDE_DIRS}
21 ${LLXML_INCLUDE_DIRS} 21 ${LLXML_INCLUDE_DIRS}
22 ${LLWINDOW_INCLUDE_DIRS} 22 ${LLWINDOW_INCLUDE_DIRS}
23 ${LLQTWEBKIT_INCLUDE_DIR}
24 ) 23 )
25 24
26set(llplugin_SOURCE_FILES 25set(llplugin_SOURCE_FILES
diff --git a/linden/indra/llplugin/llpluginclassmedia.cpp b/linden/indra/llplugin/llpluginclassmedia.cpp
index 5a81c46..f0a44f7 100755
--- a/linden/indra/llplugin/llpluginclassmedia.cpp
+++ b/linden/indra/llplugin/llpluginclassmedia.cpp
@@ -33,14 +33,14 @@
33 * @endcond 33 * @endcond
34 */ 34 */
35 35
36/// IMPRUDENCE: this is part of the viewer
37
36#include "linden_common.h" 38#include "linden_common.h"
37#include "indra_constants.h" 39#include "indra_constants.h"
38 40
39#include "llpluginclassmedia.h" 41#include "llpluginclassmedia.h"
40#include "llpluginmessageclasses.h" 42#include "llpluginmessageclasses.h"
41 43
42#include "llqtwebkit.h"
43
44static int LOW_PRIORITY_TEXTURE_SIZE_DEFAULT = 256; 44static int LOW_PRIORITY_TEXTURE_SIZE_DEFAULT = 256;
45 45
46static int nextPowerOf2( int value ) 46static int nextPowerOf2( int value )
@@ -777,7 +777,7 @@ void LLPluginClassMedia::receivePluginMessage(const LLPluginMessage &message)
777 mDirtyRect.unionWith(newDirtyRect); 777 mDirtyRect.unionWith(newDirtyRect);
778 } 778 }
779 779
780 LL_DEBUGS("PluginClassMedia") << "adjusted incoming rect is: (" 780 LL_DEBUGS("PluginClassMediaRect") << "adjusted incoming rect is: ("
781 << newDirtyRect.mLeft << ", " 781 << newDirtyRect.mLeft << ", "
782 << newDirtyRect.mTop << ", " 782 << newDirtyRect.mTop << ", "
783 << newDirtyRect.mRight << ", " 783 << newDirtyRect.mRight << ", "
@@ -973,6 +973,7 @@ void LLPluginClassMedia::receivePluginMessage(const LLPluginMessage &message)
973 { 973 {
974 mClickURL = message.getValue("uri"); 974 mClickURL = message.getValue("uri");
975 mClickTarget = message.getValue("target"); 975 mClickTarget = message.getValue("target");
976 LL_DEBUGS("PluginClassMedia") << "Click target \"" << mClickTarget << "\"" << LL_ENDL;
976 mediaEvent(LLPluginClassMediaOwner::MEDIA_EVENT_CLICK_LINK_HREF); 977 mediaEvent(LLPluginClassMediaOwner::MEDIA_EVENT_CLICK_LINK_HREF);
977 } 978 }
978 else if(message_name == "click_nofollow") 979 else if(message_name == "click_nofollow")
diff --git a/linden/indra/llplugin/llpluginclassmediaowner.h b/linden/indra/llplugin/llpluginclassmediaowner.h
index 9d1f352..0e54f7f 100755
--- a/linden/indra/llplugin/llpluginclassmediaowner.h
+++ b/linden/indra/llplugin/llpluginclassmediaowner.h
@@ -41,7 +41,7 @@
41#include <queue> 41#include <queue>
42 42
43class LLPluginClassMedia; 43class LLPluginClassMedia;
44class LLPluginCookieStore; 44//class LLPluginCookieStore; // IMPRUDENCE: this is currently not used
45 45
46class LLPluginClassMediaOwner 46class LLPluginClassMediaOwner
47{ 47{
diff --git a/linden/indra/llplugin/llplugincookiestore.cpp b/linden/indra/llplugin/llplugincookiestore.cpp
index 283ba35..6b193de 100644
--- a/linden/indra/llplugin/llplugincookiestore.cpp
+++ b/linden/indra/llplugin/llplugincookiestore.cpp
@@ -33,6 +33,8 @@
33 * @endcond 33 * @endcond
34 */ 34 */
35 35
36/// IMPRUDENCE: this is currently not used
37
36#include "linden_common.h" 38#include "linden_common.h"
37#include "indra_constants.h" 39#include "indra_constants.h"
38 40
diff --git a/linden/indra/llplugin/llplugininstance.cpp b/linden/indra/llplugin/llplugininstance.cpp
index 67457f2..399f157 100755
--- a/linden/indra/llplugin/llplugininstance.cpp
+++ b/linden/indra/llplugin/llplugininstance.cpp
@@ -33,6 +33,8 @@
33 * @endcond 33 * @endcond
34 */ 34 */
35 35
36/// IMPRUDENCE: this is part of the SLPlugin
37
36#include "linden_common.h" 38#include "linden_common.h"
37 39
38#include "llplugininstance.h" 40#include "llplugininstance.h"
diff --git a/linden/indra/llplugin/llpluginmessage.cpp b/linden/indra/llplugin/llpluginmessage.cpp
index 6452f4a..0810a04 100755
--- a/linden/indra/llplugin/llpluginmessage.cpp
+++ b/linden/indra/llplugin/llpluginmessage.cpp
@@ -33,6 +33,8 @@
33 * @endcond 33 * @endcond
34 */ 34 */
35 35
36/// IMPRUDENCE: this is part of the viewer and the SLPlugin and the libmedia_plugin_* libraries
37
36#include "linden_common.h" 38#include "linden_common.h"
37 39
38#include "llpluginmessage.h" 40#include "llpluginmessage.h"
diff --git a/linden/indra/llplugin/llpluginmessagepipe.cpp b/linden/indra/llplugin/llpluginmessagepipe.cpp
index ac3a902..2cad188 100755
--- a/linden/indra/llplugin/llpluginmessagepipe.cpp
+++ b/linden/indra/llplugin/llpluginmessagepipe.cpp
@@ -33,6 +33,8 @@
33 * @endcond 33 * @endcond
34 */ 34 */
35 35
36/// IMPRUDENCE: this is part of the viewer and the SLPlugin
37
36#include "linden_common.h" 38#include "linden_common.h"
37 39
38#include "llpluginmessagepipe.h" 40#include "llpluginmessagepipe.h"
diff --git a/linden/indra/llplugin/llpluginprocesschild.cpp b/linden/indra/llplugin/llpluginprocesschild.cpp
index a1291c0..0d95cac 100755
--- a/linden/indra/llplugin/llpluginprocesschild.cpp
+++ b/linden/indra/llplugin/llpluginprocesschild.cpp
@@ -33,6 +33,8 @@
33 * @endcond 33 * @endcond
34 */ 34 */
35 35
36/// IMPRUDENCE: this is part of the SLPlugin
37
36#include "linden_common.h" 38#include "linden_common.h"
37 39
38#include "llpluginprocesschild.h" 40#include "llpluginprocesschild.h"
diff --git a/linden/indra/llplugin/llpluginprocessparent.cpp b/linden/indra/llplugin/llpluginprocessparent.cpp
index 5a66279..26572a0 100755
--- a/linden/indra/llplugin/llpluginprocessparent.cpp
+++ b/linden/indra/llplugin/llpluginprocessparent.cpp
@@ -33,6 +33,8 @@
33 * @endcond 33 * @endcond
34 */ 34 */
35 35
36/// IMPRUDENCE: this is part of the viewer
37
36#include "linden_common.h" 38#include "linden_common.h"
37 39
38#include "llpluginprocessparent.h" 40#include "llpluginprocessparent.h"
diff --git a/linden/indra/llplugin/llpluginsharedmemory.cpp b/linden/indra/llplugin/llpluginsharedmemory.cpp
index 6becb8d..882a2a1 100755
--- a/linden/indra/llplugin/llpluginsharedmemory.cpp
+++ b/linden/indra/llplugin/llpluginsharedmemory.cpp
@@ -33,6 +33,8 @@
33 * @endcond 33 * @endcond
34 */ 34 */
35 35
36/// IMPRUDENCE: this is part of the viewer and the SLPlugin
37
36#include "linden_common.h" 38#include "linden_common.h"
37 39
38#include "llpluginsharedmemory.h" 40#include "llpluginsharedmemory.h"
@@ -89,7 +91,6 @@
89#include <windows.h> 91#include <windows.h>
90#endif // USE_APR_SHARED_MEMORY 92#endif // USE_APR_SHARED_MEMORY
91 93
92
93int LLPluginSharedMemory::sSegmentNumber = 0; 94int LLPluginSharedMemory::sSegmentNumber = 0;
94 95
95std::string LLPluginSharedMemory::createName(void) 96std::string LLPluginSharedMemory::createName(void)
diff --git a/linden/indra/llplugin/slplugin/slplugin.cpp b/linden/indra/llplugin/slplugin/slplugin.cpp
index 878577b..4ef24a2 100755
--- a/linden/indra/llplugin/slplugin/slplugin.cpp
+++ b/linden/indra/llplugin/slplugin/slplugin.cpp
@@ -35,6 +35,7 @@
35 * @endcond 35 * @endcond
36 */ 36 */
37 37
38/// IMPRUDENCE: this is part of the SLPlugin
38 39
39#include "linden_common.h" 40#include "linden_common.h"
40 41
@@ -53,6 +54,20 @@
53 #include <signal.h> 54 #include <signal.h>
54#endif 55#endif
55 56
57//imprudence: or we include lldir, or use apache runtime
58//though the one is probably bloat and the other we rather want to avoid
59#include <stdio.h> // FILENAME_MAX
60#ifdef LL_WINDOWS
61 #include <direct.h>
62 #define getImpruDir _getcwd
63 #define DIR_DELIMITER "\\"
64#else
65 #include <unistd.h>
66 #define getImpruDir getcwd
67 #define DIR_DELIMITER "/"
68#endif
69
70
56/* 71/*
57 On Mac OS, since we call WaitNextEvent, this process will show up in the dock unless we set the LSBackgroundOnly or LSUIElement flag in the Info.plist. 72 On Mac OS, since we call WaitNextEvent, this process will show up in the dock unless we set the LSBackgroundOnly or LSUIElement flag in the Info.plist.
58 73
@@ -187,9 +202,28 @@ int main(int argc, char **argv)
187{ 202{
188 // Set up llerror logging 203 // Set up llerror logging
189 { 204 {
190 LLError::initForApplication("."); 205 std::string path;
191 LLError::setDefaultLevel(LLError::LEVEL_INFO); 206 char impruPath[FILENAME_MAX];
192// LLError::setTagLevel("Plugin", LLError::LEVEL_DEBUG); 207
208 if (!getImpruDir(impruPath, sizeof(impruPath)))
209 {
210 path = "."; //FIXME: root directory of the system - bad idea
211 }
212 else
213 {
214 path = std::string(impruPath);
215
216 path.append(DIR_DELIMITER);
217 path.append("app_settings");
218 }
219 LLError::initForApplication(path);
220// LLError::setDefaultLevel(LLError::LEVEL_INFO);
221// LLError::setPrintLocation(true);
222// LLError::setTagLevel("Plugin", LLError::LEVEL_DEBUG);
223// LLError::setTagLevel("PluginPipe", LLError::LEVEL_DEBUG);
224// LLError::setTagLevel("PluginChild", LLError::LEVEL_DEBUG);
225// LLError::setTagLevel("PluginInstance", LLError::LEVEL_DEBUG);
226
193// LLError::logToFile("slplugin.log"); 227// LLError::logToFile("slplugin.log");
194 } 228 }
195 229
diff --git a/linden/indra/llui/lllineeditor.cpp b/linden/indra/llui/lllineeditor.cpp
index a3785e4..76b8927 100644
--- a/linden/indra/llui/lllineeditor.cpp
+++ b/linden/indra/llui/lllineeditor.cpp
@@ -1034,6 +1034,11 @@ BOOL LLLineEditor::handleHover(S32 x, S32 y, MASK mask)
1034 1034
1035 return handled; 1035 return handled;
1036} 1036}
1037BOOL LLLineEditor::handleHScrollWheel(S32 x, S32 y, S32 clicks)
1038{
1039 mScrollHPos = llclamp(mScrollHPos + clicks * 3, 0, mText.length());
1040 return TRUE;
1041}
1037 1042
1038 1043
1039BOOL LLLineEditor::handleMouseUp(S32 x, S32 y, MASK mask) 1044BOOL LLLineEditor::handleMouseUp(S32 x, S32 y, MASK mask)
diff --git a/linden/indra/llui/lllineeditor.h b/linden/indra/llui/lllineeditor.h
index f9e0621..d217859 100644
--- a/linden/indra/llui/lllineeditor.h
+++ b/linden/indra/llui/lllineeditor.h
@@ -90,6 +90,7 @@ public:
90 /*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask); 90 /*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask);
91 /*virtual*/ BOOL handleMouseUp(S32 x, S32 y, MASK mask); 91 /*virtual*/ BOOL handleMouseUp(S32 x, S32 y, MASK mask);
92 /*virtual*/ BOOL handleHover(S32 x, S32 y, MASK mask); 92 /*virtual*/ BOOL handleHover(S32 x, S32 y, MASK mask);
93 /*virtual*/ BOOL handleHScrollWheel(S32 x, S32 y, S32 clicks);
93 /*virtual*/ BOOL handleDoubleClick(S32 x,S32 y,MASK mask); 94 /*virtual*/ BOOL handleDoubleClick(S32 x,S32 y,MASK mask);
94 /*virtual*/ BOOL handleMiddleMouseDown(S32 x,S32 y,MASK mask); 95 /*virtual*/ BOOL handleMiddleMouseDown(S32 x,S32 y,MASK mask);
95 /*virtual*/ BOOL handleRightMouseDown( S32 x, S32 y, MASK mask ); 96 /*virtual*/ BOOL handleRightMouseDown( S32 x, S32 y, MASK mask );
diff --git a/linden/indra/llui/llscrollbar.cpp b/linden/indra/llui/llscrollbar.cpp
index 65086d8..11e6239 100644
--- a/linden/indra/llui/llscrollbar.cpp
+++ b/linden/indra/llui/llscrollbar.cpp
@@ -426,6 +426,11 @@ BOOL LLScrollbar::handleScrollWheel(S32 x, S32 y, S32 clicks)
426 changeLine( clicks * mStepSize, TRUE ); 426 changeLine( clicks * mStepSize, TRUE );
427 return TRUE; 427 return TRUE;
428} 428}
429BOOL LLScrollbar::handleHScrollWheel(S32 x, S32 y, S32 clicks)
430{
431 changeLine( clicks * mStepSize, TRUE );
432 return TRUE;
433}
429 434
430BOOL LLScrollbar::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, 435BOOL LLScrollbar::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
431 EDragAndDropType cargo_type, void *cargo_data, EAcceptance *accept, std::string &tooltip_msg) 436 EDragAndDropType cargo_type, void *cargo_data, EAcceptance *accept, std::string &tooltip_msg)
diff --git a/linden/indra/llui/llscrollbar.h b/linden/indra/llui/llscrollbar.h
index 0bbf866..6969662 100644
--- a/linden/indra/llui/llscrollbar.h
+++ b/linden/indra/llui/llscrollbar.h
@@ -69,6 +69,7 @@ public:
69 virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask); 69 virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask);
70 virtual BOOL handleHover(S32 x, S32 y, MASK mask); 70 virtual BOOL handleHover(S32 x, S32 y, MASK mask);
71 virtual BOOL handleScrollWheel(S32 x, S32 y, S32 clicks); 71 virtual BOOL handleScrollWheel(S32 x, S32 y, S32 clicks);
72 virtual BOOL handleHScrollWheel(S32 x, S32 y, S32 clicks);
72 virtual BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, 73 virtual BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
73 EDragAndDropType cargo_type, void *cargo_data, EAcceptance *accept, std::string &tooltip_msg); 74 EDragAndDropType cargo_type, void *cargo_data, EAcceptance *accept, std::string &tooltip_msg);
74 75
diff --git a/linden/indra/llui/llscrollcontainer.cpp b/linden/indra/llui/llscrollcontainer.cpp
index 6f037e2..8737a70 100644
--- a/linden/indra/llui/llscrollcontainer.cpp
+++ b/linden/indra/llui/llscrollcontainer.cpp
@@ -239,6 +239,23 @@ BOOL LLScrollableContainerView::handleScrollWheel( S32 x, S32 y, S32 clicks )
239 return TRUE; 239 return TRUE;
240} 240}
241 241
242BOOL LLScrollableContainerView::handleHScrollWheel( S32 x, S32 y, S32 clicks )
243{
244 for( S32 i = SCROLLBAR_COUNT - 1; i >= 0; i++ )
245 {
246 // Note: tries horizontal and then vertical
247
248 // Pretend the mouse is over the scrollbar
249 if( mScrollbar[i]->handleScrollWheel( 0, 0, clicks ) )
250 {
251 return TRUE;
252 }
253 }
254
255 // Eat scroll wheel event (to avoid scrolling nested containers?)
256 return TRUE;
257}
258
242BOOL LLScrollableContainerView::needsToScroll(S32 x, S32 y, LLScrollableContainerView::SCROLL_ORIENTATION axis) const 259BOOL LLScrollableContainerView::needsToScroll(S32 x, S32 y, LLScrollableContainerView::SCROLL_ORIENTATION axis) const
243{ 260{
244 if(mScrollbar[axis]->getVisible()) 261 if(mScrollbar[axis]->getVisible())
diff --git a/linden/indra/llui/llscrollcontainer.h b/linden/indra/llui/llscrollcontainer.h
index 70fc908..c18a0db 100644
--- a/linden/indra/llui/llscrollcontainer.h
+++ b/linden/indra/llui/llscrollcontainer.h
@@ -91,6 +91,7 @@ public:
91 virtual void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE); 91 virtual void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
92 virtual BOOL handleKeyHere(KEY key, MASK mask); 92 virtual BOOL handleKeyHere(KEY key, MASK mask);
93 virtual BOOL handleScrollWheel( S32 x, S32 y, S32 clicks ); 93 virtual BOOL handleScrollWheel( S32 x, S32 y, S32 clicks );
94 virtual BOOL handleHScrollWheel( S32 x, S32 y, S32 clicks );
94 virtual BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, 95 virtual BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
95 EDragAndDropType cargo_type, 96 EDragAndDropType cargo_type,
96 void* cargo_data, 97 void* cargo_data,
diff --git a/linden/indra/llui/llview.cpp b/linden/indra/llui/llview.cpp
index d4eda8f..507c5f5 100644
--- a/linden/indra/llui/llview.cpp
+++ b/linden/indra/llui/llview.cpp
@@ -960,6 +960,19 @@ BOOL LLView::handleScrollWheel(S32 x, S32 y, S32 clicks)
960 return handled; 960 return handled;
961} 961}
962 962
963BOOL LLView::handleHScrollWheel(S32 x, S32 y, S32 clicks)
964{
965 BOOL handled = FALSE;
966 if( getVisible() && getEnabled() )
967 {
968 handled = childrenHandleHScrollWheel( x, y, clicks ) != NULL;
969 if( !handled && blockMouseEvent(x, y) )
970 {
971 handled = TRUE;
972 }
973 }
974 return handled;
975}
963BOOL LLView::handleRightMouseDown(S32 x, S32 y, MASK mask) 976BOOL LLView::handleRightMouseDown(S32 x, S32 y, MASK mask)
964{ 977{
965 BOOL handled = childrenHandleRightMouseDown( x, y, mask ) != NULL; 978 BOOL handled = childrenHandleRightMouseDown( x, y, mask ) != NULL;
@@ -1032,6 +1045,34 @@ LLView* LLView::childrenHandleScrollWheel(S32 x, S32 y, S32 clicks)
1032 return handled_view; 1045 return handled_view;
1033} 1046}
1034 1047
1048LLView* LLView::childrenHandleHScrollWheel(S32 x, S32 y, S32 clicks)
1049{
1050 LLView* handled_view = NULL;
1051 if (getVisible() && getEnabled() )
1052 {
1053 for ( child_list_iter_t child_it = mChildList.begin(); child_it != mChildList.end(); ++child_it)
1054 {
1055 LLView* viewp = *child_it;
1056 S32 local_x = x - viewp->getRect().mLeft;
1057 S32 local_y = y - viewp->getRect().mBottom;
1058 if (viewp->pointInView(local_x, local_y)
1059 && viewp->getVisible()
1060 && viewp->getEnabled()
1061 && viewp->handleHScrollWheel( local_x, local_y, clicks ))
1062 {
1063 if (sDebugMouseHandling)
1064 {
1065 sMouseHandlerMessage = std::string("->") + viewp->mName + sMouseHandlerMessage;
1066 }
1067
1068 handled_view = viewp;
1069 break;
1070 }
1071 }
1072 }
1073 return handled_view;
1074}
1075
1035LLView* LLView::childrenHandleHover(S32 x, S32 y, MASK mask) 1076LLView* LLView::childrenHandleHover(S32 x, S32 y, MASK mask)
1036{ 1077{
1037 LLView* handled_view = NULL; 1078 LLView* handled_view = NULL;
diff --git a/linden/indra/llui/llview.h b/linden/indra/llui/llview.h
index 1c8ab31..9243f4f 100644
--- a/linden/indra/llui/llview.h
+++ b/linden/indra/llui/llview.h
@@ -473,6 +473,7 @@ public:
473 /*virtual*/ BOOL handleMiddleMouseDown(S32 x, S32 y, MASK mask); 473 /*virtual*/ BOOL handleMiddleMouseDown(S32 x, S32 y, MASK mask);
474 /*virtual*/ BOOL handleDoubleClick(S32 x, S32 y, MASK mask); 474 /*virtual*/ BOOL handleDoubleClick(S32 x, S32 y, MASK mask);
475 /*virtual*/ BOOL handleScrollWheel(S32 x, S32 y, S32 clicks); 475 /*virtual*/ BOOL handleScrollWheel(S32 x, S32 y, S32 clicks);
476 /*virtual*/ BOOL handleHScrollWheel(S32 x, S32 y, S32 clicks);
476 /*virtual*/ BOOL handleRightMouseDown(S32 x, S32 y, MASK mask); 477 /*virtual*/ BOOL handleRightMouseDown(S32 x, S32 y, MASK mask);
477 /*virtual*/ BOOL handleRightMouseUp(S32 x, S32 y, MASK mask); 478 /*virtual*/ BOOL handleRightMouseUp(S32 x, S32 y, MASK mask);
478 /*virtual*/ BOOL handleToolTip(S32 x, S32 y, std::string& msg, LLRect* sticky_rect); // Display mToolTipMsg if no child handles it. 479 /*virtual*/ BOOL handleToolTip(S32 x, S32 y, std::string& msg, LLRect* sticky_rect); // Display mToolTipMsg if no child handles it.
@@ -613,6 +614,7 @@ protected:
613 LLView* childrenHandleMiddleMouseDown(S32 x, S32 y, MASK mask); 614 LLView* childrenHandleMiddleMouseDown(S32 x, S32 y, MASK mask);
614 LLView* childrenHandleDoubleClick(S32 x, S32 y, MASK mask); 615 LLView* childrenHandleDoubleClick(S32 x, S32 y, MASK mask);
615 LLView* childrenHandleScrollWheel(S32 x, S32 y, S32 clicks); 616 LLView* childrenHandleScrollWheel(S32 x, S32 y, S32 clicks);
617 LLView* childrenHandleHScrollWheel(S32 x, S32 y, S32 clicks);
616 LLView* childrenHandleRightMouseDown(S32 x, S32 y, MASK mask); 618 LLView* childrenHandleRightMouseDown(S32 x, S32 y, MASK mask);
617 LLView* childrenHandleRightMouseUp(S32 x, S32 y, MASK mask); 619 LLView* childrenHandleRightMouseUp(S32 x, S32 y, MASK mask);
618 620
diff --git a/linden/indra/llvfs/lldir_win32.cpp b/linden/indra/llvfs/lldir_win32.cpp
index 9d4c5ec..e5d6747 100644
--- a/linden/indra/llvfs/lldir_win32.cpp
+++ b/linden/indra/llvfs/lldir_win32.cpp
@@ -112,7 +112,7 @@ LLDir_Win32::LLDir_Win32()
112 } 112 }
113 else 113 else
114 { 114 {
115 fprintf(stderr, "Couldn't get APP path, assuming current directory!"); 115 LL_WARNS("AppInit") << "Couldn't get APP path, assuming current directory!\n" << LL_ENDL;
116 GetCurrentDirectory(MAX_PATH, w_str); 116 GetCurrentDirectory(MAX_PATH, w_str);
117 mExecutableDir = utf16str_to_utf8str(llutf16string(w_str)); 117 mExecutableDir = utf16str_to_utf8str(llutf16string(w_str));
118 // Assume it's the current directory 118 // Assume it's the current directory
diff --git a/linden/indra/llwindow/llmousehandler.cpp b/linden/indra/llwindow/llmousehandler.cpp
index ae2f147..e3ea979 100644
--- a/linden/indra/llwindow/llmousehandler.cpp
+++ b/linden/indra/llwindow/llmousehandler.cpp
@@ -57,3 +57,9 @@ BOOL LLMouseHandler::handleAnyMouseClick(S32 x, S32 y, MASK mask, EClickType cli
57 } 57 }
58 return handled; 58 return handled;
59} 59}
60
61BOOL LLMouseHandler::handleHScrollWheel(S32 x, S32 y, S32 clicks)
62{
63 BOOL handled = FALSE;
64 return handled;
65}
diff --git a/linden/indra/llwindow/llmousehandler.h b/linden/indra/llwindow/llmousehandler.h
index 7bd0f2e..1a4ea65 100644
--- a/linden/indra/llwindow/llmousehandler.h
+++ b/linden/indra/llwindow/llmousehandler.h
@@ -67,6 +67,7 @@ public:
67 67
68 virtual BOOL handleHover(S32 x, S32 y, MASK mask) = 0; 68 virtual BOOL handleHover(S32 x, S32 y, MASK mask) = 0;
69 virtual BOOL handleScrollWheel(S32 x, S32 y, S32 clicks) = 0; 69 virtual BOOL handleScrollWheel(S32 x, S32 y, S32 clicks) = 0;
70 virtual BOOL handleHScrollWheel(S32 x, S32 y, S32 clicks);
70 virtual BOOL handleToolTip(S32 x, S32 y, std::string& msg, LLRect* sticky_rect_screen) = 0; 71 virtual BOOL handleToolTip(S32 x, S32 y, std::string& msg, LLRect* sticky_rect_screen) = 0;
71 virtual EShowToolTip getShowToolTip() { return SHOW_IF_NOT_BLOCKED; }; 72 virtual EShowToolTip getShowToolTip() { return SHOW_IF_NOT_BLOCKED; };
72 virtual const std::string& getName() const = 0; 73 virtual const std::string& getName() const = 0;
diff --git a/linden/indra/llwindow/llwindow.cpp b/linden/indra/llwindow/llwindow.cpp
index 53ca68d..6ac42b2 100644
--- a/linden/indra/llwindow/llwindow.cpp
+++ b/linden/indra/llwindow/llwindow.cpp
@@ -155,6 +155,10 @@ void LLWindowCallbacks::handleScrollWheel(LLWindow *window, S32 clicks)
155{ 155{
156} 156}
157 157
158void LLWindowCallbacks::handleHScrollWheel(LLWindow *window, S32 clicks)
159{
160}
161
158void LLWindowCallbacks::handleResize(LLWindow *window, const S32 width, const S32 height) 162void LLWindowCallbacks::handleResize(LLWindow *window, const S32 width, const S32 height)
159{ 163{
160} 164}
diff --git a/linden/indra/llwindow/llwindow.h b/linden/indra/llwindow/llwindow.h
index 5e93ab3..cbcfc5a 100644
--- a/linden/indra/llwindow/llwindow.h
+++ b/linden/indra/llwindow/llwindow.h
@@ -69,6 +69,7 @@ public:
69 virtual BOOL handleActivateApp(LLWindow *window, BOOL activating); 69 virtual BOOL handleActivateApp(LLWindow *window, BOOL activating);
70 virtual void handleMouseMove(LLWindow *window, LLCoordGL pos, MASK mask); 70 virtual void handleMouseMove(LLWindow *window, LLCoordGL pos, MASK mask);
71 virtual void handleScrollWheel(LLWindow *window, S32 clicks); 71 virtual void handleScrollWheel(LLWindow *window, S32 clicks);
72 virtual void handleHScrollWheel(LLWindow *window, S32 clicks);
72 virtual void handleResize(LLWindow *window, S32 width, S32 height); 73 virtual void handleResize(LLWindow *window, S32 width, S32 height);
73 virtual void handleFocus(LLWindow *window); 74 virtual void handleFocus(LLWindow *window);
74 virtual void handleFocusLost(LLWindow *window); 75 virtual void handleFocusLost(LLWindow *window);
diff --git a/linden/indra/llwindow/llwindowmacosx.cpp b/linden/indra/llwindow/llwindowmacosx.cpp
index 9cbc949..8f8f019 100644
--- a/linden/indra/llwindow/llwindowmacosx.cpp
+++ b/linden/indra/llwindow/llwindowmacosx.cpp
@@ -2384,6 +2384,7 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
2384 HIPoint location = {0.0f, 0.0f}; 2384 HIPoint location = {0.0f, 0.0f};
2385 UInt32 modifiers = 0; 2385 UInt32 modifiers = 0;
2386 UInt32 clickCount = 1; 2386 UInt32 clickCount = 1;
2387 EventMouseWheelAxis wheelAxis = kEventMouseWheelAxisX;
2387 long wheelDelta = 0; 2388 long wheelDelta = 0;
2388 LLCoordScreen inCoords; 2389 LLCoordScreen inCoords;
2389 LLCoordGL outCoords; 2390 LLCoordGL outCoords;
@@ -2393,6 +2394,7 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
2393 GetEventParameter(event, kEventParamMouseLocation, typeHIPoint, NULL, sizeof(location), NULL, &location); 2394 GetEventParameter(event, kEventParamMouseLocation, typeHIPoint, NULL, sizeof(location), NULL, &location);
2394 GetEventParameter(event, kEventParamKeyModifiers, typeUInt32, NULL, sizeof(modifiers), NULL, &modifiers); 2395 GetEventParameter(event, kEventParamKeyModifiers, typeUInt32, NULL, sizeof(modifiers), NULL, &modifiers);
2395 GetEventParameter(event, kEventParamMouseWheelDelta, typeLongInteger, NULL, sizeof(wheelDelta), NULL, &wheelDelta); 2396 GetEventParameter(event, kEventParamMouseWheelDelta, typeLongInteger, NULL, sizeof(wheelDelta), NULL, &wheelDelta);
2397 GetEventParameter(event, kEventParamMouseWheelAxis, typeMouseWheelAxis, NULL, sizeof(wheelAxis), NULL, &wheelAxis);
2396 GetEventParameter(event, kEventParamClickCount, typeUInt32, NULL, sizeof(clickCount), NULL, &clickCount); 2398 GetEventParameter(event, kEventParamClickCount, typeUInt32, NULL, sizeof(clickCount), NULL, &clickCount);
2397 2399
2398 inCoords.mX = llround(location.x); 2400 inCoords.mX = llround(location.x);
@@ -2501,14 +2503,31 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
2501 2503
2502 case kEventMouseWheelMoved: 2504 case kEventMouseWheelMoved:
2503 { 2505 {
2504 static S32 z_delta = 0; 2506 switch (wheelAxis){
2507 case kEventMouseWheelAxisX:
2505 2508
2506 z_delta += wheelDelta; 2509 static S32 wheel_x_delta = 0;
2507 2510
2508 if (z_delta <= -WHEEL_DELTA || WHEEL_DELTA <= z_delta) 2511 wheel_x_delta += wheelDelta;
2509 { 2512
2510 mCallbacks->handleScrollWheel(this, -z_delta / WHEEL_DELTA); 2513 if (wheel_x_delta <= -WHEEL_DELTA || WHEEL_DELTA <= wheel_x_delta)
2511 z_delta = 0; 2514 {
2515 mCallbacks->handleHScrollWheel(this, wheel_x_delta / WHEEL_DELTA);
2516 wheel_x_delta = 0;
2517 }
2518 break;
2519 case kEventMouseWheelAxisY:
2520
2521 static S32 wheel_y_delta = 0;
2522
2523 wheel_y_delta += wheelDelta;
2524
2525 if (wheel_y_delta <= -WHEEL_DELTA || WHEEL_DELTA <= wheel_y_delta)
2526 {
2527 mCallbacks->handleScrollWheel(this, -wheel_y_delta / WHEEL_DELTA);
2528 wheel_y_delta = 0;
2529 }
2530 break;
2512 } 2531 }
2513 } 2532 }
2514 result = noErr; 2533 result = noErr;
diff --git a/linden/indra/llwindow/llwindowsdl.cpp b/linden/indra/llwindow/llwindowsdl.cpp
index ff27a4b..5828da3 100644
--- a/linden/indra/llwindow/llwindowsdl.cpp
+++ b/linden/indra/llwindow/llwindowsdl.cpp
@@ -1728,7 +1728,10 @@ void LLWindowSDL::gatherInput()
1728 mCallbacks->handleScrollWheel(this, -1); 1728 mCallbacks->handleScrollWheel(this, -1);
1729 else if (event.button.button == 5) // mousewheel down...thanks to X11 for making SDL consider these "buttons". 1729 else if (event.button.button == 5) // mousewheel down...thanks to X11 for making SDL consider these "buttons".
1730 mCallbacks->handleScrollWheel(this, 1); 1730 mCallbacks->handleScrollWheel(this, 1);
1731 1731 else if (event.button.button == 6)
1732 mCallbacks->handleHScrollWheel(this, -1);
1733 else if (event.button.button == 7)
1734 mCallbacks->handleHScrollWheel(this, 1);
1732 break; 1735 break;
1733 } 1736 }
1734 1737
diff --git a/linden/indra/llwindow/llwindowwin32.cpp b/linden/indra/llwindow/llwindowwin32.cpp
index 3fdef30..1a8a86c 100644
--- a/linden/indra/llwindow/llwindowwin32.cpp
+++ b/linden/indra/llwindow/llwindowwin32.cpp
@@ -2259,6 +2259,22 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
2259 } 2259 }
2260 return 0; 2260 return 0;
2261 } 2261 }
2262#ifdef WM_MOUSEHWHEEL
2263 case WM_MOUSEHWHEEL:
2264 {
2265 window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_MOUSEHWHEEL");
2266 static short z_delta = 0;
2267
2268 z_delta += HIWORD(w_param);
2269
2270 if (z_delta <= -WHEEL_DELTA || WHEEL_DELTA <= z_delta)
2271 {
2272 window_imp->mCallbacks->handleHScrollWheel(window_imp, z_delta / WHEEL_DELTA);
2273 z_delta = 0;
2274 }
2275 return 0;
2276 }
2277#endif //WM_MOUSEHWHEEL
2262 /* 2278 /*
2263 // TODO: add this after resolving _WIN32_WINNT issue 2279 // TODO: add this after resolving _WIN32_WINNT issue
2264 case WM_MOUSELEAVE: 2280 case WM_MOUSELEAVE:
diff --git a/linden/indra/lscript/lscript_library/lscript_library.cpp b/linden/indra/lscript/lscript_library/lscript_library.cpp
index 59f1824..6e170b9 100644
--- a/linden/indra/lscript/lscript_library/lscript_library.cpp
+++ b/linden/indra/lscript/lscript_library/lscript_library.cpp
@@ -571,6 +571,7 @@ void LLScriptLibrary::init()
571 addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osGetPrimitiveParams", "l", "kl", "List osGetPrimitiveParams(key prim, list rules)\nGets primitive Params.\n(OpenSim only.)")); 571 addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osGetPrimitiveParams", "l", "kl", "List osGetPrimitiveParams(key prim, list rules)\nGets primitive Params.\n(OpenSim only.)"));
572 addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osSetPrimitiveParams", NULL, "kl", "osSetPrimitiveParams(key prim, list rules)\nSets primitive Params.\n(OpenSim only.)")); 572 addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osSetPrimitiveParams", NULL, "kl", "osSetPrimitiveParams(key prim, list rules)\nSets primitive Params.\n(OpenSim only.)"));
573 addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osSetProjectionParams", NULL, "kikfff", "osSetProjectionParams(key prim. bool projection, key texture, float fov, float focus, float amb)\nSet Projection Paramaters (bool = true / false)\n(OpenSim only.)")); 573 addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osSetProjectionParams", NULL, "kikfff", "osSetProjectionParams(key prim. bool projection, key texture, float fov, float focus, float amb)\nSet Projection Paramaters (bool = true / false)\n(OpenSim only.)"));
574 addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osUnixTimeToTimestamp", "s", "i", "osUnixTimeToTimestamp(integer unixtime)\nConverts unixtime to an llGetTimeStamp() formated string.\n(OpenSim only.)"));
574 575
575 // LightShare functions 576 // LightShare functions
576 addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "cmSetWindlightScene", "i", "l", "integer cmSetWindlightScene(list rules)\nSet the current WindLight scene. Restricted to estate managers and owners only.")); 577 addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "cmSetWindlightScene", "i", "l", "integer cmSetWindlightScene(list rules)\nSet the current WindLight scene. Restricted to estate managers and owners only."));
diff --git a/linden/indra/media_plugins/gstreamer010/media_plugin_gstreamer010.cpp b/linden/indra/media_plugins/gstreamer010/media_plugin_gstreamer010.cpp
index 6a44887..6835d0f 100755
--- a/linden/indra/media_plugins/gstreamer010/media_plugin_gstreamer010.cpp
+++ b/linden/indra/media_plugins/gstreamer010/media_plugin_gstreamer010.cpp
@@ -84,7 +84,7 @@ public:
84 GstMessage *message); 84 GstMessage *message);
85 85
86 // basic log file writing 86 // basic log file writing
87 static bool writeToLog(char* str, ...); 87 static bool writeToLog(const char* str, ...);
88 88
89private: 89private:
90 std::string getVersion(); 90 std::string getVersion();
@@ -181,7 +181,7 @@ MediaPluginGStreamer010::MediaPluginGStreamer010(
181 mVideoSink ( NULL ), 181 mVideoSink ( NULL ),
182 mCommand ( COMMAND_NONE ) 182 mCommand ( COMMAND_NONE )
183{ 183{
184 writeToLog("MediaPluginGStreamer010 PID=%u", U32(LL_GETPID())); 184 writeToLog((char*)"MediaPluginGStreamer010 PID=%u", U32(LL_GETPID()));
185} 185}
186 186
187/////////////////////////////////////////////////////////////////////////////// 187///////////////////////////////////////////////////////////////////////////////
@@ -202,7 +202,7 @@ static char* get_gst_state_name(GstState state)
202#endif // LL_GST_REPORT_STATE_CHANGES 202#endif // LL_GST_REPORT_STATE_CHANGES
203 203
204// static 204// static
205bool MediaPluginGStreamer010::writeToLog(char* str, ...) 205bool MediaPluginGStreamer010::writeToLog(const char* str, ...)
206{ 206{
207 LLFILE* fp = LLFile::fopen("media_plugin_gstreamer010.log", "a"); 207 LLFILE* fp = LLFile::fopen("media_plugin_gstreamer010.log", "a");
208 208
@@ -236,7 +236,7 @@ MediaPluginGStreamer010::processGSTEvents(GstBus *bus,
236 GST_MESSAGE_TYPE(message) != GST_MESSAGE_BUFFERING && 236 GST_MESSAGE_TYPE(message) != GST_MESSAGE_BUFFERING &&
237 GST_MESSAGE_TYPE(message) != GST_MESSAGE_TAG) 237 GST_MESSAGE_TYPE(message) != GST_MESSAGE_TAG)
238 { 238 {
239 writeToLog("Got GST message type: %s", GST_MESSAGE_TYPE_NAME (message)); 239 writeToLog((char*)"Got GST message type: %s", GST_MESSAGE_TYPE_NAME (message));
240 } 240 }
241 241
242 switch (GST_MESSAGE_TYPE (message)) 242 switch (GST_MESSAGE_TYPE (message))
@@ -246,7 +246,7 @@ MediaPluginGStreamer010::processGSTEvents(GstBus *bus,
246 // NEEDS GST 0.10.11+ and America discovered by C.Columbus 246 // NEEDS GST 0.10.11+ and America discovered by C.Columbus
247 gint percent = 0; 247 gint percent = 0;
248 gst_message_parse_buffering(message, &percent); 248 gst_message_parse_buffering(message, &percent);
249 writeToLog("GST buffering: %d%%", percent); 249 writeToLog((char*)"GST buffering: %d%%", percent);
250 250
251 break; 251 break;
252 } 252 }
@@ -260,7 +260,7 @@ MediaPluginGStreamer010::processGSTEvents(GstBus *bus,
260 &pending_state); 260 &pending_state);
261 #ifdef LL_GST_REPORT_STATE_CHANGES 261 #ifdef LL_GST_REPORT_STATE_CHANGES
262 // not generally very useful, and rather spammy. 262 // not generally very useful, and rather spammy.
263 writeToLog("state change (old,<new>,pending): %s,<%s>,%s", 263 writeToLog((char*)"state change (old,<new>,pending): %s,<%s>,%s",
264 get_gst_state_name(old_state), 264 get_gst_state_name(old_state),
265 get_gst_state_name(new_state), 265 get_gst_state_name(new_state),
266 get_gst_state_name(pending_state)); 266 get_gst_state_name(pending_state));
@@ -290,7 +290,7 @@ MediaPluginGStreamer010::processGSTEvents(GstBus *bus,
290 gchar *debug = NULL; 290 gchar *debug = NULL;
291 291
292 gst_message_parse_error (message, &err, &debug); 292 gst_message_parse_error (message, &err, &debug);
293 writeToLog("GST error: %s", err?err->message:"(unknown)"); 293 writeToLog((char*)"GST error: %s", err?err->message:"(unknown)");
294 if (err) 294 if (err)
295 g_error_free (err); 295 g_error_free (err);
296 g_free (debug); 296 g_free (debug);
@@ -307,7 +307,7 @@ MediaPluginGStreamer010::processGSTEvents(GstBus *bus,
307 gchar *debug = NULL; 307 gchar *debug = NULL;
308 308
309 gst_message_parse_info (message, &err, &debug); 309 gst_message_parse_info (message, &err, &debug);
310 writeToLog("GST info: %s", err?err->message:"(unknown)"); 310 writeToLog((char*)"GST info: %s", err?err->message:"(unknown)");
311 if (err) 311 if (err)
312 g_error_free (err); 312 g_error_free (err);
313 g_free (debug); 313 g_free (debug);
@@ -320,7 +320,7 @@ MediaPluginGStreamer010::processGSTEvents(GstBus *bus,
320 gchar *debug = NULL; 320 gchar *debug = NULL;
321 321
322 gst_message_parse_warning (message, &err, &debug); 322 gst_message_parse_warning (message, &err, &debug);
323 writeToLog("GST warning: %s", err?err->message:"(unknown)"); 323 writeToLog((char*)"GST warning: %s", err?err->message:"(unknown)");
324 if (err) 324 if (err)
325 g_error_free (err); 325 g_error_free (err);
326 g_free (debug); 326 g_free (debug);
@@ -337,7 +337,7 @@ MediaPluginGStreamer010::processGSTEvents(GstBus *bus,
337 337
338 if ( gst_tag_list_get_string(new_tags, GST_TAG_TITLE, &title) ) 338 if ( gst_tag_list_get_string(new_tags, GST_TAG_TITLE, &title) )
339 { 339 {
340 //writeToLog("Title: %s", title); 340 //writeToLog((char*)"Title: %s", title);
341 std::string newtitle(title); 341 std::string newtitle(title);
342 gst_tag_list_free(new_tags); 342 gst_tag_list_free(new_tags);
343 343
@@ -356,10 +356,10 @@ MediaPluginGStreamer010::processGSTEvents(GstBus *bus,
356 case GST_MESSAGE_EOS: 356 case GST_MESSAGE_EOS:
357 { 357 {
358 /* end-of-stream */ 358 /* end-of-stream */
359 writeToLog("GST end-of-stream."); 359 writeToLog((char*)"GST end-of-stream.");
360 if (mIsLooping) 360 if (mIsLooping)
361 { 361 {
362 //writeToLog("looping media..."); 362 //writeToLog((char*)"looping media...");
363 double eos_pos_sec = 0.0F; 363 double eos_pos_sec = 0.0F;
364 bool got_eos_position = getTimePos(eos_pos_sec); 364 bool got_eos_position = getTimePos(eos_pos_sec);
365 365
@@ -368,7 +368,7 @@ MediaPluginGStreamer010::processGSTEvents(GstBus *bus,
368 // if we know that the movie is really short, don't 368 // if we know that the movie is really short, don't
369 // loop it else it can easily become a time-hog 369 // loop it else it can easily become a time-hog
370 // because of GStreamer spin-up overhead 370 // because of GStreamer spin-up overhead
371 writeToLog("really short movie (%0.3fsec) - not gonna loop this, pausing instead.", eos_pos_sec); 371 writeToLog((char*)"really short movie (%0.3fsec) - not gonna loop this, pausing instead.", eos_pos_sec);
372 // inject a COMMAND_PAUSE 372 // inject a COMMAND_PAUSE
373 mCommand = COMMAND_PAUSE; 373 mCommand = COMMAND_PAUSE;
374 } 374 }
@@ -387,7 +387,7 @@ MediaPluginGStreamer010::processGSTEvents(GstBus *bus,
387 else 387 else
388 #endif // LLGST_LOOP_BY_SEEKING 388 #endif // LLGST_LOOP_BY_SEEKING
389 { // use clumsy stop-start to loop 389 { // use clumsy stop-start to loop
390 writeToLog("didn't loop by rewinding - stopping and starting instead..."); 390 writeToLog((char*)"didn't loop by rewinding - stopping and starting instead...");
391 stop(); 391 stop();
392 play(1.0); 392 play(1.0);
393 } 393 }
@@ -433,7 +433,7 @@ MediaPluginGStreamer010::navigateTo ( const std::string urlIn )
433 433
434 setStatus(STATUS_LOADING); 434 setStatus(STATUS_LOADING);
435 435
436 writeToLog("Setting media URI: %s", urlIn.c_str()); 436 writeToLog((char*)"Setting media URI: %s", urlIn.c_str());
437 437
438 mSeekWanted = false; 438 mSeekWanted = false;
439 439
@@ -461,13 +461,13 @@ MediaPluginGStreamer010::update(int milliseconds)
461 if (!mDoneInit) 461 if (!mDoneInit)
462 return false; // error 462 return false; // error
463 463
464 //writeToLog("updating media..."); 464 //writeToLog((char*)"updating media...");
465 465
466 // sanity check 466 // sanity check
467 if (NULL == mPump || 467 if (NULL == mPump ||
468 NULL == mPlaybin) 468 NULL == mPlaybin)
469 { 469 {
470 writeToLog("dead media..."); 470 writeToLog((char*)"dead media...");
471 return false; 471 return false;
472 } 472 }
473 473
@@ -497,7 +497,7 @@ MediaPluginGStreamer010::update(int milliseconds)
497 GST_OBJECT_LOCK(mVideoSink); 497 GST_OBJECT_LOCK(mVideoSink);
498 if (mVideoSink->retained_frame_ready) 498 if (mVideoSink->retained_frame_ready)
499 { 499 {
500 writeToLog("NEW FRAME READY"); 500 writeToLog((char*)"NEW FRAME READY");
501 501
502 if (mVideoSink->retained_frame_width != mCurrentWidth || 502 if (mVideoSink->retained_frame_width != mCurrentWidth ||
503 mVideoSink->retained_frame_height != mCurrentHeight) 503 mVideoSink->retained_frame_height != mCurrentHeight)
@@ -528,7 +528,7 @@ MediaPluginGStreamer010::update(int milliseconds)
528 GST_OBJECT_UNLOCK(mVideoSink); 528 GST_OBJECT_UNLOCK(mVideoSink);
529 529
530 mCurrentRowbytes = neww * newd; 530 mCurrentRowbytes = neww * newd;
531 writeToLog("video container resized to %dx%d", 531 writeToLog((char*)"video container resized to %dx%d",
532 neww, newh); 532 neww, newh);
533 533
534 mDepth = newd; 534 mDepth = newd;
@@ -556,7 +556,7 @@ MediaPluginGStreamer010::update(int milliseconds)
556 } 556 }
557 557
558 GST_OBJECT_UNLOCK(mVideoSink); 558 GST_OBJECT_UNLOCK(mVideoSink);
559 writeToLog("NEW FRAME REALLY TRULY CONSUMED, TELLING HOST"); 559 writeToLog((char*)"NEW FRAME REALLY TRULY CONSUMED, TELLING HOST");
560 560
561 setDirty(0,0,mCurrentWidth,mCurrentHeight); 561 setDirty(0,0,mCurrentWidth,mCurrentHeight);
562 } 562 }
@@ -567,7 +567,7 @@ MediaPluginGStreamer010::update(int milliseconds)
567 567
568 GST_OBJECT_UNLOCK(mVideoSink); 568 GST_OBJECT_UNLOCK(mVideoSink);
569 569
570 writeToLog("NEW FRAME not consumed, still waiting for a shm segment and/or shm resize"); 570 writeToLog((char*)"NEW FRAME not consumed, still waiting for a shm segment and/or shm resize");
571 } 571 }
572 572
573 return true; 573 return true;
@@ -606,7 +606,7 @@ MediaPluginGStreamer010::mouseMove( int x, int y )
606bool 606bool
607MediaPluginGStreamer010::pause() 607MediaPluginGStreamer010::pause()
608{ 608{
609 writeToLog("pausing media..."); 609 writeToLog((char*)"pausing media...");
610 // todo: error-check this? 610 // todo: error-check this?
611 gst_element_set_state(mPlaybin, GST_STATE_PAUSED); 611 gst_element_set_state(mPlaybin, GST_STATE_PAUSED);
612 return true; 612 return true;
@@ -615,7 +615,7 @@ MediaPluginGStreamer010::pause()
615bool 615bool
616MediaPluginGStreamer010::stop() 616MediaPluginGStreamer010::stop()
617{ 617{
618 writeToLog("stopping media..."); 618 writeToLog((char*)"stopping media...");
619 // todo: error-check this? 619 // todo: error-check this?
620 gst_element_set_state(mPlaybin, GST_STATE_READY); 620 gst_element_set_state(mPlaybin, GST_STATE_READY);
621 return true; 621 return true;
@@ -625,7 +625,7 @@ bool
625MediaPluginGStreamer010::play(double rate) 625MediaPluginGStreamer010::play(double rate)
626{ 626{
627 // NOTE: we don't actually support non-natural rate. 627 // NOTE: we don't actually support non-natural rate.
628 writeToLog("playing media... rate=%f", rate); 628 writeToLog((char*)"playing media... rate=%f", rate);
629 // todo: error-check this? 629 // todo: error-check this?
630 gst_element_set_state(mPlaybin, GST_STATE_PLAYING); 630 gst_element_set_state(mPlaybin, GST_STATE_PLAYING);
631 return true; 631 return true;
@@ -662,7 +662,7 @@ MediaPluginGStreamer010::seek(double time_sec)
662 GST_SEEK_TYPE_SET, gint64(time_sec*GST_SECOND), 662 GST_SEEK_TYPE_SET, gint64(time_sec*GST_SECOND),
663 GST_SEEK_TYPE_NONE, GST_CLOCK_TIME_NONE); 663 GST_SEEK_TYPE_NONE, GST_CLOCK_TIME_NONE);
664 } 664 }
665 writeToLog("MEDIA SEEK REQUEST to %f sec result was %d", 665 writeToLog((char*)"MEDIA SEEK REQUEST to %f sec result was %d",
666 float(time_sec), int(success)); 666 float(time_sec), int(success));
667 return success; 667 return success;
668} 668}
@@ -716,7 +716,7 @@ MediaPluginGStreamer010::load()
716 716
717 setStatus(STATUS_LOADING); 717 setStatus(STATUS_LOADING);
718 718
719 writeToLog("setting up media..."); 719 writeToLog((char*)"setting up media...");
720 720
721 mIsLooping = false; 721 mIsLooping = false;
722 mVolume = (float) 0.1234567; // minor hack to force an initial volume update 722 mVolume = (float) 0.1234567; // minor hack to force an initial volume update
@@ -755,7 +755,7 @@ MediaPluginGStreamer010::load()
755 GST_SLVIDEO(gst_element_factory_make ("private-slvideo", "slvideo")); 755 GST_SLVIDEO(gst_element_factory_make ("private-slvideo", "slvideo"));
756 if (!mVideoSink) 756 if (!mVideoSink)
757 { 757 {
758 writeToLog("Could not instantiate private-slvideo element."); 758 writeToLog((char*)"Could not instantiate private-slvideo element.");
759 // todo: cleanup. 759 // todo: cleanup.
760 setStatus(STATUS_ERROR); 760 setStatus(STATUS_ERROR);
761 return false; // error 761 return false; // error
@@ -774,7 +774,7 @@ MediaPluginGStreamer010::unload ()
774 if (!mDoneInit) 774 if (!mDoneInit)
775 return false; // error 775 return false; // error
776 776
777 writeToLog("unloading media..."); 777 writeToLog((char*)"unloading media...");
778 778
779 // stop getting callbacks for this bus 779 // stop getting callbacks for this bus
780 g_source_remove(mBusWatchID); 780 g_source_remove(mBusWatchID);
@@ -832,7 +832,7 @@ MediaPluginGStreamer010::startup()
832 "libgstvideo-0.10.so.0") ) 832 "libgstvideo-0.10.so.0") )
833#endif 833#endif
834 { 834 {
835 writeToLog("Couldn't find suitable GStreamer 0.10 support on this system - video playback disabled."); 835 writeToLog((char*)"Couldn't find suitable GStreamer 0.10 support on this system - video playback disabled.");
836 return false; 836 return false;
837 } 837 }
838*/ 838*/
@@ -842,7 +842,7 @@ MediaPluginGStreamer010::startup()
842// } 842// }
843// else 843// else
844// { 844// {
845// writeToLog("gst_segtrap_set_enabled() is not available; plugin crashes won't be caught."); 845// writeToLog((char*)"gst_segtrap_set_enabled() is not available; plugin crashes won't be caught.");
846// } 846// }
847/* 847/*
848#if LL_LINUX 848#if LL_LINUX
@@ -885,12 +885,12 @@ MediaPluginGStreamer010::startup()
885 { 885 {
886 if (err) 886 if (err)
887 { 887 {
888 writeToLog("GST init failed: %s", err->message); 888 writeToLog((char*)"GST init failed: %s", err->message);
889 g_error_free(err); 889 g_error_free(err);
890 } 890 }
891 else 891 else
892 { 892 {
893 writeToLog("GST init failed for unspecified reason."); 893 writeToLog((char*)"GST init failed for unspecified reason.");
894 } 894 }
895 return false; 895 return false;
896 } 896 }
@@ -903,7 +903,7 @@ MediaPluginGStreamer010::startup()
903 gst_slvideo_init_class(); 903 gst_slvideo_init_class();
904 904
905 // List the plugins GStreamer can find 905 // List the plugins GStreamer can find
906 writeToLog("Found GStreamer plugins:"); 906 writeToLog((char*)"Found GStreamer plugins:");
907 GList *list; 907 GList *list;
908 GstRegistry *registry = gst_registry_get_default(); 908 GstRegistry *registry = gst_registry_get_default();
909 std::string loaded = "No"; 909 std::string loaded = "No";
@@ -913,7 +913,7 @@ MediaPluginGStreamer010::startup()
913 { 913 {
914 GstPlugin *list_plugin = (GstPlugin *)list->data; 914 GstPlugin *list_plugin = (GstPlugin *)list->data;
915 if (gst_plugin_is_loaded(list_plugin)) loaded = "Yes"; 915 if (gst_plugin_is_loaded(list_plugin)) loaded = "Yes";
916 writeToLog("%s, loaded? %s", gst_plugin_get_name(list_plugin), loaded.c_str()); 916 writeToLog((char*)"%s, loaded? %s", gst_plugin_get_name(list_plugin), loaded.c_str());
917 } 917 }
918 gst_plugin_list_free(list); 918 gst_plugin_list_free(list);
919 919
@@ -960,11 +960,11 @@ void MediaPluginGStreamer010::set_gst_plugin_path()
960 960
961 if( imp_dir == "" ) 961 if( imp_dir == "" )
962 { 962 {
963 writeToLog("Could not get application directory, not setting GST_PLUGIN_PATH."); 963 writeToLog((char*)"Could not get application directory, not setting GST_PLUGIN_PATH.");
964 return; 964 return;
965 } 965 }
966 966
967 writeToLog("meta-impy is installed at %s", imp_dir.c_str()); 967 writeToLog((char*)"meta-impy is installed at %s", imp_dir.c_str());
968 968
969 // ":" on Mac and 'Nix, ";" on Windows 969 // ":" on Mac and 'Nix, ";" on Windows
970 std::string separator = G_SEARCHPATH_SEPARATOR_S; 970 std::string separator = G_SEARCHPATH_SEPARATOR_S;
@@ -974,7 +974,7 @@ void MediaPluginGStreamer010::set_gst_plugin_path()
974 char *old_path = getenv("GST_PLUGIN_PATH"); 974 char *old_path = getenv("GST_PLUGIN_PATH");
975 if(old_path == NULL) 975 if(old_path == NULL)
976 { 976 {
977 writeToLog("Did not find user-set GST_PLUGIN_PATH."); 977 writeToLog((char*)"Did not find user-set GST_PLUGIN_PATH.");
978 } 978 }
979 else 979 else
980 { 980 {
@@ -1005,11 +1005,11 @@ void MediaPluginGStreamer010::set_gst_plugin_path()
1005 1005
1006 if( put_result == -1 ) 1006 if( put_result == -1 )
1007 { 1007 {
1008 writeToLog("Setting GST_PLUGIN_PATH failed!"); 1008 writeToLog((char*)"Setting GST_PLUGIN_PATH failed!");
1009 } 1009 }
1010 else 1010 else
1011 { 1011 {
1012 writeToLog("GST_PLUGIN_PATH set to %s", getenv("GST_PLUGIN_PATH")); 1012 writeToLog((char*)"GST_PLUGIN_PATH set to %s", getenv("GST_PLUGIN_PATH"));
1013 } 1013 }
1014 1014
1015 // Don't load system plugins. We only want to use ours, to avoid conflicts. 1015 // Don't load system plugins. We only want to use ours, to avoid conflicts.
@@ -1021,7 +1021,7 @@ void MediaPluginGStreamer010::set_gst_plugin_path()
1021 1021
1022 if( put_result == -1 ) 1022 if( put_result == -1 )
1023 { 1023 {
1024 writeToLog("Setting GST_PLUGIN_SYSTEM_PATH=\"\" failed!"); 1024 writeToLog((char*)"Setting GST_PLUGIN_SYSTEM_PATH=\"\" failed!");
1025 } 1025 }
1026 1026
1027#endif // LL_WINDOWS || LL_DARWIN 1027#endif // LL_WINDOWS || LL_DARWIN
@@ -1039,7 +1039,7 @@ MediaPluginGStreamer010::sizeChanged()
1039 { 1039 {
1040 mNaturalWidth = mCurrentWidth; 1040 mNaturalWidth = mCurrentWidth;
1041 mNaturalHeight = mCurrentHeight; 1041 mNaturalHeight = mCurrentHeight;
1042 writeToLog("Media NATURAL size better detected as %dx%d", 1042 writeToLog((char*)"Media NATURAL size better detected as %dx%d",
1043 mNaturalWidth, mNaturalHeight); 1043 mNaturalWidth, mNaturalHeight);
1044 } 1044 }
1045 1045
@@ -1054,7 +1054,7 @@ MediaPluginGStreamer010::sizeChanged()
1054 message.setValue("name", mTextureSegmentName); 1054 message.setValue("name", mTextureSegmentName);
1055 message.setValueS32("width", mNaturalWidth); 1055 message.setValueS32("width", mNaturalWidth);
1056 message.setValueS32("height", mNaturalHeight); 1056 message.setValueS32("height", mNaturalHeight);
1057 writeToLog("<--- Sending size change request to application with name: '%s' - natural size is %d x %d", mTextureSegmentName.c_str(), mNaturalWidth, mNaturalHeight); 1057 writeToLog((char*)"<--- Sending size change request to application with name: '%s' - natural size is %d x %d", mTextureSegmentName.c_str(), mNaturalWidth, mNaturalHeight);
1058 sendMessage(message); 1058 sendMessage(message);
1059 } 1059 }
1060} 1060}
@@ -1077,11 +1077,11 @@ MediaPluginGStreamer010::closedown()
1077 1077
1078MediaPluginGStreamer010::~MediaPluginGStreamer010() 1078MediaPluginGStreamer010::~MediaPluginGStreamer010()
1079{ 1079{
1080 //writeToLog("MediaPluginGStreamer010 destructor"); 1080 //writeToLog((char*)"MediaPluginGStreamer010 destructor");
1081 1081
1082 closedown(); 1082 closedown();
1083 1083
1084 writeToLog("GStreamer010 closing down"); 1084 writeToLog((char*)"GStreamer010 closing down");
1085} 1085}
1086 1086
1087 1087
@@ -1125,11 +1125,11 @@ void MediaPluginGStreamer010::receiveMessage(const char *message_string)
1125 1125
1126 if ( load() ) 1126 if ( load() )
1127 { 1127 {
1128 writeToLog("GStreamer010 media instance set up"); 1128 writeToLog((char*)"GStreamer010 media instance set up");
1129 } 1129 }
1130 else 1130 else
1131 { 1131 {
1132 writeToLog("GStreamer010 media instance failed to set up"); 1132 writeToLog((char*)"GStreamer010 media instance failed to set up");
1133 } 1133 }
1134 1134
1135 message.setValue("plugin_version", getVersion()); 1135 message.setValue("plugin_version", getVersion());
@@ -1156,7 +1156,7 @@ void MediaPluginGStreamer010::receiveMessage(const char *message_string)
1156 std::string name = message_in.getValue("name"); 1156 std::string name = message_in.getValue("name");
1157 1157
1158 std::ostringstream str; 1158 std::ostringstream str;
1159 writeToLog("MediaPluginGStreamer010::receiveMessage: shared memory added, name: %s, size: %d, address: %p", name.c_str(), int(info.mSize), info.mAddress); 1159 writeToLog((char*)"MediaPluginGStreamer010::receiveMessage: shared memory added, name: %s, size: %d, address: %p", name.c_str(), int(info.mSize), info.mAddress);
1160 1160
1161 mSharedSegments.insert(SharedSegmentMap::value_type(name, info)); 1161 mSharedSegments.insert(SharedSegmentMap::value_type(name, info));
1162 } 1162 }
@@ -1164,7 +1164,7 @@ void MediaPluginGStreamer010::receiveMessage(const char *message_string)
1164 { 1164 {
1165 std::string name = message_in.getValue("name"); 1165 std::string name = message_in.getValue("name");
1166 1166
1167 writeToLog("MediaPluginGStreamer010::receiveMessage: shared memory remove, name = %s", name.c_str()); 1167 writeToLog((char*)"MediaPluginGStreamer010::receiveMessage: shared memory remove, name = %s", name.c_str());
1168 1168
1169 SharedSegmentMap::iterator iter = mSharedSegments.find(name); 1169 SharedSegmentMap::iterator iter = mSharedSegments.find(name);
1170 if(iter != mSharedSegments.end()) 1170 if(iter != mSharedSegments.end())
@@ -1182,7 +1182,7 @@ void MediaPluginGStreamer010::receiveMessage(const char *message_string)
1182 } 1182 }
1183 else 1183 else
1184 { 1184 {
1185 writeToLog("MediaPluginGStreamer010::receiveMessage: unknown shared memory region!"); 1185 writeToLog((char*)"MediaPluginGStreamer010::receiveMessage: unknown shared memory region!");
1186 } 1186 }
1187 1187
1188 // Send the response so it can be cleaned up. 1188 // Send the response so it can be cleaned up.
@@ -1193,7 +1193,7 @@ void MediaPluginGStreamer010::receiveMessage(const char *message_string)
1193 else 1193 else
1194 { 1194 {
1195 std::ostringstream str; 1195 std::ostringstream str;
1196 writeToLog("MediaPluginGStreamer010::receiveMessage: unknown base message: %s", message_name.c_str()); 1196 writeToLog((char*)"MediaPluginGStreamer010::receiveMessage: unknown base message: %s", message_name.c_str());
1197 } 1197 }
1198 } 1198 }
1199 else if(message_class == LLPLUGIN_MESSAGE_CLASS_MEDIA) 1199 else if(message_class == LLPLUGIN_MESSAGE_CLASS_MEDIA)
@@ -1236,7 +1236,7 @@ void MediaPluginGStreamer010::receiveMessage(const char *message_string)
1236 S32 texture_height = message_in.getValueS32("texture_height"); 1236 S32 texture_height = message_in.getValueS32("texture_height");
1237 1237
1238 std::ostringstream str; 1238 std::ostringstream str;
1239 writeToLog("---->Got size change instruction from application with shm name: %s - size is %d x %d", name.c_str(), width, height); 1239 writeToLog((char*)"---->Got size change instruction from application with shm name: %s - size is %d x %d", name.c_str(), width, height);
1240 1240
1241 LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "size_change_response"); 1241 LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "size_change_response");
1242 message.setValue("name", name); 1242 message.setValue("name", name);
@@ -1252,8 +1252,8 @@ void MediaPluginGStreamer010::receiveMessage(const char *message_string)
1252 SharedSegmentMap::iterator iter = mSharedSegments.find(name); 1252 SharedSegmentMap::iterator iter = mSharedSegments.find(name);
1253 if(iter != mSharedSegments.end()) 1253 if(iter != mSharedSegments.end())
1254 { 1254 {
1255 writeToLog("*** Got size change with matching shm, new size is %d x %d", width, height); 1255 writeToLog((char*)"*** Got size change with matching shm, new size is %d x %d", width, height);
1256 writeToLog("*** Got size change with matching shm, texture size size is %d x %d", texture_width, texture_height); 1256 writeToLog((char*)"*** Got size change with matching shm, texture size size is %d x %d", texture_width, texture_height);
1257 1257
1258 mPixels = (unsigned char*)iter->second.mAddress; 1258 mPixels = (unsigned char*)iter->second.mAddress;
1259 mTextureSegmentName = name; 1259 mTextureSegmentName = name;
@@ -1263,7 +1263,7 @@ void MediaPluginGStreamer010::receiveMessage(const char *message_string)
1263 if (texture_width > 1 || 1263 if (texture_width > 1 ||
1264 texture_height > 1) // not a dummy size from the app, a real explicit forced size 1264 texture_height > 1) // not a dummy size from the app, a real explicit forced size
1265 { 1265 {
1266 writeToLog("**** = REAL RESIZE REQUEST FROM APP"); 1266 writeToLog((char*)"**** = REAL RESIZE REQUEST FROM APP");
1267 1267
1268 GST_OBJECT_LOCK(mVideoSink); 1268 GST_OBJECT_LOCK(mVideoSink);
1269 mVideoSink->resize_forced_always = true; 1269 mVideoSink->resize_forced_always = true;
@@ -1345,7 +1345,7 @@ void MediaPluginGStreamer010::receiveMessage(const char *message_string)
1345 } 1345 }
1346 else 1346 else
1347 { 1347 {
1348 writeToLog("MediaPluginGStreamer010::receiveMessage: unknown message class: %s", message_class.c_str()); 1348 writeToLog((char*)"MediaPluginGStreamer010::receiveMessage: unknown message class: %s", message_class.c_str());
1349 } 1349 }
1350 } 1350 }
1351} 1351}
diff --git a/linden/indra/newview/CMakeLists.txt b/linden/indra/newview/CMakeLists.txt
index d8053ae..f4c3755 100644
--- a/linden/indra/newview/CMakeLists.txt
+++ b/linden/indra/newview/CMakeLists.txt
@@ -497,6 +497,7 @@ set(viewer_SOURCE_FILES
497 rlvmultistringsearch.cpp 497 rlvmultistringsearch.cpp
498 rlvextensions.cpp 498 rlvextensions.cpp
499 rlvfloaterbehaviour.cpp 499 rlvfloaterbehaviour.cpp
500 slfloatermediafilter.cpp
500 viewertime.cpp 501 viewertime.cpp
501 viewerversion.cpp 502 viewerversion.cpp
502 windlightsettingsupdate.cpp 503 windlightsettingsupdate.cpp
@@ -966,6 +967,7 @@ set(viewer_HEADER_FILES
966 rlvmultistringsearch.h 967 rlvmultistringsearch.h
967 rlvextensions.h 968 rlvextensions.h
968 rlvfloaterbehaviour.h 969 rlvfloaterbehaviour.h
970 slfloatermediafilter.h
969 VertexCache.h 971 VertexCache.h
970 VorbisFramework.h 972 VorbisFramework.h
971 viewertime.h 973 viewertime.h
diff --git a/linden/indra/newview/app_settings/default_grids.xml b/linden/indra/newview/app_settings/default_grids.xml
index d3068b1..b86385a 100644
--- a/linden/indra/newview/app_settings/default_grids.xml
+++ b/linden/indra/newview/app_settings/default_grids.xml
@@ -1,7 +1,7 @@
1<llsd> 1<llsd>
2 <array> 2 <array>
3 <map> 3 <map>
4 <key>default_grids_version</key><string>31</string> 4 <key>default_grids_version</key><string>32</string>
5 </map> 5 </map>
6 6
7 <!-- Second Life --> 7 <!-- Second Life -->
@@ -60,6 +60,21 @@
60 <key>version</key><string>2</string> 60 <key>version</key><string>2</string>
61 </map> 61 </map>
62 62
63 <!-- Aurora Grid -->
64 <map>
65 <key>gridname</key> <string>Aurora-Grid</string>
66 <key>gridnick</key> <string>auroragrid</string>
67 <key>platform</key> <string>OpenSim</string>
68 <key>loginuri</key> <string>http://login.aurora-sim.org:8002/</string>
69 <key>loginpage</key> <string>http://login.aurora-sim.org/splash/</string>
70 <key>helperuri</key> <string>http://grid.aurora-sim.org/</string>
71 <key>password</key> <string />
72 <key>register</key> <string />
73 <key>support</key> <string>http://forum.aurora-sim.org/</string>
74 <key>website</key> <string>http://aurora-sim.org</string>
75 <key>version</key> <string>0</string>
76 </map>
77
63 <!-- WorldSimTerra --> 78 <!-- WorldSimTerra -->
64 <map> 79 <map>
65 <key>gridnick</key><string>worldsimterra</string> 80 <key>gridnick</key><string>worldsimterra</string>
diff --git a/linden/indra/newview/app_settings/logcontrol.xml b/linden/indra/newview/app_settings/logcontrol.xml
index 353ae72..027afaf 100644
--- a/linden/indra/newview/app_settings/logcontrol.xml
+++ b/linden/indra/newview/app_settings/logcontrol.xml
@@ -57,7 +57,8 @@
57 <!--<string>Inventory</string>--> 57 <!--<string>Inventory</string>-->
58 <!--<string>HUDEffect</string>--> 58 <!--<string>HUDEffect</string>-->
59 <!--<string>MarkerFile</string>--> 59 <!--<string>MarkerFile</string>-->
60 <!--<string>MediaImpl</string>--> 60 <!--<string>Media</string>-->
61 <string>MediaFilter</string>
61 <!--<string>MediaInfo</string>--> 62 <!--<string>MediaInfo</string>-->
62 <!--<string>MediaCallback</string>--> 63 <!--<string>MediaCallback</string>-->
63 <!--<string>MediaBuffering</string>--> 64 <!--<string>MediaBuffering</string>-->
@@ -65,15 +66,18 @@
65 <!--<string>MediaState</string>--> 66 <!--<string>MediaState</string>-->
66 67
67 <!--<string>Messaging</string>--> 68 <!--<string>Messaging</string>-->
69
70 <string>NewsBar</string>
68 <!--<string>Notifications</string>--> 71 <!--<string>Notifications</string>-->
69 <string>Plugin</string> 72
70 <string>PluginClassMedia</string> 73 <!--<string>Plugin</string>-->
71 <string>PluginInstance</string> 74 <!--<string>PluginClassMedia</string>-->
72 <string>PluginPipe</string> 75 <!--<string>PluginInstance</string>-->
73 <string>PluginChild</string> 76 <!--<string>PluginPipe</string>-->
74 <!--<string>PluginSpam</string>--> 77 <!--<string>PluginChild</string>-->
75 <string>PluginParent</string> 78 <!--<string>PluginSpam</string>-->
76 <string>PluginViewerMedia</string> 79 <!--<string>PluginParent</string>-->
80 <!--<string>PluginViewerMedia</string>-->
77 81
78 <!--<string>Radar</string>--> 82 <!--<string>Radar</string>-->
79 <!--<string>ShaderLoading</string>--> 83 <!--<string>ShaderLoading</string>-->
diff --git a/linden/indra/newview/app_settings/settings.xml b/linden/indra/newview/app_settings/settings.xml
index c6375f9..183a910 100644
--- a/linden/indra/newview/app_settings/settings.xml
+++ b/linden/indra/newview/app_settings/settings.xml
@@ -37,7 +37,17 @@
37 <key>Value</key> 37 <key>Value</key>
38 <integer>0</integer> 38 <integer>0</integer>
39 </map> 39 </map>
40 40 <key>VoiceModule</key>
41 <map>
42 <key>Comment</key>
43 <string>Executable file that runs voice. Platform specific parts (like .exe on windows) are added automatically.</string>
44 <key>Persist</key>
45 <integer>1</integer>
46 <key>Type</key>
47 <string>String</string>
48 <key>Value</key>
49 <string>SLVoice</string>
50 </map>
41 <!-- Imprudence-specific settings --> 51 <!-- Imprudence-specific settings -->
42 52
43 <key>AllowEditingOfTrees</key> 53 <key>AllowEditingOfTrees</key>
@@ -851,7 +861,7 @@
851 <key>ParticleChat</key> 861 <key>ParticleChat</key>
852 <map> 862 <map>
853 <key>Comment</key> 863 <key>Comment</key>
854 <string>Chat target of effect beam to channel 9000</string> 864 <string>Chat target of effect beam to channel given by ParticleChatChannel</string>
855 <key>Persist</key> 865 <key>Persist</key>
856 <integer>1</integer> 866 <integer>1</integer>
857 <key>Type</key> 867 <key>Type</key>
@@ -859,6 +869,17 @@
859 <key>Value</key> 869 <key>Value</key>
860 <integer>0</integer> 870 <integer>0</integer>
861 </map> 871 </map>
872 <key>ParticleChatChannel</key>
873 <map>
874 <key>Comment</key>
875 <string>Channel for the ParticleChat target</string>
876 <key>Persist</key>
877 <integer>1</integer>
878 <key>Type</key>
879 <string>S32</string>
880 <key>Value</key>
881 <integer>118000</integer>
882 </map>
862 <key>PersistShowLookAt</key> 883 <key>PersistShowLookAt</key>
863 <map> 884 <map>
864 <key>Comment</key> 885 <key>Comment</key>
@@ -7958,6 +7979,33 @@
7958 <key>Value</key> 7979 <key>Value</key>
7959 <real>3.0</real> 7980 <real>3.0</real>
7960 </map> 7981 </map>
7982 <key>MediaEnableFilter</key>
7983 <map>
7984 <key>Comment</key>
7985 <string>Enable media domain filtering</string>
7986 <key>Persist</key>
7987 <integer>1</integer>
7988 <key>Type</key>
7989 <string>Boolean</string>
7990 <key>Value</key>
7991 <integer>1</integer>
7992 </map>
7993 <key>MediaFilterRect</key>
7994 <map>
7995 <key>Comment</key>
7996 <string>Rectangle for Media Filter floater</string>
7997 <key>Persist</key>
7998 <integer>1</integer>
7999 <key>Type</key>
8000 <string>Rect</string>
8001 <key>Value</key>
8002 <array>
8003 <integer>0</integer>
8004 <integer>100</integer>
8005 <integer>100</integer>
8006 <integer>100</integer>
8007 </array>
8008 </map>
7961 <key>MediaOnAPrimUI</key> 8009 <key>MediaOnAPrimUI</key>
7962 <map> 8010 <map>
7963 <key>Comment</key> 8011 <key>Comment</key>
diff --git a/linden/indra/newview/app_settings/viewerversion.xml b/linden/indra/newview/app_settings/viewerversion.xml
index f9b0ba2..bb1b996 100644
--- a/linden/indra/newview/app_settings/viewerversion.xml
+++ b/linden/indra/newview/app_settings/viewerversion.xml
@@ -20,6 +20,6 @@ need to be changed manually - MC
20 <viewer version_patch="0" /> 20 <viewer version_patch="0" />
21 21
22 <!--string--> 22 <!--string-->
23 <viewer version_test="Experimental 2010.11.13" /> 23 <viewer version_test="Experimental 2011.03.11" />
24 24
25</viewer_version> 25</viewer_version>
diff --git a/linden/indra/newview/character/attentions.xml b/linden/indra/newview/character/attentions.xml
index 1b14c0c..be9a2b2 100644
--- a/linden/indra/newview/character/attentions.xml
+++ b/linden/indra/newview/character/attentions.xml
@@ -1,51 +1,51 @@
1<?xml version="1.0" encoding="US-ASCII" standalone="yes"?> 1<?xml version="1.0" encoding="US-ASCII" standalone="yes"?>
2<!-- 2<!--
3Default values for "Look At" controls. 3Default values for "Look At" controls.
4Various events compete for avatar attention. I.E. control where the 4Various events compete for avatar attention. I.E. control where the
5user's avatar looks. 5user's avatar looks.
6The avatar's head will turn to look towards the source of those events 6The avatar's head will turn to look towards the source of those events
7as much as is possible. 7as much as is possible.
8If the head cannot turn due to an animation override, the eyes will still 8If the head cannot turn due to an animation override, the eyes will still
9track those events. 9track those events.
10Avatar attention will be taken by events of equal of greater priorities 10Avatar attention will be taken by events of equal of greater priorities
11and will last for timeout number of seconds before reverting to idle. 11and will last for timeout number of seconds before reverting to idle.
12Negative timeout values indicate attentions that never time out. 12Negative timeout values indicate attentions that never time out.
13Avatar sex determines which set of attention settings are used. 13Avatar sex determines which set of attention settings are used.
14Within each set, the following named attentions relate to the indicated events: 14Within each set, the following named attentions relate to the indicated events:
15 15
16IDLE: Tracks the mouse pointer movement. 16IDLE: Tracks the mouse pointer movement.
17AUTO LISTEN: Tracks nearby chat. 17AUTO LISTEN: Tracks nearby chat.
18FREELOOK: Tracks "target objects" and a case of mouse moved in 3rd person mode. 18FREELOOK: Tracks "target objects" and a case of mouse moved in 3rd person mode.
19RESPOND: Tracks the beginning of typing. 19RESPOND: Tracks the beginning of typing.
20HOVER: Tracks objects the mouse lingers over when "show hover tooltips" is on. 20HOVER: Tracks objects the mouse lingers over when "show hover tooltips" is on.
21CONVERSATION: Tracks avatars and other objects clicked on. 21CONVERSATION: Tracks avatars and other objects clicked on.
22SEOECT: Tracks objects grabbed and being moved. 22SEOECT: Tracks objects grabbed and being moved.
23FOCUS: Freezes during avatar customization and when focused on object or point. 23FOCUS: Freezes during avatar customization and when focused on object or point.
24MOUSELOOK: Tracks center of view when in mouselook view mode. 24MOUSELOOK: Tracks center of view when in mouselook view mode.
25--> 25-->
26 26
27<linden_attentions version="1.0"> 27<linden_attentions version="1.0">
28 <gender name="Masculine"> 28 <gender name="Masculine">
29 <param attention="idle" priority="1.0" timeout="3.0" /> 29 <param attention="idle" priority="1.0" timeout="3.0" />
30 <param attention="auto_listen" priority="3.0" timeout="4.0" /> 30 <param attention="auto_listen" priority="3.0" timeout="4.0" />
31 <param attention="freelook" priority="2.0" timeout="2.0" /> 31 <param attention="freelook" priority="2.0" timeout="2.0" />
32 <param attention="respond" priority="3.0" timeout="4.0" /> 32 <param attention="respond" priority="3.0" timeout="4.0" />
33 <param attention="hover" priority="4.0" timeout="1.0" /> 33 <param attention="hover" priority="4.0" timeout="1.0" />
34 <param attention="conversation" priority="0.0" timeout="-1" /> 34 <param attention="conversation" priority="0.0" timeout="-1" />
35 <param attention="select" priority="6.0" timeout="-1" /> 35 <param attention="select" priority="6.0" timeout="-1" />
36 <param attention="focus" priority="6.0" timeout="-1" /> 36 <param attention="focus" priority="6.0" timeout="-1" />
37 <param attention="mouselook" priority="7.0" timeout="-1" /> 37 <param attention="mouselook" priority="7.0" timeout="-1" />
38 </gender> 38 </gender>
39 <gender name="Feminine"> 39 <gender name="Feminine">
40 <param attention="idle" priority="1.0" timeout="3.0" /> 40 <param attention="idle" priority="1.0" timeout="3.0" />
41 <param attention="auto_listen" priority="3.0" timeout="4.0" /> 41 <param attention="auto_listen" priority="3.0" timeout="4.0" />
42 <param attention="freelook" priority="2.0" timeout="2.0" /> 42 <param attention="freelook" priority="2.0" timeout="2.0" />
43 <param attention="respond" priority="3.0" timeout="4.0" /> 43 <param attention="respond" priority="3.0" timeout="4.0" />
44 <param attention="hover" priority="4.0" timeout="1.0" /> 44 <param attention="hover" priority="4.0" timeout="1.0" />
45 <param attention="conversation" priority="0.0" timeout="-1" /> 45 <param attention="conversation" priority="0.0" timeout="-1" />
46 <param attention="select" priority="6.0" timeout="-1" /> 46 <param attention="select" priority="6.0" timeout="-1" />
47 <param attention="focus" priority="6.0" timeout="-1" /> 47 <param attention="focus" priority="6.0" timeout="-1" />
48 <param attention="mouselook" priority="7.0" timeout="-1" /> 48 <param attention="mouselook" priority="7.0" timeout="-1" />
49 </gender> 49 </gender>
50</linden_attentions> 50</linden_attentions>
51 51
diff --git a/linden/indra/newview/character/attentionsN.xml b/linden/indra/newview/character/attentionsN.xml
index 7c02415..e7d9bb6 100644
--- a/linden/indra/newview/character/attentionsN.xml
+++ b/linden/indra/newview/character/attentionsN.xml
@@ -1,51 +1,51 @@
1<?xml version="1.0" encoding="US-ASCII" standalone="yes"?> 1<?xml version="1.0" encoding="US-ASCII" standalone="yes"?>
2<!-- 2<!--
3Default values for "Look At" controls. 3Default values for "Look At" controls.
4Various events compete for avatar attention. I.E. control where the 4Various events compete for avatar attention. I.E. control where the
5user's avatar looks. 5user's avatar looks.
6The avatar's head will turn to look towards the source of those events 6The avatar's head will turn to look towards the source of those events
7as much as is possible. 7as much as is possible.
8If the head cannot turn due to an animation override, the eyes will still 8If the head cannot turn due to an animation override, the eyes will still
9track those events. 9track those events.
10Avatar attention will be taken by events of equal of greater priorities 10Avatar attention will be taken by events of equal of greater priorities
11and will last for timeout number of seconds before reverting to idle. 11and will last for timeout number of seconds before reverting to idle.
12Negative timeout values indicate attentions that never time out. 12Negative timeout values indicate attentions that never time out.
13Avatar sex determines which set of attention settings are used. 13Avatar sex determines which set of attention settings are used.
14Within each set, the following named attentions relate to the indicated events: 14Within each set, the following named attentions relate to the indicated events:
15 15
16IDLE: Tracks the mouse pointer movement. 16IDLE: Tracks the mouse pointer movement.
17AUTO LISTEN: Tracks nearby chat. 17AUTO LISTEN: Tracks nearby chat.
18FREELOOK: Tracks "target objects" and a case of mouse moved in 3rd person mode. 18FREELOOK: Tracks "target objects" and a case of mouse moved in 3rd person mode.
19RESPOND: Tracks the beginning of typing. 19RESPOND: Tracks the beginning of typing.
20HOVER: Tracks objects the mouse lingers over when "show hover tooltips" is on. 20HOVER: Tracks objects the mouse lingers over when "show hover tooltips" is on.
21CONVERSATION: Tracks avatars and other objects clicked on. 21CONVERSATION: Tracks avatars and other objects clicked on.
22SEOECT: Tracks objects grabbed and being moved. 22SEOECT: Tracks objects grabbed and being moved.
23FOCUS: Freezes during avatar customization and when focused on object or point. 23FOCUS: Freezes during avatar customization and when focused on object or point.
24MOUSELOOK: Tracks center of view when in mouselook view mode. 24MOUSELOOK: Tracks center of view when in mouselook view mode.
25--> 25-->
26 26
27<linden_attentions version="1.0"> 27<linden_attentions version="1.0">
28 <gender name="Masculine"> 28 <gender name="Masculine">
29 <param attention="idle" priority="1.0" timeout="3.0" /> 29 <param attention="idle" priority="1.0" timeout="3.0" />
30 <param attention="auto_listen" priority="3.0" timeout="4.0" /> 30 <param attention="auto_listen" priority="3.0" timeout="4.0" />
31 <param attention="freelook" priority="2.0" timeout="2.0" /> 31 <param attention="freelook" priority="2.0" timeout="2.0" />
32 <param attention="respond" priority="3.0" timeout="3.0" /> 32 <param attention="respond" priority="3.0" timeout="3.0" />
33 <param attention="hover" priority="4.0" timeout="1.0" /> 33 <param attention="hover" priority="4.0" timeout="1.0" />
34 <param attention="conversation" priority="5.0" timeout="3.0" /> 34 <param attention="conversation" priority="5.0" timeout="3.0" />
35 <param attention="select" priority="3.5" timeout="-1" /> 35 <param attention="select" priority="3.5" timeout="-1" />
36 <param attention="focus" priority="3.5" timeout="20.0" /> 36 <param attention="focus" priority="3.5" timeout="20.0" />
37 <param attention="mouselook" priority="7.0" timeout="-1" /> 37 <param attention="mouselook" priority="7.0" timeout="-1" />
38 </gender> 38 </gender>
39 <gender name="Feminine"> 39 <gender name="Feminine">
40 <param attention="idle" priority="1.0" timeout="3.0" /> 40 <param attention="idle" priority="1.0" timeout="3.0" />
41 <param attention="auto_listen" priority="3.0" timeout="4.0" /> 41 <param attention="auto_listen" priority="3.0" timeout="4.0" />
42 <param attention="freelook" priority="2.0" timeout="2.0" /> 42 <param attention="freelook" priority="2.0" timeout="2.0" />
43 <param attention="respond" priority="3.0" timeout="6.0" /> 43 <param attention="respond" priority="3.0" timeout="6.0" />
44 <param attention="hover" priority="4.0" timeout="1.0" /> 44 <param attention="hover" priority="4.0" timeout="1.0" />
45 <param attention="conversation" priority="5.0" timeout="6.0" /> 45 <param attention="conversation" priority="5.0" timeout="6.0" />
46 <param attention="select" priority="2.5" timeout="-1" /> 46 <param attention="select" priority="2.5" timeout="-1" />
47 <param attention="focus" priority="2.5" timeout="10.0" /> 47 <param attention="focus" priority="2.5" timeout="10.0" />
48 <param attention="mouselook" priority="7.0" timeout="-1" /> 48 <param attention="mouselook" priority="7.0" timeout="-1" />
49 </gender> 49 </gender>
50</linden_attentions> 50</linden_attentions>
51 51
diff --git a/linden/indra/newview/character/avatar_lad.xml b/linden/indra/newview/character/avatar_lad.xml
index e9665af..e9c9f0a 100644
--- a/linden/indra/newview/character/avatar_lad.xml
+++ b/linden/indra/newview/character/avatar_lad.xml
@@ -1,11328 +1,11417 @@
1<?xml version="1.0" encoding="US-ASCII" standalone="yes"?> 1<?xml version="1.0" encoding="US-ASCII" standalone="yes"?>
2<linden_avatar 2<linden_avatar
3 version="1.0" 3 version="1.0"
4 wearable_definition_version="22"> 4 wearable_definition_version="22">
5 <!-- The wearable_definition_version is checked during asset upload. --> 5 <!-- The wearable_definition_version is checked during asset upload. -->
6 <!-- If you increment it, check indra/lib/python/indra/assetutil.py. --> 6 <!-- If you increment it, check indra/lib/python/indra/assetutil.py. -->
7 <skeleton 7 <skeleton
8 file_name="avatar_skeleton.xml"> 8 file_name="avatar_skeleton.xml">
9 <attachment_point 9 <attachment_point
10 id="1" 10 id="1"
11 group="6" 11 group="6"
12 pie_slice="2" 12 pie_slice="2"
13 name="Chest" 13 name="Chest"
14 joint="mChest" 14 joint="mChest"
15 position="0.15 0 -0.1" 15 position="0.15 0 -0.1"
16 rotation="0 90 90" 16 rotation="0 90 90"
17 visible_in_first_person="true" /> 17 visible_in_first_person="true" />
18 18
19 <attachment_point 19 <attachment_point
20 id="2" 20 id="2"
21 group="2" 21 group="2"
22 pie_slice="2" 22 pie_slice="2"
23 name="Skull" 23 name="Skull"
24 joint="mHead" 24 joint="mHead"
25 position="0 0 0.15" 25 position="0 0 0.15"
26 rotation="0 0 90" 26 rotation="0 0 90"
27 visible_in_first_person="false" /> 27 visible_in_first_person="false" />
28 28
29 <attachment_point 29 <attachment_point
30 id="3" 30 id="3"
31 group="3" 31 group="3"
32 pie_slice="3" 32 pie_slice="3"
33 name="Left Shoulder" 33 name="Left Shoulder"
34 joint="mCollarLeft" 34 joint="mCollarLeft"
35 position="0 0 0.08" 35 position="0 0 0.08"
36 rotation="0 0 0" 36 rotation="0 0 0"
37 visible_in_first_person="true" /> 37 visible_in_first_person="true" />
38 38
39 <attachment_point 39 <attachment_point
40 id="4" 40 id="4"
41 group="1" 41 group="1"
42 pie_slice="1" 42 pie_slice="1"
43 name="Right Shoulder" 43 name="Right Shoulder"
44 joint="mCollarRight" 44 joint="mCollarRight"
45 position="0 0 0.08" 45 position="0 0 0.08"
46 rotation="0 0 0" 46 rotation="0 0 0"
47 visible_in_first_person="true"/> 47 visible_in_first_person="true"/>
48 48
49 <attachment_point 49 <attachment_point
50 id="5" 50 id="5"
51 group="4" 51 group="4"
52 name="Left Hand" 52 name="Left Hand"
53 joint="mWristLeft" 53 joint="mWristLeft"
54 position="0 0.08 -0.02" 54 position="0 0.08 -0.02"
55 rotation="0 0 0" 55 rotation="0 0 0"
56 visible_in_first_person="true" 56 visible_in_first_person="true"
57 max_attachment_offset="1.5" /> 57 max_attachment_offset="1.5" />
58 58
59 <attachment_point 59 <attachment_point
60 id="6" 60 id="6"
61 group="0" 61 group="0"
62 name="Right Hand" 62 name="Right Hand"
63 joint="mWristRight" 63 joint="mWristRight"
64 position="0 -0.08 -0.02" 64 position="0 -0.08 -0.02"
65 rotation="0 0 0" 65 rotation="0 0 0"
66 visible_in_first_person="true" 66 visible_in_first_person="true"
67 max_attachment_offset="1.5" /> 67 max_attachment_offset="1.5" />
68 68
69 <attachment_point 69 <attachment_point
70 id="7" 70 id="7"
71 group="5" 71 group="5"
72 pie_slice="6" 72 pie_slice="6"
73 name="Left Foot" 73 name="Left Foot"
74 joint="mFootLeft" 74 joint="mFootLeft"
75 position="0 0.0 0.0" 75 position="0 0.0 0.0"
76 rotation="0 0 0" 76 rotation="0 0 0"
77 visible_in_first_person="true"/> 77 visible_in_first_person="true"/>
78 78
79 <attachment_point 79 <attachment_point
80 id="8" 80 id="8"
81 group="7" 81 group="7"
82 pie_slice="6" 82 pie_slice="6"
83 name="Right Foot" 83 name="Right Foot"
84 joint="mFootRight" 84 joint="mFootRight"
85 position="0 0.0 0.0" 85 position="0 0.0 0.0"
86 rotation="0 0 0" 86 rotation="0 0 0"
87 visible_in_first_person="true"/> 87 visible_in_first_person="true"/>
88 88
89 <attachment_point 89 <attachment_point
90 id="9" 90 id="9"
91 group="6" 91 group="6"
92 pie_slice="7" 92 pie_slice="7"
93 name="Spine" 93 name="Spine"
94 joint="mChest" 94 joint="mChest"
95 position="-0.15 0 -0.1" 95 position="-0.15 0 -0.1"
96 rotation="0 -90 90" 96 rotation="0 -90 90"
97 visible_in_first_person="true" /> 97 visible_in_first_person="true" />
98 98
99 <attachment_point 99 <attachment_point
100 id="10" 100 id="10"
101 group="6" 101 group="6"
102 pie_slice="6" 102 pie_slice="6"
103 name="Pelvis" 103 name="Pelvis"
104 joint="mPelvis" 104 joint="mPelvis"
105 position="0 0 -0.15" 105 position="0 0 -0.15"
106 rotation="0 0 0" 106 rotation="0 0 0"
107 visible_in_first_person="true" /> 107 visible_in_first_person="true" />
108 108
109 <attachment_point 109 <attachment_point
110 id="11" 110 id="11"
111 group="2" 111 group="2"
112 pie_slice="6" 112 pie_slice="6"
113 name="Mouth" 113 name="Mouth"
114 joint="mHead" 114 joint="mHead"
115 position="0.12 0 0.001" 115 position="0.12 0 0.001"
116 rotation="0 0 0" 116 rotation="0 0 0"
117 visible_in_first_person="false"/> 117 visible_in_first_person="false"/>
118 118
119 <attachment_point 119 <attachment_point
120 id="12" 120 id="12"
121 group="2" 121 group="2"
122 pie_slice="7" 122 pie_slice="7"
123 name="Chin" 123 name="Chin"
124 joint="mHead" 124 joint="mHead"
125 position="0.12 0 -0.04" 125 position="0.12 0 -0.04"
126 rotation="0 0 0" 126 rotation="0 0 0"
127 visible_in_first_person="false" /> 127 visible_in_first_person="false" />
128 128
129 <attachment_point 129 <attachment_point
130 id="13" 130 id="13"
131 group="2" 131 group="2"
132 pie_slice="4" 132 pie_slice="4"
133 name="Left Ear" 133 name="Left Ear"
134 joint="mHead" 134 joint="mHead"
135 position="0.015 0.08 0.017" 135 position="0.015 0.08 0.017"
136 rotation="0 0 0" 136 rotation="0 0 0"
137 visible_in_first_person="false" /> 137 visible_in_first_person="false" />
138 138
139 <attachment_point 139 <attachment_point
140 id="14" 140 id="14"
141 group="2" 141 group="2"
142 pie_slice="0" 142 pie_slice="0"
143 name="Right Ear" 143 name="Right Ear"
144 joint="mHead" 144 joint="mHead"
145 position="0.015 -0.08 0.017" 145 position="0.015 -0.08 0.017"
146 rotation="0 0 0" 146 rotation="0 0 0"
147 visible_in_first_person="false" /> 147 visible_in_first_person="false" />
148 148
149 <attachment_point 149 <attachment_point
150 id="15" 150 id="15"
151 group="2" 151 group="2"
152 pie_slice="3" 152 pie_slice="3"
153 name="Left Eyeball" 153 name="Left Eyeball"
154 joint="mEyeLeft" 154 joint="mEyeLeft"
155 position="0 0 0" 155 position="0 0 0"
156 rotation="0 0 0" 156 rotation="0 0 0"
157 visible_in_first_person="false"/> 157 visible_in_first_person="false"/>
158 158
159 <attachment_point 159 <attachment_point
160 id="16" 160 id="16"
161 group="2" 161 group="2"
162 pie_slice="1" 162 pie_slice="1"
163 name="Right Eyeball" 163 name="Right Eyeball"
164 joint="mEyeRight" 164 joint="mEyeRight"
165 position="0 0 0" 165 position="0 0 0"
166 rotation="0 0 0" 166 rotation="0 0 0"
167 visible_in_first_person="false" /> 167 visible_in_first_person="false" />
168 168
169 <attachment_point 169 <attachment_point
170 id="17" 170 id="17"
171 group="2" 171 group="2"
172 pie_slice="5" 172 pie_slice="5"
173 name="Nose" 173 name="Nose"
174 joint="mHead" 174 joint="mHead"
175 position="0.1 0 0.05" 175 position="0.1 0 0.05"
176 rotation="0 0 0" 176 rotation="0 0 0"
177 visible_in_first_person="false"/> 177 visible_in_first_person="false"/>
178 178
179 <attachment_point 179 <attachment_point
180 id="18" 180 id="18"
181 group="1" 181 group="1"
182 pie_slice="0" 182 pie_slice="0"
183 name="R Upper Arm" 183 name="R Upper Arm"
184 joint="mShoulderRight" 184 joint="mShoulderRight"
185 position="0.01 -0.13 0.01" 185 position="0.01 -0.13 0.01"
186 rotation="0 0 0" 186 rotation="0 0 0"
187 visible_in_first_person="true" /> 187 visible_in_first_person="true" />
188 188
189 <attachment_point 189 <attachment_point
190 id="19" 190 id="19"
191 group="1" 191 group="1"
192 pie_slice="7" 192 pie_slice="7"
193 name="R Forearm" 193 name="R Forearm"
194 joint="mElbowRight" 194 joint="mElbowRight"
195 position="0 -0.12 0" 195 position="0 -0.12 0"
196 rotation="0 0 0" 196 rotation="0 0 0"
197 visible_in_first_person="true"/> 197 visible_in_first_person="true"/>
198 198
199 <attachment_point 199 <attachment_point
200 id="20" 200 id="20"
201 group="3" 201 group="3"
202 pie_slice="4" 202 pie_slice="4"
203 name="L Upper Arm" 203 name="L Upper Arm"
204 joint="mShoulderLeft" 204 joint="mShoulderLeft"
205 position="0.01 0.15 -0.01" 205 position="0.01 0.15 -0.01"
206 rotation="0 0 0" 206 rotation="0 0 0"
207 visible_in_first_person="true" /> 207 visible_in_first_person="true" />
208 208
209 <attachment_point 209 <attachment_point
210 id="21" 210 id="21"
211 group="3" 211 group="3"
212 pie_slice="5" 212 pie_slice="5"
213 name="L Forearm" 213 name="L Forearm"
214 joint="mElbowLeft" 214 joint="mElbowLeft"
215 position="0 0.113 0" 215 position="0 0.113 0"
216 rotation="0 0 0" 216 rotation="0 0 0"
217 visible_in_first_person="true" /> 217 visible_in_first_person="true" />
218 218
219 <attachment_point 219 <attachment_point
220 id="22" 220 id="22"
221 group="7" 221 group="7"
222 pie_slice="1" 222 pie_slice="1"
223 name="Right Hip" 223 name="Right Hip"
224 joint="mHipRight" 224 joint="mHipRight"
225 position="0 0 0" 225 position="0 0 0"
226 rotation="0 0 0" 226 rotation="0 0 0"
227 visible_in_first_person="true" /> 227 visible_in_first_person="true" />
228 228
229 <attachment_point 229 <attachment_point
230 id="23" 230 id="23"
231 group="7" 231 group="7"
232 pie_slice="0" 232 pie_slice="0"
233 name="R Upper Leg" 233 name="R Upper Leg"
234 joint="mHipRight" 234 joint="mHipRight"
235 position="-0.017 0.041 -0.310" 235 position="-0.017 0.041 -0.310"
236 rotation="0 0 0" 236 rotation="0 0 0"
237 visible_in_first_person="true" /> 237 visible_in_first_person="true" />
238 238
239 <attachment_point 239 <attachment_point
240 id="24" 240 id="24"
241 group="7" 241 group="7"
242 pie_slice="7" 242 pie_slice="7"
243 name="R Lower Leg" 243 name="R Lower Leg"
244 joint="mKneeRight" 244 joint="mKneeRight"
245 position="-0.044 -0.007 -0.262" 245 position="-0.044 -0.007 -0.262"
246 rotation="0 0 0" 246 rotation="0 0 0"
247 visible_in_first_person="true" /> 247 visible_in_first_person="true" />
248 248
249 <attachment_point 249 <attachment_point
250 id="25" 250 id="25"
251 group="5" 251 group="5"
252 pie_slice="3" 252 pie_slice="3"
253 name="Left Hip" 253 name="Left Hip"
254 joint="mHipLeft" 254 joint="mHipLeft"
255 position="0 0 0" 255 position="0 0 0"
256 rotation="0 0 0" 256 rotation="0 0 0"
257 visible_in_first_person="true" /> 257 visible_in_first_person="true" />
258 258
259 <attachment_point 259 <attachment_point
260 id="26" 260 id="26"
261 group="5" 261 group="5"
262 pie_slice="4" 262 pie_slice="4"
263 name="L Upper Leg" 263 name="L Upper Leg"
264 joint="mHipLeft" 264 joint="mHipLeft"
265 position="-0.019 -0.034 -0.310" 265 position="-0.019 -0.034 -0.310"
266 rotation="0 0 0" 266 rotation="0 0 0"
267 visible_in_first_person="true"/> 267 visible_in_first_person="true"/>
268 268
269 <attachment_point 269 <attachment_point
270 id="27" 270 id="27"
271 group="5" 271 group="5"
272 pie_slice="5" 272 pie_slice="5"
273 name="L Lower Leg" 273 name="L Lower Leg"
274 joint="mKneeLeft" 274 joint="mKneeLeft"
275 position="-0.044 -0.007 -0.261" 275 position="-0.044 -0.007 -0.261"
276 rotation="0 0 0" 276 rotation="0 0 0"
277 visible_in_first_person="true" /> 277 visible_in_first_person="true" />
278 278
279 <attachment_point 279 <attachment_point
280 id="28" 280 id="28"
281 group="6" 281 group="6"
282 pie_slice="5" 282 pie_slice="5"
283 name="Stomach" 283 name="Stomach"
284 joint="mPelvis" 284 joint="mPelvis"
285 position="0.092 0.0 0.088" 285 position="0.092 0.0 0.088"
286 rotation="0 0 0" 286 rotation="0 0 0"
287 visible_in_first_person="true" /> 287 visible_in_first_person="true" />
288 288
289 <attachment_point 289 <attachment_point
290 id="29" 290 id="29"
291 group="6" 291 group="6"
292 pie_slice="3" 292 pie_slice="3"
293 name="Left Pec" 293 name="Left Pec"
294 joint="mTorso" 294 joint="mTorso"
295 position="0.104 0.082 0.247" 295 position="0.104 0.082 0.247"
296 rotation="0 0 0" 296 rotation="0 0 0"
297 visible_in_first_person="true" /> 297 visible_in_first_person="true" />
298 298
299 <attachment_point 299 <attachment_point
300 id="30" 300 id="30"
301 group="6" 301 group="6"
302 pie_slice="1" 302 pie_slice="1"
303 name="Right Pec" 303 name="Right Pec"
304 joint="mTorso" 304 joint="mTorso"
305 position="0.104 -0.082 0.247" 305 position="0.104 -0.082 0.247"
306 rotation="0 0 0" 306 rotation="0 0 0"
307 visible_in_first_person="true" /> 307 visible_in_first_person="true" />
308 308
309 <attachment_point 309 <attachment_point
310 id="31" 310 id="31"
311 group="8" 311 group="8"
312 name="Center 2" 312 name="Center 2"
313 joint="mScreen" 313 joint="mScreen"
314 position="0 0 0" 314 position="0 0 0"
315 rotation="0 0 0" 315 rotation="0 0 0"
316 hud="true" 316 hud="true"
317 max_attachment_offset="2.0" 317 max_attachment_offset="2.0"
318 visible_in_first_person="true" /> 318 visible_in_first_person="true" />
319 319
320 <attachment_point 320 <attachment_point
321 id="32" 321 id="32"
322 group="8" 322 group="8"
323 name="Top Right" 323 name="Top Right"
324 joint="mScreen" 324 joint="mScreen"
325 position="0 -0.5 0.5" 325 position="0 -0.5 0.5"
326 rotation="0 0 0" 326 rotation="0 0 0"
327 hud="true" 327 hud="true"
328 max_attachment_offset="2.0" 328 max_attachment_offset="2.0"
329 visible_in_first_person="true" /> 329 visible_in_first_person="true" />
330 330
331 <attachment_point 331 <attachment_point
332 id="33" 332 id="33"
333 group="8" 333 group="8"
334 name="Top" 334 name="Top"
335 joint="mScreen" 335 joint="mScreen"
336 position="0 0 0.5" 336 position="0 0 0.5"
337 rotation="0 0 0" 337 rotation="0 0 0"
338 hud="true" 338 hud="true"
339 max_attachment_offset="2.0" 339 max_attachment_offset="2.0"
340 visible_in_first_person="true" /> 340 visible_in_first_person="true" />
341 341
342 <attachment_point 342 <attachment_point
343 id="34" 343 id="34"
344 group="8" 344 group="8"
345 name="Top Left" 345 name="Top Left"
346 joint="mScreen" 346 joint="mScreen"
347 position="0 0.5 0.5" 347 position="0 0.5 0.5"
348 rotation="0 0 0" 348 rotation="0 0 0"
349 hud="true" 349 hud="true"
350 max_attachment_offset="2.0" 350 max_attachment_offset="2.0"
351 visible_in_first_person="true" /> 351 visible_in_first_person="true" />
352 352
353 <attachment_point 353 <attachment_point
354 id="35" 354 id="35"
355 group="8" 355 group="8"
356 name="Center" 356 name="Center"
357 joint="mScreen" 357 joint="mScreen"
358 position="0 0 0" 358 position="0 0 0"
359 rotation="0 0 0" 359 rotation="0 0 0"
360 hud="true" 360 hud="true"
361 max_attachment_offset="2.0" 361 max_attachment_offset="2.0"
362 visible_in_first_person="true" /> 362 visible_in_first_person="true" />
363 363
364 <attachment_point 364 <attachment_point
365 id="36" 365 id="36"
366 group="8" 366 group="8"
367 name="Bottom Left" 367 name="Bottom Left"
368 joint="mScreen" 368 joint="mScreen"
369 position="0 0.5 -0.5" 369 position="0 0.5 -0.5"
370 rotation="0 0 0" 370 rotation="0 0 0"
371 hud="true" 371 hud="true"
372 max_attachment_offset="2.0" 372 max_attachment_offset="2.0"
373 visible_in_first_person="true" /> 373 visible_in_first_person="true" />
374 374
375 <attachment_point 375 <attachment_point
376 id="37" 376 id="37"
377 group="8" 377 group="8"
378 name="Bottom" 378 name="Bottom"
379 joint="mScreen" 379 joint="mScreen"
380 position="0 0 -0.5" 380 position="0 0 -0.5"
381 rotation="0 0 0" 381 rotation="0 0 0"
382 hud="true" 382 hud="true"
383 max_attachment_offset="2.0" 383 max_attachment_offset="2.0"
384 visible_in_first_person="true" /> 384 visible_in_first_person="true" />
385 385
386 <attachment_point 386 <attachment_point
387 id="38" 387 id="38"
388 group="8" 388 group="8"
389 name="Bottom Right" 389 name="Bottom Right"
390 joint="mScreen" 390 joint="mScreen"
391 position="0 -0.5 -0.5" 391 position="0 -0.5 -0.5"
392 rotation="0 0 0" 392 rotation="0 0 0"
393 hud="true" 393 hud="true"
394 max_attachment_offset="2.0" 394 max_attachment_offset="2.0"
395 visible_in_first_person="true" /> 395 visible_in_first_person="true" />
396 396
397 <param 397 <param
398 id="32" 398 id="32"
399 group="1" 399 group="1"
400 wearable="shape" 400 wearable="shape"
401 name="Male_Skeleton" 401 name="Male_Skeleton"
402 label_min="Female" 402 label_min="Female"
403 label_max="Male" 403 label_max="Male"
404 value_min="0" 404 value_min="0"
405 value_max="1"> 405 value_max="1">
406 <param_skeleton> 406 <param_skeleton>
407 <bone 407 <bone
408 name="mNeck" 408 name="mNeck"
409 scale="0 0 .2" /> 409 scale="0 0 .2" />
410 410
411 <bone 411 <bone
412 name="mCollarLeft" 412 name="mCollarLeft"
413 scale="0 .4 0" /> 413 scale="0 .4 0" />
414 414
415 <bone 415 <bone
416 name="mCollarRight" 416 name="mCollarRight"
417 scale="0 .4 0" /> 417 scale="0 .4 0" />
418 418
419 <bone 419 <bone
420 name="mShoulderLeft" 420 name="mShoulderLeft"
421 scale="0 .35 0" /> 421 scale="0 .35 0" />
422 422
423 <bone 423 <bone
424 name="mShoulderRight" 424 name="mShoulderRight"
425 scale="0 .35 0" /> 425 scale="0 .35 0" />
426 426
427 <bone 427 <bone
428 name="mElbowLeft" 428 name="mElbowLeft"
429 scale="0 .1 0" /> 429 scale="0 .1 0" />
430 430
431 <bone 431 <bone
432 name="mElbowRight" 432 name="mElbowRight"
433 scale="0 .1 0" /> 433 scale="0 .1 0" />
434 434
435 <bone 435 <bone
436 name="mChest" 436 name="mChest"
437 scale=".05 .05 .05" /> 437 scale=".05 .05 .05" />
438 438
439 <bone 439 <bone
440 name="mTorso" 440 name="mTorso"
441 scale="0 0 .05" /> 441 scale="0 0 .05" />
442 442
443 <bone 443 <bone
444 name="mPelvis" 444 name="mPelvis"
445 scale="0 0 0" /> 445 scale="0 0 0" />
446 446
447 <bone 447 <bone
448 name="mHipLeft" 448 name="mHipLeft"
449 scale=".05 .05 0" /> 449 scale=".05 .05 0" />
450 450
451 <bone 451 <bone
452 name="mHipRight" 452 name="mHipRight"
453 scale=".05 .05 0" /> 453 scale=".05 .05 0" />
454 454
455 <bone 455 <bone
456 name="mKneeLeft" 456 name="mKneeLeft"
457 scale=".05 .05 .1" /> 457 scale=".05 .05 .1" />
458 458
459 <bone 459 <bone
460 name="mKneeRight" 460 name="mKneeRight"
461 scale=".05 .05 .1" /> 461 scale=".05 .05 .1" />
462 </param_skeleton> 462 </param_skeleton>
463 </param> 463 </param>
464 464
465 <param 465 <param
466 id="33" 466 id="33"
467 group="0" 467 group="0"
468 name="Height" 468 name="Height"
469 label="Height" 469 label="Height"
470 wearable="shape" 470 wearable="shape"
471 edit_group="shape_body" 471 edit_group="shape_body"
472 edit_group_order="1" 472 edit_group_order="1"
473 label_min="Short" 473 label_min="Short"
474 label_max="Tall" 474 label_max="Tall"
475 show_simple="true" 475 show_simple="true"
476 value_min="-2.3" 476 value_min="-2.3"
477 value_max="2" 477 value_max="2"
478 camera_distance="2.2"> 478 camera_distance="2.2">
479 <param_skeleton> 479 <param_skeleton>
480 <bone 480 <bone
481 name="mNeck" 481 name="mNeck"
482 scale="0 0 .02" /> 482 scale="0 0 .02" />
483 483
484 <bone 484 <bone
485 name="mCollarLeft" 485 name="mCollarLeft"
486 scale="0 0 0" /> 486 scale="0 0 0" />
487 487
488 <bone 488 <bone
489 name="mCollarRight" 489 name="mCollarRight"
490 scale="0 0 0" /> 490 scale="0 0 0" />
491 491
492 <bone 492 <bone
493 name="mShoulderLeft" 493 name="mShoulderLeft"
494 scale="0 0.08 0" /> 494 scale="0 0.08 0" />
495 495
496 <bone 496 <bone
497 name="mShoulderRight" 497 name="mShoulderRight"
498 scale="0 0.08 0" /> 498 scale="0 0.08 0" />
499 499
500 <bone 500 <bone
501 name="mElbowLeft" 501 name="mElbowLeft"
502 scale="0 0.06 0" /> 502 scale="0 0.06 0" />
503 503
504 <bone 504 <bone
505 name="mElbowRight" 505 name="mElbowRight"
506 scale="0 0.06 0" /> 506 scale="0 0.06 0" />
507 507
508 <bone 508 <bone
509 name="mChest" 509 name="mChest"
510 scale="0 0 0.05" /> 510 scale="0 0 0.05" />
511 511
512 <bone 512 <bone
513 name="mTorso" 513 name="mTorso"
514 scale="0 0 0.05" /> 514 scale="0 0 0.05" />
515 515
516 <bone 516 <bone
517 name="mPelvis" 517 name="mPelvis"
518 scale="0 0 0" /> 518 scale="0 0 0" />
519 519
520 <bone 520 <bone
521 name="mHipLeft" 521 name="mHipLeft"
522 scale="0 0 0.1" /> 522 scale="0 0 0.1" />
523 523
524 <bone 524 <bone
525 name="mHipRight" 525 name="mHipRight"
526 scale="0 0 0.1" /> 526 scale="0 0 0.1" />
527 527
528 <bone 528 <bone
529 name="mKneeLeft" 529 name="mKneeLeft"
530 scale="0 0 0.1" /> 530 scale="0 0 0.1" />
531 531
532 <bone 532 <bone
533 name="mKneeRight" 533 name="mKneeRight"
534 scale="0 0 0.1" /> 534 scale="0 0 0.1" />
535 </param_skeleton> 535 </param_skeleton>
536 </param> 536 </param>
537 537
538 <param 538 <param
539 id="34" 539 id="34"
540 group="0" 540 group="0"
541 name="Thickness" 541 name="Thickness"
542 label="Body Thickness" 542 label="Body Thickness"
543 wearable="shape" 543 wearable="shape"
544 edit_group="shape_body" 544 edit_group="shape_body"
545 edit_group_order="2" 545 edit_group_order="2"
546 label_min="Body Thin" 546 label_min="Body Thin"
547 label_max="Body Thick" 547 label_max="Body Thick"
548 show_simple="true" 548 show_simple="true"
549 value_min="-0.7" 549 value_min="-0.7"
550 value_max="1.5" 550 value_max="1.5"
551 camera_distance="1.8"> 551 camera_distance="1.8">
552 <param_skeleton> 552 <param_skeleton>
553 <bone 553 <bone
554 name="mNeck" 554 name="mNeck"
555 scale="0.1 0.1 0" /> 555 scale="0.1 0.1 0" />
556 556
557 <bone 557 <bone
558 name="mCollarLeft" 558 name="mCollarLeft"
559 scale="0 0.2 0" /> 559 scale="0 0.2 0" />
560 560
561 <bone 561 <bone
562 name="mCollarRight" 562 name="mCollarRight"
563 scale="0 0.2 0" /> 563 scale="0 0.2 0" />
564 564
565 <bone 565 <bone
566 name="mShoulderLeft" 566 name="mShoulderLeft"
567 scale="0.1 0 0.1" /> 567 scale="0.1 0 0.1" />
568 568
569 <bone 569 <bone
570 name="mShoulderRight" 570 name="mShoulderRight"
571 scale="0.1 0 0.1" /> 571 scale="0.1 0 0.1" />
572 572
573 <bone 573 <bone
574 name="mElbowLeft" 574 name="mElbowLeft"
575 scale="0.1 0 0.1" /> 575 scale="0.1 0 0.1" />
576 576
577 <bone 577 <bone
578 name="mElbowRight" 578 name="mElbowRight"
579 scale="0.1 0 0.1" /> 579 scale="0.1 0 0.1" />
580 580
581 <bone 581 <bone
582 name="mChest" 582 name="mChest"
583 scale="0.1 0.1 0" /> 583 scale="0.1 0.1 0" />
584 584
585 <bone 585 <bone
586 name="mTorso" 586 name="mTorso"
587 scale="0.1 0.1 0" /> 587 scale="0.1 0.1 0" />
588 588
589 <bone 589 <bone
590 name="mPelvis" 590 name="mPelvis"
591 scale="0.1 0.1 0" /> 591 scale="0.1 0.1 0" />
592 592
593 <bone 593 <bone
594 name="mHipLeft" 594 name="mHipLeft"
595 scale="0.13 0.13 0" /> 595 scale="0.13 0.13 0" />
596 596
597 <bone 597 <bone
598 name="mHipRight" 598 name="mHipRight"
599 scale="0.13 0.13 0" /> 599 scale="0.13 0.13 0" />
600 600
601 <bone 601 <bone
602 name="mKneeLeft" 602 name="mKneeLeft"
603 scale="0.12 0.12 0" /> 603 scale="0.12 0.12 0" />
604 604
605 <bone 605 <bone
606 name="mKneeRight" 606 name="mKneeRight"
607 scale="0.12 0.12 0" /> 607 scale="0.12 0.12 0" />
608 </param_skeleton> 608 </param_skeleton>
609 </param> 609 </param>
610 610
611 <param 611 <param
612 id="36" 612 id="36"
613 group="0" 613 group="0"
614 name="Shoulders" 614 name="Shoulders"
615 label="Shoulders" 615 label="Shoulders"
616 wearable="shape" 616 wearable="shape"
617 edit_group="shape_torso" 617 edit_group="shape_torso"
618 edit_group_order="4" 618 edit_group_order="4"
619 label_min="Narrow" 619 label_min="Narrow"
620 label_max="Broad" 620 label_max="Broad"
621 show_simple="true" 621 show_simple="true"
622 value_min="-1.8" 622 value_min="-1.8"
623 value_max="1.4" 623 value_max="1.4"
624 value_default="-0.5" 624 value_default="-0.5"
625 camera_elevation=".1" 625 camera_elevation=".1"
626 camera_distance="1.2" 626 camera_distance="1.2"
627 camera_angle="0"> 627 camera_angle="0">
628 <param_skeleton> 628 <param_skeleton>
629 <bone 629 <bone
630 name="mNeck" 630 name="mNeck"
631 scale="0.01 0.03 0" /> 631 scale="0.01 0.03 0" />
632 632
633 <bone 633 <bone
634 name="mCollarLeft" 634 name="mCollarLeft"
635 scale="0 0 0" 635 scale="0 0 0"
636 offset="0 .02 0" /> 636 offset="0 .02 0" />
637 637
638 <bone 638 <bone
639 name="mCollarRight" 639 name="mCollarRight"
640 scale="0 0 0" 640 scale="0 0 0"
641 offset="0 -.02 0" /> 641 offset="0 -.02 0" />
642 642
643 <bone 643 <bone
644 name="mChest" 644 name="mChest"
645 scale="0.02 0.08 0" /> 645 scale="0.02 0.08 0" />
646 </param_skeleton> 646 </param_skeleton>
647 </param> 647 </param>
648 648
649 <param 649 <param
650 id="37" 650 id="37"
651 group="0" 651 group="0"
652 name="Hip Width" 652 name="Hip Width"
653 label="Hip Width" 653 label="Hip Width"
654 wearable="shape" 654 wearable="shape"
655 edit_group="shape_legs" 655 edit_group="shape_legs"
656 edit_group_order="3" 656 edit_group_order="3"
657 label_min="Narrow" 657 label_min="Narrow"
658 label_max="Wide" 658 label_max="Wide"
659 show_simple="true" 659 show_simple="true"
660 value_min="-3.2" 660 value_min="-3.2"
661 value_max="2.8" 661 value_max="2.8"
662 camera_distance="1.8"> 662 camera_distance="1.8">
663 <param_skeleton> 663 <param_skeleton>
664 <bone 664 <bone
665 name="mPelvis" 665 name="mPelvis"
666 scale="0 0.1 0" /> 666 scale="0 0.1 0" />
667 667
668 <bone 668 <bone
669 name="mHipLeft" 669 name="mHipLeft"
670 scale="0 0 0" 670 scale="0 0 0"
671 offset="0 .004 0" /> 671 offset="0 .004 0" />
672 672
673 <bone 673 <bone
674 name="mHipRight" 674 name="mHipRight"
675 scale="0 0 0" 675 scale="0 0 0"
676 offset="0 -.004 0" /> 676 offset="0 -.004 0" />
677 </param_skeleton> 677 </param_skeleton>
678 </param> 678 </param>
679 679
680 <param 680 <param
681 id="842" 681 id="842"
682 group="0" 682 group="0"
683 name="Hip Length" 683 name="Hip Length"
684 wearable="shape" 684 wearable="shape"
685 edit_group="shape_legs" 685 edit_group="shape_legs"
686 edit_group_order="3.2" 686 edit_group_order="3.2"
687 label_min="Short hips" 687 label_min="Short hips"
688 label_max="Long Hips" 688 label_max="Long Hips"
689 value_min="-1" 689 value_min="-1"
690 value_max="1" 690 value_max="1"
691 camera_distance="1.8"> 691 camera_distance="1.8">
692 <param_skeleton> 692 <param_skeleton>
693 <bone 693 <bone
694 name="mPelvis" 694 name="mPelvis"
695 scale="0 0 0.3" /> 695 scale="0 0 0.3" />
696 </param_skeleton> 696 </param_skeleton>
697 </param> 697 </param>
698 698
699 <param 699 <param
700 id="38" 700 id="38"
701 group="0" 701 group="0"
702 name="Torso Length" 702 name="Torso Length"
703 wearable="shape" 703 wearable="shape"
704 edit_group="shape_torso" 704 edit_group="shape_torso"
705 edit_group_order="11" 705 edit_group_order="11"
706 label_min="Short Torso" 706 label_min="Short Torso"
707 label_max="Long Torso" 707 label_max="Long Torso"
708 value_min="-1" 708 value_min="-1"
709 value_max="1" 709 value_max="1"
710 camera_distance="1.8"> 710 camera_distance="1.8">
711 <param_skeleton> 711 <param_skeleton>
712 <bone 712 <bone
713 name="mTorso" 713 name="mTorso"
714 scale="0 0 .3" /> 714 scale="0 0 .3" />
715 715
716 <bone 716 <bone
717 name="mPelvis" 717 name="mPelvis"
718 scale="0 0 .1" /> 718 scale="0 0 .1" />
719 719
720 <bone 720 <bone
721 name="mHipLeft" 721 name="mHipLeft"
722 scale="0 0 -.1" /> 722 scale="0 0 -.1" />
723 723
724 <bone 724 <bone
725 name="mHipRight" 725 name="mHipRight"
726 scale="0 0 -.1" /> 726 scale="0 0 -.1" />
727 727
728 <bone 728 <bone
729 name="mKneeRight" 729 name="mKneeRight"
730 scale="0 0 -.05" /> 730 scale="0 0 -.05" />
731 731
732 <bone 732 <bone
733 name="mKneeLeft" 733 name="mKneeLeft"
734 scale="0 0 -.05" /> 734 scale="0 0 -.05" />
735 </param_skeleton> 735 </param_skeleton>
736 </param> 736 </param>
737 737
738 <param 738 <param
739 id="195" 739 id="195"
740 group="1" 740 group="1"
741 name="EyeBone_Spread" 741 name="EyeBone_Spread"
742 wearable="shape" 742 wearable="shape"
743 edit_group="shape_eyes" 743 edit_group="shape_eyes"
744 label_min="Eyes Together" 744 label_min="Eyes Together"
745 label_max="Eyes Spread" 745 label_max="Eyes Spread"
746 value_min="-1" 746 value_min="-1"
747 value_max="1"> 747 value_max="1">
748 <param_skeleton> 748 <param_skeleton>
749 <bone 749 <bone
750 name="mEyeLeft" 750 name="mEyeLeft"
751 scale="0 0 0" 751 scale="0 0 0"
752 offset="0 .009 0" /> 752 offset="0 .009 0" />
753 753
754 <bone 754 <bone
755 name="mEyeRight" 755 name="mEyeRight"
756 scale="0 0 0" 756 scale="0 0 0"
757 offset="0 -.009 0" /> 757 offset="0 -.009 0" />
758 </param_skeleton> 758 </param_skeleton>
759 </param> 759 </param>
760 760
761 <param 761 <param
762 id="661" 762 id="661"
763 group="1" 763 group="1"
764 name="EyeBone_Head_Shear" 764 name="EyeBone_Head_Shear"
765 wearable="shape" 765 wearable="shape"
766 edit_group="shape_eyes" 766 edit_group="shape_eyes"
767 label_min="Eyes Shear Left Up" 767 label_min="Eyes Shear Left Up"
768 label_max="Eyes Shear Right Up" 768 label_max="Eyes Shear Right Up"
769 value_min="-2" 769 value_min="-2"
770 value_max="2"> 770 value_max="2">
771 <param_skeleton> 771 <param_skeleton>
772 <bone 772 <bone
773 name="mEyeLeft" 773 name="mEyeLeft"
774 scale="0 0 0" 774 scale="0 0 0"
775 offset="0 0 .004" /> 775 offset="0 0 .004" />
776 776
777 <bone 777 <bone
778 name="mEyeRight" 778 name="mEyeRight"
779 scale="0 0 0" 779 scale="0 0 0"
780 offset="0 0 -.004" /> 780 offset="0 0 -.004" />
781 </param_skeleton> 781 </param_skeleton>
782 </param> 782 </param>
783 783
784 <param 784 <param
785 id="772" 785 id="772"
786 group="1" 786 group="1"
787 name="EyeBone_Head_Elongate" 787 name="EyeBone_Head_Elongate"
788 wearable="shape" 788 wearable="shape"
789 edit_group="shape_eyes" 789 edit_group="shape_eyes"
790 label_min="Eyes Short Head" 790 label_min="Eyes Short Head"
791 label_max="Eyes Long Head" 791 label_max="Eyes Long Head"
792 value_min="-1" 792 value_min="-1"
793 value_max="1"> 793 value_max="1">
794 <param_skeleton> 794 <param_skeleton>
795 <bone 795 <bone
796 name="mEyeLeft" 796 name="mEyeLeft"
797 scale="0 0 0" 797 scale="0 0 0"
798 offset=".016 0 0" /> 798 offset=".016 0 0" />
799 799
800 <bone 800 <bone
801 name="mEyeRight" 801 name="mEyeRight"
802 scale="0 0 0" 802 scale="0 0 0"
803 offset=".016 0 0" /> 803 offset=".016 0 0" />
804 </param_skeleton> 804 </param_skeleton>
805 </param> 805 </param>
806 806
807 <param 807 <param
808 id="768" 808 id="768"
809 group="1" 809 group="1"
810 name="EyeBone_Bug" 810 name="EyeBone_Bug"
811 wearable="shape" 811 wearable="shape"
812 edit_group="shape_eyes" 812 edit_group="shape_eyes"
813 label_min="Eyes Sunken" 813 label_min="Eyes Sunken"
814 label_max="Eyes Bugged" 814 label_max="Eyes Bugged"
815 value_min="-2" 815 value_min="-2"
816 value_max="2"> 816 value_max="2">
817 <param_skeleton> 817 <param_skeleton>
818 <bone 818 <bone
819 name="mEyeLeft" 819 name="mEyeLeft"
820 scale="0 0 0" 820 scale="0 0 0"
821 offset=".005 0 0" /> 821 offset=".005 0 0" />
822 822
823 <bone 823 <bone
824 name="mEyeRight" 824 name="mEyeRight"
825 scale="0 0 0" 825 scale="0 0 0"
826 offset=".005 0 0" /> 826 offset=".005 0 0" />
827 </param_skeleton> 827 </param_skeleton>
828 </param> 828 </param>
829 829
830 <param 830 <param
831 id="655" 831 id="655"
832 group="1" 832 group="1"
833 name="Head Size" 833 name="Head Size"
834 label="Head Size" 834 label="Head Size"
835 wearable="shape" 835 wearable="shape"
836 edit_group="shape_head" 836 edit_group="shape_head"
837 label_min="Small Head" 837 label_min="Small Head"
838 label_max="Big Head" 838 label_max="Big Head"
839 show_simple="true" 839 show_simple="true"
840 value_min="-.25" 840 value_min="-.25"
841 value_max=".10"> 841 value_max=".10">
842 <param_skeleton> 842 <param_skeleton>
843 <bone 843 <bone
844 name="mSkull" 844 name="mSkull"
845 scale="1 1 1" 845 scale="1 1 1"
846 offset="0 0 0.1" /> 846 offset="0 0 0.1" />
847 847
848 <bone 848 <bone
849 name="mHead" 849 name="mHead"
850 scale="1 1 1" 850 scale="1 1 1"
851 offset="0 0 0" /> 851 offset="0 0 0" />
852 852
853 <bone 853 <bone
854 name="mEyeLeft" 854 name="mEyeLeft"
855 scale="1 1 1" 855 scale="1 1 1"
856 offset="0 0 0" /> 856 offset="0 0 0" />
857 857
858 <bone 858 <bone
859 name="mEyeRight" 859 name="mEyeRight"
860 scale="1 1 1" 860 scale="1 1 1"
861 offset="0 0 0" /> 861 offset="0 0 0" />
862 </param_skeleton> 862 </param_skeleton>
863 </param> 863 </param>
864 864
865 <param 865 <param
866 id="197" 866 id="197"
867 group="1" 867 group="1"
868 wearable="shoes" 868 wearable="shoes"
869 name="Shoe_Heels" 869 name="Shoe_Heels"
870 edit_group="shoes" 870 edit_group="shoes"
871 label_min="No Heels" 871 label_min="No Heels"
872 label_max="High Heels" 872 label_max="High Heels"
873 value_min="0" 873 value_min="0"
874 value_max="1"> 874 value_max="1">
875 <param_skeleton> 875 <param_skeleton>
876 <bone 876 <bone
877 name="mFootRight" 877 name="mFootRight"
878 scale="0 0 0" 878 scale="0 0 0"
879 offset="0 0 -.08" /> 879 offset="0 0 -.08" />
880 880
881 <bone 881 <bone
882 name="mFootLeft" 882 name="mFootLeft"
883 scale="0 0 0" 883 scale="0 0 0"
884 offset="0 0 -.08" /> 884 offset="0 0 -.08" />
885 </param_skeleton> 885 </param_skeleton>
886 </param> 886 </param>
887 887
888 <param 888 <param
889 id="502" 889 id="502"
890 group="1" 890 group="1"
891 wearable="shoes" 891 wearable="shoes"
892 name="Shoe_Platform" 892 name="Shoe_Platform"
893 edit_group="shoes" 893 edit_group="shoes"
894 label_min="No Heels" 894 label_min="No Heels"
895 label_max="High Heels" 895 label_max="High Heels"
896 value_min="0" 896 value_min="0"
897 value_max="1"> 897 value_max="1">
898 <param_skeleton> 898 <param_skeleton>
899 <bone 899 <bone
900 name="mFootRight" 900 name="mFootRight"
901 scale="0 0 0" 901 scale="0 0 0"
902 offset="0 0 -.07" /> 902 offset="0 0 -.07" />
903 903
904 <bone 904 <bone
905 name="mFootLeft" 905 name="mFootLeft"
906 scale="0 0 0" 906 scale="0 0 0"
907 offset="0 0 -.07" /> 907 offset="0 0 -.07" />
908 </param_skeleton> 908 </param_skeleton>
909 </param> 909 </param>
910 910
911 <param 911 <param
912 id="675" 912 id="675"
913 group="0" 913 group="0"
914 name="Hand Size" 914 name="Hand Size"
915 wearable="shape" 915 wearable="shape"
916 edit_group="shape_torso" 916 edit_group="shape_torso"
917 edit_group_order="10" 917 edit_group_order="10"
918 label_min="Small Hands" 918 label_min="Small Hands"
919 label_max="Large Hands" 919 label_max="Large Hands"
920 value_min="-.3" 920 value_min="-.3"
921 value_max=".3" 921 value_max=".3"
922 camera_elevation=".1" 922 camera_elevation=".1"
923 camera_distance="1.4" 923 camera_distance="1.4"
924 camera_angle="0"> 924 camera_angle="0">
925 <param_skeleton> 925 <param_skeleton>
926 <bone 926 <bone
927 name="mWristRight" 927 name="mWristRight"
928 scale="1 1 1" 928 scale="1 1 1"
929 offset="0 0 0" /> 929 offset="0 0 0" />
930 930
931 <bone 931 <bone
932 name="mWristLeft" 932 name="mWristLeft"
933 scale="1 1 1" 933 scale="1 1 1"
934 offset="0 0 0" /> 934 offset="0 0 0" />
935 </param_skeleton> 935 </param_skeleton>
936 </param> 936 </param>
937 937
938 <param 938 <param
939 id="683" 939 id="683"
940 group="0" 940 group="0"
941 name="Neck Thickness" 941 name="Neck Thickness"
942 wearable="shape" 942 wearable="shape"
943 edit_group="shape_torso" 943 edit_group="shape_torso"
944 edit_group_order="2" 944 edit_group_order="2"
945 label_min="Skinny Neck" 945 label_min="Skinny Neck"
946 label_max="Thick Neck" 946 label_max="Thick Neck"
947 value_min="-.4" 947 value_min="-.4"
948 value_max=".2" 948 value_max=".2"
949 value_default="-.15" 949 value_default="-.15"
950 camera_elevation=".3" 950 camera_elevation=".3"
951 camera_distance=".8" 951 camera_distance=".8"
952 camera_angle="15"> 952 camera_angle="15">
953 <param_skeleton> 953 <param_skeleton>
954 <bone 954 <bone
955 name="mNeck" 955 name="mNeck"
956 scale="1 1 0" 956 scale="1 1 0"
957 offset="0 0 0" /> 957 offset="0 0 0" />
958 </param_skeleton> 958 </param_skeleton>
959 </param> 959 </param>
960 960
961 <param 961 <param
962 id="689" 962 id="689"
963 group="1" 963 group="1"
964 wearable="shape" 964 wearable="shape"
965 name="EyeBone_Big_Eyes" 965 name="EyeBone_Big_Eyes"
966 edit_group="shape_eyes" 966 edit_group="shape_eyes"
967 label_min="Eyes Back" 967 label_min="Eyes Back"
968 label_max="Eyes Forward" 968 label_max="Eyes Forward"
969 value_min="-1" 969 value_min="-1"
970 value_max="1"> 970 value_max="1">
971 <param_skeleton> 971 <param_skeleton>
972 <bone 972 <bone
973 name="mEyeLeft" 973 name="mEyeLeft"
974 scale="0 0 0" 974 scale="0 0 0"
975 offset="-.005 0 0" /> 975 offset="-.005 0 0" />
976 976
977 <bone 977 <bone
978 name="mEyeRight" 978 name="mEyeRight"
979 scale="0 0 0" 979 scale="0 0 0"
980 offset="-.005 0 0" /> 980 offset="-.005 0 0" />
981 </param_skeleton> 981 </param_skeleton>
982 </param> 982 </param>
983 983
984 <param 984 <param
985 id="692" 985 id="692"
986 group="0" 986 group="0"
987 name="Leg Length" 987 name="Leg Length"
988 wearable="shape" 988 wearable="shape"
989 edit_group="shape_legs" 989 edit_group="shape_legs"
990 edit_group_order="2" 990 edit_group_order="2"
991 label_min="Short Legs" 991 label_min="Short Legs"
992 label_max="Long Legs" 992 label_max="Long Legs"
993 value_min="-1" 993 value_min="-1"
994 value_max="1" 994 value_max="1"
995 camera_distance="2.5"> 995 camera_distance="2.5">
996 <param_skeleton> 996 <param_skeleton>
997 <bone 997 <bone
998 name="mHipLeft" 998 name="mHipLeft"
999 scale="0 0 .2" /> 999 scale="0 0 .2" />
1000 1000
1001 <bone 1001 <bone
1002 name="mHipRight" 1002 name="mHipRight"
1003 scale="0 0 .2" /> 1003 scale="0 0 .2" />
1004 1004
1005 <bone 1005 <bone
1006 name="mKneeRight" 1006 name="mKneeRight"
1007 scale="0 0 .2" /> 1007 scale="0 0 .2" />
1008 1008
1009 <bone 1009 <bone
1010 name="mKneeLeft" 1010 name="mKneeLeft"
1011 scale="0 0 .2" /> 1011 scale="0 0 .2" />
1012 </param_skeleton> 1012 </param_skeleton>
1013 </param> 1013 </param>
1014 1014
1015 <param 1015 <param
1016 id="693" 1016 id="693"
1017 group="0" 1017 group="0"
1018 name="Arm Length" 1018 name="Arm Length"
1019 wearable="shape" 1019 wearable="shape"
1020 edit_group="shape_torso" 1020 edit_group="shape_torso"
1021 edit_group_order="9" 1021 edit_group_order="9"
1022 label_min="Short Arms" 1022 label_min="Short Arms"
1023 label_max="Long arms" 1023 label_max="Long arms"
1024 value_min="-1" 1024 value_min="-1"
1025 value_max="1" 1025 value_max="1"
1026 value_default=".6" 1026 value_default=".6"
1027 camera_distance="1.5"> 1027 camera_distance="1.5">
1028 <param_skeleton> 1028 <param_skeleton>
1029 <bone 1029 <bone
1030 name="mShoulderLeft" 1030 name="mShoulderLeft"
1031 scale="0 .2 0" /> 1031 scale="0 .2 0" />
1032 1032
1033 <bone 1033 <bone
1034 name="mShoulderRight" 1034 name="mShoulderRight"
1035 scale="0 .2 0" /> 1035 scale="0 .2 0" />
1036 1036
1037 <bone 1037 <bone
1038 name="mElbowRight" 1038 name="mElbowRight"
1039 scale="0 .3 0" /> 1039 scale="0 .3 0" />
1040 1040
1041 <bone 1041 <bone
1042 name="mElbowLeft" 1042 name="mElbowLeft"
1043 scale="0 .3 0" /> 1043 scale="0 .3 0" />
1044 </param_skeleton> 1044 </param_skeleton>
1045 </param> 1045 </param>
1046 1046
1047 <param 1047 <param
1048 id="756" 1048 id="756"
1049 group="0" 1049 group="0"
1050 name="Neck Length" 1050 name="Neck Length"
1051 wearable="shape" 1051 wearable="shape"
1052 edit_group="shape_torso" 1052 edit_group="shape_torso"
1053 edit_group_order="3" 1053 edit_group_order="3"
1054 label_min="Short Neck" 1054 label_min="Short Neck"
1055 label_max="Long Neck" 1055 label_max="Long Neck"
1056 value_min="-1" 1056 value_min="-1"
1057 value_max="1" 1057 value_max="1"
1058 value_default="0" 1058 value_default="0"
1059 camera_elevation=".3" 1059 camera_elevation=".3"
1060 camera_distance=".8" 1060 camera_distance=".8"
1061 camera_angle="15"> 1061 camera_angle="15">
1062 <param_skeleton> 1062 <param_skeleton>
1063 <bone 1063 <bone
1064 name="mNeck" 1064 name="mNeck"
1065 scale="0 0 .5" /> 1065 scale="0 0 .5" />
1066 </param_skeleton> 1066 </param_skeleton>
1067 </param> 1067 </param>
1068 </skeleton> 1068 </skeleton>
1069 1069
1070 <mesh 1070 <mesh
1071 type="hairMesh" 1071 type="hairMesh"
1072 lod="0" 1072 lod="0"
1073 file_name="avatar_hair.llm" 1073 file_name="avatar_hair.llm"
1074 min_pixel_width="320"> 1074 min_pixel_width="320">
1075<!-- begin morph targets --> 1075<!-- begin morph targets -->
1076 <param 1076 <param
1077 id="180" 1077 id="180"
1078 group="1" 1078 group="1"
1079 name="Hair_Volume" 1079 name="Hair_Volume"
1080 label="Hair Volume" 1080 label="Hair Volume"
1081 show_simple="true" 1081 show_simple="true"
1082 wearable="hair" 1082 wearable="hair"
1083 clothing_morph="true" 1083 clothing_morph="true"
1084 edit_group="hair_style" 1084 edit_group="hair_style"
1085 label_min="Less" 1085 label_min="Less"
1086 label_max="More" 1086 label_max="More"
1087 value_min="0" 1087 value_min="0"
1088 value_max="1.3" 1088 value_max="1.3"
1089 camera_elevation=".1" 1089 camera_elevation=".1"
1090 camera_distance=".5" 1090 camera_distance=".5"
1091 camera_angle="20"> 1091 camera_angle="20">
1092 <param_morph /> 1092 <param_morph />
1093 </param> 1093 </param>
1094 1094
1095 <param 1095 <param
1096 id="761" 1096 id="761"
1097 group="1" 1097 group="1"
1098 name="Hair_Volume_Small" 1098 name="Hair_Volume_Small"
1099 label="Hair Volume" 1099 label="Hair Volume"
1100 show_simple="true" 1100 show_simple="true"
1101 wearable="hair" 1101 wearable="hair"
1102 edit_group="hair_style" 1102 edit_group="hair_style"
1103 label_min="Less" 1103 label_min="Less"
1104 label_max="More" 1104 label_max="More"
1105 value_min="0" 1105 value_min="0"
1106 value_max="1.3" 1106 value_max="1.3"
1107 camera_elevation=".1" 1107 camera_elevation=".1"
1108 camera_distance=".5" 1108 camera_distance=".5"
1109 camera_angle="20"> 1109 camera_angle="20">
1110 <param_morph /> 1110 <param_morph />
1111 </param> 1111 </param>
1112 1112
1113 <param 1113 <param
1114 id="181" 1114 id="181"
1115 group="0" 1115 group="0"
1116 name="Hair_Big_Front" 1116 name="Hair_Big_Front"
1117 label="Big Hair Front" 1117 label="Big Hair Front"
1118 wearable="hair" 1118 wearable="hair"
1119 edit_group="hair_style" 1119 edit_group="hair_style"
1120 edit_group_order="5" 1120 edit_group_order="5"
1121 label_min="Less" 1121 label_min="Less"
1122 label_max="More" 1122 label_max="More"
1123 value_min="-1" 1123 value_min="-1"
1124 value_max="1" 1124 value_max="1"
1125 value_default="0.14" 1125 value_default="0.14"
1126 camera_elevation=".1" 1126 camera_elevation=".1"
1127 camera_distance=".5" 1127 camera_distance=".5"
1128 camera_angle="90"> 1128 camera_angle="90">
1129 <param_morph /> 1129 <param_morph />
1130 </param> 1130 </param>
1131 1131
1132 <param 1132 <param
1133 id="182" 1133 id="182"
1134 group="0" 1134 group="0"
1135 name="Hair_Big_Top" 1135 name="Hair_Big_Top"
1136 label="Big Hair Top" 1136 label="Big Hair Top"
1137 wearable="hair" 1137 wearable="hair"
1138 edit_group="hair_style" 1138 edit_group="hair_style"
1139 edit_group_order="6" 1139 edit_group_order="6"
1140 label_min="Less" 1140 label_min="Less"
1141 label_max="More" 1141 label_max="More"
1142 value_min="-1" 1142 value_min="-1"
1143 value_max="1" 1143 value_max="1"
1144 value_default=".7" 1144 value_default=".7"
1145 camera_elevation=".1" 1145 camera_elevation=".1"
1146 camera_distance=".5" 1146 camera_distance=".5"
1147 camera_angle="90"> 1147 camera_angle="90">
1148 <param_morph /> 1148 <param_morph />
1149 </param> 1149 </param>
1150 1150
1151 <param 1151 <param
1152 id="183" 1152 id="183"
1153 group="0" 1153 group="0"
1154 name="Hair_Big_Back" 1154 name="Hair_Big_Back"
1155 clothing_morph="true" 1155 clothing_morph="true"
1156 label="Big Hair Back" 1156 label="Big Hair Back"
1157 wearable="hair" 1157 wearable="hair"
1158 edit_group="hair_style" 1158 edit_group="hair_style"
1159 edit_group_order="7" 1159 edit_group_order="7"
1160 label_min="Less" 1160 label_min="Less"
1161 label_max="More" 1161 label_max="More"
1162 value_min="-1" 1162 value_min="-1"
1163 value_max="1" 1163 value_max="1"
1164 value_default="0.05" 1164 value_default="0.05"
1165 camera_elevation=".1" 1165 camera_elevation=".1"
1166 camera_distance=".7" 1166 camera_distance=".7"
1167 camera_angle="90"> 1167 camera_angle="90">
1168 <param_morph /> 1168 <param_morph />
1169 </param> 1169 </param>
1170 1170
1171 <param 1171 <param
1172 id="184" 1172 id="184"
1173 group="0" 1173 group="0"
1174 name="Hair_Spiked" 1174 name="Hair_Spiked"
1175 label="Spiked Hair" 1175 label="Spiked Hair"
1176 show_simple="true" 1176 show_simple="true"
1177 wearable="hair" 1177 wearable="hair"
1178 clothing_morph="true" 1178 clothing_morph="true"
1179 edit_group="hair_style" 1179 edit_group="hair_style"
1180 edit_group_order="15" 1180 edit_group_order="15"
1181 label_min="No Spikes" 1181 label_min="No Spikes"
1182 label_max="Big Spikes" 1182 label_max="Big Spikes"
1183 value_min="0" 1183 value_min="0"
1184 value_max="1" 1184 value_max="1"
1185 camera_elevation=".1" 1185 camera_elevation=".1"
1186 camera_distance=".5" 1186 camera_distance=".5"
1187 camera_angle="20"> 1187 camera_angle="20">
1188 <param_morph /> 1188 <param_morph />
1189 </param> 1189 </param>
1190 1190
1191 <param 1191 <param
1192 id="140" 1192 id="140"
1193 group="0" 1193 group="0"
1194 name="Hair_Part_Middle" 1194 name="Hair_Part_Middle"
1195 label="Middle Part" 1195 label="Middle Part"
1196 wearable="hair" 1196 wearable="hair"
1197 edit_group="hair_style" 1197 edit_group="hair_style"
1198 edit_group_order="17" 1198 edit_group_order="17"
1199 label_min="No Part" 1199 label_min="No Part"
1200 label_max="Part" 1200 label_max="Part"
1201 value_min="0" 1201 value_min="0"
1202 value_max="2" 1202 value_max="2"
1203 camera_elevation=".1" 1203 camera_elevation=".1"
1204 camera_distance=".5" 1204 camera_distance=".5"
1205 camera_angle="0"> 1205 camera_angle="0">
1206 <param_morph /> 1206 <param_morph />
1207 </param> 1207 </param>
1208 1208
1209 <param 1209 <param
1210 id="141" 1210 id="141"
1211 group="0" 1211 group="0"
1212 name="Hair_Part_Right" 1212 name="Hair_Part_Right"
1213 label="Right Part" 1213 label="Right Part"
1214 wearable="hair" 1214 wearable="hair"
1215 edit_group="hair_style" 1215 edit_group="hair_style"
1216 edit_group_order="18" 1216 edit_group_order="18"
1217 label_min="No Part" 1217 label_min="No Part"
1218 label_max="Part" 1218 label_max="Part"
1219 value_min="0" 1219 value_min="0"
1220 value_max="2" 1220 value_max="2"
1221 camera_elevation=".1" 1221 camera_elevation=".1"
1222 camera_distance=".5" 1222 camera_distance=".5"
1223 camera_angle="0"> 1223 camera_angle="0">
1224 <param_morph /> 1224 <param_morph />
1225 </param> 1225 </param>
1226 1226
1227 <param 1227 <param
1228 id="142" 1228 id="142"
1229 group="0" 1229 group="0"
1230 name="Hair_Part_Left" 1230 name="Hair_Part_Left"
1231 label="Left Part" 1231 label="Left Part"
1232 wearable="hair" 1232 wearable="hair"
1233 edit_group="hair_style" 1233 edit_group="hair_style"
1234 edit_group_order="19" 1234 edit_group_order="19"
1235 label_min="No Part" 1235 label_min="No Part"
1236 label_max="Part" 1236 label_max="Part"
1237 value_min="0" 1237 value_min="0"
1238 value_max="2" 1238 value_max="2"
1239 camera_elevation=".1" 1239 camera_elevation=".1"
1240 camera_distance=".5" 1240 camera_distance=".5"
1241 camera_angle="0"> 1241 camera_angle="0">
1242 <param_morph /> 1242 <param_morph />
1243 </param> 1243 </param>
1244 1244
1245 <param 1245 <param
1246 id="143" 1246 id="143"
1247 group="0" 1247 group="0"
1248 name="Hair_Sides_Full" 1248 name="Hair_Sides_Full"
1249 label="Full Hair Sides" 1249 label="Full Hair Sides"
1250 show_simple="true" 1250 show_simple="true"
1251 wearable="hair" 1251 wearable="hair"
1252 edit_group="hair_style" 1252 edit_group="hair_style"
1253 edit_group_order="11" 1253 edit_group_order="11"
1254 label_min="Mowhawk" 1254 label_min="Mowhawk"
1255 label_max="Full Sides" 1255 label_max="Full Sides"
1256 value_min="-4" 1256 value_min="-4"
1257 value_max="1.5" 1257 value_max="1.5"
1258 value_default="0.125" 1258 value_default="0.125"
1259 camera_elevation=".1" 1259 camera_elevation=".1"
1260 camera_distance=".5" 1260 camera_distance=".5"
1261 camera_angle="20"> 1261 camera_angle="20">
1262 <param_morph /> 1262 <param_morph />
1263 </param> 1263 </param>
1264 1264
1265 <param 1265 <param
1266 id="144" 1266 id="144"
1267 group="1" 1267 group="1"
1268 name="Bangs_Front_Up" 1268 name="Bangs_Front_Up"
1269 label="Front Bangs Up" 1269 label="Front Bangs Up"
1270 wearable="hair" 1270 wearable="hair"
1271 edit_group="hair_style" 1271 edit_group="hair_style"
1272 label_min="Bangs" 1272 label_min="Bangs"
1273 label_max="Bangs Up" 1273 label_max="Bangs Up"
1274 value_min="0" 1274 value_min="0"
1275 value_max="1" 1275 value_max="1"
1276 camera_elevation=".1" 1276 camera_elevation=".1"
1277 camera_distance=".5" 1277 camera_distance=".5"
1278 camera_angle="20"> 1278 camera_angle="20">
1279 <param_morph /> 1279 <param_morph />
1280 </param> 1280 </param>
1281 1281
1282 <param 1282 <param
1283 id="145" 1283 id="145"
1284 group="1" 1284 group="1"
1285 clothing_morph="true" 1285 clothing_morph="true"
1286 name="Bangs_Front_Down" 1286 name="Bangs_Front_Down"
1287 label="Front Bangs Down" 1287 label="Front Bangs Down"
1288 wearable="hair" 1288 wearable="hair"
1289 edit_group="hair_style" 1289 edit_group="hair_style"
1290 label_min="Bangs" 1290 label_min="Bangs"
1291 label_max="Bangs Down" 1291 label_max="Bangs Down"
1292 value_min="0" 1292 value_min="0"
1293 value_max="5" 1293 value_max="5"
1294 camera_elevation=".1" 1294 camera_elevation=".1"
1295 camera_distance=".5" 1295 camera_distance=".5"
1296 camera_angle="20"> 1296 camera_angle="20">
1297 <param_morph /> 1297 <param_morph />
1298 </param> 1298 </param>
1299 1299
1300 <param 1300 <param
1301 id="146" 1301 id="146"
1302 group="1" 1302 group="1"
1303 name="Bangs_Sides_Up" 1303 name="Bangs_Sides_Up"
1304 label="Side Bangs Up" 1304 label="Side Bangs Up"
1305 wearable="hair" 1305 wearable="hair"
1306 edit_group="hair_style" 1306 edit_group="hair_style"
1307 label_min="Side Bangs" 1307 label_min="Side Bangs"
1308 label_max="Side Bangs Up" 1308 label_max="Side Bangs Up"
1309 value_min="0" 1309 value_min="0"
1310 value_max="1" 1310 value_max="1"
1311 camera_elevation=".1" 1311 camera_elevation=".1"
1312 camera_distance=".5" 1312 camera_distance=".5"
1313 camera_angle="20"> 1313 camera_angle="20">
1314 <param_morph /> 1314 <param_morph />
1315 </param> 1315 </param>
1316 1316
1317 <param 1317 <param
1318 id="147" 1318 id="147"
1319 group="1" 1319 group="1"
1320 clothing_morph="true" 1320 clothing_morph="true"
1321 name="Bangs_Sides_Down" 1321 name="Bangs_Sides_Down"
1322 label="Side Bangs Down" 1322 label="Side Bangs Down"
1323 wearable="hair" 1323 wearable="hair"
1324 edit_group="hair_style" 1324 edit_group="hair_style"
1325 label_min="Side Bangs" 1325 label_min="Side Bangs"
1326 label_max="Side Bangs Down" 1326 label_max="Side Bangs Down"
1327 value_min="0" 1327 value_min="0"
1328 value_max="2" 1328 value_max="2"
1329 camera_elevation=".1" 1329 camera_elevation=".1"
1330 camera_distance=".5" 1330 camera_distance=".5"
1331 camera_angle="20"> 1331 camera_angle="20">
1332 <param_morph /> 1332 <param_morph />
1333 </param> 1333 </param>
1334 1334
1335 <param 1335 <param
1336 id="148" 1336 id="148"
1337 group="1" 1337 group="1"
1338 name="Bangs_Back_Up" 1338 name="Bangs_Back_Up"
1339 label="Back Bangs Up" 1339 label="Back Bangs Up"
1340 wearable="hair" 1340 wearable="hair"
1341 edit_group="hair_style" 1341 edit_group="hair_style"
1342 label_min="Back Bangs" 1342 label_min="Back Bangs"
1343 label_max="Back Bangs Up" 1343 label_max="Back Bangs Up"
1344 value_min="0" 1344 value_min="0"
1345 value_max="1" 1345 value_max="1"
1346 camera_elevation=".1" 1346 camera_elevation=".1"
1347 camera_distance=".5" 1347 camera_distance=".5"
1348 camera_angle="150"> 1348 camera_angle="150">
1349 <param_morph /> 1349 <param_morph />
1350 </param> 1350 </param>
1351 1351
1352 <param 1352 <param
1353 id="149" 1353 id="149"
1354 group="1" 1354 group="1"
1355 name="Bangs_Back_Down" 1355 name="Bangs_Back_Down"
1356 label="Back Bangs Down" 1356 label="Back Bangs Down"
1357 clothing_morph="true" 1357 clothing_morph="true"
1358 wearable="hair" 1358 wearable="hair"
1359 edit_group="hair_style" 1359 edit_group="hair_style"
1360 label_min="Back Bangs" 1360 label_min="Back Bangs"
1361 label_max="Back Bangs Down" 1361 label_max="Back Bangs Down"
1362 value_min="0" 1362 value_min="0"
1363 value_max="2" 1363 value_max="2"
1364 camera_elevation=".1" 1364 camera_elevation=".1"
1365 camera_distance=".5" 1365 camera_distance=".5"
1366 camera_angle="150"> 1366 camera_angle="150">
1367 <param_morph /> 1367 <param_morph />
1368 </param> 1368 </param>
1369 1369
1370 <param 1370 <param
1371 id="171" 1371 id="171"
1372 group="1" 1372 group="1"
1373 name="Hair_Front_Down" 1373 name="Hair_Front_Down"
1374 label="Front Hair Down" 1374 label="Front Hair Down"
1375 wearable="hair" 1375 wearable="hair"
1376 edit_group="hair_style" 1376 edit_group="hair_style"
1377 label_min="Front Hair" 1377 label_min="Front Hair"
1378 label_max="Front Hair Down" 1378 label_max="Front Hair Down"
1379 value_min="0" 1379 value_min="0"
1380 value_max="1" 1380 value_max="1"
1381 camera_elevation=".1" 1381 camera_elevation=".1"
1382 camera_distance=".5" 1382 camera_distance=".5"
1383 camera_angle="20"> 1383 camera_angle="20">
1384 <param_morph /> 1384 <param_morph />
1385 </param> 1385 </param>
1386 1386
1387 <param 1387 <param
1388 id="172" 1388 id="172"
1389 group="1" 1389 group="1"
1390 name="Hair_Front_Up" 1390 name="Hair_Front_Up"
1391 label="Front Hair Up" 1391 label="Front Hair Up"
1392 wearable="hair" 1392 wearable="hair"
1393 edit_group="hair_style" 1393 edit_group="hair_style"
1394 label_min="Front Hair" 1394 label_min="Front Hair"
1395 label_max="Front Hair Up" 1395 label_max="Front Hair Up"
1396 value_min="0" 1396 value_min="0"
1397 value_max="1" 1397 value_max="1"
1398 camera_elevation=".1" 1398 camera_elevation=".1"
1399 camera_distance=".5" 1399 camera_distance=".5"
1400 camera_angle="20"> 1400 camera_angle="20">
1401 <param_morph /> 1401 <param_morph />
1402 </param> 1402 </param>
1403 1403
1404 <param 1404 <param
1405 id="173" 1405 id="173"
1406 group="1" 1406 group="1"
1407 name="Hair_Sides_Down" 1407 name="Hair_Sides_Down"
1408 label="Sides Hair Down" 1408 label="Sides Hair Down"
1409 wearable="hair" 1409 wearable="hair"
1410 edit_group="hair_style" 1410 edit_group="hair_style"
1411 label_min="Sides Hair" 1411 label_min="Sides Hair"
1412 label_max="Sides Hair Down" 1412 label_max="Sides Hair Down"
1413 value_min="0" 1413 value_min="0"
1414 value_max="1" 1414 value_max="1"
1415 camera_elevation=".1" 1415 camera_elevation=".1"
1416 camera_distance=".5" 1416 camera_distance=".5"
1417 camera_angle="20"> 1417 camera_angle="20">
1418 <param_morph /> 1418 <param_morph />
1419 </param> 1419 </param>
1420 1420
1421 <param 1421 <param
1422 id="174" 1422 id="174"
1423 group="1" 1423 group="1"
1424 name="Hair_Sides_Up" 1424 name="Hair_Sides_Up"
1425 label="Sides Hair Up" 1425 label="Sides Hair Up"
1426 wearable="hair" 1426 wearable="hair"
1427 edit_group="hair_style" 1427 edit_group="hair_style"
1428 label_min="Sides Hair" 1428 label_min="Sides Hair"
1429 label_max="Sides Hair Up" 1429 label_max="Sides Hair Up"
1430 value_min="0" 1430 value_min="0"
1431 value_max="1" 1431 value_max="1"
1432 camera_elevation=".1" 1432 camera_elevation=".1"
1433 camera_distance=".5" 1433 camera_distance=".5"
1434 camera_angle="20"> 1434 camera_angle="20">
1435 <param_morph /> 1435 <param_morph />
1436 </param> 1436 </param>
1437 1437
1438 <param 1438 <param
1439 id="175" 1439 id="175"
1440 group="1" 1440 group="1"
1441 name="Hair_Back_Down" 1441 name="Hair_Back_Down"
1442 label="Back Hair Down" 1442 label="Back Hair Down"
1443 clothing_morph="true" 1443 clothing_morph="true"
1444 wearable="hair" 1444 wearable="hair"
1445 edit_group="hair_style" 1445 edit_group="hair_style"
1446 label_min="Back Hair" 1446 label_min="Back Hair"
1447 label_max="Back Hair Down" 1447 label_max="Back Hair Down"
1448 value_min="0" 1448 value_min="0"
1449 value_max="3" 1449 value_max="3"
1450 camera_elevation=".1" 1450 camera_elevation=".1"
1451 camera_distance=".5" 1451 camera_distance=".5"
1452 camera_angle="150"> 1452 camera_angle="150">
1453 <param_morph /> 1453 <param_morph />
1454 </param> 1454 </param>
1455 1455
1456 <param 1456 <param
1457 id="176" 1457 id="176"
1458 group="1" 1458 group="1"
1459 name="Hair_Back_Up" 1459 name="Hair_Back_Up"
1460 label="Back Hair Up" 1460 label="Back Hair Up"
1461 wearable="hair" 1461 wearable="hair"
1462 edit_group="hair_style" 1462 edit_group="hair_style"
1463 label_min="Back Hair" 1463 label_min="Back Hair"
1464 label_max="Back Hair Up" 1464 label_max="Back Hair Up"
1465 value_min="0" 1465 value_min="0"
1466 value_max="1" 1466 value_max="1"
1467 camera_elevation=".1" 1467 camera_elevation=".1"
1468 camera_distance=".5" 1468 camera_distance=".5"
1469 camera_angle="150"> 1469 camera_angle="150">
1470 <param_morph /> 1470 <param_morph />
1471 </param> 1471 </param>
1472 1472
1473 <param 1473 <param
1474 id="177" 1474 id="177"
1475 group="0" 1475 group="0"
1476 name="Hair_Rumpled" 1476 name="Hair_Rumpled"
1477 label="Rumpled Hair" 1477 label="Rumpled Hair"
1478 show_simple="true" 1478 show_simple="true"
1479 wearable="hair" 1479 wearable="hair"
1480 clothing_morph="true" 1480 clothing_morph="true"
1481 edit_group="hair_style" 1481 edit_group="hair_style"
1482 edit_group_order="14.5" 1482 edit_group_order="14.5"
1483 label_min="Smooth Hair" 1483 label_min="Smooth Hair"
1484 label_max="Rumpled Hair" 1484 label_max="Rumpled Hair"
1485 value_min="0" 1485 value_min="0"
1486 value_max="1" 1486 value_max="1"
1487 camera_elevation=".1" 1487 camera_elevation=".1"
1488 camera_distance=".5" 1488 camera_distance=".5"
1489 camera_angle="20"> 1489 camera_angle="20">
1490 <param_morph /> 1490 <param_morph />
1491 </param> 1491 </param>
1492 1492
1493 <param 1493 <param
1494 id="178" 1494 id="178"
1495 group="1" 1495 group="1"
1496 name="Hair_Swept_Back" 1496 name="Hair_Swept_Back"
1497 label="Swept Back Hair" 1497 label="Swept Back Hair"
1498 wearable="hair" 1498 wearable="hair"
1499 edit_group="hair_style" 1499 edit_group="hair_style"
1500 label_min="NotHair" 1500 label_min="NotHair"
1501 label_max="Swept Back" 1501 label_max="Swept Back"
1502 value_min="0" 1502 value_min="0"
1503 value_max="1" 1503 value_max="1"
1504 camera_elevation=".1" 1504 camera_elevation=".1"
1505 camera_distance=".5" 1505 camera_distance=".5"
1506 camera_angle="90"> 1506 camera_angle="90">
1507 <param_morph /> 1507 <param_morph />
1508 </param> 1508 </param>
1509 1509
1510 <param 1510 <param
1511 id="179" 1511 id="179"
1512 group="1" 1512 group="1"
1513 name="Hair_Swept_Forward" 1513 name="Hair_Swept_Forward"
1514 label="Swept Forward Hair" 1514 label="Swept Forward Hair"
1515 wearable="hair" 1515 wearable="hair"
1516 edit_group="hair_style" 1516 edit_group="hair_style"
1517 label_min="Hair" 1517 label_min="Hair"
1518 label_max="Swept Forward" 1518 label_max="Swept Forward"
1519 value_min="0" 1519 value_min="0"
1520 value_max="1" 1520 value_max="1"
1521 camera_elevation=".1" 1521 camera_elevation=".1"
1522 camera_distance=".5" 1522 camera_distance=".5"
1523 camera_angle="90"> 1523 camera_angle="90">
1524 <param_morph /> 1524 <param_morph />
1525 </param> 1525 </param>
1526 1526
1527 <param 1527 <param
1528 id="190" 1528 id="190"
1529 group="1" 1529 group="1"
1530 name="Hair_Tilt_Right" 1530 name="Hair_Tilt_Right"
1531 label="Hair Tilted Right" 1531 label="Hair Tilted Right"
1532 wearable="hair" 1532 wearable="hair"
1533 edit_group="hair_style" 1533 edit_group="hair_style"
1534 label_min="Hair" 1534 label_min="Hair"
1535 label_max="Tilt Right" 1535 label_max="Tilt Right"
1536 value_min="0" 1536 value_min="0"
1537 value_max="1" 1537 value_max="1"
1538 camera_elevation=".1" 1538 camera_elevation=".1"
1539 camera_distance=".5" 1539 camera_distance=".5"
1540 camera_angle="0"> 1540 camera_angle="0">
1541 <param_morph /> 1541 <param_morph />
1542 </param> 1542 </param>
1543 1543
1544 <param 1544 <param
1545 id="191" 1545 id="191"
1546 group="1" 1546 group="1"
1547 name="Hair_Tilt_Left" 1547 name="Hair_Tilt_Left"
1548 label="Hair Tilted Left" 1548 label="Hair Tilted Left"
1549 wearable="hair" 1549 wearable="hair"
1550 edit_group="hair_style" 1550 edit_group="hair_style"
1551 label_min="Hair" 1551 label_min="Hair"
1552 label_max="Tilt Left" 1552 label_max="Tilt Left"
1553 value_min="0" 1553 value_min="0"
1554 value_max="1" 1554 value_max="1"
1555 camera_elevation=".1" 1555 camera_elevation=".1"
1556 camera_distance=".5" 1556 camera_distance=".5"
1557 camera_angle="0"> 1557 camera_angle="0">
1558 <param_morph /> 1558 <param_morph />
1559 </param> 1559 </param>
1560 1560
1561 <param 1561 <param
1562 id="192" 1562 id="192"
1563 group="0" 1563 group="0"
1564 name="Bangs_Part_Middle" 1564 name="Bangs_Part_Middle"
1565 label="Part Bangs" 1565 label="Part Bangs"
1566 wearable="hair" 1566 wearable="hair"
1567 edit_group="hair_style" 1567 edit_group="hair_style"
1568 edit_group_order="20" 1568 edit_group_order="20"
1569 label_min="No Part" 1569 label_min="No Part"
1570 label_max="Part Bangs" 1570 label_max="Part Bangs"
1571 value_min="0" 1571 value_min="0"
1572 value_max="1" 1572 value_max="1"
1573 camera_elevation=".1" 1573 camera_elevation=".1"
1574 camera_distance=".5" 1574 camera_distance=".5"
1575 camera_angle="0"> 1575 camera_angle="0">
1576 <param_morph /> 1576 <param_morph />
1577 </param> 1577 </param>
1578 1578
1579 <param 1579 <param
1580 id="640" 1580 id="640"
1581 group="1" 1581 group="1"
1582 name="Hair_Egg_Head" 1582 name="Hair_Egg_Head"
1583 wearable="hair" 1583 wearable="hair"
1584 edit_group="hair_style" 1584 edit_group="hair_style"
1585 value_min="-1.3" 1585 value_min="-1.3"
1586 value_max="1"> 1586 value_max="1">
1587 <param_morph /> 1587 <param_morph />
1588 </param> 1588 </param>
1589 1589
1590 <param 1590 <param
1591 id="641" 1591 id="641"
1592 group="1" 1592 group="1"
1593 name="Hair_Squash_Stretch_Head" 1593 name="Hair_Squash_Stretch_Head"
1594 wearable="hair" 1594 wearable="hair"
1595 edit_group="hair_style" 1595 edit_group="hair_style"
1596 value_min="-.5" 1596 value_min="-.5"
1597 value_max="1"> 1597 value_max="1">
1598 <param_morph /> 1598 <param_morph />
1599 </param> 1599 </param>
1600 1600
1601 <param 1601 <param
1602 id="642" 1602 id="642"
1603 group="1" 1603 group="1"
1604 name="Hair_Square_Head" 1604 name="Hair_Square_Head"
1605 wearable="hair" 1605 wearable="hair"
1606 edit_group="hair_style" 1606 edit_group="hair_style"
1607 value_min="0" 1607 value_min="0"
1608 value_max="1"> 1608 value_max="1">
1609 <param_morph /> 1609 <param_morph />
1610 </param> 1610 </param>
1611 1611
1612 <param 1612 <param
1613 id="643" 1613 id="643"
1614 group="1" 1614 group="1"
1615 name="Hair_Round_Head" 1615 name="Hair_Round_Head"
1616 wearable="hair" 1616 wearable="hair"
1617 edit_group="hair_style" 1617 edit_group="hair_style"
1618 value_min="0" 1618 value_min="0"
1619 value_max="1"> 1619 value_max="1">
1620 <param_morph /> 1620 <param_morph />
1621 </param> 1621 </param>
1622 1622
1623 <param 1623 <param
1624 id="644" 1624 id="644"
1625 group="1" 1625 group="1"
1626 name="Hair_Forehead_Round" 1626 name="Hair_Forehead_Round"
1627 wearable="hair" 1627 wearable="hair"
1628 edit_group="hair_style" 1628 edit_group="hair_style"
1629 value_min="0" 1629 value_min="0"
1630 value_max="1"> 1630 value_max="1">
1631 <param_morph /> 1631 <param_morph />
1632 </param> 1632 </param>
1633 1633
1634 <param 1634 <param
1635 id="645" 1635 id="645"
1636 group="1" 1636 group="1"
1637 name="Hair_Forehead_Slant" 1637 name="Hair_Forehead_Slant"
1638 wearable="hair" 1638 wearable="hair"
1639 edit_group="hair_style" 1639 edit_group="hair_style"
1640 value_min="0" 1640 value_min="0"
1641 value_max="1"> 1641 value_max="1">
1642 <param_morph /> 1642 <param_morph />
1643 </param> 1643 </param>
1644 1644
1645 <param 1645 <param
1646 id="774" 1646 id="774"
1647 group="1" 1647 group="1"
1648 name="Shear_Head_Hair" 1648 name="Shear_Head_Hair"
1649 wearable="hair" 1649 wearable="hair"
1650 edit_group="hair_style" 1650 edit_group="hair_style"
1651 value_min="-2" 1651 value_min="-2"
1652 value_max="2"> 1652 value_max="2">
1653 <param_morph /> 1653 <param_morph />
1654 </param> 1654 </param>
1655 1655
1656 <param 1656 <param
1657 id="771" 1657 id="771"
1658 group="1" 1658 group="1"
1659 name="Elongate_Head_Hair" 1659 name="Elongate_Head_Hair"
1660 wearable="hair" 1660 wearable="hair"
1661 edit_group="hair_style" 1661 edit_group="hair_style"
1662 value_min="-1" 1662 value_min="-1"
1663 value_max="1"> 1663 value_max="1">
1664 <param_morph /> 1664 <param_morph />
1665 </param> 1665 </param>
1666 1666
1667 <param 1667 <param
1668 id="674" 1668 id="674"
1669 group="0" 1669 group="0"
1670 name="Hair_Shear_Back" 1670 name="Hair_Shear_Back"
1671 wearable="hair" 1671 wearable="hair"
1672 edit_group="hair_style" 1672 edit_group="hair_style"
1673 edit_group_order="12" 1673 edit_group_order="12"
1674 label="Shear Back" 1674 label="Shear Back"
1675 label_min="Full Back" 1675 label_min="Full Back"
1676 label_max="Sheared Back" 1676 label_max="Sheared Back"
1677 value_min="-1" 1677 value_min="-1"
1678 value_max="2" 1678 value_max="2"
1679 value_default="-0.3" 1679 value_default="-0.3"
1680 camera_elevation=".1" 1680 camera_elevation=".1"
1681 camera_distance=".5" 1681 camera_distance=".5"
1682 camera_angle="100"> 1682 camera_angle="100">
1683 <param_morph /> 1683 <param_morph />
1684 </param> 1684 </param>
1685 1685
1686 <param 1686 <param
1687 id="762" 1687 id="762"
1688 group="0" 1688 group="0"
1689 name="Hair_Shear_Front" 1689 name="Hair_Shear_Front"
1690 wearable="hair" 1690 wearable="hair"
1691 edit_group="hair_style" 1691 edit_group="hair_style"
1692 edit_group_order="11.8" 1692 edit_group_order="11.8"
1693 label="Shear Front" 1693 label="Shear Front"
1694 show_simple="true" 1694 show_simple="true"
1695 label_min="Full Front" 1695 label_min="Full Front"
1696 label_max="Sheared Front" 1696 label_max="Sheared Front"
1697 value_min="0" 1697 value_min="0"
1698 value_max="3" 1698 value_max="3"
1699 camera_elevation=".1" 1699 camera_elevation=".1"
1700 camera_distance=".5" 1700 camera_distance=".5"
1701 camera_angle="30"> 1701 camera_angle="30">
1702 <param_morph /> 1702 <param_morph />
1703 </param> 1703 </param>
1704 1704
1705 <param 1705 <param
1706 id="754" 1706 id="754"
1707 group="0" 1707 group="0"
1708 name="Hair_Taper_Back" 1708 name="Hair_Taper_Back"
1709 wearable="hair" 1709 wearable="hair"
1710 edit_group="hair_style" 1710 edit_group="hair_style"
1711 edit_group_order="14" 1711 edit_group_order="14"
1712 label="Taper Back" 1712 label="Taper Back"
1713 label_min="Wide Back" 1713 label_min="Wide Back"
1714 label_max="Narrow Back" 1714 label_max="Narrow Back"
1715 value_min="-1" 1715 value_min="-1"
1716 value_max="2" 1716 value_max="2"
1717 value_default="0" 1717 value_default="0"
1718 camera_elevation=".1" 1718 camera_elevation=".1"
1719 camera_distance=".5" 1719 camera_distance=".5"
1720 camera_angle="160"> 1720 camera_angle="160">
1721 <param_morph /> 1721 <param_morph />
1722 </param> 1722 </param>
1723 1723
1724 <param 1724 <param
1725 id="755" 1725 id="755"
1726 group="0" 1726 group="0"
1727 name="Hair_Taper_Front" 1727 name="Hair_Taper_Front"
1728 wearable="hair" 1728 wearable="hair"
1729 edit_group="hair_style" 1729 edit_group="hair_style"
1730 edit_group_order="13" 1730 edit_group_order="13"
1731 label="Taper Front" 1731 label="Taper Front"
1732 label_min="Wide Front" 1732 label_min="Wide Front"
1733 label_max="Narrow Front" 1733 label_max="Narrow Front"
1734 value_min="-1.5" 1734 value_min="-1.5"
1735 value_max="1.5" 1735 value_max="1.5"
1736 value_default="0.05" 1736 value_default="0.05"
1737 camera_elevation=".1" 1737 camera_elevation=".1"
1738 camera_distance=".5" 1738 camera_distance=".5"
1739 camera_angle="20"> 1739 camera_angle="20">
1740 <param_morph /> 1740 <param_morph />
1741 </param> 1741 </param>
1742 1742
1743 <param 1743 <param
1744 id="782" 1744 id="782"
1745 group="1" 1745 group="1"
1746 clothing_morph="true" 1746 clothing_morph="true"
1747 name="Hair_Pigtails_Short" 1747 name="Hair_Pigtails_Short"
1748 wearable="hair" 1748 wearable="hair"
1749 edit_group="hair_style" 1749 edit_group="hair_style"
1750 value_min="0" 1750 value_min="0"
1751 value_max="1"> 1751 value_max="1">
1752 <param_morph /> 1752 <param_morph />
1753 </param> 1753 </param>
1754 1754
1755 <param 1755 <param
1756 id="783" 1756 id="783"
1757 group="1" 1757 group="1"
1758 clothing_morph="true" 1758 clothing_morph="true"
1759 name="Hair_Pigtails_Med" 1759 name="Hair_Pigtails_Med"
1760 wearable="hair" 1760 wearable="hair"
1761 edit_group="hair_style" 1761 edit_group="hair_style"
1762 value_min="0" 1762 value_min="0"
1763 value_max="1"> 1763 value_max="1">
1764 <param_morph /> 1764 <param_morph />
1765 </param> 1765 </param>
1766 1766
1767 <param 1767 <param
1768 id="790" 1768 id="790"
1769 group="1" 1769 group="1"
1770 clothing_morph="true" 1770 clothing_morph="true"
1771 name="Hair_Pigtails_Medlong" 1771 name="Hair_Pigtails_Medlong"
1772 wearable="hair" 1772 wearable="hair"
1773 edit_group="hair_style" 1773 edit_group="hair_style"
1774 value_min="0" 1774 value_min="0"
1775 value_max="1"> 1775 value_max="1">
1776 <param_morph /> 1776 <param_morph />
1777 </param> 1777 </param>
1778 1778
1779 <param 1779 <param
1780 id="784" 1780 id="784"
1781 group="1" 1781 group="1"
1782 clothing_morph="true" 1782 clothing_morph="true"
1783 name="Hair_Pigtails_Long" 1783 name="Hair_Pigtails_Long"
1784 wearable="hair" 1784 wearable="hair"
1785 edit_group="hair_style" 1785 edit_group="hair_style"
1786 value_min="0" 1786 value_min="0"
1787 value_max="1"> 1787 value_max="1">
1788 <param_morph /> 1788 <param_morph />
1789 </param> 1789 </param>
1790 1790
1791 <param 1791 <param
1792 id="786" 1792 id="786"
1793 group="1" 1793 group="1"
1794 name="Hair_Ponytail_Short" 1794 name="Hair_Ponytail_Short"
1795 wearable="hair" 1795 wearable="hair"
1796 edit_group="hair_style" 1796 edit_group="hair_style"
1797 value_min="0" 1797 value_min="0"
1798 value_max="1"> 1798 value_max="1">
1799 <param_morph /> 1799 <param_morph />
1800 </param> 1800 </param>
1801 1801
1802 <param 1802 <param
1803 id="787" 1803 id="787"
1804 group="1" 1804 group="1"
1805 name="Hair_Ponytail_Med" 1805 name="Hair_Ponytail_Med"
1806 wearable="hair" 1806 wearable="hair"
1807 edit_group="hair_style" 1807 edit_group="hair_style"
1808 value_min="0" 1808 value_min="0"
1809 value_max="1"> 1809 value_max="1">
1810 <param_morph /> 1810 <param_morph />
1811 </param> 1811 </param>
1812 1812
1813 <param 1813 <param
1814 id="788" 1814 id="788"
1815 group="1" 1815 group="1"
1816 name="Hair_Ponytail_Long" 1816 name="Hair_Ponytail_Long"
1817 clothing_morph="true" 1817 clothing_morph="true"
1818 wearable="hair" 1818 wearable="hair"
1819 edit_group="hair_style" 1819 edit_group="hair_style"
1820 value_min="0" 1820 value_min="0"
1821 value_max="1"> 1821 value_max="1">
1822 <param_morph /> 1822 <param_morph />
1823 </param> 1823 </param>
1824 1824
1825<!-- #end morph targets --> 1825<!-- #end morph targets -->
1826 </mesh> 1826 </mesh>
1827 1827
1828 <mesh 1828 <mesh
1829 type="hairMesh" 1829 type="hairMesh"
1830 lod="1" 1830 lod="1"
1831 file_name="avatar_hair_1.llm" 1831 file_name="avatar_hair_1.llm"
1832 min_pixel_width="160" 1832 min_pixel_width="160"
1833 reference="avatar_hair.llm"> 1833 reference="avatar_hair.llm">
1834 </mesh> 1834 </mesh>
1835 1835
1836 <mesh 1836 <mesh
1837 type="hairMesh" 1837 type="hairMesh"
1838 lod="2" 1838 lod="2"
1839 file_name="avatar_hair_2.llm" 1839 file_name="avatar_hair_2.llm"
1840 min_pixel_width="80" 1840 min_pixel_width="80"
1841 reference="avatar_hair.llm"> 1841 reference="avatar_hair.llm">
1842 </mesh> 1842 </mesh>
1843 1843
1844 <mesh 1844 <mesh
1845 type="hairMesh" 1845 type="hairMesh"
1846 lod="3" 1846 lod="3"
1847 file_name="avatar_hair_3.llm" 1847 file_name="avatar_hair_3.llm"
1848 min_pixel_width="40" 1848 min_pixel_width="40"
1849 reference="avatar_hair.llm"> 1849 reference="avatar_hair.llm">
1850 </mesh> 1850 </mesh>
1851 1851
1852 <mesh 1852 <mesh
1853 type="hairMesh" 1853 type="hairMesh"
1854 lod="4" 1854 lod="4"
1855 file_name="avatar_hair_4.llm" 1855 file_name="avatar_hair_4.llm"
1856 min_pixel_width="20" 1856 min_pixel_width="20"
1857 reference="avatar_hair.llm"> 1857 reference="avatar_hair.llm">
1858 </mesh> 1858 </mesh>
1859 1859
1860 <mesh 1860 <mesh
1861 type="hairMesh" 1861 type="hairMesh"
1862 lod="5" 1862 lod="5"
1863 file_name="avatar_hair_5.llm" 1863 file_name="avatar_hair_5.llm"
1864 min_pixel_width="0" 1864 min_pixel_width="0"
1865 reference="avatar_hair.llm"> 1865 reference="avatar_hair.llm">
1866 </mesh> 1866 </mesh>
1867 1867
1868 <mesh 1868 <mesh
1869 type="headMesh" 1869 type="headMesh"
1870 lod="0" 1870 lod="0"
1871 file_name="avatar_head.llm" 1871 file_name="avatar_head.llm"
1872 min_pixel_width="320"> 1872 min_pixel_width="320">
1873<!-- 1873<!--
1874 begin morph targets 1874 begin morph targets
1875 ############# 1875 #############
1876 tweakable morphs 1876 tweakable morphs
1877 ############# 1877 #############
1878 --> 1878 -->
1879 <param 1879 <param
1880 id="1" 1880 id="1"
1881 group="0" 1881 group="0"
1882 name="Big_Brow" 1882 name="Big_Brow"
1883 label="Brow Size" 1883 label="Brow Size"
1884 wearable="shape" 1884 wearable="shape"
1885 edit_group="shape_head" 1885 edit_group="shape_head"
1886 edit_group_order="7" 1886 edit_group_order="7"
1887 label_min="Small" 1887 label_min="Small"
1888 label_max="Large" 1888 label_max="Large"
1889 value_min="-.3" 1889 value_min="-.3"
1890 value_max="2" 1890 value_max="2"
1891 camera_elevation=".1" 1891 camera_elevation=".1"
1892 camera_distance=".4" 1892 camera_distance=".4"
1893 camera_angle="45"> 1893 camera_angle="45">
1894 <param_morph /> 1894 <param_morph />
1895 </param> 1895 </param>
1896 1896
1897 <param 1897 <param
1898 id="2" 1898 id="2"
1899 group="0" 1899 group="0"
1900 name="Nose_Big_Out" 1900 name="Nose_Big_Out"
1901 label="Nose Size" 1901 label="Nose Size"
1902 wearable="shape" 1902 wearable="shape"
1903 edit_group="shape_nose" 1903 edit_group="shape_nose"
1904 edit_group_order="1" 1904 edit_group_order="1"
1905 label_min="Small" 1905 label_min="Small"
1906 label_max="Large" 1906 label_max="Large"
1907 show_simple="true" 1907 show_simple="true"
1908 value_min="-0.8" 1908 value_min="-0.8"
1909 value_max="2.5" 1909 value_max="2.5"
1910 camera_elevation=".1" 1910 camera_elevation=".1"
1911 camera_distance=".35" 1911 camera_distance=".35"
1912 camera_angle="50"> 1912 camera_angle="50">
1913 <param_morph /> 1913 <param_morph />
1914 </param> 1914 </param>
1915 1915
1916 <param 1916 <param
1917 id="4" 1917 id="4"
1918 group="0" 1918 group="0"
1919 name="Broad_Nostrils" 1919 name="Broad_Nostrils"
1920 label="Nostril Width" 1920 label="Nostril Width"
1921 wearable="shape" 1921 wearable="shape"
1922 edit_group="shape_nose" 1922 edit_group="shape_nose"
1923 edit_group_order="3" 1923 edit_group_order="3"
1924 label_min="Narrow" 1924 label_min="Narrow"
1925 label_max="Broad" 1925 label_max="Broad"
1926 value_min="-.5" 1926 value_min="-.5"
1927 value_max="1" 1927 value_max="1"
1928 camera_elevation=".1" 1928 camera_elevation=".1"
1929 camera_distance=".3" 1929 camera_distance=".3"
1930 camera_angle="-20"> 1930 camera_angle="-20">
1931 <param_morph /> 1931 <param_morph />
1932 </param> 1932 </param>
1933 1933
1934 <param 1934 <param
1935 id="759" 1935 id="759"
1936 group="0" 1936 group="0"
1937 name="Low_Septum_Nose" 1937 name="Low_Septum_Nose"
1938 label="Nostril Division" 1938 label="Nostril Division"
1939 wearable="shape" 1939 wearable="shape"
1940 edit_group="shape_nose" 1940 edit_group="shape_nose"
1941 edit_group_order="3.5" 1941 edit_group_order="3.5"
1942 label_min="High" 1942 label_min="High"
1943 label_max="Low" 1943 label_max="Low"
1944 value_min="-1" 1944 value_min="-1"
1945 value_max="1.5" 1945 value_max="1.5"
1946 value_default="0.5" 1946 value_default="0.5"
1947 camera_elevation=".1" 1947 camera_elevation=".1"
1948 camera_distance=".3" 1948 camera_distance=".3"
1949 camera_angle="-20"> 1949 camera_angle="-20">
1950 <param_morph /> 1950 <param_morph />
1951 </param> 1951 </param>
1952 1952
1953 <param 1953 <param
1954 id="517" 1954 id="517"
1955 group="0" 1955 group="0"
1956 name="Wide_Nose" 1956 name="Wide_Nose"
1957 label="Nose Width" 1957 label="Nose Width"
1958 wearable="shape" 1958 wearable="shape"
1959 edit_group="shape_nose" 1959 edit_group="shape_nose"
1960 edit_group_order="2" 1960 edit_group_order="2"
1961 label_min="Narrow" 1961 label_min="Narrow"
1962 label_max="Wide" 1962 label_max="Wide"
1963 show_simple="true" 1963 show_simple="true"
1964 value_min="-.5" 1964 value_min="-.5"
1965 value_max="1" 1965 value_max="1"
1966 camera_elevation=".1" 1966 camera_elevation=".1"
1967 camera_distance=".3" 1967 camera_distance=".3"
1968 camera_angle="-20"> 1968 camera_angle="-20">
1969 <param_morph /> 1969 <param_morph />
1970 </param> 1970 </param>
1971 1971
1972 <param 1972 <param
1973 id="5" 1973 id="5"
1974 group="0" 1974 group="0"
1975 name="Cleft_Chin" 1975 name="Cleft_Chin"
1976 label="Chin Cleft" 1976 label="Chin Cleft"
1977 wearable="shape" 1977 wearable="shape"
1978 edit_group="shape_chin" 1978 edit_group="shape_chin"
1979 edit_group_order="6" 1979 edit_group_order="6"
1980 label_min="Round" 1980 label_min="Round"
1981 label_max="Cleft" 1981 label_max="Cleft"
1982 value_min="-.1" 1982 value_min="-.1"
1983 value_max="1" 1983 value_max="1"
1984 camera_elevation="0" 1984 camera_elevation="0"
1985 camera_distance=".28" 1985 camera_distance=".28"
1986 camera_angle="-20"> 1986 camera_angle="-20">
1987 <param_morph /> 1987 <param_morph />
1988 </param> 1988 </param>
1989 1989
1990 <param 1990 <param
1991 id="6" 1991 id="6"
1992 group="0" 1992 group="0"
1993 name="Bulbous_Nose_Tip" 1993 name="Bulbous_Nose_Tip"
1994 label="Nose Tip Shape" 1994 label="Nose Tip Shape"
1995 wearable="shape" 1995 wearable="shape"
1996 edit_group="shape_nose" 1996 edit_group="shape_nose"
1997 edit_group_order="8" 1997 edit_group_order="8"
1998 label_min="Pointy" 1998 label_min="Pointy"
1999 label_max="Bulbous" 1999 label_max="Bulbous"
2000 value_min="-.3" 2000 value_min="-.3"
2001 value_max="1" 2001 value_max="1"
2002 camera_elevation=".1" 2002 camera_elevation=".1"
2003 camera_distance=".35" 2003 camera_distance=".35"
2004 camera_angle="15"> 2004 camera_angle="15">
2005 <param_morph /> 2005 <param_morph />
2006 </param> 2006 </param>
2007 2007
2008 <param 2008 <param
2009 id="7" 2009 id="7"
2010 group="0" 2010 group="0"
2011 name="Weak_Chin" 2011 name="Weak_Chin"
2012 label="Chin Angle" 2012 label="Chin Angle"
2013 wearable="shape" 2013 wearable="shape"
2014 edit_group="shape_chin" 2014 edit_group="shape_chin"
2015 edit_group_order="1" 2015 edit_group_order="1"
2016 label_min="Chin Out" 2016 label_min="Chin Out"
2017 label_max="Chin In" 2017 label_max="Chin In"
2018 value_min="-.5" 2018 value_min="-.5"
2019 value_max=".5" 2019 value_max=".5"
2020 camera_elevation=".1" 2020 camera_elevation=".1"
2021 camera_distance=".4" 2021 camera_distance=".4"
2022 camera_angle="45"> 2022 camera_angle="45">
2023 <param_morph /> 2023 <param_morph />
2024 </param> 2024 </param>
2025 2025
2026 <param 2026 <param
2027 id="8" 2027 id="8"
2028 group="0" 2028 group="0"
2029 name="Double_Chin" 2029 name="Double_Chin"
2030 label="Chin-Neck" 2030 label="Chin-Neck"
2031 wearable="shape" 2031 wearable="shape"
2032 edit_group="shape_chin" 2032 edit_group="shape_chin"
2033 edit_group_order="8" 2033 edit_group_order="8"
2034 label_min="Tight Chin" 2034 label_min="Tight Chin"
2035 label_max="Double Chin" 2035 label_max="Double Chin"
2036 value_min="-.5" 2036 value_min="-.5"
2037 value_max="1.5" 2037 value_max="1.5"
2038 camera_elevation="-.1" 2038 camera_elevation="-.1"
2039 camera_distance=".3" 2039 camera_distance=".3"
2040 camera_angle="60"> 2040 camera_angle="60">
2041 <param_morph /> 2041 <param_morph />
2042 </param> 2042 </param>
2043 2043
2044 <param 2044 <param
2045 id="10" 2045 id="10"
2046 group="0" 2046 group="0"
2047 name="Sunken_Cheeks" 2047 name="Sunken_Cheeks"
2048 label="Lower Cheeks" 2048 label="Lower Cheeks"
2049 wearable="shape" 2049 wearable="shape"
2050 edit_group="shape_head" 2050 edit_group="shape_head"
2051 edit_group_order="9" 2051 edit_group_order="9"
2052 label_min="Well-Fed" 2052 label_min="Well-Fed"
2053 label_max="Sunken" 2053 label_max="Sunken"
2054 show_simple="true" 2054 show_simple="true"
2055 value_min="-1.5" 2055 value_min="-1.5"
2056 value_max="3" 2056 value_max="3"
2057 camera_elevation=".1" 2057 camera_elevation=".1"
2058 camera_distance=".4" 2058 camera_distance=".4"
2059 camera_angle="5"> 2059 camera_angle="5">
2060 <param_morph /> 2060 <param_morph />
2061 </param> 2061 </param>
2062 2062
2063 <param 2063 <param
2064 id="11" 2064 id="11"
2065 group="0" 2065 group="0"
2066 name="Noble_Nose_Bridge" 2066 name="Noble_Nose_Bridge"
2067 label="Upper Bridge" 2067 label="Upper Bridge"
2068 wearable="shape" 2068 wearable="shape"
2069 edit_group="shape_nose" 2069 edit_group="shape_nose"
2070 edit_group_order="5" 2070 edit_group_order="5"
2071 label_min="Low" 2071 label_min="Low"
2072 label_max="High" 2072 label_max="High"
2073 value_min="-.5" 2073 value_min="-.5"
2074 value_max="1.5" 2074 value_max="1.5"
2075 camera_elevation=".1" 2075 camera_elevation=".1"
2076 camera_distance=".35" 2076 camera_distance=".35"
2077 camera_angle="70"> 2077 camera_angle="70">
2078 <param_morph /> 2078 <param_morph />
2079 </param> 2079 </param>
2080 2080
2081 <param 2081 <param
2082 id="758" 2082 id="758"
2083 group="0" 2083 group="0"
2084 name="Lower_Bridge_Nose" 2084 name="Lower_Bridge_Nose"
2085 label="Lower Bridge" 2085 label="Lower Bridge"
2086 wearable="shape" 2086 wearable="shape"
2087 edit_group="shape_nose" 2087 edit_group="shape_nose"
2088 edit_group_order="5.5" 2088 edit_group_order="5.5"
2089 label_min="Low" 2089 label_min="Low"
2090 label_max="High" 2090 label_max="High"
2091 value_min="-1.5" 2091 value_min="-1.5"
2092 value_max="1.5" 2092 value_max="1.5"
2093 camera_elevation=".1" 2093 camera_elevation=".1"
2094 camera_distance=".35" 2094 camera_distance=".35"
2095 camera_angle="70"> 2095 camera_angle="70">
2096 <param_morph /> 2096 <param_morph />
2097 </param> 2097 </param>
2098 2098
2099 <param 2099 <param
2100 id="12" 2100 id="12"
2101 group="0" 2101 group="0"
2102 name="Jowls" 2102 name="Jowls"
2103 wearable="shape" 2103 wearable="shape"
2104 edit_group="shape_chin" 2104 edit_group="shape_chin"
2105 edit_group_order="5" 2105 edit_group_order="5"
2106 label_min="Less" 2106 label_min="Less"
2107 label_max="More" 2107 label_max="More"
2108 value_min="-.5" 2108 value_min="-.5"
2109 value_max="2.5" 2109 value_max="2.5"
2110 camera_elevation=".1" 2110 camera_elevation=".1"
2111 camera_distance=".4" 2111 camera_distance=".4"
2112 camera_angle="0"> 2112 camera_angle="0">
2113 <param_morph /> 2113 <param_morph />
2114 </param> 2114 </param>
2115 2115
2116 <param 2116 <param
2117 id="13" 2117 id="13"
2118 group="0" 2118 group="0"
2119 name="Cleft_Chin_Upper" 2119 name="Cleft_Chin_Upper"
2120 label="Upper Chin Cleft" 2120 label="Upper Chin Cleft"
2121 wearable="shape" 2121 wearable="shape"
2122 edit_group="shape_chin" 2122 edit_group="shape_chin"
2123 edit_group_order="7" 2123 edit_group_order="7"
2124 label_min="Round" 2124 label_min="Round"
2125 label_max="Cleft" 2125 label_max="Cleft"
2126 value_min="0" 2126 value_min="0"
2127 value_max="1.5" 2127 value_max="1.5"
2128 camera_elevation="0" 2128 camera_elevation="0"
2129 camera_distance=".28" 2129 camera_distance=".28"
2130 camera_angle="-20"> 2130 camera_angle="-20">
2131 <param_morph /> 2131 <param_morph />
2132 </param> 2132 </param>
2133 2133
2134 <param 2134 <param
2135 id="14" 2135 id="14"
2136 group="0" 2136 group="0"
2137 name="High_Cheek_Bones" 2137 name="High_Cheek_Bones"
2138 label="Cheek Bones" 2138 label="Cheek Bones"
2139 wearable="shape" 2139 wearable="shape"
2140 edit_group="shape_head" 2140 edit_group="shape_head"
2141 edit_group_order="10" 2141 edit_group_order="10"
2142 label_min="Low" 2142 label_min="Low"
2143 label_max="High" 2143 label_max="High"
2144 value_min="-.5" 2144 value_min="-.5"
2145 value_max="1" 2145 value_max="1"
2146 camera_elevation=".1" 2146 camera_elevation=".1"
2147 camera_distance=".3" 2147 camera_distance=".3"
2148 camera_angle="-20"> 2148 camera_angle="-20">
2149 <param_morph /> 2149 <param_morph />
2150 </param> 2150 </param>
2151 2151
2152 <param 2152 <param
2153 id="15" 2153 id="15"
2154 group="0" 2154 group="0"
2155 name="Ears_Out" 2155 name="Ears_Out"
2156 label="Ear Angle" 2156 label="Ear Angle"
2157 wearable="shape" 2157 wearable="shape"
2158 edit_group="shape_ears" 2158 edit_group="shape_ears"
2159 edit_group_order="2" 2159 edit_group_order="2"
2160 label_min="In" 2160 label_min="In"
2161 label_max="Out" 2161 label_max="Out"
2162 value_min="-.5" 2162 value_min="-.5"
2163 value_max="1.5" 2163 value_max="1.5"
2164 camera_elevation=".1" 2164 camera_elevation=".1"
2165 camera_distance=".3" 2165 camera_distance=".3"
2166 camera_angle="-20"> 2166 camera_angle="-20">
2167 <param_morph /> 2167 <param_morph />
2168 </param> 2168 </param>
2169 2169
2170<!--Pointy eyebrows became a driver/driven param with new max value for backwards compatibility between 1.0 and 1.1--> 2170<!--Pointy eyebrows became a driver/driven param with new max value for backwards compatibility between 1.0 and 1.1-->
2171 <param 2171 <param
2172 id="870" 2172 id="870"
2173 group="1" 2173 group="1"
2174 name="Pointy_Eyebrows" 2174 name="Pointy_Eyebrows"
2175 label="Eyebrow Points" 2175 label="Eyebrow Points"
2176 wearable="hair" 2176 wearable="hair"
2177 edit_group="hair_eyebrows" 2177 edit_group="hair_eyebrows"
2178 edit_group_order="4" 2178 edit_group_order="4"
2179 label_min="Smooth" 2179 label_min="Smooth"
2180 label_max="Pointy" 2180 label_max="Pointy"
2181 value_min="-.5" 2181 value_min="-.5"
2182 value_max="1" 2182 value_max="1"
2183 camera_elevation=".1" 2183 camera_elevation=".1"
2184 camera_distance=".3"> 2184 camera_distance=".3">
2185 <param_morph /> 2185 <param_morph />
2186 </param> 2186 </param>
2187 2187
2188 <param 2188 <param
2189 id="17" 2189 id="17"
2190 group="0" 2190 group="0"
2191 name="Square_Jaw" 2191 name="Square_Jaw"
2192 label="Jaw Shape" 2192 label="Jaw Shape"
2193 wearable="shape" 2193 wearable="shape"
2194 edit_group="shape_chin" 2194 edit_group="shape_chin"
2195 edit_group_order="2" 2195 edit_group_order="2"
2196 label_min="Pointy" 2196 label_min="Pointy"
2197 label_max="Square" 2197 label_max="Square"
2198 value_min="-.5" 2198 value_min="-.5"
2199 value_max="1" 2199 value_max="1"
2200 camera_distance=".3" 2200 camera_distance=".3"
2201 camera_elevation=".04" 2201 camera_elevation=".04"
2202 camera_angle="-20"> 2202 camera_angle="-20">
2203 <param_morph /> 2203 <param_morph />
2204 </param> 2204 </param>
2205 2205
2206 <param 2206 <param
2207 id="18" 2207 id="18"
2208 group="0" 2208 group="0"
2209 name="Puffy_Upper_Cheeks" 2209 name="Puffy_Upper_Cheeks"
2210 label="Upper Cheeks" 2210 label="Upper Cheeks"
2211 wearable="shape" 2211 wearable="shape"
2212 edit_group="shape_head" 2212 edit_group="shape_head"
2213 edit_group_order="8" 2213 edit_group_order="8"
2214 label_min="Thin" 2214 label_min="Thin"
2215 label_max="Puffy" 2215 label_max="Puffy"
2216 value_min="-1.5" 2216 value_min="-1.5"
2217 value_max="2.5" 2217 value_max="2.5"
2218 camera_elevation=".1" 2218 camera_elevation=".1"
2219 camera_distance=".3" 2219 camera_distance=".3"
2220 camera_angle="-20"> 2220 camera_angle="-20">
2221 <param_morph /> 2221 <param_morph />
2222 </param> 2222 </param>
2223 2223
2224 <param 2224 <param
2225 id="19" 2225 id="19"
2226 group="0" 2226 group="0"
2227 name="Upturned_Nose_Tip" 2227 name="Upturned_Nose_Tip"
2228 label="Nose Tip Angle" 2228 label="Nose Tip Angle"
2229 wearable="shape" 2229 wearable="shape"
2230 edit_group="shape_nose" 2230 edit_group="shape_nose"
2231 edit_group_order="7" 2231 edit_group_order="7"
2232 label_min="Downturned" 2232 label_min="Downturned"
2233 label_max="Upturned" 2233 label_max="Upturned"
2234 value_min="-1.5" 2234 value_min="-1.5"
2235 value_max="1" 2235 value_max="1"
2236 camera_elevation=".1" 2236 camera_elevation=".1"
2237 camera_distance=".35" 2237 camera_distance=".35"
2238 camera_angle="15"> 2238 camera_angle="15">
2239 <param_morph /> 2239 <param_morph />
2240 </param> 2240 </param>
2241 2241
2242 <param 2242 <param
2243 id="20" 2243 id="20"
2244 group="0" 2244 group="0"
2245 name="Bulbous_Nose" 2245 name="Bulbous_Nose"
2246 label="Nose Thickness" 2246 label="Nose Thickness"
2247 wearable="shape" 2247 wearable="shape"
2248 edit_group="shape_nose" 2248 edit_group="shape_nose"
2249 edit_group_order="4" 2249 edit_group_order="4"
2250 label_min="Thin Nose" 2250 label_min="Thin Nose"
2251 label_max="Bulbous Nose" 2251 label_max="Bulbous Nose"
2252 show_simple="true" 2252 show_simple="true"
2253 value_min="-.5" 2253 value_min="-.5"
2254 value_max="1.5" 2254 value_max="1.5"
2255 camera_elevation=".1" 2255 camera_elevation=".1"
2256 camera_distance=".3"> 2256 camera_distance=".3">
2257 <param_morph /> 2257 <param_morph />
2258 </param> 2258 </param>
2259 2259
2260 <param 2260 <param
2261 id="21" 2261 id="21"
2262 group="0" 2262 group="0"
2263 name="Upper_Eyelid_Fold" 2263 name="Upper_Eyelid_Fold"
2264 label="Upper Eyelid Fold" 2264 label="Upper Eyelid Fold"
2265 wearable="shape" 2265 wearable="shape"
2266 edit_group="shape_eyes" 2266 edit_group="shape_eyes"
2267 edit_group_order="5" 2267 edit_group_order="5"
2268 label_min="Uncreased" 2268 label_min="Uncreased"
2269 label_max="Creased" 2269 label_max="Creased"
2270 value_min="-0.2" 2270 value_min="-0.2"
2271 value_max="1.3" 2271 value_max="1.3"
2272 camera_elevation=".1" 2272 camera_elevation=".1"
2273 camera_distance=".35"> 2273 camera_distance=".35">
2274 <param_morph /> 2274 <param_morph />
2275 </param> 2275 </param>
2276 2276
2277 <param 2277 <param
2278 id="22" 2278 id="22"
2279 group="0" 2279 group="0"
2280 name="Attached_Earlobes" 2280 name="Attached_Earlobes"
2281 label="Attached Earlobes" 2281 label="Attached Earlobes"
2282 wearable="shape" 2282 wearable="shape"
2283 edit_group="shape_ears" 2283 edit_group="shape_ears"
2284 edit_group_order="3" 2284 edit_group_order="3"
2285 label_min="Unattached" 2285 label_min="Unattached"
2286 label_max="Attached" 2286 label_max="Attached"
2287 value_min="0" 2287 value_min="0"
2288 value_max="1" 2288 value_max="1"
2289 camera_elevation=".1" 2289 camera_elevation=".1"
2290 camera_distance=".3" 2290 camera_distance=".3"
2291 camera_angle="45"> 2291 camera_angle="45">
2292 <param_morph /> 2292 <param_morph />
2293 </param> 2293 </param>
2294 2294
2295 <param 2295 <param
2296 id="23" 2296 id="23"
2297 group="0" 2297 group="0"
2298 name="Baggy_Eyes" 2298 name="Baggy_Eyes"
2299 label="Eye Bags" 2299 label="Eye Bags"
2300 wearable="shape" 2300 wearable="shape"
2301 edit_group="shape_eyes" 2301 edit_group="shape_eyes"
2302 edit_group_order="6" 2302 edit_group_order="6"
2303 label_min="Smooth" 2303 label_min="Smooth"
2304 label_max="Baggy" 2304 label_max="Baggy"
2305 value_min="-.5" 2305 value_min="-.5"
2306 value_max="1.5" 2306 value_max="1.5"
2307 camera_elevation=".1" 2307 camera_elevation=".1"
2308 camera_distance=".35"> 2308 camera_distance=".35">
2309 <param_morph /> 2309 <param_morph />
2310 </param> 2310 </param>
2311 2311
2312 <param 2312 <param
2313 id="765" 2313 id="765"
2314 group="0" 2314 group="0"
2315 name="Puffy_Lower_Lids" 2315 name="Puffy_Lower_Lids"
2316 label="Puffy Eyelids" 2316 label="Puffy Eyelids"
2317 wearable="shape" 2317 wearable="shape"
2318 edit_group="shape_eyes" 2318 edit_group="shape_eyes"
2319 edit_group_order="6.1" 2319 edit_group_order="6.1"
2320 label_min="Flat" 2320 label_min="Flat"
2321 label_max="Puffy" 2321 label_max="Puffy"
2322 value_min="-.3" 2322 value_min="-.3"
2323 value_max="2.5" 2323 value_max="2.5"
2324 camera_elevation=".1" 2324 camera_elevation=".1"
2325 camera_distance=".35"> 2325 camera_distance=".35">
2326 <param_morph /> 2326 <param_morph />
2327 </param> 2327 </param>
2328 2328
2329 <param 2329 <param
2330 id="24" 2330 id="24"
2331 group="0" 2331 group="0"
2332 name="Wide_Eyes" 2332 name="Wide_Eyes"
2333 label="Eye Opening" 2333 label="Eye Opening"
2334 wearable="shape" 2334 wearable="shape"
2335 edit_group="shape_eyes" 2335 edit_group="shape_eyes"
2336 edit_group_order="1.1" 2336 edit_group_order="1.1"
2337 label_min="Narrow" 2337 label_min="Narrow"
2338 label_max="Wide" 2338 label_max="Wide"
2339 value_min="-1.5" 2339 value_min="-1.5"
2340 value_max="2" 2340 value_max="2"
2341 show_simple="true" 2341 show_simple="true"
2342 camera_elevation=".1" 2342 camera_elevation=".1"
2343 camera_distance=".35"> 2343 camera_distance=".35">
2344 <param_morph /> 2344 <param_morph />
2345 </param> 2345 </param>
2346 2346
2347 <param 2347 <param
2348 id="25" 2348 id="25"
2349 group="0" 2349 group="0"
2350 name="Wide_Lip_Cleft" 2350 name="Wide_Lip_Cleft"
2351 label="Lip Cleft" 2351 label="Lip Cleft"
2352 wearable="shape" 2352 wearable="shape"
2353 edit_group="shape_mouth" 2353 edit_group="shape_mouth"
2354 edit_group_order="6" 2354 edit_group_order="6"
2355 label_min="Narrow" 2355 label_min="Narrow"
2356 label_max="Wide" 2356 label_max="Wide"
2357 value_min="-.8" 2357 value_min="-.8"
2358 value_max="1.5" 2358 value_max="1.5"
2359 camera_elevation="0" 2359 camera_elevation="0"
2360 camera_distance=".28"> 2360 camera_distance=".28">
2361 <param_morph /> 2361 <param_morph />
2362 </param> 2362 </param>
2363 2363
2364 <param 2364 <param
2365 id="764" 2365 id="764"
2366 group="0" 2366 group="0"
2367 name="Lip_Cleft_Deep" 2367 name="Lip_Cleft_Deep"
2368 label="Lip Cleft Depth" 2368 label="Lip Cleft Depth"
2369 wearable="shape" 2369 wearable="shape"
2370 edit_group="shape_mouth" 2370 edit_group="shape_mouth"
2371 edit_group_order="5.8" 2371 edit_group_order="5.8"
2372 label_min="Shallow" 2372 label_min="Shallow"
2373 label_max="Deep" 2373 label_max="Deep"
2374 value_min="-.5" 2374 value_min="-.5"
2375 value_max="1.2" 2375 value_max="1.2"
2376 camera_elevation="0" 2376 camera_elevation="0"
2377 camera_distance=".28"> 2377 camera_distance=".28">
2378 <param_morph /> 2378 <param_morph />
2379 </param> 2379 </param>
2380 2380
2381 <param 2381 <param
2382 id="26" 2382 id="26"
2383 group="1" 2383 group="1"
2384 wearable="shape" 2384 wearable="shape"
2385 name="Lips_Thin" 2385 name="Lips_Thin"
2386 edit_group="driven" 2386 edit_group="driven"
2387 value_min="0" 2387 value_min="0"
2388 value_max=".7"> 2388 value_max=".7">
2389 <param_morph /> 2389 <param_morph />
2390 </param> 2390 </param>
2391 2391
2392 <param 2392 <param
2393 id="27" 2393 id="27"
2394 group="0" 2394 group="0"
2395 name="Wide_Nose_Bridge" 2395 name="Wide_Nose_Bridge"
2396 label="Bridge Width" 2396 label="Bridge Width"
2397 wearable="shape" 2397 wearable="shape"
2398 edit_group="shape_nose" 2398 edit_group="shape_nose"
2399 edit_group_order="6" 2399 edit_group_order="6"
2400 label_min="Narrow" 2400 label_min="Narrow"
2401 label_max="Wide" 2401 label_max="Wide"
2402 value_min="-1.3" 2402 value_min="-1.3"
2403 value_max="1.2" 2403 value_max="1.2"
2404 camera_elevation=".1" 2404 camera_elevation=".1"
2405 camera_distance=".3" 2405 camera_distance=".3"
2406 camera_angle="-20"> 2406 camera_angle="-20">
2407 <param_morph /> 2407 <param_morph />
2408 </param> 2408 </param>
2409 2409
2410 <param 2410 <param
2411 id="28" 2411 id="28"
2412 group="1" 2412 group="1"
2413 name="Lips_Fat" 2413 name="Lips_Fat"
2414 wearable="shape" 2414 wearable="shape"
2415 edit_group="driven" 2415 edit_group="driven"
2416 value_min="0" 2416 value_min="0"
2417 value_max="2"> 2417 value_max="2">
2418 <param_morph /> 2418 <param_morph />
2419 </param> 2419 </param>
2420 2420
2421 <param 2421 <param
2422 id="29" 2422 id="29"
2423 group="1" 2423 group="1"
2424 name="Wide_Upper_Lip" 2424 name="Wide_Upper_Lip"
2425 wearable="shape" 2425 wearable="shape"
2426 edit_group="driven" 2426 edit_group="driven"
2427 value_min="-.7" 2427 value_min="-.7"
2428 value_max="1.3"> 2428 value_max="1.3">
2429 <param_morph /> 2429 <param_morph />
2430 </param> 2430 </param>
2431 2431
2432 <param 2432 <param
2433 id="30" 2433 id="30"
2434 group="1" 2434 group="1"
2435 name="Wide_Lower_Lip" 2435 name="Wide_Lower_Lip"
2436 wearable="shape" 2436 wearable="shape"
2437 edit_group="driven" 2437 edit_group="driven"
2438 value_min="-.7" 2438 value_min="-.7"
2439 value_max="1.3"> 2439 value_max="1.3">
2440 <param_morph /> 2440 <param_morph />
2441 </param> 2441 </param>
2442 2442
2443<!--Arced eyebrows became a driver/driven param with new max value for backwards compatibility between 1.0 and 1.1--> 2443<!--Arced eyebrows became a driver/driven param with new max value for backwards compatibility between 1.0 and 1.1-->
2444 <param 2444 <param
2445 id="872" 2445 id="872"
2446 group="1" 2446 group="1"
2447 name="Arced_Eyebrows" 2447 name="Arced_Eyebrows"
2448 label="Eyebrow Arc" 2448 label="Eyebrow Arc"
2449 wearable="hair" 2449 wearable="hair"
2450 edit_group="hair_eyebrows" 2450 edit_group="hair_eyebrows"
2451 edit_group_order="3" 2451 edit_group_order="3"
2452 label_min="Flat" 2452 label_min="Flat"
2453 label_max="Arced" 2453 label_max="Arced"
2454 value_min="0" 2454 value_min="0"
2455 value_max="1"> 2455 value_max="1">
2456 <param_morph /> 2456 <param_morph />
2457 </param> 2457 </param>
2458 2458
2459<!--Lower eyebrows became a driver/driven param with new min value for backwards compatibility between 1.0 and 1.1--> 2459<!--Lower eyebrows became a driver/driven param with new min value for backwards compatibility between 1.0 and 1.1-->
2460 <param 2460 <param
2461 id="871" 2461 id="871"
2462 group="1" 2462 group="1"
2463 name="Lower_Eyebrows" 2463 name="Lower_Eyebrows"
2464 label="Eyebrow Height" 2464 label="Eyebrow Height"
2465 show_simple="true" 2465 show_simple="true"
2466 wearable="hair" 2466 wearable="hair"
2467 edit_group="hair_eyebrows" 2467 edit_group="hair_eyebrows"
2468 edit_group_order="2.5" 2468 edit_group_order="2.5"
2469 label_min="Higher" 2469 label_min="Higher"
2470 label_max="Lower" 2470 label_max="Lower"
2471 value_min="-2" 2471 value_min="-2"
2472 value_max="2"> 2472 value_max="2">
2473 <param_morph /> 2473 <param_morph />
2474 </param> 2474 </param>
2475 2475
2476 <param 2476 <param
2477 id="35" 2477 id="35"
2478 group="0" 2478 group="0"
2479 name="Big_Ears" 2479 name="Big_Ears"
2480 label="Ear Size" 2480 label="Ear Size"
2481 wearable="shape" 2481 wearable="shape"
2482 edit_group="shape_ears" 2482 edit_group="shape_ears"
2483 edit_group_order="1" 2483 edit_group_order="1"
2484 label_min="Small" 2484 label_min="Small"
2485 label_max="Large" 2485 label_max="Large"
2486 value_min="-1" 2486 value_min="-1"
2487 value_max="2" 2487 value_max="2"
2488 camera_elevation=".1" 2488 camera_elevation=".1"
2489 camera_distance=".3" 2489 camera_distance=".3"
2490 camera_angle="45"> 2490 camera_angle="45">
2491 <param_morph /> 2491 <param_morph />
2492 </param> 2492 </param>
2493 2493
2494 <param 2494 <param
2495 id="796" 2495 id="796"
2496 group="0" 2496 group="0"
2497 name="Pointy_Ears" 2497 name="Pointy_Ears"
2498 label="Ear Tips" 2498 label="Ear Tips"
2499 wearable="shape" 2499 wearable="shape"
2500 edit_group="shape_ears" 2500 edit_group="shape_ears"
2501 edit_group_order="4" 2501 edit_group_order="4"
2502 label_min="Flat" 2502 label_min="Flat"
2503 label_max="Pointy" 2503 label_max="Pointy"
2504 value_min="-.4" 2504 value_min="-.4"
2505 value_max="3" 2505 value_max="3"
2506 camera_elevation=".1" 2506 camera_elevation=".1"
2507 camera_distance=".3" 2507 camera_distance=".3"
2508 camera_angle="45"> 2508 camera_angle="45">
2509 <param_morph /> 2509 <param_morph />
2510 </param> 2510 </param>
2511 2511
2512 <param 2512 <param
2513 id="185" 2513 id="185"
2514 group="0" 2514 group="0"
2515 name="Deep_Chin" 2515 name="Deep_Chin"
2516 label="Chin Depth" 2516 label="Chin Depth"
2517 wearable="shape" 2517 wearable="shape"
2518 edit_group="shape_chin" 2518 edit_group="shape_chin"
2519 edit_group_order="3" 2519 edit_group_order="3"
2520 label_min="Shallow" 2520 label_min="Shallow"
2521 label_max="Deep" 2521 label_max="Deep"
2522 value_min="-1" 2522 value_min="-1"
2523 value_max="1" 2523 value_max="1"
2524 camera_elevation=".1" 2524 camera_elevation=".1"
2525 camera_distance=".4" 2525 camera_distance=".4"
2526 camera_angle="30"> 2526 camera_angle="30">
2527 <param_morph /> 2527 <param_morph />
2528 </param> 2528 </param>
2529 2529
2530 <param 2530 <param
2531 id="186" 2531 id="186"
2532 group="1" 2532 group="1"
2533 name="Egg_Head" 2533 name="Egg_Head"
2534 label="Egg Head" 2534 label="Egg Head"
2535 wearable="shape" 2535 wearable="shape"
2536 edit_group="shape_head" 2536 edit_group="shape_head"
2537 label_min="Chin Heavy" 2537 label_min="Chin Heavy"
2538 label_max="Forehead Heavy" 2538 label_max="Forehead Heavy"
2539 value_min="-1.3" 2539 value_min="-1.3"
2540 value_max="1" 2540 value_max="1"
2541 camera_elevation=".1" 2541 camera_elevation=".1"
2542 camera_distance=".5" 2542 camera_distance=".5"
2543 camera_angle="20"> 2543 camera_angle="20">
2544 <param_morph /> 2544 <param_morph />
2545 </param> 2545 </param>
2546 2546
2547 <param 2547 <param
2548 id="187" 2548 id="187"
2549 group="1" 2549 group="1"
2550 name="Squash_Stretch_Head" 2550 name="Squash_Stretch_Head"
2551 label="Squash/Stretch Head" 2551 label="Squash/Stretch Head"
2552 wearable="shape" 2552 wearable="shape"
2553 edit_group="shape_head" 2553 edit_group="shape_head"
2554 label_min="Squash Head" 2554 label_min="Squash Head"
2555 label_max="Stretch Head" 2555 label_max="Stretch Head"
2556 value_min="-.5" 2556 value_min="-.5"
2557 value_max="1" 2557 value_max="1"
2558 camera_elevation=".1" 2558 camera_elevation=".1"
2559 camera_distance=".5" 2559 camera_distance=".5"
2560 camera_angle="20"> 2560 camera_angle="20">
2561 <param_morph> 2561 <param_morph>
2562 <volume_morph 2562 <volume_morph
2563 name="HEAD" 2563 name="HEAD"
2564 scale="-0.008 -0.006 0.015"/> 2564 scale="-0.008 -0.006 0.015"/>
2565 </param_morph> 2565 </param_morph>
2566 </param> 2566 </param>
2567 2567
2568 <param 2568 <param
2569 id="188" 2569 id="188"
2570 group="1" 2570 group="1"
2571 name="Square_Head" 2571 name="Square_Head"
2572 wearable="shape" 2572 wearable="shape"
2573 label_min="Less Square" 2573 label_min="Less Square"
2574 label_max="More Square" 2574 label_max="More Square"
2575 value_min="0" 2575 value_min="0"
2576 value_max=".7" 2576 value_max=".7"
2577 camera_elevation=".1" 2577 camera_elevation=".1"
2578 camera_distance=".5" 2578 camera_distance=".5"
2579 camera_angle="20"> 2579 camera_angle="20">
2580 <param_morph /> 2580 <param_morph />
2581 </param> 2581 </param>
2582 2582
2583 <param 2583 <param
2584 id="189" 2584 id="189"
2585 group="1" 2585 group="1"
2586 wearable="shape" 2586 wearable="shape"
2587 name="Round_Head" 2587 name="Round_Head"
2588 label_min="Less Round" 2588 label_min="Less Round"
2589 label_max="More Round" 2589 label_max="More Round"
2590 value_min="0" 2590 value_min="0"
2591 value_max="1" 2591 value_max="1"
2592 camera_elevation=".1" 2592 camera_elevation=".1"
2593 camera_distance=".5" 2593 camera_distance=".5"
2594 camera_angle="20"> 2594 camera_angle="20">
2595 <param_morph /> 2595 <param_morph />
2596 </param> 2596 </param>
2597 2597
2598 <param 2598 <param
2599 id="194" 2599 id="194"
2600 group="1" 2600 group="1"
2601 name="Eye_Spread" 2601 name="Eye_Spread"
2602 wearable="shape" 2602 wearable="shape"
2603 edit_group="shape_eyes" 2603 edit_group="shape_eyes"
2604 label_min="Eyes Together" 2604 label_min="Eyes Together"
2605 label_max="Eyes Spread" 2605 label_max="Eyes Spread"
2606 value_min="-2" 2606 value_min="-2"
2607 value_max="2"> 2607 value_max="2">
2608 <param_morph /> 2608 <param_morph />
2609 </param> 2609 </param>
2610 2610
2611 <param 2611 <param
2612 id="400" 2612 id="400"
2613 sex="male" 2613 sex="male"
2614 group="1" 2614 group="1"
2615 name="Displace_Hair_Facial" 2615 name="Displace_Hair_Facial"
2616 label="Hair Thickess" 2616 label="Hair Thickess"
2617 wearable="hair" 2617 wearable="hair"
2618 edit_group="hair_facial" 2618 edit_group="hair_facial"
2619 label_min="Cropped Hair" 2619 label_min="Cropped Hair"
2620 label_max="Bushy Hair" 2620 label_max="Bushy Hair"
2621 value_min="0" 2621 value_min="0"
2622 value_max="2"> 2622 value_max="2">
2623 <param_morph /> 2623 <param_morph />
2624 </param> 2624 </param>
2625 2625
2626 <param 2626 <param
2627 id="506" 2627 id="506"
2628 group="0" 2628 group="0"
2629 name="Mouth_Height" 2629 name="Mouth_Height"
2630 wearable="shape" 2630 wearable="shape"
2631 label="Mouth Position" 2631 label="Mouth Position"
2632 show_simple="true" 2632 show_simple="true"
2633 edit_group="shape_mouth" 2633 edit_group="shape_mouth"
2634 edit_group_order="4" 2634 edit_group_order="4"
2635 label_min="High" 2635 label_min="High"
2636 label_max="Low" 2636 label_max="Low"
2637 value_min="-2" 2637 value_min="-2"
2638 value_max="2" 2638 value_max="2"
2639 camera_distance=".3" 2639 camera_distance=".3"
2640 camera_elevation=".04"> 2640 camera_elevation=".04">
2641 <param_morph /> 2641 <param_morph />
2642 </param> 2642 </param>
2643 2643
2644 <param 2644 <param
2645 id="633" 2645 id="633"
2646 group="1" 2646 group="1"
2647 name="Fat_Head" 2647 name="Fat_Head"
2648 label="Fat Head" 2648 label="Fat Head"
2649 wearable="shape" 2649 wearable="shape"
2650 edit_group="shape_body" 2650 edit_group="shape_body"
2651 label_min="Skinny" 2651 label_min="Skinny"
2652 label_max="Fat" 2652 label_max="Fat"
2653 value_min="0" 2653 value_min="0"
2654 value_max="1" 2654 value_max="1"
2655 camera_elevation=".3"> 2655 camera_elevation=".3">
2656 <param_morph/> 2656 <param_morph/>
2657 </param> 2657 </param>
2658 2658
2659 <param 2659 <param
2660 id="630" 2660 id="630"
2661 group="1" 2661 group="1"
2662 name="Forehead_Round" 2662 name="Forehead_Round"
2663 label="Round Forehead" 2663 label="Round Forehead"
2664 wearable="shape" 2664 wearable="shape"
2665 label_min="Less" 2665 label_min="Less"
2666 label_max="More" 2666 label_max="More"
2667 value_min="0" 2667 value_min="0"
2668 value_max="1"> 2668 value_max="1">
2669 <param_morph /> 2669 <param_morph />
2670 </param> 2670 </param>
2671 2671
2672 <param 2672 <param
2673 id="631" 2673 id="631"
2674 group="1" 2674 group="1"
2675 name="Forehead_Slant" 2675 name="Forehead_Slant"
2676 label="Slanted Forehead" 2676 label="Slanted Forehead"
2677 wearable="shape" 2677 wearable="shape"
2678 label_min="Less" 2678 label_min="Less"
2679 label_max="More" 2679 label_max="More"
2680 value_min="0" 2680 value_min="0"
2681 value_max="1"> 2681 value_max="1">
2682 <param_morph /> 2682 <param_morph />
2683 </param> 2683 </param>
2684 2684
2685 <param 2685 <param
2686 id="650" 2686 id="650"
2687 group="0" 2687 group="0"
2688 name="Eyelid_Corner_Up" 2688 name="Eyelid_Corner_Up"
2689 label="Outer Eye Corner" 2689 label="Outer Eye Corner"
2690 wearable="shape" 2690 wearable="shape"
2691 edit_group="shape_eyes" 2691 edit_group="shape_eyes"
2692 edit_group_order="4" 2692 edit_group_order="4"
2693 label_min="Corner Down" 2693 label_min="Corner Down"
2694 label_max="Corner Up" 2694 label_max="Corner Up"
2695 value_min="-1.3" 2695 value_min="-1.3"
2696 value_max="1.2" 2696 value_max="1.2"
2697 camera_elevation=".1" 2697 camera_elevation=".1"
2698 camera_distance=".30"> 2698 camera_distance=".30">
2699 <param_morph /> 2699 <param_morph />
2700 </param> 2700 </param>
2701 2701
2702 <param 2702 <param
2703 id="880" 2703 id="880"
2704 group="0" 2704 group="0"
2705 name="Eyelid_Inner_Corner_Up" 2705 name="Eyelid_Inner_Corner_Up"
2706 label="Inner Eye Corner" 2706 label="Inner Eye Corner"
2707 wearable="shape" 2707 wearable="shape"
2708 edit_group="shape_eyes" 2708 edit_group="shape_eyes"
2709 edit_group_order="4.2" 2709 edit_group_order="4.2"
2710 label_min="Corner Down" 2710 label_min="Corner Down"
2711 label_max="Corner Up" 2711 label_max="Corner Up"
2712 value_min="-1.3" 2712 value_min="-1.3"
2713 value_max="1.2" 2713 value_max="1.2"
2714 camera_elevation=".1" 2714 camera_elevation=".1"
2715 camera_distance=".30"> 2715 camera_distance=".30">
2716 <param_morph /> 2716 <param_morph />
2717 </param> 2717 </param>
2718 2718
2719 <param 2719 <param
2720 id="653" 2720 id="653"
2721 group="0" 2721 group="0"
2722 name="Tall_Lips" 2722 name="Tall_Lips"
2723 wearable="shape" 2723 wearable="shape"
2724 label="Lip Fullness" 2724 label="Lip Fullness"
2725 show_simple="true" 2725 show_simple="true"
2726 edit_group="shape_mouth" 2726 edit_group="shape_mouth"
2727 edit_group_order="2" 2727 edit_group_order="2"
2728 label_min="Less Full" 2728 label_min="Less Full"
2729 label_max="More Full" 2729 label_max="More Full"
2730 value_min="-1" 2730 value_min="-1"
2731 value_max="2" 2731 value_max="2"
2732 camera_distance=".3" 2732 camera_distance=".3"
2733 camera_elevation=".04"> 2733 camera_elevation=".04">
2734 <param_morph /> 2734 <param_morph />
2735 </param> 2735 </param>
2736 2736
2737 <param 2737 <param
2738 id="656" 2738 id="656"
2739 group="0" 2739 group="0"
2740 name="Crooked_Nose" 2740 name="Crooked_Nose"
2741 wearable="shape" 2741 wearable="shape"
2742 label="Crooked Nose" 2742 label="Crooked Nose"
2743 edit_group="shape_nose" 2743 edit_group="shape_nose"
2744 edit_group_order="9" 2744 edit_group_order="9"
2745 label_min="Nose Left" 2745 label_min="Nose Left"
2746 label_max="Nose Right" 2746 label_max="Nose Right"
2747 value_min="-2" 2747 value_min="-2"
2748 value_max="2" 2748 value_max="2"
2749 camera_distance=".3" 2749 camera_distance=".3"
2750 camera_elevation=".04" 2750 camera_elevation=".04"
2751 camera_angle="-20"> 2751 camera_angle="-20">
2752 <param_morph /> 2752 <param_morph />
2753 </param> 2753 </param>
2754 2754
2755 <param 2755 <param
2756 id="657" 2756 id="657"
2757 group="1" 2757 group="1"
2758 name="Smile_Mouth" 2758 name="Smile_Mouth"
2759 wearable="shape" 2759 wearable="shape"
2760 label="Mouth Corner" 2760 label="Mouth Corner"
2761 edit_group="shape_mouth" 2761 edit_group="shape_mouth"
2762 label_min="Corner Normal" 2762 label_min="Corner Normal"
2763 label_max="Corner Up" 2763 label_max="Corner Up"
2764 value_min="0" 2764 value_min="0"
2765 value_max="1.4" 2765 value_max="1.4"
2766 camera_distance=".3" 2766 camera_distance=".3"
2767 camera_elevation=".04"> 2767 camera_elevation=".04">
2768 <param_morph /> 2768 <param_morph />
2769 </param> 2769 </param>
2770 2770
2771 <param 2771 <param
2772 id="658" 2772 id="658"
2773 group="1" 2773 group="1"
2774 name="Frown_Mouth" 2774 name="Frown_Mouth"
2775 wearable="shape" 2775 wearable="shape"
2776 label="Mouth Corner" 2776 label="Mouth Corner"
2777 edit_group="shape_mouth" 2777 edit_group="shape_mouth"
2778 label_min="Corner Normal" 2778 label_min="Corner Normal"
2779 label_max="Corner Down" 2779 label_max="Corner Down"
2780 value_min="0" 2780 value_min="0"
2781 value_max="1.2" 2781 value_max="1.2"
2782 camera_distance=".3" 2782 camera_distance=".3"
2783 camera_elevation=".04"> 2783 camera_elevation=".04">
2784 <param_morph /> 2784 <param_morph />
2785 </param> 2785 </param>
2786 2786
2787 <param 2787 <param
2788 id="797" 2788 id="797"
2789 group="1" 2789 group="1"
2790 name="Fat_Upper_Lip" 2790 name="Fat_Upper_Lip"
2791 wearable="shape" 2791 wearable="shape"
2792 label="Fat Upper Lip" 2792 label="Fat Upper Lip"
2793 edit_group="shape_mouth" 2793 edit_group="shape_mouth"
2794 label_min="Normal Upper" 2794 label_min="Normal Upper"
2795 label_max="Fat Upper" 2795 label_max="Fat Upper"
2796 value_min="0" 2796 value_min="0"
2797 value_max="1.5" 2797 value_max="1.5"
2798 camera_distance=".3" 2798 camera_distance=".3"
2799 camera_elevation=".04"> 2799 camera_elevation=".04">
2800 <param_morph /> 2800 <param_morph />
2801 </param> 2801 </param>
2802 2802
2803 <param 2803 <param
2804 id="798" 2804 id="798"
2805 group="1" 2805 group="1"
2806 name="Fat_Lower_Lip" 2806 name="Fat_Lower_Lip"
2807 wearable="shape" 2807 wearable="shape"
2808 label="Fat Lower Lip" 2808 label="Fat Lower Lip"
2809 edit_group="shape_mouth" 2809 edit_group="shape_mouth"
2810 label_min="Normal Lower" 2810 label_min="Normal Lower"
2811 label_max="Fat Lower" 2811 label_max="Fat Lower"
2812 value_min="0" 2812 value_min="0"
2813 value_max="1.5" 2813 value_max="1.5"
2814 camera_distance=".3" 2814 camera_distance=".3"
2815 camera_elevation=".04"> 2815 camera_elevation=".04">
2816 <param_morph /> 2816 <param_morph />
2817 </param> 2817 </param>
2818 2818
2819 <param 2819 <param
2820 id="660" 2820 id="660"
2821 group="1" 2821 group="1"
2822 name="Shear_Head" 2822 name="Shear_Head"
2823 wearable="shape" 2823 wearable="shape"
2824 label="Shear Face" 2824 label="Shear Face"
2825 edit_group="shape_head" 2825 edit_group="shape_head"
2826 label_min="Shear Left" 2826 label_min="Shear Left"
2827 label_max="Shear Right" 2827 label_max="Shear Right"
2828 value_min="-2" 2828 value_min="-2"
2829 value_max="2" 2829 value_max="2"
2830 value_default="0" 2830 value_default="0"
2831 camera_distance=".5" 2831 camera_distance=".5"
2832 camera_elevation=".04"> 2832 camera_elevation=".04">
2833 <param_morph /> 2833 <param_morph />
2834 </param> 2834 </param>
2835 2835
2836 <param 2836 <param
2837 id="770" 2837 id="770"
2838 group="1" 2838 group="1"
2839 name="Elongate_Head" 2839 name="Elongate_Head"
2840 wearable="shape" 2840 wearable="shape"
2841 label="Shear Face" 2841 label="Shear Face"
2842 edit_group="shape_head" 2842 edit_group="shape_head"
2843 label_min="Flat Head" 2843 label_min="Flat Head"
2844 label_max="Long Head" 2844 label_max="Long Head"
2845 value_min="-1" 2845 value_min="-1"
2846 value_max="1" 2846 value_max="1"
2847 value_default="0" 2847 value_default="0"
2848 camera_distance=".5" 2848 camera_distance=".5"
2849 camera_elevation=".04"> 2849 camera_elevation=".04">
2850 <param_morph> 2850 <param_morph>
2851 <volume_morph 2851 <volume_morph
2852 name="HEAD" 2852 name="HEAD"
2853 scale="0.02 0.0 0.0"/> 2853 scale="0.02 0.0 0.0"/>
2854 </param_morph> 2854 </param_morph>
2855 </param> 2855 </param>
2856 2856
2857 <param 2857 <param
2858 id="663" 2858 id="663"
2859 group="0" 2859 group="0"
2860 name="Shift_Mouth" 2860 name="Shift_Mouth"
2861 wearable="shape" 2861 wearable="shape"
2862 label="Shift Mouth" 2862 label="Shift Mouth"
2863 edit_group="shape_mouth" 2863 edit_group="shape_mouth"
2864 edit_group_order="7" 2864 edit_group_order="7"
2865 label_min="Shift Left" 2865 label_min="Shift Left"
2866 label_max="Shift Right" 2866 label_max="Shift Right"
2867 value_min="-2" 2867 value_min="-2"
2868 value_max="2" 2868 value_max="2"
2869 value_default="0" 2869 value_default="0"
2870 camera_distance=".35" 2870 camera_distance=".35"
2871 camera_elevation=".04" 2871 camera_elevation=".04"
2872 camera_angle="-20"> 2872 camera_angle="-20">
2873 <param_morph /> 2873 <param_morph />
2874 </param> 2874 </param>
2875 2875
2876 <param 2876 <param
2877 id="664" 2877 id="664"
2878 group="0" 2878 group="0"
2879 name="Pop_Eye" 2879 name="Pop_Eye"
2880 wearable="shape" 2880 wearable="shape"
2881 label="Eye Pop" 2881 label="Eye Pop"
2882 edit_group="shape_eyes" 2882 edit_group="shape_eyes"
2883 edit_group_order="8" 2883 edit_group_order="8"
2884 label_min="Pop Right Eye" 2884 label_min="Pop Right Eye"
2885 label_max="Pop Left Eye" 2885 label_max="Pop Left Eye"
2886 value_min="-1.3" 2886 value_min="-1.3"
2887 value_max="1.3" 2887 value_max="1.3"
2888 value_default="0" 2888 value_default="0"
2889 camera_elevation=".1" 2889 camera_elevation=".1"
2890 camera_distance=".35"> 2890 camera_distance=".35">
2891 <param_morph /> 2891 <param_morph />
2892 </param> 2892 </param>
2893 2893
2894 <param 2894 <param
2895 id="760" 2895 id="760"
2896 group="0" 2896 group="0"
2897 name="Jaw_Angle" 2897 name="Jaw_Angle"
2898 wearable="shape" 2898 wearable="shape"
2899 label="Jaw Angle" 2899 label="Jaw Angle"
2900 edit_group="shape_chin" 2900 edit_group="shape_chin"
2901 edit_group_order="3.5" 2901 edit_group_order="3.5"
2902 label_min="Low Jaw" 2902 label_min="Low Jaw"
2903 label_max="High Jaw" 2903 label_max="High Jaw"
2904 value_min="-1.2" 2904 value_min="-1.2"
2905 value_max="2" 2905 value_max="2"
2906 value_default="0" 2906 value_default="0"
2907 camera_distance=".5" 2907 camera_distance=".5"
2908 camera_elevation=".04" 2908 camera_elevation=".04"
2909 camera_angle="70"> 2909 camera_angle="70">
2910 <param_morph /> 2910 <param_morph />
2911 </param> 2911 </param>
2912 2912
2913 <param 2913 <param
2914 id="665" 2914 id="665"
2915 group="0" 2915 group="0"
2916 name="Jaw_Jut" 2916 name="Jaw_Jut"
2917 wearable="shape" 2917 wearable="shape"
2918 label="Jaw Jut" 2918 label="Jaw Jut"
2919 edit_group="shape_chin" 2919 edit_group="shape_chin"
2920 edit_group_order="4" 2920 edit_group_order="4"
2921 label_min="Overbite" 2921 label_min="Overbite"
2922 label_max="Underbite" 2922 label_max="Underbite"
2923 value_min="-2" 2923 value_min="-2"
2924 value_max="2" 2924 value_max="2"
2925 value_default="0" 2925 value_default="0"
2926 camera_distance=".5" 2926 camera_distance=".5"
2927 camera_elevation=".04" 2927 camera_elevation=".04"
2928 camera_angle="70"> 2928 camera_angle="70">
2929 <param_morph /> 2929 <param_morph />
2930 </param> 2930 </param>
2931 2931
2932 <param 2932 <param
2933 id="686" 2933 id="686"
2934 group="1" 2934 group="1"
2935 name="Head_Eyes_Big" 2935 name="Head_Eyes_Big"
2936 wearable="shape" 2936 wearable="shape"
2937 label="Eye Size" 2937 label="Eye Size"
2938 edit_group="shape_eyes" 2938 edit_group="shape_eyes"
2939 label_min="Beady Eyes" 2939 label_min="Beady Eyes"
2940 label_max="Anime Eyes" 2940 label_max="Anime Eyes"
2941 show_simple="true" 2941 show_simple="true"
2942 value_min="-2" 2942 value_min="-2"
2943 value_max="2" 2943 value_max="2"
2944 value_default="0"> 2944 value_default="0">
2945 <param_morph /> 2945 <param_morph />
2946 </param> 2946 </param>
2947 2947
2948 <param 2948 <param
2949 id="767" 2949 id="767"
2950 group="1" 2950 group="1"
2951 name="Bug_Eyed_Head" 2951 name="Bug_Eyed_Head"
2952 wearable="shape" 2952 wearable="shape"
2953 label="Eye Depth" 2953 label="Eye Depth"
2954 edit_group="shape_eyes" 2954 edit_group="shape_eyes"
2955 edit_group_order="4.5" 2955 edit_group_order="4.5"
2956 label_min="Sunken Eyes" 2956 label_min="Sunken Eyes"
2957 label_max="Bug Eyes" 2957 label_max="Bug Eyes"
2958 value_min="-2" 2958 value_min="-2"
2959 value_max="2" 2959 value_max="2"
2960 value_default="0"> 2960 value_default="0">
2961 <param_morph /> 2961 <param_morph />
2962 </param> 2962 </param>
2963 2963
2964<!-- 2964<!--
2965 #Fat_Lips = Fat_Lips 34 1 0 1 2965 #Fat_Lips = Fat_Lips 34 1 0 1
2966 #Wide_Lips = Wide_Lips 35 1 0 1 2966 #Wide_Lips = Wide_Lips 35 1 0 1
2967 #Wide_Nose = Wide_Nose 36 1 0 1 2967 #Wide_Nose = Wide_Nose 36 1 0 1
2968 --> 2968 -->
2969<!-- 2969<!--
2970 ############## 2970 ##############
2971 # Facial Expression morphs 2971 # Facial Expression morphs
2972 ############## 2972 ##############
2973 --> 2973 -->
2974 <param 2974 <param
2975 id="300" 2975 id="300"
2976 group="1" 2976 group="1"
2977 name="Express_Closed_Mouth" 2977 name="Express_Closed_Mouth"
2978 value_default="1" 2978 value_default="1"
2979 value_min="0" 2979 value_min="0"
2980 value_max="1"> 2980 value_max="1">
2981 <param_morph /> 2981 <param_morph />
2982 </param> 2982 </param>
2983 2983
2984 <param 2984 <param
2985 id="301" 2985 id="301"
2986 group="1" 2986 group="1"
2987 name="Express_Tongue_Out" 2987 name="Express_Tongue_Out"
2988 value_min="0" 2988 value_min="0"
2989 value_max="1"> 2989 value_max="1">
2990 <param_morph /> 2990 <param_morph />
2991 </param> 2991 </param>
2992 2992
2993 <param 2993 <param
2994 id="302" 2994 id="302"
2995 group="1" 2995 group="1"
2996 name="Express_Surprise_Emote" 2996 name="Express_Surprise_Emote"
2997 value_min="0" 2997 value_min="0"
2998 value_max="1"> 2998 value_max="1">
2999 <param_morph /> 2999 <param_morph />
3000 </param> 3000 </param>
3001 3001
3002 <param 3002 <param
3003 id="303" 3003 id="303"
3004 group="1" 3004 group="1"
3005 name="Express_Wink_Emote" 3005 name="Express_Wink_Emote"
3006 value_min="0" 3006 value_min="0"
3007 value_max="1"> 3007 value_max="1">
3008 <param_morph /> 3008 <param_morph />
3009 </param> 3009 </param>
3010 3010
3011 <param 3011 <param
3012 id="304" 3012 id="304"
3013 group="1" 3013 group="1"
3014 name="Express_Embarrassed_Emote" 3014 name="Express_Embarrassed_Emote"
3015 value_min="0" 3015 value_min="0"
3016 value_max="1"> 3016 value_max="1">
3017 <param_morph /> 3017 <param_morph />
3018 </param> 3018 </param>
3019 3019
3020 <param 3020 <param
3021 id="305" 3021 id="305"
3022 group="1" 3022 group="1"
3023 name="Express_Shrug_Emote" 3023 name="Express_Shrug_Emote"
3024 value_min="0" 3024 value_min="0"
3025 value_max="1"> 3025 value_max="1">
3026 <param_morph /> 3026 <param_morph />
3027 </param> 3027 </param>
3028 3028
3029 <param 3029 <param
3030 id="306" 3030 id="306"
3031 group="1" 3031 group="1"
3032 name="Express_Kiss" 3032 name="Express_Kiss"
3033 value_min="0" 3033 value_min="0"
3034 value_max="1"> 3034 value_max="1">
3035 <param_morph /> 3035 <param_morph />
3036 </param> 3036 </param>
3037 3037
3038 <param 3038 <param
3039 id="307" 3039 id="307"
3040 group="1" 3040 group="1"
3041 name="Express_Bored_Emote" 3041 name="Express_Bored_Emote"
3042 value_min="0" 3042 value_min="0"
3043 value_max="1"> 3043 value_max="1">
3044 <param_morph /> 3044 <param_morph />
3045 </param> 3045 </param>
3046 3046
3047 <param 3047 <param
3048 id="308" 3048 id="308"
3049 group="1" 3049 group="1"
3050 name="Express_Repulsed_Emote" 3050 name="Express_Repulsed_Emote"
3051 value_min="0" 3051 value_min="0"
3052 value_max="1"> 3052 value_max="1">
3053 <param_morph /> 3053 <param_morph />
3054 </param> 3054 </param>
3055 3055
3056 <param 3056 <param
3057 id="309" 3057 id="309"
3058 group="1" 3058 group="1"
3059 name="Express_Disdain" 3059 name="Express_Disdain"
3060 value_min="0" 3060 value_min="0"
3061 value_max="1"> 3061 value_max="1">
3062 <param_morph /> 3062 <param_morph />
3063 </param> 3063 </param>
3064 3064
3065 <param 3065 <param
3066 id="310" 3066 id="310"
3067 group="1" 3067 group="1"
3068 name="Express_Afraid_Emote" 3068 name="Express_Afraid_Emote"
3069 value_min="0" 3069 value_min="0"
3070 value_max="1"> 3070 value_max="1">
3071 <param_morph /> 3071 <param_morph />
3072 </param> 3072 </param>
3073 3073
3074 <param 3074 <param
3075 id="311" 3075 id="311"
3076 group="1" 3076 group="1"
3077 name="Express_Worry_Emote" 3077 name="Express_Worry_Emote"
3078 value_min="0" 3078 value_min="0"
3079 value_max="1"> 3079 value_max="1">
3080 <param_morph /> 3080 <param_morph />
3081 </param> 3081 </param>
3082 3082
3083 <param 3083 <param
3084 id="312" 3084 id="312"
3085 group="1" 3085 group="1"
3086 name="Express_Cry_Emote" 3086 name="Express_Cry_Emote"
3087 value_min="0" 3087 value_min="0"
3088 value_max="1"> 3088 value_max="1">
3089 <param_morph /> 3089 <param_morph />
3090 </param> 3090 </param>
3091 3091
3092 <param 3092 <param
3093 id="313" 3093 id="313"
3094 group="1" 3094 group="1"
3095 name="Express_Sad_Emote" 3095 name="Express_Sad_Emote"
3096 value_min="0" 3096 value_min="0"
3097 value_max="1"> 3097 value_max="1">
3098 <param_morph /> 3098 <param_morph />
3099 </param> 3099 </param>
3100 3100
3101 <param 3101 <param
3102 id="314" 3102 id="314"
3103 group="1" 3103 group="1"
3104 name="Express_Anger_Emote" 3104 name="Express_Anger_Emote"
3105 value_min="0" 3105 value_min="0"
3106 value_max="1"> 3106 value_max="1">
3107 <param_morph /> 3107 <param_morph />
3108 </param> 3108 </param>
3109 3109
3110 <param 3110 <param
3111 id="315" 3111 id="315"
3112 group="1" 3112 group="1"
3113 name="Express_Frown" 3113 name="Express_Frown"
3114 value_min="0" 3114 value_min="0"
3115 value_max="1"> 3115 value_max="1">
3116 <param_morph /> 3116 <param_morph />
3117 </param> 3117 </param>
3118 3118
3119 <param 3119 <param
3120 id="316" 3120 id="316"
3121 group="1" 3121 group="1"
3122 name="Express_Laugh_Emote" 3122 name="Express_Laugh_Emote"
3123 value_min="0" 3123 value_min="0"
3124 value_max="1"> 3124 value_max="1">
3125 <param_morph /> 3125 <param_morph />
3126 </param> 3126 </param>
3127 3127
3128 <param 3128 <param
3129 id="317" 3129 id="317"
3130 group="1" 3130 group="1"
3131 name="Express_Toothsmile" 3131 name="Express_Toothsmile"
3132 value_min="0" 3132 value_min="0"
3133 value_max="1"> 3133 value_max="1">
3134 <param_morph /> 3134 <param_morph />
3135 </param> 3135 </param>
3136 3136
3137 <param 3137 <param
3138 id="318" 3138 id="318"
3139 group="1" 3139 group="1"
3140 name="Express_Smile" 3140 name="Express_Smile"
3141 value_min="0" 3141 value_min="0"
3142 value_max="1"> 3142 value_max="1">
3143 <param_morph /> 3143 <param_morph />
3144 </param> 3144 </param>
3145 3145
3146 <param 3146 <param
3147 id="632" 3147 id="632"
3148 group="1" 3148 group="1"
3149 name="Express_Open_Mouth" 3149 name="Express_Open_Mouth"
3150 value_min="0" 3150 value_min="0"
3151 value_max="1"> 3151 value_max="1">
3152 <param_morph /> 3152 <param_morph />
3153 </param> 3153 </param>
3154 3154
3155<!-- 3155<!--
3156 ############## 3156 ##############
3157 # Lipsync morphs 3157 # Lipsync morphs
3158 ############## 3158 ##############
3159 --> 3159 -->
3160 3160
3161 <param 3161 <param
3162 id="70" 3162 id="70"
3163 group="1" 3163 group="1"
3164 name="Lipsync_Aah" 3164 name="Lipsync_Aah"
3165 value_min="0" 3165 value_min="0"
3166 value_max="1"> 3166 value_max="1">
3167 <param_morph /> 3167 <param_morph />
3168 </param> 3168 </param>
3169 3169
3170 <param 3170 <param
3171 id="71" 3171 id="71"
3172 group="1" 3172 group="1"
3173 name="Lipsync_Ooh" 3173 name="Lipsync_Ooh"
3174 value_min="0" 3174 value_min="0"
3175 value_max="1"> 3175 value_max="1">
3176 <param_morph /> 3176 <param_morph />
3177 </param> 3177 </param>
3178 3178
3179<!-- 3179<!--
3180 ############## 3180 ##############
3181 # other morphs (not user controlled) 3181 # other morphs (not user controlled)
3182 ############## 3182 ##############
3183 --> 3183 -->
3184 <param 3184 <param
3185 id="40" 3185 id="40"
3186 group="1" 3186 group="1"
3187 name="Male_Head" 3187 name="Male_Head"
3188 value_min="0" 3188 value_min="0"
3189 value_max="1"> 3189 value_max="1">
3190 <param_morph /> 3190 <param_morph />
3191 </param> 3191 </param>
3192 3192
3193 <param 3193 <param
3194 id="41" 3194 id="41"
3195 group="1" 3195 group="1"
3196 name="Old" 3196 name="Old"
3197 value_min="0" 3197 value_min="0"
3198 value_max="1"> 3198 value_max="1">
3199 <param_morph /> 3199 <param_morph />
3200 </param> 3200 </param>
3201 3201
3202<!-- 3202<!--
3203 ############## 3203 ##############
3204 # animatable morphs 3204 # animatable morphs
3205 ############## 3205 ##############
3206 --> 3206 -->
3207 <param 3207 <param
3208 id="51" 3208 id="51"
3209 group="1" 3209 group="1"
3210 name="Furrowed_Eyebrows" 3210 name="Furrowed_Eyebrows"
3211 value_min="0" 3211 value_min="0"
3212 value_max="1"> 3212 value_max="1">
3213 <param_morph /> 3213 <param_morph />
3214 </param> 3214 </param>
3215 3215
3216 <param 3216 <param
3217 id="53" 3217 id="53"
3218 group="1" 3218 group="1"
3219 name="Surprised_Eyebrows" 3219 name="Surprised_Eyebrows"
3220 value_min="0" 3220 value_min="0"
3221 value_max="1"> 3221 value_max="1">
3222 <param_morph /> 3222 <param_morph />
3223 </param> 3223 </param>
3224 3224
3225 <param 3225 <param
3226 id="54" 3226 id="54"
3227 group="1" 3227 group="1"
3228 name="Worried_Eyebrows" 3228 name="Worried_Eyebrows"
3229 value_min="0" 3229 value_min="0"
3230 value_max="1"> 3230 value_max="1">
3231 <param_morph /> 3231 <param_morph />
3232 </param> 3232 </param>
3233 3233
3234 <param 3234 <param
3235 id="55" 3235 id="55"
3236 group="1" 3236 group="1"
3237 name="Frown_Mouth" 3237 name="Frown_Mouth"
3238 value_min="0" 3238 value_min="0"
3239 value_max="1"> 3239 value_max="1">
3240 <param_morph /> 3240 <param_morph />
3241 </param> 3241 </param>
3242 3242
3243 <param 3243 <param
3244 id="57" 3244 id="57"
3245 group="1" 3245 group="1"
3246 name="Smile_Mouth" 3246 name="Smile_Mouth"
3247 value_min="0" 3247 value_min="0"
3248 value_max="1"> 3248 value_max="1">
3249 <param_morph /> 3249 <param_morph />
3250 </param> 3250 </param>
3251 3251
3252 <param 3252 <param
3253 id="58" 3253 id="58"
3254 group="1" 3254 group="1"
3255 name="Blink_Left" 3255 name="Blink_Left"
3256 value_min="0" 3256 value_min="0"
3257 value_max="1"> 3257 value_max="1">
3258 <param_morph /> 3258 <param_morph />
3259 </param> 3259 </param>
3260 3260
3261 <param 3261 <param
3262 id="59" 3262 id="59"
3263 group="1" 3263 group="1"
3264 name="Blink_Right" 3264 name="Blink_Right"
3265 value_min="0" 3265 value_min="0"
3266 value_max="1"> 3266 value_max="1">
3267 <param_morph /> 3267 <param_morph />
3268 </param> 3268 </param>
3269 3269
3270<!-- 3270<!--
3271 #end morph targets 3271 #end morph targets
3272 --> 3272 -->
3273 </mesh> 3273 </mesh>
3274 3274
3275 <mesh 3275 <mesh
3276 type="headMesh" 3276 type="headMesh"
3277 lod="1" 3277 lod="1"
3278 file_name="avatar_head_1.llm" 3278 file_name="avatar_head_1.llm"
3279 min_pixel_width="160" 3279 min_pixel_width="160"
3280 reference="avatar_head.llm"> 3280 reference="avatar_head.llm">
3281 </mesh> 3281 </mesh>
3282 3282
3283 <mesh 3283 <mesh
3284 type="headMesh" 3284 type="headMesh"
3285 lod="2" 3285 lod="2"
3286 file_name="avatar_head_2.llm" 3286 file_name="avatar_head_2.llm"
3287 min_pixel_width="80" 3287 min_pixel_width="80"
3288 reference="avatar_head.llm"> 3288 reference="avatar_head.llm">
3289 </mesh> 3289 </mesh>
3290 3290
3291 <mesh 3291 <mesh
3292 type="headMesh" 3292 type="headMesh"
3293 lod="3" 3293 lod="3"
3294 file_name="avatar_head_3.llm" 3294 file_name="avatar_head_3.llm"
3295 min_pixel_width="40" 3295 min_pixel_width="40"
3296 reference="avatar_head.llm"> 3296 reference="avatar_head.llm">
3297 </mesh> 3297 </mesh>
3298 3298
3299 <mesh 3299 <mesh
3300 type="headMesh" 3300 type="headMesh"
3301 lod="4" 3301 lod="4"
3302 file_name="avatar_head_4.llm" 3302 file_name="avatar_head_4.llm"
3303 min_pixel_width="0" 3303 min_pixel_width="0"
3304 reference="avatar_head.llm"> 3304 reference="avatar_head.llm">
3305 </mesh> 3305 </mesh>
3306 3306
3307 <mesh 3307 <mesh
3308 type="eyelashMesh" 3308 type="eyelashMesh"
3309 lod="0" 3309 lod="0"
3310 file_name="avatar_eyelashes.llm" 3310 file_name="avatar_eyelashes.llm"
3311 min_pixel_width="320"> 3311 min_pixel_width="320">
3312 <param 3312 <param
3313 shared="1" 3313 shared="1"
3314 id="660" 3314 id="660"
3315 group="1" 3315 group="1"
3316 name="Shear_Head" 3316 name="Shear_Head"
3317 wearable="shape" 3317 wearable="shape"
3318 label="Shear Face" 3318 label="Shear Face"
3319 edit_group="shape_head" 3319 edit_group="shape_head"
3320 label_min="Shear Left" 3320 label_min="Shear Left"
3321 label_max="Shear Right" 3321 label_max="Shear Right"
3322 value_min="-2" 3322 value_min="-2"
3323 value_max="2" 3323 value_max="2"
3324 value_default="0" 3324 value_default="0"
3325 camera_distance=".5" 3325 camera_distance=".5"
3326 camera_elevation=".04"> 3326 camera_elevation=".04">
3327 <param_morph /> 3327 <param_morph />
3328 </param> 3328 </param>
3329 3329
3330 <param 3330 <param
3331 shared="1" 3331 shared="1"
3332 id="770" 3332 id="770"
3333 group="1" 3333 group="1"
3334 name="Elongate_Head" 3334 name="Elongate_Head"
3335 wearable="shape" 3335 wearable="shape"
3336 label="Shear Face" 3336 label="Shear Face"
3337 edit_group="shape_head" 3337 edit_group="shape_head"
3338 label_min="Flat Head" 3338 label_min="Flat Head"
3339 label_max="Long Head" 3339 label_max="Long Head"
3340 value_min="-1" 3340 value_min="-1"
3341 value_max="1" 3341 value_max="1"
3342 value_default="0" 3342 value_default="0"
3343 camera_distance=".5" 3343 camera_distance=".5"
3344 camera_elevation=".04"> 3344 camera_elevation=".04">
3345 <param_morph /> 3345 <param_morph />
3346 </param> 3346 </param>
3347 3347
3348 <param 3348 <param
3349 shared="1" 3349 shared="1"
3350 id="664" 3350 id="664"
3351 group="0" 3351 group="0"
3352 name="Pop_Eye" 3352 name="Pop_Eye"
3353 wearable="shape" 3353 wearable="shape"
3354 label="Eye Pop" 3354 label="Eye Pop"
3355 edit_group="shape_eyes" 3355 edit_group="shape_eyes"
3356 edit_group_order="8" 3356 edit_group_order="8"
3357 label_min="Pop Right Eye" 3357 label_min="Pop Right Eye"
3358 label_max="Pop Left Eye" 3358 label_max="Pop Left Eye"
3359 value_min="-2" 3359 value_min="-2"
3360 value_max="2" 3360 value_max="2"
3361 value_default="0" 3361 value_default="0"
3362 camera_distance=".5" 3362 camera_distance=".5"
3363 camera_elevation=".04" 3363 camera_elevation=".04"
3364 camera_angle="-20"> 3364 camera_angle="-20">
3365 <param_morph /> 3365 <param_morph />
3366 </param> 3366 </param>
3367 3367
3368 <param 3368 <param
3369 shared="1" 3369 shared="1"
3370 id="21" 3370 id="21"
3371 group="0" 3371 group="0"
3372 name="Upper_Eyelid_Fold" 3372 name="Upper_Eyelid_Fold"
3373 label="Upper Eyelid Fold" 3373 label="Upper Eyelid Fold"
3374 wearable="shape" 3374 wearable="shape"
3375 edit_group="shape_eyes" 3375 edit_group="shape_eyes"
3376 label_min="Uncreased" 3376 label_min="Uncreased"
3377 label_max="Creased" 3377 label_max="Creased"
3378 value_min="-0.2" 3378 value_min="-0.2"
3379 value_max="1.3" 3379 value_max="1.3"
3380 camera_elevation=".1" 3380 camera_elevation=".1"
3381 camera_distance=".35"> 3381 camera_distance=".35">
3382 <param_morph /> 3382 <param_morph />
3383 </param> 3383 </param>
3384 3384
3385 <param 3385 <param
3386 shared="1" 3386 shared="1"
3387 id="24" 3387 id="24"
3388 group="0" 3388 group="0"
3389 name="Wide_Eyes" 3389 name="Wide_Eyes"
3390 label="Eye Opening" 3390 label="Eye Opening"
3391 wearable="shape" 3391 wearable="shape"
3392 edit_group="shape_eyes" 3392 edit_group="shape_eyes"
3393 label_min="Narrow" 3393 label_min="Narrow"
3394 label_max="Wide" 3394 label_max="Wide"
3395 show_simple="true" 3395 show_simple="true"
3396 value_min="-1.5" 3396 value_min="-1.5"
3397 value_max="2" 3397 value_max="2"
3398 camera_elevation=".1" 3398 camera_elevation=".1"
3399 camera_distance=".3"> 3399 camera_distance=".3">
3400 <param_morph /> 3400 <param_morph />
3401 </param> 3401 </param>
3402 3402
3403 <param 3403 <param
3404 shared="1" 3404 shared="1"
3405 id="186" 3405 id="186"
3406 group="1" 3406 group="1"
3407 name="Egg_Head" 3407 name="Egg_Head"
3408 label="Egg Head" 3408 label="Egg Head"
3409 wearable="shape" 3409 wearable="shape"
3410 edit_group="shape_head" 3410 edit_group="shape_head"
3411 label_min="Chin Heavy" 3411 label_min="Chin Heavy"
3412 label_max="Forehead Heavy" 3412 label_max="Forehead Heavy"
3413 value_min="-1.3" 3413 value_min="-1.3"
3414 value_max="1" 3414 value_max="1"
3415 camera_elevation=".1" 3415 camera_elevation=".1"
3416 camera_distance=".5" 3416 camera_distance=".5"
3417 camera_angle="20"> 3417 camera_angle="20">
3418 <param_morph /> 3418 <param_morph />
3419 </param> 3419 </param>
3420 3420
3421 <param 3421 <param
3422 shared="1" 3422 shared="1"
3423 id="187" 3423 id="187"
3424 group="1" 3424 group="1"
3425 name="Squash_Stretch_Head" 3425 name="Squash_Stretch_Head"
3426 label="Squash/Stretch Head" 3426 label="Squash/Stretch Head"
3427 wearable="shape" 3427 wearable="shape"
3428 edit_group="shape_head" 3428 edit_group="shape_head"
3429 label_min="Squash Head" 3429 label_min="Squash Head"
3430 label_max="Stretch Head" 3430 label_max="Stretch Head"
3431 value_min="-.5" 3431 value_min="-.5"
3432 value_max="1" 3432 value_max="1"
3433 camera_elevation=".1" 3433 camera_elevation=".1"
3434 camera_distance=".5" 3434 camera_distance=".5"
3435 camera_angle="20"> 3435 camera_angle="20">
3436 <param_morph /> 3436 <param_morph />
3437 </param> 3437 </param>
3438 3438
3439 <param 3439 <param
3440 shared="1" 3440 shared="1"
3441 id="194" 3441 id="194"
3442 group="1" 3442 group="1"
3443 name="Eye_Spread" 3443 name="Eye_Spread"
3444 edit_group="shape_eyes" 3444 edit_group="shape_eyes"
3445 label_min="Eyes Together" 3445 label_min="Eyes Together"
3446 label_max="Eyes Spread" 3446 label_max="Eyes Spread"
3447 value_min="-2" 3447 value_min="-2"
3448 value_max="2"> 3448 value_max="2">
3449 <param_morph /> 3449 <param_morph />
3450 </param> 3450 </param>
3451 3451
3452 <param 3452 <param
3453 id="518" 3453 id="518"
3454 group="0" 3454 group="0"
3455 name="Eyelashes_Long" 3455 name="Eyelashes_Long"
3456 wearable="shape" 3456 wearable="shape"
3457 label="Eyelash Length" 3457 label="Eyelash Length"
3458 edit_group="shape_eyes" 3458 edit_group="shape_eyes"
3459 edit_group_order="7" 3459 edit_group_order="7"
3460 label_min="Short" 3460 label_min="Short"
3461 label_max="Long" 3461 label_max="Long"
3462 value_min="-.3" 3462 value_min="-.3"
3463 value_max="1.5" 3463 value_max="1.5"
3464 camera_elevation=".1" 3464 camera_elevation=".1"
3465 camera_distance=".30" 3465 camera_distance=".30"
3466 camera_angle="-20"> 3466 camera_angle="-20">
3467 <param_morph /> 3467 <param_morph />
3468 </param> 3468 </param>
3469 3469
3470 <param 3470 <param
3471 shared="1" 3471 shared="1"
3472 id="650" 3472 id="650"
3473 group="0" 3473 group="0"
3474 name="Eyelid_Corner_Up" 3474 name="Eyelid_Corner_Up"
3475 label="Outer Eye Corner" 3475 label="Outer Eye Corner"
3476 wearable="shape" 3476 wearable="shape"
3477 edit_group="shape_eyes" 3477 edit_group="shape_eyes"
3478 label_min="Corner Down" 3478 label_min="Corner Down"
3479 label_max="Corner Up" 3479 label_max="Corner Up"
3480 value_min="-1.3" 3480 value_min="-1.3"
3481 value_max="1.2" 3481 value_max="1.2"
3482 camera_elevation=".1" 3482 camera_elevation=".1"
3483 camera_distance=".3"> 3483 camera_distance=".3">
3484 <param_morph /> 3484 <param_morph />
3485 </param> 3485 </param>
3486 3486
3487 <param 3487 <param
3488 shared="1" 3488 shared="1"
3489 id="880" 3489 id="880"
3490 group="0" 3490 group="0"
3491 name="Eyelid_Inner_Corner_Up" 3491 name="Eyelid_Inner_Corner_Up"
3492 label="Inner Eye Corner" 3492 label="Inner Eye Corner"
3493 wearable="shape" 3493 wearable="shape"
3494 edit_group="shape_eyes" 3494 edit_group="shape_eyes"
3495 label_min="Corner Down" 3495 label_min="Corner Down"
3496 label_max="Corner Up" 3496 label_max="Corner Up"
3497 value_min="-1.3" 3497 value_min="-1.3"
3498 value_max="1.2" 3498 value_max="1.2"
3499 camera_elevation=".1" 3499 camera_elevation=".1"
3500 camera_distance=".3"> 3500 camera_distance=".3">
3501 <param_morph /> 3501 <param_morph />
3502 </param> 3502 </param>
3503 3503
3504 <param 3504 <param
3505 shared="1" 3505 shared="1"
3506 id="686" 3506 id="686"
3507 group="1" 3507 group="1"
3508 name="Head_Eyes_Big" 3508 name="Head_Eyes_Big"
3509 wearable="shape" 3509 wearable="shape"
3510 label="Eye Size" 3510 label="Eye Size"
3511 edit_group="shape_eyes" 3511 edit_group="shape_eyes"
3512 label_min="Beady Eyes" 3512 label_min="Beady Eyes"
3513 label_max="Anime Eyes" 3513 label_max="Anime Eyes"
3514 value_min="-2" 3514 value_min="-2"
3515 value_max="2" 3515 value_max="2"
3516 show_simple="true" 3516 show_simple="true"
3517 value_default="0"> 3517 value_default="0">
3518 <param_morph /> 3518 <param_morph />
3519 </param> 3519 </param>
3520 3520
3521 <param 3521 <param
3522 shared="1" 3522 shared="1"
3523 id="767" 3523 id="767"
3524 group="1" 3524 group="1"
3525 name="Bug_Eyed_Head" 3525 name="Bug_Eyed_Head"
3526 wearable="shape" 3526 wearable="shape"
3527 label="Eye Depth" 3527 label="Eye Depth"
3528 edit_group="shape_eyes" 3528 edit_group="shape_eyes"
3529 edit_group_order="4.5" 3529 edit_group_order="4.5"
3530 label_min="Sunken Eyes" 3530 label_min="Sunken Eyes"
3531 label_max="Bug Eyes" 3531 label_max="Bug Eyes"
3532 value_min="-2" 3532 value_min="-2"
3533 value_max="2" 3533 value_max="2"
3534 value_default="0"> 3534 value_default="0">
3535 <param_morph /> 3535 <param_morph />
3536 </param> 3536 </param>
3537 3537
3538<!-- 3538<!--
3539 ############## 3539 ##############
3540 # Facial Expression morphs 3540 # Facial Expression morphs
3541 ############## 3541 ##############
3542 --> 3542 -->
3543 <param 3543 <param
3544 shared="1" 3544 shared="1"
3545 id="301" 3545 id="301"
3546 group="1" 3546 group="1"
3547 name="Express_Tongue_Out" 3547 name="Express_Tongue_Out"
3548 value_min="0" 3548 value_min="0"
3549 value_max="1"> 3549 value_max="1">
3550 <param_morph /> 3550 <param_morph />
3551 </param> 3551 </param>
3552 3552
3553 <param 3553 <param
3554 shared="1" 3554 shared="1"
3555 id="302" 3555 id="302"
3556 group="1" 3556 group="1"
3557 name="Express_Surprise_Emote" 3557 name="Express_Surprise_Emote"
3558 value_min="0" 3558 value_min="0"
3559 value_max="1"> 3559 value_max="1">
3560 <param_morph /> 3560 <param_morph />
3561 </param> 3561 </param>
3562 3562
3563 <param 3563 <param
3564 shared="1" 3564 shared="1"
3565 id="303" 3565 id="303"
3566 group="1" 3566 group="1"
3567 name="Express_Wink_Emote" 3567 name="Express_Wink_Emote"
3568 value_min="0" 3568 value_min="0"
3569 value_max="1"> 3569 value_max="1">
3570 <param_morph /> 3570 <param_morph />
3571 </param> 3571 </param>
3572 3572
3573 <param 3573 <param
3574 shared="1" 3574 shared="1"
3575 id="304" 3575 id="304"
3576 group="1" 3576 group="1"
3577 name="Express_Embarrassed_Emote" 3577 name="Express_Embarrassed_Emote"
3578 value_min="0" 3578 value_min="0"
3579 value_max="1"> 3579 value_max="1">
3580 <param_morph /> 3580 <param_morph />
3581 </param> 3581 </param>
3582 3582
3583 <param 3583 <param
3584 shared="1" 3584 shared="1"
3585 id="305" 3585 id="305"
3586 group="1" 3586 group="1"
3587 name="Express_Shrug_Emote" 3587 name="Express_Shrug_Emote"
3588 value_min="0" 3588 value_min="0"
3589 value_max="1"> 3589 value_max="1">
3590 <param_morph /> 3590 <param_morph />
3591 </param> 3591 </param>
3592 3592
3593 <param 3593 <param
3594 shared="1" 3594 shared="1"
3595 id="306" 3595 id="306"
3596 group="1" 3596 group="1"
3597 name="Express_Kiss" 3597 name="Express_Kiss"
3598 value_min="0" 3598 value_min="0"
3599 value_max="1"> 3599 value_max="1">
3600 <param_morph /> 3600 <param_morph />
3601 </param> 3601 </param>
3602 3602
3603 <param 3603 <param
3604 shared="1" 3604 shared="1"
3605 id="307" 3605 id="307"
3606 group="1" 3606 group="1"
3607 name="Express_Bored_Emote" 3607 name="Express_Bored_Emote"
3608 value_min="0" 3608 value_min="0"
3609 value_max="1"> 3609 value_max="1">
3610 <param_morph /> 3610 <param_morph />
3611 </param> 3611 </param>
3612 3612
3613 <param 3613 <param
3614 shared="1" 3614 shared="1"
3615 id="308" 3615 id="308"
3616 group="1" 3616 group="1"
3617 name="Express_Repulsed_Emote" 3617 name="Express_Repulsed_Emote"
3618 value_min="0" 3618 value_min="0"
3619 value_max="1"> 3619 value_max="1">
3620 <param_morph /> 3620 <param_morph />
3621 </param> 3621 </param>
3622 3622
3623 <param 3623 <param
3624 shared="1" 3624 shared="1"
3625 id="309" 3625 id="309"
3626 group="1" 3626 group="1"
3627 name="Express_Disdain" 3627 name="Express_Disdain"
3628 value_min="0" 3628 value_min="0"
3629 value_max="1"> 3629 value_max="1">
3630 <param_morph /> 3630 <param_morph />
3631 </param> 3631 </param>
3632 3632
3633 <param 3633 <param
3634 shared="1" 3634 shared="1"
3635 id="310" 3635 id="310"
3636 group="1" 3636 group="1"
3637 name="Express_Afraid_Emote" 3637 name="Express_Afraid_Emote"
3638 value_min="0" 3638 value_min="0"
3639 value_max="1"> 3639 value_max="1">
3640 <param_morph /> 3640 <param_morph />
3641 </param> 3641 </param>
3642 3642
3643 <param 3643 <param
3644 shared="1" 3644 shared="1"
3645 id="312" 3645 id="312"
3646 group="1" 3646 group="1"
3647 name="Express_Cry_Emote" 3647 name="Express_Cry_Emote"
3648 value_min="0" 3648 value_min="0"
3649 value_max="1"> 3649 value_max="1">
3650 <param_morph /> 3650 <param_morph />
3651 </param> 3651 </param>
3652 3652
3653 <param 3653 <param
3654 shared="1" 3654 shared="1"
3655 id="313" 3655 id="313"
3656 group="1" 3656 group="1"
3657 name="Express_Sad_Emote" 3657 name="Express_Sad_Emote"
3658 value_min="0" 3658 value_min="0"
3659 value_max="1"> 3659 value_max="1">
3660 <param_morph /> 3660 <param_morph />
3661 </param> 3661 </param>
3662 3662
3663 <param 3663 <param
3664 shared="1" 3664 shared="1"
3665 id="314" 3665 id="314"
3666 group="1" 3666 group="1"
3667 name="Express_Anger_Emote" 3667 name="Express_Anger_Emote"
3668 value_min="0" 3668 value_min="0"
3669 value_max="1"> 3669 value_max="1">
3670 <param_morph /> 3670 <param_morph />
3671 </param> 3671 </param>
3672 3672
3673 <param 3673 <param
3674 shared="1" 3674 shared="1"
3675 id="315" 3675 id="315"
3676 group="1" 3676 group="1"
3677 name="Express_Frown" 3677 name="Express_Frown"
3678 value_min="0" 3678 value_min="0"
3679 value_max="1"> 3679 value_max="1">
3680 <param_morph /> 3680 <param_morph />
3681 </param> 3681 </param>
3682 3682
3683 <param 3683 <param
3684 shared="1" 3684 shared="1"
3685 id="316" 3685 id="316"
3686 group="1" 3686 group="1"
3687 name="Express_Laugh_Emote" 3687 name="Express_Laugh_Emote"
3688 value_min="0" 3688 value_min="0"
3689 value_max="1"> 3689 value_max="1">
3690 <param_morph /> 3690 <param_morph />
3691 </param> 3691 </param>
3692 3692
3693 <param 3693 <param
3694 shared="1" 3694 shared="1"
3695 id="317" 3695 id="317"
3696 group="1" 3696 group="1"
3697 name="Express_Toothsmile" 3697 name="Express_Toothsmile"
3698 value_min="0" 3698 value_min="0"
3699 value_max="1"> 3699 value_max="1">
3700 <param_morph /> 3700 <param_morph />
3701 </param> 3701 </param>
3702 3702
3703 <param 3703 <param
3704 shared="1" 3704 shared="1"
3705 id="318" 3705 id="318"
3706 group="1" 3706 group="1"
3707 name="Express_Smile" 3707 name="Express_Smile"
3708 value_min="0" 3708 value_min="0"
3709 value_max="1"> 3709 value_max="1">
3710 <param_morph /> 3710 <param_morph />
3711 </param> 3711 </param>
3712 3712
3713<!-- 3713<!--
3714 ############## 3714 ##############
3715 # other morphs (not user controlled) 3715 # other morphs (not user controlled)
3716 ############## 3716 ##############
3717 --> 3717 -->
3718 <param 3718 <param
3719 shared="1" 3719 shared="1"
3720 id="41" 3720 id="41"
3721 group="1" 3721 group="1"
3722 name="Old" 3722 name="Old"
3723 value_min="0" 3723 value_min="0"
3724 value_max="1"> 3724 value_max="1">
3725 <param_morph /> 3725 <param_morph />
3726 </param> 3726 </param>
3727 3727
3728<!-- 3728<!--
3729 ############## 3729 ##############
3730 # animatable morphs 3730 # animatable morphs
3731 ############## 3731 ##############
3732 --> 3732 -->
3733 <param 3733 <param
3734 shared="1" 3734 shared="1"
3735 id="58" 3735 id="58"
3736 group="1" 3736 group="1"
3737 name="Blink_Left" 3737 name="Blink_Left"
3738 value_min="0" 3738 value_min="0"
3739 value_max="1"> 3739 value_max="1">
3740 <param_morph /> 3740 <param_morph />
3741 </param> 3741 </param>
3742 3742
3743 <param 3743 <param
3744 shared="1" 3744 shared="1"
3745 id="59" 3745 id="59"
3746 group="1" 3746 group="1"
3747 name="Blink_Right" 3747 name="Blink_Right"
3748 value_min="0" 3748 value_min="0"
3749 value_max="1"> 3749 value_max="1">
3750 <param_morph /> 3750 <param_morph />
3751 </param> 3751 </param>
3752 </mesh> 3752 </mesh>
3753 3753
3754<!-- 3754<!--
3755 #headMesh2 = 3755 #headMesh2 =
3756 #headMesh3 = 3756 #headMesh3 =
3757 --> 3757 -->
3758 <mesh 3758 <mesh
3759 type="upperBodyMesh" 3759 type="upperBodyMesh"
3760 lod="0" 3760 lod="0"
3761 file_name="avatar_upper_body.llm" 3761 file_name="avatar_upper_body.llm"
3762 min_pixel_width="320"> 3762 min_pixel_width="320">
3763<!-- 3763<!--
3764 #begin morph targets 3764 #begin morph targets
3765 ############# 3765 #############
3766 # tweakable morphs 3766 # tweakable morphs
3767 ############# 3767 #############
3768 --> 3768 -->
3769 <param 3769 <param
3770 id="104" 3770 id="104"
3771 group="1" 3771 group="1"
3772 name="Big_Belly_Torso" 3772 name="Big_Belly_Torso"
3773 value_min="0" 3773 value_min="0"
3774 value_max="1"> 3774 value_max="1">
3775 <param_morph> 3775 <param_morph>
3776 <volume_morph 3776 <volume_morph
3777 name="BELLY" 3777 name="BELLY"
3778 scale="0.075 0.04 0.03" 3778 scale="0.075 0.04 0.03"
3779 pos="0.07 0 -0.07"/> 3779 pos="0.07 0 -0.07"/>
3780 </param_morph> 3780 </param_morph>
3781 </param> 3781 </param>
3782 3782
3783 <param 3783 <param
3784 id="626" 3784 id="626"
3785 sex="female" 3785 sex="female"
3786 group="1" 3786 group="1"
3787 name="Big_Chest" 3787 name="Big_Chest"
3788 label="Chest Size" 3788 label="Chest Size"
3789 wearable="shape" 3789 wearable="shape"
3790 edit_group="shape_torso" 3790 edit_group="shape_torso"
3791 label_min="Small" 3791 label_min="Small"
3792 label_max="Large" 3792 label_max="Large"
3793 value_min="0" 3793 value_min="0"
3794 value_max="1" 3794 value_max="1"
3795 camera_elevation=".1" 3795 camera_elevation=".1"
3796 camera_distance="1" 3796 camera_distance="1"
3797 camera_angle="15"> 3797 camera_angle="15">
3798 <param_morph /> 3798 <param_morph />
3799 </param> 3799 </param>
3800 3800
3801 <param 3801 <param
3802 id="627" 3802 id="627"
3803 sex="female" 3803 sex="female"
3804 group="1" 3804 group="1"
3805 name="Small_Chest" 3805 name="Small_Chest"
3806 label="Chest Size" 3806 label="Chest Size"
3807 wearable="shape" 3807 wearable="shape"
3808 edit_group="shape_torso" 3808 edit_group="shape_torso"
3809 label_min="Large" 3809 label_min="Large"
3810 label_max="Small" 3810 label_max="Small"
3811 value_min="0" 3811 value_min="0"
3812 value_max="1" 3812 value_max="1"
3813 camera_elevation="0" 3813 camera_elevation="0"
3814 camera_distance=".28"> 3814 camera_distance=".28">
3815 <param_morph /> 3815 <param_morph />
3816 </param> 3816 </param>
3817 3817
3818 <param 3818 <param
3819 id="843" 3819 id="843"
3820 sex="female" 3820 sex="female"
3821 group="1" 3821 group="1"
3822 name="No_Chest" 3822 name="No_Chest"
3823 label="Chest Size" 3823 label="Chest Size"
3824 wearable="shape" 3824 wearable="shape"
3825 edit_group="shape_torso" 3825 edit_group="shape_torso"
3826 label_min="Some" 3826 label_min="Some"
3827 label_max="None" 3827 label_max="None"
3828 value_min="0" 3828 value_min="0"
3829 value_max="1" 3829 value_max="1"
3830 camera_elevation="0" 3830 camera_elevation="0"
3831 camera_distance=".28"> 3831 camera_distance=".28">
3832 <param_morph /> 3832 <param_morph />
3833 </param> 3833 </param>
3834 3834
3835 <param 3835 <param
3836 id="106" 3836 id="106"
3837 group="1" 3837 group="1"
3838 name="Muscular_Torso" 3838 name="Muscular_Torso"
3839 label="Torso Muscles" 3839 label="Torso Muscles"
3840 show_simple="true" 3840 show_simple="true"
3841 wearable="shape" 3841 wearable="shape"
3842 edit_group="shape_torso" 3842 edit_group="shape_torso"
3843 label_min="Regular" 3843 label_min="Regular"
3844 label_max="Muscular" 3844 label_max="Muscular"
3845 value_min="0" 3845 value_min="0"
3846 value_max="1.4" 3846 value_max="1.4"
3847 camera_elevation=".3" 3847 camera_elevation=".3"
3848 camera_distance="1.2"> 3848 camera_distance="1.2">
3849 <param_morph> 3849 <param_morph>
3850 <volume_morph 3850 <volume_morph
3851 name="L_CLAVICLE" 3851 name="L_CLAVICLE"
3852 scale="0.02 0.0 0.005" 3852 scale="0.02 0.0 0.005"
3853 pos="0.0 0 0.005"/> 3853 pos="0.0 0 0.005"/>
3854 <volume_morph 3854 <volume_morph
3855 name="L_UPPER_ARM" 3855 name="L_UPPER_ARM"
3856 scale="0.015 0.0 0.005" 3856 scale="0.015 0.0 0.005"
3857 pos="0.015 0 0"/> 3857 pos="0.015 0 0"/>
3858 <volume_morph 3858 <volume_morph
3859 name="L_LOWER_ARM" 3859 name="L_LOWER_ARM"
3860 scale="0.005 0.0 0.005" 3860 scale="0.005 0.0 0.005"
3861 pos="0.005 0 0"/> 3861 pos="0.005 0 0"/>
3862 <volume_morph 3862 <volume_morph
3863 name="R_CLAVICLE" 3863 name="R_CLAVICLE"
3864 scale="0.02 0.0 0.005" 3864 scale="0.02 0.0 0.005"
3865 pos="0.0 0 0.005"/> 3865 pos="0.0 0 0.005"/>
3866 <volume_morph 3866 <volume_morph
3867 name="R_UPPER_ARM" 3867 name="R_UPPER_ARM"
3868 scale="0.015 0.0 0.005" 3868 scale="0.015 0.0 0.005"
3869 pos="0.015 0 0"/> 3869 pos="0.015 0 0"/>
3870 <volume_morph 3870 <volume_morph
3871 name="R_LOWER_ARM" 3871 name="R_LOWER_ARM"
3872 scale="0.005 0.0 0.005" 3872 scale="0.005 0.0 0.005"
3873 pos="0.005 0 0"/> 3873 pos="0.005 0 0"/>
3874 </param_morph> 3874 </param_morph>
3875 </param> 3875 </param>
3876 3876
3877 <param 3877 <param
3878 id="648" 3878 id="648"
3879 group="1" 3879 group="1"
3880 sex="female" 3880 sex="female"
3881 name="Scrawny_Torso" 3881 name="Scrawny_Torso"
3882 label="Torso Muscles" 3882 label="Torso Muscles"
3883 show_simple="true" 3883 show_simple="true"
3884 wearable="shape" 3884 wearable="shape"
3885 edit_group="shape_torso" 3885 edit_group="shape_torso"
3886 label_min="Regular" 3886 label_min="Regular"
3887 label_max="Scrawny" 3887 label_max="Scrawny"
3888 value_min="0" 3888 value_min="0"
3889 value_max="1.3" 3889 value_max="1.3"
3890 camera_elevation=".3" 3890 camera_elevation=".3"
3891 camera_distance="1.2"> 3891 camera_distance="1.2">
3892 <param_morph> 3892 <param_morph>
3893 <volume_morph 3893 <volume_morph
3894 name="BELLY" 3894 name="BELLY"
3895 scale="0.0 -0.01 0.0" 3895 scale="0.0 -0.01 0.0"
3896 pos="0.0 0.0 0"/> 3896 pos="0.0 0.0 0"/>
3897 <volume_morph 3897 <volume_morph
3898 name="CHEST" 3898 name="CHEST"
3899 scale="-0.01 -0.01 0.0" 3899 scale="-0.01 -0.01 0.0"
3900 pos="0.01 0.0 0"/> 3900 pos="0.01 0.0 0"/>
3901 <volume_morph 3901 <volume_morph
3902 name="L_CLAVICLE" 3902 name="L_CLAVICLE"
3903 scale="0.0 -0.03 -0.005" 3903 scale="0.0 -0.03 -0.005"
3904 pos="0.0 0 -0.005"/> 3904 pos="0.0 0 -0.005"/>
3905 <volume_morph 3905 <volume_morph
3906 name="L_UPPER_ARM" 3906 name="L_UPPER_ARM"
3907 scale="-0.01 -0.01 -0.02" 3907 scale="-0.01 -0.01 -0.02"
3908 pos="0 0 0"/> 3908 pos="0 0 0"/>
3909 <volume_morph 3909 <volume_morph
3910 name="L_LOWER_ARM" 3910 name="L_LOWER_ARM"
3911 scale="-0.005 0.0 -0.01" 3911 scale="-0.005 0.0 -0.01"
3912 pos="-0.005 0 0"/> 3912 pos="-0.005 0 0"/>
3913 <volume_morph 3913 <volume_morph
3914 name="R_CLAVICLE" 3914 name="R_CLAVICLE"
3915 scale="0.0 -0.03 -0.005" 3915 scale="0.0 -0.03 -0.005"
3916 pos="0.0 0 -0.005"/> 3916 pos="0.0 0 -0.005"/>
3917 <volume_morph 3917 <volume_morph
3918 name="R_UPPER_ARM" 3918 name="R_UPPER_ARM"
3919 scale="-0.01 -0.01 -0.02" 3919 scale="-0.01 -0.01 -0.02"
3920 pos="0 0 0"/> 3920 pos="0 0 0"/>
3921 <volume_morph 3921 <volume_morph
3922 name="R_LOWER_ARM" 3922 name="R_LOWER_ARM"
3923 scale="-0.005 0.0 -0.01" 3923 scale="-0.005 0.0 -0.01"
3924 pos="-0.005 0 0"/> 3924 pos="-0.005 0 0"/>
3925 </param_morph> 3925 </param_morph>
3926 </param> 3926 </param>
3927 3927
3928 <param 3928 <param
3929 id="677" 3929 id="677"
3930 group="1" 3930 group="1"
3931 sex="male" 3931 sex="male"
3932 name="Scrawny_Torso_Male" 3932 name="Scrawny_Torso_Male"
3933 label="Torso Scrawny" 3933 label="Torso Scrawny"
3934 wearable="shape" 3934 wearable="shape"
3935 edit_group="shape_torso" 3935 edit_group="shape_torso"
3936 label_min="Regular" 3936 label_min="Regular"
3937 label_max="Scrawny" 3937 label_max="Scrawny"
3938 value_min="0" 3938 value_min="0"
3939 value_max="1.3" 3939 value_max="1.3"
3940 camera_elevation=".3" 3940 camera_elevation=".3"
3941 camera_distance="1.2"> 3941 camera_distance="1.2">
3942 <param_morph> 3942 <param_morph>
3943 <volume_morph 3943 <volume_morph
3944 name="BELLY" 3944 name="BELLY"
3945 scale="-0.01 -0.01 0.0" 3945 scale="-0.01 -0.01 0.0"
3946 pos="0.01 0.0 0"/> 3946 pos="0.01 0.0 0"/>
3947 <volume_morph 3947 <volume_morph
3948 name="CHEST" 3948 name="CHEST"
3949 scale="-0.02 -0.02 0.0" 3949 scale="-0.02 -0.02 0.0"
3950 pos="0.01 0.0 0"/> 3950 pos="0.01 0.0 0"/>
3951 <volume_morph 3951 <volume_morph
3952 name="L_CLAVICLE" 3952 name="L_CLAVICLE"
3953 scale="0.0 -0.03 -0.005" 3953 scale="0.0 -0.03 -0.005"
3954 pos="0.0 0 -0.005"/> 3954 pos="0.0 0 -0.005"/>
3955 <volume_morph 3955 <volume_morph
3956 name="L_UPPER_ARM" 3956 name="L_UPPER_ARM"
3957 scale="-0.01 -0.01 -0.02" 3957 scale="-0.01 -0.01 -0.02"
3958 pos="0 0 0"/> 3958 pos="0 0 0"/>
3959 <volume_morph 3959 <volume_morph
3960 name="L_LOWER_ARM" 3960 name="L_LOWER_ARM"
3961 scale="-0.005 0.0 -0.01" 3961 scale="-0.005 0.0 -0.01"
3962 pos="-0.005 0 0"/> 3962 pos="-0.005 0 0"/>
3963 <volume_morph 3963 <volume_morph
3964 name="R_CLAVICLE" 3964 name="R_CLAVICLE"
3965 scale="0.0 -0.03 -0.005" 3965 scale="0.0 -0.03 -0.005"
3966 pos="0.0 0 -0.005"/> 3966 pos="0.0 0 -0.005"/>
3967 <volume_morph 3967 <volume_morph
3968 name="R_UPPER_ARM" 3968 name="R_UPPER_ARM"
3969 scale="-0.01 -0.01 -0.02" 3969 scale="-0.01 -0.01 -0.02"
3970 pos="0 0 0"/> 3970 pos="0 0 0"/>
3971 <volume_morph 3971 <volume_morph
3972 name="R_LOWER_ARM" 3972 name="R_LOWER_ARM"
3973 scale="-0.005 0.0 -0.01" 3973 scale="-0.005 0.0 -0.01"
3974 pos="-0.005 0 0"/> 3974 pos="-0.005 0 0"/>
3975 </param_morph> 3975 </param_morph>
3976 </param> 3976 </param>
3977 3977
3978 <param 3978 <param
3979 id="634" 3979 id="634"
3980 group="1" 3980 group="1"
3981 name="Fat_Torso" 3981 name="Fat_Torso"
3982 label="Fat Torso" 3982 label="Fat Torso"
3983 wearable="shape" 3983 wearable="shape"
3984 edit_group="shape_body" 3984 edit_group="shape_body"
3985 label_min="skinny" 3985 label_min="skinny"
3986 label_max="fat" 3986 label_max="fat"
3987 value_min="0" 3987 value_min="0"
3988 value_max="1" 3988 value_max="1"
3989 camera_elevation=".3"> 3989 camera_elevation=".3">
3990 <param_morph> 3990 <param_morph>
3991 <volume_morph 3991 <volume_morph
3992 name="CHEST" 3992 name="CHEST"
3993 scale="0.02 0.03 0.03" 3993 scale="0.02 0.03 0.03"
3994 pos="0 0 -0.03"/> 3994 pos="0 0 -0.03"/>
3995 <volume_morph 3995 <volume_morph
3996 name="BELLY" 3996 name="BELLY"
3997 scale="0.09 0.08 0.07" 3997 scale="0.09 0.08 0.07"
3998 pos="0 0 -0.05"/> 3998 pos="0 0 -0.05"/>
3999 <volume_morph 3999 <volume_morph
4000 name="L_CLAVICLE" 4000 name="L_CLAVICLE"
4001 scale="0.0 0.0 0.015"/> 4001 scale="0.0 0.0 0.015"/>
4002 <volume_morph 4002 <volume_morph
4003 name="L_UPPER_ARM" 4003 name="L_UPPER_ARM"
4004 scale="0.02 0.0 0.02" 4004 scale="0.02 0.0 0.02"
4005 pos="0.0 0.0 -0.02"/> 4005 pos="0.0 0.0 -0.02"/>
4006 <volume_morph 4006 <volume_morph
4007 name="L_LOWER_ARM" 4007 name="L_LOWER_ARM"
4008 scale="0.01 0.0 0.01" 4008 scale="0.01 0.0 0.01"
4009 pos="0.0 0.0 -0.01"/> 4009 pos="0.0 0.0 -0.01"/>
4010 <volume_morph 4010 <volume_morph
4011 name="R_CLAVICLE" 4011 name="R_CLAVICLE"
4012 scale="0.0 0.0 0.015"/> 4012 scale="0.0 0.0 0.015"/>
4013 <volume_morph 4013 <volume_morph
4014 name="R_UPPER_ARM" 4014 name="R_UPPER_ARM"
4015 scale="0.02 0.0 0.02" 4015 scale="0.02 0.0 0.02"
4016 pos="0.0 0.0 -0.02"/> 4016 pos="0.0 0.0 -0.02"/>
4017 <volume_morph 4017 <volume_morph
4018 name="R_LOWER_ARM" 4018 name="R_LOWER_ARM"
4019 scale="0.01 0.0 0.01" 4019 scale="0.01 0.0 0.01"
4020 pos="0.0 0.0 -0.01"/> 4020 pos="0.0 0.0 -0.01"/>
4021 <volume_morph 4021 <volume_morph
4022 name="NECK" 4022 name="NECK"
4023 scale="0.015 0.01 0.0"/> 4023 scale="0.015 0.01 0.0"/>
4024 <volume_morph 4024 <volume_morph
4025 name="HEAD" 4025 name="HEAD"
4026 scale="0.0 0.0 0.01" 4026 scale="0.0 0.0 0.01"
4027 pos="0 0 -0.01"/> 4027 pos="0 0 -0.01"/>
4028 </param_morph> 4028 </param_morph>
4029 4029
4030 </param> 4030 </param>
4031 4031
4032 <param 4032 <param
4033 id="507" 4033 id="507"
4034 group="0" 4034 group="0"
4035 sex="female" 4035 sex="female"
4036 name="Breast_Gravity" 4036 name="Breast_Gravity"
4037 label="Breast Buoyancy" 4037 label="Breast Buoyancy"
4038 wearable="shape" 4038 wearable="shape"
4039 edit_group="shape_torso" 4039 edit_group="shape_torso"
4040 edit_group_order="7" 4040 edit_group_order="7"
4041 label_min="Less Gravity" 4041 label_min="Less Gravity"
4042 label_max="More Gravity" 4042 label_max="More Gravity"
4043 value_default="0" 4043 value_default="0"
4044 value_min="-1.5" 4044 value_min="-1.5"
4045 value_max="2" 4045 value_max="2"
4046 camera_elevation=".3" 4046 camera_elevation=".3"
4047 camera_distance=".8"> 4047 camera_distance=".8">
4048 <param_morph /> 4048 <param_morph />
4049 </param> 4049 </param>
4050 4050
4051 <param 4051 <param
4052 id="628" 4052 id="628"
4053 group="1" 4053 group="1"
4054 name="Displace_Loose_Upperbody" 4054 name="Displace_Loose_Upperbody"
4055 label="Shirt Fit" 4055 label="Shirt Fit"
4056 wearable="shirt" 4056 wearable="shirt"
4057 edit_group="driven" 4057 edit_group="driven"
4058 clothing_morph="true" 4058 clothing_morph="true"
4059 value_min="0" 4059 value_min="0"
4060 value_max="1" 4060 value_max="1"
4061 value_default="0"> 4061 value_default="0">
4062 <param_morph /> 4062 <param_morph />
4063 </param> 4063 </param>
4064 4064
4065 <param 4065 <param
4066 id="840" 4066 id="840"
4067 group="0" 4067 group="0"
4068 name="Shirtsleeve_flair" 4068 name="Shirtsleeve_flair"
4069 label="Sleeve Looseness" 4069 label="Sleeve Looseness"
4070 show_simple="true" 4070 show_simple="true"
4071 wearable="shirt" 4071 wearable="shirt"
4072 edit_group="shirt" 4072 edit_group="shirt"
4073 edit_group_order="6" 4073 edit_group_order="6"
4074 clothing_morph="true" 4074 clothing_morph="true"
4075 label_min="Tight Sleeves" 4075 label_min="Tight Sleeves"
4076 label_max="Loose Sleeves" 4076 label_max="Loose Sleeves"
4077 value_min="0" 4077 value_min="0"
4078 value_max="1.5" 4078 value_max="1.5"
4079 camera_distance="1.8" 4079 camera_distance="1.8"
4080 camera_angle="30" 4080 camera_angle="30"
4081 camera_elevation="-.3"> 4081 camera_elevation="-.3">
4082 <param_morph /> 4082 <param_morph />
4083 </param> 4083 </param>
4084 4084
4085 <param 4085 <param
4086 id="855" 4086 id="855"
4087 group="1" 4087 group="1"
4088 name="Love_Handles" 4088 name="Love_Handles"
4089 value_default="0" 4089 value_default="0"
4090 value_min="-1" 4090 value_min="-1"
4091 value_max="2"> 4091 value_max="2">
4092 <param_morph> 4092 <param_morph>
4093 <volume_morph 4093 <volume_morph
4094 name="BELLY" 4094 name="BELLY"
4095 scale="0.0 0.02 0.0"/> 4095 scale="0.0 0.02 0.0"/>
4096 </param_morph> 4096 </param_morph>
4097 </param> 4097 </param>
4098 4098
4099 <param 4099 <param
4100 id="684" 4100 id="684"
4101 group="0" 4101 group="0"
4102 sex="female" 4102 sex="female"
4103 name="Breast_Female_Cleavage" 4103 name="Breast_Female_Cleavage"
4104 label="Breast Cleavage" 4104 label="Breast Cleavage"
4105 wearable="shape" 4105 wearable="shape"
4106 edit_group="shape_torso" 4106 edit_group="shape_torso"
4107 edit_group_order="8" 4107 edit_group_order="8"
4108 label_min="Separate" 4108 label_min="Separate"
4109 label_max="Join" 4109 label_max="Join"
4110 value_default="0" 4110 value_default="0"
4111 value_min="-.3" 4111 value_min="-.3"
4112 value_max="1.3" 4112 value_max="1.3"
4113 camera_elevation=".3" 4113 camera_elevation=".3"
4114 camera_distance=".8"> 4114 camera_distance=".8">
4115 <param_morph /> 4115 <param_morph />
4116 </param> 4116 </param>
4117 4117
4118 <param 4118 <param
4119 id="685" 4119 id="685"
4120 group="0" 4120 group="0"
4121 sex="male" 4121 sex="male"
4122 name="Chest_Male_No_Pecs" 4122 name="Chest_Male_No_Pecs"
4123 label="Pectorals" 4123 label="Pectorals"
4124 wearable="shape" 4124 wearable="shape"
4125 edit_group="shape_torso" 4125 edit_group="shape_torso"
4126 edit_group_order="5" 4126 edit_group_order="5"
4127 label_min="Big Pectorals" 4127 label_min="Big Pectorals"
4128 label_max="Sunken Chest" 4128 label_max="Sunken Chest"
4129 value_default="0" 4129 value_default="0"
4130 value_min="-.5" 4130 value_min="-.5"
4131 value_max="1.1" 4131 value_max="1.1"
4132 camera_elevation=".3" 4132 camera_elevation=".3"
4133 camera_distance="1.2"> 4133 camera_distance="1.2">
4134 <param_morph /> 4134 <param_morph />
4135 </param> 4135 </param>
4136 4136
4137<!-- ############# # 4137<!-- ############# #
4138 other morphs (not user controlled) 4138 other morphs (not user controlled)
4139 ############# --> 4139 ############# -->
4140 <param 4140 <param
4141 id="100" 4141 id="100"
4142 group="1" 4142 group="1"
4143 name="Male_Torso" 4143 name="Male_Torso"
4144 label_min="Male_Torso" 4144 label_min="Male_Torso"
4145 value_min="0" 4145 value_min="0"
4146 value_max="1"> 4146 value_max="1">
4147 <param_morph> 4147 <param_morph>
4148 <volume_morph 4148 <volume_morph
4149 name="CHEST" 4149 name="CHEST"
4150 scale="0.03 0.04 0.02" 4150 scale="0.03 0.04 0.02"
4151 pos="-0.03 0 -0.01"/> 4151 pos="-0.03 0 -0.01"/>
4152 <volume_morph 4152 <volume_morph
4153 name="BELLY" 4153 name="BELLY"
4154 scale="0.03 0.03 0.0" 4154 scale="0.03 0.03 0.0"
4155 pos="-0.03 0 0.02"/> 4155 pos="-0.03 0 0.02"/>
4156 <volume_morph 4156 <volume_morph
4157 name="L_CLAVICLE" 4157 name="L_CLAVICLE"
4158 scale="0.02 0.0 0.01" 4158 scale="0.02 0.0 0.01"
4159 pos="-0.02 0 0"/> 4159 pos="-0.02 0 0"/>
4160 <volume_morph 4160 <volume_morph
4161 name="L_UPPER_ARM" 4161 name="L_UPPER_ARM"
4162 scale="0.01 0.0 0.01" 4162 scale="0.01 0.0 0.01"
4163 pos="0.0 0.0 -0.01"/> 4163 pos="0.0 0.0 -0.01"/>
4164 <volume_morph 4164 <volume_morph
4165 name="L_LOWER_ARM" 4165 name="L_LOWER_ARM"
4166 scale="0.005 0.0 0.005" 4166 scale="0.005 0.0 0.005"
4167 pos="0.0 0.0 -0.005"/> 4167 pos="0.0 0.0 -0.005"/>
4168 <volume_morph 4168 <volume_morph
4169 name="R_CLAVICLE" 4169 name="R_CLAVICLE"
4170 scale="0.02 0.0 0.01" 4170 scale="0.02 0.0 0.01"
4171 pos="-0.02 0 0"/> 4171 pos="-0.02 0 0"/>
4172 <volume_morph 4172 <volume_morph
4173 name="R_UPPER_ARM" 4173 name="R_UPPER_ARM"
4174 scale="0.01 0.0 0.01" 4174 scale="0.01 0.0 0.01"
4175 pos="0.0 0.0 -0.01"/> 4175 pos="0.0 0.0 -0.01"/>
4176 <volume_morph 4176 <volume_morph
4177 name="R_LOWER_ARM" 4177 name="R_LOWER_ARM"
4178 scale="0.005 0.0 0.005" 4178 scale="0.005 0.0 0.005"
4179 pos="0.0 0.0 -0.005"/> 4179 pos="0.0 0.0 -0.005"/>
4180 <volume_morph 4180 <volume_morph
4181 name="NECK" 4181 name="NECK"
4182 scale="0.015 0.01 0.0"/> 4182 scale="0.015 0.01 0.0"/>
4183 <volume_morph 4183 <volume_morph
4184 name="HEAD" 4184 name="HEAD"
4185 scale="0.0 0.0 0.01" 4185 scale="0.0 0.0 0.01"
4186 pos="0 0 -0.01"/> 4186 pos="0 0 -0.01"/>
4187 </param_morph> 4187 </param_morph>
4188 </param> 4188 </param>
4189 4189
4190<!-- 4190<!--
4191 ############## 4191 ##############
4192 # animatable morphs 4192 # animatable morphs
4193 ############## 4193 ##############
4194 --> 4194 -->
4195 <param 4195 <param
4196 id="101" 4196 id="101"
4197 group="1" 4197 group="1"
4198 name="Hands_Relaxed" 4198 name="Hands_Relaxed"
4199 value_min="0" 4199 value_min="0"
4200 value_max="1"> 4200 value_max="1">
4201 <param_morph /> 4201 <param_morph />
4202 </param> 4202 </param>
4203 4203
4204 <param 4204 <param
4205 id="102" 4205 id="102"
4206 group="1" 4206 group="1"
4207 name="Hands_Point" 4207 name="Hands_Point"
4208 value_min="0" 4208 value_min="0"
4209 value_max="1"> 4209 value_max="1">
4210 <param_morph /> 4210 <param_morph />
4211 </param> 4211 </param>
4212 4212
4213 <param 4213 <param
4214 id="103" 4214 id="103"
4215 group="1" 4215 group="1"
4216 name="Hands_Fist" 4216 name="Hands_Fist"
4217 value_min="0" 4217 value_min="0"
4218 value_max="1"> 4218 value_max="1">
4219 <param_morph /> 4219 <param_morph />
4220 </param> 4220 </param>
4221 4221
4222 <param 4222 <param
4223 id="666" 4223 id="666"
4224 group="1" 4224 group="1"
4225 name="Hands_Relaxed_L" 4225 name="Hands_Relaxed_L"
4226 value_min="0" 4226 value_min="0"
4227 value_max="1"> 4227 value_max="1">
4228 <param_morph /> 4228 <param_morph />
4229 </param> 4229 </param>
4230 4230
4231 <param 4231 <param
4232 id="667" 4232 id="667"
4233 group="1" 4233 group="1"
4234 name="Hands_Point_L" 4234 name="Hands_Point_L"
4235 value_min="0" 4235 value_min="0"
4236 value_max="1"> 4236 value_max="1">
4237 <param_morph /> 4237 <param_morph />
4238 </param> 4238 </param>
4239 4239
4240 <param 4240 <param
4241 id="668" 4241 id="668"
4242 group="1" 4242 group="1"
4243 name="Hands_Fist_L" 4243 name="Hands_Fist_L"
4244 value_min="0" 4244 value_min="0"
4245 value_max="1"> 4245 value_max="1">
4246 <param_morph /> 4246 <param_morph />
4247 </param> 4247 </param>
4248 4248
4249 <param 4249 <param
4250 id="669" 4250 id="669"
4251 group="1" 4251 group="1"
4252 name="Hands_Relaxed_R" 4252 name="Hands_Relaxed_R"
4253 value_min="0" 4253 value_min="0"
4254 value_max="1"> 4254 value_max="1">
4255 <param_morph /> 4255 <param_morph />
4256 </param> 4256 </param>
4257 4257
4258 <param 4258 <param
4259 id="670" 4259 id="670"
4260 group="1" 4260 group="1"
4261 name="Hands_Point_R" 4261 name="Hands_Point_R"
4262 value_min="0" 4262 value_min="0"
4263 value_max="1"> 4263 value_max="1">
4264 <param_morph /> 4264 <param_morph />
4265 </param> 4265 </param>
4266 4266
4267 <param 4267 <param
4268 id="671" 4268 id="671"
4269 group="1" 4269 group="1"
4270 name="Hands_Fist_R" 4270 name="Hands_Fist_R"
4271 value_min="0" 4271 value_min="0"
4272 value_max="1"> 4272 value_max="1">
4273 <param_morph /> 4273 <param_morph />
4274 </param> 4274 </param>
4275 4275
4276 <param 4276 <param
4277 id="672" 4277 id="672"
4278 group="1" 4278 group="1"
4279 name="Hands_Typing" 4279 name="Hands_Typing"
4280 value_min="0" 4280 value_min="0"
4281 value_max="1"> 4281 value_max="1">
4282 <param_morph /> 4282 <param_morph />
4283 </param> 4283 </param>
4284 4284
4285 <param 4285 <param
4286 id="766" 4286 id="766"
4287 group="1" 4287 group="1"
4288 name="Hands_Salute_R" 4288 name="Hands_Salute_R"
4289 value_min="0" 4289 value_min="0"
4290 value_max="1"> 4290 value_max="1">
4291 <param_morph /> 4291 <param_morph />
4292 </param> 4292 </param>
4293 4293
4294 <param 4294 <param
4295 id="791" 4295 id="791"
4296 group="1" 4296 group="1"
4297 name="Hands_Peace_R" 4297 name="Hands_Peace_R"
4298 value_min="0" 4298 value_min="0"
4299 value_max="1"> 4299 value_max="1">
4300 <param_morph /> 4300 <param_morph />
4301 </param> 4301 </param>
4302 4302
4303 <param 4303 <param
4304 id="792" 4304 id="792"
4305 group="1" 4305 group="1"
4306 name="Hands_Spread_R" 4306 name="Hands_Spread_R"
4307 value_min="0" 4307 value_min="0"
4308 value_max="1"> 4308 value_max="1">
4309 <param_morph /> 4309 <param_morph />
4310 </param> 4310 </param>
4311 4311
4312<!-- 4312<!--
4313 #end morph targets 4313 #end morph targets
4314 --> 4314 -->
4315 </mesh> 4315 </mesh>
4316 4316
4317 <mesh 4317 <mesh
4318 type="upperBodyMesh" 4318 type="upperBodyMesh"
4319 lod="1" 4319 lod="1"
4320 file_name="avatar_upper_body_1.llm" 4320 file_name="avatar_upper_body_1.llm"
4321 min_pixel_width="160" 4321 min_pixel_width="160"
4322 reference="avatar_upper_body.llm"> 4322 reference="avatar_upper_body.llm">
4323 </mesh> 4323 </mesh>
4324 4324
4325 <mesh 4325 <mesh
4326 type="upperBodyMesh" 4326 type="upperBodyMesh"
4327 lod="2" 4327 lod="2"
4328 file_name="avatar_upper_body_2.llm" 4328 file_name="avatar_upper_body_2.llm"
4329 min_pixel_width="80" 4329 min_pixel_width="80"
4330 reference="avatar_upper_body.llm"> 4330 reference="avatar_upper_body.llm">
4331 </mesh> 4331 </mesh>
4332 4332
4333 <mesh 4333 <mesh
4334 type="upperBodyMesh" 4334 type="upperBodyMesh"
4335 lod="3" 4335 lod="3"
4336 file_name="avatar_upper_body_3.llm" 4336 file_name="avatar_upper_body_3.llm"
4337 min_pixel_width="40" 4337 min_pixel_width="40"
4338 reference="avatar_upper_body.llm"> 4338 reference="avatar_upper_body.llm">
4339 </mesh> 4339 </mesh>
4340 4340
4341 <mesh 4341 <mesh
4342 type="upperBodyMesh" 4342 type="upperBodyMesh"
4343 lod="4" 4343 lod="4"
4344 file_name="avatar_upper_body_4.llm" 4344 file_name="avatar_upper_body_4.llm"
4345 min_pixel_width="0" 4345 min_pixel_width="0"
4346 reference="avatar_upper_body.llm"> 4346 reference="avatar_upper_body.llm">
4347 </mesh> 4347 </mesh>
4348 4348
4349<!-- 4349<!--
4350 #upperBodyMesh2 = 4350 #upperBodyMesh2 =
4351 #upperBodyMesh3 = 4351 #upperBodyMesh3 =
4352 --> 4352 -->
4353 <mesh 4353 <mesh
4354 type="lowerBodyMesh" 4354 type="lowerBodyMesh"
4355 lod="0" 4355 lod="0"
4356 file_name="avatar_lower_body.llm" 4356 file_name="avatar_lower_body.llm"
4357 min_pixel_width="320"> 4357 min_pixel_width="320">
4358<!-- 4358<!--
4359 #begin morph targets 4359 #begin morph targets
4360 ############# 4360 #############
4361 # tweakable morphs 4361 # tweakable morphs
4362 ############# 4362 #############
4363 --> 4363 -->
4364 <param 4364 <param
4365 id="156" 4365 id="156"
4366 group="1" 4366 group="1"
4367 name="Big_Belly_Legs" 4367 name="Big_Belly_Legs"
4368 value_min="0" 4368 value_min="0"
4369 value_max="1"> 4369 value_max="1">
4370 <param_morph /> 4370 <param_morph />
4371 </param> 4371 </param>
4372 4372
4373 <param 4373 <param
4374 id="151" 4374 id="151"
4375 group="1" 4375 group="1"
4376 name="Big_Butt_Legs" 4376 name="Big_Butt_Legs"
4377 label="Butt Size" 4377 label="Butt Size"
4378 wearable="shape" 4378 wearable="shape"
4379 edit_group="shape_legs" 4379 edit_group="shape_legs"
4380 label_min="Regular" 4380 label_min="Regular"
4381 label_max="Large" 4381 label_max="Large"
4382 value_min="0" 4382 value_min="0"
4383 value_max="1"> 4383 value_max="1">
4384 <param_morph> 4384 <param_morph>
4385 <volume_morph 4385 <volume_morph
4386 name="PELVIS" 4386 name="PELVIS"
4387 scale="0.03 0.0 0.02" 4387 scale="0.03 0.0 0.02"
4388 pos="-0.03 0 -0.025"/> 4388 pos="-0.03 0 -0.025"/>
4389 </param_morph> 4389 </param_morph>
4390 </param> 4390 </param>
4391 4391
4392 <param 4392 <param
4393 id="794" 4393 id="794"
4394 group="1" 4394 group="1"
4395 name="Small_Butt" 4395 name="Small_Butt"
4396 label="Butt Size" 4396 label="Butt Size"
4397 wearable="shape" 4397 wearable="shape"
4398 edit_group="shape_legs" 4398 edit_group="shape_legs"
4399 label_min="Regular" 4399 label_min="Regular"
4400 label_max="Small" 4400 label_max="Small"
4401 value_min="0" 4401 value_min="0"
4402 value_max="1"> 4402 value_max="1">
4403 <param_morph> 4403 <param_morph>
4404 <volume_morph 4404 <volume_morph
4405 name="PELVIS" 4405 name="PELVIS"
4406 scale="-0.01 0.0 0.0" 4406 scale="-0.01 0.0 0.0"
4407 pos="0.01 0 0.0"/> 4407 pos="0.01 0 0.0"/>
4408 </param_morph> 4408 </param_morph>
4409 </param> 4409 </param>
4410 4410
4411 <param 4411 <param
4412 id="152" 4412 id="152"
4413 group="1" 4413 group="1"
4414 name="Muscular_Legs" 4414 name="Muscular_Legs"
4415 label="Leg Muscles" 4415 label="Leg Muscles"
4416 show_simple="true" 4416 show_simple="true"
4417 wearable="shape" 4417 wearable="shape"
4418 edit_group="shape_legs" 4418 edit_group="shape_legs"
4419 label_min="Regular Muscles" 4419 label_min="Regular Muscles"
4420 label_max="More Muscles" 4420 label_max="More Muscles"
4421 value_min="0" 4421 value_min="0"
4422 value_max="1.5" 4422 value_max="1.5"
4423 camera_distance="1.3" 4423 camera_distance="1.3"
4424 camera_elevation="-.5"> 4424 camera_elevation="-.5">
4425 <param_morph> 4425 <param_morph>
4426 <volume_morph 4426 <volume_morph
4427 name="L_UPPER_LEG" 4427 name="L_UPPER_LEG"
4428 scale="0.015 0.015 0.0" 4428 scale="0.015 0.015 0.0"
4429 pos="0.0 0 0.0"/> 4429 pos="0.0 0 0.0"/>
4430 <volume_morph 4430 <volume_morph
4431 name="L_LOWER_LEG" 4431 name="L_LOWER_LEG"
4432 scale="0.01 0.01 0.0" 4432 scale="0.01 0.01 0.0"
4433 pos="0.0 0 0.0"/> 4433 pos="0.0 0 0.0"/>
4434 <volume_morph 4434 <volume_morph
4435 name="R_UPPER_LEG" 4435 name="R_UPPER_LEG"
4436 scale="0.015 0.015 0.0" 4436 scale="0.015 0.015 0.0"
4437 pos="0.0 0 0.0"/> 4437 pos="0.0 0 0.0"/>
4438 <volume_morph 4438 <volume_morph
4439 name="R_LOWER_LEG" 4439 name="R_LOWER_LEG"
4440 scale="0.01 0.01 0.0" 4440 scale="0.01 0.01 0.0"
4441 pos="0.0 0 0.0"/> 4441 pos="0.0 0 0.0"/>
4442 </param_morph> 4442 </param_morph>
4443 </param> 4443 </param>
4444 4444
4445 <param 4445 <param
4446 id="651" 4446 id="651"
4447 group="1" 4447 group="1"
4448 name="Scrawny_Legs" 4448 name="Scrawny_Legs"
4449 label="Scrawny Leg" 4449 label="Scrawny Leg"
4450 wearable="shape" 4450 wearable="shape"
4451 edit_group="shape_legs" 4451 edit_group="shape_legs"
4452 label_min="Regular Muscles" 4452 label_min="Regular Muscles"
4453 label_max="Less Muscles" 4453 label_max="Less Muscles"
4454 value_min="0" 4454 value_min="0"
4455 value_max="1.5" 4455 value_max="1.5"
4456 camera_distance="1.3" 4456 camera_distance="1.3"
4457 camera_elevation="-.5"> 4457 camera_elevation="-.5">
4458 <param_morph> 4458 <param_morph>
4459 <volume_morph 4459 <volume_morph
4460 name="L_UPPER_LEG" 4460 name="L_UPPER_LEG"
4461 scale="-0.03 -0.03 0.0" 4461 scale="-0.03 -0.03 0.0"
4462 pos="0.0 0 0.0"/> 4462 pos="0.0 0 0.0"/>
4463 <volume_morph 4463 <volume_morph
4464 name="L_LOWER_LEG" 4464 name="L_LOWER_LEG"
4465 scale="-0.015 -0.015 0.0" 4465 scale="-0.015 -0.015 0.0"
4466 pos="0.0 0 0.0"/> 4466 pos="0.0 0 0.0"/>
4467 <volume_morph 4467 <volume_morph
4468 name="R_UPPER_LEG" 4468 name="R_UPPER_LEG"
4469 scale="-0.03 -0.03 0.0" 4469 scale="-0.03 -0.03 0.0"
4470 pos="0.0 0 0.0"/> 4470 pos="0.0 0 0.0"/>
4471 <volume_morph 4471 <volume_morph
4472 name="R_LOWER_LEG" 4472 name="R_LOWER_LEG"
4473 scale="-0.015 -0.015 0.0" 4473 scale="-0.015 -0.015 0.0"
4474 pos="0.0 0 0.0"/> 4474 pos="0.0 0 0.0"/>
4475 </param_morph> 4475 </param_morph>
4476 </param> 4476 </param>
4477 4477
4478 <param 4478 <param
4479 id="853" 4479 id="853"
4480 group="1" 4480 group="1"
4481 name="Bowed_Legs" 4481 name="Bowed_Legs"
4482 label="Knee Angle" 4482 label="Knee Angle"
4483 wearable="shape" 4483 wearable="shape"
4484 value_min="-1" 4484 value_min="-1"
4485 value_max="1"> 4485 value_max="1">
4486 <param_morph> 4486 <param_morph>
4487 <volume_morph 4487 <volume_morph
4488 name="L_UPPER_LEG" 4488 name="L_UPPER_LEG"
4489 pos="0.0 0.03 0.0"/> 4489 pos="0.0 0.03 0.0"/>
4490 <volume_morph 4490 <volume_morph
4491 name="L_LOWER_LEG" 4491 name="L_LOWER_LEG"
4492 pos="0.0 0.03 0.0"/> 4492 pos="0.0 0.03 0.0"/>
4493 <volume_morph 4493 <volume_morph
4494 name="R_UPPER_LEG" 4494 name="R_UPPER_LEG"
4495 pos="0.0 -0.03 0.0"/> 4495 pos="0.0 -0.03 0.0"/>
4496 <volume_morph 4496 <volume_morph
4497 name="R_LOWER_LEG" 4497 name="R_LOWER_LEG"
4498 pos="0.0 -0.03 0.0"/> 4498 pos="0.0 -0.03 0.0"/>
4499 </param_morph> 4499 </param_morph>
4500 </param> 4500 </param>
4501 4501
4502 <param 4502 <param
4503 id="500" 4503 id="500"
4504 group="1" 4504 group="1"
4505 name="Shoe_Heel_Height" 4505 name="Shoe_Heel_Height"
4506 label="Heel Height" 4506 label="Heel Height"
4507 wearable="shoes" 4507 wearable="shoes"
4508 edit_group="shoes" 4508 edit_group="shoes"
4509 label_min="Low Heels" 4509 label_min="Low Heels"
4510 label_max="High Heels" 4510 label_max="High Heels"
4511 value_min="0" 4511 value_min="0"
4512 value_max="1" 4512 value_max="1"
4513 camera_distance="1.5" 4513 camera_distance="1.5"
4514 camera_elevation="-.5"> 4514 camera_elevation="-.5">
4515 <param_morph /> 4515 <param_morph />
4516 </param> 4516 </param>
4517 4517
4518 <param 4518 <param
4519 id="501" 4519 id="501"
4520 group="1" 4520 group="1"
4521 name="Shoe_Platform_Height" 4521 name="Shoe_Platform_Height"
4522 label="Platform Height" 4522 label="Platform Height"
4523 wearable="shoes" 4523 wearable="shoes"
4524 edit_group="shoes" 4524 edit_group="shoes"
4525 label_min="Low Platforms" 4525 label_min="Low Platforms"
4526 label_max="High Platforms" 4526 label_max="High Platforms"
4527 value_min="0" 4527 value_min="0"
4528 value_max="1" 4528 value_max="1"
4529 camera_distance="1.5" 4529 camera_distance="1.5"
4530 camera_elevation="-.5"> 4530 camera_elevation="-.5">
4531 <param_morph /> 4531 <param_morph />
4532 </param> 4532 </param>
4533 4533
4534 <param 4534 <param
4535 id="508" 4535 id="508"
4536 group="0" 4536 group="0"
4537 name="Shoe_Platform_Width" 4537 name="Shoe_Platform_Width"
4538 label="Platform Width" 4538 label="Platform Width"
4539 wearable="shoes" 4539 wearable="shoes"
4540 edit_group="shoes" 4540 edit_group="shoes"
4541 edit_group_order="7" 4541 edit_group_order="7"
4542 label_min="Narrow" 4542 label_min="Narrow"
4543 label_max="Wide" 4543 label_max="Wide"
4544 value_min="-1" 4544 value_min="-1"
4545 value_max="2" 4545 value_max="2"
4546 camera_angle="15" 4546 camera_angle="15"
4547 camera_distance="1.5" 4547 camera_distance="1.5"
4548 camera_elevation="-1"> 4548 camera_elevation="-1">
4549 <param_morph /> 4549 <param_morph />
4550 </param> 4550 </param>
4551 4551
4552 <param 4552 <param
4553 id="509" 4553 id="509"
4554 group="1" 4554 group="1"
4555 name="Shoe_Heel_Point" 4555 name="Shoe_Heel_Point"
4556 label="Heel Shape" 4556 label="Heel Shape"
4557 wearable="shoes" 4557 wearable="shoes"
4558 edit_group="shoes" 4558 edit_group="shoes"
4559 label_min="Default Heels" 4559 label_min="Default Heels"
4560 label_max="Pointy Heels" 4560 label_max="Pointy Heels"
4561 value_min="0" 4561 value_min="0"
4562 value_max="1" 4562 value_max="1"
4563 camera_distance="1.3" 4563 camera_distance="1.3"
4564 camera_elevation="-.5"> 4564 camera_elevation="-.5">
4565 <param_morph /> 4565 <param_morph />
4566 </param> 4566 </param>
4567 4567
4568 <param 4568 <param
4569 id="510" 4569 id="510"
4570 group="1" 4570 group="1"
4571 name="Shoe_Heel_Thick" 4571 name="Shoe_Heel_Thick"
4572 label="Heel Shape" 4572 label="Heel Shape"
4573 wearable="shoes" 4573 wearable="shoes"
4574 edit_group="shoes" 4574 edit_group="shoes"
4575 label_min="default Heels" 4575 label_min="default Heels"
4576 label_max="Thick Heels" 4576 label_max="Thick Heels"
4577 value_min="0" 4577 value_min="0"
4578 value_max="1" 4578 value_max="1"
4579 camera_distance="1.3" 4579 camera_distance="1.3"
4580 camera_elevation="-.5"> 4580 camera_elevation="-.5">
4581 <param_morph /> 4581 <param_morph />
4582 </param> 4582 </param>
4583 4583
4584 <param 4584 <param
4585 id="511" 4585 id="511"
4586 group="1" 4586 group="1"
4587 name="Shoe_Toe_Point" 4587 name="Shoe_Toe_Point"
4588 label="Toe Shape" 4588 label="Toe Shape"
4589 wearable="shoes" 4589 wearable="shoes"
4590 edit_group="shoes" 4590 edit_group="shoes"
4591 label_min="Default Toe" 4591 label_min="Default Toe"
4592 label_max="Pointy Toe" 4592 label_max="Pointy Toe"
4593 value_min="0" 4593 value_min="0"
4594 value_max="1" 4594 value_max="1"
4595 camera_distance="1.3" 4595 camera_distance="1.3"
4596 camera_elevation="-.5"> 4596 camera_elevation="-.5">
4597 <param_morph /> 4597 <param_morph />
4598 </param> 4598 </param>
4599 4599
4600 <param 4600 <param
4601 id="512" 4601 id="512"
4602 group="1" 4602 group="1"
4603 name="Shoe_Toe_Square" 4603 name="Shoe_Toe_Square"
4604 label="Toe Shape" 4604 label="Toe Shape"
4605 wearable="shoes" 4605 wearable="shoes"
4606 edit_group="shoes" 4606 edit_group="shoes"
4607 label_min="Default Toe" 4607 label_min="Default Toe"
4608 label_max="Square Toe" 4608 label_max="Square Toe"
4609 value_min="0" 4609 value_min="0"
4610 value_max="1" 4610 value_max="1"
4611 camera_distance="1.5" 4611 camera_distance="1.5"
4612 camera_elevation="-.5"> 4612 camera_elevation="-.5">
4613 <param_morph /> 4613 <param_morph />
4614 </param> 4614 </param>
4615 4615
4616 <param 4616 <param
4617 id="654" 4617 id="654"
4618 group="0" 4618 group="0"
4619 name="Shoe_Toe_Thick" 4619 name="Shoe_Toe_Thick"
4620 label="Toe Thickness" 4620 label="Toe Thickness"
4621 wearable="shoes" 4621 wearable="shoes"
4622 edit_group="shoes" 4622 edit_group="shoes"
4623 edit_group_order="5" 4623 edit_group_order="5"
4624 label_min="Flat Toe" 4624 label_min="Flat Toe"
4625 label_max="Thick Toe" 4625 label_max="Thick Toe"
4626 value_min="0" 4626 value_min="0"
4627 value_max="2" 4627 value_max="2"
4628 camera_angle="15" 4628 camera_angle="15"
4629 camera_distance="1.5" 4629 camera_distance="1.5"
4630 camera_elevation="-1"> 4630 camera_elevation="-1">
4631 <param_morph /> 4631 <param_morph />
4632 </param> 4632 </param>
4633 4633
4634 <param 4634 <param
4635 id="515" 4635 id="515"
4636 group="0" 4636 group="0"
4637 name="Foot_Size" 4637 name="Foot_Size"
4638 label="Foot Size" 4638 label="Foot Size"
4639 wearable="shape" 4639 wearable="shape"
4640 edit_group="shape_legs" 4640 edit_group="shape_legs"
4641 edit_group_order="6" 4641 edit_group_order="6"
4642 label_min="Small" 4642 label_min="Small"
4643 label_max="Big" 4643 label_max="Big"
4644 value_min="-1" 4644 value_min="-1"
4645 value_max="3" 4645 value_max="3"
4646 camera_angle="45" 4646 camera_angle="45"
4647 camera_distance="1.1" 4647 camera_distance="1.1"
4648 camera_elevation="-1"> 4648 camera_elevation="-1">
4649 <param_morph> 4649 <param_morph>
4650 <volume_morph 4650 <volume_morph
4651 name="L_FOOT" 4651 name="L_FOOT"
4652 scale="0.02 0.01 0.0" 4652 scale="0.02 0.01 0.0"
4653 pos="0.01 0 0"/> 4653 pos="0.01 0 0"/>
4654 <volume_morph 4654 <volume_morph
4655 name="R_FOOT" 4655 name="R_FOOT"
4656 scale="0.02 0.01 0.0" 4656 scale="0.02 0.01 0.0"
4657 pos="0.01 0 0"/> 4657 pos="0.01 0 0"/>
4658 </param_morph> 4658 </param_morph>
4659 </param> 4659 </param>
4660 4660
4661 <param 4661 <param
4662 id="516" 4662 id="516"
4663 group="1" 4663 group="1"
4664 name="Displace_Loose_Lowerbody" 4664 name="Displace_Loose_Lowerbody"
4665 label="Pants Fit" 4665 label="Pants Fit"
4666 wearable="pants" 4666 wearable="pants"
4667 edit_group="driven" 4667 edit_group="driven"
4668 clothing_morph="true" 4668 clothing_morph="true"
4669 value_min="0" 4669 value_min="0"
4670 value_max="1" 4670 value_max="1"
4671 value_default="0"> 4671 value_default="0">
4672 <param_morph /> 4672 <param_morph />
4673 </param> 4673 </param>
4674 4674
4675 <param 4675 <param
4676 id="625" 4676 id="625"
4677 group="0" 4677 group="0"
4678 name="Leg_Pantflair" 4678 name="Leg_Pantflair"
4679 label="Cuff Flare" 4679 label="Cuff Flare"
4680 show_simple="true" 4680 show_simple="true"
4681 wearable="pants" 4681 wearable="pants"
4682 edit_group="pants" 4682 edit_group="pants"
4683 edit_group_order="3" 4683 edit_group_order="3"
4684 clothing_morph="true" 4684 clothing_morph="true"
4685 label_min="Tight Cuffs" 4685 label_min="Tight Cuffs"
4686 label_max="Flared Cuffs" 4686 label_max="Flared Cuffs"
4687 value_min="0" 4687 value_min="0"
4688 value_max="1.5" 4688 value_max="1.5"
4689 camera_distance="1.8" 4689 camera_distance="1.8"
4690 camera_angle="30" 4690 camera_angle="30"
4691 camera_elevation="-.3"> 4691 camera_elevation="-.3">
4692 <param_morph /> 4692 <param_morph />
4693 </param> 4693 </param>
4694 4694
4695 <param 4695 <param
4696 id="793" 4696 id="793"
4697 group="1" 4697 group="1"
4698 name="Leg_Longcuffs" 4698 name="Leg_Longcuffs"
4699 label="Longcuffs" 4699 label="Longcuffs"
4700 wearable="pants" 4700 wearable="pants"
4701 edit_group="driven" 4701 edit_group="driven"
4702 clothing_morph="true" 4702 clothing_morph="true"
4703 value_min="0" 4703 value_min="0"
4704 value_max="3" 4704 value_max="3"
4705 value_default="0"> 4705 value_default="0">
4706 <param_morph /> 4706 <param_morph />
4707 </param> 4707 </param>
4708 4708
4709 <param 4709 <param
4710 id="638" 4710 id="638"
4711 group="0" 4711 group="0"
4712 name="Low_Crotch" 4712 name="Low_Crotch"
4713 label="Pants Crotch" 4713 label="Pants Crotch"
4714 wearable="pants" 4714 wearable="pants"
4715 clothing_morph="true" 4715 clothing_morph="true"
4716 edit_group="pants" 4716 edit_group="pants"
4717 edit_group_order="4" 4717 edit_group_order="4"
4718 label_min="High and Tight" 4718 label_min="High and Tight"
4719 label_max="Low and Loose" 4719 label_max="Low and Loose"
4720 value_min="0" 4720 value_min="0"
4721 value_max="1.3" 4721 value_max="1.3"
4722 camera_distance="1.2" 4722 camera_distance="1.2"
4723 camera_angle="-20" 4723 camera_angle="-20"
4724 camera_elevation="-.3"> 4724 camera_elevation="-.3">
4725 <param_morph /> 4725 <param_morph />
4726 </param> 4726 </param>
4727 4727
4728 <param 4728 <param
4729 id="635" 4729 id="635"
4730 group="1" 4730 group="1"
4731 name="Fat_Legs" 4731 name="Fat_Legs"
4732 label="Fat Torso" 4732 label="Fat Torso"
4733 wearable="shape" 4733 wearable="shape"
4734 edit_group="shape_body" 4734 edit_group="shape_body"
4735 label_min="skinny" 4735 label_min="skinny"
4736 label_max="fat" 4736 label_max="fat"
4737 value_min="0" 4737 value_min="0"
4738 value_max="1"> 4738 value_max="1">
4739 <param_morph> 4739 <param_morph>
4740 <volume_morph 4740 <volume_morph
4741 name="PELVIS" 4741 name="PELVIS"
4742 scale="0.03 0.06 0.0"/> 4742 scale="0.03 0.06 0.0"/>
4743 <volume_morph 4743 <volume_morph
4744 name="R_UPPER_LEG" 4744 name="R_UPPER_LEG"
4745 scale="0.02 0.02 0.0" 4745 scale="0.02 0.02 0.0"
4746 pos="0.0 -0.02 0.0"/> 4746 pos="0.0 -0.02 0.0"/>
4747 <volume_morph 4747 <volume_morph
4748 name="R_LOWER_LEG" 4748 name="R_LOWER_LEG"
4749 scale="0.01 0.01 0.0"/> 4749 scale="0.01 0.01 0.0"/>
4750 <volume_morph 4750 <volume_morph
4751 name="L_UPPER_LEG" 4751 name="L_UPPER_LEG"
4752 scale="0.02 0.02 0.0" 4752 scale="0.02 0.02 0.0"
4753 pos="0.0 0.02 0.0"/> 4753 pos="0.0 0.02 0.0"/>
4754 <volume_morph 4754 <volume_morph
4755 name="L_LOWER_LEG" 4755 name="L_LOWER_LEG"
4756 scale="0.01 0.01 0.0"/> 4756 scale="0.01 0.01 0.0"/>
4757 </param_morph> 4757 </param_morph>
4758 </param> 4758 </param>
4759 4759
4760 <param 4760 <param
4761 id="854" 4761 id="854"
4762 group="1" 4762 group="1"
4763 name="Saddlebags" 4763 name="Saddlebags"
4764 value_min="-.5" 4764 value_min="-.5"
4765 value_max="3"> 4765 value_max="3">
4766 <param_morph> 4766 <param_morph>
4767 <volume_morph 4767 <volume_morph
4768 name="PELVIS" 4768 name="PELVIS"
4769 scale="0.0 0.025 0.0"/> 4769 scale="0.0 0.025 0.0"/>
4770 </param_morph> 4770 </param_morph>
4771 4771
4772 </param> 4772 </param>
4773 4773
4774 <param 4774 <param
4775 id="879" 4775 id="879"
4776 group="0" 4776 group="0"
4777 sex="male" 4777 sex="male"
4778 name="Male_Package" 4778 name="Male_Package"
4779 label="Package" 4779 label="Package"
4780 wearable="shape" 4780 wearable="shape"
4781 edit_group="shape_legs" 4781 edit_group="shape_legs"
4782 edit_group_order="4.6" 4782 edit_group_order="4.6"
4783 label_min="Coin Purse" 4783 label_min="Coin Purse"
4784 label_max="Duffle Bag" 4784 label_max="Duffle Bag"
4785 value_default="0" 4785 value_default="0"
4786 value_min="-.5" 4786 value_min="-.5"
4787 value_max="2" 4787 value_max="2"
4788 camera_angle="60" 4788 camera_angle="60"
4789 camera_distance=".6"> 4789 camera_distance=".6">
4790 <param_morph /> 4790 <param_morph />
4791 </param> 4791 </param>
4792 4792
4793<!-- 4793<!--
4794 ############# 4794 #############
4795 # other morphs (not user controlled) 4795 # other morphs (not user controlled)
4796 ############# 4796 #############
4797 --> 4797 -->
4798 <param 4798 <param
4799 id="153" 4799 id="153"
4800 group="1" 4800 group="1"
4801 name="Male_Legs" 4801 name="Male_Legs"
4802 value_min="0" 4802 value_min="0"
4803 value_max="1"> 4803 value_max="1">
4804 <param_morph /> 4804 <param_morph />
4805 </param> 4805 </param>
4806 4806
4807<!-- 4807<!--
4808 #end morph targets 4808 #end morph targets
4809 --> 4809 -->
4810 </mesh> 4810 </mesh>
4811 4811
4812 <mesh 4812 <mesh
4813 type="lowerBodyMesh" 4813 type="lowerBodyMesh"
4814 lod="1" 4814 lod="1"
4815 file_name="avatar_lower_body_1.llm" 4815 file_name="avatar_lower_body_1.llm"
4816 min_pixel_width="160" 4816 min_pixel_width="160"
4817 reference="avatar_lower_body.llm"> 4817 reference="avatar_lower_body.llm">
4818 </mesh> 4818 </mesh>
4819 4819
4820 <mesh 4820 <mesh
4821 type="lowerBodyMesh" 4821 type="lowerBodyMesh"
4822 lod="2" 4822 lod="2"
4823 file_name="avatar_lower_body_2.llm" 4823 file_name="avatar_lower_body_2.llm"
4824 min_pixel_width="80" 4824 min_pixel_width="80"
4825 reference="avatar_lower_body.llm"> 4825 reference="avatar_lower_body.llm">
4826 </mesh> 4826 </mesh>
4827 4827
4828 <mesh 4828 <mesh
4829 type="lowerBodyMesh" 4829 type="lowerBodyMesh"
4830 lod="3" 4830 lod="3"
4831 file_name="avatar_lower_body_3.llm" 4831 file_name="avatar_lower_body_3.llm"
4832 min_pixel_width="40" 4832 min_pixel_width="40"
4833 reference="avatar_lower_body.llm"> 4833 reference="avatar_lower_body.llm">
4834 </mesh> 4834 </mesh>
4835 4835
4836 <mesh 4836 <mesh
4837 type="lowerBodyMesh" 4837 type="lowerBodyMesh"
4838 lod="4" 4838 lod="4"
4839 file_name="avatar_lower_body_4.llm" 4839 file_name="avatar_lower_body_4.llm"
4840 min_pixel_width="0" 4840 min_pixel_width="0"
4841 reference="avatar_lower_body.llm"> 4841 reference="avatar_lower_body.llm">
4842 </mesh> 4842 </mesh>
4843 4843
4844<!-- 4844<!--
4845 #lowerBodyMesh2 = 4845 #lowerBodyMesh2 =
4846 #lowerBodyMesh3 = 4846 #lowerBodyMesh3 =
4847 --> 4847 -->
4848<!-- 4848<!--
4849 #eyeLidLeftMesh = 4849 #eyeLidLeftMesh =
4850 --> 4850 -->
4851 <mesh 4851 <mesh
4852 type="eyeBallLeftMesh" 4852 type="eyeBallLeftMesh"
4853 lod="0" 4853 lod="0"
4854 file_name="avatar_eye.llm" 4854 file_name="avatar_eye.llm"
4855 min_pixel_width="320"> 4855 min_pixel_width="320">
4856<!-- begin morph_params --> 4856<!-- begin morph_params -->
4857 <param 4857 <param
4858 id="679" 4858 id="679"
4859 group="1" 4859 group="1"
4860 name="Eyeball_Size" 4860 name="Eyeball_Size"
4861 label="Eyeball Size" 4861 label="Eyeball Size"
4862 wearable="shape" 4862 wearable="shape"
4863 edit_group="shape_eyes" 4863 edit_group="shape_eyes"
4864 label_min="small eye" 4864 label_min="small eye"
4865 label_max="big eye" 4865 label_max="big eye"
4866 value_min="-.25" 4866 value_min="-.25"
4867 value_max=".10"> 4867 value_max=".10">
4868 <param_morph /> 4868 <param_morph />
4869 </param> 4869 </param>
4870 4870
4871 <param 4871 <param
4872 id="687" 4872 id="687"
4873 group="1" 4873 group="1"
4874 name="Eyeball_Size" 4874 name="Eyeball_Size"
4875 label="Big Eyeball" 4875 label="Big Eyeball"
4876 wearable="shape" 4876 wearable="shape"
4877 edit_group="shape_eyes" 4877 edit_group="shape_eyes"
4878 label_min="small eye" 4878 label_min="small eye"
4879 label_max="big eye" 4879 label_max="big eye"
4880 value_min="-.25" 4880 value_min="-.25"
4881 value_max=".25"> 4881 value_max=".25">
4882 <param_morph /> 4882 <param_morph />
4883 </param> 4883 </param>
4884 </mesh> 4884 </mesh>
4885 4885
4886 <mesh 4886 <mesh
4887 type="eyeBallLeftMesh" 4887 type="eyeBallLeftMesh"
4888 lod="1" 4888 lod="1"
4889 file_name="avatar_eye_1.llm" 4889 file_name="avatar_eye_1.llm"
4890 min_pixel_width="80"> 4890 min_pixel_width="80">
4891<!-- begin morph_params --> 4891<!-- begin morph_params -->
4892 <param 4892 <param
4893 id="694" 4893 id="694"
4894 group="1" 4894 group="1"
4895 name="Eyeball_Size" 4895 name="Eyeball_Size"
4896 label="Eyeball Size" 4896 label="Eyeball Size"
4897 wearable="shape" 4897 wearable="shape"
4898 edit_group="shape_eyes" 4898 edit_group="shape_eyes"
4899 label_min="small eye" 4899 label_min="small eye"
4900 label_max="big eye" 4900 label_max="big eye"
4901 value_min="-.25" 4901 value_min="-.25"
4902 value_max=".10"> 4902 value_max=".10">
4903 <param_morph /> 4903 <param_morph />
4904 </param> 4904 </param>
4905 4905
4906 <param 4906 <param
4907 id="695" 4907 id="695"
4908 group="1" 4908 group="1"
4909 name="Eyeball_Size" 4909 name="Eyeball_Size"
4910 label="Big Eyeball" 4910 label="Big Eyeball"
4911 wearable="shape" 4911 wearable="shape"
4912 edit_group="shape_eyes" 4912 edit_group="shape_eyes"
4913 label_min="small eye" 4913 label_min="small eye"
4914 label_max="big eye" 4914 label_max="big eye"
4915 value_min="-.25" 4915 value_min="-.25"
4916 value_max=".25"> 4916 value_max=".25">
4917 <param_morph /> 4917 <param_morph />
4918 </param> 4918 </param>
4919 </mesh> 4919 </mesh>
4920 4920
4921<!-- 4921<!--
4922 #eyeLidRightMesh = 4922 #eyeLidRightMesh =
4923 --> 4923 -->
4924 <mesh 4924 <mesh
4925 type="eyeBallRightMesh" 4925 type="eyeBallRightMesh"
4926 lod="0" 4926 lod="0"
4927 file_name="avatar_eye.llm" 4927 file_name="avatar_eye.llm"
4928 min_pixel_width="320"> 4928 min_pixel_width="320">
4929<!-- begin morph_params --> 4929<!-- begin morph_params -->
4930 <param 4930 <param
4931 id="680" 4931 id="680"
4932 group="1" 4932 group="1"
4933 name="Eyeball_Size" 4933 name="Eyeball_Size"
4934 label="Eyeball Size" 4934 label="Eyeball Size"
4935 wearable="shape" 4935 wearable="shape"
4936 label_min="small eye" 4936 label_min="small eye"
4937 label_max="big eye" 4937 label_max="big eye"
4938 value_min="-.25" 4938 value_min="-.25"
4939 value_max=".10"> 4939 value_max=".10">
4940 <param_morph /> 4940 <param_morph />
4941 </param> 4941 </param>
4942 4942
4943 <param 4943 <param
4944 id="688" 4944 id="688"
4945 group="1" 4945 group="1"
4946 name="Eyeball_Size" 4946 name="Eyeball_Size"
4947 label="Big Eyeball" 4947 label="Big Eyeball"
4948 wearable="shape" 4948 wearable="shape"
4949 label_min="small eye" 4949 label_min="small eye"
4950 label_max="big eye" 4950 label_max="big eye"
4951 value_min="-.25" 4951 value_min="-.25"
4952 value_max=".25"> 4952 value_max=".25">
4953 <param_morph /> 4953 <param_morph />
4954 </param> 4954 </param>
4955 </mesh> 4955 </mesh>
4956 4956
4957 <mesh 4957 <mesh
4958 type="eyeBallRightMesh" 4958 type="eyeBallRightMesh"
4959 lod="1" 4959 lod="1"
4960 file_name="avatar_eye_1.llm" 4960 file_name="avatar_eye_1.llm"
4961 min_pixel_width="80"> 4961 min_pixel_width="80">
4962<!-- begin morph_params --> 4962<!-- begin morph_params -->
4963 <param 4963 <param
4964 id="681" 4964 id="681"
4965 group="1" 4965 group="1"
4966 name="Eyeball_Size" 4966 name="Eyeball_Size"
4967 label="Eyeball Size" 4967 label="Eyeball Size"
4968 wearable="shape" 4968 wearable="shape"
4969 edit_group="shape_eyes" 4969 edit_group="shape_eyes"
4970 label_min="small eye" 4970 label_min="small eye"
4971 label_max="big eye" 4971 label_max="big eye"
4972 value_min="-.25" 4972 value_min="-.25"
4973 value_max=".10"> 4973 value_max=".10">
4974 <param_morph /> 4974 <param_morph />
4975 </param> 4975 </param>
4976 4976
4977 <param 4977 <param
4978 id="691" 4978 id="691"
4979 group="1" 4979 group="1"
4980 name="Eyeball_Size" 4980 name="Eyeball_Size"
4981 label="Big Eyeball" 4981 label="Big Eyeball"
4982 wearable="shape" 4982 wearable="shape"
4983 edit_group="shape_eyes" 4983 edit_group="shape_eyes"
4984 label_min="small eye" 4984 label_min="small eye"
4985 label_max="big eye" 4985 label_max="big eye"
4986 value_min="-.25" 4986 value_min="-.25"
4987 value_max=".25"> 4987 value_max=".25">
4988 <param_morph /> 4988 <param_morph />
4989 </param> 4989 </param>
4990 </mesh> 4990 </mesh>
4991 4991
4992 <mesh 4992 <mesh
4993 type="skirtMesh" 4993 type="skirtMesh"
4994 lod="0" 4994 lod="0"
4995 file_name="avatar_skirt.llm" 4995 file_name="avatar_skirt.llm"
4996 min_pixel_width="320"> 4996 min_pixel_width="320">
4997 <param 4997 <param
4998 id="845" 4998 id="845"
4999 group="1" 4999 group="1"
5000 name="skirt_poofy" 5000 name="skirt_poofy"
5001 label="poofy skirt" 5001 label="poofy skirt"
5002 clothing_morph="true" 5002 clothing_morph="true"
5003 wearable="skirt" 5003 wearable="skirt"
5004 edit_group="skirt" 5004 edit_group="skirt"
5005 label_min="less poofy" 5005 label_min="less poofy"
5006 label_max="more poofy" 5006 label_max="more poofy"
5007 value_min="0" 5007 value_min="0"
5008 value_max="1.5"> 5008 value_max="1.5">
5009 <param_morph /> 5009 <param_morph />
5010 </param> 5010 </param>
5011 5011
5012 <param 5012 <param
5013 id="846" 5013 id="846"
5014 group="1" 5014 group="1"
5015 name="skirt_loose" 5015 name="skirt_loose"
5016 label="loose skirt" 5016 label="loose skirt"
5017 clothing_morph="true" 5017 clothing_morph="true"
5018 wearable="skirt" 5018 wearable="skirt"
5019 edit_group="skirt" 5019 edit_group="skirt"
5020 label_min="form fitting" 5020 label_min="form fitting"
5021 label_max="loose" 5021 label_max="loose"
5022 value_min="0" 5022 value_min="0"
5023 value_max="1"> 5023 value_max="1">
5024 <param_morph /> 5024 <param_morph />
5025 </param> 5025 </param>
5026 5026
5027 <param 5027 <param
5028 id="866" 5028 id="866"
5029 group="1" 5029 group="1"
5030 name="skirt_tight" 5030 name="skirt_tight"
5031 label="tight skirt" 5031 label="tight skirt"
5032 clothing_morph="true" 5032 clothing_morph="true"
5033 wearable="skirt" 5033 wearable="skirt"
5034 edit_group="skirt" 5034 edit_group="skirt"
5035 label_min="form fitting" 5035 label_min="form fitting"
5036 label_max="loose" 5036 label_max="loose"
5037 value_min="0" 5037 value_min="0"
5038 value_max="1"> 5038 value_max="1">
5039 <param_morph /> 5039 <param_morph />
5040 </param> 5040 </param>
5041 5041
5042 <param 5042 <param
5043 id="867" 5043 id="867"
5044 group="1" 5044 group="1"
5045 name="skirt_smallbutt" 5045 name="skirt_smallbutt"
5046 label="tight skirt" 5046 label="tight skirt"
5047 clothing_morph="false" 5047 clothing_morph="false"
5048 wearable="skirt" 5048 wearable="skirt"
5049 edit_group="skirt" 5049 edit_group="skirt"
5050 label_min="form fitting" 5050 label_min="form fitting"
5051 label_max="loose" 5051 label_max="loose"
5052 value_min="0" 5052 value_min="0"
5053 value_max="1"> 5053 value_max="1">
5054 <param_morph /> 5054 <param_morph />
5055 </param> 5055 </param>
5056 5056
5057 <param 5057 <param
5058 id="848" 5058 id="848"
5059 group="0" 5059 group="0"
5060 name="skirt_bustle" 5060 name="skirt_bustle"
5061 label="bustle skirt" 5061 label="bustle skirt"
5062 clothing_morph="true" 5062 clothing_morph="true"
5063 wearable="skirt" 5063 wearable="skirt"
5064 edit_group_order="3" 5064 edit_group_order="3"
5065 edit_group="skirt" 5065 edit_group="skirt"
5066 label_min="no bustle" 5066 label_min="no bustle"
5067 label_max="more bustle" 5067 label_max="more bustle"
5068 value_min="0" 5068 value_min="0"
5069 value_max="2" 5069 value_max="2"
5070 value_default=".2" 5070 value_default=".2"
5071 camera_angle="100" 5071 camera_angle="100"
5072 camera_distance="1.3" 5072 camera_distance="1.3"
5073 camera_elevation="-.5"> 5073 camera_elevation="-.5">
5074 <param_morph /> 5074 <param_morph />
5075 </param> 5075 </param>
5076 5076
5077 <param 5077 <param
5078 id="847" 5078 id="847"
5079 group="1" 5079 group="1"
5080 name="skirt_bowlegs" 5080 name="skirt_bowlegs"
5081 label="legs skirt" 5081 label="legs skirt"
5082 wearable="skirt" 5082 wearable="skirt"
5083 value_min="-1" 5083 value_min="-1"
5084 value_max="1" 5084 value_max="1"
5085 value_default="0"> 5085 value_default="0">
5086 <param_morph /> 5086 <param_morph />
5087 </param> 5087 </param>
5088 5088
5089 <param 5089 <param
5090 id="852" 5090 id="852"
5091 group="1" 5091 group="1"
5092 name="skirt_bigbutt" 5092 name="skirt_bigbutt"
5093 label="bigbutt skirt" 5093 label="bigbutt skirt"
5094 label_min="less" 5094 label_min="less"
5095 label_max="more" 5095 label_max="more"
5096 value_min="0" 5096 value_min="0"
5097 value_max="1"> 5097 value_max="1">
5098 <param_morph /> 5098 <param_morph />
5099 </param> 5099 </param>
5100 5100
5101 <param 5101 <param
5102 id="849" 5102 id="849"
5103 group="1" 5103 group="1"
5104 name="skirt_belly" 5104 name="skirt_belly"
5105 label="big belly skirt" 5105 label="big belly skirt"
5106 value_min="0" 5106 value_min="0"
5107 value_max="1"> 5107 value_max="1">
5108 <param_morph /> 5108 <param_morph />
5109 </param> 5109 </param>
5110 5110
5111 <param 5111 <param
5112 id="850" 5112 id="850"
5113 group="1" 5113 group="1"
5114 name="skirt_saddlebags" 5114 name="skirt_saddlebags"
5115 value_min="-.5" 5115 value_min="-.5"
5116 value_max="3"> 5116 value_max="3">
5117 <param_morph /> 5117 <param_morph />
5118 </param> 5118 </param>
5119 5119
5120 <param 5120 <param
5121 id="851" 5121 id="851"
5122 group="1" 5122 group="1"
5123 name="skirt_chubby" 5123 name="skirt_chubby"
5124 label_min="less" 5124 label_min="less"
5125 label_max="more" 5125 label_max="more"
5126 value_min="0" 5126 value_min="0"
5127 value_max="1" 5127 value_max="1"
5128 value_default="0"> 5128 value_default="0">
5129 <param_morph /> 5129 <param_morph />
5130 </param> 5130 </param>
5131 5131
5132 <param 5132 <param
5133 id="856" 5133 id="856"
5134 group="1" 5134 group="1"
5135 name="skirt_lovehandles" 5135 name="skirt_lovehandles"
5136 label_min="less" 5136 label_min="less"
5137 label_max="more" 5137 label_max="more"
5138 value_min="-1" 5138 value_min="-1"
5139 value_max="2" 5139 value_max="2"
5140 value_default="0"> 5140 value_default="0">
5141 <param_morph /> 5141 <param_morph />
5142 </param> 5142 </param>
5143 5143
5144<!-- 5144<!--
5145 ############# 5145 #############
5146 # other morphs (not user controlled) 5146 # other morphs (not user controlled)
5147 ############# 5147 #############
5148 --> 5148 -->
5149 <param 5149 <param
5150 id="857" 5150 id="857"
5151 group="1" 5151 group="1"
5152 name="skirt_male" 5152 name="skirt_male"
5153 value_min="0" 5153 value_min="0"
5154 value_max="1"> 5154 value_max="1">
5155 <param_morph /> 5155 <param_morph />
5156 </param> 5156 </param>
5157 </mesh> 5157 </mesh>
5158 5158
5159 <mesh 5159 <mesh
5160 type="skirtMesh" 5160 type="skirtMesh"
5161 lod="1" 5161 lod="1"
5162 file_name="avatar_skirt_1.llm" 5162 file_name="avatar_skirt_1.llm"
5163 min_pixel_width="160" 5163 min_pixel_width="160"
5164 reference="avatar_skirt.llm"> 5164 reference="avatar_skirt.llm">
5165 </mesh> 5165 </mesh>
5166 5166
5167 <mesh 5167 <mesh
5168 type="skirtMesh" 5168 type="skirtMesh"
5169 lod="2" 5169 lod="2"
5170 file_name="avatar_skirt_2.llm" 5170 file_name="avatar_skirt_2.llm"
5171 min_pixel_width="80" 5171 min_pixel_width="80"
5172 reference="avatar_skirt.llm"> 5172 reference="avatar_skirt.llm">
5173 </mesh> 5173 </mesh>
5174 5174
5175 <mesh 5175 <mesh
5176 type="skirtMesh" 5176 type="skirtMesh"
5177 lod="3" 5177 lod="3"
5178 file_name="avatar_skirt_3.llm" 5178 file_name="avatar_skirt_3.llm"
5179 min_pixel_width="40" 5179 min_pixel_width="40"
5180 reference="avatar_skirt.llm"> 5180 reference="avatar_skirt.llm">
5181 </mesh> 5181 </mesh>
5182 5182
5183 <mesh 5183 <mesh
5184 type="skirtMesh" 5184 type="skirtMesh"
5185 lod="4" 5185 lod="4"
5186 file_name="avatar_skirt_4.llm" 5186 file_name="avatar_skirt_4.llm"
5187 min_pixel_width="0" 5187 min_pixel_width="0"
5188 reference="avatar_skirt.llm"> 5188 reference="avatar_skirt.llm">
5189 </mesh> 5189 </mesh>
5190 5190
5191<!-- =========================================================== --> 5191<!-- =========================================================== -->
5192 <global_color 5192 <global_color
5193 name="skin_color"> 5193 name="skin_color">
5194 <param 5194 <param
5195 id="111" 5195 id="111"
5196 group="0" 5196 group="0"
5197 wearable="skin" 5197 wearable="skin"
5198 edit_group="skin_color" 5198 edit_group="skin_color"
5199 edit_group_order="1" 5199 edit_group_order="1"
5200 name="Pigment" 5200 name="Pigment"
5201 show_simple="true" 5201 show_simple="true"
5202 label_min="Light" 5202 label_min="Light"
5203 label_max="Dark" 5203 label_max="Dark"
5204 value_min="0" 5204 value_min="0"
5205 value_max="1" 5205 value_max="1"
5206 value_default=".5"> 5206 value_default=".5">
5207 <param_color> 5207 <param_color>
5208 <value 5208 <value
5209 color="252, 215, 200, 255" /> 5209 color="252, 215, 200, 255" />
5210 5210
5211 <value 5211 <value
5212 color="240, 177, 112, 255" /> 5212 color="240, 177, 112, 255" />
5213 5213
5214 <value 5214 <value
5215 color="90, 40, 16, 255" /> 5215 color="90, 40, 16, 255" />
5216 5216
5217 <value 5217 <value
5218 color="29, 9, 6, 255" /> 5218 color="29, 9, 6, 255" />
5219 </param_color> 5219 </param_color>
5220 </param> 5220 </param>
5221 5221
5222 <param 5222 <param
5223 id="110" 5223 id="110"
5224 group="0" 5224 group="0"
5225 wearable="skin" 5225 wearable="skin"
5226 edit_group="skin_color" 5226 edit_group="skin_color"
5227 edit_group_order="2" 5227 edit_group_order="2"
5228 name="Red Skin" 5228 name="Red Skin"
5229 label="Ruddiness" 5229 label="Ruddiness"
5230 label_min="Pale" 5230 label_min="Pale"
5231 label_max="Ruddy" 5231 label_max="Ruddy"
5232 value_min="0" 5232 value_min="0"
5233 value_max="0.1"> 5233 value_max="0.1">
5234 <param_color 5234 <param_color
5235 operation="blend"> 5235 operation="blend">
5236 <value 5236 <value
5237 color="218, 41, 37, 255" /> 5237 color="218, 41, 37, 255" />
5238 </param_color> 5238 </param_color>
5239 </param> 5239 </param>
5240 5240
5241 <param 5241 <param
5242 id="108" 5242 id="108"
5243 group="0" 5243 group="0"
5244 wearable="skin" 5244 wearable="skin"
5245 edit_group="skin_color" 5245 edit_group="skin_color"
5246 edit_group_order="3" 5246 edit_group_order="3"
5247 name="Rainbow Color" 5247 name="Rainbow Color"
5248 show_simple="true" 5248 show_simple="true"
5249 label_min="None" 5249 label_min="None"
5250 label_max="Wild" 5250 label_max="Wild"
5251 value_min="0" 5251 value_min="0"
5252 value_max="1" 5252 value_max="1"
5253 camera_elevation=".1" 5253 camera_elevation=".1"
5254 camera_distance=".5"> 5254 camera_distance=".5">
5255 <param_color> 5255 <param_color>
5256 <value 5256 <value
5257 color=" 0, 0, 0, 255" /> 5257 color=" 0, 0, 0, 255" />
5258 5258
5259 <value 5259 <value
5260 color="255, 0, 255, 255" /> 5260 color="255, 0, 255, 255" />
5261 5261
5262 <value 5262 <value
5263 color="255, 0, 0, 255" /> 5263 color="255, 0, 0, 255" />
5264 5264
5265 <value 5265 <value
5266 color="255, 255, 0, 255" /> 5266 color="255, 255, 0, 255" />
5267 5267
5268 <value 5268 <value
5269 color=" 0, 255, 0, 255" /> 5269 color=" 0, 255, 0, 255" />
5270 5270
5271 <value 5271 <value
5272 color=" 0, 255, 255, 255" /> 5272 color=" 0, 255, 255, 255" />
5273 5273
5274 <value 5274 <value
5275 color=" 0, 0, 255, 255" /> 5275 color=" 0, 0, 255, 255" />
5276 5276
5277 <value 5277 <value
5278 color="255, 0, 255, 255" /> 5278 color="255, 0, 255, 255" />
5279 </param_color> 5279 </param_color>
5280 </param> 5280 </param>
5281 </global_color> 5281 </global_color>
5282 5282
5283<!-- =========================================================== --> 5283<!-- =========================================================== -->
5284 <global_color 5284 <global_color
5285 name="hair_color"> 5285 name="hair_color">
5286 <param 5286 <param
5287 id="114" 5287 id="114"
5288 group="0" 5288 group="0"
5289 wearable="hair" 5289 wearable="hair"
5290 edit_group="hair_color" 5290 edit_group="hair_color"
5291 edit_group_order="3" 5291 edit_group_order="3"
5292 name="Blonde Hair" 5292 name="Blonde Hair"
5293 show_simple="true" 5293 show_simple="true"
5294 label_min="Black" 5294 label_min="Black"
5295 label_max="Blonde" 5295 label_max="Blonde"
5296 value_min="0" 5296 value_min="0"
5297 value_max="1" 5297 value_max="1"
5298 value_default=".5" 5298 value_default=".5"
5299 camera_elevation=".1" 5299 camera_elevation=".1"
5300 camera_distance=".5"> 5300 camera_distance=".5">
5301 <param_color> 5301 <param_color>
5302 <value 5302 <value
5303 color="0, 0, 0, 255" /> 5303 color="0, 0, 0, 255" />
5304 5304
5305 <value 5305 <value
5306 color="22, 6, 6, 255" /> 5306 color="22, 6, 6, 255" />
5307 5307
5308 <value 5308 <value
5309 color="29, 9, 6, 255" /> 5309 color="29, 9, 6, 255" />
5310 5310
5311 <value 5311 <value
5312 color="45, 21, 11, 255" /> 5312 color="45, 21, 11, 255" />
5313 5313
5314 <value 5314 <value
5315 color="78, 39, 11, 255" /> 5315 color="78, 39, 11, 255" />
5316 5316
5317 <value 5317 <value
5318 color="90, 53, 16, 255" /> 5318 color="90, 53, 16, 255" />
5319 5319
5320 <value 5320 <value
5321 color="136, 92, 21, 255" /> 5321 color="136, 92, 21, 255" />
5322 5322
5323 <value 5323 <value
5324 color="150, 106, 33, 255" /> 5324 color="150, 106, 33, 255" />
5325 5325
5326 <value 5326 <value
5327 color="198, 156, 74, 255" /> 5327 color="198, 156, 74, 255" />
5328 5328
5329 <value 5329 <value
5330 color="233, 192, 103, 255" /> 5330 color="233, 192, 103, 255" />
5331 5331
5332 <value 5332 <value
5333 color="238, 205, 136, 255" /> 5333 color="238, 205, 136, 255" />
5334 </param_color> 5334 </param_color>
5335 </param> 5335 </param>
5336 5336
5337 <param 5337 <param
5338 id="113" 5338 id="113"
5339 group="0" 5339 group="0"
5340 wearable="hair" 5340 wearable="hair"
5341 edit_group="hair_color" 5341 edit_group="hair_color"
5342 edit_group_order="4" 5342 edit_group_order="4"
5343 name="Red Hair" 5343 name="Red Hair"
5344 show_simple="true" 5344 show_simple="true"
5345 label_min="No Red" 5345 label_min="No Red"
5346 label_max="Very Red" 5346 label_max="Very Red"
5347 value_min="0" 5347 value_min="0"
5348 value_max="1" 5348 value_max="1"
5349 camera_elevation=".1" 5349 camera_elevation=".1"
5350 camera_distance=".5"> 5350 camera_distance=".5">
5351 <param_color> 5351 <param_color>
5352 <value 5352 <value
5353 color="0, 0, 0, 255" /> 5353 color="0, 0, 0, 255" />
5354 5354
5355 <value 5355 <value
5356 color="118, 47, 19, 255" /> 5356 color="118, 47, 19, 255" />
5357 </param_color> 5357 </param_color>
5358 </param> 5358 </param>
5359 5359
5360 <param 5360 <param
5361 id="115" 5361 id="115"
5362 group="0" 5362 group="0"
5363 wearable="hair" 5363 wearable="hair"
5364 edit_group="hair_color" 5364 edit_group="hair_color"
5365 edit_group_order="1" 5365 edit_group_order="1"
5366 name="White Hair" 5366 name="White Hair"
5367 show_simple="true" 5367 show_simple="true"
5368 label_min="No White" 5368 label_min="No White"
5369 label_max="All White" 5369 label_max="All White"
5370 value_min="0" 5370 value_min="0"
5371 value_max="1" 5371 value_max="1"
5372 camera_elevation=".1" 5372 camera_elevation=".1"
5373 camera_distance=".5"> 5373 camera_distance=".5">
5374 <param_color> 5374 <param_color>
5375 <value 5375 <value
5376 color="0, 0, 0, 255" /> 5376 color="0, 0, 0, 255" />
5377 5377
5378 <value 5378 <value
5379 color="255, 255, 255, 255" /> 5379 color="255, 255, 255, 255" />
5380 </param_color> 5380 </param_color>
5381 </param> 5381 </param>
5382 5382
5383 <param 5383 <param
5384 id="112" 5384 id="112"
5385 group="0" 5385 group="0"
5386 wearable="hair" 5386 wearable="hair"
5387 edit_group="hair_color" 5387 edit_group="hair_color"
5388 edit_group_order="2" 5388 edit_group_order="2"
5389 name="Rainbow Color" 5389 name="Rainbow Color"
5390 show_simple="true" 5390 show_simple="true"
5391 label_min="None" 5391 label_min="None"
5392 label_max="Wild" 5392 label_max="Wild"
5393 value_min="0" 5393 value_min="0"
5394 value_max="1" 5394 value_max="1"
5395 camera_elevation=".1" 5395 camera_elevation=".1"
5396 camera_distance=".5"> 5396 camera_distance=".5">
5397 <param_color> 5397 <param_color>
5398 <value 5398 <value
5399 color=" 0, 0, 0, 255" /> 5399 color=" 0, 0, 0, 255" />
5400 5400
5401 <value 5401 <value
5402 color="255, 0, 255, 255" /> 5402 color="255, 0, 255, 255" />
5403 5403
5404 <value 5404 <value
5405 color="255, 0, 0, 255" /> 5405 color="255, 0, 0, 255" />
5406 5406
5407 <value 5407 <value
5408 color="255, 255, 0, 255" /> 5408 color="255, 255, 0, 255" />
5409 5409
5410 <value 5410 <value
5411 color=" 0, 255, 0, 255" /> 5411 color=" 0, 255, 0, 255" />
5412 5412
5413 <value 5413 <value
5414 color=" 0, 255, 255, 255" /> 5414 color=" 0, 255, 255, 255" />
5415 5415
5416 <value 5416 <value
5417 color=" 0, 0, 255, 255" /> 5417 color=" 0, 0, 255, 255" />
5418 5418
5419 <value 5419 <value
5420 color="255, 0, 255, 255" /> 5420 color="255, 0, 255, 255" />
5421 </param_color> 5421 </param_color>
5422 </param> 5422 </param>
5423 </global_color> 5423 </global_color>
5424 5424
5425<!-- =========================================================== --> 5425<!-- =========================================================== -->
5426 <global_color 5426 <global_color
5427 name="eye_color"> 5427 name="eye_color">
5428 <param 5428 <param
5429 id="99" 5429 id="99"
5430 group="0" 5430 group="0"
5431 wearable="eyes" 5431 wearable="eyes"
5432 edit_group="eyes" 5432 edit_group="eyes"
5433 edit_group_order="1" 5433 edit_group_order="1"
5434 name="Eye Color" 5434 name="Eye Color"
5435 show_simple="true" 5435 show_simple="true"
5436 label_min="Natural" 5436 label_min="Natural"
5437 label_max="Unnatural" 5437 label_max="Unnatural"
5438 value_min="0" 5438 value_min="0"
5439 value_max="1" 5439 value_max="1"
5440 value_default="0" 5440 value_default="0"
5441 camera_elevation=".1" 5441 camera_elevation=".1"
5442 camera_distance=".3"> 5442 camera_distance=".3">
5443<!-- default to natural brown eyes--> 5443<!-- default to natural brown eyes-->
5444 <param_color> 5444 <param_color>
5445 <value 5445 <value
5446 color="50, 25, 5, 255" /> 5446 color="50, 25, 5, 255" />
5447 5447
5448<!-- natural dark brown eyes--> 5448<!-- natural dark brown eyes-->
5449 <value 5449 <value
5450 color="109, 55, 15, 255" /> 5450 color="109, 55, 15, 255" />
5451 5451
5452<!-- natural brown eyes--> 5452<!-- natural brown eyes-->
5453 <value 5453 <value
5454 color="150, 93, 49, 255" /> 5454 color="150, 93, 49, 255" />
5455 5455
5456<!-- natural light brown eyes--> 5456<!-- natural light brown eyes-->
5457 <value 5457 <value
5458 color="152, 118, 25, 255" /> 5458 color="152, 118, 25, 255" />
5459 5459
5460<!--natural hazel eyes--> 5460<!--natural hazel eyes-->
5461 <value 5461 <value
5462 color="95, 179, 107, 255" /> 5462 color="95, 179, 107, 255" />
5463 5463
5464<!--natural green eyes--> 5464<!--natural green eyes-->
5465 <value 5465 <value
5466 color="87, 192, 191, 255" /> 5466 color="87, 192, 191, 255" />
5467 5467
5468<!--natural aqua eyes--> 5468<!--natural aqua eyes-->
5469 <value 5469 <value
5470 color="95, 172, 179, 255" /> 5470 color="95, 172, 179, 255" />
5471 5471
5472<!--natural blue eyes--> 5472<!--natural blue eyes-->
5473 <value 5473 <value
5474 color="128, 128, 128, 255" /> 5474 color="128, 128, 128, 255" />
5475 5475
5476<!--natural grey eyes--> 5476<!--natural grey eyes-->
5477 <value 5477 <value
5478 color="0, 0, 0, 255" /> 5478 color="0, 0, 0, 255" />
5479 5479
5480<!--black eyes--> 5480<!--black eyes-->
5481 <value 5481 <value
5482 color="255, 255, 0, 255" /> 5482 color="255, 255, 0, 255" />
5483 5483
5484<!--bright yellow eyes--> 5484<!--bright yellow eyes-->
5485 <value 5485 <value
5486 color=" 0, 255, 0, 255" /> 5486 color=" 0, 255, 0, 255" />
5487 5487
5488<!-- bright green eyes--> 5488<!-- bright green eyes-->
5489 <value 5489 <value
5490 color=" 0, 255, 255, 255" /> 5490 color=" 0, 255, 255, 255" />
5491 5491
5492<!-- bright cyan eyes--> 5492<!-- bright cyan eyes-->
5493 <value 5493 <value
5494 color=" 0, 0, 255, 255" /> 5494 color=" 0, 0, 255, 255" />
5495 5495
5496<!--bright blue eyes--> 5496<!--bright blue eyes-->
5497 <value 5497 <value
5498 color="255, 0, 255, 255" /> 5498 color="255, 0, 255, 255" />
5499 5499
5500<!-- bright violet eyes--> 5500<!-- bright violet eyes-->
5501 <value 5501 <value
5502 color="255, 0, 0, 255" /> 5502 color="255, 0, 0, 255" />
5503 5503
5504<!--bright red eyes--> 5504<!--bright red eyes-->
5505 </param_color> 5505 </param_color>
5506 </param> 5506 </param>
5507 5507
5508 <param 5508 <param
5509 id="98" 5509 id="98"
5510 group="0" 5510 group="0"
5511 wearable="eyes" 5511 wearable="eyes"
5512 edit_group="eyes" 5512 edit_group="eyes"
5513 edit_group_order="2" 5513 edit_group_order="2"
5514 name="Eye Lightness" 5514 name="Eye Lightness"
5515 show_simple="true" 5515 show_simple="true"
5516 label_min="Darker" 5516 label_min="Darker"
5517 label_max="Lighter" 5517 label_max="Lighter"
5518 value_min="0" 5518 value_min="0"
5519 value_max="1" 5519 value_max="1"
5520 camera_elevation=".1" 5520 camera_elevation=".1"
5521 camera_distance=".3"> 5521 camera_distance=".3">
5522 <param_color> 5522 <param_color>
5523 <value 5523 <value
5524 color="0, 0, 0, 0" /> 5524 color="0, 0, 0, 0" />
5525 5525
5526 <value 5526 <value
5527 color="255, 255, 255, 255" /> 5527 color="255, 255, 255, 255" />
5528 </param_color> 5528 </param_color>
5529 </param> 5529 </param>
5530 </global_color> 5530 </global_color>
5531 5531
5532<!-- =========================================================== --> 5532<!-- =========================================================== -->
5533 <layer_set 5533 <layer_set
5534 body_region="hair" 5534 body_region="hair"
5535 width="512" 5535 width="512"
5536 height="512" 5536 height="512"
5537 clear_alpha="false"> 5537 clear_alpha="false">
5538 <layer 5538 <layer
5539 name="base" 5539 name="base"
5540 global_color="hair_color" 5540 global_color="hair_color"
5541 write_all_channels="true"> 5541 write_all_channels="true">
5542 <texture 5542 <texture
5543 local_texture="hair_grain" /> 5543 local_texture="hair_grain" />
5544 </layer> 5544 </layer>
5545 5545
5546 <layer 5546 <layer
5547 name="hair texture alpha layer" 5547 name="hair texture alpha layer"
5548 visibility_mask="TRUE"> 5548 visibility_mask="TRUE">
5549 <texture 5549 <texture
5550 local_texture="hair_grain" /> 5550 local_texture="hair_grain" />
5551 </layer> 5551 </layer>
5552 5552
5553 <layer 5553 <layer
5554 name="hair alpha" 5554 name="hair alpha"
5555 visibility_mask="TRUE"> 5555 visibility_mask="TRUE">
5556 <texture 5556 <texture
5557 local_texture="hair_alpha" /> 5557 local_texture="hair_alpha" />
5558 </layer> 5558 </layer>
5559 </layer_set> 5559 </layer_set>
5560 <!-- =========================================================== --> 5560 <!-- =========================================================== -->
5561 5561
5562 <layer_set 5562 <layer_set
5563 body_region="head" 5563 body_region="head"
5564 width="512" 5564 width="512"
5565 height="512"> 5565 height="512">
5566 <layer 5566 <layer
5567 name="head bump base" 5567 name="head bump base"
5568 fixed_color = "128,128,128,255" 5568 fixed_color = "128,128,128,255"
5569 render_pass="bump"> 5569 render_pass="bump">
5570 </layer> 5570 </layer>
5571 5571
5572 <layer 5572 <layer
5573 name="head bump definition" 5573 name="head bump definition"
5574 render_pass="bump"> 5574 render_pass="bump">
5575 5575
5576 <texture 5576 <texture
5577 tga_file="bump_head_base.tga" 5577 tga_file="bump_head_base.tga"
5578 file_is_mask="FALSE"/> 5578 file_is_mask="FALSE"/>
5579 5579
5580 <param 5580 <param
5581 id="873" 5581 id="873"
5582 group="1" 5582 group="1"
5583 wearable="skin" 5583 wearable="skin"
5584 edit_group="driven" 5584 edit_group="driven"
5585 edit_group_order="12" 5585 edit_group_order="12"
5586 name="Bump base" 5586 name="Bump base"
5587 value_min="0" 5587 value_min="0"
5588 value_max="1"> 5588 value_max="1">
5589 <param_alpha 5589 <param_alpha
5590 domain="0" /> 5590 domain="0" />
5591 </param> 5591 </param>
5592 </layer> 5592 </layer>
5593 5593
5594 <layer 5594 <layer
5595 name="base" 5595 name="base"
5596 global_color="skin_color"> 5596 global_color="skin_color">
5597 <texture 5597 <texture
5598 tga_file="head_skingrain.tga" /> 5598 tga_file="head_skingrain.tga" />
5599 </layer> 5599 </layer>
5600 5600
5601 <layer 5601 <layer
5602 name="headcolor"> 5602 name="headcolor">
5603 <texture 5603 <texture
5604 tga_file="head_color.tga" /> 5604 tga_file="head_color.tga" />
5605 </layer> 5605 </layer>
5606 5606
5607 <layer 5607 <layer
5608 name="shadow"> 5608 name="shadow">
5609 <texture 5609 <texture
5610 tga_file="head_shading_alpha.tga" 5610 tga_file="head_shading_alpha.tga"
5611 file_is_mask="TRUE" /> 5611 file_is_mask="TRUE" />
5612 5612
5613 <param 5613 <param
5614 id="158" 5614 id="158"
5615 group="1" 5615 group="1"
5616 wearable="skin" 5616 wearable="skin"
5617 name="Shading" 5617 name="Shading"
5618 value_min="0" 5618 value_min="0"
5619 value_max="1"> 5619 value_max="1">
5620 <param_color> 5620 <param_color>
5621 <value 5621 <value
5622 color="0, 0, 0, 0" /> 5622 color="0, 0, 0, 0" />
5623 5623
5624 <value 5624 <value
5625 color="0, 0, 0, 128" /> 5625 color="0, 0, 0, 128" />
5626 </param_color> 5626 </param_color>
5627 </param> 5627 </param>
5628 </layer> 5628 </layer>
5629 5629
5630 <layer 5630 <layer
5631 name="highlight"> 5631 name="highlight">
5632 <texture 5632 <texture
5633 tga_file="head_highlights_alpha.tga" 5633 tga_file="head_highlights_alpha.tga"
5634 file_is_mask="TRUE" /> 5634 file_is_mask="TRUE" />
5635 5635
5636 5636
5637 <param 5637 <param
5638 id="159" 5638 id="159"
5639 group="1" 5639 group="1"
5640 name="Shading" 5640 name="Shading"
5641 wearable="skin" 5641 wearable="skin"
5642 value_min="0" 5642 value_min="0"
5643 value_max="1"> 5643 value_max="1">
5644 <param_color> 5644 <param_color>
5645 <value 5645 <value
5646 color="255, 255, 255, 0" /> 5646 color="255, 255, 255, 0" />
5647 5647
5648 5648
5649 <value 5649 <value
5650 color="255, 255, 255, 64" /> 5650 color="255, 255, 255, 64" />
5651 </param_color> 5651 </param_color>
5652 </param> 5652 </param>
5653 </layer> 5653 </layer>
5654 <layer 5654 <layer
5655 name="rosyface"> 5655 name="rosyface">
5656 <texture 5656 <texture
5657 tga_file="rosyface_alpha.tga" 5657 tga_file="rosyface_alpha.tga"
5658 file_is_mask="true" /> 5658 file_is_mask="true" />
5659 5659
5660 <param 5660 <param
5661 id="116" 5661 id="116"
5662 group="0" 5662 group="0"
5663 wearable="skin" 5663 wearable="skin"
5664 edit_group="skin_facedetail" 5664 edit_group="skin_facedetail"
5665 edit_group_order="4" 5665 edit_group_order="4"
5666 name="Rosy Complexion" 5666 name="Rosy Complexion"
5667 label_min="Less Rosy" 5667 label_min="Less Rosy"
5668 label_max="More Rosy" 5668 label_max="More Rosy"
5669 value_min="0" 5669 value_min="0"
5670 value_max="1" 5670 value_max="1"
5671 camera_distance=".3" 5671 camera_distance=".3"
5672 camera_elevation=".07"> 5672 camera_elevation=".07">
5673 <param_color> 5673 <param_color>
5674 <value 5674 <value
5675 color="198, 71, 71, 0" /> 5675 color="198, 71, 71, 0" />
5676 5676
5677 <value 5677 <value
5678 color="198, 71, 71, 255" /> 5678 color="198, 71, 71, 255" />
5679 </param_color> 5679 </param_color>
5680 </param> 5680 </param>
5681 </layer> 5681 </layer>
5682 5682
5683 <layer 5683 <layer
5684 name="lips"> 5684 name="lips">
5685 <texture 5685 <texture
5686 tga_file="lips_mask.tga" 5686 tga_file="lips_mask.tga"
5687 file_is_mask="true" /> 5687 file_is_mask="true" />
5688 5688
5689 <param 5689 <param
5690 id="117" 5690 id="117"
5691 group="0" 5691 group="0"
5692 wearable="skin" 5692 wearable="skin"
5693 edit_group="skin_facedetail" 5693 edit_group="skin_facedetail"
5694 edit_group_order="5" 5694 edit_group_order="5"
5695 name="Lip Pinkness" 5695 name="Lip Pinkness"
5696 label_min="Darker" 5696 label_min="Darker"
5697 label_max="Pinker" 5697 label_max="Pinker"
5698 value_min="0" 5698 value_min="0"
5699 value_max="1" 5699 value_max="1"
5700 camera_distance=".25"> 5700 camera_distance=".25">
5701 <param_color> 5701 <param_color>
5702 <value 5702 <value
5703 color="220, 115, 115, 0" /> 5703 color="220, 115, 115, 0" />
5704 5704
5705 <value 5705 <value
5706 color="220, 115, 115, 128" /> 5706 color="220, 115, 115, 128" />
5707 </param_color> 5707 </param_color>
5708 </param> 5708 </param>
5709 </layer> 5709 </layer>
5710 5710
5711 <layer 5711 <layer
5712 name="wrinkles_shading" 5712 name="wrinkles_shading"
5713 render_pass="bump" 5713 render_pass="bump"
5714 fixed_color="0,0,0,100"> 5714 fixed_color="0,0,0,100">
5715 <param 5715 <param
5716 id="118" 5716 id="118"
5717 group="1" 5717 group="1"
5718 wearable="skin" 5718 wearable="skin"
5719 name="Wrinkles" 5719 name="Wrinkles"
5720 value_min="0" 5720 value_min="0"
5721 value_max="1"> 5721 value_max="1">
5722 <param_alpha 5722 <param_alpha
5723 tga_file="bump_face_wrinkles.tga" 5723 tga_file="bump_face_wrinkles.tga"
5724 skip_if_zero="true" 5724 skip_if_zero="true"
5725 domain="0.3" /> 5725 domain="0.3" />
5726 </param> 5726 </param>
5727 </layer> 5727 </layer>
5728 5728
5729<!--<layer 5729<!--<layer
5730 name="wrinkles_highlights" 5730 name="wrinkles_highlights"
5731 fixed_color="255,255,255,64"> 5731 fixed_color="255,255,255,64">
5732 <param 5732 <param
5733 id="128" 5733 id="128"
5734 group="1" 5734 group="1"
5735 name="Wrinkles" 5735 name="Wrinkles"
5736 value_min="0" 5736 value_min="0"
5737 value_max="1"> 5737 value_max="1">
5738 <param_alpha 5738 <param_alpha
5739 tga_file="head_wrinkles_highlights_alpha.tga" 5739 tga_file="head_wrinkles_highlights_alpha.tga"
5740 skip_if_zero="true" 5740 skip_if_zero="true"
5741 domain="0.3" /> 5741 domain="0.3" />
5742 </param> 5742 </param>
5743 </layer>--> 5743 </layer>-->
5744 <layer 5744 <layer
5745 name="freckles" 5745 name="freckles"
5746 fixed_color="120,47,20,128"> 5746 fixed_color="120,47,20,128">
5747 <param 5747 <param
5748 id="165" 5748 id="165"
5749 group="0" 5749 group="0"
5750 wearable="skin" 5750 wearable="skin"
5751 edit_group="skin_facedetail" 5751 edit_group="skin_facedetail"
5752 edit_group_order="2" 5752 edit_group_order="2"
5753 name="Freckles" 5753 name="Freckles"
5754 label_min="Less" 5754 label_min="Less"
5755 label_max="More" 5755 label_max="More"
5756 value_min="0" 5756 value_min="0"
5757 value_max="1" 5757 value_max="1"
5758 camera_distance=".3" 5758 camera_distance=".3"
5759 camera_elevation=".07"> 5759 camera_elevation=".07">
5760 <param_alpha 5760 <param_alpha
5761 tga_file="freckles_alpha.tga" 5761 tga_file="freckles_alpha.tga"
5762 skip_if_zero="true" 5762 skip_if_zero="true"
5763 domain="0.5" /> 5763 domain="0.5" />
5764 </param> 5764 </param>
5765 </layer> 5765 </layer>
5766 <layer 5766 <layer
5767 name="eyebrowsbump" 5767 name="eyebrowsbump"
5768 render_pass="bump"> 5768 render_pass="bump">
5769 <texture 5769 <texture
5770 tga_file="head_hair.tga" 5770 tga_file="head_hair.tga"
5771 file_is_mask="false" /> 5771 file_is_mask="false" />
5772 5772
5773 <param 5773 <param
5774 id="1000" 5774 id="1000"
5775 group="1" 5775 group="1"
5776 wearable="hair" 5776 wearable="hair"
5777 edit_group="driven" 5777 edit_group="driven"
5778 name="Eyebrow Size Bump" 5778 name="Eyebrow Size Bump"
5779 value_min="0" 5779 value_min="0"
5780 value_max="1"> 5780 value_max="1">
5781 <param_alpha 5781 <param_alpha
5782 tga_file="eyebrows_alpha.tga" 5782 tga_file="eyebrows_alpha.tga"
5783 domain="0.1" /> 5783 domain="0.1" />
5784 </param> 5784 </param>
5785 5785
5786 <param 5786 <param
5787 id="1002" 5787 id="1002"
5788 group="1" 5788 group="1"
5789 wearable="hair" 5789 wearable="hair"
5790 edit_group="driven" 5790 edit_group="driven"
5791 name="Eyebrow Density Bump" 5791 name="Eyebrow Density Bump"
5792 value_min="0" 5792 value_min="0"
5793 value_max="1"> 5793 value_max="1">
5794 <param_color> 5794 <param_color>
5795 <value 5795 <value
5796 color="255,255,255,0" /> 5796 color="255,255,255,0" />
5797 5797
5798 <value 5798 <value
5799 color="255,255,255,255" /> 5799 color="255,255,255,255" />
5800 </param_color> 5800 </param_color>
5801 </param> 5801 </param>
5802 </layer> 5802 </layer>
5803 5803
5804 <layer 5804 <layer
5805 name="eyebrows" 5805 name="eyebrows"
5806 global_color="hair_color"> 5806 global_color="hair_color">
5807 <texture 5807 <texture
5808 tga_file="head_hair.tga" 5808 tga_file="head_hair.tga"
5809 file_is_mask="false" /> 5809 file_is_mask="false" />
5810 5810
5811 <param 5811 <param
5812 id="1001" 5812 id="1001"
5813 group="1" 5813 group="1"
5814 wearable="hair" 5814 wearable="hair"
5815 edit_group="hair_eyebrows" 5815 edit_group="hair_eyebrows"
5816 name="Eyebrow Size" 5816 name="Eyebrow Size"
5817 show_simple="true" 5817 show_simple="true"
5818 value_min="0" 5818 value_min="0"
5819 value_max="1" 5819 value_max="1"
5820 value_default="0.5"> 5820 value_default="0.5">
5821 <param_alpha 5821 <param_alpha
5822 tga_file="eyebrows_alpha.tga" 5822 tga_file="eyebrows_alpha.tga"
5823 domain="0.1" /> 5823 domain="0.1" />
5824 </param> 5824 </param>
5825 5825
5826 <param 5826 <param
5827 id="1003" 5827 id="1003"
5828 group="1" 5828 group="1"
5829 edit_group="driven" 5829 edit_group="driven"
5830 name="Eyebrow Density" 5830 name="Eyebrow Density"
5831 value_min="0" 5831 value_min="0"
5832 value_max="1"> 5832 value_max="1">
5833 <param_color 5833 <param_color
5834 operation="multiply"> 5834 operation="multiply">
5835 <value 5835 <value
5836 color="255,255,255,0" /> 5836 color="255,255,255,0" />
5837 5837
5838 <value 5838 <value
5839 color="255,255,255,255" /> 5839 color="255,255,255,255" />
5840 </param_color> 5840 </param_color>
5841 </param> 5841 </param>
5842 </layer> 5842 </layer>
5843 5843
5844 <layer 5844 <layer
5845 name="lipstick"> 5845 name="lipstick">
5846 <param 5846 <param
5847 id="700" 5847 id="700"
5848 group="0" 5848 group="0"
5849 wearable="skin" 5849 wearable="skin"
5850 edit_group="skin_makeup" 5850 edit_group="skin_makeup"
5851 edit_group_order="2" 5851 edit_group_order="2"
5852 name="Lipstick Color" 5852 name="Lipstick Color"
5853 label_min="Pink" 5853 label_min="Pink"
5854 label_max="Black" 5854 label_max="Black"
5855 value_min="0" 5855 value_min="0"
5856 value_max="1" 5856 value_max="1"
5857 value_default=".25" 5857 value_default=".25"
5858 camera_distance=".25"> 5858 camera_distance=".25">
5859 <param_color> 5859 <param_color>
5860 <value 5860 <value
5861 color="245,161,177,200" /> 5861 color="245,161,177,200" />
5862 5862
5863 <value 5863 <value
5864 color="216,37,67,200" /> 5864 color="216,37,67,200" />
5865 5865
5866 <value 5866 <value
5867 color="178,48,76,200" /> 5867 color="178,48,76,200" />
5868 5868
5869 <value 5869 <value
5870 color="68,0,11,200" /> 5870 color="68,0,11,200" />
5871 5871
5872 <value 5872 <value
5873 color="252,207,184,200" /> 5873 color="252,207,184,200" />
5874 5874
5875 <value 5875 <value
5876 color="241,136,106,200" /> 5876 color="241,136,106,200" />
5877 5877
5878 <value 5878 <value
5879 color="208,110,85,200" /> 5879 color="208,110,85,200" />
5880 5880
5881 <value 5881 <value
5882 color="106,28,18,200" /> 5882 color="106,28,18,200" />
5883 5883
5884 <value 5884 <value
5885 color="58,26,49,200" /> 5885 color="58,26,49,200" />
5886 5886
5887 <value 5887 <value
5888 color="14,14,14,200" /> 5888 color="14,14,14,200" />
5889 </param_color> 5889 </param_color>
5890 </param> 5890 </param>
5891 5891
5892 <param 5892 <param
5893 id="701" 5893 id="701"
5894 group="0" 5894 group="0"
5895 wearable="skin" 5895 wearable="skin"
5896 edit_group="skin_makeup" 5896 edit_group="skin_makeup"
5897 edit_group_order="1" 5897 edit_group_order="1"
5898 name="Lipstick" 5898 name="Lipstick"
5899 label_min="No Lipstick" 5899 label_min="No Lipstick"
5900 label_max="More Lipstick" 5900 label_max="More Lipstick"
5901 value_min="0" 5901 value_min="0"
5902 value_max=".9" 5902 value_max=".9"
5903 value_default="0.0" 5903 value_default="0.0"
5904 camera_distance=".25"> 5904 camera_distance=".25">
5905 <param_alpha 5905 <param_alpha
5906 tga_file="lipstick_alpha.tga" 5906 tga_file="lipstick_alpha.tga"
5907 skip_if_zero="true" 5907 skip_if_zero="true"
5908 domain="0.05" /> 5908 domain="0.05" />
5909 </param> 5909 </param>
5910 </layer> 5910 </layer>
5911 5911
5912 <layer 5912 <layer
5913 name="lipgloss" 5913 name="lipgloss"
5914 fixed_color="255,255,255,190"> 5914 fixed_color="255,255,255,190">
5915 <param 5915 <param
5916 id="702" 5916 id="702"
5917 name="Lipgloss" 5917 name="Lipgloss"
5918 label_min="No Lipgloss" 5918 label_min="No Lipgloss"
5919 label_max="Glossy" 5919 label_max="Glossy"
5920 wearable="skin" 5920 wearable="skin"
5921 edit_group="skin_makeup" 5921 edit_group="skin_makeup"
5922 edit_group_order="3" 5922 edit_group_order="3"
5923 group="0" 5923 group="0"
5924 value_min="0" 5924 value_min="0"
5925 value_max="1" 5925 value_max="1"
5926 camera_distance=".25"> 5926 camera_distance=".25">
5927 <param_alpha 5927 <param_alpha
5928 tga_file="lipgloss_alpha.tga" 5928 tga_file="lipgloss_alpha.tga"
5929 skip_if_zero="true" 5929 skip_if_zero="true"
5930 domain="0.2" /> 5930 domain="0.2" />
5931 </param> 5931 </param>
5932 </layer> 5932 </layer>
5933 5933
5934 <layer 5934 <layer
5935 name="blush"> 5935 name="blush">
5936 <param 5936 <param
5937 id="704" 5937 id="704"
5938 group="0" 5938 group="0"
5939 wearable="skin" 5939 wearable="skin"
5940 edit_group="skin_makeup" 5940 edit_group="skin_makeup"
5941 edit_group_order="4" 5941 edit_group_order="4"
5942 name="Blush" 5942 name="Blush"
5943 label_min="No Blush" 5943 label_min="No Blush"
5944 label_max="More Blush" 5944 label_max="More Blush"
5945 value_min="0" 5945 value_min="0"
5946 value_max=".9" 5946 value_max=".9"
5947 value_default="0" 5947 value_default="0"
5948 camera_distance=".3" 5948 camera_distance=".3"
5949 camera_elevation=".07" 5949 camera_elevation=".07"
5950 camera_angle="20"> 5950 camera_angle="20">
5951 <param_alpha 5951 <param_alpha
5952 tga_file="blush_alpha.tga" 5952 tga_file="blush_alpha.tga"
5953 skip_if_zero="true" 5953 skip_if_zero="true"
5954 domain="0.3" /> 5954 domain="0.3" />
5955 </param> 5955 </param>
5956 5956
5957 <param 5957 <param
5958 id="705" 5958 id="705"
5959 group="0" 5959 group="0"
5960 wearable="skin" 5960 wearable="skin"
5961 edit_group="skin_makeup" 5961 edit_group="skin_makeup"
5962 edit_group_order="5" 5962 edit_group_order="5"
5963 name="Blush Color" 5963 name="Blush Color"
5964 label_min="Pink" 5964 label_min="Pink"
5965 label_max="Orange" 5965 label_max="Orange"
5966 value_min="0" 5966 value_min="0"
5967 value_max="1" 5967 value_max="1"
5968 value_default=".5" 5968 value_default=".5"
5969 camera_distance=".3" 5969 camera_distance=".3"
5970 camera_elevation=".07" 5970 camera_elevation=".07"
5971 camera_angle="20"> 5971 camera_angle="20">
5972 <param_color> 5972 <param_color>
5973 <value 5973 <value
5974 color="253,162,193,200" /> 5974 color="253,162,193,200" />
5975 5975
5976 <value 5976 <value
5977 color="247,131,152,200" /> 5977 color="247,131,152,200" />
5978 5978
5979 <value 5979 <value
5980 color="213,122,140,200" /> 5980 color="213,122,140,200" />
5981 5981
5982 <value 5982 <value
5983 color="253,152,144,200" /> 5983 color="253,152,144,200" />
5984 5984
5985 <value 5985 <value
5986 color="236,138,103,200" /> 5986 color="236,138,103,200" />
5987 5987
5988 <value 5988 <value
5989 color="195,128,122,200" /> 5989 color="195,128,122,200" />
5990 5990
5991 <value 5991 <value
5992 color="148,103,100,200" /> 5992 color="148,103,100,200" />
5993 5993
5994 <value 5994 <value
5995 color="168,95,62,200" /> 5995 color="168,95,62,200" />
5996 </param_color> 5996 </param_color>
5997 </param> 5997 </param>
5998 5998
5999 <param 5999 <param
6000 id="711" 6000 id="711"
6001 group="0" 6001 group="0"
6002 wearable="skin" 6002 wearable="skin"
6003 edit_group="skin_makeup" 6003 edit_group="skin_makeup"
6004 edit_group_order="6" 6004 edit_group_order="6"
6005 name="Blush Opacity" 6005 name="Blush Opacity"
6006 label_min="Clear" 6006 label_min="Clear"
6007 label_max="Opaque" 6007 label_max="Opaque"
6008 value_min="0" 6008 value_min="0"
6009 value_max="1" 6009 value_max="1"
6010 value_default=".5" 6010 value_default=".5"
6011 camera_distance=".3" 6011 camera_distance=".3"
6012 camera_elevation=".07" 6012 camera_elevation=".07"
6013 camera_angle="20"> 6013 camera_angle="20">
6014 <param_color 6014 <param_color
6015 operation="multiply"> 6015 operation="multiply">
6016 <value 6016 <value
6017 color="255,255,255,0" /> 6017 color="255,255,255,0" />
6018 6018
6019 <value 6019 <value
6020 color="255,255,255,255" /> 6020 color="255,255,255,255" />
6021 </param_color> 6021 </param_color>
6022 </param> 6022 </param>
6023 </layer> 6023 </layer>
6024 6024
6025 <layer 6025 <layer
6026 name="Outer Eye Shadow"> 6026 name="Outer Eye Shadow">
6027 <param 6027 <param
6028 id="708" 6028 id="708"
6029 group="0" 6029 group="0"
6030 wearable="skin" 6030 wearable="skin"
6031 edit_group="skin_makeup" 6031 edit_group="skin_makeup"
6032 edit_group_order="11" 6032 edit_group_order="11"
6033 name="Out Shdw Color" 6033 name="Out Shdw Color"
6034 label_min="Light" 6034 label_min="Light"
6035 label_max="Dark" 6035 label_max="Dark"
6036 value_min="0" 6036 value_min="0"
6037 value_max="1" 6037 value_max="1"
6038 camera_distance=".3" 6038 camera_distance=".3"
6039 camera_elevation=".14"> 6039 camera_elevation=".14">
6040 <param_color> 6040 <param_color>
6041 <value 6041 <value
6042 color="252,247,246,255" /> 6042 color="252,247,246,255" />
6043 6043
6044 <value 6044 <value
6045 color="255,206,206,255" /> 6045 color="255,206,206,255" />
6046 6046
6047 <value 6047 <value
6048 color="233,135,149,255" /> 6048 color="233,135,149,255" />
6049 6049
6050 <value 6050 <value
6051 color="220,168,192,255" /> 6051 color="220,168,192,255" />
6052 6052
6053 <value 6053 <value
6054 color="228,203,232,255" /> 6054 color="228,203,232,255" />
6055 6055
6056 <value 6056 <value
6057 color="255,234,195,255" /> 6057 color="255,234,195,255" />
6058 6058
6059 <value 6059 <value
6060 color="230,157,101,255" /> 6060 color="230,157,101,255" />
6061 6061
6062 <value 6062 <value
6063 color="255,147,86,255" /> 6063 color="255,147,86,255" />
6064 6064
6065 <value 6065 <value
6066 color="228,110,89,255" /> 6066 color="228,110,89,255" />
6067 6067
6068 <value 6068 <value
6069 color="228,150,120,255" /> 6069 color="228,150,120,255" />
6070 6070
6071 <value 6071 <value
6072 color="223,227,213,255" /> 6072 color="223,227,213,255" />
6073 6073
6074 <value 6074 <value
6075 color="96,116,87,255" /> 6075 color="96,116,87,255" />
6076 6076
6077 <value 6077 <value
6078 color="88,143,107,255" /> 6078 color="88,143,107,255" />
6079 6079
6080 <value 6080 <value
6081 color="194,231,223,255" /> 6081 color="194,231,223,255" />
6082 6082
6083 <value 6083 <value
6084 color="207,227,234,255" /> 6084 color="207,227,234,255" />
6085 6085
6086 <value 6086 <value
6087 color="41,171,212,255" /> 6087 color="41,171,212,255" />
6088 6088
6089 <value 6089 <value
6090 color="180,137,130,255" /> 6090 color="180,137,130,255" />
6091 6091
6092 <value 6092 <value
6093 color="173,125,105,255" /> 6093 color="173,125,105,255" />
6094 6094
6095 <value 6095 <value
6096 color="144,95,98,255" /> 6096 color="144,95,98,255" />
6097 6097
6098 <value 6098 <value
6099 color="115,70,77,255" /> 6099 color="115,70,77,255" />
6100 6100
6101 <value 6101 <value
6102 color="155,78,47,255" /> 6102 color="155,78,47,255" />
6103 6103
6104 <value 6104 <value
6105 color="239,239,239,255" /> 6105 color="239,239,239,255" />
6106 6106
6107 <value 6107 <value
6108 color="194,194,194,255" /> 6108 color="194,194,194,255" />
6109 6109
6110 <value 6110 <value
6111 color="120,120,120,255" /> 6111 color="120,120,120,255" />
6112 6112
6113 <value 6113 <value
6114 color="10,10,10,255" /> 6114 color="10,10,10,255" />
6115 </param_color> 6115 </param_color>
6116 </param> 6116 </param>
6117 6117
6118 <param 6118 <param
6119 id="706" 6119 id="706"
6120 group="0" 6120 group="0"
6121 wearable="skin" 6121 wearable="skin"
6122 edit_group="skin_makeup" 6122 edit_group="skin_makeup"
6123 edit_group_order="12" 6123 edit_group_order="12"
6124 name="Out Shdw Opacity" 6124 name="Out Shdw Opacity"
6125 label_min="Clear" 6125 label_min="Clear"
6126 label_max="Opaque" 6126 label_max="Opaque"
6127 value_min=".2" 6127 value_min=".2"
6128 value_max="1" 6128 value_max="1"
6129 value_default=".6" 6129 value_default=".6"
6130 camera_distance=".3" 6130 camera_distance=".3"
6131 camera_elevation=".14"> 6131 camera_elevation=".14">
6132 <param_color 6132 <param_color
6133 operation="multiply"> 6133 operation="multiply">
6134 <value 6134 <value
6135 color="255,255,255,0" /> 6135 color="255,255,255,0" />
6136 6136
6137 <value 6137 <value
6138 color="255,255,255,255" /> 6138 color="255,255,255,255" />
6139 </param_color> 6139 </param_color>
6140 </param> 6140 </param>
6141 6141
6142 <param 6142 <param
6143 id="707" 6143 id="707"
6144 group="0" 6144 group="0"
6145 wearable="skin" 6145 wearable="skin"
6146 edit_group="skin_makeup" 6146 edit_group="skin_makeup"
6147 edit_group_order="10" 6147 edit_group_order="10"
6148 name="Outer Shadow" 6148 name="Outer Shadow"
6149 label_min="No Eyeshadow" 6149 label_min="No Eyeshadow"
6150 label_max="More Eyeshadow" 6150 label_max="More Eyeshadow"
6151 value_min="0" 6151 value_min="0"
6152 value_max=".7" 6152 value_max=".7"
6153 camera_distance=".3" 6153 camera_distance=".3"
6154 camera_elevation=".14"> 6154 camera_elevation=".14">
6155 <param_alpha 6155 <param_alpha
6156 tga_file="eyeshadow_outer_alpha.tga" 6156 tga_file="eyeshadow_outer_alpha.tga"
6157 skip_if_zero="true" 6157 skip_if_zero="true"
6158 domain="0.05" /> 6158 domain="0.05" />
6159 </param> 6159 </param>
6160 </layer> 6160 </layer>
6161 6161
6162 <layer 6162 <layer
6163 name="Inner Eye Shadow"> 6163 name="Inner Eye Shadow">
6164 <param 6164 <param
6165 id="712" 6165 id="712"
6166 group="0" 6166 group="0"
6167 wearable="skin" 6167 wearable="skin"
6168 edit_group="skin_makeup" 6168 edit_group="skin_makeup"
6169 edit_group_order="8" 6169 edit_group_order="8"
6170 name="In Shdw Color" 6170 name="In Shdw Color"
6171 label_min="Light" 6171 label_min="Light"
6172 label_max="Dark" 6172 label_max="Dark"
6173 value_min="0" 6173 value_min="0"
6174 value_max="1" 6174 value_max="1"
6175 camera_distance=".3" 6175 camera_distance=".3"
6176 camera_elevation=".14"> 6176 camera_elevation=".14">
6177 <param_color> 6177 <param_color>
6178 <value 6178 <value
6179 color="252,247,246,255" /> 6179 color="252,247,246,255" />
6180 6180
6181 <value 6181 <value
6182 color="255,206,206,255" /> 6182 color="255,206,206,255" />
6183 6183
6184 <value 6184 <value
6185 color="233,135,149,255" /> 6185 color="233,135,149,255" />
6186 6186
6187 <value 6187 <value
6188 color="220,168,192,255" /> 6188 color="220,168,192,255" />
6189 6189
6190 <value 6190 <value
6191 color="228,203,232,255" /> 6191 color="228,203,232,255" />
6192 6192
6193 <value 6193 <value
6194 color="255,234,195,255" /> 6194 color="255,234,195,255" />
6195 6195
6196 <value 6196 <value
6197 color="230,157,101,255" /> 6197 color="230,157,101,255" />
6198 6198
6199 <value 6199 <value
6200 color="255,147,86,255" /> 6200 color="255,147,86,255" />
6201 6201
6202 <value 6202 <value
6203 color="228,110,89,255" /> 6203 color="228,110,89,255" />
6204 6204
6205 <value 6205 <value
6206 color="228,150,120,255" /> 6206 color="228,150,120,255" />
6207 6207
6208 <value 6208 <value
6209 color="223,227,213,255" /> 6209 color="223,227,213,255" />
6210 6210
6211 <value 6211 <value
6212 color="96,116,87,255" /> 6212 color="96,116,87,255" />
6213 6213
6214 <value 6214 <value
6215 color="88,143,107,255" /> 6215 color="88,143,107,255" />
6216 6216
6217 <value 6217 <value
6218 color="194,231,223,255" /> 6218 color="194,231,223,255" />
6219 6219
6220 <value 6220 <value
6221 color="207,227,234,255" /> 6221 color="207,227,234,255" />
6222 6222
6223 <value 6223 <value
6224 color="41,171,212,255" /> 6224 color="41,171,212,255" />
6225 6225
6226 <value 6226 <value
6227 color="180,137,130,255" /> 6227 color="180,137,130,255" />
6228 6228
6229 <value 6229 <value
6230 color="173,125,105,255" /> 6230 color="173,125,105,255" />
6231 6231
6232 <value 6232 <value
6233 color="144,95,98,255" /> 6233 color="144,95,98,255" />
6234 6234
6235 <value 6235 <value
6236 color="115,70,77,255" /> 6236 color="115,70,77,255" />
6237 6237
6238 <value 6238 <value
6239 color="155,78,47,255" /> 6239 color="155,78,47,255" />
6240 6240
6241 <value 6241 <value
6242 color="239,239,239,255" /> 6242 color="239,239,239,255" />
6243 6243
6244 <value 6244 <value
6245 color="194,194,194,255" /> 6245 color="194,194,194,255" />
6246 6246
6247 <value 6247 <value
6248 color="120,120,120,255" /> 6248 color="120,120,120,255" />
6249 6249
6250 <value 6250 <value
6251 color="10,10,10,255" /> 6251 color="10,10,10,255" />
6252 </param_color> 6252 </param_color>
6253 </param> 6253 </param>
6254 6254
6255 <param 6255 <param
6256 id="713" 6256 id="713"
6257 group="0" 6257 group="0"
6258 wearable="skin" 6258 wearable="skin"
6259 edit_group="skin_makeup" 6259 edit_group="skin_makeup"
6260 edit_group_order="9" 6260 edit_group_order="9"
6261 name="In Shdw Opacity" 6261 name="In Shdw Opacity"
6262 label_min="Clear" 6262 label_min="Clear"
6263 label_max="Opaque" 6263 label_max="Opaque"
6264 value_min=".2" 6264 value_min=".2"
6265 value_max="1" 6265 value_max="1"
6266 value_default=".7" 6266 value_default=".7"
6267 camera_distance=".3" 6267 camera_distance=".3"
6268 camera_elevation=".14"> 6268 camera_elevation=".14">
6269 <param_color 6269 <param_color
6270 operation="multiply"> 6270 operation="multiply">
6271 <value 6271 <value
6272 color="255,255,255,0" /> 6272 color="255,255,255,0" />
6273 6273
6274 <value 6274 <value
6275 color="255,255,255,255" /> 6275 color="255,255,255,255" />
6276 </param_color> 6276 </param_color>
6277 </param> 6277 </param>
6278 6278
6279 <param 6279 <param
6280 id="709" 6280 id="709"
6281 group="0" 6281 group="0"
6282 wearable="skin" 6282 wearable="skin"
6283 edit_group="skin_makeup" 6283 edit_group="skin_makeup"
6284 edit_group_order="7" 6284 edit_group_order="7"
6285 name="Inner Shadow" 6285 name="Inner Shadow"
6286 label_min="No Eyeshadow" 6286 label_min="No Eyeshadow"
6287 label_max="More Eyeshadow" 6287 label_max="More Eyeshadow"
6288 value_min="0" 6288 value_min="0"
6289 value_max="1" 6289 value_max="1"
6290 value_default="0" 6290 value_default="0"
6291 camera_distance=".3" 6291 camera_distance=".3"
6292 camera_elevation=".14"> 6292 camera_elevation=".14">
6293 <param_alpha 6293 <param_alpha
6294 tga_file="eyeshadow_inner_alpha.tga" 6294 tga_file="eyeshadow_inner_alpha.tga"
6295 skip_if_zero="true" 6295 skip_if_zero="true"
6296 domain="0.2" /> 6296 domain="0.2" />
6297 </param> 6297 </param>
6298 </layer> 6298 </layer>
6299 6299
6300 <layer 6300 <layer
6301 name="eyeliner" 6301 name="eyeliner"
6302 fixed_color="0,0,0,200"> 6302 fixed_color="0,0,0,200">
6303 <param 6303 <param
6304 id="703" 6304 id="703"
6305 group="0" 6305 group="0"
6306 wearable="skin" 6306 wearable="skin"
6307 edit_group="skin_makeup" 6307 edit_group="skin_makeup"
6308 edit_group_order="13" 6308 edit_group_order="13"
6309 name="Eyeliner" 6309 name="Eyeliner"
6310 label_min="No Eyeliner" 6310 label_min="No Eyeliner"
6311 label_max="Full Eyeliner" 6311 label_max="Full Eyeliner"
6312 value_min="0" 6312 value_min="0"
6313 value_max="1" 6313 value_max="1"
6314 value_default="0.0" 6314 value_default="0.0"
6315 camera_distance=".3" 6315 camera_distance=".3"
6316 camera_elevation=".14"> 6316 camera_elevation=".14">
6317 <param_alpha 6317 <param_alpha
6318 tga_file="eyeliner_alpha.tga" 6318 tga_file="eyeliner_alpha.tga"
6319 skip_if_zero="true" 6319 skip_if_zero="true"
6320 domain="0.1" /> 6320 domain="0.1" />
6321 </param> 6321 </param>
6322 6322
6323 <param 6323 <param
6324 id="714" 6324 id="714"
6325 group="0" 6325 group="0"
6326 wearable="skin" 6326 wearable="skin"
6327 edit_group="skin_makeup" 6327 edit_group="skin_makeup"
6328 edit_group_order="14" 6328 edit_group_order="14"
6329 name="Eyeliner Color" 6329 name="Eyeliner Color"
6330 label_min="Dark Green" 6330 label_min="Dark Green"
6331 label_max="Black" 6331 label_max="Black"
6332 value_min="0" 6332 value_min="0"
6333 value_max="1" 6333 value_max="1"
6334 camera_distance=".3" 6334 camera_distance=".3"
6335 camera_elevation=".14"> 6335 camera_elevation=".14">
6336 <param_color> 6336 <param_color>
6337 <value 6337 <value
6338 color="24,98,40,250" /> 6338 color="24,98,40,250" />
6339 6339
6340<!-- dark green --> 6340<!-- dark green -->
6341 <value 6341 <value
6342 color="9,100,127,250" /> 6342 color="9,100,127,250" />
6343 6343
6344<!-- lt.aqua blue --> 6344<!-- lt.aqua blue -->
6345 <value 6345 <value
6346 color="61,93,134,250" /> 6346 color="61,93,134,250" />
6347 6347
6348<!-- aqua --> 6348<!-- aqua -->
6349 <value 6349 <value
6350 color="70,29,27,250" /> 6350 color="70,29,27,250" />
6351 6351
6352<!-- dark brown --> 6352<!-- dark brown -->
6353 <value 6353 <value
6354 color="115,75,65,250" /> 6354 color="115,75,65,250" />
6355 6355
6356<!-- lt. brown blue --> 6356<!-- lt. brown blue -->
6357 <value 6357 <value
6358 color="100,100,100,250" /> 6358 color="100,100,100,250" />
6359 6359
6360<!-- grey --> 6360<!-- grey -->
6361 <value 6361 <value
6362 color="91,80,74,250" /> 6362 color="91,80,74,250" />
6363 6363
6364<!-- grey/brown --> 6364<!-- grey/brown -->
6365 <value 6365 <value
6366 color="112,42,76,250" /> 6366 color="112,42,76,250" />
6367 6367
6368<!-- plum --> 6368<!-- plum -->
6369 <value 6369 <value
6370 color="14,14,14,250" /> 6370 color="14,14,14,250" />
6371 6371
6372<!-- black --> 6372<!-- black -->
6373 </param_color> 6373 </param_color>
6374 </param> 6374 </param>
6375 </layer> 6375 </layer>
6376 6376
6377 <layer 6377 <layer
6378 name="facialhair bump" 6378 name="facialhair bump"
6379 render_pass="bump"> 6379 render_pass="bump">
6380 <texture 6380 <texture
6381 tga_file="head_hair.tga" 6381 tga_file="head_hair.tga"
6382 file_is_mask="false" /> 6382 file_is_mask="false" />
6383 6383
6384 <param 6384 <param
6385 id="1004" 6385 id="1004"
6386 sex="male" 6386 sex="male"
6387 group="1" 6387 group="1"
6388 wearable="hair" 6388 wearable="hair"
6389 edit_group="driven" 6389 edit_group="driven"
6390 name="Sideburns bump" 6390 name="Sideburns bump"
6391 value_min="0" 6391 value_min="0"
6392 value_max="1"> 6392 value_max="1">
6393 <param_alpha 6393 <param_alpha
6394 tga_file="facehair_sideburns_alpha.tga" 6394 tga_file="facehair_sideburns_alpha.tga"
6395 skip_if_zero="true" 6395 skip_if_zero="true"
6396 domain="0.05" /> 6396 domain="0.05" />
6397 </param> 6397 </param>
6398 6398
6399 <param 6399 <param
6400 id="1006" 6400 id="1006"
6401 sex="male" 6401 sex="male"
6402 group="1" 6402 group="1"
6403 wearable="hair" 6403 wearable="hair"
6404 edit_group="driven" 6404 edit_group="driven"
6405 name="Moustache bump" 6405 name="Moustache bump"
6406 value_min="0" 6406 value_min="0"
6407 value_max="1"> 6407 value_max="1">
6408 <param_alpha 6408 <param_alpha
6409 tga_file="facehair_moustache_alpha.tga" 6409 tga_file="facehair_moustache_alpha.tga"
6410 skip_if_zero="true" 6410 skip_if_zero="true"
6411 domain="0.05" /> 6411 domain="0.05" />
6412 </param> 6412 </param>
6413 6413
6414 <param 6414 <param
6415 id="1008" 6415 id="1008"
6416 sex="male" 6416 sex="male"
6417 group="1" 6417 group="1"
6418 wearable="hair" 6418 wearable="hair"
6419 edit_group="driven" 6419 edit_group="driven"
6420 name="Soulpatch bump" 6420 name="Soulpatch bump"
6421 value_min="0" 6421 value_min="0"
6422 value_max="1"> 6422 value_max="1">
6423 <param_alpha 6423 <param_alpha
6424 tga_file="facehair_soulpatch_alpha.tga" 6424 tga_file="facehair_soulpatch_alpha.tga"
6425 skip_if_zero="true" 6425 skip_if_zero="true"
6426 domain="0.1" /> 6426 domain="0.1" />
6427 </param> 6427 </param>
6428 6428
6429 <param 6429 <param
6430 id="1010" 6430 id="1010"
6431 sex="male" 6431 sex="male"
6432 group="1" 6432 group="1"
6433 edit_group="driven" 6433 edit_group="driven"
6434 wearable="hair" 6434 wearable="hair"
6435 name="Chin Curtains bump" 6435 name="Chin Curtains bump"
6436 value_min="0" 6436 value_min="0"
6437 value_max="1"> 6437 value_max="1">
6438 <param_alpha 6438 <param_alpha
6439 tga_file="facehair_chincurtains_alpha.tga" 6439 tga_file="facehair_chincurtains_alpha.tga"
6440 skip_if_zero="true" 6440 skip_if_zero="true"
6441 domain="0.03" /> 6441 domain="0.03" />
6442 </param> 6442 </param>
6443 6443
6444 <param 6444 <param
6445 id="1012" 6445 id="1012"
6446 group="1" 6446 group="1"
6447 sex="male" 6447 sex="male"
6448 wearable="hair" 6448 wearable="hair"
6449 edit_group="driven" 6449 edit_group="driven"
6450 name="5 O'Clock Shadow bump" 6450 name="5 O'Clock Shadow bump"
6451 value_min="0" 6451 value_min="0"
6452 value_max="1"> 6452 value_max="1">
6453 <param_color> 6453 <param_color>
6454 <value 6454 <value
6455 color="255,255,255,255" /> 6455 color="255,255,255,255" />
6456 6456
6457 <value 6457 <value
6458 color="255,255,255,0" /> 6458 color="255,255,255,0" />
6459 </param_color> 6459 </param_color>
6460 </param> 6460 </param>
6461 </layer> 6461 </layer>
6462 6462
6463 <layer 6463 <layer
6464 name="facialhair" 6464 name="facialhair"
6465 global_color="hair_color"> 6465 global_color="hair_color">
6466 <morph_mask 6466 <morph_mask
6467 morph_name="Displace_Hair_Facial" /> 6467 morph_name="Displace_Hair_Facial" />
6468 6468
6469 <texture 6469 <texture
6470 tga_file="head_hair.tga" 6470 tga_file="head_hair.tga"
6471 file_is_mask="false" /> 6471 file_is_mask="false" />
6472 6472
6473 <param 6473 <param
6474 id="1005" 6474 id="1005"
6475 sex="male" 6475 sex="male"
6476 group="1" 6476 group="1"
6477 edit_group="driven" 6477 edit_group="driven"
6478 name="Sideburns" 6478 name="Sideburns"
6479 value_min="0" 6479 value_min="0"
6480 value_max="1"> 6480 value_max="1">
6481 <param_alpha 6481 <param_alpha
6482 tga_file="facehair_sideburns_alpha.tga" 6482 tga_file="facehair_sideburns_alpha.tga"
6483 skip_if_zero="true" 6483 skip_if_zero="true"
6484 domain="0.05" /> 6484 domain="0.05" />
6485 </param> 6485 </param>
6486 6486
6487 <param 6487 <param
6488 id="1007" 6488 id="1007"
6489 sex="male" 6489 sex="male"
6490 group="1" 6490 group="1"
6491 edit_group="driven" 6491 edit_group="driven"
6492 name="Moustache" 6492 name="Moustache"
6493 value_min="0" 6493 value_min="0"
6494 value_max="1"> 6494 value_max="1">
6495 <param_alpha 6495 <param_alpha
6496 tga_file="facehair_moustache_alpha.tga" 6496 tga_file="facehair_moustache_alpha.tga"
6497 skip_if_zero="true" 6497 skip_if_zero="true"
6498 domain="0.05" /> 6498 domain="0.05" />
6499 </param> 6499 </param>
6500 6500
6501 <param 6501 <param
6502 id="1009" 6502 id="1009"
6503 sex="male" 6503 sex="male"
6504 group="1" 6504 group="1"
6505 edit_group="driven" 6505 edit_group="driven"
6506 name="Soulpatch" 6506 name="Soulpatch"
6507 value_min="0" 6507 value_min="0"
6508 value_max="1"> 6508 value_max="1">
6509 <param_alpha 6509 <param_alpha
6510 tga_file="facehair_soulpatch_alpha.tga" 6510 tga_file="facehair_soulpatch_alpha.tga"
6511 skip_if_zero="true" 6511 skip_if_zero="true"
6512 domain="0.1" /> 6512 domain="0.1" />
6513 </param> 6513 </param>
6514 6514
6515 <param 6515 <param
6516 id="1011" 6516 id="1011"
6517 sex="male" 6517 sex="male"
6518 group="1" 6518 group="1"
6519 edit_group="driven" 6519 edit_group="driven"
6520 name="Chin Curtains" 6520 name="Chin Curtains"
6521 value_min="0" 6521 value_min="0"
6522 value_max="1"> 6522 value_max="1">
6523 <param_alpha 6523 <param_alpha
6524 tga_file="facehair_chincurtains_alpha.tga" 6524 tga_file="facehair_chincurtains_alpha.tga"
6525 skip_if_zero="true" 6525 skip_if_zero="true"
6526 domain="0.03" /> 6526 domain="0.03" />
6527 </param> 6527 </param>
6528 6528
6529 <param 6529 <param
6530 id="751" 6530 id="751"
6531 group="1" 6531 group="1"
6532 wearable="hair" 6532 wearable="hair"
6533 sex="male" 6533 sex="male"
6534 edit_group="hair_facial" 6534 edit_group="hair_facial"
6535 name="5 O'Clock Shadow" 6535 name="5 O'Clock Shadow"
6536 label_min="Dense hair" 6536 label_min="Dense hair"
6537 label_max="Shadow hair" 6537 label_max="Shadow hair"
6538 value_min="0" 6538 value_min="0"
6539 value_max="1" 6539 value_max="1"
6540 value_default="0.7" 6540 value_default="0.7"
6541 camera_elevation=".1" 6541 camera_elevation=".1"
6542 camera_distance=".3"> 6542 camera_distance=".3">
6543 <param_color 6543 <param_color
6544 operation="multiply"> 6544 operation="multiply">
6545 <value 6545 <value
6546 color="255,255,255,255" /> 6546 color="255,255,255,255" />
6547 6547
6548 <value 6548 <value
6549 color="255,255,255,30" /> 6549 color="255,255,255,30" />
6550 </param_color> 6550 </param_color>
6551 </param> 6551 </param>
6552 </layer> 6552 </layer>
6553 6553
6554 <layer 6554 <layer
6555 name="head_bodypaint"> 6555 name="head_bodypaint">
6556 <texture 6556 <texture
6557 local_texture="head_bodypaint" /> 6557 local_texture="head_bodypaint" />
6558 </layer> 6558 </layer>
6559 <layer 6559 <layer
6560 name="eyelash alpha" 6560 name="eyelash alpha"
6561 visibility_mask="TRUE"> 6561 visibility_mask="TRUE">
6562 <texture 6562 <texture
6563 tga_file="head_alpha.tga" 6563 tga_file="head_alpha.tga"
6564 file_is_mask="TRUE" /> 6564 file_is_mask="TRUE" />
6565 </layer> 6565 </layer>
6566 <layer 6566 <layer
6567 name="head alpha" 6567 name="head alpha"
6568 visibility_mask="TRUE"> 6568 visibility_mask="TRUE">
6569 <texture 6569 <texture
6570 local_texture="head_alpha" /> 6570 local_texture="head_alpha" />
6571 </layer> 6571 </layer>
6572 <layer 6572 <layer
6573 name="head_tattoo"> 6573 name="head_tattoo">
6574 <texture 6574 <texture local_texture="head_tattoo" />
6575 local_texture="head_tattoo" /> 6575 <param id="1062" group="1" edit_group="colorpicker_driven" wearable="tattoo"
6576 </layer> 6576 name="tattoo_head_red" value_min="0" value_max="1" value_default="1">
6577 </layer_set> 6577 <param_color>
6578 6578 <value color="0, 0, 0, 255" />
6579<!-- =========================================================== --> 6579 <value color="255, 0, 0, 255" />
6580 <layer_set 6580 </param_color>
6581 body_region="upper_body" 6581 </param>
6582 width="512" 6582
6583 height="512"> 6583 <param id="1063" group="1" edit_group="colorpicker_driven" wearable="tattoo"
6584 <layer 6584 name="tattoo_head_green" value_min="0" value_max="1" value_default="1">
6585 name="base_upperbody bump" 6585 <param_color>
6586 render_pass="bump" 6586 <value color="0, 0, 0, 255" />
6587 fixed_color="128,128,128,255"> 6587 <value color="0, 255, 0, 255" />
6588 </layer> 6588 </param_color>
6589 <layer 6589 </param>
6590 name="upperbody bump definition" 6590
6591 render_pass="bump"> 6591 <param id="1064" group="1" edit_group="colorpicker_driven" wearable="tattoo"
6592 <texture 6592 name="tattoo_head_blue" value_min="0" value_max="1" value_default="1">
6593 tga_file="bump_upperbody_base.tga" 6593 <param_color>
6594 file_is_mask="FALSE"/> 6594 <value color="0, 0, 0, 255" />
6595 6595 <value color="0, 0, 255, 255" />
6596 <param 6596 </param_color>
6597 id="874" 6597 </param>
6598 group="1" 6598 </layer>
6599 wearable="skin" 6599 </layer_set>
6600 edit_group="driven" 6600
6601 edit_group_order="20" 6601<!-- =========================================================== -->
6602 name="Bump upperdef" 6602 <layer_set
6603 value_min="0" 6603 body_region="upper_body"
6604 value_max="1"> 6604 width="512"
6605 <param_alpha 6605 height="512">
6606 domain="0" /> 6606 <layer
6607 </param> 6607 name="base_upperbody bump"
6608 </layer> 6608 render_pass="bump"
6609 6609 fixed_color="128,128,128,255">
6610 <layer 6610 </layer>
6611 name="base" 6611 <layer
6612 global_color="skin_color"> 6612 name="upperbody bump definition"
6613 <texture 6613 render_pass="bump">
6614 tga_file="body_skingrain.tga" /> 6614 <texture
6615 </layer> 6615 tga_file="bump_upperbody_base.tga"
6616 6616 file_is_mask="FALSE"/>
6617 <layer 6617
6618 name="nipples"> 6618 <param
6619 <texture 6619 id="874"
6620 tga_file="upperbody_color.tga" /> 6620 group="1"
6621 </layer> 6621 wearable="skin"
6622 6622 edit_group="driven"
6623 <layer 6623 edit_group_order="20"
6624 name="shadow"> 6624 name="Bump upperdef"
6625 <texture 6625 value_min="0"
6626 tga_file="upperbody_shading_alpha.tga" 6626 value_max="1">
6627 file_is_mask="TRUE" /> 6627 <param_alpha
6628 6628 domain="0" />
6629 <param 6629 </param>
6630 id="125" 6630 </layer>
6631 group="1" 6631
6632 name="Shading" 6632 <layer
6633 wearable="skin" 6633 name="base"
6634 value_min="0" 6634 global_color="skin_color">
6635 value_max="1"> 6635 <texture
6636 <param_color> 6636 tga_file="body_skingrain.tga" />
6637 <value 6637 </layer>
6638 color="0, 0, 0, 0" /> 6638
6639 6639 <layer
6640 <value 6640 name="nipples">
6641 color="0, 0, 0, 128" /> 6641 <texture
6642 </param_color> 6642 tga_file="upperbody_color.tga" />
6643 </param> 6643 </layer>
6644 </layer> 6644
6645 6645 <layer
6646 <layer 6646 name="shadow">
6647 name="highlight"> 6647 <texture
6648 <texture 6648 tga_file="upperbody_shading_alpha.tga"
6649 tga_file="upperbody_highlights_alpha.tga" 6649 file_is_mask="TRUE" />
6650 file_is_mask="TRUE" /> 6650
6651 6651 <param
6652 <param 6652 id="125"
6653 id="126" 6653 group="1"
6654 group="1" 6654 name="Shading"
6655 wearable="skin" 6655 wearable="skin"
6656 name="Shading" 6656 value_min="0"
6657 value_min="0" 6657 value_max="1">
6658 value_max="1"> 6658 <param_color>
6659 <param_color> 6659 <value
6660 <value 6660 color="0, 0, 0, 0" />
6661 color="255, 255, 255, 0" /> 6661
6662 6662 <value
6663 <value 6663 color="0, 0, 0, 128" />
6664 color="255, 255, 255, 64" /> 6664 </param_color>
6665 </param_color> 6665 </param>
6666 </param> 6666 </layer>
6667 </layer> 6667
6668 6668 <layer
6669 <layer 6669 name="highlight">
6670 name="upper_bodypaint"> 6670 <texture
6671 <texture 6671 tga_file="upperbody_highlights_alpha.tga"
6672 local_texture="upper_bodypaint" /> 6672 file_is_mask="TRUE" />
6673 </layer> 6673
6674 6674 <param
6675 <layer 6675 id="126"
6676 name="freckles upper" 6676 group="1"
6677 fixed_color="120,47,20,128"> 6677 wearable="skin"
6678 <param 6678 name="Shading"
6679 id="776" 6679 value_min="0"
6680 group="1" 6680 value_max="1">
6681 name="freckles upper" 6681 <param_color>
6682 wearable="skin" 6682 <value
6683 value_min="0" 6683 color="255, 255, 255, 0" />
6684 value_max="1"> 6684
6685 <param_alpha 6685 <value
6686 tga_file="upperbodyfreckles_alpha.tga" 6686 color="255, 255, 255, 64" />
6687 skip_if_zero="true" 6687 </param_color>
6688 domain="0.6" /> 6688 </param>
6689 </param> 6689 </layer>
6690 </layer> 6690
6691 6691 <layer
6692 <layer 6692 name="upper_bodypaint">
6693 name="upper_tattoo"> 6693 <texture
6694 <texture 6694 local_texture="upper_bodypaint" />
6695 local_texture="upper_tattoo" /> 6695 </layer>
6696 </layer> 6696
6697 6697 <layer
6698 <layer 6698 name="freckles upper"
6699 name="upper_undershirt bump" 6699 fixed_color="120,47,20,128">
6700 render_pass="bump" 6700 <param
6701 fixed_color="128,128,128,255"> 6701 id="776"
6702 <texture 6702 group="1"
6703 local_texture="upper_undershirt" 6703 name="freckles upper"
6704 local_texture_alpha_only="true" /> 6704 wearable="skin"
6705 6705 value_min="0"
6706 <param 6706 value_max="1">
6707 id="1043" 6707 <param_alpha
6708 group="1" 6708 tga_file="upperbodyfreckles_alpha.tga"
6709 wearable="undershirt" 6709 skip_if_zero="true"
6710 edit_group="driven" 6710 domain="0.6" />
6711 name="Sleeve Length bump" 6711 </param>
6712 value_min=".01" 6712 </layer>
6713 value_max="1" 6713
6714 value_default=".4"> 6714 <layer name="upper_tattoo">
6715 <param_alpha 6715 <texture local_texture="upper_tattoo" />
6716 tga_file="shirt_sleeve_alpha.tga" 6716 <param id="1065" group="1" edit_group="colorpicker_driven" wearable="tattoo"
6717 multiply_blend="false" 6717 name="tattoo_upper_red" value_min="0" value_max="1" value_default="1">
6718 domain="0.01" /> 6718 <param_color>
6719 </param> 6719 <value color="0, 0, 0, 255" />
6720 6720 <value color="255, 0, 0, 255" />
6721 <param 6721 </param_color>
6722 id="1045" 6722 </param>
6723 group="1" 6723
6724 wearable="undershirt" 6724 <param id="1066" group="1" edit_group="colorpicker_driven" wearable="tattoo"
6725 edit_group="undershirt" 6725 name="tattoo_upper_green" value_min="0" value_max="1" value_default="1">
6726 edit_group_order="2" 6726 <param_color>
6727 name="Bottom bump" 6727 <value color="0, 0, 0, 255" />
6728 value_min="0" 6728 <value color="0, 255, 0, 255" />
6729 value_max="1" 6729 </param_color>
6730 value_default=".8"> 6730 </param>
6731 <param_alpha 6731
6732 tga_file="shirt_bottom_alpha.tga" 6732 <param id="1067" group="1" edit_group="colorpicker_driven" wearable="tattoo"
6733 multiply_blend="true" 6733 name="tattoo_upper_blue" value_min="0" value_max="1" value_default="1">
6734 domain="0.05" /> 6734 <param_color>
6735 </param> 6735 <value color="0, 0, 0, 255" />
6736 6736 <value color="0, 0, 255, 255" />
6737 <param 6737 </param_color>
6738 id="1047" 6738 </param>
6739 group="1" 6739 </layer>
6740 wearable="undershirt" 6740
6741 edit_group="driven" 6741 <layer
6742 name="Collar Front bump" 6742 name="upper_undershirt bump"
6743 value_min="0" 6743 render_pass="bump"
6744 value_max="1" 6744 fixed_color="128,128,128,255">
6745 value_default=".8"> 6745 <texture
6746 <param_alpha 6746 local_texture="upper_undershirt"
6747 tga_file="shirt_collar_alpha.tga" 6747 local_texture_alpha_only="true" />
6748 multiply_blend="true" 6748
6749 domain="0.05" /> 6749 <param
6750 </param> 6750 id="1043"
6751 6751 group="1"
6752 <param 6752 wearable="undershirt"
6753 id="1049" 6753 edit_group="driven"
6754 group="1" 6754 name="Sleeve Length bump"
6755 wearable="undershirt" 6755 value_min=".01"
6756 edit_group="driven" 6756 value_max="1"
6757 name="Collar Back bump" 6757 value_default=".4">
6758 value_min="0" 6758 <param_alpha
6759 value_max="1" 6759 tga_file="shirt_sleeve_alpha.tga"
6760 value_default=".8"> 6760 multiply_blend="false"
6761 <param_alpha 6761 domain="0.01" />
6762 tga_file="shirt_collar_back_alpha.tga" 6762 </param>
6763 multiply_blend="true" 6763
6764 domain="0.05" /> 6764 <param
6765 </param> 6765 id="1045"
6766 </layer> 6766 group="1"
6767 6767 wearable="undershirt"
6768 <layer 6768 edit_group="undershirt"
6769 name="upper_undershirt"> 6769 edit_group_order="2"
6770 <texture 6770 name="Bottom bump"
6771 local_texture="upper_undershirt" /> 6771 value_min="0"
6772 6772 value_max="1"
6773 <param 6773 value_default=".8">
6774 id="821" 6774 <param_alpha
6775 group="0" 6775 tga_file="shirt_bottom_alpha.tga"
6776 wearable="undershirt" 6776 multiply_blend="true"
6777 edit_group="colorpicker" 6777 domain="0.05" />
6778 name="undershirt_red" 6778 </param>
6779 value_min="0" 6779
6780 value_max="1" 6780 <param
6781 value_default="1"> 6781 id="1047"
6782 <param_color> 6782 group="1"
6783 <value 6783 wearable="undershirt"
6784 color="0, 0, 0, 255" /> 6784 edit_group="driven"
6785 6785 name="Collar Front bump"
6786 <value 6786 value_min="0"
6787 color="255, 0, 0, 255" /> 6787 value_max="1"
6788 </param_color> 6788 value_default=".8">
6789 </param> 6789 <param_alpha
6790 6790 tga_file="shirt_collar_alpha.tga"
6791 <param 6791 multiply_blend="true"
6792 id="822" 6792 domain="0.05" />
6793 group="0" 6793 </param>
6794 wearable="undershirt" 6794
6795 edit_group="colorpicker" 6795 <param
6796 name="undershirt_green" 6796 id="1049"
6797 value_min="0" 6797 group="1"
6798 value_max="1" 6798 wearable="undershirt"
6799 value_default="1"> 6799 edit_group="driven"
6800 <param_color> 6800 name="Collar Back bump"
6801 <value 6801 value_min="0"
6802 color="0, 0, 0, 255" /> 6802 value_max="1"
6803 6803 value_default=".8">
6804 <value 6804 <param_alpha
6805 color="0, 255, 0, 255" /> 6805 tga_file="shirt_collar_back_alpha.tga"
6806 </param_color> 6806 multiply_blend="true"
6807 </param> 6807 domain="0.05" />
6808 6808 </param>
6809 <param 6809 </layer>
6810 id="823" 6810
6811 group="0" 6811 <layer
6812 wearable="undershirt" 6812 name="upper_undershirt">
6813 edit_group="colorpicker" 6813 <texture
6814 name="undershirt_blue" 6814 local_texture="upper_undershirt" />
6815 value_min="0" 6815
6816 value_max="1" 6816 <param
6817 value_default="1"> 6817 id="821"
6818 <param_color> 6818 group="0"
6819 <value 6819 wearable="undershirt"
6820 color="0, 0, 0, 255" /> 6820 edit_group="colorpicker"
6821 6821 name="undershirt_red"
6822 <value 6822 value_min="0"
6823 color="0, 0, 255, 255" /> 6823 value_max="1"
6824 </param_color> 6824 value_default="1">
6825 </param> 6825 <param_color>
6826 6826 <value
6827 <param 6827 color="0, 0, 0, 255" />
6828 id="1042" 6828
6829 group="1" 6829 <value
6830 wearable="undershirt" 6830 color="255, 0, 0, 255" />
6831 edit_group="driven" 6831 </param_color>
6832 name="Sleeve Length" 6832 </param>
6833 value_min=".01" 6833
6834 value_max="1" 6834 <param
6835 value_default=".4"> 6835 id="822"
6836 <param_alpha 6836 group="0"
6837 tga_file="shirt_sleeve_alpha.tga" 6837 wearable="undershirt"
6838 multiply_blend="false" 6838 edit_group="colorpicker"
6839 domain="0.01" /> 6839 name="undershirt_green"
6840 </param> 6840 value_min="0"
6841 6841 value_max="1"
6842 <param 6842 value_default="1">
6843 id="1044" 6843 <param_color>
6844 group="1" 6844 <value
6845 wearable="undershirt" 6845 color="0, 0, 0, 255" />
6846 edit_group="driven" 6846
6847 name="Bottom" 6847 <value
6848 value_min="0" 6848 color="0, 255, 0, 255" />
6849 value_max="1" 6849 </param_color>
6850 value_default=".8"> 6850 </param>
6851 <param_alpha 6851
6852 tga_file="shirt_bottom_alpha.tga" 6852 <param
6853 multiply_blend="true" 6853 id="823"
6854 domain="0.05" /> 6854 group="0"
6855 </param> 6855 wearable="undershirt"
6856 6856 edit_group="colorpicker"
6857 <param 6857 name="undershirt_blue"
6858 id="1046" 6858 value_min="0"
6859 group="1" 6859 value_max="1"
6860 wearable="undershirt" 6860 value_default="1">
6861 edit_group="driven" 6861 <param_color>
6862 name="Collar Front" 6862 <value
6863 value_min="0" 6863 color="0, 0, 0, 255" />
6864 value_max="1" 6864
6865 value_default=".8"> 6865 <value
6866 <param_alpha 6866 color="0, 0, 255, 255" />
6867 tga_file="shirt_collar_alpha.tga" 6867 </param_color>
6868 multiply_blend="true" 6868 </param>
6869 domain="0.05" /> 6869
6870 </param> 6870 <param
6871 6871 id="1042"
6872 <param 6872 group="1"
6873 id="1048" 6873 wearable="undershirt"
6874 group="1" 6874 edit_group="driven"
6875 wearable="undershirt" 6875 name="Sleeve Length"
6876 edit_group="driven" 6876 value_min=".01"
6877 name="Collar Back" 6877 value_max="1"
6878 label_min="Low" 6878 value_default=".4">
6879 label_max="High" 6879 <param_alpha
6880 value_min="0" 6880 tga_file="shirt_sleeve_alpha.tga"
6881 value_max="1" 6881 multiply_blend="false"
6882 value_default=".8"> 6882 domain="0.01" />
6883 <param_alpha 6883 </param>
6884 tga_file="shirt_collar_back_alpha.tga" 6884
6885 multiply_blend="true" 6885 <param
6886 domain="0.05" /> 6886 id="1044"
6887 </param> 6887 group="1"
6888 </layer> 6888 wearable="undershirt"
6889 6889 edit_group="driven"
6890 <layer 6890 name="Bottom"
6891 name="Nail Polish"> 6891 value_min="0"
6892 <param 6892 value_max="1"
6893 id="710" 6893 value_default=".8">
6894 group="0" 6894 <param_alpha
6895 wearable="skin" 6895 tga_file="shirt_bottom_alpha.tga"
6896 edit_group="skin_makeup" 6896 multiply_blend="true"
6897 edit_group_order="15" 6897 domain="0.05" />
6898 name="Nail Polish" 6898 </param>
6899 label_min="No Polish" 6899
6900 label_max="Painted Nails" 6900 <param
6901 value_min="0" 6901 id="1046"
6902 value_max="1" 6902 group="1"
6903 value_default="0.0" 6903 wearable="undershirt"
6904 camera_distance="1.6" 6904 edit_group="driven"
6905 camera_elevation="-.4" 6905 name="Collar Front"
6906 camera_angle="70"> 6906 value_min="0"
6907 <param_alpha 6907 value_max="1"
6908 tga_file="nailpolish_alpha.tga" 6908 value_default=".8">
6909 skip_if_zero="true" 6909 <param_alpha
6910 domain="0.1" /> 6910 tga_file="shirt_collar_alpha.tga"
6911 </param> 6911 multiply_blend="true"
6912 6912 domain="0.05" />
6913 <param 6913 </param>
6914 id="715" 6914
6915 group="0" 6915 <param
6916 wearable="skin" 6916 id="1048"
6917 edit_group="skin_makeup" 6917 group="1"
6918 edit_group_order="16" 6918 wearable="undershirt"
6919 name="Nail Polish Color" 6919 edit_group="driven"
6920 label_min="Pink" 6920 name="Collar Back"
6921 label_max="Black" 6921 label_min="Low"
6922 value_min="0" 6922 label_max="High"
6923 value_max="1" 6923 value_min="0"
6924 camera_distance="1.6" 6924 value_max="1"
6925 camera_elevation="-.4" 6925 value_default=".8">
6926 camera_angle="70"> 6926 <param_alpha
6927 <param_color> 6927 tga_file="shirt_collar_back_alpha.tga"
6928 <value 6928 multiply_blend="true"
6929 color="255,187,200,255" /> 6929 domain="0.05" />
6930 6930 </param>
6931 <value 6931 </layer>
6932 color="194,102,127,255" /> 6932
6933 6933 <layer
6934 <value 6934 name="Nail Polish">
6935 color="227,34,99,255" /> 6935 <param
6936 6936 id="710"
6937 <value 6937 group="0"
6938 color="168,41,60,255" /> 6938 wearable="skin"
6939 6939 edit_group="skin_makeup"
6940 <value 6940 edit_group_order="15"
6941 color="97,28,59,255" /> 6941 name="Nail Polish"
6942 6942 label_min="No Polish"
6943 <value 6943 label_max="Painted Nails"
6944 color="234,115,93,255" /> 6944 value_min="0"
6945 6945 value_max="1"
6946 <value 6946 value_default="0.0"
6947 color="142,58,47,255" /> 6947 camera_distance="1.6"
6948 6948 camera_elevation="-.4"
6949 <value 6949 camera_angle="70">
6950 color="114,30,46,255" /> 6950 <param_alpha
6951 6951 tga_file="nailpolish_alpha.tga"
6952 <value 6952 skip_if_zero="true"
6953 color="14,14,14,255" /> 6953 domain="0.1" />
6954 </param_color> 6954 </param>
6955 </param> 6955
6956 </layer> 6956 <param
6957 6957 id="715"
6958 <layer 6958 group="0"
6959 name="upper_gloves bump" 6959 wearable="skin"
6960 render_pass="bump" 6960 edit_group="skin_makeup"
6961 fixed_color="128,128,128,255"> 6961 edit_group_order="16"
6962 <texture 6962 name="Nail Polish Color"
6963 local_texture="upper_gloves" 6963 label_min="Pink"
6964 local_texture_alpha_only="true" /> 6964 label_max="Black"
6965 6965 value_min="0"
6966 <param 6966 value_max="1"
6967 id="1059" 6967 camera_distance="1.6"
6968 group="1" 6968 camera_elevation="-.4"
6969 wearable="gloves" 6969 camera_angle="70">
6970 edit_group="driven" 6970 <param_color>
6971 name="Glove Length bump" 6971 <value
6972 value_min=".01" 6972 color="255,187,200,255" />
6973 value_max="1" 6973
6974 value_default=".8"> 6974 <value
6975 <param_alpha 6975 color="194,102,127,255" />
6976 tga_file="glove_length_alpha.tga" 6976
6977 domain="0.01" /> 6977 <value
6978 </param> 6978 color="227,34,99,255" />
6979 6979
6980 <param 6980 <value
6981 id="1061" 6981 color="168,41,60,255" />
6982 group="1" 6982
6983 wearable="gloves" 6983 <value
6984 edit_group="driven" 6984 color="97,28,59,255" />
6985 name="Glove Fingers bump" 6985
6986 value_min=".01" 6986 <value
6987 value_max="1" 6987 color="234,115,93,255" />
6988 value_default="1"> 6988
6989 <param_alpha 6989 <value
6990 tga_file="gloves_fingers_alpha.tga" 6990 color="142,58,47,255" />
6991 multiply_blend="true" 6991
6992 domain="0.01" /> 6992 <value
6993 </param> 6993 color="114,30,46,255" />
6994 </layer> 6994
6995 6995 <value
6996 <layer 6996 color="14,14,14,255" />
6997 name="upper_gloves"> 6997 </param_color>
6998 <texture 6998 </param>
6999 local_texture="upper_gloves" /> 6999 </layer>
7000 7000
7001 <param 7001 <layer
7002 id="827" 7002 name="upper_gloves bump"
7003 group="0" 7003 render_pass="bump"
7004 wearable="gloves" 7004 fixed_color="128,128,128,255">
7005 edit_group="colorpicker" 7005 <texture
7006 name="gloves_red" 7006 local_texture="upper_gloves"
7007 value_min="0" 7007 local_texture_alpha_only="true" />
7008 value_max="1" 7008
7009 value_default="1"> 7009 <param
7010 <param_color> 7010 id="1059"
7011 <value 7011 group="1"
7012 color="0, 0, 0, 255" /> 7012 wearable="gloves"
7013 7013 edit_group="driven"
7014 <value 7014 name="Glove Length bump"
7015 color="255, 0, 0, 255" /> 7015 value_min=".01"
7016 </param_color> 7016 value_max="1"
7017 </param> 7017 value_default=".8">
7018 7018 <param_alpha
7019 <param 7019 tga_file="glove_length_alpha.tga"
7020 id="829" 7020 domain="0.01" />
7021 group="0" 7021 </param>
7022 wearable="gloves" 7022
7023 edit_group="colorpicker" 7023 <param
7024 name="gloves_green" 7024 id="1061"
7025 value_min="0" 7025 group="1"
7026 value_max="1" 7026 wearable="gloves"
7027 value_default="1"> 7027 edit_group="driven"
7028 <param_color> 7028 name="Glove Fingers bump"
7029 <value 7029 value_min=".01"
7030 color="0, 0, 0, 255" /> 7030 value_max="1"
7031 7031 value_default="1">
7032 <value 7032 <param_alpha
7033 color="0, 255, 0, 255" /> 7033 tga_file="gloves_fingers_alpha.tga"
7034 </param_color> 7034 multiply_blend="true"
7035 </param> 7035 domain="0.01" />
7036 7036 </param>
7037 <param 7037 </layer>
7038 id="830" 7038
7039 group="0" 7039 <layer
7040 wearable="gloves" 7040 name="upper_gloves">
7041 edit_group="colorpicker" 7041 <texture
7042 name="gloves_blue" 7042 local_texture="upper_gloves" />
7043 value_min="0" 7043
7044 value_max="1" 7044 <param
7045 value_default="1"> 7045 id="827"
7046 <param_color> 7046 group="0"
7047 <value 7047 wearable="gloves"
7048 color="0, 0, 0, 255" /> 7048 edit_group="colorpicker"
7049 7049 name="gloves_red"
7050 <value 7050 value_min="0"
7051 color="0, 0, 255, 255" /> 7051 value_max="1"
7052 </param_color> 7052 value_default="1">
7053 </param> 7053 <param_color>
7054 7054 <value
7055 <param 7055 color="0, 0, 0, 255" />
7056 id="1058" 7056
7057 group="1" 7057 <value
7058 wearable="gloves" 7058 color="255, 0, 0, 255" />
7059 edit_group="driven" 7059 </param_color>
7060 name="Glove Length" 7060 </param>
7061 value_min=".01" 7061
7062 value_max="1" 7062 <param
7063 value_default=".8"> 7063 id="829"
7064 <param_alpha 7064 group="0"
7065 tga_file="glove_length_alpha.tga" 7065 wearable="gloves"
7066 domain="0.01" /> 7066 edit_group="colorpicker"
7067 </param> 7067 name="gloves_green"
7068 7068 value_min="0"
7069 <param 7069 value_max="1"
7070 id="1060" 7070 value_default="1">
7071 group="1" 7071 <param_color>
7072 wearable="gloves" 7072 <value
7073 edit_group="driven" 7073 color="0, 0, 0, 255" />
7074 name="Glove Fingers" 7074
7075 value_min=".01" 7075 <value
7076 value_max="1" 7076 color="0, 255, 0, 255" />
7077 value_default="1"> 7077 </param_color>
7078 <param_alpha 7078 </param>
7079 tga_file="gloves_fingers_alpha.tga" 7079
7080 multiply_blend="true" 7080 <param
7081 domain="0.01" /> 7081 id="830"
7082 </param> 7082 group="0"
7083 </layer> 7083 wearable="gloves"
7084 7084 edit_group="colorpicker"
7085 <layer 7085 name="gloves_blue"
7086 name="upper_clothes_shadow"> 7086 value_min="0"
7087 <texture 7087 value_max="1"
7088 local_texture="upper_shirt" /> 7088 value_default="1">
7089 7089 <param_color>
7090 <param 7090 <value
7091 id="899" 7091 color="0, 0, 0, 255" />
7092 group="1" 7092
7093 edit_group="driven" 7093 <value
7094 wearable="shirt" 7094 color="0, 0, 255, 255" />
7095 name="Upper Clothes Shading" 7095 </param_color>
7096 value_min="0" 7096 </param>
7097 value_max="1" 7097
7098 value_default="0"> 7098 <param
7099 <param_color> 7099 id="1058"
7100 <value 7100 group="1"
7101 color="0, 0, 0, 0" /> 7101 wearable="gloves"
7102 7102 edit_group="driven"
7103 <value 7103 name="Glove Length"
7104 color="0, 0, 0, 80" /> 7104 value_min=".01"
7105 </param_color> 7105 value_max="1"
7106 </param> 7106 value_default=".8">
7107 7107 <param_alpha
7108 <param 7108 tga_file="glove_length_alpha.tga"
7109 id="900" 7109 domain="0.01" />
7110 group="1" 7110 </param>
7111 wearable="shirt" 7111
7112 edit_group="driven" 7112 <param
7113 name="Sleeve Length Shadow" 7113 id="1060"
7114 value_min="0.02" 7114 group="1"
7115 value_max=".87" 7115 wearable="gloves"
7116 value_default="0.02"> 7116 edit_group="driven"
7117 <param_alpha 7117 name="Glove Fingers"
7118 multiply_blend="false" 7118 value_min=".01"
7119 tga_file="shirt_sleeve_alpha.tga" 7119 value_max="1"
7120 skip_if_zero="true" 7120 value_default="1">
7121 domain="0.03" /> 7121 <param_alpha
7122 </param> 7122 tga_file="gloves_fingers_alpha.tga"
7123 7123 multiply_blend="true"
7124 <param 7124 domain="0.01" />
7125 id="901" 7125 </param>
7126 group="1" 7126 </layer>
7127 wearable="shirt" 7127
7128 edit_group="driven" 7128 <layer
7129 name="Shirt Shadow Bottom" 7129 name="upper_clothes_shadow">
7130 value_min="0.02" 7130 <texture
7131 value_max="1"> 7131 local_texture="upper_shirt" />
7132 <param_alpha 7132
7133 multiply_blend="true" 7133 <param
7134 tga_file="shirt_bottom_alpha.tga" 7134 id="899"
7135 skip_if_zero="true" 7135 group="1"
7136 domain="0.05" /> 7136 edit_group="driven"
7137 </param> 7137 wearable="shirt"
7138 7138 name="Upper Clothes Shading"
7139 <param 7139 value_min="0"
7140 id="902" 7140 value_max="1"
7141 group="1" 7141 value_default="0">
7142 wearable="shirt" 7142 <param_color>
7143 edit_group="driven" 7143 <value
7144 name="Collar Front Shadow Height" 7144 color="0, 0, 0, 0" />
7145 value_min="0.02" 7145
7146 value_max="1"> 7146 <value
7147 <param_alpha 7147 color="0, 0, 0, 80" />
7148 multiply_blend="true" 7148 </param_color>
7149 tga_file="shirt_collar_alpha.tga" 7149 </param>
7150 skip_if_zero="true" 7150
7151 domain="0.02" /> 7151 <param
7152 </param> 7152 id="900"
7153 7153 group="1"
7154 <param 7154 wearable="shirt"
7155 id="903" 7155 edit_group="driven"
7156 group="1" 7156 name="Sleeve Length Shadow"
7157 wearable="shirt" 7157 value_min="0.02"
7158 edit_group="driven" 7158 value_max=".87"
7159 name="Collar Back Shadow Height" 7159 value_default="0.02">
7160 value_min="0.02" 7160 <param_alpha
7161 value_max="1"> 7161 multiply_blend="false"
7162 <param_alpha 7162 tga_file="shirt_sleeve_alpha.tga"
7163 multiply_blend="true" 7163 skip_if_zero="true"
7164 tga_file="shirt_collar_back_alpha.tga" 7164 domain="0.03" />
7165 skip_if_zero="true" 7165 </param>
7166 domain="0.02" /> 7166
7167 </param> 7167 <param
7168 </layer> 7168 id="901"
7169 7169 group="1"
7170 <layer 7170 wearable="shirt"
7171 name="upper_shirt base bump" 7171 edit_group="driven"
7172 render_pass="bump" 7172 name="Shirt Shadow Bottom"
7173 fixed_color="128,128,128,255"> 7173 value_min="0.02"
7174 <texture 7174 value_max="1">
7175 local_texture="upper_shirt" 7175 <param_alpha
7176 local_texture_alpha_only="true" /> 7176 multiply_blend="true"
7177 7177 tga_file="shirt_bottom_alpha.tga"
7178 <param 7178 skip_if_zero="true"
7179 id="1029" 7179 domain="0.05" />
7180 group="1" 7180 </param>
7181 wearable="shirt" 7181
7182 edit_group="driven" 7182 <param
7183 name="Sleeve Length Cloth" 7183 id="902"
7184 value_min="0" 7184 group="1"
7185 value_max="0.85"> 7185 wearable="shirt"
7186 <param_alpha 7186 edit_group="driven"
7187 multiply_blend="false" 7187 name="Collar Front Shadow Height"
7188 tga_file="shirt_sleeve_alpha.tga" 7188 value_min="0.02"
7189 domain="0.01" /> 7189 value_max="1">
7190 </param> 7190 <param_alpha
7191 7191 multiply_blend="true"
7192 <param 7192 tga_file="shirt_collar_alpha.tga"
7193 id="1030" 7193 skip_if_zero="true"
7194 group="1" 7194 domain="0.02" />
7195 wearable="shirt" 7195 </param>
7196 edit_group="driven" 7196
7197 name="Shirt Bottom Cloth" 7197 <param
7198 value_min="0" 7198 id="903"
7199 value_max="1"> 7199 group="1"
7200 <param_alpha 7200 wearable="shirt"
7201 multiply_blend="true" 7201 edit_group="driven"
7202 tga_file="shirt_bottom_alpha.tga" 7202 name="Collar Back Shadow Height"
7203 domain="0.05" /> 7203 value_min="0.02"
7204 </param> 7204 value_max="1">
7205 7205 <param_alpha
7206 <param 7206 multiply_blend="true"
7207 id="1031" 7207 tga_file="shirt_collar_back_alpha.tga"
7208 group="1" 7208 skip_if_zero="true"
7209 wearable="shirt" 7209 domain="0.02" />
7210 edit_group="driven" 7210 </param>
7211 name="Collar Front Height Cloth" 7211 </layer>
7212 value_min="0" 7212
7213 value_max="1"> 7213 <layer
7214 <param_alpha 7214 name="upper_shirt base bump"
7215 multiply_blend="true" 7215 render_pass="bump"
7216 tga_file="shirt_collar_alpha.tga" 7216 fixed_color="128,128,128,255">
7217 domain="0.05" /> 7217 <texture
7218 </param> 7218 local_texture="upper_shirt"
7219 7219 local_texture_alpha_only="true" />
7220 <param 7220
7221 id="1032" 7221 <param
7222 group="1" 7222 id="1029"
7223 wearable="shirt" 7223 group="1"
7224 edit_group="driven" 7224 wearable="shirt"
7225 name="Collar Back Height Cloth" 7225 edit_group="driven"
7226 value_min="0" 7226 name="Sleeve Length Cloth"
7227 value_max="1"> 7227 value_min="0"
7228 <param_alpha 7228 value_max="0.85">
7229 multiply_blend="true" 7229 <param_alpha
7230 tga_file="shirt_collar_back_alpha.tga" 7230 multiply_blend="false"
7231 domain="0.05" /> 7231 tga_file="shirt_sleeve_alpha.tga"
7232 </param> 7232 domain="0.01" />
7233 </layer> 7233 </param>
7234 7234
7235 <layer 7235 <param
7236 name="upper_clothes bump" 7236 id="1030"
7237 render_pass="bump"> 7237 group="1"
7238 <texture 7238 wearable="shirt"
7239 tga_file="bump_shirt_wrinkles.tga" /> 7239 edit_group="driven"
7240 7240 name="Shirt Bottom Cloth"
7241 <texture 7241 value_min="0"
7242 local_texture="upper_shirt" 7242 value_max="1">
7243 local_texture_alpha_only="true" /> 7243 <param_alpha
7244 7244 multiply_blend="true"
7245 <param 7245 tga_file="shirt_bottom_alpha.tga"
7246 id="868" 7246 domain="0.05" />
7247 group="0" 7247 </param>
7248 wearable="shirt" 7248
7249 edit_group="shirt" 7249 <param
7250 edit_group_order="8" 7250 id="1031"
7251 name="Shirt Wrinkles" 7251 group="1"
7252 value_min="0" 7252 wearable="shirt"
7253 value_max="1" 7253 edit_group="driven"
7254 value_default="0"> 7254 name="Collar Front Height Cloth"
7255 <param_color> 7255 value_min="0"
7256 <value 7256 value_max="1">
7257 color="255, 255, 255, 0" /> 7257 <param_alpha
7258 7258 multiply_blend="true"
7259 <value 7259 tga_file="shirt_collar_alpha.tga"
7260 color="255, 255, 255, 255" /> 7260 domain="0.05" />
7261 </param_color> 7261 </param>
7262 </param> 7262
7263 7263 <param
7264 <param 7264 id="1032"
7265 id="1013" 7265 group="1"
7266 group="1" 7266 wearable="shirt"
7267 wearable="shirt" 7267 edit_group="driven"
7268 edit_group="driven" 7268 name="Collar Back Height Cloth"
7269 name="Sleeve Length Cloth" 7269 value_min="0"
7270 value_min="0" 7270 value_max="1">
7271 value_max="0.85"> 7271 <param_alpha
7272 <param_alpha 7272 multiply_blend="true"
7273 multiply_blend="false" 7273 tga_file="shirt_collar_back_alpha.tga"
7274 tga_file="shirt_sleeve_alpha.tga" 7274 domain="0.05" />
7275 domain="0.01" /> 7275 </param>
7276 </param> 7276 </layer>
7277 7277
7278 <param 7278 <layer
7279 id="1014" 7279 name="upper_clothes bump"
7280 group="1" 7280 render_pass="bump">
7281 wearable="shirt" 7281 <texture
7282 edit_group="driven" 7282 tga_file="bump_shirt_wrinkles.tga" />
7283 name="Shirt Bottom Cloth" 7283
7284 value_min="0" 7284 <texture
7285 value_max="1"> 7285 local_texture="upper_shirt"
7286 <param_alpha 7286 local_texture_alpha_only="true" />
7287 multiply_blend="true" 7287
7288 tga_file="shirt_bottom_alpha.tga" 7288 <param
7289 domain="0.05" /> 7289 id="868"
7290 </param> 7290 group="0"
7291 7291 wearable="shirt"
7292 <param 7292 edit_group="shirt"
7293 id="1015" 7293 edit_group_order="8"
7294 group="1" 7294 name="Shirt Wrinkles"
7295 wearable="shirt" 7295 value_min="0"
7296 edit_group="driven" 7296 value_max="1"
7297 name="Collar Front Height Cloth" 7297 value_default="0">
7298 value_min="0" 7298 <param_color>
7299 value_max="1"> 7299 <value
7300 <param_alpha 7300 color="255, 255, 255, 0" />
7301 multiply_blend="true" 7301
7302 tga_file="shirt_collar_alpha.tga" 7302 <value
7303 domain="0.05" /> 7303 color="255, 255, 255, 255" />
7304 </param> 7304 </param_color>
7305 7305 </param>
7306 <param 7306
7307 id="1016" 7307 <param
7308 group="1" 7308 id="1013"
7309 wearable="shirt" 7309 group="1"
7310 edit_group="driven" 7310 wearable="shirt"
7311 name="Collar Back Height Cloth" 7311 edit_group="driven"
7312 value_min="0" 7312 name="Sleeve Length Cloth"
7313 value_max="1"> 7313 value_min="0"
7314 <param_alpha 7314 value_max="0.85">
7315 multiply_blend="true" 7315 <param_alpha
7316 tga_file="shirt_collar_back_alpha.tga" 7316 multiply_blend="false"
7317 domain="0.05" /> 7317 tga_file="shirt_sleeve_alpha.tga"
7318 </param> 7318 domain="0.01" />
7319 </layer> 7319 </param>
7320 7320
7321 <layer 7321 <param
7322 name="upper_clothes"> 7322 id="1014"
7323 <texture 7323 group="1"
7324 local_texture="upper_shirt" /> 7324 wearable="shirt"
7325 7325 edit_group="driven"
7326 <morph_mask 7326 name="Shirt Bottom Cloth"
7327 morph_name="Displace_Loose_Upperbody" /> 7327 value_min="0"
7328 7328 value_max="1">
7329 <morph_mask 7329 <param_alpha
7330 morph_name="Shirtsleeve_flair" /> 7330 multiply_blend="true"
7331 7331 tga_file="shirt_bottom_alpha.tga"
7332 <param 7332 domain="0.05" />
7333 id="803" 7333 </param>
7334 group="0" 7334
7335 wearable="shirt" 7335 <param
7336 edit_group="colorpicker" 7336 id="1015"
7337 name="shirt_red" 7337 group="1"
7338 value_min="0" 7338 wearable="shirt"
7339 value_max="1" 7339 edit_group="driven"
7340 value_default="1"> 7340 name="Collar Front Height Cloth"
7341 <param_color> 7341 value_min="0"
7342 <value 7342 value_max="1">
7343 color="0, 0, 0, 255" /> 7343 <param_alpha
7344 7344 multiply_blend="true"
7345 <value 7345 tga_file="shirt_collar_alpha.tga"
7346 color="255, 0, 0, 255" /> 7346 domain="0.05" />
7347 </param_color> 7347 </param>
7348 </param> 7348
7349 7349 <param
7350 <param 7350 id="1016"
7351 id="804" 7351 group="1"
7352 group="0" 7352 wearable="shirt"
7353 wearable="shirt" 7353 edit_group="driven"
7354 edit_group="colorpicker" 7354 name="Collar Back Height Cloth"
7355 name="shirt_green" 7355 value_min="0"
7356 value_min="0" 7356 value_max="1">
7357 value_max="1" 7357 <param_alpha
7358 value_default="1"> 7358 multiply_blend="true"
7359 <param_color> 7359 tga_file="shirt_collar_back_alpha.tga"
7360 <value 7360 domain="0.05" />
7361 color="0, 0, 0, 255" /> 7361 </param>
7362 7362 </layer>
7363 <value 7363
7364 color="0, 255, 0, 255" /> 7364 <layer
7365 </param_color> 7365 name="upper_clothes">
7366 </param> 7366 <texture
7367 7367 local_texture="upper_shirt" />
7368 <param 7368
7369 id="805" 7369 <morph_mask
7370 group="0" 7370 morph_name="Displace_Loose_Upperbody" />
7371 wearable="shirt" 7371
7372 edit_group="colorpicker" 7372 <morph_mask
7373 name="shirt_blue" 7373 morph_name="Shirtsleeve_flair" />
7374 value_min="0" 7374
7375 value_max="1" 7375 <param
7376 value_default="1"> 7376 id="803"
7377 <param_color> 7377 group="0"
7378 <value 7378 wearable="shirt"
7379 color="0, 0, 0, 255" /> 7379 edit_group="colorpicker"
7380 7380 name="shirt_red"
7381 <value 7381 value_min="0"
7382 color="0, 0, 255, 255" /> 7382 value_max="1"
7383 </param_color> 7383 value_default="1">
7384 </param> 7384 <param_color>
7385 7385 <value
7386 <param 7386 color="0, 0, 0, 255" />
7387 id="600" 7387
7388 group="1" 7388 <value
7389 wearable="shirt" 7389 color="255, 0, 0, 255" />
7390 edit_group="driven" 7390 </param_color>
7391 name="Sleeve Length Cloth" 7391 </param>
7392 value_min="0" 7392
7393 value_max="0.85" 7393 <param
7394 value_default=".7"> 7394 id="804"
7395 <param_alpha 7395 group="0"
7396 multiply_blend="false" 7396 wearable="shirt"
7397 tga_file="shirt_sleeve_alpha.tga" 7397 edit_group="colorpicker"
7398 domain="0.01" /> 7398 name="shirt_green"
7399 </param> 7399 value_min="0"
7400 7400 value_max="1"
7401 <param 7401 value_default="1">
7402 id="601" 7402 <param_color>
7403 group="1" 7403 <value
7404 wearable="shirt" 7404 color="0, 0, 0, 255" />
7405 edit_group="driven" 7405
7406 name="Shirt Bottom Cloth" 7406 <value
7407 value_min="0" 7407 color="0, 255, 0, 255" />
7408 value_max="1" 7408 </param_color>
7409 value_default=".8"> 7409 </param>
7410 <param_alpha 7410
7411 multiply_blend="true" 7411 <param
7412 tga_file="shirt_bottom_alpha.tga" 7412 id="805"
7413 domain="0.05" /> 7413 group="0"
7414 </param> 7414 wearable="shirt"
7415 7415 edit_group="colorpicker"
7416 <param 7416 name="shirt_blue"
7417 id="602" 7417 value_min="0"
7418 group="1" 7418 value_max="1"
7419 wearable="shirt" 7419 value_default="1">
7420 edit_group="driven" 7420 <param_color>
7421 name="Collar Front Height Cloth" 7421 <value
7422 value_min="0" 7422 color="0, 0, 0, 255" />
7423 value_max="1" 7423
7424 value_default=".8"> 7424 <value
7425 <param_alpha 7425 color="0, 0, 255, 255" />
7426 multiply_blend="true" 7426 </param_color>
7427 tga_file="shirt_collar_alpha.tga" 7427 </param>
7428 domain="0.05" /> 7428
7429 </param> 7429 <param
7430 7430 id="600"
7431 <param 7431 group="1"
7432 id="778" 7432 wearable="shirt"
7433 group="1" 7433 edit_group="driven"
7434 wearable="shirt" 7434 name="Sleeve Length Cloth"
7435 edit_group="driven" 7435 value_min="0"
7436 name="Collar Back Height Cloth" 7436 value_max="0.85"
7437 value_min="0" 7437 value_default=".7">
7438 value_max="1" 7438 <param_alpha
7439 value_default=".8"> 7439 multiply_blend="false"
7440 <param_alpha 7440 tga_file="shirt_sleeve_alpha.tga"
7441 multiply_blend="true" 7441 domain="0.01" />
7442 tga_file="shirt_collar_back_alpha.tga" 7442 </param>
7443 domain="0.05" /> 7443
7444 </param> 7444 <param
7445 </layer> 7445 id="601"
7446 7446 group="1"
7447 <layer 7447 wearable="shirt"
7448 name="upper_jacket base bump" 7448 edit_group="driven"
7449 render_pass="bump" 7449 name="Shirt Bottom Cloth"
7450 fixed_color="128,128,128,255"> 7450 value_min="0"
7451 <texture 7451 value_max="1"
7452 local_texture="upper_jacket" 7452 value_default=".8">
7453 local_texture_alpha_only="true" /> 7453 <param_alpha
7454 7454 multiply_blend="true"
7455 <param 7455 tga_file="shirt_bottom_alpha.tga"
7456 id="1039" 7456 domain="0.05" />
7457 group="1" 7457 </param>
7458 wearable="jacket" 7458
7459 edit_group="driven" 7459 <param
7460 edit_group_order="1" 7460 id="602"
7461 name="Jacket Sleeve Length bump" 7461 group="1"
7462 value_min="0" 7462 wearable="shirt"
7463 value_max="1"> 7463 edit_group="driven"
7464 <param_alpha 7464 name="Collar Front Height Cloth"
7465 multiply_blend="false" 7465 value_min="0"
7466 tga_file="shirt_sleeve_alpha.tga" 7466 value_max="1"
7467 domain="0.01" /> 7467 value_default=".8">
7468 </param> 7468 <param_alpha
7469 7469 multiply_blend="true"
7470 <param 7470 tga_file="shirt_collar_alpha.tga"
7471 id="1040" 7471 domain="0.05" />
7472 group="1" 7472 </param>
7473 wearable="jacket" 7473
7474 edit_group="driven" 7474 <param
7475 name="Jacket Collar Front bump" 7475 id="778"
7476 value_min="0" 7476 group="1"
7477 value_max="1"> 7477 wearable="shirt"
7478 <param_alpha 7478 edit_group="driven"
7479 multiply_blend="true" 7479 name="Collar Back Height Cloth"
7480 tga_file="shirt_collar_alpha.tga" 7480 value_min="0"
7481 domain="0.05" /> 7481 value_max="1"
7482 </param> 7482 value_default=".8">
7483 7483 <param_alpha
7484 <param 7484 multiply_blend="true"
7485 id="1041" 7485 tga_file="shirt_collar_back_alpha.tga"
7486 group="1" 7486 domain="0.05" />
7487 wearable="jacket" 7487 </param>
7488 edit_group="driven" 7488 </layer>
7489 edit_group_order="3.5" 7489
7490 name="Jacket Collar Back bump" 7490 <layer
7491 value_min="0" 7491 name="upper_jacket base bump"
7492 value_max="1"> 7492 render_pass="bump"
7493 <param_alpha 7493 fixed_color="128,128,128,255">
7494 multiply_blend="true" 7494 <texture
7495 tga_file="shirt_collar_back_alpha.tga" 7495 local_texture="upper_jacket"
7496 domain="0.05" /> 7496 local_texture_alpha_only="true" />
7497 </param> 7497
7498 7498 <param
7499 <param 7499 id="1039"
7500 id="1037" 7500 group="1"
7501 group="1" 7501 wearable="jacket"
7502 wearable="jacket" 7502 edit_group="driven"
7503 edit_group="driven" 7503 edit_group_order="1"
7504 name="jacket bottom length upper bump" 7504 name="Jacket Sleeve Length bump"
7505 value_min="0" 7505 value_min="0"
7506 value_max="1"> 7506 value_max="1">
7507 <param_alpha 7507 <param_alpha
7508 multiply_blend="true" 7508 multiply_blend="false"
7509 tga_file="jacket_length_upper_alpha.tga" 7509 tga_file="shirt_sleeve_alpha.tga"
7510 domain="0.01" /> 7510 domain="0.01" />
7511 </param> 7511 </param>
7512 7512
7513 <param 7513 <param
7514 id="1038" 7514 id="1040"
7515 group="1" 7515 group="1"
7516 wearable="jacket" 7516 wearable="jacket"
7517 edit_group="driven" 7517 edit_group="driven"
7518 name="jacket open upper bump" 7518 name="Jacket Collar Front bump"
7519 value_min="0" 7519 value_min="0"
7520 value_max="1"> 7520 value_max="1">
7521 <param_alpha 7521 <param_alpha
7522 multiply_blend="true" 7522 multiply_blend="true"
7523 tga_file="jacket_open_upper_alpha.tga" 7523 tga_file="shirt_collar_alpha.tga"
7524 domain="0.01" /> 7524 domain="0.05" />
7525 </param> 7525 </param>
7526 </layer> 7526
7527 7527 <param
7528 <layer 7528 id="1041"
7529 name="upper_jacket bump" 7529 group="1"
7530 render_pass="bump"> 7530 wearable="jacket"
7531 <texture 7531 edit_group="driven"
7532 tga_file="bump_shirt_wrinkles.tga" /> 7532 edit_group_order="3.5"
7533 7533 name="Jacket Collar Back bump"
7534 <texture 7534 value_min="0"
7535 local_texture="upper_jacket" 7535 value_max="1">
7536 local_texture_alpha_only="true" /> 7536 <param_alpha
7537 7537 multiply_blend="true"
7538 <param 7538 tga_file="shirt_collar_back_alpha.tga"
7539 id="875" 7539 domain="0.05" />
7540 group="1" 7540 </param>
7541 wearable="jacket" 7541
7542 name="jacket upper Wrinkles" 7542 <param
7543 value_min="0" 7543 id="1037"
7544 value_max="1" 7544 group="1"
7545 value_default="0"> 7545 wearable="jacket"
7546 <param_color> 7546 edit_group="driven"
7547 <value 7547 name="jacket bottom length upper bump"
7548 color="255, 255, 255, 0" /> 7548 value_min="0"
7549 7549 value_max="1">
7550 <value 7550 <param_alpha
7551 color="255, 255, 255, 255" /> 7551 multiply_blend="true"
7552 </param_color> 7552 tga_file="jacket_length_upper_alpha.tga"
7553 </param> 7553 domain="0.01" />
7554 7554 </param>
7555 <param 7555
7556 id="1019" 7556 <param
7557 group="1" 7557 id="1038"
7558 wearable="jacket" 7558 group="1"
7559 edit_group="driven" 7559 wearable="jacket"
7560 edit_group_order="1" 7560 edit_group="driven"
7561 name="Jacket Sleeve Length bump" 7561 name="jacket open upper bump"
7562 value_min="0" 7562 value_min="0"
7563 value_max="1"> 7563 value_max="1">
7564 <param_alpha 7564 <param_alpha
7565 multiply_blend="false" 7565 multiply_blend="true"
7566 tga_file="shirt_sleeve_alpha.tga" 7566 tga_file="jacket_open_upper_alpha.tga"
7567 domain="0.01" /> 7567 domain="0.01" />
7568 </param> 7568 </param>
7569 7569 </layer>
7570 <param 7570
7571 id="1021" 7571 <layer
7572 group="1" 7572 name="upper_jacket bump"
7573 wearable="jacket" 7573 render_pass="bump">
7574 edit_group="driven" 7574 <texture
7575 name="Jacket Collar Front bump" 7575 tga_file="bump_shirt_wrinkles.tga" />
7576 value_min="0" 7576
7577 value_max="1"> 7577 <texture
7578 <param_alpha 7578 local_texture="upper_jacket"
7579 multiply_blend="true" 7579 local_texture_alpha_only="true" />
7580 tga_file="shirt_collar_alpha.tga" 7580
7581 domain="0.05" /> 7581 <param
7582 </param> 7582 id="875"
7583 7583 group="1"
7584 <param 7584 wearable="jacket"
7585 id="1023" 7585 name="jacket upper Wrinkles"
7586 group="1" 7586 value_min="0"
7587 wearable="jacket" 7587 value_max="1"
7588 edit_group="driven" 7588 value_default="0">
7589 edit_group_order="3.5" 7589 <param_color>
7590 name="Jacket Collar Back bump" 7590 <value
7591 value_min="0" 7591 color="255, 255, 255, 0" />
7592 value_max="1"> 7592
7593 <param_alpha 7593 <value
7594 multiply_blend="true" 7594 color="255, 255, 255, 255" />
7595 tga_file="shirt_collar_back_alpha.tga" 7595 </param_color>
7596 domain="0.05" /> 7596 </param>
7597 </param> 7597
7598 7598 <param
7599 <param 7599 id="1019"
7600 id="1025" 7600 group="1"
7601 group="1" 7601 wearable="jacket"
7602 wearable="jacket" 7602 edit_group="driven"
7603 edit_group="driven" 7603 edit_group_order="1"
7604 name="jacket bottom length upper bump" 7604 name="Jacket Sleeve Length bump"
7605 value_min="0" 7605 value_min="0"
7606 value_max="1"> 7606 value_max="1">
7607 <param_alpha 7607 <param_alpha
7608 multiply_blend="true" 7608 multiply_blend="false"
7609 tga_file="jacket_length_upper_alpha.tga" 7609 tga_file="shirt_sleeve_alpha.tga"
7610 domain="0.01" /> 7610 domain="0.01" />
7611 </param> 7611 </param>
7612 7612
7613 <param 7613 <param
7614 id="1026" 7614 id="1021"
7615 group="1" 7615 group="1"
7616 wearable="jacket" 7616 wearable="jacket"
7617 edit_group="driven" 7617 edit_group="driven"
7618 name="jacket open upper bump" 7618 name="Jacket Collar Front bump"
7619 value_min="0" 7619 value_min="0"
7620 value_max="1"> 7620 value_max="1">
7621 <param_alpha 7621 <param_alpha
7622 multiply_blend="true" 7622 multiply_blend="true"
7623 tga_file="jacket_open_upper_alpha.tga" 7623 tga_file="shirt_collar_alpha.tga"
7624 domain="0.01" /> 7624 domain="0.05" />
7625 </param> 7625 </param>
7626 </layer> 7626
7627 7627 <param
7628 <layer 7628 id="1023"
7629 name="upper_jacket"> 7629 group="1"
7630 <texture 7630 wearable="jacket"
7631 local_texture="upper_jacket" /> 7631 edit_group="driven"
7632 7632 edit_group_order="3.5"
7633 <param 7633 name="Jacket Collar Back bump"
7634 id="831" 7634 value_min="0"
7635 group="1" 7635 value_max="1">
7636 edit_group="colorpicker_driven" 7636 <param_alpha
7637 wearable="jacket" 7637 multiply_blend="true"
7638 name="upper_jacket_red" 7638 tga_file="shirt_collar_back_alpha.tga"
7639 value_min="0" 7639 domain="0.05" />
7640 value_max="1" 7640 </param>
7641 value_default="1"> 7641
7642 <param_color> 7642 <param
7643 <value 7643 id="1025"
7644 color="0, 0, 0, 255" /> 7644 group="1"
7645 7645 wearable="jacket"
7646 <value 7646 edit_group="driven"
7647 color="255, 0, 0, 255" /> 7647 name="jacket bottom length upper bump"
7648 </param_color> 7648 value_min="0"
7649 </param> 7649 value_max="1">
7650 7650 <param_alpha
7651 <param 7651 multiply_blend="true"
7652 id="832" 7652 tga_file="jacket_length_upper_alpha.tga"
7653 group="1" 7653 domain="0.01" />
7654 edit_group="colorpicker_driven" 7654 </param>
7655 wearable="jacket" 7655
7656 name="upper_jacket_green" 7656 <param
7657 value_min="0" 7657 id="1026"
7658 value_max="1" 7658 group="1"
7659 value_default="1"> 7659 wearable="jacket"
7660 <param_color> 7660 edit_group="driven"
7661 <value 7661 name="jacket open upper bump"
7662 color="0, 0, 0, 255" /> 7662 value_min="0"
7663 7663 value_max="1">
7664 <value 7664 <param_alpha
7665 color="0, 255, 0, 255" /> 7665 multiply_blend="true"
7666 </param_color> 7666 tga_file="jacket_open_upper_alpha.tga"
7667 </param> 7667 domain="0.01" />
7668 7668 </param>
7669 <param 7669 </layer>
7670 id="833" 7670
7671 group="1" 7671 <layer
7672 edit_group="colorpicker_driven" 7672 name="upper_jacket">
7673 wearable="jacket" 7673 <texture
7674 name="upper_jacket_blue" 7674 local_texture="upper_jacket" />
7675 value_min="0" 7675
7676 value_max="1" 7676 <param
7677 value_default="1"> 7677 id="831"
7678 <param_color> 7678 group="1"
7679 <value 7679 edit_group="colorpicker_driven"
7680 color="0, 0, 0, 255" /> 7680 wearable="jacket"
7681 7681 name="upper_jacket_red"
7682 <value 7682 value_min="0"
7683 color="0, 0, 255, 255" /> 7683 value_max="1"
7684 </param_color> 7684 value_default="1">
7685 </param> 7685 <param_color>
7686 7686 <value
7687 <param 7687 color="0, 0, 0, 255" />
7688 id="1020" 7688
7689 group="1" 7689 <value
7690 edit_group="driven" 7690 color="255, 0, 0, 255" />
7691 name="jacket Sleeve Length" 7691 </param_color>
7692 value_min="0" 7692 </param>
7693 value_max="1"> 7693
7694 <param_alpha 7694 <param
7695 multiply_blend="false" 7695 id="832"
7696 tga_file="shirt_sleeve_alpha.tga" 7696 group="1"
7697 domain="0.01" /> 7697 edit_group="colorpicker_driven"
7698 </param> 7698 wearable="jacket"
7699 7699 name="upper_jacket_green"
7700 <param 7700 value_min="0"
7701 id="1022" 7701 value_max="1"
7702 group="1" 7702 value_default="1">
7703 edit_group="driven" 7703 <param_color>
7704 name="jacket Collar Front" 7704 <value
7705 value_min="0" 7705 color="0, 0, 0, 255" />
7706 value_max="1"> 7706
7707 <param_alpha 7707 <value
7708 multiply_blend="true" 7708 color="0, 255, 0, 255" />
7709 tga_file="shirt_collar_alpha.tga" 7709 </param_color>
7710 domain="0.05" /> 7710 </param>
7711 </param> 7711
7712 7712 <param
7713 <param 7713 id="833"
7714 id="1024" 7714 group="1"
7715 group="1" 7715 edit_group="colorpicker_driven"
7716 edit_group="driven" 7716 wearable="jacket"
7717 edit_group_order="3.5" 7717 name="upper_jacket_blue"
7718 name="jacket Collar Back" 7718 value_min="0"
7719 value_min="0" 7719 value_max="1"
7720 value_max="1"> 7720 value_default="1">
7721 <param_alpha 7721 <param_color>
7722 multiply_blend="true" 7722 <value
7723 tga_file="shirt_collar_back_alpha.tga" 7723 color="0, 0, 0, 255" />
7724 domain="0.05" /> 7724
7725 </param> 7725 <value
7726 7726 color="0, 0, 255, 255" />
7727 <param 7727 </param_color>
7728 id="620" 7728 </param>
7729 group="1" 7729
7730 wearable="jacket" 7730 <param
7731 edit_group="jacket" 7731 id="1020"
7732 name="bottom length upper" 7732 group="1"
7733 label_min="hi cut" 7733 edit_group="driven"
7734 label_max="low cut" 7734 name="jacket Sleeve Length"
7735 value_min="0" 7735 value_min="0"
7736 value_max="1" 7736 value_max="1">
7737 value_default=".8" 7737 <param_alpha
7738 camera_distance="1.2" 7738 multiply_blend="false"
7739 camera_angle="30" 7739 tga_file="shirt_sleeve_alpha.tga"
7740 camera_elevation=".2"> 7740 domain="0.01" />
7741 <param_alpha 7741 </param>
7742 multiply_blend="true" 7742
7743 tga_file="jacket_length_upper_alpha.tga" 7743 <param
7744 domain="0.01" /> 7744 id="1022"
7745 </param> 7745 group="1"
7746 7746 edit_group="driven"
7747 <param 7747 name="jacket Collar Front"
7748 id="622" 7748 value_min="0"
7749 group="1" 7749 value_max="1">
7750 wearable="jacket" 7750 <param_alpha
7751 edit_group="jacket" 7751 multiply_blend="true"
7752 name="open upper" 7752 tga_file="shirt_collar_alpha.tga"
7753 label_min="closed" 7753 domain="0.05" />
7754 label_max="open" 7754 </param>
7755 value_min="0" 7755
7756 value_max="1" 7756 <param
7757 value_default=".8" 7757 id="1024"
7758 camera_distance="1.2" 7758 group="1"
7759 camera_angle="30" 7759 edit_group="driven"
7760 camera_elevation=".2"> 7760 edit_group_order="3.5"
7761 <param_alpha 7761 name="jacket Collar Back"
7762 multiply_blend="true" 7762 value_min="0"
7763 tga_file="jacket_open_upper_alpha.tga" 7763 value_max="1">
7764 domain="0.01" /> 7764 <param_alpha
7765 </param> 7765 multiply_blend="true"
7766 </layer> 7766 tga_file="shirt_collar_back_alpha.tga"
7767 7767 domain="0.05" />
7768 <layer 7768 </param>
7769 name="upper alpha" 7769
7770 visibility_mask="TRUE"> 7770 <param
7771 <texture 7771 id="620"
7772 local_texture="upper_alpha" /> 7772 group="1"
7773 </layer> 7773 wearable="jacket"
7774 7774 edit_group="jacket"
7775 </layer_set> 7775 name="bottom length upper"
7776 7776 label_min="hi cut"
7777<!-- =========================================================== --> 7777 label_max="low cut"
7778 <layer_set 7778 value_min="0"
7779 body_region="lower_body" 7779 value_max="1"
7780 width="512" 7780 value_default=".8"
7781 height="512"> 7781 camera_distance="1.2"
7782 <layer 7782 camera_angle="30"
7783 name="lower body bump base" 7783 camera_elevation=".2">
7784 fixed_color = "128,128,128,255" 7784 <param_alpha
7785 render_pass="bump"> 7785 multiply_blend="true"
7786 </layer> 7786 tga_file="jacket_length_upper_alpha.tga"
7787 <layer 7787 domain="0.01" />
7788 name="base_lowerbody bump" 7788 </param>
7789 render_pass="bump"> 7789
7790 <texture 7790 <param
7791 tga_file="bump_lowerbody_base.tga" 7791 id="622"
7792 file_is_mask="FALSE" /> 7792 group="1"
7793 7793 wearable="jacket"
7794 <param 7794 edit_group="jacket"
7795 id="878" 7795 name="open upper"
7796 group="1" 7796 label_min="closed"
7797 wearable="skin" 7797 label_max="open"
7798 edit_group="driven" 7798 value_min="0"
7799 edit_group_order="20" 7799 value_max="1"
7800 name="Bump upperdef" 7800 value_default=".8"
7801 value_min="0" 7801 camera_distance="1.2"
7802 value_max="1"> 7802 camera_angle="30"
7803 <param_alpha 7803 camera_elevation=".2">
7804 domain="0" /> 7804 <param_alpha
7805 </param> 7805 multiply_blend="true"
7806 </layer> 7806 tga_file="jacket_open_upper_alpha.tga"
7807 7807 domain="0.01" />
7808 <layer 7808 </param>
7809 name="base" 7809 </layer>
7810 global_color="skin_color"> 7810
7811 <texture 7811 <layer
7812 tga_file="body_skingrain.tga" /> 7812 name="upper alpha"
7813 </layer> 7813 visibility_mask="TRUE">
7814 7814 <texture
7815 <layer 7815 local_texture="upper_alpha" />
7816 name="shadow"> 7816 </layer>
7817 <texture 7817
7818 tga_file="lowerbody_shading_alpha.tga" 7818 </layer_set>
7819 file_is_mask="TRUE" /> 7819
7820 7820<!-- =========================================================== -->
7821 <param 7821 <layer_set
7822 id="160" 7822 body_region="lower_body"
7823 group="1" 7823 width="512"
7824 name="Shading" 7824 height="512">
7825 wearable="pants" 7825 <layer
7826 value_min="0" 7826 name="lower body bump base"
7827 value_max="1"> 7827 fixed_color = "128,128,128,255"
7828 <param_color> 7828 render_pass="bump">
7829 <value 7829 </layer>
7830 color="0, 0, 0, 0" /> 7830 <layer
7831 7831 name="base_lowerbody bump"
7832 <value 7832 render_pass="bump">
7833 color="0, 0, 0, 128" /> 7833 <texture
7834 </param_color> 7834 tga_file="bump_lowerbody_base.tga"
7835 </param> 7835 file_is_mask="FALSE" />
7836 </layer> 7836
7837 7837 <param
7838 <layer 7838 id="878"
7839 name="highlight"> 7839 group="1"
7840 <texture 7840 wearable="skin"
7841 tga_file="lowerbody_highlights_alpha.tga" 7841 edit_group="driven"
7842 file_is_mask="TRUE" /> 7842 edit_group_order="20"
7843 7843 name="Bump upperdef"
7844 <param 7844 value_min="0"
7845 id="161" 7845 value_max="1">
7846 group="1" 7846 <param_alpha
7847 name="Shading" 7847 domain="0" />
7848 wearable="skin" 7848 </param>
7849 value_min="0" 7849 </layer>
7850 value_max="1"> 7850
7851 <param_color> 7851 <layer
7852 <value 7852 name="base"
7853 color="255, 255, 255, 0" /> 7853 global_color="skin_color">
7854 7854 <texture
7855 <value 7855 tga_file="body_skingrain.tga" />
7856 color="255, 255, 255, 64" /> 7856 </layer>
7857 </param_color> 7857
7858 </param> 7858 <layer
7859 </layer> 7859 name="shadow">
7860 7860 <texture
7861 <layer 7861 tga_file="lowerbody_shading_alpha.tga"
7862 name="toenails"> 7862 file_is_mask="TRUE" />
7863 <texture 7863
7864 tga_file="lowerbody_color.tga" /> 7864 <param
7865 </layer> 7865 id="160"
7866 7866 group="1"
7867 <layer 7867 name="Shading"
7868 name="lower_bodypaint"> 7868 wearable="pants"
7869 <texture 7869 value_min="0"
7870 local_texture="lower_bodypaint" /> 7870 value_max="1">
7871 </layer> 7871 <param_color>
7872 7872 <value
7873 <layer 7873 color="0, 0, 0, 0" />
7874 name="freckles lower" 7874
7875 fixed_color="120,47,20,128"> 7875 <value
7876 <param 7876 color="0, 0, 0, 128" />
7877 id="777" 7877 </param_color>
7878 group="1" 7878 </param>
7879 name="freckles lower" 7879 </layer>
7880 wearable="skin" 7880
7881 value_min="0" 7881 <layer
7882 value_max="1"> 7882 name="highlight">
7883 <param_alpha 7883 <texture
7884 tga_file="bodyfreckles_alpha.tga" 7884 tga_file="lowerbody_highlights_alpha.tga"
7885 skip_if_zero="true" 7885 file_is_mask="TRUE" />
7886 domain="0.6" /> 7886
7887 </param> 7887 <param
7888 </layer> 7888 id="161"
7889 7889 group="1"
7890 <layer 7890 name="Shading"
7891 name="lower_tattoo"> 7891 wearable="skin"
7892 <texture 7892 value_min="0"
7893 local_texture="lower_tattoo" /> 7893 value_max="1">
7894 </layer> 7894 <param_color>
7895 7895 <value
7896 <layer 7896 color="255, 255, 255, 0" />
7897 name="lower_underpants bump" 7897
7898 render_pass="bump" 7898 <value
7899 fixed_color="128,128,128,255"> 7899 color="255, 255, 255, 64" />
7900 <texture 7900 </param_color>
7901 local_texture="lower_underpants" 7901 </param>
7902 local_texture_alpha_only="true" /> 7902 </layer>
7903 7903
7904 <param 7904 <layer
7905 id="1055" 7905 name="toenails">
7906 group="1" 7906 <texture
7907 wearable="underpants" 7907 tga_file="lowerbody_color.tga" />
7908 edit_group="underpants" 7908 </layer>
7909 name="Pants Length" 7909
7910 value_min="0" 7910 <layer
7911 value_max="1" 7911 name="lower_bodypaint">
7912 value_default=".3"> 7912 <texture
7913 <param_alpha 7913 local_texture="lower_bodypaint" />
7914 tga_file="pants_length_alpha.tga" 7914 </layer>
7915 domain="0.01" /> 7915
7916 </param> 7916 <layer
7917 7917 name="freckles lower"
7918 <param 7918 fixed_color="120,47,20,128">
7919 id="1057" 7919 <param
7920 group="1" 7920 id="777"
7921 wearable="underpants" 7921 group="1"
7922 edit_group="underpants" 7922 name="freckles lower"
7923 name="Pants Waist" 7923 wearable="skin"
7924 value_min="0" 7924 value_min="0"
7925 value_max="1" 7925 value_max="1">
7926 value_default=".8"> 7926 <param_alpha
7927 <param_alpha 7927 tga_file="bodyfreckles_alpha.tga"
7928 tga_file="pants_waist_alpha.tga" 7928 skip_if_zero="true"
7929 domain="0.05" /> 7929 domain="0.6" />
7930 </param> 7930 </param>
7931 </layer> 7931 </layer>
7932 7932
7933 <layer 7933 <layer
7934 name="lower_underpants"> 7934 name="lower_tattoo">
7935 <texture 7935 <texture local_texture="lower_tattoo" />
7936 local_texture="lower_underpants" /> 7936 <param id="1068" group="1" edit_group="colorpicker_driven" wearable="tattoo"
7937 7937 name="tattoo_lower_red" value_min="0" value_max="1" value_default="1">
7938 <param 7938 <param_color>
7939 id="824" 7939 <value color="0, 0, 0, 255" />
7940 group="0" 7940 <value color="255, 0, 0, 255" />
7941 wearable="underpants" 7941 </param_color>
7942 edit_group="colorpicker" 7942 </param>
7943 name="underpants_red" 7943
7944 value_min="0" 7944 <param id="1069" group="1" edit_group="colorpicker_driven" wearable="tattoo"
7945 value_max="1" 7945 name="tattoo_lower_green" value_min="0" value_max="1" value_default="1">
7946 value_default="1"> 7946 <param_color>
7947 <param_color> 7947 <value color="0, 0, 0, 255" />
7948 <value 7948 <value color="0, 255, 0, 255" />
7949 color="0, 0, 0, 255" /> 7949 </param_color>
7950 7950 </param>
7951 <value 7951
7952 color="255, 0, 0, 255" /> 7952 <param id="1070" group="1" edit_group="colorpicker_driven" wearable="tattoo"
7953 </param_color> 7953 name="tattoo_lower_blue" value_min="0" value_max="1" value_default="1">
7954 </param> 7954 <param_color>
7955 7955 <value color="0, 0, 0, 255" />
7956 <param 7956 <value color="0, 0, 255, 255" />
7957 id="825" 7957 </param_color>
7958 group="0" 7958 </param>
7959 wearable="underpants" 7959 </layer>
7960 edit_group="colorpicker" 7960
7961 name="underpants_green" 7961 <layer
7962 value_min="0" 7962 name="lower_underpants bump"
7963 value_max="1" 7963 render_pass="bump"
7964 value_default="1"> 7964 fixed_color="128,128,128,255">
7965 <param_color> 7965 <texture
7966 <value 7966 local_texture="lower_underpants"
7967 color="0, 0, 0, 255" /> 7967 local_texture_alpha_only="true" />
7968 7968
7969 <value 7969 <param
7970 color="0, 255, 0, 255" /> 7970 id="1055"
7971 </param_color> 7971 group="1"
7972 </param> 7972 wearable="underpants"
7973 7973 edit_group="underpants"
7974 <param 7974 name="Pants Length"
7975 id="826" 7975 value_min="0"
7976 group="0" 7976 value_max="1"
7977 wearable="underpants" 7977 value_default=".3">
7978 edit_group="colorpicker" 7978 <param_alpha
7979 name="underpants_blue" 7979 tga_file="pants_length_alpha.tga"
7980 value_min="0" 7980 domain="0.01" />
7981 value_max="1" 7981 </param>
7982 value_default="1"> 7982
7983 <param_color> 7983 <param
7984 <value 7984 id="1057"
7985 color="0, 0, 0, 255" /> 7985 group="1"
7986 7986 wearable="underpants"
7987 <value 7987 edit_group="underpants"
7988 color="0, 0, 255, 255" /> 7988 name="Pants Waist"
7989 </param_color> 7989 value_min="0"
7990 </param> 7990 value_max="1"
7991 7991 value_default=".8">
7992 <param 7992 <param_alpha
7993 id="1054" 7993 tga_file="pants_waist_alpha.tga"
7994 group="1" 7994 domain="0.05" />
7995 wearable="underpants" 7995 </param>
7996 edit_group="driven" 7996 </layer>
7997 name="Pants Length" 7997
7998 value_min="0" 7998 <layer
7999 value_max="1" 7999 name="lower_underpants">
8000 value_default=".3" 8000 <texture
8001 camera_distance="1.2" 8001 local_texture="lower_underpants" />
8002 camera_angle="30" 8002
8003 camera_elevation="-.3"> 8003 <param
8004 <param_alpha 8004 id="824"
8005 tga_file="pants_length_alpha.tga" 8005 group="0"
8006 domain="0.01" /> 8006 wearable="underpants"
8007 </param> 8007 edit_group="colorpicker"
8008 8008 name="underpants_red"
8009 <param 8009 value_min="0"
8010 id="1056" 8010 value_max="1"
8011 group="1" 8011 value_default="1">
8012 wearable="underpants" 8012 <param_color>
8013 edit_group="driven" 8013 <value
8014 name="Pants Waist" 8014 color="0, 0, 0, 255" />
8015 value_min="0" 8015
8016 value_max="1" 8016 <value
8017 value_default=".8"> 8017 color="255, 0, 0, 255" />
8018 <param_alpha 8018 </param_color>
8019 tga_file="pants_waist_alpha.tga" 8019 </param>
8020 domain="0.05" /> 8020
8021 </param> 8021 <param
8022 </layer> 8022 id="825"
8023 8023 group="0"
8024 <layer 8024 wearable="underpants"
8025 name="lower_socks bump" 8025 edit_group="colorpicker"
8026 render_pass="bump" 8026 name="underpants_green"
8027 fixed_color="128,128,128,255"> 8027 value_min="0"
8028 <texture 8028 value_max="1"
8029 local_texture="lower_socks" 8029 value_default="1">
8030 local_texture_alpha_only="true" /> 8030 <param_color>
8031 8031 <value
8032 <param 8032 color="0, 0, 0, 255" />
8033 id="1051" 8033
8034 group="1" 8034 <value
8035 wearable="socks" 8035 color="0, 255, 0, 255" />
8036 edit_group="driven" 8036 </param_color>
8037 name="Socks Length bump" 8037 </param>
8038 value_min="0" 8038
8039 value_max="1" 8039 <param
8040 value_default="0.35"> 8040 id="826"
8041 <param_alpha 8041 group="0"
8042 tga_file="shoe_height_alpha.tga" 8042 wearable="underpants"
8043 domain="0.01" /> 8043 edit_group="colorpicker"
8044 </param> 8044 name="underpants_blue"
8045 </layer> 8045 value_min="0"
8046 8046 value_max="1"
8047 <layer 8047 value_default="1">
8048 name="lower_socks"> 8048 <param_color>
8049 <texture 8049 <value
8050 local_texture="lower_socks" /> 8050 color="0, 0, 0, 255" />
8051 8051
8052 <param 8052 <value
8053 id="818" 8053 color="0, 0, 255, 255" />
8054 group="0" 8054 </param_color>
8055 wearable="socks" 8055 </param>
8056 edit_group="colorpicker" 8056
8057 name="socks_red" 8057 <param
8058 value_min="0" 8058 id="1054"
8059 value_max="1" 8059 group="1"
8060 value_default="1"> 8060 wearable="underpants"
8061 <param_color> 8061 edit_group="driven"
8062 <value 8062 name="Pants Length"
8063 color="0, 0, 0, 255" /> 8063 value_min="0"
8064 8064 value_max="1"
8065 <value 8065 value_default=".3"
8066 color="255, 0, 0, 255" /> 8066 camera_distance="1.2"
8067 </param_color> 8067 camera_angle="30"
8068 </param> 8068 camera_elevation="-.3">
8069 8069 <param_alpha
8070 <param 8070 tga_file="pants_length_alpha.tga"
8071 id="819" 8071 domain="0.01" />
8072 group="0" 8072 </param>
8073 wearable="socks" 8073
8074 edit_group="colorpicker" 8074 <param
8075 name="socks_green" 8075 id="1056"
8076 value_min="0" 8076 group="1"
8077 value_max="1" 8077 wearable="underpants"
8078 value_default="1"> 8078 edit_group="driven"
8079 <param_color> 8079 name="Pants Waist"
8080 <value 8080 value_min="0"
8081 color="0, 0, 0, 255" /> 8081 value_max="1"
8082 8082 value_default=".8">
8083 <value 8083 <param_alpha
8084 color="0, 255, 0, 255" /> 8084 tga_file="pants_waist_alpha.tga"
8085 </param_color> 8085 domain="0.05" />
8086 </param> 8086 </param>
8087 8087 </layer>
8088 <param 8088
8089 id="820" 8089 <layer
8090 group="0" 8090 name="lower_socks bump"
8091 wearable="socks" 8091 render_pass="bump"
8092 edit_group="colorpicker" 8092 fixed_color="128,128,128,255">
8093 name="socks_blue" 8093 <texture
8094 value_min="0" 8094 local_texture="lower_socks"
8095 value_max="1" 8095 local_texture_alpha_only="true" />
8096 value_default="1"> 8096
8097 <param_color> 8097 <param
8098 <value 8098 id="1051"
8099 color="0, 0, 0, 255" /> 8099 group="1"
8100 8100 wearable="socks"
8101 <value 8101 edit_group="driven"
8102 color="0, 0, 255, 255" /> 8102 name="Socks Length bump"
8103 </param_color> 8103 value_min="0"
8104 </param> 8104 value_max="1"
8105 8105 value_default="0.35">
8106 <param 8106 <param_alpha
8107 id="1050" 8107 tga_file="shoe_height_alpha.tga"
8108 group="1" 8108 domain="0.01" />
8109 wearable="socks" 8109 </param>
8110 edit_group="driven" 8110 </layer>
8111 name="Socks Length bump" 8111
8112 value_min="0" 8112 <layer
8113 value_max="1" 8113 name="lower_socks">
8114 value_default="0.35"> 8114 <texture
8115 <param_alpha 8115 local_texture="lower_socks" />
8116 tga_file="shoe_height_alpha.tga" 8116
8117 domain="0.01" /> 8117 <param
8118 </param> 8118 id="818"
8119 </layer> 8119 group="0"
8120 8120 wearable="socks"
8121 <layer 8121 edit_group="colorpicker"
8122 name="lower_shoes bump" 8122 name="socks_red"
8123 render_pass="bump" 8123 value_min="0"
8124 fixed_color="128,128,128,255"> 8124 value_max="1"
8125 <texture 8125 value_default="1">
8126 local_texture="lower_shoes" 8126 <param_color>
8127 local_texture_alpha_only="true" /> 8127 <value
8128 8128 color="0, 0, 0, 255" />
8129 <param 8129
8130 id="1053" 8130 <value
8131 group="1" 8131 color="255, 0, 0, 255" />
8132 wearable="shoes" 8132 </param_color>
8133 edit_group="driven" 8133 </param>
8134 name="Shoe Height bump" 8134
8135 value_min="0" 8135 <param
8136 value_max="1" 8136 id="819"
8137 value_default="0.1"> 8137 group="0"
8138 <param_alpha 8138 wearable="socks"
8139 tga_file="shoe_height_alpha.tga" 8139 edit_group="colorpicker"
8140 domain="0.01" /> 8140 name="socks_green"
8141 </param> 8141 value_min="0"
8142 </layer> 8142 value_max="1"
8143 8143 value_default="1">
8144 <layer 8144 <param_color>
8145 name="lower_shoes"> 8145 <value
8146 <texture 8146 color="0, 0, 0, 255" />
8147 local_texture="lower_shoes" /> 8147
8148 8148 <value
8149 <param 8149 color="0, 255, 0, 255" />
8150 id="812" 8150 </param_color>
8151 group="0" 8151 </param>
8152 wearable="shoes" 8152
8153 edit_group="colorpicker" 8153 <param
8154 name="shoes_red" 8154 id="820"
8155 value_min="0" 8155 group="0"
8156 value_max="1" 8156 wearable="socks"
8157 value_default="1"> 8157 edit_group="colorpicker"
8158 <param_color> 8158 name="socks_blue"
8159 <value 8159 value_min="0"
8160 color="0, 0, 0, 255" /> 8160 value_max="1"
8161 8161 value_default="1">
8162 <value 8162 <param_color>
8163 color="255, 0, 0, 255" /> 8163 <value
8164 </param_color> 8164 color="0, 0, 0, 255" />
8165 </param> 8165
8166 8166 <value
8167 <param 8167 color="0, 0, 255, 255" />
8168 id="813" 8168 </param_color>
8169 group="0" 8169 </param>
8170 wearable="shoes" 8170
8171 edit_group="colorpicker" 8171 <param
8172 name="shoes_green" 8172 id="1050"
8173 value_min="0" 8173 group="1"
8174 value_max="1" 8174 wearable="socks"
8175 value_default="1"> 8175 edit_group="driven"
8176 <param_color> 8176 name="Socks Length bump"
8177 <value 8177 value_min="0"
8178 color="0, 0, 0, 255" /> 8178 value_max="1"
8179 8179 value_default="0.35">
8180 <value 8180 <param_alpha
8181 color="0, 255, 0, 255" /> 8181 tga_file="shoe_height_alpha.tga"
8182 </param_color> 8182 domain="0.01" />
8183 </param> 8183 </param>
8184 8184 </layer>
8185 <param 8185
8186 id="817" 8186 <layer
8187 group="0" 8187 name="lower_shoes bump"
8188 wearable="shoes" 8188 render_pass="bump"
8189 edit_group="colorpicker" 8189 fixed_color="128,128,128,255">
8190 name="shoes_blue" 8190 <texture
8191 value_min="0" 8191 local_texture="lower_shoes"
8192 value_max="1" 8192 local_texture_alpha_only="true" />
8193 value_default="1"> 8193
8194 <param_color> 8194 <param
8195 <value 8195 id="1053"
8196 color="0, 0, 0, 255" /> 8196 group="1"
8197 8197 wearable="shoes"
8198 <value 8198 edit_group="driven"
8199 color="0, 0, 255, 255" /> 8199 name="Shoe Height bump"
8200 </param_color> 8200 value_min="0"
8201 </param> 8201 value_max="1"
8202 8202 value_default="0.1">
8203 <param 8203 <param_alpha
8204 id="1052" 8204 tga_file="shoe_height_alpha.tga"
8205 group="1" 8205 domain="0.01" />
8206 wearable="shoes" 8206 </param>
8207 edit_group="driven" 8207 </layer>
8208 name="Shoe Height" 8208
8209 value_min="0" 8209 <layer
8210 value_max="1" 8210 name="lower_shoes">
8211 value_default="0.1"> 8211 <texture
8212 <param_alpha 8212 local_texture="lower_shoes" />
8213 tga_file="shoe_height_alpha.tga" 8213
8214 domain="0.01" /> 8214 <param
8215 </param> 8215 id="812"
8216 </layer> 8216 group="0"
8217 8217 wearable="shoes"
8218 <layer 8218 edit_group="colorpicker"
8219 name="lower_clothes_shadow"> 8219 name="shoes_red"
8220 <texture 8220 value_min="0"
8221 local_texture="lower_pants" /> 8221 value_max="1"
8222 8222 value_default="1">
8223 <param 8223 <param_color>
8224 id="913" 8224 <value
8225 group="1" 8225 color="0, 0, 0, 255" />
8226 edit_group="driven" 8226
8227 wearable="pants" 8227 <value
8228 name="Lower Clothes Shading" 8228 color="255, 0, 0, 255" />
8229 value_min="0" 8229 </param_color>
8230 value_max="1" 8230 </param>
8231 value_default="0"> 8231
8232 <param_color> 8232 <param
8233 <value 8233 id="813"
8234 color="0, 0, 0, 0" /> 8234 group="0"
8235 8235 wearable="shoes"
8236 <value 8236 edit_group="colorpicker"
8237 color="0, 0, 0, 80" /> 8237 name="shoes_green"
8238 </param_color> 8238 value_min="0"
8239 </param> 8239 value_max="1"
8240 8240 value_default="1">
8241 <param 8241 <param_color>
8242 id="914" 8242 <value
8243 group="1" 8243 color="0, 0, 0, 255" />
8244 edit_group="driven" 8244
8245 wearable="pants" 8245 <value
8246 name="Waist Height Shadow" 8246 color="0, 255, 0, 255" />
8247 value_min="0.02" 8247 </param_color>
8248 value_max="1"> 8248 </param>
8249 <param_alpha 8249
8250 tga_file="pants_waist_alpha.tga" 8250 <param
8251 skip_if_zero="true" 8251 id="817"
8252 domain="0.04" /> 8252 group="0"
8253 </param> 8253 wearable="shoes"
8254 8254 edit_group="colorpicker"
8255 <param 8255 name="shoes_blue"
8256 id="915" 8256 value_min="0"
8257 group="1" 8257 value_max="1"
8258 edit_group="driven" 8258 value_default="1">
8259 wearable="pants" 8259 <param_color>
8260 name="Pants Length Shadow" 8260 <value
8261 value_min="0.02" 8261 color="0, 0, 0, 255" />
8262 value_max="1"> 8262
8263 <param_alpha 8263 <value
8264 tga_file="pants_length_alpha.tga" 8264 color="0, 0, 255, 255" />
8265 skip_if_zero="true" 8265 </param_color>
8266 domain="0.03" /> 8266 </param>
8267 </param> 8267
8268 </layer> 8268 <param
8269 8269 id="1052"
8270 <layer 8270 group="1"
8271 name="lower_pants base bump" 8271 wearable="shoes"
8272 render_pass="bump" 8272 edit_group="driven"
8273 fixed_color="128,128,128,255"> 8273 name="Shoe Height"
8274 <texture 8274 value_min="0"
8275 local_texture="lower_pants" 8275 value_max="1"
8276 local_texture_alpha_only="true" /> 8276 value_default="0.1">
8277 8277 <param_alpha
8278 <param 8278 tga_file="shoe_height_alpha.tga"
8279 id="1035" 8279 domain="0.01" />
8280 group="1" 8280 </param>
8281 edit_group="driven" 8281 </layer>
8282 wearable="pants" 8282
8283 name="Waist Height Cloth" 8283 <layer
8284 value_min="0" 8284 name="lower_clothes_shadow">
8285 value_max="1"> 8285 <texture
8286 <param_alpha 8286 local_texture="lower_pants" />
8287 tga_file="pants_waist_alpha.tga" 8287
8288 domain="0.05" /> 8288 <param
8289 </param> 8289 id="913"
8290 8290 group="1"
8291 <param 8291 edit_group="driven"
8292 id="1036" 8292 wearable="pants"
8293 group="1" 8293 name="Lower Clothes Shading"
8294 edit_group="driven" 8294 value_min="0"
8295 wearable="pants" 8295 value_max="1"
8296 name="Pants Length Cloth" 8296 value_default="0">
8297 value_min="0" 8297 <param_color>
8298 value_max="1"> 8298 <value
8299 <param_alpha 8299 color="0, 0, 0, 0" />
8300 tga_file="pants_length_alpha.tga" 8300
8301 domain="0.01" /> 8301 <value
8302 </param> 8302 color="0, 0, 0, 80" />
8303 </layer> 8303 </param_color>
8304 8304 </param>
8305 <layer 8305
8306 name="lower_pants bump" 8306 <param
8307 render_pass="bump"> 8307 id="914"
8308 <texture 8308 group="1"
8309 tga_file="bump_pants_wrinkles.tga" /> 8309 edit_group="driven"
8310 8310 wearable="pants"
8311 <texture 8311 name="Waist Height Shadow"
8312 local_texture="lower_pants" 8312 value_min="0.02"
8313 local_texture_alpha_only="true" /> 8313 value_max="1">
8314 8314 <param_alpha
8315 <param 8315 tga_file="pants_waist_alpha.tga"
8316 id="869" 8316 skip_if_zero="true"
8317 group="0" 8317 domain="0.04" />
8318 wearable="pants" 8318 </param>
8319 edit_group="pants" 8319
8320 edit_group_order="6" 8320 <param
8321 name="Pants Wrinkles" 8321 id="915"
8322 value_min="0" 8322 group="1"
8323 value_max="1" 8323 edit_group="driven"
8324 value_default="0"> 8324 wearable="pants"
8325 <param_color> 8325 name="Pants Length Shadow"
8326 <value 8326 value_min="0.02"
8327 color="255, 255, 255, 0" /> 8327 value_max="1">
8328 8328 <param_alpha
8329 <value 8329 tga_file="pants_length_alpha.tga"
8330 color="255, 255, 255, 255" /> 8330 skip_if_zero="true"
8331 </param_color> 8331 domain="0.03" />
8332 </param> 8332 </param>
8333 8333 </layer>
8334 <param 8334
8335 id="1017" 8335 <layer
8336 group="1" 8336 name="lower_pants base bump"
8337 edit_group="driven" 8337 render_pass="bump"
8338 wearable="pants" 8338 fixed_color="128,128,128,255">
8339 name="Waist Height Cloth" 8339 <texture
8340 value_min="0" 8340 local_texture="lower_pants"
8341 value_max="1"> 8341 local_texture_alpha_only="true" />
8342 <param_alpha 8342
8343 tga_file="pants_waist_alpha.tga" 8343 <param
8344 domain="0.05" /> 8344 id="1035"
8345 </param> 8345 group="1"
8346 8346 edit_group="driven"
8347 <param 8347 wearable="pants"
8348 id="1018" 8348 name="Waist Height Cloth"
8349 group="1" 8349 value_min="0"
8350 edit_group="driven" 8350 value_max="1">
8351 wearable="pants" 8351 <param_alpha
8352 name="Pants Length Cloth" 8352 tga_file="pants_waist_alpha.tga"
8353 value_min="0" 8353 domain="0.05" />
8354 value_max="1"> 8354 </param>
8355 <param_alpha 8355
8356 tga_file="pants_length_alpha.tga" 8356 <param
8357 domain="0.01" /> 8357 id="1036"
8358 </param> 8358 group="1"
8359 </layer> 8359 edit_group="driven"
8360 8360 wearable="pants"
8361 <layer 8361 name="Pants Length Cloth"
8362 name="lower_pants"> 8362 value_min="0"
8363 <texture 8363 value_max="1">
8364 local_texture="lower_pants" /> 8364 <param_alpha
8365 8365 tga_file="pants_length_alpha.tga"
8366 <morph_mask 8366 domain="0.01" />
8367 morph_name="Displace_Loose_Lowerbody" /> 8367 </param>
8368 8368 </layer>
8369 <morph_mask 8369
8370 morph_name="Leg_Pantflair" /> 8370 <layer
8371 8371 name="lower_pants bump"
8372 <morph_mask 8372 render_pass="bump">
8373 morph_name="Low_Crotch" /> 8373 <texture
8374 8374 tga_file="bump_pants_wrinkles.tga" />
8375 <morph_mask 8375
8376 morph_name="Leg_Longcuffs" /> 8376 <texture
8377 8377 local_texture="lower_pants"
8378 <param 8378 local_texture_alpha_only="true" />
8379 id="806" 8379
8380 group="0" 8380 <param
8381 wearable="pants" 8381 id="869"
8382 edit_group="colorpicker" 8382 group="0"
8383 name="pants_red" 8383 wearable="pants"
8384 value_min="0" 8384 edit_group="pants"
8385 value_max="1" 8385 edit_group_order="6"
8386 value_default="1"> 8386 name="Pants Wrinkles"
8387 <param_color> 8387 value_min="0"
8388 <value 8388 value_max="1"
8389 color="0, 0, 0, 255" /> 8389 value_default="0">
8390 8390 <param_color>
8391 <value 8391 <value
8392 color="255, 0, 0, 255" /> 8392 color="255, 255, 255, 0" />
8393 </param_color> 8393
8394 </param> 8394 <value
8395 8395 color="255, 255, 255, 255" />
8396 <param 8396 </param_color>
8397 id="807" 8397 </param>
8398 group="0" 8398
8399 wearable="pants" 8399 <param
8400 edit_group="colorpicker" 8400 id="1017"
8401 name="pants_green" 8401 group="1"
8402 value_min="0" 8402 edit_group="driven"
8403 value_max="1" 8403 wearable="pants"
8404 value_default="1"> 8404 name="Waist Height Cloth"
8405 <param_color> 8405 value_min="0"
8406 <value 8406 value_max="1">
8407 color="0, 0, 0, 255" /> 8407 <param_alpha
8408 8408 tga_file="pants_waist_alpha.tga"
8409 <value 8409 domain="0.05" />
8410 color="0, 255, 0, 255" /> 8410 </param>
8411 </param_color> 8411
8412 </param> 8412 <param
8413 8413 id="1018"
8414 <param 8414 group="1"
8415 id="808" 8415 edit_group="driven"
8416 group="0" 8416 wearable="pants"
8417 wearable="pants" 8417 name="Pants Length Cloth"
8418 edit_group="colorpicker" 8418 value_min="0"
8419 name="pants_blue" 8419 value_max="1">
8420 value_min="0" 8420 <param_alpha
8421 value_max="1" 8421 tga_file="pants_length_alpha.tga"
8422 value_default="1"> 8422 domain="0.01" />
8423 <param_color> 8423 </param>
8424 <value 8424 </layer>
8425 color="0, 0, 0, 255" /> 8425
8426 8426 <layer
8427 <value 8427 name="lower_pants">
8428 color="0, 0, 255, 255" /> 8428 <texture
8429 </param_color> 8429 local_texture="lower_pants" />
8430 </param> 8430
8431 8431 <morph_mask
8432 <param 8432 morph_name="Displace_Loose_Lowerbody" />
8433 id="614" 8433
8434 group="1" 8434 <morph_mask
8435 edit_group="driven" 8435 morph_name="Leg_Pantflair" />
8436 wearable="pants" 8436
8437 name="Waist Height Cloth" 8437 <morph_mask
8438 value_min="0" 8438 morph_name="Low_Crotch" />
8439 value_max="1" 8439
8440 value_default=".8"> 8440 <morph_mask
8441 <param_alpha 8441 morph_name="Leg_Longcuffs" />
8442 tga_file="pants_waist_alpha.tga" 8442
8443 domain="0.05" /> 8443 <param
8444 </param> 8444 id="806"
8445 8445 group="0"
8446 <param 8446 wearable="pants"
8447 id="615" 8447 edit_group="colorpicker"
8448 group="1" 8448 name="pants_red"
8449 edit_group="driven" 8449 value_min="0"
8450 wearable="pants" 8450 value_max="1"
8451 name="Pants Length Cloth" 8451 value_default="1">
8452 value_min="0" 8452 <param_color>
8453 value_max="1" 8453 <value
8454 value_default=".8"> 8454 color="0, 0, 0, 255" />
8455 <param_alpha 8455
8456 tga_file="pants_length_alpha.tga" 8456 <value
8457 domain="0.01" /> 8457 color="255, 0, 0, 255" />
8458 </param> 8458 </param_color>
8459 </layer> 8459 </param>
8460 8460
8461 <layer 8461 <param
8462 name="lower_jacket base bump" 8462 id="807"
8463 render_pass="bump" 8463 group="0"
8464 fixed_color="128,128,128,255"> 8464 wearable="pants"
8465 <texture 8465 edit_group="colorpicker"
8466 local_texture="lower_jacket" 8466 name="pants_green"
8467 local_texture_alpha_only="true" /> 8467 value_min="0"
8468 8468 value_max="1"
8469 <param 8469 value_default="1">
8470 id="1033" 8470 <param_color>
8471 group="1" 8471 <value
8472 wearable="jacket" 8472 color="0, 0, 0, 255" />
8473 edit_group="driven" 8473
8474 name="jacket bottom length lower bump" 8474 <value
8475 value_min="0" 8475 color="0, 255, 0, 255" />
8476 value_max="1"> 8476 </param_color>
8477 <param_alpha 8477 </param>
8478 multiply_blend="false" 8478
8479 tga_file="jacket_length_lower_alpha.tga" 8479 <param
8480 domain="0.01" /> 8480 id="808"
8481 </param> 8481 group="0"
8482 8482 wearable="pants"
8483 <param 8483 edit_group="colorpicker"
8484 id="1034" 8484 name="pants_blue"
8485 group="1" 8485 value_min="0"
8486 wearable="jacket" 8486 value_max="1"
8487 edit_group="driven" 8487 value_default="1">
8488 name="jacket open lower bump" 8488 <param_color>
8489 value_min="0" 8489 <value
8490 value_max="1"> 8490 color="0, 0, 0, 255" />
8491 <param_alpha 8491
8492 multiply_blend="true" 8492 <value
8493 tga_file="jacket_open_lower_alpha.tga" 8493 color="0, 0, 255, 255" />
8494 domain="0.01" /> 8494 </param_color>
8495 </param> 8495 </param>
8496 </layer> 8496
8497 8497 <param
8498 <layer 8498 id="614"
8499 name="lower_jacket bump" 8499 group="1"
8500 render_pass="bump"> 8500 edit_group="driven"
8501 <texture 8501 wearable="pants"
8502 tga_file="bump_pants_wrinkles.tga" /> 8502 name="Waist Height Cloth"
8503 8503 value_min="0"
8504 <texture 8504 value_max="1"
8505 local_texture="lower_jacket" 8505 value_default=".8">
8506 local_texture_alpha_only="true" /> 8506 <param_alpha
8507 8507 tga_file="pants_waist_alpha.tga"
8508 <param 8508 domain="0.05" />
8509 id="876" 8509 </param>
8510 group="1" 8510
8511 wearable="jacket" 8511 <param
8512 name="jacket upper Wrinkles" 8512 id="615"
8513 value_min="0" 8513 group="1"
8514 value_max="1" 8514 edit_group="driven"
8515 value_default="0"> 8515 wearable="pants"
8516 <param_color> 8516 name="Pants Length Cloth"
8517 <value 8517 value_min="0"
8518 color="255, 255, 255, 0" /> 8518 value_max="1"
8519 8519 value_default=".8">
8520 <value 8520 <param_alpha
8521 color="255, 255, 255, 255" /> 8521 tga_file="pants_length_alpha.tga"
8522 </param_color> 8522 domain="0.01" />
8523 </param> 8523 </param>
8524 8524 </layer>
8525 <param 8525
8526 id="1027" 8526 <layer
8527 group="1" 8527 name="lower_jacket base bump"
8528 wearable="jacket" 8528 render_pass="bump"
8529 edit_group="driven" 8529 fixed_color="128,128,128,255">
8530 name="jacket bottom length lower bump" 8530 <texture
8531 value_min="0" 8531 local_texture="lower_jacket"
8532 value_max="1"> 8532 local_texture_alpha_only="true" />
8533 <param_alpha 8533
8534 multiply_blend="false" 8534 <param
8535 tga_file="jacket_length_lower_alpha.tga" 8535 id="1033"
8536 domain="0.01" /> 8536 group="1"
8537 </param> 8537 wearable="jacket"
8538 8538 edit_group="driven"
8539 <param 8539 name="jacket bottom length lower bump"
8540 id="1028" 8540 value_min="0"
8541 group="1" 8541 value_max="1">
8542 wearable="jacket" 8542 <param_alpha
8543 edit_group="driven" 8543 multiply_blend="false"
8544 name="jacket open lower bump" 8544 tga_file="jacket_length_lower_alpha.tga"
8545 value_min="0" 8545 domain="0.01" />
8546 value_max="1"> 8546 </param>
8547 <param_alpha 8547
8548 multiply_blend="true" 8548 <param
8549 tga_file="jacket_open_lower_alpha.tga" 8549 id="1034"
8550 domain="0.01" /> 8550 group="1"
8551 </param> 8551 wearable="jacket"
8552 </layer> 8552 edit_group="driven"
8553 8553 name="jacket open lower bump"
8554 <layer 8554 value_min="0"
8555 name="lower_jacket"> 8555 value_max="1">
8556 <texture 8556 <param_alpha
8557 local_texture="lower_jacket" /> 8557 multiply_blend="true"
8558 8558 tga_file="jacket_open_lower_alpha.tga"
8559 <param 8559 domain="0.01" />
8560 id="809" 8560 </param>
8561 group="1" 8561 </layer>
8562 edit_group="colorpicker_driven" 8562
8563 wearable="jacket" 8563 <layer
8564 name="lower_jacket_red" 8564 name="lower_jacket bump"
8565 value_min="0" 8565 render_pass="bump">
8566 value_max="1" 8566 <texture
8567 value_default="1"> 8567 tga_file="bump_pants_wrinkles.tga" />
8568 <param_color> 8568
8569 <value 8569 <texture
8570 color="0, 0, 0, 255" /> 8570 local_texture="lower_jacket"
8571 8571 local_texture_alpha_only="true" />
8572 <value 8572
8573 color="255, 0, 0, 255" /> 8573 <param
8574 </param_color> 8574 id="876"
8575 </param> 8575 group="1"
8576 8576 wearable="jacket"
8577 <param 8577 name="jacket upper Wrinkles"
8578 id="810" 8578 value_min="0"
8579 group="1" 8579 value_max="1"
8580 edit_group="colorpicker_driven" 8580 value_default="0">
8581 wearable="jacket" 8581 <param_color>
8582 name="lower_jacket_green" 8582 <value
8583 value_min="0" 8583 color="255, 255, 255, 0" />
8584 value_max="1" 8584
8585 value_default="1"> 8585 <value
8586 <param_color> 8586 color="255, 255, 255, 255" />
8587 <value 8587 </param_color>
8588 color="0, 0, 0, 255" /> 8588 </param>
8589 8589
8590 <value 8590 <param
8591 color="0, 255, 0, 255" /> 8591 id="1027"
8592 </param_color> 8592 group="1"
8593 </param> 8593 wearable="jacket"
8594 8594 edit_group="driven"
8595 <param 8595 name="jacket bottom length lower bump"
8596 id="811" 8596 value_min="0"
8597 group="1" 8597 value_max="1">
8598 edit_group="colorpicker_driven" 8598 <param_alpha
8599 wearable="jacket" 8599 multiply_blend="false"
8600 name="lower_jacket_blue" 8600 tga_file="jacket_length_lower_alpha.tga"
8601 value_min="0" 8601 domain="0.01" />
8602 value_max="1" 8602 </param>
8603 value_default="1"> 8603
8604 <param_color> 8604 <param
8605 <value 8605 id="1028"
8606 color="0, 0, 0, 255" /> 8606 group="1"
8607 8607 wearable="jacket"
8608 <value 8608 edit_group="driven"
8609 color="0, 0, 255, 255" /> 8609 name="jacket open lower bump"
8610 </param_color> 8610 value_min="0"
8611 </param> 8611 value_max="1">
8612 8612 <param_alpha
8613 <param 8613 multiply_blend="true"
8614 id="621" 8614 tga_file="jacket_open_lower_alpha.tga"
8615 group="1" 8615 domain="0.01" />
8616 wearable="jacket" 8616 </param>
8617 edit_group="jacket" 8617 </layer>
8618 name="bottom length lower" 8618
8619 label_min="hi cut" 8619 <layer
8620 label_max="low cut" 8620 name="lower_jacket">
8621 value_min="0" 8621 <texture
8622 value_max="1" 8622 local_texture="lower_jacket" />
8623 value_default=".8" 8623
8624 camera_distance="1.2" 8624 <param
8625 camera_angle="30" 8625 id="809"
8626 camera_elevation=".2"> 8626 group="1"
8627 <param_alpha 8627 edit_group="colorpicker_driven"
8628 multiply_blend="false" 8628 wearable="jacket"
8629 tga_file="jacket_length_lower_alpha.tga" 8629 name="lower_jacket_red"
8630 domain="0.01" /> 8630 value_min="0"
8631 </param> 8631 value_max="1"
8632 8632 value_default="1">
8633 <param 8633 <param_color>
8634 id="623" 8634 <value
8635 group="1" 8635 color="0, 0, 0, 255" />
8636 wearable="jacket" 8636
8637 edit_group="jacket" 8637 <value
8638 name="open lower" 8638 color="255, 0, 0, 255" />
8639 label_min="open" 8639 </param_color>
8640 label_max="closed" 8640 </param>
8641 value_min="0" 8641
8642 value_max="1" 8642 <param
8643 value_default=".8" 8643 id="810"
8644 camera_distance="1.2" 8644 group="1"
8645 camera_angle="30" 8645 edit_group="colorpicker_driven"
8646 camera_elevation=".2"> 8646 wearable="jacket"
8647 <param_alpha 8647 name="lower_jacket_green"
8648 multiply_blend="true" 8648 value_min="0"
8649 tga_file="jacket_open_lower_alpha.tga" 8649 value_max="1"
8650 domain="0.01" /> 8650 value_default="1">
8651 </param> 8651 <param_color>
8652 </layer> 8652 <value
8653 8653 color="0, 0, 0, 255" />
8654 <layer 8654
8655 name="lower alpha" 8655 <value
8656 visibility_mask="TRUE"> 8656 color="0, 255, 0, 255" />
8657 <texture 8657 </param_color>
8658 local_texture="lower_alpha" /> 8658 </param>
8659 </layer> 8659
8660 8660 <param
8661 </layer_set> 8661 id="811"
8662 8662 group="1"
8663<!-- =========================================================== --> 8663 edit_group="colorpicker_driven"
8664 <layer_set 8664 wearable="jacket"
8665 body_region="eyes" 8665 name="lower_jacket_blue"
8666 width="128" 8666 value_min="0"
8667 height="128"> 8667 value_max="1"
8668 <layer 8668 value_default="1">
8669 name="whites"> 8669 <param_color>
8670 <texture 8670 <value
8671 tga_file="eyewhite.tga" /> 8671 color="0, 0, 0, 255" />
8672 </layer> 8672
8673 8673 <value
8674 <layer 8674 color="0, 0, 255, 255" />
8675 name="iris" 8675 </param_color>
8676 global_color="eye_color"> 8676 </param>
8677 <texture 8677
8678 local_texture="eyes_iris" /> 8678 <param
8679 </layer> 8679 id="621"
8680 8680 group="1"
8681 <layer 8681 wearable="jacket"
8682 name="eyes alpha" 8682 edit_group="jacket"
8683 visibility_mask="TRUE"> 8683 name="bottom length lower"
8684 <texture 8684 label_min="hi cut"
8685 local_texture="eyes_alpha" /> 8685 label_max="low cut"
8686 </layer> 8686 value_min="0"
8687 8687 value_max="1"
8688 </layer_set> 8688 value_default=".8"
8689 8689 camera_distance="1.2"
8690<!-- =========================================================== --> 8690 camera_angle="30"
8691 <layer_set 8691 camera_elevation=".2">
8692 body_region="skirt" 8692 <param_alpha
8693 width="512" 8693 multiply_blend="false"
8694 height="512" 8694 tga_file="jacket_length_lower_alpha.tga"
8695 clear_alpha="false"> 8695 domain="0.01" />
8696 <layer 8696 </param>
8697 name="skirt_fabric" 8697
8698 write_all_channels="true"> 8698 <param
8699 <texture 8699 id="623"
8700 local_texture="skirt" /> 8700 group="1"
8701 8701 wearable="jacket"
8702 <param 8702 edit_group="jacket"
8703 id="921" 8703 name="open lower"
8704 group="0" 8704 label_min="open"
8705 wearable="skirt" 8705 label_max="closed"
8706 edit_group="colorpicker" 8706 value_min="0"
8707 name="skirt_red" 8707 value_max="1"
8708 value_min="0" 8708 value_default=".8"
8709 value_max="1" 8709 camera_distance="1.2"
8710 value_default="1"> 8710 camera_angle="30"
8711 <param_color> 8711 camera_elevation=".2">
8712 <value 8712 <param_alpha
8713 color="0, 0, 0, 255" /> 8713 multiply_blend="true"
8714 8714 tga_file="jacket_open_lower_alpha.tga"
8715 <value 8715 domain="0.01" />
8716 color="255, 0, 0, 255" /> 8716 </param>
8717 </param_color> 8717 </layer>
8718 </param> 8718
8719 8719 <layer
8720 <param 8720 name="lower alpha"
8721 id="922" 8721 visibility_mask="TRUE">
8722 group="0" 8722 <texture
8723 wearable="skirt" 8723 local_texture="lower_alpha" />
8724 edit_group="colorpicker" 8724 </layer>
8725 name="skirt_green" 8725
8726 value_min="0" 8726 </layer_set>
8727 value_max="1" 8727
8728 value_default="1"> 8728<!-- =========================================================== -->
8729 <param_color> 8729 <layer_set
8730 <value 8730 body_region="eyes"
8731 color="0, 0, 0, 255" /> 8731 width="128"
8732 8732 height="128">
8733 <value 8733 <layer
8734 color="0, 255, 0, 255" /> 8734 name="whites">
8735 </param_color> 8735 <texture
8736 </param> 8736 tga_file="eyewhite.tga" />
8737 8737 </layer>
8738 <param 8738
8739 id="923" 8739 <layer
8740 group="0" 8740 name="iris"
8741 wearable="skirt" 8741 global_color="eye_color">
8742 edit_group="colorpicker" 8742 <texture
8743 name="skirt_blue" 8743 local_texture="eyes_iris" />
8744 value_min="0" 8744 </layer>
8745 value_max="1" 8745
8746 value_default="1"> 8746 <layer
8747 <param_color> 8747 name="eyes alpha"
8748 <value 8748 visibility_mask="TRUE">
8749 color="0, 0, 0, 255" /> 8749 <texture
8750 8750 local_texture="eyes_alpha" />
8751 <value 8751 </layer>
8752 color="0, 0, 255, 255" /> 8752
8753 </param_color> 8753 </layer_set>
8754 </param> 8754
8755 </layer> 8755<!-- =========================================================== -->
8756 8756 <layer_set
8757 <layer 8757 body_region="skirt"
8758 name="skirt_fabric_alpha"> 8758 width="512"
8759 <param 8759 height="512"
8760 id="858" 8760 clear_alpha="false">
8761 group="0" 8761 <layer
8762 wearable="skirt" 8762 name="skirt_fabric"
8763 edit_group="skirt" 8763 write_all_channels="true">
8764 edit_group_order="1" 8764 <texture
8765 name="Skirt Length" 8765 local_texture="skirt" />
8766 show_simple="true" 8766
8767 label_min="Short" 8767 <param
8768 label_max="Long" 8768 id="921"
8769 value_min=".01" 8769 group="0"
8770 value_max="1" 8770 wearable="skirt"
8771 value_default=".4" 8771 edit_group="colorpicker"
8772 simple_percent_min="40" 8772 name="skirt_red"
8773 simple_percent_max="100" 8773 value_min="0"
8774 camera_distance="1.3" 8774 value_max="1"
8775 camera_elevation="-.5" 8775 value_default="1">
8776 camera_angle="30"> 8776 <param_color>
8777 <param_alpha 8777 <value
8778 tga_file="skirt_length_alpha.tga" 8778 color="0, 0, 0, 255" />
8779 domain="0" 8779
8780 multiply_blend="true" /> 8780 <value
8781 </param> 8781 color="255, 0, 0, 255" />
8782 8782 </param_color>
8783 <param 8783 </param>
8784 id="859" 8784
8785 group="0" 8785 <param
8786 wearable="skirt" 8786 id="922"
8787 edit_group="skirt" 8787 group="0"
8788 edit_group_order="4" 8788 wearable="skirt"
8789 name="Slit Front" 8789 edit_group="colorpicker"
8790 label_min="Open Front" 8790 name="skirt_green"
8791 label_max="Closed Front" 8791 value_min="0"
8792 value_min="0" 8792 value_max="1"
8793 value_max="1" 8793 value_default="1">
8794 value_default="1" 8794 <param_color>
8795 camera_distance="1.3" 8795 <value
8796 camera_elevation="-.5" 8796 color="0, 0, 0, 255" />
8797 camera_angle="30"> 8797
8798 <param_alpha 8798 <value
8799 tga_file="skirt_slit_front_alpha.tga" 8799 color="0, 255, 0, 255" />
8800 multiply_blend="true" 8800 </param_color>
8801 domain="0" /> 8801 </param>
8802 </param> 8802
8803 8803 <param
8804 <param 8804 id="923"
8805 id="860" 8805 group="0"
8806 group="0" 8806 wearable="skirt"
8807 wearable="skirt" 8807 edit_group="colorpicker"
8808 edit_group="skirt" 8808 name="skirt_blue"
8809 edit_group_order="5" 8809 value_min="0"
8810 name="Slit Back" 8810 value_max="1"
8811 label_min="Open Back" 8811 value_default="1">
8812 label_max="Closed Back" 8812 <param_color>
8813 value_min="0" 8813 <value
8814 value_max="1" 8814 color="0, 0, 0, 255" />
8815 value_default="1" 8815
8816 camera_distance="1.3" 8816 <value
8817 camera_elevation="-.5" 8817 color="0, 0, 255, 255" />
8818 camera_angle="160"> 8818 </param_color>
8819 <param_alpha 8819 </param>
8820 tga_file="skirt_slit_back_alpha.tga" 8820 </layer>
8821 multiply_blend="true" 8821
8822 domain="0" /> 8822 <layer
8823 </param> 8823 name="skirt_fabric_alpha">
8824 8824 <param
8825 <param 8825 id="858"
8826 id="861" 8826 group="0"
8827 group="0" 8827 wearable="skirt"
8828 wearable="skirt" 8828 edit_group="skirt"
8829 edit_group="skirt" 8829 edit_group_order="1"
8830 edit_group_order="6" 8830 name="Skirt Length"
8831 name="Slit Left" 8831 show_simple="true"
8832 label_min="Open Left" 8832 label_min="Short"
8833 label_max="Closed Left" 8833 label_max="Long"
8834 value_min="0" 8834 value_min=".01"
8835 value_max="1" 8835 value_max="1"
8836 value_default="1" 8836 value_default=".4"
8837 camera_distance="1.3" 8837 simple_percent_min="40"
8838 camera_elevation="-.5" 8838 simple_percent_max="100"
8839 camera_angle="30"> 8839 camera_distance="1.3"
8840 <param_alpha 8840 camera_elevation="-.5"
8841 tga_file="skirt_slit_left_alpha.tga" 8841 camera_angle="30">
8842 multiply_blend="true" 8842 <param_alpha
8843 domain="0" /> 8843 tga_file="skirt_length_alpha.tga"
8844 </param> 8844 domain="0"
8845 8845 multiply_blend="true" />
8846 <param 8846 </param>
8847 id="862" 8847
8848 group="0" 8848 <param
8849 wearable="skirt" 8849 id="859"
8850 edit_group="skirt" 8850 group="0"
8851 edit_group_order="7" 8851 wearable="skirt"
8852 name="Slit Right" 8852 edit_group="skirt"
8853 label_min="Open Right" 8853 edit_group_order="4"
8854 label_max="Closed Right" 8854 name="Slit Front"
8855 value_min="0" 8855 label_min="Open Front"
8856 value_max="1" 8856 label_max="Closed Front"
8857 value_default="1" 8857 value_min="0"
8858 camera_distance="1.3" 8858 value_max="1"
8859 camera_elevation="-.5" 8859 value_default="1"
8860 camera_angle="-30"> 8860 camera_distance="1.3"
8861 <param_alpha 8861 camera_elevation="-.5"
8862 tga_file="skirt_slit_right_alpha.tga" 8862 camera_angle="30">
8863 multiply_blend="true" 8863 <param_alpha
8864 domain="0" /> 8864 tga_file="skirt_slit_front_alpha.tga"
8865 </param> 8865 multiply_blend="true"
8866 </layer> 8866 domain="0" />
8867 </layer_set> 8867 </param>
8868 8868
8869<!-- =========================================================== --> 8869 <param
8870 <driver_parameters> 8870 id="860"
8871 <param 8871 group="0"
8872 id="828" 8872 wearable="skirt"
8873 group="0" 8873 edit_group="skirt"
8874 name="Loose Upper Clothing" 8874 edit_group_order="5"
8875 label="Shirt Fit" 8875 name="Slit Back"
8876 show_simple="true" 8876 label_min="Open Back"
8877 wearable="shirt" 8877 label_max="Closed Back"
8878 edit_group="shirt" 8878 value_min="0"
8879 edit_group_order="4" 8879 value_max="1"
8880 label_min="Tight Shirt" 8880 value_default="1"
8881 label_max="Loose Shirt" 8881 camera_distance="1.3"
8882 value_min="0" 8882 camera_elevation="-.5"
8883 value_max="1" 8883 camera_angle="160">
8884 camera_distance="1.2" 8884 <param_alpha
8885 camera_angle="30" 8885 tga_file="skirt_slit_back_alpha.tga"
8886 camera_elevation=".2"> 8886 multiply_blend="true"
8887 <param_driver> 8887 domain="0" />
8888 <driven 8888 </param>
8889 id="628" /> 8889
8890 8890 <param
8891 <driven 8891 id="861"
8892 id="899" 8892 group="0"
8893 min1="0.1" 8893 wearable="skirt"
8894 max1="0.5" 8894 edit_group="skirt"
8895 max2="1" 8895 edit_group_order="6"
8896 min2="1" /> 8896 name="Slit Left"
8897 </param_driver> 8897 label_min="Open Left"
8898 </param> 8898 label_max="Closed Left"
8899 8899 value_min="0"
8900 <param 8900 value_max="1"
8901 id="816" 8901 value_default="1"
8902 group="0" 8902 camera_distance="1.3"
8903 name="Loose Lower Clothing" 8903 camera_elevation="-.5"
8904 label="Pants Fit" 8904 camera_angle="30">
8905 show_simple="true" 8905 <param_alpha
8906 wearable="pants" 8906 tga_file="skirt_slit_left_alpha.tga"
8907 edit_group="pants" 8907 multiply_blend="true"
8908 edit_group_order="2.5" 8908 domain="0" />
8909 label_min="Tight Pants" 8909 </param>
8910 label_max="Loose Pants" 8910
8911 value_min="0" 8911 <param
8912 value_max="1" 8912 id="862"
8913 camera_distance="1.8" 8913 group="0"
8914 camera_angle="30" 8914 wearable="skirt"
8915 camera_elevation="-.3"> 8915 edit_group="skirt"
8916 <param_driver> 8916 edit_group_order="7"
8917 <driven 8917 name="Slit Right"
8918 id="516" /> 8918 label_min="Open Right"
8919 8919 label_max="Closed Right"
8920 <driven 8920 value_min="0"
8921 id="913" 8921 value_max="1"
8922 min1="0.1" 8922 value_default="1"
8923 max1="0.5" 8923 camera_distance="1.3"
8924 max2="1" 8924 camera_elevation="-.5"
8925 min2="1" /> 8925 camera_angle="-30">
8926 </param_driver> 8926 <param_alpha
8927 </param> 8927 tga_file="skirt_slit_right_alpha.tga"
8928 8928 multiply_blend="true"
8929 <param 8929 domain="0" />
8930 id="814" 8930 </param>
8931 group="0" 8931 </layer>
8932 wearable="pants" 8932 </layer_set>
8933 edit_group="pants" 8933
8934 edit_group_order="2" 8934<!-- =========================================================== -->
8935 name="Waist Height" 8935 <driver_parameters>
8936 label_min="Low" 8936 <param
8937 label_max="High" 8937 id="828"
8938 value_min="0" 8938 group="0"
8939 value_max="1" 8939 name="Loose Upper Clothing"
8940 value_default="1" 8940 label="Shirt Fit"
8941 camera_distance="1.2" 8941 show_simple="true"
8942 camera_angle="30" 8942 wearable="shirt"
8943 camera_elevation="-.3"> 8943 edit_group="shirt"
8944 <param_driver> 8944 edit_group_order="4"
8945 <driven 8945 label_min="Tight Shirt"
8946 id="614" /> 8946 label_max="Loose Shirt"
8947 8947 value_min="0"
8948 <driven 8948 value_max="1"
8949 id="1017" /> 8949 camera_distance="1.2"
8950 8950 camera_angle="30"
8951 <driven 8951 camera_elevation=".2">
8952 id="1033" /> 8952 <param_driver>
8953 8953 <driven
8954 <driven 8954 id="628" />
8955 id="914" 8955
8956 min1="0" 8956 <driven
8957 max1=".98" 8957 id="899"
8958 max2="1" 8958 min1="0.1"
8959 min2="1" /> 8959 max1="0.5"
8960 </param_driver> 8960 max2="1"
8961 </param> 8961 min2="1" />
8962 8962 </param_driver>
8963 <param 8963 </param>
8964 id="815" 8964
8965 group="0" 8965 <param
8966 wearable="pants" 8966 id="816"
8967 edit_group="pants" 8967 group="0"
8968 edit_group_order="1" 8968 name="Loose Lower Clothing"
8969 name="Pants Length" 8969 label="Pants Fit"
8970 show_simple="true" 8970 show_simple="true"
8971 label_min="Short" 8971 wearable="pants"
8972 label_max="Long" 8972 edit_group="pants"
8973 value_min="0" 8973 edit_group_order="2.5"
8974 value_max="1" 8974 label_min="Tight Pants"
8975 value_default=".8" 8975 label_max="Loose Pants"
8976 simple_percent_min="20" 8976 value_min="0"
8977 simple_percent_max="100" 8977 value_max="1"
8978 camera_distance="1.8" 8978 camera_distance="1.8"
8979 camera_angle="30" 8979 camera_angle="30"
8980 camera_elevation="-.3"> 8980 camera_elevation="-.3">
8981 <param_driver> 8981 <param_driver>
8982 <driven 8982 <driven
8983 id="615" 8983 id="516" />
8984 min1="0" 8984
8985 max1=".9" 8985 <driven
8986 max2="1" 8986 id="913"
8987 min2="1" /> 8987 min1="0.1"
8988 8988 max1="0.5"
8989 <driven 8989 max2="1"
8990 id="1018" 8990 min2="1" />
8991 min1="0" 8991 </param_driver>
8992 max1=".9" 8992 </param>
8993 max2="1" 8993
8994 min2="1" /> 8994 <param
8995 8995 id="814"
8996 <driven 8996 group="0"
8997 id="1036" 8997 wearable="pants"
8998 min1="0" 8998 edit_group="pants"
8999 max1=".9" 8999 edit_group_order="2"
9000 max2="1" 9000 name="Waist Height"
9001 min2="1" /> 9001 label_min="Low"
9002 9002 label_max="High"
9003 <driven 9003 value_min="0"
9004 id="793" 9004 value_max="1"
9005 min1=".9" 9005 value_default="1"
9006 max1="1" 9006 camera_distance="1.2"
9007 max2="1" 9007 camera_angle="30"
9008 min2="1" /> 9008 camera_elevation="-.3">
9009 9009 <param_driver>
9010 <driven 9010 <driven
9011 id="915" 9011 id="614" />
9012 min1="0" 9012
9013 max1=".882" 9013 <driven
9014 max2="1" 9014 id="1017" />
9015 min2="1" /> 9015
9016 </param_driver> 9016 <driven
9017 </param> 9017 id="1033" />
9018 9018
9019 <param 9019 <driven
9020 id="800" 9020 id="914"
9021 group="0" 9021 min1="0"
9022 wearable="shirt" 9022 max1=".98"
9023 edit_group="shirt" 9023 max2="1"
9024 edit_group_order="1" 9024 min2="1" />
9025 name="Sleeve Length" 9025 </param_driver>
9026 show_simple="true" 9026 </param>
9027 label_min="Short" 9027
9028 label_max="Long" 9028 <param
9029 value_min="0" 9029 id="815"
9030 value_max="1" 9030 group="0"
9031 value_default=".89" 9031 wearable="pants"
9032 simple_percent_min="15" 9032 edit_group="pants"
9033 simple_percent_max="100" 9033 edit_group_order="1"
9034 camera_distance="1.2" 9034 name="Pants Length"
9035 camera_angle="30" 9035 show_simple="true"
9036 camera_elevation=".2"> 9036 label_min="Short"
9037 <param_driver> 9037 label_max="Long"
9038 <driven 9038 value_min="0"
9039 id="600" /> 9039 value_max="1"
9040 9040 value_default=".8"
9041 <driven 9041 simple_percent_min="20"
9042 id="1013" /> 9042 simple_percent_max="100"
9043 9043 camera_distance="1.8"
9044 <driven 9044 camera_angle="30"
9045 id="1029" /> 9045 camera_elevation="-.3">
9046 9046 <param_driver>
9047 <driven 9047 <driven
9048 id="900" 9048 id="615"
9049 min1="0" 9049 min1="0"
9050 max1="1" 9050 max1=".9"
9051 max2="1" 9051 max2="1"
9052 min2="1" /> 9052 min2="1" />
9053 </param_driver> 9053
9054 </param> 9054 <driven
9055 9055 id="1018"
9056 <param 9056 min1="0"
9057 id="801" 9057 max1=".9"
9058 group="0" 9058 max2="1"
9059 wearable="shirt" 9059 min2="1" />
9060 edit_group="shirt" 9060
9061 edit_group_order="2" 9061 <driven
9062 name="Shirt Bottom" 9062 id="1036"
9063 label_min="Short" 9063 min1="0"
9064 label_max="Long" 9064 max1=".9"
9065 value_min="0" 9065 max2="1"
9066 value_max="1" 9066 min2="1" />
9067 value_default="1" 9067
9068 camera_distance="1.2" 9068 <driven
9069 camera_angle="30" 9069 id="793"
9070 camera_elevation=".2"> 9070 min1=".9"
9071 <param_driver> 9071 max1="1"
9072 <driven 9072 max2="1"
9073 id="601" /> 9073 min2="1" />
9074 9074
9075 <driven 9075 <driven
9076 id="1014" /> 9076 id="915"
9077 9077 min1="0"
9078 <driven 9078 max1=".882"
9079 id="1030" /> 9079 max2="1"
9080 9080 min2="1" />
9081 <driven 9081 </param_driver>
9082 id="901" 9082 </param>
9083 min1="0" 9083
9084 max1=".98" 9084 <param
9085 max2="1" 9085 id="800"
9086 min2="1" /> 9086 group="0"
9087 </param_driver> 9087 wearable="shirt"
9088 </param> 9088 edit_group="shirt"
9089 9089 edit_group_order="1"
9090 <param 9090 name="Sleeve Length"
9091 id="802" 9091 show_simple="true"
9092 group="0" 9092 label_min="Short"
9093 wearable="shirt" 9093 label_max="Long"
9094 edit_group="shirt" 9094 value_min="0"
9095 edit_group_order="3" 9095 value_max="1"
9096 name="Collar Front" 9096 value_default=".89"
9097 show_simple="true" 9097 simple_percent_min="15"
9098 label_min="Low" 9098 simple_percent_max="100"
9099 label_max="High" 9099 camera_distance="1.2"
9100 value_min="0" 9100 camera_angle="30"
9101 value_max="1" 9101 camera_elevation=".2">
9102 value_default=".78" 9102 <param_driver>
9103 simple_percent_min="40" 9103 <driven
9104 simple_percent_max="100" 9104 id="600" />
9105 camera_distance="1.2" 9105
9106 camera_angle="15" 9106 <driven
9107 camera_elevation=".2"> 9107 id="1013" />
9108 <param_driver> 9108
9109 <driven 9109 <driven
9110 id="602" /> 9110 id="1029" />
9111 9111
9112 <driven 9112 <driven
9113 id="1015" /> 9113 id="900"
9114 9114 min1="0"
9115 <driven 9115 max1="1"
9116 id="1031" /> 9116 max2="1"
9117 9117 min2="1" />
9118 <driven 9118 </param_driver>
9119 id="902" 9119 </param>
9120 min1="0" 9120
9121 max1=".98" 9121 <param
9122 max2="1" 9122 id="801"
9123 min2="1" /> 9123 group="0"
9124 </param_driver> 9124 wearable="shirt"
9125 </param> 9125 edit_group="shirt"
9126 9126 edit_group_order="2"
9127 <param 9127 name="Shirt Bottom"
9128 id="781" 9128 label_min="Short"
9129 group="0" 9129 label_max="Long"
9130 wearable="shirt" 9130 value_min="0"
9131 edit_group="shirt" 9131 value_max="1"
9132 edit_group_order="3.1" 9132 value_default="1"
9133 name="Collar Back" 9133 camera_distance="1.2"
9134 label_min="Low" 9134 camera_angle="30"
9135 label_max="High" 9135 camera_elevation=".2">
9136 value_min="0" 9136 <param_driver>
9137 value_max="1" 9137 <driven
9138 value_default=".78" 9138 id="601" />
9139 camera_distance="1.2" 9139
9140 camera_angle="195" 9140 <driven
9141 camera_elevation=".2"> 9141 id="1014" />
9142 <param_driver> 9142
9143 <driven 9143 <driven
9144 id="778" /> 9144 id="1030" />
9145 9145
9146 <driven 9146 <driven
9147 id="1016" /> 9147 id="901"
9148 9148 min1="0"
9149 <driven 9149 max1=".98"
9150 id="1032" /> 9150 max2="1"
9151 9151 min2="1" />
9152 <driven 9152 </param_driver>
9153 id="903" 9153 </param>
9154 min1="0" 9154
9155 max1=".98" 9155 <param
9156 max2="1" 9156 id="802"
9157 min2="1" /> 9157 group="0"
9158 </param_driver> 9158 wearable="shirt"
9159 </param> 9159 edit_group="shirt"
9160 9160 edit_group_order="3"
9161 <param 9161 name="Collar Front"
9162 id="150" 9162 show_simple="true"
9163 group="0" 9163 label_min="Low"
9164 wearable="skin" 9164 label_max="High"
9165 edit_group="skin_bodydetail" 9165 value_min="0"
9166 name="Body Definition" 9166 value_max="1"
9167 label_min="Less" 9167 value_default=".78"
9168 label_max="More" 9168 simple_percent_min="40"
9169 value_min="0" 9169 simple_percent_max="100"
9170 value_max="1" 9170 camera_distance="1.2"
9171 value_default="0" 9171 camera_angle="15"
9172 camera_distance="1.4" 9172 camera_elevation=".2">
9173 camera_elevation="-.2"> 9173 <param_driver>
9174 <param_driver> 9174 <driven
9175 <driven 9175 id="602" />
9176 id="125" /> 9176
9177 9177 <driven
9178 <driven 9178 id="1015" />
9179 id="126" /> 9179
9180 9180 <driven
9181 <driven 9181 id="1031" />
9182 id="160" /> 9182
9183 9183 <driven
9184 <driven 9184 id="902"
9185 id="161" /> 9185 min1="0"
9186 9186 max1=".98"
9187 <driven 9187 max2="1"
9188 id="874" /> 9188 min2="1" />
9189 9189 </param_driver>
9190 <driven 9190 </param>
9191 id="878" /> 9191
9192 9192 <param
9193 </param_driver> 9193 id="781"
9194 </param> 9194 group="0"
9195 9195 wearable="shirt"
9196 <param 9196 edit_group="shirt"
9197 id="775" 9197 edit_group_order="3.1"
9198 group="0" 9198 name="Collar Back"
9199 wearable="skin" 9199 label_min="Low"
9200 edit_group="skin_bodydetail" 9200 label_max="High"
9201 name="Body Freckles" 9201 value_min="0"
9202 label_min="Less Freckles" 9202 value_max="1"
9203 label_max="More Freckles" 9203 value_default=".78"
9204 value_min="0" 9204 camera_distance="1.2"
9205 value_max="1" 9205 camera_angle="195"
9206 value_default="0" 9206 camera_elevation=".2">
9207 camera_distance="1.4" 9207 <param_driver>
9208 camera_elevation="-.2"> 9208 <driven
9209 <param_driver> 9209 id="778" />
9210 <driven 9210
9211 id="776" /> 9211 <driven
9212 9212 id="1016" />
9213 <driven 9213
9214 id="777" /> 9214 <driven
9215 </param_driver> 9215 id="1032" />
9216 </param> 9216
9217 9217 <driven
9218 <param 9218 id="903"
9219 id="162" 9219 min1="0"
9220 group="0" 9220 max1=".98"
9221 wearable="skin" 9221 max2="1"
9222 edit_group="skin_facedetail" 9222 min2="1" />
9223 edit_group_order="1" 9223 </param_driver>
9224 name="Facial Definition" 9224 </param>
9225 label_min="Less" 9225
9226 label_max="More" 9226 <param
9227 value_min="0" 9227 id="150"
9228 value_max="1" 9228 group="0"
9229 camera_distance=".3" 9229 wearable="skin"
9230 camera_elevation=".07" 9230 edit_group="skin_bodydetail"
9231 value_default="0"> 9231 name="Body Definition"
9232 <param_driver> 9232 label_min="Less"
9233 <driven 9233 label_max="More"
9234 id="158" /> 9234 value_min="0"
9235 9235 value_max="1"
9236 <driven 9236 value_default="0"
9237 id="159" /> 9237 camera_distance="1.4"
9238 9238 camera_elevation="-.2">
9239 <driven 9239 <param_driver>
9240 id="873" /> 9240 <driven
9241 </param_driver> 9241 id="125" />
9242 </param> 9242
9243 9243 <driven
9244 <param 9244 id="126" />
9245 id="163" 9245
9246 group="0" 9246 <driven
9247 wearable="skin" 9247 id="160" />
9248 edit_group="skin_facedetail" 9248
9249 edit_group_order="3" 9249 <driven
9250 name="wrinkles" 9250 id="161" />
9251 label_min="Less" 9251
9252 label_max="More" 9252 <driven
9253 value_min="0" 9253 id="874" />
9254 value_max="1" 9254
9255 camera_distance=".3" 9255 <driven
9256 camera_elevation=".07" 9256 id="878" />
9257 value_default="0"> 9257
9258 <param_driver> 9258 </param_driver>
9259<!--<driven 9259 </param>
9260 id="128" />--> 9260
9261 <driven 9261 <param
9262 id="118" /> 9262 id="775"
9263 </param_driver> 9263 group="0"
9264 </param> 9264 wearable="skin"
9265 9265 edit_group="skin_bodydetail"
9266 <param 9266 name="Body Freckles"
9267 id="505" 9267 label_min="Less Freckles"
9268 group="0" 9268 label_max="More Freckles"
9269 wearable="shape" 9269 value_min="0"
9270 edit_group="shape_mouth" 9270 value_max="1"
9271 edit_group_order="3" 9271 value_default="0"
9272 name="Lip Thickness" 9272 camera_distance="1.4"
9273 label_min="Thin Lips" 9273 camera_elevation="-.2">
9274 label_max="Fat Lips" 9274 <param_driver>
9275 value_min="0" 9275 <driven
9276 value_max="1" 9276 id="776" />
9277 value_default=".5" 9277
9278 camera_distance=".3" 9278 <driven
9279 camera_elevation=".04" 9279 id="777" />
9280 camera_angle="20"> 9280 </param_driver>
9281 <param_driver> 9281 </param>
9282 <driven 9282
9283 id="26" 9283 <param
9284 min1="0" 9284 id="162"
9285 max1="0" 9285 group="0"
9286 max2="0" 9286 wearable="skin"
9287 min2=".5" /> 9287 edit_group="skin_facedetail"
9288 9288 edit_group_order="1"
9289 <driven 9289 name="Facial Definition"
9290 id="28" 9290 label_min="Less"
9291 min1=".5" 9291 label_max="More"
9292 max1="1" 9292 value_min="0"
9293 max2="1" 9293 value_max="1"
9294 min2="1" /> 9294 camera_distance=".3"
9295 </param_driver> 9295 camera_elevation=".07"
9296 </param> 9296 value_default="0">
9297 9297 <param_driver>
9298 <param 9298 <driven
9299 id="799" 9299 id="158" />
9300 group="0" 9300
9301 wearable="shape" 9301 <driven
9302 edit_group="shape_mouth" 9302 id="159" />
9303 edit_group_order="3.2" 9303
9304 name="Lip Ratio" 9304 <driven
9305 label="Lip Ratio" 9305 id="873" />
9306 show_simple="true" 9306 </param_driver>
9307 label_min="More Upper Lip" 9307 </param>
9308 label_max="More Lower Lip" 9308
9309 value_min="0" 9309 <param
9310 value_max="1" 9310 id="163"
9311 value_default=".5" 9311 group="0"
9312 camera_distance=".3" 9312 wearable="skin"
9313 camera_elevation=".04" 9313 edit_group="skin_facedetail"
9314 camera_angle="20"> 9314 edit_group_order="3"
9315 <param_driver> 9315 name="wrinkles"
9316 <driven 9316 label_min="Less"
9317 id="797" 9317 label_max="More"
9318 min1="0" 9318 value_min="0"
9319 max1="0" 9319 value_max="1"
9320 max2="0" 9320 camera_distance=".3"
9321 min2=".5" /> 9321 camera_elevation=".07"
9322 9322 value_default="0">
9323 <driven 9323 <param_driver>
9324 id="798" 9324<!--<driven
9325 min1=".5" 9325 id="128" />-->
9326 max1="1" 9326 <driven
9327 max2="1" 9327 id="118" />
9328 min2="1" /> 9328 </param_driver>
9329 </param_driver> 9329 </param>
9330 </param> 9330
9331 9331 <param
9332 <param 9332 id="505"
9333 id="155" 9333 group="0"
9334 group="0" 9334 wearable="shape"
9335 wearable="shape" 9335 edit_group="shape_mouth"
9336 edit_group="shape_mouth" 9336 edit_group_order="3"
9337 edit_group_order="1" 9337 name="Lip Thickness"
9338 name="Lip Width" 9338 label_min="Thin Lips"
9339 label="Lip Width" 9339 label_max="Fat Lips"
9340 label_min="Narrow Lips" 9340 value_min="0"
9341 label_max="Wide Lips" 9341 value_max="1"
9342 show_simple="true" 9342 value_default=".5"
9343 value_min="-0.9" 9343 camera_distance=".3"
9344 value_max="1.3" 9344 camera_elevation=".04"
9345 camera_distance=".3" 9345 camera_angle="20">
9346 camera_elevation=".04" 9346 <param_driver>
9347 value_default="0"> 9347 <driven
9348 <param_driver> 9348 id="26"
9349 <driven 9349 min1="0"
9350 id="29" /> 9350 max1="0"
9351 9351 max2="0"
9352 <driven 9352 min2=".5" />
9353 id="30" /> 9353
9354 </param_driver> 9354 <driven
9355 </param> 9355 id="28"
9356 9356 min1=".5"
9357 <param 9357 max1="1"
9358 id="196" 9358 max2="1"
9359 group="0" 9359 min2="1" />
9360 wearable="shape" 9360 </param_driver>
9361 edit_group="shape_eyes" 9361 </param>
9362 edit_group_order="2" 9362
9363 name="Eye Spacing" 9363 <param
9364 label="Eye Spacing" 9364 id="799"
9365 label_min="Close Set Eyes" 9365 group="0"
9366 label_max="Far Set Eyes" 9366 wearable="shape"
9367 show_simple="true" 9367 edit_group="shape_mouth"
9368 value_min="-2" 9368 edit_group_order="3.2"
9369 value_max="1" 9369 name="Lip Ratio"
9370 value_default="0" 9370 label="Lip Ratio"
9371 camera_elevation=".1" 9371 show_simple="true"
9372 camera_distance=".35" 9372 label_min="More Upper Lip"
9373 camera_angle="5"> 9373 label_max="More Lower Lip"
9374 <param_driver> 9374 value_min="0"
9375 <driven 9375 value_max="1"
9376 id="194" /> 9376 value_default=".5"
9377 9377 camera_distance=".3"
9378 <driven 9378 camera_elevation=".04"
9379 id="195" /> 9379 camera_angle="20">
9380 </param_driver> 9380 <param_driver>
9381 </param> 9381 <driven
9382 9382 id="797"
9383 <param 9383 min1="0"
9384 id="769" 9384 max1="0"
9385 group="0" 9385 max2="0"
9386 wearable="shape" 9386 min2=".5" />
9387 edit_group="shape_eyes" 9387
9388 edit_group_order="4.5" 9388 <driven
9389 name="Eye Depth" 9389 id="798"
9390 label_min="Sunken Eyes" 9390 min1=".5"
9391 label_max="Bugged Eyes" 9391 max1="1"
9392 value_min="0" 9392 max2="1"
9393 value_max="1" 9393 min2="1" />
9394 value_default=".5" 9394 </param_driver>
9395 camera_elevation=".1" 9395 </param>
9396 camera_distance=".3" 9396
9397 camera_angle="75"> 9397 <param
9398 <param_driver> 9398 id="155"
9399 <driven 9399 group="0"
9400 id="767" /> 9400 wearable="shape"
9401 9401 edit_group="shape_mouth"
9402 <driven 9402 edit_group_order="1"
9403 id="768" /> 9403 name="Lip Width"
9404 </param_driver> 9404 label="Lip Width"
9405 </param> 9405 label_min="Narrow Lips"
9406 9406 label_max="Wide Lips"
9407 <param 9407 show_simple="true"
9408 id="198" 9408 value_min="-0.9"
9409 group="0" 9409 value_max="1.3"
9410 wearable="shoes" 9410 camera_distance=".3"
9411 edit_group="shoes" 9411 camera_elevation=".04"
9412 edit_group_order="2" 9412 value_default="0">
9413 name="Heel Height" 9413 <param_driver>
9414 label_min="Low Heels" 9414 <driven
9415 label_max="High Heels" 9415 id="29" />
9416 value_min="0" 9416
9417 value_max="1" 9417 <driven
9418 value_default="0" 9418 id="30" />
9419 camera_angle="45" 9419 </param_driver>
9420 camera_distance=".8" 9420 </param>
9421 camera_elevation="-1"> 9421
9422 <param_driver> 9422 <param
9423 <driven 9423 id="196"
9424 id="197" /> 9424 group="0"
9425 9425 wearable="shape"
9426 <driven 9426 edit_group="shape_eyes"
9427 id="500" /> 9427 edit_group_order="2"
9428 </param_driver> 9428 name="Eye Spacing"
9429 </param> 9429 label="Eye Spacing"
9430 9430 label_min="Close Set Eyes"
9431 <param 9431 label_max="Far Set Eyes"
9432 id="513" 9432 show_simple="true"
9433 group="0" 9433 value_min="-2"
9434 wearable="shoes" 9434 value_max="1"
9435 edit_group="shoes" 9435 value_default="0"
9436 edit_group_order="3" 9436 camera_elevation=".1"
9437 name="Heel Shape" 9437 camera_distance=".35"
9438 label_min="Pointy Heels" 9438 camera_angle="5">
9439 label_max="Thick Heels" 9439 <param_driver>
9440 value_min="0" 9440 <driven
9441 value_max="1" 9441 id="194" />
9442 value_default=".5" 9442
9443 camera_angle="45" 9443 <driven
9444 camera_distance="1.5" 9444 id="195" />
9445 camera_elevation="-1"> 9445 </param_driver>
9446 <param_driver> 9446 </param>
9447 <driven 9447
9448 id="509" 9448 <param
9449 min1="0" 9449 id="769"
9450 max1="0" 9450 group="0"
9451 max2="0" 9451 wearable="shape"
9452 min2=".5" /> 9452 edit_group="shape_eyes"
9453 9453 edit_group_order="4.5"
9454 <driven 9454 name="Eye Depth"
9455 id="510" 9455 label_min="Sunken Eyes"
9456 min1=".5" 9456 label_max="Bugged Eyes"
9457 max1="1" 9457 value_min="0"
9458 max2="1" 9458 value_max="1"
9459 min2="1" /> 9459 value_default=".5"
9460 </param_driver> 9460 camera_elevation=".1"
9461 </param> 9461 camera_distance=".3"
9462 9462 camera_angle="75">
9463 <param 9463 <param_driver>
9464 id="514" 9464 <driven
9465 group="0" 9465 id="767" />
9466 wearable="shoes" 9466
9467 edit_group="shoes" 9467 <driven
9468 edit_group_order="4" 9468 id="768" />
9469 name="Toe Shape" 9469 </param_driver>
9470 label_min="Pointy" 9470 </param>
9471 label_max="Square" 9471
9472 value_min="0" 9472 <param
9473 value_max="1" 9473 id="198"
9474 value_default=".5" 9474 group="0"
9475 camera_angle="5" 9475 wearable="shoes"
9476 camera_distance=".8" 9476 edit_group="shoes"
9477 camera_elevation="-.8"> 9477 edit_group_order="2"
9478 <param_driver> 9478 name="Heel Height"
9479 <driven 9479 label_min="Low Heels"
9480 id="511" 9480 label_max="High Heels"
9481 min1="0" 9481 value_min="0"
9482 max1="0" 9482 value_max="1"
9483 max2="0" 9483 value_default="0"
9484 min2=".5" /> 9484 camera_angle="45"
9485 9485 camera_distance=".8"
9486 <driven 9486 camera_elevation="-1">
9487 id="512" 9487 <param_driver>
9488 min1=".5" 9488 <driven
9489 max1="1" 9489 id="197" />
9490 max2="1" 9490
9491 min2="1" /> 9491 <driven
9492 </param_driver> 9492 id="500" />
9493 </param> 9493 </param_driver>
9494 9494 </param>
9495 <param 9495
9496 id="503" 9496 <param
9497 group="0" 9497 id="513"
9498 wearable="shoes" 9498 group="0"
9499 edit_group="shoes" 9499 wearable="shoes"
9500 edit_group_order="6" 9500 edit_group="shoes"
9501 name="Platform Height" 9501 edit_group_order="3"
9502 label_min="Low Platforms" 9502 name="Heel Shape"
9503 label_max="High Platforms" 9503 label_min="Pointy Heels"
9504 value_min="0" 9504 label_max="Thick Heels"
9505 value_max="1" 9505 value_min="0"
9506 value_default="0" 9506 value_max="1"
9507 camera_angle="45" 9507 value_default=".5"
9508 camera_distance=".5" 9508 camera_angle="45"
9509 camera_elevation="-1"> 9509 camera_distance="1.5"
9510 <param_driver> 9510 camera_elevation="-1">
9511 <driven 9511 <param_driver>
9512 id="501" /> 9512 <driven
9513 9513 id="509"
9514 <driven 9514 min1="0"
9515 id="502" /> 9515 max1="0"
9516 </param_driver> 9516 max2="0"
9517 </param> 9517 min2=".5" />
9518 9518
9519 <param 9519 <driven
9520 id="193" 9520 id="510"
9521 group="0" 9521 min1=".5"
9522 wearable="shape" 9522 max1="1"
9523 edit_group="shape_head" 9523 max2="1"
9524 edit_group_order="3" 9524 min2="1" />
9525 name="Head Shape" 9525 </param_driver>
9526 label="Head Shape" 9526 </param>
9527 label_min="More Square" 9527
9528 label_max="More Round" 9528 <param
9529 show_simple="true" 9529 id="514"
9530 value_min="0" 9530 group="0"
9531 value_max="1" 9531 wearable="shoes"
9532 value_default=".5" 9532 edit_group="shoes"
9533 camera_elevation=".1" 9533 edit_group_order="4"
9534 camera_distance=".5" 9534 name="Toe Shape"
9535 camera_angle="20"> 9535 label_min="Pointy"
9536 <param_driver> 9536 label_max="Square"
9537 <driven 9537 value_min="0"
9538 id="188" 9538 value_max="1"
9539 min1="0" 9539 value_default=".5"
9540 max1="0" 9540 camera_angle="5"
9541 max2="0" 9541 camera_distance=".8"
9542 min2=".5" /> 9542 camera_elevation="-.8">
9543 9543 <param_driver>
9544 <driven 9544 <driven
9545 id="642" 9545 id="511"
9546 min1="0" 9546 min1="0"
9547 max1="0" 9547 max1="0"
9548 max2="0" 9548 max2="0"
9549 min2=".5" /> 9549 min2=".5" />
9550 9550
9551 <driven 9551 <driven
9552 id="189" 9552 id="512"
9553 min1=".5" 9553 min1=".5"
9554 max1="1" 9554 max1="1"
9555 max2="1" 9555 max2="1"
9556 min2="1" /> 9556 min2="1" />
9557 9557 </param_driver>
9558 <driven 9558 </param>
9559 id="643" 9559
9560 min1=".5" 9560 <param
9561 max1="1" 9561 id="503"
9562 max2="1" 9562 group="0"
9563 min2="1" /> 9563 wearable="shoes"
9564 </param_driver> 9564 edit_group="shoes"
9565 </param> 9565 edit_group_order="6"
9566 9566 name="Platform Height"
9567 <param 9567 label_min="Low Platforms"
9568 id="157" 9568 label_max="High Platforms"
9569 group="0" 9569 value_min="0"
9570 wearable="shape" 9570 value_max="1"
9571 edit_group="shape_torso" 9571 value_default="0"
9572 edit_group_order="13" 9572 camera_angle="45"
9573 name="Belly Size" 9573 camera_distance=".5"
9574 label_min="Small" 9574 camera_elevation="-1">
9575 label_max="Big" 9575 <param_driver>
9576 value_min="0" 9576 <driven
9577 value_max="1" 9577 id="501" />
9578 value_default="0" 9578
9579 camera_distance="1.4" 9579 <driven
9580 camera_angle="30" 9580 id="502" />
9581 camera_elevation=".2"> 9581 </param_driver>
9582 <param_driver> 9582 </param>
9583 <driven 9583
9584 id="104" /> 9584 <param
9585 9585 id="193"
9586 <driven 9586 group="0"
9587 id="156" /> 9587 wearable="shape"
9588 9588 edit_group="shape_head"
9589 <driven 9589 edit_group_order="3"
9590 id="849" /> 9590 name="Head Shape"
9591 </param_driver> 9591 label="Head Shape"
9592 </param> 9592 label_min="More Square"
9593 9593 label_max="More Round"
9594 <param 9594 show_simple="true"
9595 id="637" 9595 value_min="0"
9596 group="0" 9596 value_max="1"
9597 wearable="shape" 9597 value_default=".5"
9598 edit_group="shape_body" 9598 camera_elevation=".1"
9599 edit_group_order="3" 9599 camera_distance=".5"
9600 name="Body Fat" 9600 camera_angle="20">
9601 label_min="Less Body Fat" 9601 <param_driver>
9602 label_max="More Body Fat" 9602 <driven
9603 value_min="0" 9603 id="188"
9604 value_max="1" 9604 min1="0"
9605 value_default="0" 9605 max1="0"
9606 camera_distance="1.8"> 9606 max2="0"
9607 <param_driver> 9607 min2=".5" />
9608 <driven 9608
9609 id="633" /> 9609 <driven
9610 9610 id="642"
9611 <driven 9611 min1="0"
9612 id="634" /> 9612 max1="0"
9613 9613 max2="0"
9614 <driven 9614 min2=".5" />
9615 id="635" /> 9615
9616 9616 <driven
9617 <driven 9617 id="189"
9618 id="851" /> 9618 min1=".5"
9619 </param_driver> 9619 max1="1"
9620 </param> 9620 max2="1"
9621 9621 min2="1" />
9622 <param 9622
9623 id="130" 9623 <driven
9624 group="0" 9624 id="643"
9625 wearable="hair" 9625 min1=".5"
9626 edit_group="hair_style" 9626 max1="1"
9627 edit_group_order="8" 9627 max2="1"
9628 name="Front Fringe" 9628 min2="1" />
9629 label_min="Short" 9629 </param_driver>
9630 label_max="Long" 9630 </param>
9631 value_min="0" 9631
9632 value_max="1" 9632 <param
9633 value_default=".45" 9633 id="157"
9634 camera_elevation=".1" 9634 group="0"
9635 camera_distance=".5" 9635 wearable="shape"
9636 camera_angle="20"> 9636 edit_group="shape_torso"
9637 <param_driver> 9637 edit_group_order="13"
9638 <driven 9638 name="Belly Size"
9639 id="144" 9639 label_min="Small"
9640 min1="0" 9640 label_max="Big"
9641 max1="0" 9641 value_min="0"
9642 max2="0" 9642 value_max="1"
9643 min2=".5" /> 9643 value_default="0"
9644 9644 camera_distance="1.4"
9645 <driven 9645 camera_angle="30"
9646 id="145" 9646 camera_elevation=".2">
9647 min1=".5" 9647 <param_driver>
9648 max1="1" 9648 <driven
9649 max2="1" 9649 id="104" />
9650 min2="1" /> 9650
9651 </param_driver> 9651 <driven
9652 </param> 9652 id="156" />
9653 9653
9654 <param 9654 <driven
9655 id="131" 9655 id="849" />
9656 group="0" 9656 </param_driver>
9657 wearable="hair" 9657 </param>
9658 edit_group="hair_style" 9658
9659 edit_group_order="9" 9659 <param
9660 name="Side Fringe" 9660 id="637"
9661 label_min="Short" 9661 group="0"
9662 label_max="Long" 9662 wearable="shape"
9663 value_min="0" 9663 edit_group="shape_body"
9664 value_max="1" 9664 edit_group_order="3"
9665 value_default=".5" 9665 name="Body Fat"
9666 camera_elevation=".1" 9666 label_min="Less Body Fat"
9667 camera_distance=".5" 9667 label_max="More Body Fat"
9668 camera_angle="90"> 9668 value_min="0"
9669 <param_driver> 9669 value_max="1"
9670 <driven 9670 value_default="0"
9671 id="146" 9671 camera_distance="1.8">
9672 min1="0" 9672 <param_driver>
9673 max1="0" 9673 <driven
9674 max2="0" 9674 id="633" />
9675 min2=".5" /> 9675
9676 9676 <driven
9677 <driven 9677 id="634" />
9678 id="147" 9678
9679 min1=".5" 9679 <driven
9680 max1="1" 9680 id="635" />
9681 max2="1" 9681
9682 min2="1" /> 9682 <driven
9683 </param_driver> 9683 id="851" />
9684 </param> 9684 </param_driver>
9685 9685 </param>
9686 <param 9686
9687 id="132" 9687 <param
9688 group="0" 9688 id="130"
9689 wearable="hair" 9689 group="0"
9690 edit_group="hair_style" 9690 wearable="hair"
9691 edit_group_order="10" 9691 edit_group="hair_style"
9692 name="Back Fringe" 9692 edit_group_order="8"
9693 label_min="Short" 9693 name="Front Fringe"
9694 label_max="Long" 9694 label_min="Short"
9695 value_min="0" 9695 label_max="Long"
9696 value_max="1" 9696 value_min="0"
9697 value_default=".39" 9697 value_max="1"
9698 camera_elevation=".1" 9698 value_default=".45"
9699 camera_distance=".5" 9699 camera_elevation=".1"
9700 camera_angle="160"> 9700 camera_distance=".5"
9701 <param_driver> 9701 camera_angle="20">
9702 <driven 9702 <param_driver>
9703 id="148" 9703 <driven
9704 min1="0" 9704 id="144"
9705 max1="0" 9705 min1="0"
9706 max2="0" 9706 max1="0"
9707 min2=".5" /> 9707 max2="0"
9708 9708 min2=".5" />
9709 <driven 9709
9710 id="149" 9710 <driven
9711 min1=".5" 9711 id="145"
9712 max1="1" 9712 min1=".5"
9713 max2="1" 9713 max1="1"
9714 min2="1" /> 9714 max2="1"
9715 </param_driver> 9715 min2="1" />
9716 </param> 9716 </param_driver>
9717 9717 </param>
9718 <param 9718
9719 id="133" 9719 <param
9720 group="0" 9720 id="131"
9721 wearable="hair" 9721 group="0"
9722 edit_group="hair_style" 9722 wearable="hair"
9723 edit_group_order="2" 9723 edit_group="hair_style"
9724 name="Hair Front" 9724 edit_group_order="9"
9725 label_min="Short" 9725 name="Side Fringe"
9726 label_max="Long" 9726 label_min="Short"
9727 value_min="0" 9727 label_max="Long"
9728 value_max="1" 9728 value_min="0"
9729 value_default=".25" 9729 value_max="1"
9730 camera_elevation=".1" 9730 value_default=".5"
9731 camera_distance=".5" 9731 camera_elevation=".1"
9732 camera_angle="20"> 9732 camera_distance=".5"
9733 <param_driver> 9733 camera_angle="90">
9734 <driven 9734 <param_driver>
9735 id="172" 9735 <driven
9736 min1="0" 9736 id="146"
9737 max1="0" 9737 min1="0"
9738 max2="0" 9738 max1="0"
9739 min2=".5" /> 9739 max2="0"
9740 9740 min2=".5" />
9741 <driven 9741
9742 id="171" 9742 <driven
9743 min1=".5" 9743 id="147"
9744 max1="1" 9744 min1=".5"
9745 max2="1" 9745 max1="1"
9746 min2="1" /> 9746 max2="1"
9747 </param_driver> 9747 min2="1" />
9748 </param> 9748 </param_driver>
9749 9749 </param>
9750 <param 9750
9751 id="134" 9751 <param
9752 group="0" 9752 id="132"
9753 wearable="hair" 9753 group="0"
9754 edit_group="hair_style" 9754 wearable="hair"
9755 edit_group_order="3" 9755 edit_group="hair_style"
9756 name="Hair Sides" 9756 edit_group_order="10"
9757 label_min="Short" 9757 name="Back Fringe"
9758 label_max="Long" 9758 label_min="Short"
9759 value_min="0" 9759 label_max="Long"
9760 value_max="1" 9760 value_min="0"
9761 value_default=".5" 9761 value_max="1"
9762 camera_elevation=".1" 9762 value_default=".39"
9763 camera_distance=".5" 9763 camera_elevation=".1"
9764 camera_angle="90"> 9764 camera_distance=".5"
9765 <param_driver> 9765 camera_angle="160">
9766 <driven 9766 <param_driver>
9767 id="174" 9767 <driven
9768 min1="0" 9768 id="148"
9769 max1="0" 9769 min1="0"
9770 max2="0" 9770 max1="0"
9771 min2=".5" /> 9771 max2="0"
9772 9772 min2=".5" />
9773 <driven 9773
9774 id="173" 9774 <driven
9775 min1=".5" 9775 id="149"
9776 max1="1" 9776 min1=".5"
9777 max2="1" 9777 max1="1"
9778 min2="1" /> 9778 max2="1"
9779 </param_driver> 9779 min2="1" />
9780 </param> 9780 </param_driver>
9781 9781 </param>
9782 <param 9782
9783 id="135" 9783 <param
9784 group="0" 9784 id="133"
9785 wearable="hair" 9785 group="0"
9786 edit_group="hair_style" 9786 wearable="hair"
9787 edit_group_order="4" 9787 edit_group="hair_style"
9788 name="Hair Back" 9788 edit_group_order="2"
9789 show_simple="true" 9789 name="Hair Front"
9790 label_min="Short" 9790 label_min="Short"
9791 label_max="Long" 9791 label_max="Long"
9792 value_min="0" 9792 value_min="0"
9793 value_max="1" 9793 value_max="1"
9794 value_default=".55" 9794 value_default=".25"
9795 camera_elevation="-.1" 9795 camera_elevation=".1"
9796 camera_distance=".8" 9796 camera_distance=".5"
9797 camera_angle="160"> 9797 camera_angle="20">
9798 <param_driver> 9798 <param_driver>
9799 <driven 9799 <driven
9800 id="176" 9800 id="172"
9801 min1="0" 9801 min1="0"
9802 max1="0" 9802 max1="0"
9803 max2="0" 9803 max2="0"
9804 min2=".5" /> 9804 min2=".5" />
9805 9805
9806 <driven 9806 <driven
9807 id="175" 9807 id="171"
9808 min1=".5" 9808 min1=".5"
9809 max1="1" 9809 max1="1"
9810 max2="1" 9810 max2="1"
9811 min2="1" /> 9811 min2="1" />
9812 </param_driver> 9812 </param_driver>
9813 </param> 9813 </param>
9814 9814
9815 <param 9815 <param
9816 id="136" 9816 id="134"
9817 group="0" 9817 group="0"
9818 wearable="hair" 9818 wearable="hair"
9819 edit_group="hair_style" 9819 edit_group="hair_style"
9820 edit_group_order="11.5" 9820 edit_group_order="3"
9821 name="Hair Sweep" 9821 name="Hair Sides"
9822 label_min="Sweep Forward" 9822 label_min="Short"
9823 label_max="Sweep Back" 9823 label_max="Long"
9824 value_min="0" 9824 value_min="0"
9825 value_max="1" 9825 value_max="1"
9826 value_default=".5" 9826 value_default=".5"
9827 camera_elevation=".1" 9827 camera_elevation=".1"
9828 camera_distance=".5" 9828 camera_distance=".5"
9829 camera_angle="90"> 9829 camera_angle="90">
9830 <param_driver> 9830 <param_driver>
9831 <driven 9831 <driven
9832 id="179" 9832 id="174"
9833 min1="0" 9833 min1="0"
9834 max1="0" 9834 max1="0"
9835 max2="0" 9835 max2="0"
9836 min2=".5" /> 9836 min2=".5" />
9837 9837
9838 <driven 9838 <driven
9839 id="178" 9839 id="173"
9840 min1=".5" 9840 min1=".5"
9841 max1="1" 9841 max1="1"
9842 max2="1" 9842 max2="1"
9843 min2="1" /> 9843 min2="1" />
9844 </param_driver> 9844 </param_driver>
9845 </param> 9845 </param>
9846 9846
9847 <param 9847 <param
9848 id="137" 9848 id="135"
9849 group="0" 9849 group="0"
9850 wearable="hair" 9850 wearable="hair"
9851 edit_group="hair_style" 9851 edit_group="hair_style"
9852 edit_group_order="16" 9852 edit_group_order="4"
9853 name="Hair Tilt" 9853 name="Hair Back"
9854 label_min="Left" 9854 show_simple="true"
9855 label_max="Right" 9855 label_min="Short"
9856 value_min="0" 9856 label_max="Long"
9857 value_max="1" 9857 value_min="0"
9858 value_default=".5" 9858 value_max="1"
9859 camera_elevation=".1" 9859 value_default=".55"
9860 camera_distance=".5" 9860 camera_elevation="-.1"
9861 camera_angle="0"> 9861 camera_distance=".8"
9862 <param_driver> 9862 camera_angle="160">
9863 <driven 9863 <param_driver>
9864 id="190" 9864 <driven
9865 min1="0" 9865 id="176"
9866 max1="0" 9866 min1="0"
9867 max2="0" 9867 max1="0"
9868 min2=".5" /> 9868 max2="0"
9869 9869 min2=".5" />
9870 <driven 9870
9871 id="191" 9871 <driven
9872 min1=".5" 9872 id="175"
9873 max1="1" 9873 min1=".5"
9874 max2="1" 9874 max1="1"
9875 min2="1" /> 9875 max2="1"
9876 </param_driver> 9876 min2="1" />
9877 </param> 9877 </param_driver>
9878 9878 </param>
9879 <param 9879
9880 id="608" 9880 <param
9881 group="0" 9881 id="136"
9882 wearable="jacket" 9882 group="0"
9883 edit_group="jacket" 9883 wearable="hair"
9884 edit_group_order="2" 9884 edit_group="hair_style"
9885 name="bottom length lower" 9885 edit_group_order="11.5"
9886 label="Jacket Length" 9886 name="Hair Sweep"
9887 label_min="Short" 9887 label_min="Sweep Forward"
9888 label_max="Long" 9888 label_max="Sweep Back"
9889 value_min="0" 9889 value_min="0"
9890 value_max="1" 9890 value_max="1"
9891 value_default=".8" 9891 value_default=".5"
9892 camera_distance="1.4" 9892 camera_elevation=".1"
9893 camera_angle="30" 9893 camera_distance=".5"
9894 camera_elevation=".2"> 9894 camera_angle="90">
9895 <param_driver> 9895 <param_driver>
9896 <driven 9896 <driven
9897 id="620" /> 9897 id="179"
9898 9898 min1="0"
9899 <driven 9899 max1="0"
9900 id="1025" /> 9900 max2="0"
9901 9901 min2=".5" />
9902 <driven 9902
9903 id="1037" /> 9903 <driven
9904 9904 id="178"
9905 <driven 9905 min1=".5"
9906 id="621" /> 9906 max1="1"
9907 9907 max2="1"
9908 <driven 9908 min2="1" />
9909 id="1027" /> 9909 </param_driver>
9910 9910 </param>
9911 <driven 9911
9912 id="1033" /> 9912 <param
9913 </param_driver> 9913 id="137"
9914 </param> 9914 group="0"
9915 9915 wearable="hair"
9916 <param 9916 edit_group="hair_style"
9917 id="609" 9917 edit_group_order="16"
9918 group="0" 9918 name="Hair Tilt"
9919 wearable="jacket" 9919 label_min="Left"
9920 edit_group="jacket" 9920 label_max="Right"
9921 edit_group_order="4" 9921 value_min="0"
9922 name="open jacket" 9922 value_max="1"
9923 label="Open Front" 9923 value_default=".5"
9924 label_min="Open" 9924 camera_elevation=".1"
9925 label_max="Closed" 9925 camera_distance=".5"
9926 value_min="0" 9926 camera_angle="0">
9927 value_max="1" 9927 <param_driver>
9928 value_default=".2" 9928 <driven
9929 camera_distance="1.4" 9929 id="190"
9930 camera_angle="30" 9930 min1="0"
9931 camera_elevation=".2"> 9931 max1="0"
9932 <param_driver> 9932 max2="0"
9933 <driven 9933 min2=".5" />
9934 id="622" /> 9934
9935 9935 <driven
9936 <driven 9936 id="191"
9937 id="1026" /> 9937 min1=".5"
9938 9938 max1="1"
9939 <driven 9939 max2="1"
9940 id="1038" /> 9940 min2="1" />
9941 9941 </param_driver>
9942 <driven 9942 </param>
9943 id="623" /> 9943
9944 9944 <param
9945 <driven 9945 id="608"
9946 id="1028" /> 9946 group="0"
9947 9947 wearable="jacket"
9948 <driven 9948 edit_group="jacket"
9949 id="1034" /> 9949 edit_group_order="2"
9950 </param_driver> 9950 name="bottom length lower"
9951 </param> 9951 label="Jacket Length"
9952 9952 label_min="Short"
9953 <param 9953 label_max="Long"
9954 id="105" 9954 value_min="0"
9955 group="0" 9955 value_max="1"
9956 sex="female" 9956 value_default=".8"
9957 wearable="shape" 9957 camera_distance="1.4"
9958 edit_group="shape_torso" 9958 camera_angle="30"
9959 edit_group_order="6" 9959 camera_elevation=".2">
9960 name="Breast Size" 9960 <param_driver>
9961 label_min="Small" 9961 <driven
9962 label_max="Large" 9962 id="620" />
9963 value_min="0" 9963
9964 value_max="1" 9964 <driven
9965 value_default=".5" 9965 id="1025" />
9966 camera_elevation=".3" 9966
9967 camera_distance="1.2" 9967 <driven
9968 camera_angle="30"> 9968 id="1037" />
9969 <param_driver> 9969
9970 <driven 9970 <driven
9971 id="843" 9971 id="621" />
9972 min1="0" 9972
9973 max1="0" 9973 <driven
9974 max2="0" 9974 id="1027" />
9975 min2=".01" /> 9975
9976 9976 <driven
9977 <driven 9977 id="1033" />
9978 id="627" 9978 </param_driver>
9979 min1="0" 9979 </param>
9980 max1="0.01" 9980
9981 max2="0.01" 9981 <param
9982 min2=".5" /> 9982 id="609"
9983 9983 group="0"
9984 <driven 9984 wearable="jacket"
9985 id="626" 9985 edit_group="jacket"
9986 min1=".5" 9986 edit_group_order="4"
9987 max1="1" 9987 name="open jacket"
9988 max2="1" 9988 label="Open Front"
9989 min2="1" /> 9989 label_min="Open"
9990 </param_driver> 9990 label_max="Closed"
9991 </param> 9991 value_min="0"
9992 9992 value_max="1"
9993 <param 9993 value_default=".2"
9994 id="629" 9994 camera_distance="1.4"
9995 group="0" 9995 camera_angle="30"
9996 wearable="shape" 9996 camera_elevation=".2">
9997 edit_group="shape_head" 9997 <param_driver>
9998 edit_group_order="6" 9998 <driven
9999 name="Forehead Angle" 9999 id="622" />
10000 label_min="More Vertical" 10000
10001 label_max="More Sloped" 10001 <driven
10002 value_min="0" 10002 id="1026" />
10003 value_max="1" 10003
10004 value_default=".5" 10004 <driven
10005 camera_elevation=".1" 10005 id="1038" />
10006 camera_distance=".5" 10006
10007 camera_angle="70"> 10007 <driven
10008 <param_driver> 10008 id="623" />
10009 <driven 10009
10010 id="630" 10010 <driven
10011 min1="0" 10011 id="1028" />
10012 max1="0" 10012
10013 max2="0" 10013 <driven
10014 min2=".5" /> 10014 id="1034" />
10015 10015 </param_driver>
10016 <driven 10016 </param>
10017 id="644" 10017
10018 min1="0" 10018 <param
10019 max1="0" 10019 id="105"
10020 max2="0" 10020 group="0"
10021 min2=".5" /> 10021 sex="female"
10022 10022 wearable="shape"
10023 <driven 10023 edit_group="shape_torso"
10024 id="631" 10024 edit_group_order="6"
10025 min1=".5" 10025 name="Breast Size"
10026 max1="1" 10026 label_min="Small"
10027 max2="1" 10027 label_max="Large"
10028 min2="1" /> 10028 value_min="0"
10029 10029 value_max="1"
10030 <driven 10030 value_default=".5"
10031 id="645" 10031 camera_elevation=".3"
10032 min1=".5" 10032 camera_distance="1.2"
10033 max1="1" 10033 camera_angle="30">
10034 max2="1" 10034 <param_driver>
10035 min2="1" /> 10035 <driven
10036 </param_driver> 10036 id="843"
10037 </param> 10037 min1="0"
10038 10038 max1="0"
10039 <param 10039 max2="0"
10040 id="646" 10040 min2=".01" />
10041 group="0" 10041
10042 name="Egg_Head" 10042 <driven
10043 label="Egg Head" 10043 id="627"
10044 wearable="shape" 10044 min1="0"
10045 edit_group="shape_head" 10045 max1="0.01"
10046 edit_group_order="4" 10046 max2="0.01"
10047 label_min="Chin Heavy" 10047 min2=".5" />
10048 label_max="Forehead Heavy" 10048
10049 show_simple="true" 10049 <driven
10050 value_min="-1.3" 10050 id="626"
10051 value_max="1" 10051 min1=".5"
10052 value_default="0" 10052 max1="1"
10053 camera_elevation=".1" 10053 max2="1"
10054 camera_distance=".5" 10054 min2="1" />
10055 camera_angle="20"> 10055 </param_driver>
10056 <param_driver> 10056 </param>
10057 <driven 10057
10058 id="640" /> 10058 <param
10059 10059 id="629"
10060 <driven 10060 group="0"
10061 id="186" /> 10061 wearable="shape"
10062 </param_driver> 10062 edit_group="shape_head"
10063 </param> 10063 edit_group_order="6"
10064 10064 name="Forehead Angle"
10065 <param 10065 label_min="More Vertical"
10066 id="647" 10066 label_max="More Sloped"
10067 group="0" 10067 value_min="0"
10068 name="Squash_Stretch_Head" 10068 value_max="1"
10069 label="Head Stretch" 10069 value_default=".5"
10070 wearable="shape" 10070 camera_elevation=".1"
10071 edit_group="shape_head" 10071 camera_distance=".5"
10072 edit_group_order="2" 10072 camera_angle="70">
10073 show_simple="true" 10073 <param_driver>
10074 label_min="Squash Head" 10074 <driven
10075 label_max="Stretch Head" 10075 id="630"
10076 value_min="-0.5" 10076 min1="0"
10077 value_max="1" 10077 max1="0"
10078 value_default="0" 10078 max2="0"
10079 camera_elevation=".1" 10079 min2=".5" />
10080 camera_distance=".5" 10080
10081 camera_angle="20"> 10081 <driven
10082 <param_driver> 10082 id="644"
10083 <driven 10083 min1="0"
10084 id="641" /> 10084 max1="0"
10085 10085 max2="0"
10086 <driven 10086 min2=".5" />
10087 id="187" /> 10087
10088 </param_driver> 10088 <driven
10089 </param> 10089 id="631"
10090 10090 min1=".5"
10091 <param 10091 max1="1"
10092 id="649" 10092 max2="1"
10093 group="0" 10093 min2="1" />
10094 sex="female" 10094
10095 wearable="shape" 10095 <driven
10096 edit_group="shape_torso" 10096 id="645"
10097 edit_group_order="1.1" 10097 min1=".5"
10098 name="Torso Muscles" 10098 max1="1"
10099 label="Torso Muscles" 10099 max2="1"
10100 show_simple="true" 10100 min2="1" />
10101 label_min="Less Muscular" 10101 </param_driver>
10102 label_max="More Muscular" 10102 </param>
10103 value_min="0" 10103
10104 value_max="1" 10104 <param
10105 value_default=".5" 10105 id="646"
10106 camera_elevation=".1" 10106 group="0"
10107 camera_distance="1" 10107 name="Egg_Head"
10108 camera_angle="15"> 10108 label="Egg Head"
10109 <param_driver> 10109 wearable="shape"
10110 <driven 10110 edit_group="shape_head"
10111 id="648" 10111 edit_group_order="4"
10112 min1="0" 10112 label_min="Chin Heavy"
10113 max1="0" 10113 label_max="Forehead Heavy"
10114 max2="0" 10114 show_simple="true"
10115 min2=".5" /> 10115 value_min="-1.3"
10116 10116 value_max="1"
10117 <driven 10117 value_default="0"
10118 id="106" 10118 camera_elevation=".1"
10119 min1=".5" 10119 camera_distance=".5"
10120 max1="1" 10120 camera_angle="20">
10121 max2="1" 10121 <param_driver>
10122 min2="1" /> 10122 <driven
10123 </param_driver> 10123 id="640" />
10124 </param> 10124
10125 10125 <driven
10126 <param 10126 id="186" />
10127 id="678" 10127 </param_driver>
10128 group="0" 10128 </param>
10129 sex="male" 10129
10130 wearable="shape" 10130 <param
10131 edit_group="shape_torso" 10131 id="647"
10132 edit_group_order="1" 10132 group="0"
10133 name="Torso Muscles" 10133 name="Squash_Stretch_Head"
10134 show_simple="true" 10134 label="Head Stretch"
10135 label_min="Less Muscular" 10135 wearable="shape"
10136 label_max="More Muscular" 10136 edit_group="shape_head"
10137 value_min="0" 10137 edit_group_order="2"
10138 value_max="1" 10138 show_simple="true"
10139 value_default=".5" 10139 label_min="Squash Head"
10140 camera_elevation=".1" 10140 label_max="Stretch Head"
10141 camera_distance="1.2" 10141 value_min="-0.5"
10142 camera_angle="0"> 10142 value_max="1"
10143 <param_driver> 10143 value_default="0"
10144 <driven 10144 camera_elevation=".1"
10145 id="677" 10145 camera_distance=".5"
10146 min1="0" 10146 camera_angle="20">
10147 max1="0" 10147 <param_driver>
10148 max2="0" 10148 <driven
10149 min2=".5" /> 10149 id="641" />
10150 10150
10151 <driven 10151 <driven
10152 id="106" 10152 id="187" />
10153 min1=".5" 10153 </param_driver>
10154 max1="1" 10154 </param>
10155 max2="1" 10155
10156 min2="1" /> 10156 <param
10157 </param_driver> 10157 id="649"
10158 </param> 10158 group="0"
10159 10159 sex="female"
10160 <param 10160 wearable="shape"
10161 id="652" 10161 edit_group="shape_torso"
10162 group="0" 10162 edit_group_order="1.1"
10163 wearable="shape" 10163 name="Torso Muscles"
10164 edit_group="shape_legs" 10164 label="Torso Muscles"
10165 edit_group_order="1" 10165 show_simple="true"
10166 name="Leg Muscles" 10166 label_min="Less Muscular"
10167 label_min="Less Muscular" 10167 label_max="More Muscular"
10168 label_max="More Muscular" 10168 value_min="0"
10169 show_simple="true" 10169 value_max="1"
10170 value_min="0" 10170 value_default=".5"
10171 value_max="1" 10171 camera_elevation=".1"
10172 value_default=".5" 10172 camera_distance="1"
10173 camera_distance="1.3" 10173 camera_angle="15">
10174 camera_elevation="-.5" 10174 <param_driver>
10175 camera_angle="15"> 10175 <driven
10176 <param_driver> 10176 id="648"
10177 <driven 10177 min1="0"
10178 id="651" 10178 max1="0"
10179 min1="0" 10179 max2="0"
10180 max1="0" 10180 min2=".5" />
10181 max2="0" 10181
10182 min2=".5" /> 10182 <driven
10183 10183 id="106"
10184 <driven 10184 min1=".5"
10185 id="152" 10185 max1="1"
10186 min1=".5" 10186 max2="1"
10187 max1="1" 10187 min2="1" />
10188 max2="1" 10188 </param_driver>
10189 min2="1" /> 10189 </param>
10190 </param_driver> 10190
10191 </param> 10191 <param
10192 10192 id="678"
10193 <param 10193 group="0"
10194 id="80" 10194 sex="male"
10195 name="male" 10195 wearable="shape"
10196 group="0" 10196 edit_group="shape_torso"
10197 edit_group="dummy" 10197 edit_group_order="1"
10198 wearable="shape" 10198 name="Torso Muscles"
10199 value_min="0" 10199 show_simple="true"
10200 value_max="1"> 10200 label_min="Less Muscular"
10201 <param_driver> 10201 label_max="More Muscular"
10202 <driven 10202 value_min="0"
10203 id="32" /> 10203 value_max="1"
10204 10204 value_default=".5"
10205 <driven 10205 camera_elevation=".1"
10206 id="153" /> 10206 camera_distance="1.2"
10207 10207 camera_angle="0">
10208 <driven 10208 <param_driver>
10209 id="40" /> 10209 <driven
10210 10210 id="677"
10211 <driven 10211 min1="0"
10212 id="100" /> 10212 max1="0"
10213 10213 max2="0"
10214 <driven 10214 min2=".5" />
10215 id="857" /> 10215
10216 </param_driver> 10216 <driven
10217 </param> 10217 id="106"
10218 10218 min1=".5"
10219 <param 10219 max1="1"
10220 id="659" 10220 max2="1"
10221 group="0" 10221 min2="1" />
10222 wearable="shape" 10222 </param_driver>
10223 edit_group="shape_mouth" 10223 </param>
10224 edit_group_order="5" 10224
10225 name="Mouth Corner" 10225 <param
10226 label_min="Corner Down" 10226 id="652"
10227 label_max="Corner Up" 10227 group="0"
10228 value_min="0" 10228 wearable="shape"
10229 value_max="1" 10229 edit_group="shape_legs"
10230 value_default=".5" 10230 edit_group_order="1"
10231 camera_elevation="0" 10231 name="Leg Muscles"
10232 camera_distance=".28"> 10232 label_min="Less Muscular"
10233 <param_driver> 10233 label_max="More Muscular"
10234 <driven 10234 show_simple="true"
10235 id="658" 10235 value_min="0"
10236 min1="0" 10236 value_max="1"
10237 max1="0" 10237 value_default=".5"
10238 max2="0" 10238 camera_distance="1.3"
10239 min2=".5" /> 10239 camera_elevation="-.5"
10240 10240 camera_angle="15">
10241 <driven 10241 <param_driver>
10242 id="657" 10242 <driven
10243 min1=".5" 10243 id="651"
10244 max1="1" 10244 min1="0"
10245 max2="1" 10245 max1="0"
10246 min2="1" /> 10246 max2="0"
10247 </param_driver> 10247 min2=".5" />
10248 </param> 10248
10249 10249 <driven
10250 <param 10250 id="152"
10251 id="662" 10251 min1=".5"
10252 group="0" 10252 max1="1"
10253 wearable="shape" 10253 max2="1"
10254 edit_group="shape_head" 10254 min2="1" />
10255 edit_group_order="5" 10255 </param_driver>
10256 name="Face Shear" 10256 </param>
10257 label_min="Shear Right Up" 10257
10258 label_max="Shear Left Up" 10258 <param
10259 value_min="0" 10259 id="80"
10260 value_max="1" 10260 name="male"
10261 value_default=".5" 10261 group="0"
10262 camera_elevation=".1" 10262 edit_group="dummy"
10263 camera_distance=".5"> 10263 wearable="shape"
10264 <param_driver> 10264 value_min="0"
10265 <driven 10265 value_max="1">
10266 id="660" /> 10266 <param_driver>
10267 10267 <driven
10268 <driven 10268 id="32" />
10269 id="661" /> 10269
10270 10270 <driven
10271 <driven 10271 id="153" />
10272 id="774" /> 10272
10273 </param_driver> 10273 <driven
10274 </param> 10274 id="40" />
10275 10275
10276 <param 10276 <driven
10277 id="773" 10277 id="100" />
10278 group="0" 10278
10279 wearable="shape" 10279 <driven
10280 edit_group="shape_head" 10280 id="857" />
10281 edit_group_order="4.5" 10281 </param_driver>
10282 name="Head Length" 10282 </param>
10283 label_min="Flat Head" 10283
10284 label_max="Long Head" 10284 <param
10285 value_min="0" 10285 id="659"
10286 value_max="1" 10286 group="0"
10287 value_default=".5" 10287 wearable="shape"
10288 camera_elevation=".1" 10288 edit_group="shape_mouth"
10289 camera_distance=".5" 10289 edit_group_order="5"
10290 camera_angle="75"> 10290 name="Mouth Corner"
10291 <param_driver> 10291 label_min="Corner Down"
10292 <driven 10292 label_max="Corner Up"
10293 id="770" /> 10293 value_min="0"
10294 10294 value_max="1"
10295 <driven 10295 value_default=".5"
10296 id="771" /> 10296 camera_elevation="0"
10297 10297 camera_distance=".28">
10298 <driven 10298 <param_driver>
10299 id="772" /> 10299 <driven
10300 </param_driver> 10300 id="658"
10301 </param> 10301 min1="0"
10302 10302 max1="0"
10303 <param 10303 max2="0"
10304 id="682" 10304 min2=".5" />
10305 group="0" 10305
10306 wearable="shape" 10306 <driven
10307 edit_group="shape_head" 10307 id="657"
10308 edit_group_order="1" 10308 min1=".5"
10309 name="Head Size" 10309 max1="1"
10310 label="Head Size" 10310 max2="1"
10311 label_min="Small Head" 10311 min2="1" />
10312 label_max="Big Head" 10312 </param_driver>
10313 show_simple="true" 10313 </param>
10314 value_min="0" 10314
10315 value_max="1" 10315 <param
10316 value_default=".5" 10316 id="662"
10317 camera_elevation=".1" 10317 group="0"
10318 camera_distance=".5"> 10318 wearable="shape"
10319 <param_driver> 10319 edit_group="shape_head"
10320 <driven 10320 edit_group_order="5"
10321 id="679" /> 10321 name="Face Shear"
10322 10322 label_min="Shear Right Up"
10323 <driven 10323 label_max="Shear Left Up"
10324 id="694" /> 10324 value_min="0"
10325 10325 value_max="1"
10326 <driven 10326 value_default=".5"
10327 id="680" /> 10327 camera_elevation=".1"
10328 10328 camera_distance=".5">
10329 <driven 10329 <param_driver>
10330 id="681" /> 10330 <driven
10331 10331 id="660" />
10332 <driven 10332
10333 id="655" /> 10333 <driven
10334 </param_driver> 10334 id="661" />
10335 </param> 10335
10336 10336 <driven
10337 <param 10337 id="774" />
10338 id="690" 10338 </param_driver>
10339 group="0" 10339 </param>
10340 wearable="shape" 10340
10341 edit_group="shape_eyes" 10341 <param
10342 edit_group_order="1" 10342 id="773"
10343 name="Eye Size" 10343 group="0"
10344 label="Eye Size" 10344 wearable="shape"
10345 label_min="Beady Eyes" 10345 edit_group="shape_head"
10346 label_max="Anime Eyes" 10346 edit_group_order="4.5"
10347 value_min="0" 10347 name="Head Length"
10348 value_max="1" 10348 label_min="Flat Head"
10349 value_default=".5" 10349 label_max="Long Head"
10350 show_simple="true" 10350 value_min="0"
10351 camera_elevation=".1" 10351 value_max="1"
10352 camera_distance=".35"> 10352 value_default=".5"
10353 <param_driver> 10353 camera_elevation=".1"
10354 <driven 10354 camera_distance=".5"
10355 id="686" /> 10355 camera_angle="75">
10356 10356 <param_driver>
10357 <driven 10357 <driven
10358 id="687" /> 10358 id="770" />
10359 10359
10360 <driven 10360 <driven
10361 id="695" /> 10361 id="771" />
10362 10362
10363 <driven 10363 <driven
10364 id="688" /> 10364 id="772" />
10365 10365 </param_driver>
10366 <driven 10366 </param>
10367 id="691" /> 10367
10368 10368 <param
10369 <driven 10369 id="682"
10370 id="689" /> 10370 group="0"
10371 </param_driver> 10371 wearable="shape"
10372 </param> 10372 edit_group="shape_head"
10373 10373 edit_group_order="1"
10374 <param 10374 name="Head Size"
10375 id="752" 10375 label="Head Size"
10376 group="0" 10376 label_min="Small Head"
10377 sex="male" 10377 label_max="Big Head"
10378 wearable="hair" 10378 show_simple="true"
10379 edit_group="hair_facial" 10379 value_min="0"
10380 edit_group_order="1" 10380 value_max="1"
10381 name="Hair Thickness" 10381 value_default=".5"
10382 label_min="5 O'Clock Shadow" 10382 camera_elevation=".1"
10383 label_max="Bushy Hair" 10383 camera_distance=".5">
10384 value_min="0" 10384 <param_driver>
10385 value_max="1" 10385 <driven
10386 value_default=".5" 10386 id="679" />
10387 camera_elevation="0" 10387
10388 camera_distance=".28"> 10388 <driven
10389 <param_driver> 10389 id="694" />
10390 <driven 10390
10391 id="751" 10391 <driven
10392 min1="0" 10392 id="680" />
10393 max1="0" 10393
10394 max2="0" 10394 <driven
10395 min2=".2" /> 10395 id="681" />
10396 10396
10397 <driven 10397 <driven
10398 id="1012" 10398 id="655" />
10399 min1="0" 10399 </param_driver>
10400 max1="0" 10400 </param>
10401 max2=".2" 10401
10402 min2=".6" /> 10402 <param
10403 10403 id="690"
10404 <driven 10404 group="0"
10405 id="400" 10405 wearable="shape"
10406 min1=".2" 10406 edit_group="shape_eyes"
10407 max1="1" 10407 edit_group_order="1"
10408 max2="1" 10408 name="Eye Size"
10409 min2="1" /> 10409 label="Eye Size"
10410 </param_driver> 10410 label_min="Beady Eyes"
10411 </param> 10411 label_max="Anime Eyes"
10412 10412 value_min="0"
10413 <param 10413 value_max="1"
10414 id="763" 10414 value_default=".5"
10415 group="0" 10415 show_simple="true"
10416 wearable="hair" 10416 camera_elevation=".1"
10417 edit_group="hair_style" 10417 camera_distance=".35">
10418 edit_group_order="1" 10418 <param_driver>
10419 name="Hair Volume" 10419 <driven
10420 show_simple="true" 10420 id="686" />
10421 label_min="Less Volume" 10421
10422 label_max="More Volume" 10422 <driven
10423 value_min="0" 10423 id="687" />
10424 value_max="1" 10424
10425 value_default=".55" 10425 <driven
10426 camera_elevation=".1" 10426 id="695" />
10427 camera_distance=".5" 10427
10428 camera_angle="20"> 10428 <driven
10429 <param_driver> 10429 id="688" />
10430 <driven 10430
10431 id="761" 10431 <driven
10432 min1="0" 10432 id="691" />
10433 max1="0" 10433
10434 max2="0" 10434 <driven
10435 min2=".5" /> 10435 id="689" />
10436 10436 </param_driver>
10437 <driven 10437 </param>
10438 id="180" 10438
10439 min1=".5" 10439 <param
10440 max1="1" 10440 id="752"
10441 max2="1" 10441 group="0"
10442 min2="1" /> 10442 sex="male"
10443 </param_driver> 10443 wearable="hair"
10444 </param> 10444 edit_group="hair_facial"
10445 10445 edit_group_order="1"
10446 <param 10446 name="Hair Thickness"
10447 id="834" 10447 label_min="5 O'Clock Shadow"
10448 group="0" 10448 label_max="Bushy Hair"
10449 wearable="jacket" 10449 value_min="0"
10450 edit_group="colorpicker" 10450 value_max="1"
10451 name="jacket_red" 10451 value_default=".5"
10452 value_min="0" 10452 camera_elevation="0"
10453 value_max="1" 10453 camera_distance=".28">
10454 value_default="1"> 10454 <param_driver>
10455 <param_driver> 10455 <driven
10456 <driven 10456 id="751"
10457 id="809" 10457 min1="0"
10458 min1="0" 10458 max1="0"
10459 max1="1" 10459 max2="0"
10460 max2="1" 10460 min2=".2" />
10461 min2="1" /> 10461
10462 10462 <driven
10463 <driven 10463 id="1012"
10464 id="831" 10464 min1="0"
10465 min1="0" 10465 max1="0"
10466 max1="1" 10466 max2=".2"
10467 max2="1" 10467 min2=".6" />
10468 min2="1" /> 10468
10469 </param_driver> 10469 <driven
10470 </param> 10470 id="400"
10471 10471 min1=".2"
10472 <param 10472 max1="1"
10473 id="835" 10473 max2="1"
10474 group="0" 10474 min2="1" />
10475 wearable="jacket" 10475 </param_driver>
10476 edit_group="colorpicker" 10476 </param>
10477 name="jacket_green" 10477
10478 value_min="0" 10478 <param
10479 value_max="1" 10479 id="763"
10480 value_default="1"> 10480 group="0"
10481 <param_driver> 10481 wearable="hair"
10482 <driven 10482 edit_group="hair_style"
10483 id="810" 10483 edit_group_order="1"
10484 min1="0" 10484 name="Hair Volume"
10485 max1="1" 10485 show_simple="true"
10486 max2="1" 10486 label_min="Less Volume"
10487 min2="1" /> 10487 label_max="More Volume"
10488 10488 value_min="0"
10489 <driven 10489 value_max="1"
10490 id="832" 10490 value_default=".55"
10491 min1="0" 10491 camera_elevation=".1"
10492 max1="1" 10492 camera_distance=".5"
10493 max2="1" 10493 camera_angle="20">
10494 min2="1" /> 10494 <param_driver>
10495 </param_driver> 10495 <driven
10496 </param> 10496 id="761"
10497 10497 min1="0"
10498 <param 10498 max1="0"
10499 id="836" 10499 max2="0"
10500 group="0" 10500 min2=".5" />
10501 wearable="jacket" 10501
10502 edit_group="colorpicker" 10502 <driven
10503 name="jacket_blue" 10503 id="180"
10504 value_min="0" 10504 min1=".5"
10505 value_max="1" 10505 max1="1"
10506 value_default="1"> 10506 max2="1"
10507 <param_driver> 10507 min2="1" />
10508 <driven 10508 </param_driver>
10509 id="811" 10509 </param>
10510 min1="0" 10510
10511 max1="1" 10511 <param
10512 max2="1" 10512 id="834"
10513 min2="1" /> 10513 group="0"
10514 10514 wearable="jacket"
10515 <driven 10515 edit_group="colorpicker"
10516 id="833" 10516 name="jacket_red"
10517 min1="0" 10517 value_min="0"
10518 max1="1" 10518 value_max="1"
10519 max2="1" 10519 value_default="1">
10520 min2="1" /> 10520 <param_driver>
10521 </param_driver> 10521 <driven
10522 </param> 10522 id="809"
10523 10523 min1="0"
10524 <param 10524 max1="1"
10525 id="785" 10525 max2="1"
10526 group="0" 10526 min2="1" />
10527 wearable="hair" 10527
10528 edit_group="hair_style" 10528 <driven
10529 edit_group_order="14.6" 10529 id="831"
10530 name="Pigtails" 10530 min1="0"
10531 show_simple="true" 10531 max1="1"
10532 label_min="Short Pigtails" 10532 max2="1"
10533 label_max="Long Pigtails" 10533 min2="1" />
10534 value_min="0" 10534 </param_driver>
10535 value_max="1" 10535 </param>
10536 value_default="0" 10536
10537 camera_elevation=".1" 10537 <param
10538 camera_distance=".5" 10538 id="835"
10539 camera_angle="15"> 10539 group="0"
10540 <param_driver> 10540 wearable="jacket"
10541 <driven 10541 edit_group="colorpicker"
10542 id="782" 10542 name="jacket_green"
10543 min1="0" 10543 value_min="0"
10544 max1=".10" 10544 value_max="1"
10545 max2=".10" 10545 value_default="1">
10546 min2=".5" /> 10546 <param_driver>
10547 10547 <driven
10548 <driven 10548 id="810"
10549 id="783" 10549 min1="0"
10550 min1=".10" 10550 max1="1"
10551 max1=".5" 10551 max2="1"
10552 max2=".5" 10552 min2="1" />
10553 min2=".75" /> 10553
10554 10554 <driven
10555 <driven 10555 id="832"
10556 id="790" 10556 min1="0"
10557 min1=".5" 10557 max1="1"
10558 max1=".75" 10558 max2="1"
10559 max2=".75" 10559 min2="1" />
10560 min2="1" /> 10560 </param_driver>
10561 10561 </param>
10562 <driven 10562
10563 id="784" 10563 <param
10564 min1=".75" 10564 id="836"
10565 max1="1" 10565 group="0"
10566 max2="1" 10566 wearable="jacket"
10567 min2="1" /> 10567 edit_group="colorpicker"
10568 </param_driver> 10568 name="jacket_blue"
10569 </param> 10569 value_min="0"
10570 10570 value_max="1"
10571 <param 10571 value_default="1">
10572 id="789" 10572 <param_driver>
10573 group="0" 10573 <driven
10574 wearable="hair" 10574 id="811"
10575 edit_group="hair_style" 10575 min1="0"
10576 edit_group_order="14.7" 10576 max1="1"
10577 name="Ponytail" 10577 max2="1"
10578 label_min="Short Ponytail" 10578 min2="1" />
10579 label_max="Long Ponytail" 10579
10580 value_min="0" 10580 <driven
10581 value_max="1" 10581 id="833"
10582 value_default="0" 10582 min1="0"
10583 camera_elevation=".1" 10583 max1="1"
10584 camera_distance=".5" 10584 max2="1"
10585 camera_angle="180"> 10585 min2="1" />
10586 <param_driver> 10586 </param_driver>
10587 <driven 10587 </param>
10588 id="786" 10588
10589 min1="0" 10589 <param
10590 max1=".10" 10590 id="785"
10591 max2=".10" 10591 group="0"
10592 min2=".66" /> 10592 wearable="hair"
10593 10593 edit_group="hair_style"
10594 <driven 10594 edit_group_order="14.6"
10595 id="787" 10595 name="Pigtails"
10596 min1=".10" 10596 show_simple="true"
10597 max1=".66" 10597 label_min="Short Pigtails"
10598 max2=".66" 10598 label_max="Long Pigtails"
10599 min2="1" /> 10599 value_min="0"
10600 10600 value_max="1"
10601 <driven 10601 value_default="0"
10602 id="788" 10602 camera_elevation=".1"
10603 min1=".66" 10603 camera_distance=".5"
10604 max1="1" 10604 camera_angle="15">
10605 max2="1" 10605 <param_driver>
10606 min2="1" /> 10606 <driven
10607 </param_driver> 10607 id="782"
10608 </param> 10608 min1="0"
10609 10609 max1=".10"
10610 <param 10610 max2=".10"
10611 id="795" 10611 min2=".5" />
10612 group="0" 10612
10613 name="Butt Size" 10613 <driven
10614 label="Butt Size" 10614 id="783"
10615 wearable="shape" 10615 min1=".10"
10616 edit_group="shape_legs" 10616 max1=".5"
10617 edit_group_order="4" 10617 max2=".5"
10618 label_min="Flat Butt" 10618 min2=".75" />
10619 label_max="Big Butt" 10619
10620 value_min="0" 10620 <driven
10621 value_max="1" 10621 id="790"
10622 value_default=".25" 10622 min1=".5"
10623 camera_angle="180" 10623 max1=".75"
10624 camera_distance=".6"> 10624 max2=".75"
10625 <param_driver> 10625 min2="1" />
10626 <driven 10626
10627 id="867" 10627 <driven
10628 min1="0" 10628 id="784"
10629 max1="0" 10629 min1=".75"
10630 max2="0" 10630 max1="1"
10631 min2=".3" /> 10631 max2="1"
10632 10632 min2="1" />
10633 <driven 10633 </param_driver>
10634 id="794" 10634 </param>
10635 min1="0" 10635
10636 max1="0" 10636 <param
10637 max2="0" 10637 id="789"
10638 min2=".3" /> 10638 group="0"
10639 10639 wearable="hair"
10640 <driven 10640 edit_group="hair_style"
10641 id="151" 10641 edit_group_order="14.7"
10642 min1=".3" 10642 name="Ponytail"
10643 max1="1" 10643 label_min="Short Ponytail"
10644 max2="1" 10644 label_max="Long Ponytail"
10645 min2="1" /> 10645 value_min="0"
10646 10646 value_max="1"
10647 <driven 10647 value_default="0"
10648 id="852" 10648 camera_elevation=".1"
10649 min1=".3" 10649 camera_distance=".5"
10650 max1="1" 10650 camera_angle="180">
10651 max2="1" 10651 <param_driver>
10652 min2="1" /> 10652 <driven
10653 </param_driver> 10653 id="786"
10654 </param> 10654 min1="0"
10655 10655 max1=".10"
10656 <param 10656 max2=".10"
10657 id="841" 10657 min2=".66" />
10658 group="0" 10658
10659 name="Bowed_Legs" 10659 <driven
10660 label="Knee Angle" 10660 id="787"
10661 wearable="shape" 10661 min1=".10"
10662 edit_group_order="5.5" 10662 max1=".66"
10663 edit_group="shape_legs" 10663 max2=".66"
10664 label_min="Knock Kneed" 10664 min2="1" />
10665 label_max="Bow Legged" 10665
10666 value_min="-1" 10666 <driven
10667 value_max="1" 10667 id="788"
10668 value_default="0" 10668 min1=".66"
10669 camera_distance="1.3" 10669 max1="1"
10670 camera_elevation="-.5"> 10670 max2="1"
10671 <param_driver> 10671 min2="1" />
10672 <driven 10672 </param_driver>
10673 id="853" /> 10673 </param>
10674 10674
10675 <driven 10675 <param
10676 id="847" /> 10676 id="795"
10677 </param_driver> 10677 group="0"
10678 </param> 10678 name="Butt Size"
10679 10679 label="Butt Size"
10680 <param 10680 wearable="shape"
10681 id="753" 10681 edit_group="shape_legs"
10682 group="0" 10682 edit_group_order="4"
10683 name="Saddlebags" 10683 label_min="Flat Butt"
10684 label="Saddle Bags" 10684 label_max="Big Butt"
10685 wearable="shape" 10685 value_min="0"
10686 edit_group="shape_legs" 10686 value_max="1"
10687 edit_group_order="5" 10687 value_default=".25"
10688 label_min="Less Saddle" 10688 camera_angle="180"
10689 label_max="More Saddle" 10689 camera_distance=".6">
10690 value_min="-0.5" 10690 <param_driver>
10691 value_max="3" 10691 <driven
10692 value_default="0" 10692 id="867"
10693 camera_angle="0" 10693 min1="0"
10694 camera_distance="1.2"> 10694 max1="0"
10695 <param_driver> 10695 max2="0"
10696 <driven 10696 min2=".3" />
10697 id="850" /> 10697
10698 10698 <driven
10699 <driven 10699 id="794"
10700 id="854" /> 10700 min1="0"
10701 </param_driver> 10701 max1="0"
10702 </param> 10702 max2="0"
10703 10703 min2=".3" />
10704 <param 10704
10705 id="676" 10705 <driven
10706 group="0" 10706 id="151"
10707 name="Love_Handles" 10707 min1=".3"
10708 label="Love Handles" 10708 max1="1"
10709 wearable="shape" 10709 max2="1"
10710 edit_group="shape_torso" 10710 min2="1" />
10711 edit_group_order="12" 10711
10712 label_min="Less Love" 10712 <driven
10713 label_max="More Love" 10713 id="852"
10714 value_min="-1" 10714 min1=".3"
10715 value_max="2" 10715 max1="1"
10716 value_default="0" 10716 max2="1"
10717 camera_elevation=".3" 10717 min2="1" />
10718 camera_distance=".9"> 10718 </param_driver>
10719 <param_driver> 10719 </param>
10720 <driven 10720
10721 id="855" /> 10721 <param
10722 10722 id="841"
10723 <driven 10723 group="0"
10724 id="856" /> 10724 name="Bowed_Legs"
10725 </param_driver> 10725 label="Knee Angle"
10726 </param> 10726 wearable="shape"
10727 10727 edit_group_order="5.5"
10728 <param 10728 edit_group="shape_legs"
10729 id="863" 10729 label_min="Knock Kneed"
10730 group="0" 10730 label_max="Bow Legged"
10731 name="skirt_looseness" 10731 value_min="-1"
10732 label="Skirt Fit" 10732 value_max="1"
10733 show_simple="true" 10733 value_default="0"
10734 clothing_morph="true" 10734 camera_distance="1.3"
10735 wearable="skirt" 10735 camera_elevation="-.5">
10736 edit_group_order="2" 10736 <param_driver>
10737 edit_group="skirt" 10737 <driven
10738 label_min="Tight Skirt" 10738 id="853" />
10739 label_max="Poofy Skirt" 10739
10740 value_min="0" 10740 <driven
10741 value_max="1" 10741 id="847" />
10742 value_default=".333" 10742 </param_driver>
10743 camera_distance="1.3" 10743 </param>
10744 camera_elevation="-.5"> 10744
10745 <param_driver> 10745 <param
10746 <driven 10746 id="753"
10747 id="866" 10747 group="0"
10748 min1="0" 10748 name="Saddlebags"
10749 max1="0" 10749 label="Saddle Bags"
10750 max2="0" 10750 wearable="shape"
10751 min2=".2" /> 10751 edit_group="shape_legs"
10752 10752 edit_group_order="5"
10753 <driven 10753 label_min="Less Saddle"
10754 id="846" 10754 label_max="More Saddle"
10755 min1="0" 10755 value_min="-0.5"
10756 max1=".5" 10756 value_max="3"
10757 max2=".5" 10757 value_default="0"
10758 min2="1" /> 10758 camera_angle="0"
10759 10759 camera_distance="1.2">
10760 <driven 10760 <param_driver>
10761 id="845" 10761 <driven
10762 min1=".5" 10762 id="850" />
10763 max1="1" 10763
10764 max2="1" 10764 <driven
10765 min2="1" /> 10765 id="854" />
10766 </param_driver> 10766 </param_driver>
10767 </param> 10767 </param>
10768 10768
10769 <param 10769 <param
10770 id="119" 10770 id="676"
10771 group="0" 10771 group="0"
10772 wearable="hair" 10772 name="Love_Handles"
10773 edit_group="hair_eyebrows" 10773 label="Love Handles"
10774 edit_group_order="1" 10774 wearable="shape"
10775 name="Eyebrow Size" 10775 edit_group="shape_torso"
10776 show_simple="true" 10776 edit_group_order="12"
10777 label_min="Thin Eyebrows" 10777 label_min="Less Love"
10778 label_max="Bushy Eyebrows" 10778 label_max="More Love"
10779 value_min="0" 10779 value_min="-1"
10780 value_max="1" 10780 value_max="2"
10781 value_default="0.5" 10781 value_default="0"
10782 camera_elevation=".1" 10782 camera_elevation=".3"
10783 camera_distance=".3"> 10783 camera_distance=".9">
10784 <param_driver> 10784 <param_driver>
10785 <driven 10785 <driven
10786 id="1000" /> 10786 id="855" />
10787 10787
10788 <driven 10788 <driven
10789 id="1001" /> 10789 id="856" />
10790 </param_driver> 10790 </param_driver>
10791 </param> 10791 </param>
10792 10792
10793 <param 10793 <param
10794 id="750" 10794 id="863"
10795 group="0" 10795 group="0"
10796 wearable="hair" 10796 name="skirt_looseness"
10797 edit_group="hair_eyebrows" 10797 label="Skirt Fit"
10798 edit_group_order="2" 10798 show_simple="true"
10799 name="Eyebrow Density" 10799 clothing_morph="true"
10800 label_min="Sparse" 10800 wearable="skirt"
10801 label_max="Dense" 10801 edit_group_order="2"
10802 value_min="0" 10802 edit_group="skirt"
10803 value_max="1" 10803 label_min="Tight Skirt"
10804 value_default="0.7" 10804 label_max="Poofy Skirt"
10805 camera_elevation=".1" 10805 value_min="0"
10806 camera_distance=".3"> 10806 value_max="1"
10807 <param_driver> 10807 value_default=".333"
10808 <driven 10808 camera_distance="1.3"
10809 id="1002" /> 10809 camera_elevation="-.5">
10810 10810 <param_driver>
10811 <driven 10811 <driven
10812 id="1003" /> 10812 id="866"
10813 </param_driver> 10813 min1="0"
10814 </param> 10814 max1="0"
10815 10815 max2="0"
10816 <param 10816 min2=".2" />
10817 id="166" 10817
10818 sex="male" 10818 <driven
10819 group="0" 10819 id="846"
10820 wearable="hair" 10820 min1="0"
10821 edit_group="hair_facial" 10821 max1=".5"
10822 edit_group_order="2" 10822 max2=".5"
10823 name="Sideburns" 10823 min2="1" />
10824 show_simple="true" 10824
10825 label_min="Short Sideburns" 10825 <driven
10826 label_max="Mutton Chops" 10826 id="845"
10827 value_min="0" 10827 min1=".5"
10828 value_max="1" 10828 max1="1"
10829 value_default="0.0" 10829 max2="1"
10830 camera_elevation=".1" 10830 min2="1" />
10831 camera_distance=".3" 10831 </param_driver>
10832 camera_angle="30"> 10832 </param>
10833 <param_driver> 10833
10834 <driven 10834 <param
10835 id="1004" /> 10835 id="119"
10836 10836 group="0"
10837 <driven 10837 wearable="hair"
10838 id="1005" /> 10838 edit_group="hair_eyebrows"
10839 </param_driver> 10839 edit_group_order="1"
10840 </param> 10840 name="Eyebrow Size"
10841 10841 show_simple="true"
10842 <param 10842 label_min="Thin Eyebrows"
10843 id="167" 10843 label_max="Bushy Eyebrows"
10844 sex="male" 10844 value_min="0"
10845 group="0" 10845 value_max="1"
10846 wearable="hair" 10846 value_default="0.5"
10847 edit_group="hair_facial" 10847 camera_elevation=".1"
10848 edit_group_order="3" 10848 camera_distance=".3">
10849 name="Moustache" 10849 <param_driver>
10850 show_simple="true" 10850 <driven
10851 label_min="Chaplin" 10851 id="1000" />
10852 label_max="Handlebars" 10852
10853 value_min="0" 10853 <driven
10854 value_max="1" 10854 id="1001" />
10855 value_default="0.0" 10855 </param_driver>
10856 camera_elevation=".1" 10856 </param>
10857 camera_distance=".3" 10857
10858 camera_angle="30"> 10858 <param
10859 <param_driver> 10859 id="750"
10860 <driven 10860 group="0"
10861 id="1006" /> 10861 wearable="hair"
10862 10862 edit_group="hair_eyebrows"
10863 <driven 10863 edit_group_order="2"
10864 id="1007" /> 10864 name="Eyebrow Density"
10865 </param_driver> 10865 label_min="Sparse"
10866 </param> 10866 label_max="Dense"
10867 10867 value_min="0"
10868 <param 10868 value_max="1"
10869 id="168" 10869 value_default="0.7"
10870 sex="male" 10870 camera_elevation=".1"
10871 group="0" 10871 camera_distance=".3">
10872 wearable="hair" 10872 <param_driver>
10873 edit_group="hair_facial" 10873 <driven
10874 edit_group_order="5" 10874 id="1002" />
10875 name="Soulpatch" 10875
10876 show_simple="true" 10876 <driven
10877 label_min="Less soul" 10877 id="1003" />
10878 label_max="More soul" 10878 </param_driver>
10879 value_min="0" 10879 </param>
10880 value_max="1" 10880
10881 value_default="0.0" 10881 <param
10882 camera_elevation="-.1" 10882 id="166"
10883 camera_distance=".3" 10883 sex="male"
10884 camera_angle="0"> 10884 group="0"
10885 <param_driver> 10885 wearable="hair"
10886 <driven 10886 edit_group="hair_facial"
10887 id="1008" /> 10887 edit_group_order="2"
10888 10888 name="Sideburns"
10889 <driven 10889 show_simple="true"
10890 id="1009" /> 10890 label_min="Short Sideburns"
10891 </param_driver> 10891 label_max="Mutton Chops"
10892 </param> 10892 value_min="0"
10893 10893 value_max="1"
10894 <param 10894 value_default="0.0"
10895 id="169" 10895 camera_elevation=".1"
10896 sex="male" 10896 camera_distance=".3"
10897 group="0" 10897 camera_angle="30">
10898 wearable="hair" 10898 <param_driver>
10899 edit_group="hair_facial" 10899 <driven
10900 edit_group_order="4" 10900 id="1004" />
10901 name="Chin Curtains" 10901
10902 show_simple="true" 10902 <driven
10903 label_min="Less Curtains" 10903 id="1005" />
10904 label_max="More Curtains" 10904 </param_driver>
10905 value_min="0" 10905 </param>
10906 value_max="1" 10906
10907 value_default="0.0" 10907 <param
10908 camera_elevation="-.1" 10908 id="167"
10909 camera_distance=".3" 10909 sex="male"
10910 camera_angle="45"> 10910 group="0"
10911 <param_driver> 10911 wearable="hair"
10912 <driven 10912 edit_group="hair_facial"
10913 id="1010" /> 10913 edit_group_order="3"
10914 10914 name="Moustache"
10915 <driven 10915 show_simple="true"
10916 id="1011" /> 10916 label_min="Chaplin"
10917 </param_driver> 10917 label_max="Handlebars"
10918 </param> 10918 value_min="0"
10919 10919 value_max="1"
10920 <param 10920 value_default="0.0"
10921 id="606" 10921 camera_elevation=".1"
10922 group="0" 10922 camera_distance=".3"
10923 wearable="jacket" 10923 camera_angle="30">
10924 edit_group="jacket" 10924 <param_driver>
10925 edit_group_order="1" 10925 <driven
10926 name="Sleeve Length" 10926 id="1006" />
10927 label_min="Short" 10927
10928 label_max="Long" 10928 <driven
10929 value_min="0" 10929 id="1007" />
10930 value_max="1" 10930 </param_driver>
10931 value_default=".8" 10931 </param>
10932 camera_distance="1.2" 10932
10933 camera_angle="30" 10933 <param
10934 camera_elevation=".2"> 10934 id="168"
10935 <param_driver> 10935 sex="male"
10936 <driven 10936 group="0"
10937 id="1019" /> 10937 wearable="hair"
10938 10938 edit_group="hair_facial"
10939 <driven 10939 edit_group_order="5"
10940 id="1039" /> 10940 name="Soulpatch"
10941 10941 show_simple="true"
10942 <driven 10942 label_min="Less soul"
10943 id="1020" /> 10943 label_max="More soul"
10944 </param_driver> 10944 value_min="0"
10945 </param> 10945 value_max="1"
10946 10946 value_default="0.0"
10947 <param 10947 camera_elevation="-.1"
10948 id="607" 10948 camera_distance=".3"
10949 group="0" 10949 camera_angle="0">
10950 wearable="jacket" 10950 <param_driver>
10951 edit_group="jacket" 10951 <driven
10952 edit_group_order="3" 10952 id="1008" />
10953 name="Collar Front" 10953
10954 label_min="Low" 10954 <driven
10955 label_max="High" 10955 id="1009" />
10956 value_min="0" 10956 </param_driver>
10957 value_max="1" 10957 </param>
10958 value_default=".8" 10958
10959 camera_distance="1.2" 10959 <param
10960 camera_angle="15" 10960 id="169"
10961 camera_elevation=".2"> 10961 sex="male"
10962 <param_driver> 10962 group="0"
10963 <driven 10963 wearable="hair"
10964 id="1021" /> 10964 edit_group="hair_facial"
10965 10965 edit_group_order="4"
10966 <driven 10966 name="Chin Curtains"
10967 id="1040" /> 10967 show_simple="true"
10968 10968 label_min="Less Curtains"
10969 <driven 10969 label_max="More Curtains"
10970 id="1022" /> 10970 value_min="0"
10971 </param_driver> 10971 value_max="1"
10972 </param> 10972 value_default="0.0"
10973 10973 camera_elevation="-.1"
10974 <param 10974 camera_distance=".3"
10975 id="780" 10975 camera_angle="45">
10976 group="0" 10976 <param_driver>
10977 wearable="jacket" 10977 <driven
10978 edit_group="jacket" 10978 id="1010" />
10979 edit_group_order="3.5" 10979
10980 name="Collar Back" 10980 <driven
10981 label_min="Low" 10981 id="1011" />
10982 label_max="High" 10982 </param_driver>
10983 value_min="0" 10983 </param>
10984 value_max="1" 10984
10985 value_default=".8" 10985 <param
10986 camera_distance="1.2" 10986 id="606"
10987 camera_angle="195" 10987 group="0"
10988 camera_elevation=".2"> 10988 wearable="jacket"
10989 <param_driver> 10989 edit_group="jacket"
10990 <driven 10990 edit_group_order="1"
10991 id="1023" /> 10991 name="Sleeve Length"
10992 10992 label_min="Short"
10993 <driven 10993 label_max="Long"
10994 id="1041" /> 10994 value_min="0"
10995 10995 value_max="1"
10996 <driven 10996 value_default=".8"
10997 id="1024" /> 10997 camera_distance="1.2"
10998 </param_driver> 10998 camera_angle="30"
10999 </param> 10999 camera_elevation=".2">
11000 11000 <param_driver>
11001 <param 11001 <driven
11002 id="603" 11002 id="1019" />
11003 group="0" 11003
11004 wearable="undershirt" 11004 <driven
11005 edit_group="undershirt" 11005 id="1039" />
11006 edit_group_order="1" 11006
11007 name="Sleeve Length" 11007 <driven
11008 label_min="Short" 11008 id="1020" />
11009 label_max="Long" 11009 </param_driver>
11010 value_min=".01" 11010 </param>
11011 value_max="1" 11011
11012 value_default=".4" 11012 <param
11013 camera_distance="1.2" 11013 id="607"
11014 camera_angle="30" 11014 group="0"
11015 camera_elevation=".2"> 11015 wearable="jacket"
11016 <param_driver> 11016 edit_group="jacket"
11017 <driven 11017 edit_group_order="3"
11018 id="1042" /> 11018 name="Collar Front"
11019 11019 label_min="Low"
11020 <driven 11020 label_max="High"
11021 id="1043" /> 11021 value_min="0"
11022 </param_driver> 11022 value_max="1"
11023 </param> 11023 value_default=".8"
11024 11024 camera_distance="1.2"
11025 <param 11025 camera_angle="15"
11026 id="604" 11026 camera_elevation=".2">
11027 group="0" 11027 <param_driver>
11028 wearable="undershirt" 11028 <driven
11029 edit_group="undershirt" 11029 id="1021" />
11030 edit_group_order="2" 11030
11031 name="Bottom" 11031 <driven
11032 label_min="Short" 11032 id="1040" />
11033 label_max="Long" 11033
11034 value_min="0" 11034 <driven
11035 value_max="1" 11035 id="1022" />
11036 value_default=".85" 11036 </param_driver>
11037 camera_distance="1.2" 11037 </param>
11038 camera_angle="30" 11038
11039 camera_elevation=".2"> 11039 <param
11040 <param_driver> 11040 id="780"
11041 <driven 11041 group="0"
11042 id="1044" /> 11042 wearable="jacket"
11043 11043 edit_group="jacket"
11044 <driven 11044 edit_group_order="3.5"
11045 id="1045" /> 11045 name="Collar Back"
11046 </param_driver> 11046 label_min="Low"
11047 </param> 11047 label_max="High"
11048 11048 value_min="0"
11049 <param 11049 value_max="1"
11050 id="605" 11050 value_default=".8"
11051 group="0" 11051 camera_distance="1.2"
11052 wearable="undershirt" 11052 camera_angle="195"
11053 edit_group="undershirt" 11053 camera_elevation=".2">
11054 edit_group_order="3" 11054 <param_driver>
11055 name="Collar Front" 11055 <driven
11056 label_min="Low" 11056 id="1023" />
11057 label_max="High" 11057
11058 value_min="0" 11058 <driven
11059 value_max="1" 11059 id="1041" />
11060 value_default=".84" 11060
11061 camera_distance=".8" 11061 <driven
11062 camera_angle="15" 11062 id="1024" />
11063 camera_elevation=".2"> 11063 </param_driver>
11064 <param_driver> 11064 </param>
11065 <driven 11065
11066 id="1046" /> 11066 <param
11067 11067 id="603"
11068 <driven 11068 group="0"
11069 id="1047" /> 11069 wearable="undershirt"
11070 </param_driver> 11070 edit_group="undershirt"
11071 </param> 11071 edit_group_order="1"
11072 11072 name="Sleeve Length"
11073 <param 11073 label_min="Short"
11074 id="779" 11074 label_max="Long"
11075 group="0" 11075 value_min=".01"
11076 wearable="undershirt" 11076 value_max="1"
11077 edit_group="undershirt" 11077 value_default=".4"
11078 edit_group_order="4" 11078 camera_distance="1.2"
11079 name="Collar Back" 11079 camera_angle="30"
11080 label_min="Low" 11080 camera_elevation=".2">
11081 label_max="High" 11081 <param_driver>
11082 value_min="0" 11082 <driven
11083 value_max="1" 11083 id="1042" />
11084 value_default=".84" 11084
11085 camera_distance=".8" 11085 <driven
11086 camera_angle="195" 11086 id="1043" />
11087 camera_elevation=".2"> 11087 </param_driver>
11088 <param_driver> 11088 </param>
11089 <driven 11089
11090 id="1048" /> 11090 <param
11091 11091 id="604"
11092 <driven 11092 group="0"
11093 id="1049" /> 11093 wearable="undershirt"
11094 </param_driver> 11094 edit_group="undershirt"
11095 </param> 11095 edit_group_order="2"
11096 11096 name="Bottom"
11097 <param 11097 label_min="Short"
11098 id="617" 11098 label_max="Long"
11099 group="0" 11099 value_min="0"
11100 wearable="socks" 11100 value_max="1"
11101 edit_group="socks" 11101 value_default=".85"
11102 name="Socks Length" 11102 camera_distance="1.2"
11103 label_min="Short" 11103 camera_angle="30"
11104 label_max="Long" 11104 camera_elevation=".2">
11105 value_min="0" 11105 <param_driver>
11106 value_max="1" 11106 <driven
11107 value_default="0.35" 11107 id="1044" />
11108 camera_distance=".95" 11108
11109 camera_angle="30" 11109 <driven
11110 camera_elevation="-.75"> 11110 id="1045" />
11111 <param_driver> 11111 </param_driver>
11112 <driven 11112 </param>
11113 id="1050" /> 11113
11114 11114 <param
11115 <driven 11115 id="605"
11116 id="1051" /> 11116 group="0"
11117 </param_driver> 11117 wearable="undershirt"
11118 </param> 11118 edit_group="undershirt"
11119 11119 edit_group_order="3"
11120 <param 11120 name="Collar Front"
11121 id="616" 11121 label_min="Low"
11122 group="0" 11122 label_max="High"
11123 wearable="shoes" 11123 value_min="0"
11124 edit_group="shoes" 11124 value_max="1"
11125 edit_group_order="1" 11125 value_default=".84"
11126 name="Shoe Height" 11126 camera_distance=".8"
11127 label_min="Short" 11127 camera_angle="15"
11128 label_max="Tall" 11128 camera_elevation=".2">
11129 value_min="0" 11129 <param_driver>
11130 value_max="1" 11130 <driven
11131 value_default="0.1" 11131 id="1046" />
11132 camera_distance="1.2" 11132
11133 camera_angle="30" 11133 <driven
11134 camera_elevation="-.75"> 11134 id="1047" />
11135 <param_driver> 11135 </param_driver>
11136 <driven 11136 </param>
11137 id="1052" /> 11137
11138 11138 <param
11139 <driven 11139 id="779"
11140 id="1053" /> 11140 group="0"
11141 </param_driver> 11141 wearable="undershirt"
11142 </param> 11142 edit_group="undershirt"
11143 11143 edit_group_order="4"
11144 <param 11144 name="Collar Back"
11145 id="619" 11145 label_min="Low"
11146 group="0" 11146 label_max="High"
11147 wearable="underpants" 11147 value_min="0"
11148 edit_group="underpants" 11148 value_max="1"
11149 name="Pants Length" 11149 value_default=".84"
11150 label_min="Short" 11150 camera_distance=".8"
11151 label_max="Long" 11151 camera_angle="195"
11152 value_min="0" 11152 camera_elevation=".2">
11153 value_max="1" 11153 <param_driver>
11154 value_default=".3" 11154 <driven
11155 camera_distance="1.2" 11155 id="1048" />
11156 camera_angle="30" 11156
11157 camera_elevation="-.3"> 11157 <driven
11158 <param_driver> 11158 id="1049" />
11159 <driven 11159 </param_driver>
11160 id="1054" /> 11160 </param>
11161 11161
11162 <driven 11162 <param
11163 id="1055" /> 11163 id="617"
11164 </param_driver> 11164 group="0"
11165 </param> 11165 wearable="socks"
11166 11166 edit_group="socks"
11167 <param 11167 name="Socks Length"
11168 id="624" 11168 label_min="Short"
11169 group="0" 11169 label_max="Long"
11170 wearable="underpants" 11170 value_min="0"
11171 edit_group="underpants" 11171 value_max="1"
11172 name="Pants Waist" 11172 value_default="0.35"
11173 label_min="Low" 11173 camera_distance=".95"
11174 label_max="High" 11174 camera_angle="30"
11175 value_min="0" 11175 camera_elevation="-.75">
11176 value_max="1" 11176 <param_driver>
11177 value_default=".8" 11177 <driven
11178 camera_distance="1.2" 11178 id="1050" />
11179 camera_angle="30" 11179
11180 camera_elevation="-.3"> 11180 <driven
11181 <param_driver> 11181 id="1051" />
11182 <driven 11182 </param_driver>
11183 id="1056" /> 11183 </param>
11184 11184
11185 <driven 11185 <param
11186 id="1057" /> 11186 id="616"
11187 </param_driver> 11187 group="0"
11188 </param> 11188 wearable="shoes"
11189 11189 edit_group="shoes"
11190 <param 11190 edit_group_order="1"
11191 id="93" 11191 name="Shoe Height"
11192 group="0" 11192 label_min="Short"
11193 wearable="gloves" 11193 label_max="Tall"
11194 edit_group="gloves" 11194 value_min="0"
11195 name="Glove Length" 11195 value_max="1"
11196 label_min="Short" 11196 value_default="0.1"
11197 label_max="Long" 11197 camera_distance="1.2"
11198 value_min=".01" 11198 camera_angle="30"
11199 value_max="1" 11199 camera_elevation="-.75">
11200 value_default=".8" 11200 <param_driver>
11201 camera_distance="1.2" 11201 <driven
11202 camera_angle="30" 11202 id="1052" />
11203 camera_elevation=".2"> 11203
11204 <param_driver> 11204 <driven
11205 <driven 11205 id="1053" />
11206 id="1058" /> 11206 </param_driver>
11207 11207 </param>
11208 <driven 11208
11209 id="1059" /> 11209 <param
11210 </param_driver> 11210 id="619"
11211 </param> 11211 group="0"
11212 11212 wearable="underpants"
11213 <param 11213 edit_group="underpants"
11214 id="844" 11214 name="Pants Length"
11215 group="0" 11215 label_min="Short"
11216 wearable="gloves" 11216 label_max="Long"
11217 edit_group="gloves" 11217 value_min="0"
11218 name="Glove Fingers" 11218 value_max="1"
11219 label_min="Fingerless" 11219 value_default=".3"
11220 label_max="Fingers" 11220 camera_distance="1.2"
11221 value_min=".01" 11221 camera_angle="30"
11222 value_max="1" 11222 camera_elevation="-.3">
11223 value_default="1" 11223 <param_driver>
11224 camera_distance="1.2" 11224 <driven
11225 camera_angle="30" 11225 id="1054" />
11226 camera_elevation=".2"> 11226
11227 <param_driver> 11227 <driven
11228 <driven 11228 id="1055" />
11229 id="1060" /> 11229 </param_driver>
11230 11230 </param>
11231 <driven 11231
11232 id="1061" /> 11232 <param
11233 </param_driver> 11233 id="624"
11234 </param> 11234 group="0"
11235 11235 wearable="underpants"
11236<!--Pointy eyebrows became a driver/driven param with new max value for backwards compatibility between 1.0 and 1.1--> 11236 edit_group="underpants"
11237 <param 11237 name="Pants Waist"
11238 id="16" 11238 label_min="Low"
11239 group="0" 11239 label_max="High"
11240 name="Pointy_Eyebrows" 11240 value_min="0"
11241 label="Eyebrow Points" 11241 value_max="1"
11242 wearable="hair" 11242 value_default=".8"
11243 edit_group="hair_eyebrows" 11243 camera_distance="1.2"
11244 edit_group_order="4" 11244 camera_angle="30"
11245 label_min="Smooth" 11245 camera_elevation="-.3">
11246 label_max="Pointy" 11246 <param_driver>
11247 value_min="-.5" 11247 <driven
11248 value_max="3" 11248 id="1056" />
11249 camera_elevation=".1" 11249
11250 camera_distance=".3"> 11250 <driven
11251 <param_driver> 11251 id="1057" />
11252 <driven 11252 </param_driver>
11253 id="870" /> 11253 </param>
11254 </param_driver> 11254
11255 </param> 11255 <param
11256 11256 id="93"
11257<!--Lower eyebrows became a driver/driven param with new min value for backwards compatibility between 1.0 and 1.1--> 11257 group="0"
11258 <param 11258 wearable="gloves"
11259 id="757" 11259 edit_group="gloves"
11260 group="0" 11260 name="Glove Length"
11261 name="Lower_Eyebrows" 11261 label_min="Short"
11262 label="Eyebrow Height" 11262 label_max="Long"
11263 show_simple="true" 11263 value_min=".01"
11264 wearable="hair" 11264 value_max="1"
11265 edit_group="hair_eyebrows" 11265 value_default=".8"
11266 edit_group_order="2.5" 11266 camera_distance="1.2"
11267 label_min="Higher" 11267 camera_angle="30"
11268 label_max="Lower" 11268 camera_elevation=".2">
11269 value_min="-4" 11269 <param_driver>
11270 value_max="2" 11270 <driven
11271 value_default="-1" 11271 id="1058" />
11272 camera_elevation=".1" 11272
11273 camera_distance=".3"> 11273 <driven
11274 <param_driver> 11274 id="1059" />
11275 <driven 11275 </param_driver>
11276 id="871" /> 11276 </param>
11277 </param_driver> 11277
11278 </param> 11278 <param
11279 11279 id="844"
11280<!--Arced eyebrows became a driver/driven param with new max value for backwards compatibility between 1.0 and 1.1--> 11280 group="0"
11281 <param 11281 wearable="gloves"
11282 id="31" 11282 edit_group="gloves"
11283 group="0" 11283 name="Glove Fingers"
11284 name="Arced_Eyebrows" 11284 label_min="Fingerless"
11285 label="Eyebrow Arc" 11285 label_max="Fingers"
11286 wearable="hair" 11286 value_min=".01"
11287 edit_group="hair_eyebrows" 11287 value_max="1"
11288 edit_group_order="3" 11288 value_default="1"
11289 label_min="Flat" 11289 camera_distance="1.2"
11290 label_max="Arced" 11290 camera_angle="30"
11291 value_min="0" 11291 camera_elevation=".2">
11292 value_max="2" 11292 <param_driver>
11293 value_default=".5" 11293 <driven
11294 camera_elevation=".1" 11294 id="1060" />
11295 camera_distance=".3"> 11295
11296 <param_driver> 11296 <driven
11297 <driven 11297 id="1061" />
11298 id="872" /> 11298 </param_driver>
11299 </param_driver> 11299 </param>
11300 </param> 11300
11301 11301<!--Pointy eyebrows became a driver/driven param with new max value for backwards compatibility between 1.0 and 1.1-->
11302 <param 11302 <param
11303 id="877" 11303 id="16"
11304 group="0" 11304 group="0"
11305 name="Jacket Wrinkles" 11305 name="Pointy_Eyebrows"
11306 label="Jacket Wrinkles" 11306 label="Eyebrow Points"
11307 wearable="jacket" 11307 wearable="hair"
11308 edit_group="jacket" 11308 edit_group="hair_eyebrows"
11309 edit_group_order="20" 11309 edit_group_order="4"
11310 label_min="No Wrinkles" 11310 label_min="Smooth"
11311 label_max="Wrinkles" 11311 label_max="Pointy"
11312 value_min="0" 11312 value_min="-.5"
11313 value_max="1" 11313 value_max="3"
11314 value_default="0" 11314 camera_elevation=".1"
11315 camera_elevation=".1" 11315 camera_distance=".3">
11316 camera_distance=".3"> 11316 <param_driver>
11317 <param_driver> 11317 <driven
11318 <driven 11318 id="870" />
11319 id="875" /> 11319 </param_driver>
11320 11320 </param>
11321 <driven 11321
11322 id="876" /> 11322<!--Lower eyebrows became a driver/driven param with new min value for backwards compatibility between 1.0 and 1.1-->
11323 </param_driver> 11323 <param
11324 </param> 11324 id="757"
11325 11325 group="0"
11326 </driver_parameters> 11326 name="Lower_Eyebrows"
11327</linden_avatar> 11327 label="Eyebrow Height"
11328 11328 show_simple="true"
11329 wearable="hair"
11330 edit_group="hair_eyebrows"
11331 edit_group_order="2.5"
11332 label_min="Higher"
11333 label_max="Lower"
11334 value_min="-4"
11335 value_max="2"
11336 value_default="-1"
11337 camera_elevation=".1"
11338 camera_distance=".3">
11339 <param_driver>
11340 <driven
11341 id="871" />
11342 </param_driver>
11343 </param>
11344
11345<!--Arced eyebrows became a driver/driven param with new max value for backwards compatibility between 1.0 and 1.1-->
11346 <param
11347 id="31"
11348 group="0"
11349 name="Arced_Eyebrows"
11350 label="Eyebrow Arc"
11351 wearable="hair"
11352 edit_group="hair_eyebrows"
11353 edit_group_order="3"
11354 label_min="Flat"
11355 label_max="Arced"
11356 value_min="0"
11357 value_max="2"
11358 value_default=".5"
11359 camera_elevation=".1"
11360 camera_distance=".3">
11361 <param_driver>
11362 <driven
11363 id="872" />
11364 </param_driver>
11365 </param>
11366
11367 <param
11368 id="877"
11369 group="0"
11370 name="Jacket Wrinkles"
11371 label="Jacket Wrinkles"
11372 wearable="jacket"
11373 edit_group="jacket"
11374 edit_group_order="20"
11375 label_min="No Wrinkles"
11376 label_max="Wrinkles"
11377 value_min="0"
11378 value_max="1"
11379 value_default="0"
11380 camera_elevation=".1"
11381 camera_distance=".3">
11382 <param_driver>
11383 <driven
11384 id="875" />
11385
11386 <driven
11387 id="876" />
11388 </param_driver>
11389 </param>
11390 <param id="1071" group="2" wearable="tattoo" edit_group="colorpicker" name="tattoo_red"
11391 value_min="0" value_max="1" value_default="1">
11392 <param_driver>
11393 <driven id="1062" min1="0" max1="1" max2="1" min2="1" />
11394 <driven id="1065" min1="0" max1="1" max2="1" min2="1" />
11395 <driven id="1068" min1="0" max1="1" max2="1" min2="1" />
11396 </param_driver>
11397 </param>
11398 <param id="1072" group="2" wearable="tattoo" edit_group="colorpicker" name="tattoo_green"
11399 value_min="0" value_max="1" value_default="1">
11400 <param_driver>
11401 <driven id="1063" min1="0" max1="1" max2="1" min2="1" />
11402 <driven id="1066" min1="0" max1="1" max2="1" min2="1" />
11403 <driven id="1069" min1="0" max1="1" max2="1" min2="1" />
11404 </param_driver>
11405 </param>
11406 <param id="1073" group="2" wearable="tattoo" edit_group="colorpicker" name="tattoo_blue"
11407 value_min="0" value_max="1" value_default="1">
11408 <param_driver>
11409 <driven id="1064" min1="0" max1="1" max2="1" min2="1" />
11410 <driven id="1067" min1="0" max1="1" max2="1" min2="1" />
11411 <driven id="1070" min1="0" max1="1" max2="1" min2="1" />
11412 </param_driver>
11413 </param>
11414
11415 </driver_parameters>
11416</linden_avatar>
11417
diff --git a/linden/indra/newview/character/avatar_skeleton.xml b/linden/indra/newview/character/avatar_skeleton.xml
index 2c37095..5e73804 100644
--- a/linden/indra/newview/character/avatar_skeleton.xml
+++ b/linden/indra/newview/character/avatar_skeleton.xml
@@ -1,74 +1,74 @@
1<?xml version="1.0" encoding="US-ASCII" standalone="yes"?> 1<?xml version="1.0" encoding="US-ASCII" standalone="yes"?>
2<linden_skeleton version="1.0" num_bones="46" num_collision_volumes="19"> 2<linden_skeleton version="1.0" num_bones="46" num_collision_volumes="19">
3<bone name="mPelvis" pos="0.000 0.000 1.067" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 0.000000 1.067015"> 3<bone name="mPelvis" pos="0.000 0.000 1.067" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 0.000000 1.067015">
4 <collision_volume name="PELVIS" pos = "-0.01 0 -0.02" rot="0.000000 8.00000 0.000000" scale="0.12 0.16 0.17"/> 4 <collision_volume name="PELVIS" pos = "-0.01 0 -0.02" rot="0.000000 8.00000 0.000000" scale="0.12 0.16 0.17"/>
5 <bone name="mTorso" pos="0.000 0.000 0.084" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 0.000000 0.084073"> 5 <bone name="mTorso" pos="0.000 0.000 0.084" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 0.000000 0.084073">
6 <collision_volume name="BELLY" pos = "0.028 0 0.04" rot="0.000000 8.00000 0.000000" scale="0.09 0.13 0.15"/> 6 <collision_volume name="BELLY" pos = "0.028 0 0.04" rot="0.000000 8.00000 0.000000" scale="0.09 0.13 0.15"/>
7 <bone name="mChest" pos="-0.015 0.000 0.205" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.015368 0.000000 0.204877"> 7 <bone name="mChest" pos="-0.015 0.000 0.205" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.015368 0.000000 0.204877">
8 <collision_volume name="CHEST" pos = "0.028 0 0.07" rot="0.000000 -10.00000 0.000000" scale="0.11 0.15 0.2"/> 8 <collision_volume name="CHEST" pos = "0.028 0 0.07" rot="0.000000 -10.00000 0.000000" scale="0.11 0.15 0.2"/>
9 <bone name="mNeck" pos="-0.010 0.000 0.251" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.009507 0.000000 0.251108"> 9 <bone name="mNeck" pos="-0.010 0.000 0.251" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.009507 0.000000 0.251108">
10 <collision_volume name="NECK" pos = "0.0 0 0.02" rot="0.000000 0.000000 0.000000" scale="0.05 0.06 0.08"/> 10 <collision_volume name="NECK" pos = "0.0 0 0.02" rot="0.000000 0.000000 0.000000" scale="0.05 0.06 0.08"/>
11 <bone name="mHead" pos="0.000 -0.000 0.076" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 -0.000000 0.075630"> 11 <bone name="mHead" pos="0.000 -0.000 0.076" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 -0.000000 0.075630">
12 <collision_volume name="HEAD" pos = "0.02 0 0.07" rot="0.000000 0.000000 0.000000" scale="0.11 0.09 0.12"/> 12 <collision_volume name="HEAD" pos = "0.02 0 0.07" rot="0.000000 0.000000 0.000000" scale="0.11 0.09 0.12"/>
13 <bone name="mSkull" pos="0.000 0.000 0.079" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 0.000000 0.079000"> 13 <bone name="mSkull" pos="0.000 0.000 0.079" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 0.000000 0.079000">
14 </bone> 14 </bone>
15 <bone name="mEyeRight" pos="0.098 -0.036 0.079" rot="0.000000 0.000000 -0.000000" scale="1.000 1.000 1.000" pivot="0.098466 -0.036000 0.079000"> 15 <bone name="mEyeRight" pos="0.098 -0.036 0.079" rot="0.000000 0.000000 -0.000000" scale="1.000 1.000 1.000" pivot="0.098466 -0.036000 0.079000">
16 </bone> 16 </bone>
17 <bone name="mEyeLeft" pos="0.098 0.036 0.079" rot="0.000000 -0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.098461 0.036000 0.079000"> 17 <bone name="mEyeLeft" pos="0.098 0.036 0.079" rot="0.000000 -0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.098461 0.036000 0.079000">
18 </bone> 18 </bone>
19 </bone> 19 </bone>
20 </bone> 20 </bone>
21 <bone name="mCollarLeft" pos="-0.021 0.085 0.165" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.020927 0.084665 0.165396"> 21 <bone name="mCollarLeft" pos="-0.021 0.085 0.165" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.020927 0.084665 0.165396">
22 <collision_volume name="L_CLAVICLE" pos = "0.02 0 0.02" rot="0.000000 0.00000 0.000000" scale="0.07 0.14 0.05"/> 22 <collision_volume name="L_CLAVICLE" pos = "0.02 0 0.02" rot="0.000000 0.00000 0.000000" scale="0.07 0.14 0.05"/>
23 <bone name="mShoulderLeft" pos="0.000 0.079 -0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 0.079000 -0.000000"> 23 <bone name="mShoulderLeft" pos="0.000 0.079 -0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 0.079000 -0.000000">
24 <collision_volume name="L_UPPER_ARM" pos = "0.0 0.12 0.01" rot="-5.000000 0.00000 0.000000" scale="0.05 0.17 0.05"/> 24 <collision_volume name="L_UPPER_ARM" pos = "0.0 0.12 0.01" rot="-5.000000 0.00000 0.000000" scale="0.05 0.17 0.05"/>
25 <bone name="mElbowLeft" pos="0.000 0.248 0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 0.248000 0.000000"> 25 <bone name="mElbowLeft" pos="0.000 0.248 0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 0.248000 0.000000">
26 <collision_volume name="L_LOWER_ARM" pos = "0.0 0.1 0.0" rot="-3.000000 0.00000 0.000000" scale="0.04 0.14 0.04"/> 26 <collision_volume name="L_LOWER_ARM" pos = "0.0 0.1 0.0" rot="-3.000000 0.00000 0.000000" scale="0.04 0.14 0.04"/>
27 <bone name="mWristLeft" pos="-0.000 0.205 0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.000000 0.204846 0.000000"> 27 <bone name="mWristLeft" pos="-0.000 0.205 0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.000000 0.204846 0.000000">
28 <collision_volume name="L_HAND" pos = "0.01 0.05 0.0" rot="-3.000000 0.00000 -10.000000" scale="0.05 0.08 0.03"/> 28 <collision_volume name="L_HAND" pos = "0.01 0.05 0.0" rot="-3.000000 0.00000 -10.000000" scale="0.05 0.08 0.03"/>
29 </bone> 29 </bone>
30 </bone> 30 </bone>
31 </bone> 31 </bone>
32 </bone> 32 </bone>
33 <bone name="mCollarRight" pos="-0.021 -0.085 0.165" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.020927 -0.085000 0.165396"> 33 <bone name="mCollarRight" pos="-0.021 -0.085 0.165" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.020927 -0.085000 0.165396">
34 <collision_volume name="R_CLAVICLE" pos = "0.02 0 0.02" rot="0.000000 0.00000 0.000000" scale="0.07 0.14 0.05"/> 34 <collision_volume name="R_CLAVICLE" pos = "0.02 0 0.02" rot="0.000000 0.00000 0.000000" scale="0.07 0.14 0.05"/>
35 <bone name="mShoulderRight" pos="0.000 -0.079 -0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 -0.079418 -0.000000"> 35 <bone name="mShoulderRight" pos="0.000 -0.079 -0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 -0.079418 -0.000000">
36 <collision_volume name="R_UPPER_ARM" pos = "0.0 -0.12 0.01" rot="5.000000 0.00000 0.000000" scale="0.05 0.17 0.05"/> 36 <collision_volume name="R_UPPER_ARM" pos = "0.0 -0.12 0.01" rot="5.000000 0.00000 0.000000" scale="0.05 0.17 0.05"/>
37 <bone name="mElbowRight" pos="0.000 -0.248 -0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 -0.248000 -0.000000"> 37 <bone name="mElbowRight" pos="0.000 -0.248 -0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 -0.248000 -0.000000">
38 <collision_volume name="R_LOWER_ARM" pos = "0.0 -0.1 0.0" rot="3.000000 0.00000 0.000000" scale="0.04 0.14 0.04"/> 38 <collision_volume name="R_LOWER_ARM" pos = "0.0 -0.1 0.0" rot="3.000000 0.00000 0.000000" scale="0.04 0.14 0.04"/>
39 <bone name="mWristRight" pos="0.000 -0.205 -0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.000000 -0.205000 -0.000000"> 39 <bone name="mWristRight" pos="0.000 -0.205 -0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.000000 -0.205000 -0.000000">
40 <collision_volume name="R_HAND" pos = "0.01 -0.05 0.0" rot="3.000000 0.00000 10.000000" scale="0.05 0.08 0.03"/> 40 <collision_volume name="R_HAND" pos = "0.01 -0.05 0.0" rot="3.000000 0.00000 10.000000" scale="0.05 0.08 0.03"/>
41 </bone> 41 </bone>
42 </bone> 42 </bone>
43 </bone> 43 </bone>
44 </bone> 44 </bone>
45 </bone> 45 </bone>
46 </bone> 46 </bone>
47 <bone name="mHipRight" pos="0.034 -0.129 -0.041" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.033620 -0.128806 -0.041086"> 47 <bone name="mHipRight" pos="0.034 -0.129 -0.041" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.033620 -0.128806 -0.041086">
48 <collision_volume name="R_UPPER_LEG" pos = "-0.02 0.05 -0.22" rot="0.000000 0.00000 0.000000" scale="0.09 0.09 0.32"/> 48 <collision_volume name="R_UPPER_LEG" pos = "-0.02 0.05 -0.22" rot="0.000000 0.00000 0.000000" scale="0.09 0.09 0.32"/>
49 <bone name="mKneeRight" pos="-0.001 0.049 -0.491" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.000780 0.048635 -0.490922"> 49 <bone name="mKneeRight" pos="-0.001 0.049 -0.491" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.000780 0.048635 -0.490922">
50 <collision_volume name="R_LOWER_LEG" pos = "-0.02 0.0 -0.2" rot="0.000000 0.00000 0.000000" scale="0.06 0.06 0.25"/> 50 <collision_volume name="R_LOWER_LEG" pos = "-0.02 0.0 -0.2" rot="0.000000 0.00000 0.000000" scale="0.06 0.06 0.25"/>
51 <bone name="mAnkleRight" pos="-0.029 0.000 -0.468" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.028869 0.000000 -0.468494"> 51 <bone name="mAnkleRight" pos="-0.029 0.000 -0.468" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.028869 0.000000 -0.468494">
52 <collision_volume name="R_FOOT" pos = "0.077 0.0 -0.041" rot="0.000000 10.00000 0.000000" scale="0.13 0.05 0.05"/> 52 <collision_volume name="R_FOOT" pos = "0.077 0.0 -0.041" rot="0.000000 10.00000 0.000000" scale="0.13 0.05 0.05"/>
53 <bone name="mFootRight" pos="0.112 -0.000 -0.061" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.111956 -0.000000 -0.060637"> 53 <bone name="mFootRight" pos="0.112 -0.000 -0.061" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.111956 -0.000000 -0.060637">
54 <bone name="mToeRight" pos="0.109 0.000 0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.105399 -0.010408 -0.000104"> 54 <bone name="mToeRight" pos="0.109 0.000 0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.105399 -0.010408 -0.000104">
55 </bone> 55 </bone>
56 </bone> 56 </bone>
57 </bone> 57 </bone>
58 </bone> 58 </bone>
59 </bone> 59 </bone>
60 <bone name="mHipLeft" pos="0.034 0.127 -0.041" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.033757 0.126765 -0.040998"> 60 <bone name="mHipLeft" pos="0.034 0.127 -0.041" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.033757 0.126765 -0.040998">
61 <collision_volume name="L_UPPER_LEG" pos = "-0.02 -0.05 -0.22" rot="0.000000 0.00000 0.000000" scale="0.09 0.09 0.32"/> 61 <collision_volume name="L_UPPER_LEG" pos = "-0.02 -0.05 -0.22" rot="0.000000 0.00000 0.000000" scale="0.09 0.09 0.32"/>
62 <bone name="mKneeLeft" pos="-0.001 -0.046 -0.491" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.000887 -0.045568 -0.491053"> 62 <bone name="mKneeLeft" pos="-0.001 -0.046 -0.491" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.000887 -0.045568 -0.491053">
63 <collision_volume name="L_LOWER_LEG" pos = "-0.02 0.0 -0.2" rot="0.000000 0.00000 0.000000" scale="0.06 0.06 0.25"/> 63 <collision_volume name="L_LOWER_LEG" pos = "-0.02 0.0 -0.2" rot="0.000000 0.00000 0.000000" scale="0.06 0.06 0.25"/>
64 <bone name="mAnkleLeft" pos="-0.029 0.001 -0.468" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.028887 0.001378 -0.468449"> 64 <bone name="mAnkleLeft" pos="-0.029 0.001 -0.468" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.028887 0.001378 -0.468449">
65 <collision_volume name="L_FOOT" pos = "0.077 0.0 -0.041" rot="0.000000 10.00000 0.000000" scale="0.13 0.05 0.05"/> 65 <collision_volume name="L_FOOT" pos = "0.077 0.0 -0.041" rot="0.000000 10.00000 0.000000" scale="0.13 0.05 0.05"/>
66 <bone name="mFootLeft" pos="0.112 -0.000 -0.061" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.111956 -0.000000 -0.060620"> 66 <bone name="mFootLeft" pos="0.112 -0.000 -0.061" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.111956 -0.000000 -0.060620">
67 <bone name="mToeLeft" pos="0.109 0.000 0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.105387 0.008270 0.000871"> 67 <bone name="mToeLeft" pos="0.109 0.000 0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.105387 0.008270 0.000871">
68 </bone> 68 </bone>
69 </bone> 69 </bone>
70 </bone> 70 </bone>
71 </bone> 71 </bone>
72 </bone> 72 </bone>
73</bone> 73</bone>
74</linden_skeleton> \ No newline at end of file 74</linden_skeleton> \ No newline at end of file
diff --git a/linden/indra/newview/character/genepool.xml b/linden/indra/newview/character/genepool.xml
index e88dc56..52300c2 100644
--- a/linden/indra/newview/character/genepool.xml
+++ b/linden/indra/newview/character/genepool.xml
@@ -1,7107 +1,7107 @@
1<?xml version="1.0" encoding="US-ASCII" standalone="yes"?> 1<?xml version="1.0" encoding="US-ASCII" standalone="yes"?>
2<linden_genepool version="1.0"> 2<linden_genepool version="1.0">
3 <archetype name="M W Skinny"> 3 <archetype name="M W Skinny">
4<!-- wearable: shape --> 4<!-- wearable: shape -->
5 <param id="1" name="Big_Brow" value="1.540" /> 5 <param id="1" name="Big_Brow" value="1.540" />
6 6
7 <param id="2" name="Nose_Big_Out" value="0.720" /> 7 <param id="2" name="Nose_Big_Out" value="0.720" />
8 8
9 <param id="4" name="Broad_Nostrils" value="0.540" /> 9 <param id="4" name="Broad_Nostrils" value="0.540" />
10 10
11 <param id="5" name="Cleft_Chin" value="0.960" /> 11 <param id="5" name="Cleft_Chin" value="0.960" />
12 12
13 <param id="6" name="Bulbous_Nose_Tip" value="0.820" /> 13 <param id="6" name="Bulbous_Nose_Tip" value="0.820" />
14 14
15 <param id="7" name="Weak_Chin" value="-0.260" /> 15 <param id="7" name="Weak_Chin" value="-0.260" />
16 16
17 <param id="8" name="Double_Chin" value="1.120" /> 17 <param id="8" name="Double_Chin" value="1.120" />
18 18
19 <param id="10" name="Sunken_Cheeks" value="1.780" /> 19 <param id="10" name="Sunken_Cheeks" value="1.780" />
20 20
21 <param id="11" name="Noble_Nose_Bridge" value="-0.100" /> 21 <param id="11" name="Noble_Nose_Bridge" value="-0.100" />
22 22
23 <param id="12" name="Jowls" value="0.520" /> 23 <param id="12" name="Jowls" value="0.520" />
24 24
25 <param id="13" name="Cleft_Chin_Upper" value="0.940" /> 25 <param id="13" name="Cleft_Chin_Upper" value="0.940" />
26 26
27 <param id="14" name="High_Cheek_Bones" value="0.550" /> 27 <param id="14" name="High_Cheek_Bones" value="0.550" />
28 28
29 <param id="15" name="Ears_Out" value="0.160" /> 29 <param id="15" name="Ears_Out" value="0.160" />
30 30
31 <param id="17" name="Square_Jaw" value="-0.060" /> 31 <param id="17" name="Square_Jaw" value="-0.060" />
32 32
33 <param id="18" name="Puffy_Upper_Cheeks" value="-0.020" /> 33 <param id="18" name="Puffy_Upper_Cheeks" value="-0.020" />
34 34
35 <param id="19" name="Upturned_Nose_Tip" value="-0.630" /> 35 <param id="19" name="Upturned_Nose_Tip" value="-0.630" />
36 36
37 <param id="20" name="Bulbous_Nose" value="0.440" /> 37 <param id="20" name="Bulbous_Nose" value="0.440" />
38 38
39 <param id="21" name="Upper_Eyelid_Fold" value="0.280" /> 39 <param id="21" name="Upper_Eyelid_Fold" value="0.280" />
40 40
41 <param id="22" name="Attached_Earlobes" value="1.000" /> 41 <param id="22" name="Attached_Earlobes" value="1.000" />
42 42
43 <param id="23" name="Baggy_Eyes" value="0.980" /> 43 <param id="23" name="Baggy_Eyes" value="0.980" />
44 44
45 <param id="24" name="Wide_Eyes" value="-0.030" /> 45 <param id="24" name="Wide_Eyes" value="-0.030" />
46 46
47 <param id="25" name="Wide_Lip_Cleft" value="-0.250" /> 47 <param id="25" name="Wide_Lip_Cleft" value="-0.250" />
48 48
49 <param id="27" name="Wide_Nose_Bridge" value="-0.030" /> 49 <param id="27" name="Wide_Nose_Bridge" value="-0.030" />
50 50
51 <param id="33" name="Height" value="1.440" /> 51 <param id="33" name="Height" value="1.440" />
52 52
53 <param id="34" name="Thickness" value="-0.500" /> 53 <param id="34" name="Thickness" value="-0.500" />
54 54
55 <param id="35" name="Big_Ears" value="0.590" /> 55 <param id="35" name="Big_Ears" value="0.590" />
56 56
57 <param id="36" name="Shoulders" value="0.180" /> 57 <param id="36" name="Shoulders" value="0.180" />
58 58
59 <param id="37" name="Hip Width" value="-1.160" /> 59 <param id="37" name="Hip Width" value="-1.160" />
60 60
61 <param id="38" name="Torso Length" value="-0.180" /> 61 <param id="38" name="Torso Length" value="-0.180" />
62 62
63 <param id="80" name="male" value="1.000" /> 63 <param id="80" name="male" value="1.000" />
64 64
65 <param id="105" name="Breast Size" value="0.500" /> 65 <param id="105" name="Breast Size" value="0.500" />
66 66
67 <param id="151" name="Big_Butt_Legs" value="-0.110" /> 67 <param id="151" name="Big_Butt_Legs" value="-0.110" />
68 68
69 <param id="155" name="Lip Width" value="0.770" /> 69 <param id="155" name="Lip Width" value="0.770" />
70 70
71 <param id="157" name="Belly Size" value="0.030" /> 71 <param id="157" name="Belly Size" value="0.030" />
72 72
73 <param id="185" name="Deep_Chin" value="-0.320" /> 73 <param id="185" name="Deep_Chin" value="-0.320" />
74 74
75 <param id="193" name="Head Shape" value="0.350" /> 75 <param id="193" name="Head Shape" value="0.350" />
76 76
77 <param id="196" name="Eye Spacing" value="-0.050" /> 77 <param id="196" name="Eye Spacing" value="-0.050" />
78 78
79 <param id="505" name="Lip Thickness" value="0.560" /> 79 <param id="505" name="Lip Thickness" value="0.560" />
80 80
81 <param id="506" name="Mouth_Height" value="-0.400" /> 81 <param id="506" name="Mouth_Height" value="-0.400" />
82 82
83 <param id="507" name="Breast_Gravity" value="0.000" /> 83 <param id="507" name="Breast_Gravity" value="0.000" />
84 84
85 <param id="515" name="Foot_Size" value="1.560" /> 85 <param id="515" name="Foot_Size" value="1.560" />
86 86
87 <param id="517" name="Wide_Nose" value="-0.290" /> 87 <param id="517" name="Wide_Nose" value="-0.290" />
88 88
89 <param id="518" name="Eyelashes_Long" value="0.640" /> 89 <param id="518" name="Eyelashes_Long" value="0.640" />
90 90
91 <param id="629" name="Forehead Angle" value="0.040" /> 91 <param id="629" name="Forehead Angle" value="0.040" />
92 92
93 <param id="637" name="Body Fat" value="0.070" /> 93 <param id="637" name="Body Fat" value="0.070" />
94 94
95 <param id="646" name="Egg_Head" value="-0.590" /> 95 <param id="646" name="Egg_Head" value="-0.590" />
96 96
97 <param id="647" name="Squash_Stretch_Head" value="0.760" /> 97 <param id="647" name="Squash_Stretch_Head" value="0.760" />
98 98
99 <param id="649" name="Torso Muscles" value="0.500" /> 99 <param id="649" name="Torso Muscles" value="0.500" />
100 100
101 <param id="650" name="Eyelid_Corner_Up" value="-0.250" /> 101 <param id="650" name="Eyelid_Corner_Up" value="-0.250" />
102 102
103 <param id="652" name="Leg Muscles" value="0.600" /> 103 <param id="652" name="Leg Muscles" value="0.600" />
104 104
105 <param id="653" name="Tall_Lips" value="-1.000" /> 105 <param id="653" name="Tall_Lips" value="-1.000" />
106 106
107 <param id="656" name="Crooked_Nose" value="-0.120" /> 107 <param id="656" name="Crooked_Nose" value="-0.120" />
108 108
109 <param id="659" name="Mouth Corner" value="0.720" /> 109 <param id="659" name="Mouth Corner" value="0.720" />
110 110
111 <param id="662" name="Face Shear" value="0.500" /> 111 <param id="662" name="Face Shear" value="0.500" />
112 112
113 <param id="663" name="Shift_Mouth" value="0.000" /> 113 <param id="663" name="Shift_Mouth" value="0.000" />
114 114
115 <param id="664" name="Pop_Eye" value="0.230" /> 115 <param id="664" name="Pop_Eye" value="0.230" />
116 116
117 <param id="665" name="Jaw_Jut" value="0.040" /> 117 <param id="665" name="Jaw_Jut" value="0.040" />
118 118
119 <param id="675" name="Hand Size" value="0.060" /> 119 <param id="675" name="Hand Size" value="0.060" />
120 120
121 <param id="676" name="Love_Handles" value="-0.160" /> 121 <param id="676" name="Love_Handles" value="-0.160" />
122 122
123 <param id="678" name="Torso Muscles" value="0.550" /> 123 <param id="678" name="Torso Muscles" value="0.550" />
124 124
125 <param id="682" name="Head Size" value="0.670" /> 125 <param id="682" name="Head Size" value="0.670" />
126 126
127 <param id="683" name="Neck Thickness" value="-0.090" /> 127 <param id="683" name="Neck Thickness" value="-0.090" />
128 128
129 <param id="684" name="Breast_Female_Clevage" value="0.000" /> 129 <param id="684" name="Breast_Female_Clevage" value="0.000" />
130 130
131 <param id="685" name="Chest_Male_No_Pecs" value="0.280" /> 131 <param id="685" name="Chest_Male_No_Pecs" value="0.280" />
132 132
133 <param id="690" name="Eye Size" value="0.470" /> 133 <param id="690" name="Eye Size" value="0.470" />
134 134
135 <param id="692" name="Leg Length" value="0.540" /> 135 <param id="692" name="Leg Length" value="0.540" />
136 136
137 <param id="693" name="Arm Length" value="0.540" /> 137 <param id="693" name="Arm Length" value="0.540" />
138 138
139 <param id="753" name="Saddlebags" value="0.030" /> 139 <param id="753" name="Saddlebags" value="0.030" />
140 140
141 <param id="756" name="Neck Length" value="0.240" /> 141 <param id="756" name="Neck Length" value="0.240" />
142 142
143 <param id="758" name="Lower_Bridge_Nose" value="0.720" /> 143 <param id="758" name="Lower_Bridge_Nose" value="0.720" />
144 144
145 <param id="759" name="Low_Septum_Nose" value="1.200" /> 145 <param id="759" name="Low_Septum_Nose" value="1.200" />
146 146
147 <param id="760" name="Jaw_Angle" value="0.910" /> 147 <param id="760" name="Jaw_Angle" value="0.910" />
148 148
149 <param id="764" name="Lip_Cleft_Deep" value="0.610" /> 149 <param id="764" name="Lip_Cleft_Deep" value="0.610" />
150 150
151 <param id="765" name="Puffy_Lower_Lids" value="0.820" /> 151 <param id="765" name="Puffy_Lower_Lids" value="0.820" />
152 152
153 <param id="769" name="Eye Depth" value="0.190" /> 153 <param id="769" name="Eye Depth" value="0.190" />
154 154
155 <param id="773" name="Head Length" value="0.370" /> 155 <param id="773" name="Head Length" value="0.370" />
156 156
157<!-- wearable: skin --> 157<!-- wearable: skin -->
158 <param id="108" name="Rainbow Color" value="0.000" /> 158 <param id="108" name="Rainbow Color" value="0.000" />
159 159
160 <param id="110" name="Red Skin" value="0.097" /> 160 <param id="110" name="Red Skin" value="0.097" />
161 161
162 <param id="111" name="Pigment" value="0.120" /> 162 <param id="111" name="Pigment" value="0.120" />
163 163
164 <param id="116" name="Rosy Complexion" value="0.320" /> 164 <param id="116" name="Rosy Complexion" value="0.320" />
165 165
166 <param id="117" name="Lip Pinkness" value="0.560" /> 166 <param id="117" name="Lip Pinkness" value="0.560" />
167 167
168 <param id="150" name="Body Definition" value="0.000" /> 168 <param id="150" name="Body Definition" value="0.000" />
169 169
170 <param id="162" name="Facial Definition" value="0.210" /> 170 <param id="162" name="Facial Definition" value="0.210" />
171 171
172 <param id="163" name="Wrinkles" value="0.490" /> 172 <param id="163" name="Wrinkles" value="0.490" />
173 173
174 <param id="165" name="Freckles" value="0.740" /> 174 <param id="165" name="Freckles" value="0.740" />
175 175
176 <param id="700" name="Lipstick Color" value="0.250" /> 176 <param id="700" name="Lipstick Color" value="0.250" />
177 177
178 <param id="701" name="Lipstick" value="0.000" /> 178 <param id="701" name="Lipstick" value="0.000" />
179 179
180 <param id="702" name="Lipgloss" value="0.000" /> 180 <param id="702" name="Lipgloss" value="0.000" />
181 181
182 <param id="703" name="Eyeliner" value="0.000" /> 182 <param id="703" name="Eyeliner" value="0.000" />
183 183
184 <param id="704" name="Blush" value="0.000" /> 184 <param id="704" name="Blush" value="0.000" />
185 185
186 <param id="705" name="Blush Color" value="0.500" /> 186 <param id="705" name="Blush Color" value="0.500" />
187 187
188 <param id="706" name="Out Shdw Opacity" value="0.600" /> 188 <param id="706" name="Out Shdw Opacity" value="0.600" />
189 189
190 <param id="707" name="Outer Shadow" value="0.000" /> 190 <param id="707" name="Outer Shadow" value="0.000" />
191 191
192 <param id="708" name="Out Shdw Color" value="0.000" /> 192 <param id="708" name="Out Shdw Color" value="0.000" />
193 193
194 <param id="709" name="Inner Shadow" value="0.000" /> 194 <param id="709" name="Inner Shadow" value="0.000" />
195 195
196 <param id="710" name="Nail Polish" value="0.000" /> 196 <param id="710" name="Nail Polish" value="0.000" />
197 197
198 <param id="711" name="Blush Opacity" value="0.500" /> 198 <param id="711" name="Blush Opacity" value="0.500" />
199 199
200 <param id="712" name="In Shdw Color" value="0.000" /> 200 <param id="712" name="In Shdw Color" value="0.000" />
201 201
202 <param id="713" name="In Shdw Opacity" value="0.700" /> 202 <param id="713" name="In Shdw Opacity" value="0.700" />
203 203
204 <param id="714" name="Eyeliner Color" value="0.000" /> 204 <param id="714" name="Eyeliner Color" value="0.000" />
205 205
206 <param id="715" name="Nail Polish Color" value="0.000" /> 206 <param id="715" name="Nail Polish Color" value="0.000" />
207 207
208 <texture te="0" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 208 <texture te="0" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
209 209
210 <texture te="5" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 210 <texture te="5" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
211 211
212 <texture te="6" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 212 <texture te="6" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
213 213
214<!-- wearable: hair --> 214<!-- wearable: hair -->
215 <param id="16" name="Pointy_Eyebrows" value="0.810" /> 215 <param id="16" name="Pointy_Eyebrows" value="0.810" />
216 216
217 <param id="31" name="Arced_Eyebrows" value="1.000" /> 217 <param id="31" name="Arced_Eyebrows" value="1.000" />
218 218
219 <param id="112" name="Rainbow Color" value="0.000" /> 219 <param id="112" name="Rainbow Color" value="0.000" />
220 220
221 <param id="113" name="Red Hair" value="0.150" /> 221 <param id="113" name="Red Hair" value="0.150" />
222 222
223 <param id="114" name="Blonde Hair" value="0.960" /> 223 <param id="114" name="Blonde Hair" value="0.960" />
224 224
225 <param id="115" name="White Hair" value="0.000" /> 225 <param id="115" name="White Hair" value="0.000" />
226 226
227 <param id="119" name="Eyebrow Size" value="0.210" /> 227 <param id="119" name="Eyebrow Size" value="0.210" />
228 228
229 <param id="130" name="Front Fringe" value="0.580" /> 229 <param id="130" name="Front Fringe" value="0.580" />
230 230
231 <param id="131" name="Side Fringe" value="0.370" /> 231 <param id="131" name="Side Fringe" value="0.370" />
232 232
233 <param id="132" name="Back Fringe" value="0.480" /> 233 <param id="132" name="Back Fringe" value="0.480" />
234 234
235 <param id="133" name="Hair Front" value="0.260" /> 235 <param id="133" name="Hair Front" value="0.260" />
236 236
237 <param id="134" name="Hair Sides" value="0.580" /> 237 <param id="134" name="Hair Sides" value="0.580" />
238 238
239 <param id="135" name="Hair Back" value="0.570" /> 239 <param id="135" name="Hair Back" value="0.570" />
240 240
241 <param id="136" name="Hair Sweep" value="0.370" /> 241 <param id="136" name="Hair Sweep" value="0.370" />
242 242
243 <param id="137" name="Hair Tilt" value="0.500" /> 243 <param id="137" name="Hair Tilt" value="0.500" />
244 244
245 <param id="140" name="Hair_Part_Middle" value="0.000" /> 245 <param id="140" name="Hair_Part_Middle" value="0.000" />
246 246
247 <param id="141" name="Hair_Part_Right" value="1.520" /> 247 <param id="141" name="Hair_Part_Right" value="1.520" />
248 248
249 <param id="142" name="Hair_Part_Left" value="0.000" /> 249 <param id="142" name="Hair_Part_Left" value="0.000" />
250 250
251 <param id="143" name="Hair_Sides_Full" value="-0.315" /> 251 <param id="143" name="Hair_Sides_Full" value="-0.315" />
252 252
253 <param id="166" name="Sideburns" value="0.890" /> 253 <param id="166" name="Sideburns" value="0.890" />
254 254
255 <param id="167" name="Moustache" value="0.000" /> 255 <param id="167" name="Moustache" value="0.000" />
256 256
257 <param id="168" name="Soulpatch" value="0.260" /> 257 <param id="168" name="Soulpatch" value="0.260" />
258 258
259 <param id="169" name="Chin Curtains" value="0.890" /> 259 <param id="169" name="Chin Curtains" value="0.890" />
260 260
261 <param id="177" name="Hair_Rumpled" value="0.560" /> 261 <param id="177" name="Hair_Rumpled" value="0.560" />
262 262
263 <param id="181" name="Hair_Big_Front" value="-0.060" /> 263 <param id="181" name="Hair_Big_Front" value="-0.060" />
264 264
265 <param id="182" name="Hair_Big_Top" value="-0.420" /> 265 <param id="182" name="Hair_Big_Top" value="-0.420" />
266 266
267 <param id="183" name="Hair_Big_Back" value="0.000" /> 267 <param id="183" name="Hair_Big_Back" value="0.000" />
268 268
269 <param id="184" name="Hair_Spiked" value="0.000" /> 269 <param id="184" name="Hair_Spiked" value="0.000" />
270 270
271 <param id="192" name="Bangs_Part_Middle" value="0.000" /> 271 <param id="192" name="Bangs_Part_Middle" value="0.000" />
272 272
273 <param id="674" name="Hair_Shear_Back" value="0.260" /> 273 <param id="674" name="Hair_Shear_Back" value="0.260" />
274 274
275 <param id="750" name="Eyebrow Density" value="0.840" /> 275 <param id="750" name="Eyebrow Density" value="0.840" />
276 276
277 <param id="752" name="Hair Thickness" value="0.120" /> 277 <param id="752" name="Hair Thickness" value="0.120" />
278 278
279 <param id="754" name="Hair_Taper_Back" value="0.020" /> 279 <param id="754" name="Hair_Taper_Back" value="0.020" />
280 280
281 <param id="755" name="Hair_Taper_Front" value="0.000" /> 281 <param id="755" name="Hair_Taper_Front" value="0.000" />
282 282
283 <param id="757" name="Lower_Eyebrows" value="2.000" /> 283 <param id="757" name="Lower_Eyebrows" value="2.000" />
284 284
285 <param id="762" name="Hair_Shear_Front" value="0.060" /> 285 <param id="762" name="Hair_Shear_Front" value="0.060" />
286 286
287 <param id="763" name="Hair Volume" value="0.770" /> 287 <param id="763" name="Hair Volume" value="0.770" />
288 288
289 <texture te="4" uuid="7ca39b4c-bd19-4699-aff7-f93fd03d3e7b" /> 289 <texture te="4" uuid="7ca39b4c-bd19-4699-aff7-f93fd03d3e7b" />
290 290
291<!-- wearable: eyes --> 291<!-- wearable: eyes -->
292 <param id="98" name="Eye Lightness" value="0.260" /> 292 <param id="98" name="Eye Lightness" value="0.260" />
293 293
294 <param id="99" name="Eye Color" value="0.420" /> 294 <param id="99" name="Eye Color" value="0.420" />
295 295
296 <texture te="3" uuid="6522e74d-1660-4e7f-b601-6f48c1659a77" /> 296 <texture te="3" uuid="6522e74d-1660-4e7f-b601-6f48c1659a77" />
297 </archetype> 297 </archetype>
298 298
299 <archetype name="M W Old"> 299 <archetype name="M W Old">
300<!-- wearable: shape --> 300<!-- wearable: shape -->
301 <param id="1" name="Big_Brow" value="1.680" /> 301 <param id="1" name="Big_Brow" value="1.680" />
302 302
303 <param id="2" name="Nose_Big_Out" value="1.250" /> 303 <param id="2" name="Nose_Big_Out" value="1.250" />
304 304
305 <param id="4" name="Broad_Nostrils" value="0.340" /> 305 <param id="4" name="Broad_Nostrils" value="0.340" />
306 306
307 <param id="5" name="Cleft_Chin" value="0.410" /> 307 <param id="5" name="Cleft_Chin" value="0.410" />
308 308
309 <param id="6" name="Bulbous_Nose_Tip" value="0.310" /> 309 <param id="6" name="Bulbous_Nose_Tip" value="0.310" />
310 310
311 <param id="7" name="Weak_Chin" value="-0.120" /> 311 <param id="7" name="Weak_Chin" value="-0.120" />
312 312
313 <param id="8" name="Double_Chin" value="1.500" /> 313 <param id="8" name="Double_Chin" value="1.500" />
314 314
315 <param id="10" name="Sunken_Cheeks" value="1.650" /> 315 <param id="10" name="Sunken_Cheeks" value="1.650" />
316 316
317 <param id="11" name="Noble_Nose_Bridge" value="0.160" /> 317 <param id="11" name="Noble_Nose_Bridge" value="0.160" />
318 318
319 <param id="12" name="Jowls" value="2.020" /> 319 <param id="12" name="Jowls" value="2.020" />
320 320
321 <param id="13" name="Cleft_Chin_Upper" value="0.330" /> 321 <param id="13" name="Cleft_Chin_Upper" value="0.330" />
322 322
323 <param id="14" name="High_Cheek_Bones" value="0.200" /> 323 <param id="14" name="High_Cheek_Bones" value="0.200" />
324 324
325 <param id="15" name="Ears_Out" value="0.660" /> 325 <param id="15" name="Ears_Out" value="0.660" />
326 326
327 <param id="17" name="Square_Jaw" value="-0.500" /> 327 <param id="17" name="Square_Jaw" value="-0.500" />
328 328
329 <param id="18" name="Puffy_Upper_Cheeks" value="-1.500" /> 329 <param id="18" name="Puffy_Upper_Cheeks" value="-1.500" />
330 330
331 <param id="19" name="Upturned_Nose_Tip" value="-1.350" /> 331 <param id="19" name="Upturned_Nose_Tip" value="-1.350" />
332 332
333 <param id="20" name="Bulbous_Nose" value="0.440" /> 333 <param id="20" name="Bulbous_Nose" value="0.440" />
334 334
335 <param id="21" name="Upper_Eyelid_Fold" value="0.790" /> 335 <param id="21" name="Upper_Eyelid_Fold" value="0.790" />
336 336
337 <param id="22" name="Attached_Earlobes" value="0.000" /> 337 <param id="22" name="Attached_Earlobes" value="0.000" />
338 338
339 <param id="23" name="Baggy_Eyes" value="1.500" /> 339 <param id="23" name="Baggy_Eyes" value="1.500" />
340 340
341 <param id="24" name="Wide_Eyes" value="-0.340" /> 341 <param id="24" name="Wide_Eyes" value="-0.340" />
342 342
343 <param id="25" name="Wide_Lip_Cleft" value="1.270" /> 343 <param id="25" name="Wide_Lip_Cleft" value="1.270" />
344 344
345 <param id="27" name="Wide_Nose_Bridge" value="-0.100" /> 345 <param id="27" name="Wide_Nose_Bridge" value="-0.100" />
346 346
347 <param id="33" name="Height" value="-0.060" /> 347 <param id="33" name="Height" value="-0.060" />
348 348
349 <param id="34" name="Thickness" value="-0.410" /> 349 <param id="34" name="Thickness" value="-0.410" />
350 350
351 <param id="35" name="Big_Ears" value="1.430" /> 351 <param id="35" name="Big_Ears" value="1.430" />
352 352
353 <param id="36" name="Shoulders" value="-1.800" /> 353 <param id="36" name="Shoulders" value="-1.800" />
354 354
355 <param id="37" name="Hip Width" value="-0.380" /> 355 <param id="37" name="Hip Width" value="-0.380" />
356 356
357 <param id="38" name="Torso Length" value="0.060" /> 357 <param id="38" name="Torso Length" value="0.060" />
358 358
359 <param id="80" name="male" value="1.000" /> 359 <param id="80" name="male" value="1.000" />
360 360
361 <param id="105" name="Breast Size" value="0.500" /> 361 <param id="105" name="Breast Size" value="0.500" />
362 362
363 <param id="151" name="Big_Butt_Legs" value="-0.230" /> 363 <param id="151" name="Big_Butt_Legs" value="-0.230" />
364 364
365 <param id="155" name="Lip Width" value="0.440" /> 365 <param id="155" name="Lip Width" value="0.440" />
366 366
367 <param id="157" name="Belly Size" value="0.610" /> 367 <param id="157" name="Belly Size" value="0.610" />
368 368
369 <param id="185" name="Deep_Chin" value="0.060" /> 369 <param id="185" name="Deep_Chin" value="0.060" />
370 370
371 <param id="193" name="Head Shape" value="0.240" /> 371 <param id="193" name="Head Shape" value="0.240" />
372 372
373 <param id="196" name="Eye Spacing" value="0.580" /> 373 <param id="196" name="Eye Spacing" value="0.580" />
374 374
375 <param id="505" name="Lip Thickness" value="0.280" /> 375 <param id="505" name="Lip Thickness" value="0.280" />
376 376
377 <param id="506" name="Mouth_Height" value="0.680" /> 377 <param id="506" name="Mouth_Height" value="0.680" />
378 378
379 <param id="507" name="Breast_Gravity" value="0.000" /> 379 <param id="507" name="Breast_Gravity" value="0.000" />
380 380
381 <param id="515" name="Foot_Size" value="2.000" /> 381 <param id="515" name="Foot_Size" value="2.000" />
382 382
383 <param id="517" name="Wide_Nose" value="-0.140" /> 383 <param id="517" name="Wide_Nose" value="-0.140" />
384 384
385 <param id="518" name="Eyelashes_Long" value="-0.010" /> 385 <param id="518" name="Eyelashes_Long" value="-0.010" />
386 386
387 <param id="629" name="Forehead Angle" value="0.080" /> 387 <param id="629" name="Forehead Angle" value="0.080" />
388 388
389 <param id="637" name="Body Fat" value="0.220" /> 389 <param id="637" name="Body Fat" value="0.220" />
390 390
391 <param id="646" name="Egg_Head" value="0.240" /> 391 <param id="646" name="Egg_Head" value="0.240" />
392 392
393 <param id="647" name="Squash_Stretch_Head" value="0.500" /> 393 <param id="647" name="Squash_Stretch_Head" value="0.500" />
394 394
395 <param id="649" name="Torso Muscles" value="0.500" /> 395 <param id="649" name="Torso Muscles" value="0.500" />
396 396
397 <param id="650" name="Eyelid_Corner_Up" value="-0.520" /> 397 <param id="650" name="Eyelid_Corner_Up" value="-0.520" />
398 398
399 <param id="652" name="Leg Muscles" value="0.160" /> 399 <param id="652" name="Leg Muscles" value="0.160" />
400 400
401 <param id="653" name="Tall_Lips" value="-1.000" /> 401 <param id="653" name="Tall_Lips" value="-1.000" />
402 402
403 <param id="656" name="Crooked_Nose" value="0.680" /> 403 <param id="656" name="Crooked_Nose" value="0.680" />
404 404
405 <param id="659" name="Mouth Corner" value="0.210" /> 405 <param id="659" name="Mouth Corner" value="0.210" />
406 406
407 <param id="662" name="Face Shear" value="0.570" /> 407 <param id="662" name="Face Shear" value="0.570" />
408 408
409 <param id="663" name="Shift_Mouth" value="0.960" /> 409 <param id="663" name="Shift_Mouth" value="0.960" />
410 410
411 <param id="664" name="Pop_Eye" value="-0.340" /> 411 <param id="664" name="Pop_Eye" value="-0.340" />
412 412
413 <param id="665" name="Jaw_Jut" value="0.360" /> 413 <param id="665" name="Jaw_Jut" value="0.360" />
414 414
415 <param id="675" name="Hand Size" value="0.170" /> 415 <param id="675" name="Hand Size" value="0.170" />
416 416
417 <param id="676" name="Love_Handles" value="0.740" /> 417 <param id="676" name="Love_Handles" value="0.740" />
418 418
419 <param id="678" name="Torso Muscles" value="0.120" /> 419 <param id="678" name="Torso Muscles" value="0.120" />
420 420
421 <param id="682" name="Head Size" value="0.730" /> 421 <param id="682" name="Head Size" value="0.730" />
422 422
423 <param id="683" name="Neck Thickness" value="-0.240" /> 423 <param id="683" name="Neck Thickness" value="-0.240" />
424 424
425 <param id="684" name="Breast_Female_Clevage" value="0.000" /> 425 <param id="684" name="Breast_Female_Clevage" value="0.000" />
426 426
427 <param id="685" name="Chest_Male_No_Pecs" value="0.970" /> 427 <param id="685" name="Chest_Male_No_Pecs" value="0.970" />
428 428
429 <param id="690" name="Eye Size" value="0.370" /> 429 <param id="690" name="Eye Size" value="0.370" />
430 430
431 <param id="692" name="Leg Length" value="0.320" /> 431 <param id="692" name="Leg Length" value="0.320" />
432 432
433 <param id="693" name="Arm Length" value="0.580" /> 433 <param id="693" name="Arm Length" value="0.580" />
434 434
435 <param id="753" name="Saddlebags" value="1.040" /> 435 <param id="753" name="Saddlebags" value="1.040" />
436 436
437 <param id="756" name="Neck Length" value="0.540" /> 437 <param id="756" name="Neck Length" value="0.540" />
438 438
439 <param id="758" name="Lower_Bridge_Nose" value="0.990" /> 439 <param id="758" name="Lower_Bridge_Nose" value="0.990" />
440 440
441 <param id="759" name="Low_Septum_Nose" value="0.520" /> 441 <param id="759" name="Low_Septum_Nose" value="0.520" />
442 442
443 <param id="760" name="Jaw_Angle" value="-0.020" /> 443 <param id="760" name="Jaw_Angle" value="-0.020" />
444 444
445 <param id="764" name="Lip_Cleft_Deep" value="-0.250" /> 445 <param id="764" name="Lip_Cleft_Deep" value="-0.250" />
446 446
447 <param id="765" name="Puffy_Lower_Lids" value="2.500" /> 447 <param id="765" name="Puffy_Lower_Lids" value="2.500" />
448 448
449 <param id="769" name="Eye Depth" value="0.000" /> 449 <param id="769" name="Eye Depth" value="0.000" />
450 450
451 <param id="773" name="Head Length" value="0.530" /> 451 <param id="773" name="Head Length" value="0.530" />
452 452
453<!-- wearable: skin --> 453<!-- wearable: skin -->
454 <param id="108" name="Rainbow Color" value="0.000" /> 454 <param id="108" name="Rainbow Color" value="0.000" />
455 455
456 <param id="110" name="Red Skin" value="0.010" /> 456 <param id="110" name="Red Skin" value="0.010" />
457 457
458 <param id="111" name="Pigment" value="0.160" /> 458 <param id="111" name="Pigment" value="0.160" />
459 459
460 <param id="116" name="Rosy Complexion" value="0.010" /> 460 <param id="116" name="Rosy Complexion" value="0.010" />
461 461
462 <param id="117" name="Lip Pinkness" value="0.000" /> 462 <param id="117" name="Lip Pinkness" value="0.000" />
463 463
464 <param id="150" name="Body Definition" value="0.660" /> 464 <param id="150" name="Body Definition" value="0.660" />
465 465
466 <param id="162" name="Facial Definition" value="1.000" /> 466 <param id="162" name="Facial Definition" value="1.000" />
467 467
468 <param id="163" name="Wrinkles" value="1.000" /> 468 <param id="163" name="Wrinkles" value="1.000" />
469 469
470 <param id="165" name="Freckles" value="0.920" /> 470 <param id="165" name="Freckles" value="0.920" />
471 471
472 <param id="700" name="Lipstick Color" value="0.250" /> 472 <param id="700" name="Lipstick Color" value="0.250" />
473 473
474 <param id="701" name="Lipstick" value="0.000" /> 474 <param id="701" name="Lipstick" value="0.000" />
475 475
476 <param id="702" name="Lipgloss" value="0.000" /> 476 <param id="702" name="Lipgloss" value="0.000" />
477 477
478 <param id="703" name="Eyeliner" value="0.000" /> 478 <param id="703" name="Eyeliner" value="0.000" />
479 479
480 <param id="704" name="Blush" value="0.000" /> 480 <param id="704" name="Blush" value="0.000" />
481 481
482 <param id="705" name="Blush Color" value="0.500" /> 482 <param id="705" name="Blush Color" value="0.500" />
483 483
484 <param id="706" name="Out Shdw Opacity" value="0.600" /> 484 <param id="706" name="Out Shdw Opacity" value="0.600" />
485 485
486 <param id="707" name="Outer Shadow" value="0.000" /> 486 <param id="707" name="Outer Shadow" value="0.000" />
487 487
488 <param id="708" name="Out Shdw Color" value="0.000" /> 488 <param id="708" name="Out Shdw Color" value="0.000" />
489 489
490 <param id="709" name="Inner Shadow" value="0.000" /> 490 <param id="709" name="Inner Shadow" value="0.000" />
491 491
492 <param id="710" name="Nail Polish" value="0.000" /> 492 <param id="710" name="Nail Polish" value="0.000" />
493 493
494 <param id="711" name="Blush Opacity" value="0.500" /> 494 <param id="711" name="Blush Opacity" value="0.500" />
495 495
496 <param id="712" name="In Shdw Color" value="0.000" /> 496 <param id="712" name="In Shdw Color" value="0.000" />
497 497
498 <param id="713" name="In Shdw Opacity" value="0.700" /> 498 <param id="713" name="In Shdw Opacity" value="0.700" />
499 499
500 <param id="714" name="Eyeliner Color" value="0.000" /> 500 <param id="714" name="Eyeliner Color" value="0.000" />
501 501
502 <param id="715" name="Nail Polish Color" value="0.000" /> 502 <param id="715" name="Nail Polish Color" value="0.000" />
503 503
504 <texture te="0" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 504 <texture te="0" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
505 505
506 <texture te="5" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 506 <texture te="5" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
507 507
508 <texture te="6" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 508 <texture te="6" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
509 509
510<!-- wearable: hair --> 510<!-- wearable: hair -->
511 <param id="16" name="Pointy_Eyebrows" value="0.805" /> 511 <param id="16" name="Pointy_Eyebrows" value="0.805" />
512 512
513 <param id="31" name="Arced_Eyebrows" value="1.000" /> 513 <param id="31" name="Arced_Eyebrows" value="1.000" />
514 514
515 <param id="112" name="Rainbow Color" value="0.000" /> 515 <param id="112" name="Rainbow Color" value="0.000" />
516 516
517 <param id="113" name="Red Hair" value="0.150" /> 517 <param id="113" name="Red Hair" value="0.150" />
518 518
519 <param id="114" name="Blonde Hair" value="0.960" /> 519 <param id="114" name="Blonde Hair" value="0.960" />
520 520
521 <param id="115" name="White Hair" value="1.000" /> 521 <param id="115" name="White Hair" value="1.000" />
522 522
523 <param id="119" name="Eyebrow Size" value="0.210" /> 523 <param id="119" name="Eyebrow Size" value="0.210" />
524 524
525 <param id="130" name="Front Fringe" value="0.580" /> 525 <param id="130" name="Front Fringe" value="0.580" />
526 526
527 <param id="131" name="Side Fringe" value="0.000" /> 527 <param id="131" name="Side Fringe" value="0.000" />
528 528
529 <param id="132" name="Back Fringe" value="0.480" /> 529 <param id="132" name="Back Fringe" value="0.480" />
530 530
531 <param id="133" name="Hair Front" value="0.390" /> 531 <param id="133" name="Hair Front" value="0.390" />
532 532
533 <param id="134" name="Hair Sides" value="0.350" /> 533 <param id="134" name="Hair Sides" value="0.350" />
534 534
535 <param id="135" name="Hair Back" value="0.540" /> 535 <param id="135" name="Hair Back" value="0.540" />
536 536
537 <param id="136" name="Hair Sweep" value="0.370" /> 537 <param id="136" name="Hair Sweep" value="0.370" />
538 538
539 <param id="137" name="Hair Tilt" value="0.370" /> 539 <param id="137" name="Hair Tilt" value="0.370" />
540 540
541 <param id="140" name="Hair_Part_Middle" value="0.000" /> 541 <param id="140" name="Hair_Part_Middle" value="0.000" />
542 542
543 <param id="141" name="Hair_Part_Right" value="2.000" /> 543 <param id="141" name="Hair_Part_Right" value="2.000" />
544 544
545 <param id="142" name="Hair_Part_Left" value="0.000" /> 545 <param id="142" name="Hair_Part_Left" value="0.000" />
546 546
547 <param id="143" name="Hair_Sides_Full" value="0.070" /> 547 <param id="143" name="Hair_Sides_Full" value="0.070" />
548 548
549 <param id="166" name="Sideburns" value="0.890" /> 549 <param id="166" name="Sideburns" value="0.890" />
550 550
551 <param id="167" name="Moustache" value="0.000" /> 551 <param id="167" name="Moustache" value="0.000" />
552 552
553 <param id="168" name="Soulpatch" value="0.260" /> 553 <param id="168" name="Soulpatch" value="0.260" />
554 554
555 <param id="169" name="Chin Curtains" value="0.890" /> 555 <param id="169" name="Chin Curtains" value="0.890" />
556 556
557 <param id="177" name="Hair_Rumpled" value="0.470" /> 557 <param id="177" name="Hair_Rumpled" value="0.470" />
558 558
559 <param id="181" name="Hair_Big_Front" value="0.460" /> 559 <param id="181" name="Hair_Big_Front" value="0.460" />
560 560
561 <param id="182" name="Hair_Big_Top" value="-0.160" /> 561 <param id="182" name="Hair_Big_Top" value="-0.160" />
562 562
563 <param id="183" name="Hair_Big_Back" value="0.100" /> 563 <param id="183" name="Hair_Big_Back" value="0.100" />
564 564
565 <param id="184" name="Hair_Spiked" value="0.000" /> 565 <param id="184" name="Hair_Spiked" value="0.000" />
566 566
567 <param id="192" name="Bangs_Part_Middle" value="0.000" /> 567 <param id="192" name="Bangs_Part_Middle" value="0.000" />
568 568
569 <param id="674" name="Hair_Shear_Back" value="0.560" /> 569 <param id="674" name="Hair_Shear_Back" value="0.560" />
570 570
571 <param id="750" name="Eyebrow Density" value="0.840" /> 571 <param id="750" name="Eyebrow Density" value="0.840" />
572 572
573 <param id="752" name="Hair Thickness" value="0.120" /> 573 <param id="752" name="Hair Thickness" value="0.120" />
574 574
575 <param id="754" name="Hair_Taper_Back" value="-0.190" /> 575 <param id="754" name="Hair_Taper_Back" value="-0.190" />
576 576
577 <param id="755" name="Hair_Taper_Front" value="1.500" /> 577 <param id="755" name="Hair_Taper_Front" value="1.500" />
578 578
579 <param id="757" name="Lower_Eyebrows" value="2.000" /> 579 <param id="757" name="Lower_Eyebrows" value="2.000" />
580 580
581 <param id="762" name="Hair_Shear_Front" value="1.710" /> 581 <param id="762" name="Hair_Shear_Front" value="1.710" />
582 582
583 <param id="763" name="Hair Volume" value="0.820" /> 583 <param id="763" name="Hair Volume" value="0.820" />
584 584
585 <texture te="4" uuid="7ca39b4c-bd19-4699-aff7-f93fd03d3e7b" /> 585 <texture te="4" uuid="7ca39b4c-bd19-4699-aff7-f93fd03d3e7b" />
586 586
587<!-- wearable: eyes --> 587<!-- wearable: eyes -->
588 <param id="98" name="Eye Lightness" value="0.260" /> 588 <param id="98" name="Eye Lightness" value="0.260" />
589 589
590 <param id="99" name="Eye Color" value="0.420" /> 590 <param id="99" name="Eye Color" value="0.420" />
591 591
592 <texture te="3" uuid="6522e74d-1660-4e7f-b601-6f48c1659a77" /> 592 <texture te="3" uuid="6522e74d-1660-4e7f-b601-6f48c1659a77" />
593 </archetype> 593 </archetype>
594 594
595 <archetype name="M W Obese"> 595 <archetype name="M W Obese">
596<!-- wearable: shape --> 596<!-- wearable: shape -->
597 <param id="1" name="Big_Brow" value="1.380" /> 597 <param id="1" name="Big_Brow" value="1.380" />
598 598
599 <param id="2" name="Nose_Big_Out" value="0.750" /> 599 <param id="2" name="Nose_Big_Out" value="0.750" />
600 600
601 <param id="4" name="Broad_Nostrils" value="0.170" /> 601 <param id="4" name="Broad_Nostrils" value="0.170" />
602 602
603 <param id="5" name="Cleft_Chin" value="0.940" /> 603 <param id="5" name="Cleft_Chin" value="0.940" />
604 604
605 <param id="6" name="Bulbous_Nose_Tip" value="0.810" /> 605 <param id="6" name="Bulbous_Nose_Tip" value="0.810" />
606 606
607 <param id="7" name="Weak_Chin" value="-0.070" /> 607 <param id="7" name="Weak_Chin" value="-0.070" />
608 608
609 <param id="8" name="Double_Chin" value="0.040" /> 609 <param id="8" name="Double_Chin" value="0.040" />
610 610
611 <param id="10" name="Sunken_Cheeks" value="-1.500" /> 611 <param id="10" name="Sunken_Cheeks" value="-1.500" />
612 612
613 <param id="11" name="Noble_Nose_Bridge" value="-0.480" /> 613 <param id="11" name="Noble_Nose_Bridge" value="-0.480" />
614 614
615 <param id="12" name="Jowls" value="1.990" /> 615 <param id="12" name="Jowls" value="1.990" />
616 616
617 <param id="13" name="Cleft_Chin_Upper" value="1.500" /> 617 <param id="13" name="Cleft_Chin_Upper" value="1.500" />
618 618
619 <param id="14" name="High_Cheek_Bones" value="-0.310" /> 619 <param id="14" name="High_Cheek_Bones" value="-0.310" />
620 620
621 <param id="15" name="Ears_Out" value="1.160" /> 621 <param id="15" name="Ears_Out" value="1.160" />
622 622
623 <param id="17" name="Square_Jaw" value="0.670" /> 623 <param id="17" name="Square_Jaw" value="0.670" />
624 624
625 <param id="18" name="Puffy_Upper_Cheeks" value="2.500" /> 625 <param id="18" name="Puffy_Upper_Cheeks" value="2.500" />
626 626
627 <param id="19" name="Upturned_Nose_Tip" value="-0.500" /> 627 <param id="19" name="Upturned_Nose_Tip" value="-0.500" />
628 628
629 <param id="20" name="Bulbous_Nose" value="0.540" /> 629 <param id="20" name="Bulbous_Nose" value="0.540" />
630 630
631 <param id="21" name="Upper_Eyelid_Fold" value="0.090" /> 631 <param id="21" name="Upper_Eyelid_Fold" value="0.090" />
632 632
633 <param id="22" name="Attached_Earlobes" value="0.420" /> 633 <param id="22" name="Attached_Earlobes" value="0.420" />
634 634
635 <param id="23" name="Baggy_Eyes" value="1.500" /> 635 <param id="23" name="Baggy_Eyes" value="1.500" />
636 636
637 <param id="24" name="Wide_Eyes" value="-0.100" /> 637 <param id="24" name="Wide_Eyes" value="-0.100" />
638 638
639 <param id="25" name="Wide_Lip_Cleft" value="-0.800" /> 639 <param id="25" name="Wide_Lip_Cleft" value="-0.800" />
640 640
641 <param id="27" name="Wide_Nose_Bridge" value="-0.950" /> 641 <param id="27" name="Wide_Nose_Bridge" value="-0.950" />
642 642
643 <param id="33" name="Height" value="-1.230" /> 643 <param id="33" name="Height" value="-1.230" />
644 644
645 <param id="34" name="Thickness" value="1.500" /> 645 <param id="34" name="Thickness" value="1.500" />
646 646
647 <param id="35" name="Big_Ears" value="-0.220" /> 647 <param id="35" name="Big_Ears" value="-0.220" />
648 648
649 <param id="36" name="Shoulders" value="-0.810" /> 649 <param id="36" name="Shoulders" value="-0.810" />
650 650
651 <param id="37" name="Hip Width" value="0.160" /> 651 <param id="37" name="Hip Width" value="0.160" />
652 652
653 <param id="38" name="Torso Length" value="-0.360" /> 653 <param id="38" name="Torso Length" value="-0.360" />
654 654
655 <param id="80" name="male" value="1.000" /> 655 <param id="80" name="male" value="1.000" />
656 656
657 <param id="105" name="Breast Size" value="0.500" /> 657 <param id="105" name="Breast Size" value="0.500" />
658 658
659 <param id="151" name="Big_Butt_Legs" value="0.540" /> 659 <param id="151" name="Big_Butt_Legs" value="0.540" />
660 660
661 <param id="155" name="Lip Width" value="-0.900" /> 661 <param id="155" name="Lip Width" value="-0.900" />
662 662
663 <param id="157" name="Belly Size" value="0.150" /> 663 <param id="157" name="Belly Size" value="0.150" />
664 664
665 <param id="185" name="Deep_Chin" value="1.000" /> 665 <param id="185" name="Deep_Chin" value="1.000" />
666 666
667 <param id="193" name="Head Shape" value="0.950" /> 667 <param id="193" name="Head Shape" value="0.950" />
668 668
669 <param id="196" name="Eye Spacing" value="-1.100" /> 669 <param id="196" name="Eye Spacing" value="-1.100" />
670 670
671 <param id="505" name="Lip Thickness" value="1.000" /> 671 <param id="505" name="Lip Thickness" value="1.000" />
672 672
673 <param id="506" name="Mouth_Height" value="1.240" /> 673 <param id="506" name="Mouth_Height" value="1.240" />
674 674
675 <param id="507" name="Breast_Gravity" value="0.000" /> 675 <param id="507" name="Breast_Gravity" value="0.000" />
676 676
677 <param id="515" name="Foot_Size" value="0.120" /> 677 <param id="515" name="Foot_Size" value="0.120" />
678 678
679 <param id="517" name="Wide_Nose" value="0.580" /> 679 <param id="517" name="Wide_Nose" value="0.580" />
680 680
681 <param id="518" name="Eyelashes_Long" value="0.220" /> 681 <param id="518" name="Eyelashes_Long" value="0.220" />
682 682
683 <param id="629" name="Forehead Angle" value="0.120" /> 683 <param id="629" name="Forehead Angle" value="0.120" />
684 684
685 <param id="637" name="Body Fat" value="1.000" /> 685 <param id="637" name="Body Fat" value="1.000" />
686 686
687 <param id="646" name="Egg_Head" value="-1.280" /> 687 <param id="646" name="Egg_Head" value="-1.280" />
688 688
689 <param id="647" name="Squash_Stretch_Head" value="-0.500" /> 689 <param id="647" name="Squash_Stretch_Head" value="-0.500" />
690 690
691 <param id="649" name="Torso Muscles" value="0.500" /> 691 <param id="649" name="Torso Muscles" value="0.500" />
692 692
693 <param id="650" name="Eyelid_Corner_Up" value="-0.950" /> 693 <param id="650" name="Eyelid_Corner_Up" value="-0.950" />
694 694
695 <param id="652" name="Leg Muscles" value="0.520" /> 695 <param id="652" name="Leg Muscles" value="0.520" />
696 696
697 <param id="653" name="Tall_Lips" value="0.890" /> 697 <param id="653" name="Tall_Lips" value="0.890" />
698 698
699 <param id="656" name="Crooked_Nose" value="-0.240" /> 699 <param id="656" name="Crooked_Nose" value="-0.240" />
700 700
701 <param id="659" name="Mouth Corner" value="0.310" /> 701 <param id="659" name="Mouth Corner" value="0.310" />
702 702
703 <param id="662" name="Face Shear" value="0.470" /> 703 <param id="662" name="Face Shear" value="0.470" />
704 704
705 <param id="663" name="Shift_Mouth" value="0.520" /> 705 <param id="663" name="Shift_Mouth" value="0.520" />
706 706
707 <param id="664" name="Pop_Eye" value="0.570" /> 707 <param id="664" name="Pop_Eye" value="0.570" />
708 708
709 <param id="665" name="Jaw_Jut" value="-0.600" /> 709 <param id="665" name="Jaw_Jut" value="-0.600" />
710 710
711 <param id="675" name="Hand Size" value="-0.110" /> 711 <param id="675" name="Hand Size" value="-0.110" />
712 712
713 <param id="676" name="Love_Handles" value="-0.130" /> 713 <param id="676" name="Love_Handles" value="-0.130" />
714 714
715 <param id="678" name="Torso Muscles" value="0.410" /> 715 <param id="678" name="Torso Muscles" value="0.410" />
716 716
717 <param id="682" name="Head Size" value="0.150" /> 717 <param id="682" name="Head Size" value="0.150" />
718 718
719 <param id="683" name="Neck Thickness" value="0.090" /> 719 <param id="683" name="Neck Thickness" value="0.090" />
720 720
721 <param id="684" name="Breast_Female_Clevage" value="0.000" /> 721 <param id="684" name="Breast_Female_Clevage" value="0.000" />
722 722
723 <param id="685" name="Chest_Male_No_Pecs" value="-0.400" /> 723 <param id="685" name="Chest_Male_No_Pecs" value="-0.400" />
724 724
725 <param id="690" name="Eye Size" value="0.070" /> 725 <param id="690" name="Eye Size" value="0.070" />
726 726
727 <param id="692" name="Leg Length" value="-0.080" /> 727 <param id="692" name="Leg Length" value="-0.080" />
728 728
729 <param id="693" name="Arm Length" value="-0.060" /> 729 <param id="693" name="Arm Length" value="-0.060" />
730 730
731 <param id="753" name="Saddlebags" value="1.500" /> 731 <param id="753" name="Saddlebags" value="1.500" />
732 732
733 <param id="756" name="Neck Length" value="-0.520" /> 733 <param id="756" name="Neck Length" value="-0.520" />
734 734
735 <param id="758" name="Lower_Bridge_Nose" value="-0.990" /> 735 <param id="758" name="Lower_Bridge_Nose" value="-0.990" />
736 736
737 <param id="759" name="Low_Septum_Nose" value="0.300" /> 737 <param id="759" name="Low_Septum_Nose" value="0.300" />
738 738
739 <param id="760" name="Jaw_Angle" value="0.208" /> 739 <param id="760" name="Jaw_Angle" value="0.208" />
740 740
741 <param id="764" name="Lip_Cleft_Deep" value="0.980" /> 741 <param id="764" name="Lip_Cleft_Deep" value="0.980" />
742 742
743 <param id="765" name="Puffy_Lower_Lids" value="2.280" /> 743 <param id="765" name="Puffy_Lower_Lids" value="2.280" />
744 744
745 <param id="769" name="Eye Depth" value="0.370" /> 745 <param id="769" name="Eye Depth" value="0.370" />
746 746
747 <param id="773" name="Head Length" value="0.190" /> 747 <param id="773" name="Head Length" value="0.190" />
748 748
749<!-- wearable: skin --> 749<!-- wearable: skin -->
750 <param id="108" name="Rainbow Color" value="0.000" /> 750 <param id="108" name="Rainbow Color" value="0.000" />
751 751
752 <param id="110" name="Red Skin" value="0.100" /> 752 <param id="110" name="Red Skin" value="0.100" />
753 753
754 <param id="111" name="Pigment" value="0.000" /> 754 <param id="111" name="Pigment" value="0.000" />
755 755
756 <param id="116" name="Rosy Complexion" value="0.350" /> 756 <param id="116" name="Rosy Complexion" value="0.350" />
757 757
758 <param id="117" name="Lip Pinkness" value="0.470" /> 758 <param id="117" name="Lip Pinkness" value="0.470" />
759 759
760 <param id="150" name="Body Definition" value="0.000" /> 760 <param id="150" name="Body Definition" value="0.000" />
761 761
762 <param id="162" name="Facial Definition" value="0.000" /> 762 <param id="162" name="Facial Definition" value="0.000" />
763 763
764 <param id="163" name="Wrinkles" value="0.000" /> 764 <param id="163" name="Wrinkles" value="0.000" />
765 765
766 <param id="165" name="Freckles" value="0.400" /> 766 <param id="165" name="Freckles" value="0.400" />
767 767
768 <param id="700" name="Lipstick Color" value="0.250" /> 768 <param id="700" name="Lipstick Color" value="0.250" />
769 769
770 <param id="701" name="Lipstick" value="0.000" /> 770 <param id="701" name="Lipstick" value="0.000" />
771 771
772 <param id="702" name="Lipgloss" value="0.000" /> 772 <param id="702" name="Lipgloss" value="0.000" />
773 773
774 <param id="703" name="Eyeliner" value="0.000" /> 774 <param id="703" name="Eyeliner" value="0.000" />
775 775
776 <param id="704" name="Blush" value="0.000" /> 776 <param id="704" name="Blush" value="0.000" />
777 777
778 <param id="705" name="Blush Color" value="0.500" /> 778 <param id="705" name="Blush Color" value="0.500" />
779 779
780 <param id="706" name="Out Shdw Opacity" value="0.600" /> 780 <param id="706" name="Out Shdw Opacity" value="0.600" />
781 781
782 <param id="707" name="Outer Shadow" value="0.000" /> 782 <param id="707" name="Outer Shadow" value="0.000" />
783 783
784 <param id="708" name="Out Shdw Color" value="0.000" /> 784 <param id="708" name="Out Shdw Color" value="0.000" />
785 785
786 <param id="709" name="Inner Shadow" value="0.000" /> 786 <param id="709" name="Inner Shadow" value="0.000" />
787 787
788 <param id="710" name="Nail Polish" value="0.000" /> 788 <param id="710" name="Nail Polish" value="0.000" />
789 789
790 <param id="711" name="Blush Opacity" value="0.500" /> 790 <param id="711" name="Blush Opacity" value="0.500" />
791 791
792 <param id="712" name="In Shdw Color" value="0.000" /> 792 <param id="712" name="In Shdw Color" value="0.000" />
793 793
794 <param id="713" name="In Shdw Opacity" value="0.700" /> 794 <param id="713" name="In Shdw Opacity" value="0.700" />
795 795
796 <param id="714" name="Eyeliner Color" value="0.000" /> 796 <param id="714" name="Eyeliner Color" value="0.000" />
797 797
798 <param id="715" name="Nail Polish Color" value="0.000" /> 798 <param id="715" name="Nail Polish Color" value="0.000" />
799 799
800 <texture te="0" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 800 <texture te="0" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
801 801
802 <texture te="5" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 802 <texture te="5" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
803 803
804 <texture te="6" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 804 <texture te="6" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
805 805
806<!-- wearable: hair --> 806<!-- wearable: hair -->
807 <param id="16" name="Pointy_Eyebrows" value="-0.500" /> 807 <param id="16" name="Pointy_Eyebrows" value="-0.500" />
808 808
809 <param id="31" name="Arced_Eyebrows" value="1.000" /> 809 <param id="31" name="Arced_Eyebrows" value="1.000" />
810 810
811 <param id="112" name="Rainbow Color" value="0.000" /> 811 <param id="112" name="Rainbow Color" value="0.000" />
812 812
813 <param id="113" name="Red Hair" value="0.320" /> 813 <param id="113" name="Red Hair" value="0.320" />
814 814
815 <param id="114" name="Blonde Hair" value="0.510" /> 815 <param id="114" name="Blonde Hair" value="0.510" />
816 816
817 <param id="115" name="White Hair" value="0.170" /> 817 <param id="115" name="White Hair" value="0.170" />
818 818
819 <param id="119" name="Eyebrow Size" value="0.190" /> 819 <param id="119" name="Eyebrow Size" value="0.190" />
820 820
821 <param id="130" name="Front Fringe" value="0.470" /> 821 <param id="130" name="Front Fringe" value="0.470" />
822 822
823 <param id="131" name="Side Fringe" value="0.370" /> 823 <param id="131" name="Side Fringe" value="0.370" />
824 824
825 <param id="132" name="Back Fringe" value="0.300" /> 825 <param id="132" name="Back Fringe" value="0.300" />
826 826
827 <param id="133" name="Hair Front" value="0.370" /> 827 <param id="133" name="Hair Front" value="0.370" />
828 828
829 <param id="134" name="Hair Sides" value="0.190" /> 829 <param id="134" name="Hair Sides" value="0.190" />
830 830
831 <param id="135" name="Hair Back" value="0.000" /> 831 <param id="135" name="Hair Back" value="0.000" />
832 832
833 <param id="136" name="Hair Sweep" value="0.600" /> 833 <param id="136" name="Hair Sweep" value="0.600" />
834 834
835 <param id="137" name="Hair Tilt" value="0.500" /> 835 <param id="137" name="Hair Tilt" value="0.500" />
836 836
837 <param id="140" name="Hair_Part_Middle" value="0.000" /> 837 <param id="140" name="Hair_Part_Middle" value="0.000" />
838 838
839 <param id="141" name="Hair_Part_Right" value="0.000" /> 839 <param id="141" name="Hair_Part_Right" value="0.000" />
840 840
841 <param id="142" name="Hair_Part_Left" value="0.000" /> 841 <param id="142" name="Hair_Part_Left" value="0.000" />
842 842
843 <param id="143" name="Hair_Sides_Full" value="-0.370" /> 843 <param id="143" name="Hair_Sides_Full" value="-0.370" />
844 844
845 <param id="166" name="Sideburns" value="0.000" /> 845 <param id="166" name="Sideburns" value="0.000" />
846 846
847 <param id="167" name="Moustache" value="0.000" /> 847 <param id="167" name="Moustache" value="0.000" />
848 848
849 <param id="168" name="Soulpatch" value="0.000" /> 849 <param id="168" name="Soulpatch" value="0.000" />
850 850
851 <param id="169" name="Chin Curtains" value="0.000" /> 851 <param id="169" name="Chin Curtains" value="0.000" />
852 852
853 <param id="177" name="Hair_Rumpled" value="0.860" /> 853 <param id="177" name="Hair_Rumpled" value="0.860" />
854 854
855 <param id="181" name="Hair_Big_Front" value="0.240" /> 855 <param id="181" name="Hair_Big_Front" value="0.240" />
856 856
857 <param id="182" name="Hair_Big_Top" value="0.060" /> 857 <param id="182" name="Hair_Big_Top" value="0.060" />
858 858
859 <param id="183" name="Hair_Big_Back" value="0.120" /> 859 <param id="183" name="Hair_Big_Back" value="0.120" />
860 860
861 <param id="184" name="Hair_Spiked" value="0.120" /> 861 <param id="184" name="Hair_Spiked" value="0.120" />
862 862
863 <param id="192" name="Bangs_Part_Middle" value="1.000" /> 863 <param id="192" name="Bangs_Part_Middle" value="1.000" />
864 864
865 <param id="674" name="Hair_Shear_Back" value="-0.640" /> 865 <param id="674" name="Hair_Shear_Back" value="-0.640" />
866 866
867 <param id="750" name="Eyebrow Density" value="0.410" /> 867 <param id="750" name="Eyebrow Density" value="0.410" />
868 868
869 <param id="752" name="Hair Thickness" value="0.000" /> 869 <param id="752" name="Hair Thickness" value="0.000" />
870 870
871 <param id="754" name="Hair_Taper_Back" value="0.350" /> 871 <param id="754" name="Hair_Taper_Back" value="0.350" />
872 872
873 <param id="755" name="Hair_Taper_Front" value="-1.170" /> 873 <param id="755" name="Hair_Taper_Front" value="-1.170" />
874 874
875 <param id="757" name="Lower_Eyebrows" value="-2.000" /> 875 <param id="757" name="Lower_Eyebrows" value="-2.000" />
876 876
877 <param id="762" name="Hair_Shear_Front" value="1.500" /> 877 <param id="762" name="Hair_Shear_Front" value="1.500" />
878 878
879 <param id="763" name="Hair Volume" value="0.820" /> 879 <param id="763" name="Hair Volume" value="0.820" />
880 880
881 <texture te="4" uuid="7ca39b4c-bd19-4699-aff7-f93fd03d3e7b" /> 881 <texture te="4" uuid="7ca39b4c-bd19-4699-aff7-f93fd03d3e7b" />
882 882
883<!-- wearable: eyes --> 883<!-- wearable: eyes -->
884 <param id="98" name="Eye Lightness" value="0.270" /> 884 <param id="98" name="Eye Lightness" value="0.270" />
885 885
886 <param id="99" name="Eye Color" value="0.090" /> 886 <param id="99" name="Eye Color" value="0.090" />
887 887
888 <texture te="3" uuid="6522e74d-1660-4e7f-b601-6f48c1659a77" /> 888 <texture te="3" uuid="6522e74d-1660-4e7f-b601-6f48c1659a77" />
889 </archetype> 889 </archetype>
890 890
891 <archetype name=" M W Muscle"> 891 <archetype name=" M W Muscle">
892<!-- wearable: shape --> 892<!-- wearable: shape -->
893 <param id="1" name="Big_Brow" value="0.550" /> 893 <param id="1" name="Big_Brow" value="0.550" />
894 894
895 <param id="2" name="Nose_Big_Out" value="-0.070" /> 895 <param id="2" name="Nose_Big_Out" value="-0.070" />
896 896
897 <param id="4" name="Broad_Nostrils" value="0.160" /> 897 <param id="4" name="Broad_Nostrils" value="0.160" />
898 898
899 <param id="5" name="Cleft_Chin" value="0.960" /> 899 <param id="5" name="Cleft_Chin" value="0.960" />
900 900
901 <param id="6" name="Bulbous_Nose_Tip" value="0.700" /> 901 <param id="6" name="Bulbous_Nose_Tip" value="0.700" />
902 902
903 <param id="7" name="Weak_Chin" value="-0.280" /> 903 <param id="7" name="Weak_Chin" value="-0.280" />
904 904
905 <param id="8" name="Double_Chin" value="0.460" /> 905 <param id="8" name="Double_Chin" value="0.460" />
906 906
907 <param id="10" name="Sunken_Cheeks" value="0.120" /> 907 <param id="10" name="Sunken_Cheeks" value="0.120" />
908 908
909 <param id="11" name="Noble_Nose_Bridge" value="0.240" /> 909 <param id="11" name="Noble_Nose_Bridge" value="0.240" />
910 910
911 <param id="12" name="Jowls" value="0.010" /> 911 <param id="12" name="Jowls" value="0.010" />
912 912
913 <param id="13" name="Cleft_Chin_Upper" value="0.940" /> 913 <param id="13" name="Cleft_Chin_Upper" value="0.940" />
914 914
915 <param id="14" name="High_Cheek_Bones" value="-0.020" /> 915 <param id="14" name="High_Cheek_Bones" value="-0.020" />
916 916
917 <param id="15" name="Ears_Out" value="-0.260" /> 917 <param id="15" name="Ears_Out" value="-0.260" />
918 918
919 <param id="17" name="Square_Jaw" value="-0.090" /> 919 <param id="17" name="Square_Jaw" value="-0.090" />
920 920
921 <param id="18" name="Puffy_Upper_Cheeks" value="-0.580" /> 921 <param id="18" name="Puffy_Upper_Cheeks" value="-0.580" />
922 922
923 <param id="19" name="Upturned_Nose_Tip" value="-0.630" /> 923 <param id="19" name="Upturned_Nose_Tip" value="-0.630" />
924 924
925 <param id="20" name="Bulbous_Nose" value="0.020" /> 925 <param id="20" name="Bulbous_Nose" value="0.020" />
926 926
927 <param id="21" name="Upper_Eyelid_Fold" value="0.160" /> 927 <param id="21" name="Upper_Eyelid_Fold" value="0.160" />
928 928
929 <param id="22" name="Attached_Earlobes" value="0.000" /> 929 <param id="22" name="Attached_Earlobes" value="0.000" />
930 930
931 <param id="23" name="Baggy_Eyes" value="0.500" /> 931 <param id="23" name="Baggy_Eyes" value="0.500" />
932 932
933 <param id="24" name="Wide_Eyes" value="-0.490" /> 933 <param id="24" name="Wide_Eyes" value="-0.490" />
934 934
935 <param id="25" name="Wide_Lip_Cleft" value="0.580" /> 935 <param id="25" name="Wide_Lip_Cleft" value="0.580" />
936 936
937 <param id="27" name="Wide_Nose_Bridge" value="0.000" /> 937 <param id="27" name="Wide_Nose_Bridge" value="0.000" />
938 938
939 <param id="33" name="Height" value="0.580" /> 939 <param id="33" name="Height" value="0.580" />
940 940
941 <param id="34" name="Thickness" value="0.660" /> 941 <param id="34" name="Thickness" value="0.660" />
942 942
943 <param id="35" name="Big_Ears" value="0.410" /> 943 <param id="35" name="Big_Ears" value="0.410" />
944 944
945 <param id="36" name="Shoulders" value="0.470" /> 945 <param id="36" name="Shoulders" value="0.470" />
946 946
947 <param id="37" name="Hip Width" value="-0.920" /> 947 <param id="37" name="Hip Width" value="-0.920" />
948 948
949 <param id="38" name="Torso Length" value="0.220" /> 949 <param id="38" name="Torso Length" value="0.220" />
950 950
951 <param id="80" name="male" value="1.000" /> 951 <param id="80" name="male" value="1.000" />
952 952
953 <param id="105" name="Breast Size" value="0.500" /> 953 <param id="105" name="Breast Size" value="0.500" />
954 954
955 <param id="151" name="Big_Butt_Legs" value="-0.020" /> 955 <param id="151" name="Big_Butt_Legs" value="-0.020" />
956 956
957 <param id="155" name="Lip Width" value="0.240" /> 957 <param id="155" name="Lip Width" value="0.240" />
958 958
959 <param id="157" name="Belly Size" value="0.110" /> 959 <param id="157" name="Belly Size" value="0.110" />
960 960
961 <param id="185" name="Deep_Chin" value="0.260" /> 961 <param id="185" name="Deep_Chin" value="0.260" />
962 962
963 <param id="193" name="Head Shape" value="0.370" /> 963 <param id="193" name="Head Shape" value="0.370" />
964 964
965 <param id="196" name="Eye Spacing" value="-0.080" /> 965 <param id="196" name="Eye Spacing" value="-0.080" />
966 966
967 <param id="505" name="Lip Thickness" value="0.500" /> 967 <param id="505" name="Lip Thickness" value="0.500" />
968 968
969 <param id="506" name="Mouth_Height" value="0.600" /> 969 <param id="506" name="Mouth_Height" value="0.600" />
970 970
971 <param id="507" name="Breast_Gravity" value="0.000" /> 971 <param id="507" name="Breast_Gravity" value="0.000" />
972 972
973 <param id="515" name="Foot_Size" value="1.800" /> 973 <param id="515" name="Foot_Size" value="1.800" />
974 974
975 <param id="517" name="Wide_Nose" value="-0.080" /> 975 <param id="517" name="Wide_Nose" value="-0.080" />
976 976
977 <param id="518" name="Eyelashes_Long" value="-0.080" /> 977 <param id="518" name="Eyelashes_Long" value="-0.080" />
978 978
979 <param id="629" name="Forehead Angle" value="0.170" /> 979 <param id="629" name="Forehead Angle" value="0.170" />
980 980
981 <param id="637" name="Body Fat" value="0.120" /> 981 <param id="637" name="Body Fat" value="0.120" />
982 982
983 <param id="646" name="Egg_Head" value="0.470" /> 983 <param id="646" name="Egg_Head" value="0.470" />
984 984
985 <param id="647" name="Squash_Stretch_Head" value="0.430" /> 985 <param id="647" name="Squash_Stretch_Head" value="0.430" />
986 986
987 <param id="649" name="Torso Muscles" value="0.500" /> 987 <param id="649" name="Torso Muscles" value="0.500" />
988 988
989 <param id="650" name="Eyelid_Corner_Up" value="-0.250" /> 989 <param id="650" name="Eyelid_Corner_Up" value="-0.250" />
990 990
991 <param id="652" name="Leg Muscles" value="0.720" /> 991 <param id="652" name="Leg Muscles" value="0.720" />
992 992
993 <param id="653" name="Tall_Lips" value="-0.580" /> 993 <param id="653" name="Tall_Lips" value="-0.580" />
994 994
995 <param id="656" name="Crooked_Nose" value="0.000" /> 995 <param id="656" name="Crooked_Nose" value="0.000" />
996 996
997 <param id="659" name="Mouth Corner" value="0.480" /> 997 <param id="659" name="Mouth Corner" value="0.480" />
998 998
999 <param id="662" name="Face Shear" value="0.500" /> 999 <param id="662" name="Face Shear" value="0.500" />
1000 1000
1001 <param id="663" name="Shift_Mouth" value="0.000" /> 1001 <param id="663" name="Shift_Mouth" value="0.000" />
1002 1002
1003 <param id="664" name="Pop_Eye" value="0.000" /> 1003 <param id="664" name="Pop_Eye" value="0.000" />
1004 1004
1005 <param id="665" name="Jaw_Jut" value="0.560" /> 1005 <param id="665" name="Jaw_Jut" value="0.560" />
1006 1006
1007 <param id="675" name="Hand Size" value="0.100" /> 1007 <param id="675" name="Hand Size" value="0.100" />
1008 1008
1009 <param id="676" name="Love_Handles" value="0.140" /> 1009 <param id="676" name="Love_Handles" value="0.140" />
1010 1010
1011 <param id="678" name="Torso Muscles" value="0.790" /> 1011 <param id="678" name="Torso Muscles" value="0.790" />
1012 1012
1013 <param id="682" name="Head Size" value="0.650" /> 1013 <param id="682" name="Head Size" value="0.650" />
1014 1014
1015 <param id="683" name="Neck Thickness" value="0.070" /> 1015 <param id="683" name="Neck Thickness" value="0.070" />
1016 1016
1017 <param id="684" name="Breast_Female_Clevage" value="0.000" /> 1017 <param id="684" name="Breast_Female_Clevage" value="0.000" />
1018 1018
1019 <param id="685" name="Chest_Male_No_Pecs" value="0.200" /> 1019 <param id="685" name="Chest_Male_No_Pecs" value="0.200" />
1020 1020
1021 <param id="690" name="Eye Size" value="0.260" /> 1021 <param id="690" name="Eye Size" value="0.260" />
1022 1022
1023 <param id="692" name="Leg Length" value="0.340" /> 1023 <param id="692" name="Leg Length" value="0.340" />
1024 1024
1025 <param id="693" name="Arm Length" value="0.440" /> 1025 <param id="693" name="Arm Length" value="0.440" />
1026 1026
1027 <param id="753" name="Saddlebags" value="0.440" /> 1027 <param id="753" name="Saddlebags" value="0.440" />
1028 1028
1029 <param id="756" name="Neck Length" value="-0.020" /> 1029 <param id="756" name="Neck Length" value="-0.020" />
1030 1030
1031 <param id="758" name="Lower_Bridge_Nose" value="0.270" /> 1031 <param id="758" name="Lower_Bridge_Nose" value="0.270" />
1032 1032
1033 <param id="759" name="Low_Septum_Nose" value="0.950" /> 1033 <param id="759" name="Low_Septum_Nose" value="0.950" />
1034 1034
1035 <param id="760" name="Jaw_Angle" value="-0.050" /> 1035 <param id="760" name="Jaw_Angle" value="-0.050" />
1036 1036
1037 <param id="764" name="Lip_Cleft_Deep" value="0.470" /> 1037 <param id="764" name="Lip_Cleft_Deep" value="0.470" />
1038 1038
1039 <param id="765" name="Puffy_Lower_Lids" value="0.820" /> 1039 <param id="765" name="Puffy_Lower_Lids" value="0.820" />
1040 1040
1041 <param id="769" name="Eye Depth" value="0.230" /> 1041 <param id="769" name="Eye Depth" value="0.230" />
1042 1042
1043 <param id="773" name="Head Length" value="0.670" /> 1043 <param id="773" name="Head Length" value="0.670" />
1044 1044
1045<!-- wearable: skin --> 1045<!-- wearable: skin -->
1046 <param id="108" name="Rainbow Color" value="0.000" /> 1046 <param id="108" name="Rainbow Color" value="0.000" />
1047 1047
1048 <param id="110" name="Red Skin" value="0.075" /> 1048 <param id="110" name="Red Skin" value="0.075" />
1049 1049
1050 <param id="111" name="Pigment" value="0.220" /> 1050 <param id="111" name="Pigment" value="0.220" />
1051 1051
1052 <param id="116" name="Rosy Complexion" value="0.170" /> 1052 <param id="116" name="Rosy Complexion" value="0.170" />
1053 1053
1054 <param id="117" name="Lip Pinkness" value="0.170" /> 1054 <param id="117" name="Lip Pinkness" value="0.170" />
1055 1055
1056 <param id="150" name="Body Definition" value="0.000" /> 1056 <param id="150" name="Body Definition" value="0.000" />
1057 1057
1058 <param id="162" name="Facial Definition" value="0.320" /> 1058 <param id="162" name="Facial Definition" value="0.320" />
1059 1059
1060 <param id="163" name="Wrinkles" value="0.490" /> 1060 <param id="163" name="Wrinkles" value="0.490" />
1061 1061
1062 <param id="165" name="Freckles" value="0.250" /> 1062 <param id="165" name="Freckles" value="0.250" />
1063 1063
1064 <param id="700" name="Lipstick Color" value="0.250" /> 1064 <param id="700" name="Lipstick Color" value="0.250" />
1065 1065
1066 <param id="701" name="Lipstick" value="0.000" /> 1066 <param id="701" name="Lipstick" value="0.000" />
1067 1067
1068 <param id="702" name="Lipgloss" value="0.000" /> 1068 <param id="702" name="Lipgloss" value="0.000" />
1069 1069
1070 <param id="703" name="Eyeliner" value="0.000" /> 1070 <param id="703" name="Eyeliner" value="0.000" />
1071 1071
1072 <param id="704" name="Blush" value="0.000" /> 1072 <param id="704" name="Blush" value="0.000" />
1073 1073
1074 <param id="705" name="Blush Color" value="0.500" /> 1074 <param id="705" name="Blush Color" value="0.500" />
1075 1075
1076 <param id="706" name="Out Shdw Opacity" value="0.600" /> 1076 <param id="706" name="Out Shdw Opacity" value="0.600" />
1077 1077
1078 <param id="707" name="Outer Shadow" value="0.000" /> 1078 <param id="707" name="Outer Shadow" value="0.000" />
1079 1079
1080 <param id="708" name="Out Shdw Color" value="0.000" /> 1080 <param id="708" name="Out Shdw Color" value="0.000" />
1081 1081
1082 <param id="709" name="Inner Shadow" value="0.000" /> 1082 <param id="709" name="Inner Shadow" value="0.000" />
1083 1083
1084 <param id="710" name="Nail Polish" value="0.000" /> 1084 <param id="710" name="Nail Polish" value="0.000" />
1085 1085
1086 <param id="711" name="Blush Opacity" value="0.500" /> 1086 <param id="711" name="Blush Opacity" value="0.500" />
1087 1087
1088 <param id="712" name="In Shdw Color" value="0.000" /> 1088 <param id="712" name="In Shdw Color" value="0.000" />
1089 1089
1090 <param id="713" name="In Shdw Opacity" value="0.700" /> 1090 <param id="713" name="In Shdw Opacity" value="0.700" />
1091 1091
1092 <param id="714" name="Eyeliner Color" value="0.000" /> 1092 <param id="714" name="Eyeliner Color" value="0.000" />
1093 1093
1094 <param id="715" name="Nail Polish Color" value="0.000" /> 1094 <param id="715" name="Nail Polish Color" value="0.000" />
1095 1095
1096 <texture te="0" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 1096 <texture te="0" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
1097 1097
1098 <texture te="5" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 1098 <texture te="5" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
1099 1099
1100 <texture te="6" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 1100 <texture te="6" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
1101 1101
1102<!-- wearable: hair --> 1102<!-- wearable: hair -->
1103 <param id="16" name="Pointy_Eyebrows" value="0.280" /> 1103 <param id="16" name="Pointy_Eyebrows" value="0.280" />
1104 1104
1105 <param id="31" name="Arced_Eyebrows" value="0.270" /> 1105 <param id="31" name="Arced_Eyebrows" value="0.270" />
1106 1106
1107 <param id="112" name="Rainbow Color" value="0.000" /> 1107 <param id="112" name="Rainbow Color" value="0.000" />
1108 1108
1109 <param id="113" name="Red Hair" value="0.480" /> 1109 <param id="113" name="Red Hair" value="0.480" />
1110 1110
1111 <param id="114" name="Blonde Hair" value="0.500" /> 1111 <param id="114" name="Blonde Hair" value="0.500" />
1112 1112
1113 <param id="115" name="White Hair" value="0.000" /> 1113 <param id="115" name="White Hair" value="0.000" />
1114 1114
1115 <param id="119" name="Eyebrow Size" value="0.470" /> 1115 <param id="119" name="Eyebrow Size" value="0.470" />
1116 1116
1117 <param id="130" name="Front Fringe" value="0.350" /> 1117 <param id="130" name="Front Fringe" value="0.350" />
1118 1118
1119 <param id="131" name="Side Fringe" value="0.370" /> 1119 <param id="131" name="Side Fringe" value="0.370" />
1120 1120
1121 <param id="132" name="Back Fringe" value="0.420" /> 1121 <param id="132" name="Back Fringe" value="0.420" />
1122 1122
1123 <param id="133" name="Hair Front" value="0.040" /> 1123 <param id="133" name="Hair Front" value="0.040" />
1124 1124
1125 <param id="134" name="Hair Sides" value="0.580" /> 1125 <param id="134" name="Hair Sides" value="0.580" />
1126 1126
1127 <param id="135" name="Hair Back" value="0.520" /> 1127 <param id="135" name="Hair Back" value="0.520" />
1128 1128
1129 <param id="136" name="Hair Sweep" value="0.510" /> 1129 <param id="136" name="Hair Sweep" value="0.510" />
1130 1130
1131 <param id="137" name="Hair Tilt" value="0.500" /> 1131 <param id="137" name="Hair Tilt" value="0.500" />
1132 1132
1133 <param id="140" name="Hair_Part_Middle" value="0.000" /> 1133 <param id="140" name="Hair_Part_Middle" value="0.000" />
1134 1134
1135 <param id="141" name="Hair_Part_Right" value="1.520" /> 1135 <param id="141" name="Hair_Part_Right" value="1.520" />
1136 1136
1137 <param id="142" name="Hair_Part_Left" value="0.000" /> 1137 <param id="142" name="Hair_Part_Left" value="0.000" />
1138 1138
1139 <param id="143" name="Hair_Sides_Full" value="-0.200" /> 1139 <param id="143" name="Hair_Sides_Full" value="-0.200" />
1140 1140
1141 <param id="166" name="Sideburns" value="0.710" /> 1141 <param id="166" name="Sideburns" value="0.710" />
1142 1142
1143 <param id="167" name="Moustache" value="0.000" /> 1143 <param id="167" name="Moustache" value="0.000" />
1144 1144
1145 <param id="168" name="Soulpatch" value="0.000" /> 1145 <param id="168" name="Soulpatch" value="0.000" />
1146 1146
1147 <param id="169" name="Chin Curtains" value="0.000" /> 1147 <param id="169" name="Chin Curtains" value="0.000" />
1148 1148
1149 <param id="177" name="Hair_Rumpled" value="0.560" /> 1149 <param id="177" name="Hair_Rumpled" value="0.560" />
1150 1150
1151 <param id="181" name="Hair_Big_Front" value="0.520" /> 1151 <param id="181" name="Hair_Big_Front" value="0.520" />
1152 1152
1153 <param id="182" name="Hair_Big_Top" value="0.020" /> 1153 <param id="182" name="Hair_Big_Top" value="0.020" />
1154 1154
1155 <param id="183" name="Hair_Big_Back" value="0.460" /> 1155 <param id="183" name="Hair_Big_Back" value="0.460" />
1156 1156
1157 <param id="184" name="Hair_Spiked" value="0.000" /> 1157 <param id="184" name="Hair_Spiked" value="0.000" />
1158 1158
1159 <param id="192" name="Bangs_Part_Middle" value="0.000" /> 1159 <param id="192" name="Bangs_Part_Middle" value="0.000" />
1160 1160
1161 <param id="674" name="Hair_Shear_Back" value="0.050" /> 1161 <param id="674" name="Hair_Shear_Back" value="0.050" />
1162 1162
1163 <param id="750" name="Eyebrow Density" value="0.610" /> 1163 <param id="750" name="Eyebrow Density" value="0.610" />
1164 1164
1165 <param id="752" name="Hair Thickness" value="0.690" /> 1165 <param id="752" name="Hair Thickness" value="0.690" />
1166 1166
1167 <param id="754" name="Hair_Taper_Back" value="0.020" /> 1167 <param id="754" name="Hair_Taper_Back" value="0.020" />
1168 1168
1169 <param id="755" name="Hair_Taper_Front" value="0.000" /> 1169 <param id="755" name="Hair_Taper_Front" value="0.000" />
1170 1170
1171 <param id="757" name="Lower_Eyebrows" value="0.560" /> 1171 <param id="757" name="Lower_Eyebrows" value="0.560" />
1172 1172
1173 <param id="762" name="Hair_Shear_Front" value="0.060" /> 1173 <param id="762" name="Hair_Shear_Front" value="0.060" />
1174 1174
1175 <param id="763" name="Hair Volume" value="0.650" /> 1175 <param id="763" name="Hair Volume" value="0.650" />
1176 1176
1177 <texture te="4" uuid="7ca39b4c-bd19-4699-aff7-f93fd03d3e7b" /> 1177 <texture te="4" uuid="7ca39b4c-bd19-4699-aff7-f93fd03d3e7b" />
1178 1178
1179<!-- wearable: eyes --> 1179<!-- wearable: eyes -->
1180 <param id="98" name="Eye Lightness" value="0.170" /> 1180 <param id="98" name="Eye Lightness" value="0.170" />
1181 1181
1182 <param id="99" name="Eye Color" value="0.340" /> 1182 <param id="99" name="Eye Color" value="0.340" />
1183 1183
1184 <texture te="3" uuid="6522e74d-1660-4e7f-b601-6f48c1659a77" /> 1184 <texture te="3" uuid="6522e74d-1660-4e7f-b601-6f48c1659a77" />
1185 </archetype> 1185 </archetype>
1186 1186
1187 <archetype name="W M Chubby"> 1187 <archetype name="W M Chubby">
1188<!-- wearable: shape --> 1188<!-- wearable: shape -->
1189 <param id="1" name="Big_Brow" value="0.710" /> 1189 <param id="1" name="Big_Brow" value="0.710" />
1190 1190
1191 <param id="2" name="Nose_Big_Out" value="-0.110" /> 1191 <param id="2" name="Nose_Big_Out" value="-0.110" />
1192 1192
1193 <param id="4" name="Broad_Nostrils" value="0.310" /> 1193 <param id="4" name="Broad_Nostrils" value="0.310" />
1194 1194
1195 <param id="5" name="Cleft_Chin" value="0.340" /> 1195 <param id="5" name="Cleft_Chin" value="0.340" />
1196 1196
1197 <param id="6" name="Bulbous_Nose_Tip" value="0.260" /> 1197 <param id="6" name="Bulbous_Nose_Tip" value="0.260" />
1198 1198
1199 <param id="7" name="Weak_Chin" value="-0.260" /> 1199 <param id="7" name="Weak_Chin" value="-0.260" />
1200 1200
1201 <param id="8" name="Double_Chin" value="1.040" /> 1201 <param id="8" name="Double_Chin" value="1.040" />
1202 1202
1203 <param id="10" name="Sunken_Cheeks" value="-0.560" /> 1203 <param id="10" name="Sunken_Cheeks" value="-0.560" />
1204 1204
1205 <param id="11" name="Noble_Nose_Bridge" value="0.020" /> 1205 <param id="11" name="Noble_Nose_Bridge" value="0.020" />
1206 1206
1207 <param id="12" name="Jowls" value="1.240" /> 1207 <param id="12" name="Jowls" value="1.240" />
1208 1208
1209 <param id="13" name="Cleft_Chin_Upper" value="0.690" /> 1209 <param id="13" name="Cleft_Chin_Upper" value="0.690" />
1210 1210
1211 <param id="14" name="High_Cheek_Bones" value="0.650" /> 1211 <param id="14" name="High_Cheek_Bones" value="0.650" />
1212 1212
1213 <param id="15" name="Ears_Out" value="-0.180" /> 1213 <param id="15" name="Ears_Out" value="-0.180" />
1214 1214
1215 <param id="17" name="Square_Jaw" value="-0.170" /> 1215 <param id="17" name="Square_Jaw" value="-0.170" />
1216 1216
1217 <param id="18" name="Puffy_Upper_Cheeks" value="1.580" /> 1217 <param id="18" name="Puffy_Upper_Cheeks" value="1.580" />
1218 1218
1219 <param id="19" name="Upturned_Nose_Tip" value="-0.500" /> 1219 <param id="19" name="Upturned_Nose_Tip" value="-0.500" />
1220 1220
1221 <param id="20" name="Bulbous_Nose" value="-0.020" /> 1221 <param id="20" name="Bulbous_Nose" value="-0.020" />
1222 1222
1223 <param id="21" name="Upper_Eyelid_Fold" value="0.600" /> 1223 <param id="21" name="Upper_Eyelid_Fold" value="0.600" />
1224 1224
1225 <param id="22" name="Attached_Earlobes" value="0.420" /> 1225 <param id="22" name="Attached_Earlobes" value="0.420" />
1226 1226
1227 <param id="23" name="Baggy_Eyes" value="0.680" /> 1227 <param id="23" name="Baggy_Eyes" value="0.680" />
1228 1228
1229 <param id="24" name="Wide_Eyes" value="0.460" /> 1229 <param id="24" name="Wide_Eyes" value="0.460" />
1230 1230
1231 <param id="25" name="Wide_Lip_Cleft" value="-0.250" /> 1231 <param id="25" name="Wide_Lip_Cleft" value="-0.250" />
1232 1232
1233 <param id="27" name="Wide_Nose_Bridge" value="-0.320" /> 1233 <param id="27" name="Wide_Nose_Bridge" value="-0.320" />
1234 1234
1235 <param id="33" name="Height" value="0.880" /> 1235 <param id="33" name="Height" value="0.880" />
1236 1236
1237 <param id="34" name="Thickness" value="0.800" /> 1237 <param id="34" name="Thickness" value="0.800" />
1238 1238
1239 <param id="35" name="Big_Ears" value="1.100" /> 1239 <param id="35" name="Big_Ears" value="1.100" />
1240 1240
1241 <param id="36" name="Shoulders" value="0.310" /> 1241 <param id="36" name="Shoulders" value="0.310" />
1242 1242
1243 <param id="37" name="Hip Width" value="-1.040" /> 1243 <param id="37" name="Hip Width" value="-1.040" />
1244 1244
1245 <param id="38" name="Torso Length" value="-0.740" /> 1245 <param id="38" name="Torso Length" value="-0.740" />
1246 1246
1247 <param id="80" name="male" value="1.000" /> 1247 <param id="80" name="male" value="1.000" />
1248 1248
1249 <param id="105" name="Breast Size" value="0.500" /> 1249 <param id="105" name="Breast Size" value="0.500" />
1250 1250
1251 <param id="151" name="Big_Butt_Legs" value="0.330" /> 1251 <param id="151" name="Big_Butt_Legs" value="0.330" />
1252 1252
1253 <param id="155" name="Lip Width" value="-0.200" /> 1253 <param id="155" name="Lip Width" value="-0.200" />
1254 1254
1255 <param id="157" name="Belly Size" value="0.320" /> 1255 <param id="157" name="Belly Size" value="0.320" />
1256 1256
1257 <param id="185" name="Deep_Chin" value="0.680" /> 1257 <param id="185" name="Deep_Chin" value="0.680" />
1258 1258
1259 <param id="193" name="Head Shape" value="0.720" /> 1259 <param id="193" name="Head Shape" value="0.720" />
1260 1260
1261 <param id="196" name="Eye Spacing" value="-0.380" /> 1261 <param id="196" name="Eye Spacing" value="-0.380" />
1262 1262
1263 <param id="505" name="Lip Thickness" value="0.680" /> 1263 <param id="505" name="Lip Thickness" value="0.680" />
1264 1264
1265 <param id="506" name="Mouth_Height" value="0.080" /> 1265 <param id="506" name="Mouth_Height" value="0.080" />
1266 1266
1267 <param id="507" name="Breast_Gravity" value="0.000" /> 1267 <param id="507" name="Breast_Gravity" value="0.000" />
1268 1268
1269 <param id="515" name="Foot_Size" value="1.120" /> 1269 <param id="515" name="Foot_Size" value="1.120" />
1270 1270
1271 <param id="517" name="Wide_Nose" value="0.070" /> 1271 <param id="517" name="Wide_Nose" value="0.070" />
1272 1272
1273 <param id="518" name="Eyelashes_Long" value="0.400" /> 1273 <param id="518" name="Eyelashes_Long" value="0.400" />
1274 1274
1275 <param id="629" name="Forehead Angle" value="0.620" /> 1275 <param id="629" name="Forehead Angle" value="0.620" />
1276 1276
1277 <param id="637" name="Body Fat" value="0.130" /> 1277 <param id="637" name="Body Fat" value="0.130" />
1278 1278
1279 <param id="646" name="Egg_Head" value="-0.220" /> 1279 <param id="646" name="Egg_Head" value="-0.220" />
1280 1280
1281 <param id="647" name="Squash_Stretch_Head" value="0.030" /> 1281 <param id="647" name="Squash_Stretch_Head" value="0.030" />
1282 1282
1283 <param id="649" name="Torso Muscles" value="0.500" /> 1283 <param id="649" name="Torso Muscles" value="0.500" />
1284 1284
1285 <param id="650" name="Eyelid_Corner_Up" value="0.380" /> 1285 <param id="650" name="Eyelid_Corner_Up" value="0.380" />
1286 1286
1287 <param id="652" name="Leg Muscles" value="0.770" /> 1287 <param id="652" name="Leg Muscles" value="0.770" />
1288 1288
1289 <param id="653" name="Tall_Lips" value="0.470" /> 1289 <param id="653" name="Tall_Lips" value="0.470" />
1290 1290
1291 <param id="656" name="Crooked_Nose" value="-0.400" /> 1291 <param id="656" name="Crooked_Nose" value="-0.400" />
1292 1292
1293 <param id="659" name="Mouth Corner" value="0.520" /> 1293 <param id="659" name="Mouth Corner" value="0.520" />
1294 1294
1295 <param id="662" name="Face Shear" value="0.460" /> 1295 <param id="662" name="Face Shear" value="0.460" />
1296 1296
1297 <param id="663" name="Shift_Mouth" value="0.000" /> 1297 <param id="663" name="Shift_Mouth" value="0.000" />
1298 1298
1299 <param id="664" name="Pop_Eye" value="0.310" /> 1299 <param id="664" name="Pop_Eye" value="0.310" />
1300 1300
1301 <param id="665" name="Jaw_Jut" value="-0.680" /> 1301 <param id="665" name="Jaw_Jut" value="-0.680" />
1302 1302
1303 <param id="675" name="Hand Size" value="0.010" /> 1303 <param id="675" name="Hand Size" value="0.010" />
1304 1304
1305 <param id="676" name="Love_Handles" value="0.380" /> 1305 <param id="676" name="Love_Handles" value="0.380" />
1306 1306
1307 <param id="678" name="Torso Muscles" value="0.800" /> 1307 <param id="678" name="Torso Muscles" value="0.800" />
1308 1308
1309 <param id="682" name="Head Size" value="0.690" /> 1309 <param id="682" name="Head Size" value="0.690" />
1310 1310
1311 <param id="683" name="Neck Thickness" value="-0.030" /> 1311 <param id="683" name="Neck Thickness" value="-0.030" />
1312 1312
1313 <param id="684" name="Breast_Female_Clevage" value="0.000" /> 1313 <param id="684" name="Breast_Female_Clevage" value="0.000" />
1314 1314
1315 <param id="685" name="Chest_Male_No_Pecs" value="0.010" /> 1315 <param id="685" name="Chest_Male_No_Pecs" value="0.010" />
1316 1316
1317 <param id="690" name="Eye Size" value="0.210" /> 1317 <param id="690" name="Eye Size" value="0.210" />
1318 1318
1319 <param id="692" name="Leg Length" value="-0.260" /> 1319 <param id="692" name="Leg Length" value="-0.260" />
1320 1320
1321 <param id="693" name="Arm Length" value="0.200" /> 1321 <param id="693" name="Arm Length" value="0.200" />
1322 1322
1323 <param id="753" name="Saddlebags" value="0.650" /> 1323 <param id="753" name="Saddlebags" value="0.650" />
1324 1324
1325 <param id="756" name="Neck Length" value="-0.040" /> 1325 <param id="756" name="Neck Length" value="-0.040" />
1326 1326
1327 <param id="758" name="Lower_Bridge_Nose" value="0.210" /> 1327 <param id="758" name="Lower_Bridge_Nose" value="0.210" />
1328 1328
1329 <param id="759" name="Low_Septum_Nose" value="0.650" /> 1329 <param id="759" name="Low_Septum_Nose" value="0.650" />
1330 1330
1331 <param id="760" name="Jaw_Angle" value="0.240" /> 1331 <param id="760" name="Jaw_Angle" value="0.240" />
1332 1332
1333 <param id="764" name="Lip_Cleft_Deep" value="0.610" /> 1333 <param id="764" name="Lip_Cleft_Deep" value="0.610" />
1334 1334
1335 <param id="765" name="Puffy_Lower_Lids" value="1.100" /> 1335 <param id="765" name="Puffy_Lower_Lids" value="1.100" />
1336 1336
1337 <param id="769" name="Eye Depth" value="0.580" /> 1337 <param id="769" name="Eye Depth" value="0.580" />
1338 1338
1339 <param id="773" name="Head Length" value="0.350" /> 1339 <param id="773" name="Head Length" value="0.350" />
1340 1340
1341<!-- wearable: skin --> 1341<!-- wearable: skin -->
1342 <param id="108" name="Rainbow Color" value="0.000" /> 1342 <param id="108" name="Rainbow Color" value="0.000" />
1343 1343
1344 <param id="110" name="Red Skin" value="0.084" /> 1344 <param id="110" name="Red Skin" value="0.084" />
1345 1345
1346 <param id="111" name="Pigment" value="0.320" /> 1346 <param id="111" name="Pigment" value="0.320" />
1347 1347
1348 <param id="116" name="Rosy Complexion" value="0.120" /> 1348 <param id="116" name="Rosy Complexion" value="0.120" />
1349 1349
1350 <param id="117" name="Lip Pinkness" value="0.220" /> 1350 <param id="117" name="Lip Pinkness" value="0.220" />
1351 1351
1352 <param id="150" name="Body Definition" value="0.000" /> 1352 <param id="150" name="Body Definition" value="0.000" />
1353 1353
1354 <param id="162" name="Facial Definition" value="0.370" /> 1354 <param id="162" name="Facial Definition" value="0.370" />
1355 1355
1356 <param id="163" name="Wrinkles" value="0.150" /> 1356 <param id="163" name="Wrinkles" value="0.150" />
1357 1357
1358 <param id="165" name="Freckles" value="0.740" /> 1358 <param id="165" name="Freckles" value="0.740" />
1359 1359
1360 <param id="700" name="Lipstick Color" value="0.250" /> 1360 <param id="700" name="Lipstick Color" value="0.250" />
1361 1361
1362 <param id="701" name="Lipstick" value="0.000" /> 1362 <param id="701" name="Lipstick" value="0.000" />
1363 1363
1364 <param id="702" name="Lipgloss" value="0.000" /> 1364 <param id="702" name="Lipgloss" value="0.000" />
1365 1365
1366 <param id="703" name="Eyeliner" value="0.000" /> 1366 <param id="703" name="Eyeliner" value="0.000" />
1367 1367
1368 <param id="704" name="Blush" value="0.000" /> 1368 <param id="704" name="Blush" value="0.000" />
1369 1369
1370 <param id="705" name="Blush Color" value="0.500" /> 1370 <param id="705" name="Blush Color" value="0.500" />
1371 1371
1372 <param id="706" name="Out Shdw Opacity" value="0.600" /> 1372 <param id="706" name="Out Shdw Opacity" value="0.600" />
1373 1373
1374 <param id="707" name="Outer Shadow" value="0.000" /> 1374 <param id="707" name="Outer Shadow" value="0.000" />
1375 1375
1376 <param id="708" name="Out Shdw Color" value="0.000" /> 1376 <param id="708" name="Out Shdw Color" value="0.000" />
1377 1377
1378 <param id="709" name="Inner Shadow" value="0.000" /> 1378 <param id="709" name="Inner Shadow" value="0.000" />
1379 1379
1380 <param id="710" name="Nail Polish" value="0.000" /> 1380 <param id="710" name="Nail Polish" value="0.000" />
1381 1381
1382 <param id="711" name="Blush Opacity" value="0.500" /> 1382 <param id="711" name="Blush Opacity" value="0.500" />
1383 1383
1384 <param id="712" name="In Shdw Color" value="0.000" /> 1384 <param id="712" name="In Shdw Color" value="0.000" />
1385 1385
1386 <param id="713" name="In Shdw Opacity" value="0.700" /> 1386 <param id="713" name="In Shdw Opacity" value="0.700" />
1387 1387
1388 <param id="714" name="Eyeliner Color" value="0.000" /> 1388 <param id="714" name="Eyeliner Color" value="0.000" />
1389 1389
1390 <param id="715" name="Nail Polish Color" value="0.000" /> 1390 <param id="715" name="Nail Polish Color" value="0.000" />
1391 1391
1392 <texture te="0" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 1392 <texture te="0" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
1393 1393
1394 <texture te="5" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 1394 <texture te="5" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
1395 1395
1396 <texture te="6" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 1396 <texture te="6" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
1397 1397
1398<!-- wearable: hair --> 1398<!-- wearable: hair -->
1399 <param id="16" name="Pointy_Eyebrows" value="0.370" /> 1399 <param id="16" name="Pointy_Eyebrows" value="0.370" />
1400 1400
1401 <param id="31" name="Arced_Eyebrows" value="0.000" /> 1401 <param id="31" name="Arced_Eyebrows" value="0.000" />
1402 1402
1403 <param id="112" name="Rainbow Color" value="0.000" /> 1403 <param id="112" name="Rainbow Color" value="0.000" />
1404 1404
1405 <param id="113" name="Red Hair" value="0.130" /> 1405 <param id="113" name="Red Hair" value="0.130" />
1406 1406
1407 <param id="114" name="Blonde Hair" value="0.040" /> 1407 <param id="114" name="Blonde Hair" value="0.040" />
1408 1408
1409 <param id="115" name="White Hair" value="0.170" /> 1409 <param id="115" name="White Hair" value="0.170" />
1410 1410
1411 <param id="119" name="Eyebrow Size" value="0.540" /> 1411 <param id="119" name="Eyebrow Size" value="0.540" />
1412 1412
1413 <param id="130" name="Front Fringe" value="0.470" /> 1413 <param id="130" name="Front Fringe" value="0.470" />
1414 1414
1415 <param id="131" name="Side Fringe" value="0.480" /> 1415 <param id="131" name="Side Fringe" value="0.480" />
1416 1416
1417 <param id="132" name="Back Fringe" value="0.500" /> 1417 <param id="132" name="Back Fringe" value="0.500" />
1418 1418
1419 <param id="133" name="Hair Front" value="0.370" /> 1419 <param id="133" name="Hair Front" value="0.370" />
1420 1420
1421 <param id="134" name="Hair Sides" value="0.000" /> 1421 <param id="134" name="Hair Sides" value="0.000" />
1422 1422
1423 <param id="135" name="Hair Back" value="0.600" /> 1423 <param id="135" name="Hair Back" value="0.600" />
1424 1424
1425 <param id="136" name="Hair Sweep" value="0.210" /> 1425 <param id="136" name="Hair Sweep" value="0.210" />
1426 1426
1427 <param id="137" name="Hair Tilt" value="0.500" /> 1427 <param id="137" name="Hair Tilt" value="0.500" />
1428 1428
1429 <param id="140" name="Hair_Part_Middle" value="0.000" /> 1429 <param id="140" name="Hair_Part_Middle" value="0.000" />
1430 1430
1431 <param id="141" name="Hair_Part_Right" value="0.000" /> 1431 <param id="141" name="Hair_Part_Right" value="0.000" />
1432 1432
1433 <param id="142" name="Hair_Part_Left" value="2.000" /> 1433 <param id="142" name="Hair_Part_Left" value="2.000" />
1434 1434
1435 <param id="143" name="Hair_Sides_Full" value="0.785" /> 1435 <param id="143" name="Hair_Sides_Full" value="0.785" />
1436 1436
1437 <param id="166" name="Sideburns" value="0.000" /> 1437 <param id="166" name="Sideburns" value="0.000" />
1438 1438
1439 <param id="167" name="Moustache" value="0.470" /> 1439 <param id="167" name="Moustache" value="0.470" />
1440 1440
1441 <param id="168" name="Soulpatch" value="0.000" /> 1441 <param id="168" name="Soulpatch" value="0.000" />
1442 1442
1443 <param id="169" name="Chin Curtains" value="0.000" /> 1443 <param id="169" name="Chin Curtains" value="0.000" />
1444 1444
1445 <param id="177" name="Hair_Rumpled" value="0.000" /> 1445 <param id="177" name="Hair_Rumpled" value="0.000" />
1446 1446
1447 <param id="181" name="Hair_Big_Front" value="-0.120" /> 1447 <param id="181" name="Hair_Big_Front" value="-0.120" />
1448 1448
1449 <param id="182" name="Hair_Big_Top" value="0.060" /> 1449 <param id="182" name="Hair_Big_Top" value="0.060" />
1450 1450
1451 <param id="183" name="Hair_Big_Back" value="0.240" /> 1451 <param id="183" name="Hair_Big_Back" value="0.240" />
1452 1452
1453 <param id="184" name="Hair_Spiked" value="0.000" /> 1453 <param id="184" name="Hair_Spiked" value="0.000" />
1454 1454
1455 <param id="192" name="Bangs_Part_Middle" value="0.000" /> 1455 <param id="192" name="Bangs_Part_Middle" value="0.000" />
1456 1456
1457 <param id="674" name="Hair_Shear_Back" value="0.020" /> 1457 <param id="674" name="Hair_Shear_Back" value="0.020" />
1458 1458
1459 <param id="750" name="Eyebrow Density" value="0.920" /> 1459 <param id="750" name="Eyebrow Density" value="0.920" />
1460 1460
1461 <param id="752" name="Hair Thickness" value="0.390" /> 1461 <param id="752" name="Hair Thickness" value="0.390" />
1462 1462
1463 <param id="754" name="Hair_Taper_Back" value="0.620" /> 1463 <param id="754" name="Hair_Taper_Back" value="0.620" />
1464 1464
1465 <param id="755" name="Hair_Taper_Front" value="0.990" /> 1465 <param id="755" name="Hair_Taper_Front" value="0.990" />
1466 1466
1467 <param id="757" name="Lower_Eyebrows" value="-0.200" /> 1467 <param id="757" name="Lower_Eyebrows" value="-0.200" />
1468 1468
1469 <param id="762" name="Hair_Shear_Front" value="1.440" /> 1469 <param id="762" name="Hair_Shear_Front" value="1.440" />
1470 1470
1471 <param id="763" name="Hair Volume" value="0.610" /> 1471 <param id="763" name="Hair Volume" value="0.610" />
1472 1472
1473 <texture te="4" uuid="7ca39b4c-bd19-4699-aff7-f93fd03d3e7b" /> 1473 <texture te="4" uuid="7ca39b4c-bd19-4699-aff7-f93fd03d3e7b" />
1474 1474
1475<!-- wearable: eyes --> 1475<!-- wearable: eyes -->
1476 <param id="98" name="Eye Lightness" value="0.270" /> 1476 <param id="98" name="Eye Lightness" value="0.270" />
1477 1477
1478 <param id="99" name="Eye Color" value="0.090" /> 1478 <param id="99" name="Eye Color" value="0.090" />
1479 1479
1480 <texture te="3" uuid="6522e74d-1660-4e7f-b601-6f48c1659a77" /> 1480 <texture te="3" uuid="6522e74d-1660-4e7f-b601-6f48c1659a77" />
1481 </archetype> 1481 </archetype>
1482 1482
1483 <archetype name="M Troll"> 1483 <archetype name="M Troll">
1484<!-- wearable: shape --> 1484<!-- wearable: shape -->
1485 <param id="1" name="Big_Brow" value="2.000" /> 1485 <param id="1" name="Big_Brow" value="2.000" />
1486 1486
1487 <param id="2" name="Nose_Big_Out" value="1.670" /> 1487 <param id="2" name="Nose_Big_Out" value="1.670" />
1488 1488
1489 <param id="4" name="Broad_Nostrils" value="0.730" /> 1489 <param id="4" name="Broad_Nostrils" value="0.730" />
1490 1490
1491 <param id="5" name="Cleft_Chin" value="0.110" /> 1491 <param id="5" name="Cleft_Chin" value="0.110" />
1492 1492
1493 <param id="6" name="Bulbous_Nose_Tip" value="1.000" /> 1493 <param id="6" name="Bulbous_Nose_Tip" value="1.000" />
1494 1494
1495 <param id="7" name="Weak_Chin" value="0.500" /> 1495 <param id="7" name="Weak_Chin" value="0.500" />
1496 1496
1497 <param id="8" name="Double_Chin" value="0.840" /> 1497 <param id="8" name="Double_Chin" value="0.840" />
1498 1498
1499 <param id="10" name="Sunken_Cheeks" value="1.830" /> 1499 <param id="10" name="Sunken_Cheeks" value="1.830" />
1500 1500
1501 <param id="11" name="Noble_Nose_Bridge" value="0.440" /> 1501 <param id="11" name="Noble_Nose_Bridge" value="0.440" />
1502 1502
1503 <param id="12" name="Jowls" value="0.760" /> 1503 <param id="12" name="Jowls" value="0.760" />
1504 1504
1505 <param id="13" name="Cleft_Chin_Upper" value="0.940" /> 1505 <param id="13" name="Cleft_Chin_Upper" value="0.940" />
1506 1506
1507 <param id="14" name="High_Cheek_Bones" value="0.810" /> 1507 <param id="14" name="High_Cheek_Bones" value="0.810" />
1508 1508
1509 <param id="15" name="Ears_Out" value="1.500" /> 1509 <param id="15" name="Ears_Out" value="1.500" />
1510 1510
1511 <param id="17" name="Square_Jaw" value="0.050" /> 1511 <param id="17" name="Square_Jaw" value="0.050" />
1512 1512
1513 <param id="18" name="Puffy_Upper_Cheeks" value="1.420" /> 1513 <param id="18" name="Puffy_Upper_Cheeks" value="1.420" />
1514 1514
1515 <param id="19" name="Upturned_Nose_Tip" value="0.300" /> 1515 <param id="19" name="Upturned_Nose_Tip" value="0.300" />
1516 1516
1517 <param id="20" name="Bulbous_Nose" value="1.040" /> 1517 <param id="20" name="Bulbous_Nose" value="1.040" />
1518 1518
1519 <param id="21" name="Upper_Eyelid_Fold" value="-0.060" /> 1519 <param id="21" name="Upper_Eyelid_Fold" value="-0.060" />
1520 1520
1521 <param id="22" name="Attached_Earlobes" value="0.000" /> 1521 <param id="22" name="Attached_Earlobes" value="0.000" />
1522 1522
1523 <param id="23" name="Baggy_Eyes" value="1.500" /> 1523 <param id="23" name="Baggy_Eyes" value="1.500" />
1524 1524
1525 <param id="24" name="Wide_Eyes" value="1.970" /> 1525 <param id="24" name="Wide_Eyes" value="1.970" />
1526 1526
1527 <param id="25" name="Wide_Lip_Cleft" value="0.720" /> 1527 <param id="25" name="Wide_Lip_Cleft" value="0.720" />
1528 1528
1529 <param id="27" name="Wide_Nose_Bridge" value="-1.300" /> 1529 <param id="27" name="Wide_Nose_Bridge" value="-1.300" />
1530 1530
1531 <param id="33" name="Height" value="-2.210" /> 1531 <param id="33" name="Height" value="-2.210" />
1532 1532
1533 <param id="34" name="Thickness" value="0.910" /> 1533 <param id="34" name="Thickness" value="0.910" />
1534 1534
1535 <param id="35" name="Big_Ears" value="2.000" /> 1535 <param id="35" name="Big_Ears" value="2.000" />
1536 1536
1537 <param id="36" name="Shoulders" value="1.180" /> 1537 <param id="36" name="Shoulders" value="1.180" />
1538 1538
1539 <param id="37" name="Hip Width" value="-1.160" /> 1539 <param id="37" name="Hip Width" value="-1.160" />
1540 1540
1541 <param id="38" name="Torso Length" value="1.000" /> 1541 <param id="38" name="Torso Length" value="1.000" />
1542 1542
1543 <param id="80" name="male" value="1.000" /> 1543 <param id="80" name="male" value="1.000" />
1544 1544
1545 <param id="105" name="Breast Size" value="0.500" /> 1545 <param id="105" name="Breast Size" value="0.500" />
1546 1546
1547 <param id="151" name="Big_Butt_Legs" value="-0.110" /> 1547 <param id="151" name="Big_Butt_Legs" value="-0.110" />
1548 1548
1549 <param id="155" name="Lip Width" value="1.300" /> 1549 <param id="155" name="Lip Width" value="1.300" />
1550 1550
1551 <param id="157" name="Belly Size" value="0.740" /> 1551 <param id="157" name="Belly Size" value="0.740" />
1552 1552
1553 <param id="185" name="Deep_Chin" value="-0.960" /> 1553 <param id="185" name="Deep_Chin" value="-0.960" />
1554 1554
1555 <param id="193" name="Head Shape" value="0.010" /> 1555 <param id="193" name="Head Shape" value="0.010" />
1556 1556
1557 <param id="196" name="Eye Spacing" value="1.000" /> 1557 <param id="196" name="Eye Spacing" value="1.000" />
1558 1558
1559 <param id="505" name="Lip Thickness" value="0.730" /> 1559 <param id="505" name="Lip Thickness" value="0.730" />
1560 1560
1561 <param id="506" name="Mouth_Height" value="1.080" /> 1561 <param id="506" name="Mouth_Height" value="1.080" />
1562 1562
1563 <param id="507" name="Breast_Gravity" value="0.000" /> 1563 <param id="507" name="Breast_Gravity" value="0.000" />
1564 1564
1565 <param id="515" name="Foot_Size" value="1.560" /> 1565 <param id="515" name="Foot_Size" value="1.560" />
1566 1566
1567 <param id="517" name="Wide_Nose" value="0.170" /> 1567 <param id="517" name="Wide_Nose" value="0.170" />
1568 1568
1569 <param id="518" name="Eyelashes_Long" value="1.500" /> 1569 <param id="518" name="Eyelashes_Long" value="1.500" />
1570 1570
1571 <param id="629" name="Forehead Angle" value="1.000" /> 1571 <param id="629" name="Forehead Angle" value="1.000" />
1572 1572
1573 <param id="637" name="Body Fat" value="0.000" /> 1573 <param id="637" name="Body Fat" value="0.000" />
1574 1574
1575 <param id="646" name="Egg_Head" value="0.700" /> 1575 <param id="646" name="Egg_Head" value="0.700" />
1576 1576
1577 <param id="647" name="Squash_Stretch_Head" value="-0.220" /> 1577 <param id="647" name="Squash_Stretch_Head" value="-0.220" />
1578 1578
1579 <param id="649" name="Torso Muscles" value="0.500" /> 1579 <param id="649" name="Torso Muscles" value="0.500" />
1580 1580
1581 <param id="650" name="Eyelid_Corner_Up" value="-0.100" /> 1581 <param id="650" name="Eyelid_Corner_Up" value="-0.100" />
1582 1582
1583 <param id="652" name="Leg Muscles" value="0.640" /> 1583 <param id="652" name="Leg Muscles" value="0.640" />
1584 1584
1585 <param id="653" name="Tall_Lips" value="0.920" /> 1585 <param id="653" name="Tall_Lips" value="0.920" />
1586 1586
1587 <param id="656" name="Crooked_Nose" value="-1.160" /> 1587 <param id="656" name="Crooked_Nose" value="-1.160" />
1588 1588
1589 <param id="659" name="Mouth Corner" value="1.000" /> 1589 <param id="659" name="Mouth Corner" value="1.000" />
1590 1590
1591 <param id="662" name="Face Shear" value="0.500" /> 1591 <param id="662" name="Face Shear" value="0.500" />
1592 1592
1593 <param id="663" name="Shift_Mouth" value="-0.320" /> 1593 <param id="663" name="Shift_Mouth" value="-0.320" />
1594 1594
1595 <param id="664" name="Pop_Eye" value="1.250" /> 1595 <param id="664" name="Pop_Eye" value="1.250" />
1596 1596
1597 <param id="665" name="Jaw_Jut" value="1.760" /> 1597 <param id="665" name="Jaw_Jut" value="1.760" />
1598 1598
1599 <param id="675" name="Hand Size" value="0.300" /> 1599 <param id="675" name="Hand Size" value="0.300" />
1600 1600
1601 <param id="676" name="Love_Handles" value="-0.160" /> 1601 <param id="676" name="Love_Handles" value="-0.160" />
1602 1602
1603 <param id="678" name="Torso Muscles" value="0.290" /> 1603 <param id="678" name="Torso Muscles" value="0.290" />
1604 1604
1605 <param id="682" name="Head Size" value="1.000" /> 1605 <param id="682" name="Head Size" value="1.000" />
1606 1606
1607 <param id="683" name="Neck Thickness" value="-0.004" /> 1607 <param id="683" name="Neck Thickness" value="-0.004" />
1608 1608
1609 <param id="684" name="Breast_Female_Clevage" value="0.000" /> 1609 <param id="684" name="Breast_Female_Clevage" value="0.000" />
1610 1610
1611 <param id="685" name="Chest_Male_No_Pecs" value="0.332" /> 1611 <param id="685" name="Chest_Male_No_Pecs" value="0.332" />
1612 1612
1613 <param id="690" name="Eye Size" value="1.000" /> 1613 <param id="690" name="Eye Size" value="1.000" />
1614 1614
1615 <param id="692" name="Leg Length" value="0.240" /> 1615 <param id="692" name="Leg Length" value="0.240" />
1616 1616
1617 <param id="693" name="Arm Length" value="-0.220" /> 1617 <param id="693" name="Arm Length" value="-0.220" />
1618 1618
1619 <param id="753" name="Saddlebags" value="0.030" /> 1619 <param id="753" name="Saddlebags" value="0.030" />
1620 1620
1621 <param id="756" name="Neck Length" value="-0.420" /> 1621 <param id="756" name="Neck Length" value="-0.420" />
1622 1622
1623 <param id="758" name="Lower_Bridge_Nose" value="-1.500" /> 1623 <param id="758" name="Lower_Bridge_Nose" value="-1.500" />
1624 1624
1625 <param id="759" name="Low_Septum_Nose" value="1.500" /> 1625 <param id="759" name="Low_Septum_Nose" value="1.500" />
1626 1626
1627 <param id="760" name="Jaw_Angle" value="1.580" /> 1627 <param id="760" name="Jaw_Angle" value="1.580" />
1628 1628
1629 <param id="764" name="Lip_Cleft_Deep" value="1.100" /> 1629 <param id="764" name="Lip_Cleft_Deep" value="1.100" />
1630 1630
1631 <param id="765" name="Puffy_Lower_Lids" value="2.440" /> 1631 <param id="765" name="Puffy_Lower_Lids" value="2.440" />
1632 1632
1633 <param id="769" name="Eye Depth" value="0.000" /> 1633 <param id="769" name="Eye Depth" value="0.000" />
1634 1634
1635 <param id="773" name="Head Length" value="1.000" /> 1635 <param id="773" name="Head Length" value="1.000" />
1636 1636
1637<!-- wearable: skin --> 1637<!-- wearable: skin -->
1638 <param id="108" name="Rainbow Color" value="1.000" /> 1638 <param id="108" name="Rainbow Color" value="1.000" />
1639 1639
1640 <param id="110" name="Red Skin" value="0.100" /> 1640 <param id="110" name="Red Skin" value="0.100" />
1641 1641
1642 <param id="111" name="Pigment" value="1.000" /> 1642 <param id="111" name="Pigment" value="1.000" />
1643 1643
1644 <param id="116" name="Rosy Complexion" value="0.320" /> 1644 <param id="116" name="Rosy Complexion" value="0.320" />
1645 1645
1646 <param id="117" name="Lip Pinkness" value="0.560" /> 1646 <param id="117" name="Lip Pinkness" value="0.560" />
1647 1647
1648 <param id="150" name="Body Definition" value="1.000" /> 1648 <param id="150" name="Body Definition" value="1.000" />
1649 1649
1650 <param id="162" name="Facial Definition" value="1.000" /> 1650 <param id="162" name="Facial Definition" value="1.000" />
1651 1651
1652 <param id="163" name="Wrinkles" value="0.490" /> 1652 <param id="163" name="Wrinkles" value="0.490" />
1653 1653
1654 <param id="165" name="Freckles" value="0.740" /> 1654 <param id="165" name="Freckles" value="0.740" />
1655 1655
1656 <param id="700" name="Lipstick Color" value="0.250" /> 1656 <param id="700" name="Lipstick Color" value="0.250" />
1657 1657
1658 <param id="701" name="Lipstick" value="0.000" /> 1658 <param id="701" name="Lipstick" value="0.000" />
1659 1659
1660 <param id="702" name="Lipgloss" value="0.000" /> 1660 <param id="702" name="Lipgloss" value="0.000" />
1661 1661
1662 <param id="703" name="Eyeliner" value="0.000" /> 1662 <param id="703" name="Eyeliner" value="0.000" />
1663 1663
1664 <param id="704" name="Blush" value="0.000" /> 1664 <param id="704" name="Blush" value="0.000" />
1665 1665
1666 <param id="705" name="Blush Color" value="0.500" /> 1666 <param id="705" name="Blush Color" value="0.500" />
1667 1667
1668 <param id="706" name="Out Shdw Opacity" value="0.600" /> 1668 <param id="706" name="Out Shdw Opacity" value="0.600" />
1669 1669
1670 <param id="707" name="Outer Shadow" value="0.000" /> 1670 <param id="707" name="Outer Shadow" value="0.000" />
1671 1671
1672 <param id="708" name="Out Shdw Color" value="0.000" /> 1672 <param id="708" name="Out Shdw Color" value="0.000" />
1673 1673
1674 <param id="709" name="Inner Shadow" value="0.000" /> 1674 <param id="709" name="Inner Shadow" value="0.000" />
1675 1675
1676 <param id="710" name="Nail Polish" value="0.000" /> 1676 <param id="710" name="Nail Polish" value="0.000" />
1677 1677
1678 <param id="711" name="Blush Opacity" value="0.500" /> 1678 <param id="711" name="Blush Opacity" value="0.500" />
1679 1679
1680 <param id="712" name="In Shdw Color" value="0.000" /> 1680 <param id="712" name="In Shdw Color" value="0.000" />
1681 1681
1682 <param id="713" name="In Shdw Opacity" value="0.700" /> 1682 <param id="713" name="In Shdw Opacity" value="0.700" />
1683 1683
1684 <param id="714" name="Eyeliner Color" value="0.000" /> 1684 <param id="714" name="Eyeliner Color" value="0.000" />
1685 1685
1686 <param id="715" name="Nail Polish Color" value="0.000" /> 1686 <param id="715" name="Nail Polish Color" value="0.000" />
1687 1687
1688 <texture te="0" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 1688 <texture te="0" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
1689 1689
1690 <texture te="5" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 1690 <texture te="5" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
1691 1691
1692 <texture te="6" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 1692 <texture te="6" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
1693 1693
1694<!-- wearable: hair --> 1694<!-- wearable: hair -->
1695 <param id="16" name="Pointy_Eyebrows" value="0.805" /> 1695 <param id="16" name="Pointy_Eyebrows" value="0.805" />
1696 1696
1697 <param id="31" name="Arced_Eyebrows" value="1.000" /> 1697 <param id="31" name="Arced_Eyebrows" value="1.000" />
1698 1698
1699 <param id="112" name="Rainbow Color" value="1.000" /> 1699 <param id="112" name="Rainbow Color" value="1.000" />
1700 1700
1701 <param id="113" name="Red Hair" value="0.000" /> 1701 <param id="113" name="Red Hair" value="0.000" />
1702 1702
1703 <param id="114" name="Blonde Hair" value="0.000" /> 1703 <param id="114" name="Blonde Hair" value="0.000" />
1704 1704
1705 <param id="115" name="White Hair" value="0.000" /> 1705 <param id="115" name="White Hair" value="0.000" />
1706 1706
1707 <param id="119" name="Eyebrow Size" value="0.210" /> 1707 <param id="119" name="Eyebrow Size" value="0.210" />
1708 1708
1709 <param id="130" name="Front Fringe" value="0.580" /> 1709 <param id="130" name="Front Fringe" value="0.580" />
1710 1710
1711 <param id="131" name="Side Fringe" value="0.000" /> 1711 <param id="131" name="Side Fringe" value="0.000" />
1712 1712
1713 <param id="132" name="Back Fringe" value="1.000" /> 1713 <param id="132" name="Back Fringe" value="1.000" />
1714 1714
1715 <param id="133" name="Hair Front" value="0.000" /> 1715 <param id="133" name="Hair Front" value="0.000" />
1716 1716
1717 <param id="134" name="Hair Sides" value="0.000" /> 1717 <param id="134" name="Hair Sides" value="0.000" />
1718 1718
1719 <param id="135" name="Hair Back" value="0.670" /> 1719 <param id="135" name="Hair Back" value="0.670" />
1720 1720
1721 <param id="136" name="Hair Sweep" value="0.940" /> 1721 <param id="136" name="Hair Sweep" value="0.940" />
1722 1722
1723 <param id="137" name="Hair Tilt" value="0.500" /> 1723 <param id="137" name="Hair Tilt" value="0.500" />
1724 1724
1725 <param id="140" name="Hair_Part_Middle" value="0.000" /> 1725 <param id="140" name="Hair_Part_Middle" value="0.000" />
1726 1726
1727 <param id="141" name="Hair_Part_Right" value="0.000" /> 1727 <param id="141" name="Hair_Part_Right" value="0.000" />
1728 1728
1729 <param id="142" name="Hair_Part_Left" value="0.000" /> 1729 <param id="142" name="Hair_Part_Left" value="0.000" />
1730 1730
1731 <param id="143" name="Hair_Sides_Full" value="-3.835" /> 1731 <param id="143" name="Hair_Sides_Full" value="-3.835" />
1732 1732
1733 <param id="166" name="Sideburns" value="0.890" /> 1733 <param id="166" name="Sideburns" value="0.890" />
1734 1734
1735 <param id="167" name="Moustache" value="0.000" /> 1735 <param id="167" name="Moustache" value="0.000" />
1736 1736
1737 <param id="168" name="Soulpatch" value="0.260" /> 1737 <param id="168" name="Soulpatch" value="0.260" />
1738 1738
1739 <param id="169" name="Chin Curtains" value="0.890" /> 1739 <param id="169" name="Chin Curtains" value="0.890" />
1740 1740
1741 <param id="177" name="Hair_Rumpled" value="0.560" /> 1741 <param id="177" name="Hair_Rumpled" value="0.560" />
1742 1742
1743 <param id="181" name="Hair_Big_Front" value="0.480" /> 1743 <param id="181" name="Hair_Big_Front" value="0.480" />
1744 1744
1745 <param id="182" name="Hair_Big_Top" value="0.320" /> 1745 <param id="182" name="Hair_Big_Top" value="0.320" />
1746 1746
1747 <param id="183" name="Hair_Big_Back" value="0.240" /> 1747 <param id="183" name="Hair_Big_Back" value="0.240" />
1748 1748
1749 <param id="184" name="Hair_Spiked" value="0.000" /> 1749 <param id="184" name="Hair_Spiked" value="0.000" />
1750 1750
1751 <param id="192" name="Bangs_Part_Middle" value="0.000" /> 1751 <param id="192" name="Bangs_Part_Middle" value="0.000" />
1752 1752
1753 <param id="674" name="Hair_Shear_Back" value="0.440" /> 1753 <param id="674" name="Hair_Shear_Back" value="0.440" />
1754 1754
1755 <param id="750" name="Eyebrow Density" value="0.840" /> 1755 <param id="750" name="Eyebrow Density" value="0.840" />
1756 1756
1757 <param id="752" name="Hair Thickness" value="0.120" /> 1757 <param id="752" name="Hair Thickness" value="0.120" />
1758 1758
1759 <param id="754" name="Hair_Taper_Back" value="0.350" /> 1759 <param id="754" name="Hair_Taper_Back" value="0.350" />
1760 1760
1761 <param id="755" name="Hair_Taper_Front" value="0.330" /> 1761 <param id="755" name="Hair_Taper_Front" value="0.330" />
1762 1762
1763 <param id="757" name="Lower_Eyebrows" value="2.000" /> 1763 <param id="757" name="Lower_Eyebrows" value="2.000" />
1764 1764
1765 <param id="762" name="Hair_Shear_Front" value="3.000" /> 1765 <param id="762" name="Hair_Shear_Front" value="3.000" />
1766 1766
1767 <param id="763" name="Hair Volume" value="0.940" /> 1767 <param id="763" name="Hair Volume" value="0.940" />
1768 1768
1769 <texture te="4" uuid="7ca39b4c-bd19-4699-aff7-f93fd03d3e7b" /> 1769 <texture te="4" uuid="7ca39b4c-bd19-4699-aff7-f93fd03d3e7b" />
1770 1770
1771<!-- wearable: eyes --> 1771<!-- wearable: eyes -->
1772 <param id="98" name="Eye Lightness" value="0.000" /> 1772 <param id="98" name="Eye Lightness" value="0.000" />
1773 1773
1774 <param id="99" name="Eye Color" value="1.000" /> 1774 <param id="99" name="Eye Color" value="1.000" />
1775 1775
1776 <texture te="3" uuid="6522e74d-1660-4e7f-b601-6f48c1659a77" /> 1776 <texture te="3" uuid="6522e74d-1660-4e7f-b601-6f48c1659a77" />
1777 </archetype> 1777 </archetype>
1778 1778
1779 <archetype name="M B Skinny"> 1779 <archetype name="M B Skinny">
1780<!-- wearable: shape --> 1780<!-- wearable: shape -->
1781 <param id="1" name="Big_Brow" value="0.320" /> 1781 <param id="1" name="Big_Brow" value="0.320" />
1782 1782
1783 <param id="2" name="Nose_Big_Out" value="0.420" /> 1783 <param id="2" name="Nose_Big_Out" value="0.420" />
1784 1784
1785 <param id="4" name="Broad_Nostrils" value="0.320" /> 1785 <param id="4" name="Broad_Nostrils" value="0.320" />
1786 1786
1787 <param id="5" name="Cleft_Chin" value="0.680" /> 1787 <param id="5" name="Cleft_Chin" value="0.680" />
1788 1788
1789 <param id="6" name="Bulbous_Nose_Tip" value="0.490" /> 1789 <param id="6" name="Bulbous_Nose_Tip" value="0.490" />
1790 1790
1791 <param id="7" name="Weak_Chin" value="-0.350" /> 1791 <param id="7" name="Weak_Chin" value="-0.350" />
1792 1792
1793 <param id="8" name="Double_Chin" value="-0.360" /> 1793 <param id="8" name="Double_Chin" value="-0.360" />
1794 1794
1795 <param id="10" name="Sunken_Cheeks" value="0.440" /> 1795 <param id="10" name="Sunken_Cheeks" value="0.440" />
1796 1796
1797 <param id="11" name="Noble_Nose_Bridge" value="-0.320" /> 1797 <param id="11" name="Noble_Nose_Bridge" value="-0.320" />
1798 1798
1799 <param id="12" name="Jowls" value="-0.470" /> 1799 <param id="12" name="Jowls" value="-0.470" />
1800 1800
1801 <param id="13" name="Cleft_Chin_Upper" value="0.520" /> 1801 <param id="13" name="Cleft_Chin_Upper" value="0.520" />
1802 1802
1803 <param id="14" name="High_Cheek_Bones" value="0.010" /> 1803 <param id="14" name="High_Cheek_Bones" value="0.010" />
1804 1804
1805 <param id="15" name="Ears_Out" value="1.020" /> 1805 <param id="15" name="Ears_Out" value="1.020" />
1806 1806
1807 <param id="17" name="Square_Jaw" value="-0.430" /> 1807 <param id="17" name="Square_Jaw" value="-0.430" />
1808 1808
1809 <param id="18" name="Puffy_Upper_Cheeks" value="1.180" /> 1809 <param id="18" name="Puffy_Upper_Cheeks" value="1.180" />
1810 1810
1811 <param id="19" name="Upturned_Nose_Tip" value="-1.270" /> 1811 <param id="19" name="Upturned_Nose_Tip" value="-1.270" />
1812 1812
1813 <param id="20" name="Bulbous_Nose" value="0.040" /> 1813 <param id="20" name="Bulbous_Nose" value="0.040" />
1814 1814
1815 <param id="21" name="Upper_Eyelid_Fold" value="-0.040" /> 1815 <param id="21" name="Upper_Eyelid_Fold" value="-0.040" />
1816 1816
1817 <param id="22" name="Attached_Earlobes" value="0.590" /> 1817 <param id="22" name="Attached_Earlobes" value="0.590" />
1818 1818
1819 <param id="23" name="Baggy_Eyes" value="-0.300" /> 1819 <param id="23" name="Baggy_Eyes" value="-0.300" />
1820 1820
1821 <param id="24" name="Wide_Eyes" value="1.340" /> 1821 <param id="24" name="Wide_Eyes" value="1.340" />
1822 1822
1823 <param id="25" name="Wide_Lip_Cleft" value="-0.250" /> 1823 <param id="25" name="Wide_Lip_Cleft" value="-0.250" />
1824 1824
1825 <param id="27" name="Wide_Nose_Bridge" value="-1.300" /> 1825 <param id="27" name="Wide_Nose_Bridge" value="-1.300" />
1826 1826
1827 <param id="33" name="Height" value="-0.370" /> 1827 <param id="33" name="Height" value="-0.370" />
1828 1828
1829 <param id="34" name="Thickness" value="-0.280" /> 1829 <param id="34" name="Thickness" value="-0.280" />
1830 1830
1831 <param id="35" name="Big_Ears" value="0.410" /> 1831 <param id="35" name="Big_Ears" value="0.410" />
1832 1832
1833 <param id="36" name="Shoulders" value="-0.140" /> 1833 <param id="36" name="Shoulders" value="-0.140" />
1834 1834
1835 <param id="37" name="Hip Width" value="-0.860" /> 1835 <param id="37" name="Hip Width" value="-0.860" />
1836 1836
1837 <param id="38" name="Torso Length" value="-0.560" /> 1837 <param id="38" name="Torso Length" value="-0.560" />
1838 1838
1839 <param id="80" name="male" value="1.000" /> 1839 <param id="80" name="male" value="1.000" />
1840 1840
1841 <param id="105" name="Breast Size" value="0.500" /> 1841 <param id="105" name="Breast Size" value="0.500" />
1842 1842
1843 <param id="151" name="Big_Butt_Legs" value="0.540" /> 1843 <param id="151" name="Big_Butt_Legs" value="0.540" />
1844 1844
1845 <param id="155" name="Lip Width" value="-0.170" /> 1845 <param id="155" name="Lip Width" value="-0.170" />
1846 1846
1847 <param id="157" name="Belly Size" value="0.000" /> 1847 <param id="157" name="Belly Size" value="0.000" />
1848 1848
1849 <param id="185" name="Deep_Chin" value="0.720" /> 1849 <param id="185" name="Deep_Chin" value="0.720" />
1850 1850
1851 <param id="193" name="Head Shape" value="0.700" /> 1851 <param id="193" name="Head Shape" value="0.700" />
1852 1852
1853 <param id="196" name="Eye Spacing" value="0.610" /> 1853 <param id="196" name="Eye Spacing" value="0.610" />
1854 1854
1855 <param id="505" name="Lip Thickness" value="0.800" /> 1855 <param id="505" name="Lip Thickness" value="0.800" />
1856 1856
1857 <param id="506" name="Mouth_Height" value="0.400" /> 1857 <param id="506" name="Mouth_Height" value="0.400" />
1858 1858
1859 <param id="507" name="Breast_Gravity" value="0.000" /> 1859 <param id="507" name="Breast_Gravity" value="0.000" />
1860 1860
1861 <param id="515" name="Foot_Size" value="1.080" /> 1861 <param id="515" name="Foot_Size" value="1.080" />
1862 1862
1863 <param id="517" name="Wide_Nose" value="0.870" /> 1863 <param id="517" name="Wide_Nose" value="0.870" />
1864 1864
1865 <param id="518" name="Eyelashes_Long" value="0.940" /> 1865 <param id="518" name="Eyelashes_Long" value="0.940" />
1866 1866
1867 <param id="629" name="Forehead Angle" value="0.340" /> 1867 <param id="629" name="Forehead Angle" value="0.340" />
1868 1868
1869 <param id="637" name="Body Fat" value="0.170" /> 1869 <param id="637" name="Body Fat" value="0.170" />
1870 1870
1871 <param id="646" name="Egg_Head" value="-0.010" /> 1871 <param id="646" name="Egg_Head" value="-0.010" />
1872 1872
1873 <param id="647" name="Squash_Stretch_Head" value="0.250" /> 1873 <param id="647" name="Squash_Stretch_Head" value="0.250" />
1874 1874
1875 <param id="649" name="Torso Muscles" value="0.500" /> 1875 <param id="649" name="Torso Muscles" value="0.500" />
1876 1876
1877 <param id="650" name="Eyelid_Corner_Up" value="-0.220" /> 1877 <param id="650" name="Eyelid_Corner_Up" value="-0.220" />
1878 1878
1879 <param id="652" name="Leg Muscles" value="0.520" /> 1879 <param id="652" name="Leg Muscles" value="0.520" />
1880 1880
1881 <param id="653" name="Tall_Lips" value="0.950" /> 1881 <param id="653" name="Tall_Lips" value="0.950" />
1882 1882
1883 <param id="656" name="Crooked_Nose" value="0.120" /> 1883 <param id="656" name="Crooked_Nose" value="0.120" />
1884 1884
1885 <param id="659" name="Mouth Corner" value="0.500" /> 1885 <param id="659" name="Mouth Corner" value="0.500" />
1886 1886
1887 <param id="662" name="Face Shear" value="0.500" /> 1887 <param id="662" name="Face Shear" value="0.500" />
1888 1888
1889 <param id="663" name="Shift_Mouth" value="-0.400" /> 1889 <param id="663" name="Shift_Mouth" value="-0.400" />
1890 1890
1891 <param id="664" name="Pop_Eye" value="0.100" /> 1891 <param id="664" name="Pop_Eye" value="0.100" />
1892 1892
1893 <param id="665" name="Jaw_Jut" value="0.640" /> 1893 <param id="665" name="Jaw_Jut" value="0.640" />
1894 1894
1895 <param id="675" name="Hand Size" value="0.160" /> 1895 <param id="675" name="Hand Size" value="0.160" />
1896 1896
1897 <param id="676" name="Love_Handles" value="-0.190" /> 1897 <param id="676" name="Love_Handles" value="-0.190" />
1898 1898
1899 <param id="678" name="Torso Muscles" value="0.370" /> 1899 <param id="678" name="Torso Muscles" value="0.370" />
1900 1900
1901 <param id="682" name="Head Size" value="0.820" /> 1901 <param id="682" name="Head Size" value="0.820" />
1902 1902
1903 <param id="683" name="Neck Thickness" value="-0.220" /> 1903 <param id="683" name="Neck Thickness" value="-0.220" />
1904 1904
1905 <param id="684" name="Breast_Female_Clevage" value="0.000" /> 1905 <param id="684" name="Breast_Female_Clevage" value="0.000" />
1906 1906
1907 <param id="685" name="Chest_Male_No_Pecs" value="-0.260" /> 1907 <param id="685" name="Chest_Male_No_Pecs" value="-0.260" />
1908 1908
1909 <param id="690" name="Eye Size" value="0.470" /> 1909 <param id="690" name="Eye Size" value="0.470" />
1910 1910
1911 <param id="692" name="Leg Length" value="0.540" /> 1911 <param id="692" name="Leg Length" value="0.540" />
1912 1912
1913 <param id="693" name="Arm Length" value="0.780" /> 1913 <param id="693" name="Arm Length" value="0.780" />
1914 1914
1915 <param id="753" name="Saddlebags" value="-0.250" /> 1915 <param id="753" name="Saddlebags" value="-0.250" />
1916 1916
1917 <param id="756" name="Neck Length" value="0.540" /> 1917 <param id="756" name="Neck Length" value="0.540" />
1918 1918
1919 <param id="758" name="Lower_Bridge_Nose" value="0.690" /> 1919 <param id="758" name="Lower_Bridge_Nose" value="0.690" />
1920 1920
1921 <param id="759" name="Low_Septum_Nose" value="0.550" /> 1921 <param id="759" name="Low_Septum_Nose" value="0.550" />
1922 1922
1923 <param id="760" name="Jaw_Angle" value="1.330" /> 1923 <param id="760" name="Jaw_Angle" value="1.330" />
1924 1924
1925 <param id="764" name="Lip_Cleft_Deep" value="0.040" /> 1925 <param id="764" name="Lip_Cleft_Deep" value="0.040" />
1926 1926
1927 <param id="765" name="Puffy_Lower_Lids" value="-0.300" /> 1927 <param id="765" name="Puffy_Lower_Lids" value="-0.300" />
1928 1928
1929 <param id="769" name="Eye Depth" value="0.790" /> 1929 <param id="769" name="Eye Depth" value="0.790" />
1930 1930
1931 <param id="773" name="Head Length" value="0.690" /> 1931 <param id="773" name="Head Length" value="0.690" />
1932 1932
1933<!-- wearable: skin --> 1933<!-- wearable: skin -->
1934 <param id="108" name="Rainbow Color" value="0.000" /> 1934 <param id="108" name="Rainbow Color" value="0.000" />
1935 1935
1936 <param id="110" name="Red Skin" value="0.000" /> 1936 <param id="110" name="Red Skin" value="0.000" />
1937 1937
1938 <param id="111" name="Pigment" value="0.650" /> 1938 <param id="111" name="Pigment" value="0.650" />
1939 1939
1940 <param id="116" name="Rosy Complexion" value="0.000" /> 1940 <param id="116" name="Rosy Complexion" value="0.000" />
1941 1941
1942 <param id="117" name="Lip Pinkness" value="0.000" /> 1942 <param id="117" name="Lip Pinkness" value="0.000" />
1943 1943
1944 <param id="150" name="Body Definition" value="0.000" /> 1944 <param id="150" name="Body Definition" value="0.000" />
1945 1945
1946 <param id="162" name="Facial Definition" value="0.800" /> 1946 <param id="162" name="Facial Definition" value="0.800" />
1947 1947
1948 <param id="163" name="Wrinkles" value="0.000" /> 1948 <param id="163" name="Wrinkles" value="0.000" />
1949 1949
1950 <param id="165" name="Freckles" value="0.000" /> 1950 <param id="165" name="Freckles" value="0.000" />
1951 1951
1952 <param id="700" name="Lipstick Color" value="0.250" /> 1952 <param id="700" name="Lipstick Color" value="0.250" />
1953 1953
1954 <param id="701" name="Lipstick" value="0.000" /> 1954 <param id="701" name="Lipstick" value="0.000" />
1955 1955
1956 <param id="702" name="Lipgloss" value="0.000" /> 1956 <param id="702" name="Lipgloss" value="0.000" />
1957 1957
1958 <param id="703" name="Eyeliner" value="0.000" /> 1958 <param id="703" name="Eyeliner" value="0.000" />
1959 1959
1960 <param id="704" name="Blush" value="0.000" /> 1960 <param id="704" name="Blush" value="0.000" />
1961 1961
1962 <param id="705" name="Blush Color" value="0.500" /> 1962 <param id="705" name="Blush Color" value="0.500" />
1963 1963
1964 <param id="706" name="Out Shdw Opacity" value="0.600" /> 1964 <param id="706" name="Out Shdw Opacity" value="0.600" />
1965 1965
1966 <param id="707" name="Outer Shadow" value="0.000" /> 1966 <param id="707" name="Outer Shadow" value="0.000" />
1967 1967
1968 <param id="708" name="Out Shdw Color" value="0.000" /> 1968 <param id="708" name="Out Shdw Color" value="0.000" />
1969 1969
1970 <param id="709" name="Inner Shadow" value="0.000" /> 1970 <param id="709" name="Inner Shadow" value="0.000" />
1971 1971
1972 <param id="710" name="Nail Polish" value="0.000" /> 1972 <param id="710" name="Nail Polish" value="0.000" />
1973 1973
1974 <param id="711" name="Blush Opacity" value="0.500" /> 1974 <param id="711" name="Blush Opacity" value="0.500" />
1975 1975
1976 <param id="712" name="In Shdw Color" value="0.000" /> 1976 <param id="712" name="In Shdw Color" value="0.000" />
1977 1977
1978 <param id="713" name="In Shdw Opacity" value="0.700" /> 1978 <param id="713" name="In Shdw Opacity" value="0.700" />
1979 1979
1980 <param id="714" name="Eyeliner Color" value="0.000" /> 1980 <param id="714" name="Eyeliner Color" value="0.000" />
1981 1981
1982 <param id="715" name="Nail Polish Color" value="0.000" /> 1982 <param id="715" name="Nail Polish Color" value="0.000" />
1983 1983
1984 <texture te="0" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 1984 <texture te="0" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
1985 1985
1986 <texture te="5" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 1986 <texture te="5" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
1987 1987
1988 <texture te="6" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 1988 <texture te="6" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
1989 1989
1990<!-- wearable: hair --> 1990<!-- wearable: hair -->
1991 <param id="16" name="Pointy_Eyebrows" value="-0.440" /> 1991 <param id="16" name="Pointy_Eyebrows" value="-0.440" />
1992 1992
1993 <param id="31" name="Arced_Eyebrows" value="0.000" /> 1993 <param id="31" name="Arced_Eyebrows" value="0.000" />
1994 1994
1995 <param id="112" name="Rainbow Color" value="0.000" /> 1995 <param id="112" name="Rainbow Color" value="0.000" />
1996 1996
1997 <param id="113" name="Red Hair" value="0.220" /> 1997 <param id="113" name="Red Hair" value="0.220" />
1998 1998
1999 <param id="114" name="Blonde Hair" value="0.000" /> 1999 <param id="114" name="Blonde Hair" value="0.000" />
2000 2000
2001 <param id="115" name="White Hair" value="0.000" /> 2001 <param id="115" name="White Hair" value="0.000" />
2002 2002
2003 <param id="119" name="Eyebrow Size" value="0.580" /> 2003 <param id="119" name="Eyebrow Size" value="0.580" />
2004 2004
2005 <param id="130" name="Front Fringe" value="0.360" /> 2005 <param id="130" name="Front Fringe" value="0.360" />
2006 2006
2007 <param id="131" name="Side Fringe" value="0.310" /> 2007 <param id="131" name="Side Fringe" value="0.310" />
2008 2008
2009 <param id="132" name="Back Fringe" value="0.050" /> 2009 <param id="132" name="Back Fringe" value="0.050" />
2010 2010
2011 <param id="133" name="Hair Front" value="0.100" /> 2011 <param id="133" name="Hair Front" value="0.100" />
2012 2012
2013 <param id="134" name="Hair Sides" value="0.170" /> 2013 <param id="134" name="Hair Sides" value="0.170" />
2014 2014
2015 <param id="135" name="Hair Back" value="0.450" /> 2015 <param id="135" name="Hair Back" value="0.450" />
2016 2016
2017 <param id="136" name="Hair Sweep" value="0.670" /> 2017 <param id="136" name="Hair Sweep" value="0.670" />
2018 2018
2019 <param id="137" name="Hair Tilt" value="0.520" /> 2019 <param id="137" name="Hair Tilt" value="0.520" />
2020 2020
2021 <param id="140" name="Hair_Part_Middle" value="0.000" /> 2021 <param id="140" name="Hair_Part_Middle" value="0.000" />
2022 2022
2023 <param id="141" name="Hair_Part_Right" value="0.000" /> 2023 <param id="141" name="Hair_Part_Right" value="0.000" />
2024 2024
2025 <param id="142" name="Hair_Part_Left" value="0.000" /> 2025 <param id="142" name="Hair_Part_Left" value="0.000" />
2026 2026
2027 <param id="143" name="Hair_Sides_Full" value="-0.095" /> 2027 <param id="143" name="Hair_Sides_Full" value="-0.095" />
2028 2028
2029 <param id="166" name="Sideburns" value="0.000" /> 2029 <param id="166" name="Sideburns" value="0.000" />
2030 2030
2031 <param id="167" name="Moustache" value="0.610" /> 2031 <param id="167" name="Moustache" value="0.610" />
2032 2032
2033 <param id="168" name="Soulpatch" value="0.420" /> 2033 <param id="168" name="Soulpatch" value="0.420" />
2034 2034
2035 <param id="169" name="Chin Curtains" value="0.820" /> 2035 <param id="169" name="Chin Curtains" value="0.820" />
2036 2036
2037 <param id="177" name="Hair_Rumpled" value="0.000" /> 2037 <param id="177" name="Hair_Rumpled" value="0.000" />
2038 2038
2039 <param id="181" name="Hair_Big_Front" value="-0.160" /> 2039 <param id="181" name="Hair_Big_Front" value="-0.160" />
2040 2040
2041 <param id="182" name="Hair_Big_Top" value="-0.080" /> 2041 <param id="182" name="Hair_Big_Top" value="-0.080" />
2042 2042
2043 <param id="183" name="Hair_Big_Back" value="0.140" /> 2043 <param id="183" name="Hair_Big_Back" value="0.140" />
2044 2044
2045 <param id="184" name="Hair_Spiked" value="0.000" /> 2045 <param id="184" name="Hair_Spiked" value="0.000" />
2046 2046
2047 <param id="192" name="Bangs_Part_Middle" value="0.000" /> 2047 <param id="192" name="Bangs_Part_Middle" value="0.000" />
2048 2048
2049 <param id="674" name="Hair_Shear_Back" value="-0.310" /> 2049 <param id="674" name="Hair_Shear_Back" value="-0.310" />
2050 2050
2051 <param id="750" name="Eyebrow Density" value="0.540" /> 2051 <param id="750" name="Eyebrow Density" value="0.540" />
2052 2052
2053 <param id="752" name="Hair Thickness" value="0.750" /> 2053 <param id="752" name="Hair Thickness" value="0.750" />
2054 2054
2055 <param id="754" name="Hair_Taper_Back" value="-0.400" /> 2055 <param id="754" name="Hair_Taper_Back" value="-0.400" />
2056 2056
2057 <param id="755" name="Hair_Taper_Front" value="0.030" /> 2057 <param id="755" name="Hair_Taper_Front" value="0.030" />
2058 2058
2059 <param id="757" name="Lower_Eyebrows" value="-2.000" /> 2059 <param id="757" name="Lower_Eyebrows" value="-2.000" />
2060 2060
2061 <param id="762" name="Hair_Shear_Front" value="0.600" /> 2061 <param id="762" name="Hair_Shear_Front" value="0.600" />
2062 2062
2063 <param id="763" name="Hair Volume" value="0.660" /> 2063 <param id="763" name="Hair Volume" value="0.660" />
2064 2064
2065 <texture te="4" uuid="7ca39b4c-bd19-4699-aff7-f93fd03d3e7b" /> 2065 <texture te="4" uuid="7ca39b4c-bd19-4699-aff7-f93fd03d3e7b" />
2066 2066
2067<!-- wearable: eyes --> 2067<!-- wearable: eyes -->
2068 <param id="98" name="Eye Lightness" value="0.000" /> 2068 <param id="98" name="Eye Lightness" value="0.000" />
2069 2069
2070 <param id="99" name="Eye Color" value="0.000" /> 2070 <param id="99" name="Eye Color" value="0.000" />
2071 2071
2072 <texture te="3" uuid="6522e74d-1660-4e7f-b601-6f48c1659a77" /> 2072 <texture te="3" uuid="6522e74d-1660-4e7f-b601-6f48c1659a77" />
2073 </archetype> 2073 </archetype>
2074 2074
2075 <archetype name="M B Muscle"> 2075 <archetype name="M B Muscle">
2076<!-- wearable: shape --> 2076<!-- wearable: shape -->
2077 <param id="1" name="Big_Brow" value="0.090" /> 2077 <param id="1" name="Big_Brow" value="0.090" />
2078 2078
2079 <param id="2" name="Nose_Big_Out" value="0.090" /> 2079 <param id="2" name="Nose_Big_Out" value="0.090" />
2080 2080
2081 <param id="4" name="Broad_Nostrils" value="0.950" /> 2081 <param id="4" name="Broad_Nostrils" value="0.950" />
2082 2082
2083 <param id="5" name="Cleft_Chin" value="0.100" /> 2083 <param id="5" name="Cleft_Chin" value="0.100" />
2084 2084
2085 <param id="6" name="Bulbous_Nose_Tip" value="-0.010" /> 2085 <param id="6" name="Bulbous_Nose_Tip" value="-0.010" />
2086 2086
2087 <param id="7" name="Weak_Chin" value="-0.040" /> 2087 <param id="7" name="Weak_Chin" value="-0.040" />
2088 2088
2089 <param id="8" name="Double_Chin" value="-0.040" /> 2089 <param id="8" name="Double_Chin" value="-0.040" />
2090 2090
2091 <param id="10" name="Sunken_Cheeks" value="0.880" /> 2091 <param id="10" name="Sunken_Cheeks" value="0.880" />
2092 2092
2093 <param id="11" name="Noble_Nose_Bridge" value="0.140" /> 2093 <param id="11" name="Noble_Nose_Bridge" value="0.140" />
2094 2094
2095 <param id="12" name="Jowls" value="0.520" /> 2095 <param id="12" name="Jowls" value="0.520" />
2096 2096
2097 <param id="13" name="Cleft_Chin_Upper" value="0.190" /> 2097 <param id="13" name="Cleft_Chin_Upper" value="0.190" />
2098 2098
2099 <param id="14" name="High_Cheek_Bones" value="0.500" /> 2099 <param id="14" name="High_Cheek_Bones" value="0.500" />
2100 2100
2101 <param id="15" name="Ears_Out" value="0.340" /> 2101 <param id="15" name="Ears_Out" value="0.340" />
2102 2102
2103 <param id="17" name="Square_Jaw" value="-0.500" /> 2103 <param id="17" name="Square_Jaw" value="-0.500" />
2104 2104
2105 <param id="18" name="Puffy_Upper_Cheeks" value="0.540" /> 2105 <param id="18" name="Puffy_Upper_Cheeks" value="0.540" />
2106 2106
2107 <param id="19" name="Upturned_Nose_Tip" value="-0.080" /> 2107 <param id="19" name="Upturned_Nose_Tip" value="-0.080" />
2108 2108
2109 <param id="20" name="Bulbous_Nose" value="0.520" /> 2109 <param id="20" name="Bulbous_Nose" value="0.520" />
2110 2110
2111 <param id="21" name="Upper_Eyelid_Fold" value="0.100" /> 2111 <param id="21" name="Upper_Eyelid_Fold" value="0.100" />
2112 2112
2113 <param id="22" name="Attached_Earlobes" value="0.000" /> 2113 <param id="22" name="Attached_Earlobes" value="0.000" />
2114 2114
2115 <param id="23" name="Baggy_Eyes" value="0.440" /> 2115 <param id="23" name="Baggy_Eyes" value="0.440" />
2116 2116
2117 <param id="24" name="Wide_Eyes" value="0.500" /> 2117 <param id="24" name="Wide_Eyes" value="0.500" />
2118 2118
2119 <param id="25" name="Wide_Lip_Cleft" value="-0.410" /> 2119 <param id="25" name="Wide_Lip_Cleft" value="-0.410" />
2120 2120
2121 <param id="27" name="Wide_Nose_Bridge" value="0.450" /> 2121 <param id="27" name="Wide_Nose_Bridge" value="0.450" />
2122 2122
2123 <param id="33" name="Height" value="1.440" /> 2123 <param id="33" name="Height" value="1.440" />
2124 2124
2125 <param id="34" name="Thickness" value="1.190" /> 2125 <param id="34" name="Thickness" value="1.190" />
2126 2126
2127 <param id="35" name="Big_Ears" value="-0.040" /> 2127 <param id="35" name="Big_Ears" value="-0.040" />
2128 2128
2129 <param id="36" name="Shoulders" value="0.920" /> 2129 <param id="36" name="Shoulders" value="0.920" />
2130 2130
2131 <param id="37" name="Hip Width" value="-1.640" /> 2131 <param id="37" name="Hip Width" value="-1.640" />
2132 2132
2133 <param id="38" name="Torso Length" value="0.660" /> 2133 <param id="38" name="Torso Length" value="0.660" />
2134 2134
2135 <param id="80" name="male" value="1.000" /> 2135 <param id="80" name="male" value="1.000" />
2136 2136
2137 <param id="105" name="Breast Size" value="0.500" /> 2137 <param id="105" name="Breast Size" value="0.500" />
2138 2138
2139 <param id="151" name="Big_Butt_Legs" value="0.550" /> 2139 <param id="151" name="Big_Butt_Legs" value="0.550" />
2140 2140
2141 <param id="155" name="Lip Width" value="0.880" /> 2141 <param id="155" name="Lip Width" value="0.880" />
2142 2142
2143 <param id="157" name="Belly Size" value="0.160" /> 2143 <param id="157" name="Belly Size" value="0.160" />
2144 2144
2145 <param id="185" name="Deep_Chin" value="0.540" /> 2145 <param id="185" name="Deep_Chin" value="0.540" />
2146 2146
2147 <param id="193" name="Head Shape" value="0.140" /> 2147 <param id="193" name="Head Shape" value="0.140" />
2148 2148
2149 <param id="196" name="Eye Spacing" value="0.460" /> 2149 <param id="196" name="Eye Spacing" value="0.460" />
2150 2150
2151 <param id="505" name="Lip Thickness" value="0.920" /> 2151 <param id="505" name="Lip Thickness" value="0.920" />
2152 2152
2153 <param id="506" name="Mouth_Height" value="0.280" /> 2153 <param id="506" name="Mouth_Height" value="0.280" />
2154 2154
2155 <param id="507" name="Breast_Gravity" value="0.000" /> 2155 <param id="507" name="Breast_Gravity" value="0.000" />
2156 2156
2157 <param id="515" name="Foot_Size" value="2.000" /> 2157 <param id="515" name="Foot_Size" value="2.000" />
2158 2158
2159 <param id="517" name="Wide_Nose" value="0.470" /> 2159 <param id="517" name="Wide_Nose" value="0.470" />
2160 2160
2161 <param id="518" name="Eyelashes_Long" value="0.640" /> 2161 <param id="518" name="Eyelashes_Long" value="0.640" />
2162 2162
2163 <param id="629" name="Forehead Angle" value="0.000" /> 2163 <param id="629" name="Forehead Angle" value="0.000" />
2164 2164
2165 <param id="637" name="Body Fat" value="0.010" /> 2165 <param id="637" name="Body Fat" value="0.010" />
2166 2166
2167 <param id="646" name="Egg_Head" value="0.330" /> 2167 <param id="646" name="Egg_Head" value="0.330" />
2168 2168
2169 <param id="647" name="Squash_Stretch_Head" value="0.440" /> 2169 <param id="647" name="Squash_Stretch_Head" value="0.440" />
2170 2170
2171 <param id="649" name="Torso Muscles" value="0.500" /> 2171 <param id="649" name="Torso Muscles" value="0.500" />
2172 2172
2173 <param id="650" name="Eyelid_Corner_Up" value="0.430" /> 2173 <param id="650" name="Eyelid_Corner_Up" value="0.430" />
2174 2174
2175 <param id="652" name="Leg Muscles" value="0.860" /> 2175 <param id="652" name="Leg Muscles" value="0.860" />
2176 2176
2177 <param id="653" name="Tall_Lips" value="0.860" /> 2177 <param id="653" name="Tall_Lips" value="0.860" />
2178 2178
2179 <param id="656" name="Crooked_Nose" value="0.000" /> 2179 <param id="656" name="Crooked_Nose" value="0.000" />
2180 2180
2181 <param id="659" name="Mouth Corner" value="0.820" /> 2181 <param id="659" name="Mouth Corner" value="0.820" />
2182 2182
2183 <param id="662" name="Face Shear" value="0.500" /> 2183 <param id="662" name="Face Shear" value="0.500" />
2184 2184
2185 <param id="663" name="Shift_Mouth" value="0.280" /> 2185 <param id="663" name="Shift_Mouth" value="0.280" />
2186 2186
2187 <param id="664" name="Pop_Eye" value="-0.260" /> 2187 <param id="664" name="Pop_Eye" value="-0.260" />
2188 2188
2189 <param id="665" name="Jaw_Jut" value="0.080" /> 2189 <param id="665" name="Jaw_Jut" value="0.080" />
2190 2190
2191 <param id="675" name="Hand Size" value="0.170" /> 2191 <param id="675" name="Hand Size" value="0.170" />
2192 2192
2193 <param id="676" name="Love_Handles" value="-0.100" /> 2193 <param id="676" name="Love_Handles" value="-0.100" />
2194 2194
2195 <param id="678" name="Torso Muscles" value="0.850" /> 2195 <param id="678" name="Torso Muscles" value="0.850" />
2196 2196
2197 <param id="682" name="Head Size" value="0.820" /> 2197 <param id="682" name="Head Size" value="0.820" />
2198 2198
2199 <param id="683" name="Neck Thickness" value="0.100" /> 2199 <param id="683" name="Neck Thickness" value="0.100" />
2200 2200
2201 <param id="684" name="Breast_Female_Clevage" value="0.000" /> 2201 <param id="684" name="Breast_Female_Clevage" value="0.000" />
2202 2202
2203 <param id="685" name="Chest_Male_No_Pecs" value="-0.230" /> 2203 <param id="685" name="Chest_Male_No_Pecs" value="-0.230" />
2204 2204
2205 <param id="690" name="Eye Size" value="0.520" /> 2205 <param id="690" name="Eye Size" value="0.520" />
2206 2206
2207 <param id="692" name="Leg Length" value="0.600" /> 2207 <param id="692" name="Leg Length" value="0.600" />
2208 2208
2209 <param id="693" name="Arm Length" value="0.640" /> 2209 <param id="693" name="Arm Length" value="0.640" />
2210 2210
2211 <param id="753" name="Saddlebags" value="0.030" /> 2211 <param id="753" name="Saddlebags" value="0.030" />
2212 2212
2213 <param id="756" name="Neck Length" value="0.140" /> 2213 <param id="756" name="Neck Length" value="0.140" />
2214 2214
2215 <param id="758" name="Lower_Bridge_Nose" value="-0.420" /> 2215 <param id="758" name="Lower_Bridge_Nose" value="-0.420" />
2216 2216
2217 <param id="759" name="Low_Septum_Nose" value="0.030" /> 2217 <param id="759" name="Low_Septum_Nose" value="0.030" />
2218 2218
2219 <param id="760" name="Jaw_Angle" value="0.850" /> 2219 <param id="760" name="Jaw_Angle" value="0.850" />
2220 2220
2221 <param id="764" name="Lip_Cleft_Deep" value="0.370" /> 2221 <param id="764" name="Lip_Cleft_Deep" value="0.370" />
2222 2222
2223 <param id="765" name="Puffy_Lower_Lids" value="0.460" /> 2223 <param id="765" name="Puffy_Lower_Lids" value="0.460" />
2224 2224
2225 <param id="769" name="Eye Depth" value="0.740" /> 2225 <param id="769" name="Eye Depth" value="0.740" />
2226 2226
2227 <param id="773" name="Head Length" value="0.520" /> 2227 <param id="773" name="Head Length" value="0.520" />
2228 2228
2229<!-- wearable: skin --> 2229<!-- wearable: skin -->
2230 <param id="108" name="Rainbow Color" value="0.000" /> 2230 <param id="108" name="Rainbow Color" value="0.000" />
2231 2231
2232 <param id="110" name="Red Skin" value="0.010" /> 2232 <param id="110" name="Red Skin" value="0.010" />
2233 2233
2234 <param id="111" name="Pigment" value="0.720" /> 2234 <param id="111" name="Pigment" value="0.720" />
2235 2235
2236 <param id="116" name="Rosy Complexion" value="0.000" /> 2236 <param id="116" name="Rosy Complexion" value="0.000" />
2237 2237
2238 <param id="117" name="Lip Pinkness" value="0.170" /> 2238 <param id="117" name="Lip Pinkness" value="0.170" />
2239 2239
2240 <param id="150" name="Body Definition" value="0.820" /> 2240 <param id="150" name="Body Definition" value="0.820" />
2241 2241
2242 <param id="162" name="Facial Definition" value="0.870" /> 2242 <param id="162" name="Facial Definition" value="0.870" />
2243 2243
2244 <param id="163" name="Wrinkles" value="0.060" /> 2244 <param id="163" name="Wrinkles" value="0.060" />
2245 2245
2246 <param id="165" name="Freckles" value="0.000" /> 2246 <param id="165" name="Freckles" value="0.000" />
2247 2247
2248 <param id="700" name="Lipstick Color" value="0.250" /> 2248 <param id="700" name="Lipstick Color" value="0.250" />
2249 2249
2250 <param id="701" name="Lipstick" value="0.000" /> 2250 <param id="701" name="Lipstick" value="0.000" />
2251 2251
2252 <param id="702" name="Lipgloss" value="0.000" /> 2252 <param id="702" name="Lipgloss" value="0.000" />
2253 2253
2254 <param id="703" name="Eyeliner" value="0.000" /> 2254 <param id="703" name="Eyeliner" value="0.000" />
2255 2255
2256 <param id="704" name="Blush" value="0.000" /> 2256 <param id="704" name="Blush" value="0.000" />
2257 2257
2258 <param id="705" name="Blush Color" value="0.500" /> 2258 <param id="705" name="Blush Color" value="0.500" />
2259 2259
2260 <param id="706" name="Out Shdw Opacity" value="0.600" /> 2260 <param id="706" name="Out Shdw Opacity" value="0.600" />
2261 2261
2262 <param id="707" name="Outer Shadow" value="0.000" /> 2262 <param id="707" name="Outer Shadow" value="0.000" />
2263 2263
2264 <param id="708" name="Out Shdw Color" value="0.000" /> 2264 <param id="708" name="Out Shdw Color" value="0.000" />
2265 2265
2266 <param id="709" name="Inner Shadow" value="0.000" /> 2266 <param id="709" name="Inner Shadow" value="0.000" />
2267 2267
2268 <param id="710" name="Nail Polish" value="0.000" /> 2268 <param id="710" name="Nail Polish" value="0.000" />
2269 2269
2270 <param id="711" name="Blush Opacity" value="0.500" /> 2270 <param id="711" name="Blush Opacity" value="0.500" />
2271 2271
2272 <param id="712" name="In Shdw Color" value="0.000" /> 2272 <param id="712" name="In Shdw Color" value="0.000" />
2273 2273
2274 <param id="713" name="In Shdw Opacity" value="0.700" /> 2274 <param id="713" name="In Shdw Opacity" value="0.700" />
2275 2275
2276 <param id="714" name="Eyeliner Color" value="0.000" /> 2276 <param id="714" name="Eyeliner Color" value="0.000" />
2277 2277
2278 <param id="715" name="Nail Polish Color" value="0.000" /> 2278 <param id="715" name="Nail Polish Color" value="0.000" />
2279 2279
2280 <texture te="0" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 2280 <texture te="0" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
2281 2281
2282 <texture te="5" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 2282 <texture te="5" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
2283 2283
2284 <texture te="6" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 2284 <texture te="6" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
2285 2285
2286<!-- wearable: hair --> 2286<!-- wearable: hair -->
2287 <param id="16" name="Pointy_Eyebrows" value="0.730" /> 2287 <param id="16" name="Pointy_Eyebrows" value="0.730" />
2288 2288
2289 <param id="31" name="Arced_Eyebrows" value="0.930" /> 2289 <param id="31" name="Arced_Eyebrows" value="0.930" />
2290 2290
2291 <param id="112" name="Rainbow Color" value="0.000" /> 2291 <param id="112" name="Rainbow Color" value="0.000" />
2292 2292
2293 <param id="113" name="Red Hair" value="0.000" /> 2293 <param id="113" name="Red Hair" value="0.000" />
2294 2294
2295 <param id="114" name="Blonde Hair" value="0.000" /> 2295 <param id="114" name="Blonde Hair" value="0.000" />
2296 2296
2297 <param id="115" name="White Hair" value="0.000" /> 2297 <param id="115" name="White Hair" value="0.000" />
2298 2298
2299 <param id="119" name="Eyebrow Size" value="0.330" /> 2299 <param id="119" name="Eyebrow Size" value="0.330" />
2300 2300
2301 <param id="130" name="Front Fringe" value="0.000" /> 2301 <param id="130" name="Front Fringe" value="0.000" />
2302 2302
2303 <param id="131" name="Side Fringe" value="0.410" /> 2303 <param id="131" name="Side Fringe" value="0.410" />
2304 2304
2305 <param id="132" name="Back Fringe" value="0.000" /> 2305 <param id="132" name="Back Fringe" value="0.000" />
2306 2306
2307 <param id="133" name="Hair Front" value="0.030" /> 2307 <param id="133" name="Hair Front" value="0.030" />
2308 2308
2309 <param id="134" name="Hair Sides" value="0.000" /> 2309 <param id="134" name="Hair Sides" value="0.000" />
2310 2310
2311 <param id="135" name="Hair Back" value="0.530" /> 2311 <param id="135" name="Hair Back" value="0.530" />
2312 2312
2313 <param id="136" name="Hair Sweep" value="0.570" /> 2313 <param id="136" name="Hair Sweep" value="0.570" />
2314 2314
2315 <param id="137" name="Hair Tilt" value="0.540" /> 2315 <param id="137" name="Hair Tilt" value="0.540" />
2316 2316
2317 <param id="140" name="Hair_Part_Middle" value="0.000" /> 2317 <param id="140" name="Hair_Part_Middle" value="0.000" />
2318 2318
2319 <param id="141" name="Hair_Part_Right" value="0.000" /> 2319 <param id="141" name="Hair_Part_Right" value="0.000" />
2320 2320
2321 <param id="142" name="Hair_Part_Left" value="0.000" /> 2321 <param id="142" name="Hair_Part_Left" value="0.000" />
2322 2322
2323 <param id="143" name="Hair_Sides_Full" value="-0.095" /> 2323 <param id="143" name="Hair_Sides_Full" value="-0.095" />
2324 2324
2325 <param id="166" name="Sideburns" value="0.960" /> 2325 <param id="166" name="Sideburns" value="0.960" />
2326 2326
2327 <param id="167" name="Moustache" value="0.000" /> 2327 <param id="167" name="Moustache" value="0.000" />
2328 2328
2329 <param id="168" name="Soulpatch" value="0.120" /> 2329 <param id="168" name="Soulpatch" value="0.120" />
2330 2330
2331 <param id="169" name="Chin Curtains" value="0.000" /> 2331 <param id="169" name="Chin Curtains" value="0.000" />
2332 2332
2333 <param id="177" name="Hair_Rumpled" value="0.040" /> 2333 <param id="177" name="Hair_Rumpled" value="0.040" />
2334 2334
2335 <param id="181" name="Hair_Big_Front" value="-0.220" /> 2335 <param id="181" name="Hair_Big_Front" value="-0.220" />
2336 2336
2337 <param id="182" name="Hair_Big_Top" value="-0.120" /> 2337 <param id="182" name="Hair_Big_Top" value="-0.120" />
2338 2338
2339 <param id="183" name="Hair_Big_Back" value="0.080" /> 2339 <param id="183" name="Hair_Big_Back" value="0.080" />
2340 2340
2341 <param id="184" name="Hair_Spiked" value="0.000" /> 2341 <param id="184" name="Hair_Spiked" value="0.000" />
2342 2342
2343 <param id="192" name="Bangs_Part_Middle" value="0.000" /> 2343 <param id="192" name="Bangs_Part_Middle" value="0.000" />
2344 2344
2345 <param id="674" name="Hair_Shear_Back" value="0.860" /> 2345 <param id="674" name="Hair_Shear_Back" value="0.860" />
2346 2346
2347 <param id="750" name="Eyebrow Density" value="0.680" /> 2347 <param id="750" name="Eyebrow Density" value="0.680" />
2348 2348
2349 <param id="752" name="Hair Thickness" value="0.500" /> 2349 <param id="752" name="Hair Thickness" value="0.500" />
2350 2350
2351 <param id="754" name="Hair_Taper_Back" value="-0.130" /> 2351 <param id="754" name="Hair_Taper_Back" value="-0.130" />
2352 2352
2353 <param id="755" name="Hair_Taper_Front" value="1.470" /> 2353 <param id="755" name="Hair_Taper_Front" value="1.470" />
2354 2354
2355 <param id="757" name="Lower_Eyebrows" value="0.720" /> 2355 <param id="757" name="Lower_Eyebrows" value="0.720" />
2356 2356
2357 <param id="762" name="Hair_Shear_Front" value="0.330" /> 2357 <param id="762" name="Hair_Shear_Front" value="0.330" />
2358 2358
2359 <param id="763" name="Hair Volume" value="0.870" /> 2359 <param id="763" name="Hair Volume" value="0.870" />
2360 2360
2361 <texture te="4" uuid="7ca39b4c-bd19-4699-aff7-f93fd03d3e7b" /> 2361 <texture te="4" uuid="7ca39b4c-bd19-4699-aff7-f93fd03d3e7b" />
2362 2362
2363<!-- wearable: eyes --> 2363<!-- wearable: eyes -->
2364 <param id="98" name="Eye Lightness" value="0.180" /> 2364 <param id="98" name="Eye Lightness" value="0.180" />
2365 2365
2366 <param id="99" name="Eye Color" value="0.060" /> 2366 <param id="99" name="Eye Color" value="0.060" />
2367 2367
2368 <texture te="3" uuid="6522e74d-1660-4e7f-b601-6f48c1659a77" /> 2368 <texture te="3" uuid="6522e74d-1660-4e7f-b601-6f48c1659a77" />
2369 </archetype> 2369 </archetype>
2370 2370
2371 <archetype name="M B Chubby"> 2371 <archetype name="M B Chubby">
2372<!-- wearable: shape --> 2372<!-- wearable: shape -->
2373 <param id="1" name="Big_Brow" value="1.240" /> 2373 <param id="1" name="Big_Brow" value="1.240" />
2374 2374
2375 <param id="2" name="Nose_Big_Out" value="-0.110" /> 2375 <param id="2" name="Nose_Big_Out" value="-0.110" />
2376 2376
2377 <param id="4" name="Broad_Nostrils" value="0.310" /> 2377 <param id="4" name="Broad_Nostrils" value="0.310" />
2378 2378
2379 <param id="5" name="Cleft_Chin" value="-0.100" /> 2379 <param id="5" name="Cleft_Chin" value="-0.100" />
2380 2380
2381 <param id="6" name="Bulbous_Nose_Tip" value="0.260" /> 2381 <param id="6" name="Bulbous_Nose_Tip" value="0.260" />
2382 2382
2383 <param id="7" name="Weak_Chin" value="-0.260" /> 2383 <param id="7" name="Weak_Chin" value="-0.260" />
2384 2384
2385 <param id="8" name="Double_Chin" value="0.540" /> 2385 <param id="8" name="Double_Chin" value="0.540" />
2386 2386
2387 <param id="10" name="Sunken_Cheeks" value="0.080" /> 2387 <param id="10" name="Sunken_Cheeks" value="0.080" />
2388 2388
2389 <param id="11" name="Noble_Nose_Bridge" value="0.020" /> 2389 <param id="11" name="Noble_Nose_Bridge" value="0.020" />
2390 2390
2391 <param id="12" name="Jowls" value="1.240" /> 2391 <param id="12" name="Jowls" value="1.240" />
2392 2392
2393 <param id="13" name="Cleft_Chin_Upper" value="0.000" /> 2393 <param id="13" name="Cleft_Chin_Upper" value="0.000" />
2394 2394
2395 <param id="14" name="High_Cheek_Bones" value="0.070" /> 2395 <param id="14" name="High_Cheek_Bones" value="0.070" />
2396 2396
2397 <param id="15" name="Ears_Out" value="-0.180" /> 2397 <param id="15" name="Ears_Out" value="-0.180" />
2398 2398
2399 <param id="17" name="Square_Jaw" value="-0.170" /> 2399 <param id="17" name="Square_Jaw" value="-0.170" />
2400 2400
2401 <param id="18" name="Puffy_Upper_Cheeks" value="2.500" /> 2401 <param id="18" name="Puffy_Upper_Cheeks" value="2.500" />
2402 2402
2403 <param id="19" name="Upturned_Nose_Tip" value="-0.500" /> 2403 <param id="19" name="Upturned_Nose_Tip" value="-0.500" />
2404 2404
2405 <param id="20" name="Bulbous_Nose" value="-0.020" /> 2405 <param id="20" name="Bulbous_Nose" value="-0.020" />
2406 2406
2407 <param id="21" name="Upper_Eyelid_Fold" value="0.600" /> 2407 <param id="21" name="Upper_Eyelid_Fold" value="0.600" />
2408 2408
2409 <param id="22" name="Attached_Earlobes" value="0.420" /> 2409 <param id="22" name="Attached_Earlobes" value="0.420" />
2410 2410
2411 <param id="23" name="Baggy_Eyes" value="0.680" /> 2411 <param id="23" name="Baggy_Eyes" value="0.680" />
2412 2412
2413 <param id="24" name="Wide_Eyes" value="1.050" /> 2413 <param id="24" name="Wide_Eyes" value="1.050" />
2414 2414
2415 <param id="25" name="Wide_Lip_Cleft" value="-0.250" /> 2415 <param id="25" name="Wide_Lip_Cleft" value="-0.250" />
2416 2416
2417 <param id="27" name="Wide_Nose_Bridge" value="-0.320" /> 2417 <param id="27" name="Wide_Nose_Bridge" value="-0.320" />
2418 2418
2419 <param id="33" name="Height" value="1.400" /> 2419 <param id="33" name="Height" value="1.400" />
2420 2420
2421 <param id="34" name="Thickness" value="1.260" /> 2421 <param id="34" name="Thickness" value="1.260" />
2422 2422
2423 <param id="35" name="Big_Ears" value="1.100" /> 2423 <param id="35" name="Big_Ears" value="1.100" />
2424 2424
2425 <param id="36" name="Shoulders" value="0.820" /> 2425 <param id="36" name="Shoulders" value="0.820" />
2426 2426
2427 <param id="37" name="Hip Width" value="-0.380" /> 2427 <param id="37" name="Hip Width" value="-0.380" />
2428 2428
2429 <param id="38" name="Torso Length" value="0.380" /> 2429 <param id="38" name="Torso Length" value="0.380" />
2430 2430
2431 <param id="80" name="male" value="1.000" /> 2431 <param id="80" name="male" value="1.000" />
2432 2432
2433 <param id="105" name="Breast Size" value="0.500" /> 2433 <param id="105" name="Breast Size" value="0.500" />
2434 2434
2435 <param id="151" name="Big_Butt_Legs" value="0.640" /> 2435 <param id="151" name="Big_Butt_Legs" value="0.640" />
2436 2436
2437 <param id="155" name="Lip Width" value="0.400" /> 2437 <param id="155" name="Lip Width" value="0.400" />
2438 2438
2439 <param id="157" name="Belly Size" value="0.480" /> 2439 <param id="157" name="Belly Size" value="0.480" />
2440 2440
2441 <param id="185" name="Deep_Chin" value="0.680" /> 2441 <param id="185" name="Deep_Chin" value="0.680" />
2442 2442
2443 <param id="193" name="Head Shape" value="0.950" /> 2443 <param id="193" name="Head Shape" value="0.950" />
2444 2444
2445 <param id="196" name="Eye Spacing" value="-0.710" /> 2445 <param id="196" name="Eye Spacing" value="-0.710" />
2446 2446
2447 <param id="505" name="Lip Thickness" value="0.840" /> 2447 <param id="505" name="Lip Thickness" value="0.840" />
2448 2448
2449 <param id="506" name="Mouth_Height" value="1.000" /> 2449 <param id="506" name="Mouth_Height" value="1.000" />
2450 2450
2451 <param id="507" name="Breast_Gravity" value="0.000" /> 2451 <param id="507" name="Breast_Gravity" value="0.000" />
2452 2452
2453 <param id="515" name="Foot_Size" value="1.760" /> 2453 <param id="515" name="Foot_Size" value="1.760" />
2454 2454
2455 <param id="517" name="Wide_Nose" value="0.070" /> 2455 <param id="517" name="Wide_Nose" value="0.070" />
2456 2456
2457 <param id="518" name="Eyelashes_Long" value="0.400" /> 2457 <param id="518" name="Eyelashes_Long" value="0.400" />
2458 2458
2459 <param id="629" name="Forehead Angle" value="0.000" /> 2459 <param id="629" name="Forehead Angle" value="0.000" />
2460 2460
2461 <param id="637" name="Body Fat" value="0.130" /> 2461 <param id="637" name="Body Fat" value="0.130" />
2462 2462
2463 <param id="646" name="Egg_Head" value="-0.910" /> 2463 <param id="646" name="Egg_Head" value="-0.910" />
2464 2464
2465 <param id="647" name="Squash_Stretch_Head" value="-0.320" /> 2465 <param id="647" name="Squash_Stretch_Head" value="-0.320" />
2466 2466
2467 <param id="649" name="Torso Muscles" value="0.500" /> 2467 <param id="649" name="Torso Muscles" value="0.500" />
2468 2468
2469 <param id="650" name="Eyelid_Corner_Up" value="0.130" /> 2469 <param id="650" name="Eyelid_Corner_Up" value="0.130" />
2470 2470
2471 <param id="652" name="Leg Muscles" value="0.830" /> 2471 <param id="652" name="Leg Muscles" value="0.830" />
2472 2472
2473 <param id="653" name="Tall_Lips" value="0.410" /> 2473 <param id="653" name="Tall_Lips" value="0.410" />
2474 2474
2475 <param id="656" name="Crooked_Nose" value="-0.400" /> 2475 <param id="656" name="Crooked_Nose" value="-0.400" />
2476 2476
2477 <param id="659" name="Mouth Corner" value="0.580" /> 2477 <param id="659" name="Mouth Corner" value="0.580" />
2478 2478
2479 <param id="662" name="Face Shear" value="0.460" /> 2479 <param id="662" name="Face Shear" value="0.460" />
2480 2480
2481 <param id="663" name="Shift_Mouth" value="0.000" /> 2481 <param id="663" name="Shift_Mouth" value="0.000" />
2482 2482
2483 <param id="664" name="Pop_Eye" value="0.310" /> 2483 <param id="664" name="Pop_Eye" value="0.310" />
2484 2484
2485 <param id="665" name="Jaw_Jut" value="0.120" /> 2485 <param id="665" name="Jaw_Jut" value="0.120" />
2486 2486
2487 <param id="675" name="Hand Size" value="0.150" /> 2487 <param id="675" name="Hand Size" value="0.150" />
2488 2488
2489 <param id="676" name="Love_Handles" value="0.530" /> 2489 <param id="676" name="Love_Handles" value="0.530" />
2490 2490
2491 <param id="678" name="Torso Muscles" value="0.850" /> 2491 <param id="678" name="Torso Muscles" value="0.850" />
2492 2492
2493 <param id="682" name="Head Size" value="0.810" /> 2493 <param id="682" name="Head Size" value="0.810" />
2494 2494
2495 <param id="683" name="Neck Thickness" value="0.100" /> 2495 <param id="683" name="Neck Thickness" value="0.100" />
2496 2496
2497 <param id="684" name="Breast_Female_Clevage" value="0.000" /> 2497 <param id="684" name="Breast_Female_Clevage" value="0.000" />
2498 2498
2499 <param id="685" name="Chest_Male_No_Pecs" value="-0.020" /> 2499 <param id="685" name="Chest_Male_No_Pecs" value="-0.020" />
2500 2500
2501 <param id="690" name="Eye Size" value="0.460" /> 2501 <param id="690" name="Eye Size" value="0.460" />
2502 2502
2503 <param id="692" name="Leg Length" value="-0.040" /> 2503 <param id="692" name="Leg Length" value="-0.040" />
2504 2504
2505 <param id="693" name="Arm Length" value="0.500" /> 2505 <param id="693" name="Arm Length" value="0.500" />
2506 2506
2507 <param id="753" name="Saddlebags" value="0.620" /> 2507 <param id="753" name="Saddlebags" value="0.620" />
2508 2508
2509 <param id="756" name="Neck Length" value="-0.160" /> 2509 <param id="756" name="Neck Length" value="-0.160" />
2510 2510
2511 <param id="758" name="Lower_Bridge_Nose" value="0.210" /> 2511 <param id="758" name="Lower_Bridge_Nose" value="0.210" />
2512 2512
2513 <param id="759" name="Low_Septum_Nose" value="0.650" /> 2513 <param id="759" name="Low_Septum_Nose" value="0.650" />
2514 2514
2515 <param id="760" name="Jaw_Angle" value="-0.720" /> 2515 <param id="760" name="Jaw_Angle" value="-0.720" />
2516 2516
2517 <param id="764" name="Lip_Cleft_Deep" value="0.440" /> 2517 <param id="764" name="Lip_Cleft_Deep" value="0.440" />
2518 2518
2519 <param id="765" name="Puffy_Lower_Lids" value="1.100" /> 2519 <param id="765" name="Puffy_Lower_Lids" value="1.100" />
2520 2520
2521 <param id="769" name="Eye Depth" value="0.720" /> 2521 <param id="769" name="Eye Depth" value="0.720" />
2522 2522
2523 <param id="773" name="Head Length" value="0.370" /> 2523 <param id="773" name="Head Length" value="0.370" />
2524 2524
2525<!-- wearable: skin --> 2525<!-- wearable: skin -->
2526 <param id="108" name="Rainbow Color" value="0.000" /> 2526 <param id="108" name="Rainbow Color" value="0.000" />
2527 2527
2528 <param id="110" name="Red Skin" value="0.000" /> 2528 <param id="110" name="Red Skin" value="0.000" />
2529 2529
2530 <param id="111" name="Pigment" value="0.600" /> 2530 <param id="111" name="Pigment" value="0.600" />
2531 2531
2532 <param id="116" name="Rosy Complexion" value="0.000" /> 2532 <param id="116" name="Rosy Complexion" value="0.000" />
2533 2533
2534 <param id="117" name="Lip Pinkness" value="0.560" /> 2534 <param id="117" name="Lip Pinkness" value="0.560" />
2535 2535
2536 <param id="150" name="Body Definition" value="0.000" /> 2536 <param id="150" name="Body Definition" value="0.000" />
2537 2537
2538 <param id="162" name="Facial Definition" value="0.550" /> 2538 <param id="162" name="Facial Definition" value="0.550" />
2539 2539
2540 <param id="163" name="Wrinkles" value="0.520" /> 2540 <param id="163" name="Wrinkles" value="0.520" />
2541 2541
2542 <param id="165" name="Freckles" value="0.250" /> 2542 <param id="165" name="Freckles" value="0.250" />
2543 2543
2544 <param id="700" name="Lipstick Color" value="0.250" /> 2544 <param id="700" name="Lipstick Color" value="0.250" />
2545 2545
2546 <param id="701" name="Lipstick" value="0.000" /> 2546 <param id="701" name="Lipstick" value="0.000" />
2547 2547
2548 <param id="702" name="Lipgloss" value="0.000" /> 2548 <param id="702" name="Lipgloss" value="0.000" />
2549 2549
2550 <param id="703" name="Eyeliner" value="0.000" /> 2550 <param id="703" name="Eyeliner" value="0.000" />
2551 2551
2552 <param id="704" name="Blush" value="0.000" /> 2552 <param id="704" name="Blush" value="0.000" />
2553 2553
2554 <param id="705" name="Blush Color" value="0.500" /> 2554 <param id="705" name="Blush Color" value="0.500" />
2555 2555
2556 <param id="706" name="Out Shdw Opacity" value="0.600" /> 2556 <param id="706" name="Out Shdw Opacity" value="0.600" />
2557 2557
2558 <param id="707" name="Outer Shadow" value="0.000" /> 2558 <param id="707" name="Outer Shadow" value="0.000" />
2559 2559
2560 <param id="708" name="Out Shdw Color" value="0.000" /> 2560 <param id="708" name="Out Shdw Color" value="0.000" />
2561 2561
2562 <param id="709" name="Inner Shadow" value="0.000" /> 2562 <param id="709" name="Inner Shadow" value="0.000" />
2563 2563
2564 <param id="710" name="Nail Polish" value="0.000" /> 2564 <param id="710" name="Nail Polish" value="0.000" />
2565 2565
2566 <param id="711" name="Blush Opacity" value="0.500" /> 2566 <param id="711" name="Blush Opacity" value="0.500" />
2567 2567
2568 <param id="712" name="In Shdw Color" value="0.000" /> 2568 <param id="712" name="In Shdw Color" value="0.000" />
2569 2569
2570 <param id="713" name="In Shdw Opacity" value="0.700" /> 2570 <param id="713" name="In Shdw Opacity" value="0.700" />
2571 2571
2572 <param id="714" name="Eyeliner Color" value="0.000" /> 2572 <param id="714" name="Eyeliner Color" value="0.000" />
2573 2573
2574 <param id="715" name="Nail Polish Color" value="0.000" /> 2574 <param id="715" name="Nail Polish Color" value="0.000" />
2575 2575
2576 <texture te="0" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 2576 <texture te="0" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
2577 2577
2578 <texture te="5" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 2578 <texture te="5" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
2579 2579
2580 <texture te="6" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 2580 <texture te="6" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
2581 2581
2582<!-- wearable: hair --> 2582<!-- wearable: hair -->
2583 <param id="16" name="Pointy_Eyebrows" value="1.000" /> 2583 <param id="16" name="Pointy_Eyebrows" value="1.000" />
2584 2584
2585 <param id="31" name="Arced_Eyebrows" value="0.580" /> 2585 <param id="31" name="Arced_Eyebrows" value="0.580" />
2586 2586
2587 <param id="112" name="Rainbow Color" value="0.000" /> 2587 <param id="112" name="Rainbow Color" value="0.000" />
2588 2588
2589 <param id="113" name="Red Hair" value="0.000" /> 2589 <param id="113" name="Red Hair" value="0.000" />
2590 2590
2591 <param id="114" name="Blonde Hair" value="0.000" /> 2591 <param id="114" name="Blonde Hair" value="0.000" />
2592 2592
2593 <param id="115" name="White Hair" value="0.170" /> 2593 <param id="115" name="White Hair" value="0.170" />
2594 2594
2595 <param id="119" name="Eyebrow Size" value="0.540" /> 2595 <param id="119" name="Eyebrow Size" value="0.540" />
2596 2596
2597 <param id="130" name="Front Fringe" value="0.000" /> 2597 <param id="130" name="Front Fringe" value="0.000" />
2598 2598
2599 <param id="131" name="Side Fringe" value="0.230" /> 2599 <param id="131" name="Side Fringe" value="0.230" />
2600 2600
2601 <param id="132" name="Back Fringe" value="0.110" /> 2601 <param id="132" name="Back Fringe" value="0.110" />
2602 2602
2603 <param id="133" name="Hair Front" value="0.270" /> 2603 <param id="133" name="Hair Front" value="0.270" />
2604 2604
2605 <param id="134" name="Hair Sides" value="0.000" /> 2605 <param id="134" name="Hair Sides" value="0.000" />
2606 2606
2607 <param id="135" name="Hair Back" value="0.530" /> 2607 <param id="135" name="Hair Back" value="0.530" />
2608 2608
2609 <param id="136" name="Hair Sweep" value="0.760" /> 2609 <param id="136" name="Hair Sweep" value="0.760" />
2610 2610
2611 <param id="137" name="Hair Tilt" value="0.620" /> 2611 <param id="137" name="Hair Tilt" value="0.620" />
2612 2612
2613 <param id="140" name="Hair_Part_Middle" value="0.000" /> 2613 <param id="140" name="Hair_Part_Middle" value="0.000" />
2614 2614
2615 <param id="141" name="Hair_Part_Right" value="0.000" /> 2615 <param id="141" name="Hair_Part_Right" value="0.000" />
2616 2616
2617 <param id="142" name="Hair_Part_Left" value="0.000" /> 2617 <param id="142" name="Hair_Part_Left" value="0.000" />
2618 2618
2619 <param id="143" name="Hair_Sides_Full" value="-0.425" /> 2619 <param id="143" name="Hair_Sides_Full" value="-0.425" />
2620 2620
2621 <param id="166" name="Sideburns" value="0.000" /> 2621 <param id="166" name="Sideburns" value="0.000" />
2622 2622
2623 <param id="167" name="Moustache" value="0.000" /> 2623 <param id="167" name="Moustache" value="0.000" />
2624 2624
2625 <param id="168" name="Soulpatch" value="0.000" /> 2625 <param id="168" name="Soulpatch" value="0.000" />
2626 2626
2627 <param id="169" name="Chin Curtains" value="0.000" /> 2627 <param id="169" name="Chin Curtains" value="0.000" />
2628 2628
2629 <param id="177" name="Hair_Rumpled" value="1.000" /> 2629 <param id="177" name="Hair_Rumpled" value="1.000" />
2630 2630
2631 <param id="181" name="Hair_Big_Front" value="0.240" /> 2631 <param id="181" name="Hair_Big_Front" value="0.240" />
2632 2632
2633 <param id="182" name="Hair_Big_Top" value="0.080" /> 2633 <param id="182" name="Hair_Big_Top" value="0.080" />
2634 2634
2635 <param id="183" name="Hair_Big_Back" value="0.020" /> 2635 <param id="183" name="Hair_Big_Back" value="0.020" />
2636 2636
2637 <param id="184" name="Hair_Spiked" value="0.000" /> 2637 <param id="184" name="Hair_Spiked" value="0.000" />
2638 2638
2639 <param id="192" name="Bangs_Part_Middle" value="0.000" /> 2639 <param id="192" name="Bangs_Part_Middle" value="0.000" />
2640 2640
2641 <param id="674" name="Hair_Shear_Back" value="0.350" /> 2641 <param id="674" name="Hair_Shear_Back" value="0.350" />
2642 2642
2643 <param id="750" name="Eyebrow Density" value="0.850" /> 2643 <param id="750" name="Eyebrow Density" value="0.850" />
2644 2644
2645 <param id="752" name="Hair Thickness" value="0.000" /> 2645 <param id="752" name="Hair Thickness" value="0.000" />
2646 2646
2647 <param id="754" name="Hair_Taper_Back" value="-0.340" /> 2647 <param id="754" name="Hair_Taper_Back" value="-0.340" />
2648 2648
2649 <param id="755" name="Hair_Taper_Front" value="-0.330" /> 2649 <param id="755" name="Hair_Taper_Front" value="-0.330" />
2650 2650
2651 <param id="757" name="Lower_Eyebrows" value="2.000" /> 2651 <param id="757" name="Lower_Eyebrows" value="2.000" />
2652 2652
2653 <param id="762" name="Hair_Shear_Front" value="1.260" /> 2653 <param id="762" name="Hair_Shear_Front" value="1.260" />
2654 2654
2655 <param id="763" name="Hair Volume" value="0.770" /> 2655 <param id="763" name="Hair Volume" value="0.770" />
2656 2656
2657 <texture te="4" uuid="7ca39b4c-bd19-4699-aff7-f93fd03d3e7b" /> 2657 <texture te="4" uuid="7ca39b4c-bd19-4699-aff7-f93fd03d3e7b" />
2658 2658
2659<!-- wearable: eyes --> 2659<!-- wearable: eyes -->
2660 <param id="98" name="Eye Lightness" value="0.200" /> 2660 <param id="98" name="Eye Lightness" value="0.200" />
2661 2661
2662 <param id="99" name="Eye Color" value="0.000" /> 2662 <param id="99" name="Eye Color" value="0.000" />
2663 2663
2664 <texture te="3" uuid="6522e74d-1660-4e7f-b601-6f48c1659a77" /> 2664 <texture te="3" uuid="6522e74d-1660-4e7f-b601-6f48c1659a77" />
2665 </archetype> 2665 </archetype>
2666 2666
2667 <archetype name="M A Skinny"> 2667 <archetype name="M A Skinny">
2668<!-- wearable: shape --> 2668<!-- wearable: shape -->
2669 <param id="1" name="Big_Brow" value="1.680" /> 2669 <param id="1" name="Big_Brow" value="1.680" />
2670 2670
2671 <param id="2" name="Nose_Big_Out" value="0.420" /> 2671 <param id="2" name="Nose_Big_Out" value="0.420" />
2672 2672
2673 <param id="4" name="Broad_Nostrils" value="0.340" /> 2673 <param id="4" name="Broad_Nostrils" value="0.340" />
2674 2674
2675 <param id="5" name="Cleft_Chin" value="0.030" /> 2675 <param id="5" name="Cleft_Chin" value="0.030" />
2676 2676
2677 <param id="6" name="Bulbous_Nose_Tip" value="0.120" /> 2677 <param id="6" name="Bulbous_Nose_Tip" value="0.120" />
2678 2678
2679 <param id="7" name="Weak_Chin" value="0.020" /> 2679 <param id="7" name="Weak_Chin" value="0.020" />
2680 2680
2681 <param id="8" name="Double_Chin" value="0.040" /> 2681 <param id="8" name="Double_Chin" value="0.040" />
2682 2682
2683 <param id="10" name="Sunken_Cheeks" value="1.070" /> 2683 <param id="10" name="Sunken_Cheeks" value="1.070" />
2684 2684
2685 <param id="11" name="Noble_Nose_Bridge" value="-0.460" /> 2685 <param id="11" name="Noble_Nose_Bridge" value="-0.460" />
2686 2686
2687 <param id="12" name="Jowls" value="-0.500" /> 2687 <param id="12" name="Jowls" value="-0.500" />
2688 2688
2689 <param id="13" name="Cleft_Chin_Upper" value="0.560" /> 2689 <param id="13" name="Cleft_Chin_Upper" value="0.560" />
2690 2690
2691 <param id="14" name="High_Cheek_Bones" value="1.000" /> 2691 <param id="14" name="High_Cheek_Bones" value="1.000" />
2692 2692
2693 <param id="15" name="Ears_Out" value="0.160" /> 2693 <param id="15" name="Ears_Out" value="0.160" />
2694 2694
2695 <param id="17" name="Square_Jaw" value="0.550" /> 2695 <param id="17" name="Square_Jaw" value="0.550" />
2696 2696
2697 <param id="18" name="Puffy_Upper_Cheeks" value="1.220" /> 2697 <param id="18" name="Puffy_Upper_Cheeks" value="1.220" />
2698 2698
2699 <param id="19" name="Upturned_Nose_Tip" value="0.300" /> 2699 <param id="19" name="Upturned_Nose_Tip" value="0.300" />
2700 2700
2701 <param id="20" name="Bulbous_Nose" value="-0.500" /> 2701 <param id="20" name="Bulbous_Nose" value="-0.500" />
2702 2702
2703 <param id="21" name="Upper_Eyelid_Fold" value="1.080" /> 2703 <param id="21" name="Upper_Eyelid_Fold" value="1.080" />
2704 2704
2705 <param id="22" name="Attached_Earlobes" value="1.000" /> 2705 <param id="22" name="Attached_Earlobes" value="1.000" />
2706 2706
2707 <param id="23" name="Baggy_Eyes" value="0.180" /> 2707 <param id="23" name="Baggy_Eyes" value="0.180" />
2708 2708
2709 <param id="24" name="Wide_Eyes" value="-1.430" /> 2709 <param id="24" name="Wide_Eyes" value="-1.430" />
2710 2710
2711 <param id="25" name="Wide_Lip_Cleft" value="0.530" /> 2711 <param id="25" name="Wide_Lip_Cleft" value="0.530" />
2712 2712
2713 <param id="27" name="Wide_Nose_Bridge" value="-0.930" /> 2713 <param id="27" name="Wide_Nose_Bridge" value="-0.930" />
2714 2714
2715 <param id="33" name="Height" value="-0.150" /> 2715 <param id="33" name="Height" value="-0.150" />
2716 2716
2717 <param id="34" name="Thickness" value="-0.500" /> 2717 <param id="34" name="Thickness" value="-0.500" />
2718 2718
2719 <param id="35" name="Big_Ears" value="-0.040" /> 2719 <param id="35" name="Big_Ears" value="-0.040" />
2720 2720
2721 <param id="36" name="Shoulders" value="-0.940" /> 2721 <param id="36" name="Shoulders" value="-0.940" />
2722 2722
2723 <param id="37" name="Hip Width" value="-1.580" /> 2723 <param id="37" name="Hip Width" value="-1.580" />
2724 2724
2725 <param id="38" name="Torso Length" value="0.020" /> 2725 <param id="38" name="Torso Length" value="0.020" />
2726 2726
2727 <param id="80" name="male" value="1.000" /> 2727 <param id="80" name="male" value="1.000" />
2728 2728
2729 <param id="105" name="Breast Size" value="0.500" /> 2729 <param id="105" name="Breast Size" value="0.500" />
2730 2730
2731 <param id="151" name="Big_Butt_Legs" value="-0.270" /> 2731 <param id="151" name="Big_Butt_Legs" value="-0.270" />
2732 2732
2733 <param id="155" name="Lip Width" value="-0.150" /> 2733 <param id="155" name="Lip Width" value="-0.150" />
2734 2734
2735 <param id="157" name="Belly Size" value="0.030" /> 2735 <param id="157" name="Belly Size" value="0.030" />
2736 2736
2737 <param id="185" name="Deep_Chin" value="0.040" /> 2737 <param id="185" name="Deep_Chin" value="0.040" />
2738 2738
2739 <param id="193" name="Head Shape" value="0.660" /> 2739 <param id="193" name="Head Shape" value="0.660" />
2740 2740
2741 <param id="196" name="Eye Spacing" value="0.010" /> 2741 <param id="196" name="Eye Spacing" value="0.010" />
2742 2742
2743 <param id="505" name="Lip Thickness" value="0.650" /> 2743 <param id="505" name="Lip Thickness" value="0.650" />
2744 2744
2745 <param id="506" name="Mouth_Height" value="1.000" /> 2745 <param id="506" name="Mouth_Height" value="1.000" />
2746 2746
2747 <param id="507" name="Breast_Gravity" value="0.000" /> 2747 <param id="507" name="Breast_Gravity" value="0.000" />
2748 2748
2749 <param id="515" name="Foot_Size" value="0.600" /> 2749 <param id="515" name="Foot_Size" value="0.600" />
2750 2750
2751 <param id="517" name="Wide_Nose" value="0.010" /> 2751 <param id="517" name="Wide_Nose" value="0.010" />
2752 2752
2753 <param id="518" name="Eyelashes_Long" value="0.290" /> 2753 <param id="518" name="Eyelashes_Long" value="0.290" />
2754 2754
2755 <param id="629" name="Forehead Angle" value="0.640" /> 2755 <param id="629" name="Forehead Angle" value="0.640" />
2756 2756
2757 <param id="637" name="Body Fat" value="0.060" /> 2757 <param id="637" name="Body Fat" value="0.060" />
2758 2758
2759 <param id="646" name="Egg_Head" value="-0.010" /> 2759 <param id="646" name="Egg_Head" value="-0.010" />
2760 2760
2761 <param id="647" name="Squash_Stretch_Head" value="0.290" /> 2761 <param id="647" name="Squash_Stretch_Head" value="0.290" />
2762 2762
2763 <param id="649" name="Torso Muscles" value="0.500" /> 2763 <param id="649" name="Torso Muscles" value="0.500" />
2764 2764
2765 <param id="650" name="Eyelid_Corner_Up" value="-0.930" /> 2765 <param id="650" name="Eyelid_Corner_Up" value="-0.930" />
2766 2766
2767 <param id="652" name="Leg Muscles" value="0.450" /> 2767 <param id="652" name="Leg Muscles" value="0.450" />
2768 2768
2769 <param id="653" name="Tall_Lips" value="1.100" /> 2769 <param id="653" name="Tall_Lips" value="1.100" />
2770 2770
2771 <param id="656" name="Crooked_Nose" value="0.040" /> 2771 <param id="656" name="Crooked_Nose" value="0.040" />
2772 2772
2773 <param id="659" name="Mouth Corner" value="0.340" /> 2773 <param id="659" name="Mouth Corner" value="0.340" />
2774 2774
2775 <param id="662" name="Face Shear" value="0.600" /> 2775 <param id="662" name="Face Shear" value="0.600" />
2776 2776
2777 <param id="663" name="Shift_Mouth" value="0.280" /> 2777 <param id="663" name="Shift_Mouth" value="0.280" />
2778 2778
2779 <param id="664" name="Pop_Eye" value="0.100" /> 2779 <param id="664" name="Pop_Eye" value="0.100" />
2780 2780
2781 <param id="665" name="Jaw_Jut" value="0.040" /> 2781 <param id="665" name="Jaw_Jut" value="0.040" />
2782 2782
2783 <param id="675" name="Hand Size" value="-0.020" /> 2783 <param id="675" name="Hand Size" value="-0.020" />
2784 2784
2785 <param id="676" name="Love_Handles" value="-0.010" /> 2785 <param id="676" name="Love_Handles" value="-0.010" />
2786 2786
2787 <param id="678" name="Torso Muscles" value="0.290" /> 2787 <param id="678" name="Torso Muscles" value="0.290" />
2788 2788
2789 <param id="682" name="Head Size" value="0.480" /> 2789 <param id="682" name="Head Size" value="0.480" />
2790 2790
2791 <param id="683" name="Neck Thickness" value="-0.240" /> 2791 <param id="683" name="Neck Thickness" value="-0.240" />
2792 2792
2793 <param id="684" name="Breast_Female_Clevage" value="0.000" /> 2793 <param id="684" name="Breast_Female_Clevage" value="0.000" />
2794 2794
2795 <param id="685" name="Chest_Male_No_Pecs" value="0.090" /> 2795 <param id="685" name="Chest_Male_No_Pecs" value="0.090" />
2796 2796
2797 <param id="690" name="Eye Size" value="0.560" /> 2797 <param id="690" name="Eye Size" value="0.560" />
2798 2798
2799 <param id="692" name="Leg Length" value="0.060" /> 2799 <param id="692" name="Leg Length" value="0.060" />
2800 2800
2801 <param id="693" name="Arm Length" value="0.380" /> 2801 <param id="693" name="Arm Length" value="0.380" />
2802 2802
2803 <param id="753" name="Saddlebags" value="-0.400" /> 2803 <param id="753" name="Saddlebags" value="-0.400" />
2804 2804
2805 <param id="756" name="Neck Length" value="-0.020" /> 2805 <param id="756" name="Neck Length" value="-0.020" />
2806 2806
2807 <param id="758" name="Lower_Bridge_Nose" value="-0.510" /> 2807 <param id="758" name="Lower_Bridge_Nose" value="-0.510" />
2808 2808
2809 <param id="759" name="Low_Septum_Nose" value="0.680" /> 2809 <param id="759" name="Low_Septum_Nose" value="0.680" />
2810 2810
2811 <param id="760" name="Jaw_Angle" value="1.296" /> 2811 <param id="760" name="Jaw_Angle" value="1.296" />
2812 2812
2813 <param id="764" name="Lip_Cleft_Deep" value="0.350" /> 2813 <param id="764" name="Lip_Cleft_Deep" value="0.350" />
2814 2814
2815 <param id="765" name="Puffy_Lower_Lids" value="-0.300" /> 2815 <param id="765" name="Puffy_Lower_Lids" value="-0.300" />
2816 2816
2817 <param id="769" name="Eye Depth" value="0.570" /> 2817 <param id="769" name="Eye Depth" value="0.570" />
2818 2818
2819 <param id="773" name="Head Length" value="0.170" /> 2819 <param id="773" name="Head Length" value="0.170" />
2820 2820
2821<!-- wearable: skin --> 2821<!-- wearable: skin -->
2822 <param id="108" name="Rainbow Color" value="0.000" /> 2822 <param id="108" name="Rainbow Color" value="0.000" />
2823 2823
2824 <param id="110" name="Red Skin" value="0.010" /> 2824 <param id="110" name="Red Skin" value="0.010" />
2825 2825
2826 <param id="111" name="Pigment" value="0.360" /> 2826 <param id="111" name="Pigment" value="0.360" />
2827 2827
2828 <param id="116" name="Rosy Complexion" value="0.000" /> 2828 <param id="116" name="Rosy Complexion" value="0.000" />
2829 2829
2830 <param id="117" name="Lip Pinkness" value="0.260" /> 2830 <param id="117" name="Lip Pinkness" value="0.260" />
2831 2831
2832 <param id="150" name="Body Definition" value="0.310" /> 2832 <param id="150" name="Body Definition" value="0.310" />
2833 2833
2834 <param id="162" name="Facial Definition" value="0.260" /> 2834 <param id="162" name="Facial Definition" value="0.260" />
2835 2835
2836 <param id="163" name="Wrinkles" value="0.030" /> 2836 <param id="163" name="Wrinkles" value="0.030" />
2837 2837
2838 <param id="165" name="Freckles" value="0.000" /> 2838 <param id="165" name="Freckles" value="0.000" />
2839 2839
2840 <param id="700" name="Lipstick Color" value="0.250" /> 2840 <param id="700" name="Lipstick Color" value="0.250" />
2841 2841
2842 <param id="701" name="Lipstick" value="0.000" /> 2842 <param id="701" name="Lipstick" value="0.000" />
2843 2843
2844 <param id="702" name="Lipgloss" value="0.000" /> 2844 <param id="702" name="Lipgloss" value="0.000" />
2845 2845
2846 <param id="703" name="Eyeliner" value="0.000" /> 2846 <param id="703" name="Eyeliner" value="0.000" />
2847 2847
2848 <param id="704" name="Blush" value="0.000" /> 2848 <param id="704" name="Blush" value="0.000" />
2849 2849
2850 <param id="705" name="Blush Color" value="0.500" /> 2850 <param id="705" name="Blush Color" value="0.500" />
2851 2851
2852 <param id="706" name="Out Shdw Opacity" value="0.600" /> 2852 <param id="706" name="Out Shdw Opacity" value="0.600" />
2853 2853
2854 <param id="707" name="Outer Shadow" value="0.000" /> 2854 <param id="707" name="Outer Shadow" value="0.000" />
2855 2855
2856 <param id="708" name="Out Shdw Color" value="0.000" /> 2856 <param id="708" name="Out Shdw Color" value="0.000" />
2857 2857
2858 <param id="709" name="Inner Shadow" value="0.000" /> 2858 <param id="709" name="Inner Shadow" value="0.000" />
2859 2859
2860 <param id="710" name="Nail Polish" value="0.000" /> 2860 <param id="710" name="Nail Polish" value="0.000" />
2861 2861
2862 <param id="711" name="Blush Opacity" value="0.500" /> 2862 <param id="711" name="Blush Opacity" value="0.500" />
2863 2863
2864 <param id="712" name="In Shdw Color" value="0.000" /> 2864 <param id="712" name="In Shdw Color" value="0.000" />
2865 2865
2866 <param id="713" name="In Shdw Opacity" value="0.700" /> 2866 <param id="713" name="In Shdw Opacity" value="0.700" />
2867 2867
2868 <param id="714" name="Eyeliner Color" value="0.000" /> 2868 <param id="714" name="Eyeliner Color" value="0.000" />
2869 2869
2870 <param id="715" name="Nail Polish Color" value="0.000" /> 2870 <param id="715" name="Nail Polish Color" value="0.000" />
2871 2871
2872 <texture te="0" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 2872 <texture te="0" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
2873 2873
2874 <texture te="5" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 2874 <texture te="5" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
2875 2875
2876 <texture te="6" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 2876 <texture te="6" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
2877 2877
2878<!-- wearable: hair --> 2878<!-- wearable: hair -->
2879 <param id="16" name="Pointy_Eyebrows" value="0.805" /> 2879 <param id="16" name="Pointy_Eyebrows" value="0.805" />
2880 2880
2881 <param id="31" name="Arced_Eyebrows" value="1.000" /> 2881 <param id="31" name="Arced_Eyebrows" value="1.000" />
2882 2882
2883 <param id="112" name="Rainbow Color" value="0.000" /> 2883 <param id="112" name="Rainbow Color" value="0.000" />
2884 2884
2885 <param id="113" name="Red Hair" value="0.000" /> 2885 <param id="113" name="Red Hair" value="0.000" />
2886 2886
2887 <param id="114" name="Blonde Hair" value="0.000" /> 2887 <param id="114" name="Blonde Hair" value="0.000" />
2888 2888
2889 <param id="115" name="White Hair" value="0.000" /> 2889 <param id="115" name="White Hair" value="0.000" />
2890 2890
2891 <param id="119" name="Eyebrow Size" value="0.270" /> 2891 <param id="119" name="Eyebrow Size" value="0.270" />
2892 2892
2893 <param id="130" name="Front Fringe" value="0.870" /> 2893 <param id="130" name="Front Fringe" value="0.870" />
2894 2894
2895 <param id="131" name="Side Fringe" value="0.590" /> 2895 <param id="131" name="Side Fringe" value="0.590" />
2896 2896
2897 <param id="132" name="Back Fringe" value="0.550" /> 2897 <param id="132" name="Back Fringe" value="0.550" />
2898 2898
2899 <param id="133" name="Hair Front" value="0.220" /> 2899 <param id="133" name="Hair Front" value="0.220" />
2900 2900
2901 <param id="134" name="Hair Sides" value="0.350" /> 2901 <param id="134" name="Hair Sides" value="0.350" />
2902 2902
2903 <param id="135" name="Hair Back" value="0.470" /> 2903 <param id="135" name="Hair Back" value="0.470" />
2904 2904
2905 <param id="136" name="Hair Sweep" value="0.580" /> 2905 <param id="136" name="Hair Sweep" value="0.580" />
2906 2906
2907 <param id="137" name="Hair Tilt" value="0.500" /> 2907 <param id="137" name="Hair Tilt" value="0.500" />
2908 2908
2909 <param id="140" name="Hair_Part_Middle" value="1.380" /> 2909 <param id="140" name="Hair_Part_Middle" value="1.380" />
2910 2910
2911 <param id="141" name="Hair_Part_Right" value="0.000" /> 2911 <param id="141" name="Hair_Part_Right" value="0.000" />
2912 2912
2913 <param id="142" name="Hair_Part_Left" value="0.000" /> 2913 <param id="142" name="Hair_Part_Left" value="0.000" />
2914 2914
2915 <param id="143" name="Hair_Sides_Full" value="0.235" /> 2915 <param id="143" name="Hair_Sides_Full" value="0.235" />
2916 2916
2917 <param id="166" name="Sideburns" value="0.000" /> 2917 <param id="166" name="Sideburns" value="0.000" />
2918 2918
2919 <param id="167" name="Moustache" value="0.000" /> 2919 <param id="167" name="Moustache" value="0.000" />
2920 2920
2921 <param id="168" name="Soulpatch" value="0.000" /> 2921 <param id="168" name="Soulpatch" value="0.000" />
2922 2922
2923 <param id="169" name="Chin Curtains" value="0.000" /> 2923 <param id="169" name="Chin Curtains" value="0.000" />
2924 2924
2925 <param id="177" name="Hair_Rumpled" value="0.000" /> 2925 <param id="177" name="Hair_Rumpled" value="0.000" />
2926 2926
2927 <param id="181" name="Hair_Big_Front" value="0.120" /> 2927 <param id="181" name="Hair_Big_Front" value="0.120" />
2928 2928
2929 <param id="182" name="Hair_Big_Top" value="-0.160" /> 2929 <param id="182" name="Hair_Big_Top" value="-0.160" />
2930 2930
2931 <param id="183" name="Hair_Big_Back" value="0.480" /> 2931 <param id="183" name="Hair_Big_Back" value="0.480" />
2932 2932
2933 <param id="184" name="Hair_Spiked" value="0.000" /> 2933 <param id="184" name="Hair_Spiked" value="0.000" />
2934 2934
2935 <param id="192" name="Bangs_Part_Middle" value="0.620" /> 2935 <param id="192" name="Bangs_Part_Middle" value="0.620" />
2936 2936
2937 <param id="674" name="Hair_Shear_Back" value="0.590" /> 2937 <param id="674" name="Hair_Shear_Back" value="0.590" />
2938 2938
2939 <param id="750" name="Eyebrow Density" value="0.840" /> 2939 <param id="750" name="Eyebrow Density" value="0.840" />
2940 2940
2941 <param id="752" name="Hair Thickness" value="0.250" /> 2941 <param id="752" name="Hair Thickness" value="0.250" />
2942 2942
2943 <param id="754" name="Hair_Taper_Back" value="-0.190" /> 2943 <param id="754" name="Hair_Taper_Back" value="-0.190" />
2944 2944
2945 <param id="755" name="Hair_Taper_Front" value="0.210" /> 2945 <param id="755" name="Hair_Taper_Front" value="0.210" />
2946 2946
2947 <param id="757" name="Lower_Eyebrows" value="2.000" /> 2947 <param id="757" name="Lower_Eyebrows" value="2.000" />
2948 2948
2949 <param id="762" name="Hair_Shear_Front" value="0.150" /> 2949 <param id="762" name="Hair_Shear_Front" value="0.150" />
2950 2950
2951 <param id="763" name="Hair Volume" value="0.610" /> 2951 <param id="763" name="Hair Volume" value="0.610" />
2952 2952
2953 <texture te="4" uuid="7ca39b4c-bd19-4699-aff7-f93fd03d3e7b" /> 2953 <texture te="4" uuid="7ca39b4c-bd19-4699-aff7-f93fd03d3e7b" />
2954 2954
2955<!-- wearable: eyes --> 2955<!-- wearable: eyes -->
2956 <param id="98" name="Eye Lightness" value="0.370" /> 2956 <param id="98" name="Eye Lightness" value="0.370" />
2957 2957
2958 <param id="99" name="Eye Color" value="0.000" /> 2958 <param id="99" name="Eye Color" value="0.000" />
2959 2959
2960 <texture te="3" uuid="6522e74d-1660-4e7f-b601-6f48c1659a77" /> 2960 <texture te="3" uuid="6522e74d-1660-4e7f-b601-6f48c1659a77" />
2961 </archetype> 2961 </archetype>
2962 2962
2963 <archetype name="M A Muscle"> 2963 <archetype name="M A Muscle">
2964<!-- wearable: shape --> 2964<!-- wearable: shape -->
2965 <param id="1" name="Big_Brow" value="-0.020" /> 2965 <param id="1" name="Big_Brow" value="-0.020" />
2966 2966
2967 <param id="2" name="Nose_Big_Out" value="-0.310" /> 2967 <param id="2" name="Nose_Big_Out" value="-0.310" />
2968 2968
2969 <param id="4" name="Broad_Nostrils" value="0.470" /> 2969 <param id="4" name="Broad_Nostrils" value="0.470" />
2970 2970
2971 <param id="5" name="Cleft_Chin" value="-0.100" /> 2971 <param id="5" name="Cleft_Chin" value="-0.100" />
2972 2972
2973 <param id="6" name="Bulbous_Nose_Tip" value="0.400" /> 2973 <param id="6" name="Bulbous_Nose_Tip" value="0.400" />
2974 2974
2975 <param id="7" name="Weak_Chin" value="0.160" /> 2975 <param id="7" name="Weak_Chin" value="0.160" />
2976 2976
2977 <param id="8" name="Double_Chin" value="-0.080" /> 2977 <param id="8" name="Double_Chin" value="-0.080" />
2978 2978
2979 <param id="10" name="Sunken_Cheeks" value="1.250" /> 2979 <param id="10" name="Sunken_Cheeks" value="1.250" />
2980 2980
2981 <param id="11" name="Noble_Nose_Bridge" value="-0.320" /> 2981 <param id="11" name="Noble_Nose_Bridge" value="-0.320" />
2982 2982
2983 <param id="12" name="Jowls" value="0.010" /> 2983 <param id="12" name="Jowls" value="0.010" />
2984 2984
2985 <param id="13" name="Cleft_Chin_Upper" value="0.000" /> 2985 <param id="13" name="Cleft_Chin_Upper" value="0.000" />
2986 2986
2987 <param id="14" name="High_Cheek_Bones" value="0.650" /> 2987 <param id="14" name="High_Cheek_Bones" value="0.650" />
2988 2988
2989 <param id="15" name="Ears_Out" value="-0.080" /> 2989 <param id="15" name="Ears_Out" value="-0.080" />
2990 2990
2991 <param id="17" name="Square_Jaw" value="0.540" /> 2991 <param id="17" name="Square_Jaw" value="0.540" />
2992 2992
2993 <param id="18" name="Puffy_Upper_Cheeks" value="1.620" /> 2993 <param id="18" name="Puffy_Upper_Cheeks" value="1.620" />
2994 2994
2995 <param id="19" name="Upturned_Nose_Tip" value="-0.080" /> 2995 <param id="19" name="Upturned_Nose_Tip" value="-0.080" />
2996 2996
2997 <param id="20" name="Bulbous_Nose" value="-0.460" /> 2997 <param id="20" name="Bulbous_Nose" value="-0.460" />
2998 2998
2999 <param id="21" name="Upper_Eyelid_Fold" value="1.300" /> 2999 <param id="21" name="Upper_Eyelid_Fold" value="1.300" />
3000 3000
3001 <param id="22" name="Attached_Earlobes" value="1.000" /> 3001 <param id="22" name="Attached_Earlobes" value="1.000" />
3002 3002
3003 <param id="23" name="Baggy_Eyes" value="0.540" /> 3003 <param id="23" name="Baggy_Eyes" value="0.540" />
3004 3004
3005 <param id="24" name="Wide_Eyes" value="-0.900" /> 3005 <param id="24" name="Wide_Eyes" value="-0.900" />
3006 3006
3007 <param id="25" name="Wide_Lip_Cleft" value="1.020" /> 3007 <param id="25" name="Wide_Lip_Cleft" value="1.020" />
3008 3008
3009 <param id="27" name="Wide_Nose_Bridge" value="-0.170" /> 3009 <param id="27" name="Wide_Nose_Bridge" value="-0.170" />
3010 3010
3011 <param id="33" name="Height" value="0.580" /> 3011 <param id="33" name="Height" value="0.580" />
3012 3012
3013 <param id="34" name="Thickness" value="0.250" /> 3013 <param id="34" name="Thickness" value="0.250" />
3014 3014
3015 <param id="35" name="Big_Ears" value="-0.040" /> 3015 <param id="35" name="Big_Ears" value="-0.040" />
3016 3016
3017 <param id="36" name="Shoulders" value="-0.650" /> 3017 <param id="36" name="Shoulders" value="-0.650" />
3018 3018
3019 <param id="37" name="Hip Width" value="-0.800" /> 3019 <param id="37" name="Hip Width" value="-0.800" />
3020 3020
3021 <param id="38" name="Torso Length" value="0.800" /> 3021 <param id="38" name="Torso Length" value="0.800" />
3022 3022
3023 <param id="80" name="male" value="1.000" /> 3023 <param id="80" name="male" value="1.000" />
3024 3024
3025 <param id="105" name="Breast Size" value="0.500" /> 3025 <param id="105" name="Breast Size" value="0.500" />
3026 3026
3027 <param id="151" name="Big_Butt_Legs" value="-0.290" /> 3027 <param id="151" name="Big_Butt_Legs" value="-0.290" />
3028 3028
3029 <param id="155" name="Lip Width" value="-0.500" /> 3029 <param id="155" name="Lip Width" value="-0.500" />
3030 3030
3031 <param id="157" name="Belly Size" value="0.070" /> 3031 <param id="157" name="Belly Size" value="0.070" />
3032 3032
3033 <param id="185" name="Deep_Chin" value="0.180" /> 3033 <param id="185" name="Deep_Chin" value="0.180" />
3034 3034
3035 <param id="193" name="Head Shape" value="0.830" /> 3035 <param id="193" name="Head Shape" value="0.830" />
3036 3036
3037 <param id="196" name="Eye Spacing" value="0.070" /> 3037 <param id="196" name="Eye Spacing" value="0.070" />
3038 3038
3039 <param id="505" name="Lip Thickness" value="0.720" /> 3039 <param id="505" name="Lip Thickness" value="0.720" />
3040 3040
3041 <param id="506" name="Mouth_Height" value="0.880" /> 3041 <param id="506" name="Mouth_Height" value="0.880" />
3042 3042
3043 <param id="507" name="Breast_Gravity" value="0.000" /> 3043 <param id="507" name="Breast_Gravity" value="0.000" />
3044 3044
3045 <param id="515" name="Foot_Size" value="1.160" /> 3045 <param id="515" name="Foot_Size" value="1.160" />
3046 3046
3047 <param id="517" name="Wide_Nose" value="0.250" /> 3047 <param id="517" name="Wide_Nose" value="0.250" />
3048 3048
3049 <param id="518" name="Eyelashes_Long" value="0.020" /> 3049 <param id="518" name="Eyelashes_Long" value="0.020" />
3050 3050
3051 <param id="629" name="Forehead Angle" value="1.000" /> 3051 <param id="629" name="Forehead Angle" value="1.000" />
3052 3052
3053 <param id="637" name="Body Fat" value="0.140" /> 3053 <param id="637" name="Body Fat" value="0.140" />
3054 3054
3055 <param id="646" name="Egg_Head" value="-0.200" /> 3055 <param id="646" name="Egg_Head" value="-0.200" />
3056 3056
3057 <param id="647" name="Squash_Stretch_Head" value="0.310" /> 3057 <param id="647" name="Squash_Stretch_Head" value="0.310" />
3058 3058
3059 <param id="649" name="Torso Muscles" value="0.500" /> 3059 <param id="649" name="Torso Muscles" value="0.500" />
3060 3060
3061 <param id="650" name="Eyelid_Corner_Up" value="0.570" /> 3061 <param id="650" name="Eyelid_Corner_Up" value="0.570" />
3062 3062
3063 <param id="652" name="Leg Muscles" value="0.680" /> 3063 <param id="652" name="Leg Muscles" value="0.680" />
3064 3064
3065 <param id="653" name="Tall_Lips" value="1.280" /> 3065 <param id="653" name="Tall_Lips" value="1.280" />
3066 3066
3067 <param id="656" name="Crooked_Nose" value="-0.200" /> 3067 <param id="656" name="Crooked_Nose" value="-0.200" />
3068 3068
3069 <param id="659" name="Mouth Corner" value="0.330" /> 3069 <param id="659" name="Mouth Corner" value="0.330" />
3070 3070
3071 <param id="662" name="Face Shear" value="0.520" /> 3071 <param id="662" name="Face Shear" value="0.520" />
3072 3072
3073 <param id="663" name="Shift_Mouth" value="0.200" /> 3073 <param id="663" name="Shift_Mouth" value="0.200" />
3074 3074
3075 <param id="664" name="Pop_Eye" value="-0.080" /> 3075 <param id="664" name="Pop_Eye" value="-0.080" />
3076 3076
3077 <param id="665" name="Jaw_Jut" value="-0.160" /> 3077 <param id="665" name="Jaw_Jut" value="-0.160" />
3078 3078
3079 <param id="675" name="Hand Size" value="-0.070" /> 3079 <param id="675" name="Hand Size" value="-0.070" />
3080 3080
3081 <param id="676" name="Love_Handles" value="-0.250" /> 3081 <param id="676" name="Love_Handles" value="-0.250" />
3082 3082
3083 <param id="678" name="Torso Muscles" value="0.540" /> 3083 <param id="678" name="Torso Muscles" value="0.540" />
3084 3084
3085 <param id="682" name="Head Size" value="0.730" /> 3085 <param id="682" name="Head Size" value="0.730" />
3086 3086
3087 <param id="683" name="Neck Thickness" value="-0.030" /> 3087 <param id="683" name="Neck Thickness" value="-0.030" />
3088 3088
3089 <param id="684" name="Breast_Female_Clevage" value="0.000" /> 3089 <param id="684" name="Breast_Female_Clevage" value="0.000" />
3090 3090
3091 <param id="685" name="Chest_Male_No_Pecs" value="-0.180" /> 3091 <param id="685" name="Chest_Male_No_Pecs" value="-0.180" />
3092 3092
3093 <param id="690" name="Eye Size" value="0.620" /> 3093 <param id="690" name="Eye Size" value="0.620" />
3094 3094
3095 <param id="692" name="Leg Length" value="0.400" /> 3095 <param id="692" name="Leg Length" value="0.400" />
3096 3096
3097 <param id="693" name="Arm Length" value="0.780" /> 3097 <param id="693" name="Arm Length" value="0.780" />
3098 3098
3099 <param id="753" name="Saddlebags" value="0.090" /> 3099 <param id="753" name="Saddlebags" value="0.090" />
3100 3100
3101 <param id="756" name="Neck Length" value="0.140" /> 3101 <param id="756" name="Neck Length" value="0.140" />
3102 3102
3103 <param id="758" name="Lower_Bridge_Nose" value="-0.300" /> 3103 <param id="758" name="Lower_Bridge_Nose" value="-0.300" />
3104 3104
3105 <param id="759" name="Low_Septum_Nose" value="0.320" /> 3105 <param id="759" name="Low_Septum_Nose" value="0.320" />
3106 3106
3107 <param id="760" name="Jaw_Angle" value="0.750" /> 3107 <param id="760" name="Jaw_Angle" value="0.750" />
3108 3108
3109 <param id="764" name="Lip_Cleft_Deep" value="-0.380" /> 3109 <param id="764" name="Lip_Cleft_Deep" value="-0.380" />
3110 3110
3111 <param id="765" name="Puffy_Lower_Lids" value="0.790" /> 3111 <param id="765" name="Puffy_Lower_Lids" value="0.790" />
3112 3112
3113 <param id="769" name="Eye Depth" value="0.650" /> 3113 <param id="769" name="Eye Depth" value="0.650" />
3114 3114
3115 <param id="773" name="Head Length" value="0.240" /> 3115 <param id="773" name="Head Length" value="0.240" />
3116 3116
3117<!-- wearable: skin --> 3117<!-- wearable: skin -->
3118 <param id="108" name="Rainbow Color" value="0.000" /> 3118 <param id="108" name="Rainbow Color" value="0.000" />
3119 3119
3120 <param id="110" name="Red Skin" value="0.000" /> 3120 <param id="110" name="Red Skin" value="0.000" />
3121 3121
3122 <param id="111" name="Pigment" value="0.220" /> 3122 <param id="111" name="Pigment" value="0.220" />
3123 3123
3124 <param id="116" name="Rosy Complexion" value="0.020" /> 3124 <param id="116" name="Rosy Complexion" value="0.020" />
3125 3125
3126 <param id="117" name="Lip Pinkness" value="0.000" /> 3126 <param id="117" name="Lip Pinkness" value="0.000" />
3127 3127
3128 <param id="150" name="Body Definition" value="0.820" /> 3128 <param id="150" name="Body Definition" value="0.820" />
3129 3129
3130 <param id="162" name="Facial Definition" value="0.600" /> 3130 <param id="162" name="Facial Definition" value="0.600" />
3131 3131
3132 <param id="163" name="Wrinkles" value="0.040" /> 3132 <param id="163" name="Wrinkles" value="0.040" />
3133 3133
3134 <param id="165" name="Freckles" value="0.000" /> 3134 <param id="165" name="Freckles" value="0.000" />
3135 3135
3136 <param id="700" name="Lipstick Color" value="0.250" /> 3136 <param id="700" name="Lipstick Color" value="0.250" />
3137 3137
3138 <param id="701" name="Lipstick" value="0.000" /> 3138 <param id="701" name="Lipstick" value="0.000" />
3139 3139
3140 <param id="702" name="Lipgloss" value="0.000" /> 3140 <param id="702" name="Lipgloss" value="0.000" />
3141 3141
3142 <param id="703" name="Eyeliner" value="0.000" /> 3142 <param id="703" name="Eyeliner" value="0.000" />
3143 3143
3144 <param id="704" name="Blush" value="0.000" /> 3144 <param id="704" name="Blush" value="0.000" />
3145 3145
3146 <param id="705" name="Blush Color" value="0.500" /> 3146 <param id="705" name="Blush Color" value="0.500" />
3147 3147
3148 <param id="706" name="Out Shdw Opacity" value="0.600" /> 3148 <param id="706" name="Out Shdw Opacity" value="0.600" />
3149 3149
3150 <param id="707" name="Outer Shadow" value="0.000" /> 3150 <param id="707" name="Outer Shadow" value="0.000" />
3151 3151
3152 <param id="708" name="Out Shdw Color" value="0.000" /> 3152 <param id="708" name="Out Shdw Color" value="0.000" />
3153 3153
3154 <param id="709" name="Inner Shadow" value="0.000" /> 3154 <param id="709" name="Inner Shadow" value="0.000" />
3155 3155
3156 <param id="710" name="Nail Polish" value="0.000" /> 3156 <param id="710" name="Nail Polish" value="0.000" />
3157 3157
3158 <param id="711" name="Blush Opacity" value="0.500" /> 3158 <param id="711" name="Blush Opacity" value="0.500" />
3159 3159
3160 <param id="712" name="In Shdw Color" value="0.000" /> 3160 <param id="712" name="In Shdw Color" value="0.000" />
3161 3161
3162 <param id="713" name="In Shdw Opacity" value="0.700" /> 3162 <param id="713" name="In Shdw Opacity" value="0.700" />
3163 3163
3164 <param id="714" name="Eyeliner Color" value="0.000" /> 3164 <param id="714" name="Eyeliner Color" value="0.000" />
3165 3165
3166 <param id="715" name="Nail Polish Color" value="0.000" /> 3166 <param id="715" name="Nail Polish Color" value="0.000" />
3167 3167
3168 <texture te="0" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 3168 <texture te="0" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
3169 3169
3170 <texture te="5" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 3170 <texture te="5" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
3171 3171
3172 <texture te="6" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 3172 <texture te="6" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
3173 3173
3174<!-- wearable: hair --> 3174<!-- wearable: hair -->
3175 <param id="16" name="Pointy_Eyebrows" value="0.580" /> 3175 <param id="16" name="Pointy_Eyebrows" value="0.580" />
3176 3176
3177 <param id="31" name="Arced_Eyebrows" value="0.650" /> 3177 <param id="31" name="Arced_Eyebrows" value="0.650" />
3178 3178
3179 <param id="112" name="Rainbow Color" value="0.000" /> 3179 <param id="112" name="Rainbow Color" value="0.000" />
3180 3180
3181 <param id="113" name="Red Hair" value="0.010" /> 3181 <param id="113" name="Red Hair" value="0.010" />
3182 3182
3183 <param id="114" name="Blonde Hair" value="0.000" /> 3183 <param id="114" name="Blonde Hair" value="0.000" />
3184 3184
3185 <param id="115" name="White Hair" value="0.000" /> 3185 <param id="115" name="White Hair" value="0.000" />
3186 3186
3187 <param id="119" name="Eyebrow Size" value="0.400" /> 3187 <param id="119" name="Eyebrow Size" value="0.400" />
3188 3188
3189 <param id="130" name="Front Fringe" value="0.350" /> 3189 <param id="130" name="Front Fringe" value="0.350" />
3190 3190
3191 <param id="131" name="Side Fringe" value="0.520" /> 3191 <param id="131" name="Side Fringe" value="0.520" />
3192 3192
3193 <param id="132" name="Back Fringe" value="0.470" /> 3193 <param id="132" name="Back Fringe" value="0.470" />
3194 3194
3195 <param id="133" name="Hair Front" value="0.000" /> 3195 <param id="133" name="Hair Front" value="0.000" />
3196 3196
3197 <param id="134" name="Hair Sides" value="0.580" /> 3197 <param id="134" name="Hair Sides" value="0.580" />
3198 3198
3199 <param id="135" name="Hair Back" value="0.540" /> 3199 <param id="135" name="Hair Back" value="0.540" />
3200 3200
3201 <param id="136" name="Hair Sweep" value="0.880" /> 3201 <param id="136" name="Hair Sweep" value="0.880" />
3202 3202
3203 <param id="137" name="Hair Tilt" value="0.470" /> 3203 <param id="137" name="Hair Tilt" value="0.470" />
3204 3204
3205 <param id="140" name="Hair_Part_Middle" value="0.000" /> 3205 <param id="140" name="Hair_Part_Middle" value="0.000" />
3206 3206
3207 <param id="141" name="Hair_Part_Right" value="1.520" /> 3207 <param id="141" name="Hair_Part_Right" value="1.520" />
3208 3208
3209 <param id="142" name="Hair_Part_Left" value="0.000" /> 3209 <param id="142" name="Hair_Part_Left" value="0.000" />
3210 3210
3211 <param id="143" name="Hair_Sides_Full" value="0.345" /> 3211 <param id="143" name="Hair_Sides_Full" value="0.345" />
3212 3212
3213 <param id="166" name="Sideburns" value="0.000" /> 3213 <param id="166" name="Sideburns" value="0.000" />
3214 3214
3215 <param id="167" name="Moustache" value="0.120" /> 3215 <param id="167" name="Moustache" value="0.120" />
3216 3216
3217 <param id="168" name="Soulpatch" value="0.270" /> 3217 <param id="168" name="Soulpatch" value="0.270" />
3218 3218
3219 <param id="169" name="Chin Curtains" value="0.090" /> 3219 <param id="169" name="Chin Curtains" value="0.090" />
3220 3220
3221 <param id="177" name="Hair_Rumpled" value="0.180" /> 3221 <param id="177" name="Hair_Rumpled" value="0.180" />
3222 3222
3223 <param id="181" name="Hair_Big_Front" value="0.520" /> 3223 <param id="181" name="Hair_Big_Front" value="0.520" />
3224 3224
3225 <param id="182" name="Hair_Big_Top" value="0.200" /> 3225 <param id="182" name="Hair_Big_Top" value="0.200" />
3226 3226
3227 <param id="183" name="Hair_Big_Back" value="0.060" /> 3227 <param id="183" name="Hair_Big_Back" value="0.060" />
3228 3228
3229 <param id="184" name="Hair_Spiked" value="0.000" /> 3229 <param id="184" name="Hair_Spiked" value="0.000" />
3230 3230
3231 <param id="192" name="Bangs_Part_Middle" value="0.000" /> 3231 <param id="192" name="Bangs_Part_Middle" value="0.000" />
3232 3232
3233 <param id="674" name="Hair_Shear_Back" value="0.110" /> 3233 <param id="674" name="Hair_Shear_Back" value="0.110" />
3234 3234
3235 <param id="750" name="Eyebrow Density" value="1.000" /> 3235 <param id="750" name="Eyebrow Density" value="1.000" />
3236 3236
3237 <param id="752" name="Hair Thickness" value="0.470" /> 3237 <param id="752" name="Hair Thickness" value="0.470" />
3238 3238
3239 <param id="754" name="Hair_Taper_Back" value="0.200" /> 3239 <param id="754" name="Hair_Taper_Back" value="0.200" />
3240 3240
3241 <param id="755" name="Hair_Taper_Front" value="-0.240" /> 3241 <param id="755" name="Hair_Taper_Front" value="-0.240" />
3242 3242
3243 <param id="757" name="Lower_Eyebrows" value="-0.760" /> 3243 <param id="757" name="Lower_Eyebrows" value="-0.760" />
3244 3244
3245 <param id="762" name="Hair_Shear_Front" value="0.810" /> 3245 <param id="762" name="Hair_Shear_Front" value="0.810" />
3246 3246
3247 <param id="763" name="Hair Volume" value="0.520" /> 3247 <param id="763" name="Hair Volume" value="0.520" />
3248 3248
3249 <texture te="4" uuid="7ca39b4c-bd19-4699-aff7-f93fd03d3e7b" /> 3249 <texture te="4" uuid="7ca39b4c-bd19-4699-aff7-f93fd03d3e7b" />
3250 3250
3251<!-- wearable: eyes --> 3251<!-- wearable: eyes -->
3252 <param id="98" name="Eye Lightness" value="0.000" /> 3252 <param id="98" name="Eye Lightness" value="0.000" />
3253 3253
3254 <param id="99" name="Eye Color" value="0.000" /> 3254 <param id="99" name="Eye Color" value="0.000" />
3255 3255
3256 <texture te="3" uuid="6522e74d-1660-4e7f-b601-6f48c1659a77" /> 3256 <texture te="3" uuid="6522e74d-1660-4e7f-b601-6f48c1659a77" />
3257 </archetype> 3257 </archetype>
3258 3258
3259 <archetype name="M A Chubby"> 3259 <archetype name="M A Chubby">
3260<!-- wearable: shape --> 3260<!-- wearable: shape -->
3261 <param id="1" name="Big_Brow" value="1.130" /> 3261 <param id="1" name="Big_Brow" value="1.130" />
3262 3262
3263 <param id="2" name="Nose_Big_Out" value="0.590" /> 3263 <param id="2" name="Nose_Big_Out" value="0.590" />
3264 3264
3265 <param id="4" name="Broad_Nostrils" value="-0.060" /> 3265 <param id="4" name="Broad_Nostrils" value="-0.060" />
3266 3266
3267 <param id="5" name="Cleft_Chin" value="-0.100" /> 3267 <param id="5" name="Cleft_Chin" value="-0.100" />
3268 3268
3269 <param id="6" name="Bulbous_Nose_Tip" value="-0.300" /> 3269 <param id="6" name="Bulbous_Nose_Tip" value="-0.300" />
3270 3270
3271 <param id="7" name="Weak_Chin" value="-0.260" /> 3271 <param id="7" name="Weak_Chin" value="-0.260" />
3272 3272
3273 <param id="8" name="Double_Chin" value="0.620" /> 3273 <param id="8" name="Double_Chin" value="0.620" />
3274 3274
3275 <param id="10" name="Sunken_Cheeks" value="-0.780" /> 3275 <param id="10" name="Sunken_Cheeks" value="-0.780" />
3276 3276
3277 <param id="11" name="Noble_Nose_Bridge" value="-0.500" /> 3277 <param id="11" name="Noble_Nose_Bridge" value="-0.500" />
3278 3278
3279 <param id="12" name="Jowls" value="-0.080" /> 3279 <param id="12" name="Jowls" value="-0.080" />
3280 3280
3281 <param id="13" name="Cleft_Chin_Upper" value="0.440" /> 3281 <param id="13" name="Cleft_Chin_Upper" value="0.440" />
3282 3282
3283 <param id="14" name="High_Cheek_Bones" value="0.580" /> 3283 <param id="14" name="High_Cheek_Bones" value="0.580" />
3284 3284
3285 <param id="15" name="Ears_Out" value="-0.500" /> 3285 <param id="15" name="Ears_Out" value="-0.500" />
3286 3286
3287 <param id="17" name="Square_Jaw" value="-0.500" /> 3287 <param id="17" name="Square_Jaw" value="-0.500" />
3288 3288
3289 <param id="18" name="Puffy_Upper_Cheeks" value="2.380" /> 3289 <param id="18" name="Puffy_Upper_Cheeks" value="2.380" />
3290 3290
3291 <param id="19" name="Upturned_Nose_Tip" value="0.000" /> 3291 <param id="19" name="Upturned_Nose_Tip" value="0.000" />
3292 3292
3293 <param id="20" name="Bulbous_Nose" value="-0.020" /> 3293 <param id="20" name="Bulbous_Nose" value="-0.020" />
3294 3294
3295 <param id="21" name="Upper_Eyelid_Fold" value="0.850" /> 3295 <param id="21" name="Upper_Eyelid_Fold" value="0.850" />
3296 3296
3297 <param id="22" name="Attached_Earlobes" value="1.000" /> 3297 <param id="22" name="Attached_Earlobes" value="1.000" />
3298 3298
3299 <param id="23" name="Baggy_Eyes" value="0.180" /> 3299 <param id="23" name="Baggy_Eyes" value="0.180" />
3300 3300
3301 <param id="24" name="Wide_Eyes" value="-0.800" /> 3301 <param id="24" name="Wide_Eyes" value="-0.800" />
3302 3302
3303 <param id="25" name="Wide_Lip_Cleft" value="0.260" /> 3303 <param id="25" name="Wide_Lip_Cleft" value="0.260" />
3304 3304
3305 <param id="27" name="Wide_Nose_Bridge" value="-0.350" /> 3305 <param id="27" name="Wide_Nose_Bridge" value="-0.350" />
3306 3306
3307 <param id="33" name="Height" value="0.110" /> 3307 <param id="33" name="Height" value="0.110" />
3308 3308
3309 <param id="34" name="Thickness" value="1.320" /> 3309 <param id="34" name="Thickness" value="1.320" />
3310 3310
3311 <param id="35" name="Big_Ears" value="-0.040" /> 3311 <param id="35" name="Big_Ears" value="-0.040" />
3312 3312
3313 <param id="36" name="Shoulders" value="-0.710" /> 3313 <param id="36" name="Shoulders" value="-0.710" />
3314 3314
3315 <param id="37" name="Hip Width" value="-0.560" /> 3315 <param id="37" name="Hip Width" value="-0.560" />
3316 3316
3317 <param id="38" name="Torso Length" value="0.040" /> 3317 <param id="38" name="Torso Length" value="0.040" />
3318 3318
3319 <param id="80" name="male" value="1.000" /> 3319 <param id="80" name="male" value="1.000" />
3320 3320
3321 <param id="105" name="Breast Size" value="0.500" /> 3321 <param id="105" name="Breast Size" value="0.500" />
3322 3322
3323 <param id="151" name="Big_Butt_Legs" value="-0.010" /> 3323 <param id="151" name="Big_Butt_Legs" value="-0.010" />
3324 3324
3325 <param id="155" name="Lip Width" value="-0.750" /> 3325 <param id="155" name="Lip Width" value="-0.750" />
3326 3326
3327 <param id="157" name="Belly Size" value="0.380" /> 3327 <param id="157" name="Belly Size" value="0.380" />
3328 3328
3329 <param id="185" name="Deep_Chin" value="0.760" /> 3329 <param id="185" name="Deep_Chin" value="0.760" />
3330 3330
3331 <param id="193" name="Head Shape" value="0.240" /> 3331 <param id="193" name="Head Shape" value="0.240" />
3332 3332
3333 <param id="196" name="Eye Spacing" value="-0.140" /> 3333 <param id="196" name="Eye Spacing" value="-0.140" />
3334 3334
3335 <param id="505" name="Lip Thickness" value="0.760" /> 3335 <param id="505" name="Lip Thickness" value="0.760" />
3336 3336
3337 <param id="506" name="Mouth_Height" value="0.040" /> 3337 <param id="506" name="Mouth_Height" value="0.040" />
3338 3338
3339 <param id="507" name="Breast_Gravity" value="0.000" /> 3339 <param id="507" name="Breast_Gravity" value="0.000" />
3340 3340
3341 <param id="515" name="Foot_Size" value="0.640" /> 3341 <param id="515" name="Foot_Size" value="0.640" />
3342 3342
3343 <param id="517" name="Wide_Nose" value="0.790" /> 3343 <param id="517" name="Wide_Nose" value="0.790" />
3344 3344
3345 <param id="518" name="Eyelashes_Long" value="0.550" /> 3345 <param id="518" name="Eyelashes_Long" value="0.550" />
3346 3346
3347 <param id="629" name="Forehead Angle" value="0.820" /> 3347 <param id="629" name="Forehead Angle" value="0.820" />
3348 3348
3349 <param id="637" name="Body Fat" value="0.130" /> 3349 <param id="637" name="Body Fat" value="0.130" />
3350 3350
3351 <param id="646" name="Egg_Head" value="-0.860" /> 3351 <param id="646" name="Egg_Head" value="-0.860" />
3352 3352
3353 <param id="647" name="Squash_Stretch_Head" value="-0.500" /> 3353 <param id="647" name="Squash_Stretch_Head" value="-0.500" />
3354 3354
3355 <param id="649" name="Torso Muscles" value="0.500" /> 3355 <param id="649" name="Torso Muscles" value="0.500" />
3356 3356
3357 <param id="650" name="Eyelid_Corner_Up" value="-1.150" /> 3357 <param id="650" name="Eyelid_Corner_Up" value="-1.150" />
3358 3358
3359 <param id="652" name="Leg Muscles" value="0.820" /> 3359 <param id="652" name="Leg Muscles" value="0.820" />
3360 3360
3361 <param id="653" name="Tall_Lips" value="1.550" /> 3361 <param id="653" name="Tall_Lips" value="1.550" />
3362 3362
3363 <param id="656" name="Crooked_Nose" value="-0.600" /> 3363 <param id="656" name="Crooked_Nose" value="-0.600" />
3364 3364
3365 <param id="659" name="Mouth Corner" value="0.760" /> 3365 <param id="659" name="Mouth Corner" value="0.760" />
3366 3366
3367 <param id="662" name="Face Shear" value="0.460" /> 3367 <param id="662" name="Face Shear" value="0.460" />
3368 3368
3369 <param id="663" name="Shift_Mouth" value="-0.360" /> 3369 <param id="663" name="Shift_Mouth" value="-0.360" />
3370 3370
3371 <param id="664" name="Pop_Eye" value="0.080" /> 3371 <param id="664" name="Pop_Eye" value="0.080" />
3372 3372
3373 <param id="665" name="Jaw_Jut" value="-1.080" /> 3373 <param id="665" name="Jaw_Jut" value="-1.080" />
3374 3374
3375 <param id="675" name="Hand Size" value="-0.040" /> 3375 <param id="675" name="Hand Size" value="-0.040" />
3376 3376
3377 <param id="676" name="Love_Handles" value="0.290" /> 3377 <param id="676" name="Love_Handles" value="0.290" />
3378 3378
3379 <param id="678" name="Torso Muscles" value="0.630" /> 3379 <param id="678" name="Torso Muscles" value="0.630" />
3380 3380
3381 <param id="682" name="Head Size" value="0.600" /> 3381 <param id="682" name="Head Size" value="0.600" />
3382 3382
3383 <param id="683" name="Neck Thickness" value="0.060" /> 3383 <param id="683" name="Neck Thickness" value="0.060" />
3384 3384
3385 <param id="684" name="Breast_Female_Clevage" value="0.000" /> 3385 <param id="684" name="Breast_Female_Clevage" value="0.000" />
3386 3386
3387 <param id="685" name="Chest_Male_No_Pecs" value="-0.180" /> 3387 <param id="685" name="Chest_Male_No_Pecs" value="-0.180" />
3388 3388
3389 <param id="690" name="Eye Size" value="0.290" /> 3389 <param id="690" name="Eye Size" value="0.290" />
3390 3390
3391 <param id="692" name="Leg Length" value="-0.340" /> 3391 <param id="692" name="Leg Length" value="-0.340" />
3392 3392
3393 <param id="693" name="Arm Length" value="-0.060" /> 3393 <param id="693" name="Arm Length" value="-0.060" />
3394 3394
3395 <param id="753" name="Saddlebags" value="0.900" /> 3395 <param id="753" name="Saddlebags" value="0.900" />
3396 3396
3397 <param id="756" name="Neck Length" value="-0.220" /> 3397 <param id="756" name="Neck Length" value="-0.220" />
3398 3398
3399 <param id="758" name="Lower_Bridge_Nose" value="-0.690" /> 3399 <param id="758" name="Lower_Bridge_Nose" value="-0.690" />
3400 3400
3401 <param id="759" name="Low_Septum_Nose" value="-0.950" /> 3401 <param id="759" name="Low_Septum_Nose" value="-0.950" />
3402 3402
3403 <param id="760" name="Jaw_Angle" value="-0.340" /> 3403 <param id="760" name="Jaw_Angle" value="-0.340" />
3404 3404
3405 <param id="764" name="Lip_Cleft_Deep" value="0.250" /> 3405 <param id="764" name="Lip_Cleft_Deep" value="0.250" />
3406 3406
3407 <param id="765" name="Puffy_Lower_Lids" value="0.600" /> 3407 <param id="765" name="Puffy_Lower_Lids" value="0.600" />
3408 3408
3409 <param id="769" name="Eye Depth" value="0.720" /> 3409 <param id="769" name="Eye Depth" value="0.720" />
3410 3410
3411 <param id="773" name="Head Length" value="0.240" /> 3411 <param id="773" name="Head Length" value="0.240" />
3412 3412
3413<!-- wearable: skin --> 3413<!-- wearable: skin -->
3414 <param id="108" name="Rainbow Color" value="0.000" /> 3414 <param id="108" name="Rainbow Color" value="0.000" />
3415 3415
3416 <param id="110" name="Red Skin" value="0.000" /> 3416 <param id="110" name="Red Skin" value="0.000" />
3417 3417
3418 <param id="111" name="Pigment" value="0.200" /> 3418 <param id="111" name="Pigment" value="0.200" />
3419 3419
3420 <param id="116" name="Rosy Complexion" value="0.120" /> 3420 <param id="116" name="Rosy Complexion" value="0.120" />
3421 3421
3422 <param id="117" name="Lip Pinkness" value="0.220" /> 3422 <param id="117" name="Lip Pinkness" value="0.220" />
3423 3423
3424 <param id="150" name="Body Definition" value="0.000" /> 3424 <param id="150" name="Body Definition" value="0.000" />
3425 3425
3426 <param id="162" name="Facial Definition" value="0.250" /> 3426 <param id="162" name="Facial Definition" value="0.250" />
3427 3427
3428 <param id="163" name="Wrinkles" value="0.000" /> 3428 <param id="163" name="Wrinkles" value="0.000" />
3429 3429
3430 <param id="165" name="Freckles" value="0.000" /> 3430 <param id="165" name="Freckles" value="0.000" />
3431 3431
3432 <param id="700" name="Lipstick Color" value="0.250" /> 3432 <param id="700" name="Lipstick Color" value="0.250" />
3433 3433
3434 <param id="701" name="Lipstick" value="0.000" /> 3434 <param id="701" name="Lipstick" value="0.000" />
3435 3435
3436 <param id="702" name="Lipgloss" value="0.000" /> 3436 <param id="702" name="Lipgloss" value="0.000" />
3437 3437
3438 <param id="703" name="Eyeliner" value="0.000" /> 3438 <param id="703" name="Eyeliner" value="0.000" />
3439 3439
3440 <param id="704" name="Blush" value="0.000" /> 3440 <param id="704" name="Blush" value="0.000" />
3441 3441
3442 <param id="705" name="Blush Color" value="0.500" /> 3442 <param id="705" name="Blush Color" value="0.500" />
3443 3443
3444 <param id="706" name="Out Shdw Opacity" value="0.600" /> 3444 <param id="706" name="Out Shdw Opacity" value="0.600" />
3445 3445
3446 <param id="707" name="Outer Shadow" value="0.000" /> 3446 <param id="707" name="Outer Shadow" value="0.000" />
3447 3447
3448 <param id="708" name="Out Shdw Color" value="0.000" /> 3448 <param id="708" name="Out Shdw Color" value="0.000" />
3449 3449
3450 <param id="709" name="Inner Shadow" value="0.000" /> 3450 <param id="709" name="Inner Shadow" value="0.000" />
3451 3451
3452 <param id="710" name="Nail Polish" value="0.000" /> 3452 <param id="710" name="Nail Polish" value="0.000" />
3453 3453
3454 <param id="711" name="Blush Opacity" value="0.500" /> 3454 <param id="711" name="Blush Opacity" value="0.500" />
3455 3455
3456 <param id="712" name="In Shdw Color" value="0.000" /> 3456 <param id="712" name="In Shdw Color" value="0.000" />
3457 3457
3458 <param id="713" name="In Shdw Opacity" value="0.700" /> 3458 <param id="713" name="In Shdw Opacity" value="0.700" />
3459 3459
3460 <param id="714" name="Eyeliner Color" value="0.000" /> 3460 <param id="714" name="Eyeliner Color" value="0.000" />
3461 3461
3462 <param id="715" name="Nail Polish Color" value="0.000" /> 3462 <param id="715" name="Nail Polish Color" value="0.000" />
3463 3463
3464 <texture te="0" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 3464 <texture te="0" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
3465 3465
3466 <texture te="5" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 3466 <texture te="5" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
3467 3467
3468 <texture te="6" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 3468 <texture te="6" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
3469 3469
3470<!-- wearable: hair --> 3470<!-- wearable: hair -->
3471 <param id="16" name="Pointy_Eyebrows" value="0.370" /> 3471 <param id="16" name="Pointy_Eyebrows" value="0.370" />
3472 3472
3473 <param id="31" name="Arced_Eyebrows" value="0.000" /> 3473 <param id="31" name="Arced_Eyebrows" value="0.000" />
3474 3474
3475 <param id="112" name="Rainbow Color" value="0.000" /> 3475 <param id="112" name="Rainbow Color" value="0.000" />
3476 3476
3477 <param id="113" name="Red Hair" value="0.000" /> 3477 <param id="113" name="Red Hair" value="0.000" />
3478 3478
3479 <param id="114" name="Blonde Hair" value="0.000" /> 3479 <param id="114" name="Blonde Hair" value="0.000" />
3480 3480
3481 <param id="115" name="White Hair" value="0.000" /> 3481 <param id="115" name="White Hair" value="0.000" />
3482 3482
3483 <param id="119" name="Eyebrow Size" value="0.540" /> 3483 <param id="119" name="Eyebrow Size" value="0.540" />
3484 3484
3485 <param id="130" name="Front Fringe" value="0.000" /> 3485 <param id="130" name="Front Fringe" value="0.000" />
3486 3486
3487 <param id="131" name="Side Fringe" value="0.380" /> 3487 <param id="131" name="Side Fringe" value="0.380" />
3488 3488
3489 <param id="132" name="Back Fringe" value="0.320" /> 3489 <param id="132" name="Back Fringe" value="0.320" />
3490 3490
3491 <param id="133" name="Hair Front" value="0.000" /> 3491 <param id="133" name="Hair Front" value="0.000" />
3492 3492
3493 <param id="134" name="Hair Sides" value="0.320" /> 3493 <param id="134" name="Hair Sides" value="0.320" />
3494 3494
3495 <param id="135" name="Hair Back" value="0.540" /> 3495 <param id="135" name="Hair Back" value="0.540" />
3496 3496
3497 <param id="136" name="Hair Sweep" value="0.170" /> 3497 <param id="136" name="Hair Sweep" value="0.170" />
3498 3498
3499 <param id="137" name="Hair Tilt" value="0.500" /> 3499 <param id="137" name="Hair Tilt" value="0.500" />
3500 3500
3501 <param id="140" name="Hair_Part_Middle" value="0.000" /> 3501 <param id="140" name="Hair_Part_Middle" value="0.000" />
3502 3502
3503 <param id="141" name="Hair_Part_Right" value="0.000" /> 3503 <param id="141" name="Hair_Part_Right" value="0.000" />
3504 3504
3505 <param id="142" name="Hair_Part_Left" value="0.100" /> 3505 <param id="142" name="Hair_Part_Left" value="0.100" />
3506 3506
3507 <param id="143" name="Hair_Sides_Full" value="0.290" /> 3507 <param id="143" name="Hair_Sides_Full" value="0.290" />
3508 3508
3509 <param id="166" name="Sideburns" value="0.000" /> 3509 <param id="166" name="Sideburns" value="0.000" />
3510 3510
3511 <param id="167" name="Moustache" value="0.000" /> 3511 <param id="167" name="Moustache" value="0.000" />
3512 3512
3513 <param id="168" name="Soulpatch" value="0.000" /> 3513 <param id="168" name="Soulpatch" value="0.000" />
3514 3514
3515 <param id="169" name="Chin Curtains" value="0.820" /> 3515 <param id="169" name="Chin Curtains" value="0.820" />
3516 3516
3517 <param id="177" name="Hair_Rumpled" value="0.170" /> 3517 <param id="177" name="Hair_Rumpled" value="0.170" />
3518 3518
3519 <param id="181" name="Hair_Big_Front" value="0.300" /> 3519 <param id="181" name="Hair_Big_Front" value="0.300" />
3520 3520
3521 <param id="182" name="Hair_Big_Top" value="0.200" /> 3521 <param id="182" name="Hair_Big_Top" value="0.200" />
3522 3522
3523 <param id="183" name="Hair_Big_Back" value="0.060" /> 3523 <param id="183" name="Hair_Big_Back" value="0.060" />
3524 3524
3525 <param id="184" name="Hair_Spiked" value="0.000" /> 3525 <param id="184" name="Hair_Spiked" value="0.000" />
3526 3526
3527 <param id="192" name="Bangs_Part_Middle" value="0.000" /> 3527 <param id="192" name="Bangs_Part_Middle" value="0.000" />
3528 3528
3529 <param id="674" name="Hair_Shear_Back" value="-0.460" /> 3529 <param id="674" name="Hair_Shear_Back" value="-0.460" />
3530 3530
3531 <param id="750" name="Eyebrow Density" value="0.920" /> 3531 <param id="750" name="Eyebrow Density" value="0.920" />
3532 3532
3533 <param id="752" name="Hair Thickness" value="0.670" /> 3533 <param id="752" name="Hair Thickness" value="0.670" />
3534 3534
3535 <param id="754" name="Hair_Taper_Back" value="0.830" /> 3535 <param id="754" name="Hair_Taper_Back" value="0.830" />
3536 3536
3537 <param id="755" name="Hair_Taper_Front" value="-0.840" /> 3537 <param id="755" name="Hair_Taper_Front" value="-0.840" />
3538 3538
3539 <param id="757" name="Lower_Eyebrows" value="-0.200" /> 3539 <param id="757" name="Lower_Eyebrows" value="-0.200" />
3540 3540
3541 <param id="762" name="Hair_Shear_Front" value="1.710" /> 3541 <param id="762" name="Hair_Shear_Front" value="1.710" />
3542 3542
3543 <param id="763" name="Hair Volume" value="0.510" /> 3543 <param id="763" name="Hair Volume" value="0.510" />
3544 3544
3545 <texture te="4" uuid="7ca39b4c-bd19-4699-aff7-f93fd03d3e7b" /> 3545 <texture te="4" uuid="7ca39b4c-bd19-4699-aff7-f93fd03d3e7b" />
3546 3546
3547<!-- wearable: eyes --> 3547<!-- wearable: eyes -->
3548 <param id="98" name="Eye Lightness" value="0.270" /> 3548 <param id="98" name="Eye Lightness" value="0.270" />
3549 3549
3550 <param id="99" name="Eye Color" value="0.090" /> 3550 <param id="99" name="Eye Color" value="0.090" />
3551 3551
3552 <texture te="3" uuid="6522e74d-1660-4e7f-b601-6f48c1659a77" /> 3552 <texture te="3" uuid="6522e74d-1660-4e7f-b601-6f48c1659a77" />
3553 </archetype> 3553 </archetype>
3554 3554
3555 <archetype name="F W Skinny"> 3555 <archetype name="F W Skinny">
3556<!-- wearable: shape --> 3556<!-- wearable: shape -->
3557 <param id="1" name="Big_Brow" value="0.183" /> 3557 <param id="1" name="Big_Brow" value="0.183" />
3558 3558
3559 <param id="2" name="Nose_Big_Out" value="-0.338" /> 3559 <param id="2" name="Nose_Big_Out" value="-0.338" />
3560 3560
3561 <param id="4" name="Broad_Nostrils" value="-0.155" /> 3561 <param id="4" name="Broad_Nostrils" value="-0.155" />
3562 3562
3563 <param id="5" name="Cleft_Chin" value="-0.100" /> 3563 <param id="5" name="Cleft_Chin" value="-0.100" />
3564 3564
3565 <param id="6" name="Bulbous_Nose_Tip" value="0.636" /> 3565 <param id="6" name="Bulbous_Nose_Tip" value="0.636" />
3566 3566
3567 <param id="7" name="Weak_Chin" value="-0.040" /> 3567 <param id="7" name="Weak_Chin" value="-0.040" />
3568 3568
3569 <param id="8" name="Double_Chin" value="-0.500" /> 3569 <param id="8" name="Double_Chin" value="-0.500" />
3570 3570
3571 <param id="10" name="Sunken_Cheeks" value="-0.060" /> 3571 <param id="10" name="Sunken_Cheeks" value="-0.060" />
3572 3572
3573 <param id="11" name="Noble_Nose_Bridge" value="0.120" /> 3573 <param id="11" name="Noble_Nose_Bridge" value="0.120" />
3574 3574
3575 <param id="12" name="Jowls" value="0.850" /> 3575 <param id="12" name="Jowls" value="0.850" />
3576 3576
3577 <param id="13" name="Cleft_Chin_Upper" value="0.000" /> 3577 <param id="13" name="Cleft_Chin_Upper" value="0.000" />
3578 3578
3579 <param id="14" name="High_Cheek_Bones" value="0.370" /> 3579 <param id="14" name="High_Cheek_Bones" value="0.370" />
3580 3580
3581 <param id="15" name="Ears_Out" value="0.240" /> 3581 <param id="15" name="Ears_Out" value="0.240" />
3582 3582
3583 <param id="17" name="Square_Jaw" value="0.250" /> 3583 <param id="17" name="Square_Jaw" value="0.250" />
3584 3584
3585 <param id="18" name="Puffy_Upper_Cheeks" value="-0.060" /> 3585 <param id="18" name="Puffy_Upper_Cheeks" value="-0.060" />
3586 3586
3587 <param id="19" name="Upturned_Nose_Tip" value="-0.100" /> 3587 <param id="19" name="Upturned_Nose_Tip" value="-0.100" />
3588 3588
3589 <param id="20" name="Bulbous_Nose" value="0.020" /> 3589 <param id="20" name="Bulbous_Nose" value="0.020" />
3590 3590
3591 <param id="21" name="Upper_Eyelid_Fold" value="0.475" /> 3591 <param id="21" name="Upper_Eyelid_Fold" value="0.475" />
3592 3592
3593 <param id="22" name="Attached_Earlobes" value="1.000" /> 3593 <param id="22" name="Attached_Earlobes" value="1.000" />
3594 3594
3595 <param id="23" name="Baggy_Eyes" value="0.120" /> 3595 <param id="23" name="Baggy_Eyes" value="0.120" />
3596 3596
3597 <param id="24" name="Wide_Eyes" value="0.250" /> 3597 <param id="24" name="Wide_Eyes" value="0.250" />
3598 3598
3599 <param id="25" name="Wide_Lip_Cleft" value="0.511" /> 3599 <param id="25" name="Wide_Lip_Cleft" value="0.511" />
3600 3600
3601 <param id="27" name="Wide_Nose_Bridge" value="-0.850" /> 3601 <param id="27" name="Wide_Nose_Bridge" value="-0.850" />
3602 3602
3603 <param id="33" name="Height" value="1.140" /> 3603 <param id="33" name="Height" value="1.140" />
3604 3604
3605 <param id="34" name="Thickness" value="-0.392" /> 3605 <param id="34" name="Thickness" value="-0.392" />
3606 3606
3607 <param id="35" name="Big_Ears" value="-0.460" /> 3607 <param id="35" name="Big_Ears" value="-0.460" />
3608 3608
3609 <param id="36" name="Shoulders" value="0.024" /> 3609 <param id="36" name="Shoulders" value="0.024" />
3610 3610
3611 <param id="37" name="Hip Width" value="-0.800" /> 3611 <param id="37" name="Hip Width" value="-0.800" />
3612 3612
3613 <param id="38" name="Torso Length" value="0.480" /> 3613 <param id="38" name="Torso Length" value="0.480" />
3614 3614
3615 <param id="80" name="male" value="0.000" /> 3615 <param id="80" name="male" value="0.000" />
3616 3616
3617 <param id="105" name="Breast Size" value="0.270" /> 3617 <param id="105" name="Breast Size" value="0.270" />
3618 3618
3619 <param id="151" name="Big_Butt_Legs" value="-0.092" /> 3619 <param id="151" name="Big_Butt_Legs" value="-0.092" />
3620 3620
3621 <param id="155" name="Lip Width" value="-0.174" /> 3621 <param id="155" name="Lip Width" value="-0.174" />
3622 3622
3623 <param id="157" name="Belly Size" value="0.260" /> 3623 <param id="157" name="Belly Size" value="0.260" />
3624 3624
3625 <param id="185" name="Deep_Chin" value="-0.400" /> 3625 <param id="185" name="Deep_Chin" value="-0.400" />
3626 3626
3627 <param id="193" name="Head Shape" value="0.890" /> 3627 <param id="193" name="Head Shape" value="0.890" />
3628 3628
3629 <param id="196" name="Eye Spacing" value="0.310" /> 3629 <param id="196" name="Eye Spacing" value="0.310" />
3630 3630
3631 <param id="505" name="Lip Thickness" value="0.470" /> 3631 <param id="505" name="Lip Thickness" value="0.470" />
3632 3632
3633 <param id="506" name="Mouth_Height" value="-0.560" /> 3633 <param id="506" name="Mouth_Height" value="-0.560" />
3634 3634
3635 <param id="507" name="Breast_Gravity" value="-0.975" /> 3635 <param id="507" name="Breast_Gravity" value="-0.975" />
3636 3636
3637 <param id="515" name="Foot_Size" value="1.640" /> 3637 <param id="515" name="Foot_Size" value="1.640" />
3638 3638
3639 <param id="517" name="Wide_Nose" value="0.055" /> 3639 <param id="517" name="Wide_Nose" value="0.055" />
3640 3640
3641 <param id="518" name="Eyelashes_Long" value="-0.156" /> 3641 <param id="518" name="Eyelashes_Long" value="-0.156" />
3642 3642
3643 <param id="629" name="Forehead Angle" value="0.140" /> 3643 <param id="629" name="Forehead Angle" value="0.140" />
3644 3644
3645 <param id="637" name="Body Fat" value="0.020" /> 3645 <param id="637" name="Body Fat" value="0.020" />
3646 3646
3647 <param id="646" name="Egg_Head" value="0.655" /> 3647 <param id="646" name="Egg_Head" value="0.655" />
3648 3648
3649 <param id="647" name="Squash_Stretch_Head" value="0.595" /> 3649 <param id="647" name="Squash_Stretch_Head" value="0.595" />
3650 3650
3651 <param id="649" name="Torso Muscles" value="0.400" /> 3651 <param id="649" name="Torso Muscles" value="0.400" />
3652 3652
3653 <param id="650" name="Eyelid_Corner_Up" value="0.225" /> 3653 <param id="650" name="Eyelid_Corner_Up" value="0.225" />
3654 3654
3655 <param id="652" name="Leg Muscles" value="0.430" /> 3655 <param id="652" name="Leg Muscles" value="0.430" />
3656 3656
3657 <param id="653" name="Tall_Lips" value="-0.910" /> 3657 <param id="653" name="Tall_Lips" value="-0.910" />
3658 3658
3659 <param id="656" name="Crooked_Nose" value="0.000" /> 3659 <param id="656" name="Crooked_Nose" value="0.000" />
3660 3660
3661 <param id="659" name="Mouth Corner" value="0.500" /> 3661 <param id="659" name="Mouth Corner" value="0.500" />
3662 3662
3663 <param id="662" name="Face Shear" value="0.500" /> 3663 <param id="662" name="Face Shear" value="0.500" />
3664 3664
3665 <param id="663" name="Shift_Mouth" value="0.000" /> 3665 <param id="663" name="Shift_Mouth" value="0.000" />
3666 3666
3667 <param id="664" name="Pop_Eye" value="0.000" /> 3667 <param id="664" name="Pop_Eye" value="0.000" />
3668 3668
3669 <param id="665" name="Jaw_Jut" value="0.320" /> 3669 <param id="665" name="Jaw_Jut" value="0.320" />
3670 3670
3671 <param id="675" name="Hand Size" value="0.066" /> 3671 <param id="675" name="Hand Size" value="0.066" />
3672 3672
3673 <param id="676" name="Love_Handles" value="-0.040" /> 3673 <param id="676" name="Love_Handles" value="-0.040" />
3674 3674
3675 <param id="678" name="Torso Muscles" value="0.790" /> 3675 <param id="678" name="Torso Muscles" value="0.790" />
3676 3676
3677 <param id="682" name="Head Size" value="0.770" /> 3677 <param id="682" name="Head Size" value="0.770" />
3678 3678
3679 <param id="683" name="Neck Thickness" value="-0.214" /> 3679 <param id="683" name="Neck Thickness" value="-0.214" />
3680 3680
3681 <param id="684" name="Breast_Female_Clevage" value="0.308" /> 3681 <param id="684" name="Breast_Female_Clevage" value="0.308" />
3682 3682
3683 <param id="685" name="Chest_Male_No_Pecs" value="0.200" /> 3683 <param id="685" name="Chest_Male_No_Pecs" value="0.200" />
3684 3684
3685 <param id="690" name="Eye Size" value="0.640" /> 3685 <param id="690" name="Eye Size" value="0.640" />
3686 3686
3687 <param id="692" name="Leg Length" value="0.580" /> 3687 <param id="692" name="Leg Length" value="0.580" />
3688 3688
3689 <param id="693" name="Arm Length" value="0.660" /> 3689 <param id="693" name="Arm Length" value="0.660" />
3690 3690
3691 <param id="753" name="Saddlebags" value="0.795" /> 3691 <param id="753" name="Saddlebags" value="0.795" />
3692 3692
3693 <param id="756" name="Neck Length" value="0.300" /> 3693 <param id="756" name="Neck Length" value="0.300" />
3694 3694
3695 <param id="758" name="Lower_Bridge_Nose" value="-0.570" /> 3695 <param id="758" name="Lower_Bridge_Nose" value="-0.570" />
3696 3696
3697 <param id="759" name="Low_Septum_Nose" value="0.500" /> 3697 <param id="759" name="Low_Septum_Nose" value="0.500" />
3698 3698
3699 <param id="760" name="Jaw_Angle" value="1.328" /> 3699 <param id="760" name="Jaw_Angle" value="1.328" />
3700 3700
3701 <param id="764" name="Lip_Cleft_Deep" value="1.081" /> 3701 <param id="764" name="Lip_Cleft_Deep" value="1.081" />
3702 3702
3703 <param id="765" name="Puffy_Lower_Lids" value="0.036" /> 3703 <param id="765" name="Puffy_Lower_Lids" value="0.036" />
3704 3704
3705 <param id="769" name="Eye Depth" value="0.270" /> 3705 <param id="769" name="Eye Depth" value="0.270" />
3706 3706
3707 <param id="773" name="Head Length" value="0.720" /> 3707 <param id="773" name="Head Length" value="0.720" />
3708 3708
3709<!-- wearable: skin --> 3709<!-- wearable: skin -->
3710 <param id="108" name="Rainbow Color" value="0.000" /> 3710 <param id="108" name="Rainbow Color" value="0.000" />
3711 3711
3712 <param id="110" name="Red Skin" value="0.029" /> 3712 <param id="110" name="Red Skin" value="0.029" />
3713 3713
3714 <param id="111" name="Pigment" value="0.090" /> 3714 <param id="111" name="Pigment" value="0.090" />
3715 3715
3716 <param id="116" name="Rosy Complexion" value="0.370" /> 3716 <param id="116" name="Rosy Complexion" value="0.370" />
3717 3717
3718 <param id="117" name="Lip Pinkness" value="0.640" /> 3718 <param id="117" name="Lip Pinkness" value="0.640" />
3719 3719
3720 <param id="150" name="Body Definition" value="0.870" /> 3720 <param id="150" name="Body Definition" value="0.870" />
3721 3721
3722 <param id="162" name="Facial Definition" value="0.000" /> 3722 <param id="162" name="Facial Definition" value="0.000" />
3723 3723
3724 <param id="163" name="Wrinkles" value="0.000" /> 3724 <param id="163" name="Wrinkles" value="0.000" />
3725 3725
3726 <param id="165" name="Freckles" value="0.200" /> 3726 <param id="165" name="Freckles" value="0.200" />
3727 3727
3728 <param id="700" name="Lipstick Color" value="0.250" /> 3728 <param id="700" name="Lipstick Color" value="0.250" />
3729 3729
3730 <param id="701" name="Lipstick" value="0.000" /> 3730 <param id="701" name="Lipstick" value="0.000" />
3731 3731
3732 <param id="702" name="Lipgloss" value="0.000" /> 3732 <param id="702" name="Lipgloss" value="0.000" />
3733 3733
3734 <param id="703" name="Eyeliner" value="0.000" /> 3734 <param id="703" name="Eyeliner" value="0.000" />
3735 3735
3736 <param id="704" name="Blush" value="0.000" /> 3736 <param id="704" name="Blush" value="0.000" />
3737 3737
3738 <param id="705" name="Blush Color" value="0.500" /> 3738 <param id="705" name="Blush Color" value="0.500" />
3739 3739
3740 <param id="706" name="Out Shdw Opacity" value="0.600" /> 3740 <param id="706" name="Out Shdw Opacity" value="0.600" />
3741 3741
3742 <param id="707" name="Outer Shadow" value="0.000" /> 3742 <param id="707" name="Outer Shadow" value="0.000" />
3743 3743
3744 <param id="708" name="Out Shdw Color" value="0.000" /> 3744 <param id="708" name="Out Shdw Color" value="0.000" />
3745 3745
3746 <param id="709" name="Inner Shadow" value="0.000" /> 3746 <param id="709" name="Inner Shadow" value="0.000" />
3747 3747
3748 <param id="710" name="Nail Polish" value="0.000" /> 3748 <param id="710" name="Nail Polish" value="0.000" />
3749 3749
3750 <param id="711" name="Blush Opacity" value="0.500" /> 3750 <param id="711" name="Blush Opacity" value="0.500" />
3751 3751
3752 <param id="712" name="In Shdw Color" value="0.000" /> 3752 <param id="712" name="In Shdw Color" value="0.000" />
3753 3753
3754 <param id="713" name="In Shdw Opacity" value="0.700" /> 3754 <param id="713" name="In Shdw Opacity" value="0.700" />
3755 3755
3756 <param id="714" name="Eyeliner Color" value="0.000" /> 3756 <param id="714" name="Eyeliner Color" value="0.000" />
3757 3757
3758 <param id="715" name="Nail Polish Color" value="0.000" /> 3758 <param id="715" name="Nail Polish Color" value="0.000" />
3759 3759
3760 <texture te="0" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 3760 <texture te="0" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
3761 3761
3762 <texture te="5" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 3762 <texture te="5" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
3763 3763
3764 <texture te="6" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 3764 <texture te="6" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
3765 3765
3766<!-- wearable: hair --> 3766<!-- wearable: hair -->
3767 <param id="16" name="Pointy_Eyebrows" value="-0.170" /> 3767 <param id="16" name="Pointy_Eyebrows" value="-0.170" />
3768 3768
3769 <param id="31" name="Arced_Eyebrows" value="0.000" /> 3769 <param id="31" name="Arced_Eyebrows" value="0.000" />
3770 3770
3771 <param id="112" name="Rainbow Color" value="0.000" /> 3771 <param id="112" name="Rainbow Color" value="0.000" />
3772 3772
3773 <param id="113" name="Red Hair" value="0.640" /> 3773 <param id="113" name="Red Hair" value="0.640" />
3774 3774
3775 <param id="114" name="Blonde Hair" value="0.940" /> 3775 <param id="114" name="Blonde Hair" value="0.940" />
3776 3776
3777 <param id="115" name="White Hair" value="0.120" /> 3777 <param id="115" name="White Hair" value="0.120" />
3778 3778
3779 <param id="119" name="Eyebrow Size" value="0.310" /> 3779 <param id="119" name="Eyebrow Size" value="0.310" />
3780 3780
3781 <param id="130" name="Front Fringe" value="0.590" /> 3781 <param id="130" name="Front Fringe" value="0.590" />
3782 3782
3783 <param id="131" name="Side Fringe" value="0.720" /> 3783 <param id="131" name="Side Fringe" value="0.720" />
3784 3784
3785 <param id="132" name="Back Fringe" value="0.720" /> 3785 <param id="132" name="Back Fringe" value="0.720" />
3786 3786
3787 <param id="133" name="Hair Front" value="0.000" /> 3787 <param id="133" name="Hair Front" value="0.000" />
3788 3788
3789 <param id="134" name="Hair Sides" value="0.580" /> 3789 <param id="134" name="Hair Sides" value="0.580" />
3790 3790
3791 <param id="135" name="Hair Back" value="0.940" /> 3791 <param id="135" name="Hair Back" value="0.940" />
3792 3792
3793 <param id="136" name="Hair Sweep" value="0.370" /> 3793 <param id="136" name="Hair Sweep" value="0.370" />
3794 3794
3795 <param id="137" name="Hair Tilt" value="0.510" /> 3795 <param id="137" name="Hair Tilt" value="0.510" />
3796 3796
3797 <param id="140" name="Hair_Part_Middle" value="0.000" /> 3797 <param id="140" name="Hair_Part_Middle" value="0.000" />
3798 3798
3799 <param id="141" name="Hair_Part_Right" value="1.520" /> 3799 <param id="141" name="Hair_Part_Right" value="1.520" />
3800 3800
3801 <param id="142" name="Hair_Part_Left" value="0.000" /> 3801 <param id="142" name="Hair_Part_Left" value="0.000" />
3802 3802
3803 <param id="143" name="Hair_Sides_Full" value="-0.040" /> 3803 <param id="143" name="Hair_Sides_Full" value="-0.040" />
3804 3804
3805 <param id="166" name="Sideburns" value="0.710" /> 3805 <param id="166" name="Sideburns" value="0.710" />
3806 3806
3807 <param id="167" name="Moustache" value="0.000" /> 3807 <param id="167" name="Moustache" value="0.000" />
3808 3808
3809 <param id="168" name="Soulpatch" value="0.000" /> 3809 <param id="168" name="Soulpatch" value="0.000" />
3810 3810
3811 <param id="169" name="Chin Curtains" value="0.000" /> 3811 <param id="169" name="Chin Curtains" value="0.000" />
3812 3812
3813 <param id="177" name="Hair_Rumpled" value="0.410" /> 3813 <param id="177" name="Hair_Rumpled" value="0.410" />
3814 3814
3815 <param id="181" name="Hair_Big_Front" value="0.020" /> 3815 <param id="181" name="Hair_Big_Front" value="0.020" />
3816 3816
3817 <param id="182" name="Hair_Big_Top" value="0.840" /> 3817 <param id="182" name="Hair_Big_Top" value="0.840" />
3818 3818
3819 <param id="183" name="Hair_Big_Back" value="0.000" /> 3819 <param id="183" name="Hair_Big_Back" value="0.000" />
3820 3820
3821 <param id="184" name="Hair_Spiked" value="0.000" /> 3821 <param id="184" name="Hair_Spiked" value="0.000" />
3822 3822
3823 <param id="192" name="Bangs_Part_Middle" value="0.000" /> 3823 <param id="192" name="Bangs_Part_Middle" value="0.000" />
3824 3824
3825 <param id="674" name="Hair_Shear_Back" value="0.740" /> 3825 <param id="674" name="Hair_Shear_Back" value="0.740" />
3826 3826
3827 <param id="750" name="Eyebrow Density" value="0.490" /> 3827 <param id="750" name="Eyebrow Density" value="0.490" />
3828 3828
3829 <param id="752" name="Hair Thickness" value="0.690" /> 3829 <param id="752" name="Hair Thickness" value="0.690" />
3830 3830
3831 <param id="754" name="Hair_Taper_Back" value="-0.490" /> 3831 <param id="754" name="Hair_Taper_Back" value="-0.490" />
3832 3832
3833 <param id="755" name="Hair_Taper_Front" value="-0.030" /> 3833 <param id="755" name="Hair_Taper_Front" value="-0.030" />
3834 3834
3835 <param id="757" name="Lower_Eyebrows" value="-1.600" /> 3835 <param id="757" name="Lower_Eyebrows" value="-1.600" />
3836 3836
3837 <param id="762" name="Hair_Shear_Front" value="0.060" /> 3837 <param id="762" name="Hair_Shear_Front" value="0.060" />
3838 3838
3839 <param id="763" name="Hair Volume" value="0.520" /> 3839 <param id="763" name="Hair Volume" value="0.520" />
3840 3840
3841 <texture te="4" uuid="7ca39b4c-bd19-4699-aff7-f93fd03d3e7b" /> 3841 <texture te="4" uuid="7ca39b4c-bd19-4699-aff7-f93fd03d3e7b" />
3842 3842
3843<!-- wearable: eyes --> 3843<!-- wearable: eyes -->
3844 <param id="98" name="Eye Lightness" value="0.220" /> 3844 <param id="98" name="Eye Lightness" value="0.220" />
3845 3845
3846 <param id="99" name="Eye Color" value="0.340" /> 3846 <param id="99" name="Eye Color" value="0.340" />
3847 3847
3848 <texture te="3" uuid="6522e74d-1660-4e7f-b601-6f48c1659a77" /> 3848 <texture te="3" uuid="6522e74d-1660-4e7f-b601-6f48c1659a77" />
3849 </archetype> 3849 </archetype>
3850 3850
3851 <archetype name="F W Old"> 3851 <archetype name="F W Old">
3852<!-- wearable: shape --> 3852<!-- wearable: shape -->
3853 <param id="1" name="Big_Brow" value="0.505" /> 3853 <param id="1" name="Big_Brow" value="0.505" />
3854 3854
3855 <param id="2" name="Nose_Big_Out" value="0.817" /> 3855 <param id="2" name="Nose_Big_Out" value="0.817" />
3856 3856
3857 <param id="4" name="Broad_Nostrils" value="0.700" /> 3857 <param id="4" name="Broad_Nostrils" value="0.700" />
3858 3858
3859 <param id="5" name="Cleft_Chin" value="1.000" /> 3859 <param id="5" name="Cleft_Chin" value="1.000" />
3860 3860
3861 <param id="6" name="Bulbous_Nose_Tip" value="0.116" /> 3861 <param id="6" name="Bulbous_Nose_Tip" value="0.116" />
3862 3862
3863 <param id="7" name="Weak_Chin" value="0.200" /> 3863 <param id="7" name="Weak_Chin" value="0.200" />
3864 3864
3865 <param id="8" name="Double_Chin" value="0.560" /> 3865 <param id="8" name="Double_Chin" value="0.560" />
3866 3866
3867 <param id="10" name="Sunken_Cheeks" value="-0.510" /> 3867 <param id="10" name="Sunken_Cheeks" value="-0.510" />
3868 3868
3869 <param id="11" name="Noble_Nose_Bridge" value="0.640" /> 3869 <param id="11" name="Noble_Nose_Bridge" value="0.640" />
3870 3870
3871 <param id="12" name="Jowls" value="2.260" /> 3871 <param id="12" name="Jowls" value="2.260" />
3872 3872
3873 <param id="13" name="Cleft_Chin_Upper" value="1.170" /> 3873 <param id="13" name="Cleft_Chin_Upper" value="1.170" />
3874 3874
3875 <param id="14" name="High_Cheek_Bones" value="-0.395" /> 3875 <param id="14" name="High_Cheek_Bones" value="-0.395" />
3876 3876
3877 <param id="15" name="Ears_Out" value="0.440" /> 3877 <param id="15" name="Ears_Out" value="0.440" />
3878 3878
3879 <param id="17" name="Square_Jaw" value="0.940" /> 3879 <param id="17" name="Square_Jaw" value="0.940" />
3880 3880
3881 <param id="18" name="Puffy_Upper_Cheeks" value="-1.500" /> 3881 <param id="18" name="Puffy_Upper_Cheeks" value="-1.500" />
3882 3882
3883 <param id="19" name="Upturned_Nose_Tip" value="-1.200" /> 3883 <param id="19" name="Upturned_Nose_Tip" value="-1.200" />
3884 3884
3885 <param id="20" name="Bulbous_Nose" value="0.740" /> 3885 <param id="20" name="Bulbous_Nose" value="0.740" />
3886 3886
3887 <param id="21" name="Upper_Eyelid_Fold" value="0.640" /> 3887 <param id="21" name="Upper_Eyelid_Fold" value="0.640" />
3888 3888
3889 <param id="22" name="Attached_Earlobes" value="0.000" /> 3889 <param id="22" name="Attached_Earlobes" value="0.000" />
3890 3890
3891 <param id="23" name="Baggy_Eyes" value="1.340" /> 3891 <param id="23" name="Baggy_Eyes" value="1.340" />
3892 3892
3893 <param id="24" name="Wide_Eyes" value="-1.500" /> 3893 <param id="24" name="Wide_Eyes" value="-1.500" />
3894 3894
3895 <param id="25" name="Wide_Lip_Cleft" value="1.500" /> 3895 <param id="25" name="Wide_Lip_Cleft" value="1.500" />
3896 3896
3897 <param id="27" name="Wide_Nose_Bridge" value="-1.200" /> 3897 <param id="27" name="Wide_Nose_Bridge" value="-1.200" />
3898 3898
3899 <param id="33" name="Height" value="-0.838" /> 3899 <param id="33" name="Height" value="-0.838" />
3900 3900
3901 <param id="34" name="Thickness" value="1.500" /> 3901 <param id="34" name="Thickness" value="1.500" />
3902 3902
3903 <param id="35" name="Big_Ears" value="1.430" /> 3903 <param id="35" name="Big_Ears" value="1.430" />
3904 3904
3905 <param id="36" name="Shoulders" value="-1.736" /> 3905 <param id="36" name="Shoulders" value="-1.736" />
3906 3906
3907 <param id="37" name="Hip Width" value="-0.020" /> 3907 <param id="37" name="Hip Width" value="-0.020" />
3908 3908
3909 <param id="38" name="Torso Length" value="1.000" /> 3909 <param id="38" name="Torso Length" value="1.000" />
3910 3910
3911 <param id="80" name="male" value="0.000" /> 3911 <param id="80" name="male" value="0.000" />
3912 3912
3913 <param id="105" name="Breast Size" value="0.840" /> 3913 <param id="105" name="Breast Size" value="0.840" />
3914 3914
3915 <param id="151" name="Big_Butt_Legs" value="0.706" /> 3915 <param id="151" name="Big_Butt_Legs" value="0.706" />
3916 3916
3917 <param id="155" name="Lip Width" value="0.926" /> 3917 <param id="155" name="Lip Width" value="0.926" />
3918 3918
3919 <param id="157" name="Belly Size" value="0.300" /> 3919 <param id="157" name="Belly Size" value="0.300" />
3920 3920
3921 <param id="185" name="Deep_Chin" value="0.500" /> 3921 <param id="185" name="Deep_Chin" value="0.500" />
3922 3922
3923 <param id="193" name="Head Shape" value="0.400" /> 3923 <param id="193" name="Head Shape" value="0.400" />
3924 3924
3925 <param id="196" name="Eye Spacing" value="-0.560" /> 3925 <param id="196" name="Eye Spacing" value="-0.560" />
3926 3926
3927 <param id="505" name="Lip Thickness" value="0.220" /> 3927 <param id="505" name="Lip Thickness" value="0.220" />
3928 3928
3929 <param id="506" name="Mouth_Height" value="1.160" /> 3929 <param id="506" name="Mouth_Height" value="1.160" />
3930 3930
3931 <param id="507" name="Breast_Gravity" value="2.000" /> 3931 <param id="507" name="Breast_Gravity" value="2.000" />
3932 3932
3933 <param id="515" name="Foot_Size" value="2.080" /> 3933 <param id="515" name="Foot_Size" value="2.080" />
3934 3934
3935 <param id="517" name="Wide_Nose" value="-0.200" /> 3935 <param id="517" name="Wide_Nose" value="-0.200" />
3936 3936
3937 <param id="518" name="Eyelashes_Long" value="-0.300" /> 3937 <param id="518" name="Eyelashes_Long" value="-0.300" />
3938 3938
3939 <param id="629" name="Forehead Angle" value="0.000" /> 3939 <param id="629" name="Forehead Angle" value="0.000" />
3940 3940
3941 <param id="637" name="Body Fat" value="0.930" /> 3941 <param id="637" name="Body Fat" value="0.930" />
3942 3942
3943 <param id="646" name="Egg_Head" value="0.333" /> 3943 <param id="646" name="Egg_Head" value="0.333" />
3944 3944
3945 <param id="647" name="Squash_Stretch_Head" value="0.550" /> 3945 <param id="647" name="Squash_Stretch_Head" value="0.550" />
3946 3946
3947 <param id="649" name="Torso Muscles" value="0.180" /> 3947 <param id="649" name="Torso Muscles" value="0.180" />
3948 3948
3949 <param id="650" name="Eyelid_Corner_Up" value="-0.725" /> 3949 <param id="650" name="Eyelid_Corner_Up" value="-0.725" />
3950 3950
3951 <param id="652" name="Leg Muscles" value="0.560" /> 3951 <param id="652" name="Leg Muscles" value="0.560" />
3952 3952
3953 <param id="653" name="Tall_Lips" value="-1.000" /> 3953 <param id="653" name="Tall_Lips" value="-1.000" />
3954 3954
3955 <param id="656" name="Crooked_Nose" value="-0.400" /> 3955 <param id="656" name="Crooked_Nose" value="-0.400" />
3956 3956
3957 <param id="659" name="Mouth Corner" value="0.180" /> 3957 <param id="659" name="Mouth Corner" value="0.180" />
3958 3958
3959 <param id="662" name="Face Shear" value="0.500" /> 3959 <param id="662" name="Face Shear" value="0.500" />
3960 3960
3961 <param id="663" name="Shift_Mouth" value="0.600" /> 3961 <param id="663" name="Shift_Mouth" value="0.600" />
3962 3962
3963 <param id="664" name="Pop_Eye" value="0.052" /> 3963 <param id="664" name="Pop_Eye" value="0.052" />
3964 3964
3965 <param id="665" name="Jaw_Jut" value="-0.160" /> 3965 <param id="665" name="Jaw_Jut" value="-0.160" />
3966 3966
3967 <param id="675" name="Hand Size" value="0.048" /> 3967 <param id="675" name="Hand Size" value="0.048" />
3968 3968
3969 <param id="676" name="Love_Handles" value="-0.460" /> 3969 <param id="676" name="Love_Handles" value="-0.460" />
3970 3970
3971 <param id="678" name="Torso Muscles" value="0.790" /> 3971 <param id="678" name="Torso Muscles" value="0.790" />
3972 3972
3973 <param id="682" name="Head Size" value="0.800" /> 3973 <param id="682" name="Head Size" value="0.800" />
3974 3974
3975 <param id="683" name="Neck Thickness" value="-0.088" /> 3975 <param id="683" name="Neck Thickness" value="-0.088" />
3976 3976
3977 <param id="684" name="Breast_Female_Clevage" value="-0.204" /> 3977 <param id="684" name="Breast_Female_Clevage" value="-0.204" />
3978 3978
3979 <param id="685" name="Chest_Male_No_Pecs" value="0.200" /> 3979 <param id="685" name="Chest_Male_No_Pecs" value="0.200" />
3980 3980
3981 <param id="690" name="Eye Size" value="0.620" /> 3981 <param id="690" name="Eye Size" value="0.620" />
3982 3982
3983 <param id="692" name="Leg Length" value="0.180" /> 3983 <param id="692" name="Leg Length" value="0.180" />
3984 3984
3985 <param id="693" name="Arm Length" value="0.540" /> 3985 <param id="693" name="Arm Length" value="0.540" />
3986 3986
3987 <param id="753" name="Saddlebags" value="1.390" /> 3987 <param id="753" name="Saddlebags" value="1.390" />
3988 3988
3989 <param id="756" name="Neck Length" value="-0.960" /> 3989 <param id="756" name="Neck Length" value="-0.960" />
3990 3990
3991 <param id="758" name="Lower_Bridge_Nose" value="0.540" /> 3991 <param id="758" name="Lower_Bridge_Nose" value="0.540" />
3992 3992
3993 <param id="759" name="Low_Septum_Nose" value="1.125" /> 3993 <param id="759" name="Low_Septum_Nose" value="1.125" />
3994 3994
3995 <param id="760" name="Jaw_Angle" value="-0.368" /> 3995 <param id="760" name="Jaw_Angle" value="-0.368" />
3996 3996
3997 <param id="764" name="Lip_Cleft_Deep" value="0.928" /> 3997 <param id="764" name="Lip_Cleft_Deep" value="0.928" />
3998 3998
3999 <param id="765" name="Puffy_Lower_Lids" value="1.576" /> 3999 <param id="765" name="Puffy_Lower_Lids" value="1.576" />
4000 4000
4001 <param id="769" name="Eye Depth" value="0.120" /> 4001 <param id="769" name="Eye Depth" value="0.120" />
4002 4002
4003 <param id="773" name="Head Length" value="0.770" /> 4003 <param id="773" name="Head Length" value="0.770" />
4004 4004
4005<!-- wearable: skin --> 4005<!-- wearable: skin -->
4006 <param id="108" name="Rainbow Color" value="0.000" /> 4006 <param id="108" name="Rainbow Color" value="0.000" />
4007 4007
4008 <param id="110" name="Red Skin" value="0.000" /> 4008 <param id="110" name="Red Skin" value="0.000" />
4009 4009
4010 <param id="111" name="Pigment" value="0.000" /> 4010 <param id="111" name="Pigment" value="0.000" />
4011 4011
4012 <param id="116" name="Rosy Complexion" value="0.000" /> 4012 <param id="116" name="Rosy Complexion" value="0.000" />
4013 4013
4014 <param id="117" name="Lip Pinkness" value="0.000" /> 4014 <param id="117" name="Lip Pinkness" value="0.000" />
4015 4015
4016 <param id="150" name="Body Definition" value="0.740" /> 4016 <param id="150" name="Body Definition" value="0.740" />
4017 4017
4018 <param id="162" name="Facial Definition" value="1.000" /> 4018 <param id="162" name="Facial Definition" value="1.000" />
4019 4019
4020 <param id="163" name="Wrinkles" value="1.000" /> 4020 <param id="163" name="Wrinkles" value="1.000" />
4021 4021
4022 <param id="165" name="Freckles" value="0.380" /> 4022 <param id="165" name="Freckles" value="0.380" />
4023 4023
4024 <param id="700" name="Lipstick Color" value="0.250" /> 4024 <param id="700" name="Lipstick Color" value="0.250" />
4025 4025
4026 <param id="701" name="Lipstick" value="0.000" /> 4026 <param id="701" name="Lipstick" value="0.000" />
4027 4027
4028 <param id="702" name="Lipgloss" value="0.000" /> 4028 <param id="702" name="Lipgloss" value="0.000" />
4029 4029
4030 <param id="703" name="Eyeliner" value="0.000" /> 4030 <param id="703" name="Eyeliner" value="0.000" />
4031 4031
4032 <param id="704" name="Blush" value="0.000" /> 4032 <param id="704" name="Blush" value="0.000" />
4033 4033
4034 <param id="705" name="Blush Color" value="0.500" /> 4034 <param id="705" name="Blush Color" value="0.500" />
4035 4035
4036 <param id="706" name="Out Shdw Opacity" value="0.600" /> 4036 <param id="706" name="Out Shdw Opacity" value="0.600" />
4037 4037
4038 <param id="707" name="Outer Shadow" value="0.000" /> 4038 <param id="707" name="Outer Shadow" value="0.000" />
4039 4039
4040 <param id="708" name="Out Shdw Color" value="0.000" /> 4040 <param id="708" name="Out Shdw Color" value="0.000" />
4041 4041
4042 <param id="709" name="Inner Shadow" value="0.000" /> 4042 <param id="709" name="Inner Shadow" value="0.000" />
4043 4043
4044 <param id="710" name="Nail Polish" value="0.000" /> 4044 <param id="710" name="Nail Polish" value="0.000" />
4045 4045
4046 <param id="711" name="Blush Opacity" value="0.500" /> 4046 <param id="711" name="Blush Opacity" value="0.500" />
4047 4047
4048 <param id="712" name="In Shdw Color" value="0.000" /> 4048 <param id="712" name="In Shdw Color" value="0.000" />
4049 4049
4050 <param id="713" name="In Shdw Opacity" value="0.700" /> 4050 <param id="713" name="In Shdw Opacity" value="0.700" />
4051 4051
4052 <param id="714" name="Eyeliner Color" value="0.000" /> 4052 <param id="714" name="Eyeliner Color" value="0.000" />
4053 4053
4054 <param id="715" name="Nail Polish Color" value="0.000" /> 4054 <param id="715" name="Nail Polish Color" value="0.000" />
4055 4055
4056 <texture te="0" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 4056 <texture te="0" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
4057 4057
4058 <texture te="5" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 4058 <texture te="5" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
4059 4059
4060 <texture te="6" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 4060 <texture te="6" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
4061 4061
4062<!-- wearable: hair --> 4062<!-- wearable: hair -->
4063 <param id="16" name="Pointy_Eyebrows" value="-0.095" /> 4063 <param id="16" name="Pointy_Eyebrows" value="-0.095" />
4064 4064
4065 <param id="31" name="Arced_Eyebrows" value="0.610" /> 4065 <param id="31" name="Arced_Eyebrows" value="0.610" />
4066 4066
4067 <param id="112" name="Rainbow Color" value="0.000" /> 4067 <param id="112" name="Rainbow Color" value="0.000" />
4068 4068
4069 <param id="113" name="Red Hair" value="0.150" /> 4069 <param id="113" name="Red Hair" value="0.150" />
4070 4070
4071 <param id="114" name="Blonde Hair" value="1.000" /> 4071 <param id="114" name="Blonde Hair" value="1.000" />
4072 4072
4073 <param id="115" name="White Hair" value="1.000" /> 4073 <param id="115" name="White Hair" value="1.000" />
4074 4074
4075 <param id="119" name="Eyebrow Size" value="0.110" /> 4075 <param id="119" name="Eyebrow Size" value="0.110" />
4076 4076
4077 <param id="130" name="Front Fringe" value="0.000" /> 4077 <param id="130" name="Front Fringe" value="0.000" />
4078 4078
4079 <param id="131" name="Side Fringe" value="0.000" /> 4079 <param id="131" name="Side Fringe" value="0.000" />
4080 4080
4081 <param id="132" name="Back Fringe" value="0.550" /> 4081 <param id="132" name="Back Fringe" value="0.550" />
4082 4082
4083 <param id="133" name="Hair Front" value="0.000" /> 4083 <param id="133" name="Hair Front" value="0.000" />
4084 4084
4085 <param id="134" name="Hair Sides" value="0.120" /> 4085 <param id="134" name="Hair Sides" value="0.120" />
4086 4086
4087 <param id="135" name="Hair Back" value="0.490" /> 4087 <param id="135" name="Hair Back" value="0.490" />
4088 4088
4089 <param id="136" name="Hair Sweep" value="0.820" /> 4089 <param id="136" name="Hair Sweep" value="0.820" />
4090 4090
4091 <param id="137" name="Hair Tilt" value="0.500" /> 4091 <param id="137" name="Hair Tilt" value="0.500" />
4092 4092
4093 <param id="140" name="Hair_Part_Middle" value="0.000" /> 4093 <param id="140" name="Hair_Part_Middle" value="0.000" />
4094 4094
4095 <param id="141" name="Hair_Part_Right" value="0.000" /> 4095 <param id="141" name="Hair_Part_Right" value="0.000" />
4096 4096
4097 <param id="142" name="Hair_Part_Left" value="0.000" /> 4097 <param id="142" name="Hair_Part_Left" value="0.000" />
4098 4098
4099 <param id="143" name="Hair_Sides_Full" value="0.290" /> 4099 <param id="143" name="Hair_Sides_Full" value="0.290" />
4100 4100
4101 <param id="166" name="Sideburns" value="0.710" /> 4101 <param id="166" name="Sideburns" value="0.710" />
4102 4102
4103 <param id="167" name="Moustache" value="0.000" /> 4103 <param id="167" name="Moustache" value="0.000" />
4104 4104
4105 <param id="168" name="Soulpatch" value="0.000" /> 4105 <param id="168" name="Soulpatch" value="0.000" />
4106 4106
4107 <param id="169" name="Chin Curtains" value="0.000" /> 4107 <param id="169" name="Chin Curtains" value="0.000" />
4108 4108
4109 <param id="177" name="Hair_Rumpled" value="0.770" /> 4109 <param id="177" name="Hair_Rumpled" value="0.770" />
4110 4110
4111 <param id="181" name="Hair_Big_Front" value="0.260" /> 4111 <param id="181" name="Hair_Big_Front" value="0.260" />
4112 4112
4113 <param id="182" name="Hair_Big_Top" value="0.680" /> 4113 <param id="182" name="Hair_Big_Top" value="0.680" />
4114 4114
4115 <param id="183" name="Hair_Big_Back" value="0.200" /> 4115 <param id="183" name="Hair_Big_Back" value="0.200" />
4116 4116
4117 <param id="184" name="Hair_Spiked" value="0.000" /> 4117 <param id="184" name="Hair_Spiked" value="0.000" />
4118 4118
4119 <param id="192" name="Bangs_Part_Middle" value="0.000" /> 4119 <param id="192" name="Bangs_Part_Middle" value="0.000" />
4120 4120
4121 <param id="674" name="Hair_Shear_Back" value="0.110" /> 4121 <param id="674" name="Hair_Shear_Back" value="0.110" />
4122 4122
4123 <param id="750" name="Eyebrow Density" value="0.580" /> 4123 <param id="750" name="Eyebrow Density" value="0.580" />
4124 4124
4125 <param id="752" name="Hair Thickness" value="0.690" /> 4125 <param id="752" name="Hair Thickness" value="0.690" />
4126 4126
4127 <param id="754" name="Hair_Taper_Back" value="-0.670" /> 4127 <param id="754" name="Hair_Taper_Back" value="-0.670" />
4128 4128
4129 <param id="755" name="Hair_Taper_Front" value="-0.060" /> 4129 <param id="755" name="Hair_Taper_Front" value="-0.060" />
4130 4130
4131 <param id="757" name="Lower_Eyebrows" value="1.760" /> 4131 <param id="757" name="Lower_Eyebrows" value="1.760" />
4132 4132
4133 <param id="762" name="Hair_Shear_Front" value="0.060" /> 4133 <param id="762" name="Hair_Shear_Front" value="0.060" />
4134 4134
4135 <param id="763" name="Hair Volume" value="0.670" /> 4135 <param id="763" name="Hair Volume" value="0.670" />
4136 4136
4137 <texture te="4" uuid="7ca39b4c-bd19-4699-aff7-f93fd03d3e7b" /> 4137 <texture te="4" uuid="7ca39b4c-bd19-4699-aff7-f93fd03d3e7b" />
4138 4138
4139<!-- wearable: eyes --> 4139<!-- wearable: eyes -->
4140 <param id="98" name="Eye Lightness" value="0.080" /> 4140 <param id="98" name="Eye Lightness" value="0.080" />
4141 4141
4142 <param id="99" name="Eye Color" value="0.160" /> 4142 <param id="99" name="Eye Color" value="0.160" />
4143 4143
4144 <texture te="3" uuid="6522e74d-1660-4e7f-b601-6f48c1659a77" /> 4144 <texture te="3" uuid="6522e74d-1660-4e7f-b601-6f48c1659a77" />
4145 </archetype> 4145 </archetype>
4146 4146
4147 <archetype name="F W Obese"> 4147 <archetype name="F W Obese">
4148<!-- wearable: shape --> 4148<!-- wearable: shape -->
4149 <param id="1" name="Big_Brow" value="0.597" /> 4149 <param id="1" name="Big_Brow" value="0.597" />
4150 4150
4151 <param id="2" name="Nose_Big_Out" value="-0.800" /> 4151 <param id="2" name="Nose_Big_Out" value="-0.800" />
4152 4152
4153 <param id="4" name="Broad_Nostrils" value="0.835" /> 4153 <param id="4" name="Broad_Nostrils" value="0.835" />
4154 4154
4155 <param id="5" name="Cleft_Chin" value="0.813" /> 4155 <param id="5" name="Cleft_Chin" value="0.813" />
4156 4156
4157 <param id="6" name="Bulbous_Nose_Tip" value="0.961" /> 4157 <param id="6" name="Bulbous_Nose_Tip" value="0.961" />
4158 4158
4159 <param id="7" name="Weak_Chin" value="-0.230" /> 4159 <param id="7" name="Weak_Chin" value="-0.230" />
4160 4160
4161 <param id="8" name="Double_Chin" value="1.500" /> 4161 <param id="8" name="Double_Chin" value="1.500" />
4162 4162
4163 <param id="10" name="Sunken_Cheeks" value="-0.960" /> 4163 <param id="10" name="Sunken_Cheeks" value="-0.960" />
4164 4164
4165 <param id="11" name="Noble_Nose_Bridge" value="0.440" /> 4165 <param id="11" name="Noble_Nose_Bridge" value="0.440" />
4166 4166
4167 <param id="12" name="Jowls" value="1.000" /> 4167 <param id="12" name="Jowls" value="1.000" />
4168 4168
4169 <param id="13" name="Cleft_Chin_Upper" value="1.500" /> 4169 <param id="13" name="Cleft_Chin_Upper" value="1.500" />
4170 4170
4171 <param id="14" name="High_Cheek_Bones" value="0.280" /> 4171 <param id="14" name="High_Cheek_Bones" value="0.280" />
4172 4172
4173 <param id="15" name="Ears_Out" value="0.860" /> 4173 <param id="15" name="Ears_Out" value="0.860" />
4174 4174
4175 <param id="17" name="Square_Jaw" value="0.055" /> 4175 <param id="17" name="Square_Jaw" value="0.055" />
4176 4176
4177 <param id="18" name="Puffy_Upper_Cheeks" value="0.740" /> 4177 <param id="18" name="Puffy_Upper_Cheeks" value="0.740" />
4178 4178
4179 <param id="19" name="Upturned_Nose_Tip" value="-0.250" /> 4179 <param id="19" name="Upturned_Nose_Tip" value="-0.250" />
4180 4180
4181 <param id="20" name="Bulbous_Nose" value="-0.260" /> 4181 <param id="20" name="Bulbous_Nose" value="-0.260" />
4182 4182
4183 <param id="21" name="Upper_Eyelid_Fold" value="0.505" /> 4183 <param id="21" name="Upper_Eyelid_Fold" value="0.505" />
4184 4184
4185 <param id="22" name="Attached_Earlobes" value="1.000" /> 4185 <param id="22" name="Attached_Earlobes" value="1.000" />
4186 4186
4187 <param id="23" name="Baggy_Eyes" value="1.060" /> 4187 <param id="23" name="Baggy_Eyes" value="1.060" />
4188 4188
4189 <param id="24" name="Wide_Eyes" value="0.915" /> 4189 <param id="24" name="Wide_Eyes" value="0.915" />
4190 4190
4191 <param id="25" name="Wide_Lip_Cleft" value="1.500" /> 4191 <param id="25" name="Wide_Lip_Cleft" value="1.500" />
4192 4192
4193 <param id="27" name="Wide_Nose_Bridge" value="-1.200" /> 4193 <param id="27" name="Wide_Nose_Bridge" value="-1.200" />
4194 4194
4195 <param id="33" name="Height" value="-1.096" /> 4195 <param id="33" name="Height" value="-1.096" />
4196 4196
4197 <param id="34" name="Thickness" value="1.104" /> 4197 <param id="34" name="Thickness" value="1.104" />
4198 4198
4199 <param id="35" name="Big_Ears" value="0.350" /> 4199 <param id="35" name="Big_Ears" value="0.350" />
4200 4200
4201 <param id="36" name="Shoulders" value="-0.840" /> 4201 <param id="36" name="Shoulders" value="-0.840" />
4202 4202
4203 <param id="37" name="Hip Width" value="-0.500" /> 4203 <param id="37" name="Hip Width" value="-0.500" />
4204 4204
4205 <param id="38" name="Torso Length" value="1.000" /> 4205 <param id="38" name="Torso Length" value="1.000" />
4206 4206
4207 <param id="80" name="male" value="0.000" /> 4207 <param id="80" name="male" value="0.000" />
4208 4208
4209 <param id="105" name="Breast Size" value="0.760" /> 4209 <param id="105" name="Breast Size" value="0.760" />
4210 4210
4211 <param id="151" name="Big_Butt_Legs" value="1.000" /> 4211 <param id="151" name="Big_Butt_Legs" value="1.000" />
4212 4212
4213 <param id="155" name="Lip Width" value="-0.900" /> 4213 <param id="155" name="Lip Width" value="-0.900" />
4214 4214
4215 <param id="157" name="Belly Size" value="0.670" /> 4215 <param id="157" name="Belly Size" value="0.670" />
4216 4216
4217 <param id="185" name="Deep_Chin" value="1.000" /> 4217 <param id="185" name="Deep_Chin" value="1.000" />
4218 4218
4219 <param id="193" name="Head Shape" value="0.830" /> 4219 <param id="193" name="Head Shape" value="0.830" />
4220 4220
4221 <param id="196" name="Eye Spacing" value="-1.010" /> 4221 <param id="196" name="Eye Spacing" value="-1.010" />
4222 4222
4223 <param id="505" name="Lip Thickness" value="0.480" /> 4223 <param id="505" name="Lip Thickness" value="0.480" />
4224 4224
4225 <param id="506" name="Mouth_Height" value="-0.320" /> 4225 <param id="506" name="Mouth_Height" value="-0.320" />
4226 4226
4227 <param id="507" name="Breast_Gravity" value="1.195" /> 4227 <param id="507" name="Breast_Gravity" value="1.195" />
4228 4228
4229 <param id="515" name="Foot_Size" value="0.200" /> 4229 <param id="515" name="Foot_Size" value="0.200" />
4230 4230
4231 <param id="517" name="Wide_Nose" value="-0.050" /> 4231 <param id="517" name="Wide_Nose" value="-0.050" />
4232 4232
4233 <param id="518" name="Eyelashes_Long" value="0.420" /> 4233 <param id="518" name="Eyelashes_Long" value="0.420" />
4234 4234
4235 <param id="629" name="Forehead Angle" value="0.340" /> 4235 <param id="629" name="Forehead Angle" value="0.340" />
4236 4236
4237 <param id="637" name="Body Fat" value="0.950" /> 4237 <param id="637" name="Body Fat" value="0.950" />
4238 4238
4239 <param id="646" name="Egg_Head" value="-0.886" /> 4239 <param id="646" name="Egg_Head" value="-0.886" />
4240 4240
4241 <param id="647" name="Squash_Stretch_Head" value="-0.275" /> 4241 <param id="647" name="Squash_Stretch_Head" value="-0.275" />
4242 4242
4243 <param id="649" name="Torso Muscles" value="0.940" /> 4243 <param id="649" name="Torso Muscles" value="0.940" />
4244 4244
4245 <param id="650" name="Eyelid_Corner_Up" value="-0.650" /> 4245 <param id="650" name="Eyelid_Corner_Up" value="-0.650" />
4246 4246
4247 <param id="652" name="Leg Muscles" value="0.790" /> 4247 <param id="652" name="Leg Muscles" value="0.790" />
4248 4248
4249 <param id="653" name="Tall_Lips" value="0.470" /> 4249 <param id="653" name="Tall_Lips" value="0.470" />
4250 4250
4251 <param id="656" name="Crooked_Nose" value="-0.120" /> 4251 <param id="656" name="Crooked_Nose" value="-0.120" />
4252 4252
4253 <param id="659" name="Mouth Corner" value="0.800" /> 4253 <param id="659" name="Mouth Corner" value="0.800" />
4254 4254
4255 <param id="662" name="Face Shear" value="0.460" /> 4255 <param id="662" name="Face Shear" value="0.460" />
4256 4256
4257 <param id="663" name="Shift_Mouth" value="0.760" /> 4257 <param id="663" name="Shift_Mouth" value="0.760" />
4258 4258
4259 <param id="664" name="Pop_Eye" value="-0.156" /> 4259 <param id="664" name="Pop_Eye" value="-0.156" />
4260 4260
4261 <param id="665" name="Jaw_Jut" value="-0.640" /> 4261 <param id="665" name="Jaw_Jut" value="-0.640" />
4262 4262
4263 <param id="675" name="Hand Size" value="-0.168" /> 4263 <param id="675" name="Hand Size" value="-0.168" />
4264 4264
4265 <param id="676" name="Love_Handles" value="-0.550" /> 4265 <param id="676" name="Love_Handles" value="-0.550" />
4266 4266
4267 <param id="678" name="Torso Muscles" value="0.790" /> 4267 <param id="678" name="Torso Muscles" value="0.790" />
4268 4268
4269 <param id="682" name="Head Size" value="0.380" /> 4269 <param id="682" name="Head Size" value="0.380" />
4270 4270
4271 <param id="683" name="Neck Thickness" value="0.164" /> 4271 <param id="683" name="Neck Thickness" value="0.164" />
4272 4272
4273 <param id="684" name="Breast_Female_Clevage" value="-0.140" /> 4273 <param id="684" name="Breast_Female_Clevage" value="-0.140" />
4274 4274
4275 <param id="685" name="Chest_Male_No_Pecs" value="0.200" /> 4275 <param id="685" name="Chest_Male_No_Pecs" value="0.200" />
4276 4276
4277 <param id="690" name="Eye Size" value="0.230" /> 4277 <param id="690" name="Eye Size" value="0.230" />
4278 4278
4279 <param id="692" name="Leg Length" value="0.360" /> 4279 <param id="692" name="Leg Length" value="0.360" />
4280 4280
4281 <param id="693" name="Arm Length" value="0.240" /> 4281 <param id="693" name="Arm Length" value="0.240" />
4282 4282
4283 <param id="753" name="Saddlebags" value="2.720" /> 4283 <param id="753" name="Saddlebags" value="2.720" />
4284 4284
4285 <param id="756" name="Neck Length" value="-0.460" /> 4285 <param id="756" name="Neck Length" value="-0.460" />
4286 4286
4287 <param id="758" name="Lower_Bridge_Nose" value="-1.350" /> 4287 <param id="758" name="Lower_Bridge_Nose" value="-1.350" />
4288 4288
4289 <param id="759" name="Low_Septum_Nose" value="0.650" /> 4289 <param id="759" name="Low_Septum_Nose" value="0.650" />
4290 4290
4291 <param id="760" name="Jaw_Angle" value="-1.200" /> 4291 <param id="760" name="Jaw_Angle" value="-1.200" />
4292 4292
4293 <param id="764" name="Lip_Cleft_Deep" value="0.537" /> 4293 <param id="764" name="Lip_Cleft_Deep" value="0.537" />
4294 4294
4295 <param id="765" name="Puffy_Lower_Lids" value="2.500" /> 4295 <param id="765" name="Puffy_Lower_Lids" value="2.500" />
4296 4296
4297 <param id="769" name="Eye Depth" value="0.320" /> 4297 <param id="769" name="Eye Depth" value="0.320" />
4298 4298
4299 <param id="773" name="Head Length" value="0.880" /> 4299 <param id="773" name="Head Length" value="0.880" />
4300 4300
4301<!-- wearable: skin --> 4301<!-- wearable: skin -->
4302 <param id="108" name="Rainbow Color" value="0.000" /> 4302 <param id="108" name="Rainbow Color" value="0.000" />
4303 4303
4304 <param id="110" name="Red Skin" value="0.097" /> 4304 <param id="110" name="Red Skin" value="0.097" />
4305 4305
4306 <param id="111" name="Pigment" value="0.070" /> 4306 <param id="111" name="Pigment" value="0.070" />
4307 4307
4308 <param id="116" name="Rosy Complexion" value="0.450" /> 4308 <param id="116" name="Rosy Complexion" value="0.450" />
4309 4309
4310 <param id="117" name="Lip Pinkness" value="0.720" /> 4310 <param id="117" name="Lip Pinkness" value="0.720" />
4311 4311
4312 <param id="150" name="Body Definition" value="0.000" /> 4312 <param id="150" name="Body Definition" value="0.000" />
4313 4313
4314 <param id="162" name="Facial Definition" value="0.000" /> 4314 <param id="162" name="Facial Definition" value="0.000" />
4315 4315
4316 <param id="163" name="Wrinkles" value="0.000" /> 4316 <param id="163" name="Wrinkles" value="0.000" />
4317 4317
4318 <param id="165" name="Freckles" value="0.830" /> 4318 <param id="165" name="Freckles" value="0.830" />
4319 4319
4320 <param id="700" name="Lipstick Color" value="0.250" /> 4320 <param id="700" name="Lipstick Color" value="0.250" />
4321 4321
4322 <param id="701" name="Lipstick" value="0.000" /> 4322 <param id="701" name="Lipstick" value="0.000" />
4323 4323
4324 <param id="702" name="Lipgloss" value="0.000" /> 4324 <param id="702" name="Lipgloss" value="0.000" />
4325 4325
4326 <param id="703" name="Eyeliner" value="0.000" /> 4326 <param id="703" name="Eyeliner" value="0.000" />
4327 4327
4328 <param id="704" name="Blush" value="0.000" /> 4328 <param id="704" name="Blush" value="0.000" />
4329 4329
4330 <param id="705" name="Blush Color" value="0.500" /> 4330 <param id="705" name="Blush Color" value="0.500" />
4331 4331
4332 <param id="706" name="Out Shdw Opacity" value="0.600" /> 4332 <param id="706" name="Out Shdw Opacity" value="0.600" />
4333 4333
4334 <param id="707" name="Outer Shadow" value="0.000" /> 4334 <param id="707" name="Outer Shadow" value="0.000" />
4335 4335
4336 <param id="708" name="Out Shdw Color" value="0.000" /> 4336 <param id="708" name="Out Shdw Color" value="0.000" />
4337 4337
4338 <param id="709" name="Inner Shadow" value="0.000" /> 4338 <param id="709" name="Inner Shadow" value="0.000" />
4339 4339
4340 <param id="710" name="Nail Polish" value="0.000" /> 4340 <param id="710" name="Nail Polish" value="0.000" />
4341 4341
4342 <param id="711" name="Blush Opacity" value="0.500" /> 4342 <param id="711" name="Blush Opacity" value="0.500" />
4343 4343
4344 <param id="712" name="In Shdw Color" value="0.000" /> 4344 <param id="712" name="In Shdw Color" value="0.000" />
4345 4345
4346 <param id="713" name="In Shdw Opacity" value="0.700" /> 4346 <param id="713" name="In Shdw Opacity" value="0.700" />
4347 4347
4348 <param id="714" name="Eyeliner Color" value="0.000" /> 4348 <param id="714" name="Eyeliner Color" value="0.000" />
4349 4349
4350 <param id="715" name="Nail Polish Color" value="0.000" /> 4350 <param id="715" name="Nail Polish Color" value="0.000" />
4351 4351
4352 <texture te="0" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 4352 <texture te="0" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
4353 4353
4354 <texture te="5" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 4354 <texture te="5" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
4355 4355
4356 <texture te="6" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 4356 <texture te="6" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
4357 4357
4358<!-- wearable: hair --> 4358<!-- wearable: hair -->
4359 <param id="16" name="Pointy_Eyebrows" value="-0.095" /> 4359 <param id="16" name="Pointy_Eyebrows" value="-0.095" />
4360 4360
4361 <param id="31" name="Arced_Eyebrows" value="0.610" /> 4361 <param id="31" name="Arced_Eyebrows" value="0.610" />
4362 4362
4363 <param id="112" name="Rainbow Color" value="0.000" /> 4363 <param id="112" name="Rainbow Color" value="0.000" />
4364 4364
4365 <param id="113" name="Red Hair" value="0.120" /> 4365 <param id="113" name="Red Hair" value="0.120" />
4366 4366
4367 <param id="114" name="Blonde Hair" value="0.460" /> 4367 <param id="114" name="Blonde Hair" value="0.460" />
4368 4368
4369 <param id="115" name="White Hair" value="0.220" /> 4369 <param id="115" name="White Hair" value="0.220" />
4370 4370
4371 <param id="119" name="Eyebrow Size" value="0.110" /> 4371 <param id="119" name="Eyebrow Size" value="0.110" />
4372 4372
4373 <param id="130" name="Front Fringe" value="0.000" /> 4373 <param id="130" name="Front Fringe" value="0.000" />
4374 4374
4375 <param id="131" name="Side Fringe" value="0.080" /> 4375 <param id="131" name="Side Fringe" value="0.080" />
4376 4376
4377 <param id="132" name="Back Fringe" value="0.200" /> 4377 <param id="132" name="Back Fringe" value="0.200" />
4378 4378
4379 <param id="133" name="Hair Front" value="0.520" /> 4379 <param id="133" name="Hair Front" value="0.520" />
4380 4380
4381 <param id="134" name="Hair Sides" value="0.400" /> 4381 <param id="134" name="Hair Sides" value="0.400" />
4382 4382
4383 <param id="135" name="Hair Back" value="0.560" /> 4383 <param id="135" name="Hair Back" value="0.560" />
4384 4384
4385 <param id="136" name="Hair Sweep" value="1.000" /> 4385 <param id="136" name="Hair Sweep" value="1.000" />
4386 4386
4387 <param id="137" name="Hair Tilt" value="0.500" /> 4387 <param id="137" name="Hair Tilt" value="0.500" />
4388 4388
4389 <param id="140" name="Hair_Part_Middle" value="0.000" /> 4389 <param id="140" name="Hair_Part_Middle" value="0.000" />
4390 4390
4391 <param id="141" name="Hair_Part_Right" value="0.000" /> 4391 <param id="141" name="Hair_Part_Right" value="0.000" />
4392 4392
4393 <param id="142" name="Hair_Part_Left" value="0.000" /> 4393 <param id="142" name="Hair_Part_Left" value="0.000" />
4394 4394
4395 <param id="143" name="Hair_Sides_Full" value="0.290" /> 4395 <param id="143" name="Hair_Sides_Full" value="0.290" />
4396 4396
4397 <param id="166" name="Sideburns" value="0.710" /> 4397 <param id="166" name="Sideburns" value="0.710" />
4398 4398
4399 <param id="167" name="Moustache" value="0.000" /> 4399 <param id="167" name="Moustache" value="0.000" />
4400 4400
4401 <param id="168" name="Soulpatch" value="0.000" /> 4401 <param id="168" name="Soulpatch" value="0.000" />
4402 4402
4403 <param id="169" name="Chin Curtains" value="0.000" /> 4403 <param id="169" name="Chin Curtains" value="0.000" />
4404 4404
4405 <param id="177" name="Hair_Rumpled" value="0.770" /> 4405 <param id="177" name="Hair_Rumpled" value="0.770" />
4406 4406
4407 <param id="181" name="Hair_Big_Front" value="0.260" /> 4407 <param id="181" name="Hair_Big_Front" value="0.260" />
4408 4408
4409 <param id="182" name="Hair_Big_Top" value="0.200" /> 4409 <param id="182" name="Hair_Big_Top" value="0.200" />
4410 4410
4411 <param id="183" name="Hair_Big_Back" value="0.300" /> 4411 <param id="183" name="Hair_Big_Back" value="0.300" />
4412 4412
4413 <param id="184" name="Hair_Spiked" value="0.000" /> 4413 <param id="184" name="Hair_Spiked" value="0.000" />
4414 4414
4415 <param id="192" name="Bangs_Part_Middle" value="0.000" /> 4415 <param id="192" name="Bangs_Part_Middle" value="0.000" />
4416 4416
4417 <param id="674" name="Hair_Shear_Back" value="0.110" /> 4417 <param id="674" name="Hair_Shear_Back" value="0.110" />
4418 4418
4419 <param id="750" name="Eyebrow Density" value="0.580" /> 4419 <param id="750" name="Eyebrow Density" value="0.580" />
4420 4420
4421 <param id="752" name="Hair Thickness" value="0.690" /> 4421 <param id="752" name="Hair Thickness" value="0.690" />
4422 4422
4423 <param id="754" name="Hair_Taper_Back" value="-0.670" /> 4423 <param id="754" name="Hair_Taper_Back" value="-0.670" />
4424 4424
4425 <param id="755" name="Hair_Taper_Front" value="-0.060" /> 4425 <param id="755" name="Hair_Taper_Front" value="-0.060" />
4426 4426
4427 <param id="757" name="Lower_Eyebrows" value="1.760" /> 4427 <param id="757" name="Lower_Eyebrows" value="1.760" />
4428 4428
4429 <param id="762" name="Hair_Shear_Front" value="0.210" /> 4429 <param id="762" name="Hair_Shear_Front" value="0.210" />
4430 4430
4431 <param id="763" name="Hair Volume" value="0.520" /> 4431 <param id="763" name="Hair Volume" value="0.520" />
4432 4432
4433 <texture te="4" uuid="7ca39b4c-bd19-4699-aff7-f93fd03d3e7b" /> 4433 <texture te="4" uuid="7ca39b4c-bd19-4699-aff7-f93fd03d3e7b" />
4434 4434
4435<!-- wearable: eyes --> 4435<!-- wearable: eyes -->
4436 <param id="98" name="Eye Lightness" value="0.080" /> 4436 <param id="98" name="Eye Lightness" value="0.080" />
4437 4437
4438 <param id="99" name="Eye Color" value="0.160" /> 4438 <param id="99" name="Eye Color" value="0.160" />
4439 4439
4440 <texture te="3" uuid="6522e74d-1660-4e7f-b601-6f48c1659a77" /> 4440 <texture te="3" uuid="6522e74d-1660-4e7f-b601-6f48c1659a77" />
4441 </archetype> 4441 </archetype>
4442 4442
4443 <archetype name="F W Muscle"> 4443 <archetype name="F W Muscle">
4444<!-- wearable: shape --> 4444<!-- wearable: shape -->
4445 <param id="1" name="Big_Brow" value="0.183" /> 4445 <param id="1" name="Big_Brow" value="0.183" />
4446 4446
4447 <param id="2" name="Nose_Big_Out" value="-0.404" /> 4447 <param id="2" name="Nose_Big_Out" value="-0.404" />
4448 4448
4449 <param id="4" name="Broad_Nostrils" value="-0.095" /> 4449 <param id="4" name="Broad_Nostrils" value="-0.095" />
4450 4450
4451 <param id="5" name="Cleft_Chin" value="0.373" /> 4451 <param id="5" name="Cleft_Chin" value="0.373" />
4452 4452
4453 <param id="6" name="Bulbous_Nose_Tip" value="0.389" /> 4453 <param id="6" name="Bulbous_Nose_Tip" value="0.389" />
4454 4454
4455 <param id="7" name="Weak_Chin" value="-0.200" /> 4455 <param id="7" name="Weak_Chin" value="-0.200" />
4456 4456
4457 <param id="8" name="Double_Chin" value="-0.160" /> 4457 <param id="8" name="Double_Chin" value="-0.160" />
4458 4458
4459 <param id="10" name="Sunken_Cheeks" value="-0.060" /> 4459 <param id="10" name="Sunken_Cheeks" value="-0.060" />
4460 4460
4461 <param id="11" name="Noble_Nose_Bridge" value="0.340" /> 4461 <param id="11" name="Noble_Nose_Bridge" value="0.340" />
4462 4462
4463 <param id="12" name="Jowls" value="0.520" /> 4463 <param id="12" name="Jowls" value="0.520" />
4464 4464
4465 <param id="13" name="Cleft_Chin_Upper" value="0.630" /> 4465 <param id="13" name="Cleft_Chin_Upper" value="0.630" />
4466 4466
4467 <param id="14" name="High_Cheek_Bones" value="0.370" /> 4467 <param id="14" name="High_Cheek_Bones" value="0.370" />
4468 4468
4469 <param id="15" name="Ears_Out" value="-0.060" /> 4469 <param id="15" name="Ears_Out" value="-0.060" />
4470 4470
4471 <param id="17" name="Square_Jaw" value="-0.200" /> 4471 <param id="17" name="Square_Jaw" value="-0.200" />
4472 4472
4473 <param id="18" name="Puffy_Upper_Cheeks" value="-0.060" /> 4473 <param id="18" name="Puffy_Upper_Cheeks" value="-0.060" />
4474 4474
4475 <param id="19" name="Upturned_Nose_Tip" value="0.025" /> 4475 <param id="19" name="Upturned_Nose_Tip" value="0.025" />
4476 4476
4477 <param id="20" name="Bulbous_Nose" value="-0.240" /> 4477 <param id="20" name="Bulbous_Nose" value="-0.240" />
4478 4478
4479 <param id="21" name="Upper_Eyelid_Fold" value="-0.200" /> 4479 <param id="21" name="Upper_Eyelid_Fold" value="-0.200" />
4480 4480
4481 <param id="22" name="Attached_Earlobes" value="0.000" /> 4481 <param id="22" name="Attached_Earlobes" value="0.000" />
4482 4482
4483 <param id="23" name="Baggy_Eyes" value="-0.500" /> 4483 <param id="23" name="Baggy_Eyes" value="-0.500" />
4484 4484
4485 <param id="24" name="Wide_Eyes" value="0.425" /> 4485 <param id="24" name="Wide_Eyes" value="0.425" />
4486 4486
4487 <param id="25" name="Wide_Lip_Cleft" value="-0.087" /> 4487 <param id="25" name="Wide_Lip_Cleft" value="-0.087" />
4488 4488
4489 <param id="27" name="Wide_Nose_Bridge" value="0.000" /> 4489 <param id="27" name="Wide_Nose_Bridge" value="0.000" />
4490 4490
4491 <param id="33" name="Height" value="0.580" /> 4491 <param id="33" name="Height" value="0.580" />
4492 4492
4493 <param id="34" name="Thickness" value="0.660" /> 4493 <param id="34" name="Thickness" value="0.660" />
4494 4494
4495 <param id="35" name="Big_Ears" value="-0.040" /> 4495 <param id="35" name="Big_Ears" value="-0.040" />
4496 4496
4497 <param id="36" name="Shoulders" value="-0.456" /> 4497 <param id="36" name="Shoulders" value="-0.456" />
4498 4498
4499 <param id="37" name="Hip Width" value="-0.380" /> 4499 <param id="37" name="Hip Width" value="-0.380" />
4500 4500
4501 <param id="38" name="Torso Length" value="-0.160" /> 4501 <param id="38" name="Torso Length" value="-0.160" />
4502 4502
4503 <param id="80" name="male" value="0.000" /> 4503 <param id="80" name="male" value="0.000" />
4504 4504
4505 <param id="105" name="Breast Size" value="0.370" /> 4505 <param id="105" name="Breast Size" value="0.370" />
4506 4506
4507 <param id="151" name="Big_Butt_Legs" value="-0.050" /> 4507 <param id="151" name="Big_Butt_Legs" value="-0.050" />
4508 4508
4509 <param id="155" name="Lip Width" value="-0.636" /> 4509 <param id="155" name="Lip Width" value="-0.636" />
4510 4510
4511 <param id="157" name="Belly Size" value="0.050" /> 4511 <param id="157" name="Belly Size" value="0.050" />
4512 4512
4513 <param id="185" name="Deep_Chin" value="-0.360" /> 4513 <param id="185" name="Deep_Chin" value="-0.360" />
4514 4514
4515 <param id="193" name="Head Shape" value="0.890" /> 4515 <param id="193" name="Head Shape" value="0.890" />
4516 4516
4517 <param id="196" name="Eye Spacing" value="-0.020" /> 4517 <param id="196" name="Eye Spacing" value="-0.020" />
4518 4518
4519 <param id="505" name="Lip Thickness" value="0.600" /> 4519 <param id="505" name="Lip Thickness" value="0.600" />
4520 4520
4521 <param id="506" name="Mouth_Height" value="-0.320" /> 4521 <param id="506" name="Mouth_Height" value="-0.320" />
4522 4522
4523 <param id="507" name="Breast_Gravity" value="-0.940" /> 4523 <param id="507" name="Breast_Gravity" value="-0.940" />
4524 4524
4525 <param id="515" name="Foot_Size" value="0.880" /> 4525 <param id="515" name="Foot_Size" value="0.880" />
4526 4526
4527 <param id="517" name="Wide_Nose" value="0.070" /> 4527 <param id="517" name="Wide_Nose" value="0.070" />
4528 4528
4529 <param id="518" name="Eyelashes_Long" value="0.330" /> 4529 <param id="518" name="Eyelashes_Long" value="0.330" />
4530 4530
4531 <param id="629" name="Forehead Angle" value="0.070" /> 4531 <param id="629" name="Forehead Angle" value="0.070" />
4532 4532
4533 <param id="637" name="Body Fat" value="0.120" /> 4533 <param id="637" name="Body Fat" value="0.120" />
4534 4534
4535 <param id="646" name="Egg_Head" value="0.586" /> 4535 <param id="646" name="Egg_Head" value="0.586" />
4536 4536
4537 <param id="647" name="Squash_Stretch_Head" value="0.160" /> 4537 <param id="647" name="Squash_Stretch_Head" value="0.160" />
4538 4538
4539 <param id="649" name="Torso Muscles" value="0.670" /> 4539 <param id="649" name="Torso Muscles" value="0.670" />
4540 4540
4541 <param id="650" name="Eyelid_Corner_Up" value="0.400" /> 4541 <param id="650" name="Eyelid_Corner_Up" value="0.400" />
4542 4542
4543 <param id="652" name="Leg Muscles" value="0.570" /> 4543 <param id="652" name="Leg Muscles" value="0.570" />
4544 4544
4545 <param id="653" name="Tall_Lips" value="-0.190" /> 4545 <param id="653" name="Tall_Lips" value="-0.190" />
4546 4546
4547 <param id="656" name="Crooked_Nose" value="0.000" /> 4547 <param id="656" name="Crooked_Nose" value="0.000" />
4548 4548
4549 <param id="659" name="Mouth Corner" value="0.620" /> 4549 <param id="659" name="Mouth Corner" value="0.620" />
4550 4550
4551 <param id="662" name="Face Shear" value="0.500" /> 4551 <param id="662" name="Face Shear" value="0.500" />
4552 4552
4553 <param id="663" name="Shift_Mouth" value="0.000" /> 4553 <param id="663" name="Shift_Mouth" value="0.000" />
4554 4554
4555 <param id="664" name="Pop_Eye" value="0.000" /> 4555 <param id="664" name="Pop_Eye" value="0.000" />
4556 4556
4557 <param id="665" name="Jaw_Jut" value="-0.160" /> 4557 <param id="665" name="Jaw_Jut" value="-0.160" />
4558 4558
4559 <param id="675" name="Hand Size" value="-0.042" /> 4559 <param id="675" name="Hand Size" value="-0.042" />
4560 4560
4561 <param id="676" name="Love_Handles" value="-0.340" /> 4561 <param id="676" name="Love_Handles" value="-0.340" />
4562 4562
4563 <param id="678" name="Torso Muscles" value="0.790" /> 4563 <param id="678" name="Torso Muscles" value="0.790" />
4564 4564
4565 <param id="682" name="Head Size" value="0.710" /> 4565 <param id="682" name="Head Size" value="0.710" />
4566 4566
4567 <param id="683" name="Neck Thickness" value="-0.088" /> 4567 <param id="683" name="Neck Thickness" value="-0.088" />
4568 4568
4569 <param id="684" name="Breast_Female_Clevage" value="0.644" /> 4569 <param id="684" name="Breast_Female_Clevage" value="0.644" />
4570 4570
4571 <param id="685" name="Chest_Male_No_Pecs" value="0.200" /> 4571 <param id="685" name="Chest_Male_No_Pecs" value="0.200" />
4572 4572
4573 <param id="690" name="Eye Size" value="0.480" /> 4573 <param id="690" name="Eye Size" value="0.480" />
4574 4574
4575 <param id="692" name="Leg Length" value="0.420" /> 4575 <param id="692" name="Leg Length" value="0.420" />
4576 4576
4577 <param id="693" name="Arm Length" value="0.520" /> 4577 <param id="693" name="Arm Length" value="0.520" />
4578 4578
4579 <param id="753" name="Saddlebags" value="0.620" /> 4579 <param id="753" name="Saddlebags" value="0.620" />
4580 4580
4581 <param id="756" name="Neck Length" value="0.060" /> 4581 <param id="756" name="Neck Length" value="0.060" />
4582 4582
4583 <param id="758" name="Lower_Bridge_Nose" value="0.570" /> 4583 <param id="758" name="Lower_Bridge_Nose" value="0.570" />
4584 4584
4585 <param id="759" name="Low_Septum_Nose" value="1.300" /> 4585 <param id="759" name="Low_Septum_Nose" value="1.300" />
4586 4586
4587 <param id="760" name="Jaw_Angle" value="1.104" /> 4587 <param id="760" name="Jaw_Angle" value="1.104" />
4588 4588
4589 <param id="764" name="Lip_Cleft_Deep" value="0.622" /> 4589 <param id="764" name="Lip_Cleft_Deep" value="0.622" />
4590 4590
4591 <param id="765" name="Puffy_Lower_Lids" value="-0.300" /> 4591 <param id="765" name="Puffy_Lower_Lids" value="-0.300" />
4592 4592
4593 <param id="769" name="Eye Depth" value="0.310" /> 4593 <param id="769" name="Eye Depth" value="0.310" />
4594 4594
4595 <param id="773" name="Head Length" value="0.720" /> 4595 <param id="773" name="Head Length" value="0.720" />
4596 4596
4597<!-- wearable: skin --> 4597<!-- wearable: skin -->
4598 <param id="108" name="Rainbow Color" value="0.000" /> 4598 <param id="108" name="Rainbow Color" value="0.000" />
4599 4599
4600 <param id="110" name="Red Skin" value="0.082" /> 4600 <param id="110" name="Red Skin" value="0.082" />
4601 4601
4602 <param id="111" name="Pigment" value="0.120" /> 4602 <param id="111" name="Pigment" value="0.120" />
4603 4603
4604 <param id="116" name="Rosy Complexion" value="0.370" /> 4604 <param id="116" name="Rosy Complexion" value="0.370" />
4605 4605
4606 <param id="117" name="Lip Pinkness" value="0.640" /> 4606 <param id="117" name="Lip Pinkness" value="0.640" />
4607 4607
4608 <param id="150" name="Body Definition" value="0.870" /> 4608 <param id="150" name="Body Definition" value="0.870" />
4609 4609
4610 <param id="162" name="Facial Definition" value="0.000" /> 4610 <param id="162" name="Facial Definition" value="0.000" />
4611 4611
4612 <param id="163" name="Wrinkles" value="0.000" /> 4612 <param id="163" name="Wrinkles" value="0.000" />
4613 4613
4614 <param id="165" name="Freckles" value="0.460" /> 4614 <param id="165" name="Freckles" value="0.460" />
4615 4615
4616 <param id="700" name="Lipstick Color" value="0.250" /> 4616 <param id="700" name="Lipstick Color" value="0.250" />
4617 4617
4618 <param id="701" name="Lipstick" value="0.000" /> 4618 <param id="701" name="Lipstick" value="0.000" />
4619 4619
4620 <param id="702" name="Lipgloss" value="0.000" /> 4620 <param id="702" name="Lipgloss" value="0.000" />
4621 4621
4622 <param id="703" name="Eyeliner" value="0.000" /> 4622 <param id="703" name="Eyeliner" value="0.000" />
4623 4623
4624 <param id="704" name="Blush" value="0.000" /> 4624 <param id="704" name="Blush" value="0.000" />
4625 4625
4626 <param id="705" name="Blush Color" value="0.500" /> 4626 <param id="705" name="Blush Color" value="0.500" />
4627 4627
4628 <param id="706" name="Out Shdw Opacity" value="0.600" /> 4628 <param id="706" name="Out Shdw Opacity" value="0.600" />
4629 4629
4630 <param id="707" name="Outer Shadow" value="0.000" /> 4630 <param id="707" name="Outer Shadow" value="0.000" />
4631 4631
4632 <param id="708" name="Out Shdw Color" value="0.000" /> 4632 <param id="708" name="Out Shdw Color" value="0.000" />
4633 4633
4634 <param id="709" name="Inner Shadow" value="0.000" /> 4634 <param id="709" name="Inner Shadow" value="0.000" />
4635 4635
4636 <param id="710" name="Nail Polish" value="0.000" /> 4636 <param id="710" name="Nail Polish" value="0.000" />
4637 4637
4638 <param id="711" name="Blush Opacity" value="0.500" /> 4638 <param id="711" name="Blush Opacity" value="0.500" />
4639 4639
4640 <param id="712" name="In Shdw Color" value="0.000" /> 4640 <param id="712" name="In Shdw Color" value="0.000" />
4641 4641
4642 <param id="713" name="In Shdw Opacity" value="0.700" /> 4642 <param id="713" name="In Shdw Opacity" value="0.700" />
4643 4643
4644 <param id="714" name="Eyeliner Color" value="0.000" /> 4644 <param id="714" name="Eyeliner Color" value="0.000" />
4645 4645
4646 <param id="715" name="Nail Polish Color" value="0.000" /> 4646 <param id="715" name="Nail Polish Color" value="0.000" />
4647 4647
4648 <texture te="0" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 4648 <texture te="0" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
4649 4649
4650 <texture te="5" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 4650 <texture te="5" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
4651 4651
4652 <texture te="6" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 4652 <texture te="6" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
4653 4653
4654<!-- wearable: hair --> 4654<!-- wearable: hair -->
4655 <param id="16" name="Pointy_Eyebrows" value="0.280" /> 4655 <param id="16" name="Pointy_Eyebrows" value="0.280" />
4656 4656
4657 <param id="31" name="Arced_Eyebrows" value="0.270" /> 4657 <param id="31" name="Arced_Eyebrows" value="0.270" />
4658 4658
4659 <param id="112" name="Rainbow Color" value="0.000" /> 4659 <param id="112" name="Rainbow Color" value="0.000" />
4660 4660
4661 <param id="113" name="Red Hair" value="0.640" /> 4661 <param id="113" name="Red Hair" value="0.640" />
4662 4662
4663 <param id="114" name="Blonde Hair" value="0.030" /> 4663 <param id="114" name="Blonde Hair" value="0.030" />
4664 4664
4665 <param id="115" name="White Hair" value="0.000" /> 4665 <param id="115" name="White Hair" value="0.000" />
4666 4666
4667 <param id="119" name="Eyebrow Size" value="0.470" /> 4667 <param id="119" name="Eyebrow Size" value="0.470" />
4668 4668
4669 <param id="130" name="Front Fringe" value="0.570" /> 4669 <param id="130" name="Front Fringe" value="0.570" />
4670 4670
4671 <param id="131" name="Side Fringe" value="0.720" /> 4671 <param id="131" name="Side Fringe" value="0.720" />
4672 4672
4673 <param id="132" name="Back Fringe" value="0.600" /> 4673 <param id="132" name="Back Fringe" value="0.600" />
4674 4674
4675 <param id="133" name="Hair Front" value="0.040" /> 4675 <param id="133" name="Hair Front" value="0.040" />
4676 4676
4677 <param id="134" name="Hair Sides" value="0.580" /> 4677 <param id="134" name="Hair Sides" value="0.580" />
4678 4678
4679 <param id="135" name="Hair Back" value="0.610" /> 4679 <param id="135" name="Hair Back" value="0.610" />
4680 4680
4681 <param id="136" name="Hair Sweep" value="0.370" /> 4681 <param id="136" name="Hair Sweep" value="0.370" />
4682 4682
4683 <param id="137" name="Hair Tilt" value="0.510" /> 4683 <param id="137" name="Hair Tilt" value="0.510" />
4684 4684
4685 <param id="140" name="Hair_Part_Middle" value="0.000" /> 4685 <param id="140" name="Hair_Part_Middle" value="0.000" />
4686 4686
4687 <param id="141" name="Hair_Part_Right" value="1.520" /> 4687 <param id="141" name="Hair_Part_Right" value="1.520" />
4688 4688
4689 <param id="142" name="Hair_Part_Left" value="0.000" /> 4689 <param id="142" name="Hair_Part_Left" value="0.000" />
4690 4690
4691 <param id="143" name="Hair_Sides_Full" value="0.455" /> 4691 <param id="143" name="Hair_Sides_Full" value="0.455" />
4692 4692
4693 <param id="166" name="Sideburns" value="0.710" /> 4693 <param id="166" name="Sideburns" value="0.710" />
4694 4694
4695 <param id="167" name="Moustache" value="0.000" /> 4695 <param id="167" name="Moustache" value="0.000" />
4696 4696
4697 <param id="168" name="Soulpatch" value="0.000" /> 4697 <param id="168" name="Soulpatch" value="0.000" />
4698 4698
4699 <param id="169" name="Chin Curtains" value="0.000" /> 4699 <param id="169" name="Chin Curtains" value="0.000" />
4700 4700
4701 <param id="177" name="Hair_Rumpled" value="0.410" /> 4701 <param id="177" name="Hair_Rumpled" value="0.410" />
4702 4702
4703 <param id="181" name="Hair_Big_Front" value="0.060" /> 4703 <param id="181" name="Hair_Big_Front" value="0.060" />
4704 4704
4705 <param id="182" name="Hair_Big_Top" value="0.640" /> 4705 <param id="182" name="Hair_Big_Top" value="0.640" />
4706 4706
4707 <param id="183" name="Hair_Big_Back" value="0.440" /> 4707 <param id="183" name="Hair_Big_Back" value="0.440" />
4708 4708
4709 <param id="184" name="Hair_Spiked" value="0.000" /> 4709 <param id="184" name="Hair_Spiked" value="0.000" />
4710 4710
4711 <param id="192" name="Bangs_Part_Middle" value="0.000" /> 4711 <param id="192" name="Bangs_Part_Middle" value="0.000" />
4712 4712
4713 <param id="674" name="Hair_Shear_Back" value="0.740" /> 4713 <param id="674" name="Hair_Shear_Back" value="0.740" />
4714 4714
4715 <param id="750" name="Eyebrow Density" value="0.610" /> 4715 <param id="750" name="Eyebrow Density" value="0.610" />
4716 4716
4717 <param id="752" name="Hair Thickness" value="0.690" /> 4717 <param id="752" name="Hair Thickness" value="0.690" />
4718 4718
4719 <param id="754" name="Hair_Taper_Back" value="-0.490" /> 4719 <param id="754" name="Hair_Taper_Back" value="-0.490" />
4720 4720
4721 <param id="755" name="Hair_Taper_Front" value="-0.030" /> 4721 <param id="755" name="Hair_Taper_Front" value="-0.030" />
4722 4722
4723 <param id="757" name="Lower_Eyebrows" value="0.560" /> 4723 <param id="757" name="Lower_Eyebrows" value="0.560" />
4724 4724
4725 <param id="762" name="Hair_Shear_Front" value="0.060" /> 4725 <param id="762" name="Hair_Shear_Front" value="0.060" />
4726 4726
4727 <param id="763" name="Hair Volume" value="0.520" /> 4727 <param id="763" name="Hair Volume" value="0.520" />
4728 4728
4729 <texture te="4" uuid="7ca39b4c-bd19-4699-aff7-f93fd03d3e7b" /> 4729 <texture te="4" uuid="7ca39b4c-bd19-4699-aff7-f93fd03d3e7b" />
4730 4730
4731<!-- wearable: eyes --> 4731<!-- wearable: eyes -->
4732 <param id="98" name="Eye Lightness" value="0.170" /> 4732 <param id="98" name="Eye Lightness" value="0.170" />
4733 4733
4734 <param id="99" name="Eye Color" value="0.270" /> 4734 <param id="99" name="Eye Color" value="0.270" />
4735 4735
4736 <texture te="3" uuid="6522e74d-1660-4e7f-b601-6f48c1659a77" /> 4736 <texture te="3" uuid="6522e74d-1660-4e7f-b601-6f48c1659a77" />
4737 </archetype> 4737 </archetype>
4738 4738
4739 <archetype name="F W Chubby"> 4739 <archetype name="F W Chubby">
4740<!-- wearable: shape --> 4740<!-- wearable: shape -->
4741 <param id="1" name="Big_Brow" value="0.436" /> 4741 <param id="1" name="Big_Brow" value="0.436" />
4742 4742
4743 <param id="2" name="Nose_Big_Out" value="-0.074" /> 4743 <param id="2" name="Nose_Big_Out" value="-0.074" />
4744 4744
4745 <param id="4" name="Broad_Nostrils" value="0.100" /> 4745 <param id="4" name="Broad_Nostrils" value="0.100" />
4746 4746
4747 <param id="5" name="Cleft_Chin" value="-0.100" /> 4747 <param id="5" name="Cleft_Chin" value="-0.100" />
4748 4748
4749 <param id="6" name="Bulbous_Nose_Tip" value="0.012" /> 4749 <param id="6" name="Bulbous_Nose_Tip" value="0.012" />
4750 4750
4751 <param id="7" name="Weak_Chin" value="0.150" /> 4751 <param id="7" name="Weak_Chin" value="0.150" />
4752 4752
4753 <param id="8" name="Double_Chin" value="-0.500" /> 4753 <param id="8" name="Double_Chin" value="-0.500" />
4754 4754
4755 <param id="10" name="Sunken_Cheeks" value="-0.285" /> 4755 <param id="10" name="Sunken_Cheeks" value="-0.285" />
4756 4756
4757 <param id="11" name="Noble_Nose_Bridge" value="0.440" /> 4757 <param id="11" name="Noble_Nose_Bridge" value="0.440" />
4758 4758
4759 <param id="12" name="Jowls" value="0.160" /> 4759 <param id="12" name="Jowls" value="0.160" />
4760 4760
4761 <param id="13" name="Cleft_Chin_Upper" value="0.000" /> 4761 <param id="13" name="Cleft_Chin_Upper" value="0.000" />
4762 4762
4763 <param id="14" name="High_Cheek_Bones" value="0.250" /> 4763 <param id="14" name="High_Cheek_Bones" value="0.250" />
4764 4764
4765 <param id="15" name="Ears_Out" value="0.580" /> 4765 <param id="15" name="Ears_Out" value="0.580" />
4766 4766
4767 <param id="17" name="Square_Jaw" value="-0.050" /> 4767 <param id="17" name="Square_Jaw" value="-0.050" />
4768 4768
4769 <param id="18" name="Puffy_Upper_Cheeks" value="1.500" /> 4769 <param id="18" name="Puffy_Upper_Cheeks" value="1.500" />
4770 4770
4771 <param id="19" name="Upturned_Nose_Tip" value="-0.950" /> 4771 <param id="19" name="Upturned_Nose_Tip" value="-0.950" />
4772 4772
4773 <param id="20" name="Bulbous_Nose" value="-0.240" /> 4773 <param id="20" name="Bulbous_Nose" value="-0.240" />
4774 4774
4775 <param id="21" name="Upper_Eyelid_Fold" value="0.160" /> 4775 <param id="21" name="Upper_Eyelid_Fold" value="0.160" />
4776 4776
4777 <param id="22" name="Attached_Earlobes" value="0.520" /> 4777 <param id="22" name="Attached_Earlobes" value="0.520" />
4778 4778
4779 <param id="23" name="Baggy_Eyes" value="0.040" /> 4779 <param id="23" name="Baggy_Eyes" value="0.040" />
4780 4780
4781 <param id="24" name="Wide_Eyes" value="0.810" /> 4781 <param id="24" name="Wide_Eyes" value="0.810" />
4782 4782
4783 <param id="25" name="Wide_Lip_Cleft" value="-0.110" /> 4783 <param id="25" name="Wide_Lip_Cleft" value="-0.110" />
4784 4784
4785 <param id="27" name="Wide_Nose_Bridge" value="-0.850" /> 4785 <param id="27" name="Wide_Nose_Bridge" value="-0.850" />
4786 4786
4787 <param id="33" name="Height" value="0.151" /> 4787 <param id="33" name="Height" value="0.151" />
4788 4788
4789 <param id="34" name="Thickness" value="0.312" /> 4789 <param id="34" name="Thickness" value="0.312" />
4790 4790
4791 <param id="35" name="Big_Ears" value="0.800" /> 4791 <param id="35" name="Big_Ears" value="0.800" />
4792 4792
4793 <param id="36" name="Shoulders" value="-1.224" /> 4793 <param id="36" name="Shoulders" value="-1.224" />
4794 4794
4795 <param id="37" name="Hip Width" value="-0.080" /> 4795 <param id="37" name="Hip Width" value="-0.080" />
4796 4796
4797 <param id="38" name="Torso Length" value="0.740" /> 4797 <param id="38" name="Torso Length" value="0.740" />
4798 4798
4799 <param id="80" name="male" value="0.000" /> 4799 <param id="80" name="male" value="0.000" />
4800 4800
4801 <param id="105" name="Breast Size" value="0.730" /> 4801 <param id="105" name="Breast Size" value="0.730" />
4802 4802
4803 <param id="151" name="Big_Butt_Legs" value="0.230" /> 4803 <param id="151" name="Big_Butt_Legs" value="0.230" />
4804 4804
4805 <param id="155" name="Lip Width" value="0.002" /> 4805 <param id="155" name="Lip Width" value="0.002" />
4806 4806
4807 <param id="157" name="Belly Size" value="0.180" /> 4807 <param id="157" name="Belly Size" value="0.180" />
4808 4808
4809 <param id="185" name="Deep_Chin" value="-0.600" /> 4809 <param id="185" name="Deep_Chin" value="-0.600" />
4810 4810
4811 <param id="193" name="Head Shape" value="0.470" /> 4811 <param id="193" name="Head Shape" value="0.470" />
4812 4812
4813 <param id="196" name="Eye Spacing" value="-0.170" /> 4813 <param id="196" name="Eye Spacing" value="-0.170" />
4814 4814
4815 <param id="505" name="Lip Thickness" value="0.190" /> 4815 <param id="505" name="Lip Thickness" value="0.190" />
4816 4816
4817 <param id="506" name="Mouth_Height" value="-0.920" /> 4817 <param id="506" name="Mouth_Height" value="-0.920" />
4818 4818
4819 <param id="507" name="Breast_Gravity" value="0.565" /> 4819 <param id="507" name="Breast_Gravity" value="0.565" />
4820 4820
4821 <param id="515" name="Foot_Size" value="1.760" /> 4821 <param id="515" name="Foot_Size" value="1.760" />
4822 4822
4823 <param id="517" name="Wide_Nose" value="0.055" /> 4823 <param id="517" name="Wide_Nose" value="0.055" />
4824 4824
4825 <param id="518" name="Eyelashes_Long" value="-0.066" /> 4825 <param id="518" name="Eyelashes_Long" value="-0.066" />
4826 4826
4827 <param id="629" name="Forehead Angle" value="0.470" /> 4827 <param id="629" name="Forehead Angle" value="0.470" />
4828 4828
4829 <param id="637" name="Body Fat" value="0.280" /> 4829 <param id="637" name="Body Fat" value="0.280" />
4830 4830
4831 <param id="646" name="Egg_Head" value="0.379" /> 4831 <param id="646" name="Egg_Head" value="0.379" />
4832 4832
4833 <param id="647" name="Squash_Stretch_Head" value="-0.020" /> 4833 <param id="647" name="Squash_Stretch_Head" value="-0.020" />
4834 4834
4835 <param id="649" name="Torso Muscles" value="0.540" /> 4835 <param id="649" name="Torso Muscles" value="0.540" />
4836 4836
4837 <param id="650" name="Eyelid_Corner_Up" value="-0.250" /> 4837 <param id="650" name="Eyelid_Corner_Up" value="-0.250" />
4838 4838
4839 <param id="652" name="Leg Muscles" value="0.740" /> 4839 <param id="652" name="Leg Muscles" value="0.740" />
4840 4840
4841 <param id="653" name="Tall_Lips" value="-0.310" /> 4841 <param id="653" name="Tall_Lips" value="-0.310" />
4842 4842
4843 <param id="656" name="Crooked_Nose" value="0.000" /> 4843 <param id="656" name="Crooked_Nose" value="0.000" />
4844 4844
4845 <param id="659" name="Mouth Corner" value="0.660" /> 4845 <param id="659" name="Mouth Corner" value="0.660" />
4846 4846
4847 <param id="662" name="Face Shear" value="0.500" /> 4847 <param id="662" name="Face Shear" value="0.500" />
4848 4848
4849 <param id="663" name="Shift_Mouth" value="0.000" /> 4849 <param id="663" name="Shift_Mouth" value="0.000" />
4850 4850
4851 <param id="664" name="Pop_Eye" value="0.000" /> 4851 <param id="664" name="Pop_Eye" value="0.000" />
4852 4852
4853 <param id="665" name="Jaw_Jut" value="-0.040" /> 4853 <param id="665" name="Jaw_Jut" value="-0.040" />
4854 4854
4855 <param id="675" name="Hand Size" value="-0.084" /> 4855 <param id="675" name="Hand Size" value="-0.084" />
4856 4856
4857 <param id="676" name="Love_Handles" value="-0.370" /> 4857 <param id="676" name="Love_Handles" value="-0.370" />
4858 4858
4859 <param id="678" name="Torso Muscles" value="0.790" /> 4859 <param id="678" name="Torso Muscles" value="0.790" />
4860 4860
4861 <param id="682" name="Head Size" value="0.840" /> 4861 <param id="682" name="Head Size" value="0.840" />
4862 4862
4863 <param id="683" name="Neck Thickness" value="-0.130" /> 4863 <param id="683" name="Neck Thickness" value="-0.130" />
4864 4864
4865 <param id="684" name="Breast_Female_Clevage" value="0.084" /> 4865 <param id="684" name="Breast_Female_Clevage" value="0.084" />
4866 4866
4867 <param id="685" name="Chest_Male_No_Pecs" value="0.200" /> 4867 <param id="685" name="Chest_Male_No_Pecs" value="0.200" />
4868 4868
4869 <param id="690" name="Eye Size" value="0.370" /> 4869 <param id="690" name="Eye Size" value="0.370" />
4870 4870
4871 <param id="692" name="Leg Length" value="0.420" /> 4871 <param id="692" name="Leg Length" value="0.420" />
4872 4872
4873 <param id="693" name="Arm Length" value="0.480" /> 4873 <param id="693" name="Arm Length" value="0.480" />
4874 4874
4875 <param id="753" name="Saddlebags" value="1.040" /> 4875 <param id="753" name="Saddlebags" value="1.040" />
4876 4876
4877 <param id="756" name="Neck Length" value="-0.060" /> 4877 <param id="756" name="Neck Length" value="-0.060" />
4878 4878
4879 <param id="758" name="Lower_Bridge_Nose" value="-0.090" /> 4879 <param id="758" name="Lower_Bridge_Nose" value="-0.090" />
4880 4880
4881 <param id="759" name="Low_Septum_Nose" value="0.425" /> 4881 <param id="759" name="Low_Septum_Nose" value="0.425" />
4882 4882
4883 <param id="760" name="Jaw_Angle" value="0.400" /> 4883 <param id="760" name="Jaw_Angle" value="0.400" />
4884 4884
4885 <param id="764" name="Lip_Cleft_Deep" value="-0.024" /> 4885 <param id="764" name="Lip_Cleft_Deep" value="-0.024" />
4886 4886
4887 <param id="765" name="Puffy_Lower_Lids" value="0.456" /> 4887 <param id="765" name="Puffy_Lower_Lids" value="0.456" />
4888 4888
4889 <param id="769" name="Eye Depth" value="0.420" /> 4889 <param id="769" name="Eye Depth" value="0.420" />
4890 4890
4891 <param id="773" name="Head Length" value="0.720" /> 4891 <param id="773" name="Head Length" value="0.720" />
4892 4892
4893<!-- wearable: skin --> 4893<!-- wearable: skin -->
4894 <param id="108" name="Rainbow Color" value="0.000" /> 4894 <param id="108" name="Rainbow Color" value="0.000" />
4895 4895
4896 <param id="110" name="Red Skin" value="0.014" /> 4896 <param id="110" name="Red Skin" value="0.014" />
4897 4897
4898 <param id="111" name="Pigment" value="0.140" /> 4898 <param id="111" name="Pigment" value="0.140" />
4899 4899
4900 <param id="116" name="Rosy Complexion" value="0.370" /> 4900 <param id="116" name="Rosy Complexion" value="0.370" />
4901 4901
4902 <param id="117" name="Lip Pinkness" value="0.640" /> 4902 <param id="117" name="Lip Pinkness" value="0.640" />
4903 4903
4904 <param id="150" name="Body Definition" value="0.500" /> 4904 <param id="150" name="Body Definition" value="0.500" />
4905 4905
4906 <param id="162" name="Facial Definition" value="0.120" /> 4906 <param id="162" name="Facial Definition" value="0.120" />
4907 4907
4908 <param id="163" name="Wrinkles" value="0.000" /> 4908 <param id="163" name="Wrinkles" value="0.000" />
4909 4909
4910 <param id="165" name="Freckles" value="0.710" /> 4910 <param id="165" name="Freckles" value="0.710" />
4911 4911
4912 <param id="700" name="Lipstick Color" value="0.250" /> 4912 <param id="700" name="Lipstick Color" value="0.250" />
4913 4913
4914 <param id="701" name="Lipstick" value="0.000" /> 4914 <param id="701" name="Lipstick" value="0.000" />
4915 4915
4916 <param id="702" name="Lipgloss" value="0.000" /> 4916 <param id="702" name="Lipgloss" value="0.000" />
4917 4917
4918 <param id="703" name="Eyeliner" value="0.000" /> 4918 <param id="703" name="Eyeliner" value="0.000" />
4919 4919
4920 <param id="704" name="Blush" value="0.000" /> 4920 <param id="704" name="Blush" value="0.000" />
4921 4921
4922 <param id="705" name="Blush Color" value="0.500" /> 4922 <param id="705" name="Blush Color" value="0.500" />
4923 4923
4924 <param id="706" name="Out Shdw Opacity" value="0.600" /> 4924 <param id="706" name="Out Shdw Opacity" value="0.600" />
4925 4925
4926 <param id="707" name="Outer Shadow" value="0.000" /> 4926 <param id="707" name="Outer Shadow" value="0.000" />
4927 4927
4928 <param id="708" name="Out Shdw Color" value="0.000" /> 4928 <param id="708" name="Out Shdw Color" value="0.000" />
4929 4929
4930 <param id="709" name="Inner Shadow" value="0.000" /> 4930 <param id="709" name="Inner Shadow" value="0.000" />
4931 4931
4932 <param id="710" name="Nail Polish" value="0.000" /> 4932 <param id="710" name="Nail Polish" value="0.000" />
4933 4933
4934 <param id="711" name="Blush Opacity" value="0.500" /> 4934 <param id="711" name="Blush Opacity" value="0.500" />
4935 4935
4936 <param id="712" name="In Shdw Color" value="0.000" /> 4936 <param id="712" name="In Shdw Color" value="0.000" />
4937 4937
4938 <param id="713" name="In Shdw Opacity" value="0.700" /> 4938 <param id="713" name="In Shdw Opacity" value="0.700" />
4939 4939
4940 <param id="714" name="Eyeliner Color" value="0.000" /> 4940 <param id="714" name="Eyeliner Color" value="0.000" />
4941 4941
4942 <param id="715" name="Nail Polish Color" value="0.000" /> 4942 <param id="715" name="Nail Polish Color" value="0.000" />
4943 4943
4944 <texture te="0" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 4944 <texture te="0" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
4945 4945
4946 <texture te="5" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 4946 <texture te="5" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
4947 4947
4948 <texture te="6" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 4948 <texture te="6" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
4949 4949
4950<!-- wearable: hair --> 4950<!-- wearable: hair -->
4951 <param id="16" name="Pointy_Eyebrows" value="0.040" /> 4951 <param id="16" name="Pointy_Eyebrows" value="0.040" />
4952 4952
4953 <param id="31" name="Arced_Eyebrows" value="0.570" /> 4953 <param id="31" name="Arced_Eyebrows" value="0.570" />
4954 4954
4955 <param id="112" name="Rainbow Color" value="0.000" /> 4955 <param id="112" name="Rainbow Color" value="0.000" />
4956 4956
4957 <param id="113" name="Red Hair" value="0.840" /> 4957 <param id="113" name="Red Hair" value="0.840" />
4958 4958
4959 <param id="114" name="Blonde Hair" value="0.520" /> 4959 <param id="114" name="Blonde Hair" value="0.520" />
4960 4960
4961 <param id="115" name="White Hair" value="0.000" /> 4961 <param id="115" name="White Hair" value="0.000" />
4962 4962
4963 <param id="119" name="Eyebrow Size" value="0.390" /> 4963 <param id="119" name="Eyebrow Size" value="0.390" />
4964 4964
4965 <param id="130" name="Front Fringe" value="0.720" /> 4965 <param id="130" name="Front Fringe" value="0.720" />
4966 4966
4967 <param id="131" name="Side Fringe" value="0.760" /> 4967 <param id="131" name="Side Fringe" value="0.760" />
4968 4968
4969 <param id="132" name="Back Fringe" value="0.800" /> 4969 <param id="132" name="Back Fringe" value="0.800" />
4970 4970
4971 <param id="133" name="Hair Front" value="0.000" /> 4971 <param id="133" name="Hair Front" value="0.000" />
4972 4972
4973 <param id="134" name="Hair Sides" value="0.580" /> 4973 <param id="134" name="Hair Sides" value="0.580" />
4974 4974
4975 <param id="135" name="Hair Back" value="0.680" /> 4975 <param id="135" name="Hair Back" value="0.680" />
4976 4976
4977 <param id="136" name="Hair Sweep" value="0.370" /> 4977 <param id="136" name="Hair Sweep" value="0.370" />
4978 4978
4979 <param id="137" name="Hair Tilt" value="0.620" /> 4979 <param id="137" name="Hair Tilt" value="0.620" />
4980 4980
4981 <param id="140" name="Hair_Part_Middle" value="1.240" /> 4981 <param id="140" name="Hair_Part_Middle" value="1.240" />
4982 4982
4983 <param id="141" name="Hair_Part_Right" value="1.520" /> 4983 <param id="141" name="Hair_Part_Right" value="1.520" />
4984 4984
4985 <param id="142" name="Hair_Part_Left" value="0.000" /> 4985 <param id="142" name="Hair_Part_Left" value="0.000" />
4986 4986
4987 <param id="143" name="Hair_Sides_Full" value="1.115" /> 4987 <param id="143" name="Hair_Sides_Full" value="1.115" />
4988 4988
4989 <param id="166" name="Sideburns" value="0.710" /> 4989 <param id="166" name="Sideburns" value="0.710" />
4990 4990
4991 <param id="167" name="Moustache" value="0.000" /> 4991 <param id="167" name="Moustache" value="0.000" />
4992 4992
4993 <param id="168" name="Soulpatch" value="0.000" /> 4993 <param id="168" name="Soulpatch" value="0.000" />
4994 4994
4995 <param id="169" name="Chin Curtains" value="0.000" /> 4995 <param id="169" name="Chin Curtains" value="0.000" />
4996 4996
4997 <param id="177" name="Hair_Rumpled" value="0.970" /> 4997 <param id="177" name="Hair_Rumpled" value="0.970" />
4998 4998
4999 <param id="181" name="Hair_Big_Front" value="0.020" /> 4999 <param id="181" name="Hair_Big_Front" value="0.020" />
5000 5000
5001 <param id="182" name="Hair_Big_Top" value="0.840" /> 5001 <param id="182" name="Hair_Big_Top" value="0.840" />
5002 5002
5003 <param id="183" name="Hair_Big_Back" value="0.600" /> 5003 <param id="183" name="Hair_Big_Back" value="0.600" />
5004 5004
5005 <param id="184" name="Hair_Spiked" value="0.000" /> 5005 <param id="184" name="Hair_Spiked" value="0.000" />
5006 5006
5007 <param id="192" name="Bangs_Part_Middle" value="1.000" /> 5007 <param id="192" name="Bangs_Part_Middle" value="1.000" />
5008 5008
5009 <param id="674" name="Hair_Shear_Back" value="1.700" /> 5009 <param id="674" name="Hair_Shear_Back" value="1.700" />
5010 5010
5011 <param id="750" name="Eyebrow Density" value="0.650" /> 5011 <param id="750" name="Eyebrow Density" value="0.650" />
5012 5012
5013 <param id="752" name="Hair Thickness" value="0.690" /> 5013 <param id="752" name="Hair Thickness" value="0.690" />
5014 5014
5015 <param id="754" name="Hair_Taper_Back" value="0.710" /> 5015 <param id="754" name="Hair_Taper_Back" value="0.710" />
5016 5016
5017 <param id="755" name="Hair_Taper_Front" value="-0.030" /> 5017 <param id="755" name="Hair_Taper_Front" value="-0.030" />
5018 5018
5019 <param id="757" name="Lower_Eyebrows" value="1.360" /> 5019 <param id="757" name="Lower_Eyebrows" value="1.360" />
5020 5020
5021 <param id="762" name="Hair_Shear_Front" value="0.060" /> 5021 <param id="762" name="Hair_Shear_Front" value="0.060" />
5022 5022
5023 <param id="763" name="Hair Volume" value="0.690" /> 5023 <param id="763" name="Hair Volume" value="0.690" />
5024 5024
5025 <texture te="4" uuid="7ca39b4c-bd19-4699-aff7-f93fd03d3e7b" /> 5025 <texture te="4" uuid="7ca39b4c-bd19-4699-aff7-f93fd03d3e7b" />
5026 5026
5027<!-- wearable: eyes --> 5027<!-- wearable: eyes -->
5028 <param id="98" name="Eye Lightness" value="0.220" /> 5028 <param id="98" name="Eye Lightness" value="0.220" />
5029 5029
5030 <param id="99" name="Eye Color" value="0.340" /> 5030 <param id="99" name="Eye Color" value="0.340" />
5031 5031
5032 <texture te="3" uuid="6522e74d-1660-4e7f-b601-6f48c1659a77" /> 5032 <texture te="3" uuid="6522e74d-1660-4e7f-b601-6f48c1659a77" />
5033 </archetype> 5033 </archetype>
5034 5034
5035 <archetype name="F Troll"> 5035 <archetype name="F Troll">
5036<!-- wearable: shape --> 5036<!-- wearable: shape -->
5037 <param id="1" name="Big_Brow" value="0.597" /> 5037 <param id="1" name="Big_Brow" value="0.597" />
5038 5038
5039 <param id="2" name="Nose_Big_Out" value="2.500" /> 5039 <param id="2" name="Nose_Big_Out" value="2.500" />
5040 5040
5041 <param id="4" name="Broad_Nostrils" value="0.205" /> 5041 <param id="4" name="Broad_Nostrils" value="0.205" />
5042 5042
5043 <param id="5" name="Cleft_Chin" value="0.945" /> 5043 <param id="5" name="Cleft_Chin" value="0.945" />
5044 5044
5045 <param id="6" name="Bulbous_Nose_Tip" value="0.220" /> 5045 <param id="6" name="Bulbous_Nose_Tip" value="0.220" />
5046 5046
5047 <param id="7" name="Weak_Chin" value="0.170" /> 5047 <param id="7" name="Weak_Chin" value="0.170" />
5048 5048
5049 <param id="8" name="Double_Chin" value="0.540" /> 5049 <param id="8" name="Double_Chin" value="0.540" />
5050 5050
5051 <param id="10" name="Sunken_Cheeks" value="-0.960" /> 5051 <param id="10" name="Sunken_Cheeks" value="-0.960" />
5052 5052
5053 <param id="11" name="Noble_Nose_Bridge" value="0.880" /> 5053 <param id="11" name="Noble_Nose_Bridge" value="0.880" />
5054 5054
5055 <param id="12" name="Jowls" value="0.490" /> 5055 <param id="12" name="Jowls" value="0.490" />
5056 5056
5057 <param id="13" name="Cleft_Chin_Upper" value="1.500" /> 5057 <param id="13" name="Cleft_Chin_Upper" value="1.500" />
5058 5058
5059 <param id="14" name="High_Cheek_Bones" value="0.280" /> 5059 <param id="14" name="High_Cheek_Bones" value="0.280" />
5060 5060
5061 <param id="15" name="Ears_Out" value="0.860" /> 5061 <param id="15" name="Ears_Out" value="0.860" />
5062 5062
5063 <param id="17" name="Square_Jaw" value="-0.500" /> 5063 <param id="17" name="Square_Jaw" value="-0.500" />
5064 5064
5065 <param id="18" name="Puffy_Upper_Cheeks" value="0.740" /> 5065 <param id="18" name="Puffy_Upper_Cheeks" value="0.740" />
5066 5066
5067 <param id="19" name="Upturned_Nose_Tip" value="1.000" /> 5067 <param id="19" name="Upturned_Nose_Tip" value="1.000" />
5068 5068
5069 <param id="20" name="Bulbous_Nose" value="1.040" /> 5069 <param id="20" name="Bulbous_Nose" value="1.040" />
5070 5070
5071 <param id="21" name="Upper_Eyelid_Fold" value="-0.200" /> 5071 <param id="21" name="Upper_Eyelid_Fold" value="-0.200" />
5072 5072
5073 <param id="22" name="Attached_Earlobes" value="0.000" /> 5073 <param id="22" name="Attached_Earlobes" value="0.000" />
5074 5074
5075 <param id="23" name="Baggy_Eyes" value="-0.500" /> 5075 <param id="23" name="Baggy_Eyes" value="-0.500" />
5076 5076
5077 <param id="24" name="Wide_Eyes" value="1.720" /> 5077 <param id="24" name="Wide_Eyes" value="1.720" />
5078 5078
5079 <param id="25" name="Wide_Lip_Cleft" value="1.500" /> 5079 <param id="25" name="Wide_Lip_Cleft" value="1.500" />
5080 5080
5081 <param id="27" name="Wide_Nose_Bridge" value="-0.225" /> 5081 <param id="27" name="Wide_Nose_Bridge" value="-0.225" />
5082 5082
5083 <param id="33" name="Height" value="-1.483" /> 5083 <param id="33" name="Height" value="-1.483" />
5084 5084
5085 <param id="34" name="Thickness" value="1.478" /> 5085 <param id="34" name="Thickness" value="1.478" />
5086 5086
5087 <param id="35" name="Big_Ears" value="-0.400" /> 5087 <param id="35" name="Big_Ears" value="-0.400" />
5088 5088
5089 <param id="36" name="Shoulders" value="0.760" /> 5089 <param id="36" name="Shoulders" value="0.760" />
5090 5090
5091 <param id="37" name="Hip Width" value="0.460" /> 5091 <param id="37" name="Hip Width" value="0.460" />
5092 5092
5093 <param id="38" name="Torso Length" value="0.060" /> 5093 <param id="38" name="Torso Length" value="0.060" />
5094 5094
5095 <param id="80" name="male" value="0.000" /> 5095 <param id="80" name="male" value="0.000" />
5096 5096
5097 <param id="105" name="Breast Size" value="0.970" /> 5097 <param id="105" name="Breast Size" value="0.970" />
5098 5098
5099 <param id="151" name="Big_Butt_Legs" value="0.160" /> 5099 <param id="151" name="Big_Butt_Legs" value="0.160" />
5100 5100
5101 <param id="155" name="Lip Width" value="1.300" /> 5101 <param id="155" name="Lip Width" value="1.300" />
5102 5102
5103 <param id="157" name="Belly Size" value="0.460" /> 5103 <param id="157" name="Belly Size" value="0.460" />
5104 5104
5105 <param id="185" name="Deep_Chin" value="0.040" /> 5105 <param id="185" name="Deep_Chin" value="0.040" />
5106 5106
5107 <param id="193" name="Head Shape" value="0.830" /> 5107 <param id="193" name="Head Shape" value="0.830" />
5108 5108
5109 <param id="196" name="Eye Spacing" value="0.010" /> 5109 <param id="196" name="Eye Spacing" value="0.010" />
5110 5110
5111 <param id="505" name="Lip Thickness" value="0.840" /> 5111 <param id="505" name="Lip Thickness" value="0.840" />
5112 5112
5113 <param id="506" name="Mouth_Height" value="1.160" /> 5113 <param id="506" name="Mouth_Height" value="1.160" />
5114 5114
5115 <param id="507" name="Breast_Gravity" value="0.845" /> 5115 <param id="507" name="Breast_Gravity" value="0.845" />
5116 5116
5117 <param id="515" name="Foot_Size" value="2.560" /> 5117 <param id="515" name="Foot_Size" value="2.560" />
5118 5118
5119 <param id="517" name="Wide_Nose" value="0.385" /> 5119 <param id="517" name="Wide_Nose" value="0.385" />
5120 5120
5121 <param id="518" name="Eyelashes_Long" value="1.284" /> 5121 <param id="518" name="Eyelashes_Long" value="1.284" />
5122 5122
5123 <param id="629" name="Forehead Angle" value="0.340" /> 5123 <param id="629" name="Forehead Angle" value="0.340" />
5124 5124
5125 <param id="637" name="Body Fat" value="0.470" /> 5125 <param id="637" name="Body Fat" value="0.470" />
5126 5126
5127 <param id="646" name="Egg_Head" value="-0.886" /> 5127 <param id="646" name="Egg_Head" value="-0.886" />
5128 5128
5129 <param id="647" name="Squash_Stretch_Head" value="-0.275" /> 5129 <param id="647" name="Squash_Stretch_Head" value="-0.275" />
5130 5130
5131 <param id="649" name="Torso Muscles" value="0.560" /> 5131 <param id="649" name="Torso Muscles" value="0.560" />
5132 5132
5133 <param id="650" name="Eyelid_Corner_Up" value="0.300" /> 5133 <param id="650" name="Eyelid_Corner_Up" value="0.300" />
5134 5134
5135 <param id="652" name="Leg Muscles" value="0.790" /> 5135 <param id="652" name="Leg Muscles" value="0.790" />
5136 5136
5137 <param id="653" name="Tall_Lips" value="2.000" /> 5137 <param id="653" name="Tall_Lips" value="2.000" />
5138 5138
5139 <param id="656" name="Crooked_Nose" value="0.280" /> 5139 <param id="656" name="Crooked_Nose" value="0.280" />
5140 5140
5141 <param id="659" name="Mouth Corner" value="1.000" /> 5141 <param id="659" name="Mouth Corner" value="1.000" />
5142 5142
5143 <param id="662" name="Face Shear" value="0.460" /> 5143 <param id="662" name="Face Shear" value="0.460" />
5144 5144
5145 <param id="663" name="Shift_Mouth" value="0.560" /> 5145 <param id="663" name="Shift_Mouth" value="0.560" />
5146 5146
5147 <param id="664" name="Pop_Eye" value="0.390" /> 5147 <param id="664" name="Pop_Eye" value="0.390" />
5148 5148
5149 <param id="665" name="Jaw_Jut" value="1.160" /> 5149 <param id="665" name="Jaw_Jut" value="1.160" />
5150 5150
5151 <param id="675" name="Hand Size" value="0.252" /> 5151 <param id="675" name="Hand Size" value="0.252" />
5152 5152
5153 <param id="676" name="Love_Handles" value="-1.000" /> 5153 <param id="676" name="Love_Handles" value="-1.000" />
5154 5154
5155 <param id="678" name="Torso Muscles" value="0.790" /> 5155 <param id="678" name="Torso Muscles" value="0.790" />
5156 5156
5157 <param id="682" name="Head Size" value="0.950" /> 5157 <param id="682" name="Head Size" value="0.950" />
5158 5158
5159 <param id="683" name="Neck Thickness" value="-0.238" /> 5159 <param id="683" name="Neck Thickness" value="-0.238" />
5160 5160
5161 <param id="684" name="Breast_Female_Clevage" value="0.404" /> 5161 <param id="684" name="Breast_Female_Clevage" value="0.404" />
5162 5162
5163 <param id="685" name="Chest_Male_No_Pecs" value="0.200" /> 5163 <param id="685" name="Chest_Male_No_Pecs" value="0.200" />
5164 5164
5165 <param id="690" name="Eye Size" value="0.870" /> 5165 <param id="690" name="Eye Size" value="0.870" />
5166 5166
5167 <param id="692" name="Leg Length" value="0.020" /> 5167 <param id="692" name="Leg Length" value="0.020" />
5168 5168
5169 <param id="693" name="Arm Length" value="-0.260" /> 5169 <param id="693" name="Arm Length" value="-0.260" />
5170 5170
5171 <param id="753" name="Saddlebags" value="1.355" /> 5171 <param id="753" name="Saddlebags" value="1.355" />
5172 5172
5173 <param id="756" name="Neck Length" value="-0.160" /> 5173 <param id="756" name="Neck Length" value="-0.160" />
5174 5174
5175 <param id="758" name="Lower_Bridge_Nose" value="1.020" /> 5175 <param id="758" name="Lower_Bridge_Nose" value="1.020" />
5176 5176
5177 <param id="759" name="Low_Septum_Nose" value="0.650" /> 5177 <param id="759" name="Low_Septum_Nose" value="0.650" />
5178 5178
5179 <param id="760" name="Jaw_Angle" value="-0.400" /> 5179 <param id="760" name="Jaw_Angle" value="-0.400" />
5180 5180
5181 <param id="764" name="Lip_Cleft_Deep" value="-0.075" /> 5181 <param id="764" name="Lip_Cleft_Deep" value="-0.075" />
5182 5182
5183 <param id="765" name="Puffy_Lower_Lids" value="2.472" /> 5183 <param id="765" name="Puffy_Lower_Lids" value="2.472" />
5184 5184
5185 <param id="769" name="Eye Depth" value="1.000" /> 5185 <param id="769" name="Eye Depth" value="1.000" />
5186 5186
5187 <param id="773" name="Head Length" value="0.880" /> 5187 <param id="773" name="Head Length" value="0.880" />
5188 5188
5189<!-- wearable: skin --> 5189<!-- wearable: skin -->
5190 <param id="108" name="Rainbow Color" value="0.820" /> 5190 <param id="108" name="Rainbow Color" value="0.820" />
5191 5191
5192 <param id="110" name="Red Skin" value="0.000" /> 5192 <param id="110" name="Red Skin" value="0.000" />
5193 5193
5194 <param id="111" name="Pigment" value="0.770" /> 5194 <param id="111" name="Pigment" value="0.770" />
5195 5195
5196 <param id="116" name="Rosy Complexion" value="0.450" /> 5196 <param id="116" name="Rosy Complexion" value="0.450" />
5197 5197
5198 <param id="117" name="Lip Pinkness" value="0.720" /> 5198 <param id="117" name="Lip Pinkness" value="0.720" />
5199 5199
5200 <param id="150" name="Body Definition" value="0.000" /> 5200 <param id="150" name="Body Definition" value="0.000" />
5201 5201
5202 <param id="162" name="Facial Definition" value="0.000" /> 5202 <param id="162" name="Facial Definition" value="0.000" />
5203 5203
5204 <param id="163" name="Wrinkles" value="0.000" /> 5204 <param id="163" name="Wrinkles" value="0.000" />
5205 5205
5206 <param id="165" name="Freckles" value="0.830" /> 5206 <param id="165" name="Freckles" value="0.830" />
5207 5207
5208 <param id="700" name="Lipstick Color" value="0.250" /> 5208 <param id="700" name="Lipstick Color" value="0.250" />
5209 5209
5210 <param id="701" name="Lipstick" value="0.000" /> 5210 <param id="701" name="Lipstick" value="0.000" />
5211 5211
5212 <param id="702" name="Lipgloss" value="0.000" /> 5212 <param id="702" name="Lipgloss" value="0.000" />
5213 5213
5214 <param id="703" name="Eyeliner" value="0.000" /> 5214 <param id="703" name="Eyeliner" value="0.000" />
5215 5215
5216 <param id="704" name="Blush" value="0.000" /> 5216 <param id="704" name="Blush" value="0.000" />
5217 5217
5218 <param id="705" name="Blush Color" value="0.500" /> 5218 <param id="705" name="Blush Color" value="0.500" />
5219 5219
5220 <param id="706" name="Out Shdw Opacity" value="0.600" /> 5220 <param id="706" name="Out Shdw Opacity" value="0.600" />
5221 5221
5222 <param id="707" name="Outer Shadow" value="0.000" /> 5222 <param id="707" name="Outer Shadow" value="0.000" />
5223 5223
5224 <param id="708" name="Out Shdw Color" value="0.000" /> 5224 <param id="708" name="Out Shdw Color" value="0.000" />
5225 5225
5226 <param id="709" name="Inner Shadow" value="0.000" /> 5226 <param id="709" name="Inner Shadow" value="0.000" />
5227 5227
5228 <param id="710" name="Nail Polish" value="0.000" /> 5228 <param id="710" name="Nail Polish" value="0.000" />
5229 5229
5230 <param id="711" name="Blush Opacity" value="0.500" /> 5230 <param id="711" name="Blush Opacity" value="0.500" />
5231 5231
5232 <param id="712" name="In Shdw Color" value="0.000" /> 5232 <param id="712" name="In Shdw Color" value="0.000" />
5233 5233
5234 <param id="713" name="In Shdw Opacity" value="0.700" /> 5234 <param id="713" name="In Shdw Opacity" value="0.700" />
5235 5235
5236 <param id="714" name="Eyeliner Color" value="0.000" /> 5236 <param id="714" name="Eyeliner Color" value="0.000" />
5237 5237
5238 <param id="715" name="Nail Polish Color" value="0.000" /> 5238 <param id="715" name="Nail Polish Color" value="0.000" />
5239 5239
5240 <texture te="0" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 5240 <texture te="0" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
5241 5241
5242 <texture te="5" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 5242 <texture te="5" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
5243 5243
5244 <texture te="6" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 5244 <texture te="6" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
5245 5245
5246<!-- wearable: hair --> 5246<!-- wearable: hair -->
5247 <param id="16" name="Pointy_Eyebrows" value="-0.095" /> 5247 <param id="16" name="Pointy_Eyebrows" value="-0.095" />
5248 5248
5249 <param id="31" name="Arced_Eyebrows" value="0.610" /> 5249 <param id="31" name="Arced_Eyebrows" value="0.610" />
5250 5250
5251 <param id="112" name="Rainbow Color" value="0.790" /> 5251 <param id="112" name="Rainbow Color" value="0.790" />
5252 5252
5253 <param id="113" name="Red Hair" value="0.000" /> 5253 <param id="113" name="Red Hair" value="0.000" />
5254 5254
5255 <param id="114" name="Blonde Hair" value="0.000" /> 5255 <param id="114" name="Blonde Hair" value="0.000" />
5256 5256
5257 <param id="115" name="White Hair" value="0.220" /> 5257 <param id="115" name="White Hair" value="0.220" />
5258 5258
5259 <param id="119" name="Eyebrow Size" value="0.110" /> 5259 <param id="119" name="Eyebrow Size" value="0.110" />
5260 5260
5261 <param id="130" name="Front Fringe" value="0.000" /> 5261 <param id="130" name="Front Fringe" value="0.000" />
5262 5262
5263 <param id="131" name="Side Fringe" value="1.000" /> 5263 <param id="131" name="Side Fringe" value="1.000" />
5264 5264
5265 <param id="132" name="Back Fringe" value="0.200" /> 5265 <param id="132" name="Back Fringe" value="0.200" />
5266 5266
5267 <param id="133" name="Hair Front" value="0.520" /> 5267 <param id="133" name="Hair Front" value="0.520" />
5268 5268
5269 <param id="134" name="Hair Sides" value="0.400" /> 5269 <param id="134" name="Hair Sides" value="0.400" />
5270 5270
5271 <param id="135" name="Hair Back" value="0.480" /> 5271 <param id="135" name="Hair Back" value="0.480" />
5272 5272
5273 <param id="136" name="Hair Sweep" value="1.000" /> 5273 <param id="136" name="Hair Sweep" value="1.000" />
5274 5274
5275 <param id="137" name="Hair Tilt" value="0.500" /> 5275 <param id="137" name="Hair Tilt" value="0.500" />
5276 5276
5277 <param id="140" name="Hair_Part_Middle" value="0.000" /> 5277 <param id="140" name="Hair_Part_Middle" value="0.000" />
5278 5278
5279 <param id="141" name="Hair_Part_Right" value="0.000" /> 5279 <param id="141" name="Hair_Part_Right" value="0.000" />
5280 5280
5281 <param id="142" name="Hair_Part_Left" value="0.000" /> 5281 <param id="142" name="Hair_Part_Left" value="0.000" />
5282 5282
5283 <param id="143" name="Hair_Sides_Full" value="-2.790" /> 5283 <param id="143" name="Hair_Sides_Full" value="-2.790" />
5284 5284
5285 <param id="166" name="Sideburns" value="0.710" /> 5285 <param id="166" name="Sideburns" value="0.710" />
5286 5286
5287 <param id="167" name="Moustache" value="0.000" /> 5287 <param id="167" name="Moustache" value="0.000" />
5288 5288
5289 <param id="168" name="Soulpatch" value="0.000" /> 5289 <param id="168" name="Soulpatch" value="0.000" />
5290 5290
5291 <param id="169" name="Chin Curtains" value="0.000" /> 5291 <param id="169" name="Chin Curtains" value="0.000" />
5292 5292
5293 <param id="177" name="Hair_Rumpled" value="0.770" /> 5293 <param id="177" name="Hair_Rumpled" value="0.770" />
5294 5294
5295 <param id="181" name="Hair_Big_Front" value="0.720" /> 5295 <param id="181" name="Hair_Big_Front" value="0.720" />
5296 5296
5297 <param id="182" name="Hair_Big_Top" value="1.000" /> 5297 <param id="182" name="Hair_Big_Top" value="1.000" />
5298 5298
5299 <param id="183" name="Hair_Big_Back" value="1.000" /> 5299 <param id="183" name="Hair_Big_Back" value="1.000" />
5300 5300
5301 <param id="184" name="Hair_Spiked" value="0.000" /> 5301 <param id="184" name="Hair_Spiked" value="0.000" />
5302 5302
5303 <param id="192" name="Bangs_Part_Middle" value="0.000" /> 5303 <param id="192" name="Bangs_Part_Middle" value="0.000" />
5304 5304
5305 <param id="674" name="Hair_Shear_Back" value="0.110" /> 5305 <param id="674" name="Hair_Shear_Back" value="0.110" />
5306 5306
5307 <param id="750" name="Eyebrow Density" value="0.580" /> 5307 <param id="750" name="Eyebrow Density" value="0.580" />
5308 5308
5309 <param id="752" name="Hair Thickness" value="0.690" /> 5309 <param id="752" name="Hair Thickness" value="0.690" />
5310 5310
5311 <param id="754" name="Hair_Taper_Back" value="1.310" /> 5311 <param id="754" name="Hair_Taper_Back" value="1.310" />
5312 5312
5313 <param id="755" name="Hair_Taper_Front" value="-0.060" /> 5313 <param id="755" name="Hair_Taper_Front" value="-0.060" />
5314 5314
5315 <param id="757" name="Lower_Eyebrows" value="1.760" /> 5315 <param id="757" name="Lower_Eyebrows" value="1.760" />
5316 5316
5317 <param id="762" name="Hair_Shear_Front" value="2.220" /> 5317 <param id="762" name="Hair_Shear_Front" value="2.220" />
5318 5318
5319 <param id="763" name="Hair Volume" value="0.720" /> 5319 <param id="763" name="Hair Volume" value="0.720" />
5320 5320
5321 <texture te="4" uuid="7ca39b4c-bd19-4699-aff7-f93fd03d3e7b" /> 5321 <texture te="4" uuid="7ca39b4c-bd19-4699-aff7-f93fd03d3e7b" />
5322 5322
5323<!-- wearable: eyes --> 5323<!-- wearable: eyes -->
5324 <param id="98" name="Eye Lightness" value="0.000" /> 5324 <param id="98" name="Eye Lightness" value="0.000" />
5325 5325
5326 <param id="99" name="Eye Color" value="0.890" /> 5326 <param id="99" name="Eye Color" value="0.890" />
5327 5327
5328 <texture te="3" uuid="6522e74d-1660-4e7f-b601-6f48c1659a77" /> 5328 <texture te="3" uuid="6522e74d-1660-4e7f-b601-6f48c1659a77" />
5329 </archetype> 5329 </archetype>
5330 5330
5331 <archetype name="F B Skinny"> 5331 <archetype name="F B Skinny">
5332<!-- wearable: shape --> 5332<!-- wearable: shape -->
5333 <param id="1" name="Big_Brow" value="0.321" /> 5333 <param id="1" name="Big_Brow" value="0.321" />
5334 5334
5335 <param id="2" name="Nose_Big_Out" value="-0.239" /> 5335 <param id="2" name="Nose_Big_Out" value="-0.239" />
5336 5336
5337 <param id="4" name="Broad_Nostrils" value="-0.065" /> 5337 <param id="4" name="Broad_Nostrils" value="-0.065" />
5338 5338
5339 <param id="5" name="Cleft_Chin" value="0.483" /> 5339 <param id="5" name="Cleft_Chin" value="0.483" />
5340 5340
5341 <param id="6" name="Bulbous_Nose_Tip" value="0.376" /> 5341 <param id="6" name="Bulbous_Nose_Tip" value="0.376" />
5342 5342
5343 <param id="7" name="Weak_Chin" value="-0.010" /> 5343 <param id="7" name="Weak_Chin" value="-0.010" />
5344 5344
5345 <param id="8" name="Double_Chin" value="0.440" /> 5345 <param id="8" name="Double_Chin" value="0.440" />
5346 5346
5347 <param id="10" name="Sunken_Cheeks" value="0.840" /> 5347 <param id="10" name="Sunken_Cheeks" value="0.840" />
5348 5348
5349 <param id="11" name="Noble_Nose_Bridge" value="-0.100" /> 5349 <param id="11" name="Noble_Nose_Bridge" value="-0.100" />
5350 5350
5351 <param id="12" name="Jowls" value="0.310" /> 5351 <param id="12" name="Jowls" value="0.310" />
5352 5352
5353 <param id="13" name="Cleft_Chin_Upper" value="0.000" /> 5353 <param id="13" name="Cleft_Chin_Upper" value="0.000" />
5354 5354
5355 <param id="14" name="High_Cheek_Bones" value="0.205" /> 5355 <param id="14" name="High_Cheek_Bones" value="0.205" />
5356 5356
5357 <param id="15" name="Ears_Out" value="-0.140" /> 5357 <param id="15" name="Ears_Out" value="-0.140" />
5358 5358
5359 <param id="17" name="Square_Jaw" value="0.835" /> 5359 <param id="17" name="Square_Jaw" value="0.835" />
5360 5360
5361 <param id="18" name="Puffy_Upper_Cheeks" value="-0.380" /> 5361 <param id="18" name="Puffy_Upper_Cheeks" value="-0.380" />
5362 5362
5363 <param id="19" name="Upturned_Nose_Tip" value="-0.200" /> 5363 <param id="19" name="Upturned_Nose_Tip" value="-0.200" />
5364 5364
5365 <param id="20" name="Bulbous_Nose" value="0.140" /> 5365 <param id="20" name="Bulbous_Nose" value="0.140" />
5366 5366
5367 <param id="21" name="Upper_Eyelid_Fold" value="0.280" /> 5367 <param id="21" name="Upper_Eyelid_Fold" value="0.280" />
5368 5368
5369 <param id="22" name="Attached_Earlobes" value="0.620" /> 5369 <param id="22" name="Attached_Earlobes" value="0.620" />
5370 5370
5371 <param id="23" name="Baggy_Eyes" value="-0.140" /> 5371 <param id="23" name="Baggy_Eyes" value="-0.140" />
5372 5372
5373 <param id="24" name="Wide_Eyes" value="0.460" /> 5373 <param id="24" name="Wide_Eyes" value="0.460" />
5374 5374
5375 <param id="25" name="Wide_Lip_Cleft" value="0.350" /> 5375 <param id="25" name="Wide_Lip_Cleft" value="0.350" />
5376 5376
5377 <param id="27" name="Wide_Nose_Bridge" value="-1.125" /> 5377 <param id="27" name="Wide_Nose_Bridge" value="-1.125" />
5378 5378
5379 <param id="33" name="Height" value="1.785" /> 5379 <param id="33" name="Height" value="1.785" />
5380 5380
5381 <param id="34" name="Thickness" value="-0.216" /> 5381 <param id="34" name="Thickness" value="-0.216" />
5382 5382
5383 <param id="35" name="Big_Ears" value="-0.250" /> 5383 <param id="35" name="Big_Ears" value="-0.250" />
5384 5384
5385 <param id="36" name="Shoulders" value="-0.008" /> 5385 <param id="36" name="Shoulders" value="-0.008" />
5386 5386
5387 <param id="37" name="Hip Width" value="-1.040" /> 5387 <param id="37" name="Hip Width" value="-1.040" />
5388 5388
5389 <param id="38" name="Torso Length" value="0.820" /> 5389 <param id="38" name="Torso Length" value="0.820" />
5390 5390
5391 <param id="80" name="male" value="0.000" /> 5391 <param id="80" name="male" value="0.000" />
5392 5392
5393 <param id="105" name="Breast Size" value="0.450" /> 5393 <param id="105" name="Breast Size" value="0.450" />
5394 5394
5395 <param id="151" name="Big_Butt_Legs" value="0.314" /> 5395 <param id="151" name="Big_Butt_Legs" value="0.314" />
5396 5396
5397 <param id="155" name="Lip Width" value="-0.130" /> 5397 <param id="155" name="Lip Width" value="-0.130" />
5398 5398
5399 <param id="157" name="Belly Size" value="0.100" /> 5399 <param id="157" name="Belly Size" value="0.100" />
5400 5400
5401 <param id="185" name="Deep_Chin" value="-0.260" /> 5401 <param id="185" name="Deep_Chin" value="-0.260" />
5402 5402
5403 <param id="193" name="Head Shape" value="0.790" /> 5403 <param id="193" name="Head Shape" value="0.790" />
5404 5404
5405 <param id="196" name="Eye Spacing" value="0.160" /> 5405 <param id="196" name="Eye Spacing" value="0.160" />
5406 5406
5407 <param id="505" name="Lip Thickness" value="0.770" /> 5407 <param id="505" name="Lip Thickness" value="0.770" />
5408 5408
5409 <param id="506" name="Mouth_Height" value="1.280" /> 5409 <param id="506" name="Mouth_Height" value="1.280" />
5410 5410
5411 <param id="507" name="Breast_Gravity" value="-0.345" /> 5411 <param id="507" name="Breast_Gravity" value="-0.345" />
5412 5412
5413 <param id="515" name="Foot_Size" value="2.000" /> 5413 <param id="515" name="Foot_Size" value="2.000" />
5414 5414
5415 <param id="517" name="Wide_Nose" value="0.460" /> 5415 <param id="517" name="Wide_Nose" value="0.460" />
5416 5416
5417 <param id="518" name="Eyelashes_Long" value="0.906" /> 5417 <param id="518" name="Eyelashes_Long" value="0.906" />
5418 5418
5419 <param id="629" name="Forehead Angle" value="0.000" /> 5419 <param id="629" name="Forehead Angle" value="0.000" />
5420 5420
5421 <param id="637" name="Body Fat" value="0.000" /> 5421 <param id="637" name="Body Fat" value="0.000" />
5422 5422
5423 <param id="646" name="Egg_Head" value="0.540" /> 5423 <param id="646" name="Egg_Head" value="0.540" />
5424 5424
5425 <param id="647" name="Squash_Stretch_Head" value="0.505" /> 5425 <param id="647" name="Squash_Stretch_Head" value="0.505" />
5426 5426
5427 <param id="649" name="Torso Muscles" value="0.670" /> 5427 <param id="649" name="Torso Muscles" value="0.670" />
5428 5428
5429 <param id="650" name="Eyelid_Corner_Up" value="-0.375" /> 5429 <param id="650" name="Eyelid_Corner_Up" value="-0.375" />
5430 5430
5431 <param id="652" name="Leg Muscles" value="0.810" /> 5431 <param id="652" name="Leg Muscles" value="0.810" />
5432 5432
5433 <param id="653" name="Tall_Lips" value="-0.190" /> 5433 <param id="653" name="Tall_Lips" value="-0.190" />
5434 5434
5435 <param id="656" name="Crooked_Nose" value="0.000" /> 5435 <param id="656" name="Crooked_Nose" value="0.000" />
5436 5436
5437 <param id="659" name="Mouth Corner" value="0.610" /> 5437 <param id="659" name="Mouth Corner" value="0.610" />
5438 5438
5439 <param id="662" name="Face Shear" value="0.500" /> 5439 <param id="662" name="Face Shear" value="0.500" />
5440 5440
5441 <param id="663" name="Shift_Mouth" value="-0.080" /> 5441 <param id="663" name="Shift_Mouth" value="-0.080" />
5442 5442
5443 <param id="664" name="Pop_Eye" value="0.052" /> 5443 <param id="664" name="Pop_Eye" value="0.052" />
5444 5444
5445 <param id="665" name="Jaw_Jut" value="0.480" /> 5445 <param id="665" name="Jaw_Jut" value="0.480" />
5446 5446
5447 <param id="675" name="Hand Size" value="0.186" /> 5447 <param id="675" name="Hand Size" value="0.186" />
5448 5448
5449 <param id="676" name="Love_Handles" value="-0.340" /> 5449 <param id="676" name="Love_Handles" value="-0.340" />
5450 5450
5451 <param id="678" name="Torso Muscles" value="0.790" /> 5451 <param id="678" name="Torso Muscles" value="0.790" />
5452 5452
5453 <param id="682" name="Head Size" value="0.420" /> 5453 <param id="682" name="Head Size" value="0.420" />
5454 5454
5455 <param id="683" name="Neck Thickness" value="-0.178" /> 5455 <param id="683" name="Neck Thickness" value="-0.178" />
5456 5456
5457 <param id="684" name="Breast_Female_Clevage" value="0.148" /> 5457 <param id="684" name="Breast_Female_Clevage" value="0.148" />
5458 5458
5459 <param id="685" name="Chest_Male_No_Pecs" value="0.200" /> 5459 <param id="685" name="Chest_Male_No_Pecs" value="0.200" />
5460 5460
5461 <param id="690" name="Eye Size" value="0.470" /> 5461 <param id="690" name="Eye Size" value="0.470" />
5462 5462
5463 <param id="692" name="Leg Length" value="0.620" /> 5463 <param id="692" name="Leg Length" value="0.620" />
5464 5464
5465 <param id="693" name="Arm Length" value="0.820" /> 5465 <param id="693" name="Arm Length" value="0.820" />
5466 5466
5467 <param id="753" name="Saddlebags" value="1.180" /> 5467 <param id="753" name="Saddlebags" value="1.180" />
5468 5468
5469 <param id="756" name="Neck Length" value="0.640" /> 5469 <param id="756" name="Neck Length" value="0.640" />
5470 5470
5471 <param id="758" name="Lower_Bridge_Nose" value="-0.420" /> 5471 <param id="758" name="Lower_Bridge_Nose" value="-0.420" />
5472 5472
5473 <param id="759" name="Low_Septum_Nose" value="-0.175" /> 5473 <param id="759" name="Low_Septum_Nose" value="-0.175" />
5474 5474
5475 <param id="760" name="Jaw_Angle" value="1.104" /> 5475 <param id="760" name="Jaw_Angle" value="1.104" />
5476 5476
5477 <param id="764" name="Lip_Cleft_Deep" value="0.350" /> 5477 <param id="764" name="Lip_Cleft_Deep" value="0.350" />
5478 5478
5479 <param id="765" name="Puffy_Lower_Lids" value="0.652" /> 5479 <param id="765" name="Puffy_Lower_Lids" value="0.652" />
5480 5480
5481 <param id="769" name="Eye Depth" value="0.560" /> 5481 <param id="769" name="Eye Depth" value="0.560" />
5482 5482
5483 <param id="773" name="Head Length" value="0.570" /> 5483 <param id="773" name="Head Length" value="0.570" />
5484 5484
5485<!-- wearable: skin --> 5485<!-- wearable: skin -->
5486 <param id="108" name="Rainbow Color" value="0.000" /> 5486 <param id="108" name="Rainbow Color" value="0.000" />
5487 5487
5488 <param id="110" name="Red Skin" value="0.060" /> 5488 <param id="110" name="Red Skin" value="0.060" />
5489 5489
5490 <param id="111" name="Pigment" value="0.560" /> 5490 <param id="111" name="Pigment" value="0.560" />
5491 5491
5492 <param id="116" name="Rosy Complexion" value="0.000" /> 5492 <param id="116" name="Rosy Complexion" value="0.000" />
5493 5493
5494 <param id="117" name="Lip Pinkness" value="0.000" /> 5494 <param id="117" name="Lip Pinkness" value="0.000" />
5495 5495
5496 <param id="150" name="Body Definition" value="0.990" /> 5496 <param id="150" name="Body Definition" value="0.990" />
5497 5497
5498 <param id="162" name="Facial Definition" value="0.070" /> 5498 <param id="162" name="Facial Definition" value="0.070" />
5499 5499
5500 <param id="163" name="Wrinkles" value="0.000" /> 5500 <param id="163" name="Wrinkles" value="0.000" />
5501 5501
5502 <param id="165" name="Freckles" value="0.000" /> 5502 <param id="165" name="Freckles" value="0.000" />
5503 5503
5504 <param id="700" name="Lipstick Color" value="0.250" /> 5504 <param id="700" name="Lipstick Color" value="0.250" />
5505 5505
5506 <param id="701" name="Lipstick" value="0.000" /> 5506 <param id="701" name="Lipstick" value="0.000" />
5507 5507
5508 <param id="702" name="Lipgloss" value="0.000" /> 5508 <param id="702" name="Lipgloss" value="0.000" />
5509 5509
5510 <param id="703" name="Eyeliner" value="0.000" /> 5510 <param id="703" name="Eyeliner" value="0.000" />
5511 5511
5512 <param id="704" name="Blush" value="0.000" /> 5512 <param id="704" name="Blush" value="0.000" />
5513 5513
5514 <param id="705" name="Blush Color" value="0.500" /> 5514 <param id="705" name="Blush Color" value="0.500" />
5515 5515
5516 <param id="706" name="Out Shdw Opacity" value="0.600" /> 5516 <param id="706" name="Out Shdw Opacity" value="0.600" />
5517 5517
5518 <param id="707" name="Outer Shadow" value="0.000" /> 5518 <param id="707" name="Outer Shadow" value="0.000" />
5519 5519
5520 <param id="708" name="Out Shdw Color" value="0.000" /> 5520 <param id="708" name="Out Shdw Color" value="0.000" />
5521 5521
5522 <param id="709" name="Inner Shadow" value="0.000" /> 5522 <param id="709" name="Inner Shadow" value="0.000" />
5523 5523
5524 <param id="710" name="Nail Polish" value="0.000" /> 5524 <param id="710" name="Nail Polish" value="0.000" />
5525 5525
5526 <param id="711" name="Blush Opacity" value="0.500" /> 5526 <param id="711" name="Blush Opacity" value="0.500" />
5527 5527
5528 <param id="712" name="In Shdw Color" value="0.000" /> 5528 <param id="712" name="In Shdw Color" value="0.000" />
5529 5529
5530 <param id="713" name="In Shdw Opacity" value="0.700" /> 5530 <param id="713" name="In Shdw Opacity" value="0.700" />
5531 5531
5532 <param id="714" name="Eyeliner Color" value="0.000" /> 5532 <param id="714" name="Eyeliner Color" value="0.000" />
5533 5533
5534 <param id="715" name="Nail Polish Color" value="0.000" /> 5534 <param id="715" name="Nail Polish Color" value="0.000" />
5535 5535
5536 <texture te="0" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 5536 <texture te="0" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
5537 5537
5538 <texture te="5" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 5538 <texture te="5" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
5539 5539
5540 <texture te="6" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 5540 <texture te="6" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
5541 5541
5542<!-- wearable: hair --> 5542<!-- wearable: hair -->
5543 <param id="16" name="Pointy_Eyebrows" value="0.010" /> 5543 <param id="16" name="Pointy_Eyebrows" value="0.010" />
5544 5544
5545 <param id="31" name="Arced_Eyebrows" value="0.470" /> 5545 <param id="31" name="Arced_Eyebrows" value="0.470" />
5546 5546
5547 <param id="112" name="Rainbow Color" value="0.000" /> 5547 <param id="112" name="Rainbow Color" value="0.000" />
5548 5548
5549 <param id="113" name="Red Hair" value="0.310" /> 5549 <param id="113" name="Red Hair" value="0.310" />
5550 5550
5551 <param id="114" name="Blonde Hair" value="0.110" /> 5551 <param id="114" name="Blonde Hair" value="0.110" />
5552 5552
5553 <param id="115" name="White Hair" value="0.000" /> 5553 <param id="115" name="White Hair" value="0.000" />
5554 5554
5555 <param id="119" name="Eyebrow Size" value="0.370" /> 5555 <param id="119" name="Eyebrow Size" value="0.370" />
5556 5556
5557 <param id="130" name="Front Fringe" value="0.740" /> 5557 <param id="130" name="Front Fringe" value="0.740" />
5558 5558
5559 <param id="131" name="Side Fringe" value="0.730" /> 5559 <param id="131" name="Side Fringe" value="0.730" />
5560 5560
5561 <param id="132" name="Back Fringe" value="0.560" /> 5561 <param id="132" name="Back Fringe" value="0.560" />
5562 5562
5563 <param id="133" name="Hair Front" value="0.190" /> 5563 <param id="133" name="Hair Front" value="0.190" />
5564 5564
5565 <param id="134" name="Hair Sides" value="0.100" /> 5565 <param id="134" name="Hair Sides" value="0.100" />
5566 5566
5567 <param id="135" name="Hair Back" value="0.000" /> 5567 <param id="135" name="Hair Back" value="0.000" />
5568 5568
5569 <param id="136" name="Hair Sweep" value="0.920" /> 5569 <param id="136" name="Hair Sweep" value="0.920" />
5570 5570
5571 <param id="137" name="Hair Tilt" value="0.500" /> 5571 <param id="137" name="Hair Tilt" value="0.500" />
5572 5572
5573 <param id="140" name="Hair_Part_Middle" value="2.000" /> 5573 <param id="140" name="Hair_Part_Middle" value="2.000" />
5574 5574
5575 <param id="141" name="Hair_Part_Right" value="2.000" /> 5575 <param id="141" name="Hair_Part_Right" value="2.000" />
5576 5576
5577 <param id="142" name="Hair_Part_Left" value="2.000" /> 5577 <param id="142" name="Hair_Part_Left" value="2.000" />
5578 5578
5579 <param id="143" name="Hair_Sides_Full" value="-0.205" /> 5579 <param id="143" name="Hair_Sides_Full" value="-0.205" />
5580 5580
5581 <param id="166" name="Sideburns" value="0.710" /> 5581 <param id="166" name="Sideburns" value="0.710" />
5582 5582
5583 <param id="167" name="Moustache" value="0.000" /> 5583 <param id="167" name="Moustache" value="0.000" />
5584 5584
5585 <param id="168" name="Soulpatch" value="0.000" /> 5585 <param id="168" name="Soulpatch" value="0.000" />
5586 5586
5587 <param id="169" name="Chin Curtains" value="0.000" /> 5587 <param id="169" name="Chin Curtains" value="0.000" />
5588 5588
5589 <param id="177" name="Hair_Rumpled" value="0.270" /> 5589 <param id="177" name="Hair_Rumpled" value="0.270" />
5590 5590
5591 <param id="181" name="Hair_Big_Front" value="-0.160" /> 5591 <param id="181" name="Hair_Big_Front" value="-0.160" />
5592 5592
5593 <param id="182" name="Hair_Big_Top" value="0.860" /> 5593 <param id="182" name="Hair_Big_Top" value="0.860" />
5594 5594
5595 <param id="183" name="Hair_Big_Back" value="1.000" /> 5595 <param id="183" name="Hair_Big_Back" value="1.000" />
5596 5596
5597 <param id="184" name="Hair_Spiked" value="0.130" /> 5597 <param id="184" name="Hair_Spiked" value="0.130" />
5598 5598
5599 <param id="192" name="Bangs_Part_Middle" value="0.000" /> 5599 <param id="192" name="Bangs_Part_Middle" value="0.000" />
5600 5600
5601 <param id="674" name="Hair_Shear_Back" value="0.000" /> 5601 <param id="674" name="Hair_Shear_Back" value="0.000" />
5602 5602
5603 <param id="750" name="Eyebrow Density" value="1.000" /> 5603 <param id="750" name="Eyebrow Density" value="1.000" />
5604 5604
5605 <param id="752" name="Hair Thickness" value="0.690" /> 5605 <param id="752" name="Hair Thickness" value="0.690" />
5606 5606
5607 <param id="754" name="Hair_Taper_Back" value="-0.340" /> 5607 <param id="754" name="Hair_Taper_Back" value="-0.340" />
5608 5608
5609 <param id="755" name="Hair_Taper_Front" value="-0.030" /> 5609 <param id="755" name="Hair_Taper_Front" value="-0.030" />
5610 5610
5611 <param id="757" name="Lower_Eyebrows" value="0.360" /> 5611 <param id="757" name="Lower_Eyebrows" value="0.360" />
5612 5612
5613 <param id="762" name="Hair_Shear_Front" value="0.540" /> 5613 <param id="762" name="Hair_Shear_Front" value="0.540" />
5614 5614
5615 <param id="763" name="Hair Volume" value="0.770" /> 5615 <param id="763" name="Hair Volume" value="0.770" />
5616 5616
5617 <texture te="4" uuid="7ca39b4c-bd19-4699-aff7-f93fd03d3e7b" /> 5617 <texture te="4" uuid="7ca39b4c-bd19-4699-aff7-f93fd03d3e7b" />
5618 5618
5619<!-- wearable: eyes --> 5619<!-- wearable: eyes -->
5620 <param id="98" name="Eye Lightness" value="0.320" /> 5620 <param id="98" name="Eye Lightness" value="0.320" />
5621 5621
5622 <param id="99" name="Eye Color" value="0.130" /> 5622 <param id="99" name="Eye Color" value="0.130" />
5623 5623
5624 <texture te="3" uuid="6522e74d-1660-4e7f-b601-6f48c1659a77" /> 5624 <texture te="3" uuid="6522e74d-1660-4e7f-b601-6f48c1659a77" />
5625 </archetype> 5625 </archetype>
5626 5626
5627 <archetype name="F B Muscle"> 5627 <archetype name="F B Muscle">
5628<!-- wearable: shape --> 5628<!-- wearable: shape -->
5629 <param id="1" name="Big_Brow" value="0.321" /> 5629 <param id="1" name="Big_Brow" value="0.321" />
5630 5630
5631 <param id="2" name="Nose_Big_Out" value="0.091" /> 5631 <param id="2" name="Nose_Big_Out" value="0.091" />
5632 5632
5633 <param id="4" name="Broad_Nostrils" value="0.175" /> 5633 <param id="4" name="Broad_Nostrils" value="0.175" />
5634 5634
5635 <param id="5" name="Cleft_Chin" value="0.604" /> 5635 <param id="5" name="Cleft_Chin" value="0.604" />
5636 5636
5637 <param id="6" name="Bulbous_Nose_Tip" value="0.259" /> 5637 <param id="6" name="Bulbous_Nose_Tip" value="0.259" />
5638 5638
5639 <param id="7" name="Weak_Chin" value="-0.320" /> 5639 <param id="7" name="Weak_Chin" value="-0.320" />
5640 5640
5641 <param id="8" name="Double_Chin" value="-0.100" /> 5641 <param id="8" name="Double_Chin" value="-0.100" />
5642 5642
5643 <param id="10" name="Sunken_Cheeks" value="0.255" /> 5643 <param id="10" name="Sunken_Cheeks" value="0.255" />
5644 5644
5645 <param id="11" name="Noble_Nose_Bridge" value="-0.080" /> 5645 <param id="11" name="Noble_Nose_Bridge" value="-0.080" />
5646 5646
5647 <param id="12" name="Jowls" value="0.460" /> 5647 <param id="12" name="Jowls" value="0.460" />
5648 5648
5649 <param id="13" name="Cleft_Chin_Upper" value="0.000" /> 5649 <param id="13" name="Cleft_Chin_Upper" value="0.000" />
5650 5650
5651 <param id="14" name="High_Cheek_Bones" value="0.070" /> 5651 <param id="14" name="High_Cheek_Bones" value="0.070" />
5652 5652
5653 <param id="15" name="Ears_Out" value="0.400" /> 5653 <param id="15" name="Ears_Out" value="0.400" />
5654 5654
5655 <param id="17" name="Square_Jaw" value="0.610" /> 5655 <param id="17" name="Square_Jaw" value="0.610" />
5656 5656
5657 <param id="18" name="Puffy_Upper_Cheeks" value="0.860" /> 5657 <param id="18" name="Puffy_Upper_Cheeks" value="0.860" />
5658 5658
5659 <param id="19" name="Upturned_Nose_Tip" value="-0.375" /> 5659 <param id="19" name="Upturned_Nose_Tip" value="-0.375" />
5660 5660
5661 <param id="20" name="Bulbous_Nose" value="0.060" /> 5661 <param id="20" name="Bulbous_Nose" value="0.060" />
5662 5662
5663 <param id="21" name="Upper_Eyelid_Fold" value="-0.035" /> 5663 <param id="21" name="Upper_Eyelid_Fold" value="-0.035" />
5664 5664
5665 <param id="22" name="Attached_Earlobes" value="0.000" /> 5665 <param id="22" name="Attached_Earlobes" value="0.000" />
5666 5666
5667 <param id="23" name="Baggy_Eyes" value="-0.340" /> 5667 <param id="23" name="Baggy_Eyes" value="-0.340" />
5668 5668
5669 <param id="24" name="Wide_Eyes" value="-0.380" /> 5669 <param id="24" name="Wide_Eyes" value="-0.380" />
5670 5670
5671 <param id="25" name="Wide_Lip_Cleft" value="0.971" /> 5671 <param id="25" name="Wide_Lip_Cleft" value="0.971" />
5672 5672
5673 <param id="27" name="Wide_Nose_Bridge" value="-0.575" /> 5673 <param id="27" name="Wide_Nose_Bridge" value="-0.575" />
5674 5674
5675 <param id="33" name="Height" value="1.097" /> 5675 <param id="33" name="Height" value="1.097" />
5676 5676
5677 <param id="34" name="Thickness" value="0.642" /> 5677 <param id="34" name="Thickness" value="0.642" />
5678 5678
5679 <param id="35" name="Big_Ears" value="0.050" /> 5679 <param id="35" name="Big_Ears" value="0.050" />
5680 5680
5681 <param id="36" name="Shoulders" value="-0.456" /> 5681 <param id="36" name="Shoulders" value="-0.456" />
5682 5682
5683 <param id="37" name="Hip Width" value="-1.340" /> 5683 <param id="37" name="Hip Width" value="-1.340" />
5684 5684
5685 <param id="38" name="Torso Length" value="0.720" /> 5685 <param id="38" name="Torso Length" value="0.720" />
5686 5686
5687 <param id="80" name="male" value="0.000" /> 5687 <param id="80" name="male" value="0.000" />
5688 5688
5689 <param id="105" name="Breast Size" value="0.750" /> 5689 <param id="105" name="Breast Size" value="0.750" />
5690 5690
5691 <param id="151" name="Big_Butt_Legs" value="0.202" /> 5691 <param id="151" name="Big_Butt_Legs" value="0.202" />
5692 5692
5693 <param id="155" name="Lip Width" value="0.024" /> 5693 <param id="155" name="Lip Width" value="0.024" />
5694 5694
5695 <param id="157" name="Belly Size" value="0.220" /> 5695 <param id="157" name="Belly Size" value="0.220" />
5696 5696
5697 <param id="185" name="Deep_Chin" value="0.400" /> 5697 <param id="185" name="Deep_Chin" value="0.400" />
5698 5698
5699 <param id="193" name="Head Shape" value="0.810" /> 5699 <param id="193" name="Head Shape" value="0.810" />
5700 5700
5701 <param id="196" name="Eye Spacing" value="-0.380" /> 5701 <param id="196" name="Eye Spacing" value="-0.380" />
5702 5702
5703 <param id="505" name="Lip Thickness" value="0.740" /> 5703 <param id="505" name="Lip Thickness" value="0.740" />
5704 5704
5705 <param id="506" name="Mouth_Height" value="0.640" /> 5705 <param id="506" name="Mouth_Height" value="0.640" />
5706 5706
5707 <param id="507" name="Breast_Gravity" value="0.600" /> 5707 <param id="507" name="Breast_Gravity" value="0.600" />
5708 5708
5709 <param id="515" name="Foot_Size" value="1.840" /> 5709 <param id="515" name="Foot_Size" value="1.840" />
5710 5710
5711 <param id="517" name="Wide_Nose" value="0.505" /> 5711 <param id="517" name="Wide_Nose" value="0.505" />
5712 5712
5713 <param id="518" name="Eyelashes_Long" value="0.330" /> 5713 <param id="518" name="Eyelashes_Long" value="0.330" />
5714 5714
5715 <param id="629" name="Forehead Angle" value="0.000" /> 5715 <param id="629" name="Forehead Angle" value="0.000" />
5716 5716
5717 <param id="637" name="Body Fat" value="0.140" /> 5717 <param id="637" name="Body Fat" value="0.140" />
5718 5718
5719 <param id="646" name="Egg_Head" value="0.563" /> 5719 <param id="646" name="Egg_Head" value="0.563" />
5720 5720
5721 <param id="647" name="Squash_Stretch_Head" value="0.130" /> 5721 <param id="647" name="Squash_Stretch_Head" value="0.130" />
5722 5722
5723 <param id="649" name="Torso Muscles" value="0.870" /> 5723 <param id="649" name="Torso Muscles" value="0.870" />
5724 5724
5725 <param id="650" name="Eyelid_Corner_Up" value="0.700" /> 5725 <param id="650" name="Eyelid_Corner_Up" value="0.700" />
5726 5726
5727 <param id="652" name="Leg Muscles" value="0.850" /> 5727 <param id="652" name="Leg Muscles" value="0.850" />
5728 5728
5729 <param id="653" name="Tall_Lips" value="1.850" /> 5729 <param id="653" name="Tall_Lips" value="1.850" />
5730 5730
5731 <param id="656" name="Crooked_Nose" value="0.000" /> 5731 <param id="656" name="Crooked_Nose" value="0.000" />
5732 5732
5733 <param id="659" name="Mouth Corner" value="0.860" /> 5733 <param id="659" name="Mouth Corner" value="0.860" />
5734 5734
5735 <param id="662" name="Face Shear" value="0.500" /> 5735 <param id="662" name="Face Shear" value="0.500" />
5736 5736
5737 <param id="663" name="Shift_Mouth" value="0.160" /> 5737 <param id="663" name="Shift_Mouth" value="0.160" />
5738 5738
5739 <param id="664" name="Pop_Eye" value="0.052" /> 5739 <param id="664" name="Pop_Eye" value="0.052" />
5740 5740
5741 <param id="665" name="Jaw_Jut" value="-0.320" /> 5741 <param id="665" name="Jaw_Jut" value="-0.320" />
5742 5742
5743 <param id="675" name="Hand Size" value="0.120" /> 5743 <param id="675" name="Hand Size" value="0.120" />
5744 5744
5745 <param id="676" name="Love_Handles" value="-0.190" /> 5745 <param id="676" name="Love_Handles" value="-0.190" />
5746 5746
5747 <param id="678" name="Torso Muscles" value="0.790" /> 5747 <param id="678" name="Torso Muscles" value="0.790" />
5748 5748
5749 <param id="682" name="Head Size" value="0.720" /> 5749 <param id="682" name="Head Size" value="0.720" />
5750 5750
5751 <param id="683" name="Neck Thickness" value="0.044" /> 5751 <param id="683" name="Neck Thickness" value="0.044" />
5752 5752
5753 <param id="684" name="Breast_Female_Clevage" value="0.148" /> 5753 <param id="684" name="Breast_Female_Clevage" value="0.148" />
5754 5754
5755 <param id="685" name="Chest_Male_No_Pecs" value="0.200" /> 5755 <param id="685" name="Chest_Male_No_Pecs" value="0.200" />
5756 5756
5757 <param id="690" name="Eye Size" value="0.660" /> 5757 <param id="690" name="Eye Size" value="0.660" />
5758 5758
5759 <param id="692" name="Leg Length" value="0.460" /> 5759 <param id="692" name="Leg Length" value="0.460" />
5760 5760
5761 <param id="693" name="Arm Length" value="0.540" /> 5761 <param id="693" name="Arm Length" value="0.540" />
5762 5762
5763 <param id="753" name="Saddlebags" value="0.865" /> 5763 <param id="753" name="Saddlebags" value="0.865" />
5764 5764
5765 <param id="756" name="Neck Length" value="0.220" /> 5765 <param id="756" name="Neck Length" value="0.220" />
5766 5766
5767 <param id="758" name="Lower_Bridge_Nose" value="-0.000" /> 5767 <param id="758" name="Lower_Bridge_Nose" value="-0.000" />
5768 5768
5769 <param id="759" name="Low_Septum_Nose" value="0.100" /> 5769 <param id="759" name="Low_Septum_Nose" value="0.100" />
5770 5770
5771 <param id="760" name="Jaw_Angle" value="1.072" /> 5771 <param id="760" name="Jaw_Angle" value="1.072" />
5772 5772
5773 <param id="764" name="Lip_Cleft_Deep" value="0.180" /> 5773 <param id="764" name="Lip_Cleft_Deep" value="0.180" />
5774 5774
5775 <param id="765" name="Puffy_Lower_Lids" value="0.316" /> 5775 <param id="765" name="Puffy_Lower_Lids" value="0.316" />
5776 5776
5777 <param id="769" name="Eye Depth" value="0.780" /> 5777 <param id="769" name="Eye Depth" value="0.780" />
5778 5778
5779 <param id="773" name="Head Length" value="0.570" /> 5779 <param id="773" name="Head Length" value="0.570" />
5780 5780
5781<!-- wearable: skin --> 5781<!-- wearable: skin -->
5782 <param id="108" name="Rainbow Color" value="0.000" /> 5782 <param id="108" name="Rainbow Color" value="0.000" />
5783 5783
5784 <param id="110" name="Red Skin" value="0.042" /> 5784 <param id="110" name="Red Skin" value="0.042" />
5785 5785
5786 <param id="111" name="Pigment" value="0.570" /> 5786 <param id="111" name="Pigment" value="0.570" />
5787 5787
5788 <param id="116" name="Rosy Complexion" value="0.350" /> 5788 <param id="116" name="Rosy Complexion" value="0.350" />
5789 5789
5790 <param id="117" name="Lip Pinkness" value="0.470" /> 5790 <param id="117" name="Lip Pinkness" value="0.470" />
5791 5791
5792 <param id="150" name="Body Definition" value="0.690" /> 5792 <param id="150" name="Body Definition" value="0.690" />
5793 5793
5794 <param id="162" name="Facial Definition" value="0.220" /> 5794 <param id="162" name="Facial Definition" value="0.220" />
5795 5795
5796 <param id="163" name="Wrinkles" value="0.000" /> 5796 <param id="163" name="Wrinkles" value="0.000" />
5797 5797
5798 <param id="165" name="Freckles" value="0.030" /> 5798 <param id="165" name="Freckles" value="0.030" />
5799 5799
5800 <param id="700" name="Lipstick Color" value="0.250" /> 5800 <param id="700" name="Lipstick Color" value="0.250" />
5801 5801
5802 <param id="701" name="Lipstick" value="0.000" /> 5802 <param id="701" name="Lipstick" value="0.000" />
5803 5803
5804 <param id="702" name="Lipgloss" value="0.000" /> 5804 <param id="702" name="Lipgloss" value="0.000" />
5805 5805
5806 <param id="703" name="Eyeliner" value="0.000" /> 5806 <param id="703" name="Eyeliner" value="0.000" />
5807 5807
5808 <param id="704" name="Blush" value="0.000" /> 5808 <param id="704" name="Blush" value="0.000" />
5809 5809
5810 <param id="705" name="Blush Color" value="0.500" /> 5810 <param id="705" name="Blush Color" value="0.500" />
5811 5811
5812 <param id="706" name="Out Shdw Opacity" value="0.600" /> 5812 <param id="706" name="Out Shdw Opacity" value="0.600" />
5813 5813
5814 <param id="707" name="Outer Shadow" value="0.000" /> 5814 <param id="707" name="Outer Shadow" value="0.000" />
5815 5815
5816 <param id="708" name="Out Shdw Color" value="0.000" /> 5816 <param id="708" name="Out Shdw Color" value="0.000" />
5817 5817
5818 <param id="709" name="Inner Shadow" value="0.000" /> 5818 <param id="709" name="Inner Shadow" value="0.000" />
5819 5819
5820 <param id="710" name="Nail Polish" value="0.000" /> 5820 <param id="710" name="Nail Polish" value="0.000" />
5821 5821
5822 <param id="711" name="Blush Opacity" value="0.500" /> 5822 <param id="711" name="Blush Opacity" value="0.500" />
5823 5823
5824 <param id="712" name="In Shdw Color" value="0.000" /> 5824 <param id="712" name="In Shdw Color" value="0.000" />
5825 5825
5826 <param id="713" name="In Shdw Opacity" value="0.700" /> 5826 <param id="713" name="In Shdw Opacity" value="0.700" />
5827 5827
5828 <param id="714" name="Eyeliner Color" value="0.000" /> 5828 <param id="714" name="Eyeliner Color" value="0.000" />
5829 5829
5830 <param id="715" name="Nail Polish Color" value="0.000" /> 5830 <param id="715" name="Nail Polish Color" value="0.000" />
5831 5831
5832 <texture te="0" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 5832 <texture te="0" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
5833 5833
5834 <texture te="5" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 5834 <texture te="5" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
5835 5835
5836 <texture te="6" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 5836 <texture te="6" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
5837 5837
5838<!-- wearable: hair --> 5838<!-- wearable: hair -->
5839 <param id="16" name="Pointy_Eyebrows" value="0.010" /> 5839 <param id="16" name="Pointy_Eyebrows" value="0.010" />
5840 5840
5841 <param id="31" name="Arced_Eyebrows" value="0.470" /> 5841 <param id="31" name="Arced_Eyebrows" value="0.470" />
5842 5842
5843 <param id="112" name="Rainbow Color" value="0.000" /> 5843 <param id="112" name="Rainbow Color" value="0.000" />
5844 5844
5845 <param id="113" name="Red Hair" value="0.520" /> 5845 <param id="113" name="Red Hair" value="0.520" />
5846 5846
5847 <param id="114" name="Blonde Hair" value="0.030" /> 5847 <param id="114" name="Blonde Hair" value="0.030" />
5848 5848
5849 <param id="115" name="White Hair" value="0.000" /> 5849 <param id="115" name="White Hair" value="0.000" />
5850 5850
5851 <param id="119" name="Eyebrow Size" value="0.370" /> 5851 <param id="119" name="Eyebrow Size" value="0.370" />
5852 5852
5853 <param id="130" name="Front Fringe" value="0.280" /> 5853 <param id="130" name="Front Fringe" value="0.280" />
5854 5854
5855 <param id="131" name="Side Fringe" value="1.000" /> 5855 <param id="131" name="Side Fringe" value="1.000" />
5856 5856
5857 <param id="132" name="Back Fringe" value="1.000" /> 5857 <param id="132" name="Back Fringe" value="1.000" />
5858 5858
5859 <param id="133" name="Hair Front" value="0.280" /> 5859 <param id="133" name="Hair Front" value="0.280" />
5860 5860
5861 <param id="134" name="Hair Sides" value="0.000" /> 5861 <param id="134" name="Hair Sides" value="0.000" />
5862 5862
5863 <param id="135" name="Hair Back" value="0.570" /> 5863 <param id="135" name="Hair Back" value="0.570" />
5864 5864
5865 <param id="136" name="Hair Sweep" value="1.000" /> 5865 <param id="136" name="Hair Sweep" value="1.000" />
5866 5866
5867 <param id="137" name="Hair Tilt" value="0.500" /> 5867 <param id="137" name="Hair Tilt" value="0.500" />
5868 5868
5869 <param id="140" name="Hair_Part_Middle" value="0.000" /> 5869 <param id="140" name="Hair_Part_Middle" value="0.000" />
5870 5870
5871 <param id="141" name="Hair_Part_Right" value="0.000" /> 5871 <param id="141" name="Hair_Part_Right" value="0.000" />
5872 5872
5873 <param id="142" name="Hair_Part_Left" value="0.000" /> 5873 <param id="142" name="Hair_Part_Left" value="0.000" />
5874 5874
5875 <param id="143" name="Hair_Sides_Full" value="-0.040" /> 5875 <param id="143" name="Hair_Sides_Full" value="-0.040" />
5876 5876
5877 <param id="166" name="Sideburns" value="0.710" /> 5877 <param id="166" name="Sideburns" value="0.710" />
5878 5878
5879 <param id="167" name="Moustache" value="0.000" /> 5879 <param id="167" name="Moustache" value="0.000" />
5880 5880
5881 <param id="168" name="Soulpatch" value="0.000" /> 5881 <param id="168" name="Soulpatch" value="0.000" />
5882 5882
5883 <param id="169" name="Chin Curtains" value="0.000" /> 5883 <param id="169" name="Chin Curtains" value="0.000" />
5884 5884
5885 <param id="177" name="Hair_Rumpled" value="0.270" /> 5885 <param id="177" name="Hair_Rumpled" value="0.270" />
5886 5886
5887 <param id="181" name="Hair_Big_Front" value="-0.260" /> 5887 <param id="181" name="Hair_Big_Front" value="-0.260" />
5888 5888
5889 <param id="182" name="Hair_Big_Top" value="0.860" /> 5889 <param id="182" name="Hair_Big_Top" value="0.860" />
5890 5890
5891 <param id="183" name="Hair_Big_Back" value="0.300" /> 5891 <param id="183" name="Hair_Big_Back" value="0.300" />
5892 5892
5893 <param id="184" name="Hair_Spiked" value="0.000" /> 5893 <param id="184" name="Hair_Spiked" value="0.000" />
5894 5894
5895 <param id="192" name="Bangs_Part_Middle" value="0.000" /> 5895 <param id="192" name="Bangs_Part_Middle" value="0.000" />
5896 5896
5897 <param id="674" name="Hair_Shear_Back" value="0.620" /> 5897 <param id="674" name="Hair_Shear_Back" value="0.620" />
5898 5898
5899 <param id="750" name="Eyebrow Density" value="1.000" /> 5899 <param id="750" name="Eyebrow Density" value="1.000" />
5900 5900
5901 <param id="752" name="Hair Thickness" value="0.690" /> 5901 <param id="752" name="Hair Thickness" value="0.690" />
5902 5902
5903 <param id="754" name="Hair_Taper_Back" value="-0.340" /> 5903 <param id="754" name="Hair_Taper_Back" value="-0.340" />
5904 5904
5905 <param id="755" name="Hair_Taper_Front" value="-0.030" /> 5905 <param id="755" name="Hair_Taper_Front" value="-0.030" />
5906 5906
5907 <param id="757" name="Lower_Eyebrows" value="0.360" /> 5907 <param id="757" name="Lower_Eyebrows" value="0.360" />
5908 5908
5909 <param id="762" name="Hair_Shear_Front" value="0.570" /> 5909 <param id="762" name="Hair_Shear_Front" value="0.570" />
5910 5910
5911 <param id="763" name="Hair Volume" value="0.770" /> 5911 <param id="763" name="Hair Volume" value="0.770" />
5912 5912
5913 <texture te="4" uuid="7ca39b4c-bd19-4699-aff7-f93fd03d3e7b" /> 5913 <texture te="4" uuid="7ca39b4c-bd19-4699-aff7-f93fd03d3e7b" />
5914 5914
5915<!-- wearable: eyes --> 5915<!-- wearable: eyes -->
5916 <param id="98" name="Eye Lightness" value="0.140" /> 5916 <param id="98" name="Eye Lightness" value="0.140" />
5917 5917
5918 <param id="99" name="Eye Color" value="0.000" /> 5918 <param id="99" name="Eye Color" value="0.000" />
5919 5919
5920 <texture te="3" uuid="6522e74d-1660-4e7f-b601-6f48c1659a77" /> 5920 <texture te="3" uuid="6522e74d-1660-4e7f-b601-6f48c1659a77" />
5921 </archetype> 5921 </archetype>
5922 5922
5923 <archetype name="F B Chubby"> 5923 <archetype name="F B Chubby">
5924<!-- wearable: shape --> 5924<!-- wearable: shape -->
5925 <param id="1" name="Big_Brow" value="0.436" /> 5925 <param id="1" name="Big_Brow" value="0.436" />
5926 5926
5927 <param id="2" name="Nose_Big_Out" value="-0.404" /> 5927 <param id="2" name="Nose_Big_Out" value="-0.404" />
5928 5928
5929 <param id="4" name="Broad_Nostrils" value="0.430" /> 5929 <param id="4" name="Broad_Nostrils" value="0.430" />
5930 5930
5931 <param id="5" name="Cleft_Chin" value="0.219" /> 5931 <param id="5" name="Cleft_Chin" value="0.219" />
5932 5932
5933 <param id="6" name="Bulbous_Nose_Tip" value="0.428" /> 5933 <param id="6" name="Bulbous_Nose_Tip" value="0.428" />
5934 5934
5935 <param id="7" name="Weak_Chin" value="0.270" /> 5935 <param id="7" name="Weak_Chin" value="0.270" />
5936 5936
5937 <param id="8" name="Double_Chin" value="0.060" /> 5937 <param id="8" name="Double_Chin" value="0.060" />
5938 5938
5939 <param id="10" name="Sunken_Cheeks" value="-0.285" /> 5939 <param id="10" name="Sunken_Cheeks" value="-0.285" />
5940 5940
5941 <param id="11" name="Noble_Nose_Bridge" value="0.180" /> 5941 <param id="11" name="Noble_Nose_Bridge" value="0.180" />
5942 5942
5943 <param id="12" name="Jowls" value="0.640" /> 5943 <param id="12" name="Jowls" value="0.640" />
5944 5944
5945 <param id="13" name="Cleft_Chin_Upper" value="0.000" /> 5945 <param id="13" name="Cleft_Chin_Upper" value="0.000" />
5946 5946
5947 <param id="14" name="High_Cheek_Bones" value="0.250" /> 5947 <param id="14" name="High_Cheek_Bones" value="0.250" />
5948 5948
5949 <param id="15" name="Ears_Out" value="-0.280" /> 5949 <param id="15" name="Ears_Out" value="-0.280" />
5950 5950
5951 <param id="17" name="Square_Jaw" value="0.280" /> 5951 <param id="17" name="Square_Jaw" value="0.280" />
5952 5952
5953 <param id="18" name="Puffy_Upper_Cheeks" value="1.500" /> 5953 <param id="18" name="Puffy_Upper_Cheeks" value="1.500" />
5954 5954
5955 <param id="19" name="Upturned_Nose_Tip" value="-1.175" /> 5955 <param id="19" name="Upturned_Nose_Tip" value="-1.175" />
5956 5956
5957 <param id="20" name="Bulbous_Nose" value="-0.200" /> 5957 <param id="20" name="Bulbous_Nose" value="-0.200" />
5958 5958
5959 <param id="21" name="Upper_Eyelid_Fold" value="-0.200" /> 5959 <param id="21" name="Upper_Eyelid_Fold" value="-0.200" />
5960 5960
5961 <param id="22" name="Attached_Earlobes" value="0.000" /> 5961 <param id="22" name="Attached_Earlobes" value="0.000" />
5962 5962
5963 <param id="23" name="Baggy_Eyes" value="-0.340" /> 5963 <param id="23" name="Baggy_Eyes" value="-0.340" />
5964 5964
5965 <param id="24" name="Wide_Eyes" value="1.020" /> 5965 <param id="24" name="Wide_Eyes" value="1.020" />
5966 5966
5967 <param id="25" name="Wide_Lip_Cleft" value="-0.064" /> 5967 <param id="25" name="Wide_Lip_Cleft" value="-0.064" />
5968 5968
5969 <param id="27" name="Wide_Nose_Bridge" value="0.025" /> 5969 <param id="27" name="Wide_Nose_Bridge" value="0.025" />
5970 5970
5971 <param id="33" name="Height" value="0.753" /> 5971 <param id="33" name="Height" value="0.753" />
5972 5972
5973 <param id="34" name="Thickness" value="0.928" /> 5973 <param id="34" name="Thickness" value="0.928" />
5974 5974
5975 <param id="35" name="Big_Ears" value="-0.130" /> 5975 <param id="35" name="Big_Ears" value="-0.130" />
5976 5976
5977 <param id="36" name="Shoulders" value="-0.776" /> 5977 <param id="36" name="Shoulders" value="-0.776" />
5978 5978
5979 <param id="37" name="Hip Width" value="-0.860" /> 5979 <param id="37" name="Hip Width" value="-0.860" />
5980 5980
5981 <param id="38" name="Torso Length" value="0.860" /> 5981 <param id="38" name="Torso Length" value="0.860" />
5982 5982
5983 <param id="80" name="male" value="0.000" /> 5983 <param id="80" name="male" value="0.000" />
5984 5984
5985 <param id="105" name="Breast Size" value="0.850" /> 5985 <param id="105" name="Breast Size" value="0.850" />
5986 5986
5987 <param id="151" name="Big_Butt_Legs" value="0.398" /> 5987 <param id="151" name="Big_Butt_Legs" value="0.398" />
5988 5988
5989 <param id="155" name="Lip Width" value="0.134" /> 5989 <param id="155" name="Lip Width" value="0.134" />
5990 5990
5991 <param id="157" name="Belly Size" value="0.150" /> 5991 <param id="157" name="Belly Size" value="0.150" />
5992 5992
5993 <param id="185" name="Deep_Chin" value="-0.560" /> 5993 <param id="185" name="Deep_Chin" value="-0.560" />
5994 5994
5995 <param id="193" name="Head Shape" value="0.470" /> 5995 <param id="193" name="Head Shape" value="0.470" />
5996 5996
5997 <param id="196" name="Eye Spacing" value="0.400" /> 5997 <param id="196" name="Eye Spacing" value="0.400" />
5998 5998
5999 <param id="505" name="Lip Thickness" value="0.740" /> 5999 <param id="505" name="Lip Thickness" value="0.740" />
6000 6000
6001 <param id="506" name="Mouth_Height" value="0.280" /> 6001 <param id="506" name="Mouth_Height" value="0.280" />
6002 6002
6003 <param id="507" name="Breast_Gravity" value="1.370" /> 6003 <param id="507" name="Breast_Gravity" value="1.370" />
6004 6004
6005 <param id="515" name="Foot_Size" value="1.480" /> 6005 <param id="515" name="Foot_Size" value="1.480" />
6006 6006
6007 <param id="517" name="Wide_Nose" value="0.550" /> 6007 <param id="517" name="Wide_Nose" value="0.550" />
6008 6008
6009 <param id="518" name="Eyelashes_Long" value="0.222" /> 6009 <param id="518" name="Eyelashes_Long" value="0.222" />
6010 6010
6011 <param id="629" name="Forehead Angle" value="0.470" /> 6011 <param id="629" name="Forehead Angle" value="0.470" />
6012 6012
6013 <param id="637" name="Body Fat" value="0.370" /> 6013 <param id="637" name="Body Fat" value="0.370" />
6014 6014
6015 <param id="646" name="Egg_Head" value="0.379" /> 6015 <param id="646" name="Egg_Head" value="0.379" />
6016 6016
6017 <param id="647" name="Squash_Stretch_Head" value="0.430" /> 6017 <param id="647" name="Squash_Stretch_Head" value="0.430" />
6018 6018
6019 <param id="649" name="Torso Muscles" value="0.680" /> 6019 <param id="649" name="Torso Muscles" value="0.680" />
6020 6020
6021 <param id="650" name="Eyelid_Corner_Up" value="0.325" /> 6021 <param id="650" name="Eyelid_Corner_Up" value="0.325" />
6022 6022
6023 <param id="652" name="Leg Muscles" value="0.800" /> 6023 <param id="652" name="Leg Muscles" value="0.800" />
6024 6024
6025 <param id="653" name="Tall_Lips" value="0.560" /> 6025 <param id="653" name="Tall_Lips" value="0.560" />
6026 6026
6027 <param id="656" name="Crooked_Nose" value="0.000" /> 6027 <param id="656" name="Crooked_Nose" value="0.000" />
6028 6028
6029 <param id="659" name="Mouth Corner" value="0.830" /> 6029 <param id="659" name="Mouth Corner" value="0.830" />
6030 6030
6031 <param id="662" name="Face Shear" value="0.500" /> 6031 <param id="662" name="Face Shear" value="0.500" />
6032 6032
6033 <param id="663" name="Shift_Mouth" value="0.160" /> 6033 <param id="663" name="Shift_Mouth" value="0.160" />
6034 6034
6035 <param id="664" name="Pop_Eye" value="0.052" /> 6035 <param id="664" name="Pop_Eye" value="0.052" />
6036 6036
6037 <param id="665" name="Jaw_Jut" value="-0.320" /> 6037 <param id="665" name="Jaw_Jut" value="-0.320" />
6038 6038
6039 <param id="675" name="Hand Size" value="0.006" /> 6039 <param id="675" name="Hand Size" value="0.006" />
6040 6040
6041 <param id="676" name="Love_Handles" value="-0.070" /> 6041 <param id="676" name="Love_Handles" value="-0.070" />
6042 6042
6043 <param id="678" name="Torso Muscles" value="0.790" /> 6043 <param id="678" name="Torso Muscles" value="0.790" />
6044 6044
6045 <param id="682" name="Head Size" value="0.770" /> 6045 <param id="682" name="Head Size" value="0.770" />
6046 6046
6047 <param id="683" name="Neck Thickness" value="-0.064" /> 6047 <param id="683" name="Neck Thickness" value="-0.064" />
6048 6048
6049 <param id="684" name="Breast_Female_Clevage" value="-0.092" /> 6049 <param id="684" name="Breast_Female_Clevage" value="-0.092" />
6050 6050
6051 <param id="685" name="Chest_Male_No_Pecs" value="0.200" /> 6051 <param id="685" name="Chest_Male_No_Pecs" value="0.200" />
6052 6052
6053 <param id="690" name="Eye Size" value="0.530" /> 6053 <param id="690" name="Eye Size" value="0.530" />
6054 6054
6055 <param id="692" name="Leg Length" value="0.640" /> 6055 <param id="692" name="Leg Length" value="0.640" />
6056 6056
6057 <param id="693" name="Arm Length" value="0.780" /> 6057 <param id="693" name="Arm Length" value="0.780" />
6058 6058
6059 <param id="753" name="Saddlebags" value="1.250" /> 6059 <param id="753" name="Saddlebags" value="1.250" />
6060 6060
6061 <param id="756" name="Neck Length" value="0.200" /> 6061 <param id="756" name="Neck Length" value="0.200" />
6062 6062
6063 <param id="758" name="Lower_Bridge_Nose" value="0.060" /> 6063 <param id="758" name="Lower_Bridge_Nose" value="0.060" />
6064 6064
6065 <param id="759" name="Low_Septum_Nose" value="0.925" /> 6065 <param id="759" name="Low_Septum_Nose" value="0.925" />
6066 6066
6067 <param id="760" name="Jaw_Angle" value="0.688" /> 6067 <param id="760" name="Jaw_Angle" value="0.688" />
6068 6068
6069 <param id="764" name="Lip_Cleft_Deep" value="0.520" /> 6069 <param id="764" name="Lip_Cleft_Deep" value="0.520" />
6070 6070
6071 <param id="765" name="Puffy_Lower_Lids" value="0.316" /> 6071 <param id="765" name="Puffy_Lower_Lids" value="0.316" />
6072 6072
6073 <param id="769" name="Eye Depth" value="0.620" /> 6073 <param id="769" name="Eye Depth" value="0.620" />
6074 6074
6075 <param id="773" name="Head Length" value="0.720" /> 6075 <param id="773" name="Head Length" value="0.720" />
6076 6076
6077<!-- wearable: skin --> 6077<!-- wearable: skin -->
6078 <param id="108" name="Rainbow Color" value="0.000" /> 6078 <param id="108" name="Rainbow Color" value="0.000" />
6079 6079
6080 <param id="110" name="Red Skin" value="0.000" /> 6080 <param id="110" name="Red Skin" value="0.000" />
6081 6081
6082 <param id="111" name="Pigment" value="0.660" /> 6082 <param id="111" name="Pigment" value="0.660" />
6083 6083
6084 <param id="116" name="Rosy Complexion" value="0.080" /> 6084 <param id="116" name="Rosy Complexion" value="0.080" />
6085 6085
6086 <param id="117" name="Lip Pinkness" value="0.330" /> 6086 <param id="117" name="Lip Pinkness" value="0.330" />
6087 6087
6088 <param id="150" name="Body Definition" value="0.690" /> 6088 <param id="150" name="Body Definition" value="0.690" />
6089 6089
6090 <param id="162" name="Facial Definition" value="0.470" /> 6090 <param id="162" name="Facial Definition" value="0.470" />
6091 6091
6092 <param id="163" name="Wrinkles" value="0.000" /> 6092 <param id="163" name="Wrinkles" value="0.000" />
6093 6093
6094 <param id="165" name="Freckles" value="0.190" /> 6094 <param id="165" name="Freckles" value="0.190" />
6095 6095
6096 <param id="700" name="Lipstick Color" value="0.250" /> 6096 <param id="700" name="Lipstick Color" value="0.250" />
6097 6097
6098 <param id="701" name="Lipstick" value="0.000" /> 6098 <param id="701" name="Lipstick" value="0.000" />
6099 6099
6100 <param id="702" name="Lipgloss" value="0.000" /> 6100 <param id="702" name="Lipgloss" value="0.000" />
6101 6101
6102 <param id="703" name="Eyeliner" value="0.000" /> 6102 <param id="703" name="Eyeliner" value="0.000" />
6103 6103
6104 <param id="704" name="Blush" value="0.000" /> 6104 <param id="704" name="Blush" value="0.000" />
6105 6105
6106 <param id="705" name="Blush Color" value="0.500" /> 6106 <param id="705" name="Blush Color" value="0.500" />
6107 6107
6108 <param id="706" name="Out Shdw Opacity" value="0.600" /> 6108 <param id="706" name="Out Shdw Opacity" value="0.600" />
6109 6109
6110 <param id="707" name="Outer Shadow" value="0.000" /> 6110 <param id="707" name="Outer Shadow" value="0.000" />
6111 6111
6112 <param id="708" name="Out Shdw Color" value="0.000" /> 6112 <param id="708" name="Out Shdw Color" value="0.000" />
6113 6113
6114 <param id="709" name="Inner Shadow" value="0.000" /> 6114 <param id="709" name="Inner Shadow" value="0.000" />
6115 6115
6116 <param id="710" name="Nail Polish" value="0.000" /> 6116 <param id="710" name="Nail Polish" value="0.000" />
6117 6117
6118 <param id="711" name="Blush Opacity" value="0.500" /> 6118 <param id="711" name="Blush Opacity" value="0.500" />
6119 6119
6120 <param id="712" name="In Shdw Color" value="0.000" /> 6120 <param id="712" name="In Shdw Color" value="0.000" />
6121 6121
6122 <param id="713" name="In Shdw Opacity" value="0.700" /> 6122 <param id="713" name="In Shdw Opacity" value="0.700" />
6123 6123
6124 <param id="714" name="Eyeliner Color" value="0.000" /> 6124 <param id="714" name="Eyeliner Color" value="0.000" />
6125 6125
6126 <param id="715" name="Nail Polish Color" value="0.000" /> 6126 <param id="715" name="Nail Polish Color" value="0.000" />
6127 6127
6128 <texture te="0" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 6128 <texture te="0" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
6129 6129
6130 <texture te="5" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 6130 <texture te="5" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
6131 6131
6132 <texture te="6" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 6132 <texture te="6" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
6133 6133
6134<!-- wearable: hair --> 6134<!-- wearable: hair -->
6135 <param id="16" name="Pointy_Eyebrows" value="0.655" /> 6135 <param id="16" name="Pointy_Eyebrows" value="0.655" />
6136 6136
6137 <param id="31" name="Arced_Eyebrows" value="0.180" /> 6137 <param id="31" name="Arced_Eyebrows" value="0.180" />
6138 6138
6139 <param id="112" name="Rainbow Color" value="0.000" /> 6139 <param id="112" name="Rainbow Color" value="0.000" />
6140 6140
6141 <param id="113" name="Red Hair" value="0.340" /> 6141 <param id="113" name="Red Hair" value="0.340" />
6142 6142
6143 <param id="114" name="Blonde Hair" value="0.000" /> 6143 <param id="114" name="Blonde Hair" value="0.000" />
6144 6144
6145 <param id="115" name="White Hair" value="0.000" /> 6145 <param id="115" name="White Hair" value="0.000" />
6146 6146
6147 <param id="119" name="Eyebrow Size" value="0.200" /> 6147 <param id="119" name="Eyebrow Size" value="0.200" />
6148 6148
6149 <param id="130" name="Front Fringe" value="0.000" /> 6149 <param id="130" name="Front Fringe" value="0.000" />
6150 6150
6151 <param id="131" name="Side Fringe" value="0.730" /> 6151 <param id="131" name="Side Fringe" value="0.730" />
6152 6152
6153 <param id="132" name="Back Fringe" value="0.210" /> 6153 <param id="132" name="Back Fringe" value="0.210" />
6154 6154
6155 <param id="133" name="Hair Front" value="0.280" /> 6155 <param id="133" name="Hair Front" value="0.280" />
6156 6156
6157 <param id="134" name="Hair Sides" value="0.170" /> 6157 <param id="134" name="Hair Sides" value="0.170" />
6158 6158
6159 <param id="135" name="Hair Back" value="0.560" /> 6159 <param id="135" name="Hair Back" value="0.560" />
6160 6160
6161 <param id="136" name="Hair Sweep" value="0.800" /> 6161 <param id="136" name="Hair Sweep" value="0.800" />
6162 6162
6163 <param id="137" name="Hair Tilt" value="0.500" /> 6163 <param id="137" name="Hair Tilt" value="0.500" />
6164 6164
6165 <param id="140" name="Hair_Part_Middle" value="0.000" /> 6165 <param id="140" name="Hair_Part_Middle" value="0.000" />
6166 6166
6167 <param id="141" name="Hair_Part_Right" value="0.000" /> 6167 <param id="141" name="Hair_Part_Right" value="0.000" />
6168 6168
6169 <param id="142" name="Hair_Part_Left" value="0.000" /> 6169 <param id="142" name="Hair_Part_Left" value="0.000" />
6170 6170
6171 <param id="143" name="Hair_Sides_Full" value="-0.040" /> 6171 <param id="143" name="Hair_Sides_Full" value="-0.040" />
6172 6172
6173 <param id="166" name="Sideburns" value="0.710" /> 6173 <param id="166" name="Sideburns" value="0.710" />
6174 6174
6175 <param id="167" name="Moustache" value="0.000" /> 6175 <param id="167" name="Moustache" value="0.000" />
6176 6176
6177 <param id="168" name="Soulpatch" value="0.000" /> 6177 <param id="168" name="Soulpatch" value="0.000" />
6178 6178
6179 <param id="169" name="Chin Curtains" value="0.000" /> 6179 <param id="169" name="Chin Curtains" value="0.000" />
6180 6180
6181 <param id="177" name="Hair_Rumpled" value="0.230" /> 6181 <param id="177" name="Hair_Rumpled" value="0.230" />
6182 6182
6183 <param id="181" name="Hair_Big_Front" value="0.400" /> 6183 <param id="181" name="Hair_Big_Front" value="0.400" />
6184 6184
6185 <param id="182" name="Hair_Big_Top" value="0.340" /> 6185 <param id="182" name="Hair_Big_Top" value="0.340" />
6186 6186
6187 <param id="183" name="Hair_Big_Back" value="0.380" /> 6187 <param id="183" name="Hair_Big_Back" value="0.380" />
6188 6188
6189 <param id="184" name="Hair_Spiked" value="0.000" /> 6189 <param id="184" name="Hair_Spiked" value="0.000" />
6190 6190
6191 <param id="192" name="Bangs_Part_Middle" value="0.000" /> 6191 <param id="192" name="Bangs_Part_Middle" value="0.000" />
6192 6192
6193 <param id="674" name="Hair_Shear_Back" value="0.830" /> 6193 <param id="674" name="Hair_Shear_Back" value="0.830" />
6194 6194
6195 <param id="750" name="Eyebrow Density" value="0.850" /> 6195 <param id="750" name="Eyebrow Density" value="0.850" />
6196 6196
6197 <param id="752" name="Hair Thickness" value="0.690" /> 6197 <param id="752" name="Hair Thickness" value="0.690" />
6198 6198
6199 <param id="754" name="Hair_Taper_Back" value="-0.190" /> 6199 <param id="754" name="Hair_Taper_Back" value="-0.190" />
6200 6200
6201 <param id="755" name="Hair_Taper_Front" value="-0.090" /> 6201 <param id="755" name="Hair_Taper_Front" value="-0.090" />
6202 6202
6203 <param id="757" name="Lower_Eyebrows" value="-0.120" /> 6203 <param id="757" name="Lower_Eyebrows" value="-0.120" />
6204 6204
6205 <param id="762" name="Hair_Shear_Front" value="0.750" /> 6205 <param id="762" name="Hair_Shear_Front" value="0.750" />
6206 6206
6207 <param id="763" name="Hair Volume" value="0.660" /> 6207 <param id="763" name="Hair Volume" value="0.660" />
6208 6208
6209 <texture te="4" uuid="7ca39b4c-bd19-4699-aff7-f93fd03d3e7b" /> 6209 <texture te="4" uuid="7ca39b4c-bd19-4699-aff7-f93fd03d3e7b" />
6210 6210
6211<!-- wearable: eyes --> 6211<!-- wearable: eyes -->
6212 <param id="98" name="Eye Lightness" value="0.140" /> 6212 <param id="98" name="Eye Lightness" value="0.140" />
6213 6213
6214 <param id="99" name="Eye Color" value="0.000" /> 6214 <param id="99" name="Eye Color" value="0.000" />
6215 6215
6216 <texture te="3" uuid="6522e74d-1660-4e7f-b601-6f48c1659a77" /> 6216 <texture te="3" uuid="6522e74d-1660-4e7f-b601-6f48c1659a77" />
6217 </archetype> 6217 </archetype>
6218 6218
6219 <archetype name="F A Skinny"> 6219 <archetype name="F A Skinny">
6220<!-- wearable: shape --> 6220<!-- wearable: shape -->
6221 <param id="1" name="Big_Brow" value="-0.254" /> 6221 <param id="1" name="Big_Brow" value="-0.254" />
6222 6222
6223 <param id="2" name="Nose_Big_Out" value="-0.371" /> 6223 <param id="2" name="Nose_Big_Out" value="-0.371" />
6224 6224
6225 <param id="4" name="Broad_Nostrils" value="-0.365" /> 6225 <param id="4" name="Broad_Nostrils" value="-0.365" />
6226 6226
6227 <param id="5" name="Cleft_Chin" value="-0.100" /> 6227 <param id="5" name="Cleft_Chin" value="-0.100" />
6228 6228
6229 <param id="6" name="Bulbous_Nose_Tip" value="0.675" /> 6229 <param id="6" name="Bulbous_Nose_Tip" value="0.675" />
6230 6230
6231 <param id="7" name="Weak_Chin" value="0.230" /> 6231 <param id="7" name="Weak_Chin" value="0.230" />
6232 6232
6233 <param id="8" name="Double_Chin" value="0.040" /> 6233 <param id="8" name="Double_Chin" value="0.040" />
6234 6234
6235 <param id="10" name="Sunken_Cheeks" value="0.390" /> 6235 <param id="10" name="Sunken_Cheeks" value="0.390" />
6236 6236
6237 <param id="11" name="Noble_Nose_Bridge" value="0.140" /> 6237 <param id="11" name="Noble_Nose_Bridge" value="0.140" />
6238 6238
6239 <param id="12" name="Jowls" value="-0.500" /> 6239 <param id="12" name="Jowls" value="-0.500" />
6240 6240
6241 <param id="13" name="Cleft_Chin_Upper" value="0.000" /> 6241 <param id="13" name="Cleft_Chin_Upper" value="0.000" />
6242 6242
6243 <param id="14" name="High_Cheek_Bones" value="0.640" /> 6243 <param id="14" name="High_Cheek_Bones" value="0.640" />
6244 6244
6245 <param id="15" name="Ears_Out" value="0.140" /> 6245 <param id="15" name="Ears_Out" value="0.140" />
6246 6246
6247 <param id="17" name="Square_Jaw" value="-0.170" /> 6247 <param id="17" name="Square_Jaw" value="-0.170" />
6248 6248
6249 <param id="18" name="Puffy_Upper_Cheeks" value="0.860" /> 6249 <param id="18" name="Puffy_Upper_Cheeks" value="0.860" />
6250 6250
6251 <param id="19" name="Upturned_Nose_Tip" value="0.375" /> 6251 <param id="19" name="Upturned_Nose_Tip" value="0.375" />
6252 6252
6253 <param id="20" name="Bulbous_Nose" value="-0.280" /> 6253 <param id="20" name="Bulbous_Nose" value="-0.280" />
6254 6254
6255 <param id="21" name="Upper_Eyelid_Fold" value="1.195" /> 6255 <param id="21" name="Upper_Eyelid_Fold" value="1.195" />
6256 6256
6257 <param id="22" name="Attached_Earlobes" value="0.000" /> 6257 <param id="22" name="Attached_Earlobes" value="0.000" />
6258 6258
6259 <param id="23" name="Baggy_Eyes" value="-0.500" /> 6259 <param id="23" name="Baggy_Eyes" value="-0.500" />
6260 6260
6261 <param id="24" name="Wide_Eyes" value="-0.030" /> 6261 <param id="24" name="Wide_Eyes" value="-0.030" />
6262 6262
6263 <param id="25" name="Wide_Lip_Cleft" value="1.247" /> 6263 <param id="25" name="Wide_Lip_Cleft" value="1.247" />
6264 6264
6265 <param id="27" name="Wide_Nose_Bridge" value="-0.325" /> 6265 <param id="27" name="Wide_Nose_Bridge" value="-0.325" />
6266 6266
6267 <param id="33" name="Height" value="-0.064" /> 6267 <param id="33" name="Height" value="-0.064" />
6268 6268
6269 <param id="34" name="Thickness" value="-0.700" /> 6269 <param id="34" name="Thickness" value="-0.700" />
6270 6270
6271 <param id="35" name="Big_Ears" value="0.260" /> 6271 <param id="35" name="Big_Ears" value="0.260" />
6272 6272
6273 <param id="36" name="Shoulders" value="-1.320" /> 6273 <param id="36" name="Shoulders" value="-1.320" />
6274 6274
6275 <param id="37" name="Hip Width" value="-2.060" /> 6275 <param id="37" name="Hip Width" value="-2.060" />
6276 6276
6277 <param id="38" name="Torso Length" value="0.280" /> 6277 <param id="38" name="Torso Length" value="0.280" />
6278 6278
6279 <param id="80" name="male" value="0.000" /> 6279 <param id="80" name="male" value="0.000" />
6280 6280
6281 <param id="105" name="Breast Size" value="0.100" /> 6281 <param id="105" name="Breast Size" value="0.100" />
6282 6282
6283 <param id="151" name="Big_Butt_Legs" value="-0.260" /> 6283 <param id="151" name="Big_Butt_Legs" value="-0.260" />
6284 6284
6285 <param id="155" name="Lip Width" value="-0.526" /> 6285 <param id="155" name="Lip Width" value="-0.526" />
6286 6286
6287 <param id="157" name="Belly Size" value="0.040" /> 6287 <param id="157" name="Belly Size" value="0.040" />
6288 6288
6289 <param id="185" name="Deep_Chin" value="-0.460" /> 6289 <param id="185" name="Deep_Chin" value="-0.460" />
6290 6290
6291 <param id="193" name="Head Shape" value="0.540" /> 6291 <param id="193" name="Head Shape" value="0.540" />
6292 6292
6293 <param id="196" name="Eye Spacing" value="-0.170" /> 6293 <param id="196" name="Eye Spacing" value="-0.170" />
6294 6294
6295 <param id="505" name="Lip Thickness" value="0.560" /> 6295 <param id="505" name="Lip Thickness" value="0.560" />
6296 6296
6297 <param id="506" name="Mouth_Height" value="-0.480" /> 6297 <param id="506" name="Mouth_Height" value="-0.480" />
6298 6298
6299 <param id="507" name="Breast_Gravity" value="0.005" /> 6299 <param id="507" name="Breast_Gravity" value="0.005" />
6300 6300
6301 <param id="515" name="Foot_Size" value="0.040" /> 6301 <param id="515" name="Foot_Size" value="0.040" />
6302 6302
6303 <param id="517" name="Wide_Nose" value="0.535" /> 6303 <param id="517" name="Wide_Nose" value="0.535" />
6304 6304
6305 <param id="518" name="Eyelashes_Long" value="1.230" /> 6305 <param id="518" name="Eyelashes_Long" value="1.230" />
6306 6306
6307 <param id="629" name="Forehead Angle" value="0.470" /> 6307 <param id="629" name="Forehead Angle" value="0.470" />
6308 6308
6309 <param id="637" name="Body Fat" value="0.000" /> 6309 <param id="637" name="Body Fat" value="0.000" />
6310 6310
6311 <param id="646" name="Egg_Head" value="0.310" /> 6311 <param id="646" name="Egg_Head" value="0.310" />
6312 6312
6313 <param id="647" name="Squash_Stretch_Head" value="0.565" /> 6313 <param id="647" name="Squash_Stretch_Head" value="0.565" />
6314 6314
6315 <param id="649" name="Torso Muscles" value="0.200" /> 6315 <param id="649" name="Torso Muscles" value="0.200" />
6316 6316
6317 <param id="650" name="Eyelid_Corner_Up" value="0.700" /> 6317 <param id="650" name="Eyelid_Corner_Up" value="0.700" />
6318 6318
6319 <param id="652" name="Leg Muscles" value="0.390" /> 6319 <param id="652" name="Leg Muscles" value="0.390" />
6320 6320
6321 <param id="653" name="Tall_Lips" value="0.740" /> 6321 <param id="653" name="Tall_Lips" value="0.740" />
6322 6322
6323 <param id="656" name="Crooked_Nose" value="0.000" /> 6323 <param id="656" name="Crooked_Nose" value="0.000" />
6324 6324
6325 <param id="659" name="Mouth Corner" value="0.770" /> 6325 <param id="659" name="Mouth Corner" value="0.770" />
6326 6326
6327 <param id="662" name="Face Shear" value="0.500" /> 6327 <param id="662" name="Face Shear" value="0.500" />
6328 6328
6329 <param id="663" name="Shift_Mouth" value="-0.080" /> 6329 <param id="663" name="Shift_Mouth" value="-0.080" />
6330 6330
6331 <param id="664" name="Pop_Eye" value="0.052" /> 6331 <param id="664" name="Pop_Eye" value="0.052" />
6332 6332
6333 <param id="665" name="Jaw_Jut" value="-0.600" /> 6333 <param id="665" name="Jaw_Jut" value="-0.600" />
6334 6334
6335 <param id="675" name="Hand Size" value="-0.216" /> 6335 <param id="675" name="Hand Size" value="-0.216" />
6336 6336
6337 <param id="676" name="Love_Handles" value="-0.340" /> 6337 <param id="676" name="Love_Handles" value="-0.340" />
6338 6338
6339 <param id="678" name="Torso Muscles" value="0.790" /> 6339 <param id="678" name="Torso Muscles" value="0.790" />
6340 6340
6341 <param id="682" name="Head Size" value="0.500" /> 6341 <param id="682" name="Head Size" value="0.500" />
6342 6342
6343 <param id="683" name="Neck Thickness" value="-0.310" /> 6343 <param id="683" name="Neck Thickness" value="-0.310" />
6344 6344
6345 <param id="684" name="Breast_Female_Clevage" value="0.292" /> 6345 <param id="684" name="Breast_Female_Clevage" value="0.292" />
6346 6346
6347 <param id="685" name="Chest_Male_No_Pecs" value="0.200" /> 6347 <param id="685" name="Chest_Male_No_Pecs" value="0.200" />
6348 6348
6349 <param id="690" name="Eye Size" value="0.620" /> 6349 <param id="690" name="Eye Size" value="0.620" />
6350 6350
6351 <param id="692" name="Leg Length" value="0.160" /> 6351 <param id="692" name="Leg Length" value="0.160" />
6352 6352
6353 <param id="693" name="Arm Length" value="0.220" /> 6353 <param id="693" name="Arm Length" value="0.220" />
6354 6354
6355 <param id="753" name="Saddlebags" value="0.865" /> 6355 <param id="753" name="Saddlebags" value="0.865" />
6356 6356
6357 <param id="756" name="Neck Length" value="-0.260" /> 6357 <param id="756" name="Neck Length" value="-0.260" />
6358 6358
6359 <param id="758" name="Lower_Bridge_Nose" value="0.180" /> 6359 <param id="758" name="Lower_Bridge_Nose" value="0.180" />
6360 6360
6361 <param id="759" name="Low_Septum_Nose" value="0.175" /> 6361 <param id="759" name="Low_Septum_Nose" value="0.175" />
6362 6362
6363 <param id="760" name="Jaw_Angle" value="0.496" /> 6363 <param id="760" name="Jaw_Angle" value="0.496" />
6364 6364
6365 <param id="764" name="Lip_Cleft_Deep" value="0.061" /> 6365 <param id="764" name="Lip_Cleft_Deep" value="0.061" />
6366 6366
6367 <param id="765" name="Puffy_Lower_Lids" value="-0.300" /> 6367 <param id="765" name="Puffy_Lower_Lids" value="-0.300" />
6368 6368
6369 <param id="769" name="Eye Depth" value="0.710" /> 6369 <param id="769" name="Eye Depth" value="0.710" />
6370 6370
6371 <param id="773" name="Head Length" value="0.390" /> 6371 <param id="773" name="Head Length" value="0.390" />
6372 6372
6373<!-- wearable: skin --> 6373<!-- wearable: skin -->
6374 <param id="108" name="Rainbow Color" value="0.000" /> 6374 <param id="108" name="Rainbow Color" value="0.000" />
6375 6375
6376 <param id="110" name="Red Skin" value="0.000" /> 6376 <param id="110" name="Red Skin" value="0.000" />
6377 6377
6378 <param id="111" name="Pigment" value="0.150" /> 6378 <param id="111" name="Pigment" value="0.150" />
6379 6379
6380 <param id="116" name="Rosy Complexion" value="0.000" /> 6380 <param id="116" name="Rosy Complexion" value="0.000" />
6381 6381
6382 <param id="117" name="Lip Pinkness" value="0.000" /> 6382 <param id="117" name="Lip Pinkness" value="0.000" />
6383 6383
6384 <param id="150" name="Body Definition" value="0.990" /> 6384 <param id="150" name="Body Definition" value="0.990" />
6385 6385
6386 <param id="162" name="Facial Definition" value="0.070" /> 6386 <param id="162" name="Facial Definition" value="0.070" />
6387 6387
6388 <param id="163" name="Wrinkles" value="0.000" /> 6388 <param id="163" name="Wrinkles" value="0.000" />
6389 6389
6390 <param id="165" name="Freckles" value="0.000" /> 6390 <param id="165" name="Freckles" value="0.000" />
6391 6391
6392 <param id="700" name="Lipstick Color" value="0.250" /> 6392 <param id="700" name="Lipstick Color" value="0.250" />
6393 6393
6394 <param id="701" name="Lipstick" value="0.000" /> 6394 <param id="701" name="Lipstick" value="0.000" />
6395 6395
6396 <param id="702" name="Lipgloss" value="0.000" /> 6396 <param id="702" name="Lipgloss" value="0.000" />
6397 6397
6398 <param id="703" name="Eyeliner" value="0.000" /> 6398 <param id="703" name="Eyeliner" value="0.000" />
6399 6399
6400 <param id="704" name="Blush" value="0.000" /> 6400 <param id="704" name="Blush" value="0.000" />
6401 6401
6402 <param id="705" name="Blush Color" value="0.500" /> 6402 <param id="705" name="Blush Color" value="0.500" />
6403 6403
6404 <param id="706" name="Out Shdw Opacity" value="0.600" /> 6404 <param id="706" name="Out Shdw Opacity" value="0.600" />
6405 6405
6406 <param id="707" name="Outer Shadow" value="0.000" /> 6406 <param id="707" name="Outer Shadow" value="0.000" />
6407 6407
6408 <param id="708" name="Out Shdw Color" value="0.000" /> 6408 <param id="708" name="Out Shdw Color" value="0.000" />
6409 6409
6410 <param id="709" name="Inner Shadow" value="0.000" /> 6410 <param id="709" name="Inner Shadow" value="0.000" />
6411 6411
6412 <param id="710" name="Nail Polish" value="0.000" /> 6412 <param id="710" name="Nail Polish" value="0.000" />
6413 6413
6414 <param id="711" name="Blush Opacity" value="0.500" /> 6414 <param id="711" name="Blush Opacity" value="0.500" />
6415 6415
6416 <param id="712" name="In Shdw Color" value="0.000" /> 6416 <param id="712" name="In Shdw Color" value="0.000" />
6417 6417
6418 <param id="713" name="In Shdw Opacity" value="0.700" /> 6418 <param id="713" name="In Shdw Opacity" value="0.700" />
6419 6419
6420 <param id="714" name="Eyeliner Color" value="0.000" /> 6420 <param id="714" name="Eyeliner Color" value="0.000" />
6421 6421
6422 <param id="715" name="Nail Polish Color" value="0.000" /> 6422 <param id="715" name="Nail Polish Color" value="0.000" />
6423 6423
6424 <texture te="0" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 6424 <texture te="0" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
6425 6425
6426 <texture te="5" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 6426 <texture te="5" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
6427 6427
6428 <texture te="6" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 6428 <texture te="6" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
6429 6429
6430<!-- wearable: hair --> 6430<!-- wearable: hair -->
6431 <param id="16" name="Pointy_Eyebrows" value="0.205" /> 6431 <param id="16" name="Pointy_Eyebrows" value="0.205" />
6432 6432
6433 <param id="31" name="Arced_Eyebrows" value="0.450" /> 6433 <param id="31" name="Arced_Eyebrows" value="0.450" />
6434 6434
6435 <param id="112" name="Rainbow Color" value="0.000" /> 6435 <param id="112" name="Rainbow Color" value="0.000" />
6436 6436
6437 <param id="113" name="Red Hair" value="0.310" /> 6437 <param id="113" name="Red Hair" value="0.310" />
6438 6438
6439 <param id="114" name="Blonde Hair" value="0.000" /> 6439 <param id="114" name="Blonde Hair" value="0.000" />
6440 6440
6441 <param id="115" name="White Hair" value="0.000" /> 6441 <param id="115" name="White Hair" value="0.000" />
6442 6442
6443 <param id="119" name="Eyebrow Size" value="0.350" /> 6443 <param id="119" name="Eyebrow Size" value="0.350" />
6444 6444
6445 <param id="130" name="Front Fringe" value="0.560" /> 6445 <param id="130" name="Front Fringe" value="0.560" />
6446 6446
6447 <param id="131" name="Side Fringe" value="0.730" /> 6447 <param id="131" name="Side Fringe" value="0.730" />
6448 6448
6449 <param id="132" name="Back Fringe" value="0.510" /> 6449 <param id="132" name="Back Fringe" value="0.510" />
6450 6450
6451 <param id="133" name="Hair Front" value="0.140" /> 6451 <param id="133" name="Hair Front" value="0.140" />
6452 6452
6453 <param id="134" name="Hair Sides" value="0.000" /> 6453 <param id="134" name="Hair Sides" value="0.000" />
6454 6454
6455 <param id="135" name="Hair Back" value="0.920" /> 6455 <param id="135" name="Hair Back" value="0.920" />
6456 6456
6457 <param id="136" name="Hair Sweep" value="0.520" /> 6457 <param id="136" name="Hair Sweep" value="0.520" />
6458 6458
6459 <param id="137" name="Hair Tilt" value="0.500" /> 6459 <param id="137" name="Hair Tilt" value="0.500" />
6460 6460
6461 <param id="140" name="Hair_Part_Middle" value="1.880" /> 6461 <param id="140" name="Hair_Part_Middle" value="1.880" />
6462 6462
6463 <param id="141" name="Hair_Part_Right" value="0.000" /> 6463 <param id="141" name="Hair_Part_Right" value="0.000" />
6464 6464
6465 <param id="142" name="Hair_Part_Left" value="0.000" /> 6465 <param id="142" name="Hair_Part_Left" value="0.000" />
6466 6466
6467 <param id="143" name="Hair_Sides_Full" value="-0.590" /> 6467 <param id="143" name="Hair_Sides_Full" value="-0.590" />
6468 6468
6469 <param id="166" name="Sideburns" value="0.710" /> 6469 <param id="166" name="Sideburns" value="0.710" />
6470 6470
6471 <param id="167" name="Moustache" value="0.000" /> 6471 <param id="167" name="Moustache" value="0.000" />
6472 6472
6473 <param id="168" name="Soulpatch" value="0.000" /> 6473 <param id="168" name="Soulpatch" value="0.000" />
6474 6474
6475 <param id="169" name="Chin Curtains" value="0.000" /> 6475 <param id="169" name="Chin Curtains" value="0.000" />
6476 6476
6477 <param id="177" name="Hair_Rumpled" value="0.000" /> 6477 <param id="177" name="Hair_Rumpled" value="0.000" />
6478 6478
6479 <param id="181" name="Hair_Big_Front" value="-0.160" /> 6479 <param id="181" name="Hair_Big_Front" value="-0.160" />
6480 6480
6481 <param id="182" name="Hair_Big_Top" value="0.500" /> 6481 <param id="182" name="Hair_Big_Top" value="0.500" />
6482 6482
6483 <param id="183" name="Hair_Big_Back" value="0.260" /> 6483 <param id="183" name="Hair_Big_Back" value="0.260" />
6484 6484
6485 <param id="184" name="Hair_Spiked" value="0.000" /> 6485 <param id="184" name="Hair_Spiked" value="0.000" />
6486 6486
6487 <param id="192" name="Bangs_Part_Middle" value="0.530" /> 6487 <param id="192" name="Bangs_Part_Middle" value="0.530" />
6488 6488
6489 <param id="674" name="Hair_Shear_Back" value="1.500" /> 6489 <param id="674" name="Hair_Shear_Back" value="1.500" />
6490 6490
6491 <param id="750" name="Eyebrow Density" value="0.810" /> 6491 <param id="750" name="Eyebrow Density" value="0.810" />
6492 6492
6493 <param id="752" name="Hair Thickness" value="0.690" /> 6493 <param id="752" name="Hair Thickness" value="0.690" />
6494 6494
6495 <param id="754" name="Hair_Taper_Back" value="-0.940" /> 6495 <param id="754" name="Hair_Taper_Back" value="-0.940" />
6496 6496
6497 <param id="755" name="Hair_Taper_Front" value="0.480" /> 6497 <param id="755" name="Hair_Taper_Front" value="0.480" />
6498 6498
6499 <param id="757" name="Lower_Eyebrows" value="-0.440" /> 6499 <param id="757" name="Lower_Eyebrows" value="-0.440" />
6500 6500
6501 <param id="762" name="Hair_Shear_Front" value="0.210" /> 6501 <param id="762" name="Hair_Shear_Front" value="0.210" />
6502 6502
6503 <param id="763" name="Hair Volume" value="0.770" /> 6503 <param id="763" name="Hair Volume" value="0.770" />
6504 6504
6505 <texture te="4" uuid="7ca39b4c-bd19-4699-aff7-f93fd03d3e7b" /> 6505 <texture te="4" uuid="7ca39b4c-bd19-4699-aff7-f93fd03d3e7b" />
6506 6506
6507<!-- wearable: eyes --> 6507<!-- wearable: eyes -->
6508 <param id="98" name="Eye Lightness" value="0.000" /> 6508 <param id="98" name="Eye Lightness" value="0.000" />
6509 6509
6510 <param id="99" name="Eye Color" value="0.040" /> 6510 <param id="99" name="Eye Color" value="0.040" />
6511 6511
6512 <texture te="3" uuid="6522e74d-1660-4e7f-b601-6f48c1659a77" /> 6512 <texture te="3" uuid="6522e74d-1660-4e7f-b601-6f48c1659a77" />
6513 </archetype> 6513 </archetype>
6514 6514
6515 <archetype name="F A Muscle"> 6515 <archetype name="F A Muscle">
6516<!-- wearable: shape --> 6516<!-- wearable: shape -->
6517 <param id="1" name="Big_Brow" value="0.574" /> 6517 <param id="1" name="Big_Brow" value="0.574" />
6518 6518
6519 <param id="2" name="Nose_Big_Out" value="0.586" /> 6519 <param id="2" name="Nose_Big_Out" value="0.586" />
6520 6520
6521 <param id="4" name="Broad_Nostrils" value="-0.500" /> 6521 <param id="4" name="Broad_Nostrils" value="-0.500" />
6522 6522
6523 <param id="5" name="Cleft_Chin" value="-0.100" /> 6523 <param id="5" name="Cleft_Chin" value="-0.100" />
6524 6524
6525 <param id="6" name="Bulbous_Nose_Tip" value="-0.079" /> 6525 <param id="6" name="Bulbous_Nose_Tip" value="-0.079" />
6526 6526
6527 <param id="7" name="Weak_Chin" value="0.320" /> 6527 <param id="7" name="Weak_Chin" value="0.320" />
6528 6528
6529 <param id="8" name="Double_Chin" value="0.440" /> 6529 <param id="8" name="Double_Chin" value="0.440" />
6530 6530
6531 <param id="10" name="Sunken_Cheeks" value="-0.105" /> 6531 <param id="10" name="Sunken_Cheeks" value="-0.105" />
6532 6532
6533 <param id="11" name="Noble_Nose_Bridge" value="0.240" /> 6533 <param id="11" name="Noble_Nose_Bridge" value="0.240" />
6534 6534
6535 <param id="12" name="Jowls" value="0.340" /> 6535 <param id="12" name="Jowls" value="0.340" />
6536 6536
6537 <param id="13" name="Cleft_Chin_Upper" value="0.000" /> 6537 <param id="13" name="Cleft_Chin_Upper" value="0.000" />
6538 6538
6539 <param id="14" name="High_Cheek_Bones" value="0.880" /> 6539 <param id="14" name="High_Cheek_Bones" value="0.880" />
6540 6540
6541 <param id="15" name="Ears_Out" value="0.340" /> 6541 <param id="15" name="Ears_Out" value="0.340" />
6542 6542
6543 <param id="17" name="Square_Jaw" value="-0.455" /> 6543 <param id="17" name="Square_Jaw" value="-0.455" />
6544 6544
6545 <param id="18" name="Puffy_Upper_Cheeks" value="0.860" /> 6545 <param id="18" name="Puffy_Upper_Cheeks" value="0.860" />
6546 6546
6547 <param id="19" name="Upturned_Nose_Tip" value="-0.350" /> 6547 <param id="19" name="Upturned_Nose_Tip" value="-0.350" />
6548 6548
6549 <param id="20" name="Bulbous_Nose" value="-0.500" /> 6549 <param id="20" name="Bulbous_Nose" value="-0.500" />
6550 6550
6551 <param id="21" name="Upper_Eyelid_Fold" value="1.300" /> 6551 <param id="21" name="Upper_Eyelid_Fold" value="1.300" />
6552 6552
6553 <param id="22" name="Attached_Earlobes" value="1.000" /> 6553 <param id="22" name="Attached_Earlobes" value="1.000" />
6554 6554
6555 <param id="23" name="Baggy_Eyes" value="0.340" /> 6555 <param id="23" name="Baggy_Eyes" value="0.340" />
6556 6556
6557 <param id="24" name="Wide_Eyes" value="-0.380" /> 6557 <param id="24" name="Wide_Eyes" value="-0.380" />
6558 6558
6559 <param id="25" name="Wide_Lip_Cleft" value="0.327" /> 6559 <param id="25" name="Wide_Lip_Cleft" value="0.327" />
6560 6560
6561 <param id="27" name="Wide_Nose_Bridge" value="-1.125" /> 6561 <param id="27" name="Wide_Nose_Bridge" value="-1.125" />
6562 6562
6563 <param id="33" name="Height" value="0.194" /> 6563 <param id="33" name="Height" value="0.194" />
6564 6564
6565 <param id="34" name="Thickness" value="-0.018" /> 6565 <param id="34" name="Thickness" value="-0.018" />
6566 6566
6567 <param id="35" name="Big_Ears" value="0.560" /> 6567 <param id="35" name="Big_Ears" value="0.560" />
6568 6568
6569 <param id="36" name="Shoulders" value="-0.456" /> 6569 <param id="36" name="Shoulders" value="-0.456" />
6570 6570
6571 <param id="37" name="Hip Width" value="-1.760" /> 6571 <param id="37" name="Hip Width" value="-1.760" />
6572 6572
6573 <param id="38" name="Torso Length" value="0.400" /> 6573 <param id="38" name="Torso Length" value="0.400" />
6574 6574
6575 <param id="80" name="male" value="0.000" /> 6575 <param id="80" name="male" value="0.000" />
6576 6576
6577 <param id="105" name="Breast Size" value="0.240" /> 6577 <param id="105" name="Breast Size" value="0.240" />
6578 6578
6579 <param id="151" name="Big_Butt_Legs" value="-0.134" /> 6579 <param id="151" name="Big_Butt_Legs" value="-0.134" />
6580 6580
6581 <param id="155" name="Lip Width" value="-0.900" /> 6581 <param id="155" name="Lip Width" value="-0.900" />
6582 6582
6583 <param id="157" name="Belly Size" value="0.020" /> 6583 <param id="157" name="Belly Size" value="0.020" />
6584 6584
6585 <param id="185" name="Deep_Chin" value="0.500" /> 6585 <param id="185" name="Deep_Chin" value="0.500" />
6586 6586
6587 <param id="193" name="Head Shape" value="0.360" /> 6587 <param id="193" name="Head Shape" value="0.360" />
6588 6588
6589 <param id="196" name="Eye Spacing" value="-0.500" /> 6589 <param id="196" name="Eye Spacing" value="-0.500" />
6590 6590
6591 <param id="505" name="Lip Thickness" value="0.280" /> 6591 <param id="505" name="Lip Thickness" value="0.280" />
6592 6592
6593 <param id="506" name="Mouth_Height" value="0.080" /> 6593 <param id="506" name="Mouth_Height" value="0.080" />
6594 6594
6595 <param id="507" name="Breast_Gravity" value="-0.520" /> 6595 <param id="507" name="Breast_Gravity" value="-0.520" />
6596 6596
6597 <param id="515" name="Foot_Size" value="0.280" /> 6597 <param id="515" name="Foot_Size" value="0.280" />
6598 6598
6599 <param id="517" name="Wide_Nose" value="0.265" /> 6599 <param id="517" name="Wide_Nose" value="0.265" />
6600 6600
6601 <param id="518" name="Eyelashes_Long" value="0.006" /> 6601 <param id="518" name="Eyelashes_Long" value="0.006" />
6602 6602
6603 <param id="629" name="Forehead Angle" value="0.850" /> 6603 <param id="629" name="Forehead Angle" value="0.850" />
6604 6604
6605 <param id="637" name="Body Fat" value="0.000" /> 6605 <param id="637" name="Body Fat" value="0.000" />
6606 6606
6607 <param id="646" name="Egg_Head" value="-0.334" /> 6607 <param id="646" name="Egg_Head" value="-0.334" />
6608 6608
6609 <param id="647" name="Squash_Stretch_Head" value="-0.395" /> 6609 <param id="647" name="Squash_Stretch_Head" value="-0.395" />
6610 6610
6611 <param id="649" name="Torso Muscles" value="0.510" /> 6611 <param id="649" name="Torso Muscles" value="0.510" />
6612 6612
6613 <param id="650" name="Eyelid_Corner_Up" value="-0.375" /> 6613 <param id="650" name="Eyelid_Corner_Up" value="-0.375" />
6614 6614
6615 <param id="652" name="Leg Muscles" value="0.750" /> 6615 <param id="652" name="Leg Muscles" value="0.750" />
6616 6616
6617 <param id="653" name="Tall_Lips" value="1.460" /> 6617 <param id="653" name="Tall_Lips" value="1.460" />
6618 6618
6619 <param id="656" name="Crooked_Nose" value="0.000" /> 6619 <param id="656" name="Crooked_Nose" value="0.000" />
6620 6620
6621 <param id="659" name="Mouth Corner" value="0.580" /> 6621 <param id="659" name="Mouth Corner" value="0.580" />
6622 6622
6623 <param id="662" name="Face Shear" value="0.500" /> 6623 <param id="662" name="Face Shear" value="0.500" />
6624 6624
6625 <param id="663" name="Shift_Mouth" value="-0.080" /> 6625 <param id="663" name="Shift_Mouth" value="-0.080" />
6626 6626
6627 <param id="664" name="Pop_Eye" value="0.052" /> 6627 <param id="664" name="Pop_Eye" value="0.052" />
6628 6628
6629 <param id="665" name="Jaw_Jut" value="-0.080" /> 6629 <param id="665" name="Jaw_Jut" value="-0.080" />
6630 6630
6631 <param id="675" name="Hand Size" value="-0.168" /> 6631 <param id="675" name="Hand Size" value="-0.168" />
6632 6632
6633 <param id="676" name="Love_Handles" value="0.110" /> 6633 <param id="676" name="Love_Handles" value="0.110" />
6634 6634
6635 <param id="678" name="Torso Muscles" value="0.790" /> 6635 <param id="678" name="Torso Muscles" value="0.790" />
6636 6636
6637 <param id="682" name="Head Size" value="0.470" /> 6637 <param id="682" name="Head Size" value="0.470" />
6638 6638
6639 <param id="683" name="Neck Thickness" value="-0.148" /> 6639 <param id="683" name="Neck Thickness" value="-0.148" />
6640 6640
6641 <param id="684" name="Breast_Female_Clevage" value="0.436" /> 6641 <param id="684" name="Breast_Female_Clevage" value="0.436" />
6642 6642
6643 <param id="685" name="Chest_Male_No_Pecs" value="0.200" /> 6643 <param id="685" name="Chest_Male_No_Pecs" value="0.200" />
6644 6644
6645 <param id="690" name="Eye Size" value="0.620" /> 6645 <param id="690" name="Eye Size" value="0.620" />
6646 6646
6647 <param id="692" name="Leg Length" value="0.260" /> 6647 <param id="692" name="Leg Length" value="0.260" />
6648 6648
6649 <param id="693" name="Arm Length" value="0.420" /> 6649 <param id="693" name="Arm Length" value="0.420" />
6650 6650
6651 <param id="753" name="Saddlebags" value="0.340" /> 6651 <param id="753" name="Saddlebags" value="0.340" />
6652 6652
6653 <param id="756" name="Neck Length" value="-0.360" /> 6653 <param id="756" name="Neck Length" value="-0.360" />
6654 6654
6655 <param id="758" name="Lower_Bridge_Nose" value="0.510" /> 6655 <param id="758" name="Lower_Bridge_Nose" value="0.510" />
6656 6656
6657 <param id="759" name="Low_Septum_Nose" value="-0.625" /> 6657 <param id="759" name="Low_Septum_Nose" value="-0.625" />
6658 6658
6659 <param id="760" name="Jaw_Angle" value="0.816" /> 6659 <param id="760" name="Jaw_Angle" value="0.816" />
6660 6660
6661 <param id="764" name="Lip_Cleft_Deep" value="-0.500" /> 6661 <param id="764" name="Lip_Cleft_Deep" value="-0.500" />
6662 6662
6663 <param id="765" name="Puffy_Lower_Lids" value="0.064" /> 6663 <param id="765" name="Puffy_Lower_Lids" value="0.064" />
6664 6664
6665 <param id="769" name="Eye Depth" value="0.720" /> 6665 <param id="769" name="Eye Depth" value="0.720" />
6666 6666
6667 <param id="773" name="Head Length" value="0.330" /> 6667 <param id="773" name="Head Length" value="0.330" />
6668 6668
6669<!-- wearable: skin --> 6669<!-- wearable: skin -->
6670 <param id="108" name="Rainbow Color" value="0.000" /> 6670 <param id="108" name="Rainbow Color" value="0.000" />
6671 6671
6672 <param id="110" name="Red Skin" value="0.011" /> 6672 <param id="110" name="Red Skin" value="0.011" />
6673 6673
6674 <param id="111" name="Pigment" value="0.370" /> 6674 <param id="111" name="Pigment" value="0.370" />
6675 6675
6676 <param id="116" name="Rosy Complexion" value="0.000" /> 6676 <param id="116" name="Rosy Complexion" value="0.000" />
6677 6677
6678 <param id="117" name="Lip Pinkness" value="0.000" /> 6678 <param id="117" name="Lip Pinkness" value="0.000" />
6679 6679
6680 <param id="150" name="Body Definition" value="1.000" /> 6680 <param id="150" name="Body Definition" value="1.000" />
6681 6681
6682 <param id="162" name="Facial Definition" value="0.070" /> 6682 <param id="162" name="Facial Definition" value="0.070" />
6683 6683
6684 <param id="163" name="Wrinkles" value="0.000" /> 6684 <param id="163" name="Wrinkles" value="0.000" />
6685 6685
6686 <param id="165" name="Freckles" value="0.000" /> 6686 <param id="165" name="Freckles" value="0.000" />
6687 6687
6688 <param id="700" name="Lipstick Color" value="0.250" /> 6688 <param id="700" name="Lipstick Color" value="0.250" />
6689 6689
6690 <param id="701" name="Lipstick" value="0.000" /> 6690 <param id="701" name="Lipstick" value="0.000" />
6691 6691
6692 <param id="702" name="Lipgloss" value="0.000" /> 6692 <param id="702" name="Lipgloss" value="0.000" />
6693 6693
6694 <param id="703" name="Eyeliner" value="0.000" /> 6694 <param id="703" name="Eyeliner" value="0.000" />
6695 6695
6696 <param id="704" name="Blush" value="0.000" /> 6696 <param id="704" name="Blush" value="0.000" />
6697 6697
6698 <param id="705" name="Blush Color" value="0.500" /> 6698 <param id="705" name="Blush Color" value="0.500" />
6699 6699
6700 <param id="706" name="Out Shdw Opacity" value="0.600" /> 6700 <param id="706" name="Out Shdw Opacity" value="0.600" />
6701 6701
6702 <param id="707" name="Outer Shadow" value="0.000" /> 6702 <param id="707" name="Outer Shadow" value="0.000" />
6703 6703
6704 <param id="708" name="Out Shdw Color" value="0.000" /> 6704 <param id="708" name="Out Shdw Color" value="0.000" />
6705 6705
6706 <param id="709" name="Inner Shadow" value="0.000" /> 6706 <param id="709" name="Inner Shadow" value="0.000" />
6707 6707
6708 <param id="710" name="Nail Polish" value="0.000" /> 6708 <param id="710" name="Nail Polish" value="0.000" />
6709 6709
6710 <param id="711" name="Blush Opacity" value="0.500" /> 6710 <param id="711" name="Blush Opacity" value="0.500" />
6711 6711
6712 <param id="712" name="In Shdw Color" value="0.000" /> 6712 <param id="712" name="In Shdw Color" value="0.000" />
6713 6713
6714 <param id="713" name="In Shdw Opacity" value="0.700" /> 6714 <param id="713" name="In Shdw Opacity" value="0.700" />
6715 6715
6716 <param id="714" name="Eyeliner Color" value="0.000" /> 6716 <param id="714" name="Eyeliner Color" value="0.000" />
6717 6717
6718 <param id="715" name="Nail Polish Color" value="0.000" /> 6718 <param id="715" name="Nail Polish Color" value="0.000" />
6719 6719
6720 <texture te="0" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 6720 <texture te="0" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
6721 6721
6722 <texture te="5" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 6722 <texture te="5" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
6723 6723
6724 <texture te="6" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 6724 <texture te="6" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
6725 6725
6726<!-- wearable: hair --> 6726<!-- wearable: hair -->
6727 <param id="16" name="Pointy_Eyebrows" value="0.610" /> 6727 <param id="16" name="Pointy_Eyebrows" value="0.610" />
6728 6728
6729 <param id="31" name="Arced_Eyebrows" value="0.160" /> 6729 <param id="31" name="Arced_Eyebrows" value="0.160" />
6730 6730
6731 <param id="112" name="Rainbow Color" value="0.000" /> 6731 <param id="112" name="Rainbow Color" value="0.000" />
6732 6732
6733 <param id="113" name="Red Hair" value="0.310" /> 6733 <param id="113" name="Red Hair" value="0.310" />
6734 6734
6735 <param id="114" name="Blonde Hair" value="0.000" /> 6735 <param id="114" name="Blonde Hair" value="0.000" />
6736 6736
6737 <param id="115" name="White Hair" value="0.000" /> 6737 <param id="115" name="White Hair" value="0.000" />
6738 6738
6739 <param id="119" name="Eyebrow Size" value="0.260" /> 6739 <param id="119" name="Eyebrow Size" value="0.260" />
6740 6740
6741 <param id="130" name="Front Fringe" value="0.650" /> 6741 <param id="130" name="Front Fringe" value="0.650" />
6742 6742
6743 <param id="131" name="Side Fringe" value="0.990" /> 6743 <param id="131" name="Side Fringe" value="0.990" />
6744 6744
6745 <param id="132" name="Back Fringe" value="0.960" /> 6745 <param id="132" name="Back Fringe" value="0.960" />
6746 6746
6747 <param id="133" name="Hair Front" value="0.000" /> 6747 <param id="133" name="Hair Front" value="0.000" />
6748 6748
6749 <param id="134" name="Hair Sides" value="0.000" /> 6749 <param id="134" name="Hair Sides" value="0.000" />
6750 6750
6751 <param id="135" name="Hair Back" value="0.530" /> 6751 <param id="135" name="Hair Back" value="0.530" />
6752 6752
6753 <param id="136" name="Hair Sweep" value="0.630" /> 6753 <param id="136" name="Hair Sweep" value="0.630" />
6754 6754
6755 <param id="137" name="Hair Tilt" value="0.500" /> 6755 <param id="137" name="Hair Tilt" value="0.500" />
6756 6756
6757 <param id="140" name="Hair_Part_Middle" value="0.000" /> 6757 <param id="140" name="Hair_Part_Middle" value="0.000" />
6758 6758
6759 <param id="141" name="Hair_Part_Right" value="0.000" /> 6759 <param id="141" name="Hair_Part_Right" value="0.000" />
6760 6760
6761 <param id="142" name="Hair_Part_Left" value="0.000" /> 6761 <param id="142" name="Hair_Part_Left" value="0.000" />
6762 6762
6763 <param id="143" name="Hair_Sides_Full" value="-0.590" /> 6763 <param id="143" name="Hair_Sides_Full" value="-0.590" />
6764 6764
6765 <param id="166" name="Sideburns" value="0.710" /> 6765 <param id="166" name="Sideburns" value="0.710" />
6766 6766
6767 <param id="167" name="Moustache" value="0.000" /> 6767 <param id="167" name="Moustache" value="0.000" />
6768 6768
6769 <param id="168" name="Soulpatch" value="0.000" /> 6769 <param id="168" name="Soulpatch" value="0.000" />
6770 6770
6771 <param id="169" name="Chin Curtains" value="0.000" /> 6771 <param id="169" name="Chin Curtains" value="0.000" />
6772 6772
6773 <param id="177" name="Hair_Rumpled" value="0.000" /> 6773 <param id="177" name="Hair_Rumpled" value="0.000" />
6774 6774
6775 <param id="181" name="Hair_Big_Front" value="-0.160" /> 6775 <param id="181" name="Hair_Big_Front" value="-0.160" />
6776 6776
6777 <param id="182" name="Hair_Big_Top" value="0.320" /> 6777 <param id="182" name="Hair_Big_Top" value="0.320" />
6778 6778
6779 <param id="183" name="Hair_Big_Back" value="0.300" /> 6779 <param id="183" name="Hair_Big_Back" value="0.300" />
6780 6780
6781 <param id="184" name="Hair_Spiked" value="0.000" /> 6781 <param id="184" name="Hair_Spiked" value="0.000" />
6782 6782
6783 <param id="192" name="Bangs_Part_Middle" value="0.000" /> 6783 <param id="192" name="Bangs_Part_Middle" value="0.000" />
6784 6784
6785 <param id="674" name="Hair_Shear_Back" value="-0.100" /> 6785 <param id="674" name="Hair_Shear_Back" value="-0.100" />
6786 6786
6787 <param id="750" name="Eyebrow Density" value="1.000" /> 6787 <param id="750" name="Eyebrow Density" value="1.000" />
6788 6788
6789 <param id="752" name="Hair Thickness" value="0.690" /> 6789 <param id="752" name="Hair Thickness" value="0.690" />
6790 6790
6791 <param id="754" name="Hair_Taper_Back" value="0.020" /> 6791 <param id="754" name="Hair_Taper_Back" value="0.020" />
6792 6792
6793 <param id="755" name="Hair_Taper_Front" value="-0.120" /> 6793 <param id="755" name="Hair_Taper_Front" value="-0.120" />
6794 6794
6795 <param id="757" name="Lower_Eyebrows" value="0.120" /> 6795 <param id="757" name="Lower_Eyebrows" value="0.120" />
6796 6796
6797 <param id="762" name="Hair_Shear_Front" value="0.000" /> 6797 <param id="762" name="Hair_Shear_Front" value="0.000" />
6798 6798
6799 <param id="763" name="Hair Volume" value="0.770" /> 6799 <param id="763" name="Hair Volume" value="0.770" />
6800 6800
6801 <texture te="4" uuid="7ca39b4c-bd19-4699-aff7-f93fd03d3e7b" /> 6801 <texture te="4" uuid="7ca39b4c-bd19-4699-aff7-f93fd03d3e7b" />
6802 6802
6803<!-- wearable: eyes --> 6803<!-- wearable: eyes -->
6804 <param id="98" name="Eye Lightness" value="0.000" /> 6804 <param id="98" name="Eye Lightness" value="0.000" />
6805 6805
6806 <param id="99" name="Eye Color" value="0.040" /> 6806 <param id="99" name="Eye Color" value="0.040" />
6807 6807
6808 <texture te="3" uuid="6522e74d-1660-4e7f-b601-6f48c1659a77" /> 6808 <texture te="3" uuid="6522e74d-1660-4e7f-b601-6f48c1659a77" />
6809 </archetype> 6809 </archetype>
6810 6810
6811 <archetype name="F A Chubby"> 6811 <archetype name="F A Chubby">
6812<!-- wearable: shape --> 6812<!-- wearable: shape -->
6813 <param id="1" name="Big_Brow" value="0.482" /> 6813 <param id="1" name="Big_Brow" value="0.482" />
6814 6814
6815 <param id="2" name="Nose_Big_Out" value="-0.140" /> 6815 <param id="2" name="Nose_Big_Out" value="-0.140" />
6816 6816
6817 <param id="4" name="Broad_Nostrils" value="0.280" /> 6817 <param id="4" name="Broad_Nostrils" value="0.280" />
6818 6818
6819 <param id="5" name="Cleft_Chin" value="0.164" /> 6819 <param id="5" name="Cleft_Chin" value="0.164" />
6820 6820
6821 <param id="6" name="Bulbous_Nose_Tip" value="0.220" /> 6821 <param id="6" name="Bulbous_Nose_Tip" value="0.220" />
6822 6822
6823 <param id="7" name="Weak_Chin" value="-0.040" /> 6823 <param id="7" name="Weak_Chin" value="-0.040" />
6824 6824
6825 <param id="8" name="Double_Chin" value="0.200" /> 6825 <param id="8" name="Double_Chin" value="0.200" />
6826 6826
6827 <param id="10" name="Sunken_Cheeks" value="-0.150" /> 6827 <param id="10" name="Sunken_Cheeks" value="-0.150" />
6828 6828
6829 <param id="11" name="Noble_Nose_Bridge" value="-0.020" /> 6829 <param id="11" name="Noble_Nose_Bridge" value="-0.020" />
6830 6830
6831 <param id="12" name="Jowls" value="0.550" /> 6831 <param id="12" name="Jowls" value="0.550" />
6832 6832
6833 <param id="13" name="Cleft_Chin_Upper" value="0.000" /> 6833 <param id="13" name="Cleft_Chin_Upper" value="0.000" />
6834 6834
6835 <param id="14" name="High_Cheek_Bones" value="0.670" /> 6835 <param id="14" name="High_Cheek_Bones" value="0.670" />
6836 6836
6837 <param id="15" name="Ears_Out" value="0.720" /> 6837 <param id="15" name="Ears_Out" value="0.720" />
6838 6838
6839 <param id="17" name="Square_Jaw" value="0.175" /> 6839 <param id="17" name="Square_Jaw" value="0.175" />
6840 6840
6841 <param id="18" name="Puffy_Upper_Cheeks" value="1.420" /> 6841 <param id="18" name="Puffy_Upper_Cheeks" value="1.420" />
6842 6842
6843 <param id="19" name="Upturned_Nose_Tip" value="-0.075" /> 6843 <param id="19" name="Upturned_Nose_Tip" value="-0.075" />
6844 6844
6845 <param id="20" name="Bulbous_Nose" value="-0.500" /> 6845 <param id="20" name="Bulbous_Nose" value="-0.500" />
6846 6846
6847 <param id="21" name="Upper_Eyelid_Fold" value="0.640" /> 6847 <param id="21" name="Upper_Eyelid_Fold" value="0.640" />
6848 6848
6849 <param id="22" name="Attached_Earlobes" value="0.570" /> 6849 <param id="22" name="Attached_Earlobes" value="0.570" />
6850 6850
6851 <param id="23" name="Baggy_Eyes" value="0.020" /> 6851 <param id="23" name="Baggy_Eyes" value="0.020" />
6852 6852
6853 <param id="24" name="Wide_Eyes" value="-0.555" /> 6853 <param id="24" name="Wide_Eyes" value="-0.555" />
6854 6854
6855 <param id="25" name="Wide_Lip_Cleft" value="0.764" /> 6855 <param id="25" name="Wide_Lip_Cleft" value="0.764" />
6856 6856
6857 <param id="27" name="Wide_Nose_Bridge" value="-1.300" /> 6857 <param id="27" name="Wide_Nose_Bridge" value="-1.300" />
6858 6858
6859 <param id="33" name="Height" value="-0.709" /> 6859 <param id="33" name="Height" value="-0.709" />
6860 6860
6861 <param id="34" name="Thickness" value="-0.084" /> 6861 <param id="34" name="Thickness" value="-0.084" />
6862 6862
6863 <param id="35" name="Big_Ears" value="0.140" /> 6863 <param id="35" name="Big_Ears" value="0.140" />
6864 6864
6865 <param id="36" name="Shoulders" value="-0.936" /> 6865 <param id="36" name="Shoulders" value="-0.936" />
6866 6866
6867 <param id="37" name="Hip Width" value="-1.220" /> 6867 <param id="37" name="Hip Width" value="-1.220" />
6868 6868
6869 <param id="38" name="Torso Length" value="0.860" /> 6869 <param id="38" name="Torso Length" value="0.860" />
6870 6870
6871 <param id="80" name="male" value="0.000" /> 6871 <param id="80" name="male" value="0.000" />
6872 6872
6873 <param id="105" name="Breast Size" value="0.780" /> 6873 <param id="105" name="Breast Size" value="0.780" />
6874 6874
6875 <param id="151" name="Big_Butt_Legs" value="-0.022" /> 6875 <param id="151" name="Big_Butt_Legs" value="-0.022" />
6876 6876
6877 <param id="155" name="Lip Width" value="-0.548" /> 6877 <param id="155" name="Lip Width" value="-0.548" />
6878 6878
6879 <param id="157" name="Belly Size" value="0.180" /> 6879 <param id="157" name="Belly Size" value="0.180" />
6880 6880
6881 <param id="185" name="Deep_Chin" value="-0.120" /> 6881 <param id="185" name="Deep_Chin" value="-0.120" />
6882 6882
6883 <param id="193" name="Head Shape" value="0.680" /> 6883 <param id="193" name="Head Shape" value="0.680" />
6884 6884
6885 <param id="196" name="Eye Spacing" value="-0.230" /> 6885 <param id="196" name="Eye Spacing" value="-0.230" />
6886 6886
6887 <param id="505" name="Lip Thickness" value="0.730" /> 6887 <param id="505" name="Lip Thickness" value="0.730" />
6888 6888
6889 <param id="506" name="Mouth_Height" value="-0.160" /> 6889 <param id="506" name="Mouth_Height" value="-0.160" />
6890 6890
6891 <param id="507" name="Breast_Gravity" value="-0.205" /> 6891 <param id="507" name="Breast_Gravity" value="-0.205" />
6892 6892
6893 <param id="515" name="Foot_Size" value="0.200" /> 6893 <param id="515" name="Foot_Size" value="0.200" />
6894 6894
6895 <param id="517" name="Wide_Nose" value="0.130" /> 6895 <param id="517" name="Wide_Nose" value="0.130" />
6896 6896
6897 <param id="518" name="Eyelashes_Long" value="0.240" /> 6897 <param id="518" name="Eyelashes_Long" value="0.240" />
6898 6898
6899 <param id="629" name="Forehead Angle" value="0.670" /> 6899 <param id="629" name="Forehead Angle" value="0.670" />
6900 6900
6901 <param id="637" name="Body Fat" value="0.120" /> 6901 <param id="637" name="Body Fat" value="0.120" />
6902 6902
6903 <param id="646" name="Egg_Head" value="0.149" /> 6903 <param id="646" name="Egg_Head" value="0.149" />
6904 6904
6905 <param id="647" name="Squash_Stretch_Head" value="-0.005" /> 6905 <param id="647" name="Squash_Stretch_Head" value="-0.005" />
6906 6906
6907 <param id="649" name="Torso Muscles" value="0.640" /> 6907 <param id="649" name="Torso Muscles" value="0.640" />
6908 6908
6909 <param id="650" name="Eyelid_Corner_Up" value="0.050" /> 6909 <param id="650" name="Eyelid_Corner_Up" value="0.050" />
6910 6910
6911 <param id="652" name="Leg Muscles" value="0.570" /> 6911 <param id="652" name="Leg Muscles" value="0.570" />
6912 6912
6913 <param id="653" name="Tall_Lips" value="0.740" /> 6913 <param id="653" name="Tall_Lips" value="0.740" />
6914 6914
6915 <param id="656" name="Crooked_Nose" value="0.000" /> 6915 <param id="656" name="Crooked_Nose" value="0.000" />
6916 6916
6917 <param id="659" name="Mouth Corner" value="0.720" /> 6917 <param id="659" name="Mouth Corner" value="0.720" />
6918 6918
6919 <param id="662" name="Face Shear" value="0.500" /> 6919 <param id="662" name="Face Shear" value="0.500" />
6920 6920
6921 <param id="663" name="Shift_Mouth" value="-0.080" /> 6921 <param id="663" name="Shift_Mouth" value="-0.080" />
6922 6922
6923 <param id="664" name="Pop_Eye" value="0.052" /> 6923 <param id="664" name="Pop_Eye" value="0.052" />
6924 6924
6925 <param id="665" name="Jaw_Jut" value="-0.640" /> 6925 <param id="665" name="Jaw_Jut" value="-0.640" />
6926 6926
6927 <param id="675" name="Hand Size" value="-0.198" /> 6927 <param id="675" name="Hand Size" value="-0.198" />
6928 6928
6929 <param id="676" name="Love_Handles" value="0.560" /> 6929 <param id="676" name="Love_Handles" value="0.560" />
6930 6930
6931 <param id="678" name="Torso Muscles" value="0.790" /> 6931 <param id="678" name="Torso Muscles" value="0.790" />
6932 6932
6933 <param id="682" name="Head Size" value="0.770" /> 6933 <param id="682" name="Head Size" value="0.770" />
6934 6934
6935 <param id="683" name="Neck Thickness" value="-0.058" /> 6935 <param id="683" name="Neck Thickness" value="-0.058" />
6936 6936
6937 <param id="684" name="Breast_Female_Clevage" value="0.116" /> 6937 <param id="684" name="Breast_Female_Clevage" value="0.116" />
6938 6938
6939 <param id="685" name="Chest_Male_No_Pecs" value="0.200" /> 6939 <param id="685" name="Chest_Male_No_Pecs" value="0.200" />
6940 6940
6941 <param id="690" name="Eye Size" value="0.530" /> 6941 <param id="690" name="Eye Size" value="0.530" />
6942 6942
6943 <param id="692" name="Leg Length" value="0.400" /> 6943 <param id="692" name="Leg Length" value="0.400" />
6944 6944
6945 <param id="693" name="Arm Length" value="0.500" /> 6945 <param id="693" name="Arm Length" value="0.500" />
6946 6946
6947 <param id="753" name="Saddlebags" value="0.725" /> 6947 <param id="753" name="Saddlebags" value="0.725" />
6948 6948
6949 <param id="756" name="Neck Length" value="-0.380" /> 6949 <param id="756" name="Neck Length" value="-0.380" />
6950 6950
6951 <param id="758" name="Lower_Bridge_Nose" value="-0.330" /> 6951 <param id="758" name="Lower_Bridge_Nose" value="-0.330" />
6952 6952
6953 <param id="759" name="Low_Septum_Nose" value="0.200" /> 6953 <param id="759" name="Low_Septum_Nose" value="0.200" />
6954 6954
6955 <param id="760" name="Jaw_Angle" value="0.528" /> 6955 <param id="760" name="Jaw_Angle" value="0.528" />
6956 6956
6957 <param id="764" name="Lip_Cleft_Deep" value="-0.228" /> 6957 <param id="764" name="Lip_Cleft_Deep" value="-0.228" />
6958 6958
6959 <param id="765" name="Puffy_Lower_Lids" value="-0.020" /> 6959 <param id="765" name="Puffy_Lower_Lids" value="-0.020" />
6960 6960
6961 <param id="769" name="Eye Depth" value="0.670" /> 6961 <param id="769" name="Eye Depth" value="0.670" />
6962 6962
6963 <param id="773" name="Head Length" value="0.340" /> 6963 <param id="773" name="Head Length" value="0.340" />
6964 6964
6965<!-- wearable: skin --> 6965<!-- wearable: skin -->
6966 <param id="108" name="Rainbow Color" value="0.000" /> 6966 <param id="108" name="Rainbow Color" value="0.000" />
6967 6967
6968 <param id="110" name="Red Skin" value="0.000" /> 6968 <param id="110" name="Red Skin" value="0.000" />
6969 6969
6970 <param id="111" name="Pigment" value="0.390" /> 6970 <param id="111" name="Pigment" value="0.390" />
6971 6971
6972 <param id="116" name="Rosy Complexion" value="0.000" /> 6972 <param id="116" name="Rosy Complexion" value="0.000" />
6973 6973
6974 <param id="117" name="Lip Pinkness" value="0.000" /> 6974 <param id="117" name="Lip Pinkness" value="0.000" />
6975 6975
6976 <param id="150" name="Body Definition" value="0.430" /> 6976 <param id="150" name="Body Definition" value="0.430" />
6977 6977
6978 <param id="162" name="Facial Definition" value="0.000" /> 6978 <param id="162" name="Facial Definition" value="0.000" />
6979 6979
6980 <param id="163" name="Wrinkles" value="0.000" /> 6980 <param id="163" name="Wrinkles" value="0.000" />
6981 6981
6982 <param id="165" name="Freckles" value="0.000" /> 6982 <param id="165" name="Freckles" value="0.000" />
6983 6983
6984 <param id="700" name="Lipstick Color" value="0.250" /> 6984 <param id="700" name="Lipstick Color" value="0.250" />
6985 6985
6986 <param id="701" name="Lipstick" value="0.000" /> 6986 <param id="701" name="Lipstick" value="0.000" />
6987 6987
6988 <param id="702" name="Lipgloss" value="0.000" /> 6988 <param id="702" name="Lipgloss" value="0.000" />
6989 6989
6990 <param id="703" name="Eyeliner" value="0.000" /> 6990 <param id="703" name="Eyeliner" value="0.000" />
6991 6991
6992 <param id="704" name="Blush" value="0.000" /> 6992 <param id="704" name="Blush" value="0.000" />
6993 6993
6994 <param id="705" name="Blush Color" value="0.500" /> 6994 <param id="705" name="Blush Color" value="0.500" />
6995 6995
6996 <param id="706" name="Out Shdw Opacity" value="0.600" /> 6996 <param id="706" name="Out Shdw Opacity" value="0.600" />
6997 6997
6998 <param id="707" name="Outer Shadow" value="0.000" /> 6998 <param id="707" name="Outer Shadow" value="0.000" />
6999 6999
7000 <param id="708" name="Out Shdw Color" value="0.000" /> 7000 <param id="708" name="Out Shdw Color" value="0.000" />
7001 7001
7002 <param id="709" name="Inner Shadow" value="0.000" /> 7002 <param id="709" name="Inner Shadow" value="0.000" />
7003 7003
7004 <param id="710" name="Nail Polish" value="0.000" /> 7004 <param id="710" name="Nail Polish" value="0.000" />
7005 7005
7006 <param id="711" name="Blush Opacity" value="0.500" /> 7006 <param id="711" name="Blush Opacity" value="0.500" />
7007 7007
7008 <param id="712" name="In Shdw Color" value="0.000" /> 7008 <param id="712" name="In Shdw Color" value="0.000" />
7009 7009
7010 <param id="713" name="In Shdw Opacity" value="0.700" /> 7010 <param id="713" name="In Shdw Opacity" value="0.700" />
7011 7011
7012 <param id="714" name="Eyeliner Color" value="0.000" /> 7012 <param id="714" name="Eyeliner Color" value="0.000" />
7013 7013
7014 <param id="715" name="Nail Polish Color" value="0.000" /> 7014 <param id="715" name="Nail Polish Color" value="0.000" />
7015 7015
7016 <texture te="0" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 7016 <texture te="0" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
7017 7017
7018 <texture te="5" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 7018 <texture te="5" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
7019 7019
7020 <texture te="6" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" /> 7020 <texture te="6" uuid="c228d1cf-4b5d-4ba8-84f4-899a0796aa97" />
7021 7021
7022<!-- wearable: hair --> 7022<!-- wearable: hair -->
7023 <param id="16" name="Pointy_Eyebrows" value="-0.095" /> 7023 <param id="16" name="Pointy_Eyebrows" value="-0.095" />
7024 7024
7025 <param id="31" name="Arced_Eyebrows" value="0.610" /> 7025 <param id="31" name="Arced_Eyebrows" value="0.610" />
7026 7026
7027 <param id="112" name="Rainbow Color" value="0.000" /> 7027 <param id="112" name="Rainbow Color" value="0.000" />
7028 7028
7029 <param id="113" name="Red Hair" value="0.150" /> 7029 <param id="113" name="Red Hair" value="0.150" />
7030 7030
7031 <param id="114" name="Blonde Hair" value="0.050" /> 7031 <param id="114" name="Blonde Hair" value="0.050" />
7032 7032
7033 <param id="115" name="White Hair" value="0.000" /> 7033 <param id="115" name="White Hair" value="0.000" />
7034 7034
7035 <param id="119" name="Eyebrow Size" value="0.110" /> 7035 <param id="119" name="Eyebrow Size" value="0.110" />
7036 7036
7037 <param id="130" name="Front Fringe" value="0.300" /> 7037 <param id="130" name="Front Fringe" value="0.300" />
7038 7038
7039 <param id="131" name="Side Fringe" value="0.630" /> 7039 <param id="131" name="Side Fringe" value="0.630" />
7040 7040
7041 <param id="132" name="Back Fringe" value="0.690" /> 7041 <param id="132" name="Back Fringe" value="0.690" />
7042 7042
7043 <param id="133" name="Hair Front" value="0.000" /> 7043 <param id="133" name="Hair Front" value="0.000" />
7044 7044
7045 <param id="134" name="Hair Sides" value="0.670" /> 7045 <param id="134" name="Hair Sides" value="0.670" />
7046 7046
7047 <param id="135" name="Hair Back" value="0.730" /> 7047 <param id="135" name="Hair Back" value="0.730" />
7048 7048
7049 <param id="136" name="Hair Sweep" value="0.820" /> 7049 <param id="136" name="Hair Sweep" value="0.820" />
7050 7050
7051 <param id="137" name="Hair Tilt" value="0.500" /> 7051 <param id="137" name="Hair Tilt" value="0.500" />
7052 7052
7053 <param id="140" name="Hair_Part_Middle" value="1.260" /> 7053 <param id="140" name="Hair_Part_Middle" value="1.260" />
7054 7054
7055 <param id="141" name="Hair_Part_Right" value="0.000" /> 7055 <param id="141" name="Hair_Part_Right" value="0.000" />
7056 7056
7057 <param id="142" name="Hair_Part_Left" value="0.000" /> 7057 <param id="142" name="Hair_Part_Left" value="0.000" />
7058 7058
7059 <param id="143" name="Hair_Sides_Full" value="-0.315" /> 7059 <param id="143" name="Hair_Sides_Full" value="-0.315" />
7060 7060
7061 <param id="166" name="Sideburns" value="0.710" /> 7061 <param id="166" name="Sideburns" value="0.710" />
7062 7062
7063 <param id="167" name="Moustache" value="0.000" /> 7063 <param id="167" name="Moustache" value="0.000" />
7064 7064
7065 <param id="168" name="Soulpatch" value="0.000" /> 7065 <param id="168" name="Soulpatch" value="0.000" />
7066 7066
7067 <param id="169" name="Chin Curtains" value="0.000" /> 7067 <param id="169" name="Chin Curtains" value="0.000" />
7068 7068
7069 <param id="177" name="Hair_Rumpled" value="0.000" /> 7069 <param id="177" name="Hair_Rumpled" value="0.000" />
7070 7070
7071 <param id="181" name="Hair_Big_Front" value="0.260" /> 7071 <param id="181" name="Hair_Big_Front" value="0.260" />
7072 7072
7073 <param id="182" name="Hair_Big_Top" value="0.260" /> 7073 <param id="182" name="Hair_Big_Top" value="0.260" />
7074 7074
7075 <param id="183" name="Hair_Big_Back" value="0.000" /> 7075 <param id="183" name="Hair_Big_Back" value="0.000" />
7076 7076
7077 <param id="184" name="Hair_Spiked" value="0.000" /> 7077 <param id="184" name="Hair_Spiked" value="0.000" />
7078 7078
7079 <param id="192" name="Bangs_Part_Middle" value="0.000" /> 7079 <param id="192" name="Bangs_Part_Middle" value="0.000" />
7080 7080
7081 <param id="674" name="Hair_Shear_Back" value="-0.100" /> 7081 <param id="674" name="Hair_Shear_Back" value="-0.100" />
7082 7082
7083 <param id="750" name="Eyebrow Density" value="0.580" /> 7083 <param id="750" name="Eyebrow Density" value="0.580" />
7084 7084
7085 <param id="752" name="Hair Thickness" value="0.690" /> 7085 <param id="752" name="Hair Thickness" value="0.690" />
7086 7086
7087 <param id="754" name="Hair_Taper_Back" value="-0.970" /> 7087 <param id="754" name="Hair_Taper_Back" value="-0.970" />
7088 7088
7089 <param id="755" name="Hair_Taper_Front" value="-0.060" /> 7089 <param id="755" name="Hair_Taper_Front" value="-0.060" />
7090 7090
7091 <param id="757" name="Lower_Eyebrows" value="1.760" /> 7091 <param id="757" name="Lower_Eyebrows" value="1.760" />
7092 7092
7093 <param id="762" name="Hair_Shear_Front" value="0.060" /> 7093 <param id="762" name="Hair_Shear_Front" value="0.060" />
7094 7094
7095 <param id="763" name="Hair Volume" value="0.690" /> 7095 <param id="763" name="Hair Volume" value="0.690" />
7096 7096
7097 <texture te="4" uuid="7ca39b4c-bd19-4699-aff7-f93fd03d3e7b" /> 7097 <texture te="4" uuid="7ca39b4c-bd19-4699-aff7-f93fd03d3e7b" />
7098 7098
7099<!-- wearable: eyes --> 7099<!-- wearable: eyes -->
7100 <param id="98" name="Eye Lightness" value="0.080" /> 7100 <param id="98" name="Eye Lightness" value="0.080" />
7101 7101
7102 <param id="99" name="Eye Color" value="0.160" /> 7102 <param id="99" name="Eye Color" value="0.160" />
7103 7103
7104 <texture te="3" uuid="6522e74d-1660-4e7f-b601-6f48c1659a77" /> 7104 <texture te="3" uuid="6522e74d-1660-4e7f-b601-6f48c1659a77" />
7105 </archetype> 7105 </archetype>
7106</linden_genepool> 7106</linden_genepool>
7107 7107
diff --git a/linden/indra/newview/floaterao.cpp b/linden/indra/newview/floaterao.cpp
index cfad0fb..df88d6f 100644
--- a/linden/indra/newview/floaterao.cpp
+++ b/linden/indra/newview/floaterao.cpp
@@ -119,6 +119,9 @@ AOInvTimer::AOInvTimer() : LLEventTimer( (F32)1.0 )
119AOInvTimer::~AOInvTimer() 119AOInvTimer::~AOInvTimer()
120{ 120{
121} 121}
122
123BOOL AOInvTimer::fullfetch = FALSE;
124
122BOOL AOInvTimer::tick() 125BOOL AOInvTimer::tick()
123{ 126{
124 if (!(gSavedSettings.getBOOL("AOEnabled"))) return TRUE; 127 if (!(gSavedSettings.getBOOL("AOEnabled"))) return TRUE;
@@ -129,6 +132,15 @@ BOOL AOInvTimer::tick()
129// cmdline_printchat("Inventory fetched, loading AO."); 132// cmdline_printchat("Inventory fetched, loading AO.");
130 LLFloaterAO::init(); 133 LLFloaterAO::init();
131 return TRUE; 134 return TRUE;
135 }else
136 {
137 //static BOOL startedfetch = FALSE;
138 if(fullfetch == FALSE)
139 {
140 fullfetch = TRUE;
141 //no choice, can't move the AO till we find it, should only have to happen once
142 gInventory.startBackgroundFetch();
143 }
132 } 144 }
133 } 145 }
134 return FALSE; 146 return FALSE;
diff --git a/linden/indra/newview/floaterao.h b/linden/indra/newview/floaterao.h
index cf8ee22..465f32e 100644
--- a/linden/indra/newview/floaterao.h
+++ b/linden/indra/newview/floaterao.h
@@ -51,6 +51,7 @@ public:
51class AOInvTimer : public LLEventTimer 51class AOInvTimer : public LLEventTimer
52{ 52{
53public: 53public:
54 static BOOL fullfetch;
54 AOInvTimer(); 55 AOInvTimer();
55 ~AOInvTimer(); 56 ~AOInvTimer();
56 BOOL tick(); 57 BOOL tick();
diff --git a/linden/indra/newview/hippolimits.cpp b/linden/indra/newview/hippolimits.cpp
index 691508a..4516668 100644
--- a/linden/indra/newview/hippolimits.cpp
+++ b/linden/indra/newview/hippolimits.cpp
@@ -22,7 +22,8 @@ HippoLimits::HippoLimits()
22 mMinPrimScale(0.001f), 22 mMinPrimScale(0.001f),
23 mMaxPrimScale(256.0f), 23 mMaxPrimScale(256.0f),
24 mMaxLinkedPrims(-1), 24 mMaxLinkedPrims(-1),
25 mMaxDragDistance(0.f) 25 mMaxDragDistance(0.f),
26 mVoiceConnector("SLVoice")
26{ 27{
27 setLimits(); 28 setLimits();
28} 29}
@@ -68,6 +69,7 @@ void HippoLimits::setOpenSimLimits()
68 mEnableTeenMode = FALSE; 69 mEnableTeenMode = FALSE;
69 mEnforceMaxBuild = FALSE; 70 mEnforceMaxBuild = FALSE;
70 mRenderWater = TRUE; 71 mRenderWater = TRUE;
72 mVoiceConnector = "SLVoice";
71 73
72 if (gHippoGridManager->getConnectedGrid()->isRenderCompat()) { 74 if (gHippoGridManager->getConnectedGrid()->isRenderCompat()) {
73 llinfos << "Using rendering compatible OpenSim limits" << llendl; 75 llinfos << "Using rendering compatible OpenSim limits" << llendl;
@@ -110,6 +112,7 @@ void HippoLimits::setSecondLifeLimits()
110 mEnableTeenMode = FALSE; 112 mEnableTeenMode = FALSE;
111 mEnforceMaxBuild = FALSE; 113 mEnforceMaxBuild = FALSE;
112 mRenderWater = TRUE; 114 mRenderWater = TRUE;
115 mVoiceConnector = "SLVoice";
113} 116}
114 117
115F32 HippoLimits::getMaxPrimScale() const 118F32 HippoLimits::getMaxPrimScale() const
diff --git a/linden/indra/newview/hippolimits.h b/linden/indra/newview/hippolimits.h
index 7792a2c..9d6b2f6 100644
--- a/linden/indra/newview/hippolimits.h
+++ b/linden/indra/newview/hippolimits.h
@@ -14,7 +14,7 @@ public:
14 const S32& getMaxLinkedPrims() const { return mMaxLinkedPrims; } 14 const S32& getMaxLinkedPrims() const { return mMaxLinkedPrims; }
15 const S32& getMaxPhysLinkedPrims() const { return mMaxPhysLinkedPrims; } 15 const S32& getMaxPhysLinkedPrims() const { return mMaxPhysLinkedPrims; }
16 const F32& getMaxInventoryItemsTransfer() const { return mMaxInventoryItemsTransfer; } 16 const F32& getMaxInventoryItemsTransfer() const { return mMaxInventoryItemsTransfer; }
17 17 const std::string& getVoiceConnector() const { return mVoiceConnector; }
18 18
19 // Returns the max prim size we can use on a grid 19 // Returns the max prim size we can use on a grid
20 F32 getMinPrimScale() const; 20 F32 getMinPrimScale() const;
@@ -59,6 +59,7 @@ public:
59 BOOL mEnableTeenMode; 59 BOOL mEnableTeenMode;
60 BOOL mEnforceMaxBuild; 60 BOOL mEnforceMaxBuild;
61 BOOL mRenderWater; 61 BOOL mRenderWater;
62 std::string mVoiceConnector;
62 63
63private: 64private:
64 void setOpenSimLimits(); 65 void setOpenSimLimits();
diff --git a/linden/indra/newview/kowopenregionsettings.cpp b/linden/indra/newview/kowopenregionsettings.cpp
index 8aac87c..0c4bb38 100644
--- a/linden/indra/newview/kowopenregionsettings.cpp
+++ b/linden/indra/newview/kowopenregionsettings.cpp
@@ -36,6 +36,8 @@
36#include "llviewerobject.h" 36#include "llviewerobject.h"
37#include "llfloaterregioninfo.h" 37#include "llfloaterregioninfo.h"
38#include "llfloaterworldmap.h" 38#include "llfloaterworldmap.h"
39#include "llvoiceclient.h"
40#include "viewertime.h"
39 41
40//DEBUG includes 42//DEBUG includes
41//#include "llsdserialize.h" //LLSDNotationStreamer - for dumping LLSD to string 43//#include "llsdserialize.h" //LLSDNotationStreamer - for dumping LLSD to string
@@ -149,12 +151,15 @@ class OpenRegionInfoUpdate : public LLHTTPNode
149 } 151 }
150 if ( body.has("OffsetOfUTC") ) 152 if ( body.has("OffsetOfUTC") )
151 { 153 {
152 gSavedSettings.setS32("TimeOffset", body["OffsetOfUTC"].asReal()); 154 gSavedSettings.setS32("TimeOffset", body["OffsetOfUTC"].asInteger());
153 gSavedSettings.setBOOL("UseTimeOffset", true); 155 gSavedSettings.setBOOL("UseTimeOffset", true);
156 ViewerTime::sUseTimeOffset = true;
157 ViewerTime::sTimeOffset = gSavedSettings.getS32("TimeOffset");
154 } 158 }
155 if ( body.has("OffsetOfUTCDST") ) 159 if ( body.has("OffsetOfUTCDST") )
156 { 160 {
157 gSavedSettings.setBOOL("TimeOffsetDST", body["OffsetOfUTCDST"].asInteger() == 1 ? TRUE : FALSE); 161 gSavedSettings.setBOOL("TimeOffsetDST", body["OffsetOfUTCDST"].asInteger() == 1 ? TRUE : FALSE);
162 ViewerTime::sTimeOffsetDST = gSavedSettings.getBOOL("TimeOffsetDST");
158 } 163 }
159 if ( body.has("RenderWater") ) 164 if ( body.has("RenderWater") )
160 { 165 {
@@ -200,6 +205,12 @@ class OpenRegionInfoUpdate : public LLHTTPNode
200 { 205 {
201 gHippoLimits->mAllowParcelWindLight = body["AllowParcelWindLight"].asInteger() == 1; 206 gHippoLimits->mAllowParcelWindLight = body["AllowParcelWindLight"].asInteger() == 1;
202 } 207 }
208 if ( body.has("Voice") )
209 {
210 gSavedSettings.setString("VoiceModule", body["Voice"].asString());
211 //gVoiceClient->close();
212 //gVoiceClient->start();
213 }
203 214
204 if (limitschanged) 215 if (limitschanged)
205 gFloaterTools->updateToolsSizeLimits(); 216 gFloaterTools->updateToolsSizeLimits();
diff --git a/linden/indra/newview/linux_tools/register_secondlifeprotocol.sh b/linden/indra/newview/linux_tools/register_secondlifeprotocol.sh
index 4ab96f9..338fc26 100755
--- a/linden/indra/newview/linux_tools/register_secondlifeprotocol.sh
+++ b/linden/indra/newview/linux_tools/register_secondlifeprotocol.sh
@@ -18,7 +18,7 @@ LLGCONFTOOL2=gconftool-2
18if which ${LLGCONFTOOL2} >/dev/null; then 18if which ${LLGCONFTOOL2} >/dev/null; then
19 (${LLGCONFTOOL2} -s -t string /desktop/gnome/url-handlers/secondlife/command "${HANDLER} \"%s\"" && ${LLGCONFTOOL2} -s -t bool /desktop/gnome/url-handlers/secondlife/enabled true) || echo Warning: Did not register secondlife:// handler with GNOME: ${LLGCONFTOOL2} failed. 19 (${LLGCONFTOOL2} -s -t string /desktop/gnome/url-handlers/secondlife/command "${HANDLER} \"%s\"" && ${LLGCONFTOOL2} -s -t bool /desktop/gnome/url-handlers/secondlife/enabled true) || echo Warning: Did not register secondlife:// handler with GNOME: ${LLGCONFTOOL2} failed.
20else 20else
21 echo Warning: Did not register secondlife:// handler with GNOME: ${LLGCONFTOOL2} not found. 21 echo Info: Did not register secondlife:// handler with GNOME: ${LLGCONFTOOL2} not found. You can safely ignore this if you are not using GNOME.
22fi 22fi
23 23
24# Register handler for KDE-aware apps 24# Register handler for KDE-aware apps
@@ -42,5 +42,5 @@ makedir=false
42deleting=false 42deleting=false
43EOF 43EOF
44else 44else
45 echo Warning: Did not register secondlife:// handler with KDE: Directory $LLKDEPROTDIR does not exist. 45 echo Info: Did not register secondlife:// handler with KDE: Directory $LLKDEPROTDIR does not exist. You can safely ignore this if you are not using KDE.
46fi 46fi
diff --git a/linden/indra/newview/linux_tools/wrapper.sh b/linden/indra/newview/linux_tools/wrapper.sh
index 657ccbb..e590394 100755
--- a/linden/indra/newview/linux_tools/wrapper.sh
+++ b/linden/indra/newview/linux_tools/wrapper.sh
@@ -126,7 +126,7 @@ if [ -n "$LL_RUN_ERR" ]; then
126 LL_RUN_ERR_MSG="" 126 LL_RUN_ERR_MSG=""
127 if [ "$LL_RUN_ERR" = "runerr" ]; then 127 if [ "$LL_RUN_ERR" = "runerr" ]; then
128 # generic error running the binary 128 # generic error running the binary
129 echo '*** Bad shutdown. ***' 129 echo 'unexpected shutdown'
130 130
131 131
132 fi 132 fi
diff --git a/linden/indra/newview/llagent.cpp b/linden/indra/newview/llagent.cpp
index 004cca1..7bc57f8 100644
--- a/linden/indra/newview/llagent.cpp
+++ b/linden/indra/newview/llagent.cpp
@@ -4043,7 +4043,11 @@ void LLAgent::handleScrollWheel(S32 clicks)
4043 } 4043 }
4044 } 4044 }
4045} 4045}
4046 4046void LLAgent::handleHScrollWheel(S32 clicks)
4047{
4048 const F32 RAD_PER_CLICK = -F_PI / 16.0f;
4049 cameraOrbitAround(RAD_PER_CLICK * clicks);
4050}
4047 4051
4048//----------------------------------------------------------------------------- 4052//-----------------------------------------------------------------------------
4049// getCameraMinOffGround() 4053// getCameraMinOffGround()
diff --git a/linden/indra/newview/llagent.h b/linden/indra/newview/llagent.h
index fe50bf5..cea55fb 100644
--- a/linden/indra/newview/llagent.h
+++ b/linden/indra/newview/llagent.h
@@ -163,6 +163,7 @@ public:
163 void endAnimationUpdateUI(); 163 void endAnimationUpdateUI();
164 void setKey(const S32 direction, S32 &key); // sets key to +1 for +direction, -1 for -direction 164 void setKey(const S32 direction, S32 &key); // sets key to +1 for +direction, -1 for -direction
165 void handleScrollWheel(S32 clicks); // mousewheel driven zoom 165 void handleScrollWheel(S32 clicks); // mousewheel driven zoom
166 void handleHScrollWheel(S32 clicks);
166 167
167 void setAvatarObject(LLVOAvatar *avatar); 168 void setAvatarObject(LLVOAvatar *avatar);
168 169
diff --git a/linden/indra/newview/llappviewerwin32.cpp b/linden/indra/newview/llappviewerwin32.cpp
index cba7174..1d05a6e 100644
--- a/linden/indra/newview/llappviewerwin32.cpp
+++ b/linden/indra/newview/llappviewerwin32.cpp
@@ -365,7 +365,8 @@ void create_console()
365 h_con_handle = _open_osfhandle(l_std_handle, _O_TEXT); 365 h_con_handle = _open_osfhandle(l_std_handle, _O_TEXT);
366 fp = _fdopen( h_con_handle, "w" ); 366 fp = _fdopen( h_con_handle, "w" );
367 *stderr = *fp; 367 *stderr = *fp;
368 setvbuf( stderr, NULL, _IONBF, 0 ); 368 setvbuf( stderr, NULL, _IOFBF, 1024 ); //Assigning a buffer improves speed a LOT, esp on vista/win7
369 //_IOLBF is borked.
369} 370}
370 371
371LLAppViewerWin32::LLAppViewerWin32(const char* cmd_line) : 372LLAppViewerWin32::LLAppViewerWin32(const char* cmd_line) :
diff --git a/linden/indra/newview/llcloud.cpp b/linden/indra/newview/llcloud.cpp
index 3e9b86a..b325265 100644
--- a/linden/indra/newview/llcloud.cpp
+++ b/linden/indra/newview/llcloud.cpp
@@ -427,7 +427,7 @@ void LLCloudLayer::decompress(LLBitPack &bitpack, LLGroupHeader *group_headerp)
427 group_headerp->stride = group_headerp->patch_size; // offset required to step up one row 427 group_headerp->stride = group_headerp->patch_size; // offset required to step up one row
428 set_group_of_patch_header(group_headerp); 428 set_group_of_patch_header(group_headerp);
429 429
430 decode_patch_header(bitpack, &patch_header); 430 decode_patch_header(bitpack, &patch_header, FALSE);
431 decode_patch(bitpack, gBuffer); 431 decode_patch(bitpack, gBuffer);
432 decompress_patch(mDensityp, gBuffer, &patch_header); 432 decompress_patch(mDensityp, gBuffer, &patch_header);
433} 433}
diff --git a/linden/indra/newview/llface.h b/linden/indra/newview/llface.h
index 4893e82..e31b93f 100644
--- a/linden/indra/newview/llface.h
+++ b/linden/indra/newview/llface.h
@@ -106,6 +106,9 @@ public:
106 F32 getVirtualSize() const { return mVSize; } 106 F32 getVirtualSize() const { return mVSize; }
107 F32 getPixelArea() const { return mPixelArea; } 107 F32 getPixelArea() const { return mPixelArea; }
108 108
109 S32 getIndexInTex() const {return mIndexInTex ;}
110 void setIndexInTex(S32 index) { mIndexInTex = index ;}
111
109 void renderSetColor() const; 112 void renderSetColor() const;
110 S32 renderElements(const U16 *index_array) const; 113 S32 renderElements(const U16 *index_array) const;
111 S32 renderIndexed (); 114 S32 renderIndexed ();
@@ -225,6 +228,7 @@ private:
225 U16 mGeomIndex; // index into draw pool 228 U16 mGeomIndex; // index into draw pool
226 U32 mIndicesCount; 229 U32 mIndicesCount;
227 U32 mIndicesIndex; // index into draw pool for indices (yeah, I know!) 230 U32 mIndicesIndex; // index into draw pool for indices (yeah, I know!)
231 S32 mIndexInTex ;
228 232
229 //previous rebuild's geometry info 233 //previous rebuild's geometry info
230 U16 mLastGeomCount; 234 U16 mLastGeomCount;
diff --git a/linden/indra/newview/llfloaterabout.cpp b/linden/indra/newview/llfloaterabout.cpp
index f7163ee..a5d2c98 100644
--- a/linden/indra/newview/llfloaterabout.cpp
+++ b/linden/indra/newview/llfloaterabout.cpp
@@ -57,6 +57,7 @@
57#include "lltrans.h" 57#include "lltrans.h"
58#include "llappviewer.h" 58#include "llappviewer.h"
59#include "llglheaders.h" 59#include "llglheaders.h"
60#include "llviewerwindow.h"
60#include "llwindow.h" 61#include "llwindow.h"
61#include "viewerversion.h" 62#include "viewerversion.h"
62 63
@@ -106,6 +107,8 @@ LLFloaterAbout::LLFloaterAbout()
106 return; 107 return;
107 } 108 }
108 109
110 childSetAction("copy_btn", onClickCopy, this);
111
109 // For some reason, adding style doesn't work unless this is true. 112 // For some reason, adding style doesn't work unless this is true.
110 support_widget->setParseHTML(TRUE); 113 support_widget->setParseHTML(TRUE);
111 114
@@ -294,6 +297,23 @@ void LLFloaterAbout::show(void*)
294 sInstance->open(); /*Flawfinder: ignore*/ 297 sInstance->open(); /*Flawfinder: ignore*/
295} 298}
296 299
300// static
301void LLFloaterAbout::onClickCopy(void* user_data)
302{
303 LLFloaterAbout* self = (LLFloaterAbout*)user_data;
304
305 if (self)
306 {
307 LLViewerTextEditor* support_widget = self->getChild<LLViewerTextEditor>("support_editor", true);
308
309 if (support_widget)
310 {
311 std::string buffer = support_widget->getText();
312 gViewerWindow->mWindow->copyTextToClipboard(utf8str_to_wstring(buffer));
313 }
314 }
315}
316
297 317
298static std::string get_viewer_release_notes_url() 318static std::string get_viewer_release_notes_url()
299{ 319{
diff --git a/linden/indra/newview/llfloaterabout.h b/linden/indra/newview/llfloaterabout.h
index 7564b8e..44241ca 100644
--- a/linden/indra/newview/llfloaterabout.h
+++ b/linden/indra/newview/llfloaterabout.h
@@ -46,6 +46,8 @@ public:
46 46
47private: 47private:
48 static LLFloaterAbout* sInstance; 48 static LLFloaterAbout* sInstance;
49
50 static void onClickCopy(void* user_data);
49}; 51};
50 52
51 53
diff --git a/linden/indra/newview/llfloateranimpreview.cpp b/linden/indra/newview/llfloateranimpreview.cpp
index 232530c..6d7f350 100644
--- a/linden/indra/newview/llfloateranimpreview.cpp
+++ b/linden/indra/newview/llfloateranimpreview.cpp
@@ -617,6 +617,18 @@ BOOL LLFloaterAnimPreview::handleScrollWheel(S32 x, S32 y, S32 clicks)
617} 617}
618 618
619//----------------------------------------------------------------------------- 619//-----------------------------------------------------------------------------
620// handleHScrollWheel()
621//-----------------------------------------------------------------------------
622BOOL LLFloaterAnimPreview::handleHScrollWheel(S32 x, S32 y, S32 clicks)
623{
624 const F32 RAD_PER_CLICK = -F_PI / 16.0f;
625 mAnimPreview->rotate(RAD_PER_CLICK * clicks, 0);
626 mAnimPreview->requestUpdate();
627
628 return TRUE;
629}
630
631//-----------------------------------------------------------------------------
620// onMouseCaptureLost() 632// onMouseCaptureLost()
621//----------------------------------------------------------------------------- 633//-----------------------------------------------------------------------------
622void LLFloaterAnimPreview::onMouseCaptureLost() 634void LLFloaterAnimPreview::onMouseCaptureLost()
diff --git a/linden/indra/newview/llfloateranimpreview.h b/linden/indra/newview/llfloateranimpreview.h
index e8f79e2..0107165 100644
--- a/linden/indra/newview/llfloateranimpreview.h
+++ b/linden/indra/newview/llfloateranimpreview.h
@@ -80,6 +80,7 @@ public:
80 BOOL handleMouseUp(S32 x, S32 y, MASK mask); 80 BOOL handleMouseUp(S32 x, S32 y, MASK mask);
81 BOOL handleHover(S32 x, S32 y, MASK mask); 81 BOOL handleHover(S32 x, S32 y, MASK mask);
82 BOOL handleScrollWheel(S32 x, S32 y, S32 clicks); 82 BOOL handleScrollWheel(S32 x, S32 y, S32 clicks);
83 BOOL handleHScrollWheel(S32 x, S32 y, S32 clicks);
83 void onMouseCaptureLost(); 84 void onMouseCaptureLost();
84 85
85 void refresh(); 86 void refresh();
diff --git a/linden/indra/newview/llfloaterchat.cpp b/linden/indra/newview/llfloaterchat.cpp
index 12c1d31..a28123e 100644
--- a/linden/indra/newview/llfloaterchat.cpp
+++ b/linden/indra/newview/llfloaterchat.cpp
@@ -73,7 +73,6 @@
73#include "lllogchat.h" 73#include "lllogchat.h"
74#include "lltexteditor.h" 74#include "lltexteditor.h"
75#include "lltextparser.h" 75#include "lltextparser.h"
76#include "llfloaterhtml.h"
77#include "llweb.h" 76#include "llweb.h"
78#include "llstylemap.h" 77#include "llstylemap.h"
79#include "llviewermenu.h" 78#include "llviewermenu.h"
diff --git a/linden/indra/newview/llfloaterhtml.cpp b/linden/indra/newview/llfloaterhtml.cpp
deleted file mode 100644
index 5822ed5..0000000
--- a/linden/indra/newview/llfloaterhtml.cpp
+++ /dev/null
@@ -1,253 +0,0 @@
1/**
2 * @file llfloaterhtml.cpp
3 * @brief In-world HTML dialog
4 *
5 * $LicenseInfo:firstyear=2005&license=viewergpl$
6 *
7 * Copyright (c) 2005-2009, 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://secondlifegrid.net/programs/open_source/licensing/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
21 * http://secondlifegrid.net/programs/open_source/licensing/flossexception
22 *
23 * By copying, modifying or distributing this software, you acknowledge
24 * that you have read and understood your obligations described above,
25 * and agree to abide by those obligations.
26 *
27 * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
28 * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
29 * COMPLETENESS OR PERFORMANCE.
30 * $/LicenseInfo$
31 */
32
33#include "llviewerprecompiledheaders.h"
34
35#include "llfloaterhtml.h"
36
37// viewer includes
38#include "lluictrlfactory.h"
39#include "llviewercontrol.h"
40#include "lllineeditor.h"
41#include "llviewerwindow.h"
42#include "llweb.h"
43
44
45LLFloaterHtml* LLFloaterHtml::sInstance = 0;
46
47////////////////////////////////////////////////////////////////////////////////
48//
49LLFloaterHtml* LLFloaterHtml::getInstance()
50{
51 if ( ! sInstance )
52 sInstance = new LLFloaterHtml();
53
54 return sInstance;
55}
56
57////////////////////////////////////////////////////////////////////////////////
58//
59LLFloaterHtml::LLFloaterHtml()
60: LLFloater( std::string("HTML Floater") )
61
62 ,
63 mWebBrowser( 0 )
64{
65 LLUICtrlFactory::getInstance()->buildFloater( this, "floater_html.xml" );
66
67 childSetAction("back_btn", onClickBack, this);
68 childSetAction("home_btn", onClickHome, this);
69 childSetAction("forward_btn", onClickForward, this);
70 childSetAction("close_btn", onClickClose, this);
71 childSetCommitCallback("url_edit", onCommitUrlEdit, this );
72 childSetAction("go_btn", onClickGo, this );
73
74 // reposition floater from saved settings
75 LLRect rect = gSavedSettings.getRect( "FloaterHtmlRect" );
76 reshape( rect.getWidth(), rect.getHeight(), FALSE );
77 setRect( rect );
78
79 mWebBrowser = getChild<LLWebBrowserCtrl>("html_floater_browser" );
80 if ( mWebBrowser )
81 {
82 // open links in internal browser
83 mWebBrowser->setOpenInExternalBrowser( false );
84 }
85}
86
87////////////////////////////////////////////////////////////////////////////////
88//
89LLFloaterHtml::~LLFloaterHtml()
90{
91 // save position of floater
92 gSavedSettings.setRect( "FloaterHtmlRect", getRect() );
93
94 sInstance = 0;
95}
96
97////////////////////////////////////////////////////////////////////////////////
98// virtual
99void LLFloaterHtml::draw()
100{
101 // enable/disable buttons depending on state
102 if ( mWebBrowser )
103 {
104 bool enable_back = mWebBrowser->canNavigateBack();
105 childSetEnabled( "back_btn", enable_back );
106
107 bool enable_forward = mWebBrowser->canNavigateForward();
108 childSetEnabled( "forward_btn", enable_forward );
109 };
110
111 LLFloater::draw();
112}
113
114////////////////////////////////////////////////////////////////////////////////
115//
116void LLFloaterHtml::show( std::string content_id, bool open_link_external, bool open_app_slurls )
117{
118 // calculate the XML labels we'll need (if only XML folders worked)
119 std::string title_str = content_id + "_title";
120 std::string url_str = content_id + "_url";
121
122 std::string title = getString( title_str );
123 std::string url = getString( url_str );
124
125 show( url, title, open_link_external, open_app_slurls );
126}
127
128////////////////////////////////////////////////////////////////////////////////
129//
130void LLFloaterHtml::show( std::string start_url, std::string title, bool open_link_external, bool trusted_browser )
131{
132 // set the title
133 setTitle( title );
134
135 // navigate to the URL
136 if ( mWebBrowser )
137 {
138 mWebBrowser->setTrusted( trusted_browser );
139 mWebBrowser->setOpenInExternalBrowser( open_link_external );
140 mWebBrowser->navigateTo( start_url );
141 }
142
143 // make floater appear
144 setVisibleAndFrontmost();
145}
146
147////////////////////////////////////////////////////////////////////////////////
148//
149std::string LLFloaterHtml::getSupportUrl()
150{
151 return getString("support_page_url");
152}
153
154////////////////////////////////////////////////////////////////////////////////
155//
156void LLFloaterHtml::onClose( bool app_quitting )
157{
158 setVisible( false );
159 // HACK for fast XML iteration replace with:
160 // destroy();
161}
162
163////////////////////////////////////////////////////////////////////////////////
164//
165void LLFloaterHtml::onClickClose( void* data )
166{
167 LLFloaterHtml* self = ( LLFloaterHtml* )data;
168 self->close();
169}
170
171////////////////////////////////////////////////////////////////////////////////
172// static
173void LLFloaterHtml::onClickBack( void* data )
174{
175 LLFloaterHtml* self = ( LLFloaterHtml* )data;
176 if ( self )
177 {
178 if ( self->mWebBrowser )
179 {
180 self->mWebBrowser->navigateBack();
181 };
182 };
183}
184
185////////////////////////////////////////////////////////////////////////////////
186//
187void LLFloaterHtml::onClickHome( void* data )
188{
189 LLFloaterHtml* self = ( LLFloaterHtml* )data;
190 if ( self )
191 {
192 if ( self->mWebBrowser )
193 {
194 std::string home_url = self->getString("home_page_url");
195 if ( home_url.length() > 4 )
196 {
197 self->mWebBrowser->navigateTo( home_url );
198 }
199 else
200 {
201 llwarns << "Invalid home page specified for HTML floater - navigating to default" << llendl;
202 self->mWebBrowser->navigateTo( "http://secondlife.com" );
203 }
204 };
205 };
206}
207
208////////////////////////////////////////////////////////////////////////////////
209// static
210void LLFloaterHtml::onClickForward( void* data )
211{
212 LLFloaterHtml* self = ( LLFloaterHtml* )data;
213 if ( self )
214 {
215 if ( self->mWebBrowser )
216 {
217 self->mWebBrowser->navigateForward();
218 };
219 };
220}
221
222////////////////////////////////////////////////////////////////////////////////
223// static
224void LLFloaterHtml::onCommitUrlEdit(LLUICtrl* ctrl, void* user_data)
225{
226 LLFloaterHtml* self = (LLFloaterHtml*)user_data;
227
228 LLLineEditor* editor = (LLLineEditor*)ctrl;
229 std::string url = editor->getText();
230
231 if ( self->mWebBrowser )
232 {
233 self->mWebBrowser->navigateTo( url );
234 };
235}
236
237////////////////////////////////////////////////////////////////////////////////
238// static
239void LLFloaterHtml::onClickGo( void* data )
240{
241 LLFloaterHtml* self = ( LLFloaterHtml* )data;
242 if ( self )
243 {
244 std::string url = self->childGetValue( "url_edit" ).asString();
245 if ( url.length() )
246 {
247 if ( self->mWebBrowser )
248 {
249 self->mWebBrowser->navigateTo( url );
250 }
251 }
252 }
253}
diff --git a/linden/indra/newview/llfloaterhtml.h b/linden/indra/newview/llfloaterhtml.h
deleted file mode 100644
index 4383472..0000000
--- a/linden/indra/newview/llfloaterhtml.h
+++ /dev/null
@@ -1,77 +0,0 @@
1 /**
2 * @file llfloaterhtml.h
3 * @author James Cook
4 * @brief In-world HTML dialog
5 *
6 * $LicenseInfo:firstyear=2005&license=viewergpl$
7 *
8 * Copyright (c) 2005-2009, Linden Research, Inc.
9 *
10 * Second Life Viewer Source Code
11 * The source code in this file ("Source Code") is provided by Linden Lab
12 * to you under the terms of the GNU General Public License, version 2.0
13 * ("GPL"), unless you have obtained a separate licensing agreement
14 * ("Other License"), formally executed by you and Linden Lab. Terms of
15 * the GPL can be found in doc/GPL-license.txt in this distribution, or
16 * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
17 *
18 * There are special exceptions to the terms and conditions of the GPL as
19 * it is applied to this Source Code. View the full text of the exception
20 * in the file doc/FLOSS-exception.txt in this software distribution, or
21 * online at
22 * http://secondlifegrid.net/programs/open_source/licensing/flossexception
23 *
24 * By copying, modifying or distributing this software, you acknowledge
25 * that you have read and understood your obligations described above,
26 * and agree to abide by those obligations.
27 *
28 * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
29 * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
30 * COMPLETENESS OR PERFORMANCE.
31 * $/LicenseInfo$
32 */
33
34#ifndef LL_LLFLOATERHTML_H
35#define LL_LLFLOATERHTML_H
36
37#include "llfloater.h"
38#include "llhtmlhelp.h"
39
40class LLWebBrowserCtrl;
41
42class LLFloaterHtml :
43 public LLFloater
44{
45 public:
46 static LLFloaterHtml* getInstance();
47 virtual ~LLFloaterHtml();
48
49 virtual void draw();
50 virtual void onClose( bool app_quitting );
51
52 // Pass string like "in-world_help" or "additional help"
53 void show( std::string content_id, bool open_link_external, bool trusted_browser );
54
55 // Pass raw URL and window title
56 // Can be set to handle secondlife:///app/ URLs, but this should
57 // usually be false.
58 void show( std::string start_url, std::string title, bool open_link_external, bool trusted_browser );
59
60 std::string getSupportUrl();
61
62 static void onClickClose( void* data );
63 static void onClickBack( void* data );
64 static void onClickHome( void* data );
65 static void onClickForward( void* data );
66 static void onCommitUrlEdit(LLUICtrl* ctrl, void* user_data);
67 static void onClickGo( void* data );
68
69 private:
70 LLFloaterHtml();
71
72 LLWebBrowserCtrl* mWebBrowser;
73 static LLFloaterHtml* sInstance;
74 LLButton* mCloseButton;
75};
76
77#endif
diff --git a/linden/indra/newview/llfloaterimagepreview.cpp b/linden/indra/newview/llfloaterimagepreview.cpp
index aa8a94f..e792f8c 100644
--- a/linden/indra/newview/llfloaterimagepreview.cpp
+++ b/linden/indra/newview/llfloaterimagepreview.cpp
@@ -616,6 +616,22 @@ BOOL LLFloaterImagePreview::handleScrollWheel(S32 x, S32 y, S32 clicks)
616 return TRUE; 616 return TRUE;
617} 617}
618 618
619BOOL LLFloaterImagePreview::handleHScrollWheel(S32 x, S32 y, S32 clicks)
620{
621 const F32 RAD_PER_CLICK = -F_PI / 16.0f;
622
623 if (mPreviewRect.pointInRect(x, y) && mAvatarPreview)
624 {
625 mAvatarPreview->rotate(RAD_PER_CLICK * clicks, 0);
626 mAvatarPreview->refresh();
627
628 mSculptedPreview->rotate(RAD_PER_CLICK * clicks, 0);
629 mSculptedPreview->refresh();
630 }
631
632 return TRUE;
633}
634
619//----------------------------------------------------------------------------- 635//-----------------------------------------------------------------------------
620// onMouseCaptureLost() 636// onMouseCaptureLost()
621//----------------------------------------------------------------------------- 637//-----------------------------------------------------------------------------
diff --git a/linden/indra/newview/llfloaterimagepreview.h b/linden/indra/newview/llfloaterimagepreview.h
index 6a4de3d..1ccfeb4 100644
--- a/linden/indra/newview/llfloaterimagepreview.h
+++ b/linden/indra/newview/llfloaterimagepreview.h
@@ -115,6 +115,7 @@ public:
115 BOOL handleMouseUp(S32 x, S32 y, MASK mask); 115 BOOL handleMouseUp(S32 x, S32 y, MASK mask);
116 BOOL handleHover(S32 x, S32 y, MASK mask); 116 BOOL handleHover(S32 x, S32 y, MASK mask);
117 BOOL handleScrollWheel(S32 x, S32 y, S32 clicks); 117 BOOL handleScrollWheel(S32 x, S32 y, S32 clicks);
118 BOOL handleHScrollWheel(S32 x, S32 y, S32 clicks);
118 119
119 static void onMouseCaptureLostImagePreview(LLMouseHandler*); 120 static void onMouseCaptureLostImagePreview(LLMouseHandler*);
120 static void setUploadAmount(S32 amount) { sUploadAmount = amount; } 121 static void setUploadAmount(S32 amount) { sUploadAmount = amount; }
diff --git a/linden/indra/newview/llfloatermediabrowser.cpp b/linden/indra/newview/llfloatermediabrowser.cpp
index d658a11..a78c9d1 100644
--- a/linden/indra/newview/llfloatermediabrowser.cpp
+++ b/linden/indra/newview/llfloatermediabrowser.cpp
@@ -1,6 +1,6 @@
1/** 1/**
2 * @file llfloaterhtmlhelp.cpp 2 * @file llmediabrowser.cpp
3 * @brief HTML Help floater - uses embedded web browser control 3 * @brief embedded web browser
4 * 4 *
5 * $LicenseInfo:firstyear=2006&license=viewergpl$ 5 * $LicenseInfo:firstyear=2006&license=viewergpl$
6 * 6 *
@@ -33,7 +33,6 @@
33#include "llviewerprecompiledheaders.h" 33#include "llviewerprecompiledheaders.h"
34 34
35#include "llfloatermediabrowser.h" 35#include "llfloatermediabrowser.h"
36#include "llfloaterhtml.h"
37 36
38#include "llchat.h" 37#include "llchat.h"
39#include "llfloaterchat.h" 38#include "llfloaterchat.h"
diff --git a/linden/indra/newview/llfloaterpreference.cpp b/linden/indra/newview/llfloaterpreference.cpp
index 2fe4b4d..0f81be6 100644
--- a/linden/indra/newview/llfloaterpreference.cpp
+++ b/linden/indra/newview/llfloaterpreference.cpp
@@ -362,6 +362,11 @@ void LLPreferenceCore::setPersonalInfo(const std::string& visibility, bool im_vi
362 mPrefsIM->setPersonalInfo(visibility, im_via_email, email); 362 mPrefsIM->setPersonalInfo(visibility, im_via_email, email);
363} 363}
364 364
365void LLPreferenceCore::updateIsLoggedIn(bool enable)
366{
367 mPrefsIM->preparePerAccountPrefs(enable);
368}
369
365void LLPreferenceCore::refreshEnabledGraphics() 370void LLPreferenceCore::refreshEnabledGraphics()
366{ 371{
367 LLFloaterHardwareSettings::instance()->refreshEnabledState(); 372 LLFloaterHardwareSettings::instance()->refreshEnabledState();
@@ -537,6 +542,15 @@ void LLFloaterPreference::updateUserInfo(const std::string& visibility, bool im_
537 } 542 }
538} 543}
539 544
545// static
546void LLFloaterPreference::updateIsLoggedIn(bool enable)
547{
548 if(sInstance && sInstance->mPreferenceCore)
549 {
550 sInstance->mPreferenceCore->updateIsLoggedIn(enable);
551 }
552}
553
540void LLFloaterPreference::refreshEnabledGraphics() 554void LLFloaterPreference::refreshEnabledGraphics()
541{ 555{
542 sInstance->mPreferenceCore->refreshEnabledGraphics(); 556 sInstance->mPreferenceCore->refreshEnabledGraphics();
diff --git a/linden/indra/newview/llfloaterpreference.h b/linden/indra/newview/llfloaterpreference.h
index c52f541..931c8b6 100644
--- a/linden/indra/newview/llfloaterpreference.h
+++ b/linden/indra/newview/llfloaterpreference.h
@@ -73,6 +73,7 @@ public:
73 LLTabContainer* getTabContainer() { return mTabContainer; } 73 LLTabContainer* getTabContainer() { return mTabContainer; }
74 74
75 void setPersonalInfo(const std::string& visibility, bool im_via_email, const std::string& email); 75 void setPersonalInfo(const std::string& visibility, bool im_via_email, const std::string& email);
76 void updateIsLoggedIn(bool enable);
76 77
77 static void onTabChanged(void* user_data, bool from_click); 78 static void onTabChanged(void* user_data, bool from_click);
78 79
@@ -113,6 +114,8 @@ public:
113 114
114 // static data update, called from message handler 115 // static data update, called from message handler
115 static void updateUserInfo(const std::string& visibility, bool im_via_email, const std::string& email); 116 static void updateUserInfo(const std::string& visibility, bool im_via_email, const std::string& email);
117 // static data update, called after login
118 static void updateIsLoggedIn(bool enable);
116 119
117 // refresh all the graphics preferences menus 120 // refresh all the graphics preferences menus
118 static void refreshEnabledGraphics(); 121 static void refreshEnabledGraphics();
diff --git a/linden/indra/newview/llfloaterregioninfo.cpp b/linden/indra/newview/llfloaterregioninfo.cpp
index 163c1ec..23f3cf1 100644
--- a/linden/indra/newview/llfloaterregioninfo.cpp
+++ b/linden/indra/newview/llfloaterregioninfo.cpp
@@ -1,3300 +1,3447 @@
1/** 1/**
2 * @file llfloaterregioninfo.cpp 2 * @file llfloaterregioninfo.cpp
3 * @author Aaron Brashears 3 * @author Aaron Brashears
4 * @brief Implementation of the region info and controls floater and panels. 4 * @brief Implementation of the region info and controls floater and panels.
5 * 5 *
6 * $LicenseInfo:firstyear=2004&license=viewergpl$ 6 * $LicenseInfo:firstyear=2004&license=viewergpl$
7 * 7 *
8 * Copyright (c) 2004-2009, Linden Research, Inc. 8 * Copyright (c) 2004-2009, Linden Research, Inc.
9 * 9 *
10 * Second Life Viewer Source Code 10 * Second Life Viewer Source Code
11 * The source code in this file ("Source Code") is provided by Linden Lab 11 * The source code in this file ("Source Code") is provided by Linden Lab
12 * to you under the terms of the GNU General Public License, version 2.0 12 * to you under the terms of the GNU General Public License, version 2.0
13 * ("GPL"), unless you have obtained a separate licensing agreement 13 * ("GPL"), unless you have obtained a separate licensing agreement
14 * ("Other License"), formally executed by you and Linden Lab. Terms of 14 * ("Other License"), formally executed by you and Linden Lab. Terms of
15 * the GPL can be found in doc/GPL-license.txt in this distribution, or 15 * the GPL can be found in doc/GPL-license.txt in this distribution, or
16 * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 16 * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
17 * 17 *
18 * There are special exceptions to the terms and conditions of the GPL as 18 * There are special exceptions to the terms and conditions of the GPL as
19 * it is applied to this Source Code. View the full text of the exception 19 * it is applied to this Source Code. View the full text of the exception
20 * in the file doc/FLOSS-exception.txt in this software distribution, or 20 * in the file doc/FLOSS-exception.txt in this software distribution, or
21 * online at 21 * online at
22 * http://secondlifegrid.net/programs/open_source/licensing/flossexception 22 * http://secondlifegrid.net/programs/open_source/licensing/flossexception
23 * 23 *
24 * By copying, modifying or distributing this software, you acknowledge 24 * By copying, modifying or distributing this software, you acknowledge
25 * that you have read and understood your obligations described above, 25 * that you have read and understood your obligations described above,
26 * and agree to abide by those obligations. 26 * and agree to abide by those obligations.
27 * 27 *
28 * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO 28 * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
29 * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, 29 * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
30 * COMPLETENESS OR PERFORMANCE. 30 * COMPLETENESS OR PERFORMANCE.
31 * $/LicenseInfo$ 31 * $/LicenseInfo$
32 */ 32 */
33 33
34#include "llviewerprecompiledheaders.h" 34#include "llviewerprecompiledheaders.h"
35#include "llfloaterregioninfo.h" 35#include "llfloaterregioninfo.h"
36 36
37#include <algorithm> 37#include <algorithm>
38#include <functional> 38#include <functional>
39 39
40#include "llcachename.h" 40#include "llcachename.h"
41#include "lldir.h" 41#include "lldir.h"
42#include "lldispatcher.h" 42#include "lldispatcher.h"
43#include "llglheaders.h" 43#include "llglheaders.h"
44#include "llregionflags.h" 44#include "llregionflags.h"
45#include "llstl.h" 45#include "llstl.h"
46#include "indra_constants.h" 46#include "indra_constants.h"
47#include "message.h" 47#include "message.h"
48 48
49#include "llagent.h" 49#include "llagent.h"
50#include "llalertdialog.h" 50#include "llalertdialog.h"
51#include "llappviewer.h" 51#include "llappviewer.h"
52#include "llfloateravatarpicker.h" 52#include "llfloateravatarpicker.h"
53#include "llbutton.h" 53#include "llbutton.h"
54#include "llcheckboxctrl.h" 54#include "llcheckboxctrl.h"
55#include "llcombobox.h" 55#include "llcombobox.h"
56#include "llfilepicker.h" 56#include "llfilepicker.h"
57#include "llfloaterdaycycle.h" 57#include "llfloaterdaycycle.h"
58#include "llfloatergodtools.h" // for send_sim_wide_deletes() 58#include "llfloatergodtools.h" // for send_sim_wide_deletes()
59#include "llfloatertopobjects.h" // added to fix SL-32336 59#include "llfloatertopobjects.h" // added to fix SL-32336
60#include "llfloatergroups.h" 60#include "llfloatergroups.h"
61#include "llfloatertelehub.h" 61#include "llfloatertelehub.h"
62#include "llfloaterwindlight.h" 62#include "llfloaterwindlight.h"
63#include "llinventorymodel.h" 63#include "llinventorymodel.h"
64#include "lllineeditor.h" 64#include "lllineeditor.h"
65#include "llalertdialog.h" 65#include "llalertdialog.h"
66#include "llnamelistctrl.h" 66#include "llnamelistctrl.h"
67#include "llsliderctrl.h" 67#include "llsliderctrl.h"
68#include "llspinctrl.h" 68#include "llspinctrl.h"
69#include "lltabcontainer.h" 69#include "lltabcontainer.h"
70#include "lltextbox.h" 70#include "lltextbox.h"
71#include "llinventory.h" 71#include "llinventory.h"
72#include "lltexturectrl.h" 72#include "lltexturectrl.h"
73#include "lltrans.h" 73#include "lltrans.h"
74#include "llviewercontrol.h" 74#include "llviewercontrol.h"
75#include "lluictrlfactory.h" 75#include "lluictrlfactory.h"
76#include "llviewerimage.h" 76#include "llviewerimage.h"
77#include "llviewerimagelist.h" 77#include "llviewerimagelist.h"
78#include "llviewerregion.h" 78#include "llviewerregion.h"
79#include "llviewerstats.h" 79#include "llviewerstats.h"
80#include "llviewertexteditor.h" 80#include "llviewertexteditor.h"
81#include "llviewerwindow.h" 81#include "llviewerwindow.h"
82#include "llvlcomposition.h" 82#include "llvlcomposition.h"
83#include "hippolimits.h" 83#include "hippolimits.h"
84 84
85// [RLVa:KB] 85// [RLVa:KB]
86#include "rlvhandler.h" 86#include "rlvhandler.h"
87// [/RLVa:KB] 87// [/RLVa:KB]
88 88
89#define ELAR_ENABLED 0 // Enable when server support is implemented 89#define ELAR_ENABLED 0 // Enable when server support is implemented
90 90
91const S32 TERRAIN_TEXTURE_COUNT = 4; 91const S32 TERRAIN_TEXTURE_COUNT = 4;
92const S32 CORNER_COUNT = 4; 92const S32 CORNER_COUNT = 4;
93 93
94///---------------------------------------------------------------------------- 94///----------------------------------------------------------------------------
95/// Local class declaration 95/// Local class declaration
96///---------------------------------------------------------------------------- 96///----------------------------------------------------------------------------
97 97
98class LLDispatchEstateUpdateInfo : public LLDispatchHandler 98class LLDispatchEstateUpdateInfo : public LLDispatchHandler
99{ 99{
100public: 100public:
101 LLDispatchEstateUpdateInfo() {} 101 LLDispatchEstateUpdateInfo() {}
102 virtual ~LLDispatchEstateUpdateInfo() {} 102 virtual ~LLDispatchEstateUpdateInfo() {}
103 virtual bool operator()( 103 virtual bool operator()(
104 const LLDispatcher* dispatcher, 104 const LLDispatcher* dispatcher,
105 const std::string& key, 105 const std::string& key,
106 const LLUUID& invoice, 106 const LLUUID& invoice,
107 const sparam_t& strings); 107 const sparam_t& strings);
108}; 108};
109 109
110class LLDispatchSetEstateAccess : public LLDispatchHandler 110class LLDispatchSetEstateAccess : public LLDispatchHandler
111{ 111{
112public: 112public:
113 LLDispatchSetEstateAccess() {} 113 LLDispatchSetEstateAccess() {}
114 virtual ~LLDispatchSetEstateAccess() {} 114 virtual ~LLDispatchSetEstateAccess() {}
115 virtual bool operator()( 115 virtual bool operator()(
116 const LLDispatcher* dispatcher, 116 const LLDispatcher* dispatcher,
117 const std::string& key, 117 const std::string& key,
118 const LLUUID& invoice, 118 const LLUUID& invoice,
119 const sparam_t& strings); 119 const sparam_t& strings);
120}; 120};
121 121
122 122
123/* 123/*
124void unpack_request_params( 124void unpack_request_params(
125 LLMessageSystem* msg, 125 LLMessageSystem* msg,
126 LLDispatcher::sparam_t& strings, 126 LLDispatcher::sparam_t& strings,
127 LLDispatcher::iparam_t& integers) 127 LLDispatcher::iparam_t& integers)
128{ 128{
129 char str_buf[MAX_STRING]; 129 char str_buf[MAX_STRING];
130 S32 str_count = msg->getNumberOfBlocksFast(_PREHASH_StringData); 130 S32 str_count = msg->getNumberOfBlocksFast(_PREHASH_StringData);
131 S32 i; 131 S32 i;
132 for (i = 0; i < str_count; ++i) 132 for (i = 0; i < str_count; ++i)
133 { 133 {
134 // we treat the SParam as binary data (since it might be an 134 // we treat the SParam as binary data (since it might be an
135 // LLUUID in compressed form which may have embedded \0's,) 135 // LLUUID in compressed form which may have embedded \0's,)
136 str_buf[0] = '\0'; 136 str_buf[0] = '\0';
137 S32 data_size = msg->getSizeFast(_PREHASH_StringData, i, _PREHASH_SParam); 137 S32 data_size = msg->getSizeFast(_PREHASH_StringData, i, _PREHASH_SParam);
138 if (data_size >= 0) 138 if (data_size >= 0)
139 { 139 {
140 msg->getBinaryDataFast(_PREHASH_StringData, _PREHASH_SParam, 140 msg->getBinaryDataFast(_PREHASH_StringData, _PREHASH_SParam,
141 str_buf, data_size, i, MAX_STRING - 1); 141 str_buf, data_size, i, MAX_STRING - 1);
142 strings.push_back(std::string(str_buf, data_size)); 142 strings.push_back(std::string(str_buf, data_size));
143 } 143 }
144 } 144 }
145 145
146 U32 int_buf; 146 U32 int_buf;
147 S32 int_count = msg->getNumberOfBlocksFast(_PREHASH_IntegerData); 147 S32 int_count = msg->getNumberOfBlocksFast(_PREHASH_IntegerData);
148 for (i = 0; i < int_count; ++i) 148 for (i = 0; i < int_count; ++i)
149 { 149 {
150 msg->getU32("IntegerData", "IParam", int_buf, i); 150 msg->getU32("IntegerData", "IParam", int_buf, i);
151 integers.push_back(int_buf); 151 integers.push_back(int_buf);
152 } 152 }
153} 153}
154*/ 154*/
155 155
156 156
157 157
158bool estate_dispatch_initialized = false; 158bool estate_dispatch_initialized = false;
159 159
160 160
161///---------------------------------------------------------------------------- 161///----------------------------------------------------------------------------
162/// LLFloaterRegionInfo 162/// LLFloaterRegionInfo
163///---------------------------------------------------------------------------- 163///----------------------------------------------------------------------------
164 164
165//S32 LLFloaterRegionInfo::sRequestSerial = 0; 165//S32 LLFloaterRegionInfo::sRequestSerial = 0;
166LLUUID LLFloaterRegionInfo::sRequestInvoice; 166LLUUID LLFloaterRegionInfo::sRequestInvoice;
167 167
168LLFloaterRegionInfo::LLFloaterRegionInfo(const LLSD& seed) 168LLFloaterRegionInfo::LLFloaterRegionInfo(const LLSD& seed)
169{ 169{
170 LLUICtrlFactory::getInstance()->buildFloater(this, "floater_region_info.xml", NULL, FALSE); 170 LLUICtrlFactory::getInstance()->buildFloater(this, "floater_region_info.xml", NULL, FALSE);
171} 171}
172 172
173BOOL LLFloaterRegionInfo::postBuild() 173BOOL LLFloaterRegionInfo::postBuild()
174{ 174{
175 mTab = getChild<LLTabContainer>("region_panels"); 175 mTab = getChild<LLTabContainer>("region_panels");
176 176
177 // contruct the panels 177 // contruct the panels
178 LLPanelRegionInfo* panel; 178 LLPanelRegionInfo* panel;
179 179
180 panel = new LLPanelRegionGeneralInfo; 180 panel = new LLPanelRegionGeneralInfo;
181 mInfoPanels.push_back(panel); 181 mInfoPanels.push_back(panel);
182 LLUICtrlFactory::getInstance()->buildPanel(panel, "panel_region_general.xml"); 182 LLUICtrlFactory::getInstance()->buildPanel(panel, "panel_region_general.xml");
183 mTab->addTabPanel(panel, panel->getLabel(), TRUE); 183 mTab->addTabPanel(panel, panel->getLabel(), TRUE);
184 184
185 // We only use this panel on Aurora-based sims -- MC 185 // We only use this panel on Aurora-based sims -- MC
186 std::string url = gAgent.getRegion()->getCapability("DispatchOpenRegionSettings"); 186 std::string url = gAgent.getRegion()->getCapability("DispatchOpenRegionSettings");
187 if (!url.empty()) 187 if (!url.empty())
188 { 188 {
189 panel = new LLPanelRegionOpenSettingsInfo; 189 panel = new LLPanelRegionOpenSettingsInfo;
190 mInfoPanels.push_back(panel); 190 mInfoPanels.push_back(panel);
191 LLUICtrlFactory::getInstance()->buildPanel(panel, "panel_region_open_region_settings.xml"); 191 LLUICtrlFactory::getInstance()->buildPanel(panel, "panel_region_open_region_settings.xml");
192 mTab->addTabPanel(panel, panel->getLabel(), FALSE); 192 mTab->addTabPanel(panel, panel->getLabel(), FALSE);
193 } 193 }
194 194
195 panel = new LLPanelRegionDebugInfo; 195 panel = new LLPanelRegionDebugInfo;
196 mInfoPanels.push_back(panel); 196 mInfoPanels.push_back(panel);
197 LLUICtrlFactory::getInstance()->buildPanel(panel, "panel_region_debug.xml"); 197 LLUICtrlFactory::getInstance()->buildPanel(panel, "panel_region_debug.xml");
198 mTab->addTabPanel(panel, panel->getLabel(), FALSE); 198 mTab->addTabPanel(panel, panel->getLabel(), FALSE);
199 199
200 panel = new LLPanelRegionTextureInfo; 200 panel = new LLPanelRegionTextureInfo;
201 mInfoPanels.push_back(panel); 201 mInfoPanels.push_back(panel);
202 LLUICtrlFactory::getInstance()->buildPanel(panel, "panel_region_texture.xml"); 202 LLUICtrlFactory::getInstance()->buildPanel(panel, "panel_region_texture.xml");
203 mTab->addTabPanel(panel, panel->getLabel(), FALSE); 203 mTab->addTabPanel(panel, panel->getLabel(), FALSE);
204 204
205 panel = new LLPanelRegionTerrainInfo; 205 panel = new LLPanelRegionTerrainInfo;
206 mInfoPanels.push_back(panel); 206 mInfoPanels.push_back(panel);
207 LLUICtrlFactory::getInstance()->buildPanel(panel, "panel_region_terrain.xml"); 207 LLUICtrlFactory::getInstance()->buildPanel(panel, "panel_region_terrain.xml");
208 mTab->addTabPanel(panel, panel->getLabel(), FALSE); 208 mTab->addTabPanel(panel, panel->getLabel(), FALSE);
209 209
210 panel = new LLPanelEstateInfo; 210 panel = new LLPanelEstateInfo;
211 mInfoPanels.push_back(panel); 211 mInfoPanels.push_back(panel);
212 LLUICtrlFactory::getInstance()->buildPanel(panel, "panel_region_estate.xml"); 212 LLUICtrlFactory::getInstance()->buildPanel(panel, "panel_region_estate.xml");
213 mTab->addTabPanel(panel, panel->getLabel(), FALSE); 213 mTab->addTabPanel(panel, panel->getLabel(), FALSE);
214 214
215 panel = new LLPanelEstateCovenant; 215 panel = new LLPanelEstateCovenant;
216 mInfoPanels.push_back(panel); 216 mInfoPanels.push_back(panel);
217 LLUICtrlFactory::getInstance()->buildPanel(panel, "panel_region_covenant.xml"); 217 LLUICtrlFactory::getInstance()->buildPanel(panel, "panel_region_covenant.xml");
218 mTab->addTabPanel(panel, panel->getLabel(), FALSE); 218 mTab->addTabPanel(panel, panel->getLabel(), FALSE);
219 219
220 gMessageSystem->setHandlerFunc( 220 gMessageSystem->setHandlerFunc(
221 "EstateOwnerMessage", 221 "EstateOwnerMessage",
222 &processEstateOwnerRequest); 222 &processEstateOwnerRequest);
223 223
224 return TRUE; 224 return TRUE;
225} 225}
226 226
227LLFloaterRegionInfo::~LLFloaterRegionInfo() 227LLFloaterRegionInfo::~LLFloaterRegionInfo()
228{ 228{
229} 229}
230 230
231void LLFloaterRegionInfo::onOpen() 231void LLFloaterRegionInfo::onOpen()
232{ 232{
233 LLRect rect = gSavedSettings.getRect("FloaterRegionInfo"); 233 LLRect rect = gSavedSettings.getRect("FloaterRegionInfo");
234 S32 left, top; 234 S32 left, top;
235 gFloaterView->getNewFloaterPosition(&left, &top); 235 gFloaterView->getNewFloaterPosition(&left, &top);
236 rect.translate(left,top); 236 rect.translate(left,top);
237 237
238 refreshFromRegion(gAgent.getRegion()); 238 refreshFromRegion(gAgent.getRegion());
239 requestRegionInfo(); 239 requestRegionInfo();
240 LLFloater::onOpen(); 240 LLFloater::onOpen();
241} 241}
242 242
243// static 243// static
244void LLFloaterRegionInfo::requestRegionInfo() 244void LLFloaterRegionInfo::requestRegionInfo()
245{ 245{
246 LLTabContainer* tab = findInstance()->getChild<LLTabContainer>("region_panels"); 246 LLTabContainer* tab = findInstance()->getChild<LLTabContainer>("region_panels");
247 247
248 tab->getChild<LLPanel>("General")->setCtrlsEnabled(FALSE); 248 tab->getChild<LLPanel>("General")->setCtrlsEnabled(FALSE);
249 tab->getChild<LLPanel>("Debug")->setCtrlsEnabled(FALSE); 249 tab->getChild<LLPanel>("Debug")->setCtrlsEnabled(FALSE);
250 tab->getChild<LLPanel>("Terrain")->setCtrlsEnabled(FALSE); 250 tab->getChild<LLPanel>("Terrain")->setCtrlsEnabled(FALSE);
251 tab->getChild<LLPanel>("Estate")->setCtrlsEnabled(FALSE); 251 tab->getChild<LLPanel>("Estate")->setCtrlsEnabled(FALSE);
252 tab->getChild<LLPanel>("RegionSettings")->setCtrlsEnabled(FALSE); 252 tab->getChild<LLPanel>("RegionSettings")->setCtrlsEnabled(FALSE);
253 253
254 // Must allow anyone to request the RegionInfo data 254 // Must allow anyone to request the RegionInfo data
255 // so non-owners/non-gods can see the values. 255 // so non-owners/non-gods can see the values.
256 // Therefore can't use an EstateOwnerMessage JC 256 // Therefore can't use an EstateOwnerMessage JC
257 LLMessageSystem* msg = gMessageSystem; 257 LLMessageSystem* msg = gMessageSystem;
258 msg->newMessage("RequestRegionInfo"); 258 msg->newMessage("RequestRegionInfo");
259 msg->nextBlock("AgentData"); 259 msg->nextBlock("AgentData");
260 msg->addUUID("AgentID", gAgent.getID()); 260 msg->addUUID("AgentID", gAgent.getID());
261 msg->addUUID("SessionID", gAgent.getSessionID()); 261 msg->addUUID("SessionID", gAgent.getSessionID());
262 gAgent.sendReliableMessage(); 262 gAgent.sendReliableMessage();
263} 263}
264 264
265// static 265// static
266void LLFloaterRegionInfo::processEstateOwnerRequest(LLMessageSystem* msg,void**) 266void LLFloaterRegionInfo::processEstateOwnerRequest(LLMessageSystem* msg,void**)
267{ 267{
268 static LLDispatcher dispatch; 268 static LLDispatcher dispatch;
269 if(!findInstance()) 269 if(!findInstance())
270 { 270 {
271 return; 271 return;
272 } 272 }
273 273
274 if (!estate_dispatch_initialized) 274 if (!estate_dispatch_initialized)
275 { 275 {
276 LLPanelEstateInfo::initDispatch(dispatch); 276 LLPanelEstateInfo::initDispatch(dispatch);
277 } 277 }
278 278
279 LLTabContainer* tab = findInstance()->getChild<LLTabContainer>("region_panels"); 279 LLTabContainer* tab = findInstance()->getChild<LLTabContainer>("region_panels");
280 LLPanelEstateInfo* panel = (LLPanelEstateInfo*)tab->getChild<LLPanel>("Estate"); 280 LLPanelEstateInfo* panel = (LLPanelEstateInfo*)tab->getChild<LLPanel>("Estate");
281 281
282 // unpack the message 282 // unpack the message
283 std::string request; 283 std::string request;
284 LLUUID invoice; 284 LLUUID invoice;
285 LLDispatcher::sparam_t strings; 285 LLDispatcher::sparam_t strings;
286 LLDispatcher::unpackMessage(msg, request, invoice, strings); 286 LLDispatcher::unpackMessage(msg, request, invoice, strings);
287 if(invoice != getLastInvoice()) 287 if(invoice != getLastInvoice())
288 { 288 {
289 llwarns << "Mismatched Estate message: " << request << llendl; 289 llwarns << "Mismatched Estate message: " << request << llendl;
290 return; 290 return;
291 } 291 }
292 292
293 //dispatch the message 293 //dispatch the message
294 dispatch.dispatch(request, invoice, strings); 294 dispatch.dispatch(request, invoice, strings);
295 295
296 LLViewerRegion* region = gAgent.getRegion(); 296 LLViewerRegion* region = gAgent.getRegion();
297 panel->updateControls(region); 297 panel->updateControls(region);
298} 298}
299 299
300 300
301// static 301// static
302void LLFloaterRegionInfo::processRegionInfo(LLMessageSystem* msg) 302void LLFloaterRegionInfo::processRegionInfo(LLMessageSystem* msg)
303{ 303{
304 LLPanel* panel; 304 LLPanel* panel;
305 305
306 llinfos << "LLFloaterRegionInfo::processRegionInfo" << llendl; 306 llinfos << "LLFloaterRegionInfo::processRegionInfo" << llendl;
307 if(!findInstance()) 307 if(!findInstance())
308 { 308 {
309 return; 309 return;
310 } 310 }
311 311
312 LLTabContainer* tab = findInstance()->getChild<LLTabContainer>("region_panels"); 312 LLTabContainer* tab = findInstance()->getChild<LLTabContainer>("region_panels");
313 313
314 LLViewerRegion* region = gAgent.getRegion(); 314 LLViewerRegion* region = gAgent.getRegion();
315 BOOL allow_modify = gAgent.isGodlike() || (region && region->canManageEstate()); 315 BOOL allow_modify = gAgent.isGodlike() || (region && region->canManageEstate());
316 316
317 // extract message 317 // extract message
318 std::string sim_name; 318 std::string sim_name;
319 std::string sim_type = LLTrans::getString("land_type_unknown"); 319 std::string sim_type = LLTrans::getString("land_type_unknown");
320 U32 region_flags; 320 U32 region_flags;
321 U8 agent_limit; 321 U8 agent_limit;
322 F32 object_bonus_factor; 322 F32 object_bonus_factor;
323 U8 sim_access; 323 U8 sim_access;
324 F32 water_height; 324 F32 water_height;
325 F32 terrain_raise_limit; 325 F32 terrain_raise_limit;
326 F32 terrain_lower_limit; 326 F32 terrain_lower_limit;
327 BOOL use_estate_sun; 327 BOOL use_estate_sun;
328 F32 sun_hour; 328 F32 sun_hour;
329 msg->getString("RegionInfo", "SimName", sim_name); 329 msg->getString("RegionInfo", "SimName", sim_name);
330 msg->getU32("RegionInfo", "RegionFlags", region_flags); 330 msg->getU32("RegionInfo", "RegionFlags", region_flags);
331 msg->getU8("RegionInfo", "MaxAgents", agent_limit); 331 msg->getU8("RegionInfo", "MaxAgents", agent_limit);
332 msg->getF32("RegionInfo", "ObjectBonusFactor", object_bonus_factor); 332 msg->getF32("RegionInfo", "ObjectBonusFactor", object_bonus_factor);
333 msg->getU8("RegionInfo", "SimAccess", sim_access); 333 msg->getU8("RegionInfo", "SimAccess", sim_access);
334 msg->getF32Fast(_PREHASH_RegionInfo, _PREHASH_WaterHeight, water_height); 334 msg->getF32Fast(_PREHASH_RegionInfo, _PREHASH_WaterHeight, water_height);
335 msg->getF32Fast(_PREHASH_RegionInfo, _PREHASH_TerrainRaiseLimit, terrain_raise_limit); 335 msg->getF32Fast(_PREHASH_RegionInfo, _PREHASH_TerrainRaiseLimit, terrain_raise_limit);
336 msg->getF32Fast(_PREHASH_RegionInfo, _PREHASH_TerrainLowerLimit, terrain_lower_limit); 336 msg->getF32Fast(_PREHASH_RegionInfo, _PREHASH_TerrainLowerLimit, terrain_lower_limit);
337 msg->getBOOL("RegionInfo", "UseEstateSun", use_estate_sun); 337 msg->getBOOL("RegionInfo", "UseEstateSun", use_estate_sun);
338 // actually the "last set" sun hour, not the current sun hour. JC 338 // actually the "last set" sun hour, not the current sun hour. JC
339 msg->getF32("RegionInfo", "SunHour", sun_hour); 339 msg->getF32("RegionInfo", "SunHour", sun_hour);
340 // the only reasonable way to decide if we actually have any data is to 340 // the only reasonable way to decide if we actually have any data is to
341 // check to see if any of these fields have nonzero sizes 341 // check to see if any of these fields have nonzero sizes
342 if (msg->getSize("RegionInfo2", "ProductSKU") > 0 || 342 if (msg->getSize("RegionInfo2", "ProductSKU") > 0 ||
343 msg->getSize("RegionInfo2", "ProductName") > 0) 343 msg->getSize("RegionInfo2", "ProductName") > 0)
344 { 344 {
345 msg->getString("RegionInfo2", "ProductName", sim_type); 345 msg->getString("RegionInfo2", "ProductName", sim_type);
346 } 346 }
347 347
348 // GENERAL PANEL 348 // GENERAL PANEL
349 panel = tab->getChild<LLPanel>("General"); 349 panel = tab->getChild<LLPanel>("General");
350 panel->childSetValue("region_text", LLSD(sim_name)); 350 panel->childSetValue("region_text", LLSD(sim_name));
351 panel->childSetValue("region_type", LLSD(sim_type)); 351 panel->childSetValue("region_type", LLSD(sim_type));
352 panel->childSetValue("version_channel_text", gLastVersionChannel); 352 panel->childSetValue("version_channel_text", gLastVersionChannel);
353 353
354 panel->childSetValue("block_terraform_check", (region_flags & REGION_FLAGS_BLOCK_TERRAFORM) ? TRUE : FALSE ); 354 panel->childSetValue("block_terraform_check", (region_flags & REGION_FLAGS_BLOCK_TERRAFORM) ? TRUE : FALSE );
355 panel->childSetValue("block_fly_check", (region_flags & REGION_FLAGS_BLOCK_FLY) ? TRUE : FALSE ); 355 panel->childSetValue("block_fly_check", (region_flags & REGION_FLAGS_BLOCK_FLY) ? TRUE : FALSE );
356 panel->childSetValue("allow_damage_check", (region_flags & REGION_FLAGS_ALLOW_DAMAGE) ? TRUE : FALSE ); 356 panel->childSetValue("allow_damage_check", (region_flags & REGION_FLAGS_ALLOW_DAMAGE) ? TRUE : FALSE );
357 panel->childSetValue("restrict_pushobject", (region_flags & REGION_FLAGS_RESTRICT_PUSHOBJECT) ? TRUE : FALSE ); 357 panel->childSetValue("restrict_pushobject", (region_flags & REGION_FLAGS_RESTRICT_PUSHOBJECT) ? TRUE : FALSE );
358 panel->childSetValue("allow_land_resell_check", (region_flags & REGION_FLAGS_BLOCK_LAND_RESELL) ? FALSE : TRUE ); 358 panel->childSetValue("allow_land_resell_check", (region_flags & REGION_FLAGS_BLOCK_LAND_RESELL) ? FALSE : TRUE );
359 panel->childSetValue("allow_parcel_changes_check", (region_flags & REGION_FLAGS_ALLOW_PARCEL_CHANGES) ? TRUE : FALSE ); 359 panel->childSetValue("allow_parcel_changes_check", (region_flags & REGION_FLAGS_ALLOW_PARCEL_CHANGES) ? TRUE : FALSE );
360 panel->childSetValue("block_parcel_search_check", (region_flags & REGION_FLAGS_BLOCK_PARCEL_SEARCH) ? TRUE : FALSE ); 360 panel->childSetValue("block_parcel_search_check", (region_flags & REGION_FLAGS_BLOCK_PARCEL_SEARCH) ? TRUE : FALSE );
361 panel->childSetValue("agent_limit_spin", LLSD((F32)agent_limit) ); 361 panel->childSetValue("agent_limit_spin", LLSD((F32)agent_limit) );
362 panel->childSetValue("object_bonus_spin", LLSD(object_bonus_factor) ); 362 panel->childSetValue("object_bonus_spin", LLSD(object_bonus_factor) );
363 panel->childSetValue("access_combo", LLSD(sim_access) ); 363 panel->childSetValue("access_combo", LLSD(sim_access) );
364 364
365 panel->childSetEnabled("access_combo", gAgent.isGodlike() || (region && region->canManageEstate() )); 365
366 panel->setCtrlsEnabled(allow_modify); 366 // detect teen grid for maturity
367 367
368 // RegionSettings PANEL 368 U32 parent_estate_id;
369 panel = tab->getChild<LLPanel>("RegionSettings"); 369 msg->getU32("RegionInfo", "ParentEstateID", parent_estate_id);
370 panel->setCtrlsEnabled(allow_modify); 370 BOOL teen_grid = (parent_estate_id == 5); // *TODO add field to estate table and test that
371 371 panel->childSetEnabled("access_combo", gAgent.isGodlike() || (region && region->canManageEstate() && !teen_grid));
372 // DEBUG PANEL 372 panel->setCtrlsEnabled(allow_modify);
373 panel = tab->getChild<LLPanel>("Debug"); 373
374 374 // RegionSettings PANEL
375 panel->childSetValue("region_text", LLSD(sim_name) ); 375 panel = tab->getChild<LLPanel>("RegionSettings");
376 panel->childSetValue("disable_scripts_check", LLSD((BOOL)(region_flags & REGION_FLAGS_SKIP_SCRIPTS)) ); 376 panel->setCtrlsEnabled(allow_modify);
377 panel->childSetValue("disable_collisions_check", LLSD((BOOL)(region_flags & REGION_FLAGS_SKIP_COLLISIONS)) ); 377
378 panel->childSetValue("disable_physics_check", LLSD((BOOL)(region_flags & REGION_FLAGS_SKIP_PHYSICS)) ); 378 // DEBUG PANEL
379 panel->setCtrlsEnabled(allow_modify); 379 panel = tab->getChild<LLPanel>("Debug");
380 380
381 // TERRAIN PANEL 381 panel->childSetValue("region_text", LLSD(sim_name) );
382 panel = tab->getChild<LLPanel>("Terrain"); 382 panel->childSetValue("disable_scripts_check", LLSD((BOOL)(region_flags & REGION_FLAGS_SKIP_SCRIPTS)) );
383 383 panel->childSetValue("disable_collisions_check", LLSD((BOOL)(region_flags & REGION_FLAGS_SKIP_COLLISIONS)) );
384 panel->childSetValue("region_text", LLSD(sim_name)); 384 panel->childSetValue("disable_physics_check", LLSD((BOOL)(region_flags & REGION_FLAGS_SKIP_PHYSICS)) );
385 panel->childSetValue("water_height_spin", LLSD(water_height)); 385 panel->setCtrlsEnabled(allow_modify);
386 panel->childSetValue("terrain_raise_spin", LLSD(terrain_raise_limit)); 386
387 panel->childSetValue("terrain_lower_spin", LLSD(terrain_lower_limit)); 387 // TERRAIN PANEL
388 panel->childSetValue("use_estate_sun_check", LLSD(use_estate_sun)); 388 panel = tab->getChild<LLPanel>("Terrain");
389 389
390 panel->childSetValue("fixed_sun_check", LLSD((BOOL)(region_flags & REGION_FLAGS_SUN_FIXED))); 390 panel->childSetValue("region_text", LLSD(sim_name));
391 panel->childSetEnabled("fixed_sun_check", allow_modify && !use_estate_sun); 391 panel->childSetValue("water_height_spin", LLSD(water_height));
392 panel->childSetValue("sun_hour_slider", LLSD(sun_hour)); 392 panel->childSetValue("terrain_raise_spin", LLSD(terrain_raise_limit));
393 panel->childSetEnabled("sun_hour_slider", allow_modify && !use_estate_sun); 393 panel->childSetValue("terrain_lower_spin", LLSD(terrain_lower_limit));
394 panel->setCtrlsEnabled(allow_modify); 394 panel->childSetValue("use_estate_sun_check", LLSD(use_estate_sun));
395 395
396 getInstance()->refreshFromRegion( gAgent.getRegion() ); 396 panel->childSetValue("fixed_sun_check", LLSD((BOOL)(region_flags & REGION_FLAGS_SUN_FIXED)));
397} 397 panel->childSetEnabled("fixed_sun_check", allow_modify && !use_estate_sun);
398 398 panel->childSetValue("sun_hour_slider", LLSD(sun_hour));
399// static 399 panel->childSetEnabled("sun_hour_slider", allow_modify && !use_estate_sun);
400LLPanelEstateInfo* LLFloaterRegionInfo::getPanelEstate() 400 panel->setCtrlsEnabled(allow_modify);
401{ 401
402 LLFloaterRegionInfo* floater = LLFloaterRegionInfo::getInstance(); 402 getInstance()->refreshFromRegion( gAgent.getRegion() );
403 if (!floater) return NULL; 403}
404 LLTabContainer* tab = floater->getChild<LLTabContainer>("region_panels"); 404
405 LLPanelEstateInfo* panel = (LLPanelEstateInfo*)tab->getChild<LLPanel>("Estate"); 405// static
406 return panel; 406LLPanelEstateInfo* LLFloaterRegionInfo::getPanelEstate()
407} 407{
408 408 LLFloaterRegionInfo* floater = LLFloaterRegionInfo::getInstance();
409// static 409 if (!floater) return NULL;
410LLPanelEstateCovenant* LLFloaterRegionInfo::getPanelCovenant() 410 LLTabContainer* tab = floater->getChild<LLTabContainer>("region_panels");
411{ 411 LLPanelEstateInfo* panel = (LLPanelEstateInfo*)tab->getChild<LLPanel>("Estate");
412 LLFloaterRegionInfo* floater = LLFloaterRegionInfo::getInstance(); 412 return panel;
413 if (!floater) return NULL; 413}
414 LLTabContainer* tab = floater->getChild<LLTabContainer>("region_panels"); 414
415 LLPanelEstateCovenant* panel = (LLPanelEstateCovenant*)tab->getChild<LLPanel>("Covenant"); 415// static
416 return panel; 416LLPanelEstateCovenant* LLFloaterRegionInfo::getPanelCovenant()
417} 417{
418 418 LLFloaterRegionInfo* floater = LLFloaterRegionInfo::getInstance();
419// static 419 if (!floater) return NULL;
420LLPanelRegionOpenSettingsInfo* LLFloaterRegionInfo::getPanelOpenSettings() 420 LLTabContainer* tab = floater->getChild<LLTabContainer>("region_panels");
421{ 421 LLPanelEstateCovenant* panel = (LLPanelEstateCovenant*)tab->getChild<LLPanel>("Covenant");
422 LLFloaterRegionInfo* floater = LLFloaterRegionInfo::getInstance(); 422 return panel;
423 if (floater) 423}
424 { 424
425 LLTabContainer* tab = floater->getChild<LLTabContainer>("region_panels"); 425// static
426 LLPanelRegionOpenSettingsInfo* panel = (LLPanelRegionOpenSettingsInfo*)tab->getChild<LLPanel>("RegionSettings", FALSE, FALSE); 426LLPanelRegionOpenSettingsInfo* LLFloaterRegionInfo::getPanelOpenSettings()
427 if (panel) 427{
428 { 428 LLFloaterRegionInfo* floater = LLFloaterRegionInfo::getInstance();
429 return panel; 429 if (floater)
430 } 430 {
431 } 431 LLTabContainer* tab = floater->getChild<LLTabContainer>("region_panels");
432 return NULL; 432 LLPanelRegionOpenSettingsInfo* panel = (LLPanelRegionOpenSettingsInfo*)tab->getChild<LLPanel>("RegionSettings", FALSE, FALSE);
433} 433 if (panel)
434 434 {
435void LLFloaterRegionInfo::refreshFromRegion(LLViewerRegion* region) 435 return panel;
436{ 436 }
437 // call refresh from region on all panels 437 }
438 std::for_each( 438 return NULL;
439 mInfoPanels.begin(), 439}
440 mInfoPanels.end(), 440
441 llbind2nd( 441void LLFloaterRegionInfo::refreshFromRegion(LLViewerRegion* region)
442#if LL_WINDOWS 442{
443 std::mem_fun1(&LLPanelRegionInfo::refreshFromRegion), 443 // call refresh from region on all panels
444#else 444 std::for_each(
445 std::mem_fun(&LLPanelRegionInfo::refreshFromRegion), 445 mInfoPanels.begin(),
446#endif 446 mInfoPanels.end(),
447 region)); 447 llbind2nd(
448} 448#if LL_WINDOWS
449 449 std::mem_fun1(&LLPanelRegionInfo::refreshFromRegion),
450// public 450#else
451void LLFloaterRegionInfo::refresh() 451 std::mem_fun(&LLPanelRegionInfo::refreshFromRegion),
452{ 452#endif
453 for(info_panels_t::iterator iter = mInfoPanels.begin(); 453 region));
454 iter != mInfoPanels.end(); ++iter) 454}
455 { 455
456 (*iter)->refresh(); 456// public
457 } 457void LLFloaterRegionInfo::refresh()
458} 458{
459 459 for(info_panels_t::iterator iter = mInfoPanels.begin();
460 460 iter != mInfoPanels.end(); ++iter)
461///---------------------------------------------------------------------------- 461 {
462/// Local class implementation 462 (*iter)->refresh();
463///---------------------------------------------------------------------------- 463 }
464 464}
465// 465
466// LLPanelRegionInfo 466
467// 467///----------------------------------------------------------------------------
468 468/// Local class implementation
469// static 469///----------------------------------------------------------------------------
470void LLPanelRegionInfo::onBtnSet(void* user_data) 470
471{ 471//
472 LLPanelRegionInfo* panel = (LLPanelRegionInfo*)user_data; 472// LLPanelRegionInfo
473 if(!panel) return; 473//
474 if (panel->sendUpdate()) 474
475 { 475// static
476 panel->disableButton("apply_btn"); 476void LLPanelRegionInfo::onBtnSet(void* user_data)
477 } 477{
478} 478 LLPanelRegionInfo* panel = (LLPanelRegionInfo*)user_data;
479 479 if(!panel) return;
480//static 480 if (panel->sendUpdate())
481void LLPanelRegionInfo::onChangeChildCtrl(LLUICtrl* ctrl, void* user_data) 481 {
482{ 482 panel->disableButton("apply_btn");
483 if (ctrl) 483 }
484 { 484}
485 LLPanelRegionInfo* panel = (LLPanelRegionInfo*) ctrl->getParent(); 485
486 panel->updateChild(ctrl); 486//static
487 } 487void LLPanelRegionInfo::onChangeChildCtrl(LLUICtrl* ctrl, void* user_data)
488} 488{
489 489 if (ctrl)
490// static 490 {
491// Enables the "set" button if it is not already enabled 491 LLPanelRegionInfo* panel = (LLPanelRegionInfo*) ctrl->getParent();
492void LLPanelRegionInfo::onChangeAnything(LLUICtrl* ctrl, void* user_data) 492 panel->updateChild(ctrl);
493{ 493 }
494 LLPanelRegionInfo* panel = (LLPanelRegionInfo*)user_data; 494}
495 if(panel) 495
496 { 496// static
497 panel->enableButton("apply_btn"); 497// Enables the "set" button if it is not already enabled
498 panel->refresh(); 498void LLPanelRegionInfo::onChangeAnything(LLUICtrl* ctrl, void* user_data)
499 } 499{
500} 500 LLPanelRegionInfo* panel = (LLPanelRegionInfo*)user_data;
501 501 if(panel)
502// static 502 {
503// Enables set button on change to line editor 503 panel->enableButton("apply_btn");
504void LLPanelRegionInfo::onChangeText(LLLineEditor* caller, void* user_data) 504 panel->refresh();
505{ 505 }
506 // reuse the previous method 506}
507 onChangeAnything(0, user_data); 507
508} 508// static
509 509// Enables set button on change to line editor
510 510void LLPanelRegionInfo::onChangeText(LLLineEditor* caller, void* user_data)
511// virtual 511{
512BOOL LLPanelRegionInfo::postBuild() 512 // reuse the previous method
513{ 513 onChangeAnything(0, user_data);
514 childSetAction("apply_btn", onBtnSet, this); 514}
515 childDisable("apply_btn"); 515
516 refresh(); 516
517 return TRUE; 517// virtual
518} 518BOOL LLPanelRegionInfo::postBuild()
519 519{
520// virtual 520 childSetAction("apply_btn", onBtnSet, this);
521void LLPanelRegionInfo::updateChild(LLUICtrl* child_ctr) 521 childDisable("apply_btn");
522{ 522 refresh();
523} 523 return TRUE;
524 524}
525// virtual 525
526bool LLPanelRegionInfo::refreshFromRegion(LLViewerRegion* region) 526// virtual
527{ 527void LLPanelRegionInfo::updateChild(LLUICtrl* child_ctr)
528 if (region) mHost = region->getHost(); 528{
529 return true; 529}
530} 530
531 531// virtual
532void LLPanelRegionInfo::sendEstateOwnerMessage( 532bool LLPanelRegionInfo::refreshFromRegion(LLViewerRegion* region)
533 LLMessageSystem* msg, 533{
534 const std::string& request, 534 if (region) mHost = region->getHost();
535 const LLUUID& invoice, 535 return true;
536 const strings_t& strings) 536}
537{ 537
538 llinfos << "Sending estate request '" << request << "'" << llendl; 538void LLPanelRegionInfo::sendEstateOwnerMessage(
539 msg->newMessage("EstateOwnerMessage"); 539 LLMessageSystem* msg,
540 msg->nextBlockFast(_PREHASH_AgentData); 540 const std::string& request,
541 msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); 541 const LLUUID& invoice,
542 msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); 542 const strings_t& strings)
543 msg->addUUIDFast(_PREHASH_TransactionID, LLUUID::null); //not used 543{
544 msg->nextBlock("MethodData"); 544 llinfos << "Sending estate request '" << request << "'" << llendl;
545 msg->addString("Method", request); 545 msg->newMessage("EstateOwnerMessage");
546 msg->addUUID("Invoice", invoice); 546 msg->nextBlockFast(_PREHASH_AgentData);
547 if(strings.empty()) 547 msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
548 { 548 msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
549 msg->nextBlock("ParamList"); 549 msg->addUUIDFast(_PREHASH_TransactionID, LLUUID::null); //not used
550 msg->addString("Parameter", NULL); 550 msg->nextBlock("MethodData");
551 } 551 msg->addString("Method", request);
552 else 552 msg->addUUID("Invoice", invoice);
553 { 553 if(strings.empty())
554 strings_t::const_iterator it = strings.begin(); 554 {
555 strings_t::const_iterator end = strings.end(); 555 msg->nextBlock("ParamList");
556 for(; it != end; ++it) 556 msg->addString("Parameter", NULL);
557 { 557 }
558 msg->nextBlock("ParamList"); 558 else
559 msg->addString("Parameter", *it); 559 {
560 } 560 strings_t::const_iterator it = strings.begin();
561 } 561 strings_t::const_iterator end = strings.end();
562 msg->sendReliable(mHost); 562 for(; it != end; ++it)
563} 563 {
564 564 msg->nextBlock("ParamList");
565void LLPanelRegionInfo::enableButton(const std::string& btn_name, BOOL enable) 565 msg->addString("Parameter", *it);
566{ 566 }
567 childSetEnabled(btn_name, enable); 567 }
568} 568 msg->sendReliable(mHost);
569 569}
570void LLPanelRegionInfo::disableButton(const std::string& btn_name) 570
571{ 571void LLPanelRegionInfo::enableButton(const std::string& btn_name, BOOL enable)
572 childDisable(btn_name); 572{
573} 573 childSetEnabled(btn_name, enable);
574 574}
575void LLPanelRegionInfo::initCtrl(const std::string& name) 575
576{ 576void LLPanelRegionInfo::disableButton(const std::string& btn_name)
577 childSetCommitCallback(name, onChangeAnything, this); 577{
578} 578 childDisable(btn_name);
579 579}
580void LLPanelRegionInfo::initHelpBtn(const std::string& name, const std::string& xml_alert) 580
581{ 581void LLPanelRegionInfo::initCtrl(const std::string& name)
582 childSetAction(name, onClickHelp, new std::string(xml_alert)); 582{
583} 583 childSetCommitCallback(name, onChangeAnything, this);
584 584}
585// static 585
586void LLPanelRegionInfo::onClickHelp(void* data) 586void LLPanelRegionInfo::initHelpBtn(const std::string& name, const std::string& xml_alert)
587{ 587{
588 std::string* xml_alert = (std::string*)data; 588 childSetAction(name, onClickHelp, new std::string(xml_alert));
589 LLNotifications::instance().add(*xml_alert); 589}
590} 590
591 591// static
592///////////////////////////////////////////////////////////////////////////// 592void LLPanelRegionInfo::onClickHelp(void* data)
593// LLPanelRegionGeneralInfo 593{
594// 594 std::string* xml_alert = (std::string*)data;
595bool LLPanelRegionGeneralInfo::refreshFromRegion(LLViewerRegion* region) 595 LLNotifications::instance().add(*xml_alert);
596{ 596}
597 BOOL allow_modify = gAgent.isGodlike() || (region && region->canManageEstate()); 597
598 setCtrlsEnabled(allow_modify); 598/////////////////////////////////////////////////////////////////////////////
599 childDisable("apply_btn"); 599// LLPanelRegionGeneralInfo
600 childSetEnabled("access_text", allow_modify); 600//
601 // childSetEnabled("access_combo", allow_modify); 601bool LLPanelRegionGeneralInfo::refreshFromRegion(LLViewerRegion* region)
602 // now set in processRegionInfo for teen grid detection 602{
603 childSetEnabled("kick_btn", allow_modify); 603 BOOL allow_modify = gAgent.isGodlike() || (region && region->canManageEstate());
604 childSetEnabled("kick_all_btn", allow_modify); 604 setCtrlsEnabled(allow_modify);
605 childSetEnabled("im_btn", allow_modify); 605 childDisable("apply_btn");
606 childSetEnabled("manage_telehub_btn", allow_modify); 606 childSetEnabled("access_text", allow_modify);
607 607 // childSetEnabled("access_combo", allow_modify);
608 // Data gets filled in by processRegionInfo 608 // now set in processRegionInfo for teen grid detection
609 609 childSetEnabled("kick_btn", allow_modify);
610 return LLPanelRegionInfo::refreshFromRegion(region); 610 childSetEnabled("kick_all_btn", allow_modify);
611} 611 childSetEnabled("im_btn", allow_modify);
612 612 childSetEnabled("manage_telehub_btn", allow_modify);
613BOOL LLPanelRegionGeneralInfo::postBuild() 613
614{ 614 // Data gets filled in by processRegionInfo
615 // Enable the "Apply" button if something is changed. JC 615
616 initCtrl("block_terraform_check"); 616 return LLPanelRegionInfo::refreshFromRegion(region);
617 initCtrl("block_fly_check"); 617}
618 initCtrl("allow_damage_check"); 618
619 initCtrl("allow_land_resell_check"); 619BOOL LLPanelRegionGeneralInfo::postBuild()
620 initCtrl("allow_parcel_changes_check"); 620{
621 initCtrl("agent_limit_spin"); 621 // Enable the "Apply" button if something is changed. JC
622 initCtrl("object_bonus_spin"); 622 initCtrl("block_terraform_check");
623 initCtrl("access_combo"); 623 initCtrl("block_fly_check");
624 initCtrl("restrict_pushobject"); 624 initCtrl("allow_damage_check");
625 initCtrl("block_parcel_search_check"); 625 initCtrl("allow_land_resell_check");
626 initCtrl("minimum_agent_age"); 626 initCtrl("allow_parcel_changes_check");
627 627 initCtrl("agent_limit_spin");
628 initHelpBtn("terraform_help", "HelpRegionBlockTerraform"); 628 initCtrl("object_bonus_spin");
629 initHelpBtn("fly_help", "HelpRegionBlockFly"); 629 initCtrl("access_combo");
630 initHelpBtn("damage_help", "HelpRegionAllowDamage"); 630 initCtrl("restrict_pushobject");
631 initHelpBtn("agent_limit_help", "HelpRegionAgentLimit"); 631 initCtrl("block_parcel_search_check");
632 initHelpBtn("object_bonus_help", "HelpRegionObjectBonus"); 632 initCtrl("minimum_agent_age");
633 initHelpBtn("access_help", "HelpRegionMaturity"); 633
634 initHelpBtn("restrict_pushobject_help", "HelpRegionRestrictPushObject"); 634 initHelpBtn("terraform_help", "HelpRegionBlockTerraform");
635 initHelpBtn("land_resell_help", "HelpRegionLandResell"); 635 initHelpBtn("fly_help", "HelpRegionBlockFly");
636 initHelpBtn("parcel_changes_help", "HelpParcelChanges"); 636 initHelpBtn("damage_help", "HelpRegionAllowDamage");
637 initHelpBtn("parcel_search_help", "HelpRegionSearch"); 637 initHelpBtn("agent_limit_help", "HelpRegionAgentLimit");
638 638 initHelpBtn("object_bonus_help", "HelpRegionObjectBonus");
639 childSetAction("kick_btn", onClickKick, this); 639 initHelpBtn("access_help", "HelpRegionMaturity");
640 childSetAction("kick_all_btn", onClickKickAll, this); 640 initHelpBtn("restrict_pushobject_help", "HelpRegionRestrictPushObject");
641 childSetAction("im_btn", onClickMessage, this); 641 initHelpBtn("land_resell_help", "HelpRegionLandResell");
642 childSetAction("manage_telehub_btn", onClickManageTelehub, this); 642 initHelpBtn("parcel_changes_help", "HelpParcelChanges");
643 643 initHelpBtn("parcel_search_help", "HelpRegionSearch");
644 return LLPanelRegionInfo::postBuild(); 644
645} 645 childSetAction("kick_btn", onClickKick, this);
646 646 childSetAction("kick_all_btn", onClickKickAll, this);
647// static 647 childSetAction("im_btn", onClickMessage, this);
648void LLPanelRegionGeneralInfo::onClickKick(void* userdata) 648 childSetAction("manage_telehub_btn", onClickManageTelehub, this);
649{ 649
650 llinfos << "LLPanelRegionGeneralInfo::onClickKick" << llendl; 650 return LLPanelRegionInfo::postBuild();
651 LLPanelRegionGeneralInfo* panelp = (LLPanelRegionGeneralInfo*)userdata; 651}
652 652
653 // this depends on the grandparent view being a floater 653// static
654 // in order to set up floater dependency 654void LLPanelRegionGeneralInfo::onClickKick(void* userdata)
655 LLFloater* parent_floater = gFloaterView->getParentFloater(panelp); 655{
656 LLFloater* child_floater = LLFloaterAvatarPicker::show(onKickCommit, userdata, FALSE, TRUE); 656 llinfos << "LLPanelRegionGeneralInfo::onClickKick" << llendl;
657 parent_floater->addDependentFloater(child_floater); 657 LLPanelRegionGeneralInfo* panelp = (LLPanelRegionGeneralInfo*)userdata;
658} 658
659 659 // this depends on the grandparent view being a floater
660// static 660 // in order to set up floater dependency
661void LLPanelRegionGeneralInfo::onKickCommit(const std::vector<std::string>& names, const std::vector<LLUUID>& ids, void* userdata) 661 LLFloater* parent_floater = gFloaterView->getParentFloater(panelp);
662{ 662 LLFloater* child_floater = LLFloaterAvatarPicker::show(onKickCommit, userdata, FALSE, TRUE);
663 if (names.empty() || ids.empty()) return; 663 parent_floater->addDependentFloater(child_floater);
664 if(ids[0].notNull()) 664}
665 { 665
666 LLPanelRegionGeneralInfo* self = (LLPanelRegionGeneralInfo*)userdata; 666// static
667 if(!self) return; 667void LLPanelRegionGeneralInfo::onKickCommit(const std::vector<std::string>& names, const std::vector<LLUUID>& ids, void* userdata)
668 strings_t strings; 668{
669 // [0] = our agent id 669 if (names.empty() || ids.empty()) return;
670 // [1] = target agent id 670 if(ids[0].notNull())
671 std::string buffer; 671 {
672 gAgent.getID().toString(buffer); 672 LLPanelRegionGeneralInfo* self = (LLPanelRegionGeneralInfo*)userdata;
673 strings.push_back(buffer); 673 if(!self) return;
674 674 strings_t strings;
675 ids[0].toString(buffer); 675 // [0] = our agent id
676 strings.push_back(strings_t::value_type(buffer)); 676 // [1] = target agent id
677 677 std::string buffer;
678 LLUUID invoice(LLFloaterRegionInfo::getLastInvoice()); 678 gAgent.getID().toString(buffer);
679 self->sendEstateOwnerMessage(gMessageSystem, "teleporthomeuser", invoice, strings); 679 strings.push_back(buffer);
680 } 680
681} 681 ids[0].toString(buffer);
682 682 strings.push_back(strings_t::value_type(buffer));
683// static 683
684void LLPanelRegionGeneralInfo::onClickKickAll(void* userdata) 684 LLUUID invoice(LLFloaterRegionInfo::getLastInvoice());
685{ 685 self->sendEstateOwnerMessage(gMessageSystem, "teleporthomeuser", invoice, strings);
686 llinfos << "LLPanelRegionGeneralInfo::onClickKickAll" << llendl; 686 }
687 LLNotifications::instance().add("KickUsersFromRegion", 687}
688 LLSD(), 688
689 LLSD(), 689// static
690 boost::bind(&LLPanelRegionGeneralInfo::onKickAllCommit, (LLPanelRegionGeneralInfo*)userdata, _1, _2)); 690void LLPanelRegionGeneralInfo::onClickKickAll(void* userdata)
691} 691{
692 692 llinfos << "LLPanelRegionGeneralInfo::onClickKickAll" << llendl;
693bool LLPanelRegionGeneralInfo::onKickAllCommit(const LLSD& notification, const LLSD& response) 693 LLNotifications::instance().add("KickUsersFromRegion",
694{ 694 LLSD(),
695 S32 option = LLNotification::getSelectedOption(notification, response); 695 LLSD(),
696 if (option == 0) 696 boost::bind(&LLPanelRegionGeneralInfo::onKickAllCommit, (LLPanelRegionGeneralInfo*)userdata, _1, _2));
697 { 697}
698 strings_t strings; 698
699 // [0] = our agent id 699bool LLPanelRegionGeneralInfo::onKickAllCommit(const LLSD& notification, const LLSD& response)
700 std::string buffer; 700{
701 gAgent.getID().toString(buffer); 701 S32 option = LLNotification::getSelectedOption(notification, response);
702 strings.push_back(buffer); 702 if (option == 0)
703 703 {
704 LLUUID invoice(LLFloaterRegionInfo::getLastInvoice()); 704 strings_t strings;
705 // historical message name 705 // [0] = our agent id
706 sendEstateOwnerMessage(gMessageSystem, "teleporthomeallusers", invoice, strings); 706 std::string buffer;
707 } 707 gAgent.getID().toString(buffer);
708 return false; 708 strings.push_back(buffer);
709} 709
710 710 LLUUID invoice(LLFloaterRegionInfo::getLastInvoice());
711// static 711 // historical message name
712void LLPanelRegionGeneralInfo::onClickMessage(void* userdata) 712 sendEstateOwnerMessage(gMessageSystem, "teleporthomeallusers", invoice, strings);
713{ 713 }
714 llinfos << "LLPanelRegionGeneralInfo::onClickMessage" << llendl; 714 return false;
715 LLNotifications::instance().add("MessageRegion", 715}
716 LLSD(), 716
717 LLSD(), 717// static
718 boost::bind(&LLPanelRegionGeneralInfo::onMessageCommit, (LLPanelRegionGeneralInfo*)userdata, _1, _2)); 718void LLPanelRegionGeneralInfo::onClickMessage(void* userdata)
719} 719{
720 720 llinfos << "LLPanelRegionGeneralInfo::onClickMessage" << llendl;
721// static 721 LLNotifications::instance().add("MessageRegion",
722bool LLPanelRegionGeneralInfo::onMessageCommit(const LLSD& notification, const LLSD& response) 722 LLSD(),
723{ 723 LLSD(),
724 if(LLNotification::getSelectedOption(notification, response) != 0) return false; 724 boost::bind(&LLPanelRegionGeneralInfo::onMessageCommit, (LLPanelRegionGeneralInfo*)userdata, _1, _2));
725 725}
726 std::string text = response["message"].asString(); 726
727 if (text.empty()) return false; 727// static
728 728bool LLPanelRegionGeneralInfo::onMessageCommit(const LLSD& notification, const LLSD& response)
729 llinfos << "Message to everyone: " << text << llendl; 729{
730 strings_t strings; 730 if(LLNotification::getSelectedOption(notification, response) != 0) return false;
731 // [0] grid_x, unused here 731
732 // [1] grid_y, unused here 732 std::string text = response["message"].asString();
733 // [2] agent_id of sender 733 if (text.empty()) return false;
734 // [3] sender name 734
735 // [4] message 735 llinfos << "Message to everyone: " << text << llendl;
736 strings.push_back("-1"); 736 strings_t strings;
737 strings.push_back("-1"); 737 // [0] grid_x, unused here
738 std::string buffer; 738 // [1] grid_y, unused here
739 gAgent.getID().toString(buffer); 739 // [2] agent_id of sender
740 strings.push_back(buffer); 740 // [3] sender name
741 std::string name; 741 // [4] message
742 gAgent.buildFullname(name); 742 strings.push_back("-1");
743 strings.push_back(strings_t::value_type(name)); 743 strings.push_back("-1");
744 strings.push_back(strings_t::value_type(text)); 744 std::string buffer;
745 LLUUID invoice(LLFloaterRegionInfo::getLastInvoice()); 745 gAgent.getID().toString(buffer);
746 sendEstateOwnerMessage(gMessageSystem, "simulatormessage", invoice, strings); 746 strings.push_back(buffer);
747 return false; 747 std::string name;
748} 748 gAgent.buildFullname(name);
749 749 strings.push_back(strings_t::value_type(name));
750// static 750 strings.push_back(strings_t::value_type(text));
751void LLPanelRegionGeneralInfo::onClickManageTelehub(void* data) 751 LLUUID invoice(LLFloaterRegionInfo::getLastInvoice());
752{ 752 sendEstateOwnerMessage(gMessageSystem, "simulatormessage", invoice, strings);
753 LLFloaterRegionInfo::getInstance()->close(); 753 return false;
754 754}
755 LLFloaterTelehub::show(); 755
756} 756// static
757 757void LLPanelRegionGeneralInfo::onClickManageTelehub(void* data)
758// setregioninfo 758{
759// strings[0] = 'Y' - block terraform, 'N' - not 759 LLFloaterRegionInfo::getInstance()->close();
760// strings[1] = 'Y' - block fly, 'N' - not 760
761// strings[2] = 'Y' - allow damage, 'N' - not 761 LLFloaterTelehub::show();
762// strings[3] = 'Y' - allow land sale, 'N' - not 762}
763// strings[4] = agent limit 763
764// strings[5] = object bonus 764// setregioninfo
765// strings[6] = sim access (0 = unknown, 13 = PG, 21 = Mature, 42 = Adult) 765// strings[0] = 'Y' - block terraform, 'N' - not
766// strings[7] = restrict pushobject 766// strings[1] = 'Y' - block fly, 'N' - not
767// strings[8] = 'Y' - allow parcel subdivide, 'N' - not 767// strings[2] = 'Y' - allow damage, 'N' - not
768// strings[9] = 'Y' - block parcel search, 'N' - allow 768// strings[3] = 'Y' - allow land sale, 'N' - not
769BOOL LLPanelRegionGeneralInfo::sendUpdate() 769// strings[4] = agent limit
770{ 770// strings[5] = object bonus
771 llinfos << "LLPanelRegionGeneralInfo::sendUpdate()" << llendl; 771// strings[6] = sim access (0 = unknown, 13 = PG, 21 = Mature, 42 = Adult)
772 772// strings[7] = restrict pushobject
773 // First try using a Cap. If that fails use the old method. 773// strings[8] = 'Y' - allow parcel subdivide, 'N' - not
774 LLSD body; 774// strings[9] = 'Y' - block parcel search, 'N' - allow
775 std::string url = gAgent.getRegion()->getCapability("DispatchRegionInfo"); 775BOOL LLPanelRegionGeneralInfo::sendUpdate()
776 if (!url.empty()) 776{
777 { 777 llinfos << "LLPanelRegionGeneralInfo::sendUpdate()" << llendl;
778 body["block_terraform"] = childGetValue("block_terraform_check"); 778
779 body["block_fly"] = childGetValue("block_fly_check"); 779 // First try using a Cap. If that fails use the old method.
780 body["allow_damage"] = childGetValue("allow_damage_check"); 780 LLSD body;
781 body["allow_land_resell"] = childGetValue("allow_land_resell_check"); 781 std::string url = gAgent.getRegion()->getCapability("DispatchRegionInfo");
782 body["agent_limit"] = childGetValue("agent_limit_spin"); 782 if (!url.empty())
783 body["prim_bonus"] = childGetValue("object_bonus_spin"); 783 {
784 body["sim_access"] = childGetValue("access_combo"); 784 body["block_terraform"] = childGetValue("block_terraform_check");
785 body["restrict_pushobject"] = childGetValue("restrict_pushobject"); 785 body["block_fly"] = childGetValue("block_fly_check");
786 body["allow_parcel_changes"] = childGetValue("allow_parcel_changes_check"); 786 body["allow_damage"] = childGetValue("allow_damage_check");
787 body["block_parcel_search"] = childGetValue("block_parcel_search_check"); 787 body["allow_land_resell"] = childGetValue("allow_land_resell_check");
788 body["minimum_agent_age"] = childGetValue("minimum_agent_age"); 788 body["agent_limit"] = childGetValue("agent_limit_spin");
789 789 body["prim_bonus"] = childGetValue("object_bonus_spin");
790 LLHTTPClient::post(url, body, new LLHTTPClient::Responder()); 790 body["sim_access"] = childGetValue("access_combo");
791 } 791 body["restrict_pushobject"] = childGetValue("restrict_pushobject");
792 else 792 body["allow_parcel_changes"] = childGetValue("allow_parcel_changes_check");
793 { 793 body["block_parcel_search"] = childGetValue("block_parcel_search_check");
794 strings_t strings; 794 body["minimum_agent_age"] = childGetValue("minimum_agent_age");
795 std::string buffer; 795
796 796 LLHTTPClient::post(url, body, new LLHTTPClient::Responder());
797 buffer = llformat("%s", (childGetValue("block_terraform_check").asBoolean() ? "Y" : "N")); 797 }
798 strings.push_back(strings_t::value_type(buffer)); 798 else
799 799 {
800 buffer = llformat("%s", (childGetValue("block_fly_check").asBoolean() ? "Y" : "N")); 800 strings_t strings;
801 strings.push_back(strings_t::value_type(buffer)); 801 std::string buffer;
802 802
803 buffer = llformat("%s", (childGetValue("allow_damage_check").asBoolean() ? "Y" : "N")); 803 buffer = llformat("%s", (childGetValue("block_terraform_check").asBoolean() ? "Y" : "N"));
804 strings.push_back(strings_t::value_type(buffer)); 804 strings.push_back(strings_t::value_type(buffer));
805 805
806 buffer = llformat("%s", (childGetValue("allow_land_resell_check").asBoolean() ? "Y" : "N")); 806 buffer = llformat("%s", (childGetValue("block_fly_check").asBoolean() ? "Y" : "N"));
807 strings.push_back(strings_t::value_type(buffer)); 807 strings.push_back(strings_t::value_type(buffer));
808 808
809 F32 value = (F32)childGetValue("agent_limit_spin").asReal(); 809 buffer = llformat("%s", (childGetValue("allow_damage_check").asBoolean() ? "Y" : "N"));
810 buffer = llformat("%f", value); 810 strings.push_back(strings_t::value_type(buffer));
811 strings.push_back(strings_t::value_type(buffer)); 811
812 812 buffer = llformat("%s", (childGetValue("allow_land_resell_check").asBoolean() ? "Y" : "N"));
813 value = (F32)childGetValue("object_bonus_spin").asReal(); 813 strings.push_back(strings_t::value_type(buffer));
814 buffer = llformat("%f", value); 814
815 strings.push_back(strings_t::value_type(buffer)); 815 F32 value = (F32)childGetValue("agent_limit_spin").asReal();
816 816 buffer = llformat("%f", value);
817 buffer = llformat("%d", childGetValue("access_combo").asInteger()); 817 strings.push_back(strings_t::value_type(buffer));
818 strings.push_back(strings_t::value_type(buffer)); 818
819 819 value = (F32)childGetValue("object_bonus_spin").asReal();
820 buffer = llformat("%s", (childGetValue("restrict_pushobject").asBoolean() ? "Y" : "N")); 820 buffer = llformat("%f", value);
821 strings.push_back(strings_t::value_type(buffer)); 821 strings.push_back(strings_t::value_type(buffer));
822 822
823 buffer = llformat("%s", (childGetValue("allow_parcel_changes_check").asBoolean() ? "Y" : "N")); 823 buffer = llformat("%d", childGetValue("access_combo").asInteger());
824 strings.push_back(strings_t::value_type(buffer)); 824 strings.push_back(strings_t::value_type(buffer));
825 825
826 LLUUID invoice(LLFloaterRegionInfo::getLastInvoice()); 826 buffer = llformat("%s", (childGetValue("restrict_pushobject").asBoolean() ? "Y" : "N"));
827 sendEstateOwnerMessage(gMessageSystem, "setregioninfo", invoice, strings); 827 strings.push_back(strings_t::value_type(buffer));
828 } 828
829 829 buffer = llformat("%s", (childGetValue("allow_parcel_changes_check").asBoolean() ? "Y" : "N"));
830 // if we changed access levels, tell user about it 830 strings.push_back(strings_t::value_type(buffer));
831 LLViewerRegion* region = gAgent.getRegion(); 831
832 if (region && (childGetValue("access_combo").asInteger() != region->getSimAccess()) ) 832 LLUUID invoice(LLFloaterRegionInfo::getLastInvoice());
833 { 833 sendEstateOwnerMessage(gMessageSystem, "setregioninfo", invoice, strings);
834 LLNotifications::instance().add("RegionMaturityChange"); 834 }
835 } 835
836 836 // if we changed access levels, tell user about it
837 return TRUE; 837 LLViewerRegion* region = gAgent.getRegion();
838} 838 if (region && (childGetValue("access_combo").asInteger() != region->getSimAccess()) )
839 839 {
840///////////////////////////////////////////////////////////////////////////// 840 LLNotifications::instance().add("RegionMaturityChange");
841// LLPanelRegionOpenSettingsInfo 841 }
842// 842
843bool LLPanelRegionOpenSettingsInfo::refreshFromRegion(LLViewerRegion* region) 843 return TRUE;
844{ 844}
845 // Data gets filled in by hippo manager 845
846 BOOL allow_modify = gAgent.isGodlike() || (region && region->canManageEstate()); 846/////////////////////////////////////////////////////////////////////////////
847 847// LLPanelRegionOpenSettingsInfo
848 childSetValue("draw_distance", gAgent.mDrawDistance); 848//
849 childSetValue("force_draw_distance", gAgent.mLockedDrawDistance); 849bool LLPanelRegionOpenSettingsInfo::refreshFromRegion(LLViewerRegion* region)
850 childSetValue("allow_minimap", LLSD(gHippoLimits->mAllowMinimap)); 850{
851 childSetValue("allow_physical_prims", (gHippoLimits->mAllowPhysicalPrims == 1 ? TRUE : FALSE)); 851 // Data gets filled in by hippo manager
852 childSetValue("max_drag_distance", LLSD(gHippoLimits->mMaxDragDistance)); 852 BOOL allow_modify = gAgent.isGodlike() || (region && region->canManageEstate());
853 childSetValue("min_hole_size", LLSD(gHippoLimits->mMinHoleSize)); 853
854 childSetValue("max_hollow_size", LLSD(gHippoLimits->mMaxHollow)); 854 childSetValue("draw_distance", gAgent.mDrawDistance);
855 childSetValue("max_inventory_items_transfer", LLSD(gHippoLimits->mMaxInventoryItemsTransfer)); 855 childSetValue("force_draw_distance", gAgent.mLockedDrawDistance);
856 childSetValue("max_link_count", LLSD(gHippoLimits->mMaxLinkedPrims)); 856 childSetValue("allow_minimap", LLSD(gHippoLimits->mAllowMinimap));
857 childSetValue("max_link_count_phys", LLSD(gHippoLimits->mMaxPhysLinkedPrims)); 857 childSetValue("allow_physical_prims", (gHippoLimits->mAllowPhysicalPrims == 1 ? TRUE : FALSE));
858 childSetValue("max_phys_prim_scale", LLSD(gHippoLimits->mMaxPrimScale));//Todo:Fix 858 childSetValue("max_drag_distance", LLSD(gHippoLimits->mMaxDragDistance));
859 childSetValue("max_prim_scale", LLSD(gHippoLimits->mMaxPrimScale)); 859 childSetValue("min_hole_size", LLSD(gHippoLimits->mMinHoleSize));
860 childSetValue("min_prim_scale", LLSD(gHippoLimits->mMinPrimScale)); 860 childSetValue("max_hollow_size", LLSD(gHippoLimits->mMaxHollow));
861 childSetValue("render_water", LLSD(gHippoLimits->mRenderWater)); 861 childSetValue("max_inventory_items_transfer", LLSD(gHippoLimits->mMaxInventoryItemsTransfer));
862 childSetValue("show_tags", LLSD(gHippoLimits->mRenderName)); 862 childSetValue("max_link_count", LLSD(gHippoLimits->mMaxLinkedPrims));
863 childSetValue("max_groups", LLSD(gHippoLimits->mMaxAgentGroups)); 863 childSetValue("max_link_count_phys", LLSD(gHippoLimits->mMaxPhysLinkedPrims));
864 childSetValue("allow_parcel_windlight", LLSD(gHippoLimits->mAllowParcelWindLight)); 864 childSetValue("max_phys_prim_scale", LLSD(gHippoLimits->mMaxPrimScale));//Todo:Fix
865 childSetValue("enable_teen_mode", LLSD(gHippoLimits->mEnableTeenMode)); 865 childSetValue("max_prim_scale", LLSD(gHippoLimits->mMaxPrimScale));
866 childSetValue("enforce_max_build", LLSD(gHippoLimits->mEnforceMaxBuild)); 866 childSetValue("min_prim_scale", LLSD(gHippoLimits->mMinPrimScale));
867 867 childSetValue("render_water", LLSD(gHippoLimits->mRenderWater));
868 setCtrlsEnabled(allow_modify); 868 childSetValue("show_tags", LLSD(gHippoLimits->mRenderName));
869 869 childSetValue("max_groups", LLSD(gHippoLimits->mMaxAgentGroups));
870 return LLPanelRegionInfo::refreshFromRegion(region); 870 childSetValue("allow_parcel_windlight", LLSD(gHippoLimits->mAllowParcelWindLight));
871} 871 childSetValue("enable_teen_mode", LLSD(gHippoLimits->mEnableTeenMode));
872 872 childSetValue("enforce_max_build", LLSD(gHippoLimits->mEnforceMaxBuild));
873BOOL LLPanelRegionOpenSettingsInfo::postBuild() 873
874{ 874 setCtrlsEnabled(allow_modify);
875 // Enable the "Apply" button if something is changed. JC 875
876 initCtrl("draw_distance"); 876 return LLPanelRegionInfo::refreshFromRegion(region);
877 initCtrl("force_draw_distance"); 877}
878 initCtrl("max_drag_distance"); 878
879 initCtrl("max_prim_scale"); 879BOOL LLPanelRegionOpenSettingsInfo::postBuild()
880 initCtrl("min_prim_scale"); 880{
881 initCtrl("max_phys_prim_scale"); 881 // Enable the "Apply" button if something is changed. JC
882 initCtrl("max_hollow_size"); 882 initCtrl("draw_distance");
883 initCtrl("min_hole_size"); 883 initCtrl("force_draw_distance");
884 initCtrl("max_link_count"); 884 initCtrl("max_drag_distance");
885 initCtrl("max_link_count_phys"); 885 initCtrl("max_prim_scale");
886 initCtrl("max_inventory_items_transfer"); 886 initCtrl("min_prim_scale");
887 initCtrl("max_groups"); 887 initCtrl("max_phys_prim_scale");
888 initCtrl("render_water"); 888 initCtrl("max_hollow_size");
889 initCtrl("allow_minimap"); 889 initCtrl("min_hole_size");
890 initCtrl("allow_physical_prims"); 890 initCtrl("max_link_count");
891 initCtrl("enable_teen_mode"); 891 initCtrl("max_link_count_phys");
892 initCtrl("show_tags"); 892 initCtrl("max_inventory_items_transfer");
893 initCtrl("allow_parcel_windlight"); 893 initCtrl("max_groups");
894 894 initCtrl("render_water");
895 initHelpBtn("force_draw_distance_help", "HelpForceDrawDistance"); 895 initCtrl("allow_minimap");
896 initHelpBtn("max_inventory_items_transfer_help", "HelpMaxInventoryItemsTransfer"); 896 initCtrl("allow_physical_prims");
897 initHelpBtn("max_groups_help", "HelpMaxGroups"); 897 initCtrl("enable_teen_mode");
898 initHelpBtn("render_water_help", "HelpRenderWater"); 898 initCtrl("show_tags");
899 initHelpBtn("allow_minimap_help", "HelpAllowMinimap"); 899 initCtrl("allow_parcel_windlight");
900 initHelpBtn("allow_physical_prims_help", "HelpAllowPhysicalPrims"); 900
901 initHelpBtn("enable_teen_mode_help", "HelpEnableTeenMode"); 901 initHelpBtn("force_draw_distance_help", "HelpForceDrawDistance");
902 initHelpBtn("show_tags_help", "HelpShowTags"); 902 initHelpBtn("max_inventory_items_transfer_help", "HelpMaxInventoryItemsTransfer");
903 initHelpBtn("allow_parcel_windlight_help", "HelpAllowParcelWindLight"); 903 initHelpBtn("max_groups_help", "HelpMaxGroups");
904 904 initHelpBtn("render_water_help", "HelpRenderWater");
905 childSetAction("apply_ors_btn", onClickOrs, this); 905 initHelpBtn("allow_minimap_help", "HelpAllowMinimap");
906 906 initHelpBtn("allow_physical_prims_help", "HelpAllowPhysicalPrims");
907 refreshFromRegion(gAgent.getRegion()); 907 initHelpBtn("enable_teen_mode_help", "HelpEnableTeenMode");
908 908 initHelpBtn("show_tags_help", "HelpShowTags");
909 return LLPanelRegionInfo::postBuild(); 909 initHelpBtn("allow_parcel_windlight_help", "HelpAllowParcelWindLight");
910} 910
911 911 childSetAction("apply_ors_btn", onClickOrs, this);
912// setregioninfo 912
913// strings[0] = 'Y' - block terraform, 'N' - not 913 refreshFromRegion(gAgent.getRegion());
914// strings[1] = 'Y' - block fly, 'N' - not 914
915// strings[2] = 'Y' - allow damage, 'N' - not 915 return LLPanelRegionInfo::postBuild();
916// strings[3] = 'Y' - allow land sale, 'N' - not 916}
917// strings[4] = agent limit 917
918// strings[5] = object bonus 918// setregioninfo
919// strings[6] = sim access (0 = unknown, 13 = PG, 21 = Mature, 42 = Adult) 919// strings[0] = 'Y' - block terraform, 'N' - not
920// strings[7] = restrict pushobject 920// strings[1] = 'Y' - block fly, 'N' - not
921// strings[8] = 'Y' - allow parcel subdivide, 'N' - not 921// strings[2] = 'Y' - allow damage, 'N' - not
922// strings[9] = 'Y' - block parcel search, 'N' - allow 922// strings[3] = 'Y' - allow land sale, 'N' - not
923void LLPanelRegionOpenSettingsInfo::onClickOrs(void* userdata) 923// strings[4] = agent limit
924{ 924// strings[5] = object bonus
925 LLPanelRegionOpenSettingsInfo* self; 925// strings[6] = sim access (0 = unknown, 13 = PG, 21 = Mature, 42 = Adult)
926 self = (LLPanelRegionOpenSettingsInfo*)userdata; 926// strings[7] = restrict pushobject
927 927// strings[8] = 'Y' - allow parcel subdivide, 'N' - not
928 llinfos << "LLPanelRegionOpenSettingsInfo::onClickOrs()" << llendl; 928// strings[9] = 'Y' - block parcel search, 'N' - allow
929 929void LLPanelRegionOpenSettingsInfo::onClickOrs(void* userdata)
930 LLSD body; 930{
931 std::string url = gAgent.getRegion()->getCapability("DispatchOpenRegionSettings"); 931 LLPanelRegionOpenSettingsInfo* self;
932 if (!url.empty()) 932 self = (LLPanelRegionOpenSettingsInfo*)userdata;
933 { 933
934 body["draw_distance"] = self->childGetValue("draw_distance"); 934 llinfos << "LLPanelRegionOpenSettingsInfo::onClickOrs()" << llendl;
935 body["force_draw_distance"] = self->childGetValue("force_draw_distance"); 935
936 body["allow_minimap"] = self->childGetValue("allow_minimap"); 936 LLSD body;
937 body["allow_physical_prims"] = self->childGetValue("allow_physical_prims"); 937 std::string url = gAgent.getRegion()->getCapability("DispatchOpenRegionSettings");
938 body["max_drag_distance"] = self->childGetValue("max_drag_distance"); 938 if (!url.empty())
939 body["min_hole_size"] = self->childGetValue("min_hole_size"); 939 {
940 body["max_hollow_size"] = self->childGetValue("max_hollow_size"); 940 body["draw_distance"] = self->childGetValue("draw_distance");
941 body["max_inventory_items_transfer"] = self->childGetValue("max_inventory_items_transfer"); 941 body["force_draw_distance"] = self->childGetValue("force_draw_distance");
942 body["max_link_count"] = self->childGetValue("max_link_count"); 942 body["allow_minimap"] = self->childGetValue("allow_minimap");
943 body["max_link_count_phys"] = self->childGetValue("max_link_count_phys"); 943 body["allow_physical_prims"] = self->childGetValue("allow_physical_prims");
944 body["max_phys_prim_scale"] = self->childGetValue("max_phys_prim_scale"); 944 body["max_drag_distance"] = self->childGetValue("max_drag_distance");
945 body["max_prim_scale"] = self->childGetValue("max_prim_scale"); 945 body["min_hole_size"] = self->childGetValue("min_hole_size");
946 body["min_prim_scale"] = self->childGetValue("min_prim_scale"); 946 body["max_hollow_size"] = self->childGetValue("max_hollow_size");
947 body["render_water"] = self->childGetValue("render_water"); 947 body["max_inventory_items_transfer"] = self->childGetValue("max_inventory_items_transfer");
948 body["show_tags"] = self->childGetValue("show_tags"); 948 body["max_link_count"] = self->childGetValue("max_link_count");
949 body["max_groups"] = self->childGetValue("max_groups"); 949 body["max_link_count_phys"] = self->childGetValue("max_link_count_phys");
950 body["allow_parcel_windlight"] = self->childGetValue("allow_parcel_windlight"); 950 body["max_phys_prim_scale"] = self->childGetValue("max_phys_prim_scale");
951 body["enable_teen_mode"] = self->childGetValue("enable_teen_mode"); 951 body["max_prim_scale"] = self->childGetValue("max_prim_scale");
952 body["enforce_max_build"] = self->childGetValue("enforce_max_build"); 952 body["min_prim_scale"] = self->childGetValue("min_prim_scale");
953 953 body["render_water"] = self->childGetValue("render_water");
954 LLHTTPClient::post(url, body, new LLHTTPClient::Responder()); 954 body["show_tags"] = self->childGetValue("show_tags");
955 } 955 body["max_groups"] = self->childGetValue("max_groups");
956} 956 body["allow_parcel_windlight"] = self->childGetValue("allow_parcel_windlight");
957 957 body["enable_teen_mode"] = self->childGetValue("enable_teen_mode");
958///////////////////////////////////////////////////////////////////////////// 958 body["enforce_max_build"] = self->childGetValue("enforce_max_build");
959// LLPanelRegionDebugInfo 959
960///////////////////////////////////////////////////////////////////////////// 960 LLHTTPClient::post(url, body, new LLHTTPClient::Responder());
961BOOL LLPanelRegionDebugInfo::postBuild() 961 }
962{ 962}
963 LLPanelRegionInfo::postBuild(); 963
964 initCtrl("disable_scripts_check"); 964/////////////////////////////////////////////////////////////////////////////
965 initCtrl("disable_collisions_check"); 965// LLPanelRegionDebugInfo
966 initCtrl("disable_physics_check"); 966/////////////////////////////////////////////////////////////////////////////
967 967BOOL LLPanelRegionDebugInfo::postBuild()
968 initHelpBtn("disable_scripts_help", "HelpRegionDisableScripts"); 968{
969 initHelpBtn("disable_collisions_help", "HelpRegionDisableCollisions"); 969 LLPanelRegionInfo::postBuild();
970 initHelpBtn("disable_physics_help", "HelpRegionDisablePhysics"); 970 initCtrl("disable_scripts_check");
971 initHelpBtn("top_colliders_help", "HelpRegionTopColliders"); 971 initCtrl("disable_collisions_check");
972 initHelpBtn("top_scripts_help", "HelpRegionTopScripts"); 972 initCtrl("disable_physics_check");
973 initHelpBtn("restart_help", "HelpRegionRestart"); 973
974 initHelpBtn("minimum_agent_age_help", "HelpRegionMinimumAge"); 974 initHelpBtn("disable_scripts_help", "HelpRegionDisableScripts");
975 975 initHelpBtn("disable_collisions_help", "HelpRegionDisableCollisions");
976 976 initHelpBtn("disable_physics_help", "HelpRegionDisablePhysics");
977 childSetAction("choose_avatar_btn", onClickChooseAvatar, this); 977 initHelpBtn("top_colliders_help", "HelpRegionTopColliders");
978 childSetAction("return_btn", onClickReturn, this); 978 initHelpBtn("top_scripts_help", "HelpRegionTopScripts");
979 childSetAction("top_colliders_btn", onClickTopColliders, this); 979 initHelpBtn("restart_help", "HelpRegionRestart");
980 childSetAction("top_scripts_btn", onClickTopScripts, this); 980 initHelpBtn("minimum_agent_age_help", "HelpRegionMinimumAge");
981 childSetAction("restart_btn", onClickRestart, this); 981
982 childSetAction("cancel_restart_btn", onClickCancelRestart, this); 982
983 983 childSetAction("choose_avatar_btn", onClickChooseAvatar, this);
984 return TRUE; 984 childSetAction("return_btn", onClickReturn, this);
985} 985 childSetAction("top_colliders_btn", onClickTopColliders, this);
986 986 childSetAction("top_scripts_btn", onClickTopScripts, this);
987// virtual 987 childSetAction("restart_btn", onClickRestart, this);
988bool LLPanelRegionDebugInfo::refreshFromRegion(LLViewerRegion* region) 988 childSetAction("cancel_restart_btn", onClickCancelRestart, this);
989{ 989
990 BOOL allow_modify = gAgent.isGodlike() || (region && region->canManageEstate()); 990 return TRUE;
991 setCtrlsEnabled(allow_modify); 991}
992 childDisable("apply_btn"); 992
993 childDisable("target_avatar_name"); 993// virtual
994 994bool LLPanelRegionDebugInfo::refreshFromRegion(LLViewerRegion* region)
995 childSetEnabled("choose_avatar_btn", allow_modify); 995{
996 childSetEnabled("return_scripts", allow_modify && !mTargetAvatar.isNull()); 996 BOOL allow_modify = gAgent.isGodlike() || (region && region->canManageEstate());
997 childSetEnabled("return_other_land", allow_modify && !mTargetAvatar.isNull()); 997 setCtrlsEnabled(allow_modify);
998 childSetEnabled("return_estate_wide", allow_modify && !mTargetAvatar.isNull()); 998 childDisable("apply_btn");
999 childSetEnabled("return_btn", allow_modify && !mTargetAvatar.isNull()); 999 childDisable("target_avatar_name");
1000 childSetEnabled("top_colliders_btn", allow_modify); 1000
1001 childSetEnabled("top_scripts_btn", allow_modify); 1001 childSetEnabled("choose_avatar_btn", allow_modify);
1002 childSetEnabled("restart_btn", allow_modify); 1002 childSetEnabled("return_scripts", allow_modify && !mTargetAvatar.isNull());
1003 childSetEnabled("cancel_restart_btn", allow_modify); 1003 childSetEnabled("return_other_land", allow_modify && !mTargetAvatar.isNull());
1004 1004 childSetEnabled("return_estate_wide", allow_modify && !mTargetAvatar.isNull());
1005 return LLPanelRegionInfo::refreshFromRegion(region); 1005 childSetEnabled("return_btn", allow_modify && !mTargetAvatar.isNull());
1006} 1006 childSetEnabled("top_colliders_btn", allow_modify);
1007 1007 childSetEnabled("top_scripts_btn", allow_modify);
1008// virtual 1008 childSetEnabled("restart_btn", allow_modify);
1009BOOL LLPanelRegionDebugInfo::sendUpdate() 1009 childSetEnabled("cancel_restart_btn", allow_modify);
1010{ 1010
1011 llinfos << "LLPanelRegionDebugInfo::sendUpdate" << llendl; 1011 return LLPanelRegionInfo::refreshFromRegion(region);
1012 strings_t strings; 1012}
1013 std::string buffer; 1013
1014 1014// virtual
1015 buffer = llformat("%s", (childGetValue("disable_scripts_check").asBoolean() ? "Y" : "N")); 1015BOOL LLPanelRegionDebugInfo::sendUpdate()
1016 strings.push_back(buffer); 1016{
1017 1017 llinfos << "LLPanelRegionDebugInfo::sendUpdate" << llendl;
1018 buffer = llformat("%s", (childGetValue("disable_collisions_check").asBoolean() ? "Y" : "N")); 1018 strings_t strings;
1019 strings.push_back(buffer); 1019 std::string buffer;
1020 1020
1021 buffer = llformat("%s", (childGetValue("disable_physics_check").asBoolean() ? "Y" : "N")); 1021 buffer = llformat("%s", (childGetValue("disable_scripts_check").asBoolean() ? "Y" : "N"));
1022 strings.push_back(buffer); 1022 strings.push_back(buffer);
1023 1023
1024 LLUUID invoice(LLFloaterRegionInfo::getLastInvoice()); 1024 buffer = llformat("%s", (childGetValue("disable_collisions_check").asBoolean() ? "Y" : "N"));
1025 sendEstateOwnerMessage(gMessageSystem, "setregiondebug", invoice, strings); 1025 strings.push_back(buffer);
1026 return TRUE; 1026
1027} 1027 buffer = llformat("%s", (childGetValue("disable_physics_check").asBoolean() ? "Y" : "N"));
1028 1028 strings.push_back(buffer);
1029void LLPanelRegionDebugInfo::onClickChooseAvatar(void* data) 1029
1030{ 1030 LLUUID invoice(LLFloaterRegionInfo::getLastInvoice());
1031 LLFloaterAvatarPicker::show(callbackAvatarID, data, FALSE, TRUE); 1031 sendEstateOwnerMessage(gMessageSystem, "setregiondebug", invoice, strings);
1032} 1032 return TRUE;
1033 1033}
1034// static 1034
1035void LLPanelRegionDebugInfo::callbackAvatarID(const std::vector<std::string>& names, const std::vector<LLUUID>& ids, void* data) 1035void LLPanelRegionDebugInfo::onClickChooseAvatar(void* data)
1036{ 1036{
1037 LLPanelRegionDebugInfo* self = (LLPanelRegionDebugInfo*) data; 1037 LLFloaterAvatarPicker::show(callbackAvatarID, data, FALSE, TRUE);
1038 if (ids.empty() || names.empty()) return; 1038}
1039 self->mTargetAvatar = ids[0]; 1039
1040 self->childSetValue("target_avatar_name", LLSD(names[0])); 1040// static
1041 self->refreshFromRegion( gAgent.getRegion() ); 1041void LLPanelRegionDebugInfo::callbackAvatarID(const std::vector<std::string>& names, const std::vector<LLUUID>& ids, void* data)
1042} 1042{
1043 1043 LLPanelRegionDebugInfo* self = (LLPanelRegionDebugInfo*) data;
1044// static 1044 if (ids.empty() || names.empty()) return;
1045void LLPanelRegionDebugInfo::onClickReturn(void* data) 1045 self->mTargetAvatar = ids[0];
1046{ 1046 self->childSetValue("target_avatar_name", LLSD(names[0]));
1047 LLPanelRegionDebugInfo* panelp = (LLPanelRegionDebugInfo*) data; 1047 self->refreshFromRegion( gAgent.getRegion() );
1048 if (panelp->mTargetAvatar.isNull()) return; 1048}
1049 1049
1050 LLSD args; 1050// static
1051 args["USER_NAME"] = panelp->childGetValue("target_avatar_name").asString(); 1051void LLPanelRegionDebugInfo::onClickReturn(void* data)
1052 LLSD payload; 1052{
1053 payload["avatar_id"] = panelp->mTargetAvatar; 1053 LLPanelRegionDebugInfo* panelp = (LLPanelRegionDebugInfo*) data;
1054 1054 if (panelp->mTargetAvatar.isNull()) return;
1055 U32 flags = SWD_ALWAYS_RETURN_OBJECTS; 1055
1056 1056 LLSD args;
1057 if (panelp->childGetValue("return_scripts").asBoolean()) 1057 args["USER_NAME"] = panelp->childGetValue("target_avatar_name").asString();
1058 { 1058 LLSD payload;
1059 flags |= SWD_SCRIPTED_ONLY; 1059 payload["avatar_id"] = panelp->mTargetAvatar;
1060 } 1060
1061 1061 U32 flags = SWD_ALWAYS_RETURN_OBJECTS;
1062 if (panelp->childGetValue("return_other_land").asBoolean()) 1062
1063 { 1063 if (panelp->childGetValue("return_scripts").asBoolean())
1064 flags |= SWD_OTHERS_LAND_ONLY; 1064 {
1065 } 1065 flags |= SWD_SCRIPTED_ONLY;
1066 payload["flags"] = int(flags); 1066 }
1067 payload["return_estate_wide"] = panelp->childGetValue("return_estate_wide").asBoolean(); 1067
1068 LLNotifications::instance().add("EstateObjectReturn", args, payload, 1068 if (panelp->childGetValue("return_other_land").asBoolean())
1069 boost::bind(&LLPanelRegionDebugInfo::callbackReturn, panelp, _1, _2)); 1069 {
1070} 1070 flags |= SWD_OTHERS_LAND_ONLY;
1071 1071 }
1072bool LLPanelRegionDebugInfo::callbackReturn(const LLSD& notification, const LLSD& response) 1072 payload["flags"] = int(flags);
1073{ 1073 payload["return_estate_wide"] = panelp->childGetValue("return_estate_wide").asBoolean();
1074 S32 option = LLNotification::getSelectedOption(notification, response); 1074 LLNotifications::instance().add("EstateObjectReturn", args, payload,
1075 if (option != 0) return false; 1075 boost::bind(&LLPanelRegionDebugInfo::callbackReturn, panelp, _1, _2));
1076 1076}
1077 LLUUID target_avatar = notification["payload"]["avatar_id"].asUUID(); 1077
1078 if (!target_avatar.isNull()) 1078bool LLPanelRegionDebugInfo::callbackReturn(const LLSD& notification, const LLSD& response)
1079 { 1079{
1080 U32 flags = notification["payload"]["flags"].asInteger(); 1080 S32 option = LLNotification::getSelectedOption(notification, response);
1081 bool return_estate_wide = notification["payload"]["return_estate_wide"]; 1081 if (option != 0) return false;
1082 if (return_estate_wide) 1082
1083 { 1083 LLUUID target_avatar = notification["payload"]["avatar_id"].asUUID();
1084 // send as estate message - routed by spaceserver to all regions in estate 1084 if (!target_avatar.isNull())
1085 strings_t strings; 1085 {
1086 strings.push_back(llformat("%d", flags)); 1086 U32 flags = notification["payload"]["flags"].asInteger();
1087 strings.push_back(target_avatar.asString()); 1087 bool return_estate_wide = notification["payload"]["return_estate_wide"];
1088 1088 if (return_estate_wide)
1089 LLUUID invoice(LLFloaterRegionInfo::getLastInvoice()); 1089 {
1090 1090 // send as estate message - routed by spaceserver to all regions in estate
1091 sendEstateOwnerMessage(gMessageSystem, "estateobjectreturn", invoice, strings); 1091 strings_t strings;
1092 } 1092 strings.push_back(llformat("%d", flags));
1093 else 1093 strings.push_back(target_avatar.asString());
1094 { 1094
1095 // send to this simulator only 1095 LLUUID invoice(LLFloaterRegionInfo::getLastInvoice());
1096 send_sim_wide_deletes(target_avatar, flags); 1096
1097 } 1097 sendEstateOwnerMessage(gMessageSystem, "estateobjectreturn", invoice, strings);
1098 } 1098 }
1099 return false; 1099 else
1100} 1100 {
1101 1101 // send to this simulator only
1102 1102 send_sim_wide_deletes(target_avatar, flags);
1103// static 1103 }
1104void LLPanelRegionDebugInfo::onClickTopColliders(void* data) 1104 }
1105{ 1105 return false;
1106 LLPanelRegionDebugInfo* self = (LLPanelRegionDebugInfo*)data; 1106}
1107 strings_t strings; 1107
1108 strings.push_back("1"); // one physics step 1108
1109 LLUUID invoice(LLFloaterRegionInfo::getLastInvoice()); 1109// static
1110 LLFloaterTopObjects::show(); 1110void LLPanelRegionDebugInfo::onClickTopColliders(void* data)
1111 LLFloaterTopObjects::clearList(); 1111{
1112 self->sendEstateOwnerMessage(gMessageSystem, "colliders", invoice, strings); 1112 LLPanelRegionDebugInfo* self = (LLPanelRegionDebugInfo*)data;
1113} 1113 strings_t strings;
1114 1114 strings.push_back("1"); // one physics step
1115// static 1115 LLUUID invoice(LLFloaterRegionInfo::getLastInvoice());
1116void LLPanelRegionDebugInfo::onClickTopScripts(void* data) 1116 LLFloaterTopObjects::show();
1117{ 1117 LLFloaterTopObjects::clearList();
1118 LLPanelRegionDebugInfo* self = (LLPanelRegionDebugInfo*)data; 1118 self->sendEstateOwnerMessage(gMessageSystem, "colliders", invoice, strings);
1119 strings_t strings; 1119}
1120 strings.push_back("6"); // top 5 scripts 1120
1121 LLUUID invoice(LLFloaterRegionInfo::getLastInvoice()); 1121// static
1122 LLFloaterTopObjects::show(); 1122void LLPanelRegionDebugInfo::onClickTopScripts(void* data)
1123 LLFloaterTopObjects::clearList(); 1123{
1124 self->sendEstateOwnerMessage(gMessageSystem, "scripts", invoice, strings); 1124 LLPanelRegionDebugInfo* self = (LLPanelRegionDebugInfo*)data;
1125} 1125 strings_t strings;
1126 1126 strings.push_back("6"); // top 5 scripts
1127// static 1127 LLUUID invoice(LLFloaterRegionInfo::getLastInvoice());
1128void LLPanelRegionDebugInfo::onClickRestart(void* data) 1128 LLFloaterTopObjects::show();
1129{ 1129 LLFloaterTopObjects::clearList();
1130 LLNotifications::instance().add("ConfirmRestart", LLSD(), LLSD(), 1130 self->sendEstateOwnerMessage(gMessageSystem, "scripts", invoice, strings);
1131 boost::bind(&LLPanelRegionDebugInfo::callbackRestart, (LLPanelRegionDebugInfo*)data, _1, _2)); 1131}
1132} 1132
1133 1133// static
1134bool LLPanelRegionDebugInfo::callbackRestart(const LLSD& notification, const LLSD& response) 1134void LLPanelRegionDebugInfo::onClickRestart(void* data)
1135{ 1135{
1136 S32 option = LLNotification::getSelectedOption(notification, response); 1136 LLNotifications::instance().add("ConfirmRestart", LLSD(), LLSD(),
1137 if (option != 0) return false; 1137 boost::bind(&LLPanelRegionDebugInfo::callbackRestart, (LLPanelRegionDebugInfo*)data, _1, _2));
1138 1138}
1139 strings_t strings; 1139
1140 strings.push_back("120"); 1140bool LLPanelRegionDebugInfo::callbackRestart(const LLSD& notification, const LLSD& response)
1141 LLUUID invoice(LLFloaterRegionInfo::getLastInvoice()); 1141{
1142 sendEstateOwnerMessage(gMessageSystem, "restart", invoice, strings); 1142 S32 option = LLNotification::getSelectedOption(notification, response);
1143 return false; 1143 if (option != 0) return false;
1144} 1144
1145 1145 strings_t strings;
1146// static 1146 strings.push_back("120");
1147void LLPanelRegionDebugInfo::onClickCancelRestart(void* data) 1147 LLUUID invoice(LLFloaterRegionInfo::getLastInvoice());
1148{ 1148 sendEstateOwnerMessage(gMessageSystem, "restart", invoice, strings);
1149 LLPanelRegionDebugInfo* self = (LLPanelRegionDebugInfo*)data; 1149 return false;
1150 strings_t strings; 1150}
1151 strings.push_back("-1"); 1151
1152 LLUUID invoice(LLFloaterRegionInfo::getLastInvoice()); 1152// static
1153 self->sendEstateOwnerMessage(gMessageSystem, "restart", invoice, strings); 1153void LLPanelRegionDebugInfo::onClickCancelRestart(void* data)
1154} 1154{
1155 1155 LLPanelRegionDebugInfo* self = (LLPanelRegionDebugInfo*)data;
1156 1156 strings_t strings;
1157///////////////////////////////////////////////////////////////////////////// 1157 strings.push_back("-1");
1158// LLPanelRegionTextureInfo 1158 LLUUID invoice(LLFloaterRegionInfo::getLastInvoice());
1159// 1159 self->sendEstateOwnerMessage(gMessageSystem, "restart", invoice, strings);
1160LLPanelRegionTextureInfo::LLPanelRegionTextureInfo() : LLPanelRegionInfo() 1160}
1161{ 1161
1162 // nothing. 1162
1163} 1163/////////////////////////////////////////////////////////////////////////////
1164 1164// LLPanelRegionTextureInfo
1165bool LLPanelRegionTextureInfo::refreshFromRegion(LLViewerRegion* region) 1165//
1166{ 1166LLPanelRegionTextureInfo::LLPanelRegionTextureInfo() : LLPanelRegionInfo()
1167 BOOL allow_modify = gAgent.isGodlike() || (region && region->canManageEstate()); 1167{
1168 setCtrlsEnabled(allow_modify); 1168 // nothing.
1169 childDisable("apply_btn"); 1169}
1170 1170
1171 if (region) 1171bool LLPanelRegionTextureInfo::refreshFromRegion(LLViewerRegion* region)
1172 { 1172{
1173 childSetValue("region_text", LLSD(region->getName())); 1173 BOOL allow_modify = gAgent.isGodlike() || (region && region->canManageEstate());
1174 } 1174 setCtrlsEnabled(allow_modify);
1175 else 1175 childDisable("apply_btn");
1176 { 1176
1177 childSetValue("region_text", LLSD("")); 1177 if (region)
1178 } 1178 {
1179 1179 childSetValue("region_text", LLSD(region->getName()));
1180 if (!region) return LLPanelRegionInfo::refreshFromRegion(region); 1180 }
1181 1181 else
1182 LLVLComposition* compp = region->getComposition(); 1182 {
1183 LLTextureCtrl* texture_ctrl; 1183 childSetValue("region_text", LLSD(""));
1184 std::string buffer; 1184 }
1185 for(S32 i = 0; i < TERRAIN_TEXTURE_COUNT; ++i) 1185
1186 { 1186 if (!region) return LLPanelRegionInfo::refreshFromRegion(region);
1187 buffer = llformat("texture_detail_%d", i); 1187
1188 texture_ctrl = getChild<LLTextureCtrl>(buffer); 1188 LLVLComposition* compp = region->getComposition();
1189 if(texture_ctrl) 1189 LLTextureCtrl* texture_ctrl;
1190 { 1190 std::string buffer;
1191 lldebugs << "Detail Texture " << i << ": " 1191 for(S32 i = 0; i < TERRAIN_TEXTURE_COUNT; ++i)
1192 << compp->getDetailTextureID(i) << llendl; 1192 {
1193 LLUUID tmp_id(compp->getDetailTextureID(i)); 1193 buffer = llformat("texture_detail_%d", i);
1194 texture_ctrl->setImageAssetID(tmp_id); 1194 texture_ctrl = getChild<LLTextureCtrl>(buffer);
1195 } 1195 if(texture_ctrl)
1196 } 1196 {
1197 1197 lldebugs << "Detail Texture " << i << ": "
1198 for(S32 i = 0; i < CORNER_COUNT; ++i) 1198 << compp->getDetailTextureID(i) << llendl;
1199 { 1199 LLUUID tmp_id(compp->getDetailTextureID(i));
1200 buffer = llformat("height_start_spin_%d", i); 1200 texture_ctrl->setImageAssetID(tmp_id);
1201 childSetValue(buffer, LLSD(compp->getStartHeight(i))); 1201 }
1202 buffer = llformat("height_range_spin_%d", i); 1202 }
1203 childSetValue(buffer, LLSD(compp->getHeightRange(i))); 1203
1204 } 1204 for(S32 i = 0; i < CORNER_COUNT; ++i)
1205 1205 {
1206 // Call the parent for common book-keeping 1206 buffer = llformat("height_start_spin_%d", i);
1207 return LLPanelRegionInfo::refreshFromRegion(region); 1207 childSetValue(buffer, LLSD(compp->getStartHeight(i)));
1208} 1208 buffer = llformat("height_range_spin_%d", i);
1209 1209 childSetValue(buffer, LLSD(compp->getHeightRange(i)));
1210 1210 }
1211BOOL LLPanelRegionTextureInfo::postBuild() 1211
1212{ 1212 // Call the parent for common book-keeping
1213 LLPanelRegionInfo::postBuild(); 1213 return LLPanelRegionInfo::refreshFromRegion(region);
1214 std::string buffer; 1214}
1215 for(S32 i = 0; i < TERRAIN_TEXTURE_COUNT; ++i) 1215
1216 { 1216
1217 buffer = llformat("texture_detail_%d", i); 1217BOOL LLPanelRegionTextureInfo::postBuild()
1218 initCtrl(buffer); 1218{
1219 } 1219 LLPanelRegionInfo::postBuild();
1220 1220 std::string buffer;
1221 for(S32 i = 0; i < CORNER_COUNT; ++i) 1221 for(S32 i = 0; i < TERRAIN_TEXTURE_COUNT; ++i)
1222 { 1222 {
1223 buffer = llformat("height_start_spin_%d", i); 1223 buffer = llformat("texture_detail_%d", i);
1224 initCtrl(buffer); 1224 initCtrl(buffer);
1225 buffer = llformat("height_range_spin_%d", i); 1225 }
1226 initCtrl(buffer); 1226
1227 } 1227 for(S32 i = 0; i < CORNER_COUNT; ++i)
1228 1228 {
1229// LLButton* btn = new LLButton("dump", LLRect(0, 20, 100, 0), "", onClickDump, this); 1229 buffer = llformat("height_start_spin_%d", i);
1230// btn->setFollows(FOLLOWS_TOP|FOLLOWS_LEFT); 1230 initCtrl(buffer);
1231// addChild(btn); 1231 buffer = llformat("height_range_spin_%d", i);
1232 1232 initCtrl(buffer);
1233 return LLPanelRegionInfo::postBuild(); 1233 }
1234} 1234
1235 1235// LLButton* btn = new LLButton("dump", LLRect(0, 20, 100, 0), "", onClickDump, this);
1236BOOL LLPanelRegionTextureInfo::sendUpdate() 1236// btn->setFollows(FOLLOWS_TOP|FOLLOWS_LEFT);
1237{ 1237// addChild(btn);
1238 llinfos << "LLPanelRegionTextureInfo::sendUpdate()" << llendl; 1238
1239 1239 return LLPanelRegionInfo::postBuild();
1240 // Make sure user hasn't chosen wacky textures. 1240}
1241 if (!validateTextureSizes()) 1241
1242 { 1242BOOL LLPanelRegionTextureInfo::sendUpdate()
1243 return FALSE; 1243{
1244 } 1244 llinfos << "LLPanelRegionTextureInfo::sendUpdate()" << llendl;
1245 1245
1246 LLTextureCtrl* texture_ctrl; 1246 // Make sure user hasn't chosen wacky textures.
1247 std::string buffer; 1247 //if (!validateTextureSizes())
1248 std::string id_str; 1248 //{
1249 LLMessageSystem* msg = gMessageSystem; 1249 // return FALSE;
1250 strings_t strings; 1250 //}
1251 1251
1252 LLUUID invoice(LLFloaterRegionInfo::getLastInvoice()); 1252 LLTextureCtrl* texture_ctrl;
1253 1253 std::string buffer;
1254 for(S32 i = 0; i < TERRAIN_TEXTURE_COUNT; ++i) 1254 std::string id_str;
1255 { 1255 LLMessageSystem* msg = gMessageSystem;
1256 buffer = llformat("texture_detail_%d", i); 1256 strings_t strings;
1257 texture_ctrl = getChild<LLTextureCtrl>(buffer); 1257
1258 if(texture_ctrl) 1258 LLUUID invoice(LLFloaterRegionInfo::getLastInvoice());
1259 { 1259
1260 LLUUID tmp_id(texture_ctrl->getImageAssetID()); 1260 for(S32 i = 0; i < TERRAIN_TEXTURE_COUNT; ++i)
1261 tmp_id.toString(id_str); 1261 {
1262 buffer = llformat("%d %s", i, id_str.c_str()); 1262 buffer = llformat("texture_detail_%d", i);
1263 strings.push_back(buffer); 1263 texture_ctrl = getChild<LLTextureCtrl>(buffer);
1264 } 1264 if(texture_ctrl)
1265 } 1265 {
1266 sendEstateOwnerMessage(msg, "texturedetail", invoice, strings); 1266 LLUUID tmp_id(texture_ctrl->getImageAssetID());
1267 strings.clear(); 1267 tmp_id.toString(id_str);
1268 for(S32 i = 0; i < CORNER_COUNT; ++i) 1268 buffer = llformat("%d %s", i, id_str.c_str());
1269 { 1269 strings.push_back(buffer);
1270 buffer = llformat("height_start_spin_%d", i); 1270 }
1271 std::string buffer2 = llformat("height_range_spin_%d", i); 1271 }
1272 std::string buffer3 = llformat("%d %f %f", i, (F32)childGetValue(buffer).asReal(), (F32)childGetValue(buffer2).asReal()); 1272 sendEstateOwnerMessage(msg, "texturedetail", invoice, strings);
1273 strings.push_back(buffer3); 1273 strings.clear();
1274 } 1274 for(S32 i = 0; i < CORNER_COUNT; ++i)
1275 sendEstateOwnerMessage(msg, "textureheights", invoice, strings); 1275 {
1276 strings.clear(); 1276 buffer = llformat("height_start_spin_%d", i);
1277 sendEstateOwnerMessage(msg, "texturecommit", invoice, strings); 1277 std::string buffer2 = llformat("height_range_spin_%d", i);
1278 return TRUE; 1278 std::string buffer3 = llformat("%d %f %f", i, (F32)childGetValue(buffer).asReal(), (F32)childGetValue(buffer2).asReal());
1279} 1279 strings.push_back(buffer3);
1280 1280 }
1281BOOL LLPanelRegionTextureInfo::validateTextureSizes() 1281 sendEstateOwnerMessage(msg, "textureheights", invoice, strings);
1282{ 1282 strings.clear();
1283 for(S32 i = 0; i < TERRAIN_TEXTURE_COUNT; ++i) 1283 sendEstateOwnerMessage(msg, "texturecommit", invoice, strings);
1284 { 1284 return TRUE;
1285 std::string buffer; 1285}
1286 buffer = llformat("texture_detail_%d", i); 1286
1287 LLTextureCtrl* texture_ctrl = getChild<LLTextureCtrl>(buffer); 1287BOOL LLPanelRegionTextureInfo::validateTextureSizes()
1288 if (!texture_ctrl) continue; 1288{
1289 1289 for(S32 i = 0; i < TERRAIN_TEXTURE_COUNT; ++i)
1290 LLUUID image_asset_id = texture_ctrl->getImageAssetID(); 1290 {
1291 LLViewerImage* img = gImageList.getImage(image_asset_id); 1291 std::string buffer;
1292 S32 components = img->getComponents(); 1292 buffer = llformat("texture_detail_%d", i);
1293 // Must ask for highest resolution version's width. JC 1293 LLTextureCtrl* texture_ctrl = getChild<LLTextureCtrl>(buffer);
1294 S32 width = img->getWidth(0); 1294 if (!texture_ctrl) continue;
1295 S32 height = img->getHeight(0); 1295
1296 1296 LLUUID image_asset_id = texture_ctrl->getImageAssetID();
1297 //llinfos << "texture detail " << i << " is " << width << "x" << height << "x" << components << llendl; 1297 LLViewerImage* img = gImageList.getImage(image_asset_id);
1298 1298 S32 components = img->getComponents();
1299 if (components != 3) 1299 // Must ask for highest resolution version's width. JC
1300 { 1300 S32 width = img->getWidth(0);
1301 LLSD args; 1301 S32 height = img->getHeight(0);
1302 args["TEXTURE_NUM"] = i+1; 1302
1303 args["TEXTURE_BIT_DEPTH"] = llformat("%d",components * 8); 1303 //llinfos << "texture detail " << i << " is " << width << "x" << height << "x" << components << llendl;
1304 LLNotifications::instance().add("InvalidTerrainBitDepth", args); 1304
1305 return FALSE; 1305 if (components != 3)
1306 } 1306 {
1307 1307 LLSD args;
1308 if (width > 512 || height > 512) 1308 args["TEXTURE_NUM"] = i+1;
1309 { 1309 args["TEXTURE_BIT_DEPTH"] = llformat("%d",components * 8);
1310 1310 LLNotifications::instance().add("InvalidTerrainBitDepth", args);
1311 LLSD args; 1311 return FALSE;
1312 args["TEXTURE_NUM"] = i+1; 1312 }
1313 args["TEXTURE_SIZE_X"] = width; 1313
1314 args["TEXTURE_SIZE_Y"] = height; 1314 if (width > 512 || height > 512)
1315 LLNotifications::instance().add("InvalidTerrainSize", args); 1315 {
1316 return FALSE; 1316
1317 1317 LLSD args;
1318 } 1318 args["TEXTURE_NUM"] = i+1;
1319 } 1319 args["TEXTURE_SIZE_X"] = width;
1320 1320 args["TEXTURE_SIZE_Y"] = height;
1321 return TRUE; 1321 LLNotifications::instance().add("InvalidTerrainSize", args);
1322} 1322 return FALSE;
1323 1323
1324 1324 }
1325// static 1325 }
1326void LLPanelRegionTextureInfo::onClickDump(void* data) 1326
1327{ 1327 return TRUE;
1328 llinfos << "LLPanelRegionTextureInfo::onClickDump()" << llendl; 1328}
1329} 1329
1330 1330
1331 1331// static
1332///////////////////////////////////////////////////////////////////////////// 1332void LLPanelRegionTextureInfo::onClickDump(void* data)
1333// LLPanelRegionTerrainInfo 1333{
1334///////////////////////////////////////////////////////////////////////////// 1334 llinfos << "LLPanelRegionTextureInfo::onClickDump()" << llendl;
1335BOOL LLPanelRegionTerrainInfo::postBuild() 1335}
1336{ 1336
1337 LLPanelRegionInfo::postBuild(); 1337
1338 1338/////////////////////////////////////////////////////////////////////////////
1339 initHelpBtn("water_height_help", "HelpRegionWaterHeight"); 1339// LLPanelRegionTerrainInfo
1340 initHelpBtn("terrain_raise_help", "HelpRegionTerrainRaise"); 1340/////////////////////////////////////////////////////////////////////////////
1341 initHelpBtn("terrain_lower_help", "HelpRegionTerrainLower"); 1341BOOL LLPanelRegionTerrainInfo::postBuild()
1342 initHelpBtn("upload_raw_help", "HelpRegionUploadRaw"); 1342{
1343 initHelpBtn("download_raw_help", "HelpRegionDownloadRaw"); 1343 LLPanelRegionInfo::postBuild();
1344 initHelpBtn("use_estate_sun_help", "HelpRegionUseEstateSun"); 1344
1345 initHelpBtn("fixed_sun_help", "HelpRegionFixedSun"); 1345 initHelpBtn("water_height_help", "HelpRegionWaterHeight");
1346 initHelpBtn("bake_terrain_help", "HelpRegionBakeTerrain"); 1346 initHelpBtn("terrain_raise_help", "HelpRegionTerrainRaise");
1347 1347 initHelpBtn("terrain_lower_help", "HelpRegionTerrainLower");
1348 initCtrl("water_height_spin"); 1348 initHelpBtn("upload_raw_help", "HelpRegionUploadRaw");
1349 initCtrl("terrain_raise_spin"); 1349 initHelpBtn("download_raw_help", "HelpRegionDownloadRaw");
1350 initCtrl("terrain_lower_spin"); 1350 initHelpBtn("use_estate_sun_help", "HelpRegionUseEstateSun");
1351 1351 initHelpBtn("fixed_sun_help", "HelpRegionFixedSun");
1352 initCtrl("fixed_sun_check"); 1352 initHelpBtn("bake_terrain_help", "HelpRegionBakeTerrain");
1353 childSetCommitCallback("fixed_sun_check", onChangeFixedSun, this); 1353
1354 childSetCommitCallback("use_estate_sun_check", onChangeUseEstateTime, this); 1354 initCtrl("water_height_spin");
1355 childSetCommitCallback("sun_hour_slider", onChangeSunHour, this); 1355 initCtrl("terrain_raise_spin");
1356 1356 initCtrl("terrain_lower_spin");
1357 childSetAction("download_raw_btn", onClickDownloadRaw, this); 1357
1358 childSetAction("upload_raw_btn", onClickUploadRaw, this); 1358 initCtrl("fixed_sun_check");
1359 childSetAction("bake_terrain_btn", onClickBakeTerrain, this); 1359 childSetCommitCallback("fixed_sun_check", onChangeFixedSun, this);
1360 1360 childSetCommitCallback("use_estate_sun_check", onChangeUseEstateTime, this);
1361 return TRUE; 1361 childSetCommitCallback("sun_hour_slider", onChangeSunHour, this);
1362} 1362
1363 1363 childSetAction("download_raw_btn", onClickDownloadRaw, this);
1364// virtual 1364 childSetAction("upload_raw_btn", onClickUploadRaw, this);
1365bool LLPanelRegionTerrainInfo::refreshFromRegion(LLViewerRegion* region) 1365 childSetAction("bake_terrain_btn", onClickBakeTerrain, this);
1366{ 1366
1367 llinfos << "LLPanelRegionTerrainInfo::refreshFromRegion" << llendl; 1367 return TRUE;
1368 1368}
1369 BOOL owner_or_god = gAgent.isGodlike() 1369
1370 || (region && (region->getOwner() == gAgent.getID())); 1370// virtual
1371 BOOL owner_or_god_or_manager = owner_or_god 1371bool LLPanelRegionTerrainInfo::refreshFromRegion(LLViewerRegion* region)
1372 || (region && region->isEstateManager()); 1372{
1373 setCtrlsEnabled(owner_or_god_or_manager); 1373 llinfos << "LLPanelRegionTerrainInfo::refreshFromRegion" << llendl;
1374 childDisable("apply_btn"); 1374
1375 1375 BOOL owner_or_god = gAgent.isGodlike()
1376 childSetEnabled("download_raw_btn", owner_or_god); 1376 || (region && (region->getOwner() == gAgent.getID()));
1377 childSetEnabled("upload_raw_btn", owner_or_god); 1377 BOOL owner_or_god_or_manager = owner_or_god
1378 childSetEnabled("bake_terrain_btn", owner_or_god); 1378 || (region && region->isEstateManager());
1379 1379 setCtrlsEnabled(owner_or_god_or_manager);
1380 return LLPanelRegionInfo::refreshFromRegion(region); 1380 childDisable("apply_btn");
1381} 1381
1382 1382 childSetEnabled("download_raw_btn", owner_or_god);
1383// virtual 1383 childSetEnabled("upload_raw_btn", owner_or_god);
1384BOOL LLPanelRegionTerrainInfo::sendUpdate() 1384 childSetEnabled("bake_terrain_btn", owner_or_god);
1385{ 1385
1386 llinfos << "LLPanelRegionTerrainInfo::sendUpdate" << llendl; 1386 return LLPanelRegionInfo::refreshFromRegion(region);
1387 std::string buffer; 1387}
1388 strings_t strings; 1388
1389 LLUUID invoice(LLFloaterRegionInfo::getLastInvoice()); 1389// virtual
1390 1390BOOL LLPanelRegionTerrainInfo::sendUpdate()
1391 buffer = llformat("%f", (F32)childGetValue("water_height_spin").asReal()); 1391{
1392 strings.push_back(buffer); 1392 llinfos << "LLPanelRegionTerrainInfo::sendUpdate" << llendl;
1393 buffer = llformat("%f", (F32)childGetValue("terrain_raise_spin").asReal()); 1393 std::string buffer;
1394 strings.push_back(buffer); 1394 strings_t strings;
1395 buffer = llformat("%f", (F32)childGetValue("terrain_lower_spin").asReal()); 1395 LLUUID invoice(LLFloaterRegionInfo::getLastInvoice());
1396 strings.push_back(buffer); 1396
1397 buffer = llformat("%s", (childGetValue("use_estate_sun_check").asBoolean() ? "Y" : "N")); 1397 buffer = llformat("%f", (F32)childGetValue("water_height_spin").asReal());
1398 strings.push_back(buffer); 1398 strings.push_back(buffer);
1399 buffer = llformat("%s", (childGetValue("fixed_sun_check").asBoolean() ? "Y" : "N")); 1399 buffer = llformat("%f", (F32)childGetValue("terrain_raise_spin").asReal());
1400 strings.push_back(buffer); 1400 strings.push_back(buffer);
1401 buffer = llformat("%f", (F32)childGetValue("sun_hour_slider").asReal() ); 1401 buffer = llformat("%f", (F32)childGetValue("terrain_lower_spin").asReal());
1402 strings.push_back(buffer); 1402 strings.push_back(buffer);
1403 1403 buffer = llformat("%s", (childGetValue("use_estate_sun_check").asBoolean() ? "Y" : "N"));
1404 // Grab estate information in case the user decided to set the 1404 strings.push_back(buffer);
1405 // region back to estate time. JC 1405 buffer = llformat("%s", (childGetValue("fixed_sun_check").asBoolean() ? "Y" : "N"));
1406 LLFloaterRegionInfo* floater = LLFloaterRegionInfo::getInstance(); 1406 strings.push_back(buffer);
1407 if (!floater) return true; 1407 buffer = llformat("%f", (F32)childGetValue("sun_hour_slider").asReal() );
1408 1408 strings.push_back(buffer);
1409 LLTabContainer* tab = floater->getChild<LLTabContainer>("region_panels"); 1409
1410 if (!tab) return true; 1410 // Grab estate information in case the user decided to set the
1411 1411 // region back to estate time. JC
1412 LLPanelEstateInfo* panel = (LLPanelEstateInfo*)tab->getChild<LLPanel>("Estate"); 1412 LLFloaterRegionInfo* floater = LLFloaterRegionInfo::getInstance();
1413 if (!panel) return true; 1413 if (!floater) return true;
1414 1414
1415 BOOL estate_global_time = panel->getGlobalTime(); 1415 LLTabContainer* tab = floater->getChild<LLTabContainer>("region_panels");
1416 BOOL estate_fixed_sun = panel->getFixedSun(); 1416 if (!tab) return true;
1417 F32 estate_sun_hour; 1417
1418 if (estate_global_time) 1418 LLPanelEstateInfo* panel = (LLPanelEstateInfo*)tab->getChild<LLPanel>("Estate");
1419 { 1419 if (!panel) return true;
1420 estate_sun_hour = 0.f; 1420
1421 } 1421 BOOL estate_global_time = panel->getGlobalTime();
1422 else 1422 BOOL estate_fixed_sun = panel->getFixedSun();
1423 { 1423 F32 estate_sun_hour;
1424 estate_sun_hour = panel->getSunHour(); 1424 if (estate_global_time)
1425 } 1425 {
1426 1426 estate_sun_hour = 0.f;
1427 buffer = llformat("%s", (estate_global_time ? "Y" : "N") ); 1427 }
1428 strings.push_back(buffer); 1428 else
1429 buffer = llformat("%s", (estate_fixed_sun ? "Y" : "N") ); 1429 {
1430 strings.push_back(buffer); 1430 estate_sun_hour = panel->getSunHour();
1431 buffer = llformat("%f", estate_sun_hour); 1431 }
1432 strings.push_back(buffer); 1432
1433 1433 buffer = llformat("%s", (estate_global_time ? "Y" : "N") );
1434 sendEstateOwnerMessage(gMessageSystem, "setregionterrain", invoice, strings); 1434 strings.push_back(buffer);
1435 return TRUE; 1435 buffer = llformat("%s", (estate_fixed_sun ? "Y" : "N") );
1436} 1436 strings.push_back(buffer);
1437 1437 buffer = llformat("%f", estate_sun_hour);
1438// static 1438 strings.push_back(buffer);
1439void LLPanelRegionTerrainInfo::onChangeUseEstateTime(LLUICtrl* ctrl, void* user_data) 1439
1440{ 1440 sendEstateOwnerMessage(gMessageSystem, "setregionterrain", invoice, strings);
1441 LLPanelRegionTerrainInfo* panel = (LLPanelRegionTerrainInfo*) user_data; 1441 return TRUE;
1442 if (!panel) return; 1442}
1443 BOOL use_estate_sun = panel->childGetValue("use_estate_sun_check").asBoolean(); 1443
1444 panel->childSetEnabled("fixed_sun_check", !use_estate_sun); 1444// static
1445 panel->childSetEnabled("sun_hour_slider", !use_estate_sun); 1445void LLPanelRegionTerrainInfo::onChangeUseEstateTime(LLUICtrl* ctrl, void* user_data)
1446 if (use_estate_sun) 1446{
1447 { 1447 LLPanelRegionTerrainInfo* panel = (LLPanelRegionTerrainInfo*) user_data;
1448 panel->childSetValue("fixed_sun_check", LLSD(FALSE)); 1448 if (!panel) return;
1449 panel->childSetValue("sun_hour_slider", LLSD(0.f)); 1449 BOOL use_estate_sun = panel->childGetValue("use_estate_sun_check").asBoolean();
1450 } 1450 panel->childSetEnabled("fixed_sun_check", !use_estate_sun);
1451 panel->childEnable("apply_btn"); 1451 panel->childSetEnabled("sun_hour_slider", !use_estate_sun);
1452} 1452 if (use_estate_sun)
1453 1453 {
1454// static 1454 panel->childSetValue("fixed_sun_check", LLSD(FALSE));
1455void LLPanelRegionTerrainInfo::onChangeFixedSun(LLUICtrl* ctrl, void* user_data) 1455 panel->childSetValue("sun_hour_slider", LLSD(0.f));
1456{ 1456 }
1457 LLPanelRegionTerrainInfo* panel = (LLPanelRegionTerrainInfo*) user_data; 1457 panel->childEnable("apply_btn");
1458 if (!panel) return; 1458}
1459 // Just enable the apply button. We let the sun-hour slider be enabled 1459
1460 // for both fixed-sun and non-fixed-sun. JC 1460// static
1461 panel->childEnable("apply_btn"); 1461void LLPanelRegionTerrainInfo::onChangeFixedSun(LLUICtrl* ctrl, void* user_data)
1462} 1462{
1463 1463 LLPanelRegionTerrainInfo* panel = (LLPanelRegionTerrainInfo*) user_data;
1464// static 1464 if (!panel) return;
1465void LLPanelRegionTerrainInfo::onChangeSunHour(LLUICtrl* ctrl, void*) 1465 // Just enable the apply button. We let the sun-hour slider be enabled
1466{ 1466 // for both fixed-sun and non-fixed-sun. JC
1467 // can't use userdata to get panel, slider uses it internally 1467 panel->childEnable("apply_btn");
1468 LLPanelRegionTerrainInfo* panel = (LLPanelRegionTerrainInfo*) ctrl->getParent(); 1468}
1469 if (!panel) return; 1469
1470 panel->childEnable("apply_btn"); 1470// static
1471} 1471void LLPanelRegionTerrainInfo::onChangeSunHour(LLUICtrl* ctrl, void*)
1472 1472{
1473// static 1473 // can't use userdata to get panel, slider uses it internally
1474void LLPanelRegionTerrainInfo::onClickDownloadRaw(void* data) 1474 LLPanelRegionTerrainInfo* panel = (LLPanelRegionTerrainInfo*) ctrl->getParent();
1475{ 1475 if (!panel) return;
1476 LLFilePicker& picker = LLFilePicker::instance(); 1476 panel->childEnable("apply_btn");
1477 if (!picker.getSaveFile(LLFilePicker::FFSAVE_RAW, "terrain.raw")) 1477}
1478 { 1478
1479 llwarns << "No file" << llendl; 1479// static
1480 return; 1480void LLPanelRegionTerrainInfo::onClickDownloadRaw(void* data)
1481 } 1481{
1482 std::string filepath = picker.getFirstFile(); 1482 LLFilePicker& picker = LLFilePicker::instance();
1483 gXferManager->expectFileForRequest(filepath); 1483 if (!picker.getSaveFile(LLFilePicker::FFSAVE_RAW, "terrain.raw"))
1484 1484 {
1485 LLPanelRegionTerrainInfo* self = (LLPanelRegionTerrainInfo*)data; 1485 llwarns << "No file" << llendl;
1486 strings_t strings; 1486 return;
1487 strings.push_back("download filename"); 1487 }
1488 strings.push_back(filepath); 1488 std::string filepath = picker.getFirstFile();
1489 LLUUID invoice(LLFloaterRegionInfo::getLastInvoice()); 1489 gXferManager->expectFileForRequest(filepath);
1490 self->sendEstateOwnerMessage(gMessageSystem, "terrain", invoice, strings); 1490
1491} 1491 LLPanelRegionTerrainInfo* self = (LLPanelRegionTerrainInfo*)data;
1492 1492 strings_t strings;
1493// static 1493 strings.push_back("download filename");
1494void LLPanelRegionTerrainInfo::onClickUploadRaw(void* data) 1494 strings.push_back(filepath);
1495{ 1495 LLUUID invoice(LLFloaterRegionInfo::getLastInvoice());
1496 LLFilePicker& picker = LLFilePicker::instance(); 1496 self->sendEstateOwnerMessage(gMessageSystem, "terrain", invoice, strings);
1497 if (!picker.getOpenFile(LLFilePicker::FFLOAD_RAW)) 1497}
1498 { 1498
1499 llwarns << "No file" << llendl; 1499// static
1500 return; 1500void LLPanelRegionTerrainInfo::onClickUploadRaw(void* data)
1501 } 1501{
1502 std::string filepath = picker.getFirstFile(); 1502 LLFilePicker& picker = LLFilePicker::instance();
1503 gXferManager->expectFileForTransfer(filepath); 1503 if (!picker.getOpenFile(LLFilePicker::FFLOAD_RAW))
1504 1504 {
1505 LLPanelRegionTerrainInfo* self = (LLPanelRegionTerrainInfo*)data; 1505 llwarns << "No file" << llendl;
1506 strings_t strings; 1506 return;
1507 strings.push_back("upload filename"); 1507 }
1508 strings.push_back(filepath); 1508 std::string filepath = picker.getFirstFile();
1509 LLUUID invoice(LLFloaterRegionInfo::getLastInvoice()); 1509 gXferManager->expectFileForTransfer(filepath);
1510 self->sendEstateOwnerMessage(gMessageSystem, "terrain", invoice, strings); 1510
1511 1511 LLPanelRegionTerrainInfo* self = (LLPanelRegionTerrainInfo*)data;
1512 LLNotifications::instance().add("RawUploadStarted"); 1512 strings_t strings;
1513} 1513 strings.push_back("upload filename");
1514 1514 strings.push_back(filepath);
1515// static 1515 LLUUID invoice(LLFloaterRegionInfo::getLastInvoice());
1516void LLPanelRegionTerrainInfo::onClickBakeTerrain(void* data) 1516 self->sendEstateOwnerMessage(gMessageSystem, "terrain", invoice, strings);
1517{ 1517
1518 LLNotifications::instance().add( 1518 LLNotifications::instance().add("RawUploadStarted");
1519 LLNotification::Params("ConfirmBakeTerrain") 1519}
1520 .functor(boost::bind(&LLPanelRegionTerrainInfo::callbackBakeTerrain, (LLPanelRegionTerrainInfo*)data, _1, _2))); 1520
1521} 1521// static
1522 1522void LLPanelRegionTerrainInfo::onClickBakeTerrain(void* data)
1523bool LLPanelRegionTerrainInfo::callbackBakeTerrain(const LLSD& notification, const LLSD& response) 1523{
1524{ 1524 LLNotifications::instance().add(
1525 S32 option = LLNotification::getSelectedOption(notification, response); 1525 LLNotification::Params("ConfirmBakeTerrain")
1526 if (option != 0) return false; 1526 .functor(boost::bind(&LLPanelRegionTerrainInfo::callbackBakeTerrain, (LLPanelRegionTerrainInfo*)data, _1, _2)));
1527 1527}
1528 strings_t strings; 1528
1529 strings.push_back("bake"); 1529bool LLPanelRegionTerrainInfo::callbackBakeTerrain(const LLSD& notification, const LLSD& response)
1530 LLUUID invoice(LLFloaterRegionInfo::getLastInvoice()); 1530{
1531 sendEstateOwnerMessage(gMessageSystem, "terrain", invoice, strings); 1531 S32 option = LLNotification::getSelectedOption(notification, response);
1532 return false; 1532 if (option != 0) return false;
1533} 1533
1534 1534 strings_t strings;
1535///////////////////////////////////////////////////////////////////////////// 1535 strings.push_back("bake");
1536// LLPanelEstateInfo 1536 LLUUID invoice(LLFloaterRegionInfo::getLastInvoice());
1537// 1537 sendEstateOwnerMessage(gMessageSystem, "terrain", invoice, strings);
1538 1538 return false;
1539LLPanelEstateInfo::LLPanelEstateInfo() 1539}
1540: LLPanelRegionInfo(), 1540
1541 mEstateID(0) // invalid 1541/////////////////////////////////////////////////////////////////////////////
1542{ 1542// LLPanelEstateInfo
1543} 1543//
1544 1544
1545// static 1545LLPanelEstateInfo::LLPanelEstateInfo()
1546void LLPanelEstateInfo::initDispatch(LLDispatcher& dispatch) 1546: LLPanelRegionInfo(),
1547{ 1547 mEstateID(0) // invalid
1548 std::string name; 1548{
1549 1549}
1550// name.assign("setowner"); 1550
1551// static LLDispatchSetEstateOwner set_owner; 1551// static
1552// dispatch.addHandler(name, &set_owner); 1552void LLPanelEstateInfo::initDispatch(LLDispatcher& dispatch)
1553 1553{
1554 name.assign("estateupdateinfo"); 1554 std::string name;
1555 static LLDispatchEstateUpdateInfo estate_update_info; 1555
1556 dispatch.addHandler(name, &estate_update_info); 1556// name.assign("setowner");
1557 1557// static LLDispatchSetEstateOwner set_owner;
1558 name.assign("setaccess"); 1558// dispatch.addHandler(name, &set_owner);
1559 static LLDispatchSetEstateAccess set_access; 1559
1560 dispatch.addHandler(name, &set_access); 1560 name.assign("estateupdateinfo");
1561 1561 static LLDispatchEstateUpdateInfo estate_update_info;
1562 estate_dispatch_initialized = true; 1562 dispatch.addHandler(name, &estate_update_info);
1563} 1563
1564 1564 name.assign("setaccess");
1565// static 1565 static LLDispatchSetEstateAccess set_access;
1566// Disables the sun-hour slider and the use fixed time check if the use global time is check 1566 dispatch.addHandler(name, &set_access);
1567void LLPanelEstateInfo::onChangeUseGlobalTime(LLUICtrl* ctrl, void* user_data) 1567
1568{ 1568 estate_dispatch_initialized = true;
1569 LLPanelEstateInfo* panel = (LLPanelEstateInfo*) user_data; 1569}
1570 if (panel) 1570
1571 { 1571// static
1572 bool enabled = !panel->childGetValue("use_global_time_check").asBoolean(); 1572// Disables the sun-hour slider and the use fixed time check if the use global time is check
1573 panel->childSetEnabled("sun_hour_slider", enabled); 1573void LLPanelEstateInfo::onChangeUseGlobalTime(LLUICtrl* ctrl, void* user_data)
1574 panel->childSetEnabled("fixed_sun_check", enabled); 1574{
1575 panel->childSetValue("fixed_sun_check", LLSD(FALSE)); 1575 LLPanelEstateInfo* panel = (LLPanelEstateInfo*) user_data;
1576 panel->enableButton("apply_btn"); 1576 if (panel)
1577 } 1577 {
1578} 1578 bool enabled = !panel->childGetValue("use_global_time_check").asBoolean();
1579 1579 panel->childSetEnabled("sun_hour_slider", enabled);
1580// Enables the sun-hour slider if the fixed-sun checkbox is set 1580 panel->childSetEnabled("fixed_sun_check", enabled);
1581void LLPanelEstateInfo::onChangeFixedSun(LLUICtrl* ctrl, void* user_data) 1581 panel->childSetValue("fixed_sun_check", LLSD(FALSE));
1582{ 1582 panel->enableButton("apply_btn");
1583 LLPanelEstateInfo* panel = (LLPanelEstateInfo*) user_data; 1583 }
1584 if (panel) 1584}
1585 { 1585
1586 bool enabled = !panel->childGetValue("fixed_sun_check").asBoolean(); 1586// Enables the sun-hour slider if the fixed-sun checkbox is set
1587 panel->childSetEnabled("use_global_time_check", enabled); 1587void LLPanelEstateInfo::onChangeFixedSun(LLUICtrl* ctrl, void* user_data)
1588 panel->childSetValue("use_global_time_check", LLSD(FALSE)); 1588{
1589 panel->enableButton("apply_btn"); 1589 LLPanelEstateInfo* panel = (LLPanelEstateInfo*) user_data;
1590 } 1590 if (panel)
1591} 1591 {
1592 1592 bool enabled = !panel->childGetValue("fixed_sun_check").asBoolean();
1593 1593 panel->childSetEnabled("use_global_time_check", enabled);
1594 1594 panel->childSetValue("use_global_time_check", LLSD(FALSE));
1595 1595 panel->enableButton("apply_btn");
1596//--------------------------------------------------------------------------- 1596 }
1597// Add/Remove estate access button callbacks 1597}
1598//--------------------------------------------------------------------------- 1598
1599void LLPanelEstateInfo::onClickEditSky(void* user_data) 1599
1600{ 1600
1601 LLFloaterWindLight::show(); 1601
1602} 1602//---------------------------------------------------------------------------
1603 1603// Add/Remove estate access button callbacks
1604void LLPanelEstateInfo::onClickEditDayCycle(void* user_data) 1604//---------------------------------------------------------------------------
1605{ 1605void LLPanelEstateInfo::onClickEditSky(void* user_data)
1606 LLFloaterDayCycle::show(); 1606{
1607} 1607 LLFloaterWindLight::show();
1608 1608}
1609// static 1609
1610void LLPanelEstateInfo::onClickAddAllowedAgent(void* user_data) 1610void LLPanelEstateInfo::onClickEditDayCycle(void* user_data)
1611{ 1611{
1612 LLPanelEstateInfo* self = (LLPanelEstateInfo*)user_data; 1612 LLFloaterDayCycle::show();
1613 LLCtrlListInterface *list = self->childGetListInterface("allowed_avatar_name_list"); 1613}
1614 if (!list) return; 1614
1615 if (list->getItemCount() >= ESTATE_MAX_ACCESS_IDS) 1615// static
1616 { 1616void LLPanelEstateInfo::onClickAddAllowedAgent(void* user_data)
1617 //args 1617{
1618 1618 LLPanelEstateInfo* self = (LLPanelEstateInfo*)user_data;
1619 LLSD args; 1619 LLCtrlListInterface *list = self->childGetListInterface("allowed_avatar_name_list");
1620 args["MAX_AGENTS"] = llformat("%d",ESTATE_MAX_ACCESS_IDS); 1620 if (!list) return;
1621 LLNotifications::instance().add("MaxAllowedAgentOnRegion", args); 1621 if (list->getItemCount() >= ESTATE_MAX_ACCESS_IDS)
1622 return; 1622 {
1623 } 1623 //args
1624 accessAddCore(ESTATE_ACCESS_ALLOWED_AGENT_ADD, "EstateAllowedAgentAdd"); 1624
1625} 1625 LLSD args;
1626 1626 args["MAX_AGENTS"] = llformat("%d",ESTATE_MAX_ACCESS_IDS);
1627// static 1627 LLNotifications::instance().add("MaxAllowedAgentOnRegion", args);
1628void LLPanelEstateInfo::onClickRemoveAllowedAgent(void* user_data) 1628 return;
1629{ 1629 }
1630 accessRemoveCore(ESTATE_ACCESS_ALLOWED_AGENT_REMOVE, "EstateAllowedAgentRemove", "allowed_avatar_name_list"); 1630 accessAddCore(ESTATE_ACCESS_ALLOWED_AGENT_ADD, "EstateAllowedAgentAdd");
1631} 1631}
1632 1632
1633// static 1633// static
1634void LLPanelEstateInfo::onClickAddAllowedGroup(void* user_data) 1634void LLPanelEstateInfo::onClickRemoveAllowedAgent(void* user_data)
1635{ 1635{
1636 LLPanelEstateInfo* self = (LLPanelEstateInfo*)user_data; 1636 accessRemoveCore(ESTATE_ACCESS_ALLOWED_AGENT_REMOVE, "EstateAllowedAgentRemove", "allowed_avatar_name_list");
1637 LLCtrlListInterface *list = self->childGetListInterface("allowed_group_name_list"); 1637}
1638 if (!list) return; 1638
1639 if (list->getItemCount() >= ESTATE_MAX_ACCESS_IDS) 1639// static
1640 { 1640void LLPanelEstateInfo::onClickAddAllowedGroup(void* user_data)
1641 LLSD args; 1641{
1642 args["MAX_GROUPS"] = llformat("%d",ESTATE_MAX_ACCESS_IDS); 1642 LLPanelEstateInfo* self = (LLPanelEstateInfo*)user_data;
1643 LLNotifications::instance().add("MaxAllowedGroupsOnRegion", args); 1643 LLCtrlListInterface *list = self->childGetListInterface("allowed_group_name_list");
1644 return; 1644 if (!list) return;
1645 } 1645 if (list->getItemCount() >= ESTATE_MAX_ACCESS_IDS)
1646 1646 {
1647 LLNotification::Params params("PfftLindenCrap"); 1647 LLSD args;
1648 params.functor(boost::bind(&LLPanelEstateInfo::addAllowedGroup, self, _1, _2)); 1648 args["MAX_GROUPS"] = llformat("%d",ESTATE_MAX_ACCESS_IDS);
1649 LLNotifications::instance().forceResponse(params, 0); 1649 LLNotifications::instance().add("MaxAllowedGroupsOnRegion", args);
1650} 1650 return;
1651 1651 }
1652bool LLPanelEstateInfo::addAllowedGroup(const LLSD& notification, const LLSD& response) 1652
1653{ 1653 LLNotification::Params params("ChangeLindenAccess");
1654 S32 option = LLNotification::getSelectedOption(notification, response); 1654 params.functor(boost::bind(&LLPanelEstateInfo::addAllowedGroup, self, _1, _2));
1655 if (option != 0) return false; 1655 if (isLindenEstate())
1656 1656 {
1657 LLFloater* parent_floater = gFloaterView->getParentFloater(this); 1657 LLNotifications::instance().add(params);
1658 1658 }
1659 LLFloaterGroupPicker* widget; 1659 else
1660 widget = LLFloaterGroupPicker::showInstance(LLSD(gAgent.getID())); 1660 {
1661 if (widget) 1661 LLNotifications::instance().forceResponse(params, 0);
1662 { 1662 }
1663 widget->setSelectCallback(addAllowedGroup2, NULL); 1663}
1664 if (parent_floater) 1664
1665 { 1665bool LLPanelEstateInfo::addAllowedGroup(const LLSD& notification, const LLSD& response)
1666 LLRect new_rect = gFloaterView->findNeighboringPosition(parent_floater, widget); 1666{
1667 widget->setOrigin(new_rect.mLeft, new_rect.mBottom); 1667 S32 option = LLNotification::getSelectedOption(notification, response);
1668 parent_floater->addDependentFloater(widget); 1668 if (option != 0) return false;
1669 } 1669
1670 } 1670 LLFloater* parent_floater = gFloaterView->getParentFloater(this);
1671 1671
1672 return false; 1672 LLFloaterGroupPicker* widget;
1673} 1673 widget = LLFloaterGroupPicker::showInstance(LLSD(gAgent.getID()));
1674 1674 if (widget)
1675// static 1675 {
1676void LLPanelEstateInfo::onClickRemoveAllowedGroup(void* user_data) 1676 widget->setSelectCallback(addAllowedGroup2, NULL);
1677{ 1677 if (parent_floater)
1678 accessRemoveCore(ESTATE_ACCESS_ALLOWED_GROUP_REMOVE, "EstateAllowedGroupRemove", "allowed_group_name_list"); 1678 {
1679} 1679 LLRect new_rect = gFloaterView->findNeighboringPosition(parent_floater, widget);
1680 1680 widget->setOrigin(new_rect.mLeft, new_rect.mBottom);
1681// static 1681 parent_floater->addDependentFloater(widget);
1682void LLPanelEstateInfo::onClickAddBannedAgent(void* user_data) 1682 }
1683{ 1683 }
1684 LLPanelEstateInfo* self = (LLPanelEstateInfo*)user_data; 1684
1685 LLCtrlListInterface *list = self->childGetListInterface("banned_avatar_name_list"); 1685 return false;
1686 if (!list) return; 1686}
1687 if (list->getItemCount() >= ESTATE_MAX_ACCESS_IDS) 1687
1688 { 1688// static
1689 LLSD args; 1689void LLPanelEstateInfo::onClickRemoveAllowedGroup(void* user_data)
1690 args["MAX_BANNED"] = llformat("%d",ESTATE_MAX_ACCESS_IDS); 1690{
1691 LLNotifications::instance().add("MaxBannedAgentsOnRegion", args); 1691 accessRemoveCore(ESTATE_ACCESS_ALLOWED_GROUP_REMOVE, "EstateAllowedGroupRemove", "allowed_group_name_list");
1692 return; 1692}
1693 } 1693
1694 accessAddCore(ESTATE_ACCESS_BANNED_AGENT_ADD, "EstateBannedAgentAdd"); 1694// static
1695} 1695void LLPanelEstateInfo::onClickAddBannedAgent(void* user_data)
1696 1696{
1697// static 1697 LLPanelEstateInfo* self = (LLPanelEstateInfo*)user_data;
1698void LLPanelEstateInfo::onClickRemoveBannedAgent(void* user_data) 1698 LLCtrlListInterface *list = self->childGetListInterface("banned_avatar_name_list");
1699{ 1699 if (!list) return;
1700 accessRemoveCore(ESTATE_ACCESS_BANNED_AGENT_REMOVE, "EstateBannedAgentRemove", "banned_avatar_name_list"); 1700 if (list->getItemCount() >= ESTATE_MAX_ACCESS_IDS)
1701} 1701 {
1702 1702 LLSD args;
1703// static 1703 args["MAX_BANNED"] = llformat("%d",ESTATE_MAX_ACCESS_IDS);
1704void LLPanelEstateInfo::onClickAddEstateManager(void* user_data) 1704 LLNotifications::instance().add("MaxBannedAgentsOnRegion", args);
1705{ 1705 return;
1706 LLPanelEstateInfo* self = (LLPanelEstateInfo*)user_data; 1706 }
1707 LLCtrlListInterface *list = self->childGetListInterface("estate_manager_name_list"); 1707 accessAddCore(ESTATE_ACCESS_BANNED_AGENT_ADD, "EstateBannedAgentAdd");
1708 if (!list) return; 1708}
1709 if (list->getItemCount() >= ESTATE_MAX_MANAGERS) 1709
1710 { // Tell user they can't add more managers 1710// static
1711 LLSD args; 1711void LLPanelEstateInfo::onClickRemoveBannedAgent(void* user_data)
1712 args["MAX_MANAGER"] = llformat("%d",ESTATE_MAX_MANAGERS); 1712{
1713 LLNotifications::instance().add("MaxManagersOnRegion", args); 1713 accessRemoveCore(ESTATE_ACCESS_BANNED_AGENT_REMOVE, "EstateBannedAgentRemove", "banned_avatar_name_list");
1714 } 1714}
1715 else 1715
1716 { // Go pick managers to add 1716// static
1717 accessAddCore(ESTATE_ACCESS_MANAGER_ADD, "EstateManagerAdd"); 1717void LLPanelEstateInfo::onClickAddEstateManager(void* user_data)
1718 } 1718{
1719} 1719 LLPanelEstateInfo* self = (LLPanelEstateInfo*)user_data;
1720 1720 LLCtrlListInterface *list = self->childGetListInterface("estate_manager_name_list");
1721// static 1721 if (!list) return;
1722void LLPanelEstateInfo::onClickRemoveEstateManager(void* user_data) 1722 if (list->getItemCount() >= ESTATE_MAX_MANAGERS)
1723{ 1723 { // Tell user they can't add more managers
1724 accessRemoveCore(ESTATE_ACCESS_MANAGER_REMOVE, "EstateManagerRemove", "estate_manager_name_list"); 1724 LLSD args;
1725} 1725 args["MAX_MANAGER"] = llformat("%d",ESTATE_MAX_MANAGERS);
1726 1726 LLNotifications::instance().add("MaxManagersOnRegion", args);
1727//--------------------------------------------------------------------------- 1727 }
1728// Kick from estate methods 1728 else
1729//--------------------------------------------------------------------------- 1729 { // Go pick managers to add
1730struct LLKickFromEstateInfo 1730 accessAddCore(ESTATE_ACCESS_MANAGER_ADD, "EstateManagerAdd");
1731{ 1731 }
1732 LLPanelEstateInfo *mEstatePanelp; 1732}
1733 LLUUID mAgentID; 1733
1734}; 1734// static
1735 1735void LLPanelEstateInfo::onClickRemoveEstateManager(void* user_data)
1736void LLPanelEstateInfo::onClickKickUser(void *user_data) 1736{
1737{ 1737 accessRemoveCore(ESTATE_ACCESS_MANAGER_REMOVE, "EstateManagerRemove", "estate_manager_name_list");
1738 LLPanelEstateInfo* panelp = (LLPanelEstateInfo*)user_data; 1738}
1739 1739
1740 // this depends on the grandparent view being a floater 1740//---------------------------------------------------------------------------
1741 // in order to set up floater dependency 1741// Kick from estate methods
1742 LLFloater* parent_floater = gFloaterView->getParentFloater(panelp); 1742//---------------------------------------------------------------------------
1743 LLFloater* child_floater = LLFloaterAvatarPicker::show(LLPanelEstateInfo::onKickUserCommit, user_data, FALSE, TRUE); 1743struct LLKickFromEstateInfo
1744 parent_floater->addDependentFloater(child_floater); 1744{
1745} 1745 LLPanelEstateInfo *mEstatePanelp;
1746 1746 LLUUID mAgentID;
1747void LLPanelEstateInfo::onKickUserCommit(const std::vector<std::string>& names, const std::vector<LLUUID>& ids, void* userdata) 1747};
1748{ 1748
1749 if (names.empty() || ids.empty()) return; 1749void LLPanelEstateInfo::onClickKickUser(void *user_data)
1750 1750{
1751 //check to make sure there is one valid user and id 1751 LLPanelEstateInfo* panelp = (LLPanelEstateInfo*)user_data;
1752 if( (ids[0].isNull()) || 1752
1753 (names[0].length() == 0) ) 1753 // this depends on the grandparent view being a floater
1754 { 1754 // in order to set up floater dependency
1755 return; 1755 LLFloater* parent_floater = gFloaterView->getParentFloater(panelp);
1756 } 1756 LLFloater* child_floater = LLFloaterAvatarPicker::show(LLPanelEstateInfo::onKickUserCommit, user_data, FALSE, TRUE);
1757 1757 parent_floater->addDependentFloater(child_floater);
1758 LLPanelEstateInfo* self = (LLPanelEstateInfo*)userdata; 1758}
1759 if(!self) return; 1759
1760 1760void LLPanelEstateInfo::onKickUserCommit(const std::vector<std::string>& names, const std::vector<LLUUID>& ids, void* userdata)
1761 //keep track of what user they want to kick and other misc info 1761{
1762 LLKickFromEstateInfo *kick_info = new LLKickFromEstateInfo(); 1762 if (names.empty() || ids.empty()) return;
1763 kick_info->mEstatePanelp = self; 1763
1764 kick_info->mAgentID = ids[0]; 1764 //check to make sure there is one valid user and id
1765 1765 if( (ids[0].isNull()) ||
1766 //Bring up a confirmation dialog 1766 (names[0].length() == 0) )
1767 LLSD args; 1767 {
1768 args["EVIL_USER"] = names[0]; 1768 return;
1769 LLSD payload; 1769 }
1770 payload["agent_id"] = ids[0]; 1770
1771 LLNotifications::instance().add("EstateKickUser", args, payload, boost::bind(&LLPanelEstateInfo::kickUserConfirm, self, _1, _2)); 1771 LLPanelEstateInfo* self = (LLPanelEstateInfo*)userdata;
1772 1772 if(!self) return;
1773} 1773
1774 1774 //keep track of what user they want to kick and other misc info
1775bool LLPanelEstateInfo::kickUserConfirm(const LLSD& notification, const LLSD& response) 1775 LLKickFromEstateInfo *kick_info = new LLKickFromEstateInfo();
1776{ 1776 kick_info->mEstatePanelp = self;
1777 S32 option = LLNotification::getSelectedOption(notification, response); 1777 kick_info->mAgentID = ids[0];
1778 switch(option) 1778
1779 { 1779 //Bring up a confirmation dialog
1780 case 0: 1780 LLSD args;
1781 { 1781 args["EVIL_USER"] = names[0];
1782 //Kick User 1782 LLSD payload;
1783 strings_t strings; 1783 payload["agent_id"] = ids[0];
1784 strings.push_back(notification["payload"]["agent_id"].asString()); 1784 LLNotifications::instance().add("EstateKickUser", args, payload, boost::bind(&LLPanelEstateInfo::kickUserConfirm, self, _1, _2));
1785 1785
1786 sendEstateOwnerMessage(gMessageSystem, "kickestate", LLFloaterRegionInfo::getLastInvoice(), strings); 1786}
1787 break; 1787
1788 } 1788bool LLPanelEstateInfo::kickUserConfirm(const LLSD& notification, const LLSD& response)
1789 default: 1789{
1790 break; 1790 S32 option = LLNotification::getSelectedOption(notification, response);
1791 } 1791 switch(option)
1792 return false; 1792 {
1793} 1793 case 0:
1794 1794 {
1795//--------------------------------------------------------------------------- 1795 //Kick User
1796// Core Add/Remove estate access methods 1796 strings_t strings;
1797// TODO: INTERNATIONAL: don't build message text here; 1797 strings.push_back(notification["payload"]["agent_id"].asString());
1798// instead, create multiple translatable messages and choose 1798
1799// one based on the status. 1799 sendEstateOwnerMessage(gMessageSystem, "kickestate", LLFloaterRegionInfo::getLastInvoice(), strings);
1800//--------------------------------------------------------------------------- 1800 break;
1801std::string all_estates_text() 1801 }
1802{ 1802 default:
1803 LLPanelEstateInfo* panel = LLFloaterRegionInfo::getPanelEstate(); 1803 break;
1804 if (!panel) return "(error)"; 1804 }
1805 1805 return false;
1806 std::string owner = panel->getOwnerName(); 1806}
1807 1807
1808 LLViewerRegion* region = gAgent.getRegion(); 1808//---------------------------------------------------------------------------
1809 if (gAgent.isGodlike()) 1809// Core Add/Remove estate access methods
1810 { 1810// TODO: INTERNATIONAL: don't build message text here;
1811 return llformat("all estates\nowned by %s", owner.c_str()); 1811// instead, create multiple translatable messages and choose
1812 } 1812// one based on the status.
1813 else if (region && region->getOwner() == gAgent.getID()) 1813//---------------------------------------------------------------------------
1814 { 1814std::string all_estates_text()
1815 return "all estates you own"; 1815{
1816 } 1816 LLPanelEstateInfo* panel = LLFloaterRegionInfo::getPanelEstate();
1817 else if (region && region->isEstateManager()) 1817 if (!panel) return "(error)";
1818 { 1818
1819 return llformat("all estates that\nyou manage for %s", owner.c_str()); 1819 std::string owner = panel->getOwnerName();
1820 } 1820
1821 else 1821 LLViewerRegion* region = gAgent.getRegion();
1822 { 1822 if (gAgent.isGodlike())
1823 return "(error)"; 1823 {
1824 } 1824 return llformat("all estates\nowned by %s", owner.c_str());
1825} 1825 }
1826 1826 else if (region && region->getOwner() == gAgent.getID())
1827typedef std::vector<LLUUID> AgentOrGroupIDsVector; 1827 {
1828struct LLEstateAccessChangeInfo 1828 return "all estates you own";
1829{ 1829 }
1830 LLEstateAccessChangeInfo(const LLSD& sd) 1830 else if (region && region->isEstateManager())
1831 { 1831 {
1832 mDialogName = sd["dialog_name"].asString(); 1832 return llformat("all estates that\nyou manage for %s", owner.c_str());
1833 mOperationFlag = (U32)sd["operation"].asInteger(); 1833 }
1834 LLSD::array_const_iterator end_it = sd["allowed_ids"].endArray(); 1834 else
1835 for (LLSD::array_const_iterator id_it = sd["allowed_ids"].beginArray(); 1835 {
1836 id_it != end_it; 1836 return "(error)";
1837 ++id_it) 1837 }
1838 { 1838}
1839 mAgentOrGroupIDs.push_back(id_it->asUUID()); 1839
1840 } 1840// static
1841 } 1841bool LLPanelEstateInfo::isLindenEstate()
1842 1842{
1843 const LLSD asLLSD() const 1843 LLPanelEstateInfo* panel = LLFloaterRegionInfo::getPanelEstate();
1844 { 1844 if (!panel) return false;
1845 LLSD sd; 1845
1846 sd["name"] = mDialogName; 1846 U32 estate_id = panel->getEstateID();
1847 sd["operation"] = (S32)mOperationFlag; 1847 return (estate_id <= ESTATE_LAST_LINDEN);
1848 for (AgentOrGroupIDsVector::const_iterator it = mAgentOrGroupIDs.begin(); 1848}
1849 it != mAgentOrGroupIDs.end(); 1849
1850 ++it) 1850typedef std::vector<LLUUID> AgentOrGroupIDsVector;
1851 { 1851struct LLEstateAccessChangeInfo
1852 sd["allowed_ids"].append(*it); 1852{
1853 } 1853 LLEstateAccessChangeInfo(const LLSD& sd)
1854 return sd; 1854 {
1855 } 1855 mDialogName = sd["dialog_name"].asString();
1856 1856 mOperationFlag = (U32)sd["operation"].asInteger();
1857 U32 mOperationFlag; // ESTATE_ACCESS_BANNED_AGENT_ADD, _REMOVE, etc. 1857 LLSD::array_const_iterator end_it = sd["allowed_ids"].endArray();
1858 std::string mDialogName; 1858 for (LLSD::array_const_iterator id_it = sd["allowed_ids"].beginArray();
1859 AgentOrGroupIDsVector mAgentOrGroupIDs; // List of agent IDs to apply to this change 1859 id_it != end_it;
1860}; 1860 ++id_it)
1861 1861 {
1862// Special case callback for groups, since it has different callback format than names 1862 mAgentOrGroupIDs.push_back(id_it->asUUID());
1863// static 1863 }
1864void LLPanelEstateInfo::addAllowedGroup2(LLUUID id, void* user_data) 1864 }
1865{ 1865
1866 LLSD payload; 1866 const LLSD asLLSD() const
1867 payload["operation"] = (S32)ESTATE_ACCESS_ALLOWED_GROUP_ADD; 1867 {
1868 payload["dialog_name"] = "EstateAllowedGroupAdd"; 1868 LLSD sd;
1869 payload["allowed_ids"].append(id); 1869 sd["name"] = mDialogName;
1870 1870 sd["operation"] = (S32)mOperationFlag;
1871 LLSD args; 1871 for (AgentOrGroupIDsVector::const_iterator it = mAgentOrGroupIDs.begin();
1872 args["ALL_ESTATES"] = all_estates_text(); 1872 it != mAgentOrGroupIDs.end();
1873 1873 ++it)
1874 LLNotification::Params params("EstateAllowedGroupAdd"); 1874 {
1875 params.payload(payload) 1875 sd["allowed_ids"].append(*it);
1876 .substitutions(args) 1876 }
1877 .functor(accessCoreConfirm); 1877 return sd;
1878 LLNotifications::instance().add(params); 1878 }
1879} 1879
1880 1880 U32 mOperationFlag; // ESTATE_ACCESS_BANNED_AGENT_ADD, _REMOVE, etc.
1881// static 1881 std::string mDialogName;
1882void LLPanelEstateInfo::accessAddCore(U32 operation_flag, const std::string& dialog_name) 1882 AgentOrGroupIDsVector mAgentOrGroupIDs; // List of agent IDs to apply to this change
1883{ 1883};
1884 LLSD payload; 1884
1885 payload["operation"] = (S32)operation_flag; 1885// Special case callback for groups, since it has different callback format than names
1886 payload["dialog_name"] = dialog_name; 1886// static
1887 // agent id filled in after avatar picker 1887void LLPanelEstateInfo::addAllowedGroup2(LLUUID id, void* user_data)
1888 1888{
1889 LLNotification::Params params("PfftLindenCrap"); 1889 LLSD payload;
1890 params.payload(payload) 1890 payload["operation"] = (S32)ESTATE_ACCESS_ALLOWED_GROUP_ADD;
1891 .functor(accessAddCore2); 1891 payload["dialog_name"] = "EstateAllowedGroupAdd";
1892 1892 payload["allowed_ids"].append(id);
1893 // same as clicking "OK" 1893
1894 LLNotifications::instance().forceResponse(params, 0); 1894 LLSD args;
1895} 1895 args["ALL_ESTATES"] = all_estates_text();
1896 1896
1897// static 1897 LLNotification::Params params("EstateAllowedGroupAdd");
1898bool LLPanelEstateInfo::accessAddCore2(const LLSD& notification, const LLSD& response) 1898 params.payload(payload)
1899{ 1899 .substitutions(args)
1900 S32 option = LLNotification::getSelectedOption(notification, response); 1900 .functor(accessCoreConfirm);
1901 if (option != 0) 1901 if (isLindenEstate())
1902 { 1902 {
1903 // abort change 1903 LLNotifications::instance().forceResponse(params, 0);
1904 return false; 1904 }
1905 } 1905 else
1906 1906 {
1907 LLEstateAccessChangeInfo* change_info = new LLEstateAccessChangeInfo(notification["payload"]); 1907 LLNotifications::instance().add(params);
1908 // avatar picker yes multi-select, yes close-on-select 1908 }
1909 LLFloaterAvatarPicker::show(accessAddCore3, (void*)change_info, TRUE, TRUE); 1909}
1910 return false; 1910
1911} 1911// static
1912 1912void LLPanelEstateInfo::accessAddCore(U32 operation_flag, const std::string& dialog_name)
1913// static 1913{
1914void LLPanelEstateInfo::accessAddCore3(const std::vector<std::string>& names, const std::vector<LLUUID>& ids, void* data) 1914 LLSD payload;
1915{ 1915 payload["operation"] = (S32)operation_flag;
1916 LLEstateAccessChangeInfo* change_info = (LLEstateAccessChangeInfo*)data; 1916 payload["dialog_name"] = dialog_name;
1917 if (!change_info) return; 1917 // agent id filled in after avatar picker
1918 if (ids.empty()) 1918
1919 { 1919 LLNotification::Params params("ChangeLindenAccess");
1920 // User didn't select a name. 1920 params.payload(payload)
1921 delete change_info; 1921 .functor(accessAddCore2);
1922 change_info = NULL; 1922
1923 return; 1923 if (isLindenEstate())
1924 } 1924 {
1925 // User did select a name. 1925 LLNotifications::instance().add(params);
1926 change_info->mAgentOrGroupIDs = ids; 1926 }
1927 // Can't put estate owner on ban list 1927 else
1928 LLPanelEstateInfo* panel = LLFloaterRegionInfo::getPanelEstate(); 1928 {
1929 if (!panel) return; 1929 // same as clicking "OK"
1930 LLViewerRegion* region = gAgent.getRegion(); 1930 LLNotifications::instance().forceResponse(params, 0);
1931 if (!region) return; 1931 }
1932 1932}
1933 if (change_info->mOperationFlag & ESTATE_ACCESS_ALLOWED_AGENT_ADD) 1933
1934 { 1934// static
1935 LLCtrlListInterface *list = panel->childGetListInterface("allowed_avatar_name_list"); 1935bool LLPanelEstateInfo::accessAddCore2(const LLSD& notification, const LLSD& response)
1936 int currentCount = (list ? list->getItemCount() : 0); 1936{
1937 if (ids.size() + currentCount > ESTATE_MAX_ACCESS_IDS) 1937 S32 option = LLNotification::getSelectedOption(notification, response);
1938 { 1938 if (option != 0)
1939 LLSD args; 1939 {
1940 args["NUM_ADDED"] = llformat("%d",ids.size()); 1940 // abort change
1941 args["MAX_AGENTS"] = llformat("%d",ESTATE_MAX_ACCESS_IDS); 1941 return false;
1942 args["LIST_TYPE"] = "Allowed Residents"; 1942 }
1943 args["NUM_EXCESS"] = llformat("%d",(ids.size()+currentCount)-ESTATE_MAX_ACCESS_IDS); 1943
1944 LLNotifications::instance().add("MaxAgentOnRegionBatch", args); 1944 LLEstateAccessChangeInfo* change_info = new LLEstateAccessChangeInfo(notification["payload"]);
1945 delete change_info; 1945 // avatar picker yes multi-select, yes close-on-select
1946 return; 1946 LLFloaterAvatarPicker::show(accessAddCore3, (void*)change_info, TRUE, TRUE);
1947 } 1947 return false;
1948 } 1948}
1949 if (change_info->mOperationFlag & ESTATE_ACCESS_BANNED_AGENT_ADD) 1949
1950 { 1950// static
1951 LLCtrlListInterface *list = panel->childGetListInterface("banned_avatar_name_list"); 1951void LLPanelEstateInfo::accessAddCore3(const std::vector<std::string>& names, const std::vector<LLUUID>& ids, void* data)
1952 int currentCount = (list ? list->getItemCount() : 0); 1952{
1953 if (ids.size() + currentCount > ESTATE_MAX_ACCESS_IDS) 1953 LLEstateAccessChangeInfo* change_info = (LLEstateAccessChangeInfo*)data;
1954 { 1954 if (!change_info) return;
1955 LLSD args; 1955 if (ids.empty())
1956 args["NUM_ADDED"] = llformat("%d",ids.size()); 1956 {
1957 args["MAX_AGENTS"] = llformat("%d",ESTATE_MAX_ACCESS_IDS); 1957 // User didn't select a name.
1958 args["LIST_TYPE"] = "Banned Residents"; 1958 delete change_info;
1959 args["NUM_EXCESS"] = llformat("%d",(ids.size()+currentCount)-ESTATE_MAX_ACCESS_IDS); 1959 change_info = NULL;
1960 LLNotifications::instance().add("MaxAgentOnRegionBatch", args); 1960 return;
1961 delete change_info; 1961 }
1962 return; 1962 // User did select a name.
1963 } 1963 change_info->mAgentOrGroupIDs = ids;
1964 } 1964 // Can't put estate owner on ban list
1965 1965 LLPanelEstateInfo* panel = LLFloaterRegionInfo::getPanelEstate();
1966 LLSD args; 1966 if (!panel) return;
1967 args["ALL_ESTATES"] = all_estates_text(); 1967 LLViewerRegion* region = gAgent.getRegion();
1968 1968 if (!region) return;
1969 LLNotification::Params params(change_info->mDialogName); 1969
1970 params.substitutions(args) 1970 if (change_info->mOperationFlag & ESTATE_ACCESS_ALLOWED_AGENT_ADD)
1971 .payload(change_info->asLLSD()) 1971 {
1972 .functor(accessCoreConfirm); 1972 LLCtrlListInterface *list = panel->childGetListInterface("allowed_avatar_name_list");
1973 1973 int currentCount = (list ? list->getItemCount() : 0);
1974 // ask if this estate or all estates with this owner 1974 if (ids.size() + currentCount > ESTATE_MAX_ACCESS_IDS)
1975 LLNotifications::instance().add(params); 1975 {
1976} 1976 LLSD args;
1977 1977 args["NUM_ADDED"] = llformat("%d",ids.size());
1978// static 1978 args["MAX_AGENTS"] = llformat("%d",ESTATE_MAX_ACCESS_IDS);
1979void LLPanelEstateInfo::accessRemoveCore(U32 operation_flag, const std::string& dialog_name, const std::string& list_ctrl_name) 1979 args["LIST_TYPE"] = "Allowed Residents";
1980{ 1980 args["NUM_EXCESS"] = llformat("%d",(ids.size()+currentCount)-ESTATE_MAX_ACCESS_IDS);
1981 LLPanelEstateInfo* panel = LLFloaterRegionInfo::getPanelEstate(); 1981 LLNotifications::instance().add("MaxAgentOnRegionBatch", args);
1982 if (!panel) return; 1982 delete change_info;
1983 LLNameListCtrl* name_list = panel->getChild<LLNameListCtrl>(list_ctrl_name); 1983 return;
1984 if (!name_list) return; 1984 }
1985 1985 }
1986 std::vector<LLScrollListItem*> list_vector = name_list->getAllSelected(); 1986 if (change_info->mOperationFlag & ESTATE_ACCESS_BANNED_AGENT_ADD)
1987 if (list_vector.size() == 0) 1987 {
1988 return; 1988 LLCtrlListInterface *list = panel->childGetListInterface("banned_avatar_name_list");
1989 1989 int currentCount = (list ? list->getItemCount() : 0);
1990 LLSD payload; 1990 if (ids.size() + currentCount > ESTATE_MAX_ACCESS_IDS)
1991 payload["operation"] = (S32)operation_flag; 1991 {
1992 payload["dialog_name"] = dialog_name; 1992 LLSD args;
1993 1993 args["NUM_ADDED"] = llformat("%d",ids.size());
1994 for (std::vector<LLScrollListItem*>::const_iterator iter = list_vector.begin(); 1994 args["MAX_AGENTS"] = llformat("%d",ESTATE_MAX_ACCESS_IDS);
1995 iter != list_vector.end(); 1995 args["LIST_TYPE"] = "Banned Residents";
1996 iter++) 1996 args["NUM_EXCESS"] = llformat("%d",(ids.size()+currentCount)-ESTATE_MAX_ACCESS_IDS);
1997 { 1997 LLNotifications::instance().add("MaxAgentOnRegionBatch", args);
1998 LLScrollListItem *item = (*iter); 1998 delete change_info;
1999 payload["allowed_ids"].append(item->getUUID()); 1999 return;
2000 } 2000 }
2001 2001 }
2002 LLNotification::Params params("PfftLindenCrap"); 2002
2003 params.payload(payload) 2003 LLSD args;
2004 .functor(accessRemoveCore2); 2004 args["ALL_ESTATES"] = all_estates_text();
2005 2005
2006 // just proceed, as if clicking OK 2006 LLNotification::Params params(change_info->mDialogName);
2007 LLNotifications::instance().forceResponse(params, 0); 2007 params.substitutions(args)
2008} 2008 .payload(change_info->asLLSD())
2009 2009 .functor(accessCoreConfirm);
2010// static 2010
2011bool LLPanelEstateInfo::accessRemoveCore2(const LLSD& notification, const LLSD& response) 2011 if (isLindenEstate())
2012{ 2012 {
2013 S32 option = LLNotification::getSelectedOption(notification, response); 2013 // just apply to this estate
2014 if (option != 0) 2014 LLNotifications::instance().forceResponse(params, 0);
2015 { 2015 }
2016 // abort 2016 else
2017 return false; 2017 {
2018 } 2018 // ask if this estate or all estates with this owner
2019 2019 LLNotifications::instance().add(params);
2020 LLSD args; 2020 }
2021 args["ALL_ESTATES"] = all_estates_text(); 2021}
2022 LLNotifications::instance().add(notification["payload"]["dialog_name"], 2022
2023 args, 2023// static
2024 notification["payload"], 2024void LLPanelEstateInfo::accessRemoveCore(U32 operation_flag, const std::string& dialog_name, const std::string& list_ctrl_name)
2025 accessCoreConfirm); 2025{
2026 return false; 2026 LLPanelEstateInfo* panel = LLFloaterRegionInfo::getPanelEstate();
2027} 2027 if (!panel) return;
2028 2028 LLNameListCtrl* name_list = panel->getChild<LLNameListCtrl>(list_ctrl_name);
2029// Used for both access add and remove operations, depending on the mOperationFlag 2029 if (!name_list) return;
2030// passed in (ESTATE_ACCESS_BANNED_AGENT_ADD, ESTATE_ACCESS_ALLOWED_AGENT_REMOVE, etc.) 2030
2031// static 2031 std::vector<LLScrollListItem*> list_vector = name_list->getAllSelected();
2032bool LLPanelEstateInfo::accessCoreConfirm(const LLSD& notification, const LLSD& response) 2032 if (list_vector.size() == 0)
2033{ 2033 return;
2034 S32 option = LLNotification::getSelectedOption(notification, response); 2034
2035 const U32 originalFlags = (U32)notification["payload"]["operation"].asInteger(); 2035 LLSD payload;
2036 2036 payload["operation"] = (S32)operation_flag;
2037 LLViewerRegion* region = gAgent.getRegion(); 2037 payload["dialog_name"] = dialog_name;
2038 2038
2039 LLSD::array_const_iterator end_it = notification["payload"]["allowed_ids"].endArray(); 2039 for (std::vector<LLScrollListItem*>::const_iterator iter = list_vector.begin();
2040 2040 iter != list_vector.end();
2041 for (LLSD::array_const_iterator iter = notification["payload"]["allowed_ids"].beginArray(); 2041 iter++)
2042 iter != end_it; 2042 {
2043 iter++) 2043 LLScrollListItem *item = (*iter);
2044 { 2044 payload["allowed_ids"].append(item->getUUID());
2045 U32 flags = originalFlags; 2045 }
2046 if (iter + 1 != end_it) 2046
2047 flags |= ESTATE_ACCESS_NO_REPLY; 2047 LLNotification::Params params("ChangeLindenAccess");
2048 2048 params.payload(payload)
2049 const LLUUID id = iter->asUUID(); 2049 .functor(accessRemoveCore2);
2050 if (((U32)notification["payload"]["operation"].asInteger() & ESTATE_ACCESS_BANNED_AGENT_ADD) 2050
2051 && region && (region->getOwner() == id)) 2051 if (isLindenEstate())
2052 { 2052 {
2053 LLNotifications::instance().add("OwnerCanNotBeDenied"); 2053 // warn on change linden estate
2054 break; 2054 LLNotifications::instance().add(params);
2055 } 2055 }
2056 switch(option) 2056 else
2057 { 2057 {
2058 case 0: 2058 // just proceed, as if clicking OK
2059 // This estate 2059 LLNotifications::instance().forceResponse(params, 0);
2060 sendEstateAccessDelta(flags, id); 2060 }
2061 break; 2061}
2062 case 1: 2062
2063 { 2063// static
2064 // All estates, either than I own or manage for this owner. 2064bool LLPanelEstateInfo::accessRemoveCore2(const LLSD& notification, const LLSD& response)
2065 // This will be verified on simulator. JC 2065{
2066 if (!region) break; 2066 S32 option = LLNotification::getSelectedOption(notification, response);
2067 if (region->getOwner() == gAgent.getID() 2067 if (option != 0)
2068 || gAgent.isGodlike()) 2068 {
2069 { 2069 // abort
2070 flags |= ESTATE_ACCESS_APPLY_TO_ALL_ESTATES; 2070 return false;
2071 sendEstateAccessDelta(flags, id); 2071 }
2072 } 2072
2073 else if (region->isEstateManager()) 2073 // If Linden estate, can only apply to "this" estate, not all estates
2074 { 2074 // owned by NULL.
2075 flags |= ESTATE_ACCESS_APPLY_TO_MANAGED_ESTATES; 2075 if (isLindenEstate())
2076 sendEstateAccessDelta(flags, id); 2076 {
2077 } 2077 accessCoreConfirm(notification, response);
2078 break; 2078 }
2079 } 2079 else
2080 case 2: 2080 {
2081 default: 2081 LLSD args;
2082 break; 2082 args["ALL_ESTATES"] = all_estates_text();
2083 } 2083 LLNotifications::instance().add(notification["payload"]["dialog_name"],
2084 } 2084 args,
2085 return false; 2085 notification["payload"],
2086} 2086 accessCoreConfirm);
2087 2087 }
2088// key = "estateaccessdelta" 2088 return false;
2089// str(estate_id) will be added to front of list by forward_EstateOwnerRequest_to_dataserver 2089}
2090// str[0] = str(agent_id) requesting the change 2090
2091// str[1] = str(flags) (ESTATE_ACCESS_DELTA_*) 2091// Used for both access add and remove operations, depending on the mOperationFlag
2092// str[2] = str(agent_id) to add or remove 2092// passed in (ESTATE_ACCESS_BANNED_AGENT_ADD, ESTATE_ACCESS_ALLOWED_AGENT_REMOVE, etc.)
2093// static 2093// static
2094void LLPanelEstateInfo::sendEstateAccessDelta(U32 flags, const LLUUID& agent_or_group_id) 2094bool LLPanelEstateInfo::accessCoreConfirm(const LLSD& notification, const LLSD& response)
2095{ 2095{
2096 LLMessageSystem* msg = gMessageSystem; 2096 S32 option = LLNotification::getSelectedOption(notification, response);
2097 msg->newMessage("EstateOwnerMessage"); 2097 const U32 originalFlags = (U32)notification["payload"]["operation"].asInteger();
2098 msg->nextBlockFast(_PREHASH_AgentData); 2098
2099 msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); 2099 LLViewerRegion* region = gAgent.getRegion();
2100 msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); 2100
2101 msg->addUUIDFast(_PREHASH_TransactionID, LLUUID::null); //not used 2101 LLSD::array_const_iterator end_it = notification["payload"]["allowed_ids"].endArray();
2102 2102
2103 msg->nextBlock("MethodData"); 2103 for (LLSD::array_const_iterator iter = notification["payload"]["allowed_ids"].beginArray();
2104 msg->addString("Method", "estateaccessdelta"); 2104 iter != end_it;
2105 msg->addUUID("Invoice", LLFloaterRegionInfo::getLastInvoice()); 2105 iter++)
2106 2106 {
2107 std::string buf; 2107 U32 flags = originalFlags;
2108 gAgent.getID().toString(buf); 2108 if (iter + 1 != end_it)
2109 msg->nextBlock("ParamList"); 2109 flags |= ESTATE_ACCESS_NO_REPLY;
2110 msg->addString("Parameter", buf); 2110
2111 2111 const LLUUID id = iter->asUUID();
2112 buf = llformat("%u", flags); 2112 if (((U32)notification["payload"]["operation"].asInteger() & ESTATE_ACCESS_BANNED_AGENT_ADD)
2113 msg->nextBlock("ParamList"); 2113 && region && (region->getOwner() == id))
2114 msg->addString("Parameter", buf); 2114 {
2115 2115 LLNotifications::instance().add("OwnerCanNotBeDenied");
2116 agent_or_group_id.toString(buf); 2116 break;
2117 msg->nextBlock("ParamList"); 2117 }
2118 msg->addString("Parameter", buf); 2118 switch(option)
2119 2119 {
2120 2120 case 0:
2121 LLPanelEstateInfo* panel = LLFloaterRegionInfo::getPanelEstate(); 2121 // This estate
2122 2122 sendEstateAccessDelta(flags, id);
2123 if (flags & (ESTATE_ACCESS_ALLOWED_AGENT_ADD | ESTATE_ACCESS_ALLOWED_AGENT_REMOVE | 2123 break;
2124 ESTATE_ACCESS_BANNED_AGENT_ADD | ESTATE_ACCESS_BANNED_AGENT_REMOVE)) 2124 case 1:
2125 { 2125 {
2126 2126 // All estates, either than I own or manage for this owner.
2127 panel->clearAccessLists(); 2127 // This will be verified on simulator. JC
2128 } 2128 if (!region) break;
2129 2129 if (region->getOwner() == gAgent.getID()
2130 gAgent.sendReliableMessage(); 2130 || gAgent.isGodlike())
2131} 2131 {
2132 2132 flags |= ESTATE_ACCESS_APPLY_TO_ALL_ESTATES;
2133void LLPanelEstateInfo::updateControls(LLViewerRegion* region) 2133 sendEstateAccessDelta(flags, id);
2134{ 2134 }
2135 BOOL god = gAgent.isGodlike(); 2135 else if (region->isEstateManager())
2136 BOOL owner = (region && (region->getOwner() == gAgent.getID())); 2136 {
2137 BOOL manager = (region && region->isEstateManager()); 2137 flags |= ESTATE_ACCESS_APPLY_TO_MANAGED_ESTATES;
2138 setCtrlsEnabled(god || owner || manager); 2138 sendEstateAccessDelta(flags, id);
2139 2139 }
2140 childDisable("apply_btn"); 2140 break;
2141 childSetEnabled("add_allowed_avatar_btn", god || owner || manager); 2141 }
2142 childSetEnabled("remove_allowed_avatar_btn", god || owner || manager); 2142 case 2:
2143 childSetEnabled("add_allowed_group_btn", god || owner || manager); 2143 default:
2144 childSetEnabled("remove_allowed_group_btn", god || owner || manager); 2144 break;
2145 childSetEnabled("add_banned_avatar_btn", god || owner || manager); 2145 }
2146 childSetEnabled("remove_banned_avatar_btn", god || owner || manager); 2146 }
2147 childSetEnabled("message_estate_btn", god || owner || manager); 2147 return false;
2148 childSetEnabled("kick_user_from_estate_btn", god || owner || manager); 2148}
2149 childSetEnabled("abuse_email_address", god || owner || manager); 2149
2150 2150// key = "estateaccessdelta"
2151 // estate managers can't add estate managers 2151// str(estate_id) will be added to front of list by forward_EstateOwnerRequest_to_dataserver
2152 childSetEnabled("add_estate_manager_btn", god || owner); 2152// str[0] = str(agent_id) requesting the change
2153 childSetEnabled("remove_estate_manager_btn", god || owner); 2153// str[1] = str(flags) (ESTATE_ACCESS_DELTA_*)
2154 childSetEnabled("estate_manager_name_list", god || owner); 2154// str[2] = str(agent_id) to add or remove
2155} 2155// static
2156 2156void LLPanelEstateInfo::sendEstateAccessDelta(U32 flags, const LLUUID& agent_or_group_id)
2157bool LLPanelEstateInfo::refreshFromRegion(LLViewerRegion* region) 2157{
2158{ 2158 LLMessageSystem* msg = gMessageSystem;
2159 updateControls(region); 2159 msg->newMessage("EstateOwnerMessage");
2160 2160 msg->nextBlockFast(_PREHASH_AgentData);
2161 // let the parent class handle the general data collection. 2161 msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
2162 bool rv = LLPanelRegionInfo::refreshFromRegion(region); 2162 msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
2163 2163 msg->addUUIDFast(_PREHASH_TransactionID, LLUUID::null); //not used
2164 // We want estate info. To make sure it works across region 2164
2165 // boundaries and multiple packets, we add a serial number to the 2165 msg->nextBlock("MethodData");
2166 // integers and track against that on update. 2166 msg->addString("Method", "estateaccessdelta");
2167 strings_t strings; 2167 msg->addUUID("Invoice", LLFloaterRegionInfo::getLastInvoice());
2168 //integers_t integers; 2168
2169 //LLFloaterRegionInfo::incrementSerial(); 2169 std::string buf;
2170 LLFloaterRegionInfo::nextInvoice(); 2170 gAgent.getID().toString(buf);
2171 LLUUID invoice(LLFloaterRegionInfo::getLastInvoice()); 2171 msg->nextBlock("ParamList");
2172 //integers.push_back(LLFloaterRegionInfo::());::getPanelEstate(); 2172 msg->addString("Parameter", buf);
2173 2173
2174 2174 buf = llformat("%u", flags);
2175 LLPanelEstateInfo* panel = LLFloaterRegionInfo::getPanelEstate(); 2175 msg->nextBlock("ParamList");
2176 panel->clearAccessLists(); 2176 msg->addString("Parameter", buf);
2177 2177
2178 2178 agent_or_group_id.toString(buf);
2179 sendEstateOwnerMessage(gMessageSystem, "getinfo", invoice, strings); 2179 msg->nextBlock("ParamList");
2180 2180 msg->addString("Parameter", buf);
2181 refresh(); 2181
2182 2182
2183 return rv; 2183 LLPanelEstateInfo* panel = LLFloaterRegionInfo::getPanelEstate();
2184} 2184
2185 2185 if (flags & (ESTATE_ACCESS_ALLOWED_AGENT_ADD | ESTATE_ACCESS_ALLOWED_AGENT_REMOVE |
2186void LLPanelEstateInfo::updateChild(LLUICtrl* child_ctrl) 2186 ESTATE_ACCESS_BANNED_AGENT_ADD | ESTATE_ACCESS_BANNED_AGENT_REMOVE))
2187{ 2187 {
2188 if (checkRemovalButton(child_ctrl->getName())) 2188
2189 { 2189 panel->clearAccessLists();
2190 // do nothing 2190 }
2191 } 2191
2192 else if (checkSunHourSlider(child_ctrl)) 2192 gAgent.sendReliableMessage();
2193 { 2193}
2194 // do nothing 2194
2195 } 2195void LLPanelEstateInfo::updateControls(LLViewerRegion* region)
2196} 2196{
2197 2197 BOOL god = gAgent.isGodlike();
2198bool LLPanelEstateInfo::estateUpdate(LLMessageSystem* msg) 2198 BOOL owner = (region && (region->getOwner() == gAgent.getID()));
2199{ 2199 BOOL manager = (region && region->isEstateManager());
2200 llinfos << "LLPanelEstateInfo::estateUpdate()" << llendl; 2200 setCtrlsEnabled(god || owner || manager);
2201 return false; 2201
2202} 2202 childDisable("apply_btn");
2203 2203 childSetEnabled("add_allowed_avatar_btn", god || owner || manager);
2204 2204 childSetEnabled("remove_allowed_avatar_btn", god || owner || manager);
2205BOOL LLPanelEstateInfo::postBuild() 2205 childSetEnabled("add_allowed_group_btn", god || owner || manager);
2206{ 2206 childSetEnabled("remove_allowed_group_btn", god || owner || manager);
2207 // set up the callbacks for the generic controls 2207 childSetEnabled("add_banned_avatar_btn", god || owner || manager);
2208 initCtrl("externally_visible_check"); 2208 childSetEnabled("remove_banned_avatar_btn", god || owner || manager);
2209 initCtrl("use_global_time_check"); 2209 childSetEnabled("message_estate_btn", god || owner || manager);
2210 initCtrl("fixed_sun_check"); 2210 childSetEnabled("kick_user_from_estate_btn", god || owner || manager);
2211 initCtrl("allow_direct_teleport"); 2211 childSetEnabled("abuse_email_address", god || owner || manager);
2212 initCtrl("limit_payment"); 2212
2213 initCtrl("limit_age_verified"); 2213 // estate managers can't add estate managers
2214 initCtrl("voice_chat_check"); 2214 childSetEnabled("add_estate_manager_btn", god || owner);
2215 childSetCommitCallback("abuse_email_address", onChangeAnything, this); 2215 childSetEnabled("remove_estate_manager_btn", god || owner);
2216 childSetKeystrokeCallback("abuse_email_address", onChangeText, this); 2216 childSetEnabled("estate_manager_name_list", god || owner);
2217 2217}
2218 initHelpBtn("estate_manager_help", "HelpEstateEstateManager"); 2218
2219 initHelpBtn("use_global_time_help", "HelpEstateUseGlobalTime"); 2219bool LLPanelEstateInfo::refreshFromRegion(LLViewerRegion* region)
2220 initHelpBtn("fixed_sun_help", "HelpEstateFixedSun"); 2220{
2221 initHelpBtn("WLEditSkyHelp", "HelpEditSky"); 2221 updateControls(region);
2222 initHelpBtn("WLEditDayCycleHelp", "HelpEditDayCycle"); 2222
2223 2223 // let the parent class handle the general data collection.
2224 initHelpBtn("externally_visible_help", "HelpEstateExternallyVisible"); 2224 bool rv = LLPanelRegionInfo::refreshFromRegion(region);
2225 initHelpBtn("allow_direct_teleport_help", "HelpEstateAllowDirectTeleport"); 2225
2226 initHelpBtn("allow_resident_help", "HelpEstateAllowResident"); 2226 // We want estate info. To make sure it works across region
2227 initHelpBtn("allow_group_help", "HelpEstateAllowGroup"); 2227 // boundaries and multiple packets, we add a serial number to the
2228 initHelpBtn("ban_resident_help", "HelpEstateBanResident"); 2228 // integers and track against that on update.
2229 initHelpBtn("abuse_email_address_help", "HelpEstateAbuseEmailAddress"); 2229 strings_t strings;
2230 initHelpBtn("voice_chat_help", "HelpEstateVoiceChat"); 2230 //integers_t integers;
2231 2231 //LLFloaterRegionInfo::incrementSerial();
2232 // set up the use global time checkbox 2232 LLFloaterRegionInfo::nextInvoice();
2233 childSetCommitCallback("use_global_time_check", onChangeUseGlobalTime, this); 2233 LLUUID invoice(LLFloaterRegionInfo::getLastInvoice());
2234 childSetCommitCallback("fixed_sun_check", onChangeFixedSun, this); 2234 //integers.push_back(LLFloaterRegionInfo::());::getPanelEstate();
2235 childSetCommitCallback("sun_hour_slider", onChangeChildCtrl, this); 2235
2236 2236
2237 childSetCommitCallback("allowed_avatar_name_list", onChangeChildCtrl, this); 2237 LLPanelEstateInfo* panel = LLFloaterRegionInfo::getPanelEstate();
2238 LLNameListCtrl *avatar_name_list = getChild<LLNameListCtrl>("allowed_avatar_name_list"); 2238 panel->clearAccessLists();
2239 if (avatar_name_list) 2239
2240 { 2240
2241 avatar_name_list->setCommitOnSelectionChange(TRUE); 2241 sendEstateOwnerMessage(gMessageSystem, "getinfo", invoice, strings);
2242 avatar_name_list->setMaxItemCount(ESTATE_MAX_ACCESS_IDS); 2242
2243 } 2243 refresh();
2244 2244
2245 childSetAction("add_allowed_avatar_btn", onClickAddAllowedAgent, this); 2245 return rv;
2246 childSetAction("remove_allowed_avatar_btn", onClickRemoveAllowedAgent, this); 2246}
2247 2247
2248 childSetCommitCallback("allowed_group_name_list", onChangeChildCtrl, this); 2248void LLPanelEstateInfo::updateChild(LLUICtrl* child_ctrl)
2249 LLNameListCtrl* group_name_list = getChild<LLNameListCtrl>("allowed_group_name_list"); 2249{
2250 if (group_name_list) 2250 if (checkRemovalButton(child_ctrl->getName()))
2251 { 2251 {
2252 group_name_list->setCommitOnSelectionChange(TRUE); 2252 // do nothing
2253 group_name_list->setMaxItemCount(ESTATE_MAX_ACCESS_IDS); 2253 }
2254 } 2254 else if (checkSunHourSlider(child_ctrl))
2255 2255 {
2256 childSetAction("add_allowed_group_btn", onClickAddAllowedGroup, this); 2256 // do nothing
2257 childSetAction("remove_allowed_group_btn", onClickRemoveAllowedGroup, this); 2257 }
2258 2258}
2259 childSetCommitCallback("banned_avatar_name_list", onChangeChildCtrl, this); 2259
2260 LLNameListCtrl* banned_name_list = getChild<LLNameListCtrl>("banned_avatar_name_list"); 2260bool LLPanelEstateInfo::estateUpdate(LLMessageSystem* msg)
2261 if (banned_name_list) 2261{
2262 { 2262 llinfos << "LLPanelEstateInfo::estateUpdate()" << llendl;
2263 banned_name_list->setCommitOnSelectionChange(TRUE); 2263 return false;
2264 banned_name_list->setMaxItemCount(ESTATE_MAX_ACCESS_IDS); 2264}
2265 } 2265
2266 2266
2267 childSetAction("add_banned_avatar_btn", onClickAddBannedAgent, this); 2267BOOL LLPanelEstateInfo::postBuild()
2268 childSetAction("remove_banned_avatar_btn", onClickRemoveBannedAgent, this); 2268{
2269 2269 // set up the callbacks for the generic controls
2270 childSetCommitCallback("estate_manager_name_list", onChangeChildCtrl, this); 2270 initCtrl("externally_visible_check");
2271 LLNameListCtrl* manager_name_list = getChild<LLNameListCtrl>("estate_manager_name_list"); 2271 initCtrl("use_global_time_check");
2272 if (manager_name_list) 2272 initCtrl("fixed_sun_check");
2273 { 2273 initCtrl("allow_direct_teleport");
2274 manager_name_list->setCommitOnSelectionChange(TRUE); 2274 initCtrl("limit_payment");
2275 manager_name_list->setMaxItemCount(ESTATE_MAX_MANAGERS * 4); // Allow extras for dupe issue 2275 initCtrl("limit_age_verified");
2276 } 2276 initCtrl("voice_chat_check");
2277 2277 childSetCommitCallback("abuse_email_address", onChangeAnything, this);
2278 childSetAction("add_estate_manager_btn", onClickAddEstateManager, this); 2278 childSetKeystrokeCallback("abuse_email_address", onChangeText, this);
2279 childSetAction("remove_estate_manager_btn", onClickRemoveEstateManager, this); 2279
2280 childSetAction("message_estate_btn", onClickMessageEstate, this); 2280 initHelpBtn("estate_manager_help", "HelpEstateEstateManager");
2281 childSetAction("kick_user_from_estate_btn", onClickKickUser, this); 2281 initHelpBtn("use_global_time_help", "HelpEstateUseGlobalTime");
2282 2282 initHelpBtn("fixed_sun_help", "HelpEstateFixedSun");
2283 childSetAction("WLEditSky", onClickEditSky, this); 2283 initHelpBtn("WLEditSkyHelp", "HelpEditSky");
2284 childSetAction("WLEditDayCycle", onClickEditDayCycle, this); 2284 initHelpBtn("WLEditDayCycleHelp", "HelpEditDayCycle");
2285 2285
2286 return LLPanelRegionInfo::postBuild(); 2286 initHelpBtn("externally_visible_help", "HelpEstateExternallyVisible");
2287} 2287 initHelpBtn("allow_direct_teleport_help", "HelpEstateAllowDirectTeleport");
2288 2288 initHelpBtn("allow_resident_help", "HelpEstateAllowResident");
2289void LLPanelEstateInfo::refresh() 2289 initHelpBtn("allow_group_help", "HelpEstateAllowGroup");
2290{ 2290 initHelpBtn("ban_resident_help", "HelpEstateBanResident");
2291 bool public_access = childGetValue("externally_visible_check").asBoolean(); 2291 initHelpBtn("abuse_email_address_help", "HelpEstateAbuseEmailAddress");
2292 childSetEnabled("Only Allow", public_access); 2292 initHelpBtn("voice_chat_help", "HelpEstateVoiceChat");
2293 childSetEnabled("limit_payment", public_access); 2293
2294 childSetEnabled("limit_age_verified", public_access); 2294 // set up the use global time checkbox
2295 // if this is set to false, then the limit fields are meaningless and should be turned off 2295 childSetCommitCallback("use_global_time_check", onChangeUseGlobalTime, this);
2296 if (public_access == false) 2296 childSetCommitCallback("fixed_sun_check", onChangeFixedSun, this);
2297 { 2297 childSetCommitCallback("sun_hour_slider", onChangeChildCtrl, this);
2298 childSetValue("limit_payment", false); 2298
2299 childSetValue("limit_age_verified", false); 2299 childSetCommitCallback("allowed_avatar_name_list", onChangeChildCtrl, this);
2300 } 2300 LLNameListCtrl *avatar_name_list = getChild<LLNameListCtrl>("allowed_avatar_name_list");
2301} 2301 if (avatar_name_list)
2302 2302 {
2303BOOL LLPanelEstateInfo::sendUpdate() 2303 avatar_name_list->setCommitOnSelectionChange(TRUE);
2304{ 2304 avatar_name_list->setMaxItemCount(ESTATE_MAX_ACCESS_IDS);
2305 llinfos << "LLPanelEsateInfo::sendUpdate()" << llendl; 2305 }
2306 2306
2307 // send the update 2307 childSetAction("add_allowed_avatar_btn", onClickAddAllowedAgent, this);
2308 if (!commitEstateInfoCaps()) 2308 childSetAction("remove_allowed_avatar_btn", onClickRemoveAllowedAgent, this);
2309 { 2309
2310 // the caps method failed, try the old way 2310 childSetCommitCallback("allowed_group_name_list", onChangeChildCtrl, this);
2311 LLFloaterRegionInfo::nextInvoice(); 2311 LLNameListCtrl* group_name_list = getChild<LLNameListCtrl>("allowed_group_name_list");
2312 commitEstateInfoDataserver(); 2312 if (group_name_list)
2313 } 2313 {
2314 // we don't want to do this because we'll get it automatically from the sim 2314 group_name_list->setCommitOnSelectionChange(TRUE);
2315 // after the spaceserver processes it 2315 group_name_list->setMaxItemCount(ESTATE_MAX_ACCESS_IDS);
2316// else 2316 }
2317// { 2317
2318// // caps method does not automatically send this info 2318 childSetAction("add_allowed_group_btn", onClickAddAllowedGroup, this);
2319// LLFloaterRegionInfo::requestRegionInfo(); 2319 childSetAction("remove_allowed_group_btn", onClickRemoveAllowedGroup, this);
2320// } 2320
2321 return TRUE; 2321 childSetCommitCallback("banned_avatar_name_list", onChangeChildCtrl, this);
2322} 2322 LLNameListCtrl* banned_name_list = getChild<LLNameListCtrl>("banned_avatar_name_list");
2323 2323 if (banned_name_list)
2324/* 2324 {
2325// Request = "getowner" 2325 banned_name_list->setCommitOnSelectionChange(TRUE);
2326// SParam[0] = "" (empty string) 2326 banned_name_list->setMaxItemCount(ESTATE_MAX_ACCESS_IDS);
2327// IParam[0] = serial 2327 }
2328void LLPanelEstateInfo::getEstateOwner() 2328
2329{ 2329 childSetAction("add_banned_avatar_btn", onClickAddBannedAgent, this);
2330 // TODO -- disable the panel 2330 childSetAction("remove_banned_avatar_btn", onClickRemoveBannedAgent, this);
2331 // and call this function whenever we cross a region boundary 2331
2332 // re-enable when owner matches, and get new estate info 2332 childSetCommitCallback("estate_manager_name_list", onChangeChildCtrl, this);
2333 LLMessageSystem* msg = gMessageSystem; 2333 LLNameListCtrl* manager_name_list = getChild<LLNameListCtrl>("estate_manager_name_list");
2334 msg->newMessageFast(_PREHASH_EstateOwnerRequest); 2334 if (manager_name_list)
2335 msg->nextBlockFast(_PREHASH_AgentData); 2335 {
2336 msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); 2336 manager_name_list->setCommitOnSelectionChange(TRUE);
2337 2337 manager_name_list->setMaxItemCount(ESTATE_MAX_MANAGERS * 4); // Allow extras for dupe issue
2338 msg->nextBlockFast(_PREHASH_RequestData); 2338 }
2339 msg->addStringFast(_PREHASH_Request, "getowner"); 2339
2340 2340 childSetAction("add_estate_manager_btn", onClickAddEstateManager, this);
2341 // we send an empty string so that the variable block is not empty 2341 childSetAction("remove_estate_manager_btn", onClickRemoveEstateManager, this);
2342 msg->nextBlockFast(_PREHASH_StringData); 2342 childSetAction("message_estate_btn", onClickMessageEstate, this);
2343 msg->addStringFast(_PREHASH_SParam, ""); 2343 childSetAction("kick_user_from_estate_btn", onClickKickUser, this);
2344 2344
2345 msg->nextBlockFast(_PREHASH_IntegerData); 2345 childSetAction("WLEditSky", onClickEditSky, this);
2346 msg->addS32Fast(_PREHASH_IParam, LLFloaterRegionInfo::getSerial()); 2346 childSetAction("WLEditDayCycle", onClickEditDayCycle, this);
2347 2347
2348 gAgent.sendMessage(); 2348 return LLPanelRegionInfo::postBuild();
2349} 2349}
2350*/ 2350
2351 2351void LLPanelEstateInfo::refresh()
2352class LLEstateChangeInfoResponder : public LLHTTPClient::Responder 2352{
2353{ 2353 bool public_access = childGetValue("externally_visible_check").asBoolean();
2354public: 2354 childSetEnabled("Only Allow", public_access);
2355 LLEstateChangeInfoResponder(void* userdata) : mpPanel((LLPanelEstateInfo*)userdata) {}; 2355 childSetEnabled("limit_payment", public_access);
2356 2356 childSetEnabled("limit_age_verified", public_access);
2357 // if we get a normal response, handle it here 2357 // if this is set to false, then the limit fields are meaningless and should be turned off
2358 virtual void result(const LLSD& content) 2358 if (public_access == false)
2359 { 2359 {
2360 // refresh the panel from the database 2360 childSetValue("limit_payment", false);
2361 mpPanel->refresh(); 2361 childSetValue("limit_age_verified", false);
2362 } 2362 }
2363 2363}
2364 // if we get an error response 2364
2365 virtual void error(U32 status, const std::string& reason) 2365BOOL LLPanelEstateInfo::sendUpdate()
2366 { 2366{
2367 llinfos << "LLEstateChangeInfoResponder::error " 2367 llinfos << "LLPanelEsateInfo::sendUpdate()" << llendl;
2368 << status << ": " << reason << llendl; 2368
2369 } 2369 LLNotification::Params params("ChangeLindenEstate");
2370private: 2370 params.functor(boost::bind(&LLPanelEstateInfo::callbackChangeLindenEstate, this, _1, _2));
2371 LLPanelEstateInfo* mpPanel; 2371
2372}; 2372 if (getEstateID() <= ESTATE_LAST_LINDEN)
2373 2373 {
2374// tries to send estate info using a cap; returns true if it succeeded 2374 // trying to change reserved estate, warn
2375bool LLPanelEstateInfo::commitEstateInfoCaps() 2375 LLNotifications::instance().add(params);
2376{ 2376 }
2377 std::string url = gAgent.getRegion()->getCapability("EstateChangeInfo"); 2377 else
2378 2378 {
2379 if (url.empty()) 2379 // for normal estates, just make the change
2380 { 2380 LLNotifications::instance().forceResponse(params, 0);
2381 // whoops, couldn't find the cap, so bail out 2381 }
2382 return false; 2382 return TRUE;
2383 } 2383}
2384 2384
2385 LLSD body; 2385bool LLPanelEstateInfo::callbackChangeLindenEstate(const LLSD& notification, const LLSD& response)
2386 body["estate_name"] = getEstateName(); 2386{
2387 2387 S32 option = LLNotification::getSelectedOption(notification, response);
2388 body["is_externally_visible"] = childGetValue("externally_visible_check").asBoolean(); 2388 switch(option)
2389 body["allow_direct_teleport"] = childGetValue("allow_direct_teleport").asBoolean(); 2389 {
2390 body["is_sun_fixed" ] = childGetValue("fixed_sun_check").asBoolean(); 2390 case 0:
2391 body["deny_anonymous" ] = childGetValue("limit_payment").asBoolean(); 2391 // send the update
2392 body["deny_age_unverified" ] = childGetValue("limit_age_verified").asBoolean(); 2392 if (!commitEstateInfoCaps())
2393 body["allow_voice_chat" ] = childGetValue("voice_chat_check").asBoolean(); 2393 {
2394 body["invoice" ] = LLFloaterRegionInfo::getLastInvoice(); 2394 // the caps method failed, try the old way
2395 2395 LLFloaterRegionInfo::nextInvoice();
2396 // block fly is in estate database but not in estate UI, so we're not supporting it 2396 commitEstateInfoDataserver();
2397 //body["block_fly" ] = childGetValue("").asBoolean(); 2397 }
2398 2398 // we don't want to do this because we'll get it automatically from the sim
2399 F32 sun_hour = getSunHour(); 2399 // after the spaceserver processes it
2400 if (childGetValue("use_global_time_check").asBoolean()) 2400// else
2401 { 2401// {
2402 sun_hour = 0.f; // 0 = global time 2402// // caps method does not automatically send this info
2403 } 2403// LLFloaterRegionInfo::requestRegionInfo();
2404 body["sun_hour"] = sun_hour; 2404// }
2405 2405 break;
2406 body["owner_abuse_email"] = childGetValue("abuse_email_address").asString(); 2406 case 1:
2407 2407 default:
2408 // we use a responder so that we can re-get the data after committing to the database 2408 // do nothing
2409 LLHTTPClient::post(url, body, new LLEstateChangeInfoResponder((void*)this)); 2409 break;
2410 return true; 2410 }
2411} 2411 return false;
2412 2412}
2413/* This is the old way of doing things, is deprecated, and should be 2413
2414 deleted when the dataserver model can be removed */ 2414
2415// key = "estatechangeinfo" 2415/*
2416// strings[0] = str(estate_id) (added by simulator before relay - not here) 2416// Request = "getowner"
2417// strings[1] = estate_name 2417// SParam[0] = "" (empty string)
2418// strings[2] = str(estate_flags) 2418// IParam[0] = serial
2419// strings[3] = str((S32)(sun_hour * 1024.f)) 2419void LLPanelEstateInfo::getEstateOwner()
2420void LLPanelEstateInfo::commitEstateInfoDataserver() 2420{
2421{ 2421 // TODO -- disable the panel
2422 LLMessageSystem* msg = gMessageSystem; 2422 // and call this function whenever we cross a region boundary
2423 msg->newMessage("EstateOwnerMessage"); 2423 // re-enable when owner matches, and get new estate info
2424 msg->nextBlockFast(_PREHASH_AgentData); 2424 LLMessageSystem* msg = gMessageSystem;
2425 msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); 2425 msg->newMessageFast(_PREHASH_EstateOwnerRequest);
2426 msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); 2426 msg->nextBlockFast(_PREHASH_AgentData);
2427 msg->addUUIDFast(_PREHASH_TransactionID, LLUUID::null); //not used 2427 msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
2428 2428
2429 msg->nextBlock("MethodData"); 2429 msg->nextBlockFast(_PREHASH_RequestData);
2430 msg->addString("Method", "estatechangeinfo"); 2430 msg->addStringFast(_PREHASH_Request, "getowner");
2431 msg->addUUID("Invoice", LLFloaterRegionInfo::getLastInvoice()); 2431
2432 2432 // we send an empty string so that the variable block is not empty
2433 msg->nextBlock("ParamList"); 2433 msg->nextBlockFast(_PREHASH_StringData);
2434 msg->addString("Parameter", getEstateName()); 2434 msg->addStringFast(_PREHASH_SParam, "");
2435 2435
2436 std::string buffer; 2436 msg->nextBlockFast(_PREHASH_IntegerData);
2437 buffer = llformat("%u", computeEstateFlags()); 2437 msg->addS32Fast(_PREHASH_IParam, LLFloaterRegionInfo::getSerial());
2438 msg->nextBlock("ParamList"); 2438
2439 msg->addString("Parameter", buffer); 2439 gAgent.sendMessage();
2440 2440}
2441 F32 sun_hour = getSunHour(); 2441*/
2442 if (childGetValue("use_global_time_check").asBoolean()) 2442
2443 { 2443class LLEstateChangeInfoResponder : public LLHTTPClient::Responder
2444 sun_hour = 0.f; // 0 = global time 2444{
2445 } 2445public:
2446 2446 LLEstateChangeInfoResponder(void* userdata) : mpPanel((LLPanelEstateInfo*)userdata) {};
2447 buffer = llformat("%d", (S32)(sun_hour*1024.0f)); 2447
2448 msg->nextBlock("ParamList"); 2448 // if we get a normal response, handle it here
2449 msg->addString("Parameter", buffer); 2449 virtual void result(const LLSD& content)
2450 2450 {
2451 gAgent.sendMessage(); 2451 // refresh the panel from the database
2452} 2452 mpPanel->refresh();
2453 2453 }
2454void LLPanelEstateInfo::setEstateFlags(U32 flags) 2454
2455{ 2455 // if we get an error response
2456 childSetValue("externally_visible_check", LLSD(flags & REGION_FLAGS_EXTERNALLY_VISIBLE ? TRUE : FALSE) ); 2456 virtual void error(U32 status, const std::string& reason)
2457 childSetValue("fixed_sun_check", LLSD(flags & REGION_FLAGS_SUN_FIXED ? TRUE : FALSE) ); 2457 {
2458 childSetValue( 2458 llinfos << "LLEstateChangeInfoResponder::error "
2459 "voice_chat_check", 2459 << status << ": " << reason << llendl;
2460 LLSD(flags & REGION_FLAGS_ALLOW_VOICE ? TRUE : FALSE)); 2460 }
2461 childSetValue("allow_direct_teleport", LLSD(flags & REGION_FLAGS_ALLOW_DIRECT_TELEPORT ? TRUE : FALSE) ); 2461private:
2462 childSetValue("limit_payment", LLSD(flags & REGION_FLAGS_DENY_ANONYMOUS ? TRUE : FALSE) ); 2462 LLPanelEstateInfo* mpPanel;
2463 childSetValue("limit_age_verified", LLSD(flags & REGION_FLAGS_DENY_AGEUNVERIFIED ? TRUE : FALSE) ); 2463};
2464 2464
2465 refresh(); 2465// tries to send estate info using a cap; returns true if it succeeded
2466} 2466bool LLPanelEstateInfo::commitEstateInfoCaps()
2467 2467{
2468U32 LLPanelEstateInfo::computeEstateFlags() 2468 std::string url = gAgent.getRegion()->getCapability("EstateChangeInfo");
2469{ 2469
2470 U32 flags = 0; 2470 if (url.empty())
2471 2471 {
2472 if (childGetValue("externally_visible_check").asBoolean()) 2472 // whoops, couldn't find the cap, so bail out
2473 { 2473 return false;
2474 flags |= REGION_FLAGS_EXTERNALLY_VISIBLE; 2474 }
2475 } 2475
2476 2476 LLSD body;
2477 if ( childGetValue("voice_chat_check").asBoolean() ) 2477 body["estate_name"] = getEstateName();
2478 { 2478
2479 flags |= REGION_FLAGS_ALLOW_VOICE; 2479 body["is_externally_visible"] = childGetValue("externally_visible_check").asBoolean();
2480 } 2480 body["allow_direct_teleport"] = childGetValue("allow_direct_teleport").asBoolean();
2481 2481 body["is_sun_fixed" ] = childGetValue("fixed_sun_check").asBoolean();
2482 if (childGetValue("allow_direct_teleport").asBoolean()) 2482 body["deny_anonymous" ] = childGetValue("limit_payment").asBoolean();
2483 { 2483 body["deny_age_unverified" ] = childGetValue("limit_age_verified").asBoolean();
2484 flags |= REGION_FLAGS_ALLOW_DIRECT_TELEPORT; 2484 body["allow_voice_chat" ] = childGetValue("voice_chat_check").asBoolean();
2485 } 2485 body["invoice" ] = LLFloaterRegionInfo::getLastInvoice();
2486 2486
2487 if (childGetValue("fixed_sun_check").asBoolean()) 2487 // block fly is in estate database but not in estate UI, so we're not supporting it
2488 { 2488 //body["block_fly" ] = childGetValue("").asBoolean();
2489 flags |= REGION_FLAGS_SUN_FIXED; 2489
2490 } 2490 F32 sun_hour = getSunHour();
2491 2491 if (childGetValue("use_global_time_check").asBoolean())
2492 if (childGetValue("limit_payment").asBoolean()) 2492 {
2493 { 2493 sun_hour = 0.f; // 0 = global time
2494 flags |= REGION_FLAGS_DENY_ANONYMOUS; 2494 }
2495 } 2495 body["sun_hour"] = sun_hour;
2496 2496
2497 if (childGetValue("limit_age_verified").asBoolean()) 2497 body["owner_abuse_email"] = childGetValue("abuse_email_address").asString();
2498 { 2498
2499 flags |= REGION_FLAGS_DENY_AGEUNVERIFIED; 2499 // we use a responder so that we can re-get the data after committing to the database
2500 } 2500 LLHTTPClient::post(url, body, new LLEstateChangeInfoResponder((void*)this));
2501 2501 return true;
2502 2502}
2503 return flags; 2503
2504} 2504/* This is the old way of doing things, is deprecated, and should be
2505 2505 deleted when the dataserver model can be removed */
2506BOOL LLPanelEstateInfo::getGlobalTime() 2506// key = "estatechangeinfo"
2507{ 2507// strings[0] = str(estate_id) (added by simulator before relay - not here)
2508 return childGetValue("use_global_time_check").asBoolean(); 2508// strings[1] = estate_name
2509} 2509// strings[2] = str(estate_flags)
2510 2510// strings[3] = str((S32)(sun_hour * 1024.f))
2511void LLPanelEstateInfo::setGlobalTime(bool b) 2511void LLPanelEstateInfo::commitEstateInfoDataserver()
2512{ 2512{
2513 childSetValue("use_global_time_check", LLSD(b)); 2513 LLMessageSystem* msg = gMessageSystem;
2514 childSetEnabled("fixed_sun_check", LLSD(!b)); 2514 msg->newMessage("EstateOwnerMessage");
2515 childSetEnabled("sun_hour_slider", LLSD(!b)); 2515 msg->nextBlockFast(_PREHASH_AgentData);
2516 if (b) 2516 msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
2517 { 2517 msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
2518 childSetValue("sun_hour_slider", LLSD(0.f)); 2518 msg->addUUIDFast(_PREHASH_TransactionID, LLUUID::null); //not used
2519 } 2519
2520} 2520 msg->nextBlock("MethodData");
2521 2521 msg->addString("Method", "estatechangeinfo");
2522 2522 msg->addUUID("Invoice", LLFloaterRegionInfo::getLastInvoice());
2523BOOL LLPanelEstateInfo::getFixedSun() 2523
2524{ 2524 msg->nextBlock("ParamList");
2525 return childGetValue("fixed_sun_check").asBoolean(); 2525 msg->addString("Parameter", getEstateName());
2526} 2526
2527 2527 std::string buffer;
2528void LLPanelEstateInfo::setSunHour(F32 sun_hour) 2528 buffer = llformat("%u", computeEstateFlags());
2529{ 2529 msg->nextBlock("ParamList");
2530 if(sun_hour < 6.0f) 2530 msg->addString("Parameter", buffer);
2531 { 2531
2532 sun_hour = 24.0f + sun_hour; 2532 F32 sun_hour = getSunHour();
2533 } 2533 if (childGetValue("use_global_time_check").asBoolean())
2534 childSetValue("sun_hour_slider", LLSD(sun_hour)); 2534 {
2535} 2535 sun_hour = 0.f; // 0 = global time
2536 2536 }
2537F32 LLPanelEstateInfo::getSunHour() 2537
2538{ 2538 buffer = llformat("%d", (S32)(sun_hour*1024.0f));
2539 if (childIsEnabled("sun_hour_slider")) 2539 msg->nextBlock("ParamList");
2540 { 2540 msg->addString("Parameter", buffer);
2541 return (F32)childGetValue("sun_hour_slider").asReal(); 2541
2542 } 2542 gAgent.sendMessage();
2543 return 0.f; 2543}
2544} 2544
2545 2545void LLPanelEstateInfo::setEstateFlags(U32 flags)
2546const std::string LLPanelEstateInfo::getEstateName() const 2546{
2547{ 2547 childSetValue("externally_visible_check", LLSD(flags & REGION_FLAGS_EXTERNALLY_VISIBLE ? TRUE : FALSE) );
2548 return childGetValue("estate_name").asString(); 2548 childSetValue("fixed_sun_check", LLSD(flags & REGION_FLAGS_SUN_FIXED ? TRUE : FALSE) );
2549} 2549 childSetValue(
2550 2550 "voice_chat_check",
2551void LLPanelEstateInfo::setEstateName(const std::string& name) 2551 LLSD(flags & REGION_FLAGS_ALLOW_VOICE ? TRUE : FALSE));
2552{ 2552 childSetValue("allow_direct_teleport", LLSD(flags & REGION_FLAGS_ALLOW_DIRECT_TELEPORT ? TRUE : FALSE) );
2553 childSetValue("estate_name", LLSD(name)); 2553 childSetValue("limit_payment", LLSD(flags & REGION_FLAGS_DENY_ANONYMOUS ? TRUE : FALSE) );
2554} 2554 childSetValue("limit_age_verified", LLSD(flags & REGION_FLAGS_DENY_AGEUNVERIFIED ? TRUE : FALSE) );
2555 2555
2556const std::string LLPanelEstateInfo::getOwnerName() const 2556 refresh();
2557{ 2557}
2558 return childGetValue("estate_owner").asString(); 2558
2559} 2559U32 LLPanelEstateInfo::computeEstateFlags()
2560 2560{
2561void LLPanelEstateInfo::setOwnerName(const std::string& name) 2561 U32 flags = 0;
2562{ 2562
2563 childSetValue("estate_owner", LLSD(name)); 2563 if (childGetValue("externally_visible_check").asBoolean())
2564} 2564 {
2565 2565 flags |= REGION_FLAGS_EXTERNALLY_VISIBLE;
2566const std::string LLPanelEstateInfo::getAbuseEmailAddress() const 2566 }
2567{ 2567
2568 return childGetValue("abuse_email_address").asString(); 2568 if ( childGetValue("voice_chat_check").asBoolean() )
2569} 2569 {
2570 2570 flags |= REGION_FLAGS_ALLOW_VOICE;
2571void LLPanelEstateInfo::setAbuseEmailAddress(const std::string& address) 2571 }
2572{ 2572
2573 childSetValue("abuse_email_address", LLSD(address)); 2573 if (childGetValue("allow_direct_teleport").asBoolean())
2574} 2574 {
2575 2575 flags |= REGION_FLAGS_ALLOW_DIRECT_TELEPORT;
2576// static 2576 }
2577void LLPanelEstateInfo::callbackCacheName( 2577
2578 const LLUUID& id, 2578 if (childGetValue("fixed_sun_check").asBoolean())
2579 const std::string& first, 2579 {
2580 const std::string& last, 2580 flags |= REGION_FLAGS_SUN_FIXED;
2581 BOOL is_group, 2581 }
2582 void*) 2582
2583{ 2583 if (childGetValue("limit_payment").asBoolean())
2584 LLPanelEstateInfo* self = LLFloaterRegionInfo::getPanelEstate(); 2584 {
2585 if (!self) return; 2585 flags |= REGION_FLAGS_DENY_ANONYMOUS;
2586 2586 }
2587 std::string name; 2587
2588 2588 if (childGetValue("limit_age_verified").asBoolean())
2589 if (id.isNull()) 2589 {
2590 { 2590 flags |= REGION_FLAGS_DENY_AGEUNVERIFIED;
2591 name = "(none)"; 2591 }
2592 } 2592
2593 else 2593
2594 { 2594 return flags;
2595 name = first + " " + last; 2595}
2596 } 2596
2597 2597BOOL LLPanelEstateInfo::getGlobalTime()
2598 self->setOwnerName(name); 2598{
2599} 2599 return childGetValue("use_global_time_check").asBoolean();
2600 2600}
2601void LLPanelEstateInfo::clearAccessLists() 2601
2602{ 2602void LLPanelEstateInfo::setGlobalTime(bool b)
2603 LLNameListCtrl* name_list = getChild<LLNameListCtrl>("allowed_avatar_name_list"); 2603{
2604 if (name_list) 2604 childSetValue("use_global_time_check", LLSD(b));
2605 { 2605 childSetEnabled("fixed_sun_check", LLSD(!b));
2606 name_list->deleteAllItems(); 2606 childSetEnabled("sun_hour_slider", LLSD(!b));
2607 } 2607 if (b)
2608 2608 {
2609 name_list = getChild<LLNameListCtrl>("banned_avatar_name_list"); 2609 childSetValue("sun_hour_slider", LLSD(0.f));
2610 if (name_list) 2610 }
2611 { 2611}
2612 name_list->deleteAllItems(); 2612
2613 } 2613
2614} 2614BOOL LLPanelEstateInfo::getFixedSun()
2615 2615{
2616// enables/disables the "remove" button for the various allow/ban lists 2616 return childGetValue("fixed_sun_check").asBoolean();
2617BOOL LLPanelEstateInfo::checkRemovalButton(std::string name) 2617}
2618{ 2618
2619 std::string btn_name = ""; 2619void LLPanelEstateInfo::setSunHour(F32 sun_hour)
2620 if (name == "allowed_avatar_name_list") 2620{
2621 { 2621 if(sun_hour < 6.0f)
2622 btn_name = "remove_allowed_avatar_btn"; 2622 {
2623 } 2623 sun_hour = 24.0f + sun_hour;
2624 else if (name == "allowed_group_name_list") 2624 }
2625 { 2625 childSetValue("sun_hour_slider", LLSD(sun_hour));
2626 btn_name = "remove_allowed_group_btn"; 2626}
2627 } 2627
2628 else if (name == "banned_avatar_name_list") 2628F32 LLPanelEstateInfo::getSunHour()
2629 { 2629{
2630 btn_name = "remove_banned_avatar_btn"; 2630 if (childIsEnabled("sun_hour_slider"))
2631 } 2631 {
2632 else if (name == "estate_manager_name_list") 2632 return (F32)childGetValue("sun_hour_slider").asReal();
2633 { 2633 }
2634 //ONLY OWNER CAN ADD /DELET ESTATE MANAGER 2634 return 0.f;
2635 LLViewerRegion* region = gAgent.getRegion(); 2635}
2636 if (region && (region->getOwner() == gAgent.getID())) 2636
2637 { 2637const std::string LLPanelEstateInfo::getEstateName() const
2638 btn_name = "remove_estate_manager_btn"; 2638{
2639 } 2639 return childGetValue("estate_name").asString();
2640 } 2640}
2641 2641
2642 // enable the remove button if something is selected 2642void LLPanelEstateInfo::setEstateName(const std::string& name)
2643 LLNameListCtrl* name_list = getChild<LLNameListCtrl>(name); 2643{
2644 childSetEnabled(btn_name, name_list && name_list->getFirstSelected() ? TRUE : FALSE); 2644 childSetValue("estate_name", LLSD(name));
2645 2645}
2646 return (btn_name != ""); 2646
2647} 2647const std::string LLPanelEstateInfo::getOwnerName() const
2648 2648{
2649BOOL LLPanelEstateInfo::checkSunHourSlider(LLUICtrl* child_ctrl) 2649 return childGetValue("estate_owner").asString();
2650{ 2650}
2651 BOOL found_child_ctrl = FALSE; 2651
2652 if (child_ctrl->getName() == "sun_hour_slider") 2652void LLPanelEstateInfo::setOwnerName(const std::string& name)
2653 { 2653{
2654 enableButton("apply_btn"); 2654 childSetValue("estate_owner", LLSD(name));
2655 found_child_ctrl = TRUE; 2655}
2656 } 2656
2657 return found_child_ctrl; 2657const std::string LLPanelEstateInfo::getAbuseEmailAddress() const
2658} 2658{
2659 2659 return childGetValue("abuse_email_address").asString();
2660// static 2660}
2661void LLPanelEstateInfo::onClickMessageEstate(void* userdata) 2661
2662{ 2662void LLPanelEstateInfo::setAbuseEmailAddress(const std::string& address)
2663 llinfos << "LLPanelEstateInfo::onClickMessageEstate" << llendl; 2663{
2664 LLNotifications::instance().add("MessageEstate", LLSD(), LLSD(), boost::bind(&LLPanelEstateInfo::onMessageCommit, (LLPanelEstateInfo*)userdata, _1, _2)); 2664 childSetValue("abuse_email_address", LLSD(address));
2665} 2665}
2666 2666
2667bool LLPanelEstateInfo::onMessageCommit(const LLSD& notification, const LLSD& response) 2667void LLPanelEstateInfo::setAccessAllowedEnabled(bool enable_agent,
2668{ 2668 bool enable_group,
2669 S32 option = LLNotification::getSelectedOption(notification, response); 2669 bool enable_ban)
2670 std::string text = response["message"].asString(); 2670{
2671 if(option != 0) return false; 2671 childSetEnabled("allow_resident_label", enable_agent);
2672 if(text.empty()) return false; 2672 childSetEnabled("allowed_avatar_name_list", enable_agent);
2673 llinfos << "Message to everyone: " << text << llendl; 2673 childSetVisible("allowed_avatar_name_list", enable_agent);
2674 strings_t strings; 2674 childSetEnabled("add_allowed_avatar_btn", enable_agent);
2675 //integers_t integers; 2675 childSetEnabled("remove_allowed_avatar_btn", enable_agent);
2676 std::string name; 2676
2677 gAgent.buildFullname(name); 2677 // Groups
2678 strings.push_back(strings_t::value_type(name)); 2678 childSetEnabled("allow_group_label", enable_group);
2679 strings.push_back(strings_t::value_type(text)); 2679 childSetEnabled("allowed_group_name_list", enable_group);
2680 LLUUID invoice(LLFloaterRegionInfo::getLastInvoice()); 2680 childSetVisible("allowed_group_name_list", enable_group);
2681 sendEstateOwnerMessage(gMessageSystem, "instantmessage", invoice, strings); 2681 childSetEnabled("add_allowed_group_btn", enable_group);
2682 return false; 2682 childSetEnabled("remove_allowed_group_btn", enable_group);
2683} 2683
2684 2684 // Ban
2685LLPanelEstateCovenant::LLPanelEstateCovenant() 2685 childSetEnabled("ban_resident_label", enable_ban);
2686: mCovenantID(LLUUID::null) 2686 childSetEnabled("banned_avatar_name_list", enable_ban);
2687{ 2687 childSetVisible("banned_avatar_name_list", enable_ban);
2688} 2688 childSetEnabled("add_banned_avatar_btn", enable_ban);
2689 2689 childSetEnabled("remove_banned_avatar_btn", enable_ban);
2690// virtual 2690
2691bool LLPanelEstateCovenant::refreshFromRegion(LLViewerRegion* region) 2691 // Update removal buttons if needed
2692{ 2692 if (enable_agent)
2693 LLTextBox* region_name = getChild<LLTextBox>("region_name_text"); 2693 {
2694 if (region_name) 2694 checkRemovalButton("allowed_avatar_name_list");
2695 { 2695 }
2696 region_name->setText(region->getName()); 2696
2697 } 2697 if (enable_group)
2698 2698 {
2699 LLTextBox* resellable_clause = getChild<LLTextBox>("resellable_clause"); 2699 checkRemovalButton("allowed_group_name_list");
2700 if (resellable_clause) 2700 }
2701 { 2701
2702 if (region->getRegionFlags() & REGION_FLAGS_BLOCK_LAND_RESELL) 2702 if (enable_ban)
2703 { 2703 {
2704 resellable_clause->setText(getString("can_not_resell")); 2704 checkRemovalButton("banned_avatar_name_list");
2705 } 2705 }
2706 else 2706}
2707 { 2707
2708 resellable_clause->setText(getString("can_resell")); 2708// static
2709 } 2709void LLPanelEstateInfo::callbackCacheName(
2710 } 2710 const LLUUID& id,
2711 2711 const std::string& first,
2712 LLTextBox* changeable_clause = getChild<LLTextBox>("changeable_clause"); 2712 const std::string& last,
2713 if (changeable_clause) 2713 BOOL is_group,
2714 { 2714 void*)
2715 if (region->getRegionFlags() & REGION_FLAGS_ALLOW_PARCEL_CHANGES) 2715{
2716 { 2716 LLPanelEstateInfo* self = LLFloaterRegionInfo::getPanelEstate();
2717 changeable_clause->setText(getString("can_change")); 2717 if (!self) return;
2718 } 2718
2719 else 2719 std::string name;
2720 { 2720
2721 changeable_clause->setText(getString("can_not_change")); 2721 if (id.isNull())
2722 } 2722 {
2723 } 2723 name = "(none)";
2724 2724 }
2725 LLTextBox* region_maturity = getChild<LLTextBox>("region_maturity_text"); 2725 else
2726 if (region_maturity) 2726 {
2727 { 2727 name = first + " " + last;
2728 region_maturity->setText(region->getSimAccessString()); 2728 }
2729 } 2729
2730 2730 self->setOwnerName(name);
2731 LLTextBox* region_landtype = getChild<LLTextBox>("region_landtype_text"); 2731}
2732 if (region_landtype) 2732
2733 { 2733void LLPanelEstateInfo::clearAccessLists()
2734 region_landtype->setText(region->getSimProductName()); 2734{
2735 } 2735 LLNameListCtrl* name_list = getChild<LLNameListCtrl>("allowed_avatar_name_list");
2736 2736 if (name_list)
2737 2737 {
2738 // let the parent class handle the general data collection. 2738 name_list->deleteAllItems();
2739 bool rv = LLPanelRegionInfo::refreshFromRegion(region); 2739 }
2740 LLMessageSystem *msg = gMessageSystem; 2740
2741 msg->newMessage("EstateCovenantRequest"); 2741 name_list = getChild<LLNameListCtrl>("banned_avatar_name_list");
2742 msg->nextBlockFast(_PREHASH_AgentData); 2742 if (name_list)
2743 msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); 2743 {
2744 msg->addUUIDFast(_PREHASH_SessionID,gAgent.getSessionID()); 2744 name_list->deleteAllItems();
2745 msg->sendReliable(region->getHost()); 2745 }
2746 return rv; 2746}
2747} 2747
2748 2748// enables/disables the "remove" button for the various allow/ban lists
2749// virtual 2749BOOL LLPanelEstateInfo::checkRemovalButton(std::string name)
2750bool LLPanelEstateCovenant::estateUpdate(LLMessageSystem* msg) 2750{
2751{ 2751 std::string btn_name = "";
2752 llinfos << "LLPanelEstateCovenant::estateUpdate()" << llendl; 2752 if (name == "allowed_avatar_name_list")
2753 return true; 2753 {
2754} 2754 btn_name = "remove_allowed_avatar_btn";
2755 2755 }
2756// virtual 2756 else if (name == "allowed_group_name_list")
2757BOOL LLPanelEstateCovenant::postBuild() 2757 {
2758{ 2758 btn_name = "remove_allowed_group_btn";
2759 initHelpBtn("covenant_help", "HelpEstateCovenant"); 2759 }
2760 mEstateNameText = getChild<LLTextBox>("estate_name_text"); 2760 else if (name == "banned_avatar_name_list")
2761 mEstateOwnerText = getChild<LLTextBox>("estate_owner_text"); 2761 {
2762 mLastModifiedText = getChild<LLTextBox>("covenant_timestamp_text"); 2762 btn_name = "remove_banned_avatar_btn";
2763 mEditor = getChild<LLViewerTextEditor>("covenant_editor"); 2763 }
2764 if (mEditor) mEditor->setHandleEditKeysDirectly(TRUE); 2764 else if (name == "estate_manager_name_list")
2765 LLButton* reset_button = getChild<LLButton>("reset_covenant"); 2765 {
2766 reset_button->setEnabled(gAgent.canManageEstate()); 2766 //ONLY OWNER CAN ADD /DELET ESTATE MANAGER
2767 reset_button->setClickedCallback(LLPanelEstateCovenant::resetCovenantID, NULL); 2767 LLViewerRegion* region = gAgent.getRegion();
2768 2768 if (region && (region->getOwner() == gAgent.getID()))
2769 return LLPanelRegionInfo::postBuild(); 2769 {
2770} 2770 btn_name = "remove_estate_manager_btn";
2771 2771 }
2772// virtual 2772 }
2773void LLPanelEstateCovenant::updateChild(LLUICtrl* child_ctrl) 2773
2774{ 2774 // enable the remove button if something is selected
2775} 2775 LLNameListCtrl* name_list = getChild<LLNameListCtrl>(name);
2776 2776 childSetEnabled(btn_name, name_list && name_list->getFirstSelected() ? TRUE : FALSE);
2777// virtual 2777
2778BOOL LLPanelEstateCovenant::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, 2778 return (btn_name != "");
2779 EDragAndDropType cargo_type, 2779}
2780 void* cargo_data, 2780
2781 EAcceptance* accept, 2781BOOL LLPanelEstateInfo::checkSunHourSlider(LLUICtrl* child_ctrl)
2782 std::string& tooltip_msg) 2782{
2783{ 2783 BOOL found_child_ctrl = FALSE;
2784 LLInventoryItem* item = (LLInventoryItem*)cargo_data; 2784 if (child_ctrl->getName() == "sun_hour_slider")
2785 2785 {
2786 if (!gAgent.canManageEstate()) 2786 enableButton("apply_btn");
2787 { 2787 found_child_ctrl = TRUE;
2788 *accept = ACCEPT_NO; 2788 }
2789 return TRUE; 2789 return found_child_ctrl;
2790 } 2790}
2791 2791
2792 switch(cargo_type) 2792// static
2793 { 2793void LLPanelEstateInfo::onClickMessageEstate(void* userdata)
2794 case DAD_NOTECARD: 2794{
2795 *accept = ACCEPT_YES_COPY_SINGLE; 2795 llinfos << "LLPanelEstateInfo::onClickMessageEstate" << llendl;
2796 if (item && drop) 2796 LLNotifications::instance().add("MessageEstate", LLSD(), LLSD(), boost::bind(&LLPanelEstateInfo::onMessageCommit, (LLPanelEstateInfo*)userdata, _1, _2));
2797 { 2797}
2798 LLSD payload; 2798
2799 payload["item_id"] = item->getUUID(); 2799bool LLPanelEstateInfo::onMessageCommit(const LLSD& notification, const LLSD& response)
2800 LLNotifications::instance().add("EstateChangeCovenant", LLSD(), payload, 2800{
2801 LLPanelEstateCovenant::confirmChangeCovenantCallback); 2801 S32 option = LLNotification::getSelectedOption(notification, response);
2802 } 2802 std::string text = response["message"].asString();
2803 break; 2803 if(option != 0) return false;
2804 default: 2804 if(text.empty()) return false;
2805 *accept = ACCEPT_NO; 2805 llinfos << "Message to everyone: " << text << llendl;
2806 break; 2806 strings_t strings;
2807 } 2807 //integers_t integers;
2808 2808 std::string name;
2809 return TRUE; 2809 gAgent.buildFullname(name);
2810} 2810 strings.push_back(strings_t::value_type(name));
2811 2811 strings.push_back(strings_t::value_type(text));
2812// static 2812 LLUUID invoice(LLFloaterRegionInfo::getLastInvoice());
2813bool LLPanelEstateCovenant::confirmChangeCovenantCallback(const LLSD& notification, const LLSD& response) 2813 sendEstateOwnerMessage(gMessageSystem, "instantmessage", invoice, strings);
2814{ 2814 return false;
2815 S32 option = LLNotification::getSelectedOption(notification, response); 2815}
2816 LLInventoryItem* item = gInventory.getItem(notification["payload"]["item_id"].asUUID()); 2816
2817 LLPanelEstateCovenant* self = LLFloaterRegionInfo::getPanelCovenant(); 2817LLPanelEstateCovenant::LLPanelEstateCovenant()
2818 2818: mCovenantID(LLUUID::null)
2819 if (!item || !self) return false; 2819{
2820 2820}
2821 switch(option) 2821
2822 { 2822// virtual
2823 case 0: 2823bool LLPanelEstateCovenant::refreshFromRegion(LLViewerRegion* region)
2824 self->loadInvItem(item); 2824{
2825 break; 2825 LLTextBox* region_name = getChild<LLTextBox>("region_name_text");
2826 default: 2826 if (region_name)
2827 break; 2827 {
2828 } 2828 region_name->setText(region->getName());
2829 return false; 2829 }
2830} 2830
2831 2831 LLTextBox* resellable_clause = getChild<LLTextBox>("resellable_clause");
2832// static 2832 if (resellable_clause)
2833void LLPanelEstateCovenant::resetCovenantID(void* userdata) 2833 {
2834{ 2834 if (region->getRegionFlags() & REGION_FLAGS_BLOCK_LAND_RESELL)
2835 LLNotifications::instance().add("EstateChangeCovenant", LLSD(), LLSD(), confirmResetCovenantCallback); 2835 {
2836} 2836 resellable_clause->setText(getString("can_not_resell"));
2837 2837 }
2838// static 2838 else
2839bool LLPanelEstateCovenant::confirmResetCovenantCallback(const LLSD& notification, const LLSD& response) 2839 {
2840{ 2840 resellable_clause->setText(getString("can_resell"));
2841 LLPanelEstateCovenant* self = LLFloaterRegionInfo::getPanelCovenant(); 2841 }
2842 if (!self) return false; 2842 }
2843 2843
2844 S32 option = LLNotification::getSelectedOption(notification, response); 2844 LLTextBox* changeable_clause = getChild<LLTextBox>("changeable_clause");
2845 switch(option) 2845 if (changeable_clause)
2846 { 2846 {
2847 case 0: 2847 if (region->getRegionFlags() & REGION_FLAGS_ALLOW_PARCEL_CHANGES)
2848 self->loadInvItem(NULL); 2848 {
2849 break; 2849 changeable_clause->setText(getString("can_change"));
2850 default: 2850 }
2851 break; 2851 else
2852 } 2852 {
2853 return false; 2853 changeable_clause->setText(getString("can_not_change"));
2854} 2854 }
2855 2855 }
2856void LLPanelEstateCovenant::loadInvItem(LLInventoryItem *itemp) 2856
2857{ 2857 LLTextBox* region_maturity = getChild<LLTextBox>("region_maturity_text");
2858 const BOOL high_priority = TRUE; 2858 if (region_maturity)
2859 if (itemp) 2859 {
2860 { 2860 region_maturity->setText(region->getSimAccessString());
2861 gAssetStorage->getInvItemAsset(gAgent.getRegionHost(), 2861 }
2862 gAgent.getID(), 2862
2863 gAgent.getSessionID(), 2863 LLTextBox* region_landtype = getChild<LLTextBox>("region_landtype_text");
2864 itemp->getPermissions().getOwner(), 2864 if (region_landtype)
2865 LLUUID::null, 2865 {
2866 itemp->getUUID(), 2866 region_landtype->setText(region->getSimProductName());
2867 itemp->getAssetUUID(), 2867 }
2868 itemp->getType(), 2868
2869 onLoadComplete, 2869
2870 (void*)this, 2870 // let the parent class handle the general data collection.
2871 high_priority); 2871 bool rv = LLPanelRegionInfo::refreshFromRegion(region);
2872 mAssetStatus = ASSET_LOADING; 2872 LLMessageSystem *msg = gMessageSystem;
2873 } 2873 msg->newMessage("EstateCovenantRequest");
2874 else 2874 msg->nextBlockFast(_PREHASH_AgentData);
2875 { 2875 msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
2876 mAssetStatus = ASSET_LOADED; 2876 msg->addUUIDFast(_PREHASH_SessionID,gAgent.getSessionID());
2877 setCovenantTextEditor("There is no Covenant provided for this Estate."); 2877 msg->sendReliable(region->getHost());
2878 sendChangeCovenantID(LLUUID::null); 2878 return rv;
2879 } 2879}
2880} 2880
2881 2881// virtual
2882// static 2882bool LLPanelEstateCovenant::estateUpdate(LLMessageSystem* msg)
2883void LLPanelEstateCovenant::onLoadComplete(LLVFS *vfs, 2883{
2884 const LLUUID& asset_uuid, 2884 llinfos << "LLPanelEstateCovenant::estateUpdate()" << llendl;
2885 LLAssetType::EType type, 2885 return true;
2886 void* user_data, S32 status, LLExtStat ext_status) 2886}
2887{ 2887
2888 llinfos << "LLPanelEstateCovenant::onLoadComplete()" << llendl; 2888// virtual
2889 LLPanelEstateCovenant* panelp = (LLPanelEstateCovenant*)user_data; 2889BOOL LLPanelEstateCovenant::postBuild()
2890 if( panelp ) 2890{
2891 { 2891 initHelpBtn("covenant_help", "HelpEstateCovenant");
2892 if(0 == status) 2892 mEstateNameText = getChild<LLTextBox>("estate_name_text");
2893 { 2893 mEstateOwnerText = getChild<LLTextBox>("estate_owner_text");
2894 LLVFile file(vfs, asset_uuid, type, LLVFile::READ); 2894 mLastModifiedText = getChild<LLTextBox>("covenant_timestamp_text");
2895 2895 mEditor = getChild<LLViewerTextEditor>("covenant_editor");
2896 S32 file_length = file.getSize(); 2896 if (mEditor) mEditor->setHandleEditKeysDirectly(TRUE);
2897 2897 LLButton* reset_button = getChild<LLButton>("reset_covenant");
2898 char* buffer = new char[file_length+1]; 2898 reset_button->setEnabled(gAgent.canManageEstate());
2899 if (buffer == NULL) 2899 reset_button->setClickedCallback(LLPanelEstateCovenant::resetCovenantID, NULL);
2900 { 2900
2901 llerrs << "Memory Allocation Failed" << llendl; 2901 return LLPanelRegionInfo::postBuild();
2902 return; 2902}
2903 } 2903
2904 2904// virtual
2905 file.read((U8*)buffer, file_length); /* Flawfinder: ignore */ 2905void LLPanelEstateCovenant::updateChild(LLUICtrl* child_ctrl)
2906 // put a EOS at the end 2906{
2907 buffer[file_length] = 0; 2907}
2908 2908
2909 if( (file_length > 19) && !strncmp( buffer, "Linden text version", 19 ) ) 2909// virtual
2910 { 2910BOOL LLPanelEstateCovenant::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
2911 if( !panelp->mEditor->importBuffer( buffer, file_length+1 ) ) 2911 EDragAndDropType cargo_type,
2912 { 2912 void* cargo_data,
2913 llwarns << "Problem importing estate covenant." << llendl; 2913 EAcceptance* accept,
2914 LLNotifications::instance().add("ProblemImportingEstateCovenant"); 2914 std::string& tooltip_msg)
2915 } 2915{
2916 else 2916 LLInventoryItem* item = (LLInventoryItem*)cargo_data;
2917 { 2917
2918 panelp->sendChangeCovenantID(asset_uuid); 2918 if (!gAgent.canManageEstate())
2919 } 2919 {
2920 } 2920 *accept = ACCEPT_NO;
2921 else 2921 return TRUE;
2922 { 2922 }
2923 // Version 0 (just text, doesn't include version number) 2923
2924 panelp->sendChangeCovenantID(asset_uuid); 2924 switch(cargo_type)
2925 } 2925 {
2926 delete[] buffer; 2926 case DAD_NOTECARD:
2927 } 2927 *accept = ACCEPT_YES_COPY_SINGLE;
2928 else 2928 if (item && drop)
2929 { 2929 {
2930 LLViewerStats::getInstance()->incStat( LLViewerStats::ST_DOWNLOAD_FAILED ); 2930 LLSD payload;
2931 2931 payload["item_id"] = item->getUUID();
2932 if( LL_ERR_ASSET_REQUEST_NOT_IN_DATABASE == status || 2932 LLNotifications::instance().add("EstateChangeCovenant", LLSD(), payload,
2933 LL_ERR_FILE_EMPTY == status) 2933 LLPanelEstateCovenant::confirmChangeCovenantCallback);
2934 { 2934 }
2935 LLNotifications::instance().add("MissingNotecardAssetID"); 2935 break;
2936 } 2936 default:
2937 else if (LL_ERR_INSUFFICIENT_PERMISSIONS == status) 2937 *accept = ACCEPT_NO;
2938 { 2938 break;
2939 LLNotifications::instance().add("NotAllowedToViewNotecard"); 2939 }
2940 } 2940
2941 else 2941 return TRUE;
2942 { 2942}
2943 LLNotifications::instance().add("UnableToLoadNotecardAsset"); 2943
2944 } 2944// static
2945 2945bool LLPanelEstateCovenant::confirmChangeCovenantCallback(const LLSD& notification, const LLSD& response)
2946 llwarns << "Problem loading notecard: " << status << llendl; 2946{
2947 } 2947 S32 option = LLNotification::getSelectedOption(notification, response);
2948 panelp->mAssetStatus = ASSET_LOADED; 2948 LLInventoryItem* item = gInventory.getItem(notification["payload"]["item_id"].asUUID());
2949 panelp->setCovenantID(asset_uuid); 2949 LLPanelEstateCovenant* self = LLFloaterRegionInfo::getPanelCovenant();
2950 } 2950
2951} 2951 if (!item || !self) return false;
2952 2952
2953// key = "estatechangecovenantid" 2953 switch(option)
2954// strings[0] = str(estate_id) (added by simulator before relay - not here) 2954 {
2955// strings[1] = str(covenant_id) 2955 case 0:
2956void LLPanelEstateCovenant::sendChangeCovenantID(const LLUUID &asset_id) 2956 self->loadInvItem(item);
2957{ 2957 break;
2958 if (asset_id != getCovenantID()) 2958 default:
2959 { 2959 break;
2960 setCovenantID(asset_id); 2960 }
2961 2961 return false;
2962 LLMessageSystem* msg = gMessageSystem; 2962}
2963 msg->newMessage("EstateOwnerMessage"); 2963
2964 msg->nextBlockFast(_PREHASH_AgentData); 2964// static
2965 msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); 2965void LLPanelEstateCovenant::resetCovenantID(void* userdata)
2966 msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); 2966{
2967 msg->addUUIDFast(_PREHASH_TransactionID, LLUUID::null); //not used 2967 LLNotifications::instance().add("EstateChangeCovenant", LLSD(), LLSD(), confirmResetCovenantCallback);
2968 2968}
2969 msg->nextBlock("MethodData"); 2969
2970 msg->addString("Method", "estatechangecovenantid"); 2970// static
2971 msg->addUUID("Invoice", LLFloaterRegionInfo::getLastInvoice()); 2971bool LLPanelEstateCovenant::confirmResetCovenantCallback(const LLSD& notification, const LLSD& response)
2972 2972{
2973 msg->nextBlock("ParamList"); 2973 LLPanelEstateCovenant* self = LLFloaterRegionInfo::getPanelCovenant();
2974 msg->addString("Parameter", getCovenantID().asString()); 2974 if (!self) return false;
2975 gAgent.sendReliableMessage(); 2975
2976 } 2976 S32 option = LLNotification::getSelectedOption(notification, response);
2977} 2977 switch(option)
2978 2978 {
2979// virtual 2979 case 0:
2980BOOL LLPanelEstateCovenant::sendUpdate() 2980 self->loadInvItem(NULL);
2981{ 2981 break;
2982 return TRUE; 2982 default:
2983} 2983 break;
2984 2984 }
2985const std::string& LLPanelEstateCovenant::getEstateName() const 2985 return false;
2986{ 2986}
2987 return mEstateNameText->getText(); 2987
2988} 2988void LLPanelEstateCovenant::loadInvItem(LLInventoryItem *itemp)
2989 2989{
2990void LLPanelEstateCovenant::setEstateName(const std::string& name) 2990 const BOOL high_priority = TRUE;
2991{ 2991 if (itemp)
2992 mEstateNameText->setText(name); 2992 {
2993} 2993 gAssetStorage->getInvItemAsset(gAgent.getRegionHost(),
2994 2994 gAgent.getID(),
2995// static 2995 gAgent.getSessionID(),
2996void LLPanelEstateCovenant::updateCovenantText(const std::string& string, const LLUUID& asset_id) 2996 itemp->getPermissions().getOwner(),
2997{ 2997 LLUUID::null,
2998 LLPanelEstateCovenant* panelp = LLFloaterRegionInfo::getPanelCovenant(); 2998 itemp->getUUID(),
2999 if( panelp ) 2999 itemp->getAssetUUID(),
3000 { 3000 itemp->getType(),
3001 panelp->mEditor->setText(string); 3001 onLoadComplete,
3002 panelp->setCovenantID(asset_id); 3002 (void*)this,
3003 } 3003 high_priority);
3004} 3004 mAssetStatus = ASSET_LOADING;
3005 3005 }
3006// static 3006 else
3007void LLPanelEstateCovenant::updateEstateName(const std::string& name) 3007 {
3008{ 3008 mAssetStatus = ASSET_LOADED;
3009 LLPanelEstateCovenant* panelp = LLFloaterRegionInfo::getPanelCovenant(); 3009 setCovenantTextEditor("There is no Covenant provided for this Estate.");
3010 if( panelp ) 3010 sendChangeCovenantID(LLUUID::null);
3011 { 3011 }
3012 panelp->mEstateNameText->setText(name); 3012}
3013 } 3013
3014} 3014// static
3015 3015void LLPanelEstateCovenant::onLoadComplete(LLVFS *vfs,
3016// static 3016 const LLUUID& asset_uuid,
3017void LLPanelEstateCovenant::updateLastModified(const std::string& text) 3017 LLAssetType::EType type,
3018{ 3018 void* user_data, S32 status, LLExtStat ext_status)
3019 LLPanelEstateCovenant* panelp = LLFloaterRegionInfo::getPanelCovenant(); 3019{
3020 if( panelp ) 3020 llinfos << "LLPanelEstateCovenant::onLoadComplete()" << llendl;
3021 { 3021 LLPanelEstateCovenant* panelp = (LLPanelEstateCovenant*)user_data;
3022 panelp->mLastModifiedText->setText(text); 3022 if( panelp )
3023 } 3023 {
3024} 3024 if(0 == status)
3025 3025 {
3026// static 3026 LLVFile file(vfs, asset_uuid, type, LLVFile::READ);
3027void LLPanelEstateCovenant::updateEstateOwnerName(const std::string& name) 3027
3028{ 3028 S32 file_length = file.getSize();
3029 LLPanelEstateCovenant* panelp = LLFloaterRegionInfo::getPanelCovenant(); 3029
3030 if( panelp ) 3030 char* buffer = new char[file_length+1];
3031 { 3031 if (buffer == NULL)
3032 panelp->mEstateOwnerText->setText(name); 3032 {
3033 } 3033 llerrs << "Memory Allocation Failed" << llendl;
3034} 3034 return;
3035 3035 }
3036const std::string& LLPanelEstateCovenant::getOwnerName() const 3036
3037{ 3037 file.read((U8*)buffer, file_length); /* Flawfinder: ignore */
3038 return mEstateOwnerText->getText(); 3038 // put a EOS at the end
3039} 3039 buffer[file_length] = 0;
3040 3040
3041void LLPanelEstateCovenant::setOwnerName(const std::string& name) 3041 if( (file_length > 19) && !strncmp( buffer, "Linden text version", 19 ) )
3042{ 3042 {
3043 mEstateOwnerText->setText(name); 3043 if( !panelp->mEditor->importBuffer( buffer, file_length+1 ) )
3044} 3044 {
3045 3045 llwarns << "Problem importing estate covenant." << llendl;
3046void LLPanelEstateCovenant::setCovenantTextEditor(const std::string& text) 3046 LLNotifications::instance().add("ProblemImportingEstateCovenant");
3047{ 3047 }
3048 mEditor->setText(text); 3048 else
3049} 3049 {
3050 3050 panelp->sendChangeCovenantID(asset_uuid);
3051// key = "estateupdateinfo" 3051 }
3052// strings[0] = estate name 3052 }
3053// strings[1] = str(owner_id) 3053 else
3054// strings[2] = str(estate_id) 3054 {
3055// strings[3] = str(estate_flags) 3055 // Version 0 (just text, doesn't include version number)
3056// strings[4] = str((S32)(sun_hour * 1024)) 3056 panelp->sendChangeCovenantID(asset_uuid);
3057// strings[5] = str(parent_estate_id) 3057 }
3058// strings[6] = str(covenant_id) 3058 delete[] buffer;
3059// strings[7] = str(covenant_timestamp) 3059 }
3060// strings[8] = str(send_to_agent_only) 3060 else
3061// strings[9] = str(abuse_email_addr) 3061 {
3062bool LLDispatchEstateUpdateInfo::operator()( 3062 LLViewerStats::getInstance()->incStat( LLViewerStats::ST_DOWNLOAD_FAILED );
3063 const LLDispatcher* dispatcher, 3063
3064 const std::string& key, 3064 if( LL_ERR_ASSET_REQUEST_NOT_IN_DATABASE == status ||
3065 const LLUUID& invoice, 3065 LL_ERR_FILE_EMPTY == status)
3066 const sparam_t& strings) 3066 {
3067{ 3067 LLNotifications::instance().add("MissingNotecardAssetID");
3068 LLPanelEstateInfo* panel = LLFloaterRegionInfo::getPanelEstate(); 3068 }
3069 if (!panel) return true; 3069 else if (LL_ERR_INSUFFICIENT_PERMISSIONS == status)
3070 3070 {
3071 // NOTE: LLDispatcher extracts strings with an extra \0 at the 3071 LLNotifications::instance().add("NotAllowedToViewNotecard");
3072 // end. If we pass the std::string direct to the UI/renderer 3072 }
3073 // it draws with a weird character at the end of the string. 3073 else
3074 std::string estate_name = strings[0].c_str(); // preserve c_str() call! 3074 {
3075 panel->setEstateName(estate_name); 3075 LLNotifications::instance().add("UnableToLoadNotecardAsset");
3076 3076 }
3077 if (strings.size() > 3) 3077
3078 { 3078 llwarns << "Problem loading notecard: " << status << llendl;
3079 std::string abuse_email = strings[9].c_str(); // preserve c_str() call! 3079 }
3080 panel->setAbuseEmailAddress(abuse_email); 3080 panelp->mAssetStatus = ASSET_LOADED;
3081 } 3081 panelp->setCovenantID(asset_uuid);
3082 else 3082 }
3083 { 3083}
3084 panel->setAbuseEmailAddress(panel->getString("email_unsupported")); 3084
3085 } 3085// key = "estatechangecovenantid"
3086 3086// strings[0] = str(estate_id) (added by simulator before relay - not here)
3087 LLViewerRegion* regionp = gAgent.getRegion(); 3087// strings[1] = str(covenant_id)
3088 3088void LLPanelEstateCovenant::sendChangeCovenantID(const LLUUID &asset_id)
3089 LLUUID owner_id(strings[1]); 3089{
3090 regionp->setOwner(owner_id); 3090 if (asset_id != getCovenantID())
3091 // Update estate owner name in UI 3091 {
3092 const BOOL is_group = FALSE; 3092 setCovenantID(asset_id);
3093 gCacheName->get(owner_id, is_group, LLPanelEstateInfo::callbackCacheName); 3093
3094 3094 LLMessageSystem* msg = gMessageSystem;
3095 U32 estate_id = strtoul(strings[2].c_str(), NULL, 10); 3095 msg->newMessage("EstateOwnerMessage");
3096 panel->setEstateID(estate_id); 3096 msg->nextBlockFast(_PREHASH_AgentData);
3097 3097 msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
3098 U32 flags = strtoul(strings[3].c_str(), NULL, 10); 3098 msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
3099 panel->setEstateFlags(flags); 3099 msg->addUUIDFast(_PREHASH_TransactionID, LLUUID::null); //not used
3100 3100
3101 F32 sun_hour = ((F32)(strtod(strings[4].c_str(), NULL)))/1024.0f; 3101 msg->nextBlock("MethodData");
3102 if(sun_hour == 0 && (flags & REGION_FLAGS_SUN_FIXED ? FALSE : TRUE)) 3102 msg->addString("Method", "estatechangecovenantid");
3103 { 3103 msg->addUUID("Invoice", LLFloaterRegionInfo::getLastInvoice());
3104 panel->setGlobalTime(TRUE); 3104
3105 } 3105 msg->nextBlock("ParamList");
3106 else 3106 msg->addString("Parameter", getCovenantID().asString());
3107 { 3107 gAgent.sendReliableMessage();
3108 panel->setGlobalTime(FALSE); 3108 }
3109 panel->setSunHour(sun_hour); 3109}
3110 } 3110
3111 3111// virtual
3112 return true; 3112BOOL LLPanelEstateCovenant::sendUpdate()
3113} 3113{
3114 3114 return TRUE;
3115 3115}
3116// key = "setaccess" 3116
3117// strings[0] = str(estate_id) 3117const std::string& LLPanelEstateCovenant::getEstateName() const
3118// strings[1] = str(packed_access_lists) 3118{
3119// strings[2] = str(num allowed agent ids) 3119 return mEstateNameText->getText();
3120// strings[3] = str(num allowed group ids) 3120}
3121// strings[4] = str(num banned agent ids) 3121
3122// strings[5] = str(num estate manager agent ids) 3122void LLPanelEstateCovenant::setEstateName(const std::string& name)
3123// strings[6] = bin(uuid) 3123{
3124// strings[7] = bin(uuid) 3124 mEstateNameText->setText(name);
3125// strings[8] = bin(uuid) 3125}
3126// ... 3126
3127bool LLDispatchSetEstateAccess::operator()( 3127// static
3128 const LLDispatcher* dispatcher, 3128void LLPanelEstateCovenant::updateCovenantText(const std::string& string, const LLUUID& asset_id)
3129 const std::string& key, 3129{
3130 const LLUUID& invoice, 3130 LLPanelEstateCovenant* panelp = LLFloaterRegionInfo::getPanelCovenant();
3131 const sparam_t& strings) 3131 if( panelp )
3132{ 3132 {
3133 LLPanelEstateInfo* panel = LLFloaterRegionInfo::getPanelEstate(); 3133 panelp->mEditor->setText(string);
3134 if (!panel) return true; 3134 panelp->setCovenantID(asset_id);
3135 3135 }
3136 S32 index = 1; // skip estate_id 3136}
3137 U32 access_flags = strtoul(strings[index++].c_str(), NULL,10); 3137
3138 S32 num_allowed_agents = strtol(strings[index++].c_str(), NULL, 10); 3138// static
3139 S32 num_allowed_groups = strtol(strings[index++].c_str(), NULL, 10); 3139void LLPanelEstateCovenant::updateEstateName(const std::string& name)
3140 S32 num_banned_agents = strtol(strings[index++].c_str(), NULL, 10); 3140{
3141 S32 num_estate_managers = strtol(strings[index++].c_str(), NULL, 10); 3141 LLPanelEstateCovenant* panelp = LLFloaterRegionInfo::getPanelCovenant();
3142 3142 if( panelp )
3143 // sanity ckecks 3143 {
3144 if (num_allowed_agents > 0 3144 panelp->mEstateNameText->setText(name);
3145 && !(access_flags & ESTATE_ACCESS_ALLOWED_AGENTS)) 3145 }
3146 { 3146}
3147 llwarns << "non-zero count for allowed agents, but no corresponding flag" << llendl; 3147
3148 } 3148// static
3149 if (num_allowed_groups > 0 3149void LLPanelEstateCovenant::updateLastModified(const std::string& text)
3150 && !(access_flags & ESTATE_ACCESS_ALLOWED_GROUPS)) 3150{
3151 { 3151 LLPanelEstateCovenant* panelp = LLFloaterRegionInfo::getPanelCovenant();
3152 llwarns << "non-zero count for allowed groups, but no corresponding flag" << llendl; 3152 if( panelp )
3153 } 3153 {
3154 if (num_banned_agents > 0 3154 panelp->mLastModifiedText->setText(text);
3155 && !(access_flags & ESTATE_ACCESS_BANNED_AGENTS)) 3155 }
3156 { 3156}
3157 llwarns << "non-zero count for banned agents, but no corresponding flag" << llendl; 3157
3158 } 3158// static
3159 if (num_estate_managers > 0 3159void LLPanelEstateCovenant::updateEstateOwnerName(const std::string& name)
3160 && !(access_flags & ESTATE_ACCESS_MANAGERS)) 3160{
3161 { 3161 LLPanelEstateCovenant* panelp = LLFloaterRegionInfo::getPanelCovenant();
3162 llwarns << "non-zero count for managers, but no corresponding flag" << llendl; 3162 if( panelp )
3163 } 3163 {
3164 3164 panelp->mEstateOwnerText->setText(name);
3165 // grab the UUID's out of the string fields 3165 }
3166 if (access_flags & ESTATE_ACCESS_ALLOWED_AGENTS) 3166}
3167 { 3167
3168 LLNameListCtrl* allowed_agent_name_list; 3168const std::string& LLPanelEstateCovenant::getOwnerName() const
3169 allowed_agent_name_list = panel->getChild<LLNameListCtrl>("allowed_avatar_name_list"); 3169{
3170 3170 return mEstateOwnerText->getText();
3171 int totalAllowedAgents = num_allowed_agents; 3171}
3172 3172
3173 if (allowed_agent_name_list) 3173void LLPanelEstateCovenant::setOwnerName(const std::string& name)
3174 { 3174{
3175 totalAllowedAgents += allowed_agent_name_list->getItemCount(); 3175 mEstateOwnerText->setText(name);
3176 } 3176}
3177 3177
3178 std::string msg = llformat("Allowed residents: (%d, max %d)", 3178void LLPanelEstateCovenant::setCovenantTextEditor(const std::string& text)
3179 totalAllowedAgents, 3179{
3180 ESTATE_MAX_ACCESS_IDS); 3180 mEditor->setText(text);
3181 panel->childSetValue("allow_resident_label", LLSD(msg)); 3181}
3182 3182
3183 if (allowed_agent_name_list) 3183// key = "estateupdateinfo"
3184 { 3184// strings[0] = estate name
3185 //allowed_agent_name_list->deleteAllItems(); 3185// strings[1] = str(owner_id)
3186 for (S32 i = 0; i < num_allowed_agents && i < ESTATE_MAX_ACCESS_IDS; i++) 3186// strings[2] = str(estate_id)
3187 { 3187// strings[3] = str(estate_flags)
3188 LLUUID id; 3188// strings[4] = str((S32)(sun_hour * 1024))
3189 memcpy(id.mData, strings[index++].data(), UUID_BYTES); /* Flawfinder: ignore */ 3189// strings[5] = str(parent_estate_id)
3190 allowed_agent_name_list->addNameItem(id); 3190// strings[6] = str(covenant_id)
3191 } 3191// strings[7] = str(covenant_timestamp)
3192 panel->childSetEnabled("remove_allowed_avatar_btn", allowed_agent_name_list->getFirstSelected() ? TRUE : FALSE); 3192// strings[8] = str(send_to_agent_only)
3193 allowed_agent_name_list->sortByColumnIndex(0, TRUE); 3193// strings[9] = str(abuse_email_addr)
3194 } 3194bool LLDispatchEstateUpdateInfo::operator()(
3195 } 3195 const LLDispatcher* dispatcher,
3196 3196 const std::string& key,
3197 if (access_flags & ESTATE_ACCESS_ALLOWED_GROUPS) 3197 const LLUUID& invoice,
3198 { 3198 const sparam_t& strings)
3199 LLNameListCtrl* allowed_group_name_list; 3199{
3200 allowed_group_name_list = panel->getChild<LLNameListCtrl>("allowed_group_name_list"); 3200 LLPanelEstateInfo* panel = LLFloaterRegionInfo::getPanelEstate();
3201 3201 if (!panel) return true;
3202 std::string msg = llformat("Allowed groups: (%d, max %d)", 3202
3203 num_allowed_groups, 3203 // NOTE: LLDispatcher extracts strings with an extra \0 at the
3204 (S32) ESTATE_MAX_GROUP_IDS); 3204 // end. If we pass the std::string direct to the UI/renderer
3205 panel->childSetValue("allow_group_label", LLSD(msg)); 3205 // it draws with a weird character at the end of the string.
3206 3206 std::string estate_name = strings[0].c_str(); // preserve c_str() call!
3207 if (allowed_group_name_list) 3207 panel->setEstateName(estate_name);
3208 { 3208
3209 allowed_group_name_list->deleteAllItems(); 3209 if (strings.size() > 3)
3210 for (S32 i = 0; i < num_allowed_groups && i < ESTATE_MAX_GROUP_IDS; i++) 3210 {
3211 { 3211 std::string abuse_email = strings[9].c_str(); // preserve c_str() call!
3212 LLUUID id; 3212 panel->setAbuseEmailAddress(abuse_email);
3213 memcpy(id.mData, strings[index++].data(), UUID_BYTES); /* Flawfinder: ignore */ 3213 }
3214 allowed_group_name_list->addGroupNameItem(id); 3214 else
3215 } 3215 {
3216 panel->childSetEnabled("remove_allowed_group_btn", allowed_group_name_list->getFirstSelected() ? TRUE : FALSE); 3216 panel->setAbuseEmailAddress(panel->getString("email_unsupported"));
3217 allowed_group_name_list->sortByColumnIndex(0, TRUE); 3217 }
3218 } 3218
3219 } 3219 LLViewerRegion* regionp = gAgent.getRegion();
3220 3220
3221 if (access_flags & ESTATE_ACCESS_BANNED_AGENTS) 3221 LLUUID owner_id(strings[1]);
3222 { 3222 regionp->setOwner(owner_id);
3223 LLNameListCtrl* banned_agent_name_list; 3223 // Update estate owner name in UI
3224 banned_agent_name_list = panel->getChild<LLNameListCtrl>("banned_avatar_name_list"); 3224 const BOOL is_group = FALSE;
3225 3225 gCacheName->get(owner_id, is_group, LLPanelEstateInfo::callbackCacheName);
3226 int totalBannedAgents = num_banned_agents; 3226
3227 3227 U32 estate_id = strtoul(strings[2].c_str(), NULL, 10);
3228 if (banned_agent_name_list) 3228 panel->setEstateID(estate_id);
3229 { 3229
3230 totalBannedAgents += banned_agent_name_list->getItemCount(); 3230 U32 flags = strtoul(strings[3].c_str(), NULL, 10);
3231 } 3231 panel->setEstateFlags(flags);
3232 3232
3233 3233 F32 sun_hour = ((F32)(strtod(strings[4].c_str(), NULL)))/1024.0f;
3234 std::string msg = llformat("Banned residents: (%d, max %d)", 3234 if(sun_hour == 0 && (flags & REGION_FLAGS_SUN_FIXED ? FALSE : TRUE))
3235 totalBannedAgents, 3235 {
3236 ESTATE_MAX_ACCESS_IDS); 3236 panel->setGlobalTime(TRUE);
3237 panel->childSetValue("ban_resident_label", LLSD(msg)); 3237 }
3238 3238 else
3239 if (banned_agent_name_list) 3239 {
3240 { 3240 panel->setGlobalTime(FALSE);
3241 //banned_agent_name_list->deleteAllItems(); 3241 panel->setSunHour(sun_hour);
3242 for (S32 i = 0; i < num_banned_agents && i < ESTATE_MAX_ACCESS_IDS; i++) 3242 }
3243 { 3243
3244 LLUUID id; 3244 bool visible_from_mainland = (bool)(flags & REGION_FLAGS_EXTERNALLY_VISIBLE);
3245 memcpy(id.mData, strings[index++].data(), UUID_BYTES); /* Flawfinder: ignore */ 3245 bool god = gAgent.isGodlike();
3246 banned_agent_name_list->addNameItem(id); 3246 bool linden_estate = (estate_id <= ESTATE_LAST_LINDEN);
3247 } 3247
3248 panel->childSetEnabled("remove_banned_avatar_btn", banned_agent_name_list->getFirstSelected() ? TRUE : FALSE); 3248 // If visible from mainland, disable the access allowed
3249 banned_agent_name_list->sortByColumnIndex(0, TRUE); 3249 // UI, as anyone can teleport there.
3250 } 3250 // However, gods need to be able to edit the access list for
3251 } 3251 // linden estates, regardless of visibility, to allow object
3252 3252 // and L$ transfers.
3253 if (access_flags & ESTATE_ACCESS_MANAGERS) 3253 bool enable_agent = (!visible_from_mainland || (god && linden_estate));
3254 { 3254 bool enable_group = enable_agent;
3255 std::string msg = llformat("Estate Managers: (%d, max %d)", 3255 bool enable_ban = !linden_estate;
3256 num_estate_managers, 3256 panel->setAccessAllowedEnabled(enable_agent, enable_group, enable_ban);
3257 ESTATE_MAX_MANAGERS); 3257
3258 panel->childSetValue("estate_manager_label", LLSD(msg)); 3258 return true;
3259 3259}
3260 LLNameListCtrl* estate_manager_name_list = 3260
3261 panel->getChild<LLNameListCtrl>("estate_manager_name_list"); 3261
3262 if (estate_manager_name_list) 3262// key = "setaccess"
3263 { 3263// strings[0] = str(estate_id)
3264 estate_manager_name_list->deleteAllItems(); // Clear existing entries 3264// strings[1] = str(packed_access_lists)
3265 3265// strings[2] = str(num allowed agent ids)
3266 // There should be only ESTATE_MAX_MANAGERS people in the list, but if the database gets more (SL-46107) don't 3266// strings[3] = str(num allowed group ids)
3267 // truncate the list unless it's really big. Go ahead and show the extras so the user doesn't get confused, 3267// strings[4] = str(num banned agent ids)
3268 // and they can still remove them. 3268// strings[5] = str(num estate manager agent ids)
3269 for (S32 i = 0; i < num_estate_managers && i < (ESTATE_MAX_MANAGERS * 4); i++) 3269// strings[6] = bin(uuid)
3270 { 3270// strings[7] = bin(uuid)
3271 LLUUID id; 3271// strings[8] = bin(uuid)
3272 memcpy(id.mData, strings[index++].data(), UUID_BYTES); /* Flawfinder: ignore */ 3272// ...
3273 estate_manager_name_list->addNameItem(id); 3273bool LLDispatchSetEstateAccess::operator()(
3274 } 3274 const LLDispatcher* dispatcher,
3275 panel->childSetEnabled("remove_estate_manager_btn", estate_manager_name_list->getFirstSelected() ? TRUE : FALSE); 3275 const std::string& key,
3276 estate_manager_name_list->sortByColumnIndex(0, TRUE); 3276 const LLUUID& invoice,
3277 } 3277 const sparam_t& strings)
3278 } 3278{
3279 3279 LLPanelEstateInfo* panel = LLFloaterRegionInfo::getPanelEstate();
3280 return true; 3280 if (!panel) return true;
3281} 3281
3282 3282 S32 index = 1; // skip estate_id
3283// [RLVa:KB] - Checked: 2009-07-04 (RLVa-1.0.0a) 3283 U32 access_flags = strtoul(strings[index++].c_str(), NULL,10);
3284void LLFloaterRegionInfo::open() 3284 S32 num_allowed_agents = strtol(strings[index++].c_str(), NULL, 10);
3285{ 3285 S32 num_allowed_groups = strtol(strings[index++].c_str(), NULL, 10);
3286 // We'll allow access to the estate tools for estate managers (and for the sim owner) 3286 S32 num_banned_agents = strtol(strings[index++].c_str(), NULL, 10);
3287 if (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWLOC)) 3287 S32 num_estate_managers = strtol(strings[index++].c_str(), NULL, 10);
3288 { 3288
3289 LLViewerRegion* pRegion = gAgent.getRegion(); 3289 // sanity ckecks
3290 if (!pRegion) 3290 if (num_allowed_agents > 0
3291 return; 3291 && !(access_flags & ESTATE_ACCESS_ALLOWED_AGENTS))
3292 3292 {
3293 // Should be able to call LLRegion::canManageEstate() but then we can fake god like 3293 llwarns << "non-zero count for allowed agents, but no corresponding flag" << llendl;
3294 if ( (!pRegion->isEstateManager()) && (pRegion->getOwner() != gAgent.getID()) ) 3294 }
3295 return; 3295 if (num_allowed_groups > 0
3296 } 3296 && !(access_flags & ESTATE_ACCESS_ALLOWED_GROUPS))
3297 3297 {
3298 LLFloater::open(); 3298 llwarns << "non-zero count for allowed groups, but no corresponding flag" << llendl;
3299} 3299 }
3300// [/RLVa:KB] 3300 if (num_banned_agents > 0
3301 && !(access_flags & ESTATE_ACCESS_BANNED_AGENTS))
3302 {
3303 llwarns << "non-zero count for banned agents, but no corresponding flag" << llendl;
3304 }
3305 if (num_estate_managers > 0
3306 && !(access_flags & ESTATE_ACCESS_MANAGERS))
3307 {
3308 llwarns << "non-zero count for managers, but no corresponding flag" << llendl;
3309 }
3310
3311 // grab the UUID's out of the string fields
3312 if (access_flags & ESTATE_ACCESS_ALLOWED_AGENTS)
3313 {
3314 LLNameListCtrl* allowed_agent_name_list;
3315 allowed_agent_name_list = panel->getChild<LLNameListCtrl>("allowed_avatar_name_list");
3316
3317 int totalAllowedAgents = num_allowed_agents;
3318
3319 if (allowed_agent_name_list)
3320 {
3321 totalAllowedAgents += allowed_agent_name_list->getItemCount();
3322 }
3323
3324 std::string msg = llformat("Allowed residents: (%d, max %d)",
3325 totalAllowedAgents,
3326 ESTATE_MAX_ACCESS_IDS);
3327 panel->childSetValue("allow_resident_label", LLSD(msg));
3328
3329 if (allowed_agent_name_list)
3330 {
3331 //allowed_agent_name_list->deleteAllItems();
3332 for (S32 i = 0; i < num_allowed_agents && i < ESTATE_MAX_ACCESS_IDS; i++)
3333 {
3334 LLUUID id;
3335 memcpy(id.mData, strings[index++].data(), UUID_BYTES); /* Flawfinder: ignore */
3336 allowed_agent_name_list->addNameItem(id);
3337 }
3338 panel->childSetEnabled("remove_allowed_avatar_btn", allowed_agent_name_list->getFirstSelected() ? TRUE : FALSE);
3339 allowed_agent_name_list->sortByColumnIndex(0, TRUE);
3340 }
3341 }
3342
3343 if (access_flags & ESTATE_ACCESS_ALLOWED_GROUPS)
3344 {
3345 LLNameListCtrl* allowed_group_name_list;
3346 allowed_group_name_list = panel->getChild<LLNameListCtrl>("allowed_group_name_list");
3347
3348 std::string msg = llformat("Allowed groups: (%d, max %d)",
3349 num_allowed_groups,
3350 (S32) ESTATE_MAX_GROUP_IDS);
3351 panel->childSetValue("allow_group_label", LLSD(msg));
3352
3353 if (allowed_group_name_list)
3354 {
3355 allowed_group_name_list->deleteAllItems();
3356 for (S32 i = 0; i < num_allowed_groups && i < ESTATE_MAX_GROUP_IDS; i++)
3357 {
3358 LLUUID id;
3359 memcpy(id.mData, strings[index++].data(), UUID_BYTES); /* Flawfinder: ignore */
3360 allowed_group_name_list->addGroupNameItem(id);
3361 }
3362 panel->childSetEnabled("remove_allowed_group_btn", allowed_group_name_list->getFirstSelected() ? TRUE : FALSE);
3363 allowed_group_name_list->sortByColumnIndex(0, TRUE);
3364 }
3365 }
3366
3367 if (access_flags & ESTATE_ACCESS_BANNED_AGENTS)
3368 {
3369 LLNameListCtrl* banned_agent_name_list;
3370 banned_agent_name_list = panel->getChild<LLNameListCtrl>("banned_avatar_name_list");
3371
3372 int totalBannedAgents = num_banned_agents;
3373
3374 if (banned_agent_name_list)
3375 {
3376 totalBannedAgents += banned_agent_name_list->getItemCount();
3377 }
3378
3379
3380 std::string msg = llformat("Banned residents: (%d, max %d)",
3381 totalBannedAgents,
3382 ESTATE_MAX_ACCESS_IDS);
3383 panel->childSetValue("ban_resident_label", LLSD(msg));
3384
3385 if (banned_agent_name_list)
3386 {
3387 //banned_agent_name_list->deleteAllItems();
3388 for (S32 i = 0; i < num_banned_agents && i < ESTATE_MAX_ACCESS_IDS; i++)
3389 {
3390 LLUUID id;
3391 memcpy(id.mData, strings[index++].data(), UUID_BYTES); /* Flawfinder: ignore */
3392 banned_agent_name_list->addNameItem(id);
3393 }
3394 panel->childSetEnabled("remove_banned_avatar_btn", banned_agent_name_list->getFirstSelected() ? TRUE : FALSE);
3395 banned_agent_name_list->sortByColumnIndex(0, TRUE);
3396 }
3397 }
3398
3399 if (access_flags & ESTATE_ACCESS_MANAGERS)
3400 {
3401 std::string msg = llformat("Estate Managers: (%d, max %d)",
3402 num_estate_managers,
3403 ESTATE_MAX_MANAGERS);
3404 panel->childSetValue("estate_manager_label", LLSD(msg));
3405
3406 LLNameListCtrl* estate_manager_name_list =
3407 panel->getChild<LLNameListCtrl>("estate_manager_name_list");
3408 if (estate_manager_name_list)
3409 {
3410 estate_manager_name_list->deleteAllItems(); // Clear existing entries
3411
3412 // There should be only ESTATE_MAX_MANAGERS people in the list, but if the database gets more (SL-46107) don't
3413 // truncate the list unless it's really big. Go ahead and show the extras so the user doesn't get confused,
3414 // and they can still remove them.
3415 for (S32 i = 0; i < num_estate_managers && i < (ESTATE_MAX_MANAGERS * 4); i++)
3416 {
3417 LLUUID id;
3418 memcpy(id.mData, strings[index++].data(), UUID_BYTES); /* Flawfinder: ignore */
3419 estate_manager_name_list->addNameItem(id);
3420 }
3421 panel->childSetEnabled("remove_estate_manager_btn", estate_manager_name_list->getFirstSelected() ? TRUE : FALSE);
3422 estate_manager_name_list->sortByColumnIndex(0, TRUE);
3423 }
3424 }
3425
3426 return true;
3427}
3428
3429// [RLVa:KB] - Checked: 2009-07-04 (RLVa-1.0.0a)
3430void LLFloaterRegionInfo::open()
3431{
3432 // We'll allow access to the estate tools for estate managers (and for the sim owner)
3433 if (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWLOC))
3434 {
3435 LLViewerRegion* pRegion = gAgent.getRegion();
3436 if (!pRegion)
3437 return;
3438
3439 // Should be able to call LLRegion::canManageEstate() but then we can fake god like
3440 if ( (!pRegion->isEstateManager()) && (pRegion->getOwner() != gAgent.getID()) )
3441 return;
3442 }
3443
3444 LLFloater::open();
3445}
3446// [/RLVa:KB]
3447
diff --git a/linden/indra/newview/llfloatertools.cpp b/linden/indra/newview/llfloatertools.cpp
index 2aed361..e22de66 100644
--- a/linden/indra/newview/llfloatertools.cpp
+++ b/linden/indra/newview/llfloatertools.cpp
@@ -1259,9 +1259,8 @@ void LLFloaterTools::onClickLink(void* data)
1259 } 1259 }
1260 1260
1261 S32 max_linked_prims = 0; 1261 S32 max_linked_prims = 0;
1262 1262 LLViewerObject* first_rootp = LLSelectMgr::getInstance()->getSelection()->getFirstRootObject();
1263 LLViewerObject* object = LLSelectMgr::getInstance()->getSelection()->getFirstRootObject(); 1263 if(first_rootp && first_rootp->usePhysics())
1264 if(object && object->usePhysics())
1265 { 1264 {
1266 //Physical - use phys prim limit 1265 //Physical - use phys prim limit
1267 max_linked_prims = gHippoLimits->getMaxPhysLinkedPrims(); 1266 max_linked_prims = gHippoLimits->getMaxPhysLinkedPrims();
diff --git a/linden/indra/newview/llfloatertos.cpp b/linden/indra/newview/llfloatertos.cpp
index 748139d..ebbecb1 100644
--- a/linden/indra/newview/llfloatertos.cpp
+++ b/linden/indra/newview/llfloatertos.cpp
@@ -1,305 +1,306 @@
1/** 1/**
2 * @file llfloatertos.cpp 2 * @file llfloatertos.cpp
3 * @brief Terms of Service Agreement dialog 3 * @brief Terms of Service Agreement dialog
4 * 4 *
5 * $LicenseInfo:firstyear=2003&license=viewergpl$ 5 * $LicenseInfo:firstyear=2003&license=viewergpl$
6 * 6 *
7 * Copyright (c) 2003-2009, Linden Research, Inc. 7 * Copyright (c) 2003-2009, Linden Research, Inc.
8 * 8 *
9 * Second Life Viewer Source Code 9 * Second Life Viewer Source Code
10 * The source code in this file ("Source Code") is provided by Linden Lab 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 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 12 * ("GPL"), unless you have obtained a separate licensing agreement
13 * ("Other License"), formally executed by you and Linden Lab. Terms of 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 14 * the GPL can be found in doc/GPL-license.txt in this distribution, or
15 * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 15 * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
16 * 16 *
17 * There are special exceptions to the terms and conditions of the GPL as 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 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 19 * in the file doc/FLOSS-exception.txt in this software distribution, or
20 * online at 20 * online at
21 * http://secondlifegrid.net/programs/open_source/licensing/flossexception 21 * http://secondlifegrid.net/programs/open_source/licensing/flossexception
22 * 22 *
23 * By copying, modifying or distributing this software, you acknowledge 23 * By copying, modifying or distributing this software, you acknowledge
24 * that you have read and understood your obligations described above, 24 * that you have read and understood your obligations described above,
25 * and agree to abide by those obligations. 25 * and agree to abide by those obligations.
26 * 26 *
27 * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO 27 * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
28 * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, 28 * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
29 * COMPLETENESS OR PERFORMANCE. 29 * COMPLETENESS OR PERFORMANCE.
30 * $/LicenseInfo$ 30 * $/LicenseInfo$
31 */ 31 */
32 32
33#include "llviewerprecompiledheaders.h" 33#include "llviewerprecompiledheaders.h"
34 34
35#include "llfloatertos.h" 35#include "llfloatertos.h"
36 36
37// viewer includes 37// viewer includes
38#include "llagent.h" 38#include "llagent.h"
39#include "llappviewer.h" 39#include "llappviewer.h"
40#include "llstartup.h" 40#include "llstartup.h"
41#include "llviewerstats.h" 41#include "llviewerstats.h"
42#include "llviewertexteditor.h" 42#include "llviewertexteditor.h"
43#include "llviewerwindow.h" 43#include "llviewerwindow.h"
44 44
45// viewer library includes 45// linden library includes
46#include "llbutton.h" 46#include "llbutton.h"
47#include "llhttpclient.h" 47#include "llhttpclient.h"
48#include "llhttpstatuscodes.h" // for HTTP_FOUND 48#include "llhttpstatuscodes.h" // for HTTP_FOUND
49#include "llradiogroup.h" 49#include "llradiogroup.h"
50#include "lltextbox.h" 50#include "lltextbox.h"
51#include "llui.h" 51#include "llui.h"
52#include "lluictrlfactory.h" 52#include "lluictrlfactory.h"
53#include "llvfile.h" 53#include "llvfile.h"
54#include "message.h" 54#include "message.h"
55#include "hippogridmanager.h" 55#include "hippogridmanager.h"
56 56
57 57
58// static 58// static
59LLFloaterTOS* LLFloaterTOS::sInstance = NULL; 59LLFloaterTOS* LLFloaterTOS::sInstance = NULL;
60 60
61// static 61// static
62LLFloaterTOS* LLFloaterTOS::show(ETOSType type, const std::string & message) 62LLFloaterTOS* LLFloaterTOS::show(ETOSType type, const std::string & message)
63{ 63{
64 if( !LLFloaterTOS::sInstance ) 64 if( !LLFloaterTOS::sInstance )
65 { 65 {
66 LLFloaterTOS::sInstance = new LLFloaterTOS(type, message); 66 LLFloaterTOS::sInstance = new LLFloaterTOS(type, message);
67 } 67 }
68 68
69 if (type == TOS_TOS) 69 if (type == TOS_TOS)
70 { 70 {
71 LLUICtrlFactory::getInstance()->buildFloater(LLFloaterTOS::sInstance, "floater_tos.xml"); 71 LLUICtrlFactory::getInstance()->buildFloater(LLFloaterTOS::sInstance, "floater_tos.xml");
72 } 72 }
73 else 73 else
74 { 74 {
75 LLUICtrlFactory::getInstance()->buildFloater(LLFloaterTOS::sInstance, "floater_critical.xml"); 75 LLUICtrlFactory::getInstance()->buildFloater(LLFloaterTOS::sInstance, "floater_critical.xml");
76 } 76 }
77 77
78 return LLFloaterTOS::sInstance; 78 return LLFloaterTOS::sInstance;
79} 79}
80 80
81 81
82LLFloaterTOS::LLFloaterTOS(ETOSType type, const std::string & message) 82LLFloaterTOS::LLFloaterTOS(ETOSType type, const std::string & message)
83: LLModalDialog( std::string(" "), 100, 100 ), 83: LLModalDialog( std::string(" "), 100, 100 ),
84 mType(type), 84 mType(type),
85 mMessage(message), 85 mMessage(message),
86 mWebBrowserWindowId( 0 ), 86 mWebBrowserWindowId( 0 ),
87 mLoadCompleteCount( 0 ) 87 mLoadCompleteCount( 0 )
88{ 88{
89} 89}
90 90
91// helper class that trys to download a URL from a web site and calls a method 91// helper class that trys to download a URL from a web site and calls a method
92// on parent class indicating if the web server is working or not 92// on parent class indicating if the web server is working or not
93class LLIamHereTOS : public LLHTTPClient::Responder 93class LLIamHereTOS : public LLHTTPClient::Responder
94{ 94{
95 private: 95 private:
96 LLIamHereTOS( LLFloaterTOS* parent ) : 96 LLIamHereTOS( LLFloaterTOS* parent ) :
97 mParent( parent ) 97 mParent( parent )
98 {} 98 {}
99 99
100 LLFloaterTOS* mParent; 100 LLFloaterTOS* mParent;
101 101
102 public: 102 public:
103 103
104 static boost::intrusive_ptr< LLIamHereTOS > build( LLFloaterTOS* parent ) 104 static boost::intrusive_ptr< LLIamHereTOS > build( LLFloaterTOS* parent )
105 { 105 {
106 return boost::intrusive_ptr< LLIamHereTOS >( new LLIamHereTOS( parent ) ); 106 return boost::intrusive_ptr< LLIamHereTOS >( new LLIamHereTOS( parent ) );
107 }; 107 };
108 108
109 virtual void setParent( LLFloaterTOS* parentIn ) 109 virtual void setParent( LLFloaterTOS* parentIn )
110 { 110 {
111 mParent = parentIn; 111 mParent = parentIn;
112 }; 112 };
113 113
114 virtual void result( const LLSD& content ) 114 virtual void result( const LLSD& content )
115 { 115 {
116 if ( mParent ) 116 if ( mParent )
117 mParent->setSiteIsAlive( true ); 117 mParent->setSiteIsAlive( true );
118 }; 118 };
119 119
120 virtual void error( U32 status, const std::string& reason ) 120 virtual void error( U32 status, const std::string& reason )
121 { 121 {
122 if ( mParent ) 122 if ( mParent )
123 { 123 {
124 // *HACK: For purposes of this alive check, 302 Found 124 // *HACK: For purposes of this alive check, 302 Found
125 // (aka Moved Temporarily) is considered alive. The web site 125 // (aka Moved Temporarily) is considered alive. The web site
126 // redirects this link to a "cache busting" temporary URL. JC 126 // redirects this link to a "cache busting" temporary URL. JC
127 bool alive = (status == HTTP_FOUND); 127 bool alive = (status == HTTP_FOUND);
128 mParent->setSiteIsAlive( alive ); 128 mParent->setSiteIsAlive( alive );
129 } 129 }
130 }; 130 };
131}; 131};
132 132
133// this is global and not a class member to keep crud out of the header file 133// this is global and not a class member to keep crud out of the header file
134namespace { 134namespace {
135 boost::intrusive_ptr< LLIamHereTOS > gResponsePtr = 0; 135 boost::intrusive_ptr< LLIamHereTOS > gResponsePtr = 0;
136}; 136};
137 137
138BOOL LLFloaterTOS::postBuild() 138BOOL LLFloaterTOS::postBuild()
139{ 139{
140 childSetAction("Continue", onContinue, this); 140 childSetAction("Continue", onContinue, this);
141 childSetAction("Cancel", onCancel, this); 141 childSetAction("Cancel", onCancel, this);
142 childSetCommitCallback("agree_chk", updateAgree, this); 142 childSetCommitCallback("agree_chk", updateAgree, this);
143 143
144 LLCheckBoxCtrl* tos_agreement = getChild<LLCheckBoxCtrl>("agree_chk"); 144 LLCheckBoxCtrl* tos_agreement = getChild<LLCheckBoxCtrl>("agree_chk");
145 tos_agreement->setEnabled( true ); 145 tos_agreement->setEnabled( true );
146 146
147 //Always set this so that the TOS is displayed whether the web browser pops up or not. 147 //Always set this so that the TOS is displayed whether the web browser pops up or not.
148 LLTextEditor *editor = getChild<LLTextEditor>("tos_text"); 148 LLTextEditor *editor = getChild<LLTextEditor>("tos_text");
149 editor->setHandleEditKeysDirectly( TRUE ); 149 editor->setHandleEditKeysDirectly( TRUE );
150 editor->setEnabled( FALSE ); 150 editor->setEnabled( FALSE );
151 editor->setWordWrap(TRUE); 151 editor->setWordWrap(TRUE);
152 editor->setFocus(TRUE); 152 editor->setFocus(TRUE);
153 editor->setValue(LLSD(mMessage)); 153 editor->setValue(LLSD(mMessage));
154 LLMediaCtrl* web_browser = getChild<LLMediaCtrl>("tos_html"); 154 LLMediaCtrl* web_browser = getChild<LLMediaCtrl>("tos_html");
155 if (web_browser) 155 if (web_browser)
156 { 156 {
157 //Disable for critical messages and text messages, it is reenabled later 157 //Disable for critical messages and text messages, it is reenabled later
158 web_browser->setVisible( FALSE ); 158 web_browser->setVisible( FALSE );
159 } 159 }
160 160
161 if ( mType != TOS_TOS ) 161 if ( mType != TOS_TOS )
162 { 162 {
163 // this displays the critical message only 163 // this displays the critical message only
164 return TRUE; 164 return TRUE;
165 } 165 }
166 bool use_web_browser = false; 166 bool use_web_browser = false;
167 167
168 //Check to see if the message is a link to display 168 //Check to see if the message is a link to display
169 std::string token = "http://"; 169 std::string token = "http://";
170 std::string::size_type iIndex = mMessage.rfind(token); 170 std::string::size_type iIndex = mMessage.rfind(token);
171 //IF it has http:// in it, we use the web browser 171 //IF it has http:// in it, we use the web browser
172 if(iIndex != std::string::npos && mMessage.length() >= 2) 172 if(iIndex != std::string::npos && mMessage.length() >= 2)
173 { 173 {
174 // it exists 174 // it exists
175 use_web_browser = true; 175 use_web_browser = true;
176 } 176 }
177 else if (gHippoGridManager->getConnectedGrid()->isSecondLife()) 177 else if (gHippoGridManager->getConnectedGrid()->isSecondLife())
178 { 178 {
179 //Its SL, use the browser for it as thats what it should do 179 //Its SL, use the browser for it as thats what it should do
180 use_web_browser = true; 180 use_web_browser = true;
181 } 181 }
182 182
183 if ( web_browser && use_web_browser) 183 if ( web_browser && use_web_browser)
184 { 184 {
185 // hide the SL text widget if we're displaying TOS with using a browser widget. 185 // hide the SL text widget if we're displaying TOS with using a browser widget.
186 LLTextEditor *editor = getChild<LLTextEditor>("tos_text"); 186 LLTextEditor *editor = getChild<LLTextEditor>("tos_text");
187 editor->setVisible( FALSE ); 187 editor->setVisible( FALSE );
188 188
189 // disable Agree to TOS radio button until the page has fully loaded 189 // disable Agree to TOS radio button until the page has fully loaded
190 tos_agreement->setEnabled( false ); 190 tos_agreement->setEnabled( false );
191 191
192 // Reenable the web browser 192 // Reenable the web browser
193 web_browser->setVisible( TRUE ); 193 web_browser->setVisible( TRUE );
194 194
195 web_browser->addObserver(this); 195 web_browser->addObserver(this);
196 gResponsePtr = LLIamHereTOS::build( this ); 196 gResponsePtr = LLIamHereTOS::build( this );
197 LLHTTPClient::head( getString( "real_url" ), gResponsePtr ); 197 LLHTTPClient::head( getString( "real_url" ), gResponsePtr );
198 } 198 }
199 199
200 return TRUE; 200 return TRUE;
201} 201}
202 202
203void LLFloaterTOS::setSiteIsAlive( bool alive ) 203void LLFloaterTOS::setSiteIsAlive( bool alive )
204{ 204{
205 // only do this for TOS pages 205 // only do this for TOS pages
206 if ( mType == TOS_TOS ) 206 if ( mType == TOS_TOS )
207 { 207 {
208 LLMediaCtrl* web_browser = getChild<LLMediaCtrl>("tos_html"); 208 LLMediaCtrl* web_browser = getChild<LLMediaCtrl>("tos_html");
209 // if the contents of the site was retrieved 209 // if the contents of the site was retrieved
210 if ( alive ) 210 if ( alive )
211 { 211 {
212 if ( web_browser ) 212 if ( web_browser )
213 { 213 {
214 // navigate to the "real" page 214 // navigate to the "real" page
215 web_browser->navigateTo( getString( "real_url" ) ); 215 web_browser->navigateTo( getString( "real_url" ) );
216 }; 216 };
217 } 217 }
218 else 218 else
219 { 219 {
220 // normally this is set when navigation to TOS page navigation completes (so you can't accept before TOS loads) 220 // normally this is set when navigation to TOS page navigation completes (so you can't accept before TOS loads)
221 // but if the page is unavailable, we need to do this now 221 // but if the page is unavailable, we need to do this now
222 LLCheckBoxCtrl* tos_agreement = getChild<LLCheckBoxCtrl>("agree_chk"); 222 LLCheckBoxCtrl* tos_agreement = getChild<LLCheckBoxCtrl>("agree_chk");
223 tos_agreement->setEnabled( true ); 223 tos_agreement->setEnabled( true );
224 }; 224 };
225 }; 225 };
226} 226}
227 227
228LLFloaterTOS::~LLFloaterTOS() 228LLFloaterTOS::~LLFloaterTOS()
229{ 229{
230 230
231 // tell the responder we're not here anymore 231 // tell the responder we're not here anymore
232 if ( gResponsePtr ) 232 if ( gResponsePtr )
233 gResponsePtr->setParent( 0 ); 233 gResponsePtr->setParent( 0 );
234 234
235 LLFloaterTOS::sInstance = NULL; 235 LLFloaterTOS::sInstance = NULL;
236} 236}
237 237
238// virtual 238// virtual
239void LLFloaterTOS::draw() 239void LLFloaterTOS::draw()
240{ 240{
241 // draw children 241 // draw children
242 LLModalDialog::draw(); 242 LLModalDialog::draw();
243} 243}
244 244
245// static 245// static
246void LLFloaterTOS::updateAgree(LLUICtrl*, void* userdata ) 246void LLFloaterTOS::updateAgree(LLUICtrl*, void* userdata )
247{ 247{
248 LLFloaterTOS* self = (LLFloaterTOS*) userdata; 248 LLFloaterTOS* self = (LLFloaterTOS*) userdata;
249 bool agree = self->childGetValue("agree_chk").asBoolean(); 249 bool agree = self->childGetValue("agree_chk").asBoolean();
250 self->childSetEnabled("Continue", agree); 250 self->childSetEnabled("Continue", agree);
251} 251}
252 252
253// static 253// static
254void LLFloaterTOS::onContinue( void* userdata ) 254void LLFloaterTOS::onContinue( void* userdata )
255{ 255{
256 LLFloaterTOS* self = (LLFloaterTOS*) userdata; 256 LLFloaterTOS* self = (LLFloaterTOS*) userdata;
257 llinfos << "User agrees with TOS." << llendl; 257 llinfos << "User agrees with TOS." << llendl;
258 if (self->mType == TOS_TOS) 258 if (self->mType == TOS_TOS)
259 { 259 {
260 gAcceptTOS = TRUE; 260 gAcceptTOS = TRUE;
261 } 261 }
262 else 262 else
263 { 263 {
264 gAcceptCriticalMessage = TRUE; 264 gAcceptCriticalMessage = TRUE;
265 } 265 }
266 266
267 // Testing TOS dialog 267 // Testing TOS dialog
268 #if ! LL_RELEASE_FOR_DOWNLOAD 268 #if ! LL_RELEASE_FOR_DOWNLOAD
269 if ( LLStartUp::getStartupState() == STATE_LOGIN_WAIT ) 269 if ( LLStartUp::getStartupState() == STATE_LOGIN_WAIT )
270 { 270 {
271 LLStartUp::setStartupState( STATE_LOGIN_SHOW ); 271 LLStartUp::setStartupState( STATE_LOGIN_SHOW );
272 } 272 }
273 else 273 else
274 #endif 274 #endif
275 275
276 LLStartUp::setStartupState( STATE_LOGIN_AUTH_INIT ); // Go back and finish authentication 276 LLStartUp::setStartupState( STATE_LOGIN_AUTH_INIT ); // Go back and finish authentication
277 self->close(); // destroys this object 277 self->close(); // destroys this object
278} 278}
279 279
280// static 280// static
281void LLFloaterTOS::onCancel( void* userdata ) 281void LLFloaterTOS::onCancel( void* userdata )
282{ 282{
283 LLFloaterTOS* self = (LLFloaterTOS*) userdata; 283 LLFloaterTOS* self = (LLFloaterTOS*) userdata;
284 llinfos << "User disagrees with TOS." << llendl; 284 llinfos << "User disagrees with TOS." << llendl;
285 LLNotifications::instance().add("MustAgreeToLogIn", LLSD(), LLSD(), login_alert_done); 285 LLNotifications::instance().add("MustAgreeToLogIn", LLSD(), LLSD(), login_alert_done);
286 LLStartUp::setStartupState( STATE_LOGIN_SHOW ); 286 LLStartUp::setStartupState( STATE_LOGIN_SHOW );
287 self->mLoadCompleteCount = 0; // reset counter for next time we come to TOS 287 self->mLoadCompleteCount = 0; // reset counter for next time we come to TOS
288 self->close(); // destroys this object 288 self->close(); // destroys this object
289} 289}
290 290
291//virtual 291//virtual
292void LLFloaterTOS::handleMediaEvent(LLPluginClassMedia* /*self*/, EMediaEvent event) 292void LLFloaterTOS::handleMediaEvent(LLPluginClassMedia* /*self*/, EMediaEvent event)
293{ 293{
294 if(event == MEDIA_EVENT_NAVIGATE_COMPLETE) 294 if(event == MEDIA_EVENT_NAVIGATE_COMPLETE)
295 { 295 {
296 // skip past the loading screen navigate complete 296 // skip past the loading screen navigate complete
297 if ( ++mLoadCompleteCount == 2 ) 297 if ( ++mLoadCompleteCount == 2 )
298 { 298 {
299 llinfos << "NAVIGATE COMPLETE" << llendl; 299 llinfos << "NAVIGATE COMPLETE" << llendl;
300 // enable Agree to TOS radio button now that page has loaded 300 // enable Agree to TOS radio button now that page has loaded
301 LLCheckBoxCtrl * tos_agreement = getChild<LLCheckBoxCtrl>("agree_chk"); 301 LLCheckBoxCtrl * tos_agreement = getChild<LLCheckBoxCtrl>("agree_chk");
302 tos_agreement->setEnabled( true ); 302 tos_agreement->setEnabled( true );
303 } 303 }
304 } 304 }
305} 305}
306
diff --git a/linden/indra/newview/llglsandbox.cpp b/linden/indra/newview/llglsandbox.cpp
index 98c4d06..96fd39b 100644
--- a/linden/indra/newview/llglsandbox.cpp
+++ b/linden/indra/newview/llglsandbox.cpp
@@ -710,7 +710,7 @@ void LLViewerParcelMgr::renderOneSegment(F32 x1, F32 y1, F32 x2, F32 y2, F32 hei
710{ 710{
711 // HACK: At edge of last region of world, we need to make sure the region 711 // HACK: At edge of last region of world, we need to make sure the region
712 // resolves correctly so we can get a height value. 712 // resolves correctly so we can get a height value.
713 const F32 BORDER = REGION_WIDTH_METERS - 0.1f; 713 const F32 BORDER = regionp->getWidth() - 0.1f;
714 714
715 F32 clamped_x1 = x1; 715 F32 clamped_x1 = x1;
716 F32 clamped_y1 = y1; 716 F32 clamped_y1 = y1;
diff --git a/linden/indra/newview/llmaniptranslate.cpp b/linden/indra/newview/llmaniptranslate.cpp
index 3e1536f..82298dd 100644
--- a/linden/indra/newview/llmaniptranslate.cpp
+++ b/linden/indra/newview/llmaniptranslate.cpp
@@ -531,7 +531,7 @@ BOOL LLManipTranslate::handleHover(S32 x, S32 y, MASK mask)
531 // You can't move more than some distance from your original mousedown point. 531 // You can't move more than some distance from your original mousedown point.
532 F32 max_drag_distance = gHippoLimits->getMaxDragDistance(); 532 F32 max_drag_distance = gHippoLimits->getMaxDragDistance();
533 533
534 if (max_drag_distance != FLT_MAX && relative_move.magVecSquared() > max_drag_distance * max_drag_distance) 534 if (max_drag_distance != FLT_MAX && relative_move.magVecSquared() > max_drag_distance * max_drag_distance)
535 { 535 {
536 lldebugst(LLERR_USER_INPUT) << "hover handled by LLManipTranslate (too far)" << llendl; 536 lldebugst(LLERR_USER_INPUT) << "hover handled by LLManipTranslate (too far)" << llendl;
537 gViewerWindow->setCursor(UI_CURSOR_NOLOCKED); 537 gViewerWindow->setCursor(UI_CURSOR_NOLOCKED);
diff --git a/linden/indra/newview/llmapresponders.cpp b/linden/indra/newview/llmapresponders.cpp
index 9d974f2..31c04a3 100644
--- a/linden/indra/newview/llmapresponders.cpp
+++ b/linden/indra/newview/llmapresponders.cpp
@@ -120,6 +120,8 @@ void LLMapLayerResponder::result(const LLSD& result)
120 120
121 S32 x_regions = map_block["X"]; 121 S32 x_regions = map_block["X"];
122 S32 y_regions = map_block["Y"]; 122 S32 y_regions = map_block["Y"];
123 S32 size_x_regions = map_block["SizeX"];
124 S32 size_y_regions = map_block["SizeY"];
123 std::string name = map_block["Name"]; 125 std::string name = map_block["Name"];
124 S32 access = map_block["Access"]; 126 S32 access = map_block["Access"];
125 S32 region_flags = map_block["RegionFlags"]; 127 S32 region_flags = map_block["RegionFlags"];
@@ -168,6 +170,8 @@ void LLMapLayerResponder::result(const LLSD& result)
168 LLWorldMap::getInstance()->mSimInfoMap[handle] = siminfo; 170 LLWorldMap::getInstance()->mSimInfoMap[handle] = siminfo;
169 171
170 siminfo->mHandle = handle; 172 siminfo->mHandle = handle;
173 siminfo->msizeX = size_x_regions;
174 siminfo->msizeY = size_y_regions;
171 siminfo->mName.assign( name ); 175 siminfo->mName.assign( name );
172 siminfo->mAccess = access; /*Flawfinder: ignore*/ 176 siminfo->mAccess = access; /*Flawfinder: ignore*/
173 siminfo->mRegionFlags = region_flags; 177 siminfo->mRegionFlags = region_flags;
diff --git a/linden/indra/newview/llmediactrl.cpp b/linden/indra/newview/llmediactrl.cpp
index 51b0929..23cad3c 100644
--- a/linden/indra/newview/llmediactrl.cpp
+++ b/linden/indra/newview/llmediactrl.cpp
@@ -36,7 +36,7 @@
36#include "llmediactrl.h" 36#include "llmediactrl.h"
37 37
38// viewer includes 38// viewer includes
39#include "llfloaterhtml.h" 39#include "llfloatermediabrowser.h"
40#include "llfloaterworldmap.h" 40#include "llfloaterworldmap.h"
41#include "lluictrlfactory.h" 41#include "lluictrlfactory.h"
42#include "llurldispatcher.h" 42#include "llurldispatcher.h"
@@ -746,7 +746,7 @@ void LLMediaCtrl::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent event)
746 746
747 case MEDIA_EVENT_CURSOR_CHANGED: 747 case MEDIA_EVENT_CURSOR_CHANGED:
748 { 748 {
749 LL_INFOS("Media") << "Media event: MEDIA_EVENT_CURSOR_CHANGED, new cursor is " << self->getCursorName() << LL_ENDL; 749 LL_DEBUGS("MediaEventCursor") << "Media event: MEDIA_EVENT_CURSOR_CHANGED, new cursor is " << self->getCursorName() << LL_ENDL;
750 750
751 std::string cursor = self->getCursorName(); 751 std::string cursor = self->getCursorName();
752 752
@@ -865,6 +865,7 @@ void LLMediaCtrl::onClickLinkHref( LLPluginClassMedia* self )
865 const std::string protocol2( "https://" ); 865 const std::string protocol2( "https://" );
866 if( mOpenLinksInExternalBrowser ) 866 if( mOpenLinksInExternalBrowser )
867 { 867 {
868 LL_DEBUGS("Media") << "OpenLinksInExternalBrowser" << LL_ENDL;
868 if ( !url.empty() ) 869 if ( !url.empty() )
869 { 870 {
870 if ( LLStringUtil::compareInsensitive( url.substr( 0, protocol1.length() ), protocol1 ) == 0 || 871 if ( LLStringUtil::compareInsensitive( url.substr( 0, protocol1.length() ), protocol1 ) == 0 ||
@@ -877,6 +878,7 @@ void LLMediaCtrl::onClickLinkHref( LLPluginClassMedia* self )
877 else 878 else
878 if( mOpenLinksInInternalBrowser ) 879 if( mOpenLinksInInternalBrowser )
879 { 880 {
881 LL_DEBUGS("Media") << "OpenLinksInInternalBrowser" << LL_ENDL;
880 if ( !url.empty() ) 882 if ( !url.empty() )
881 { 883 {
882 if ( LLStringUtil::compareInsensitive( url.substr( 0, protocol1.length() ), protocol1 ) == 0 || 884 if ( LLStringUtil::compareInsensitive( url.substr( 0, protocol1.length() ), protocol1 ) == 0 ||
@@ -891,6 +893,8 @@ void LLMediaCtrl::onClickLinkHref( LLPluginClassMedia* self )
891// "Viewer Browser", 893// "Viewer Browser",
892// open_links_externally, 894// open_links_externally,
893// mTrusted); 895// mTrusted);
896
897 LLFloaterMediaBrowser::getInstance()->openMedia(url);
894 } 898 }
895 } 899 }
896 } 900 }
diff --git a/linden/indra/newview/llmediaremotectrl.cpp b/linden/indra/newview/llmediaremotectrl.cpp
index 48715fc..8186293 100644
--- a/linden/indra/newview/llmediaremotectrl.cpp
+++ b/linden/indra/newview/llmediaremotectrl.cpp
@@ -153,7 +153,7 @@ void LLMediaRemoteCtrl::enableMediaButtons()
153 bool stop_media_enabled = false; 153 bool stop_media_enabled = false;
154 bool play_music_enabled = false; 154 bool play_music_enabled = false;
155 bool stop_music_enabled = false; 155 bool stop_music_enabled = false;
156 bool music_show_pause = false; 156 //bool music_show_pause = false;
157 bool media_show_pause = false; 157 bool media_show_pause = false;
158 158
159 static LLColor4* sIconDisabledColor = rebind_llcontrol<LLColor4>("IconDisabledColor", &gColors, true); 159 static LLColor4* sIconDisabledColor = rebind_llcontrol<LLColor4>("IconDisabledColor", &gColors, true);
@@ -204,7 +204,7 @@ void LLMediaRemoteCtrl::enableMediaButtons()
204 } 204 }
205 } 205 }
206 206
207 if (gSavedSettings.getBOOL("AudioStreamingMusic") && gAudiop) 207 if (gSavedSettings.getBOOL("AudioStreamingMusic"))
208 { 208 {
209 if ( parcel && !parcel->getMusicURL().empty()) 209 if ( parcel && !parcel->getMusicURL().empty())
210 { 210 {
@@ -213,12 +213,12 @@ void LLMediaRemoteCtrl::enableMediaButtons()
213 213
214 if (gOverlayBar->musicPlaying()) 214 if (gOverlayBar->musicPlaying())
215 { 215 {
216 music_show_pause = true; 216 play_music_enabled = false;
217 stop_music_enabled = true; 217 stop_music_enabled = true;
218 } 218 }
219 else 219 else
220 { 220 {
221 music_show_pause = false; 221 play_music_enabled = true;
222 stop_music_enabled = false; 222 stop_music_enabled = false;
223 } 223 }
224 } 224 }
@@ -227,7 +227,7 @@ void LLMediaRemoteCtrl::enableMediaButtons()
227 const std::string media_icon_name = LLMIMETypes::findIcon(media_type); 227 const std::string media_icon_name = LLMIMETypes::findIcon(media_type);
228 LLButton* music_play_btn = getChild<LLButton>("music_play"); 228 LLButton* music_play_btn = getChild<LLButton>("music_play");
229 LLButton* music_stop_btn = getChild<LLButton>("music_stop"); 229 LLButton* music_stop_btn = getChild<LLButton>("music_stop");
230 LLButton* music_pause_btn = getChild<LLButton>("music_pause"); 230 //LLButton* music_pause_btn = getChild<LLButton>("music_pause");
231 LLButton* media_play_btn = getChild<LLButton>("media_play"); 231 LLButton* media_play_btn = getChild<LLButton>("media_play");
232 LLButton* media_stop_btn = getChild<LLButton>("media_stop"); 232 LLButton* media_stop_btn = getChild<LLButton>("media_stop");
233 LLButton* media_pause_btn = getChild<LLButton>("media_pause"); 233 LLButton* media_pause_btn = getChild<LLButton>("media_pause");
@@ -235,9 +235,9 @@ void LLMediaRemoteCtrl::enableMediaButtons()
235 235
236 music_play_btn->setEnabled(play_music_enabled); 236 music_play_btn->setEnabled(play_music_enabled);
237 music_stop_btn->setEnabled(stop_music_enabled); 237 music_stop_btn->setEnabled(stop_music_enabled);
238 music_pause_btn->setEnabled(music_show_pause); 238 //music_pause_btn->setEnabled(music_show_pause);
239 music_pause_btn->setVisible(music_show_pause); 239 //music_pause_btn->setVisible(music_show_pause);
240 music_play_btn->setVisible(! music_show_pause); 240 //music_play_btn->setVisible(music_show_pause);
241 childSetColor("music_icon", music_icon_color); 241 childSetColor("music_icon", music_icon_color);
242 if(!media_icon_name.empty()) 242 if(!media_icon_name.empty())
243 { 243 {
diff --git a/linden/indra/newview/lloverlaybar.cpp b/linden/indra/newview/lloverlaybar.cpp
index 4e1d03e..93b73c7 100644
--- a/linden/indra/newview/lloverlaybar.cpp
+++ b/linden/indra/newview/lloverlaybar.cpp
@@ -383,6 +383,23 @@ void LLOverlayBar::onClickStandUp(void*)
383} 383}
384 384
385//////////////////////////////////////////////////////////////////////////////// 385////////////////////////////////////////////////////////////////////////////////
386void LLOverlayBar::audioFilterPlay()
387{
388 if (gOverlayBar && gOverlayBar->mMusicState != PLAYING)
389 {
390 gOverlayBar->mMusicState = PLAYING;
391 }
392}
393
394void LLOverlayBar::audioFilterStop()
395{
396 if (gOverlayBar && gOverlayBar->mMusicState != STOPPED)
397 {
398 gOverlayBar->mMusicState = STOPPED;
399 }
400}
401
402////////////////////////////////////////////////////////////////////////////////
386// static media helpers 403// static media helpers
387// *TODO: Move this into an audio manager abstraction 404// *TODO: Move this into an audio manager abstraction
388//static 405//static
@@ -416,6 +433,7 @@ void LLOverlayBar::toggleMediaPlay(void*)
416 LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel(); 433 LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel();
417 if (parcel) 434 if (parcel)
418 { 435 {
436 LLViewerParcelMedia::sIsUserAction = true;
419 LLViewerParcelMedia::play(parcel); 437 LLViewerParcelMedia::play(parcel);
420 } 438 }
421 } 439 }
@@ -447,7 +465,8 @@ void LLOverlayBar::toggleMusicPlay(void*)
447 // stream is stopped, it doesn't return the right thing - commenting out for now. 465 // stream is stopped, it doesn't return the right thing - commenting out for now.
448 // if ( gAudioStream->isInternetStreamPlaying() == 0 ) 466 // if ( gAudioStream->isInternetStreamPlaying() == 0 )
449 { 467 {
450 gAudioStream->startInternetStream(parcel->getMusicURL()); 468 LLViewerParcelMedia::sIsUserAction = true;
469 LLViewerParcelMedia::playStreamingMusic(parcel);
451 } 470 }
452 } 471 }
453 } 472 }
diff --git a/linden/indra/newview/lloverlaybar.h b/linden/indra/newview/lloverlaybar.h
index 233f5c5..f776639 100644
--- a/linden/indra/newview/lloverlaybar.h
+++ b/linden/indra/newview/lloverlaybar.h
@@ -77,6 +77,10 @@ public:
77 static void onClickStandUp(void* data); 77 static void onClickStandUp(void* data);
78 static void onClickResetView(void* data); 78 static void onClickResetView(void* data);
79 79
80 // media filter
81 static void audioFilterPlay();
82 static void audioFilterStop();
83
80 //static media helper functions 84 //static media helper functions
81 static void toggleMediaPlay(void*); 85 static void toggleMediaPlay(void*);
82 static void toggleMusicPlay(void*); 86 static void toggleMusicPlay(void*);
diff --git a/linden/indra/newview/llpanellogin.cpp b/linden/indra/newview/llpanellogin.cpp
index 00d9332..d00ccd9 100644
--- a/linden/indra/newview/llpanellogin.cpp
+++ b/linden/indra/newview/llpanellogin.cpp
@@ -347,16 +347,6 @@ void LLPanelLogin::setSiteIsAlive( bool alive )
347 else 347 else
348 // the site is not available (missing page, server down, other badness) 348 // the site is not available (missing page, server down, other badness)
349 { 349 {
350#if !USE_VIEWER_AUTH
351 if ( web_browser )
352 {
353 // hide browser control (revealing default one)
354 web_browser->setVisible( FALSE );
355
356 // mark as unavailable
357 mHtmlAvailable = FALSE;
358 }
359#else
360 350
361 if ( web_browser ) 351 if ( web_browser )
362 { 352 {
@@ -365,7 +355,7 @@ void LLPanelLogin::setSiteIsAlive( bool alive )
365 // mark as available 355 // mark as available
366 mHtmlAvailable = TRUE; 356 mHtmlAvailable = TRUE;
367 } 357 }
368#endif 358
369 } 359 }
370} 360}
371 361
@@ -1164,3 +1154,4 @@ void LLPanelLogin::onServerComboLostFocus(LLFocusableElement* fe, void*)
1164 } 1154 }
1165} 1155}
1166*/ 1156*/
1157
diff --git a/linden/indra/newview/llprefsim.cpp b/linden/indra/newview/llprefsim.cpp
index 9e86cd3..5ac2bb2 100644
--- a/linden/indra/newview/llprefsim.cpp
+++ b/linden/indra/newview/llprefsim.cpp
@@ -66,6 +66,7 @@ public:
66 void apply(); 66 void apply();
67 void cancel(); 67 void cancel();
68 void setPersonalInfo(const std::string& visibility, bool im_via_email, const std::string& email); 68 void setPersonalInfo(const std::string& visibility, bool im_via_email, const std::string& email);
69 void preparePerAccountPrefs(bool enable);
69 void enableHistory(); 70 void enableHistory();
70 71
71 static void onClickLogPath(void* user_data); 72 static void onClickLogPath(void* user_data);
@@ -76,6 +77,7 @@ public:
76protected: 77protected:
77 78
78 bool mGotPersonalInfo; 79 bool mGotPersonalInfo;
80 bool mGotPerAccountSettings;
79 bool mOriginalIMViaEmail; 81 bool mOriginalIMViaEmail;
80 82
81 bool mOriginalHideOnlineStatus; 83 bool mOriginalHideOnlineStatus;
@@ -86,7 +88,9 @@ protected:
86LLPrefsIMImpl::LLPrefsIMImpl() 88LLPrefsIMImpl::LLPrefsIMImpl()
87 : LLPanel(std::string("IM Prefs Panel")), 89 : LLPanel(std::string("IM Prefs Panel")),
88 mGotPersonalInfo(false), 90 mGotPersonalInfo(false),
89 mOriginalIMViaEmail(false) 91 mGotPerAccountSettings(false),
92 mOriginalIMViaEmail(false),
93 mOriginalHideOnlineStatus(false)
90{ 94{
91 LLUICtrlFactory::getInstance()->buildPanel(this, "panel_preferences_im.xml"); 95 LLUICtrlFactory::getInstance()->buildPanel(this, "panel_preferences_im.xml");
92} 96}
@@ -106,55 +110,38 @@ BOOL LLPrefsIMImpl::postBuild()
106 110
107 childSetLabelArg("send_im_to_email", "[EMAIL]", getString("log_in_to_change")); 111 childSetLabelArg("send_im_to_email", "[EMAIL]", getString("log_in_to_change"));
108 112
109 // Don't enable this until we get personal data 113 // Don't enable these until we get personal data
110 // Unless we're already logged in. Some non-SL grids won't send us the data we need -- MC 114 childSetEnabled("online_visibility", false);
111 childSetEnabled("include_im_in_chat_console", LLStartUp::isLoggedIn()); 115 childSetEnabled("send_im_to_email", false);
112 childSetEnabled("include_im_in_chat_history", LLStartUp::isLoggedIn());
113 childSetEnabled("show_timestamps_check", LLStartUp::isLoggedIn());
114 childSetEnabled("friends_online_notify_checkbox", LLStartUp::isLoggedIn());
115
116 childSetEnabled("online_visibility", LLStartUp::isLoggedIn());
117 childSetEnabled("send_im_to_email", LLStartUp::isLoggedIn());
118 childSetEnabled("log_instant_messages", LLStartUp::isLoggedIn());
119 childSetEnabled("log_chat", LLStartUp::isLoggedIn());
120 childSetEnabled("log_show_history", LLStartUp::isLoggedIn());
121 childSetEnabled("log_path_button", LLStartUp::isLoggedIn());
122 childSetEnabled("busy_response", LLStartUp::isLoggedIn());
123 childSetEnabled("log_instant_messages_timestamp", LLStartUp::isLoggedIn());
124 childSetEnabled("log_chat_timestamp", LLStartUp::isLoggedIn());
125 childSetEnabled("log_chat_IM", LLStartUp::isLoggedIn());
126 childSetEnabled("log_date_timestamp", LLStartUp::isLoggedIn());
127
128 childSetText("busy_response", getString("log_in_to_change"));
129 116
117 // These are safe to enable
118 childSetEnabled("include_im_in_chat_console", true);
119 childSetEnabled("include_im_in_chat_history", true);
120 childSetEnabled("show_timestamps_check", true);
121 childSetEnabled("friends_online_notify_checkbox", true);
122 childSetEnabled("vertical-imtabs-toggle", true);
130 childSetValue("include_im_in_chat_console", gSavedSettings.getBOOL("IMInChatConsole")); 123 childSetValue("include_im_in_chat_console", gSavedSettings.getBOOL("IMInChatConsole"));
131 childSetValue("include_im_in_chat_history", gSavedSettings.getBOOL("IMInChatHistory")); 124 childSetValue("include_im_in_chat_history", gSavedSettings.getBOOL("IMInChatHistory"));
132 childSetValue("show_timestamps_check", gSavedSettings.getBOOL("IMShowTimestamps")); 125 childSetValue("show_timestamps_check", gSavedSettings.getBOOL("IMShowTimestamps"));
133 childSetValue("friends_online_notify_checkbox", gSavedSettings.getBOOL("ChatOnlineNotification")); 126 childSetValue("friends_online_notify_checkbox", gSavedSettings.getBOOL("ChatOnlineNotification"));
134 childSetValue("vertical-imtabs-toggle", gSavedSettings.getBOOL("VerticalIMTabs")); 127 childSetValue("vertical-imtabs-toggle", gSavedSettings.getBOOL("VerticalIMTabs"));
135 128
136 childSetText("log_path_string", gSavedPerAccountSettings.getString("InstantMessageLogPath"));
137 childSetValue("log_instant_messages", gSavedPerAccountSettings.getBOOL("LogInstantMessages"));
138 childSetValue("log_chat", gSavedPerAccountSettings.getBOOL("LogChat"));
139 childSetValue("log_show_history", gSavedPerAccountSettings.getBOOL("LogShowHistory"));
140 childSetValue("log_instant_messages_timestamp", gSavedPerAccountSettings.getBOOL("IMLogTimestamp"));
141 childSetValue("log_chat_timestamp", gSavedPerAccountSettings.getBOOL("LogChatTimestamp"));
142 childSetValue("log_chat_IM", gSavedPerAccountSettings.getBOOL("LogChatIM"));
143 childSetValue("log_date_timestamp", gSavedPerAccountSettings.getBOOL("LogTimestampDate"));
144
145 childSetAction("log_path_button", onClickLogPath, this); 129 childSetAction("log_path_button", onClickLogPath, this);
146 childSetCommitCallback("log_chat",onCommitLogging,this); 130 childSetCommitCallback("log_chat",onCommitLogging,this);
147 childSetCommitCallback("log_instant_messages",onCommitLogging,this); 131 childSetCommitCallback("log_instant_messages",onCommitLogging,this);
148 132
149 childSetAction("busy_adv_btn", onClickBusyAdvanced, this); 133 childSetAction("busy_adv_btn", onClickBusyAdvanced, this);
150 134
135 preparePerAccountPrefs(LLStartUp::isLoggedIn());
136
151 return TRUE; 137 return TRUE;
152} 138}
153 139
154void LLPrefsIMImpl::enableHistory() 140void LLPrefsIMImpl::enableHistory()
155{ 141{
156 142
157 if (childGetValue("log_instant_messages").asBoolean() || childGetValue("log_chat").asBoolean()) 143 if (mGotPerAccountSettings &&
144 (childGetValue("log_instant_messages").asBoolean() || childGetValue("log_chat").asBoolean()))
158 { 145 {
159 childEnable("log_show_history"); 146 childEnable("log_show_history");
160 childEnable("log_path_button"); 147 childEnable("log_path_button");
@@ -168,23 +155,16 @@ void LLPrefsIMImpl::enableHistory()
168 155
169void LLPrefsIMImpl::apply() 156void LLPrefsIMImpl::apply()
170{ 157{
171 LLTextEditor* busy = getChild<LLTextEditor>("busy_response"); 158 if (mGotPerAccountSettings)
172 LLWString busy_response;
173 if (busy) busy_response = busy->getWText();
174 LLWStringUtil::replaceTabsWithSpaces(busy_response, 4);
175 LLWStringUtil::replaceChar(busy_response, '\n', '^');
176 LLWStringUtil::replaceChar(busy_response, ' ', '%');
177
178 if(mGotPersonalInfo)
179 { 159 {
180 160 LLTextEditor* busy = getChild<LLTextEditor>("busy_response");
161 LLWString busy_response;
162 if (busy) busy_response = busy->getWText();
163 LLWStringUtil::replaceTabsWithSpaces(busy_response, 4);
164 LLWStringUtil::replaceChar(busy_response, '\n', '^');
165 LLWStringUtil::replaceChar(busy_response, ' ', '%');
181 gSavedPerAccountSettings.setString("BusyModeResponse", std::string(wstring_to_utf8str(busy_response))); 166 gSavedPerAccountSettings.setString("BusyModeResponse", std::string(wstring_to_utf8str(busy_response)));
182 167
183 gSavedSettings.setBOOL("IMInChatConsole", childGetValue("include_im_in_chat_console").asBoolean());
184 gSavedSettings.setBOOL("IMInChatHistory", childGetValue("include_im_in_chat_history").asBoolean());
185 gSavedSettings.setBOOL("IMShowTimestamps", childGetValue("show_timestamps_check").asBoolean());
186 gSavedSettings.setBOOL("ChatOnlineNotification", childGetValue("friends_online_notify_checkbox").asBoolean());
187
188 gSavedPerAccountSettings.setString("InstantMessageLogPath", childGetText("log_path_string")); 168 gSavedPerAccountSettings.setString("InstantMessageLogPath", childGetText("log_path_string"));
189 gSavedPerAccountSettings.setBOOL("LogInstantMessages",childGetValue("log_instant_messages").asBoolean()); 169 gSavedPerAccountSettings.setBOOL("LogInstantMessages",childGetValue("log_instant_messages").asBoolean());
190 gSavedPerAccountSettings.setBOOL("LogChat",childGetValue("log_chat").asBoolean()); 170 gSavedPerAccountSettings.setBOOL("LogChat",childGetValue("log_chat").asBoolean());
@@ -207,7 +187,10 @@ void LLPrefsIMImpl::apply()
207 gSavedSettings.getString("FirstName"), gSavedSettings.getString("LastName") ); 187 gSavedSettings.getString("FirstName"), gSavedSettings.getString("LastName") );
208 } 188 }
209 LLFile::mkdir(gDirUtilp->getPerAccountChatLogsDir()); 189 LLFile::mkdir(gDirUtilp->getPerAccountChatLogsDir());
210 190 }
191
192 if (mGotPersonalInfo)
193 {
211 bool new_im_via_email = childGetValue("send_im_to_email").asBoolean(); 194 bool new_im_via_email = childGetValue("send_im_to_email").asBoolean();
212 bool new_hide_online = childGetValue("online_visibility").asBoolean(); 195 bool new_hide_online = childGetValue("online_visibility").asBoolean();
213 196
@@ -237,9 +220,15 @@ void LLPrefsIMImpl::apply()
237 gAgent.sendReliableMessage(); 220 gAgent.sendReliableMessage();
238 } 221 }
239 } 222 }
223
240 gSavedSettings.setBOOL("VerticalIMTabs", childGetValue("vertical-imtabs-toggle").asBoolean()); 224 gSavedSettings.setBOOL("VerticalIMTabs", childGetValue("vertical-imtabs-toggle").asBoolean());
225 gSavedSettings.setBOOL("IMInChatConsole", childGetValue("include_im_in_chat_console").asBoolean());
226 gSavedSettings.setBOOL("IMInChatHistory", childGetValue("include_im_in_chat_history").asBoolean());
227 gSavedSettings.setBOOL("IMShowTimestamps", childGetValue("show_timestamps_check").asBoolean());
228 gSavedSettings.setBOOL("ChatOnlineNotification", childGetValue("friends_online_notify_checkbox").asBoolean());
241} 229}
242 230
231// Enable and set the value of settings recieved from the sim in AgentInfoReply
243void LLPrefsIMImpl::setPersonalInfo(const std::string& visibility, bool im_via_email, const std::string& email) 232void LLPrefsIMImpl::setPersonalInfo(const std::string& visibility, bool im_via_email, const std::string& email)
244{ 233{
245 mGotPersonalInfo = true; 234 mGotPersonalInfo = true;
@@ -261,36 +250,10 @@ void LLPrefsIMImpl::setPersonalInfo(const std::string& visibility, bool im_via_e
261 mOriginalHideOnlineStatus = true; 250 mOriginalHideOnlineStatus = true;
262 } 251 }
263 252
264 childEnable("include_im_in_chat_console");
265 childEnable("include_im_in_chat_history");
266 childEnable("show_timestamps_check");
267 childEnable("friends_online_notify_checkbox");
268
269 childSetValue("online_visibility", mOriginalHideOnlineStatus); 253 childSetValue("online_visibility", mOriginalHideOnlineStatus);
270 childSetLabelArg("online_visibility", "[DIR_VIS]", mDirectoryVisibility); 254 childSetLabelArg("online_visibility", "[DIR_VIS]", mDirectoryVisibility);
271 childEnable("send_im_to_email"); 255 childEnable("send_im_to_email");
272 childSetValue("send_im_to_email", im_via_email); 256 childSetValue("send_im_to_email", im_via_email);
273 childEnable("log_instant_messages");
274 childEnable("log_chat");
275 childEnable("busy_response");
276 childEnable("log_instant_messages_timestamp");
277 childEnable("log_chat_timestamp");
278 childEnable("log_chat_IM");
279 childEnable("log_date_timestamp");
280
281 //RN: get wide string so replace char can work (requires fixed-width encoding)
282 LLWString busy_response = utf8str_to_wstring( gSavedPerAccountSettings.getString("BusyModeResponse") );
283 LLWStringUtil::replaceChar(busy_response, '^', '\n');
284 LLWStringUtil::replaceChar(busy_response, '%', ' ');
285 childSetText("busy_response", wstring_to_utf8str(busy_response));
286// [RLVa:KB] - Checked: 2009-07-10 (RLVa-1.0.0g)
287 if (gRlvHandler.hasBehaviour(RLV_BHVR_SENDIM))
288 {
289 childDisable("busy_response");
290 }
291// [/RLVa:KB]
292
293 enableHistory();
294 257
295 // Truncate the e-mail address if it's too long (to prevent going off 258 // Truncate the e-mail address if it's too long (to prevent going off
296 // the edge of the dialog). 259 // the edge of the dialog).
@@ -300,10 +263,62 @@ void LLPrefsIMImpl::setPersonalInfo(const std::string& visibility, bool im_via_e
300 display_email.resize(30); 263 display_email.resize(30);
301 display_email += "..."; 264 display_email += "...";
302 } 265 }
303 266 else if (display_email.empty())
267 {
268 display_email = getString("default_email_used");
269 }
304 childSetLabelArg("send_im_to_email", "[EMAIL]", display_email); 270 childSetLabelArg("send_im_to_email", "[EMAIL]", display_email);
305} 271}
306 272
273// Enable and set the value of settings that need an account name
274void LLPrefsIMImpl::preparePerAccountPrefs(bool enable)
275{
276 if (mGotPerAccountSettings && enable)
277 {
278 return; // prevent overwriting unsaved changes.
279 }
280 mGotPerAccountSettings = enable;
281
282 childSetEnabled("log_chat", enable);
283 childSetEnabled("log_chat_timestamp", enable);
284 childSetEnabled("log_chat_IM", enable);
285 childSetEnabled("log_instant_messages_timestamp", enable);
286 childSetEnabled("log_instant_messages", enable);
287 childSetEnabled("log_date_timestamp", enable);
288
289 childSetValue("log_chat", gSavedPerAccountSettings.getBOOL("LogChat"));
290 childSetValue("log_chat_timestamp", gSavedPerAccountSettings.getBOOL("LogChatTimestamp"));
291 childSetValue("log_chat_IM", gSavedPerAccountSettings.getBOOL("LogChatIM"));
292 childSetValue("log_instant_messages_timestamp", gSavedPerAccountSettings.getBOOL("IMLogTimestamp"));
293 childSetValue("log_instant_messages", gSavedPerAccountSettings.getBOOL("LogInstantMessages"));
294 childSetValue("log_date_timestamp", gSavedPerAccountSettings.getBOOL("LogTimestampDate"));
295
296 childSetValue("log_show_history", gSavedPerAccountSettings.getBOOL("LogShowHistory"));
297 enableHistory();
298 childSetText("log_path_string", gSavedPerAccountSettings.getString("InstantMessageLogPath"));
299
300 childSetEnabled("busy_response", enable);
301 if (enable)
302 {
303 //RN: get wide string so replace char can work (requires fixed-width encoding)
304 LLWString busy_response = utf8str_to_wstring( gSavedPerAccountSettings.getString("BusyModeResponse") );
305 LLWStringUtil::replaceChar(busy_response, '^', '\n');
306 LLWStringUtil::replaceChar(busy_response, '%', ' ');
307 childSetText("busy_response", wstring_to_utf8str(busy_response));
308 }
309 else
310 {
311 childSetText("busy_response", getString("log_in_to_change"));
312 }
313// [RLVa:KB] - Checked: 2009-07-10 (RLVa-1.0.0g)
314 if (gRlvHandler.hasBehaviour(RLV_BHVR_SENDIM))
315 {
316 childDisable("busy_response");
317 }
318// [/RLVa:KB]
319
320 childSetEnabled("busy_adv_btn", enable);
321}
307 322
308// static 323// static
309void LLPrefsIMImpl::onClickBusyAdvanced(void* user_data) 324void LLPrefsIMImpl::onClickBusyAdvanced(void* user_data)
@@ -363,6 +378,11 @@ void LLPrefsIM::setPersonalInfo(const std::string& visibility, bool im_via_email
363 impl.setPersonalInfo(visibility, im_via_email, email); 378 impl.setPersonalInfo(visibility, im_via_email, email);
364} 379}
365 380
381void LLPrefsIM::preparePerAccountPrefs(bool enable)
382{
383 impl.preparePerAccountPrefs(enable);
384}
385
366LLPanel* LLPrefsIM::getPanel() 386LLPanel* LLPrefsIM::getPanel()
367{ 387{
368 return &impl; 388 return &impl;
diff --git a/linden/indra/newview/llprefsim.h b/linden/indra/newview/llprefsim.h
index 90bf465..acf9b0f 100644
--- a/linden/indra/newview/llprefsim.h
+++ b/linden/indra/newview/llprefsim.h
@@ -46,6 +46,7 @@ public:
46 void apply(); 46 void apply();
47 void cancel(); 47 void cancel();
48 void setPersonalInfo(const std::string& visibility, bool im_via_email, const std::string& email); 48 void setPersonalInfo(const std::string& visibility, bool im_via_email, const std::string& email);
49 void preparePerAccountPrefs(bool enable);
49 50
50 LLPanel* getPanel(); 51 LLPanel* getPanel();
51 52
diff --git a/linden/indra/newview/llstartup.cpp b/linden/indra/newview/llstartup.cpp
index 32aba13..d9ab5e7 100644
--- a/linden/indra/newview/llstartup.cpp
+++ b/linden/indra/newview/llstartup.cpp
@@ -102,6 +102,7 @@
102#include "llfloatergesture.h" 102#include "llfloatergesture.h"
103#include "llfloaterhud.h" 103#include "llfloaterhud.h"
104#include "llfloaterland.h" 104#include "llfloaterland.h"
105#include "llfloaterpreference.h"
105#include "llfloaterteleporthistory.h" 106#include "llfloaterteleporthistory.h"
106#include "llfloatertopobjects.h" 107#include "llfloatertopobjects.h"
107#include "llfloatertos.h" 108#include "llfloatertos.h"
@@ -367,6 +368,8 @@ bool idle_startup()
367 static U64 first_sim_handle = 0; 368 static U64 first_sim_handle = 0;
368 static LLHost first_sim; 369 static LLHost first_sim;
369 static std::string first_sim_seed_cap; 370 static std::string first_sim_seed_cap;
371 static U32 first_sim_size_x = 256;
372 static U32 first_sim_size_y = 256;
370 373
371 static LLVector3 initial_sun_direction(1.f, 0.f, 0.f); 374 static LLVector3 initial_sun_direction(1.f, 0.f, 0.f);
372 static LLVector3 agent_start_position_region(10.f, 10.f, 10.f); // default for when no space server 375 static LLVector3 agent_start_position_region(10.f, 10.f, 10.f); // default for when no space server
@@ -1619,6 +1622,16 @@ bool idle_startup()
1619 first_sim_handle = to_region_handle(region_x, region_y); 1622 first_sim_handle = to_region_handle(region_x, region_y);
1620 } 1623 }
1621 1624
1625 text = LLUserAuth::getInstance()->getResponse("region_size_x");
1626 if(!text.empty()) {
1627 first_sim_size_x = strtoul(text.c_str(), NULL, 10);
1628 LLViewerParcelMgr::getInstance()->init(first_sim_size_x);
1629 }
1630
1631 //region Y size is currently unused, major refactoring required. - Patrick Sapinski (2/10/2011)
1632 text = LLUserAuth::getInstance()->getResponse("region_size_y");
1633 if(!text.empty()) first_sim_size_y = strtoul(text.c_str(), NULL, 10);
1634
1622 const std::string look_at_str = LLUserAuth::getInstance()->getResponse("look_at"); 1635 const std::string look_at_str = LLUserAuth::getInstance()->getResponse("look_at");
1623 if (!look_at_str.empty()) 1636 if (!look_at_str.empty())
1624 { 1637 {
@@ -1914,7 +1927,7 @@ bool idle_startup()
1914 1927
1915 gAgent.initOriginGlobal(from_region_handle(first_sim_handle)); 1928 gAgent.initOriginGlobal(from_region_handle(first_sim_handle));
1916 1929
1917 LLWorld::getInstance()->addRegion(first_sim_handle, first_sim); 1930 LLWorld::getInstance()->addRegion(first_sim_handle, first_sim, first_sim_size_x, first_sim_size_y);
1918 1931
1919 LLViewerRegion *regionp = LLWorld::getInstance()->getRegionFromHandle(first_sim_handle); 1932 LLViewerRegion *regionp = LLWorld::getInstance()->getRegionFromHandle(first_sim_handle);
1920 LL_INFOS("AppInit") << "Adding initial simulator " << regionp->getOriginGlobal() << LL_ENDL; 1933 LL_INFOS("AppInit") << "Adding initial simulator " << regionp->getOriginGlobal() << LL_ENDL;
@@ -2821,6 +2834,8 @@ bool idle_startup()
2821 gFloaterTeleportHistory->addEntry(regionp->getName(),(S16)agent_pos.mV[0],(S16)agent_pos.mV[1],(S16)agent_pos.mV[2],false); 2834 gFloaterTeleportHistory->addEntry(regionp->getName(),(S16)agent_pos.mV[0],(S16)agent_pos.mV[1],(S16)agent_pos.mV[2],false);
2822 } 2835 }
2823 2836
2837 LLViewerParcelMedia::loadDomainFilterList();
2838
2824 // Let the map know about the inventory. 2839 // Let the map know about the inventory.
2825 if(gFloaterWorldMap) 2840 if(gFloaterWorldMap)
2826 { 2841 {
@@ -2918,6 +2933,8 @@ bool idle_startup()
2918 gDebugView->mFastTimerView->setVisible(TRUE); 2933 gDebugView->mFastTimerView->setVisible(TRUE);
2919#endif 2934#endif
2920 2935
2936 LLFloaterPreference::updateIsLoggedIn(true);
2937
2921 return TRUE; 2938 return TRUE;
2922 } 2939 }
2923 2940
diff --git a/linden/indra/newview/llsurface.cpp b/linden/indra/newview/llsurface.cpp
index aaafe0d..5a99e66 100644
--- a/linden/indra/newview/llsurface.cpp
+++ b/linden/indra/newview/llsurface.cpp
@@ -303,7 +303,7 @@ void LLSurface::initTextures()
303 mWaterObjp = (LLVOWater *)gObjectList.createObjectViewer(LLViewerObject::LL_VO_WATER, mRegionp); 303 mWaterObjp = (LLVOWater *)gObjectList.createObjectViewer(LLViewerObject::LL_VO_WATER, mRegionp);
304 gPipeline.createObject(mWaterObjp); 304 gPipeline.createObject(mWaterObjp);
305 LLVector3d water_pos_global = from_region_handle(mRegionp->getHandle()); 305 LLVector3d water_pos_global = from_region_handle(mRegionp->getHandle());
306 water_pos_global += LLVector3d(128.0, 128.0, DEFAULT_WATER_HEIGHT); 306 water_pos_global += LLVector3d(mRegionp->getWidth()/2, mRegionp->getWidth()/2, DEFAULT_WATER_HEIGHT);
307 mWaterObjp->setPositionGlobal(water_pos_global); 307 mWaterObjp->setPositionGlobal(water_pos_global);
308 } 308 }
309} 309}
@@ -356,8 +356,8 @@ void LLSurface::setOriginGlobal(const LLVector3d &origin_global)
356 // Hack! 356 // Hack!
357 if (mWaterObjp.notNull() && mWaterObjp->mDrawable.notNull()) 357 if (mWaterObjp.notNull() && mWaterObjp->mDrawable.notNull())
358 { 358 {
359 const F64 x = origin_global.mdV[VX] + 128.0; 359 const F64 x = origin_global.mdV[VX] + (F64)mRegionp->getWidth()/2;
360 const F64 y = origin_global.mdV[VY] + 128.0; 360 const F64 y = origin_global.mdV[VY] + (F64)mRegionp->getWidth()/2;
361 const F64 z = mWaterObjp->getPositionGlobal().mdV[VZ]; 361 const F64 z = mWaterObjp->getPositionGlobal().mdV[VZ];
362 362
363 LLVector3d water_origin_global(x, y, z); 363 LLVector3d water_origin_global(x, y, z);
@@ -707,14 +707,22 @@ void LLSurface::decompressDCTPatch(LLBitPack &bitpack, LLGroupHeader *gopp, BOOL
707 707
708 while (1) 708 while (1)
709 { 709 {
710 decode_patch_header(bitpack, &ph); 710 decode_patch_header(bitpack, &ph, b_large_patch);
711 if (ph.quant_wbits == END_OF_PATCHES) 711 if (ph.quant_wbits == END_OF_PATCHES)
712 { 712 {
713 break; 713 break;
714 } 714 }
715 715
716 i = ph.patchids >> 5; 716 if (b_large_patch)
717 j = ph.patchids & 0x1F; 717 {
718 i = ph.patchids >> 16; //x
719 j = ph.patchids & 0xFFFF; //y
720 }
721 else
722 {
723 i = ph.patchids >> 5; //x
724 j = ph.patchids & 0x1F; //y
725 }
718 726
719 if ((i >= mPatchesPerEdge) || (j >= mPatchesPerEdge)) 727 if ((i >= mPatchesPerEdge) || (j >= mPatchesPerEdge))
720 { 728 {
diff --git a/linden/indra/newview/lltexturecache.cpp b/linden/indra/newview/lltexturecache.cpp
index 2e7d585..5dc1018 100644
--- a/linden/indra/newview/lltexturecache.cpp
+++ b/linden/indra/newview/lltexturecache.cpp
@@ -250,9 +250,9 @@ bool LLTextureCacheLocalFileWorker::doRead()
250 } 250 }
251 } 251 }
252#else 252#else
253 if (!mDataSize || mDataSize > local_size) 253 if (!mDataSize || mDataSize + mOffset > local_size)
254 { 254 {
255 mDataSize = local_size; 255 mDataSize = local_size - mOffset;
256 } 256 }
257 mReadData = new U8[mDataSize]; 257 mReadData = new U8[mDataSize];
258 258
diff --git a/linden/indra/newview/lltexturefetch.cpp b/linden/indra/newview/lltexturefetch.cpp
index 072af25..ab867a6 100644
--- a/linden/indra/newview/lltexturefetch.cpp
+++ b/linden/indra/newview/lltexturefetch.cpp
@@ -664,16 +664,17 @@ bool LLTextureFetchWorker::doWork(S32 param)
664 mLoaded = FALSE; 664 mLoaded = FALSE;
665 setPriority(LLWorkerThread::PRIORITY_LOW | mWorkPriority); // Set priority first since Responder may change it 665 setPriority(LLWorkerThread::PRIORITY_LOW | mWorkPriority); // Set priority first since Responder may change it
666 666
667 CacheReadResponder* responder = new CacheReadResponder(mFetcher, mID, mFormattedImage);
668 if (mUrl.compare(0, 7, "file://") == 0) 667 if (mUrl.compare(0, 7, "file://") == 0)
669 { 668 {
670 // read file from local disk 669 // read file from local disk
671 std::string filename = mUrl.substr(7, std::string::npos); 670 std::string filename = mUrl.substr(7, std::string::npos);
671 CacheReadResponder* responder = new CacheReadResponder(mFetcher, mID, mFormattedImage);
672 mCacheReadHandle = mFetcher->mTextureCache->readFromCache(filename, mID, cache_priority, 672 mCacheReadHandle = mFetcher->mTextureCache->readFromCache(filename, mID, cache_priority,
673 offset, size, responder); 673 offset, size, responder);
674 } 674 }
675 else if (mUrl.empty()) 675 else if (mUrl.empty())
676 { 676 {
677 CacheReadResponder* responder = new CacheReadResponder(mFetcher, mID, mFormattedImage);
677 mCacheReadHandle = mFetcher->mTextureCache->readFromCache(mID, cache_priority, 678 mCacheReadHandle = mFetcher->mTextureCache->readFromCache(mID, cache_priority,
678 offset, size, responder); 679 offset, size, responder);
679 } 680 }
@@ -723,6 +724,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
723 { 724 {
724 // we have enough data, decode it 725 // we have enough data, decode it
725 llassert_always(mFormattedImage->getDataSize() > 0); 726 llassert_always(mFormattedImage->getDataSize() > 0);
727 mLoadedDiscard = mDesiredDiscard;
726 mState = DECODE_IMAGE; 728 mState = DECODE_IMAGE;
727 mWriteToCacheState = NOT_WRITE ; 729 mWriteToCacheState = NOT_WRITE ;
728 LL_DEBUGS("Texture") << mID << ": Cached. Bytes: " << mFormattedImage->getDataSize() 730 LL_DEBUGS("Texture") << mID << ": Cached. Bytes: " << mFormattedImage->getDataSize()
@@ -1113,6 +1115,17 @@ bool LLTextureFetchWorker::doWork(S32 param)
1113 return false; 1115 return false;
1114 } 1116 }
1115 S32 datasize = mFormattedImage->getDataSize(); 1117 S32 datasize = mFormattedImage->getDataSize();
1118 if(mFileSize < datasize)//This could happen when http fetching and sim fetching mixed.
1119 {
1120 if(mHaveAllData)
1121 {
1122 mFileSize = datasize ;
1123 }
1124 else
1125 {
1126 mFileSize = datasize + 1 ; //flag not fully loaded.
1127 }
1128 }
1116 llassert_always(datasize); 1129 llassert_always(datasize);
1117 setPriority(LLWorkerThread::PRIORITY_LOW | mWorkPriority); // Set priority first since Responder may change it 1130 setPriority(LLWorkerThread::PRIORITY_LOW | mWorkPriority); // Set priority first since Responder may change it
1118 U32 cache_priority = mWorkPriority; 1131 U32 cache_priority = mWorkPriority;
diff --git a/linden/indra/newview/lltool.cpp b/linden/indra/newview/lltool.cpp
index 6a3ada0..df2191b 100644
--- a/linden/indra/newview/lltool.cpp
+++ b/linden/indra/newview/lltool.cpp
@@ -104,6 +104,13 @@ BOOL LLTool::handleScrollWheel(S32 x, S32 y, S32 clicks)
104 return FALSE; 104 return FALSE;
105} 105}
106 106
107BOOL LLTool::handleHScrollWheel(S32 x, S32 y, S32 clicks)
108{
109 // by default, didn't handle it
110 // llinfos << "LLTool::handleScrollWheel" << llendl;
111 return FALSE;
112}
113
107BOOL LLTool::handleDoubleClick(S32 x,S32 y,MASK mask) 114BOOL LLTool::handleDoubleClick(S32 x,S32 y,MASK mask)
108{ 115{
109 // llinfos << "LLTool::handleDoubleClick" << llendl; 116 // llinfos << "LLTool::handleDoubleClick" << llendl;
diff --git a/linden/indra/newview/lltool.h b/linden/indra/newview/lltool.h
index f954a8c..26e6623 100644
--- a/linden/indra/newview/lltool.h
+++ b/linden/indra/newview/lltool.h
@@ -62,6 +62,7 @@ public:
62 62
63 virtual BOOL handleHover(S32 x, S32 y, MASK mask); 63 virtual BOOL handleHover(S32 x, S32 y, MASK mask);
64 virtual BOOL handleScrollWheel(S32 x, S32 y, S32 clicks); 64 virtual BOOL handleScrollWheel(S32 x, S32 y, S32 clicks);
65 virtual BOOL handleHScrollWheel(S32 x, S32 y, S32 clicks);
65 virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask); 66 virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask);
66 virtual BOOL handleRightMouseDown(S32 x, S32 y, MASK mask); 67 virtual BOOL handleRightMouseDown(S32 x, S32 y, MASK mask);
67 virtual BOOL handleRightMouseUp(S32 x, S32 y, MASK mask); 68 virtual BOOL handleRightMouseUp(S32 x, S32 y, MASK mask);
diff --git a/linden/indra/newview/lltoolmgr.cpp b/linden/indra/newview/lltoolmgr.cpp
index 8204374..764ca9d 100644
--- a/linden/indra/newview/lltoolmgr.cpp
+++ b/linden/indra/newview/lltoolmgr.cpp
@@ -34,6 +34,8 @@
34 34
35#include "lltoolmgr.h" 35#include "lltoolmgr.h"
36 36
37#include "llchatbar.h"
38#include "llfloatertools.h"
37#include "lltool.h" 39#include "lltool.h"
38// tools and manipulators 40// tools and manipulators
39#include "llmanipscale.h" 41#include "llmanipscale.h"
@@ -191,11 +193,22 @@ LLTool* LLToolMgr::getCurrentTool()
191 else 193 else
192 { 194 {
193 // due to window management weirdness we can get here with gToolNull 195 // due to window management weirdness we can get here with gToolNull
194 bool can_override = mBaseTool && (mBaseTool != gToolNull); 196 // Don't use keyboard overrides when the edit window doesn't have focus. The chatbar is an unfortunate exception -- MC
195 mOverrideTool = can_override ? mBaseTool->getOverrideTool(override_mask) : NULL; 197 if (gViewerWindow && gViewerWindow->getUIHasFocus()
198 && gFloaterTools && !gFloaterTools->hasFocus()
199 && gChatBar && !gChatBar->getVisible())
200 {
201 cur_tool = mBaseTool;
202 }
203 else
204 {
205 bool can_override = mBaseTool && (mBaseTool != gToolNull) ;
206
207 mOverrideTool = can_override ? mBaseTool->getOverrideTool(override_mask) : NULL;
196 208
197 // use keyboard-override tool if available otherwise drop back to base tool 209 // use keyboard-override tool if available otherwise drop back to base tool
198 cur_tool = mOverrideTool ? mOverrideTool : mBaseTool; 210 cur_tool = mOverrideTool ? mOverrideTool : mBaseTool;
211 }
199 } 212 }
200 213
201 LLTool* prev_tool = mSelectedTool; 214 LLTool* prev_tool = mSelectedTool;
diff --git a/linden/indra/newview/llviewercontrol.cpp b/linden/indra/newview/llviewercontrol.cpp
index 572f64a..0a23045 100644
--- a/linden/indra/newview/llviewercontrol.cpp
+++ b/linden/indra/newview/llviewercontrol.cpp
@@ -63,6 +63,7 @@
63#include "llworld.h" 63#include "llworld.h"
64#include "pipeline.h" 64#include "pipeline.h"
65#include "llviewerjoystick.h" 65#include "llviewerjoystick.h"
66#include "llviewerparcelmedia.h"
66#include "llviewerparcelmgr.h" 67#include "llviewerparcelmgr.h"
67#include "llparcel.h" 68#include "llparcel.h"
68#include "llnotify.h" 69#include "llnotify.h"
@@ -324,7 +325,7 @@ static bool handleAudioStreamMusicChanged(const LLSD& newvalue)
324 // otherwise music will briefly stop 325 // otherwise music will briefly stop
325 if ( !gAudioStream->isInternetStreamPlaying() ) 326 if ( !gAudioStream->isInternetStreamPlaying() )
326 { 327 {
327 gAudioStream->startInternetStream(LLViewerParcelMgr::getInstance()->getAgentParcel()->getMusicURL()); 328 LLViewerParcelMedia::playStreamingMusic(LLViewerParcelMgr::getInstance()->getAgentParcel());
328 } 329 }
329 } 330 }
330 } 331 }
diff --git a/linden/indra/newview/llviewerimage.cpp b/linden/indra/newview/llviewerimage.cpp
index 671a359..28561ed 100644
--- a/linden/indra/newview/llviewerimage.cpp
+++ b/linden/indra/newview/llviewerimage.cpp
@@ -61,6 +61,7 @@
61#include "llappviewer.h" 61#include "llappviewer.h"
62#include "llface.h" 62#include "llface.h"
63#include "llviewercamera.h" 63#include "llviewercamera.h"
64#include "llvovolume.h"
64/////////////////////////////////////////////////////////////////////////////// 65///////////////////////////////////////////////////////////////////////////////
65 66
66// statics 67// statics
@@ -352,6 +353,11 @@ void LLViewerImage::init(bool firstinit)
352 mDesiredSavedRawDiscardLevel = -1 ; 353 mDesiredSavedRawDiscardLevel = -1 ;
353 354
354 mCanUseHTTP = true; //default on if cap/settings allows us 355 mCanUseHTTP = true; //default on if cap/settings allows us
356
357 mNumFaces = 0 ;
358 mNumVolumes = 0;
359 mFaceList.clear() ;
360 mVolumeList.clear();
355} 361}
356 362
357// virtual 363// virtual
@@ -388,6 +394,7 @@ LLViewerImage::~LLViewerImage()
388void LLViewerImage::cleanup() 394void LLViewerImage::cleanup()
389{ 395{
390 mFaceList.clear() ; 396 mFaceList.clear() ;
397 mVolumeList.clear();
391 for(callback_list_t::iterator iter = mLoadedCallbackList.begin(); 398 for(callback_list_t::iterator iter = mLoadedCallbackList.begin();
392 iter != mLoadedCallbackList.end(); ) 399 iter != mLoadedCallbackList.end(); )
393 { 400 {
@@ -754,19 +761,19 @@ void LLViewerImage::updateVirtualSize()
754 { 761 {
755 addTextureStats(0.f, FALSE) ;//reset 762 addTextureStats(0.f, FALSE) ;//reset
756 } 763 }
757 if(mFaceList.size() > 0) 764 for(U32 i = 0 ; i < mNumFaces ; i++)
758 { 765 {
759 for(std::list<LLFace*>::iterator iter = mFaceList.begin(); iter != mFaceList.end(); ++iter) 766 LLFace* facep = mFaceList[i] ;
767 if(facep->getDrawable()->isRecentlyVisible())
760 { 768 {
761 LLFace* facep = *iter ; 769 addTextureStats(facep->getVirtualSize()) ;
762 if(facep->getDrawable()->isRecentlyVisible()) 770 setAdditionalDecodePriority(facep->getImportanceToCamera()) ;
763 { 771 }
764 addTextureStats(facep->getVirtualSize()) ;
765 setAdditionalDecodePriority(facep->getImportanceToCamera()) ;
766 }
767 }
768 } 772 }
773
769 mNeedsResetMaxVirtualSize = TRUE ; 774 mNeedsResetMaxVirtualSize = TRUE ;
775 reorganizeFaceList();
776 reorganizeVolumeList();
770#endif 777#endif
771} 778}
772void LLViewerImage::scaleDown() 779void LLViewerImage::scaleDown()
@@ -1759,13 +1766,19 @@ void LLViewerImage::setCachedRawImage()
1759 if(mForSculpt) 1766 if(mForSculpt)
1760 { 1767 {
1761 max_size = MAX_CACHED_RAW_SCULPT_IMAGE_AREA ; 1768 max_size = MAX_CACHED_RAW_SCULPT_IMAGE_AREA ;
1769 // Even though we don't use the full pixel size, we want to decode up to discard 0,
1770 // because some legacy sculpts are weird like that.
1771 mCachedRawImageReady = !mRawDiscardLevel ;
1772 }
1773 else
1774 {
1775 mCachedRawImageReady = (!mRawDiscardLevel || ((w * h) >= max_size)) ;
1762 } 1776 }
1763 1777
1764 while(((w >> i) * (h >> i)) > max_size) 1778 while(((w >> i) * (h >> i)) > max_size)
1765 { 1779 {
1766 ++i ; 1780 ++i ;
1767 } 1781 }
1768 mCachedRawImageReady = (!mRawDiscardLevel || ((w * h) >= max_size)) ;
1769 1782
1770 if(i) 1783 if(i)
1771 { 1784 {
@@ -1776,7 +1789,8 @@ void LLViewerImage::setCachedRawImage()
1776 mRawImage->scale(w >> i, h >> i) ; 1789 mRawImage->scale(w >> i, h >> i) ;
1777 } 1790 }
1778 mCachedRawImage = mRawImage ; 1791 mCachedRawImage = mRawImage ;
1779 mCachedRawDiscardLevel = mRawDiscardLevel + i ; 1792 mRawDiscardLevel += i ;
1793 mCachedRawDiscardLevel = mRawDiscardLevel ;
1780 } 1794 }
1781} 1795}
1782 1796
@@ -1784,7 +1798,7 @@ void LLViewerImage::checkCachedRawSculptImage()
1784{ 1798{
1785 if(mCachedRawImageReady && mCachedRawDiscardLevel > 0) 1799 if(mCachedRawImageReady && mCachedRawDiscardLevel > 0)
1786 { 1800 {
1787 if(mCachedRawImage->getWidth() * mCachedRawImage->getHeight() < MAX_CACHED_RAW_SCULPT_IMAGE_AREA) 1801 if(getDiscardLevel() != 0)
1788 { 1802 {
1789 mCachedRawImageReady = FALSE ; 1803 mCachedRawImageReady = FALSE ;
1790 } 1804 }
@@ -1810,11 +1824,111 @@ void LLViewerImage::setForSculpt()
1810 checkCachedRawSculptImage() ; 1824 checkCachedRawSculptImage() ;
1811} 1825}
1812 1826
1827//virtual
1813void LLViewerImage::addFace(LLFace* facep) 1828void LLViewerImage::addFace(LLFace* facep)
1814{ 1829{
1815 mFaceList.push_back(facep) ; 1830 if(mNumFaces >= mFaceList.size())
1831 {
1832 mFaceList.resize(2 * mNumFaces + 1) ;
1833 }
1834 mFaceList[mNumFaces] = facep ;
1835 facep->setIndexInTex(mNumFaces) ;
1836 mNumFaces++ ;
1837 mLastFaceListUpdateTimer.reset() ;
1838}
1839
1840//virtual
1841void LLViewerImage::removeFace(LLFace* facep)
1842{
1843 if(mNumFaces > 1)
1844 {
1845 S32 index = facep->getIndexInTex() ;
1846 mFaceList[index] = mFaceList[--mNumFaces] ;
1847 mFaceList[index]->setIndexInTex(index) ;
1848 }
1849 else
1850 {
1851 mFaceList.clear() ;
1852 mNumFaces = 0 ;
1853 }
1854 mLastFaceListUpdateTimer.reset() ;
1855}
1856
1857S32 LLViewerImage::getNumFaces() const
1858{
1859 return mNumFaces ;
1860}
1861
1862
1863//virtual
1864void LLViewerImage::addVolume(LLVOVolume* volumep)
1865{
1866 if( mNumVolumes >= mVolumeList.size())
1867 {
1868 mVolumeList.resize(2 * mNumVolumes + 1) ;
1869 }
1870 mVolumeList[mNumVolumes] = volumep ;
1871 volumep->setIndexInTex(mNumVolumes) ;
1872 mNumVolumes++ ;
1873 mLastVolumeListUpdateTimer.reset() ;
1874}
1875
1876//virtual
1877void LLViewerImage::removeVolume(LLVOVolume* volumep)
1878{
1879 if(mNumVolumes > 1)
1880 {
1881 S32 index = volumep->getIndexInTex() ;
1882 mVolumeList[index] = mVolumeList[--mNumVolumes] ;
1883 mVolumeList[index]->setIndexInTex(index) ;
1884 }
1885 else
1886 {
1887 mVolumeList.clear() ;
1888 mNumVolumes = 0 ;
1889 }
1890 mLastVolumeListUpdateTimer.reset() ;
1816} 1891}
1817void LLViewerImage::removeFace(LLFace* facep) 1892
1893S32 LLViewerImage::getNumVolumes() const
1818{ 1894{
1819 mFaceList.remove(facep) ; 1895 return mNumVolumes ;
1896}
1897
1898void LLViewerImage::reorganizeFaceList()
1899{
1900 static const F32 MAX_WAIT_TIME = 20.f; // seconds
1901 static const U32 MAX_EXTRA_BUFFER_SIZE = 4 ;
1902
1903 if(mNumFaces + MAX_EXTRA_BUFFER_SIZE > mFaceList.size())
1904 {
1905 return ;
1906 }
1907
1908 if(mLastFaceListUpdateTimer.getElapsedTimeF32() < MAX_WAIT_TIME)
1909 {
1910 return ;
1911 }
1912
1913 mLastFaceListUpdateTimer.reset() ;
1914 mFaceList.erase(mFaceList.begin() + mNumFaces, mFaceList.end());
1915}
1916
1917void LLViewerImage::reorganizeVolumeList()
1918{
1919 static const F32 MAX_WAIT_TIME = 20.f; // seconds
1920 static const U32 MAX_EXTRA_BUFFER_SIZE = 4 ;
1921
1922 if(mNumVolumes + MAX_EXTRA_BUFFER_SIZE > mVolumeList.size())
1923 {
1924 return ;
1925 }
1926
1927 if(mLastVolumeListUpdateTimer.getElapsedTimeF32() < MAX_WAIT_TIME)
1928 {
1929 return ;
1930 }
1931
1932 mLastVolumeListUpdateTimer.reset() ;
1933 mVolumeList.erase(mVolumeList.begin() + mNumVolumes, mVolumeList.end());
1820} 1934}
diff --git a/linden/indra/newview/llviewerimage.h b/linden/indra/newview/llviewerimage.h
index 3bee51c..c2e3303 100644
--- a/linden/indra/newview/llviewerimage.h
+++ b/linden/indra/newview/llviewerimage.h
@@ -51,6 +51,7 @@ typedef void (*loaded_callback_func)( BOOL success, LLViewerImage *src_vi, LLIma
51 51
52class LLVFile; 52class LLVFile;
53class LLMessageSystem; 53class LLMessageSystem;
54class LLVOVolume;
54 55
55class LLLoadedCallbackEntry 56class LLLoadedCallbackEntry
56{ 57{
@@ -209,6 +210,9 @@ public:
209 INVALID_DISCARD_LEVEL = 0x7fff 210 INVALID_DISCARD_LEVEL = 0x7fff
210 }; 211 };
211 212
213 typedef std::vector<LLFace*> ll_face_list_t;
214 typedef std::vector<LLVOVolume*> ll_volume_list_t;
215
212protected: 216protected:
213 /*virtual*/ ~LLViewerImage(); 217 /*virtual*/ ~LLViewerImage();
214 218
@@ -311,8 +315,17 @@ public:
311 315
312 BOOL isSameTexture(const LLViewerImage* tex) const ; 316 BOOL isSameTexture(const LLViewerImage* tex) const ;
313 317
314 void addFace(LLFace* facep) ; 318 virtual void addFace(LLFace* facep) ;
315 void removeFace(LLFace* facep) ; 319 virtual void removeFace(LLFace* facep) ;
320 S32 getNumFaces() const;
321 const ll_face_list_t* getFaceList() const {return &mFaceList;}
322 void reorganizeFaceList() ;
323
324 virtual void addVolume(LLVOVolume* volumep);
325 virtual void removeVolume(LLVOVolume* volumep);
326 S32 getNumVolumes() const;
327 const ll_volume_list_t* getVolumeList() const { return &mVolumeList; }
328 void reorganizeVolumeList() ;
316 329
317 void setCanUseHTTP(bool can_use_http) {mCanUseHTTP = can_use_http;}; 330 void setCanUseHTTP(bool can_use_http) {mCanUseHTTP = can_use_http;};
318 331
@@ -417,8 +430,13 @@ private:
417 BOOL mForSculpt ; //a flag if the texture is used for a sculpt data. 430 BOOL mForSculpt ; //a flag if the texture is used for a sculpt data.
418 mutable BOOL mNeedsResetMaxVirtualSize ; 431 mutable BOOL mNeedsResetMaxVirtualSize ;
419 432
420 typedef std::list<LLFace*> ll_face_list_t ; 433 ll_face_list_t mFaceList ; //reverse pointer pointing to the faces using this image as texture
421 ll_face_list_t mFaceList ; //reverse pointer pointing to the faces using this image as texture 434 U32 mNumFaces ;
435 LLFrameTimer mLastFaceListUpdateTimer ;
436
437 ll_volume_list_t mVolumeList;
438 U32 mNumVolumes;
439 LLFrameTimer mLastVolumeListUpdateTimer;
422 440
423 bool mCanUseHTTP; // can this image be fetched by http 441 bool mCanUseHTTP; // can this image be fetched by http
424 442
diff --git a/linden/indra/newview/llviewerjointmesh_sse2.cpp b/linden/indra/newview/llviewerjointmesh_sse2.cpp
index 550044c..450582f 100644
--- a/linden/indra/newview/llviewerjointmesh_sse2.cpp
+++ b/linden/indra/newview/llviewerjointmesh_sse2.cpp
@@ -114,7 +114,7 @@ void LLViewerJointMesh::updateGeometrySSE2(LLFace *face, LLPolyMesh *mesh)
114 ((LLV4Matrix3)blend_mat).multiply(normals[index], o_normals[index]); 114 ((LLV4Matrix3)blend_mat).multiply(normals[index], o_normals[index]);
115 } 115 }
116 116
117 //setBuffer(0) called in LLVOAvatar::renderSkinned 117 buffer->setBuffer(0);
118} 118}
119 119
120#else 120#else
diff --git a/linden/indra/newview/llviewermenu.cpp b/linden/indra/newview/llviewermenu.cpp
index 777ea35..0d34f18 100644
--- a/linden/indra/newview/llviewermenu.cpp
+++ b/linden/indra/newview/llviewermenu.cpp
@@ -234,6 +234,7 @@
234#include "hippolimits.h" 234#include "hippolimits.h"
235 235
236#include "llfloaterteleporthistory.h" 236#include "llfloaterteleporthistory.h"
237#include "slfloatermediafilter.h"
237 238
238using namespace LLVOAvatarDefines; 239using namespace LLVOAvatarDefines;
239void init_client_menu(LLMenuGL* menu); 240void init_client_menu(LLMenuGL* menu);
@@ -5996,6 +5997,10 @@ class LLShowFloater : public view_listener_t
5996 { 5997 {
5997 LLFloaterMute::toggleInstance(); 5998 LLFloaterMute::toggleInstance();
5998 } 5999 }
6000 else if (floater_name == "media filter")
6001 {
6002 SLFloaterMediaFilter::toggleInstance();
6003 }
5999 else if (floater_name == "camera controls") 6004 else if (floater_name == "camera controls")
6000 { 6005 {
6001 LLFloaterCamera::toggleInstance(); 6006 LLFloaterCamera::toggleInstance();
@@ -6161,6 +6166,10 @@ class LLFloaterVisible : public view_listener_t
6161 { 6166 {
6162 new_value = LLFloaterMute::instanceVisible(); 6167 new_value = LLFloaterMute::instanceVisible();
6163 } 6168 }
6169 else if (floater_name == "media filter")
6170 {
6171 new_value = SLFloaterMediaFilter::instanceVisible();
6172 }
6164 else if (floater_name == "camera controls") 6173 else if (floater_name == "camera controls")
6165 { 6174 {
6166 new_value = LLFloaterCamera::instanceVisible(); 6175 new_value = LLFloaterCamera::instanceVisible();
@@ -9219,6 +9228,14 @@ U32 info_display_from_string(std::string info_display)
9219 { 9228 {
9220 return LLPipeline::RENDER_DEBUG_GLOW; 9229 return LLPipeline::RENDER_DEBUG_GLOW;
9221 } 9230 }
9231 else if ("raycasting" == info_display)
9232 {
9233 return LLPipeline::RENDER_DEBUG_RAYCAST;
9234 }
9235 else if ("sculpt" == info_display)
9236 {
9237 return LLPipeline::RENDER_DEBUG_SCULPTED;
9238 }
9222 else 9239 else
9223 { 9240 {
9224 return 0; 9241 return 0;
diff --git a/linden/indra/newview/llviewermessage.cpp b/linden/indra/newview/llviewermessage.cpp
index 0a27e0a..504c193 100755
--- a/linden/indra/newview/llviewermessage.cpp
+++ b/linden/indra/newview/llviewermessage.cpp
@@ -3531,6 +3531,17 @@ void process_teleport_finish(LLMessageSystem* msg, void**)
3531 U32 teleport_flags; 3531 U32 teleport_flags;
3532 msg->getU32Fast(_PREHASH_Info, _PREHASH_TeleportFlags, teleport_flags); 3532 msg->getU32Fast(_PREHASH_Info, _PREHASH_TeleportFlags, teleport_flags);
3533 3533
3534 U32 region_size_x = 256;
3535 msg->getU32Fast(_PREHASH_Info, _PREHASH_RegionSizeX, region_size_x);
3536 U32 region_size_y = 256;
3537 msg->getU32Fast(_PREHASH_Info, _PREHASH_RegionSizeY, region_size_y);
3538
3539 //and a little hack for Second Life compatibility
3540 if (region_size_y == 0 || region_size_x == 0)
3541 {
3542 region_size_x = 256;
3543 region_size_y = 256;
3544 }
3534 3545
3535 std::string seedCap; 3546 std::string seedCap;
3536 msg->getStringFast(_PREHASH_Info, _PREHASH_SeedCapability, seedCap); 3547 msg->getStringFast(_PREHASH_Info, _PREHASH_SeedCapability, seedCap);
@@ -3550,7 +3561,7 @@ void process_teleport_finish(LLMessageSystem* msg, void**)
3550 3561
3551 // Viewer trusts the simulator. 3562 // Viewer trusts the simulator.
3552 gMessageSystem->enableCircuit(sim_host, TRUE); 3563 gMessageSystem->enableCircuit(sim_host, TRUE);
3553 LLViewerRegion* regionp = LLWorld::getInstance()->addRegion(region_handle, sim_host); 3564 LLViewerRegion* regionp = LLWorld::getInstance()->addRegion(region_handle, sim_host, region_size_x, region_size_y);
3554 3565
3555/* 3566/*
3556 // send camera update to new region 3567 // send camera update to new region
@@ -3866,9 +3877,21 @@ void process_crossed_region(LLMessageSystem* msg, void**)
3866 std::string seedCap; 3877 std::string seedCap;
3867 msg->getStringFast(_PREHASH_RegionData, _PREHASH_SeedCapability, seedCap); 3878 msg->getStringFast(_PREHASH_RegionData, _PREHASH_SeedCapability, seedCap);
3868 3879
3880 U32 region_size_x = 256;
3881 msg->getU32(_PREHASH_RegionData, _PREHASH_RegionSizeX, region_size_x);
3882 U32 region_size_y = 256;
3883 msg->getU32(_PREHASH_RegionData, _PREHASH_RegionSizeY, region_size_y);
3884
3885 //and a little hack for Second Life compatibility
3886 if (region_size_y == 0 || region_size_x == 0)
3887 {
3888 region_size_x = 256;
3889 region_size_y = 256;
3890 }
3891
3869 send_complete_agent_movement(sim_host); 3892 send_complete_agent_movement(sim_host);
3870 3893
3871 LLViewerRegion* regionp = LLWorld::getInstance()->addRegion(region_handle, sim_host); 3894 LLViewerRegion* regionp = LLWorld::getInstance()->addRegion(region_handle, sim_host, region_size_x, region_size_y);
3872 regionp->setSeedCapability(seedCap); 3895 regionp->setSeedCapability(seedCap);
3873 3896
3874 // Tell the LightShare handler that we have changed regions. 3897 // Tell the LightShare handler that we have changed regions.
diff --git a/linden/indra/newview/llviewerparcelmedia.cpp b/linden/indra/newview/llviewerparcelmedia.cpp
index d4ebbd9..a5d97f2 100644
--- a/linden/indra/newview/llviewerparcelmedia.cpp
+++ b/linden/indra/newview/llviewerparcelmedia.cpp
@@ -33,6 +33,7 @@
33#include "llviewerprecompiledheaders.h" 33#include "llviewerprecompiledheaders.h"
34#include "llviewerparcelmedia.h" 34#include "llviewerparcelmedia.h"
35 35
36#include "kokuastreamingaudio.h"
36#include "llagent.h" 37#include "llagent.h"
37#include "llviewercontrol.h" 38#include "llviewercontrol.h"
38#include "llviewermedia.h" 39#include "llviewermedia.h"
@@ -46,17 +47,27 @@
46#include "llviewerwindow.h" 47#include "llviewerwindow.h"
47#include "llfirstuse.h" 48#include "llfirstuse.h"
48#include "llpluginclassmedia.h" 49#include "llpluginclassmedia.h"
50#include "llnotify.h"
51#include "llsdserialize.h"
49 52
53#include "lloverlaybar.h"
54#include "slfloatermediafilter.h"
55#include "llinventorymodel.h"
50// Static Variables 56// Static Variables
51 57
52S32 LLViewerParcelMedia::sMediaParcelLocalID = 0; 58S32 LLViewerParcelMedia::sMediaParcelLocalID = 0;
53LLUUID LLViewerParcelMedia::sMediaRegionID; 59LLUUID LLViewerParcelMedia::sMediaRegionID;
54viewer_media_t LLViewerParcelMedia::sMediaImpl; 60viewer_media_t LLViewerParcelMedia::sMediaImpl;
55 61bool LLViewerParcelMedia::sIsUserAction = false;
62bool LLViewerParcelMedia::sMediaFilterListLoaded = false;
63LLSD LLViewerParcelMedia::sMediaFilterList;
64std::set<std::string> LLViewerParcelMedia::sMediaQueries;
65std::set<std::string> LLViewerParcelMedia::sAllowedMedia;
66std::set<std::string> LLViewerParcelMedia::sDeniedMedia;
56 67
57// Local functions 68// Local functions
58bool callback_play_media(const LLSD& notification, const LLSD& response, LLParcel* parcel); 69bool callback_play_media(const LLSD& notification, const LLSD& response, LLParcel* parcel);
59 70void callback_media_alert(const LLSD& notification, const LLSD& response, LLParcel* parcel, U32 type, std::string domain);
60 71
61// static 72// static
62void LLViewerParcelMedia::initClass() 73void LLViewerParcelMedia::initClass()
@@ -175,7 +186,7 @@ void LLViewerParcelMedia::update(LLParcel* parcel)
175} 186}
176 187
177// static 188// static
178void LLViewerParcelMedia::play(LLParcel* parcel) 189void LLViewerParcelMedia::play(LLParcel* parcel, bool filter)
179{ 190{
180 lldebugs << "LLViewerParcelMedia::play" << llendl; 191 lldebugs << "LLViewerParcelMedia::play" << llendl;
181 192
@@ -185,7 +196,17 @@ void LLViewerParcelMedia::play(LLParcel* parcel)
185 return; 196 return;
186 197
187 std::string media_url = parcel->getMediaURL(); 198 std::string media_url = parcel->getMediaURL();
188 std::string media_current_url = parcel->getMediaCurrentURL(); 199 LLStringUtil::trim(media_url);
200
201 if (!media_url.empty() && gSavedSettings.getBOOL("MediaEnableFilter") && (filter || !allowedMedia(media_url)))
202 {
203 // If filtering is needed or in case media_url just changed
204 // to something we did not yet approve.
205 LLViewerParcelMediaAutoPlay::playStarted();
206 filterMedia(parcel, 0);
207 return;
208 }
209
189 std::string mime_type = parcel->getMediaType(); 210 std::string mime_type = parcel->getMediaType();
190 LLUUID placeholder_texture_id = parcel->getMediaID(); 211 LLUUID placeholder_texture_id = parcel->getMediaID();
191 U8 media_auto_scale = parcel->getMediaAutoScale(); 212 U8 media_auto_scale = parcel->getMediaAutoScale();
@@ -403,6 +424,8 @@ void LLViewerParcelMedia::processParcelMediaUpdate( LLMessageSystem *msg, void *
403 media_url = media_url_buffer; 424 media_url = media_url_buffer;
404 msg->getU8("DataBlock", "MediaAutoScale", media_auto_scale); 425 msg->getU8("DataBlock", "MediaAutoScale", media_auto_scale);
405 426
427 LL_DEBUGS("MediaFilter") << "New media texture id: " << media_id << LL_ENDL;
428
406 if (msg->has("DataBlockExtended")) // do we have the extended data? 429 if (msg->has("DataBlockExtended")) // do we have the extended data?
407 { 430 {
408 char media_type_buffer[257]; 431 char media_type_buffer[257];
@@ -438,6 +461,7 @@ void LLViewerParcelMedia::processParcelMediaUpdate( LLMessageSystem *msg, void *
438 461
439 play(parcel); 462 play(parcel);
440 } 463 }
464
441 } 465 }
442} 466}
443// Static 467// Static
@@ -586,3 +610,368 @@ void LLViewerParcelMediaNavigationObserver::onNavigateComplete( const EventType&
586 610
587} 611}
588*/ 612*/
613
614void LLViewerParcelMedia::playStreamingMusic(LLParcel* parcel, bool filter)
615{
616 std::string music_url = parcel->getMusicURL();
617 LLStringUtil::trim(music_url);
618 if (!music_url.empty() && gSavedSettings.getBOOL("MediaEnableFilter") && (filter || !allowedMedia(music_url)))
619 {
620 // If filtering is needed or in case music_url just changed
621 // to something we did not yet approve.
622 filterMedia(parcel, 1);
623 }
624 else if (gAudioStream)
625 {
626 LLStringUtil::trim(music_url);
627 gAudioStream->startInternetStream(music_url);
628 if (music_url.empty())
629 {
630 LLOverlayBar::audioFilterStop();
631 }
632 else
633 {
634 LLOverlayBar::audioFilterPlay();
635 }
636 }
637}
638
639void LLViewerParcelMedia::stopStreamingMusic()
640{
641 if (gAudioStream)
642 {
643 gAudioStream->stopInternetStream();
644 LLOverlayBar::audioFilterStop();
645 }
646}
647
648bool LLViewerParcelMedia::allowedMedia(std::string media_url)
649{
650 LLStringUtil::trim(media_url);
651 std::string domain = extractDomain(media_url);
652 if (sAllowedMedia.count(domain))
653 {
654 return true;
655 }
656 for (S32 i = 0; i < (S32)sMediaFilterList.size(); i++)
657 {
658 if (sMediaFilterList[i]["domain"].asString() == domain)
659 {
660 if (sMediaFilterList[i]["action"].asString() == "allow")
661 {
662 return true;
663 }
664 else
665 {
666 return false;
667 }
668 }
669 }
670 return false;
671}
672
673void LLViewerParcelMedia::filterMedia(LLParcel* parcel, U32 type)
674{
675 std::string media_action;
676 std::string media_url;
677 std::string domain;
678
679 if (parcel != LLViewerParcelMgr::getInstance()->getAgentParcel())
680 {
681 // The parcel just changed (may occur right out after a TP)
682 sIsUserAction = false;
683 return;
684 }
685
686 if (type == 0)
687 {
688 media_url = parcel->getMediaURL();
689 }
690 else
691 {
692 media_url = parcel->getMusicURL();
693 }
694 LLStringUtil::trim(media_url);
695
696 LL_DEBUGS("MediaFilter") << "Requested " << (type == 0 ? "media" : "music") << "-URL: " << media_url << LL_ENDL;
697
698 domain = extractDomain(media_url);
699
700 if (sMediaQueries.count(domain) > 0)
701 {
702 sIsUserAction = false;
703 return;
704 }
705
706 if (sIsUserAction)
707 {
708 // This was a user manual request to play this media, so give
709 // it another chance...
710 sIsUserAction = false;
711 if (sDeniedMedia.count(domain))
712 {
713 sDeniedMedia.erase(domain);
714 SLFloaterMediaFilter::setDirty();
715 }
716 }
717
718 if (!sMediaFilterListLoaded || sDeniedMedia.count(domain))
719 {
720 media_action = "ignore";
721 }
722 else if (sAllowedMedia.count(domain))
723 {
724 media_action = "allow";
725 }
726 else
727 {
728 for (S32 i = 0; i < (S32)sMediaFilterList.size(); i++)
729 {
730 if (sMediaFilterList[i]["domain"].asString() == domain)
731 {
732 media_action = sMediaFilterList[i]["action"].asString();
733 break;
734 }
735 }
736 }
737
738 if (media_action == "allow" || media_url.empty())
739 {
740 if (type == 0)
741 {
742 play(parcel, false);
743 }
744 else
745 {
746 playStreamingMusic(parcel, false);
747 }
748 }
749 else if (media_action == "deny")
750 {
751 LLSD args;
752 args["DOMAIN"] = domain;
753 LLNotifications::instance().add("MediaBlocked", args);
754 if (type == 1)
755 {
756 LLViewerParcelMedia::stopStreamingMusic();
757 }
758 // So to avoid other "blocked" messages later in the session
759 // for this url should it be requested again by a script.
760 sDeniedMedia.insert(domain);
761 }
762 else if (media_action == "ignore")
763 {
764 if (type == 1)
765 {
766 LLViewerParcelMedia::stopStreamingMusic();
767 }
768 }
769 else
770 {
771 sMediaQueries.insert(domain);
772 LLSD args;
773 args["DOMAIN"] = domain;
774 if (media_url.find('?') != std::string::npos)
775 {
776 args["WARNING"] = " (WARNING: this URL also contains parameter(s) that could potentially be used to correlate your avatar name with your IP)";
777 }
778 else
779 {
780 args["WARNING"] = "";
781 }
782 if (type == 0)
783 {
784 args["TYPE"] = "a media";
785 }
786 else
787 {
788 args["TYPE"] = "an audio";
789 }
790 LLNotifications::instance().add("MediaAlert", args, LLSD(), boost::bind(callback_media_alert, _1, _2, parcel, type, domain));
791 }
792}
793
794void callback_media_alert(const LLSD &notification, const LLSD &response, LLParcel* parcel, U32 type, std::string domain)
795{
796 S32 option = LLNotification::getSelectedOption(notification, response);
797
798 LLSD args;
799 args["DOMAIN"] = domain;
800
801 if (option == 0 || option == 3) // Allow or Whitelist
802 {
803 LLViewerParcelMedia::sAllowedMedia.insert(domain);
804 if (option == 3) // Whitelist
805 {
806 LLSD newmedia;
807 newmedia["domain"] = domain;
808 newmedia["action"] = "allow";
809 LLViewerParcelMedia::sMediaFilterList.append(newmedia);
810 LLViewerParcelMedia::saveDomainFilterList();
811 args["LISTED"] = "whitelisted";
812 LLNotifications::instance().add("MediaListed", args);
813 }
814 if (type == 0)
815 {
816 LLViewerParcelMedia::play(parcel, false);
817 }
818 else
819 {
820 LLViewerParcelMedia::playStreamingMusic(parcel, false);
821 }
822 }
823 else if (option == 1 || option == 2) // Deny or Blacklist
824 {
825 LLViewerParcelMedia::sDeniedMedia.insert(domain);
826 if (type == 1)
827 {
828 LLViewerParcelMedia::stopStreamingMusic();
829 }
830 if (option == 1) // Deny
831 {
832 LLNotifications::instance().add("MediaBlocked", args);
833 }
834 else // Blacklist
835 {
836 LLSD newmedia;
837 newmedia["domain"] = domain;
838 newmedia["action"] = "deny";
839 LLViewerParcelMedia::sMediaFilterList.append(newmedia);
840 LLViewerParcelMedia::saveDomainFilterList();
841 args["LISTED"] = "blacklisted";
842 LLNotifications::instance().add("MediaListed", args);
843 }
844 }
845
846 LLViewerParcelMedia::sMediaQueries.erase(domain);
847 SLFloaterMediaFilter::setDirty();
848}
849
850void LLViewerParcelMedia::saveDomainFilterList()
851{
852 std::string medialist_filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, "media_filter.xml");
853
854 llofstream medialistFile(medialist_filename);
855 LLSDSerialize::toPrettyXML(sMediaFilterList, medialistFile);
856 medialistFile.close();
857}
858
859bool LLViewerParcelMedia::loadDomainFilterList()
860{
861 sMediaFilterListLoaded = true;
862
863 std::string medialist_filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, "media_filter.xml");
864
865 if (!LLFile::isfile(medialist_filename))
866 {
867 LLSD emptyllsd;
868 llofstream medialistFile(medialist_filename);
869 LLSDSerialize::toPrettyXML(emptyllsd, medialistFile);
870 medialistFile.close();
871 }
872
873 if (LLFile::isfile(medialist_filename))
874 {
875 llifstream medialistFile(medialist_filename);
876 LLSDSerialize::fromXML(sMediaFilterList, medialistFile);
877 medialistFile.close();
878 SLFloaterMediaFilter::setDirty();
879 return true;
880 }
881 else
882 {
883 return false;
884 }
885}
886
887void LLViewerParcelMedia::clearDomainFilterList()
888{
889 sMediaFilterList.clear();
890 sAllowedMedia.clear();
891 sDeniedMedia.clear();
892 saveDomainFilterList();
893 LLNotifications::instance().add("MediaFiltersCleared");
894 SLFloaterMediaFilter::setDirty();
895}
896
897std::string LLViewerParcelMedia::extractDomain(std::string url)
898{
899 static std::string last_region = "@";
900
901 if (url.empty())
902 {
903 return url;
904 }
905
906 LLStringUtil::toLower(url);
907
908 size_t pos = url.find("//");
909
910 if (pos != std::string::npos)
911 {
912 size_t count = url.size() - pos + 2;
913 url = url.substr(pos + 2, count);
914 }
915
916 // Check that there is at least one slash in the URL and add a trailing
917 // one if not (for media/audio URLs such as http://mydomain.net)
918 if (url.find('/') == std::string::npos)
919 {
920 url += '/';
921 }
922
923 // If there's a user:password@ part, remove it
924 pos = url.find('@');
925 if (pos != std::string::npos && pos < url.find('/')) // if '@' is not before the first '/', then it's not a user:password
926 {
927 size_t count = url.size() - pos + 1;
928 url = url.substr(pos + 1, count);
929 }
930
931 if (url.find(gAgent.getRegion()->getHost().getHostName()) == 0 || url.find(last_region) == 0)
932 {
933 // This must be a scripted object rezzed in the region:
934 // extend the concept of "domain" to encompass the
935 // scripted object server id and avoid blocking all other
936 // objects at once in this region...
937
938 // Get rid of any port number
939 pos = url.find('/'); // We earlier made sure that there's one
940 url = gAgent.getRegion()->getHost().getHostName() + url.substr(pos);
941
942 pos = url.find('?');
943 if (pos != std::string::npos)
944 {
945 // Get rid of any parameter
946 url = url.substr(0, pos);
947 }
948
949 pos = url.rfind('/');
950 if (pos != std::string::npos)
951 {
952 // Get rid of the filename, if any, keeping only the server + path
953 url = url.substr(0, pos);
954 }
955 }
956 else
957 {
958 pos = url.find(':');
959 if (pos != std::string::npos && pos < url.find('/'))
960 {
961 // Keep anything before the port number and strip the rest off
962 url = url.substr(0, pos);
963 }
964 else
965 {
966 pos = url.find('/'); // We earlier made sure that there's one
967 url = url.substr(0, pos);
968 }
969 }
970
971
972 // Remember this region, so to cope with requests occuring just after a
973 // TP out of it.
974 last_region = gAgent.getRegion()->getHost().getHostName();
975
976 return url;
977}
diff --git a/linden/indra/newview/llviewerparcelmedia.h b/linden/indra/newview/llviewerparcelmedia.h
index 0f1e85c..7531a0f 100644
--- a/linden/indra/newview/llviewerparcelmedia.h
+++ b/linden/indra/newview/llviewerparcelmedia.h
@@ -35,6 +35,9 @@
35 35
36#include "llviewermedia.h" 36#include "llviewermedia.h"
37 37
38// For use by other patches so they know that media filtering is implemented.
39#define MEDIA_FILTERING 1
40
38class LLMessageSystem; 41class LLMessageSystem;
39class LLParcel; 42class LLParcel;
40class LLViewerParcelMediaNavigationObserver; 43class LLViewerParcelMediaNavigationObserver;
@@ -54,8 +57,20 @@ class LLViewerParcelMedia : public LLViewerMediaObserver
54 // called when the agent's parcel has a new URL, or the agent has 57 // called when the agent's parcel has a new URL, or the agent has
55 // walked on to a new parcel with media 58 // walked on to a new parcel with media
56 59
57 static void play(LLParcel* parcel); 60 static void play(LLParcel* parcel, bool filter = true);
58 // user clicked play button in media transport controls 61 // user clicked play button in media transport controls
62 static void playStreamingMusic(LLParcel* parcel, bool filter = true);
63 // play the parcel music stream
64 static void stopStreamingMusic();
65 // stop the parcel music stream
66
67 static void filterMedia(LLParcel* parcel, U32 type); // type: 0 = media, 1 = streaming music
68 static bool allowedMedia(std::string media_url);
69
70 static bool loadDomainFilterList();
71 static void saveDomainFilterList();
72 static void clearDomainFilterList();
73 static std::string extractDomain(std::string url);
59 74
60 static void stop(); 75 static void stop();
61 // user clicked stop button in media transport controls 76 // user clicked stop button in media transport controls
@@ -85,6 +100,13 @@ class LLViewerParcelMedia : public LLViewerMediaObserver
85 static LLUUID sMediaRegionID; 100 static LLUUID sMediaRegionID;
86 // HACK: this will change with Media on a Prim 101 // HACK: this will change with Media on a Prim
87 static viewer_media_t sMediaImpl; 102 static viewer_media_t sMediaImpl;
103
104 static bool sIsUserAction;
105 static bool sMediaFilterListLoaded;
106 static LLSD sMediaFilterList;
107 static std::set<std::string> sMediaQueries;
108 static std::set<std::string> sAllowedMedia;
109 static std::set<std::string> sDeniedMedia;
88}; 110};
89 111
90 112
diff --git a/linden/indra/newview/llviewerparcelmgr.cpp b/linden/indra/newview/llviewerparcelmgr.cpp
index 630da54..11ab647 100644
--- a/linden/indra/newview/llviewerparcelmgr.cpp
+++ b/linden/indra/newview/llviewerparcelmgr.cpp
@@ -85,7 +85,7 @@ LLPointer<LLViewerImage> sBlockedImage;
85LLPointer<LLViewerImage> sPassImage; 85LLPointer<LLViewerImage> sPassImage;
86 86
87// Local functions 87// Local functions
88void optionally_start_music(const std::string& music_url); 88void optionally_start_music(LLParcel* parcel);
89void callback_start_music(S32 option, void* data); 89void callback_start_music(S32 option, void* data);
90void optionally_prepare_video(const LLParcel *parcelp); 90void optionally_prepare_video(const LLParcel *parcelp);
91void callback_prepare_video(S32 option, void* data); 91void callback_prepare_video(S32 option, void* data);
@@ -137,17 +137,27 @@ LLViewerParcelMgr::LLViewerParcelMgr()
137 mHoverParcel = new LLParcel(); 137 mHoverParcel = new LLParcel();
138 mCollisionParcel = new LLParcel(); 138 mCollisionParcel = new LLParcel();
139 139
140 mParcelsPerEdge = S32( REGION_WIDTH_METERS / PARCEL_GRID_STEP_METERS ); 140 mBlockedImage = gImageList.getImageFromFile("noentrylines.j2c");
141 mPassImage = gImageList.getImageFromFile("noentrypasslines.j2c");
142
143 init(256);
144}
145
146//moved this stuff out of the constructor and into a function that we can call again after we get the region size.
147//LLViewerParcelMgr needs to be changed so we either get an instance per region, or it handles various region sizes
148//on a single grid properly - Patrick Sapinski (2/10/2011)
149void LLViewerParcelMgr::init(F32 region_size)
150{
151 mParcelsPerEdge = S32( region_size / PARCEL_GRID_STEP_METERS );
141 mHighlightSegments = new U8[(mParcelsPerEdge+1)*(mParcelsPerEdge+1)]; 152 mHighlightSegments = new U8[(mParcelsPerEdge+1)*(mParcelsPerEdge+1)];
142 resetSegments(mHighlightSegments); 153 resetSegments(mHighlightSegments);
143 154
144 mCollisionSegments = new U8[(mParcelsPerEdge+1)*(mParcelsPerEdge+1)]; 155 mCollisionSegments = new U8[(mParcelsPerEdge+1)*(mParcelsPerEdge+1)];
145 resetSegments(mCollisionSegments); 156 resetSegments(mCollisionSegments);
146 157
147 mBlockedImage = gImageList.getImageFromFile("noentrylines.j2c"); 158 S32 mParcelOverLayChunks = region_size * region_size / (128 * 128);
148 mPassImage = gImageList.getImageFromFile("noentrypasslines.j2c");
149 159
150 S32 overlay_size = mParcelsPerEdge * mParcelsPerEdge / PARCEL_OVERLAY_CHUNKS; 160 S32 overlay_size = mParcelsPerEdge * mParcelsPerEdge / mParcelOverLayChunks;
151 sPackedOverlay = new U8[overlay_size]; 161 sPackedOverlay = new U8[overlay_size];
152 162
153 mAgentParcelOverlay = new U8[mParcelsPerEdge * mParcelsPerEdge]; 163 mAgentParcelOverlay = new U8[mParcelsPerEdge * mParcelsPerEdge];
@@ -1351,8 +1361,7 @@ void LLViewerParcelMgr::processParcelOverlay(LLMessageSystem *msg, void **user)
1351 return; 1361 return;
1352 } 1362 }
1353 1363
1354 S32 parcels_per_edge = LLViewerParcelMgr::getInstance()->mParcelsPerEdge; 1364 S32 expected_size = 1024; //parcels_per_edge * parcels_per_edge / PARCEL_OVERLAY_CHUNKS;
1355 S32 expected_size = parcels_per_edge * parcels_per_edge / PARCEL_OVERLAY_CHUNKS;
1356 if (packed_overlay_size != expected_size) 1365 if (packed_overlay_size != expected_size)
1357 { 1366 {
1358 llwarns << "Got parcel overlay size " << packed_overlay_size 1367 llwarns << "Got parcel overlay size " << packed_overlay_size
@@ -1697,7 +1706,7 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use
1697 { 1706 {
1698 if (music_url.substr(0,7) == "http://") 1707 if (music_url.substr(0,7) == "http://")
1699 { 1708 {
1700 optionally_start_music(music_url); 1709 optionally_start_music(parcel);
1701 } 1710 }
1702 } 1711 }
1703 else if (!gAudioStream->getInternetStreamURL().empty()) 1712 else if (!gAudioStream->getInternetStreamURL().empty())
@@ -1719,18 +1728,18 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use
1719 }; 1728 };
1720} 1729}
1721 1730
1722void optionally_start_music(const std::string& music_url) 1731void optionally_start_music(LLParcel* parcel)
1723{ 1732{
1724 if (gSavedSettings.getBOOL("AudioStreamingMusic")) 1733 if (gSavedSettings.getBOOL("AudioStreamingMusic"))
1725 { 1734 {
1726 // Make the user click the start button on the overlay bar. JC 1735 // Make the user click the start button on the overlay bar. JC
1727 // llinfos << "Starting parcel music " << music_url << llendl; 1736 // llinfos << "Starting parcel music " << parcel->getMusicURL() << llendl;
1728 1737
1729 // now only play music when you enter a new parcel if the control is in PLAY state 1738 // now only play music when you enter a new parcel if the control is in PLAY state
1730 // changed as part of SL-4878 1739 // changed as part of SL-4878
1731 if ( gOverlayBar && gOverlayBar->musicPlaying()) 1740 if (gOverlayBar && gOverlayBar->musicPlaying())
1732 { 1741 {
1733 gAudioStream->startInternetStream(music_url); 1742 LLViewerParcelMedia::playStreamingMusic(parcel);
1734 } 1743 }
1735 } 1744 }
1736} 1745}
diff --git a/linden/indra/newview/llviewerparcelmgr.h b/linden/indra/newview/llviewerparcelmgr.h
index 9bf6096..59e6186 100644
--- a/linden/indra/newview/llviewerparcelmgr.h
+++ b/linden/indra/newview/llviewerparcelmgr.h
@@ -82,6 +82,8 @@ public:
82 LLViewerParcelMgr(); 82 LLViewerParcelMgr();
83 ~LLViewerParcelMgr(); 83 ~LLViewerParcelMgr();
84 84
85 void init(F32 region_size);
86
85 static void cleanupGlobals(); 87 static void cleanupGlobals();
86 88
87 BOOL selectionEmpty() const; 89 BOOL selectionEmpty() const;
diff --git a/linden/indra/newview/llviewerparceloverlay.cpp b/linden/indra/newview/llviewerparceloverlay.cpp
index 0bcd8f3..4ae3253 100644
--- a/linden/indra/newview/llviewerparceloverlay.cpp
+++ b/linden/indra/newview/llviewerparceloverlay.cpp
@@ -58,6 +58,7 @@ const U8 OVERLAY_IMG_COMPONENTS = 4;
58LLViewerParcelOverlay::LLViewerParcelOverlay(LLViewerRegion* region, F32 region_width_meters) 58LLViewerParcelOverlay::LLViewerParcelOverlay(LLViewerRegion* region, F32 region_width_meters)
59: mRegion( region ), 59: mRegion( region ),
60 mParcelGridsPerEdge( S32( region_width_meters / PARCEL_GRID_STEP_METERS ) ), 60 mParcelGridsPerEdge( S32( region_width_meters / PARCEL_GRID_STEP_METERS ) ),
61 mRegionSize(S32(region_width_meters)),
61 mDirty( FALSE ), 62 mDirty( FALSE ),
62 mTimeSinceLastUpdate(), 63 mTimeSinceLastUpdate(),
63 mOverlayTextureIdx(-1), 64 mOverlayTextureIdx(-1),
@@ -299,7 +300,8 @@ void LLViewerParcelOverlay::uncompressLandOverlay(S32 chunk, U8 *packed_overlay)
299{ 300{
300 // Unpack the message data into the ownership array 301 // Unpack the message data into the ownership array
301 S32 size = mParcelGridsPerEdge * mParcelGridsPerEdge; 302 S32 size = mParcelGridsPerEdge * mParcelGridsPerEdge;
302 S32 chunk_size = size / PARCEL_OVERLAY_CHUNKS; 303 S32 mParcelOverLayChunks = mRegionSize * mRegionSize / (128 * 128);
304 S32 chunk_size = size / mParcelOverLayChunks;
303 305
304 memcpy(mOwnership + chunk*chunk_size, packed_overlay, chunk_size); /*Flawfinder: ignore*/ 306 memcpy(mOwnership + chunk*chunk_size, packed_overlay, chunk_size); /*Flawfinder: ignore*/
305 307
diff --git a/linden/indra/newview/llviewerparceloverlay.h b/linden/indra/newview/llviewerparceloverlay.h
index 9bed1dd..fc0db0a 100644
--- a/linden/indra/newview/llviewerparceloverlay.h
+++ b/linden/indra/newview/llviewerparceloverlay.h
@@ -98,6 +98,7 @@ private:
98 LLViewerRegion* mRegion; 98 LLViewerRegion* mRegion;
99 99
100 S32 mParcelGridsPerEdge; 100 S32 mParcelGridsPerEdge;
101 S32 mRegionSize;
101 102
102 LLPointer<LLImageGL> mTexture; 103 LLPointer<LLImageGL> mTexture;
103 LLPointer<LLImageRaw> mImageRaw; 104 LLPointer<LLImageRaw> mImageRaw;
diff --git a/linden/indra/newview/llviewerregion.cpp b/linden/indra/newview/llviewerregion.cpp
index a8047b8..eba0db7 100644
--- a/linden/indra/newview/llviewerregion.cpp
+++ b/linden/indra/newview/llviewerregion.cpp
@@ -65,6 +65,7 @@
65#include "llvoclouds.h" 65#include "llvoclouds.h"
66#include "llworld.h" 66#include "llworld.h"
67#include "llspatialpartition.h" 67#include "llspatialpartition.h"
68#include "llviewerparcelmgr.h"
68 69
69// Viewer object cache version, change if object update 70// Viewer object cache version, change if object update
70// format changes. JC 71// format changes. JC
@@ -199,6 +200,8 @@ LLViewerRegion::LLViewerRegion(const U64 &handle,
199 if (!gNoRender) 200 if (!gNoRender)
200 { 201 {
201 mParcelOverlay = new LLViewerParcelOverlay(this, region_width_meters); 202 mParcelOverlay = new LLViewerParcelOverlay(this, region_width_meters);
203 //Re-init the parcel mgr for this sim
204 LLViewerParcelMgr::getInstance()->init(region_width_meters);
202 } 205 }
203 else 206 else
204 { 207 {
diff --git a/linden/indra/newview/llviewerwindow.cpp b/linden/indra/newview/llviewerwindow.cpp
index f721550..8a343ac 100644
--- a/linden/indra/newview/llviewerwindow.cpp
+++ b/linden/indra/newview/llviewerwindow.cpp
@@ -1134,6 +1134,10 @@ void LLViewerWindow::handleScrollWheel(LLWindow *window, S32 clicks)
1134{ 1134{
1135 handleScrollWheel( clicks ); 1135 handleScrollWheel( clicks );
1136} 1136}
1137void LLViewerWindow::handleHScrollWheel(LLWindow *window, S32 clicks)
1138{
1139 handleHScrollWheel( clicks );
1140}
1137 1141
1138void LLViewerWindow::handleWindowBlock(LLWindow *window) 1142void LLViewerWindow::handleWindowBlock(LLWindow *window)
1139{ 1143{
@@ -1305,7 +1309,7 @@ LLViewerWindow::LLViewerWindow(
1305 { 1309 {
1306 gSavedSettings.setBOOL("RenderVBOEnable", FALSE); 1310 gSavedSettings.setBOOL("RenderVBOEnable", FALSE);
1307 } 1311 }
1308 LLVertexBuffer::initClass(gSavedSettings.getBOOL("RenderVBOEnable")); 1312 LLVertexBuffer::initClass(gSavedSettings.getBOOL("RenderVBOEnable") && gGLManager.mHasVertexBufferObject);
1309 1313
1310 if (LLFeatureManager::getInstance()->isSafe() 1314 if (LLFeatureManager::getInstance()->isSafe()
1311 || (gSavedSettings.getS32("LastFeatureVersion") != LLFeatureManager::getInstance()->getVersion()) 1315 || (gSavedSettings.getS32("LastFeatureVersion") != LLFeatureManager::getInstance()->getVersion())
@@ -2486,6 +2490,60 @@ void LLViewerWindow::handleScrollWheel(S32 clicks)
2486 return; 2490 return;
2487} 2491}
2488 2492
2493void LLViewerWindow::handleHScrollWheel(S32 clicks)
2494{
2495 LLView::sMouseHandlerMessage.clear();
2496
2497 gMouseIdleTimer.reset();
2498
2499 // Hide tooltips
2500 if( mToolTip )
2501 {
2502 mToolTip->setVisible( FALSE );
2503 }
2504
2505 LLMouseHandler* mouse_captor = gFocusMgr.getMouseCapture();
2506 if( mouse_captor )
2507 {
2508 S32 local_x;
2509 S32 local_y;
2510 mouse_captor->screenPointToLocal( mCurrentMousePoint.mX, mCurrentMousePoint.mY, &local_x, &local_y );
2511 mouse_captor->handleHScrollWheel(local_x, local_y, clicks);
2512 if (LLView::sDebugMouseHandling)
2513 {
2514 llinfos << "Tilt Wheel handled by captor " << mouse_captor->getName() << llendl;
2515 }
2516 return;
2517 }
2518
2519 LLUICtrl* top_ctrl = gFocusMgr.getTopCtrl();
2520 if (top_ctrl)
2521 {
2522 S32 local_x;
2523 S32 local_y;
2524 top_ctrl->screenPointToLocal( mCurrentMousePoint.mX, mCurrentMousePoint.mY, &local_x, &local_y );
2525 if (top_ctrl->handleHScrollWheel(local_x, local_y, clicks)) return;
2526 }
2527
2528 if (mRootView->handleHScrollWheel(mCurrentMousePoint.mX, mCurrentMousePoint.mY, clicks) )
2529 {
2530 if (LLView::sDebugMouseHandling)
2531 {
2532 llinfos << "Tilt Wheel" << LLView::sMouseHandlerMessage << llendl;
2533 }
2534 return;
2535 }
2536 else if (LLView::sDebugMouseHandling)
2537 {
2538 llinfos << "Tilt Wheel not handled by view" << llendl;
2539 }
2540
2541
2542 gAgent.handleHScrollWheel(clicks);
2543
2544 return;
2545}
2546
2489void LLViewerWindow::moveCursorToCenter() 2547void LLViewerWindow::moveCursorToCenter()
2490{ 2548{
2491 S32 x = mVirtualWindowRect.getWidth() / 2; 2549 S32 x = mVirtualWindowRect.getWidth() / 2;
@@ -4953,6 +5011,16 @@ LLRect LLViewerWindow::getChatConsoleRect()
4953 5011
4954 return console_rect; 5012 return console_rect;
4955} 5013}
5014
5015bool LLViewerWindow::getUIHasFocus()
5016{
5017 return gFocusMgr.getKeyboardFocus() != NULL
5018 || LLMenuGL::getKeyboardMode()
5019 || (gMenuBarView && gMenuBarView->getHighlightedItem() && gMenuBarView->getHighlightedItem()->isActive())
5020 || gFocusMgr.childHasKeyboardFocus(mRootView);
5021}
5022
5023
4956//---------------------------------------------------------------------------- 5024//----------------------------------------------------------------------------
4957 5025
4958 5026
diff --git a/linden/indra/newview/llviewerwindow.h b/linden/indra/newview/llviewerwindow.h
index 53d346b..eab8818 100644
--- a/linden/indra/newview/llviewerwindow.h
+++ b/linden/indra/newview/llviewerwindow.h
@@ -172,6 +172,7 @@ public:
172 /*virtual*/ void handleMenuSelect(LLWindow *window, S32 menu_item); 172 /*virtual*/ void handleMenuSelect(LLWindow *window, S32 menu_item);
173 /*virtual*/ BOOL handlePaint(LLWindow *window, S32 x, S32 y, S32 width, S32 height); 173 /*virtual*/ BOOL handlePaint(LLWindow *window, S32 x, S32 y, S32 width, S32 height);
174 /*virtual*/ void handleScrollWheel(LLWindow *window, S32 clicks); 174 /*virtual*/ void handleScrollWheel(LLWindow *window, S32 clicks);
175 /*virtual*/ void handleHScrollWheel(LLWindow *window, S32 clicks);
175 /*virtual*/ BOOL handleDoubleClick(LLWindow *window, LLCoordGL pos, MASK mask); 176 /*virtual*/ BOOL handleDoubleClick(LLWindow *window, LLCoordGL pos, MASK mask);
176 /*virtual*/ void handleWindowBlock(LLWindow *window); 177 /*virtual*/ void handleWindowBlock(LLWindow *window);
177 /*virtual*/ void handleWindowUnblock(LLWindow *window); 178 /*virtual*/ void handleWindowUnblock(LLWindow *window);
@@ -194,6 +195,9 @@ public:
194 S32 getWindowDisplayHeight() const; 195 S32 getWindowDisplayHeight() const;
195 S32 getWindowDisplayWidth() const; 196 S32 getWindowDisplayWidth() const;
196 197
198 // Returns true when the UI has focus, false when the 3D world does
199 bool getUIHasFocus();
200
197 // Window in scaled pixels (via UI scale), use this for 201 // Window in scaled pixels (via UI scale), use this for
198 // UI elements checking size. 202 // UI elements checking size.
199 const LLRect& getVirtualWindowRect() const { return mVirtualWindowRect; }; 203 const LLRect& getVirtualWindowRect() const { return mVirtualWindowRect; };
@@ -266,6 +270,7 @@ public:
266 270
267 BOOL handleKey(KEY key, MASK mask); 271 BOOL handleKey(KEY key, MASK mask);
268 void handleScrollWheel (S32 clicks); 272 void handleScrollWheel (S32 clicks);
273 void handleHScrollWheel (S32 clicks);
269 274
270 // Hide normal UI when a logon fails, re-show everything when logon is attempted again 275 // Hide normal UI when a logon fails, re-show everything when logon is attempted again
271 void setNormalControlsVisible( BOOL visible ); 276 void setNormalControlsVisible( BOOL visible );
diff --git a/linden/indra/newview/llvlmanager.cpp b/linden/indra/newview/llvlmanager.cpp
index 177093c..7f483ca 100644
--- a/linden/indra/newview/llvlmanager.cpp
+++ b/linden/indra/newview/llvlmanager.cpp
@@ -57,11 +57,13 @@ LLVLManager::~LLVLManager()
57 57
58void LLVLManager::addLayerData(LLVLData *vl_datap, const S32 mesg_size) 58void LLVLManager::addLayerData(LLVLData *vl_datap, const S32 mesg_size)
59{ 59{
60 if (LAND_LAYER_CODE == vl_datap->mType) 60 if (LAND_LAYER_CODE == vl_datap->mType ||
61 AURORA_LAND_LAYER_CODE == vl_datap->mType)
61 { 62 {
62 mLandBits += mesg_size * 8; 63 mLandBits += mesg_size * 8;
63 } 64 }
64 else if (WIND_LAYER_CODE == vl_datap->mType) 65 else if (WIND_LAYER_CODE == vl_datap->mType ||
66 AURORA_WIND_LAYER_CODE == vl_datap->mType)
65 { 67 {
66 mWindBits += mesg_size * 8; 68 mWindBits += mesg_size * 8;
67 } 69 }
@@ -94,12 +96,17 @@ void LLVLManager::unpackData(const S32 num_packets)
94 { 96 {
95 datap->mRegionp->getLand().decompressDCTPatch(bit_pack, &goph, FALSE); 97 datap->mRegionp->getLand().decompressDCTPatch(bit_pack, &goph, FALSE);
96 } 98 }
97 else if (WIND_LAYER_CODE == datap->mType) 99 else if (AURORA_LAND_LAYER_CODE == datap->mType)
100 {
101 datap->mRegionp->getLand().decompressDCTPatch(bit_pack, &goph, TRUE);
102 }
103 else if (WIND_LAYER_CODE == datap->mType ||
104 AURORA_WIND_LAYER_CODE == datap->mType)
98 { 105 {
99 datap->mRegionp->mWind.decompress(bit_pack, &goph); 106 datap->mRegionp->mWind.decompress(bit_pack, &goph);
100
101 } 107 }
102 else if (CLOUD_LAYER_CODE == datap->mType) 108 else if (CLOUD_LAYER_CODE == datap->mType ||
109 AURORA_CLOUD_LAYER_CODE == datap->mType)
103 { 110 {
104 datap->mRegionp->mCloudLayer.decompress(bit_pack, &goph); 111 datap->mRegionp->mCloudLayer.decompress(bit_pack, &goph);
105 } 112 }
diff --git a/linden/indra/newview/llvoavatar.cpp b/linden/indra/newview/llvoavatar.cpp
index 69e239a..49d786d 100644
--- a/linden/indra/newview/llvoavatar.cpp
+++ b/linden/indra/newview/llvoavatar.cpp
@@ -3942,7 +3942,7 @@ void LLVOAvatar::idleUpdateTractorBeam()
3942 msg->nextBlockFast(_PREHASH_ChatData); 3942 msg->nextBlockFast(_PREHASH_ChatData);
3943 msg->addStringFast(_PREHASH_Message, "stop"); 3943 msg->addStringFast(_PREHASH_Message, "stop");
3944 msg->addU8Fast(_PREHASH_Type, CHAT_TYPE_WHISPER); 3944 msg->addU8Fast(_PREHASH_Type, CHAT_TYPE_WHISPER);
3945 msg->addS32("Channel", 9000); 3945 msg->addS32("Channel", gSavedSettings.getS32("ParticleChatChannel"));
3946 3946
3947 gAgent.sendReliableMessage(); 3947 gAgent.sendReliableMessage();
3948 sBeamLastAt = LLVector3d::zero; 3948 sBeamLastAt = LLVector3d::zero;
@@ -3962,53 +3962,58 @@ void LLVOAvatar::idleUpdateTractorBeam()
3962 if (!mBeam.isNull()) 3962 if (!mBeam.isNull())
3963 { 3963 {
3964 LLObjectSelectionHandle selection = LLSelectMgr::getInstance()->getSelection(); 3964 LLObjectSelectionHandle selection = LLSelectMgr::getInstance()->getSelection();
3965 LLViewerObject* obj_sel = LLSelectMgr::getInstance()->getSelection()->getFirstObject();
3965 3966
3966 if (gAgent.mPointAt.notNull()) 3967 if (gAgent.mPointAt.notNull())
3967 { 3968 {
3968 // get point from pointat effect 3969 // get point from pointat effect
3969 mBeam->setPositionGlobal(gAgent.mPointAt->getPointAtPosGlobal()); 3970 mBeam->setPositionGlobal(gAgent.mPointAt->getPointAtPosGlobal());
3970 3971
3972 //lgg crap
3971 if(gSavedSettings.getBOOL("ParticleChat")) 3973 if(gSavedSettings.getBOOL("ParticleChat"))
3972 { 3974 {
3973 if(sPartsNow != TRUE) 3975 if(sPartsNow != TRUE)
3974 { 3976 {
3975 sPartsNow = TRUE; 3977
3976 LLMessageSystem* msg = gMessageSystem; 3978 sPartsNow = TRUE;
3977 msg->newMessageFast(_PREHASH_ChatFromViewer); 3979 if(obj_sel){
3978 msg->nextBlockFast(_PREHASH_AgentData); 3980 LLMessageSystem* msg = gMessageSystem;
3979 msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); 3981 msg->newMessageFast(_PREHASH_ChatFromViewer);
3980 msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); 3982 msg->nextBlockFast(_PREHASH_AgentData);
3981 msg->nextBlockFast(_PREHASH_ChatData); 3983 msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
3982 msg->addStringFast(_PREHASH_Message, "start"); 3984 msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
3983 msg->addU8Fast(_PREHASH_Type, CHAT_TYPE_WHISPER); 3985 msg->nextBlockFast(_PREHASH_ChatData);
3984 msg->addS32("Channel", 9000); 3986 msg->addStringFast(_PREHASH_Message, "start"+obj_sel->getID().asString());
3985 3987 msg->addU8Fast(_PREHASH_Type, CHAT_TYPE_WHISPER);
3986 gAgent.sendReliableMessage(); 3988 msg->addS32("Channel", gSavedSettings.getS32("ParticleChatChannel"));
3989
3990 gAgent.sendReliableMessage();
3991 }
3987 3992
3988 LLViewerStats::getInstance()->incStat(LLViewerStats::ST_CHAT_COUNT); 3993 LLViewerStats::getInstance()->incStat(LLViewerStats::ST_CHAT_COUNT);
3989 } 3994 }
3990 //LLVector3d a = sBeamLastAt-gAgent.mPointAt->getPointAtPosGlobal(); 3995
3991 //if(a.length > 2)
3992 if( (sBeamLastAt-gAgent.mPointAt->getPointAtPosGlobal()).length() > .2) 3996 if( (sBeamLastAt-gAgent.mPointAt->getPointAtPosGlobal()).length() > .2)
3993 //if(sBeamLastAt!=gAgent.mPointAt->getPointAtPosGlobal())
3994 { 3997 {
3995 sBeamLastAt = gAgent.mPointAt->getPointAtPosGlobal(); 3998 sBeamLastAt = gAgent.mPointAt->getPointAtPosGlobal();
3996
3997 LLMessageSystem* msg = gMessageSystem;
3998 msg->newMessageFast(_PREHASH_ChatFromViewer);
3999 msg->nextBlockFast(_PREHASH_AgentData);
4000 msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
4001 msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
4002 msg->nextBlockFast(_PREHASH_ChatData);
4003 msg->addStringFast(_PREHASH_Message, llformat("<%.6f, %.6f, %.6f>",(F32)(sBeamLastAt.mdV[VX]),(F32)(sBeamLastAt.mdV[VY]),(F32)(sBeamLastAt.mdV[VZ])));
4004 msg->addU8Fast(_PREHASH_Type, CHAT_TYPE_WHISPER);
4005 msg->addS32("Channel", 9000); // *TODO: make configurable
4006 3999
4007 gAgent.sendReliableMessage(); 4000 if(obj_sel){
4001 LLMessageSystem* msg = gMessageSystem;
4002 msg->newMessageFast(_PREHASH_ChatFromViewer);
4003 msg->nextBlockFast(_PREHASH_AgentData);
4004 msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
4005 msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
4006 msg->nextBlockFast(_PREHASH_ChatData);
4007 msg->addStringFast(_PREHASH_Message, "start"+obj_sel->getID().asString());
4008 msg->addU8Fast(_PREHASH_Type, CHAT_TYPE_WHISPER);
4009 msg->addS32("Channel", gSavedSettings.getS32("ParticleChatChannel"));
4010
4011 gAgent.sendReliableMessage();
4012 }
4008 } 4013 }
4009 4014
4010 } 4015 }
4011 4016
4012 mBeam->triggerLocal(); 4017 mBeam->triggerLocal();
4013 } 4018 }
4014 else if (selection->getFirstRootObject() && 4019 else if (selection->getFirstRootObject() &&
@@ -4047,6 +4052,8 @@ void LLVOAvatar::idleUpdateTractorBeam()
4047 } 4052 }
4048 } 4053 }
4049} 4054}
4055//</edit>
4056
4050 4057
4051void LLVOAvatar::idleUpdateBelowWater() 4058void LLVOAvatar::idleUpdateBelowWater()
4052{ 4059{
diff --git a/linden/indra/newview/llvoiceclient.cpp b/linden/indra/newview/llvoiceclient.cpp
index 3800b4d..da7b840 100644
--- a/linden/indra/newview/llvoiceclient.cpp
+++ b/linden/indra/newview/llvoiceclient.cpp
@@ -62,6 +62,7 @@
62#include "llfirstuse.h" 62#include "llfirstuse.h"
63#include "llviewerwindow.h" 63#include "llviewerwindow.h"
64#include "llviewercamera.h" 64#include "llviewercamera.h"
65#include "hippolimits.h"
65 66
66#include "llfloaterfriends.h" //VIVOX, inorder to refresh communicate panel 67#include "llfloaterfriends.h" //VIVOX, inorder to refresh communicate panel
67#include "llfloaterchat.h" // for LLFloaterChat::addChat() 68#include "llfloaterchat.h" // for LLFloaterChat::addChat()
@@ -1524,15 +1525,22 @@ void LLVoiceClient::setState(state inState)
1524 1525
1525 mState = inState; 1526 mState = inState;
1526} 1527}
1528void LLVoiceClient::close()
1529{
1530 setState(stateDisableCleanup);
1531}
1532
1533void LLVoiceClient::start()
1534{
1535 setState(stateStart);
1536}
1527 1537
1528void LLVoiceClient::stateMachine() 1538void LLVoiceClient::stateMachine()
1529{ 1539{
1530 if(gDisconnected) 1540
1531 { 1541 // Disable voice as long as the viewer is disconnected from the sim (login/relog)
1532 // The viewer has been disconnected from the sim. Disable voice. 1542 setVoiceEnabled(!gDisconnected);
1533 setVoiceEnabled(false); 1543
1534 }
1535
1536 if(mVoiceEnabled) 1544 if(mVoiceEnabled)
1537 { 1545 {
1538 updatePosition(); 1546 updatePosition();
@@ -1549,7 +1557,7 @@ void LLVoiceClient::stateMachine()
1549 if(!mConnected) 1557 if(!mConnected)
1550 { 1558 {
1551 // if voice was turned off after the daemon was launched but before we could connect to it, we may need to issue a kill. 1559 // if voice was turned off after the daemon was launched but before we could connect to it, we may need to issue a kill.
1552 LL_INFOS("Voice") << "Disabling voice before connection to daemon, terminating." << LL_ENDL; 1560 LL_WARNS("Voice") << "Disabling voice before connection to daemon, terminating." << LL_ENDL;
1553 killGateway(); 1561 killGateway();
1554 } 1562 }
1555 1563
@@ -1654,12 +1662,12 @@ void LLVoiceClient::stateMachine()
1654 //std::string exe_path = gDirUtilp->getAppRODataDir(); 1662 //std::string exe_path = gDirUtilp->getAppRODataDir();
1655 std::string exe_path = gDirUtilp->getExecutableDir(); 1663 std::string exe_path = gDirUtilp->getExecutableDir();
1656 exe_path += gDirUtilp->getDirDelimiter(); 1664 exe_path += gDirUtilp->getDirDelimiter();
1665#if LL_DARWIN
1666 exe_path += "../Resources/";
1667#endif
1668 exe_path += gSavedSettings.getString("VoiceModule");
1657#if LL_WINDOWS 1669#if LL_WINDOWS
1658 exe_path += "SLVoice.exe"; 1670 exe_path += ".exe";
1659#elif LL_DARWIN
1660 exe_path += "../Resources/SLVoice";
1661#else
1662 exe_path += "SLVoice";
1663#endif 1671#endif
1664 // See if the vivox executable exists 1672 // See if the vivox executable exists
1665 llstat s; 1673 llstat s;
@@ -1687,7 +1695,8 @@ void LLVoiceClient::stateMachine()
1687 STARTUPINFOA sinfo; 1695 STARTUPINFOA sinfo;
1688 memset(&sinfo, 0, sizeof(sinfo)); 1696 memset(&sinfo, 0, sizeof(sinfo));
1689 std::string exe_dir = gDirUtilp->getAppRODataDir(); 1697 std::string exe_dir = gDirUtilp->getAppRODataDir();
1690 cmd = "SLVoice.exe"; 1698 cmd = gSavedSettings.getString("VoiceModule");
1699 cmd += ".exe";
1691 cmd += args; 1700 cmd += args;
1692 1701
1693 // So retarded. Windows requires that the second parameter to CreateProcessA be a writable (non-const) string... 1702 // So retarded. Windows requires that the second parameter to CreateProcessA be a writable (non-const) string...
@@ -1753,7 +1762,7 @@ void LLVoiceClient::stateMachine()
1753 } 1762 }
1754 else 1763 else
1755 { 1764 {
1756 LL_INFOS("Voice") << exe_path << " not found." << LL_ENDL; 1765 LL_WARNS("Voice") << exe_path << " not found." << LL_ENDL;
1757 mVoiceEnabled = false; 1766 mVoiceEnabled = false;
1758 } 1767 }
1759 } 1768 }
@@ -3772,7 +3781,7 @@ void LLVoiceClient::loginResponse(int statusCode, std::string &statusString, std
3772 if ( statusCode == 401 ) 3781 if ( statusCode == 401 )
3773 { 3782 {
3774 // Login failure which is probably caused by the delay after a user's password being updated. 3783 // Login failure which is probably caused by the delay after a user's password being updated.
3775 LL_INFOS("Voice") << "Account.Login response failure (" << statusCode << "): " << statusString << LL_ENDL; 3784 LL_WARNS("Voice") << "Account.Login response failure (" << statusCode << "): " << statusString << LL_ENDL;
3776 setState(stateLoginRetry); 3785 setState(stateLoginRetry);
3777 } 3786 }
3778 else if(statusCode != 0) 3787 else if(statusCode != 0)
@@ -3950,7 +3959,7 @@ void LLVoiceClient::sessionAddedEvent(
3950 } 3959 }
3951 else 3960 else
3952 { 3961 {
3953 LL_INFOS("Voice") << "Could not generate caller id from uri, using hash of uri " << session->mSIPURI << LL_ENDL; 3962 LL_WARNS("Voice") << "Could not generate caller id from uri, using hash of uri " << session->mSIPURI << LL_ENDL;
3954 setUUIDFromStringHash(session->mCallerID, session->mSIPURI); 3963 setUUIDFromStringHash(session->mCallerID, session->mSIPURI);
3955 session->mSynthesizedCallerID = true; 3964 session->mSynthesizedCallerID = true;
3956 3965
@@ -4468,7 +4477,7 @@ void LLVoiceClient::participantUpdatedEvent(
4468 } 4477 }
4469 else 4478 else
4470 { 4479 {
4471 LL_INFOS("Voice") << "unknown session " << sessionHandle << LL_ENDL; 4480 LL_WARNS("Voice") << "unknown session " << sessionHandle << LL_ENDL;
4472 } 4481 }
4473} 4482}
4474 4483
@@ -5062,7 +5071,7 @@ void LLVoiceClient::parcelChanged()
5062 else 5071 else
5063 { 5072 {
5064 // The transition to stateNoChannel needs to kick this off again. 5073 // The transition to stateNoChannel needs to kick this off again.
5065 LL_INFOS("Voice") << "not logged in yet, deferring" << LL_ENDL; 5074 LL_WARNS("Voice") << "not logged in yet, deferring" << LL_ENDL;
5066 } 5075 }
5067} 5076}
5068 5077
diff --git a/linden/indra/newview/llvoiceclient.h b/linden/indra/newview/llvoiceclient.h
index cfc336b..9ef3be9 100644
--- a/linden/indra/newview/llvoiceclient.h
+++ b/linden/indra/newview/llvoiceclient.h
@@ -516,6 +516,9 @@ static void updatePosition(void);
516 // Currently this will be false only for PSTN P2P calls. 516 // Currently this will be false only for PSTN P2P calls.
517 // NOTE: this will return true if the session can't be found. 517 // NOTE: this will return true if the session can't be found.
518 bool isSessionTextIMPossible(const LLUUID &session_id); 518 bool isSessionTextIMPossible(const LLUUID &session_id);
519
520 void close();
521 void start();
519 522
520 private: 523 private:
521 524
diff --git a/linden/indra/newview/llvovolume.cpp b/linden/indra/newview/llvovolume.cpp
index 73ff860..7aaf845 100644
--- a/linden/indra/newview/llvovolume.cpp
+++ b/linden/indra/newview/llvovolume.cpp
@@ -89,12 +89,12 @@ LLVOVolume::LLVOVolume(const LLUUID &id, const LLPCode pcode, LLViewerRegion *re
89 mRelativeXformInvTrans.setIdentity(); 89 mRelativeXformInvTrans.setIdentity();
90 90
91 mLOD = MIN_LOD; 91 mLOD = MIN_LOD;
92 mSculptLevel = -2;
93 mTextureAnimp = NULL; 92 mTextureAnimp = NULL;
94 mVObjRadius = LLVector3(1,1,0.5f).length(); 93 mVObjRadius = LLVector3(1,1,0.5f).length();
95 mNumFaces = 0; 94 mNumFaces = 0;
96 mLODChanged = FALSE; 95 mLODChanged = FALSE;
97 mSculptChanged = FALSE; 96 mSculptChanged = FALSE;
97 mIndexInTex = 0;
98} 98}
99 99
100LLVOVolume::~LLVOVolume() 100LLVOVolume::~LLVOVolume()
@@ -502,9 +502,8 @@ void LLVOVolume::updateTextureVirtualSize()
502 502
503 if (isSculpted()) 503 if (isSculpted())
504 { 504 {
505 LLSculptParams *sculpt_params = (LLSculptParams *)getParameterEntry(LLNetworkData::PARAMS_SCULPT); 505 updateSculptTexture();
506 LLUUID id = sculpt_params->getSculptTexture(); 506
507 mSculptTexture = gImageList.getImage(id);
508 if (mSculptTexture.notNull()) 507 if (mSculptTexture.notNull())
509 { 508 {
510 mSculptTexture->setBoostLevel(llmax((S32)mSculptTexture->getBoostLevel(), 509 mSculptTexture->setBoostLevel(llmax((S32)mSculptTexture->getBoostLevel(),
@@ -527,8 +526,8 @@ void LLVOVolume::updateTextureVirtualSize()
527 } 526 }
528 } 527 }
529 528
530 S32 texture_discard = mSculptTexture->getCachedRawImageLevel(); //try to match the texture 529 S32 texture_discard = mSculptTexture->getDiscardLevel(); //try to match the texture
531 S32 current_discard = mSculptLevel; 530 S32 current_discard = getVolume() ? getVolume()->getSculptLevel() : -2 ;
532 531
533 if (texture_discard >= 0 && //texture has some data available 532 if (texture_discard >= 0 && //texture has some data available
534 (texture_discard < current_discard || //texture has more data than last rebuild 533 (texture_discard < current_discard || //texture has more data than last rebuild
@@ -682,25 +681,52 @@ BOOL LLVOVolume::setVolume(const LLVolumeParams &volume_params, const S32 detail
682 mVolumeImpl->onSetVolume(volume_params, detail); 681 mVolumeImpl->onSetVolume(volume_params, detail);
683 } 682 }
684 683
684 updateSculptTexture();
685
685 if (isSculpted()) 686 if (isSculpted())
686 { 687 {
687 mSculptTexture = gImageList.getImage(volume_params.getSculptID());
688 if (mSculptTexture.notNull()) 688 if (mSculptTexture.notNull())
689 { 689 {
690 sculpt(); 690 sculpt();
691 mSculptLevel = getVolume()->getSculptLevel();
692 } 691 }
693 } 692 }
694 else
695 {
696 mSculptTexture = NULL;
697 }
698 693
699 return TRUE; 694 return TRUE;
700 } 695 }
701 return FALSE; 696 return FALSE;
702} 697}
703 698
699void LLVOVolume::updateSculptTexture()
700{
701 LLPointer<LLViewerImage> old_sculpt = mSculptTexture;
702
703 if (isSculpted())
704 {
705 LLSculptParams *sculpt_params = (LLSculptParams *)getParameterEntry(LLNetworkData::PARAMS_SCULPT);
706 LLUUID id = sculpt_params->getSculptTexture();
707 if (id.notNull())
708 {
709 mSculptTexture = gImageList.getImage(id);
710 }
711 }
712 else
713 {
714 mSculptTexture = NULL;
715 }
716
717 if (mSculptTexture != old_sculpt)
718 {
719 if (old_sculpt.notNull())
720 {
721 old_sculpt->removeVolume(this);
722 }
723 if (mSculptTexture.notNull())
724 {
725 mSculptTexture->addVolume(this);
726 }
727 }
728}
729
704// sculpt replaces generate() for sculpted surfaces 730// sculpt replaces generate() for sculpted surfaces
705void LLVOVolume::sculpt() 731void LLVOVolume::sculpt()
706{ 732{
@@ -711,7 +737,7 @@ void LLVOVolume::sculpt()
711 S8 sculpt_components = 0; 737 S8 sculpt_components = 0;
712 const U8* sculpt_data = NULL; 738 const U8* sculpt_data = NULL;
713 739
714 S32 discard_level = mSculptTexture->getCachedRawImageLevel() ; 740 S32 discard_level = mSculptTexture->getDiscardLevel();
715 LLImageRaw* raw_image = mSculptTexture->getCachedRawImage() ; 741 LLImageRaw* raw_image = mSculptTexture->getCachedRawImage() ;
716 742
717 S32 max_discard = mSculptTexture->getMaxDiscardLevel(); 743 S32 max_discard = mSculptTexture->getMaxDiscardLevel();
@@ -754,6 +780,16 @@ void LLVOVolume::sculpt()
754 sculpt_data = raw_image->getData(); 780 sculpt_data = raw_image->getData();
755 } 781 }
756 getVolume()->sculpt(sculpt_width, sculpt_height, sculpt_components, sculpt_data, discard_level); 782 getVolume()->sculpt(sculpt_width, sculpt_height, sculpt_components, sculpt_data, discard_level);
783
784 //notify rebuild any other VOVolumes that reference this sculpty volume
785 for (S32 i = 0; i < mSculptTexture->getNumVolumes(); ++i)
786 {
787 LLVOVolume* volume = (*(mSculptTexture->getVolumeList()))[i];
788 if (volume && volume != this && volume->getVolume() == getVolume())
789 {
790 gPipeline.markRebuild(volume->mDrawable, LLDrawable::REBUILD_GEOMETRY, FALSE);
791 }
792 }
757 } 793 }
758} 794}
759 795
diff --git a/linden/indra/newview/llvovolume.h b/linden/indra/newview/llvovolume.h
index a78aa37..7c8a68d 100644
--- a/linden/indra/newview/llvovolume.h
+++ b/linden/indra/newview/llvovolume.h
@@ -169,8 +169,10 @@ public:
169 /*virtual*/ BOOL setMaterial(const U8 material); 169 /*virtual*/ BOOL setMaterial(const U8 material);
170 170
171 void setTexture(const S32 face); 171 void setTexture(const S32 face);
172 172 S32 getIndexInTex() const {return mIndexInTex ;}
173 /*virtual*/ BOOL setVolume(const LLVolumeParams &volume_params, const S32 detail, bool unique_volume = false); 173 /*virtual*/ BOOL setVolume(const LLVolumeParams &volume_params, const S32 detail, bool unique_volume = false);
174 void updateSculptTexture();
175 void setIndexInTex(S32 index) { mIndexInTex = index ;}
174 void sculpt(); 176 void sculpt();
175 void updateRelativeXform(); 177 void updateRelativeXform();
176 /*virtual*/ BOOL updateGeometry(LLDrawable *drawable); 178 /*virtual*/ BOOL updateGeometry(LLDrawable *drawable);
@@ -231,7 +233,6 @@ private:
231 LLFrameTimer mTextureUpdateTimer; 233 LLFrameTimer mTextureUpdateTimer;
232 S32 mLOD; 234 S32 mLOD;
233 BOOL mLODChanged; 235 BOOL mLODChanged;
234 S32 mSculptLevel;
235 BOOL mSculptChanged; 236 BOOL mSculptChanged;
236 LLMatrix4 mRelativeXform; 237 LLMatrix4 mRelativeXform;
237 LLMatrix3 mRelativeXformInvTrans; 238 LLMatrix3 mRelativeXformInvTrans;
@@ -239,6 +240,7 @@ private:
239 F32 mVObjRadius; 240 F32 mVObjRadius;
240 LLVolumeInterface *mVolumeImpl; 241 LLVolumeInterface *mVolumeImpl;
241 LLPointer<LLViewerImage> mSculptTexture; 242 LLPointer<LLViewerImage> mSculptTexture;
243 S32 mIndexInTex;
242 244
243 // statics 245 // statics
244public: 246public:
diff --git a/linden/indra/newview/llvowater.cpp b/linden/indra/newview/llvowater.cpp
index c66295a..eb74520 100644
--- a/linden/indra/newview/llvowater.cpp
+++ b/linden/indra/newview/llvowater.cpp
@@ -74,7 +74,7 @@ LLVOWater::LLVOWater(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regi
74{ 74{
75 // Terrain must draw during selection passes so it can block objects behind it. 75 // Terrain must draw during selection passes so it can block objects behind it.
76 mbCanSelect = FALSE; 76 mbCanSelect = FALSE;
77 setScale(LLVector3(256.f, 256.f, 0.f)); // Hack for setting scale for bounding boxes/visibility. 77 setScale(LLVector3(mRegionp->getWidth(), mRegionp->getWidth(), 0.f)); // Hack for setting scale for bounding boxes/visibility.
78 78
79 mUseTexture = TRUE; 79 mUseTexture = TRUE;
80 mIsEdgePatch = FALSE; 80 mIsEdgePatch = FALSE;
diff --git a/linden/indra/newview/llwind.cpp b/linden/indra/newview/llwind.cpp
index bdd31dc..ba35435 100644
--- a/linden/indra/newview/llwind.cpp
+++ b/linden/indra/newview/llwind.cpp
@@ -120,12 +120,12 @@ void LLWind::decompress(LLBitPack &bitpack, LLGroupHeader *group_headerp)
120 set_group_of_patch_header(group_headerp); 120 set_group_of_patch_header(group_headerp);
121 121
122 // X component 122 // X component
123 decode_patch_header(bitpack, &patch_header); 123 decode_patch_header(bitpack, &patch_header, FALSE);
124 decode_patch(bitpack, buffer); 124 decode_patch(bitpack, buffer);
125 decompress_patch(mVelX, buffer, &patch_header); 125 decompress_patch(mVelX, buffer, &patch_header);
126 126
127 // Y component 127 // Y component
128 decode_patch_header(bitpack, &patch_header); 128 decode_patch_header(bitpack, &patch_header, FALSE);
129 decode_patch(bitpack, buffer); 129 decode_patch(bitpack, buffer);
130 decompress_patch(mVelY, buffer, &patch_header); 130 decompress_patch(mVelY, buffer, &patch_header);
131 131
diff --git a/linden/indra/newview/llworld.cpp b/linden/indra/newview/llworld.cpp
index 7866bf8..13fc91c 100644
--- a/linden/indra/newview/llworld.cpp
+++ b/linden/indra/newview/llworld.cpp
@@ -80,12 +80,12 @@ const S32 WORLD_PATCH_SIZE = 16;
80 80
81extern LLColor4U MAX_WATER_COLOR; 81extern LLColor4U MAX_WATER_COLOR;
82 82
83const U32 LLWorld::mWidth = 256; 83U32 LLWorld::mWidth = 256;
84 84
85// meters/point, therefore mWidth * mScale = meters per edge 85// meters/point, therefore mWidth * mScale = meters per edge
86const F32 LLWorld::mScale = 1.f; 86const F32 LLWorld::mScale = 1.f;
87 87
88const F32 LLWorld::mWidthInMeters = mWidth * mScale; 88F32 LLWorld::mWidthInMeters = mWidth * mScale;
89 89
90// 90//
91// Functions 91// Functions
@@ -140,7 +140,7 @@ F32 LLWorld::getRegionMaxHeight() const
140 return gHippoLimits->getMaxHeight(); 140 return gHippoLimits->getMaxHeight();
141} 141}
142 142
143LLViewerRegion* LLWorld::addRegion(const U64 &region_handle, const LLHost &host) 143LLViewerRegion* LLWorld::addRegion(const U64 &region_handle, const LLHost &host, const U32 &region_size_x, const U32 &region_size_y)
144{ 144{
145 LLMemType mt(LLMemType::MTYPE_REGIONS); 145 LLMemType mt(LLMemType::MTYPE_REGIONS);
146 146
@@ -172,9 +172,11 @@ LLViewerRegion* LLWorld::addRegion(const U64 &region_handle, const LLHost &host)
172 172
173 U32 iindex = 0; 173 U32 iindex = 0;
174 U32 jindex = 0; 174 U32 jindex = 0;
175 mWidth = region_size_x;
176 mWidthInMeters = mWidth * mScale;
175 from_region_handle(region_handle, &iindex, &jindex); 177 from_region_handle(region_handle, &iindex, &jindex);
176 S32 x = (S32)(iindex/mWidth); 178 S32 x = (S32)(iindex/256);
177 S32 y = (S32)(jindex/mWidth); 179 S32 y = (S32)(jindex/256);
178 llinfos << "Adding new region (" << x << ":" << y << ")" << llendl; 180 llinfos << "Adding new region (" << x << ":" << y << ")" << llendl;
179 llinfos << "Host: " << host << llendl; 181 llinfos << "Host: " << host << llendl;
180 182
@@ -902,7 +904,7 @@ void LLWorld::updateWaterObjects()
902 } 904 }
903 905
904 // Region width in meters. 906 // Region width in meters.
905 S32 const rwidth = (S32)REGION_WIDTH_U32; 907 S32 const rwidth = (S32)getRegionWidthInMeters();
906 908
907 // The distance we might see into the void 909 // The distance we might see into the void
908 // when standing on the edge of a region, in meters. 910 // when standing on the edge of a region, in meters.
@@ -1256,9 +1258,20 @@ void process_enable_simulator(LLMessageSystem *msg, void **user_data)
1256 // which simulator should we modify? 1258 // which simulator should we modify?
1257 LLHost sim(ip_u32, port); 1259 LLHost sim(ip_u32, port);
1258 1260
1261 U32 region_size_x = 256;
1262 msg->getU32Fast(_PREHASH_SimulatorInfo, _PREHASH_RegionSizeX, region_size_x);
1263 U32 region_size_y = 256;
1264 msg->getU32Fast(_PREHASH_SimulatorInfo, _PREHASH_RegionSizeY, region_size_y);
1265
1266 if (region_size_y == 0 || region_size_x == 0)
1267 {
1268 region_size_x = 256;
1269 region_size_y = 256;
1270 }
1271
1259 // Viewer trusts the simulator. 1272 // Viewer trusts the simulator.
1260 msg->enableCircuit(sim, TRUE); 1273 msg->enableCircuit(sim, TRUE);
1261 LLWorld::getInstance()->addRegion(handle, sim); 1274 LLWorld::getInstance()->addRegion(handle, sim, region_size_x, region_size_y);
1262 1275
1263 // give the simulator a message it can use to get ip and port 1276 // give the simulator a message it can use to get ip and port
1264 llinfos << "simulator_enable() Enabling " << sim << " with code " << msg->getOurCircuitCode() << llendl; 1277 llinfos << "simulator_enable() Enabling " << sim << " with code " << msg->getOurCircuitCode() << llendl;
diff --git a/linden/indra/newview/llworld.h b/linden/indra/newview/llworld.h
index 964729d..5dbef6d 100644
--- a/linden/indra/newview/llworld.h
+++ b/linden/indra/newview/llworld.h
@@ -71,7 +71,7 @@ public:
71 LLWorld(); 71 LLWorld();
72 void destroyClass(); 72 void destroyClass();
73 73
74 LLViewerRegion* addRegion(const U64 &region_handle, const LLHost &host); 74 LLViewerRegion* addRegion(const U64 &region_handle, const LLHost &host, const U32 &region_size_x, const U32 &region_size_y);
75 // safe to call if already present, does the "right thing" if 75 // safe to call if already present, does the "right thing" if
76 // hosts are same, or if hosts are different, etc... 76 // hosts are same, or if hosts are different, etc...
77 void removeRegion(const LLHost &host); 77 void removeRegion(const LLHost &host);
@@ -171,12 +171,12 @@ private:
171 region_list_t mCulledRegionList; 171 region_list_t mCulledRegionList;
172 172
173 // Number of points on edge 173 // Number of points on edge
174 static const U32 mWidth; 174 static U32 mWidth;
175 175
176 // meters/point, therefore mWidth * mScale = meters per edge 176 // meters/point, therefore mWidth * mScale = meters per edge
177 static const F32 mScale; 177 static const F32 mScale;
178 178
179 static const F32 mWidthInMeters; 179 static F32 mWidthInMeters;
180 180
181 F32 mLandFarClip; // Far clip distance for land. 181 F32 mLandFarClip; // Far clip distance for land.
182 LLPatchVertexArray mLandPatch; 182 LLPatchVertexArray mLandPatch;
diff --git a/linden/indra/newview/llworldmap.cpp b/linden/indra/newview/llworldmap.cpp
index 3ada36f..bd3996d 100644
--- a/linden/indra/newview/llworldmap.cpp
+++ b/linden/indra/newview/llworldmap.cpp
@@ -237,15 +237,26 @@ LLSimInfo* LLWorldMap::simInfoFromPosGlobal(const LLVector3d& pos_global)
237 return simInfoFromHandle(handle); 237 return simInfoFromHandle(handle);
238} 238}
239 239
240LLSimInfo* LLWorldMap::simInfoFromHandle(const U64 handle) 240LLSimInfo* LLWorldMap::simInfoFromHandle(const U64 findhandle)
241{ 241{
242 sim_info_map_t::iterator it = mSimInfoMap.find(handle); 242 std::map<U64, LLSimInfo*>::const_iterator it;
243 if (it != mSimInfoMap.end()) 243 for (it = LLWorldMap::getInstance()->mSimInfoMap.begin(); it != LLWorldMap::getInstance()->mSimInfoMap.end(); ++it)
244 { 244 {
245 LLSimInfo* sim_info = (*it).second; 245 const U64 handle = (*it).first;
246 if (sim_info) 246 LLSimInfo* info = (*it).second;
247 if(handle == findhandle)
248 {
249 return info;
250 }
251 U32 x = 0, y = 0;
252 from_region_handle(findhandle, &x, &y);
253 U32 checkRegionX, checkRegionY;
254 from_region_handle(handle, &checkRegionX, &checkRegionY);
255
256 if(x > checkRegionX && x < (checkRegionX + info->msizeX) &&
257 y > checkRegionY && y < (checkRegionY + info->msizeY))
247 { 258 {
248 return sim_info; 259 return info;
249 } 260 }
250 } 261 }
251 return NULL; 262 return NULL;
diff --git a/linden/indra/newview/llworldmap.h b/linden/indra/newview/llworldmap.h
index b7089f3..56b32a2 100644
--- a/linden/indra/newview/llworldmap.h
+++ b/linden/indra/newview/llworldmap.h
@@ -81,6 +81,8 @@ public:
81 81
82public: 82public:
83 U64 mHandle; 83 U64 mHandle;
84 S32 msizeX;
85 S32 msizeY;
84 std::string mName; 86 std::string mName;
85 87
86 F64 mAgentsUpdateTime; 88 F64 mAgentsUpdateTime;
diff --git a/linden/indra/newview/llworldmapview.cpp b/linden/indra/newview/llworldmapview.cpp
index 443ee74..8d9ed1b 100644
--- a/linden/indra/newview/llworldmapview.cpp
+++ b/linden/indra/newview/llworldmapview.cpp
@@ -471,8 +471,8 @@ void LLWorldMapView::draw()
471 // When the view isn't panned, 0,0 = center of rectangle 471 // When the view isn't panned, 0,0 = center of rectangle
472 F32 bottom = sPanY + half_height + relative_y; 472 F32 bottom = sPanY + half_height + relative_y;
473 F32 left = sPanX + half_width + relative_x; 473 F32 left = sPanX + half_width + relative_x;
474 F32 top = bottom + sMapScale ; 474 F32 top = bottom+ (sMapScale * info->msizeY / REGION_WIDTH_METERS);
475 F32 right = left + sMapScale ; 475 F32 right = left + (sMapScale * info->msizeY / REGION_WIDTH_METERS);
476 476
477 // Switch to world map texture (if available for this region) if either: 477 // Switch to world map texture (if available for this region) if either:
478 // 1. Tiles are zoomed out small enough, or 478 // 1. Tiles are zoomed out small enough, or
@@ -567,17 +567,21 @@ void LLWorldMapView::draw()
567 center_global.mdV[VX] += 128.0; 567 center_global.mdV[VX] += 128.0;
568 center_global.mdV[VY] += 128.0; 568 center_global.mdV[VY] += 128.0;
569 569
570 S32 draw_size = llround(sMapScale); 570 S32 x_draw_size = llround(sMapScale);
571 S32 y_draw_size = llround(sMapScale);
572 x_draw_size *= info->msizeX / REGION_WIDTH_METERS;
573 y_draw_size *= info->msizeY / REGION_WIDTH_METERS;
574
571 if (simimage != NULL) 575 if (simimage != NULL)
572 { 576 {
573 simimage->setBoostLevel(LLViewerImageBoostLevel::BOOST_MAP); 577 simimage->setBoostLevel(LLViewerImageBoostLevel::BOOST_MAP);
574 simimage->setKnownDrawSize(llround(draw_size * LLUI::sGLScaleFactor.mV[VX]), llround(draw_size * LLUI::sGLScaleFactor.mV[VY])); 578 simimage->setKnownDrawSize(llround(x_draw_size * LLUI::sGLScaleFactor.mV[VX]), llround(y_draw_size * LLUI::sGLScaleFactor.mV[VY]));
575 } 579 }
576 580
577 if (overlayimage != NULL) 581 if (overlayimage != NULL)
578 { 582 {
579 overlayimage->setBoostLevel(LLViewerImageBoostLevel::BOOST_MAP); 583 overlayimage->setBoostLevel(LLViewerImageBoostLevel::BOOST_MAP);
580 overlayimage->setKnownDrawSize(llround(draw_size * LLUI::sGLScaleFactor.mV[VX]), llround(draw_size * LLUI::sGLScaleFactor.mV[VY])); 584 overlayimage->setKnownDrawSize(llround(x_draw_size * LLUI::sGLScaleFactor.mV[VX]), llround(y_draw_size * LLUI::sGLScaleFactor.mV[VY]));
581 } 585 }
582 586
583// LLTextureView::addDebugImage(simimage); 587// LLTextureView::addDebugImage(simimage);
diff --git a/linden/indra/newview/pipeline.cpp b/linden/indra/newview/pipeline.cpp
index 9da0da0..5458af5 100644
--- a/linden/indra/newview/pipeline.cpp
+++ b/linden/indra/newview/pipeline.cpp
@@ -157,6 +157,7 @@ std::string gPoolNames[] =
157 "POOL_GROUND", 157 "POOL_GROUND",
158 "POOL_INVISIBLE", 158 "POOL_INVISIBLE",
159 "POOL_AVATAR", 159 "POOL_AVATAR",
160 "POOL_VOIDWATER",
160 "POOL_WATER", 161 "POOL_WATER",
161 "POOL_GRASS", 162 "POOL_GRASS",
162 "POOL_FULLBRIGHT", 163 "POOL_FULLBRIGHT",
@@ -4933,7 +4934,7 @@ void LLPipeline::setUseVBO(BOOL use_vbo)
4933 } 4934 }
4934 4935
4935 resetVertexBuffers(); 4936 resetVertexBuffers();
4936 LLVertexBuffer::initClass(use_vbo); 4937 LLVertexBuffer::initClass(use_vbo && gGLManager.mHasVertexBufferObject);
4937 } 4938 }
4938} 4939}
4939 4940
diff --git a/linden/indra/newview/skins/default/html/en-us/loading-error/index.html b/linden/indra/newview/skins/default/html/en-us/loading-error/index.html
index 9898149..2f6ccf7 100644
--- a/linden/indra/newview/skins/default/html/en-us/loading-error/index.html
+++ b/linden/indra/newview/skins/default/html/en-us/loading-error/index.html
@@ -1,14 +1,14 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 1
2 DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml"> 3<html xmlns="http://www.w3.org/1999/xhtml">
3<head> 4<head>
4<title>Unable to Connect</title> 5<title>Unable to Connect</title><style>
5<style> 6body {background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:85%;color:#e9f1f8;width:100%;padding:0px;margin:0px;}
6body {background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;width:100%;padding:0px;margin:0px;}
7a {color:#93a9d5;} 7a {color:#93a9d5;}
8a:active {color:#50607C;text-decoration:underline;} 8a:active {color:#50607C;text-decoration:underline;}
9a:hover {color:#ff7900;text-decoration:underline;} 9a:hover {color:#ff7900;text-decoration:underline;}
10#infobox{position:absolute;top:40%;left:50%;z-index:1;padding:0;width:592px;margin-left:-296px;margin-top:-150px;text-align:center;font-size:1.2em; color:#ccc;} 10#infobox{position:absolute;top:40%;left:50%;z-index:1;padding:0;width:592px;margin-left:-296px;margin-top:-80px;text-align:left;font-size:1.2em; color:#ccc;}
11#infobox #submitbtn {padding:15px 3px 5px 15px;height:28px;width:127px;margin-left:244px;} 11#infobox #submitbtn {height:28px;width:127px;}
12#infobox #submitbtn input {text-transform:capitalize;color:#fff;font-size:1.0em;height:28px;width:127px;border:none;font-weight:normal;background:url(../../btn_purplepill_bg.png) bottom left no-repeat;vertical-align:text-bottom;font-weight:bold;} 12#infobox #submitbtn input {text-transform:capitalize;color:#fff;font-size:1.0em;height:28px;width:127px;border:none;font-weight:normal;background:url(../../btn_purplepill_bg.png) bottom left no-repeat;vertical-align:text-bottom;font-weight:bold;}
13#infobox #submitbtn input:hover.input_over, #login_box #submitbtn input:hover.input_off {color:#fff;border:none;background:url(../../btn_purplepill_bg.png) bottom right no-repeat;} 13#infobox #submitbtn input:hover.input_over, #login_box #submitbtn input:hover.input_off {color:#fff;border:none;background:url(../../btn_purplepill_bg.png) bottom right no-repeat;}
14#infobox #submitbtn input:active.input_over {color:#fff;border:none;background:url(../../btn_purplepill_bg.png) top left no-repeat;} 14#infobox #submitbtn input:active.input_over {color:#fff;border:none;background:url(../../btn_purplepill_bg.png) top left no-repeat;}
@@ -17,16 +17,34 @@ a:hover {color:#ff7900;text-decoration:underline;}
17</head> 17</head>
18<body> 18<body>
19<div id="infobox"> 19<div id="infobox">
20 <img src="../../unabletoconnect.png"><br/> 20 <table>
21 <p> 21
22 This viewer can't establish a connection to the login server. 22 <tbody style="height: 100px; overflow: scroll">
23 </p> 23 <tr>
24 <p> 24 This viewer can't establish a connection to the login screen of the grid you have chosen.
25 Please check your internet connection. If your computer or network is protected by a firewall or proxy, make sure that this viewer is permitted to access the network. 25 </tr>
26 </p> 26 <tr>
27 <div id="submitbtn"> 27 <td>
28 <input class="input_over" type="submit" value="Try Again" onclick="document.location='secondlife:///app/login_refresh'; this.className='pressed';" onmouseover="this.className='input_over';" onmouseout="this.className='input_off';" /> 28 <img src="../../unabletoconnect.png"><br/>
29 </div> 29
30 </div> 30 <div id="submitbtn">
31 <input class="input_over" type="submit" value="Try Again" onclick="document.location='secondlife:///app/login_refresh'; this.className='pressed';" onmouseover="this.className='input_over';" onmouseout="this.className='input_off';" />
32 </div>
33
34 <td>
35 If you are used to see a loginscreen for that grid please
36 <ul>
37 <li>for OpenSimulator grids: check if the loginuri of that grid is still valid.</li>
38 <li>for OpenSimulator and Second Life: check the grid status page of the grid, and</li>
39 <li>if the grid status page of the grid says online check your internet connection.
40 If your computer or network is protected by a firewall or proxy, make sure that
41 meta-impy is permitted to access the network</li>
42
43 </ul>
44 </td>
45 </tr>
46
47 </tbody>
48 </table>
31</div> 49</div>
32</body> \ No newline at end of file 50</body>
diff --git a/linden/indra/newview/skins/default/xui/de/floater_pay_object.xml b/linden/indra/newview/skins/default/xui/de/floater_pay_object.xml
index 07dee37..fc7c204 100644
--- a/linden/indra/newview/skins/default/xui/de/floater_pay_object.xml
+++ b/linden/indra/newview/skins/default/xui/de/floater_pay_object.xml
@@ -1,5 +1,5 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater name="Give Money" title="[PAY TYPE] [FIRST] [LAST> 2<floater name="Give Money" title="[PAY TYPE] [FIRST] [LAST]">
3 3
4 <string name="pay group"> 4 <string name="pay group">
5 Gruppe bezahlen: 5 Gruppe bezahlen:
diff --git a/linden/indra/newview/skins/default/xui/de/panel_status_bar.xml b/linden/indra/newview/skins/default/xui/de/panel_status_bar.xml
index 565e6b8..6c2da13 100644
--- a/linden/indra/newview/skins/default/xui/de/panel_status_bar.xml
+++ b/linden/indra/newview/skins/default/xui/de/panel_status_bar.xml
@@ -6,7 +6,7 @@
6 <text length="1" name="BalanceText" tool_tip="Kontostand" type="string"> 6 <text length="1" name="BalanceText" tool_tip="Kontostand" type="string">
7 Wird geladen... 7 Wird geladen...
8 </text> 8 </text>
9 <button label="" label_selected="" name="buycurrency" tool_tip="Geld kaufen"/> 9 <button label="[CURRENCY]" label_selected="" name="buycurrency" tool_tip="Geld kaufen"/>
10 <text length="12" name="TimeText" tool_tip="Aktuelle Zeit (Pazifik)" type="string"> 10 <text length="12" name="TimeText" tool_tip="Aktuelle Zeit (Pazifik)" type="string">
11 12:00 11 12:00
12 </text> 12 </text>
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_about.xml b/linden/indra/newview/skins/default/xui/en-us/floater_about.xml
index 0275d9a..f25fd47 100644
--- a/linden/indra/newview/skins/default/xui/en-us/floater_about.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/floater_about.xml
@@ -3,66 +3,91 @@
3 can_resize="false" height="440" min_height="100" min_width="100" 3 can_resize="false" height="440" min_height="100" min_width="100"
4 name="floater_about" rect_control="FloaterAboutRect" 4 name="floater_about" rect_control="FloaterAboutRect"
5 title="About grid viewer" width="470"> 5 title="About grid viewer" width="470">
6 <text_editor bottom="-434" embedded_items="false" 6 <tab_container
7 follows="left|top|right|bottom" font="SansSerifSmall" height="168" left="6" 7 follows="all"
8 max_length="65536" mouse_opaque="true" name="credits_editor" width="458" 8 bottom="10"
9 left="10"
10 height="405"
11 width="450"
12 name="about_tab"
13 tab_position="top">
14 <panel
15 border="true"
16 height="386"
17 label="Version"
18 help_topic="about_support_tab"
19 name="support_panel">
20 <text_editor bottom="28" embedded_items="false"
21 follows="left|top|right|bottom" font="SansSerif" height="352" left="6"
22 max_length="65536" mouse_opaque="true" name="support_editor" width="423"
23 word_wrap="true" />
24 <button follows="left|top" label="Copy to Clipboard" name="copy_btn"
25 left="5" bottom="0" top_pad="5" height="20" width="180" />
26 </panel>
27 <panel
28 border="true"
29 label="Credits"
30 height="386"
31 help_topic="about_credits_tab"
32 name="credits_panel">
33
34 <text_editor bottom="6" embedded_items="false"
35 follows="left|top|right|bottom" font="SansSerifSmall" height="374" left="6"
36 max_length="65536" mouse_opaque="true" name="credits_editor" width="423"
9 word_wrap="true"> 37 word_wrap="true">
10 Meta 7 is brought to you by Laurent, George, Melanie, Shaun, Dave, Kitto, Mike, Brandon, Erich, Daniel, Mark, Trinity, and Tom. 38 Meta 7 is brought to you by Laurent, George, Melanie, Shaun, Dave, Kitto, Mike, Brandon, Erich, Daniel, Mark, Trinity, and Tom.
11 39
12 http://www.meta7.com/ 40 http://www.meta7.com/
13 41
14
15 This viewer is based on the Imprudence viewer. 42 This viewer is based on the Imprudence viewer.
16 43
17 The Imprudence Viewer was rocked hard by: 44 The Imprudence Viewer was rocked hard by:
18 Jacek Antonelli, McCabe Maxsted, Armin Weatherwax, Elektra Hesse, and CodeBastard Redgrave. 45 Jacek Antonelli, McCabe Maxsted, Armin Weatherwax, Elektra Hesse, and CodeBastard Redgrave.
19 46
20 http://kokuaviewer.org/ 47 http://kokuaviewer.org/
21 48
22 Imprudence is so awesome thanks to contributions from many generous people: 49 Imprudence is so awesome thanks to contributions from many generous people:
23 50
24 For their patches and code contributions, we thank Admiral Admiral, Aimee Trescothick, Aleric Inglewood, Alissa Sabre, Archimedies Plutonian, Angus Boyd, Ansariel Hiller, Ardy Lay, Asuka Neely, Balp Allen, Carjay McGinnis, Chalice Yao, Dale Glass, Damian Delacrois, Danny Nolan, Felix Duesenburg, Geneko Nemeth, Henri Beauchamp, Katharine Berry, KirstenLee Cinquetti, Kitty Barnett, Latif Khalifa, Lilly Zenovka, Makomk Makosen, Mana Janus, Matthew Dowd, Michelle2 Zenovka, Mm Alder, Nemurimasu Neiro, Nicholaz Beresford, Patrick Sapinski, Paul Churchill, Peter Lameth, Robin Cornelius, Stephen Zenith, Thickbrick Sleaford, Thomas Shikami, Tom Meta, tx Oh, Vaalith Jinn, Vadim Bigbear, Vex Streeter, Zi Ree, and Zwagoth Klaar. 51 For their patches and code contributions, we thank Admiral Admiral, Aimee Trescothick, Aleric Inglewood, Alissa Sabre, Archimedies Plutonian, Angus Boyd, Ansariel Hiller, Ardy Lay, Asuka Neely, Balp Allen, Carjay McGinnis, Chalice Yao, Dale Glass, Damian Delacrois, Danny Nolan, Felix Duesenburg, Geneko Nemeth, Henri Beauchamp, Katharine Berry, KirstenLee Cinquetti, Kitty Barnett, Latif Khalifa, Lilly Zenovka, Makomk Makosen, Mana Janus, Matthew Dowd, Michelle2 Zenovka, Mm Alder, Nemurimasu Neiro, Nicholaz Beresford, Patrick Sapinski, Paul Churchill, Peter Lameth, Robin Cornelius, Stephen Zenith, Thickbrick Sleaford, Thomas Shikami, Tom Meta, tx Oh, Vaalith Jinn, Vadim Bigbear, Vex Streeter, Zi Ree, and Zwagoth Klaar.
25 52
26 For their WindLight presets, we thank Ana Lutetia, CodeBastard Redgrave, and Torley Linden. 53 For their WindLight presets, we thank Ana Lutetia, CodeBastard Redgrave, and Torley Linden.
27 54
28 Thanks also to the developer(s) of the Emerald Viewer, Hippo Viewer, Cool VL Viewer, Snowglobe Viewer, meta 7 Viewer, FrozenGlobe Viewer, and Meerkat Viewer for viewer enhancements we have incorporated, as well as Kitty Barnett for RLVa. Special thanks to the folks at Linden Lab for releasing the viewer source, without which this endeavor would have been impossible. 55 Thanks also to the developer(s) of the Emerald Viewer, Hippo Viewer, Cool VL Viewer, Snowglobe Viewer, meta 7 Viewer, FrozenGlobe Viewer, and Meerkat Viewer for viewer enhancements we have incorporated, as well as Kitty Barnett for RLVa. Special thanks to the folks at Linden Lab for releasing the viewer source, without which this endeavor would have been impossible.
29 56
30 For a complete list of who did what, read the release notes! 57 For a complete list of who did what, read the release notes!
31 58
59 Many thanks to the many residents in many grids who contributed towards this viewer in countless ways.
32 60
33 Many thanks to Linden Lab and the many residents in both grids who contributed towards this viewer in countless ways. 61 3Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion
34 62 APR Copyright (C) 2000-2004 The Apache Software Foundation
35 3Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion 63 cURL Copyright (C) 1996-2002, Daniel Stenberg, (daniel@haxx.se)
36 APR Copyright (C) 2000-2004 The Apache Software Foundation 64 DBus/dbus-glib Copyright (C) 2002, 2003 CodeFactory AB / Copyright (C) 2003, 2004 Red Hat, Inc.
37 cURL Copyright (C) 1996-2002, Daniel Stenberg, (daniel@haxx.se) 65 expat Copyright (C) 1998, 1999, 2000 Thai Open Source Software Center Ltd.
38 DBus/dbus-glib Copyright (C) 2002, 2003 CodeFactory AB / Copyright (C) 2003, 2004 Red Hat, Inc. 66 FreeType Copyright (C) 1996-2002, The FreeType Project (www.freetype.org).
39 expat Copyright (C) 1998, 1999, 2000 Thai Open Source Software Center Ltd. 67 GL Copyright (C) 1999-2004 Brian Paul.
40 FreeType Copyright (C) 1996-2002, The FreeType Project (www.freetype.org). 68 Havok.com(TM) Copyright (C) 1999-2001, Telekinesys Research Limited.
41 GL Copyright (C) 1999-2004 Brian Paul. 69 jpeg2000 Copyright (C) 2001, David Taubman, The University of New South Wales (UNSW)
42 Havok.com(TM) Copyright (C) 1999-2001, Telekinesys Research Limited. 70 jpeglib Copyright (C) 1991-1998, Thomas G. Lane.
43 jpeg2000 Copyright (C) 2001, David Taubman, The University of New South Wales (UNSW) 71 ogg/vorbis Copyright (C) 2001, Xiphophorus
44 jpeglib Copyright (C) 1991-1998, Thomas G. Lane. 72 OpenSSL Copyright (C) 1998-2002 The OpenSSL Project.
45 ogg/vorbis Copyright (C) 2001, Xiphophorus 73 SDL Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Sam Lantinga
46 OpenSSL Copyright (C) 1998-2002 The OpenSSL Project. 74 SSLeay Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
47 SDL Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Sam Lantinga 75 xmlrpc-epi Copyright (C) 2000 Epinions, Inc.
48 SSLeay Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 76 zlib Copyright (C) 1995-2002 Jean-loup Gailly and Mark Adler.
49 xmlrpc-epi Copyright (C) 2000 Epinions, Inc. 77 google-perftools Copyright (c) 2005, Google Inc.
50 zlib Copyright (C) 1995-2002 Jean-loup Gailly and Mark Adler. 78 Code from FAAD2 is copyright (c) Nero AG, www.nero.com
51 google-perftools Copyright (c) 2005, Google Inc.
52 Code from FAAD2 is copyright (c) Nero AG, www.nero.com
53 79
54 All rights reserved. See LICENSE-libraries.txt for details. 80 All rights reserved. See LICENSE-libraries.txt for details.
55 81
56 Voice chat Audio coding: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C) 82 Voice chat Audio coding: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C)
57 83
58 84
59 I live in the future, just waiting for the rest of you to catch up. -- onefang Rejected </text_editor> 85 I live in the future, just waiting for the rest of you to catch up. -- onefang Rejected
60 86 </text_editor>
61 <text_editor bottom_delta="174" embedded_items="false" 87 </panel>
62 follows="left|top|right|bottom" font="SansSerif" height="238" left="6" 88 </tab_container>
63 max_length="65536" mouse_opaque="true" name="support_editor" width="458" 89 <string name="you_are_at">
64 word_wrap="true" />
65 <string name="you_are_at">
66 You are at [POSITION] 90 You are at [POSITION]
67 </string> 91 </string>
68</floater> 92</floater>
93
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_media_filter.xml b/linden/indra/newview/skins/default/xui/en-us/floater_media_filter.xml
new file mode 100644
index 0000000..9b7355c
--- /dev/null
+++ b/linden/indra/newview/skins/default/xui/en-us/floater_media_filter.xml
@@ -0,0 +1,61 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater name="floatermediafilter" title="Media Filter" rect_control="MediaFilterRect"
3 can_close="true" can_drag_on_left="false" can_minimize="true" can_resize="true"
4 height="350" width="600" min_height="350" min_width="600">
5 <text name="info1" font="SansSerif" mouse_opaque="true" halign="center"
6 bottom_delta="-45" left="20" height="20" width="560" follows="left|right|top">
7 Domains in bold are in the persistent list (i.e. they are whitelisted or blacklisted).
8 </text>
9 <text name="info2" font="SansSerif" mouse_opaque="true" halign="center"
10 bottom_delta="-20" left="20" height="20" width="560" follows="left|right|top">
11 Domains in italics are in the session list (i.e. they are temporarily allowed or denied).
12 </text>
13
14 <scroll_list name="whitelist_list" follows="top|bottom|left"
15 background_visible="true" mouse_opaque="true"
16 multi_select="false" column_padding="5" draw_border="true" draw_heading="true"
17 bottom_delta="-205" left="15" height="200" width="280">
18 <column name="whitelist_col" label="Allowed domains/objects" dynamicwidth="true" />
19 </scroll_list>
20
21 <scroll_list name="blacklist_list" follows="top|bottom|right"
22 background_visible="true" mouse_opaque="true"
23 multi_select="false" column_padding="5" draw_border="true" draw_heading="true"
24 bottom_delta="0" right="-15" height="200" width="280">
25 <column name="blacklist_col" label="Blocked domains/objects" dynamicwidth="true" />
26 </scroll_list>
27
28 <button name="add_whitelist" font="SansSerif" label="Add..." halign="center"
29 enabled="true" mouse_opaque="true" follows="bottom|left"
30 bottom_delta="-25" left="30" height="20" width="80" />
31
32 <button name="remove_whitelist" font="SansSerif" label="Remove" halign="center"
33 enabled="true" mouse_opaque="true" follows="bottom|left"
34 bottom_delta="0" left_delta="100" height="20" width="80" />
35
36 <button name="clear_lists" font="SansSerif" label="Clear lists" halign="center"
37 enabled="true" mouse_opaque="true" follows="bottom|left|right"
38 bottom_delta="0" left_delta="110" height="20" width="120" />
39
40 <button name="add_blacklist" font="SansSerif" label="Add..." halign="center"
41 enabled="true" mouse_opaque="true" follows="bottom|right"
42 bottom_delta="0" right="-130" height="20" width="80" />
43
44 <button name="remove_blacklist" font="SansSerif" label="Remove" halign="center"
45 enabled="true" mouse_opaque="true" follows="bottom|right"
46 bottom_delta="0" right="-30" height="20" width="80" />
47
48 <text name="add_text" font="SansSerif" mouse_opaque="true" enabled="true"
49 bottom_delta="-25" left="20" height="20" width="500" follows="left|right|bottom">
50 New domain:
51 </text>
52
53 <line_editor name="input_domain" max_length="255" font="SansSerif" enabled="false"
54 select_all_on_focus_received="true" select_on_focus="true"
55 bevel_style="in" border_style="line" border_thickness="1"
56 bottom_delta="-20" right="-100" height="20" left="15" follows="left|bottom|right"/>
57
58 <button name="commit_domain" font="SansSerif" label="Add" halign="center" enabled="false"
59 mouse_opaque="true" follows="bottom|right"
60 bottom_delta="0" right="-15" height="20" width="80"/>
61</floater>
diff --git a/linden/indra/newview/skins/default/xui/en-us/menu_login.xml b/linden/indra/newview/skins/default/xui/en-us/menu_login.xml
index 6fc6c57..87907ec 100644
--- a/linden/indra/newview/skins/default/xui/en-us/menu_login.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/menu_login.xml
@@ -1,5 +1,5 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<menu_bar name="Login Menu" opaque="true" tear_off="false" height="18" bottom="-18"> 2<menu_bar name="Login Menu" opaque="true" tear_off="false" height="18" bottom="-18" follows="left|top|right">
3 <menu create_jump_keys="true" label="File" name="File" opaque="true" tear_off="false"> 3 <menu create_jump_keys="true" label="File" name="File" opaque="true" tear_off="false">
4 <menu_item_call label="Quit" name="Quit" shortcut="control|Q"> 4 <menu_item_call label="Quit" name="Quit" shortcut="control|Q">
5 <on_click function="File.Quit" userdata="" /> 5 <on_click function="File.Quit" userdata="" />
diff --git a/linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml b/linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml
index 97d339f..93ebd1c 100644
--- a/linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml
@@ -277,6 +277,11 @@
277 <on_click function="ShowAgentGroups" 277 <on_click function="ShowAgentGroups"
278 userdata="agent" /> 278 userdata="agent" />
279 </menu_item_call> 279 </menu_item_call>
280 <menu_item_check bottom="-192" enabled="true" height="19" label="Media Filter" left="0"
281 mouse_opaque="true" name="Media Filter" width="211">
282 <on_click function="ShowFloater" userdata="media filter" />
283 <on_check function="FloaterVisible" userdata="media filter" />
284 </menu_item_check>
280 <menu_item_separator /> 285 <menu_item_separator />
281 <menu_item_call name="Preferences..." label="Preferences..." 286 <menu_item_call name="Preferences..." label="Preferences..."
282 shortcut="control|P"> 287 shortcut="control|P">
@@ -1343,6 +1348,18 @@
1343 <on_check function="Advanced.CheckInfoDisplay" 1348 <on_check function="Advanced.CheckInfoDisplay"
1344 userdata="glow" /> 1349 userdata="glow" />
1345 </menu_item_check> 1350 </menu_item_check>
1351 <menu_item_check name="Raycasting" label="Raycasting">
1352 <on_click function="Advanced.ToggleInfoDisplay"
1353 userdata="raycasting" />
1354 <on_check function="Advanced.CheckInfoDisplay"
1355 userdata="raycasting" />
1356 </menu_item_check>
1357 <menu_item_check name="Sculpt" label="Sculpt">
1358 <on_click function="Advanced.ToggleInfoDisplay"
1359 userdata="sculpt" />
1360 <on_check function="Advanced.CheckInfoDisplay"
1361 userdata="sculpt" />
1362 </menu_item_check>
1346 <menu_item_check name="Vectorize Perf Test" 1363 <menu_item_check name="Vectorize Perf Test"
1347 label="Vectorize Perf Test"> 1364 label="Vectorize Perf Test">
1348 <on_click function="ToggleControl" 1365 <on_click function="ToggleControl"
diff --git a/linden/indra/newview/skins/default/xui/en-us/notifications.xml b/linden/indra/newview/skins/default/xui/en-us/notifications.xml
index 4cea9ce..320ed18 100644
--- a/linden/indra/newview/skins/default/xui/en-us/notifications.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/notifications.xml
@@ -7299,6 +7299,56 @@ The Second Life Terms of Service do not allow you to opt out. By logging in to S
7299 notext="Cancel"/> 7299 notext="Cancel"/>
7300</notification> 7300</notification>
7301 7301
7302 <notification
7303 icon="alert.tga"
7304 name="MediaAlert"
7305 type="alert">
7306The owner of this parcel has requested [TYPE] URL pertaining to the following domain or scripted object to be loaded by your viewer[WARNING]:
7307
7308[DOMAIN]
7309
7310"Allow" and "Deny" apply only for this session, while "Blacklist" and "Whitelist" apply forever to the above domain or scripted object.
7311 <form name="form">
7312 <button
7313 index="0"
7314 name="Allow"
7315 text="Allow"/>
7316 <button
7317 index="1"
7318 name="Deny"
7319 text="Deny"/>
7320 <button
7321 index="2"
7322 name="Blacklist"
7323 text="Blacklist"/>
7324 <button
7325 index="3"
7326 name="Whitelist"
7327 text="Whitelist"/>
7328 </form>
7329 </notification>
7330
7331 <notification
7332 icon="alert.tga"
7333 name="MediaListed"
7334 type="alert">
7335Media/audio URLs for [DOMAIN] now [LISTED]
7336 </notification>
7337
7338 <notification
7339 icon="notifytip.tga"
7340 name="MediaBlocked"
7341 type="notifytip">
7342Media/audio URL blocked for [DOMAIN]
7343 </notification>
7344
7345 <notification
7346 icon="alertmodal.tga"
7347 name="MediaFiltersCleared"
7348 type="alertmodal">
7349The media filters have been cleared
7350 </notification>
7351
7302<!--End Imprudence notifications--> 7352<!--End Imprudence notifications-->
7303 <!-- [KITTY VIEWER] --> 7353 <!-- [KITTY VIEWER] -->
7304 <notification 7354 <notification
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_im.xml b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_im.xml
index e64f6c7..fe17e7a 100644
--- a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_im.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_im.xml
@@ -22,6 +22,9 @@
22 <string name="log_in_to_change"> 22 <string name="log_in_to_change">
23 log in to change 23 log in to change
24 </string> 24 </string>
25 <string name="default_email_used">
26 using default address
27 </string>
25 <check_box bottom="-45" enabled="true" follows="left|top" font="SansSerifSmall" 28 <check_box bottom="-45" enabled="true" follows="left|top" font="SansSerifSmall"
26 height="16" initial_value="false" label="Send IM to email ([EMAIL])" 29 height="16" initial_value="false" label="Send IM to email ([EMAIL])"
27 left="148" mouse_opaque="true" name="send_im_to_email" radio_style="false" 30 left="148" mouse_opaque="true" name="send_im_to_email" radio_style="false"
diff --git a/linden/indra/newview/slfloatermediafilter.cpp b/linden/indra/newview/slfloatermediafilter.cpp
new file mode 100644
index 0000000..c47ed26
--- /dev/null
+++ b/linden/indra/newview/slfloatermediafilter.cpp
@@ -0,0 +1,350 @@
1/**
2 * @file slfloatermediafilter.cpp
3 * @brief The SLFloaterMediaFilter class definitions
4 *
5 * $LicenseInfo:firstyear=2011&license=viewergpl$
6 *
7 * Copyright (c) 2011, Sione Lomu
8 * with debugging and improvements by Henri Beauchamp
9 *
10 * Second Life Viewer Source Code
11 * The source code in this file ("Source Code") is provided by Linden Lab
12 * to you under the terms of the GNU General Public License, version 2.0
13 * ("GPL"), unless you have obtained a separate licensing agreement
14 * ("Other License"), formally executed by you and Linden Lab. Terms of
15 * the GPL can be found in doc/GPL-license.txt in this distribution, or
16 * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
17 *
18 * There are special exceptions to the terms and conditions of the GPL as
19 * it is applied to this Source Code. View the full text of the exception
20 * in the file doc/FLOSS-exception.txt in this software distribution, or
21 * online at
22 * http://secondlifegrid.net/programs/open_source/licensing/flossexception
23 *
24 * By copying, modifying or distributing this software, you acknowledge
25 * that you have read and understood your obligations described above,
26 * and agree to abide by those obligations.
27 *
28 * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
29 * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
30 * COMPLETENESS OR PERFORMANCE.
31 * $/LicenseInfo$
32 */
33
34#include "llviewerprecompiledheaders.h"
35
36#include "lllineeditor.h"
37#include "llscrolllistctrl.h"
38#include "lluictrlfactory.h"
39
40#include "slfloatermediafilter.h"
41#include "llviewercontrol.h"
42#include "llviewerparcelmedia.h"
43
44SLFloaterMediaFilter* SLFloaterMediaFilter::sInstance = NULL;
45bool SLFloaterMediaFilter::sIsWhitelist = false;
46
47SLFloaterMediaFilter::SLFloaterMediaFilter() : LLFloater(std::string("media filter")), mIsDirty(false)
48{
49 LLUICtrlFactory::getInstance()->buildFloater(this, "floater_media_filter.xml");
50}
51
52SLFloaterMediaFilter::~SLFloaterMediaFilter()
53{
54 sInstance = NULL;
55}
56
57BOOL SLFloaterMediaFilter::postBuild()
58{
59 mWhitelistSLC = getChild<LLScrollListCtrl>("whitelist_list");
60 mBlacklistSLC = getChild<LLScrollListCtrl>("blacklist_list");
61
62 if (mWhitelistSLC && mBlacklistSLC)
63 {
64 childSetAction("clear_lists", onClearLists, this);
65 childSetAction("add_whitelist", onWhitelistAdd, this);
66 childSetAction("remove_whitelist", onWhitelistRemove, this);
67 childSetAction("add_blacklist", onBlacklistAdd, this);
68 childSetAction("remove_blacklist", onBlacklistRemove, this);
69 childSetAction("commit_domain", onCommitDomain, this);
70 childSetUserData("whitelist_list", this);
71 childSetUserData("blacklist_list", this);
72 mIsDirty = true;
73 }
74
75 return TRUE;
76}
77
78void SLFloaterMediaFilter::draw()
79{
80 if (mIsDirty && mWhitelistSLC && mBlacklistSLC)
81 {
82 S32 whitescrollpos = mWhitelistSLC->getScrollPos();
83 S32 blackscrollpos = mBlacklistSLC->getScrollPos();
84 mWhitelistSLC->deleteAllItems();
85 mBlacklistSLC->deleteAllItems();
86 std::set<std::string> listed;
87 std::string domain;
88 std::string action;
89 LLSD element;
90 element["columns"][0]["font"] = "SANSSERIF";
91 element["columns"][0]["font-style"] = "BOLD";
92 for (S32 i = 0; i < (S32)LLViewerParcelMedia::sMediaFilterList.size(); i++)
93 {
94 domain = LLViewerParcelMedia::sMediaFilterList[i]["domain"].asString();
95 action = LLViewerParcelMedia::sMediaFilterList[i]["action"].asString();
96 if (!domain.empty() && action == "allow")
97 {
98 element["columns"][0]["column"] = "whitelist_col";
99 element["columns"][0]["value"] = domain;
100 //element["columns"][0]["color"] = LLColor4::green3.getValue();
101 mWhitelistSLC->addElement(element, ADD_BOTTOM);
102 listed.insert(domain);
103 }
104 else if (!domain.empty() && action == "deny")
105 {
106 element["columns"][0]["column"] = "blacklist_col";
107 element["columns"][0]["value"] = domain;
108 //element["columns"][0]["color"] = LLColor4::red2.getValue();
109 mBlacklistSLC->addElement(element, ADD_BOTTOM);
110 listed.insert(domain);
111 }
112 else
113 {
114 LL_WARNS("MediaFilter") << "Bad media filter list: removing corrupted entry for \"" << domain << "\"" << LL_ENDL;
115 LLViewerParcelMedia::sMediaFilterList.erase(i--);
116 }
117 }
118 std::set<std::string>::iterator it;
119 element["columns"][0]["font"] = "SANSSERIF";
120 element["columns"][0]["font-style"] = "ITALIC";
121 //element["columns"][0]["color"] = LLColor4::green3.getValue();
122 element["columns"][0]["column"] = "whitelist_col";
123 for (it = LLViewerParcelMedia::sAllowedMedia.begin(); it != LLViewerParcelMedia::sAllowedMedia.end(); it++)
124 {
125 domain = *it;
126 if (listed.count(domain) == 0)
127 {
128 element["columns"][0]["value"] = domain;
129 mWhitelistSLC->addElement(element, ADD_BOTTOM);
130 }
131 }
132 element["columns"][0]["column"] = "blacklist_col";
133 for (it = LLViewerParcelMedia::sDeniedMedia.begin(); it != LLViewerParcelMedia::sDeniedMedia.end(); it++)
134 {
135 domain = *it;
136 if (listed.count(domain) == 0)
137 {
138 element["columns"][0]["value"] = domain;
139 mBlacklistSLC->addElement(element, ADD_BOTTOM);
140 }
141 }
142 mWhitelistSLC->setScrollPos(whitescrollpos);
143 mBlacklistSLC->setScrollPos(blackscrollpos);
144
145 if (!gSavedSettings.getBOOL("MediaEnableFilter"))
146 {
147 childDisable("clear_lists");
148 childDisable("blacklist_list");
149 childDisable("whitelist_list");
150 childDisable("remove_whitelist");
151 childDisable("add_whitelist");
152 childDisable("remove_blacklist");
153 childDisable("add_blacklist");
154 childDisable("input_domain");
155 childDisable("commit_domain");
156 childSetText("add_text", std::string("****** WARNING: media filtering is currently DISABLED ******"));
157 }
158
159 mIsDirty = false;
160 }
161
162 LLFloater::draw();
163}
164
165void SLFloaterMediaFilter::setDirty()
166{
167 if (sInstance)
168 {
169 sInstance->mIsDirty = true;
170 sInstance->draw();
171 }
172}
173
174BOOL SLFloaterMediaFilter::instanceVisible()
175{
176 if (sInstance)
177 {
178 return sInstance->getVisible();
179 }
180 else
181 {
182 return FALSE;
183 }
184}
185
186void SLFloaterMediaFilter::toggleInstance()
187{
188 if (sInstance)
189 {
190 if (sInstance->getVisible())
191 {
192 sInstance->destroy();
193 }
194 else
195 {
196 sInstance->open();
197 }
198 }
199 else
200 {
201 sInstance = new SLFloaterMediaFilter();
202 sInstance->open();
203 }
204}
205
206void SLFloaterMediaFilter::onClearLists(void* data)
207{
208 LLViewerParcelMedia::clearDomainFilterList();
209}
210
211void SLFloaterMediaFilter::onWhitelistAdd(void* data)
212{
213 if (!sInstance)
214 {
215 return;
216 }
217 sInstance->childDisable("clear_lists");
218 sInstance->childDisable("blacklist_list");
219 sInstance->childDisable("whitelist_list");
220 sInstance->childDisable("remove_whitelist");
221 sInstance->childDisable("add_whitelist");
222 sInstance->childDisable("remove_blacklist");
223 sInstance->childDisable("add_blacklist");
224 sInstance->childEnable("input_domain");
225 sInstance->childEnable("commit_domain");
226 sInstance->childSetText("add_text", std::string("Enter the domain/url to add to the white list:"));
227 sIsWhitelist = true;
228}
229
230void SLFloaterMediaFilter::onWhitelistRemove(void* data)
231{
232 if (!sInstance)
233 {
234 return;
235 }
236 LLScrollListItem* selected = sInstance->mWhitelistSLC->getFirstSelected();
237
238 if (selected)
239 {
240 std::string domain = sInstance->mWhitelistSLC->getSelectedItemLabel();
241 LLViewerParcelMedia::sAllowedMedia.erase(domain);
242
243 for (S32 i = 0; i < (S32)LLViewerParcelMedia::sMediaFilterList.size(); i++)
244 {
245 if (LLViewerParcelMedia::sMediaFilterList[i]["domain"].asString() == domain)
246 {
247 LLViewerParcelMedia::sMediaFilterList.erase(i);
248 LLViewerParcelMedia::saveDomainFilterList();
249 break;
250 }
251 }
252
253 setDirty();
254 }
255}
256
257void SLFloaterMediaFilter::onBlacklistAdd(void* data)
258{
259 if (!sInstance)
260 {
261 return;
262 }
263 sInstance->childDisable("clear_lists");
264 sInstance->childDisable("blacklist_list");
265 sInstance->childDisable("whitelist_list");
266 sInstance->childDisable("remove_whitelist");
267 sInstance->childDisable("add_whitelist");
268 sInstance->childDisable("remove_blacklist");
269 sInstance->childDisable("add_blacklist");
270 sInstance->childEnable("input_domain");
271 sInstance->childEnable("commit_domain");
272 sInstance->childSetText("add_text", std::string("Enter the domain/url to add to the black list:"));
273 sIsWhitelist = false;
274}
275
276void SLFloaterMediaFilter::onBlacklistRemove(void* data)
277{
278 if (!sInstance)
279 {
280 return;
281 }
282 LLScrollListItem* selected = sInstance->mBlacklistSLC->getFirstSelected();
283
284 if (selected)
285 {
286 std::string domain = sInstance->mBlacklistSLC->getSelectedItemLabel();
287 LLViewerParcelMedia::sDeniedMedia.erase(domain);
288
289 for (S32 i = 0; i < (S32)LLViewerParcelMedia::sMediaFilterList.size(); i++)
290 {
291 if (LLViewerParcelMedia::sMediaFilterList[i]["domain"].asString() == domain)
292 {
293 LLViewerParcelMedia::sMediaFilterList.erase(i);
294 LLViewerParcelMedia::saveDomainFilterList();
295 break;
296 }
297 }
298
299 setDirty();
300 }
301}
302
303void SLFloaterMediaFilter::onCommitDomain(void* data)
304{
305 if (!sInstance)
306 {
307 return;
308 }
309 std::string domain = sInstance->childGetText("input_domain");
310 domain = LLViewerParcelMedia::extractDomain(domain);
311
312 if (!domain.empty())
313 {
314 LLViewerParcelMedia::sDeniedMedia.erase(domain);
315 LLViewerParcelMedia::sAllowedMedia.erase(domain);
316 for (S32 i = 0; i < (S32)LLViewerParcelMedia::sMediaFilterList.size(); i++)
317 {
318 if (LLViewerParcelMedia::sMediaFilterList[i]["domain"].asString() == domain)
319 {
320 LLViewerParcelMedia::sMediaFilterList.erase(i);
321 break;
322 }
323 }
324 LLSD newmedia;
325 newmedia["domain"] = domain;
326 if (sIsWhitelist)
327 {
328 newmedia["action"] = "allow";
329 }
330 else
331 {
332 newmedia["action"] = "deny";
333 }
334 LLViewerParcelMedia::sMediaFilterList.append(newmedia);
335 LLViewerParcelMedia::saveDomainFilterList();
336 }
337
338 sInstance->childEnable("clear_lists");
339 sInstance->childEnable("blacklist_list");
340 sInstance->childEnable("whitelist_list");
341 sInstance->childEnable("remove_whitelist");
342 sInstance->childEnable("add_whitelist");
343 sInstance->childEnable("remove_blacklist");
344 sInstance->childEnable("add_blacklist");
345 sInstance->childDisable("input_domain");
346 sInstance->childDisable("commit_domain");
347 sInstance->childSetText("add_text", std::string("New domain:"));
348 sInstance->childSetText("input_domain", std::string(""));
349 setDirty();
350}
diff --git a/linden/indra/newview/slfloatermediafilter.h b/linden/indra/newview/slfloatermediafilter.h
new file mode 100644
index 0000000..0f900be
--- /dev/null
+++ b/linden/indra/newview/slfloatermediafilter.h
@@ -0,0 +1,70 @@
1/**
2 * @file slfloatermediafilter.h
3 * @brief The SLFloaterMediaFilter class declaration
4 *
5 * $LicenseInfo:firstyear=2011&license=viewergpl$
6 *
7 * Copyright (c) 2011, Sione Lomu
8 * with debugging and improvements by Henri Beauchamp
9 *
10 * Second Life Viewer Source Code
11 * The source code in this file ("Source Code") is provided by Linden Lab
12 * to you under the terms of the GNU General Public License, version 2.0
13 * ("GPL"), unless you have obtained a separate licensing agreement
14 * ("Other License"), formally executed by you and Linden Lab. Terms of
15 * the GPL can be found in doc/GPL-license.txt in this distribution, or
16 * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
17 *
18 * There are special exceptions to the terms and conditions of the GPL as
19 * it is applied to this Source Code. View the full text of the exception
20 * in the file doc/FLOSS-exception.txt in this software distribution, or
21 * online at
22 * http://secondlifegrid.net/programs/open_source/licensing/flossexception
23 *
24 * By copying, modifying or distributing this software, you acknowledge
25 * that you have read and understood your obligations described above,
26 * and agree to abide by those obligations.
27 *
28 * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
29 * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
30 * COMPLETENESS OR PERFORMANCE.
31 * $/LicenseInfo$
32 */
33
34#ifndef LL_SLFLOATERMEDIAFILTER_H
35#define LL_SLFLOATERMEDIAFILTER_H
36
37#include "llfloater.h"
38
39class LLScrollListCtrl;
40class LLButton;
41
42class SLFloaterMediaFilter : public LLFloater
43{
44public:
45 SLFloaterMediaFilter();
46 BOOL postBuild();
47 virtual void draw();
48 virtual ~SLFloaterMediaFilter();
49
50 static void setDirty();
51 static BOOL instanceVisible();
52 static void toggleInstance();
53
54 static void onClearLists(void*);
55 static void onWhitelistAdd(void*);
56 static void onWhitelistRemove(void*);
57 static void onBlacklistAdd(void*);
58 static void onBlacklistRemove(void*);
59 static void onCommitDomain(void*);
60
61private:
62 static bool sIsWhitelist;
63 LLScrollListCtrl* mWhitelistSLC;
64 LLScrollListCtrl* mBlacklistSLC;
65 bool mIsDirty;
66
67 static SLFloaterMediaFilter* sInstance;
68
69};
70#endif
diff --git a/linden/indra/newview/viewer_manifest.py b/linden/indra/newview/viewer_manifest.py
index a053861..81811a9 100755
--- a/linden/indra/newview/viewer_manifest.py
+++ b/linden/indra/newview/viewer_manifest.py
@@ -65,6 +65,9 @@ class ViewerManifest(LLManifest):
65 self.path("shaders") 65 self.path("shaders")
66 # ... and the entire windlight directory 66 # ... and the entire windlight directory
67 self.path("windlight") 67 self.path("windlight")
68 # ...and the entire dictionaries directory
69 self.path("dictionaries")
70
68 self.end_prefix("app_settings") 71 self.end_prefix("app_settings")
69 72
70 if self.prefix(src="character"): 73 if self.prefix(src="character"):
@@ -134,7 +137,6 @@ class ViewerManifest(LLManifest):
134 self.path("README.txt") 137 self.path("README.txt")
135 self.path("MANIFESTO.txt") 138 self.path("MANIFESTO.txt")
136 self.path("CONTRIBUTE.txt") 139 self.path("CONTRIBUTE.txt")
137 self.path("RELEASE_NOTES.txt")
138 self.path("ChangeLog.txt", required=False) 140 self.path("ChangeLog.txt", required=False)
139 self.end_prefix("../../..") 141 self.end_prefix("../../..")
140 142
@@ -280,6 +282,11 @@ class WindowsManifest(ViewerManifest):
280 if self.prefix(src='../media_plugins/webkit/%s' % self.args['configuration'], dst="llplugin"): 282 if self.prefix(src='../media_plugins/webkit/%s' % self.args['configuration'], dst="llplugin"):
281 self.path("media_plugin_webkit.dll") 283 self.path("media_plugin_webkit.dll")
282 self.end_prefix() 284 self.end_prefix()
285
286 # Media plugins - GStreamer
287 if self.prefix(src='../media_plugins/gstreamer010/%s' % self.args['configuration'], dst="llplugin"):
288 self.path("media_plugin_gstreamer010.dll")
289 self.end_prefix()
283 290
284 # For WebKit/Qt plugin runtimes 291 # For WebKit/Qt plugin runtimes
285 if self.prefix(src="../../libraries/i686-win32/lib/release", dst="llplugin"): 292 if self.prefix(src="../../libraries/i686-win32/lib/release", dst="llplugin"):
@@ -303,9 +310,6 @@ class WindowsManifest(ViewerManifest):
303 self.path("qtiff4.dll") 310 self.path("qtiff4.dll")
304 self.end_prefix() 311 self.end_prefix()
305 312
306 # Per platform MIME config on the cheap. See SNOW-307 / DEV-41388
307 self.path("skins/default/xui/en-us/mime_types_windows.xml", "skins/default/xui/en-us/mime_types.xml")
308
309 # These need to be installed as a SxS assembly, currently a 'private' assembly. 313 # These need to be installed as a SxS assembly, currently a 'private' assembly.
310 # See http://msdn.microsoft.com/en-us/library/ms235291(VS.80).aspx 314 # See http://msdn.microsoft.com/en-us/library/ms235291(VS.80).aspx
311 if self.prefix(src=self.args['configuration'], dst=""): 315 if self.prefix(src=self.args['configuration'], dst=""):
@@ -346,64 +350,74 @@ class WindowsManifest(ViewerManifest):
346 self.path("ortp.dll") 350 self.path("ortp.dll")
347 351
348 self.end_prefix() 352 self.end_prefix()
349# Gstreamer is not used in webkit_plugins. The librries are never delivered/extracted to 353
350# ../../libraries/i686-win32/lib/release . Commented out until decision made to use or drop.
351 # Gstreamer plugins 354 # Gstreamer plugins
352 #if self.prefix(src="lib/gstreamer-plugins", dst=""): 355 if self.prefix(src="lib/gstreamer-plugins", dst=""):
353 # self.path("*.dll", dst="lib/gstreamer-plugins/*.dll") 356 self.path("*.dll", dst="lib/gstreamer-plugins/*.dll")
354 # self.end_prefix() 357 self.end_prefix()
355 358
356 # Gstreamer libs 359 # Gstreamer libs
357 #if (not self.standalone()) and self.prefix(src="../../libraries/i686-win32/lib/release", dst=""): 360 if (not self.standalone()) and self.prefix(src="../../libraries/i686-win32/lib/release", dst=""):
358 # self.path("iconv.dll") 361 self.path("avcodec-gpl-52.dll")
359 # self.path("libxml2.dll") 362 self.path("avdevice-gpl-52.dll")
360 # self.path("libcairo-2.dll") 363 self.path("avfilter-gpl-1.dll")
361 # self.path("libgio-2.0-0.dll") 364 self.path("avformat-gpl-52.dll")
362 # self.path("libglib-2.0-0.dll") 365 self.path("avutil-gpl-50.dll")
363 # self.path("libgmodule-2.0-0.dll") 366 self.path("iconv.dll")
364 # self.path("libgobject-2.0-0.dll") 367 self.path("liba52-0.dll")
365 # self.path("libgthread-2.0-0.dll") 368 self.path("libbz2.dll")
366 # self.path("charset.dll") 369 self.path("libcelt-0.dll")
367 # self.path("intl.dll") 370 self.path("libdca-0.dll")
368 # self.path("libgcrypt-11.dll") 371 self.path("libexpat-1.dll")
369 # self.path("libgnutls-26.dll") 372 self.path("libfaad-2.dll")
370 # self.path("libgpg-error-0.dll") 373 self.path("libFLAC-8.dll")
371 # self.path("libgstapp.dll") 374 self.path("libgcrypt-11.dll")
372 # self.path("libgstaudio.dll") 375 self.path("libgio-2.0-0.dll")
373 # self.path("libgstbase-0.10.dll") 376 self.path("libglib-2.0-0.dll")
374 # self.path("libgstcdda.dll") 377 self.path("libgmodule-2.0-0.dll")
375 # self.path("libgstcontroller-0.10.dll") 378 self.path("libgnutls-26.dll")
376 # self.path("libgstdataprotocol-0.10.dll") 379 self.path("libgobject-2.0-0.dll")
377 # self.path("libgstdshow.dll") 380 self.path("libgpg-error-0.dll")
378 # self.path("libgstfft.dll") 381 self.path("libgstapp-0.10.dll")
379 # self.path("libgstinterfaces.dll") 382 self.path("libgstaudio-0.10.dll")
380 # self.path("libgstnet-0.10.dll") 383 self.path("libgstbase-0.10.dll")
381 # self.path("libgstnetbuffer.dll") 384 self.path("libgstcontroller-0.10.dll")
382 # self.path("libgstpbutils.dll") 385 self.path("libgstdataprotocol-0.10.dll")
383 # self.path("libgstreamer-0.10.dll") 386 self.path("libgstfft-0.10.dll")
384 # self.path("libgstriff.dll") 387 self.path("libgstinterfaces-0.10.dll")
385 # self.path("libgstrtp.dll") 388 self.path("libgstnet-0.10.dll")
386 # self.path("libgstrtsp.dll") 389 self.path("libgstnetbuffer-0.10.dll")
387 # self.path("libgstsdp.dll") 390 self.path("libgstpbutils-0.10.dll")
388 # self.path("libgsttag.dll") 391 self.path("libgstphotography-0.10.dll")
389 # self.path("libgstvideo.dll") 392 self.path("libgstreamer-0.10.dll")
390 # self.path("libjpeg.dll") 393 self.path("libgstriff-0.10.dll")
391 # self.path("libmp3lame-0.dll") 394 self.path("libgstrtp-0.10.dll")
392 # self.path("libneon-27.dll") 395 self.path("libgstrtsp-0.10.dll")
393 # self.path("libogg-0.dll") 396 self.path("libgstsdp-0.10.dll")
394 # self.path("liboil-0.3-0.dll") 397 self.path("libgstsignalprocessor-0.10.dll")
395 # self.path("libopenjpeg-2.dll") 398 self.path("libgsttag-0.10.dll")
396 # self.path("libpng12-0.dll") 399 self.path("libgstvideo-0.10.dll")
397 # self.path("libschroedinger-1.0-0.dll") 400 self.path("libgthread-2.0-0.dll")
398 # self.path("libspeex-1.dll") 401 self.path("libmms-0.dll")
399 # self.path("libtheora-0.dll") 402 self.path("libmpeg2-0.dll")
400 # self.path("libvorbis-0.dll") 403 self.path("libneon-27.dll")
401 # self.path("libvorbisenc-2.dll") 404 self.path("libogg-0.dll")
402 # self.path("libxml2-2.dll") 405 self.path("liboil-0.3-0.dll")
403 # self.path("glew32.dll") 406 self.path("libsoup-2.4-1.dll")
404 # self.path("xvidcore.dll") 407 self.path("libtasn1-3.dll")
405 # self.path("zlib1.dll") 408 self.path("libtheora-0.dll")
406 # self.end_prefix() 409 self.path("libtheoradec-1.dll")
410 self.path("libvorbis-0.dll")
411 self.path("libvorbisenc-2.dll")
412 self.path("libvorbisfile-3.dll")
413 self.path("libwavpack-1.dll")
414 self.path("libx264-67.dll")
415 self.path("libxml2-2.dll")
416 self.path("libxml2.dll")
417 self.path("SDL.dll")
418 self.path("xvidcore.dll")
419 self.path("z.dll")
420 self.end_prefix()
407 421
408# # pull in the crash logger and updater from other projects 422# # pull in the crash logger and updater from other projects
409# self.path(src=self.find_existing_file( # tag:"crash-logger" here as a cue to the exporter 423# self.path(src=self.find_existing_file( # tag:"crash-logger" here as a cue to the exporter
@@ -543,11 +557,16 @@ class WindowsManifest(ViewerManifest):
543 # We use the Unicode version of NSIS, available from 557 # We use the Unicode version of NSIS, available from
544 # http://www.scratchpaper.com/ 558 # http://www.scratchpaper.com/
545 try: 559 try:
546 NSIS_path = 'C:\\Program Files\\NSIS\\Unicode\\makensis.exe' 560 import _winreg as reg
547 self.run_command('"' + proper_windows_path(NSIS_path) + '" ' + self.dst_path_of(tempfile)) 561 NSIS_path = reg.QueryValue(reg.HKEY_LOCAL_MACHINE, r"SOFTWARE\NSIS\Unicode") + '\\makensis.exe'
562 self.run_command('"' + proper_windows_path(NSIS_path) + '" ' + self.dst_path_of(tempfile))
548 except: 563 except:
549 NSIS_path = 'C:\\Program Files (x86)\\NSIS\\Unicode\\makensis.exe' 564 try:
565 NSIS_path = os.environ['ProgramFiles'] + '\\NSIS\\Unicode\\makensis.exe'
550 self.run_command('"' + proper_windows_path(NSIS_path) + '" ' + self.dst_path_of(tempfile)) 566 self.run_command('"' + proper_windows_path(NSIS_path) + '" ' + self.dst_path_of(tempfile))
567 except:
568 NSIS_path = os.environ['ProgramFiles(X86)'] + '\\NSIS\\Unicode\\makensis.exe'
569 self.run_command('"' + proper_windows_path(NSIS_path) + '" ' + self.dst_path_of(tempfile))
551 # self.remove(self.dst_path_of(tempfile)) 570 # self.remove(self.dst_path_of(tempfile))
552 # If we're on a build machine, sign the code using our Authenticode certificate. JC 571 # If we're on a build machine, sign the code using our Authenticode certificate. JC
553 sign_py = 'C:\\buildscripts\\code-signing\\sign.py' 572 sign_py = 'C:\\buildscripts\\code-signing\\sign.py'
@@ -577,10 +596,10 @@ class DarwinManifest(ViewerManifest):
577 self.path("libopenal.1.dylib") 596 self.path("libopenal.1.dylib")
578 self.path("libalut.0.dylib") 597 self.path("libalut.0.dylib")
579 598
580 self.path("libglib-2.0.dylib") 599 # self.path("libglib-2.0.dylib")
581 self.path("libgmodule-2.0.dylib") 600 # self.path("libgmodule-2.0.dylib")
582 self.path("libgobject-2.0.dylib") 601 # self.path("libgobject-2.0.dylib")
583 self.path("libgthread-2.0.dylib") 602 # self.path("libgthread-2.0.dylib")
584 603
585 # self.path("libgstreamer-0.10.dylib") 604 # self.path("libgstreamer-0.10.dylib")
586 # self.path("libgstapp-0.10.dylib") 605 # self.path("libgstapp-0.10.dylib")
@@ -601,15 +620,15 @@ class DarwinManifest(ViewerManifest):
601 # self.path("libgsttag-0.10.dylib") 620 # self.path("libgsttag-0.10.dylib")
602 # self.path("libgstvideo-0.10.dylib") 621 # self.path("libgstvideo-0.10.dylib")
603 622
604 self.path("libxml2.2.dylib") 623 # self.path("libxml2.2.dylib")
605 # self.path("libfaad.2.dylib") 624 # self.path("libfaad.2.dylib")
606 # self.path("libFLAC.8.dylib") 625 # self.path("libFLAC.8.dylib")
607 self.path("libintl.3.dylib") 626 # self.path("libintl.3.dylib")
608 self.path("libjpeg.62.dylib") 627 self.path("libjpeg.62.dylib")
609 self.path("libpng12.0.dylib") 628 self.path("libpng12.0.dylib")
610 self.path("libneon.27.dylib") 629 # self.path("libneon.27.dylib")
611 self.path("libogg.0.dylib") 630 self.path("libogg.0.dylib")
612 self.path("liboil-0.3.0.dylib") 631 # self.path("liboil-0.3.0.dylib")
613 self.path("libopenjpeg.1.4.dylib") 632 self.path("libopenjpeg.1.4.dylib")
614 # self.path("libtheora.0.dylib") 633 # self.path("libtheora.0.dylib")
615 self.path("libvorbis.0.dylib") 634 self.path("libvorbis.0.dylib")
@@ -999,11 +1018,12 @@ class Linux_i686Manifest(LinuxManifest):
999 self.path("libELFIO.so") 1018 self.path("libELFIO.so")
1000 self.path("libopenjpeg.so.2") 1019 self.path("libopenjpeg.so.2")
1001 self.path("libxml2.so.2") 1020 self.path("libxml2.so.2")
1021 self.path("libz.so")
1002 self.path("libz.so.1") 1022 self.path("libz.so.1")
1003 1023
1004 # OpenAL 1024 # OpenAL
1005 self.path("libopenal.so.1") 1025 self.path("libopenal.so.1.12.854", "libopenal.so.1")
1006 self.path("libalut.so.0") 1026 self.path("libalut.so.0.1.0", "libalut.so.0")
1007 1027
1008 # GTK+ and dependencies 1028 # GTK+ and dependencies
1009 ## Lets just use the system libraries for all of these: 1029 ## Lets just use the system libraries for all of these:
@@ -1135,17 +1155,15 @@ class Linux_x86_64Manifest(LinuxManifest):
1135 #self.path("libz.so.1") #not needed 1155 #self.path("libz.so.1") #not needed
1136 1156
1137 # OpenAL 1157 # OpenAL
1138 self.path("libopenal.so.1") 1158 self.path("libopenal.so.1.12.854", "libopenal.so.1")
1139 self.path("libalut.so.0") 1159 self.path("libalut.so.0.1.0", "libalut.so.0")
1140
1141 # GTK+ and dependencies 1160 # GTK+ and dependencies
1142 ## Lets just use the system libraries for all of these: 1161 ## Lets just use the system libraries for all of these:
1143 ##self.path("libatk-1.0.so.0") 1162 ##self.path("libatk-1.0.so.0")
1144 ##self.path("libcairo.so.2") 1163 ##self.path("libcairo.so.2")
1145 ##self.path("libfontconfig.so.1") 1164 ##self.path("libfontconfig.so.1")
1146 ##self.path("libfreetype.so.6") 1165 ##self.path("libfreetype.so.6")
1147 self.path("libgdk_pixbuf-2.0.so.0") # was commented to use systems gdk pixbufs instead - 1166 #self.path("libgdk_pixbuf-2.0.so.0")
1148 # but seems webkit needs it o_O . Packaging for testing now.
1149 ##self.path("libgdk-x11-2.0.so.0") 1167 ##self.path("libgdk-x11-2.0.so.0")
1150 ##self.path("libgtk-x11-2.0.so.0") 1168 ##self.path("libgtk-x11-2.0.so.0")
1151# self.path("libpango-1.0.so.0") # use systems pango instead 1169# self.path("libpango-1.0.so.0") # use systems pango instead
diff --git a/linden/indra/newview/viewertime.cpp b/linden/indra/newview/viewertime.cpp
index 06436b6..5ed9465 100644
--- a/linden/indra/newview/viewertime.cpp
+++ b/linden/indra/newview/viewertime.cpp
@@ -28,6 +28,7 @@
28* $/LicenseInfo$ 28* $/LicenseInfo$
29*/ 29*/
30 30
31#include <sstream>
31#include "llviewerprecompiledheaders.h" 32#include "llviewerprecompiledheaders.h"
32 33
33#include "llappviewer.h" // for gPacificDaylightTime 34#include "llappviewer.h" // for gPacificDaylightTime
@@ -129,10 +130,19 @@ void ViewerTime::refresh()
129 if (hour == 0) hour = 12; 130 if (hour == 0) hour = 12;
130 } 131 }
131 132
132 mTZ = "PST"; 133 if (sUseTimeOffset)
133 if (gPacificDaylightTime)
134 { 134 {
135 mTZ = "PDT"; 135 std::stringstream myString;
136 myString << "UTC " << sTimeOffset;
137 mTZ = myString.str();
138 }
139 else
140 {
141 mTZ = "PST";
142 if (gPacificDaylightTime)
143 {
144 mTZ = "PDT";
145 }
136 } 146 }
137 } 147 }
138 else // just UTC 148 else // just UTC