diff options
442 files changed, 4595 insertions, 2428 deletions
@@ -1,12 +1,21 @@ | |||
1 | # | 1 | # |
2 | # This file contains names (and wildcards) of files that | 2 | # This file contains names (and wildcards) of files that |
3 | # Git should ignore. | 3 | # Git should ignore. |
4 | # | 4 | # |
5 | 5 | # Since we only care about the actual source code files, | |
6 | # all the libraries are ignored, as are the files that | ||
7 | # are created when you compile. | ||
8 | # | ||
6 | 9 | ||
7 | # LIBRARIES | 10 | # LIBRARIES |
8 | 11 | ||
9 | linden/LICENSES/ | 12 | # These two lines are a bit tricky. |
13 | # The ! syntax negates a pattern, | ||
14 | # but it needs a pattern, not just a directory. | ||
15 | # So turn the first line into a pattern for ! to negate. | ||
16 | linden/LICENSES/* | ||
17 | !linden/LICENSES/LICENSE-logos.txt | ||
18 | |||
10 | linden/LICENSE-libraries-*.txt | 19 | linden/LICENSE-libraries-*.txt |
11 | linden/libraries/ | 20 | linden/libraries/ |
12 | linden/indra/newview/app_settings/mozilla*/ | 21 | linden/indra/newview/app_settings/mozilla*/ |
diff --git a/RELEASE_NOTES.txt b/RELEASE_NOTES.txt index b2532be..55e04c3 100644 --- a/RELEASE_NOTES.txt +++ b/RELEASE_NOTES.txt | |||
@@ -4,6 +4,97 @@ | |||
4 | 4 | ||
5 | 5 | ||
6 | =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- | 6 | =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- |
7 | =- 1.4.0 beta 2 -= | ||
8 | =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- | ||
9 | |||
10 | |||
11 | CHANGES | ||
12 | |||
13 | This version of Imprudence mostly contains bug fixes, as | ||
14 | Imprudence went into a feature freeze in anticipation of an RC | ||
15 | release to come later. | ||
16 | |||
17 | |||
18 | IMPROVEMENTS | ||
19 | |||
20 | * Selective cache clearing: now you can selectively delete | ||
21 | different types of disk cache separately. | ||
22 | |||
23 | BUG FIXES | ||
24 | |||
25 | Many bug fixes that are listed here - | ||
26 | |||
27 | http://wiki.kokuaviewer.org/wiki/Imprudence:Release_Notes/1.4.0_Beta_2 | ||
28 | |||
29 | |||
30 | |||
31 | =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- | ||
32 | =- 1.4.0 beta 1 -= | ||
33 | =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- | ||
34 | |||
35 | There was very many changes in 1.4.0 beta 1 compared to Imprudence | ||
36 | 1.3.2, this file only summarizes some of them. A more complete list | ||
37 | is here - | ||
38 | |||
39 | http://wiki.kokuaviewer.org/wiki/Imprudence:Release_Notes/1.4.0_Beta_1 | ||
40 | |||
41 | |||
42 | RELEASE HIGHLIGHTS | ||
43 | |||
44 | Compared to Imprudence 1.3, Imprudence 1.4 adds a mind-blowing | ||
45 | number of new features, UI improvements, and bug fixes. We | ||
46 | recommend Imprudence 1.3 users also upgrade to Imprudence 1.4 | ||
47 | soon, unless you require streaming audio support on Mac. | ||
48 | |||
49 | Here is a brief overview of some of the most notable new features, | ||
50 | grouped by category: | ||
51 | |||
52 | * General: Support for WindLight notecards; Updated Chinese, | ||
53 | French, German, and Japanese UIs; Derender object/avatar; Gestures | ||
54 | can use more keys; Reload $ Balance; Animation Overrider starts | ||
55 | working sooner. | ||
56 | |||
57 | * Communication: Spell Checking; AutoCorrect; Chat Translation; | ||
58 | Chatbar Commands; Display Names support; Highlight chat from | ||
59 | friends; Highlight chat mentioning your name or nickname(s); | ||
60 | Search bar in Friends and Groups lists. | ||
61 | |||
62 | * Content Creation: Support for Alpha and Tattoo layers; new Prim | ||
63 | Alignment tool; Local Textures (real-time preview of textures on | ||
64 | your computer without uploading); Object texture export from SL | ||
65 | (with TPVP-compliant permission checks); Upload support for | ||
66 | Photoshop PSD image files (available on Mac only); Copy/Paste | ||
67 | buttons in Build tools. | ||
68 | |||
69 | * Login, Grids, and OpenSim: Login name and password saved | ||
70 | per-grid; Support for variable sized regions (i.e. bigger than | ||
71 | 256m) when available; Support for the OpenRegionInfo capability. | ||
72 | |||
73 | * Map, Radar, and Teleport: Full Radar; Teleport History; Estate | ||
74 | Managers’ minimap radar distance is no longer limited; Right | ||
75 | clicking objects in Area Object Search to teleport to/cam to/edit | ||
76 | them. | ||
77 | |||
78 | * Media, Browser, and Networking: Media system revamped with | ||
79 | SLPlugin; Media Filters; Interaction and zoom with streaming | ||
80 | media/webpages; Improved XMLPRC and SOCKS5 proxy support; Parcel | ||
81 | media URLs are no longer hidden. | ||
82 | |||
83 | * Preferences: Reorganized Preferences window; New UI skins (Dark | ||
84 | and Gemini); Sliders for draw distance, etc. allow typing in exact | ||
85 | values; Search bar in Debug Settings. | ||
86 | |||
87 | * Texture Loading: Many, many texture loading improvements from | ||
88 | Robin Cornelius, Thickbrick Sleaford, and others; Various | ||
89 | improvements to help prevent unloaded (cloud) avatars. | ||
90 | |||
91 | * Development: Many, many, many code improvements and cleanup | ||
92 | under the hood. Special thanks to Aleric Inglewood and others for | ||
93 | their work on this. | ||
94 | |||
95 | |||
96 | |||
97 | =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- | ||
7 | =- 1.3.2 -= | 98 | =- 1.3.2 -= |
8 | =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- | 99 | =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- |
9 | 100 | ||
diff --git a/linden/LICENSES/LICENSE-logos.txt b/linden/LICENSES/LICENSE-logos.txt new file mode 100644 index 0000000..aa475b6 --- /dev/null +++ b/linden/LICENSES/LICENSE-logos.txt | |||
@@ -0,0 +1,31 @@ | |||
1 | COPYRIGHT AND PERMISSION NOTICE | ||
2 | |||
3 | Second Life(TM) Viewer Artwork. Copyright (C) 2008 Linden Research, Inc. | ||
4 | |||
5 | Linden Research, Inc. ("Linden Lab") licenses the Second Life viewer | ||
6 | artwork and other works in the files distributed with this Notice under | ||
7 | the Creative Commons Attribution-Share Alike 3.0 License, available at | ||
8 | http://creativecommons.org/licenses/by-sa/3.0/legalcode. For the license | ||
9 | summary, see http://creativecommons.org/licenses/by-sa/3.0/. | ||
10 | |||
11 | Notwithstanding the foregoing, all of Linden Lab's trademarks, including | ||
12 | but not limited to the Second Life brand name and Second Life Eye-in-Hand | ||
13 | logo, are subject to our trademark policy at | ||
14 | http://secondlife.com/corporate/trademark/. | ||
15 | |||
16 | If you distribute any copies or adaptations of the Second Life viewer | ||
17 | artwork or any other works in these files, you must include this Notice | ||
18 | and clearly identify any changes made to the original works. Include | ||
19 | this Notice and information where copyright notices are usually included, | ||
20 | for example, after your own copyright notice acknowledging your use of | ||
21 | the Second Life viewer artwork, in a text file distributed with your | ||
22 | program, in your application's About window, or on a credits page for | ||
23 | your work. | ||
24 | |||
25 | The following files included with the viewer artwork are licensed | ||
26 | under the MIT license http://www.opensource.org/licenses/mit-license.php: | ||
27 | |||
28 | go-previous-4.png | ||
29 | go-next-4.png | ||
30 | view-refresh-5.png | ||
31 | go-home-4.png | ||
diff --git a/linden/etc/message.xml b/linden/etc/message.xml index 8d34dd8..f86ca8b 100644 --- a/linden/etc/message.xml +++ b/linden/etc/message.xml | |||
@@ -702,6 +702,12 @@ | |||
702 | 702 | ||
703 | <key>FetchLib</key> | 703 | <key>FetchLib</key> |
704 | <boolean>true</boolean> | 704 | <boolean>true</boolean> |
705 | |||
706 | <key>ObjectMedia</key> | ||
707 | <boolean>false</boolean> | ||
708 | |||
709 | <key>ObjectMediaNavigate</key> | ||
710 | <boolean>false</boolean> | ||
705 | </map> | 711 | </map> |
706 | 712 | ||
707 | <key>messageBans</key> | 713 | <key>messageBans</key> |
diff --git a/linden/indra/cmake/00-Common.cmake b/linden/indra/cmake/00-Common.cmake index 1177fc2..6a97391 100644 --- a/linden/indra/cmake/00-Common.cmake +++ b/linden/indra/cmake/00-Common.cmake | |||
@@ -24,6 +24,11 @@ list(REMOVE_DUPLICATES TYPES) | |||
24 | set(CMAKE_CONFIGURATION_TYPES ${TYPES} CACHE STRING "Supported build types." FORCE) | 24 | set(CMAKE_CONFIGURATION_TYPES ${TYPES} CACHE STRING "Supported build types." FORCE) |
25 | unset(TYPES) | 25 | unset(TYPES) |
26 | 26 | ||
27 | # Work around nmake / VS difference. | ||
28 | set(VIEWER_CFG_INTDIR ${CMAKE_CFG_INTDIR}) | ||
29 | if (NMAKE) | ||
30 | set(VIEWER_CFG_INTDIR ${CMAKE_BUILD_TYPE}) | ||
31 | endif(NMAKE) | ||
27 | 32 | ||
28 | # Determine the number of bits of this processor | 33 | # Determine the number of bits of this processor |
29 | 34 | ||
@@ -68,7 +73,6 @@ if (WINDOWS) | |||
68 | /DUNICODE | 73 | /DUNICODE |
69 | /D_UNICODE | 74 | /D_UNICODE |
70 | /GS | 75 | /GS |
71 | /TP | ||
72 | /W3 | 76 | /W3 |
73 | /c | 77 | /c |
74 | /Zc:forScope | 78 | /Zc:forScope |
@@ -95,9 +99,10 @@ if (WINDOWS) | |||
95 | endif (MSVC80 OR MSVC90) | 99 | endif (MSVC80 OR MSVC90) |
96 | 100 | ||
97 | # Are we using the crummy Visual Studio KDU build workaround? | 101 | # Are we using the crummy Visual Studio KDU build workaround? |
98 | if (NOT VS_DISABLE_FATAL_WARNINGS) | 102 | # FIXME: Let's just disable this for now, see if it's needed, coz I have no idea what that work around is about. |
99 | add_definitions(/WX) | 103 | # if (NOT VS_DISABLE_FATAL_WARNINGS) |
100 | endif (NOT VS_DISABLE_FATAL_WARNINGS) | 104 | # add_definitions(/WX) |
105 | # endif (NOT VS_DISABLE_FATAL_WARNINGS) | ||
101 | endif (WINDOWS) | 106 | endif (WINDOWS) |
102 | 107 | ||
103 | 108 | ||
diff --git a/linden/indra/cmake/CMakeLists.txt b/linden/indra/cmake/CMakeLists.txt index 4a7d633..aca7b5a 100644 --- a/linden/indra/cmake/CMakeLists.txt +++ b/linden/indra/cmake/CMakeLists.txt | |||
@@ -93,7 +93,6 @@ set(cmake_SOURCE_FILES | |||
93 | UI.cmake | 93 | UI.cmake |
94 | UnixInstall.cmake | 94 | UnixInstall.cmake |
95 | Variables.cmake | 95 | Variables.cmake |
96 | ViewerArtwork.cmake | ||
97 | ViewerMiscLibs.cmake | 96 | ViewerMiscLibs.cmake |
98 | WebKitLibPlugin.cmake | 97 | WebKitLibPlugin.cmake |
99 | XmlRpcEpi.cmake | 98 | XmlRpcEpi.cmake |
diff --git a/linden/indra/cmake/Variables.cmake b/linden/indra/cmake/Variables.cmake index 88c0c5c..dfb0e70 100644 --- a/linden/indra/cmake/Variables.cmake +++ b/linden/indra/cmake/Variables.cmake | |||
@@ -81,10 +81,19 @@ endif (${CMAKE_SYSTEM_NAME} MATCHES "Linux") | |||
81 | 81 | ||
82 | if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") | 82 | if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") |
83 | set(DARWIN 1) | 83 | set(DARWIN 1) |
84 | |||
85 | # Incorporated settings from | ||
86 | # http://imprudenceviewer.org/w/index.php?title=How_to_compile&oldid=1647#Mac | ||
87 | # so that people don't have to set them every time they run develop.py | ||
88 | set(CMAKE_XCODE_ATTRIBUTE_GCC_VERSION "4.0") | ||
89 | set(CMAKE_XCODE_ATTRIBUTE_ARCHS '$(ARCHS_STANDARD_32_BIT)') | ||
90 | set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS "i386 ppc") | ||
91 | # set(CMAKE_XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH "NO") | ||
92 | |||
84 | # set this dynamically from the build system now - | 93 | # set this dynamically from the build system now - |
85 | # NOTE: wont have a distributable build unless you add this on the configure line with: | 94 | # NOTE: wont have a distributable build unless you add this on the configure line with: |
86 | # -DCMAKE_OSX_ARCHITECTURES:STRING='i386;ppc' | 95 | # -DCMAKE_OSX_ARCHITECTURES:STRING='i386;ppc' |
87 | set(CMAKE_OSX_ARCHITECTURES i386) | 96 | set(CMAKE_OSX_ARCHITECTURES i386;ppc) |
88 | set(CMAKE_OSX_SYSROOT /Developer/SDKs/MacOSX10.5.sdk) | 97 | set(CMAKE_OSX_SYSROOT /Developer/SDKs/MacOSX10.5.sdk) |
89 | if (CMAKE_OSX_ARCHITECTURES MATCHES "i386") | 98 | if (CMAKE_OSX_ARCHITECTURES MATCHES "i386") |
90 | set(ARCH i386) | 99 | set(ARCH i386) |
diff --git a/linden/indra/cmake/ViewerArtwork.cmake b/linden/indra/cmake/ViewerArtwork.cmake deleted file mode 100644 index 20210fc..0000000 --- a/linden/indra/cmake/ViewerArtwork.cmake +++ /dev/null | |||
@@ -1,16 +0,0 @@ | |||
1 | # -*- cmake -*- | ||
2 | # | ||
3 | # Download viewer artwork even when using standalone | ||
4 | |||
5 | include(Variables) | ||
6 | include(Prebuilt) | ||
7 | |||
8 | if (NOT STANDALONE) | ||
9 | use_prebuilt_binary(artwork) | ||
10 | use_prebuilt_binary(fonts) | ||
11 | else (NOT STANDALONE) | ||
12 | set(STANDALONE OFF) | ||
13 | use_prebuilt_binary(artwork) | ||
14 | use_prebuilt_binary(fonts) | ||
15 | set(STANDALONE ON) | ||
16 | endif (NOT STANDALONE) | ||
diff --git a/linden/indra/cmake/gpg.vs.cmake b/linden/indra/cmake/gpg.vs.cmake index a5220f4..c551b3a 100644 --- a/linden/indra/cmake/gpg.vs.cmake +++ b/linden/indra/cmake/gpg.vs.cmake | |||
@@ -4,3 +4,4 @@ | |||
4 | # make the libgcrypt, libgpg-error, and libotr compile. | 4 | # make the libgcrypt, libgpg-error, and libotr compile. |
5 | 5 | ||
6 | set(gpg.vs_INCLUDE_DIRS ) | 6 | set(gpg.vs_INCLUDE_DIRS ) |
7 | add_definitions( /DHAVE_CONFIG_H=1 ) | ||
diff --git a/linden/indra/cmake/libgcrypt.cmake b/linden/indra/cmake/libgcrypt.cmake index 4d19467..19ef1f8 100644 --- a/linden/indra/cmake/libgcrypt.cmake +++ b/linden/indra/cmake/libgcrypt.cmake | |||
@@ -2,9 +2,19 @@ | |||
2 | 2 | ||
3 | set(LIBGCRYPT_INCLUDE_DIRS | 3 | set(LIBGCRYPT_INCLUDE_DIRS |
4 | ${CMAKE_BINARY_DIR}/libgcrypt/include | 4 | ${CMAKE_BINARY_DIR}/libgcrypt/include |
5 | ${LIBS_OPEN_DIR}/libgcrypt/libgcrypt-1.2.2/src | ||
5 | ) | 6 | ) |
6 | 7 | ||
8 | if (DARWIN OR LINUX) | ||
7 | set(LIBGCRYPT_LIBRARIES | 9 | set(LIBGCRYPT_LIBRARIES |
8 | ${CMAKE_BINARY_DIR}/libgcrypt/lib/libgcrypt.a | 10 | ${CMAKE_BINARY_DIR}/libgcrypt/lib/libgcrypt.a |
9 | ) | 11 | ) |
12 | endif (DARWIN OR LINUX) | ||
10 | 13 | ||
14 | if (WINDOWS) | ||
15 | set(LIBGCRYPT_LIBRARIES | ||
16 | ${CMAKE_BINARY_DIR}/libgcrypt/gcrypt.lib | ||
17 | ) | ||
18 | endif (WINDOWS) | ||
19 | |||
20 | add_definitions( /DHAVE_CONFIG_H=1 ) | ||
diff --git a/linden/indra/cmake/libgpg-error.cmake b/linden/indra/cmake/libgpg-error.cmake index 417ad19..4ec0926 100644 --- a/linden/indra/cmake/libgpg-error.cmake +++ b/linden/indra/cmake/libgpg-error.cmake | |||
@@ -2,9 +2,19 @@ | |||
2 | 2 | ||
3 | set(LIBGPG-ERROR_INCLUDE_DIRS | 3 | set(LIBGPG-ERROR_INCLUDE_DIRS |
4 | ${CMAKE_BINARY_DIR}/libgpg-error/include | 4 | ${CMAKE_BINARY_DIR}/libgpg-error/include |
5 | ${LIBS_OPEN_DIR}/libgpg-error/libgpg-error-1.0/src | ||
5 | ) | 6 | ) |
6 | 7 | ||
8 | if (DARWIN OR LINUX) | ||
7 | set(LIBGPG-ERROR_LIBRARIES | 9 | set(LIBGPG-ERROR_LIBRARIES |
8 | ${CMAKE_BINARY_DIR}/libgpg-error/lib/libgpg-error.a | 10 | ${CMAKE_BINARY_DIR}/libgpg-error/lib/libgpg-error.a |
9 | ) | 11 | ) |
12 | endif (DARWIN OR LINUX) | ||
10 | 13 | ||
14 | if (WINDOWS) | ||
15 | set(LIBGPG-ERROR_LIBRARIES | ||
16 | ${CMAKE_BINARY_DIR}/libgpg-error/gpg-error.lib | ||
17 | ) | ||
18 | endif (WINDOWS) | ||
19 | |||
20 | add_definitions( /DHAVE_CONFIG_H=1 ) | ||
diff --git a/linden/indra/cmake/libotr.cmake b/linden/indra/cmake/libotr.cmake index 30544f8..6fd61f2 100644 --- a/linden/indra/cmake/libotr.cmake +++ b/linden/indra/cmake/libotr.cmake | |||
@@ -6,3 +6,5 @@ set(LIBOTR_INCLUDE_DIRS | |||
6 | set(LIBOTR_LIBRARIES | 6 | set(LIBOTR_LIBRARIES |
7 | otr | 7 | otr |
8 | ) | 8 | ) |
9 | |||
10 | add_definitions( /DHAVE_CONFIG_H=1 ) | ||
diff --git a/linden/indra/cmake/libotrb.cmake b/linden/indra/cmake/libotrb.cmake index eb8522f..e9290e8 100644 --- a/linden/indra/cmake/libotrb.cmake +++ b/linden/indra/cmake/libotrb.cmake | |||
@@ -2,3 +2,5 @@ | |||
2 | include(Prebuilt) | 2 | include(Prebuilt) |
3 | 3 | ||
4 | set(OTR_LIBRARY otr) | 4 | set(OTR_LIBRARY otr) |
5 | |||
6 | add_definitions( /DHAVE_CONFIG_H=1 ) | ||
diff --git a/linden/indra/develop.py b/linden/indra/develop.py index ffe8e61..100f719 100755 --- a/linden/indra/develop.py +++ b/linden/indra/develop.py | |||
@@ -416,7 +416,7 @@ class LinuxSetup(UnixSetup): | |||
416 | print 'Running %r' % cmd | 416 | print 'Running %r' % cmd |
417 | self.run(cmd) | 417 | self.run(cmd) |
418 | 418 | ||
419 | 419 | ||
420 | class DarwinSetup(UnixSetup): | 420 | class DarwinSetup(UnixSetup): |
421 | def __init__(self): | 421 | def __init__(self): |
422 | super(DarwinSetup, self).__init__() | 422 | super(DarwinSetup, self).__init__() |
@@ -443,7 +443,12 @@ class DarwinSetup(UnixSetup): | |||
443 | type=self.build_type | 443 | type=self.build_type |
444 | ) | 444 | ) |
445 | if self.universal == 'ON': | 445 | if self.universal == 'ON': |
446 | args['universal'] = '-DCMAKE_OSX_ARCHITECTURES:STRING=\'i386;ppc\'' | ||
447 | elif self.arch == 'ppc': | ||
448 | args['universal'] = '-DCMAKE_OSX_ARCHITECTURES:STRING=\'ppc\'' | ||
449 | else: | ||
446 | args['universal'] = '-DCMAKE_OSX_ARCHITECTURES:STRING=\'i386\'' | 450 | args['universal'] = '-DCMAKE_OSX_ARCHITECTURES:STRING=\'i386\'' |
451 | |||
447 | #if simple: | 452 | #if simple: |
448 | # return 'cmake %(opts)s %(dir)r' % args | 453 | # return 'cmake %(opts)s %(dir)r' % args |
449 | return ('cmake -G %(generator)r ' | 454 | return ('cmake -G %(generator)r ' |
@@ -488,6 +493,10 @@ class WindowsSetup(PlatformSetup): | |||
488 | 'vc100' : { | 493 | 'vc100' : { |
489 | 'gen' : r'Visual Studio 10', | 494 | 'gen' : r'Visual Studio 10', |
490 | 'ver' : r'10.0' | 495 | 'ver' : r'10.0' |
496 | }, | ||
497 | 'nmake' : { | ||
498 | 'gen' : r'NMake Makefiles', | ||
499 | 'ver' : r'' | ||
491 | } | 500 | } |
492 | } | 501 | } |
493 | gens['vs2003'] = gens['vc71'] | 502 | gens['vs2003'] = gens['vc71'] |
@@ -503,6 +512,41 @@ class WindowsSetup(PlatformSetup): | |||
503 | self._generator = None | 512 | self._generator = None |
504 | self.incredibuild = False | 513 | self.incredibuild = False |
505 | 514 | ||
515 | def find_visual_studio(self, gen=None): | ||
516 | if gen is None: | ||
517 | gen = self._generator | ||
518 | gen = gen.lower() | ||
519 | try: | ||
520 | import _winreg | ||
521 | key_str = (r'SOFTWARE\Microsoft\VisualStudio\%s\Setup\VS' % | ||
522 | self.gens[gen]['ver']) | ||
523 | value_str = (r'EnvironmentDirectory') | ||
524 | reg = _winreg.ConnectRegistry(None, _winreg.HKEY_LOCAL_MACHINE) | ||
525 | key = _winreg.OpenKey(reg, key_str) | ||
526 | value = _winreg.QueryValueEx(key, value_str)[0] | ||
527 | print 'Found: %s' % value | ||
528 | return value | ||
529 | except WindowsError, err: | ||
530 | return '' | ||
531 | |||
532 | def find_visual_studio_express(self, gen=None): | ||
533 | if gen is None: | ||
534 | gen = self._generator | ||
535 | gen = gen.lower() | ||
536 | try: | ||
537 | import _winreg | ||
538 | key_str = (r'SOFTWARE\Microsoft\VCExpress\%s\Setup\VC' % | ||
539 | self.gens[gen]['ver']) | ||
540 | value_str = (r'ProductDir') | ||
541 | reg = _winreg.ConnectRegistry(None, _winreg.HKEY_LOCAL_MACHINE) | ||
542 | key = _winreg.OpenKey(reg, key_str) | ||
543 | value = _winreg.QueryValueEx(key, value_str)[0]+"vcpackages" | ||
544 | print 'Found: %s' % value | ||
545 | self.using_express = True | ||
546 | return value | ||
547 | except WindowsError, err: | ||
548 | return '' | ||
549 | |||
506 | def _get_generator(self): | 550 | def _get_generator(self): |
507 | if self._generator is None: | 551 | if self._generator is None: |
508 | for version in 'vc80 vc90 vc100 vc71'.split(): | 552 | for version in 'vc80 vc90 vc100 vc71'.split(): |
@@ -511,9 +555,8 @@ class WindowsSetup(PlatformSetup): | |||
511 | print 'Building with ', self.gens[version]['gen'] | 555 | print 'Building with ', self.gens[version]['gen'] |
512 | break | 556 | break |
513 | else: | 557 | else: |
514 | print >> sys.stderr, 'Cannot find a Visual Studio installation, testing for express editions' | ||
515 | for version in 'vc80 vc90 vc100 vc71'.split(): | 558 | for version in 'vc80 vc90 vc100 vc71'.split(): |
516 | if self.find_visual_studio_express(version): | 559 | if self.find_visual_studio_express(version) != '': |
517 | self._generator = version | 560 | self._generator = version |
518 | self.using_express = True | 561 | self.using_express = True |
519 | print 'Building with ', self.gens[version]['gen'] , "Express edition" | 562 | print 'Building with ', self.gens[version]['gen'] , "Express edition" |
@@ -524,6 +567,8 @@ class WindowsSetup(PlatformSetup): | |||
524 | return self._generator | 567 | return self._generator |
525 | 568 | ||
526 | def _set_generator(self, gen): | 569 | def _set_generator(self, gen): |
570 | if gen == 'nmake': | ||
571 | self._get_generator() | ||
527 | self._generator = gen | 572 | self._generator = gen |
528 | 573 | ||
529 | generator = property(_get_generator, _set_generator) | 574 | generator = property(_get_generator, _set_generator) |
@@ -541,83 +586,58 @@ class WindowsSetup(PlatformSetup): | |||
541 | opts=quote(opts), | 586 | opts=quote(opts), |
542 | standalone=self.standalone, | 587 | standalone=self.standalone, |
543 | unattended=self.unattended, | 588 | unattended=self.unattended, |
544 | project_name=self.project_name | 589 | project_name=self.project_name, |
590 | type=self.build_type, | ||
591 | use_vstool='ON', | ||
592 | nmake='' | ||
545 | ) | 593 | ) |
594 | if self.generator == 'nmake': | ||
595 | args['use_vstool'] = 'OFF' | ||
596 | args['nmake'] = '-DNMAKE:BOOL=ON' | ||
597 | if self.using_express: | ||
598 | args['using_express'] = 'ON' | ||
599 | args['use_vstool'] = 'OFF' | ||
600 | else: | ||
601 | args['using_express'] = 'OFF' | ||
546 | # default to packaging disabled | 602 | # default to packaging disabled |
547 | # if simple: | 603 | # if simple: |
548 | # return 'cmake %(opts)s "%(dir)s"' % args | 604 | # return 'cmake %(opts)s "%(dir)s"' % args |
549 | return ('cmake -G "%(generator)s" ' | 605 | return ('cmake -G "%(generator)s" ' |
606 | '-DCMAKE_BUILD_TYPE:STRING=%(type)s ' | ||
550 | '-DSTANDALONE:BOOL=%(standalone)s ' | 607 | '-DSTANDALONE:BOOL=%(standalone)s ' |
551 | '-DUNATTENDED:BOOL=%(unattended)s ' | 608 | '-DUNATTENDED:BOOL=%(unattended)s ' |
552 | '-DROOT_PROJECT_NAME:STRING=%(project_name)s ' | 609 | '-DROOT_PROJECT_NAME:STRING=%(project_name)s ' |
553 | #'-DPACKAGE:BOOL=ON ' | 610 | '-DUSING_EXPRESS:BOOL=%(using_express)s ' |
611 | '-DUSE_VSTOOL:BOOL=%(use_vstool)s ' | ||
612 | '%(nmake)s ' | ||
554 | '%(opts)s "%(dir)s"' % args) | 613 | '%(opts)s "%(dir)s"' % args) |
555 | 614 | ||
556 | def find_visual_studio(self, gen=None): | ||
557 | if gen is None: | ||
558 | gen = self._generator | ||
559 | gen = gen.lower() | ||
560 | try: | ||
561 | import _winreg | ||
562 | key_str = (r'SOFTWARE\Microsoft\VisualStudio\%s\Setup\VS' % | ||
563 | self.gens[gen]['ver']) | ||
564 | value_str = (r'EnvironmentDirectory') | ||
565 | print ('Reading VS environment from HKEY_LOCAL_MACHINE\%s\%s' % | ||
566 | (key_str, value_str)) | ||
567 | print key_str | ||
568 | |||
569 | reg = _winreg.ConnectRegistry(None, _winreg.HKEY_LOCAL_MACHINE) | ||
570 | key = _winreg.OpenKey(reg, key_str) | ||
571 | value = _winreg.QueryValueEx(key, value_str)[0] | ||
572 | print 'Found: %s' % value | ||
573 | return value | ||
574 | except WindowsError, err: | ||
575 | print >> sys.stderr, "Didn't find ", self.gens[gen]['gen'] | ||
576 | return '' | ||
577 | |||
578 | def find_visual_studio_express(self, gen=None): | ||
579 | if gen is None: | ||
580 | gen = self._generator | ||
581 | gen = gen.lower() | ||
582 | try: | ||
583 | import _winreg | ||
584 | key_str = (r'SOFTWARE\Microsoft\VCExpress\%s\Setup\VC' % | ||
585 | self.gens[gen]['ver']) | ||
586 | value_str = (r'ProductDir') | ||
587 | print ('Reading VS environment from HKEY_LOCAL_MACHINE\%s\%s' % | ||
588 | (key_str, value_str)) | ||
589 | print key_str | ||
590 | |||
591 | reg = _winreg.ConnectRegistry(None, _winreg.HKEY_LOCAL_MACHINE) | ||
592 | key = _winreg.OpenKey(reg, key_str) | ||
593 | value = _winreg.QueryValueEx(key, value_str)[0]+"IDE" | ||
594 | print 'Found: %s' % value | ||
595 | self.using_express = True | ||
596 | return value | ||
597 | except WindowsError, err: | ||
598 | print >> sys.stderr, "Didn't find ", self.gens[gen]['gen'] | ||
599 | return '' | ||
600 | |||
601 | def get_build_cmd(self): | 615 | def get_build_cmd(self): |
602 | if self.incredibuild: | 616 | if self.incredibuild: |
603 | config = self.build_type | 617 | config = self.build_type |
604 | if self.gens[self.generator]['ver'] in [ r'8.0', r'9.0', r'10.0', r'7.1' ]: | 618 | if self.gens[self.generator]['ver'] in [ r'8.0', r'9.0', r'10.0', r'7.1' ]: |
605 | config = '\"%s|Win32\"' % config | 619 | config = '\"%s|Win32\"' % config |
606 | |||
607 | return "buildconsole %s.sln /build %s" % (self.project_name, config) | 620 | return "buildconsole %s.sln /build %s" % (self.project_name, config) |
608 | 621 | ||
609 | environment = self.find_visual_studio() | 622 | environment = self.find_visual_studio(self.generator) |
610 | if environment == '': | 623 | if environment == '': |
611 | environment = self.find_visual_studio_express() | 624 | environment = self.find_visual_studio_express(self.generator) |
612 | if environment == '': | 625 | if self.generator != 'nmake': |
613 | print >> sys.stderr, "Something went very wrong during build stage, could not find a Visual Studio?" | 626 | if environment == '': |
614 | else: | 627 | print >> sys.stderr, "Something went very wrong during build stage, could not find a Visual Studio?" |
615 | print >> sys.stderr, "\nSolution generation complete, as you are using an express edition the final\n stages will need to be completed by hand" | 628 | else: |
616 | build_dirs=self.build_dirs(); | 629 | build_dirs=self.build_dirs(); |
617 | print >> sys.stderr, "Solution can now be found in:", build_dirs[0] | 630 | return("\"\"%s\\vcbuild\" /useenv %s.sln \"%s|win32\"\"" % (environment, self.project_name, self.build_type)) |
618 | print >> sys.stderr, "Set %s as startup project" % self.project_name | 631 | |
619 | print >> sys.stderr, "Set build target is Release or RelWithDbgInfo" | 632 | if self.generator == 'nmake': |
620 | exit(0) | 633 | # Hack around a bug in cmake that I'm surprised did not hit GUI controlled builds. |
634 | self.run(r'sed -i "s|\(^RC_FLAGS .* \) /GS .*$|\1|" build-nmake/win_crash_logger/CMakeFiles/windows-crash-logger.dir/flags.make') | ||
635 | self.run(r'sed -i "s|\(^RC_FLAGS .* \) /GS .*$|\1|" build-nmake/newview/CMakeFiles/meta-impy-bin.dir/flags.make') | ||
636 | self.run(r'sed -i "s|\(^RC_FLAGS .* \) /EHsc .*/Zm1000 \($\)|\1\2|" build-nmake/win_crash_logger/CMakeFiles/windows-crash-logger.dir/flags.make') | ||
637 | self.run(r'sed -i "s|\(^RC_FLAGS .* \) /EHsc .*/Zm1000 \($\)|\1\2|" build-nmake/newview/CMakeFiles/meta-impy-bin.dir/flags.make') | ||
638 | # Evil hack. | ||
639 | self.run(r'touch newview/touched.bat') | ||
640 | return 'nmake' | ||
621 | 641 | ||
622 | # devenv.com is CLI friendly, devenv.exe... not so much. | 642 | # devenv.com is CLI friendly, devenv.exe... not so much. |
623 | return ('"%sdevenv.com" %s.sln /build %s' % | 643 | return ('"%sdevenv.com" %s.sln /build %s' % |
@@ -637,55 +657,29 @@ class WindowsSetup(PlatformSetup): | |||
637 | raise CommandError('the command %r %s' % | 657 | raise CommandError('the command %r %s' % |
638 | (name, ret)) | 658 | (name, ret)) |
639 | 659 | ||
640 | def run_cmake(self, args=[]): | ||
641 | '''Override to add the vstool.exe call after running cmake.''' | ||
642 | PlatformSetup.run_cmake(self, args) | ||
643 | if self.unattended == 'OFF': | ||
644 | if self.using_express == False: | ||
645 | self.run_vstool() | ||
646 | |||
647 | def run_vstool(self): | ||
648 | for build_dir in self.build_dirs(): | ||
649 | stamp = os.path.join(build_dir, 'vstool.txt') | ||
650 | try: | ||
651 | prev_build = open(stamp).read().strip() | ||
652 | except IOError: | ||
653 | prev_build = '' | ||
654 | if prev_build == self.build_type: | ||
655 | # Only run vstool if the build type has changed. | ||
656 | continue | ||
657 | vstool_cmd = (os.path.join('tools','vstool','VSTool.exe') + | ||
658 | ' --solution ' + | ||
659 | os.path.join(build_dir,'meta-impy.sln') + | ||
660 | ' --config ' + self.build_type + | ||
661 | ' --startup meta-impy-bin') | ||
662 | print 'Running %r in %r' % (vstool_cmd, getcwd()) | ||
663 | self.run(vstool_cmd) | ||
664 | print >> open(stamp, 'w'), self.build_type | ||
665 | |||
666 | def run_build(self, opts, targets): | 660 | def run_build(self, opts, targets): |
667 | cwd = getcwd() | 661 | cwd = getcwd() |
668 | build_cmd = self.get_build_cmd() | 662 | build_cmd = self.get_build_cmd() |
669 | 663 | if build_cmd != "": | |
670 | for d in self.build_dirs(): | 664 | for d in self.build_dirs(): |
671 | try: | 665 | try: |
672 | os.chdir(d) | 666 | os.chdir(d) |
673 | if targets: | 667 | if targets: |
674 | for t in targets: | 668 | for t in targets: |
675 | cmd = '%s /project %s %s' % (build_cmd, t, ' '.join(opts)) | 669 | cmd = '%s /project %s %s' % (build_cmd, t, ' '.join(opts)) |
670 | print 'Running %r in %r' % (cmd, d) | ||
671 | self.run(cmd) | ||
672 | else: | ||
673 | cmd = '%s %s' % (build_cmd, ' '.join(opts)) | ||
676 | print 'Running %r in %r' % (cmd, d) | 674 | print 'Running %r in %r' % (cmd, d) |
677 | self.run(cmd) | 675 | self.run(cmd) |
678 | else: | 676 | finally: |
679 | cmd = '%s %s' % (build_cmd, ' '.join(opts)) | 677 | os.chdir(cwd) |
680 | print 'Running %r in %r' % (cmd, d) | 678 | |
681 | self.run(cmd) | ||
682 | finally: | ||
683 | os.chdir(cwd) | ||
684 | |||
685 | class CygwinSetup(WindowsSetup): | 679 | class CygwinSetup(WindowsSetup): |
686 | def __init__(self): | 680 | def __init__(self): |
687 | super(CygwinSetup, self).__init__() | 681 | super(CygwinSetup, self).__init__() |
688 | self.generator = 'vc80' | 682 | self.generator = 'nmake' |
689 | 683 | ||
690 | def cmake_commandline(self, src_dir, build_dir, opts, simple): | 684 | def cmake_commandline(self, src_dir, build_dir, opts, simple): |
691 | dos_dir = commands.getoutput("cygpath -w %s" % src_dir) | 685 | dos_dir = commands.getoutput("cygpath -w %s" % src_dir) |
@@ -695,11 +689,13 @@ class CygwinSetup(WindowsSetup): | |||
695 | opts=quote(opts), | 689 | opts=quote(opts), |
696 | standalone=self.standalone, | 690 | standalone=self.standalone, |
697 | unattended=self.unattended, | 691 | unattended=self.unattended, |
698 | project_name=self.project_name | 692 | project_name=self.project_name, |
693 | type=self.build_type | ||
699 | ) | 694 | ) |
700 | #if simple: | 695 | #if simple: |
701 | # return 'cmake %(opts)s "%(dir)s"' % args | 696 | # return 'cmake %(opts)s "%(dir)s"' % args |
702 | return ('cmake -G "%(generator)s" ' | 697 | return ('cmake -G "%(generator)s" ' |
698 | '-DCMAKE_BUILD_TYPE:STRING=%(type)s ' | ||
703 | '-DUNATTENDED:BOOl=%(unattended)s ' | 699 | '-DUNATTENDED:BOOl=%(unattended)s ' |
704 | '-DSTANDALONE:BOOL=%(standalone)s ' | 700 | '-DSTANDALONE:BOOL=%(standalone)s ' |
705 | '-DROOT_PROJECT_NAME:STRING=%(project_name)s ' | 701 | '-DROOT_PROJECT_NAME:STRING=%(project_name)s ' |
@@ -726,7 +722,7 @@ Options: | |||
726 | -m32 | -m64 build architecture (32-bit or 64-bit) | 722 | -m32 | -m64 build architecture (32-bit or 64-bit) |
727 | -N | --no-distcc disable use of distcc | 723 | -N | --no-distcc disable use of distcc |
728 | -G | --generator=NAME generator name | 724 | -G | --generator=NAME generator name |
729 | Windows: VC80 (VS2005--default), VC71 (VS2003), | 725 | Windows: NMake, VC80 (VS2005--default), VC71 (VS2003), |
730 | VC90 (VS2008), or VC100 (VS2010) | 726 | VC90 (VS2008), or VC100 (VS2010) |
731 | Mac OS X: Xcode (default), Unix Makefiles | 727 | Mac OS X: Xcode (default), Unix Makefiles |
732 | Linux: Unix Makefiles (default), KDevelop3 | 728 | Linux: Unix Makefiles (default), KDevelop3 |
@@ -818,7 +814,6 @@ For example: develop.py configure -DSERVER:BOOL=OFF""" | |||
818 | for d in setup.build_dirs(): | 814 | for d in setup.build_dirs(): |
819 | if not os.path.exists(d): | 815 | if not os.path.exists(d): |
820 | raise CommandError('run "develop.py cmake" first') | 816 | raise CommandError('run "develop.py cmake" first') |
821 | setup.run_cmake() | ||
822 | opts, targets = setup.parse_build_opts(args) | 817 | opts, targets = setup.parse_build_opts(args) |
823 | setup.run_build(opts, targets) | 818 | setup.run_build(opts, targets) |
824 | elif cmd == 'clean': | 819 | elif cmd == 'clean': |
diff --git a/linden/indra/gpg.vs/libgpg-error-1.1.vs/custom/config.h b/linden/indra/gpg.vs/libgpg-error-1.1.vs/custom/config.h index 39d58f5..6a18960 100755 --- a/linden/indra/gpg.vs/libgpg-error-1.1.vs/custom/config.h +++ b/linden/indra/gpg.vs/libgpg-error-1.1.vs/custom/config.h | |||
@@ -93,8 +93,10 @@ | |||
93 | #define WIN32_LEAN_AND_MEAN | 93 | #define WIN32_LEAN_AND_MEAN |
94 | #include <windows.h> | 94 | #include <windows.h> |
95 | 95 | ||
96 | #define strcasecmp stricmp | 96 | #define strcasecmp _stricmp |
97 | #define strncasecmp strnicmp | 97 | #define strncasecmp _strnicmp |
98 | #define snprintf _snprintf | 98 | #define snprintf _snprintf |
99 | //#define snprintf _snprintf_s | ||
100 | //#define strerror strerror_s | ||
99 | 101 | ||
100 | #endif | 102 | #endif |
diff --git a/linden/indra/llcommon/llsdserialize.cpp b/linden/indra/llcommon/llsdserialize.cpp index e2be922..f648c5c 100644 --- a/linden/indra/llcommon/llsdserialize.cpp +++ b/linden/indra/llcommon/llsdserialize.cpp | |||
@@ -1447,9 +1447,12 @@ S32 LLSDBinaryFormatter::format(const LLSD& data, std::ostream& ostr, U32 option | |||
1447 | } | 1447 | } |
1448 | 1448 | ||
1449 | case LLSD::TypeUUID: | 1449 | case LLSD::TypeUUID: |
1450 | { | ||
1450 | ostr.put('u'); | 1451 | ostr.put('u'); |
1451 | ostr.write((const char*)(&(data.asUUID().mData)), UUID_BYTES); | 1452 | U8 *value = data.asUUID().mData; |
1453 | ostr.write((const char*)(&value), UUID_BYTES); | ||
1452 | break; | 1454 | break; |
1455 | } | ||
1453 | 1456 | ||
1454 | case LLSD::TypeString: | 1457 | case LLSD::TypeString: |
1455 | ostr.put('s'); | 1458 | ostr.put('s'); |
diff --git a/linden/indra/llcommon/llsdserialize_xml.cpp b/linden/indra/llcommon/llsdserialize_xml.cpp index 7729a5f..7c3dcbf 100644 --- a/linden/indra/llcommon/llsdserialize_xml.cpp +++ b/linden/indra/llcommon/llsdserialize_xml.cpp | |||
@@ -394,13 +394,15 @@ S32 LLSDXMLParser::Impl::parse(std::istream& input, LLSD& data) | |||
394 | if (status == XML_STATUS_ERROR) | 394 | if (status == XML_STATUS_ERROR) |
395 | { | 395 | { |
396 | std::string error_string(XML_ErrorString(XML_GetErrorCode( mParser ))); | 396 | std::string error_string(XML_ErrorString(XML_GetErrorCode( mParser ))); |
397 | // if (input.gcount() == 0) | 397 | // I know, this if seems odd, but it fixes a problem with not being able to see nearby sims, or TP to other sims. |
398 | // { | 398 | // No idea why. |
399 | // // nothing to do -- MC | 399 | if (input && (input.gcount() == 0)) |
400 | // data = LLSD(); | 400 | { |
401 | // return LLSDParser::PARSE_FAILURE; | 401 | // nothing to do -- MC |
402 | // } | 402 | data = LLSD(); |
403 | /*else*/ if (error_string != "parsing aborted") // end of input | 403 | return LLSDParser::PARSE_FAILURE; |
404 | } | ||
405 | else if (error_string != "parsing aborted") // end of input | ||
404 | { | 406 | { |
405 | S32 line_number = XML_GetCurrentLineNumber( mParser ); | 407 | S32 line_number = XML_GetCurrentLineNumber( mParser ); |
406 | // This parses LLCurl::Responder::completedRaw always, even | 408 | // This parses LLCurl::Responder::completedRaw always, even |
diff --git a/linden/indra/llcommon/llstring.cpp b/linden/indra/llcommon/llstring.cpp index 95aa7b5..fe0ab2a 100644 --- a/linden/indra/llcommon/llstring.cpp +++ b/linden/indra/llcommon/llstring.cpp | |||
@@ -596,6 +596,40 @@ std::string utf8str_removeCRLF(const std::string& utf8str) | |||
596 | return out; | 596 | return out; |
597 | } | 597 | } |
598 | 598 | ||
599 | bool is_hex_string(U8* str, S32 len) | ||
600 | { | ||
601 | bool rv = true; | ||
602 | U8* c = str; | ||
603 | while(rv && len--) | ||
604 | { | ||
605 | switch(*c) | ||
606 | { | ||
607 | case '0': | ||
608 | case '1': | ||
609 | case '2': | ||
610 | case '3': | ||
611 | case '4': | ||
612 | case '5': | ||
613 | case '6': | ||
614 | case '7': | ||
615 | case '8': | ||
616 | case '9': | ||
617 | case 'a': | ||
618 | case 'b': | ||
619 | case 'c': | ||
620 | case 'd': | ||
621 | case 'e': | ||
622 | case 'f': | ||
623 | ++c; | ||
624 | break; | ||
625 | default: | ||
626 | rv = false; | ||
627 | break; | ||
628 | } | ||
629 | } | ||
630 | return rv; | ||
631 | } | ||
632 | |||
599 | bool LLStringOps::isHexString(const std::string& str) | 633 | bool LLStringOps::isHexString(const std::string& str) |
600 | { | 634 | { |
601 | const char* buf = str.c_str(); | 635 | const char* buf = str.c_str(); |
diff --git a/linden/indra/llcommon/llstring.h b/linden/indra/llcommon/llstring.h index ced9713..e1b5cbd 100644 --- a/linden/indra/llcommon/llstring.h +++ b/linden/indra/llcommon/llstring.h | |||
@@ -458,6 +458,8 @@ LL_COMMON_API std::string mbcsstring_makeASCII(const std::string& str); | |||
458 | 458 | ||
459 | LL_COMMON_API std::string utf8str_removeCRLF(const std::string& utf8str); | 459 | LL_COMMON_API std::string utf8str_removeCRLF(const std::string& utf8str); |
460 | 460 | ||
461 | LL_COMMON_API bool is_hex_string(U8* str, S32 len); | ||
462 | |||
461 | 463 | ||
462 | #if LL_WINDOWS | 464 | #if LL_WINDOWS |
463 | /* @name Windows string helpers | 465 | /* @name Windows string helpers |
diff --git a/linden/indra/llmath/llsdutil_math.cpp b/linden/indra/llmath/llsdutil_math.cpp index 073cb2e..8ec8661 100644 --- a/linden/indra/llmath/llsdutil_math.cpp +++ b/linden/indra/llmath/llsdutil_math.cpp | |||
@@ -6,7 +6,7 @@ | |||
6 | * | 6 | * |
7 | * $LicenseInfo:firstyear=2006&license=viewergpl$ | 7 | * $LicenseInfo:firstyear=2006&license=viewergpl$ |
8 | * | 8 | * |
9 | * Copyright (c) 2006-2009, Linden Research, Inc. | 9 | * Copyright (c) 2006-2010, Linden Research, Inc. |
10 | * | 10 | * |
11 | * Second Life Viewer Source Code | 11 | * Second Life Viewer Source Code |
12 | * The source code in this file ("Source Code") is provided by Linden Lab | 12 | * The source code in this file ("Source Code") is provided by Linden Lab |
@@ -14,13 +14,13 @@ | |||
14 | * ("GPL"), unless you have obtained a separate licensing agreement | 14 | * ("GPL"), unless you have obtained a separate licensing agreement |
15 | * ("Other License"), formally executed by you and Linden Lab. Terms of | 15 | * ("Other License"), formally executed by you and Linden Lab. Terms of |
16 | * the GPL can be found in doc/GPL-license.txt in this distribution, or | 16 | * the GPL can be found in doc/GPL-license.txt in this distribution, or |
17 | * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 | 17 | * online at http://secondlife.com/developers/opensource/gplv2 |
18 | * | 18 | * |
19 | * There are special exceptions to the terms and conditions of the GPL as | 19 | * There are special exceptions to the terms and conditions of the GPL as |
20 | * it is applied to this Source Code. View the full text of the exception | 20 | * it is applied to this Source Code. View the full text of the exception |
21 | * in the file doc/FLOSS-exception.txt in this software distribution, or | 21 | * in the file doc/FLOSS-exception.txt in this software distribution, or |
22 | * online at | 22 | * online at |
23 | * http://secondlifegrid.net/programs/open_source/licensing/flossexception | 23 | * http://secondlife.com/developers/opensource/flossexception |
24 | * | 24 | * |
25 | * By copying, modifying or distributing this software, you acknowledge | 25 | * By copying, modifying or distributing this software, you acknowledge |
26 | * that you have read and understood your obligations described above, | 26 | * that you have read and understood your obligations described above, |
@@ -30,11 +30,12 @@ | |||
30 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | 30 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, |
31 | * COMPLETENESS OR PERFORMANCE. | 31 | * COMPLETENESS OR PERFORMANCE. |
32 | * $/LicenseInfo$ | 32 | * $/LicenseInfo$ |
33 | * | ||
33 | */ | 34 | */ |
34 | 35 | ||
35 | #include "linden_common.h" | 36 | #include "linden_common.h" |
36 | 37 | ||
37 | #include "llsdutil.h" | 38 | #include "llsdutil_math.h" |
38 | 39 | ||
39 | #include "v3math.h" | 40 | #include "v3math.h" |
40 | #include "v4math.h" | 41 | #include "v4math.h" |
@@ -165,9 +166,6 @@ LLSD ll_sd_from_color4(const LLColor4& c) | |||
165 | LLColor4 ll_color4_from_sd(const LLSD& sd) | 166 | LLColor4 ll_color4_from_sd(const LLSD& sd) |
166 | { | 167 | { |
167 | LLColor4 c; | 168 | LLColor4 c; |
168 | c.mV[0] = (F32)sd[0].asReal(); | 169 | c.setValue(sd); |
169 | c.mV[1] = (F32)sd[1].asReal(); | ||
170 | c.mV[2] = (F32)sd[2].asReal(); | ||
171 | c.mV[3] = (F32)sd[3].asReal(); | ||
172 | return c; | 170 | return c; |
173 | } | 171 | } |
diff --git a/linden/indra/llmath/llvolume.cpp b/linden/indra/llmath/llvolume.cpp index 618048c..9dc3746 100644 --- a/linden/indra/llmath/llvolume.cpp +++ b/linden/indra/llmath/llvolume.cpp | |||
@@ -4437,14 +4437,7 @@ BOOL LLVolumeFace::createUnCutCubeCap(LLVolume* volume, BOOL partial_build) | |||
4437 | const std::vector<LLVector3>& profile = volume->getProfile().mProfile; | 4437 | const std::vector<LLVector3>& profile = volume->getProfile().mProfile; |
4438 | S32 max_s = volume->getProfile().getTotal(); | 4438 | S32 max_s = volume->getProfile().getTotal(); |
4439 | S32 max_t = volume->getPath().mPath.size(); | 4439 | S32 max_t = volume->getPath().mPath.size(); |
4440 | 4440 | S32 grid_size = (profile.size() - 1) / 4; | |
4441 | // S32 i; | ||
4442 | S32 num_vertices = 0, num_indices = 0; | ||
4443 | S32 grid_size = (profile.size()-1)/4; | ||
4444 | S32 quad_count = (grid_size * grid_size); | ||
4445 | |||
4446 | num_vertices = (grid_size+1)*(grid_size+1); | ||
4447 | num_indices = quad_count * 4; | ||
4448 | 4441 | ||
4449 | LLVector3& min = mExtents[0]; | 4442 | LLVector3& min = mExtents[0]; |
4450 | LLVector3& max = mExtents[1]; | 4443 | LLVector3& max = mExtents[1]; |
diff --git a/linden/indra/llmessage/llblowfishcipher.cpp b/linden/indra/llmessage/llblowfishcipher.cpp index f24d103..3eebfad 100644 --- a/linden/indra/llmessage/llblowfishcipher.cpp +++ b/linden/indra/llmessage/llblowfishcipher.cpp | |||
@@ -73,13 +73,13 @@ U32 LLBlowfishCipher::encrypt(const U8* src, U32 src_len, U8* dst, U32 dst_len) | |||
73 | unsigned char initial_vector[] = { 0, 0, 0, 0, 0, 0, 0, 0 }; | 73 | unsigned char initial_vector[] = { 0, 0, 0, 0, 0, 0, 0, 0 }; |
74 | EVP_EncryptInit_ex(&context, NULL, NULL, mSecret, initial_vector); | 74 | EVP_EncryptInit_ex(&context, NULL, NULL, mSecret, initial_vector); |
75 | 75 | ||
76 | int blocksize = EVP_CIPHER_CTX_block_size(&context); | 76 | // int blocksize = EVP_CIPHER_CTX_block_size(&context); |
77 | int keylen = EVP_CIPHER_CTX_key_length(&context); | 77 | // int keylen = EVP_CIPHER_CTX_key_length(&context); |
78 | int iv_length = EVP_CIPHER_CTX_iv_length(&context); | 78 | // int iv_length = EVP_CIPHER_CTX_iv_length(&context); |
79 | lldebugs << "LLBlowfishCipher blocksize " << blocksize | 79 | // lldebugs << "LLBlowfishCipher blocksize " << blocksize |
80 | << " keylen " << keylen | 80 | // << " keylen " << keylen |
81 | << " iv_len " << iv_length | 81 | // << " iv_len " << iv_length |
82 | << llendl; | 82 | // << llendl; |
83 | 83 | ||
84 | int output_len = 0; | 84 | int output_len = 0; |
85 | int temp_len = 0; | 85 | int temp_len = 0; |
@@ -113,7 +113,59 @@ ERROR: | |||
113 | // virtual | 113 | // virtual |
114 | U32 LLBlowfishCipher::decrypt(const U8* src, U32 src_len, U8* dst, U32 dst_len) | 114 | U32 LLBlowfishCipher::decrypt(const U8* src, U32 src_len, U8* dst, U32 dst_len) |
115 | { | 115 | { |
116 | llerrs << "LLBlowfishCipher decrypt unsupported" << llendl; | 116 | if (!src || !src_len || !dst || !dst_len) return 0; |
117 | if (src_len > dst_len) return 0; | ||
118 | |||
119 | // OpenSSL uses "cipher contexts" to hold encryption parameters. | ||
120 | EVP_CIPHER_CTX context; | ||
121 | EVP_CIPHER_CTX_init(&context); | ||
122 | |||
123 | // We want a blowfish cyclic block chain cipher, but need to set | ||
124 | // the key length before we pass in a key, so call EncryptInit | ||
125 | // first with NULLs. | ||
126 | EVP_DecryptInit_ex(&context, EVP_bf_cbc(), NULL, NULL, NULL); | ||
127 | EVP_CIPHER_CTX_set_key_length(&context, (int)mSecretSize); | ||
128 | |||
129 | // Complete initialization. Per EVP_EncryptInit man page, the | ||
130 | // cipher pointer must be NULL. Apparently initial_vector must | ||
131 | // be 8 bytes for blowfish, as this is the block size. | ||
132 | unsigned char initial_vector[] = { 0, 0, 0, 0, 0, 0, 0, 0 }; | ||
133 | EVP_DecryptInit_ex(&context, NULL, NULL, mSecret, initial_vector); | ||
134 | |||
135 | // int blocksize = EVP_CIPHER_CTX_block_size(&context); | ||
136 | // int keylen = EVP_CIPHER_CTX_key_length(&context); | ||
137 | // int iv_length = EVP_CIPHER_CTX_iv_length(&context); | ||
138 | // lldebugs << "LLBlowfishCipher blocksize " << blocksize | ||
139 | // << " keylen " << keylen | ||
140 | // << " iv_len " << iv_length | ||
141 | // << llendl; | ||
142 | |||
143 | int output_len = 0; | ||
144 | int temp_len = 0; | ||
145 | if (!EVP_DecryptUpdate(&context, | ||
146 | dst, | ||
147 | &output_len, | ||
148 | src, | ||
149 | src_len)) | ||
150 | { | ||
151 | llwarns << "LLBlowfishCipher::decrypt EVP_DecryptUpdate failure" << llendl; | ||
152 | goto ERROR; | ||
153 | } | ||
154 | |||
155 | // There may be some final data left to decrypt if the input is | ||
156 | // not an exact multiple of the block size. | ||
157 | if (!EVP_DecryptFinal_ex(&context, (unsigned char*)(dst + output_len), &temp_len)) | ||
158 | { | ||
159 | llwarns << "LLBlowfishCipher::decrypt EVP_DecryptFinal failure" << llendl; | ||
160 | goto ERROR; | ||
161 | } | ||
162 | output_len += temp_len; | ||
163 | |||
164 | EVP_CIPHER_CTX_cleanup(&context); | ||
165 | return output_len; | ||
166 | |||
167 | ERROR: | ||
168 | EVP_CIPHER_CTX_cleanup(&context); | ||
117 | return 0; | 169 | return 0; |
118 | } | 170 | } |
119 | 171 | ||
diff --git a/linden/indra/llmessage/llhttpassetstorage.cpp b/linden/indra/llmessage/llhttpassetstorage.cpp index 49dbdbd..fcdb354 100644 --- a/linden/indra/llmessage/llhttpassetstorage.cpp +++ b/linden/indra/llmessage/llhttpassetstorage.cpp | |||
@@ -743,7 +743,8 @@ LLAssetRequest* LLHTTPAssetStorage::findNextRequest(LLAssetStorage::request_list | |||
743 | request_list_t::iterator running_end = running.end(); | 743 | request_list_t::iterator running_end = running.end(); |
744 | 744 | ||
745 | request_list_t::iterator pending_iter = pending.begin(); | 745 | request_list_t::iterator pending_iter = pending.begin(); |
746 | request_list_t::iterator pending_end = pending.end(); | 746 | // FIXME onefang - I assume this was being used to speed up the for(), but this is just a quick pass to get rid of warnings. Try to understand it later. |
747 | //request_list_t::iterator pending_end = pending.end(); | ||
747 | // Loop over all pending requests until we miss finding it in the running list. | 748 | // Loop over all pending requests until we miss finding it in the running list. |
748 | for (; pending_iter != pending.end(); ++pending_iter) | 749 | for (; pending_iter != pending.end(); ++pending_iter) |
749 | { | 750 | { |
diff --git a/linden/indra/llplugin/slplugin/CMakeLists.txt b/linden/indra/llplugin/slplugin/CMakeLists.txt index 81d9299..f794dae 100755 --- a/linden/indra/llplugin/slplugin/CMakeLists.txt +++ b/linden/indra/llplugin/slplugin/CMakeLists.txt | |||
@@ -75,7 +75,7 @@ if (DARWIN) | |||
75 | COMMAND mkdir | 75 | COMMAND mkdir |
76 | ARGS | 76 | ARGS |
77 | -p | 77 | -p |
78 | ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/SLPlugin.app/Contents/Resources | 78 | ${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_CFG_INTDIR}/SLPlugin.app/Contents/Resources |
79 | ) | 79 | ) |
80 | endif (DARWIN) | 80 | endif (DARWIN) |
81 | 81 | ||
diff --git a/linden/indra/llprimitive/llmaterialtable.cpp b/linden/indra/llprimitive/llmaterialtable.cpp index 7dd764e..f06bfe8 100755 --- a/linden/indra/llprimitive/llmaterialtable.cpp +++ b/linden/indra/llprimitive/llmaterialtable.cpp | |||
@@ -40,16 +40,6 @@ | |||
40 | 40 | ||
41 | LLMaterialTable LLMaterialTable::basic(1); | 41 | LLMaterialTable LLMaterialTable::basic(1); |
42 | 42 | ||
43 | // Material UUIDs. | ||
44 | LLUUID const LL_DEFAULT_STONE_UUID("87c5765b-aa26-43eb-b8c6-c09a1ca6208e"); | ||
45 | LLUUID const LL_DEFAULT_METAL_UUID("6f3c53e9-ba60-4010-8f3e-30f51a762476"); | ||
46 | LLUUID const LL_DEFAULT_GLASS_UUID("b4ba225c-373f-446d-9f7e-6cb7b5cf9b3d"); | ||
47 | LLUUID const LL_DEFAULT_WOOD_UUID("89556747-24cb-43ed-920b-47caed15465f"); | ||
48 | LLUUID const LL_DEFAULT_FLESH_UUID("80736669-e4b9-450e-8890-d5169f988a50"); | ||
49 | LLUUID const LL_DEFAULT_PLASTIC_UUID("304fcb4e-7d33-4339-ba80-76d3d22dc11a"); | ||
50 | LLUUID const LL_DEFAULT_RUBBER_UUID("9fae0bc5-666d-477e-9f70-84e8556ec867"); | ||
51 | LLUUID const LL_DEFAULT_LIGHT_UUID("00000000-0000-0000-0000-000000000000"); | ||
52 | |||
53 | /* | 43 | /* |
54 | Old Havok 1 constants | 44 | Old Havok 1 constants |
55 | 45 | ||
diff --git a/linden/indra/llrender/llfont.cpp b/linden/indra/llrender/llfont.cpp index 2ca1984..965e2d9 100644 --- a/linden/indra/llrender/llfont.cpp +++ b/linden/indra/llrender/llfont.cpp | |||
@@ -535,6 +535,8 @@ void LLFont::renderGlyph(const U32 glyph_index) const | |||
535 | int error = FT_Load_Glyph(mFTFace, glyph_index, FT_LOAD_DEFAULT ); | 535 | int error = FT_Load_Glyph(mFTFace, glyph_index, FT_LOAD_DEFAULT ); |
536 | llassert(!error); | 536 | llassert(!error); |
537 | 537 | ||
538 | // Work around the compiler warning about error not being used when llassert() is compiled out. | ||
539 | error = error + 0; | ||
538 | error = FT_Render_Glyph(mFTFace->glyph, gFontRenderMode); | 540 | error = FT_Render_Glyph(mFTFace->glyph, gFontRenderMode); |
539 | 541 | ||
540 | mRenderGlyphCount++; | 542 | mRenderGlyphCount++; |
diff --git a/linden/indra/llrender/llgl.cpp b/linden/indra/llrender/llgl.cpp index 4a4ff1b..b57a562 100644 --- a/linden/indra/llrender/llgl.cpp +++ b/linden/indra/llrender/llgl.cpp | |||
@@ -383,11 +383,10 @@ bool LLGLManager::initGL() | |||
383 | if (mGLVendor.substr(0,4) == "ATI ") | 383 | if (mGLVendor.substr(0,4) == "ATI ") |
384 | { | 384 | { |
385 | mGLVendorShort = "ATI"; | 385 | mGLVendorShort = "ATI"; |
386 | BOOL mobile = FALSE; | 386 | // This is not used anywhere. |
387 | if (mGLRenderer.find("MOBILITY") != std::string::npos) | 387 | //BOOL mobile = FALSE; |
388 | { | 388 | //if (mGLRenderer.find("MOBILITY") != std::string::npos) |
389 | mobile = TRUE; | 389 | // mobile = TRUE; |
390 | } | ||
391 | mIsATI = TRUE; | 390 | mIsATI = TRUE; |
392 | 391 | ||
393 | #if LL_WINDOWS && !LL_MESA_HEADLESS | 392 | #if LL_WINDOWS && !LL_MESA_HEADLESS |
@@ -1014,8 +1013,8 @@ void assert_glerror() | |||
1014 | void clear_glerror() | 1013 | void clear_glerror() |
1015 | { | 1014 | { |
1016 | // Create or update texture to be used with this data | 1015 | // Create or update texture to be used with this data |
1017 | GLenum error; | 1016 | //GLenum error; |
1018 | error = glGetError(); | 1017 | /*error =*/ glGetError(); |
1019 | } | 1018 | } |
1020 | 1019 | ||
1021 | /////////////////////////////////////////////////////////////// | 1020 | /////////////////////////////////////////////////////////////// |
diff --git a/linden/indra/llrender/llimagegl.cpp b/linden/indra/llrender/llimagegl.cpp index c63d7ad..f99d4a9 100644 --- a/linden/indra/llrender/llimagegl.cpp +++ b/linden/indra/llrender/llimagegl.cpp | |||
@@ -711,7 +711,9 @@ void LLImageGL::setImage(const U8* data_in, BOOL data_hasmips) | |||
711 | { | 711 | { |
712 | S32 bytes = w * h * mComponents; | 712 | S32 bytes = w * h * mComponents; |
713 | llassert(prev_mip_data); | 713 | llassert(prev_mip_data); |
714 | llassert(prev_mip_size == bytes*4); | 714 | llassert(prev_mip_size == (bytes*4)); |
715 | // Work around llassert() being compiled out and prev_mip_size not otherwise being used. | ||
716 | prev_mip_size = prev_mip_size + 0; | ||
715 | U8* new_data = new U8[bytes]; | 717 | U8* new_data = new U8[bytes]; |
716 | llassert_always(new_data); | 718 | llassert_always(new_data); |
717 | LLImageBase::generateMip(prev_mip_data, new_data, w, h, mComponents); | 719 | LLImageBase::generateMip(prev_mip_data, new_data, w, h, mComponents); |
diff --git a/linden/indra/llui/llcombobox.cpp b/linden/indra/llui/llcombobox.cpp index 2546c4e..e79f7b2 100644 --- a/linden/indra/llui/llcombobox.cpp +++ b/linden/indra/llui/llcombobox.cpp | |||
@@ -75,7 +75,8 @@ LLComboBox::LLComboBox( const std::string& name, const LLRect &rect, const std:: | |||
75 | mListPosition(BELOW), | 75 | mListPosition(BELOW), |
76 | mPrearrangeCallback( NULL ), | 76 | mPrearrangeCallback( NULL ), |
77 | mTextEntryCallback( NULL ), | 77 | mTextEntryCallback( NULL ), |
78 | mLabel(label) | 78 | mLabel(label), |
79 | mListColor(LLUI::sColorsGroup->getColor("ComboBoxBg")) | ||
79 | { | 80 | { |
80 | if (font) | 81 | if (font) |
81 | { | 82 | { |
@@ -109,7 +110,7 @@ LLComboBox::LLComboBox( const std::string& name, const LLRect &rect, const std:: | |||
109 | mList = new LLScrollListCtrl(std::string("ComboBox"), LLRect(), mGLFont, | 110 | mList = new LLScrollListCtrl(std::string("ComboBox"), LLRect(), mGLFont, |
110 | &LLComboBox::onItemSelected, this, FALSE); | 111 | &LLComboBox::onItemSelected, this, FALSE); |
111 | mList->setVisible(FALSE); | 112 | mList->setVisible(FALSE); |
112 | mList->setBgWriteableColor( LLColor4(1,1,1,1) ); | 113 | mList->setBgWriteableColor(mListColor); |
113 | mList->setCommitOnKeyboardMovement(FALSE); | 114 | mList->setCommitOnKeyboardMovement(FALSE); |
114 | addChild(mList); | 115 | addChild(mList); |
115 | 116 | ||
diff --git a/linden/indra/llui/llcombobox.h b/linden/indra/llui/llcombobox.h index 7384b87..0ce6ccd 100644 --- a/linden/indra/llui/llcombobox.h +++ b/linden/indra/llui/llcombobox.h | |||
@@ -187,12 +187,13 @@ public: | |||
187 | virtual void hideList(); | 187 | virtual void hideList(); |
188 | 188 | ||
189 | protected: | 189 | protected: |
190 | LLButton* mButton; | 190 | LLButton* mButton; |
191 | LLScrollListCtrl* mList; | 191 | LLScrollListCtrl* mList; |
192 | EPreferredPosition mListPosition; | 192 | EPreferredPosition mListPosition; |
193 | LLPointer<LLUIImage> mArrowImage; | 193 | LLPointer<LLUIImage> mArrowImage; |
194 | std::string mLabel; | 194 | std::string mLabel; |
195 | const LLFontGL* mGLFont; | 195 | const LLFontGL* mGLFont; |
196 | LLColor4 mListColor; | ||
196 | 197 | ||
197 | private: | 198 | private: |
198 | S32 mButtonPadding; | 199 | S32 mButtonPadding; |
diff --git a/linden/indra/llui/llfloater.cpp b/linden/indra/llui/llfloater.cpp index 58c717a..4c4aeaf 100644 --- a/linden/indra/llui/llfloater.cpp +++ b/linden/indra/llui/llfloater.cpp | |||
@@ -277,30 +277,14 @@ void LLFloater::initFloater(const std::string& title, | |||
277 | mMinimized = FALSE; | 277 | mMinimized = FALSE; |
278 | mExpandedRect.set(0,0,0,0); | 278 | mExpandedRect.set(0,0,0,0); |
279 | 279 | ||
280 | S32 close_pad; // space to the right of close box | ||
281 | S32 close_box_size; // For layout purposes, how big is the close box? | 280 | S32 close_box_size; // For layout purposes, how big is the close box? |
282 | if (close_btn) | 281 | if (close_btn) |
283 | { | 282 | { |
284 | close_box_size = LLFLOATER_CLOSE_BOX_SIZE; | 283 | close_box_size = LLFLOATER_CLOSE_BOX_SIZE; |
285 | close_pad = 0; | ||
286 | } | 284 | } |
287 | else | 285 | else |
288 | { | 286 | { |
289 | close_box_size = 0; | 287 | close_box_size = 0; |
290 | close_pad = 0; | ||
291 | } | ||
292 | |||
293 | S32 minimize_box_size; | ||
294 | S32 minimize_pad; | ||
295 | if (minimizable && !drag_on_left) | ||
296 | { | ||
297 | minimize_box_size = LLFLOATER_CLOSE_BOX_SIZE; | ||
298 | minimize_pad = 0; | ||
299 | } | ||
300 | else | ||
301 | { | ||
302 | minimize_box_size = 0; | ||
303 | minimize_pad = 0; | ||
304 | } | 288 | } |
305 | 289 | ||
306 | // Drag Handle | 290 | // Drag Handle |
diff --git a/linden/indra/llui/llfunctorregistry.h b/linden/indra/llui/llfunctorregistry.h index 8864f7a..7c03f2f 100644 --- a/linden/indra/llui/llfunctorregistry.h +++ b/linden/indra/llui/llfunctorregistry.h | |||
@@ -75,7 +75,6 @@ public: | |||
75 | bool registerFunctor(const std::string& name, ResponseFunctor f) | 75 | bool registerFunctor(const std::string& name, ResponseFunctor f) |
76 | { | 76 | { |
77 | bool retval = true; | 77 | bool retval = true; |
78 | typename FunctorMap::iterator it = mMap.find(name); | ||
79 | if (mMap.count(name) == 0) | 78 | if (mMap.count(name) == 0) |
80 | { | 79 | { |
81 | mMap[name] = f; | 80 | mMap[name] = f; |
@@ -102,7 +101,6 @@ public: | |||
102 | 101 | ||
103 | FUNCTOR_TYPE getFunctor(const std::string& name) | 102 | FUNCTOR_TYPE getFunctor(const std::string& name) |
104 | { | 103 | { |
105 | typename FunctorMap::iterator it = mMap.find(name); | ||
106 | if (mMap.count(name) != 0) | 104 | if (mMap.count(name) != 0) |
107 | { | 105 | { |
108 | return mMap[name]; | 106 | return mMap[name]; |
diff --git a/linden/indra/llui/llkeywords.cpp b/linden/indra/llui/llkeywords.cpp index 93da44c..a50dbff 100644 --- a/linden/indra/llui/llkeywords.cpp +++ b/linden/indra/llui/llkeywords.cpp | |||
@@ -288,7 +288,6 @@ void LLKeywords::findSegments(std::vector<LLTextSegment *>* seg_list, const LLWS | |||
288 | 288 | ||
289 | const llwchar* base = wtext.c_str(); | 289 | const llwchar* base = wtext.c_str(); |
290 | const llwchar* cur = base; | 290 | const llwchar* cur = base; |
291 | const llwchar* line = NULL; | ||
292 | 291 | ||
293 | while( *cur ) | 292 | while( *cur ) |
294 | { | 293 | { |
@@ -304,7 +303,6 @@ void LLKeywords::findSegments(std::vector<LLTextSegment *>* seg_list, const LLWS | |||
304 | } | 303 | } |
305 | 304 | ||
306 | // Start of a new line | 305 | // Start of a new line |
307 | line = cur; | ||
308 | 306 | ||
309 | // Skip white space | 307 | // Skip white space |
310 | while( *cur && isspace(*cur) && (*cur != '\n') ) | 308 | while( *cur && isspace(*cur) && (*cur != '\n') ) |
diff --git a/linden/indra/llui/llmenugl.cpp b/linden/indra/llui/llmenugl.cpp index 2d4a2f1..6850891 100644 --- a/linden/indra/llui/llmenugl.cpp +++ b/linden/indra/llui/llmenugl.cpp | |||
@@ -3095,8 +3095,6 @@ void LLMenuGL::draw( void ) | |||
3095 | LLUI::sConfigGroup->getS32("DropShadowFloater") ); | 3095 | LLUI::sConfigGroup->getS32("DropShadowFloater") ); |
3096 | } | 3096 | } |
3097 | 3097 | ||
3098 | LLColor4 bg_color = mBackgroundColor; | ||
3099 | |||
3100 | if( mBgVisible ) | 3098 | if( mBgVisible ) |
3101 | { | 3099 | { |
3102 | gl_rect_2d( 0, getRect().getHeight(), getRect().getWidth(), 0, mBackgroundColor ); | 3100 | gl_rect_2d( 0, getRect().getHeight(), getRect().getWidth(), 0, mBackgroundColor ); |
diff --git a/linden/indra/llui/llpanel.cpp b/linden/indra/llui/llpanel.cpp index 07e78ed..361e4f3 100644 --- a/linden/indra/llui/llpanel.cpp +++ b/linden/indra/llui/llpanel.cpp | |||
@@ -1078,7 +1078,6 @@ struct LLLayoutStack::LLEmbeddedPanel | |||
1078 | mVisibleAmt(1.f) // default to fully visible | 1078 | mVisibleAmt(1.f) // default to fully visible |
1079 | { | 1079 | { |
1080 | LLResizeBar::Side side = (orientation == HORIZONTAL) ? LLResizeBar::RIGHT : LLResizeBar::BOTTOM; | 1080 | LLResizeBar::Side side = (orientation == HORIZONTAL) ? LLResizeBar::RIGHT : LLResizeBar::BOTTOM; |
1081 | LLRect resize_bar_rect = panelp->getRect(); | ||
1082 | 1081 | ||
1083 | S32 min_dim; | 1082 | S32 min_dim; |
1084 | if (orientation == HORIZONTAL) | 1083 | if (orientation == HORIZONTAL) |
diff --git a/linden/indra/llui/llprogressbar.cpp b/linden/indra/llui/llprogressbar.cpp index d148733..0000d77 100644 --- a/linden/indra/llui/llprogressbar.cpp +++ b/linden/indra/llui/llprogressbar.cpp | |||
@@ -83,9 +83,6 @@ void LLProgressBar::draw() | |||
83 | bar_bg_imagep->draw(getLocalRect(), | 83 | bar_bg_imagep->draw(getLocalRect(), |
84 | background_color); | 84 | background_color); |
85 | 85 | ||
86 | F32 alpha = 0.5f + 0.5f*0.5f*(1.f + (F32)sin(3.f*timer.getElapsedTimeF32())); | ||
87 | LLColor4 bar_color = LLUI::sColorsGroup->getColor("LoginProgressBarFgColor"); | ||
88 | bar_color.mV[3] = alpha; | ||
89 | LLRect progress_rect = getLocalRect(); | 86 | LLRect progress_rect = getLocalRect(); |
90 | progress_rect.mRight = llround(getRect().getWidth() * (mPercentDone / 100.f)); | 87 | progress_rect.mRight = llround(getRect().getWidth() * (mPercentDone / 100.f)); |
91 | bar_fg_imagep->draw(progress_rect); | 88 | bar_fg_imagep->draw(progress_rect); |
diff --git a/linden/indra/llui/llresmgr.cpp b/linden/indra/llui/llresmgr.cpp index 22610ca..a16cfdf 100644 --- a/linden/indra/llui/llresmgr.cpp +++ b/linden/indra/llui/llresmgr.cpp | |||
@@ -266,8 +266,13 @@ std::string LLResMgr::getMonetaryString( S32 input ) const | |||
266 | default: // Unknown -- use the US defaults. | 266 | default: // Unknown -- use the US defaults. |
267 | case LLLOCALE_USA: | 267 | case LLLOCALE_USA: |
268 | case LLLOCALE_UK: // UK ends up being the same as US for the items used here. | 268 | case LLLOCALE_UK: // UK ends up being the same as US for the items used here. |
269 | fakeconv.negative_sign = "-"; | 269 | // Mac OS X 10.6 SDK's struct lconv contains "char *" not |
270 | fakeconv.mon_grouping = "\x03\x03\x00"; // commas every 3 digits | 270 | // "const char *" so these char arrays work around the error |
271 | // this causes in GCC 4.2, even though they won't be modified. | ||
272 | static char negative_sign[] = "-"; | ||
273 | static char mon_grouping[] = "\x03\x03\x00"; | ||
274 | fakeconv.negative_sign = negative_sign; | ||
275 | fakeconv.mon_grouping = mon_grouping; // commas every 3 digits | ||
271 | fakeconv.n_sign_posn = 1; // negative sign before the string | 276 | fakeconv.n_sign_posn = 1; // negative sign before the string |
272 | break; | 277 | break; |
273 | } | 278 | } |
diff --git a/linden/indra/llui/llslider.cpp b/linden/indra/llui/llslider.cpp index 5c17baa..c8f5935 100644 --- a/linden/indra/llui/llslider.cpp +++ b/linden/indra/llui/llslider.cpp | |||
@@ -283,7 +283,6 @@ void LLSlider::draw() | |||
283 | 283 | ||
284 | F32 opacity = getEnabled() ? 1.f : 0.3f; | 284 | F32 opacity = getEnabled() ? 1.f : 0.3f; |
285 | LLColor4 center_color = (mThumbCenterColor % opacity); | 285 | LLColor4 center_color = (mThumbCenterColor % opacity); |
286 | LLColor4 track_color = (mTrackColor % opacity); | ||
287 | 286 | ||
288 | // Track | 287 | // Track |
289 | LLRect track_rect(mThumbImage->getWidth() / 2, | 288 | LLRect track_rect(mThumbImage->getWidth() / 2, |
diff --git a/linden/indra/llui/lltexteditor.cpp b/linden/indra/llui/lltexteditor.cpp index 8612427..106f658 100644 --- a/linden/indra/llui/lltexteditor.cpp +++ b/linden/indra/llui/lltexteditor.cpp | |||
@@ -3077,7 +3077,6 @@ void LLTextEditor::drawSelectionBackground() | |||
3077 | S32 selection_right_x = mTextRect.mRight; | 3077 | S32 selection_right_x = mTextRect.mRight; |
3078 | S32 selection_right_y = mTextRect.mBottom; | 3078 | S32 selection_right_y = mTextRect.mBottom; |
3079 | 3079 | ||
3080 | BOOL selection_left_visible = FALSE; | ||
3081 | BOOL selection_right_visible = FALSE; | 3080 | BOOL selection_right_visible = FALSE; |
3082 | 3081 | ||
3083 | // Skip through the lines we aren't drawing. | 3082 | // Skip through the lines we aren't drawing. |
@@ -3085,7 +3084,6 @@ void LLTextEditor::drawSelectionBackground() | |||
3085 | 3084 | ||
3086 | S32 left_line_num = cur_line; | 3085 | S32 left_line_num = cur_line; |
3087 | S32 num_lines = getLineCount(); | 3086 | S32 num_lines = getLineCount(); |
3088 | S32 right_line_num = num_lines - 1; | ||
3089 | 3087 | ||
3090 | S32 line_start = -1; | 3088 | S32 line_start = -1; |
3091 | if (cur_line >= num_lines) | 3089 | if (cur_line >= num_lines) |
@@ -3119,13 +3117,11 @@ void LLTextEditor::drawSelectionBackground() | |||
3119 | if( line_start <= selection_left && selection_left <= line_end ) | 3117 | if( line_start <= selection_left && selection_left <= line_end ) |
3120 | { | 3118 | { |
3121 | left_line_num = cur_line; | 3119 | left_line_num = cur_line; |
3122 | selection_left_visible = TRUE; | ||
3123 | selection_left_x = mTextRect.mLeft + mGLFont->getWidth(line, 0, selection_left - line_start, mAllowEmbeddedItems); | 3120 | selection_left_x = mTextRect.mLeft + mGLFont->getWidth(line, 0, selection_left - line_start, mAllowEmbeddedItems); |
3124 | selection_left_y = text_y; | 3121 | selection_left_y = text_y; |
3125 | } | 3122 | } |
3126 | if( line_start <= selection_right && selection_right <= line_end ) | 3123 | if( line_start <= selection_right && selection_right <= line_end ) |
3127 | { | 3124 | { |
3128 | right_line_num = cur_line; | ||
3129 | selection_right_visible = TRUE; | 3125 | selection_right_visible = TRUE; |
3130 | selection_right_x = mTextRect.mLeft + mGLFont->getWidth(line, 0, selection_right - line_start, mAllowEmbeddedItems); | 3126 | selection_right_x = mTextRect.mLeft + mGLFont->getWidth(line, 0, selection_right - line_start, mAllowEmbeddedItems); |
3131 | if (selection_right == line_end) | 3127 | if (selection_right == line_end) |
diff --git a/linden/indra/llui/llui.h b/linden/indra/llui/llui.h index ebcc730..466d2c7 100644 --- a/linden/indra/llui/llui.h +++ b/linden/indra/llui/llui.h | |||
@@ -706,10 +706,12 @@ public: | |||
706 | 706 | ||
707 | // this avoids a MSVC bug where non-referenced static members are "optimized" away | 707 | // this avoids a MSVC bug where non-referenced static members are "optimized" away |
708 | // even if their constructors have side effects | 708 | // even if their constructors have side effects |
709 | // Then we avoid a compiler warning that dummy is never used. lol | ||
709 | void reference() | 710 | void reference() |
710 | { | 711 | { |
711 | S32 dummy; | 712 | S32 dummy; |
712 | dummy = 0; | 713 | dummy = 0; |
714 | dummy = dummy + 0; | ||
713 | } | 715 | } |
714 | }; | 716 | }; |
715 | 717 | ||
diff --git a/linden/indra/llwindow/GL/glh_extensions.h b/linden/indra/llwindow/GL/glh_extensions.h index 5b149c9..ce2865b 100644 --- a/linden/indra/llwindow/GL/glh_extensions.h +++ b/linden/indra/llwindow/GL/glh_extensions.h | |||
@@ -111,7 +111,9 @@ static const char* EatNonWhiteSpace(const char *str) | |||
111 | int glh_init_extensions(const char *origReqExts) | 111 | int glh_init_extensions(const char *origReqExts) |
112 | { | 112 | { |
113 | // Length of requested extensions string | 113 | // Length of requested extensions string |
114 | /* | ||
114 | unsigned reqExtsLen; | 115 | unsigned reqExtsLen; |
116 | */ | ||
115 | char *reqExts; | 117 | char *reqExts; |
116 | // Ptr for individual extensions within reqExts | 118 | // Ptr for individual extensions within reqExts |
117 | char *reqExt; | 119 | char *reqExt; |
@@ -153,8 +155,8 @@ int glh_init_extensions(const char *origReqExts) | |||
153 | return TRUE; | 155 | return TRUE; |
154 | } | 156 | } |
155 | reqExts = strdup(origReqExts); | 157 | reqExts = strdup(origReqExts); |
156 | reqExtsLen = (S32)strlen(reqExts); | ||
157 | /* | 158 | /* |
159 | reqExtsLen = (S32)strlen(reqExts); | ||
158 | if (NULL == gGLHExts.mUnsupportedExts) | 160 | if (NULL == gGLHExts.mUnsupportedExts) |
159 | { | 161 | { |
160 | gGLHExts.mUnsupportedExts = (char*)malloc(reqExtsLen + 1); | 162 | gGLHExts.mUnsupportedExts = (char*)malloc(reqExtsLen + 1); |
diff --git a/linden/indra/llwindow/llwindowsdl.cpp b/linden/indra/llwindow/llwindowsdl.cpp index 58090b3..6717f7b 100644 --- a/linden/indra/llwindow/llwindowsdl.cpp +++ b/linden/indra/llwindow/llwindowsdl.cpp | |||
@@ -2518,9 +2518,10 @@ std::vector<std::string> LLWindowSDL::getDynamicFallbackFontList() | |||
2518 | sortpat = FcNameParse((FcChar8*) sort_order.c_str()); | 2518 | sortpat = FcNameParse((FcChar8*) sort_order.c_str()); |
2519 | if (sortpat) | 2519 | if (sortpat) |
2520 | { | 2520 | { |
2521 | FcResult dummyResult; | ||
2521 | // Sort the list of system fonts from most-to-least-desirable. | 2522 | // Sort the list of system fonts from most-to-least-desirable. |
2522 | fs = FcFontSort(NULL, sortpat, elide_unicode_coverage, | 2523 | fs = FcFontSort(NULL, sortpat, elide_unicode_coverage, |
2523 | NULL, NULL); | 2524 | NULL, &dummyResult); |
2524 | FcPatternDestroy(sortpat); | 2525 | FcPatternDestroy(sortpat); |
2525 | } | 2526 | } |
2526 | 2527 | ||
diff --git a/linden/indra/lscript/lscript_compile/CMakeLists.txt b/linden/indra/lscript/lscript_compile/CMakeLists.txt index 252085b..f6d5212 100644 --- a/linden/indra/lscript/lscript_compile/CMakeLists.txt +++ b/linden/indra/lscript/lscript_compile/CMakeLists.txt | |||
@@ -103,7 +103,7 @@ if (WINDOWS) | |||
103 | PROPERTIES COMPILE_FLAGS /DYY_NO_UNISTD_H) | 103 | PROPERTIES COMPILE_FLAGS /DYY_NO_UNISTD_H) |
104 | endif (WINDOWS) | 104 | endif (WINDOWS) |
105 | 105 | ||
106 | if (WINDOWS) | 106 | if (WINDOWS AND NOT CYGWIN) |
107 | get_filename_component(M4_PATH ${M4} PATH) | 107 | get_filename_component(M4_PATH ${M4} PATH) |
108 | add_custom_command( | 108 | add_custom_command( |
109 | OUTPUT | 109 | OUTPUT |
@@ -118,7 +118,7 @@ if (WINDOWS) | |||
118 | ${CMAKE_CURRENT_SOURCE_DIR}/indra.y | 118 | ${CMAKE_CURRENT_SOURCE_DIR}/indra.y |
119 | ) | 119 | ) |
120 | include_directories(${CMAKE_CURRENT_SOURCE_DIR}/windows) | 120 | include_directories(${CMAKE_CURRENT_SOURCE_DIR}/windows) |
121 | else (WINDOWS) | 121 | else (WINDOWS AND NOT CYGWIN) |
122 | add_custom_command( | 122 | add_custom_command( |
123 | OUTPUT | 123 | OUTPUT |
124 | ${CMAKE_CURRENT_BINARY_DIR}/indra.y.cpp | 124 | ${CMAKE_CURRENT_BINARY_DIR}/indra.y.cpp |
@@ -131,7 +131,7 @@ else (WINDOWS) | |||
131 | DEPENDS | 131 | DEPENDS |
132 | ${CMAKE_CURRENT_SOURCE_DIR}/indra.y | 132 | ${CMAKE_CURRENT_SOURCE_DIR}/indra.y |
133 | ) | 133 | ) |
134 | endif (WINDOWS) | 134 | endif (WINDOWS AND NOT CYGWIN) |
135 | 135 | ||
136 | if (DARWIN) | 136 | if (DARWIN) |
137 | # Mac OS X 10.4 compatibility | 137 | # Mac OS X 10.4 compatibility |
diff --git a/linden/indra/lscript/lscript_compile/indra.l b/linden/indra/lscript/lscript_compile/indra.l index 584087e..7f4cdc5 100644 --- a/linden/indra/lscript/lscript_compile/indra.l +++ b/linden/indra/lscript/lscript_compile/indra.l | |||
@@ -53,9 +53,16 @@ void parse_string(); | |||
53 | #define ECHO do { } while (0) | 53 | #define ECHO do { } while (0) |
54 | 54 | ||
55 | #if defined(__cplusplus) | 55 | #if defined(__cplusplus) |
56 | extern "C" { int yylex( void ); } | 56 | extern "C" { |
57 | extern "C" { int yyparse( void ); } | 57 | #endif |
58 | extern "C" { int yyerror(const char *fmt, ...); } | 58 | int yyerror(const char *fmt, ...); |
59 | int yylex( void ); | ||
60 | // Windows defines this in indra.y.hpp, which is included above, and defines it differently. | ||
61 | #ifndef LL_WINDOWS | ||
62 | int yyparse( void ); | ||
63 | #endif | ||
64 | #if defined(__cplusplus) | ||
65 | } | ||
59 | #endif | 66 | #endif |
60 | 67 | ||
61 | %} | 68 | %} |
@@ -722,9 +729,6 @@ L?\"(\\.|[^\\"])*\" { parse_string(); count(); return(STRING_CONSTANT); } | |||
722 | LLScriptAllocationManager *gAllocationManager; | 729 | LLScriptAllocationManager *gAllocationManager; |
723 | LLScriptScript *gScriptp; | 730 | LLScriptScript *gScriptp; |
724 | 731 | ||
725 | // Prototype for the yacc parser entry point | ||
726 | int yyparse(void); | ||
727 | |||
728 | int yyerror(const char *fmt, ...) | 732 | int yyerror(const char *fmt, ...) |
729 | { | 733 | { |
730 | gErrorToText.writeError(yyout, gLine, gColumn, LSERROR_SYNTAX_ERROR); | 734 | gErrorToText.writeError(yyout, gLine, gColumn, LSERROR_SYNTAX_ERROR); |
@@ -760,7 +764,13 @@ BOOL lscript_compile(const char* src_filename, const char* dst_filename, | |||
760 | 764 | ||
761 | yyrestart(yyin); | 765 | yyrestart(yyin); |
762 | 766 | ||
763 | b_parse_ok = !yyparse(); | 767 | // TODO - Try to fix this, but for now, no compiling LSL for Windows in SL. |
768 | // Actually, this seems to not actually be needed anymore? | ||
769 | // I thought it was needed to support ancient pre Mono LSL scripts, which only work in SL anyway, but they still work fine. Perhaps SL fixed it server side? | ||
770 | // If that's the case, we don't need any of this stuff. | ||
771 | #ifndef LL_WINDOWS | ||
772 | // b_parse_ok = !yyparse(); | ||
773 | #endif | ||
764 | 774 | ||
765 | if (b_parse_ok) | 775 | if (b_parse_ok) |
766 | { | 776 | { |
diff --git a/linden/indra/lscript/lscript_execute/lscript_execute.cpp b/linden/indra/lscript/lscript_execute/lscript_execute.cpp index cb9a78e..7da5e51 100644 --- a/linden/indra/lscript/lscript_execute/lscript_execute.cpp +++ b/linden/indra/lscript/lscript_execute/lscript_execute.cpp | |||
@@ -809,16 +809,7 @@ void LLScriptExecute::runInstructions(BOOL b_print, const LLUUID &id, | |||
809 | // is there a fault? | 809 | // is there a fault? |
810 | // if yes, print out message and exit | 810 | // if yes, print out message and exit |
811 | S32 value = getVersion(); | 811 | S32 value = getVersion(); |
812 | S32 major_version = 0; | 812 | if ((value != LSL2_VERSION1_END_NUMBER) && (value != LSL2_VERSION_NUMBER)) |
813 | if (value == LSL2_VERSION1_END_NUMBER) | ||
814 | { | ||
815 | major_version = 1; | ||
816 | } | ||
817 | else if (value == LSL2_VERSION_NUMBER) | ||
818 | { | ||
819 | major_version = 2; | ||
820 | } | ||
821 | else | ||
822 | { | 813 | { |
823 | setFault(LSRF_VERSION_MISMATCH); | 814 | setFault(LSRF_VERSION_MISMATCH); |
824 | } | 815 | } |
diff --git a/linden/indra/lscript/lscript_execute/lscript_readlso.cpp b/linden/indra/lscript/lscript_execute/lscript_readlso.cpp index 3b10cc6..05eb826 100644 --- a/linden/indra/lscript/lscript_execute/lscript_readlso.cpp +++ b/linden/indra/lscript/lscript_execute/lscript_readlso.cpp | |||
@@ -150,7 +150,9 @@ void LLScriptLSOParse::printGlobals(LLFILE *fp) | |||
150 | 150 | ||
151 | // get offset to skip past name | 151 | // get offset to skip past name |
152 | varoffset = global_v_offset; | 152 | varoffset = global_v_offset; |
153 | // FIXME: Not actually used, perhaps there's a skip function? Or perhaps we really do need to skip past a name as the above comment suggests? | ||
153 | offset = bytestream2integer(mRawData, global_v_offset); | 154 | offset = bytestream2integer(mRawData, global_v_offset); |
155 | offset = offset + 0; | ||
154 | 156 | ||
155 | // get typeexport | 157 | // get typeexport |
156 | type = *(mRawData + global_v_offset++); | 158 | type = *(mRawData + global_v_offset++); |
@@ -268,8 +270,6 @@ void LLScriptLSOParse::printGlobalFunctions(LLFILE *fp) | |||
268 | fprintf(fp, "[Function #%d] [0x%X] %s\n", function_number, orig_function_offset, name); | 270 | fprintf(fp, "[Function #%d] [0x%X] %s\n", function_number, orig_function_offset, name); |
269 | fprintf(fp, "\tReturn Type: %s\n", LSCRIPTTypeNames[type]); | 271 | fprintf(fp, "\tReturn Type: %s\n", LSCRIPTTypeNames[type]); |
270 | type = *(mRawData + function_offset++); | 272 | type = *(mRawData + function_offset++); |
271 | S32 params; | ||
272 | params = 0; | ||
273 | S32 pcount = 0; | 273 | S32 pcount = 0; |
274 | while (type) | 274 | while (type) |
275 | { | 275 | { |
@@ -362,7 +362,9 @@ void LLScriptLSOParse::printStates(LLFILE *fp) | |||
362 | if (event_handlers & LSCRIPTStateBitField[k]) | 362 | if (event_handlers & LSCRIPTStateBitField[k]) |
363 | { | 363 | { |
364 | temp_end = bytestream2integer(mRawData, read_ahead); | 364 | temp_end = bytestream2integer(mRawData, read_ahead); |
365 | // FIXME onefang: Dummy is not actually used, but perhaps this is here to stop a warning? We need to stop another warning now. Some sort of skip might be better. | ||
365 | dummy = bytestream2integer(mRawData, read_ahead); | 366 | dummy = bytestream2integer(mRawData, read_ahead); |
367 | dummy = dummy + 0; | ||
366 | if ( (temp_end < opcode_end) | 368 | if ( (temp_end < opcode_end) |
367 | &&(temp_end > event_offset)) | 369 | &&(temp_end > event_offset)) |
368 | { | 370 | { |
diff --git a/linden/indra/lscript/lscript_library/lscript_library.cpp b/linden/indra/lscript/lscript_library/lscript_library.cpp index a623a9a..c592c8b 100644 --- a/linden/indra/lscript/lscript_library/lscript_library.cpp +++ b/linden/indra/lscript/lscript_library/lscript_library.cpp | |||
@@ -1,11 +1,11 @@ | |||
1 | /** | 1 | /** |
2 | * @file lscript_library.cpp | 2 | * @file lscript_library.cpp |
3 | * @brief external library interface | 3 | * @brief external library interface |
4 | * | 4 | * |
5 | * $LicenseInfo:firstyear=2002&license=viewergpl$ | 5 | * $LicenseInfo:firstyear=2002&license=viewergpl$ |
6 | * | 6 | * |
7 | * Copyright (c) 2002-2009, Linden Research, Inc. | 7 | * Copyright (c) 2002-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 |
@@ -13,17 +13,17 @@ | |||
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. |
@@ -37,7 +37,7 @@ | |||
37 | // ## ## ## ## ## ######## ## ## ## ## ## ## ## ## #### ## ## | 37 | // ## ## ## ## ## ######## ## ## ## ## ## ## ## ## #### ## ## |
38 | // ## ## ## ######### ## ## ## #### ## ## #### ## ## | 38 | // ## ## ## ######### ## ## ## #### ## ## #### ## ## |
39 | // ## ## ## ## ## ## ## ## ### ## ## ### ## ## #### #### | 39 | // ## ## ## ## ## ## ## ## ### ## ## ### ## ## #### #### |
40 | // ### ### ## ## ## ## ## ## #### ## ## ###### #### #### | 40 | // ### ### ## ## ## ## ## ## #### ## ## ###### #### #### |
41 | // | 41 | // |
42 | // When adding functions, they <b>MUST</b> be appended to the end of | 42 | // When adding functions, they <b>MUST</b> be appended to the end of |
43 | // the init() method. The init() associates the name with a number, | 43 | // the init() method. The init() associates the name with a number, |
@@ -335,7 +335,7 @@ void LLScriptLibrary::init() | |||
335 | 335 | ||
336 | addFunction(new LLScriptLibraryFunction(10.f, 0.2f, dummy_func, "llSetRemoteScriptAccessPin", NULL, "i", "llSetRemoteScriptAccessPin(integer pin)\nIf pin is set to a non-zero number, the task will accept remote script\nloads via llRemoteLoadScriptPin if it passes in the correct pin.\nOthersise, llRemoteLoadScriptPin is ignored.")); | 336 | addFunction(new LLScriptLibraryFunction(10.f, 0.2f, dummy_func, "llSetRemoteScriptAccessPin", NULL, "i", "llSetRemoteScriptAccessPin(integer pin)\nIf pin is set to a non-zero number, the task will accept remote script\nloads via llRemoteLoadScriptPin if it passes in the correct pin.\nOthersise, llRemoteLoadScriptPin is ignored.")); |
337 | addFunction(new LLScriptLibraryFunction(10.f, 3.f, dummy_func, "llRemoteLoadScriptPin", NULL, "ksiii", "llRemoteLoadScriptPin(key target, string name, integer pin, integer running, integer start_param)\nIf the owner of the object this script is attached can modify target,\nthey are in the same region,\nand the matching pin is used,\ncopy script name onto target,\nif running == TRUE, start the script with param.")); | 337 | addFunction(new LLScriptLibraryFunction(10.f, 3.f, dummy_func, "llRemoteLoadScriptPin", NULL, "ksiii", "llRemoteLoadScriptPin(key target, string name, integer pin, integer running, integer start_param)\nIf the owner of the object this script is attached can modify target,\nthey are in the same region,\nand the matching pin is used,\ncopy script name onto target,\nif running == TRUE, start the script with param.")); |
338 | 338 | ||
339 | addFunction(new LLScriptLibraryFunction(10.f, 1.f, dummy_func, "llOpenRemoteDataChannel", NULL, NULL, "llOpenRemoteDataChannel()\nCreates a channel to listen for XML-RPC calls. Will trigger a remote_data event with channel id once it is available.")); | 339 | addFunction(new LLScriptLibraryFunction(10.f, 1.f, dummy_func, "llOpenRemoteDataChannel", NULL, NULL, "llOpenRemoteDataChannel()\nCreates a channel to listen for XML-RPC calls. Will trigger a remote_data event with channel id once it is available.")); |
340 | addFunction(new LLScriptLibraryFunction(10.f, 3.f, dummy_func, "llSendRemoteData", "k", "ksis", "key llSendRemoteData(key channel, string dest, integer idata, string sdata)\nSend an XML-RPC request to dest through channel with payload of channel (in a string), integer idata and string sdata.\nA message identifier key is returned.\nAn XML-RPC reply will trigger a remote_data event and reference the message id.\nThe message_id is returned.")); | 340 | addFunction(new LLScriptLibraryFunction(10.f, 3.f, dummy_func, "llSendRemoteData", "k", "ksis", "key llSendRemoteData(key channel, string dest, integer idata, string sdata)\nSend an XML-RPC request to dest through channel with payload of channel (in a string), integer idata and string sdata.\nA message identifier key is returned.\nAn XML-RPC reply will trigger a remote_data event and reference the message id.\nThe message_id is returned.")); |
341 | addFunction(new LLScriptLibraryFunction(10.f, 3.f, dummy_func, "llRemoteDataReply", NULL, "kksi", "llRemoteDataReply(key channel, key message_id, string sdata, integer idata)\nSend an XML-RPC reply to message_id on channel with payload of string sdata and integer idata")); | 341 | addFunction(new LLScriptLibraryFunction(10.f, 3.f, dummy_func, "llRemoteDataReply", NULL, "kksi", "llRemoteDataReply(key channel, key message_id, string sdata, integer idata)\nSend an XML-RPC reply to message_id on channel with payload of string sdata and integer idata")); |
@@ -351,7 +351,7 @@ void LLScriptLibrary::init() | |||
351 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llLog", "f", "f", "float llLog(float val)\nReturns the base e log of val if val > 0, otherwise returns 0.")); | 351 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llLog", "f", "f", "float llLog(float val)\nReturns the base e log of val if val > 0, otherwise returns 0.")); |
352 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetAnimationList", "l", "k", "list llGetAnimationList(key id)\nGets a list of all playing animations for avatar id")); | 352 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetAnimationList", "l", "k", "list llGetAnimationList(key id)\nGets a list of all playing animations for avatar id")); |
353 | addFunction(new LLScriptLibraryFunction(10.f, 2.f, dummy_func, "llSetParcelMusicURL", NULL, "s", "llSetParcelMusicURL(string url)\nSets the streaming audio URL for the parcel object is on")); | 353 | addFunction(new LLScriptLibraryFunction(10.f, 2.f, dummy_func, "llSetParcelMusicURL", NULL, "s", "llSetParcelMusicURL(string url)\nSets the streaming audio URL for the parcel object is on")); |
354 | 354 | ||
355 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetRootPosition", "v", NULL, "vector llGetRootPosition()\nGets the global position of the root object of the object script is attached to")); | 355 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetRootPosition", "v", NULL, "vector llGetRootPosition()\nGets the global position of the root object of the object script is attached to")); |
356 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetRootRotation", "q", NULL, "rotation llGetRootRotation()\nGets the global rotation of the root object of the object script is attached to")); | 356 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetRootRotation", "q", NULL, "rotation llGetRootRotation()\nGets the global rotation of the root object of the object script is attached to")); |
357 | 357 | ||
@@ -370,7 +370,7 @@ void LLScriptLibrary::init() | |||
370 | addFunction(new LLScriptLibraryFunction(10.f, 0.0f, dummy_func, "llBase64ToInteger", "i", "s", "integer llBase64ToInteger(string str)\nBig endian decode of a Base64 string into an integer.")); | 370 | addFunction(new LLScriptLibraryFunction(10.f, 0.0f, dummy_func, "llBase64ToInteger", "i", "s", "integer llBase64ToInteger(string str)\nBig endian decode of a Base64 string into an integer.")); |
371 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetGMTclock", "f", "", "float llGetGMTclock()\nGets the time in seconds since midnight in GMT")); | 371 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetGMTclock", "f", "", "float llGetGMTclock()\nGets the time in seconds since midnight in GMT")); |
372 | addFunction(new LLScriptLibraryFunction(10.f, 10.f, dummy_func, "llGetSimulatorHostname", "s", "", "string llGetSimulatorHostname()\nGets the hostname of the machine script is running on (same as string in viewer Help dialog)")); | 372 | addFunction(new LLScriptLibraryFunction(10.f, 10.f, dummy_func, "llGetSimulatorHostname", "s", "", "string llGetSimulatorHostname()\nGets the hostname of the machine script is running on (same as string in viewer Help dialog)")); |
373 | 373 | ||
374 | addFunction(new LLScriptLibraryFunction(10.f, 0.2f, dummy_func, "llSetLocalRot", NULL, "q", "llSetLocalRot(rotation rot)\nsets the rotation of a child prim relative to the root prim")); | 374 | addFunction(new LLScriptLibraryFunction(10.f, 0.2f, dummy_func, "llSetLocalRot", NULL, "q", "llSetLocalRot(rotation rot)\nsets the rotation of a child prim relative to the root prim")); |
375 | 375 | ||
376 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llParseStringKeepNulls", "l", "sll", "list llParseStringKeepNulls(string src, list separators, list spacers)\nBreaks src into a list, discarding separators, keeping spacers (separators and spacers must be lists of strings, maximum of 8 each), keeping any null values generated.")); | 376 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llParseStringKeepNulls", "l", "sll", "list llParseStringKeepNulls(string src, list separators, list spacers)\nBreaks src into a list, discarding separators, keeping spacers (separators and spacers must be lists of strings, maximum of 8 each), keeping any null values generated.")); |
@@ -393,12 +393,12 @@ void LLScriptLibrary::init() | |||
393 | addFunction(new LLScriptLibraryFunction(10.f, 2.f, dummy_func, "llParcelMediaQuery", "l", "l", "list llParcelMediaQuery(list query)\nSends a list of queries, returns a list of results.")); | 393 | addFunction(new LLScriptLibraryFunction(10.f, 2.f, dummy_func, "llParcelMediaQuery", "l", "l", "list llParcelMediaQuery(list query)\nSends a list of queries, returns a list of results.")); |
394 | 394 | ||
395 | addFunction(new LLScriptLibraryFunction(10.f, 1.f, dummy_func, "llModPow", "i", "iii", "integer llModPow(integer a, integer b, integer c)\nReturns a raised to the b power, mod c. ( (a**b)%c ). b is capped at 0xFFFF (16 bits).")); | 395 | addFunction(new LLScriptLibraryFunction(10.f, 1.f, dummy_func, "llModPow", "i", "iii", "integer llModPow(integer a, integer b, integer c)\nReturns a raised to the b power, mod c. ( (a**b)%c ). b is capped at 0xFFFF (16 bits).")); |
396 | 396 | ||
397 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetInventoryType", "i", "s", "integer llGetInventoryType(string name)\nReturns the type of the inventory name")); | 397 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetInventoryType", "i", "s", "integer llGetInventoryType(string name)\nReturns the type of the inventory name")); |
398 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llSetPayPrice", NULL, "il", "llSetPayPrice(integer price, list quick_pay_buttons)\nSets the default amount when someone chooses to pay this object.")); | 398 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llSetPayPrice", NULL, "il", "llSetPayPrice(integer price, list quick_pay_buttons)\nSets the default amount when someone chooses to pay this object.")); |
399 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetCameraPos", "v", "", "vector llGetCameraPos()\nGets current camera position for agent task has permissions for.")); | 399 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetCameraPos", "v", "", "vector llGetCameraPos()\nGets current camera position for agent task has permissions for.")); |
400 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetCameraRot", "q", "", "rotation llGetCameraRot()\nGets current camera orientation for agent task has permissions for.")); | 400 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetCameraRot", "q", "", "rotation llGetCameraRot()\nGets current camera orientation for agent task has permissions for.")); |
401 | 401 | ||
402 | addFunction(new LLScriptLibraryFunction(10.f, 20.f, dummy_func, "llSetPrimURL", NULL, "s", "llSetPrimURL(string url)\nUpdates the URL for the web page shown on the sides of the object.")); | 402 | addFunction(new LLScriptLibraryFunction(10.f, 20.f, dummy_func, "llSetPrimURL", NULL, "s", "llSetPrimURL(string url)\nUpdates the URL for the web page shown on the sides of the object.")); |
403 | addFunction(new LLScriptLibraryFunction(10.f, 20.f, dummy_func, "llRefreshPrimURL", NULL, "", "llRefreshPrimURL()\nReloads the web page shown on the sides of the object.")); | 403 | addFunction(new LLScriptLibraryFunction(10.f, 20.f, dummy_func, "llRefreshPrimURL", NULL, "", "llRefreshPrimURL()\nReloads the web page shown on the sides of the object.")); |
404 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llEscapeURL", "s", "s", "string llEscapeURL(string url)\nReturns and escaped/encoded version of url, replacing spaces with %20 etc.")); | 404 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llEscapeURL", "s", "s", "string llEscapeURL(string url)\nReturns and escaped/encoded version of url, replacing spaces with %20 etc.")); |
@@ -411,7 +411,7 @@ void LLScriptLibrary::init() | |||
411 | 411 | ||
412 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llSetCameraParams", NULL, "l", "llSetCameraParams(list rules)\nSets multiple camera parameters at once.\nList format is [ rule1, data1, rule2, data2 . . . rulen, datan ]")); | 412 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llSetCameraParams", NULL, "l", "llSetCameraParams(list rules)\nSets multiple camera parameters at once.\nList format is [ rule1, data1, rule2, data2 . . . rulen, datan ]")); |
413 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llClearCameraParams", NULL, NULL, "llClearCameraParams()\nResets all camera parameters to default values and turns off scripted camera control.")); | 413 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llClearCameraParams", NULL, NULL, "llClearCameraParams()\nResets all camera parameters to default values and turns off scripted camera control.")); |
414 | 414 | ||
415 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llListStatistics", "f", "il", "float llListStatistics(integer operation, list l)\nPerform statistical aggregate functions on list l using LIST_STAT_* operations.")); | 415 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llListStatistics", "f", "il", "float llListStatistics(integer operation, list l)\nPerform statistical aggregate functions on list l using LIST_STAT_* operations.")); |
416 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetUnixTime", "i", NULL, "integer llGetUnixTime()\nGet the number of seconds elapsed since 00:00 hours, Jan 1, 1970 UTC from the system clock.")); | 416 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetUnixTime", "i", NULL, "integer llGetUnixTime()\nGet the number of seconds elapsed since 00:00 hours, Jan 1, 1970 UTC from the system clock.")); |
417 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetParcelFlags", "i", "v", "integer llGetParcelFlags(vector pos)\nGet the parcel flags (PARCEL_FLAG_*) for the parcel including the point pos.")); | 417 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetParcelFlags", "i", "v", "integer llGetParcelFlags(vector pos)\nGet the parcel flags (PARCEL_FLAG_*) for the parcel including the point pos.")); |
@@ -433,7 +433,7 @@ void LLScriptLibrary::init() | |||
433 | addFunction(new LLScriptLibraryFunction(10.f, 0.2f, dummy_func, "llSetLinkPrimitiveParams", NULL, "il", "llSetLinkPrimitiveParams(integer linknumber, list rules)\nSet primitive parameters for linknumber based on rules.")); | 433 | addFunction(new LLScriptLibraryFunction(10.f, 0.2f, dummy_func, "llSetLinkPrimitiveParams", NULL, "il", "llSetLinkPrimitiveParams(integer linknumber, list rules)\nSet primitive parameters for linknumber based on rules.")); |
434 | addFunction(new LLScriptLibraryFunction(10.f, 0.2f, dummy_func, "llSetLinkTexture", NULL, "isi", "llSetLinkTexture(integer link_pos, string texture, integer face)\nSets the texture of face for link_pos")); | 434 | addFunction(new LLScriptLibraryFunction(10.f, 0.2f, dummy_func, "llSetLinkTexture", NULL, "isi", "llSetLinkTexture(integer link_pos, string texture, integer face)\nSets the texture of face for link_pos")); |
435 | 435 | ||
436 | 436 | ||
437 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llStringTrim", "s", "si", "string llStringTrim(string src, integer trim_type)\nTrim leading and/or trailing spaces from a string.\nUses trim_type of STRING_TRIM, STRING_TRIM_HEAD or STRING_TRIM_TAIL.")); | 437 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llStringTrim", "s", "si", "string llStringTrim(string src, integer trim_type)\nTrim leading and/or trailing spaces from a string.\nUses trim_type of STRING_TRIM, STRING_TRIM_HEAD or STRING_TRIM_TAIL.")); |
438 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llRegionSay", NULL, "is", "llRegionSay(integer channel, string msg)\nbroadcasts msg to entire region on channel (not 0.)")); | 438 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llRegionSay", NULL, "is", "llRegionSay(integer channel, string msg)\nbroadcasts msg to entire region on channel (not 0.)")); |
439 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetObjectDetails", "l", "kl", "list llGetObjectDetails(key id, list params)\nGets the object details specified in params for the object with key id.\nDetails are OBJECT_NAME, _DESC, _POS, _ROT, _VELOCITY, _OWNER, _GROUP, _CREATOR.")); | 439 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetObjectDetails", "l", "kl", "list llGetObjectDetails(key id, list params)\nGets the object details specified in params for the object with key id.\nDetails are OBJECT_NAME, _DESC, _POS, _ROT, _VELOCITY, _OWNER, _GROUP, _CREATOR.")); |
@@ -484,25 +484,25 @@ void LLScriptLibrary::init() | |||
484 | // documented and therefore the description may be incomplete and require further attention. | 484 | // documented and therefore the description may be incomplete and require further attention. |
485 | // OpenSimulator is written in C# and not CPP therefore some values for example "double = float" etc. are different. | 485 | // OpenSimulator is written in C# and not CPP therefore some values for example "double = float" etc. are different. |
486 | 486 | ||
487 | // OSSL corrections and syntax additions added + set in same order as found in OSSL_stub.cs of OpenSim Source (Updated PM October-21-2010 | 487 | // OSSL corrections and syntax additions added + set in same order as found in OSSL_stub.cs of OpenSim Source (Updated PM October-21-2010 |
488 | // based on OpenSimulator Ver. 0.7.x DEV/Master Git # a7acb650d400a280a7b9edabd304376dff9c81af - a7acb65-r/14142 | 488 | // based on OpenSimulator Ver. 0.7.x DEV/Master Git # a7acb650d400a280a7b9edabd304376dff9c81af - a7acb65-r/14142 |
489 | // Updates by WhiteStar Magic | 489 | // Updates by WhiteStar Magic |
490 | 490 | ||
491 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osSetRegionWaterHeight", NULL, "f", "osSetRegionWaterHeight(float height)\nAdjusts Water Height on region.\n(OpenSim only.)")); | 491 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osSetRegionWaterHeight", NULL, "f", "osSetRegionWaterHeight(float height)\nAdjusts Water Height on region.\n(OpenSim only.)")); |
492 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osSetRegionSunSettings", NULL, "iif", "osSetRegionSunSettings(integer useEstateSun, integer sunFixed, float sunHour)\nChanges the Estate Sun Settings, then Triggers a Sun Update\n'sunFixed' TRUE (1) to keep the sun stationary, FALSE (0) to use global time\n'sunHour' The \"Sun Hour\" that is desired, 0...24, with 0 just after SunRise.\n(OpenSim only.)")); | 492 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osSetRegionSunSettings", NULL, "iif", "osSetRegionSunSettings(integer useEstateSun, integer sunFixed, float sunHour)\nChanges the Estate Sun Settings, then Triggers a Sun Update\n'sunFixed' TRUE (1) to keep the sun stationary, FALSE (0) to use global time\n'sunHour' The \"Sun Hour\" that is desired, 0...24, with 0 just after SunRise.\n(OpenSim only.)")); |
493 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osSetEstateSunSettings", NULL, "if", "osSetEstateSunSettings(integer sunFixed, float sunHour)\nsunFixed = 0 or 1, sunHour = 00.00 to 24.00.\n(OpenSim only.)")); | 493 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osSetEstateSunSettings", NULL, "if", "osSetEstateSunSettings(integer sunFixed, float sunHour)\nsunFixed = 0 or 1, sunHour = 00.00 to 24.00.\n(OpenSim only.)")); |
494 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osGetCurrentSunHour", "f", NULL, "float osGetCurrentSunHour()\nReturns Float Value of Current Sun Hour 0...24 0 = sunrise.\n(OpenSim only.)")); | 494 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osGetCurrentSunHour", "f", NULL, "float osGetCurrentSunHour()\nReturns Float Value of Current Sun Hour 0...24 0 = sunrise.\n(OpenSim only.)")); |
495 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osSunGetParam","f", "s", "float osSunGetParam(string param)\nReturns current float values for param\nwhere param = day_length, year_length, day_night_offset, update_interval.\n(OpenSim only.)")); | 495 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osSunGetParam","f", "s", "float osSunGetParam(string param)\nReturns current float values for param\nwhere param = day_length, year_length, day_night_offset, update_interval.\n(OpenSim only.)")); |
496 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osSunSetParam", "sf", NULL, "osSunSetParam(string param, float value)\nSet's Sun Param for SunSet,\nosSunSetParam(day_length, 24.0)\nwhere param = day_length, year_length, day_night_offset, update_interval.\n(OpenSim only.)")); | 496 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osSunSetParam", "sf", NULL, "osSunSetParam(string param, float value)\nSet's Sun Param for SunSet,\nosSunSetParam(day_length, 24.0)\nwhere param = day_length, year_length, day_night_offset, update_interval.\n(OpenSim only.)")); |
497 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osWindActiveModelPluginName", "s", NULL, "string osWindActiveModelPluginName()\nReturns the Current Working Wind Module Installed\nThese are SimpleRandomWind or ConfigurableWind, optionally others.\n(OpenSim only.)")); | 497 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osWindActiveModelPluginName", "s", NULL, "string osWindActiveModelPluginName()\nReturns the Current Working Wind Module Installed\nThese are SimpleRandomWind or ConfigurableWind, optionally others.\n(OpenSim only.)")); |
498 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osParcelJoin", NULL, "vv", "osParcelJoin(vector pos1, vector pos2))\nJoins Parcels @ X,Y coordinates.\n(OpenSim only.)")); | 498 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osParcelJoin", NULL, "vv", "osParcelJoin(vector pos1, vector pos2))\nJoins Parcels @ X,Y coordinates.\n(OpenSim only.)")); |
499 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osParcelSubdivide", NULL, "vv", "osParcelSubdivide(vector pos1, vector pos2))\nSubdivides Parcels @ X,Y coordinates.\n(OpenSim only.)")); | 499 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osParcelSubdivide", NULL, "vv", "osParcelSubdivide(vector pos1, vector pos2))\nSubdivides Parcels @ X,Y coordinates.\n(OpenSim only.)")); |
500 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osParcelSetDetails", NULL, "vv", "osParcelSetDetails(vector pos, list rules))\nSet Parcel details.\n(OpenSim only.)")); | 500 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osParcelSetDetails", NULL, "vv", "osParcelSetDetails(vector pos, list rules))\nSet Parcel details.\n(OpenSim only.)")); |
501 | // addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osWindParamSet", NULL, "ssf", "osWindParamSet(string plugin, string param, float value)Send Param to Specified Wind Plugin with new value.\n(OpenSim only.)")); | 501 | // addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osWindParamSet", NULL, "ssf", "osWindParamSet(string plugin, string param, float value)Send Param to Specified Wind Plugin with new value.\n(OpenSim only.)")); |
502 | // addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osWindParamGet", "f", "ss", "float osWindParamGet(string plugin, string param)\n Returns Current param from specified Wind Plugin Module.\n(OpenSim only.)")); | 502 | // addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osWindParamGet", "f", "ss", "float osWindParamGet(string plugin, string param)\n Returns Current param from specified Wind Plugin Module.\n(OpenSim only.)")); |
503 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osList2Double", "f", "si", "double osList2Double(list src, int index)\nReturns Double (float) Value from src at index.\n(OpenSim only.)")); | 503 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osList2Double", "f", "si", "double osList2Double(list src, int index)\nReturns Double (float) Value from src at index.\n(OpenSim only.)")); |
504 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osSetDynamicTextureURL", NULL, "ssssi", "osSetDynamicTextureURL(string dynamicID, string contentType, string url, string extraParams, int timer )\n(OpenSim only.)")); | 504 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osSetDynamicTextureURL", NULL, "ssssi", "osSetDynamicTextureURL(string dynamicID, string contentType, string url, string extraParams, int timer )\n(OpenSim only.)")); |
505 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osSetDynamicTextureData", NULL, "ssssi", "osSetDynamicTextureData(string dynamicID, string contentType, string data, string extraParams, int timer)\nWrites text and vector graphics onto a prim face.\n(OpenSim only.)")); | 505 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osSetDynamicTextureData", NULL, "ssssi", "osSetDynamicTextureData(string dynamicID, string contentType, string data, string extraParams, int timer)\nWrites text and vector graphics onto a prim face.\n(OpenSim only.)")); |
506 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osSetDynamicTextureURLBlend", NULL, "ssssii", "osSetDynamicTextureURLBlend(string dynamicID, string contentType, string url, string extraParams, int timer, int alpha)\n(OpenSim only.)")); | 506 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osSetDynamicTextureURLBlend", NULL, "ssssii", "osSetDynamicTextureURLBlend(string dynamicID, string contentType, string url, string extraParams, int timer, int alpha)\n(OpenSim only.)")); |
507 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osSetDynamicTextureDataBlend", NULL, "ssssii", "osSetDynamicTextureDataBlend(string dynamicID, string contentType, string data, string extraParams, int timer, int alpha)\n(OpenSim only.)")); | 507 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osSetDynamicTextureDataBlend", NULL, "ssssii", "osSetDynamicTextureDataBlend(string dynamicID, string contentType, string data, string extraParams, int timer, int alpha)\n(OpenSim only.)")); |
508 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osSetDynamicTextureURLBlendFace", NULL, "ssssfiiii", "osSetDynamicTextureURLBlendFace(string dynamicID, string contentType, string url, string extraParams, bool blend, int disp, int timer, int alpha, int face)\nLoads a web texture on a prim.\n(OpenSim only.)")); | 508 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osSetDynamicTextureURLBlendFace", NULL, "ssssfiiii", "osSetDynamicTextureURLBlendFace(string dynamicID, string contentType, string url, string extraParams, bool blend, int disp, int timer, int alpha, int face)\nLoads a web texture on a prim.\n(OpenSim only.)")); |
@@ -512,7 +512,7 @@ void LLScriptLibrary::init() | |||
512 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osTerrainFlush", NULL, NULL, "osTerrainFlush()\nUpdates terrain data. Call this after you are done using osTerrainSetHeight.\n(OpenSim only.)")); | 512 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osTerrainFlush", NULL, NULL, "osTerrainFlush()\nUpdates terrain data. Call this after you are done using osTerrainSetHeight.\n(OpenSim only.)")); |
513 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osRegionRestart", NULL, "f", "int osRegionRestart(double seconds)\nRestart the current region in the specified number of seconds from now.\n(OpenSim only.)")); | 513 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osRegionRestart", NULL, "f", "int osRegionRestart(double seconds)\nRestart the current region in the specified number of seconds from now.\n(OpenSim only.)")); |
514 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osRegionNotice",NULL, "s", "osRegionNotice(string msg)\nBroadcasts a notification message to all agents on the current region.\n(OpenSim only.)")); | 514 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osRegionNotice",NULL, "s", "osRegionNotice(string msg)\nBroadcasts a notification message to all agents on the current region.\n(OpenSim only.)")); |
515 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osConsoleCommand", NULL, "s", "osConsoleCommand(string command)\nIssues commands directly to the OpenSim server console.\n(OpenSim only.)")); | 515 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osConsoleCommand", NULL, "s", "osConsoleCommand(string command)\nIssues commands directly to the OpenSim server console.\n(OpenSim only.)")); |
516 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osSetParcelMediaURL", NULL, "s", "osSetParcelMediaURL(string url)\nSets Parcel Media URL.\n(OpenSim only.)")); | 516 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osSetParcelMediaURL", NULL, "s", "osSetParcelMediaURL(string url)\nSets Parcel Media URL.\n(OpenSim only.)")); |
517 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osSetParcelSIPAddress", NULL, "s", "osSetParcelSIPAddress(string SIPAddress)\nSets Parcel SIP Address for Voice.\n(OpenSim only.)")); | 517 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osSetParcelSIPAddress", NULL, "s", "osSetParcelSIPAddress(string SIPAddress)\nSets Parcel SIP Address for Voice.\n(OpenSim only.)")); |
518 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osSetPrimFloatOnWater", NULL, "i", "osSetPrimFloatOnWater(int floatYN)\nMake Physical prims float at the water level, TRUE or FALSE.\n(OpenSim only.)")); | 518 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osSetPrimFloatOnWater", NULL, "i", "osSetPrimFloatOnWater(int floatYN)\nMake Physical prims float at the water level, TRUE or FALSE.\n(OpenSim only.)")); |
@@ -568,10 +568,10 @@ void LLScriptLibrary::init() | |||
568 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osSetSpeed", NULL, "kf", "osSetSpeed(key AVATAR, float SpeedModifier)\nMultiplies the normal running, walking, and flying speed of the specified avatar.\n(OpenSim only.)")); | 568 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osSetSpeed", NULL, "kf", "osSetSpeed(key AVATAR, float SpeedModifier)\nMultiplies the normal running, walking, and flying speed of the specified avatar.\n(OpenSim only.)")); |
569 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osCauseDamage", NULL, "kf", "osCauseDamage(key AVATAR, float damage)\nCauses damage to specified AVATAR (UUID).\n(OpenSim only.)")); | 569 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osCauseDamage", NULL, "kf", "osCauseDamage(key AVATAR, float damage)\nCauses damage to specified AVATAR (UUID).\n(OpenSim only.)")); |
570 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osCauseHealing", NULL, "kf", "osCauseHealing(key AVATAR, float healing)\nCauses Healing to specified AVATAR (UUID).\n(OpenSim only.)")); | 570 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "osCauseHealing", NULL, "kf", "osCauseHealing(key AVATAR, float healing)\nCauses Healing to specified AVATAR (UUID).\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.)")); | 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 | 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.)")); |
575 | 575 | ||
576 | // LightShare functions | 576 | // LightShare functions |
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.")); | 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.")); |
@@ -579,6 +579,7 @@ void LLScriptLibrary::init() | |||
579 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "cmGetWindlightScene", "l", "l", "list cmGetWindlightScene(list rules)\nGet the current WindLight settings.")); | 579 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "cmGetWindlightScene", "l", "l", "list cmGetWindlightScene(list rules)\nGet the current WindLight settings.")); |
580 | // LightShare functions - alternate versions | 580 | // LightShare functions - alternate versions |
581 | // don't ask me why they renamed 'em, but we need to include both versions -- MC | 581 | // don't ask me why they renamed 'em, but we need to include both versions -- MC |
582 | // cm refers to a proprietary fork of OpenSim used by Meta 7 and Avination, they where renamed to ls when LightShare was released to the wild. | ||
582 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "lsSetWindlightScene", "i", "l", "integer lsSetWindlightScene(list rules)\nSet the current WindLight scene. Restricted to estate managers and owners only.")); | 583 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "lsSetWindlightScene", "i", "l", "integer lsSetWindlightScene(list rules)\nSet the current WindLight scene. Restricted to estate managers and owners only.")); |
583 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "lsSetWindlightSceneTargeted", "i", "lk", "integer lsSetWindlightSceneTargeted(list rules, key target)\nSet the current WindLight scene directed to a specific avatar. Restricted to estate managers and owners only.")); | 584 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "lsSetWindlightSceneTargeted", "i", "lk", "integer lsSetWindlightSceneTargeted(list rules, key target)\nSet the current WindLight scene directed to a specific avatar. Restricted to estate managers and owners only.")); |
584 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "lsGetWindlightScene", "l", "l", "list lsGetWindlightScene(list rules)\nGet the current WindLight settings.")); | 585 | addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "lsGetWindlightScene", "l", "l", "list lsGetWindlightScene(list rules)\nGet the current WindLight settings.")); |
diff --git a/linden/indra/mac_crash_logger/CMakeLists.txt b/linden/indra/mac_crash_logger/CMakeLists.txt index daf3e10..ee1dc93 100644 --- a/linden/indra/mac_crash_logger/CMakeLists.txt +++ b/linden/indra/mac_crash_logger/CMakeLists.txt | |||
@@ -71,6 +71,6 @@ add_custom_command( | |||
71 | -E | 71 | -E |
72 | copy_directory | 72 | copy_directory |
73 | ${CMAKE_CURRENT_SOURCE_DIR}/CrashReporter.nib | 73 | ${CMAKE_CURRENT_SOURCE_DIR}/CrashReporter.nib |
74 | ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/mac-crash-logger.app/Contents/Resources/CrashReporter.nib | 74 | ${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_CFG_INTDIR}/mac-crash-logger.app/Contents/Resources/CrashReporter.nib |
75 | ) | 75 | ) |
76 | 76 | ||
diff --git a/linden/indra/mac_updater/CMakeLists.txt b/linden/indra/mac_updater/CMakeLists.txt index 0eac76f..5ae7dd8 100644 --- a/linden/indra/mac_updater/CMakeLists.txt +++ b/linden/indra/mac_updater/CMakeLists.txt | |||
@@ -74,6 +74,6 @@ add_custom_command( | |||
74 | -E | 74 | -E |
75 | copy_directory | 75 | copy_directory |
76 | ${CMAKE_CURRENT_SOURCE_DIR}/AutoUpdater.nib | 76 | ${CMAKE_CURRENT_SOURCE_DIR}/AutoUpdater.nib |
77 | ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/mac-updater.app/Contents/Resources/AutoUpdater.nib | 77 | ${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_CFG_INTDIR}/mac-updater.app/Contents/Resources/AutoUpdater.nib |
78 | ) | 78 | ) |
79 | 79 | ||
diff --git a/linden/indra/mac_updater/mac_updater.cpp b/linden/indra/mac_updater/mac_updater.cpp index 43d9955..79783d3 100644 --- a/linden/indra/mac_updater/mac_updater.cpp +++ b/linden/indra/mac_updater/mac_updater.cpp | |||
@@ -68,8 +68,8 @@ EventHandlerRef gEventHandler = NULL; | |||
68 | OSStatus gFailure = noErr; | 68 | OSStatus gFailure = noErr; |
69 | Boolean gCancelled = false; | 69 | Boolean gCancelled = false; |
70 | 70 | ||
71 | char *gUpdateURL; | 71 | const char *gUpdateURL; |
72 | char *gProductName; | 72 | const char *gProductName; |
73 | 73 | ||
74 | void *updatethreadproc(void*); | 74 | void *updatethreadproc(void*); |
75 | 75 | ||
@@ -1032,7 +1032,7 @@ void *updatethreadproc(void*) | |||
1032 | if(!mountOutput.empty()) | 1032 | if(!mountOutput.empty()) |
1033 | { | 1033 | { |
1034 | const char *s = mountOutput.c_str(); | 1034 | const char *s = mountOutput.c_str(); |
1035 | char *prefix = "/dev/"; | 1035 | const char *prefix = "/dev/"; |
1036 | char *sub = strstr(s, prefix); | 1036 | char *sub = strstr(s, prefix); |
1037 | 1037 | ||
1038 | if(sub != NULL) | 1038 | if(sub != NULL) |
diff --git a/linden/indra/media_plugins/gstreamer010/llmediaimplgstreamervidplug.cpp b/linden/indra/media_plugins/gstreamer010/llmediaimplgstreamervidplug.cpp index e194bf7..49bf6f9 100755 --- a/linden/indra/media_plugins/gstreamer010/llmediaimplgstreamervidplug.cpp +++ b/linden/indra/media_plugins/gstreamer010/llmediaimplgstreamervidplug.cpp | |||
@@ -312,12 +312,9 @@ gst_slvideo_set_caps (GstBaseSink * bsink, GstCaps * caps) | |||
312 | static gboolean | 312 | static gboolean |
313 | gst_slvideo_start (GstBaseSink * bsink) | 313 | gst_slvideo_start (GstBaseSink * bsink) |
314 | { | 314 | { |
315 | GstSLVideo *slvideo; | 315 | GST_SLVIDEO(bsink); |
316 | gboolean ret = TRUE; | ||
317 | |||
318 | slvideo = GST_SLVIDEO(bsink); | ||
319 | 316 | ||
320 | return ret; | 317 | return TRUE; |
321 | } | 318 | } |
322 | 319 | ||
323 | static gboolean | 320 | static gboolean |
diff --git a/linden/indra/media_plugins/webkit/CMakeLists.txt b/linden/indra/media_plugins/webkit/CMakeLists.txt index 303a774..f589c61 100644 --- a/linden/indra/media_plugins/webkit/CMakeLists.txt +++ b/linden/indra/media_plugins/webkit/CMakeLists.txt | |||
@@ -112,8 +112,8 @@ if (DARWIN) | |||
112 | # copy the webkit dylib to the build directory | 112 | # copy the webkit dylib to the build directory |
113 | add_custom_command( | 113 | add_custom_command( |
114 | TARGET media_plugin_webkit POST_BUILD | 114 | TARGET media_plugin_webkit POST_BUILD |
115 | # OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/libllqtwebkit.dylib | 115 | # OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_CFG_INTDIR}/libllqtwebkit.dylib |
116 | COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/../libraries/universal-darwin/lib_release/libllqtwebkit.dylib ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/ | 116 | COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/../libraries/universal-darwin/lib_release/libllqtwebkit.dylib ${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_CFG_INTDIR}/ |
117 | DEPENDS media_plugin_webkit ${CMAKE_SOURCE_DIR}/../libraries/universal-darwin/lib_release/libllqtwebkit.dylib | 117 | DEPENDS media_plugin_webkit ${CMAKE_SOURCE_DIR}/../libraries/universal-darwin/lib_release/libllqtwebkit.dylib |
118 | ) | 118 | ) |
119 | 119 | ||
diff --git a/linden/indra/newview/CMakeLists.txt b/linden/indra/newview/CMakeLists.txt index ecbeb9b..7496546 100644 --- a/linden/indra/newview/CMakeLists.txt +++ b/linden/indra/newview/CMakeLists.txt | |||
@@ -126,7 +126,7 @@ set(viewer_SOURCE_FILES | |||
126 | jcfloaterareasearch.cpp | 126 | jcfloaterareasearch.cpp |
127 | kokuastreamingaudio.cpp | 127 | kokuastreamingaudio.cpp |
128 | kowopenregionsettings.cpp | 128 | kowopenregionsettings.cpp |
129 | lightshare.cpp | 129 | llettherebelight.cpp |
130 | llagent.cpp | 130 | llagent.cpp |
131 | llagentaccess.cpp | 131 | llagentaccess.cpp |
132 | llagentdata.cpp | 132 | llagentdata.cpp |
@@ -308,6 +308,7 @@ set(viewer_SOURCE_FILES | |||
308 | llmaniprotate.cpp | 308 | llmaniprotate.cpp |
309 | llmanipscale.cpp | 309 | llmanipscale.cpp |
310 | llmaniptranslate.cpp | 310 | llmaniptranslate.cpp |
311 | llmediadataclient.cpp | ||
311 | llmapresponders.cpp | 312 | llmapresponders.cpp |
312 | llmediaremotectrl.cpp | 313 | llmediaremotectrl.cpp |
313 | llmemoryview.cpp | 314 | llmemoryview.cpp |
@@ -537,16 +538,15 @@ set(viewer_SOURCE_FILES | |||
537 | slfloatermediafilter.cpp | 538 | slfloatermediafilter.cpp |
538 | viewerinfo.cpp | 539 | viewerinfo.cpp |
539 | viewertime.cpp | 540 | viewertime.cpp |
540 | windlightsettingsupdate.cpp | ||
541 | wlfloatermanager.cpp | 541 | wlfloatermanager.cpp |
542 | wlfloaterwindlightsend.cpp | 542 | wlfloaterwindlightsend.cpp |
543 | wlretrievesettings.cpp | 543 | wlretrievesettings.cpp |
544 | wlsettingsmanager.cpp | ||
545 | # [/$PLOTR$] | 544 | # [/$PLOTR$] |
546 | otr_wrapper.cpp | 545 | otr_wrapper.cpp |
547 | otr_floater_smp_dialog.cpp | 546 | otr_floater_smp_dialog.cpp |
548 | otr_floater_smp_progress.cpp | 547 | otr_floater_smp_progress.cpp |
549 | # [/$PLOTR$] | 548 | # [/$PLOTR$] |
549 | rcmoapradar.cpp | ||
550 | ) | 550 | ) |
551 | 551 | ||
552 | set(VIEWER_BINARY_NAME "meta-impy-bin" CACHE STRING | 552 | set(VIEWER_BINARY_NAME "meta-impy-bin" CACHE STRING |
@@ -570,7 +570,7 @@ set(viewer_HEADER_FILES | |||
570 | CMakeLists.txt | 570 | CMakeLists.txt |
571 | ViewerInstall.cmake | 571 | ViewerInstall.cmake |
572 | aoremotectrl.h | 572 | aoremotectrl.h |
573 | chatbar_as_cmdline.h | 573 | chatbar_as_cmdline.h |
574 | emeraldboobutils.h | 574 | emeraldboobutils.h |
575 | floaterao.h | 575 | floaterao.h |
576 | floaterbusy.h | 576 | floaterbusy.h |
@@ -590,11 +590,11 @@ set(viewer_HEADER_FILES | |||
590 | jcfloater_animation_list.h | 590 | jcfloater_animation_list.h |
591 | jcfloaterareasearch.h | 591 | jcfloaterareasearch.h |
592 | kokuastreamingaudio.h | 592 | kokuastreamingaudio.h |
593 | lightshare.h | 593 | llettherebelight.h |
594 | lggautocorrectfloater.h | 594 | lggautocorrectfloater.h |
595 | lggautocorrect.h | 595 | lggautocorrect.h |
596 | lggdicdownload.h | 596 | lggdicdownload.h |
597 | lgghunspell_wrapper.h | 597 | lgghunspell_wrapper.h |
598 | llagent.h | 598 | llagent.h |
599 | llagentaccess.h | 599 | llagentaccess.h |
600 | llagentdata.h | 600 | llagentdata.h |
@@ -777,6 +777,7 @@ set(viewer_HEADER_FILES | |||
777 | llmaniprotate.h | 777 | llmaniprotate.h |
778 | llmanipscale.h | 778 | llmanipscale.h |
779 | llmaniptranslate.h | 779 | llmaniptranslate.h |
780 | llmediadataclient.h | ||
780 | llmapresponders.h | 781 | llmapresponders.h |
781 | llmediaremotectrl.h | 782 | llmediaremotectrl.h |
782 | llmemoryview.h | 783 | llmemoryview.h |
@@ -1020,12 +1021,12 @@ set(viewer_HEADER_FILES | |||
1020 | wlfloatermanager.h | 1021 | wlfloatermanager.h |
1021 | wlfloaterwindlightsend.h | 1022 | wlfloaterwindlightsend.h |
1022 | wlretrievesettings.h | 1023 | wlretrievesettings.h |
1023 | wlsettingsmanager.h | ||
1024 | # [$PLOTR$] | 1024 | # [$PLOTR$] |
1025 | otr_wrapper.h | 1025 | otr_wrapper.h |
1026 | otr_floater_smp_dialog.h | 1026 | otr_floater_smp_dialog.h |
1027 | otr_floater_smp_progress.h | 1027 | otr_floater_smp_progress.h |
1028 | # [/$PLOTR$] | 1028 | # [/$PLOTR$] |
1029 | rcmoapradar.h | ||
1029 | ) | 1030 | ) |
1030 | 1031 | ||
1031 | source_group("CMake Rules" FILES ViewerInstall.cmake) | 1032 | source_group("CMake Rules" FILES ViewerInstall.cmake) |
@@ -1373,7 +1374,7 @@ if (WINDOWS) | |||
1373 | 1374 | ||
1374 | # sets the 'working directory' for debugging from visual studio. | 1375 | # sets the 'working directory' for debugging from visual studio. |
1375 | if (NOT UNATTENDED) | 1376 | if (NOT UNATTENDED) |
1376 | if (NOT self.using_express) | 1377 | if (USE_VSTOOL) |
1377 | add_custom_command( | 1378 | add_custom_command( |
1378 | TARGET ${VIEWER_BINARY_NAME} PRE_BUILD | 1379 | TARGET ${VIEWER_BINARY_NAME} PRE_BUILD |
1379 | COMMAND ${CMAKE_SOURCE_DIR}/tools/vstool/vstool.exe | 1380 | COMMAND ${CMAKE_SOURCE_DIR}/tools/vstool/vstool.exe |
@@ -1385,7 +1386,7 @@ if (WINDOWS) | |||
1385 | ${CMAKE_CURRENT_SOURCE_DIR} | 1386 | ${CMAKE_CURRENT_SOURCE_DIR} |
1386 | COMMENT "Setting the ${VIEWER_BINARY_NAME} working directory for debugging." | 1387 | COMMENT "Setting the ${VIEWER_BINARY_NAME} working directory for debugging." |
1387 | ) | 1388 | ) |
1388 | endif (NOT self.using_express) | 1389 | endif (USE_VSTOOL) |
1389 | endif (NOT UNATTENDED) | 1390 | endif (NOT UNATTENDED) |
1390 | 1391 | ||
1391 | add_custom_command( | 1392 | add_custom_command( |
@@ -1395,7 +1396,7 @@ if (WINDOWS) | |||
1395 | -E | 1396 | -E |
1396 | copy_if_different | 1397 | copy_if_different |
1397 | ${CMAKE_CURRENT_SOURCE_DIR}/../../scripts/messages/message_template.msg | 1398 | ${CMAKE_CURRENT_SOURCE_DIR}/../../scripts/messages/message_template.msg |
1398 | ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/app_settings/message_template.msg | 1399 | ${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_CFG_INTDIR}/app_settings/message_template.msg |
1399 | COMMENT "Copying message_template.msg to the runtime folder." | 1400 | COMMENT "Copying message_template.msg to the runtime folder." |
1400 | ) | 1401 | ) |
1401 | 1402 | ||
@@ -1406,7 +1407,7 @@ if (WINDOWS) | |||
1406 | -E | 1407 | -E |
1407 | copy_if_different | 1408 | copy_if_different |
1408 | ${CMAKE_CURRENT_SOURCE_DIR}/../../etc/message.xml | 1409 | ${CMAKE_CURRENT_SOURCE_DIR}/../../etc/message.xml |
1409 | ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/app_settings/message.xml | 1410 | ${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_CFG_INTDIR}/app_settings/message.xml |
1410 | COMMENT "Copying message.xml to the runtime folder." | 1411 | COMMENT "Copying message.xml to the runtime folder." |
1411 | ) | 1412 | ) |
1412 | 1413 | ||
@@ -1417,11 +1418,11 @@ if (WINDOWS) | |||
1417 | endif (EXISTS ${CMAKE_SOURCE_DIR}/copy_win_scripts) | 1418 | endif (EXISTS ${CMAKE_SOURCE_DIR}/copy_win_scripts) |
1418 | 1419 | ||
1419 | add_custom_command( | 1420 | add_custom_command( |
1420 | OUTPUT ${CMAKE_CFG_INTDIR}/touched.bat | 1421 | OUTPUT ${VIEWER_CFG_INTDIR}/touched.bat |
1421 | COMMAND ${PYTHON_EXECUTABLE} | 1422 | COMMAND ${PYTHON_EXECUTABLE} |
1422 | ARGS | 1423 | ARGS |
1423 | ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py | 1424 | ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py |
1424 | --configuration=${CMAKE_CFG_INTDIR} | 1425 | --configuration=${VIEWER_CFG_INTDIR} |
1425 | --channel=${VIEWER_CHANNEL} | 1426 | --channel=${VIEWER_CHANNEL} |
1426 | --login_channel=${VIEWER_LOGIN_CHANNEL} | 1427 | --login_channel=${VIEWER_LOGIN_CHANNEL} |
1427 | --standalone=${STANDALONE} | 1428 | --standalone=${STANDALONE} |
@@ -1430,15 +1431,15 @@ if (WINDOWS) | |||
1430 | --source=${CMAKE_CURRENT_SOURCE_DIR} | 1431 | --source=${CMAKE_CURRENT_SOURCE_DIR} |
1431 | --artwork=${ARTWORK_DIR} | 1432 | --artwork=${ARTWORK_DIR} |
1432 | --build=${CMAKE_CURRENT_BINARY_DIR} | 1433 | --build=${CMAKE_CURRENT_BINARY_DIR} |
1433 | --dest=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/package | 1434 | --dest=${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_CFG_INTDIR}/package |
1434 | --touch=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/touched.bat | 1435 | --touch=${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_CFG_INTDIR}/touched.bat |
1435 | DEPENDS ${VIEWER_BINARY_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py | 1436 | DEPENDS ${VIEWER_BINARY_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py |
1436 | ) | 1437 | ) |
1437 | 1438 | ||
1438 | add_dependencies(${VIEWER_BINARY_NAME} SLPlugin media_plugin_quicktime media_plugin_webkit media_plugin_gstreamer010) | 1439 | add_dependencies(${VIEWER_BINARY_NAME} SLPlugin media_plugin_quicktime media_plugin_webkit media_plugin_gstreamer010) |
1439 | 1440 | ||
1440 | if (PACKAGE) | 1441 | if (PACKAGE) |
1441 | add_custom_target(package ALL DEPENDS ${CMAKE_CFG_INTDIR}/touched.bat) | 1442 | add_custom_target(package ALL DEPENDS ${VIEWER_CFG_INTDIR}/touched.bat) |
1442 | add_dependencies(package windows-updater windows-crash-logger) | 1443 | add_dependencies(package windows-updater windows-crash-logger) |
1443 | endif (PACKAGE) | 1444 | endif (PACKAGE) |
1444 | endif (WINDOWS) | 1445 | endif (WINDOWS) |
@@ -1590,8 +1591,8 @@ if (DARWIN) | |||
1590 | --artwork=${ARTWORK_DIR} | 1591 | --artwork=${ARTWORK_DIR} |
1591 | --build=${CMAKE_CURRENT_BINARY_DIR} | 1592 | --build=${CMAKE_CURRENT_BINARY_DIR} |
1592 | --buildtype=${CMAKE_BUILD_TYPE} | 1593 | --buildtype=${CMAKE_BUILD_TYPE} |
1593 | --configuration=${CMAKE_CFG_INTDIR} | 1594 | --configuration=${VIEWER_CFG_INTDIR} |
1594 | --dest=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${product}.app | 1595 | --dest=${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_CFG_INTDIR}/${product}.app |
1595 | --grid=${GRID} | 1596 | --grid=${GRID} |
1596 | --source=${CMAKE_CURRENT_SOURCE_DIR} | 1597 | --source=${CMAKE_CURRENT_SOURCE_DIR} |
1597 | --standalone=${STANDALONE} | 1598 | --standalone=${STANDALONE} |
@@ -1622,8 +1623,8 @@ if (WINDOWS) | |||
1622 | -E | 1623 | -E |
1623 | copy_if_different | 1624 | copy_if_different |
1624 | ${BUILT_LLCOMMON} | 1625 | ${BUILT_LLCOMMON} |
1625 | ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR} | 1626 | ${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_CFG_INTDIR} |
1626 | COMMENT "Copying llcommon.dll to the runtime folder." | 1627 | COMMENT "Copying llcommon.dll to the runtime folder ${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_CFG_INTDIR}." |
1627 | ) | 1628 | ) |
1628 | 1629 | ||
1629 | get_target_property(BUILT_SLPLUGIN SLPlugin LOCATION) | 1630 | get_target_property(BUILT_SLPLUGIN SLPlugin LOCATION) |
@@ -1634,8 +1635,8 @@ if (WINDOWS) | |||
1634 | -E | 1635 | -E |
1635 | copy_if_different | 1636 | copy_if_different |
1636 | ${BUILT_SLPLUGIN} | 1637 | ${BUILT_SLPLUGIN} |
1637 | ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR} | 1638 | ${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_CFG_INTDIR} |
1638 | COMMENT "Copying SLPlugin executable to the runtime folder." | 1639 | COMMENT "Copying SLPlugin executable to the runtime folder ${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_CFG_INTDIR}." |
1639 | ) | 1640 | ) |
1640 | 1641 | ||
1641 | get_target_property(BUILT_WEBKIT_PLUGIN media_plugin_webkit LOCATION) | 1642 | get_target_property(BUILT_WEBKIT_PLUGIN media_plugin_webkit LOCATION) |
@@ -1646,8 +1647,8 @@ if (WINDOWS) | |||
1646 | -E | 1647 | -E |
1647 | copy_if_different | 1648 | copy_if_different |
1648 | ${BUILT_WEBKIT_PLUGIN} | 1649 | ${BUILT_WEBKIT_PLUGIN} |
1649 | ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/llplugin | 1650 | ${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_CFG_INTDIR}/llplugin |
1650 | COMMENT "Copying WebKit Plugin to the runtime folder." | 1651 | COMMENT "Copying WebKit Plugin to the runtime folder ${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_CFG_INTDIR}/llplugin." |
1651 | ) | 1652 | ) |
1652 | 1653 | ||
1653 | get_target_property(BUILT_GSTREAMER_PLUGIN media_plugin_gstreamer010 LOCATION) | 1654 | get_target_property(BUILT_GSTREAMER_PLUGIN media_plugin_gstreamer010 LOCATION) |
@@ -1658,8 +1659,8 @@ if (WINDOWS) | |||
1658 | -E | 1659 | -E |
1659 | copy_if_different | 1660 | copy_if_different |
1660 | ${BUILT_GSTREAMER_PLUGIN} | 1661 | ${BUILT_GSTREAMER_PLUGIN} |
1661 | ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/llplugin | 1662 | ${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_CFG_INTDIR}/llplugin |
1662 | COMMENT "Copying Gstreamer Plugin to the runtime folder." | 1663 | COMMENT "Copying Gstreamer Plugin to the runtime folder ${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_CFG_INTDIR}/llplugin." |
1663 | ) | 1664 | ) |
1664 | 1665 | ||
1665 | get_target_property(BUILT_QUICKTIME_PLUGIN media_plugin_quicktime LOCATION) | 1666 | get_target_property(BUILT_QUICKTIME_PLUGIN media_plugin_quicktime LOCATION) |
@@ -1670,13 +1671,13 @@ if (WINDOWS) | |||
1670 | -E | 1671 | -E |
1671 | copy_if_different | 1672 | copy_if_different |
1672 | ${BUILT_QUICKTIME_PLUGIN} | 1673 | ${BUILT_QUICKTIME_PLUGIN} |
1673 | ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/llplugin | 1674 | ${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_CFG_INTDIR}/llplugin |
1674 | COMMENT "Copying Quicktime Plugin to the runtime folder." | 1675 | COMMENT "Copying Quicktime Plugin to the runtime folder ${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_CFG_INTDIR}/llplugin." |
1675 | ) | 1676 | ) |
1676 | 1677 | ||
1677 | # Copying the mime_types.xml file to app_settings | 1678 | # Copying the mime_types.xml file to app_settings |
1678 | set(mime_types_source "${CMAKE_SOURCE_DIR}/newview/skins/default/xui/en-us") | 1679 | set(mime_types_source "${CMAKE_SOURCE_DIR}/newview/skins/default/xui/en-us") |
1679 | set(mime_types_dest "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/app_settings") | 1680 | set(mime_types_dest "${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_CFG_INTDIR}/app_settings") |
1680 | add_custom_command( | 1681 | add_custom_command( |
1681 | TARGET ${VIEWER_BINARY_NAME} POST_BUILD | 1682 | TARGET ${VIEWER_BINARY_NAME} POST_BUILD |
1682 | COMMAND ${CMAKE_COMMAND} | 1683 | COMMAND ${CMAKE_COMMAND} |
@@ -1693,7 +1694,7 @@ endif (WINDOWS) | |||
1693 | if (DARWIN) | 1694 | if (DARWIN) |
1694 | # Don't do this here -- it's taken care of by viewer_manifest.py | 1695 | # Don't do this here -- it's taken care of by viewer_manifest.py |
1695 | # add_custom_command(TARGET ${VIEWER_BINARY_NAME} POST_BUILD | 1696 | # add_custom_command(TARGET ${VIEWER_BINARY_NAME} POST_BUILD |
1696 | # COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/../libraries/universal-darwin/lib_release/libllqtwebkit.dylib ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/llplugin/ | 1697 | # COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/../libraries/universal-darwin/lib_release/libllqtwebkit.dylib ${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_CFG_INTDIR}/llplugin/ |
1697 | # DEPENDS ${CMAKE_SOURCE_DIR}/../libraries/universal-darwin/lib_release/libllqtwebkit.dylib | 1698 | # DEPENDS ${CMAKE_SOURCE_DIR}/../libraries/universal-darwin/lib_release/libllqtwebkit.dylib |
1698 | # ) | 1699 | # ) |
1699 | endif (DARWIN) | 1700 | endif (DARWIN) |
diff --git a/linden/indra/newview/app_settings/default_grids.xml b/linden/indra/newview/app_settings/default_grids.xml index 8eaa0b2..7cf90c4 100644 --- a/linden/indra/newview/app_settings/default_grids.xml +++ b/linden/indra/newview/app_settings/default_grids.xml | |||
@@ -1,29 +1,83 @@ | |||
1 | <llsd> | 1 | <llsd> |
2 | <array> | 2 | <array> |
3 | <map> | 3 | <map> |
4 | <key>default_grids_version</key><string>37</string> | 4 | <key>default_grids_version</key><string>39</string> |
5 | </map> | 5 | </map> |
6 | 6 | ||
7 | <!-- Local Host --> | 7 | <!-- 3rd Rock Grid --> |
8 | <map> | ||
9 | <key>gridname</key><string>3rd Rock Grid</string> | ||
10 | <key>gridnick</key><string>3rdRock</string> | ||
11 | <key>platform</key><string>OpenSim</string> | ||
12 | <key>about</key><string>http://3rdrockgrid.com/</string> | ||
13 | <key>help</key><string>http://3rdrockgrid.com/</string> | ||
14 | <key>helperuri</key><string>http://grid.3rdrockgrid.com/3rg_money/</string> | ||
15 | <key>loginuri</key><string>http://grid.3rdrockgrid.com:8002/</string> | ||
16 | <key>loginpage</key><string>http://3rdrockgrid.com/startpage.php</string> | ||
17 | <key>website</key><string>http://3rdrockgrid.com/</string> | ||
18 | <key>register</key><string>http://3rdrockgrid.com/</string> | ||
19 | <key>password</key><string>http://3rdrockgrid.com/</string> | ||
20 | <key>support</key><string>http://3rdrockgrid.com/</string> | ||
21 | <key>version</key><string>1</string> | ||
22 | </map> | ||
23 | |||
24 | <!-- Avination --> | ||
25 | <map> | ||
26 | <key>gridname</key><string>Avination</string> | ||
27 | <key>gridnick</key><string>Avination</string> | ||
28 | <key>platform</key><string>OpenSim</string> | ||
29 | <key>about</key><string>http://login.avination.net</string> | ||
30 | <key>helperuri</key><string>https://secure.3dhosting.de/</string> | ||
31 | <key>loginpage</key><string>https://www.avination.com/welcome.php</string> | ||
32 | <key>loginuri</key><string>https://login.avination.com</string> | ||
33 | <key>name</key><string>login.avination.net</string> | ||
34 | <key>password</key><string>https://www.avination.com/pwrecover.php</string> | ||
35 | <key>register</key><string>https://www.avination.com/join.php</string> | ||
36 | </map> | ||
37 | |||
38 | <!-- Craft (offspring of Cyberlandia) --> | ||
39 | <map> | ||
40 | <key>gridname</key><string>Craft - The Friendly World</string> | ||
41 | <key>gridnick</key><string>Craft</string> | ||
42 | <key>platform</key><string>OpenSim</string> | ||
43 | <key>about</key><string>http://www.craft-world.org/</string> | ||
44 | <key>loginuri</key><string>http://craft-world.org:8002/</string> | ||
45 | <key>loginpage</key><string>http://www.craft-world.org/loginscreen.php</string> | ||
46 | <key>helperuri</key><string>http://webapp.craft-world.org/economy/</string> | ||
47 | <key>website</key><string>http://www.craft-world.org/</string> | ||
48 | <key>register</key><string>http://craft-world.org:8002/wifi/user/account/</string> | ||
49 | <key>password</key><string>http://craft-world.org:8002/wifi/forgotpassword</string> | ||
50 | <key>version</key><string>0</string> | ||
51 | </map> | ||
52 | |||
53 | <!-- FrancoGrid --> | ||
8 | <map> | 54 | <map> |
9 | <key>gridnick</key><string>localhost</string> | 55 | <key>gridname</key><string>Metavers Francophone FrancoGrid</string> |
10 | <key>gridname</key><string>Local Host</string> | 56 | <key>gridnick</key><string>francogrid</string> |
11 | <key>platform</key><string>OpenSim</string> | 57 | <key>platform</key><string>OpenSim</string> |
12 | <key>loginuri</key><string>http://127.0.0.1:9000/</string> | 58 | <key>about</key><string>http://francogrid.org/</string> |
13 | <key>loginpage</key><string /> | 59 | <key>help</key><string>http://francogrid.org/aide</string> |
14 | <key>helperuri</key><string>http://127.0.0.1:9000/</string> | 60 | <key>helperuri</key><string>http://helper.main.francogrid.org/</string> |
15 | <key>version</key><string>1</string> | 61 | <key>loginpage</key><string>http://viewer.francogrid.org/</string> |
62 | <key>loginuri</key><string>http://login.francogrid.org/</string> | ||
63 | <key>name</key><string>login.francogrid.org</string> | ||
64 | <key>password</key><string>http://francogrid.org/user/password</string> | ||
65 | <key>register</key><string>http://francogrid.org/user/register</string> | ||
16 | </map> | 66 | </map> |
17 | 67 | ||
18 | <!-- GiantGrid --> | 68 | <!-- GiantGrid --> |
19 | <map> | 69 | <map> |
20 | <key>gridnick</key><string>giantgrid</string> | 70 | <key>gridname</key><string>GiantGrid</string> |
21 | <key>gridname</key><string>GiantGrid</string> | 71 | <key>gridnick</key><string>GiantGrid</string> |
22 | <key>platform</key><string>OpenSim</string> | 72 | <key>platform</key><string>OpenSim</string> |
23 | <key>loginuri</key><string>http://Gianttest.no-ip.biz:8002/</string> | 73 | <key>loginuri</key><string>http://giantgrid.no-ip.biz:8002/</string> |
24 | <key>loginpage</key><string>http://gianttest.no-ip.biz:80/gridsplash?method=login</string> | 74 | <key>loginpage</key><string>http://www.giantgrid.nl</string> |
25 | <key>helperuri</key><string>http://gianttest.no-ip.biz/giantmap/</string> | 75 | <key>helperuri</key><string>http://giantgrid.no-ip.biz/XoopCube/html/modules/xoopensim/helper/</string> |
26 | <key>version</key><string>0</string> | 76 | <key>website</key><string>http://www.giantgrid.nl</string> |
77 | <key>register</key><string>http://giantgrid.no-ip.biz:8002/wifi/user/account/</string> | ||
78 | <key>password</key><string>http://giantgrid.no-ip.biz:8002/wifi/forgotpassword</string> | ||
79 | <key>support</key><string>http://gianttest.no-ip.biz/ticket/</string> | ||
80 | <key>version</key><string>1</string> | ||
27 | </map> | 81 | </map> |
28 | 82 | ||
29 | <!-- Infinite Grid --> | 83 | <!-- Infinite Grid --> |
@@ -32,59 +86,126 @@ | |||
32 | <key>gridnick</key> <string>infinitegrid</string> | 86 | <key>gridnick</key> <string>infinitegrid</string> |
33 | <key>platform</key> <string>OpenSim</string> | 87 | <key>platform</key> <string>OpenSim</string> |
34 | <key>loginuri</key> <string>http://grid.infinitegrid.org:8002/</string> | 88 | <key>loginuri</key> <string>http://grid.infinitegrid.org:8002/</string> |
35 | <key>loginpage</key> <string>http://webfront.infinitegrid.org/loginscreen.php</string> | 89 | <key>loginpage</key> <string>http://www.infinitegrid.org/drupal/loginpage</string> |
36 | <key>helperuri</key> <string>http://www.infinitegrid.org/helper/</string> | 90 | <key>helperuri</key> <string>http://www.infinitegrid.org/opensim/helper/</string> |
37 | <key>password</key> <string>http://webfront.infinitegrid.org/</string> | 91 | <key>website</key> <string>http://www.infinitegrid.org/drupal/</string> |
38 | <key>register</key> <string>http://webfront.infinitegrid.org/</string> | 92 | <key>register</key> <string>http://www.infinitegrid.org/drupal/</string> |
39 | <key>support</key> <string>http://www.infinitegrid.org/help</string> | 93 | <key>password</key> <string>http://www.infinitegrid.org/drupal/</string> |
40 | <key>website</key> <string>http://www.infinitegrid.org/about/</string> | 94 | <key>support</key> <string>http://www.infinitegrid.org/drupla/Tags/help</string> |
41 | <key>search</key> <string>http://webi.metaverseink.com/</string> | ||
42 | <key>version</key> <string>0</string> | 95 | <key>version</key> <string>0</string> |
43 | </map> | 96 | </map> |
44 | 97 | ||
45 | <!-- Infinite Grid dev--> | 98 | <!-- InWorldz --> |
46 | <map> | 99 | <map> |
47 | <key>gridname</key> <string>Infinite Grid dev</string> | 100 | <key>gridname</key><string>InWorldz</string> |
48 | <key>gridnick</key> <string>infinitegriddev</string> | 101 | <key>gridnick</key><string>InWorldz</string> |
49 | <key>platform</key> <string>OpenSim</string> | 102 | <key>platform</key><string>OpenSim</string> |
50 | <key>loginuri</key> <string>http://grid.infinitegrid.org:8502/</string> | 103 | <key>about</key><string>http://inworldz.com/</string> |
51 | <key>loginpage</key> <string>http://www.infinitegrid.org/webdev/loginscreen.php</string> | 104 | <key>help</key><string>http://inworldz.com/faq.php</string> |
52 | <key>helperuri</key> <string>http://www.infinitegrid.org/webdev/helper/</string> | 105 | <key>loginuri</key><string>http://inworldz.com:8002/</string> |
53 | <key>password</key> <string>http://www.infinitegrid.org/webdev/</string> | 106 | <key>loginpage</key><string>http://inworldz.com/loginscreen.php</string> |
54 | <key>register</key> <string>http://www.infinitegrid.org/webdev/</string> | 107 | <key>helperuri</key><string>http://inworldz.com/</string> |
55 | <key>support</key> <string>http://www.infinitegrid.org/webdev/help</string> | 108 | <key>password</key><string>http://inworldz.com/</string> |
56 | <key>website</key> <string>http://www.infinitegrid.org/webdev/about/</string> | 109 | <key>register</key><string>http://inworldz.com/register.php</string> |
57 | <key>version</key> <string>0</string> | 110 | <key>support</key><string>http://inworldz.com/support.php</string> |
111 | <key>website</key><string>http://inworldz.com/</string> | ||
112 | <key>version</key><string>2</string> | ||
58 | </map> | 113 | </map> |
59 | 114 | ||
60 | <!-- InWorldz --> | 115 | <!-- Island Oasis --> |
61 | <map> | 116 | <map> |
62 | <key>gridname</key> <string>InWorldz</string> | 117 | <key>gridname</key><string>Island Oasis</string> |
63 | <key>gridnick</key> <string>inworldz</string> | 118 | <key>gridnick</key><string>IslandOasis</string> |
64 | <key>platform</key> <string>OpenSim</string> | 119 | <key>platform</key><string>OpenSim</string> |
65 | <key>loginuri</key> <string>http://inworldz.com:8002/</string> | 120 | <key>about</key><string>http://www.islandoasis.biz/GridStats.aspx</string> |
66 | <key>loginpage</key> <string>http://inworldz.com/loginscreen.php</string> | 121 | <key>help</key><string>http://www.islandoasis.biz/Support.aspx</string> |
67 | <key>helperuri</key> <string>http://inworldz.com/</string> | 122 | <key>helperuri</key><string>http://islandoasisgrid.biz:8020/OsCurrency/</string> |
68 | <key>password</key> <string>http://inworldz.com/loginerror.php?error=2</string> | 123 | <key>loginpage</key><string>http://www.islandoasis.biz/welcome.aspx</string> |
69 | <key>register</key> <string>http://inworldz.com/register.php</string> | 124 | <key>loginuri</key><string>http://islandoasisgrid.biz:8002/</string> |
70 | <key>support</key> <string>http://inworldz.com/support.php</string> | 125 | <key>name</key><string>islandoasisgrid.biz:8002</string> |
71 | <key>website</key> <string>http://inworldz.com/</string> | 126 | <key>password</key><string>http://www.islandoasis.biz/Login.aspx</string> |
72 | <key>version</key> <string>2</string> | 127 | <key>register</key><string>http://www.islandoasis.biz/verification.aspx</string> |
73 | </map> | 128 | </map> |
129 | |||
130 | <!-- Local Host --> | ||
131 | <map> | ||
132 | <key>gridname</key><string>LocalHost</string> | ||
133 | <key>gridnick</key><string>LocalHost</string> | ||
134 | <key>platform</key><string>OpenSim</string> | ||
135 | <key>loginuri</key><string>http://127.0.0.1:9000/</string> | ||
136 | <key>loginpage</key><string /> | ||
137 | <key>helperuri</key><string>http://127.0.0.1:9000/</string> | ||
138 | <key>version</key><string>1</string> | ||
139 | </map> | ||
140 | |||
141 | <!-- local Sim-on-a-stick --> | ||
142 | <map> | ||
143 | <key>gridname</key><string>Sim-on-a-Stick</string> | ||
144 | <key>gridnick</key><string>SimOnAStick</string> | ||
145 | <key>loginpage</key><string>http://127.0.0.1:9100/wifi/welcome.html</string> | ||
146 | <key>loginuri</key><string>http://localhost:9100</string> | ||
147 | </map> | ||
148 | |||
149 | <!-- Metropolis Metaversum --> | ||
150 | <map> | ||
151 | <key>gridname</key><string>Metropolis Metaversum</string> | ||
152 | <key>gridnick</key><string>Metropolis</string> | ||
153 | <key>platform</key><string>OpenSim</string> | ||
154 | <key>about</key><string>http://www.hypergrid.org/metropolis/wiki</string> | ||
155 | <key>help</key><string>http://metropolis.hypergrid.org</string> | ||
156 | <key>helperuri</key><string>http://metropolis.hypergrid.org/currency/helper/</string> | ||
157 | <key>loginpage</key><string>http://metropolis.hypergrid.org</string> | ||
158 | <key>loginuri</key><string>http://hypergrid.org:8002/</string> | ||
159 | <key>name</key><string>hypergrid.org:8002</string> | ||
160 | <key>password</key><string>http://metropolis.hypergrid.org/oswi.php</string> | ||
161 | <key>register</key><string>http://www.hypergrid.org/metropolis/metro_rg.php</string> | ||
162 | </map> | ||
163 | |||
164 | <!-- New World Grid --> | ||
165 | <map> | ||
166 | <key>gridname</key><string>New World Grid</string> | ||
167 | <key>gridnick</key><string>newworldgrid</string> | ||
168 | <key>platform</key><string>OpenSim</string> | ||
169 | <key>loginuri</key><string>http://3d.newworldgrid.com:8002/</string> | ||
170 | <key>loginpage</key><string>http://www.newworldgrid.com/loginpage/</string> | ||
171 | <key>helperuri</key><string>http://3d.newworldgrid.com/services/helper/</string> | ||
172 | <key>website</key><string>http://www.newworldgrid.com/</string> | ||
173 | <key>support</key><string>http://www.newworldgrid.com/contact/</string> | ||
174 | <key>register</key><string>http://www.newworldgrid.com/virreacentral/redirect.php?page=register</string> | ||
175 | <key>password</key><string>http://www.newworldgrid.com/virreacentral/redirect.php?page=login</string> | ||
176 | <key>version</key><string>0</string> | ||
177 | </map> | ||
178 | |||
179 | <!-- ReactionGrid --> | ||
180 | <map> | ||
181 | <key>gridname</key><string>ReactionGrid</string> | ||
182 | <key>gridnick</key><string>ReactionGrid</string> | ||
183 | <key>platform</key><string>OpenSim</string> | ||
184 | <key>about</key><string>http://reactiongrid.com/Default.aspx</string> | ||
185 | <key>help</key><string>http://reactiongrid.com/Support.aspx</string> | ||
186 | <key>loginuri</key><string>http://reactiongrid.com:8008/</string> | ||
187 | <key>loginpage</key><string>http://gsquared.info/portal</string> | ||
188 | <key>helperuri</key><string>http://reactiongrid.com:9000/</string> | ||
189 | <key>website</key><string>http://reactiongrid.com/Default.aspx</string> | ||
190 | <key>support</key><string>http://reactiongrid.com/Support.aspx</string> | ||
191 | <key>register</key><string>http://reactiongrid.com/Register.aspx</string> | ||
192 | <key>password</key><string>http://www.reactiongrid.com/Support/PasswordReset.aspx</string> | ||
193 | <key>version</key><string>0</string> | ||
194 | </map> | ||
74 | 195 | ||
75 | <!-- ScienceSim --> | 196 | <!-- ScienceSim --> |
76 | <map> | 197 | <map> |
77 | <key>gridname</key> <string>IEEE/ACM ScienceSim Virtual World</string> | 198 | <key>gridname</key><string>IEEE/ACM ScienceSim Virtual World</string> |
78 | <key>gridnick</key> <string>sciencesim</string> | 199 | <key>gridnick</key><string>ScienceSim</string> |
79 | <key>platform</key> <string>OpenSim</string> | 200 | <key>platform</key><string>OpenSim</string> |
80 | <key>loginuri</key> <string>http://grid.sciencesim.com/</string> | 201 | <key>loginuri</key><string>http://grid.sciencesim.com/</string> |
81 | <key>loginpage</key> <string>http://island.sciencesim.com/scisim/loginscreen.php</string> | 202 | <key>loginpage</key><string>http://island.sciencesim.com/scisim/loginscreen.php</string> |
82 | <key>helperuri</key> <string></string> | 203 | <key>helperuri</key><string></string> |
83 | <key>password</key> <string>http://island.sciencesim.com/scisim</string> | 204 | <key>password</key><string>http://island.sciencesim.com/scisim</string> |
84 | <key>register</key> <string>http://island.sciencesim.com/scisim</string> | 205 | <key>register</key><string>http://island.sciencesim.com/scisim</string> |
85 | <key>support</key> <string>http://island.sciencesim.com/wiki</string> | 206 | <key>support</key><string>http://island.sciencesim.com/wiki</string> |
86 | <key>website</key> <string>http://island.sciencesim.com/about/</string> | 207 | <key>website</key><string>http://island.sciencesim.com/about/</string> |
87 | <key>version</key> <string>0</string> | 208 | <key>version</key><string>0</string> |
88 | </map> | 209 | </map> |
89 | 210 | ||
90 | <!-- Slackdog --> | 211 | <!-- Slackdog --> |
@@ -103,94 +224,46 @@ | |||
103 | <key>version</key> <string>0</string> | 224 | <key>version</key> <string>0</string> |
104 | </map> | 225 | </map> |
105 | 226 | ||
106 | <!-- Sim-World Grid --> | 227 | <!-- Virtual Highway --> |
107 | <map> | 228 | <map> |
108 | <key>gridname</key> <string>Sim-World rid</string> | 229 | <key>gridname</key><string>Virtual Highway</string> |
109 | <key>gridnick</key> <string>simworld</string> | 230 | <key>gridnick</key><string>VirtualHighway</string> |
110 | <key>platform</key> <string>OpenSim</string> | 231 | <key>platform</key><string>OpenSim</string> |
111 | <key>loginuri</key> <string>http://grid.sim-world.org:8003/</string> | 232 | <key>about</key><string>http://www.virtualhighway.us/about.php</string> |
112 | <key>loginpage</key> <string>http://grid.sim-world.org/home/loginscreen/</string> | 233 | <key>helperuri</key><string>http://www.virtualhighway.us/griddal/</string> |
113 | <key>helperuri</key> <string>http://grid.sim-world.org/home/gridservices07/</string> | 234 | <key>loginpage</key><string>http://www.virtualhighway.us/welcome.php</string> |
114 | <key>password</key> <string>http://www.sim-world.org/index.php/loginregister</string> | 235 | <key>loginuri</key><string>http://login.virtualhighway.us:8002/</string> |
115 | <key>register</key> <string>http://www.sim-world.org/index.php/loginregister</string> | 236 | <key>name</key><string>login.virtualhighway.us:8002</string> |
116 | <key>support</key> <string>http://www.sim-world.org/index.php/support/selfhelp</string> | 237 | <key>password</key><string>http://www.virtualhighway.us/users/lostPassword</string> |
117 | <key>website</key> <string>http://www.sim-world.org/</string> | 238 | <key>register</key><string>http://www.virtualhighway.us/users/register</string> |
118 | <key>search</key> <string>http://www.sim-world.org/</string> | ||
119 | <key>version</key> <string>0</string> | ||
120 | </map> | 239 | </map> |
121 | 240 | ||
122 | <!-- ReactionGrid --> | 241 | <!-- virtyou --> |
123 | <map> | ||
124 | <key>gridnick</key><string>reactiongrid</string> | ||
125 | <key>gridname</key><string>ReactionGrid</string> | ||
126 | <key>platform</key><string>OpenSim</string> | ||
127 | <key>loginuri</key><string>http://reactiongrid.com:8008/</string> | ||
128 | <key>loginpage</key><string>http://gsquared.info/portal</string> | ||
129 | <key>website</key><string>http://reactiongrid.com/Default.aspx</string> | ||
130 | <key>support</key><string>http://reactiongrid.com/Support.aspx</string> | ||
131 | <key>register</key><string>http://reactiongrid.com/Register.aspx</string> | ||
132 | <key>password</key><string>http://reactiongrid.com/Support/ResetPassword.aspx</string> | ||
133 | <key>version</key><string>0</string> | ||
134 | </map> | ||
135 | |||
136 | <!-- Role Play Worlds --> | ||
137 | <map> | ||
138 | <key>gridnick</key><string>roleplayworlds</string> | ||
139 | <key>gridname</key><string>Role Play Worlds</string> | ||
140 | <key>platform</key><string>OpenSim</string> | ||
141 | <key>loginuri</key><string>http://grid.roleplayworlds.net:8002/</string> | ||
142 | <key>loginpage</key><string>http://roleplayworlds.net/loginscreen</string> | ||
143 | <key>helperuri</key><string>http://grid.roleplayworlds.net/</string> | ||
144 | <key>website</key><string>http://roleplayworlds.net/</string> | ||
145 | <key>support</key><string>http://roleplayworlds.net/help</string> | ||
146 | <key>register</key><string>http://roleplayworlds.net/register</string> | ||
147 | <key>password</key><string>http://roleplayworlds.net/password</string> | ||
148 | <key>version</key><string>1</string> | ||
149 | </map> | ||
150 | |||
151 | <!-- The New World Grid --> | ||
152 | <map> | ||
153 | <key>gridnick</key><string>thenewworldgrid</string> | ||
154 | <key>gridname</key><string>The New World Grid</string> | ||
155 | <key>platform</key><string>OpenSim</string> | ||
156 | <key>loginuri</key><string>http://giantgrid.no-ip.biz:8002/</string> | ||
157 | <key>loginpage</key><string>http://www.giantgrid.nl</string> | ||
158 | <key>helperuri</key><string>http://giantgrid.no-ip.biz/XoopCube/html/modules/xoopensim/helper/</string> | ||
159 | <key>website</key><string>http://www.giantgrid.nl</string> | ||
160 | <key>register</key><string>http://giantgrid.no-ip.biz:8002/wifi/user/account/</string> | ||
161 | <key>password</key><string>http://giantgrid.no-ip.biz:8002/wifi/forgotpassword</string> | ||
162 | <key>support</key><string>http://gianttest.no-ip.biz/ticket/</string> | ||
163 | <key>version</key><string>1</string> | ||
164 | </map> | ||
165 | |||
166 | <!-- 3rd Rock Grid --> | ||
167 | <map> | 242 | <map> |
168 | <key>gridnick</key><string>3rdrock</string> | 243 | <key>gridname</key><string>virtyou MainGrid</string> |
169 | <key>gridname</key><string>3rd Rock Grid</string> | 244 | <key>gridnick</key><string>virtyou</string> |
170 | <key>platform</key><string>OpenSim</string> | 245 | <key>platform</key><string>OpenSim</string> |
171 | <key>loginuri</key><string>http://grid.3rdrockgrid.com:8002/</string> | 246 | <key>help</key><string>http://virtyou.com/q/howto/</string> |
172 | <key>loginpage</key><string>http://3rdrockgrid.com/startpage.php</string> | 247 | <key>loginpage</key><string>http://virtyou.com/welcome/</string> |
173 | <key>helperuri</key><string>http://grid.3rdrockgrid.com/money/</string> | 248 | <key>loginuri</key><string>http://go.virtyou.com</string> |
174 | <key>website</key><string>http://3rdrockgrid.com/</string> | 249 | <key>password</key><string>http://virtyou.com/user/forgotten.html</string> |
175 | <key>register</key><string>http://3rdrockgrid.com/</string> | 250 | <key>register</key><string>http://virtyou.com/user/</string> |
176 | <key>password</key><string>http://3rdrockgrid.com/</string> | ||
177 | <key>support</key><string>http://3rdrockgrid.com/</string> | ||
178 | <key>version</key><string>1</string> | ||
179 | </map> | 251 | </map> |
180 | 252 | ||
181 | <!-- Your Alternative Life --> | 253 | <!-- Your Alternative Life --> |
182 | <map> | 254 | <map> |
183 | <key>gridnick</key><string>youralternativelife</string> | 255 | <key>gridname</key><string>Your Alternative Life</string> |
184 | <key>gridname</key><string>Your Alternative Life</string> | 256 | <key>gridnick</key><string>YourAlternativeLife</string> |
185 | <key>platform</key><string>OpenSim</string> | 257 | <key>platform</key><string>OpenSim</string> |
186 | <key>loginuri</key><string>http://grid01.from-ne.com:8002/</string> | 258 | <key>about</key><string>http://www.youralternativelife.com</string> |
187 | <key>loginpage</key><string>http://grid01.from-ne.com/tios/loginscreen3.php</string> | 259 | <key>loginuri</key><string>http://grid01.from-ne.com:8002/</string> |
188 | <key>helperuri</key><string>http://grid01.from-ne.com/tios/services/</string> | 260 | <key>loginpage</key><string>http://grid01.from-ne.com/tios/loginscreen3.php</string> |
189 | <key>website</key><string>http://www.youralternativelife.com</string> | 261 | <key>helperuri</key><string>http://grid01.from-ne.com/tios/services/</string> |
190 | <key>support</key><string>http://www.youralternativelife.com</string> | 262 | <key>website</key><string>http://www.youralternativelife.com</string> |
191 | <key>register</key><string>http://www.youralternativelife.com</string> | 263 | <key>support</key><string>http://www.youralternativelife.com</string> |
192 | <key>password</key><string>http://www.youralternativelife.com</string> | 264 | <key>register</key><string>http://www.youralternativelife.com</string> |
193 | <key>version</key><string>0</string> | 265 | <key>password</key><string>http://www.youralternativelife.com</string> |
266 | <key>version</key><string>0</string> | ||
194 | </map> | 267 | </map> |
195 | 268 | ||
196 | </array> | 269 | </array> |
diff --git a/linden/indra/newview/app_settings/settings.xml b/linden/indra/newview/app_settings/settings.xml index e701c3e..5534ecc 100644 --- a/linden/indra/newview/app_settings/settings.xml +++ b/linden/indra/newview/app_settings/settings.xml | |||
@@ -2,6 +2,123 @@ | |||
2 | <llsd> | 2 | <llsd> |
3 | <map> | 3 | <map> |
4 | 4 | ||
5 | <!-- begin RC hacking --> | ||
6 | <key>PrimMediaMasterEnabled</key> | ||
7 | <map> | ||
8 | <key>Comment</key> | ||
9 | <string>Whether or not Media on a Prim is enabled.</string> | ||
10 | <key>Persist</key> | ||
11 | <integer>1</integer> | ||
12 | <key>Type</key> | ||
13 | <string>Boolean</string> | ||
14 | <key>Value</key> | ||
15 | <integer>1</integer> | ||
16 | </map> | ||
17 | <key>PrimMediaMaxRetries</key> | ||
18 | <map> | ||
19 | <key>Comment</key> | ||
20 | <string>Maximum number of retries for media queries.</string> | ||
21 | <key>Persist</key> | ||
22 | <integer>1</integer> | ||
23 | <key>Type</key> | ||
24 | <string>U32</string> | ||
25 | <key>Value</key> | ||
26 | <integer>4</integer> | ||
27 | </map> | ||
28 | <key>PrimMediaRequestQueueDelay</key> | ||
29 | <map> | ||
30 | <key>Comment</key> | ||
31 | <string>Timer delay for fetching media from the queue (in seconds).</string> | ||
32 | <key>Persist</key> | ||
33 | <integer>1</integer> | ||
34 | <key>Type</key> | ||
35 | <string>F32</string> | ||
36 | <key>Value</key> | ||
37 | <real>1.0</real> | ||
38 | </map> | ||
39 | <key>PrimMediaRetryTimerDelay</key> | ||
40 | <map> | ||
41 | <key>Comment</key> | ||
42 | <string>Timer delay for retrying on media queries (in seconds).</string> | ||
43 | <key>Persist</key> | ||
44 | <integer>1</integer> | ||
45 | <key>Type</key> | ||
46 | <string>F32</string> | ||
47 | <key>Value</key> | ||
48 | <real>5.0</real> | ||
49 | </map> | ||
50 | <key>PrimMediaMaxSortedQueueSize</key> | ||
51 | <map> | ||
52 | <key>Comment</key> | ||
53 | <string>Maximum number of objects the viewer will load media for initially</string> | ||
54 | <key>Persist</key> | ||
55 | <integer>1</integer> | ||
56 | <key>Type</key> | ||
57 | <string>U32</string> | ||
58 | <key>Value</key> | ||
59 | <integer>100000</integer> | ||
60 | </map> | ||
61 | <key>PrimMediaMaxRoundRobinQueueSize</key> | ||
62 | <map> | ||
63 | <key>Comment</key> | ||
64 | <string>Maximum number of objects the viewer will continuously update media for</string> | ||
65 | <key>Persist</key> | ||
66 | <integer>1</integer> | ||
67 | <key>Type</key> | ||
68 | <string>U32</string> | ||
69 | <key>Value</key> | ||
70 | <integer>100000</integer> | ||
71 | </map> | ||
72 | <key>ShowMOAPRadar</key> | ||
73 | <map> | ||
74 | <key>Comment</key> | ||
75 | <string>Show the MOAP radar</string> | ||
76 | <key>Persist</key> | ||
77 | <integer>1</integer> | ||
78 | <key>Type</key> | ||
79 | <string>Boolean</string> | ||
80 | <key>Value</key> | ||
81 | <integer>0</integer> | ||
82 | </map> | ||
83 | <key>FloaterMOAPRadarRect</key> | ||
84 | <map> | ||
85 | <key>Comment</key> | ||
86 | <string>Rectangle for MOAP Radar</string> | ||
87 | <key>Persist</key> | ||
88 | <integer>1</integer> | ||
89 | <key>Type</key> | ||
90 | <string>Rect</string> | ||
91 | <key>Value</key> | ||
92 | <array> | ||
93 | <integer>0</integer> | ||
94 | <integer>400</integer> | ||
95 | <integer>200</integer> | ||
96 | <integer>0</integer> | ||
97 | </array> | ||
98 | </map> | ||
99 | <key>MOAPRadarKeepOpen</key> | ||
100 | <map> | ||
101 | <key>Comment</key> | ||
102 | <string>Keeps MOAP radar updates running in background</string> | ||
103 | <key>Persist</key> | ||
104 | <integer>1</integer> | ||
105 | <key>Type</key> | ||
106 | <string>Boolean</string> | ||
107 | <key>Value</key> | ||
108 | <integer>0</integer> | ||
109 | </map> | ||
110 | <key>MOAPRadarUpdateRate</key> | ||
111 | <map> | ||
112 | <key>Comment</key> | ||
113 | <string>MOAP Radar update rate (0 = high, 1 = medium, 2 = low)</string> | ||
114 | <key>Persist</key> | ||
115 | <integer>1</integer> | ||
116 | <key>Type</key> | ||
117 | <string>U32</string> | ||
118 | <key>Value</key> | ||
119 | <integer>1</integer> | ||
120 | </map> | ||
121 | |||
5 | <!-- BEGIN IMPRUDENCE-SPECIFIC SETTINGS --> | 122 | <!-- BEGIN IMPRUDENCE-SPECIFIC SETTINGS --> |
6 | 123 | ||
7 | <!-- begin Aurora-specific settings --> | 124 | <!-- begin Aurora-specific settings --> |
@@ -14694,6 +14811,17 @@ | |||
14694 | <real>1.0</real> | 14811 | <real>1.0</real> |
14695 | </array> | 14812 | </array> |
14696 | </map> | 14813 | </map> |
14814 | <key>moapbeacon</key> | ||
14815 | <map> | ||
14816 | <key>Comment</key> | ||
14817 | <string>Beacon / Highlight MOAP sources</string> | ||
14818 | <key>Persist</key> | ||
14819 | <integer>1</integer> | ||
14820 | <key>Type</key> | ||
14821 | <string>Boolean</string> | ||
14822 | <key>Value</key> | ||
14823 | <integer>0</integer> | ||
14824 | </map> | ||
14697 | <key>particlesbeacon</key> | 14825 | <key>particlesbeacon</key> |
14698 | <map> | 14826 | <map> |
14699 | <key>Comment</key> | 14827 | <key>Comment</key> |
diff --git a/linden/indra/newview/chatbar_as_cmdline.cpp b/linden/indra/newview/chatbar_as_cmdline.cpp index 9777114..e1314f7 100644 --- a/linden/indra/newview/chatbar_as_cmdline.cpp +++ b/linden/indra/newview/chatbar_as_cmdline.cpp | |||
@@ -302,7 +302,6 @@ bool cmd_line_chat(std::string revised_text, EChatType type) | |||
302 | { | 302 | { |
303 | if (i >> z) | 303 | if (i >> z) |
304 | { | 304 | { |
305 | LLVector3 agentPos = gAgent.getPositionAgent(); | ||
306 | LLViewerRegion* agentRegionp = gAgent.getRegion(); | 305 | LLViewerRegion* agentRegionp = gAgent.getRegion(); |
307 | if(agentRegionp) | 306 | if(agentRegionp) |
308 | { | 307 | { |
diff --git a/linden/indra/newview/floaterotr.cpp b/linden/indra/newview/floaterotr.cpp index a655fd7..4c78d4c 100644 --- a/linden/indra/newview/floaterotr.cpp +++ b/linden/indra/newview/floaterotr.cpp | |||
@@ -54,7 +54,7 @@ BOOL FloaterOTR::postBuild() | |||
54 | childSetAction("btn_cancel", onClickCancel, this); | 54 | childSetAction("btn_cancel", onClickCancel, this); |
55 | 55 | ||
56 | childSetValue("EmeraldUseOTR", LLSD((S32)gSavedSettings.getU32("EmeraldUseOTR"))); | 56 | childSetValue("EmeraldUseOTR", LLSD((S32)gSavedSettings.getU32("EmeraldUseOTR"))); |
57 | childSetValue("EmeraldUseOTRInTypingStop", gSavedSettings.getBOOL("EmeraldUseOTRInTypingStop")); | 57 | childSetValue("EmeraldOTRInTypingStop", gSavedSettings.getBOOL("EmeraldOTRInTypingStop")); |
58 | getChild<LLButton>("otr_help_btn")->setClickedCallback(onClickOtrHelp, this); | 58 | getChild<LLButton>("otr_help_btn")->setClickedCallback(onClickOtrHelp, this); |
59 | 59 | ||
60 | return TRUE; | 60 | return TRUE; |
@@ -89,7 +89,7 @@ void FloaterOTR::apply() | |||
89 | U32 otrpref = childGetValue("EmeraldUseOTR").asReal(); | 89 | U32 otrpref = childGetValue("EmeraldUseOTR").asReal(); |
90 | 90 | ||
91 | gSavedSettings.setU32("EmeraldUseOTR", otrpref); | 91 | gSavedSettings.setU32("EmeraldUseOTR", otrpref); |
92 | gSavedSettings.setBOOL("EmeraldUseOTRInTypingStop", childGetValue("EmeraldUseOTRInTypingStop").asBoolean()); | 92 | gSavedSettings.setBOOL("EmeraldOTRInTypingStop", childGetValue("EmeraldOTRInTypingStop").asBoolean()); |
93 | // otrpref: 0 == Require OTR, 1 == Request OTR, 2 == Accept OTR, 3 == Decline OTR | 93 | // otrpref: 0 == Require OTR, 1 == Request OTR, 2 == Accept OTR, 3 == Decline OTR |
94 | if (3 == otrpref) | 94 | if (3 == otrpref) |
95 | OTR_Wrapper::stopAll(); | 95 | OTR_Wrapper::stopAll(); |
diff --git a/linden/indra/newview/hippogridmanager.cpp b/linden/indra/newview/hippogridmanager.cpp index 4c46d3e..11b144e 100644 --- a/linden/indra/newview/hippogridmanager.cpp +++ b/linden/indra/newview/hippogridmanager.cpp | |||
@@ -49,9 +49,10 @@ | |||
49 | #include "llviewernetwork.h" // gMacAddress | 49 | #include "llviewernetwork.h" // gMacAddress |
50 | #include "llweb.h" | 50 | #include "llweb.h" |
51 | #include "llxorcipher.h" // saved password, MAC address | 51 | #include "llxorcipher.h" // saved password, MAC address |
52 | #include "llblowfishcipher.h" | ||
52 | 53 | ||
53 | #include "hipporestrequest.h" | 54 | #include "hipporestrequest.h" |
54 | 55 | #include <boost/algorithm/string.hpp> | |
55 | 56 | ||
56 | // ******************************************************************** | 57 | // ******************************************************************** |
57 | // Global Variables | 58 | // Global Variables |
@@ -87,6 +88,7 @@ HippoGridInfo::HippoGridInfo(const std::string& gridNick) : | |||
87 | mFirstName(LLStringUtil::null), | 88 | mFirstName(LLStringUtil::null), |
88 | mLastName(LLStringUtil::null), | 89 | mLastName(LLStringUtil::null), |
89 | mPasswordAvatar(LLStringUtil::null), | 90 | mPasswordAvatar(LLStringUtil::null), |
91 | mEncryptedPassword(LLStringUtil::null), | ||
90 | mXmlState(XML_VOID), | 92 | mXmlState(XML_VOID), |
91 | mVoiceConnector("SLVoice"), | 93 | mVoiceConnector("SLVoice"), |
92 | mRenderCompat(false), | 94 | mRenderCompat(false), |
@@ -101,9 +103,27 @@ HippoGridInfo::HippoGridInfo(const std::string& gridNick) : | |||
101 | mGridNick = sanitizeGridNick(nick); | 103 | mGridNick = sanitizeGridNick(nick); |
102 | } | 104 | } |
103 | 105 | ||
106 | // Check if this really is a SecondLife grid, to prevent cheating. | ||
107 | void HippoGridInfo::checkLoginURIforSecondLifeness() | ||
108 | { | ||
109 | LLURI loginURI(mLoginURI); | ||
110 | std::string host = loginURI.hostName(); | ||
111 | size_t found; | ||
112 | |||
113 | boost::algorithm::to_lower(host); | ||
114 | |||
115 | found = host.rfind("lindenlab.com"); | ||
116 | if ((found + 13) == host.size()) | ||
117 | mPlatform = PLATFORM_SECONDLIFE; | ||
118 | found = host.rfind("secondlife.com"); | ||
119 | if ((found + 14) == host.size()) | ||
120 | mPlatform = PLATFORM_SECONDLIFE; | ||
121 | } | ||
122 | |||
104 | void HippoGridInfo::setPlatform(Platform platform) | 123 | void HippoGridInfo::setPlatform(Platform platform) |
105 | { | 124 | { |
106 | mPlatform = platform; | 125 | mPlatform = platform; |
126 | checkLoginURIforSecondLifeness(); | ||
107 | if (mPlatform == PLATFORM_SECONDLIFE) | 127 | if (mPlatform == PLATFORM_SECONDLIFE) |
108 | { | 128 | { |
109 | mCurrencySymbol = "L$"; | 129 | mCurrencySymbol = "L$"; |
@@ -136,6 +156,7 @@ void HippoGridInfo::setLoginURI(const std::string& loginURI) | |||
136 | { | 156 | { |
137 | std::string uri = loginURI; | 157 | std::string uri = loginURI; |
138 | mLoginURI = sanitizeURI(uri); | 158 | mLoginURI = sanitizeURI(uri); |
159 | checkLoginURIforSecondLifeness(); | ||
139 | } | 160 | } |
140 | 161 | ||
141 | void HippoGridInfo::setHelperURI(const std::string& helperURI) | 162 | void HippoGridInfo::setHelperURI(const std::string& helperURI) |
@@ -404,12 +425,115 @@ void HippoGridInfo::formatFee(std::string &fee, S32 cost, bool showFree) const | |||
404 | } | 425 | } |
405 | } | 426 | } |
406 | 427 | ||
428 | const S32 HASHED_LENGTH = 32; | ||
429 | |||
430 | void HippoGridInfo::setEncryptedPassword(const std::string& encrypted_password) | ||
431 | { | ||
432 | int i; | ||
433 | LLBlowfishCipher cipher(gMACAddress, 6); | ||
434 | size_t encrypted_size = cipher.requiredEncryptionSpace(HASHED_LENGTH); | ||
435 | |||
436 | if (encrypted_password.empty()) | ||
437 | { | ||
438 | // Check if we have a password hash to encrypt. | ||
439 | if (mPasswordAvatar.empty()) | ||
440 | mEncryptedPassword = ""; | ||
441 | else | ||
442 | { | ||
443 | // In theory, this is used to convert old style Imprudence 1.4 beta 2 and earlier passwords. | ||
444 | // Encipher with MAC address | ||
445 | char out[HASHED_LENGTH * 2 + 1]; | ||
446 | |||
447 | /* indra/llmessage/llmail.cpp says "blowfish-not-supported-on-windows", but we shall see. | ||
448 | #if LL_WINDOWS | ||
449 | LLXORCipher cipherX(gMACAddress, 6); | ||
450 | cipherX.encrypt(mPasswordAvatar.c_str(), HASHED_LENGTH); | ||
451 | #else | ||
452 | */ | ||
453 | U8* encrypted = new U8[encrypted_size]; | ||
454 | U8* password = (U8 *) mPasswordAvatar.c_str(); | ||
455 | |||
456 | cipher.encrypt(password, HASHED_LENGTH, encrypted, HASHED_LENGTH); | ||
457 | for (i = 0; i < HASHED_LENGTH; i++) | ||
458 | { | ||
459 | sprintf(out + i * 2, "%02x", encrypted[i]); | ||
460 | } | ||
461 | out[HASHED_LENGTH * 2]='\0'; | ||
462 | mEncryptedPassword.assign(out); | ||
463 | } | ||
464 | |||
465 | return; | ||
466 | } | ||
467 | |||
468 | if (encrypted_password == mEncryptedPassword) | ||
469 | { | ||
470 | return; | ||
471 | } | ||
472 | |||
473 | // Max "actual" password length is 16 characters. | ||
474 | // Hex digests are always 32 characters. | ||
475 | // Encrypted passwords stored as hex digits are 64 characters. | ||
476 | if (encrypted_password.length() == (HASHED_LENGTH * 2)) | ||
477 | { | ||
478 | // This is actually encrypted, as found in the grids file. | ||
479 | mEncryptedPassword.assign(encrypted_password); | ||
480 | } | ||
481 | else | ||
482 | { | ||
483 | // Should never happen, this is only called from the file reading bit. | ||
484 | llwarns << "Encrypted password corrupted." << llendl; | ||
485 | return; | ||
486 | } | ||
487 | |||
488 | std::string hashed_password(""); | ||
489 | |||
490 | // Decrypt it for the password hash. | ||
491 | // Decipher with MAC address | ||
492 | U8 buffer[HASHED_LENGTH + 1]; | ||
493 | char in[HASHED_LENGTH * 2 + 1]; | ||
494 | |||
495 | LLStringUtil::copy(in, mEncryptedPassword.c_str(), HASHED_LENGTH * 2 + 1); | ||
496 | /* indra/llmessage/llmail.cpp says "blowfish-not-supported-on-windows", but we shall see. | ||
497 | #if LL_WINDOWS | ||
498 | for (i = 0; i < HASHED_LENGTH; i++) | ||
499 | { | ||
500 | sscanf(in + i * 2, "%2hhx", &buffer[i]); | ||
501 | } | ||
502 | // Note that an XOR "cipher" is a lousy one when the secret is repeated several times like it is here. | ||
503 | LLXORCipher cipher(gMACAddress, 6); | ||
504 | cipher.decrypt(buffer, HASHED_LENGTH); | ||
505 | #else | ||
506 | */ | ||
507 | U8* encrypted = new U8[encrypted_size]; | ||
508 | for (i = 0; i < HASHED_LENGTH; i++) | ||
509 | { | ||
510 | sscanf(in + i * 2, "%2hhx", &encrypted[i]); | ||
511 | } | ||
512 | // Not sure why, but this prints a warning saying it failed, even though it works. Which does not matter that much, we don't use the return value anyway. | ||
513 | cipher.decrypt(encrypted, HASHED_LENGTH, buffer, HASHED_LENGTH); | ||
514 | buffer[HASHED_LENGTH] = '\0'; | ||
515 | |||
516 | // Check to see if the mac address generated a bad hashed | ||
517 | // password. It should be a hex-string or else the mac adress has | ||
518 | // changed. This is a security feature to make sure that if you | ||
519 | // get someone's grid_info.xml file, you cannot hack their account. | ||
520 | // This is a lousy way to check. | ||
521 | if (is_hex_string(buffer, HASHED_LENGTH)) | ||
522 | { | ||
523 | hashed_password.assign((char*)buffer); | ||
524 | } | ||
525 | |||
526 | mPasswordAvatar.assign(hashed_password); | ||
527 | } | ||
407 | 528 | ||
408 | void HippoGridInfo::setPassword(const std::string& unhashed_password) | 529 | void HippoGridInfo::setPassword(const std::string& unhashed_password) |
409 | { | 530 | { |
531 | int i; | ||
532 | |||
410 | if (unhashed_password.empty()) | 533 | if (unhashed_password.empty()) |
411 | { | 534 | { |
412 | mPasswordAvatar = ""; | 535 | mPasswordAvatar = ""; |
536 | mEncryptedPassword = ""; | ||
413 | return; | 537 | return; |
414 | } | 538 | } |
415 | 539 | ||
@@ -435,59 +559,38 @@ void HippoGridInfo::setPassword(const std::string& unhashed_password) | |||
435 | hashed_password = munged_password; | 559 | hashed_password = munged_password; |
436 | } | 560 | } |
437 | 561 | ||
438 | // need to fix the bug in this | 562 | // Encrypt it for storing in the grids file. |
439 | /* | ||
440 | |||
441 | // Encipher with MAC address | 563 | // Encipher with MAC address |
442 | const S32 HASHED_LENGTH = 32; | 564 | char out[HASHED_LENGTH * 2 + 1]; |
443 | U8 buffer[HASHED_LENGTH+1]; | ||
444 | |||
445 | LLStringUtil::copy((char*)buffer, hashed_password.c_str(), HASHED_LENGTH+1); | ||
446 | 565 | ||
447 | LLXORCipher cipher(gMACAddress, 6); | 566 | /* indra/llmessage/llmail.cpp says "blowfish-not-supported-on-windows", but we shall see. |
448 | cipher.encrypt(buffer, HASHED_LENGTH); | 567 | #if LL_WINDOWS |
568 | LLXORCipher cipherX(gMACAddress, 6); | ||
569 | cipherX.encrypt(hashed_password.c_str(), HASHED_LENGTH); | ||
570 | #else | ||
571 | */ | ||
572 | LLBlowfishCipher cipher(gMACAddress, 6); | ||
573 | size_t encrypted_size = cipher.requiredEncryptionSpace(HASHED_LENGTH); | ||
574 | U8* encrypted = new U8[encrypted_size]; | ||
575 | U8* password = (U8 *) hashed_password.c_str(); | ||
449 | 576 | ||
450 | mPasswordAvatar.assign((char*)buffer); | 577 | cipher.encrypt(password, HASHED_LENGTH, encrypted, HASHED_LENGTH); |
451 | */ | 578 | for (i = 0; i < HASHED_LENGTH; i++) |
579 | { | ||
580 | sprintf(out + i * 2, "%02x", encrypted[i]); | ||
581 | } | ||
582 | out[HASHED_LENGTH * 2]='\0'; | ||
583 | mEncryptedPassword.assign(out); | ||
452 | mPasswordAvatar.assign(hashed_password); | 584 | mPasswordAvatar.assign(hashed_password); |
453 | } | 585 | } |
454 | 586 | ||
587 | std::string HippoGridInfo::getEncryptedPassword() const | ||
588 | { | ||
589 | return mEncryptedPassword; | ||
590 | } | ||
455 | 591 | ||
456 | std::string HippoGridInfo::getPassword() const | 592 | std::string HippoGridInfo::getPassword() const |
457 | { | 593 | { |
458 | // need to fix the bug in this | ||
459 | /* | ||
460 | if (mPasswordAvatar.empty() || mPasswordAvatar.length() == 32) | ||
461 | { | ||
462 | return mPasswordAvatar; | ||
463 | } | ||
464 | |||
465 | std::string hashed_password(""); | ||
466 | |||
467 | // UUID is 16 bytes, written into ASCII is 32 characters | ||
468 | // without trailing \0 | ||
469 | const S32 HASHED_LENGTH = 32; | ||
470 | U8 buffer[HASHED_LENGTH+1]; | ||
471 | |||
472 | LLStringUtil::copy((char*)buffer, mPasswordAvatar.c_str(), HASHED_LENGTH+1); | ||
473 | |||
474 | // Decipher with MAC address | ||
475 | LLXORCipher cipher(gMACAddress, 6); | ||
476 | cipher.decrypt(buffer, HASHED_LENGTH); | ||
477 | |||
478 | buffer[HASHED_LENGTH] = '\0'; | ||
479 | |||
480 | // Check to see if the mac address generated a bad hashed | ||
481 | // password. It should be a hex-string or else the mac adress has | ||
482 | // changed. This is a security feature to make sure that if you | ||
483 | // get someone's grid_info.xml file, you cannot hack their account. | ||
484 | if (is_hex_string(buffer, HASHED_LENGTH)) | ||
485 | { | ||
486 | hashed_password.assign((char*)buffer); | ||
487 | } | ||
488 | |||
489 | return hashed_password; | ||
490 | */ | ||
491 | return mPasswordAvatar; | 594 | return mPasswordAvatar; |
492 | } | 595 | } |
493 | 596 | ||
@@ -890,7 +993,9 @@ void HippoGridManager::parseData(LLSD &gridInfo, bool mergeIfNewer) | |||
890 | if (gridMap.has("render_compat")) grid->setRenderCompat(gridMap["render_compat"]); | 993 | if (gridMap.has("render_compat")) grid->setRenderCompat(gridMap["render_compat"]); |
891 | if (gridMap.has("firstname")) grid->setFirstName(gridMap["firstname"]); | 994 | if (gridMap.has("firstname")) grid->setFirstName(gridMap["firstname"]); |
892 | if (gridMap.has("lastname")) grid->setLastName(gridMap["lastname"]); | 995 | if (gridMap.has("lastname")) grid->setLastName(gridMap["lastname"]); |
996 | // Reading this one coz there are some old files in the wild that have it, but not encryptedpassword. | ||
893 | if (gridMap.has("avatarpassword")) grid->setPassword(gridMap["avatarpassword"]); | 997 | if (gridMap.has("avatarpassword")) grid->setPassword(gridMap["avatarpassword"]); |
998 | if (gridMap.has("encryptedpassword")) grid->setEncryptedPassword(gridMap["encryptedpassword"]); | ||
894 | if (gridMap.has("username")) grid->setUsername(gridMap["username"]); | 999 | if (gridMap.has("username")) grid->setUsername(gridMap["username"]); |
895 | if (gridMap.has("username_compat")) grid->setUsernameCompat(gridMap["username_compat"]); | 1000 | if (gridMap.has("username_compat")) grid->setUsernameCompat(gridMap["username_compat"]); |
896 | if (newGrid) addGrid(grid); | 1001 | if (newGrid) addGrid(grid); |
@@ -926,8 +1031,7 @@ void HippoGridManager::saveFile() | |||
926 | gridInfo[i]["password"] = grid->getPasswordURL(); | 1031 | gridInfo[i]["password"] = grid->getPasswordURL(); |
927 | gridInfo[i]["firstname"] = grid->getFirstName(); | 1032 | gridInfo[i]["firstname"] = grid->getFirstName(); |
928 | gridInfo[i]["lastname"] = grid->getLastName(); | 1033 | gridInfo[i]["lastname"] = grid->getLastName(); |
929 | gridInfo[i]["avatarpassword"] = grid->getPassword(); | 1034 | gridInfo[i]["encryptedpassword"] = grid->getEncryptedPassword(); |
930 | |||
931 | gridInfo[i]["search"] = grid->getSearchURL(); | 1035 | gridInfo[i]["search"] = grid->getSearchURL(); |
932 | gridInfo[i]["render_compat"] = grid->isRenderCompat(); | 1036 | gridInfo[i]["render_compat"] = grid->isRenderCompat(); |
933 | 1037 | ||
diff --git a/linden/indra/newview/hippogridmanager.h b/linden/indra/newview/hippogridmanager.h index c983c9d..c289349 100644 --- a/linden/indra/newview/hippogridmanager.h +++ b/linden/indra/newview/hippogridmanager.h | |||
@@ -89,6 +89,7 @@ public: | |||
89 | const std::string& getLastName() const { return mLastName; } | 89 | const std::string& getLastName() const { return mLastName; } |
90 | const std::string& getUsername() const { return mUsername; } | 90 | const std::string& getUsername() const { return mUsername; } |
91 | std::string getPassword() const; | 91 | std::string getPassword() const; |
92 | std::string getEncryptedPassword() const; | ||
92 | const std::string& getVoiceConnector() const { return mVoiceConnector; } | 93 | const std::string& getVoiceConnector() const { return mVoiceConnector; } |
93 | S32 getMaxAgentGroups() const { return mMaxAgentGroups; } | 94 | S32 getMaxAgentGroups() const { return mMaxAgentGroups; } |
94 | const std::string& getCurrencySymbol() const { return mCurrencySymbol; } | 95 | const std::string& getCurrencySymbol() const { return mCurrencySymbol; } |
@@ -115,6 +116,7 @@ public: | |||
115 | void setFirstName(const std::string& firstName) { mFirstName = firstName; } | 116 | void setFirstName(const std::string& firstName) { mFirstName = firstName; } |
116 | void setLastName(const std::string& lastName) { mLastName = lastName; } | 117 | void setLastName(const std::string& lastName) { mLastName = lastName; } |
117 | void setPassword(const std::string& unhashed_password); | 118 | void setPassword(const std::string& unhashed_password); |
119 | void setEncryptedPassword(const std::string& encrypted_password); | ||
118 | void setVoiceConnector(const std::string& vc) { mVoiceConnector = vc; } | 120 | void setVoiceConnector(const std::string& vc) { mVoiceConnector = vc; } |
119 | void setCurrencySymbol(const std::string& sym) { mCurrencySymbol = sym.substr(0, 3); } | 121 | void setCurrencySymbol(const std::string& sym) { mCurrencySymbol = sym.substr(0, 3); } |
120 | void setRealCurrencySymbol(const std::string& sym) { mRealCurrencySymbol = sym.substr(0, 3); } | 122 | void setRealCurrencySymbol(const std::string& sym) { mRealCurrencySymbol = sym.substr(0, 3); } |
@@ -146,6 +148,7 @@ private: | |||
146 | std::string mFirstName; | 148 | std::string mFirstName; |
147 | std::string mLastName; | 149 | std::string mLastName; |
148 | std::string mPasswordAvatar; | 150 | std::string mPasswordAvatar; |
151 | std::string mEncryptedPassword; | ||
149 | bool mRenderCompat; | 152 | bool mRenderCompat; |
150 | S32 mMaxAgentGroups; | 153 | S32 mMaxAgentGroups; |
151 | 154 | ||
@@ -165,6 +168,8 @@ private: | |||
165 | }; | 168 | }; |
166 | XmlState mXmlState; | 169 | XmlState mXmlState; |
167 | 170 | ||
171 | void checkLoginURIforSecondLifeness(); | ||
172 | |||
168 | static std::string sanitizeURI(std::string &uri); | 173 | static std::string sanitizeURI(std::string &uri); |
169 | void formatFee(std::string &fee, S32 cost, bool showFree) const; | 174 | void formatFee(std::string &fee, S32 cost, bool showFree) const; |
170 | 175 | ||
diff --git a/linden/indra/newview/hippoupdate.h b/linden/indra/newview/hippoupdate.h deleted file mode 100644 index 559c8b3..0000000 --- a/linden/indra/newview/hippoupdate.h +++ /dev/null | |||
@@ -1,12 +0,0 @@ | |||
1 | #ifndef __HIPPO_UPDATE_H__ | ||
2 | #define __HIPPO_UPDATE_H__ | ||
3 | |||
4 | |||
5 | class HippoUpdate | ||
6 | { | ||
7 | public: | ||
8 | static bool checkUpdate(); | ||
9 | }; | ||
10 | |||
11 | |||
12 | #endif | ||
diff --git a/linden/indra/newview/installers/windows/imprudence_installer_script_experimental.iss b/linden/indra/newview/installers/windows/imprudence_installer_script_experimental.iss index c551919..a396381 100644 --- a/linden/indra/newview/installers/windows/imprudence_installer_script_experimental.iss +++ b/linden/indra/newview/installers/windows/imprudence_installer_script_experimental.iss | |||
@@ -9,15 +9,15 @@ | |||
9 | ; These will change | 9 | ; These will change |
10 | AppId={{1B3E68BC-13EB-4277-9439-CB5FF9259460} | 10 | AppId={{1B3E68BC-13EB-4277-9439-CB5FF9259460} |
11 | AppName=Imprudence Viewer Experimental | 11 | AppName=Imprudence Viewer Experimental |
12 | AppVerName=Imprudence Viewer 1.4.0 beta 1.5 windows test release | 12 | AppVerName=Imprudence Viewer 1.4.0.3 exp 1 windows test release |
13 | DefaultDirName={pf}\ImprudenceExperimental | 13 | DefaultDirName={pf}\ImprudenceExperimental |
14 | DefaultGroupName=Imprudence Viewer Experimental | 14 | DefaultGroupName=Imprudence Viewer Experimental |
15 | VersionInfoProductName=Imprudence Viewer Experimental | 15 | VersionInfoProductName=Imprudence Viewer Experimental |
16 | OutputBaseFilename=Imprudence-1.4.0-beta-1.5-windows-test | 16 | OutputBaseFilename=Imprudence-1.4.0.3-exp-1-windows-test |
17 | VersionInfoVersion=1.4.0 | 17 | VersionInfoVersion=1.4.0.3 |
18 | VersionInfoTextVersion=1.4.0 | 18 | VersionInfoTextVersion=1.4.0.3 |
19 | VersionInfoProductVersion=1.4.0 | 19 | VersionInfoProductVersion=1.4.0.3 |
20 | AppVersion=1.4.0 | 20 | AppVersion=1.4.0.3 |
21 | VersionInfoCopyright=2011 | 21 | VersionInfoCopyright=2011 |
22 | 22 | ||
23 | ; These won't change | 23 | ; These won't change |
diff --git a/linden/indra/newview/installers/windows/meta-impy_installer_template.iss b/linden/indra/newview/installers/windows/meta-impy_installer_template.iss index 6731402..17aac3e 100644 --- a/linden/indra/newview/installers/windows/meta-impy_installer_template.iss +++ b/linden/indra/newview/installers/windows/meta-impy_installer_template.iss | |||
@@ -8,16 +8,16 @@ | |||
8 | ; Imp Experimental ID: 1B3E68BC-13EB-4277-9439-CB5FF9259460 | 8 | ; Imp Experimental ID: 1B3E68BC-13EB-4277-9439-CB5FF9259460 |
9 | 9 | ||
10 | ; These will change | 10 | ; These will change |
11 | AppId={{D7736EE8-AFCE-4735-BBE3-652CDFBBFCA8} | 11 | AppId={{1B3E68BC-13EB-4277-9439-CB5FF9259460} |
12 | AppName=%%APPNAME%% | 12 | AppName=%%APPNAME%% |
13 | AppVerName=%%APPVERNAME%% | 13 | AppVerName=%%APPVERNAME%% |
14 | DefaultDirName={pf}\meta-impy | 14 | DefaultDirName={pf}\meta-impy |
15 | DefaultGroupName=meta-impy Viewer | 15 | DefaultGroupName=meta-impy Viewer |
16 | VersionInfoProductName=%%APPNAME%% | 16 | VersionInfoProductName=%%APPNAME%% |
17 | OutputBaseFilename=%%INSTALLERFILENAME%% | 17 | OutputBaseFilename=%%INSTALLERFILENAME%% |
18 | VersionInfoVersion=%%VERSION%% | 18 | VersionInfoVersion=%%VERSIONNUMBER%% |
19 | VersionInfoTextVersion=%%VERSION%% | 19 | VersionInfoTextVersion=%%VERSION%% |
20 | VersionInfoProductVersion=%%VERSION%% | 20 | VersionInfoProductVersion=%%VERSIONNUMBER%% |
21 | AppVersion=%%VERSION%% | 21 | AppVersion=%%VERSION%% |
22 | VersionInfoCopyright=2011 | 22 | VersionInfoCopyright=2011 |
23 | 23 | ||
@@ -307,7 +307,7 @@ begin | |||
307 | Success := RegQueryDWordValue(HKLM64, 'SOFTWARE\Microsoft\VisualStudio\10.0\VC\VCRedist\x86', 'Installed', V); | 307 | Success := RegQueryDWordValue(HKLM64, 'SOFTWARE\Microsoft\VisualStudio\10.0\VC\VCRedist\x86', 'Installed', V); |
308 | end else begin | 308 | end else begin |
309 | Success := RegQueryDWordValue(HKLM, 'SOFTWARE\Microsoft\VisualStudio\10.0\VC\VCRedist\x86', 'Installed', V); | 309 | Success := RegQueryDWordValue(HKLM, 'SOFTWARE\Microsoft\VisualStudio\10.0\VC\VCRedist\x86', 'Installed', V); |
310 | end | 310 | end; |
311 | 311 | ||
312 | if Success = TRUE then begin | 312 | if Success = TRUE then begin |
313 | if V = 1 then begin | 313 | if V = 1 then begin |
diff --git a/linden/indra/newview/installers/windows/vcredist_x86_VS2005.exe b/linden/indra/newview/installers/windows/vcredist_x86_VS2005.exe new file mode 100755 index 0000000..1421c29 --- /dev/null +++ b/linden/indra/newview/installers/windows/vcredist_x86_VS2005.exe | |||
Binary files differ | |||
diff --git a/linden/indra/newview/linux_tools/register_secondlifeprotocol.sh b/linden/indra/newview/linux_tools/register_secondlifeprotocol.sh index 338fc26..3f2378a 100755 --- a/linden/indra/newview/linux_tools/register_secondlifeprotocol.sh +++ b/linden/indra/newview/linux_tools/register_secondlifeprotocol.sh | |||
@@ -22,13 +22,12 @@ else | |||
22 | fi | 22 | fi |
23 | 23 | ||
24 | # Register handler for KDE-aware apps | 24 | # Register handler for KDE-aware apps |
25 | if [ -z "$KDEHOME" ]; then | 25 | for LLKDECONFIG in kde-config kde4-config; do |
26 | KDEHOME=~/.kde | 26 | if [ `which $LLKDECONFIG` ]; then |
27 | fi | 27 | LLKDEPROTODIR=`$LLKDECONFIG --path services | cut -d ':' -f 1` |
28 | LLKDEPROTDIR=${KDEHOME}/share/services | 28 | if [ -d "$LLKDEPROTODIR" ]; then |
29 | if [ -d "$LLKDEPROTDIR" ]; then | 29 | LLKDEPROTOFILE=${LLKDEPROTODIR}/secondlife.protocol |
30 | LLKDEPROTFILE=${LLKDEPROTDIR}/secondlife.protocol | 30 | cat > ${LLKDEPROTOFILE} <<EOF || echo Warning: Did not register secondlife:// handler with KDE: Could not write ${LLKDEPROTOFILE} |
31 | cat > ${LLKDEPROTFILE} <<EOF || echo Warning: Did not register secondlife:// handler with KDE: Could not write ${LLKDEPROTFILE} | ||
32 | [Protocol] | 31 | [Protocol] |
33 | exec=${HANDLER} '%u' | 32 | exec=${HANDLER} '%u' |
34 | protocol=secondlife | 33 | protocol=secondlife |
@@ -41,6 +40,8 @@ writing=false | |||
41 | makedir=false | 40 | makedir=false |
42 | deleting=false | 41 | deleting=false |
43 | EOF | 42 | EOF |
44 | else | 43 | else |
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. | 44 | echo Warning: Did not register secondlife:// handler with KDE: Directory $LLKDEPROTODIR does not exist. |
46 | fi | 45 | fi |
46 | fi | ||
47 | done | ||
diff --git a/linden/indra/newview/llagent.cpp b/linden/indra/newview/llagent.cpp index 85a1b36..dd74cde 100644 --- a/linden/indra/newview/llagent.cpp +++ b/linden/indra/newview/llagent.cpp | |||
@@ -1613,8 +1613,6 @@ BOOL LLAgent::calcCameraMinDistance(F32 &obj_min_distance) | |||
1613 | abs_target_offset.abs(); | 1613 | abs_target_offset.abs(); |
1614 | 1614 | ||
1615 | LLVector3 target_offset_dir = target_offset_origin; | 1615 | LLVector3 target_offset_dir = target_offset_origin; |
1616 | F32 object_radius = mFocusObject->getVObjRadius(); | ||
1617 | |||
1618 | BOOL target_outside_object_extents = FALSE; | 1616 | BOOL target_outside_object_extents = FALSE; |
1619 | 1617 | ||
1620 | for (U32 i = VX; i <= VZ; i++) | 1618 | for (U32 i = VX; i <= VZ; i++) |
@@ -1708,18 +1706,6 @@ BOOL LLAgent::calcCameraMinDistance(F32 &obj_min_distance) | |||
1708 | 1706 | ||
1709 | LLVector3 camera_offset_object(getCameraPositionAgent() - mFocusObject->getPositionAgent()); | 1707 | LLVector3 camera_offset_object(getCameraPositionAgent() - mFocusObject->getPositionAgent()); |
1710 | 1708 | ||
1711 | // length projected orthogonal to target offset | ||
1712 | F32 camera_offset_dist = (camera_offset_object - target_offset_dir * (camera_offset_object * target_offset_dir)).magVec(); | ||
1713 | |||
1714 | // calculate whether the target point would be "visible" if it were outside the bounding box | ||
1715 | // on the opposite of the splitting plane defined by object_split_axis; | ||
1716 | BOOL exterior_target_visible = FALSE; | ||
1717 | if (camera_offset_dist > object_radius) | ||
1718 | { | ||
1719 | // target is visible from camera, so turn off fov zoom | ||
1720 | exterior_target_visible = TRUE; | ||
1721 | } | ||
1722 | |||
1723 | F32 camera_offset_clip = camera_offset_object * object_split_axis; | 1709 | F32 camera_offset_clip = camera_offset_object * object_split_axis; |
1724 | F32 target_offset_clip = target_offset_dir * object_split_axis; | 1710 | F32 target_offset_clip = target_offset_dir * object_split_axis; |
1725 | 1711 | ||
@@ -2538,12 +2524,10 @@ void LLAgent::autoPilot(F32 *delta_yaw) | |||
2538 | *delta_yaw = yaw; | 2524 | *delta_yaw = yaw; |
2539 | 2525 | ||
2540 | // Compute when to start slowing down and when to stop | 2526 | // Compute when to start slowing down and when to stop |
2541 | F32 stop_distance = mAutoPilotStopDistance; | ||
2542 | F32 slow_distance; | 2527 | F32 slow_distance; |
2543 | if (getFlying()) | 2528 | if (getFlying()) |
2544 | { | 2529 | { |
2545 | slow_distance = llmax(6.f, mAutoPilotStopDistance + 5.f); | 2530 | slow_distance = llmax(6.f, mAutoPilotStopDistance + 5.f); |
2546 | stop_distance = llmax(2.f, mAutoPilotStopDistance); | ||
2547 | } | 2531 | } |
2548 | else | 2532 | else |
2549 | { | 2533 | { |
@@ -3719,7 +3703,6 @@ F32 LLAgent::calcCameraFOVZoomFactor() | |||
3719 | else if (mFocusObject.notNull() && !mFocusObject->isAvatar()) | 3703 | else if (mFocusObject.notNull() && !mFocusObject->isAvatar()) |
3720 | { | 3704 | { |
3721 | // don't FOV zoom on mostly transparent objects | 3705 | // don't FOV zoom on mostly transparent objects |
3722 | LLVector3 focus_offset = mFocusObjectOffset; | ||
3723 | F32 obj_min_dist = 0.f; | 3706 | F32 obj_min_dist = 0.f; |
3724 | if (!gSavedSettings.getBOOL("DisableMinZoomDist")) | 3707 | if (!gSavedSettings.getBOOL("DisableMinZoomDist")) |
3725 | calcCameraMinDistance(obj_min_dist); | 3708 | calcCameraMinDistance(obj_min_dist); |
@@ -3746,9 +3729,8 @@ LLVector3d LLAgent::calcCameraPositionTargetGlobal(BOOL *hit_limit) | |||
3746 | // Compute base camera position and look-at points. | 3729 | // Compute base camera position and look-at points. |
3747 | F32 camera_land_height; | 3730 | F32 camera_land_height; |
3748 | LLVector3d frame_center_global = mAvatarObject.isNull() ? getPositionGlobal() | 3731 | LLVector3d frame_center_global = mAvatarObject.isNull() ? getPositionGlobal() |
3749 | : getPosGlobalFromAgent(mAvatarObject->mRoot.getWorldPosition()); | 3732 | : getPosGlobalFromAgent(mAvatarObject->mRoot.getWorldPosition()); |
3750 | 3733 | ||
3751 | LLVector3 upAxis = getUpAxis(); | ||
3752 | BOOL isConstrained = FALSE; | 3734 | BOOL isConstrained = FALSE; |
3753 | LLVector3d head_offset; | 3735 | LLVector3d head_offset; |
3754 | head_offset.setVec(mThirdPersonHeadOffset); | 3736 | head_offset.setVec(mThirdPersonHeadOffset); |
@@ -3883,7 +3865,6 @@ LLVector3d LLAgent::calcCameraPositionTargetGlobal(BOOL *hit_limit) | |||
3883 | // set the global camera position | 3865 | // set the global camera position |
3884 | LLVector3d camera_offset; | 3866 | LLVector3d camera_offset; |
3885 | 3867 | ||
3886 | LLVector3 av_pos = mAvatarObject.isNull() ? LLVector3::zero : mAvatarObject->getRenderPosition(); | ||
3887 | camera_offset.setVec( local_camera_offset ); | 3868 | camera_offset.setVec( local_camera_offset ); |
3888 | camera_position_global = frame_center_global + head_offset + camera_offset; | 3869 | camera_position_global = frame_center_global + head_offset + camera_offset; |
3889 | 3870 | ||
diff --git a/linden/indra/newview/llappviewer.cpp b/linden/indra/newview/llappviewer.cpp index c30bf35..7040cd1 100644 --- a/linden/indra/newview/llappviewer.cpp +++ b/linden/indra/newview/llappviewer.cpp | |||
@@ -179,7 +179,6 @@ | |||
179 | 179 | ||
180 | #include "hippogridmanager.h" | 180 | #include "hippogridmanager.h" |
181 | #include "hippolimits.h" | 181 | #include "hippolimits.h" |
182 | #include "hippoupdate.h" | ||
183 | 182 | ||
184 | // [RLVa:KB] | 183 | // [RLVa:KB] |
185 | #include "rlvhandler.h" | 184 | #include "rlvhandler.h" |
@@ -616,6 +615,11 @@ bool LLAppViewer::init() | |||
616 | // Always add the version to the top of the log--makes debugging easier -- MC | 615 | // Always add the version to the top of the log--makes debugging easier -- MC |
617 | llinfos << ViewerInfo::prettyInfo() << llendl; | 616 | llinfos << ViewerInfo::prettyInfo() << llendl; |
618 | 617 | ||
618 | // Always fetch the Ethernet MAC address, needed both for login | ||
619 | // and password load. Need to do this before initConfiguration(), | ||
620 | // as the password loading part needs the MAC. | ||
621 | LLUUID::getNodeID(gMACAddress); | ||
622 | |||
619 | if (!initConfiguration()) | 623 | if (!initConfiguration()) |
620 | return false; | 624 | return false; |
621 | 625 | ||
@@ -748,10 +752,6 @@ bool LLAppViewer::init() | |||
748 | return false; | 752 | return false; |
749 | } | 753 | } |
750 | 754 | ||
751 | // Always fetch the Ethernet MAC address, needed both for login | ||
752 | // and password load. | ||
753 | LLUUID::getNodeID(gMACAddress); | ||
754 | |||
755 | // Prepare for out-of-memory situations, during which we will crash on | 755 | // Prepare for out-of-memory situations, during which we will crash on |
756 | // purpose and save a dump. | 756 | // purpose and save a dump. |
757 | #if LL_WINDOWS && LL_RELEASE_FOR_DOWNLOAD && LL_USE_SMARTHEAP | 757 | #if LL_WINDOWS && LL_RELEASE_FOR_DOWNLOAD && LL_USE_SMARTHEAP |
diff --git a/linden/indra/newview/lldrawable.cpp b/linden/indra/newview/lldrawable.cpp index 5a383bc..ee49752 100644 --- a/linden/indra/newview/lldrawable.cpp +++ b/linden/indra/newview/lldrawable.cpp | |||
@@ -494,7 +494,6 @@ F32 LLDrawable::updateXform(BOOL undamped) | |||
494 | //scaling | 494 | //scaling |
495 | LLVector3 target_scale = mVObjp->getScale(); | 495 | LLVector3 target_scale = mVObjp->getScale(); |
496 | LLVector3 old_scale = mCurrentScale; | 496 | LLVector3 old_scale = mCurrentScale; |
497 | LLVector3 dest_scale = target_scale; | ||
498 | 497 | ||
499 | // Damping | 498 | // Damping |
500 | F32 dist_squared = 0.f; | 499 | F32 dist_squared = 0.f; |
@@ -834,7 +833,6 @@ const LLVector3* LLDrawable::getSpatialExtents() const | |||
834 | 833 | ||
835 | void LLDrawable::setSpatialExtents(LLVector3 min, LLVector3 max) | 834 | void LLDrawable::setSpatialExtents(LLVector3 min, LLVector3 max) |
836 | { | 835 | { |
837 | LLVector3 size = max - min; | ||
838 | mExtents[0] = min; | 836 | mExtents[0] = min; |
839 | mExtents[1] = max; | 837 | mExtents[1] = max; |
840 | } | 838 | } |
@@ -1098,7 +1096,6 @@ LLCamera LLSpatialBridge::transformCamera(LLCamera& camera) | |||
1098 | LLCamera ret = camera; | 1096 | LLCamera ret = camera; |
1099 | LLXformMatrix* mat = mDrawable->getXform(); | 1097 | LLXformMatrix* mat = mDrawable->getXform(); |
1100 | LLVector3 center = LLVector3(0,0,0) * mat->getWorldMatrix(); | 1098 | LLVector3 center = LLVector3(0,0,0) * mat->getWorldMatrix(); |
1101 | LLQuaternion rotation = LLQuaternion(mat->getWorldMatrix()); | ||
1102 | 1099 | ||
1103 | LLVector3 delta = ret.getOrigin() - center; | 1100 | LLVector3 delta = ret.getOrigin() - center; |
1104 | LLQuaternion rot = ~mat->getRotation(); | 1101 | LLQuaternion rot = ~mat->getRotation(); |
diff --git a/linden/indra/newview/lightshare.cpp b/linden/indra/newview/llettherebelight.cpp index 599a527..7fc2a3d 100644 --- a/linden/indra/newview/lightshare.cpp +++ b/linden/indra/newview/llettherebelight.cpp | |||
@@ -1,9 +1,10 @@ | |||
1 | /** | 1 | /** |
2 | * @file lightshare.cpp | 2 | * @file llettherebelight.cpp |
3 | * @brief Handler for Meta7 Lightshare (region-side Windlight settings). | 3 | * @brief Handler for Meta7 Lightshare (region-side Windlight settings), and other methods of sharing WindLight. |
4 | * | 4 | * |
5 | * Copyright (c) 2010, Tom Grimshaw (Tom Meta) | 5 | * Copyright (c) 2010, Tom Grimshaw (Tom Meta) |
6 | * Copyright (c) 2010, Jacek Antonelli | 6 | * Copyright (c) 2010, Jacek Antonelli |
7 | * Copyright (c) 2012, David Seikel | ||
7 | * | 8 | * |
8 | * The source code in this file ("Source Code") is provided to you | 9 | * The source code in this file ("Source Code") is provided to you |
9 | * under the terms of the GNU General Public License, version 2.0 | 10 | * under the terms of the GNU General Public License, version 2.0 |
@@ -27,7 +28,6 @@ | |||
27 | */ | 28 | */ |
28 | 29 | ||
29 | 30 | ||
30 | #include "lightshare.h" | ||
31 | 31 | ||
32 | #include "linden_common.h" | 32 | #include "linden_common.h" |
33 | #include "llviewercontrol.h" | 33 | #include "llviewercontrol.h" |
@@ -38,30 +38,26 @@ | |||
38 | #include "message.h" | 38 | #include "message.h" |
39 | #include "meta7windlight.h" | 39 | #include "meta7windlight.h" |
40 | 40 | ||
41 | #include "llettherebelight.h" | ||
41 | 42 | ||
42 | const std::string WindlightMessage::sWaterPresetName = "(Region settings)"; | 43 | #include "llagent.h" |
43 | const std::string WindlightMessage::sSkyPresetName = "(Region settings)"; | 44 | #include "llworld.h" |
44 | const std::string WindlightMessage::sBackupWaterPresetName = "(Backup settings)"; | ||
45 | const std::string WindlightMessage::sBackupSkyPresetName = "(Backup settings)"; | ||
46 | 45 | ||
47 | // Backups. | ||
48 | LLWaterParamSet waterBackup; | ||
49 | LLWLParamSet skyBackup; | ||
50 | //LLUUID* waterNormalBackup = NULL; | ||
51 | bool animatorIsRunning = true; | ||
52 | bool animatorUseEstateTime = true; | ||
53 | bool backup = false; | ||
54 | 46 | ||
55 | WindlightMessage* WindlightMessage::sMostRecent = NULL; | 47 | const std::string LightShare::sRegionPresetName = "(Region settings)"; |
56 | LLTimer* WindlightMessage::sIgnoreTimer = new LLTimer(); | 48 | const std::string LightShare::sParcelPresetName = "(Parcel settings)"; |
57 | bool WindlightMessage::sIgnoreRegion = false; | 49 | const std::string LightShare::sRLVPresetName = "(RLV settings)"; |
58 | 50 | ||
59 | 51 | ||
60 | WindlightMessage::WindlightMessage( LLMessageSystem* msg ) : | 52 | LLWaterParamSet* LightShare::mWater = NULL; |
53 | LLWLParamSet* LightShare::mSky = NULL; | ||
54 | LLUUID* LightShare::mWaterNormal = NULL; | ||
55 | LLTimer* LightShare::sIgnoreTimer = new LLTimer(); | ||
56 | bool LightShare::sIgnoreRegion = false; | ||
57 | |||
58 | |||
59 | LightShare::LightShare( LLMessageSystem* msg ) : | ||
61 | mPacket(NULL), | 60 | mPacket(NULL), |
62 | mWater(NULL), | ||
63 | mSky(NULL), | ||
64 | mWaterNormal(NULL), | ||
65 | mIsValid(false) | 61 | mIsValid(false) |
66 | { | 62 | { |
67 | std::string method; | 63 | std::string method; |
@@ -86,10 +82,7 @@ WindlightMessage::WindlightMessage( LLMessageSystem* msg ) : | |||
86 | buf, size, 0, 249); | 82 | buf, size, 0, 249); |
87 | 83 | ||
88 | mWater = new LLWaterParamSet(); | 84 | mWater = new LLWaterParamSet(); |
89 | // mSky = new LLWLParamSet(); | 85 | mSky = new LLWLParamSet(); |
90 | LLWLParamManager * wl_param_mgr = LLWLParamManager::instance(); | ||
91 | static LLWLParamSet & sSky = wl_param_mgr->mCurParams; | ||
92 | mSky = &sSky; | ||
93 | 86 | ||
94 | mWaterNormal = new LLUUID(); | 87 | mWaterNormal = new LLUUID(); |
95 | 88 | ||
@@ -102,21 +95,21 @@ WindlightMessage::WindlightMessage( LLMessageSystem* msg ) : | |||
102 | } | 95 | } |
103 | 96 | ||
104 | 97 | ||
105 | WindlightMessage::~WindlightMessage() | 98 | LightShare::~LightShare() |
106 | { | 99 | { |
107 | delete mWater; | 100 | delete mWater; |
108 | // delete mSky; | 101 | delete mSky; |
109 | delete mWaterNormal; | 102 | delete mWaterNormal; |
110 | } | 103 | } |
111 | 104 | ||
112 | 105 | ||
113 | // static | 106 | // static |
114 | void WindlightMessage::processWindlight(LLMessageSystem* msg, void**) | 107 | void LightShare::processWindlight(LLMessageSystem* msg, void**) |
115 | { | 108 | { |
116 | if( gSavedSettings.getU32("LightShareAllowed") <= LIGHTSHARE_NEVER ) | 109 | if( gSavedSettings.getU32("LightShareAllowed") <= LIGHTSHARE_NEVER ) |
117 | return; | 110 | return; |
118 | 111 | ||
119 | WindlightMessage* wl = new WindlightMessage(msg); | 112 | LightShare* wl = new LightShare(msg); |
120 | 113 | ||
121 | if (!wl) | 114 | if (!wl) |
122 | return; | 115 | return; |
@@ -127,16 +120,28 @@ void WindlightMessage::processWindlight(LLMessageSystem* msg, void**) | |||
127 | return; | 120 | return; |
128 | } | 121 | } |
129 | 122 | ||
123 | applyMaybe(wl->mWater, wl->mWaterNormal, wl->mSky); | ||
124 | } | ||
125 | |||
126 | |||
127 | //static | ||
128 | void LightShare::applyMaybe(LLWaterParamSet* thisWater, LLUUID* thisWaterNormal, LLWLParamSet* thisSky) | ||
129 | { | ||
130 | if( gSavedSettings.getU32("LightShareAllowed") <= LIGHTSHARE_NEVER ) | ||
131 | return; | ||
132 | |||
130 | std::string water = LLWaterParamManager::instance()->mCurParams.mName; | 133 | std::string water = LLWaterParamManager::instance()->mCurParams.mName; |
131 | std::string sky = LLWLParamManager::instance()->mCurParams.mName; | 134 | std::string sky = LLWLParamManager::instance()->mCurParams.mName; |
132 | 135 | ||
133 | // If they are using region settings already, or LightShare is | 136 | // If they are using region settings already, or LightShare is |
134 | // always allowed, just apply the new settings, don't bother asking. | 137 | // always allowed, just apply the new settings, don't bother asking. |
135 | if( gSavedSettings.getU32("LightShareAllowed") == LIGHTSHARE_ALWAYS || | 138 | if( gSavedSettings.getU32("LightShareAllowed") == LIGHTSHARE_ALWAYS || |
136 | (sky == sSkyPresetName && water == sWaterPresetName) ) | 139 | (sky == sRegionPresetName && water == sRegionPresetName) ) |
137 | { | 140 | { |
138 | wl->apply(); | 141 | mSky = thisSky; |
139 | delete wl; | 142 | mWater = thisWater; |
143 | mWaterNormal = thisWaterNormal; | ||
144 | apply(mWater, mWaterNormal, mSky, WL_SCOPE_REGION); | ||
140 | return; | 145 | return; |
141 | } | 146 | } |
142 | 147 | ||
@@ -145,41 +150,36 @@ void WindlightMessage::processWindlight(LLMessageSystem* msg, void**) | |||
145 | // The user recently ignored a windlight message, so ignore | 150 | // The user recently ignored a windlight message, so ignore |
146 | // this one too, and restart the timer. | 151 | // this one too, and restart the timer. |
147 | restartIgnoreTimer(); | 152 | restartIgnoreTimer(); |
148 | delete wl; | ||
149 | return; | 153 | return; |
150 | } | 154 | } |
151 | 155 | ||
152 | if(sIgnoreRegion) | 156 | if(sIgnoreRegion) |
153 | { | 157 | { |
154 | // We are ignoring new settings until user enters a new region. | 158 | // We are ignoring new settings until user enters a new region. |
155 | delete wl; | ||
156 | return; | 159 | return; |
157 | } | 160 | } |
158 | 161 | ||
159 | if( gSavedSettings.getU32("LightShareAllowed") == LIGHTSHARE_ASK && | 162 | if( gSavedSettings.getU32("LightShareAllowed") == LIGHTSHARE_ASK && mSky == NULL && mWater == NULL) |
160 | sMostRecent == NULL ) | ||
161 | { | 163 | { |
162 | // No most recent, so store this and create notification | 164 | // No most recent, so store this and create notification |
163 | // asking the user whether to apply or not. | 165 | // asking the user whether to apply or not. |
164 | sMostRecent = wl; | 166 | mSky = thisSky; |
165 | LLNotifications::instance().add("ConfirmLightShare", LLSD(), LLSD(), | 167 | mWater = thisWater; |
168 | mWaterNormal = thisWaterNormal; | ||
169 | LLNotifications::instance().add("ConfirmLightShare", LLSD(), LLSD(), | ||
166 | boost::bind(&applyCallback, _1, _2)); | 170 | boost::bind(&applyCallback, _1, _2)); |
167 | return; | ||
168 | } | 171 | } |
169 | else | 172 | else |
170 | { | 173 | { |
171 | // No new notification (to avoid spamming the user), just | 174 | // No new notification (to avoid spamming the user, we do keep the saves from above) |
172 | // store this as most recent. | 175 | mSky = thisSky; |
173 | delete sMostRecent; | 176 | mWater = thisWater; |
174 | sMostRecent = wl; | 177 | mWaterNormal = thisWaterNormal; |
175 | return; | ||
176 | } | 178 | } |
177 | } | 179 | } |
178 | 180 | ||
179 | |||
180 | // static | 181 | // static |
181 | bool WindlightMessage::applyCallback(const LLSD& notification, | 182 | bool LightShare::applyCallback(const LLSD& notification, const LLSD& response) |
182 | const LLSD& response) | ||
183 | { | 183 | { |
184 | S32 option = LLNotification::getSelectedOption(notification, response); | 184 | S32 option = LLNotification::getSelectedOption(notification, response); |
185 | 185 | ||
@@ -187,7 +187,8 @@ bool WindlightMessage::applyCallback(const LLSD& notification, | |||
187 | { | 187 | { |
188 | case 0:{ | 188 | case 0:{ |
189 | // "Apply" | 189 | // "Apply" |
190 | sMostRecent->apply(); | 190 | apply(mWater, mWaterNormal, mSky, WL_SCOPE_REGION); |
191 | |||
191 | break; | 192 | break; |
192 | } | 193 | } |
193 | case 1:{ | 194 | case 1:{ |
@@ -202,41 +203,18 @@ bool WindlightMessage::applyCallback(const LLSD& notification, | |||
202 | } | 203 | } |
203 | } | 204 | } |
204 | 205 | ||
205 | delete sMostRecent; | ||
206 | sMostRecent = NULL; | ||
207 | |||
208 | return false; | 206 | return false; |
209 | } | 207 | } |
210 | 208 | ||
211 | |||
212 | // static | 209 | // static |
213 | void WindlightMessage::resetRegion() | 210 | void LightShare::resetRegion() |
214 | { | 211 | { |
215 | sIgnoreRegion = false; | 212 | sIgnoreRegion = false; |
216 | 213 | apply(NULL, NULL, NULL, WL_SCOPE_REGION); | |
217 | // According to Melanie Thielker - | ||
218 | // The new WindlightReset message from OpenSim is for resetting Windlight presets when leaving a sim that uses Lightshare. | ||
219 | // Hopefully if you are moving to a sim that has new LightShare data, that gets sent after this reset, or the reset is never sent. | ||
220 | if (backup) | ||
221 | { | ||
222 | LLWaterParamManager* water_mgr = LLWaterParamManager::instance(); | ||
223 | LLWLParamManager* sky_mgr = LLWLParamManager::instance(); | ||
224 | |||
225 | llinfos << "Restoring WindLight presets " << waterBackup.mName << " and " << skyBackup.mName << "." << llendl; | ||
226 | water_mgr->loadPreset(waterBackup.mName, true); | ||
227 | // Don't think we need to do this. | ||
228 | //if (waterNormalBackup) | ||
229 | //water_mgr->setNormalMapID(*waterNormalBackup); | ||
230 | sky_mgr->mAnimator.mIsRunning = animatorIsRunning; | ||
231 | sky_mgr->mAnimator.mUseLindenTime = animatorUseEstateTime; | ||
232 | sky_mgr->loadPreset(skyBackup.mName, true); | ||
233 | backup = false; | ||
234 | } | ||
235 | } | 214 | } |
236 | 215 | ||
237 | |||
238 | // static | 216 | // static |
239 | void WindlightMessage::restartIgnoreTimer() | 217 | void LightShare::restartIgnoreTimer() |
240 | { | 218 | { |
241 | F32 time = gSavedSettings.getF32("LightShareIgnoreTimer"); | 219 | F32 time = gSavedSettings.getF32("LightShareIgnoreTimer"); |
242 | sIgnoreTimer->start(); | 220 | sIgnoreTimer->start(); |
@@ -244,65 +222,219 @@ void WindlightMessage::restartIgnoreTimer() | |||
244 | } | 222 | } |
245 | 223 | ||
246 | // static | 224 | // static |
247 | bool WindlightMessage::ignoreTimerHasExpired() | 225 | bool LightShare::ignoreTimerHasExpired() |
248 | { | 226 | { |
249 | return sIgnoreTimer->hasExpired(); | 227 | return sIgnoreTimer->hasExpired(); |
250 | } | 228 | } |
251 | 229 | ||
230 | // TODO - have regionSet and parcelSet be arrays, so we can deal with height zones. | ||
231 | static struct WLCombined userSet, regionSet, parcelSet, RLVSet; | ||
252 | 232 | ||
253 | bool WindlightMessage::apply() | 233 | // TODO - should spread this merging stuff around, |
254 | { | 234 | // so that eventually we can get rid of almost identical code for water and sky. |
255 | LLWaterParamManager* water_mgr = LLWaterParamManager::instance(); | 235 | // Then one of these two methods goes away. |
256 | LLWLParamManager* sky_mgr = LLWLParamManager::instance(); | ||
257 | 236 | ||
258 | if (!backup) | 237 | //static |
238 | void LightShare::mergeWaterSets(LLWaterParamSet* thisSet, LLWaterParamSet* oldSet) | ||
239 | { | ||
240 | for(LLSD::map_const_iterator i = thisSet->mParamValues.beginMap(); | ||
241 | i != thisSet->mParamValues.endMap(); | ||
242 | ++i) | ||
259 | { | 243 | { |
260 | llinfos << "Backing up WindLight presets '" << water_mgr->mCurParams.mName << " and " << sky_mgr->mCurParams.mName << "'." << llendl; | 244 | const std::string& param = i->first; |
261 | waterBackup = water_mgr->mCurParams; | 245 | |
262 | //waterNormalBackup = waterBackup->getNormalMapID(); | 246 | if(i->second.isArray()) |
263 | skyBackup = sky_mgr->mCurParams; | 247 | { |
264 | animatorIsRunning = sky_mgr->mAnimator.mIsRunning; | 248 | for (int j = 0; j < i->second.size(); j++) |
265 | animatorUseEstateTime = sky_mgr->mAnimator.mUseLindenTime; | 249 | { |
266 | backup = true; | 250 | oldSet->mParamValues[param][j] = i->second[j].asReal(); |
251 | } | ||
252 | } | ||
253 | else if(i->second.isReal()) | ||
254 | oldSet->mParamValues[param] = i->second.asReal(); | ||
267 | } | 255 | } |
256 | } | ||
268 | 257 | ||
269 | mWater->mName = sWaterPresetName; | 258 | //static |
270 | water_mgr->removeParamSet( sWaterPresetName, false ); | 259 | void LightShare::mergeWLSets(LLWLParamSet* thisSet, LLWLParamSet* oldSet) |
271 | water_mgr->addParamSet( sWaterPresetName, *mWater ); | 260 | { |
272 | // Don't think we need to save it, the load gets the one we added above. | 261 | for(LLSD::map_const_iterator i = thisSet->mParamValues.beginMap(); |
273 | //water_mgr->savePreset( sWaterPresetName ); | 262 | i != thisSet->mParamValues.endMap(); |
274 | water_mgr->loadPreset( sWaterPresetName, true ); | 263 | ++i) |
275 | water_mgr->setNormalMapID( *mWaterNormal ); | 264 | { |
276 | 265 | const std::string& param = i->first; | |
277 | mSky->mName = sSkyPresetName; | 266 | |
278 | sky_mgr->mAnimator.mIsRunning = false; | 267 | if(i->second.isArray()) |
279 | sky_mgr->mAnimator.mUseLindenTime = false; | 268 | { |
280 | sky_mgr->removeParamSet( sSkyPresetName, false ); | 269 | for (int j = 0; j < i->second.size(); j++) |
281 | sky_mgr->addParamSet( sSkyPresetName, *mSky ); | 270 | { |
282 | // Don't think we need to save it, the load gets the one we added above. | 271 | oldSet->mParamValues[param][j] = i->second[j].asReal(); |
283 | //sky_mgr->savePreset( sSkyPresetName ); | 272 | } |
284 | sky_mgr->loadPreset( sSkyPresetName, true ); | 273 | } |
285 | 274 | else if(i->second.isReal()) | |
286 | return true; | 275 | oldSet->mParamValues[param] = i->second.asReal(); |
276 | } | ||
287 | } | 277 | } |
288 | 278 | ||
279 | //static | ||
280 | void LightShare::apply(LLWaterParamSet * newWater, LLUUID *newWaterNormal, LLWLParamSet *newSky, WLScope scope) | ||
281 | // TODO - Deal with day cycle stuff. | ||
282 | { | ||
283 | LLWaterParamManager* waterMgr = LLWaterParamManager::instance(); | ||
284 | LLWLParamManager* skyMgr = LLWLParamManager::instance(); | ||
285 | LLWaterParamSet oldWaterSet = waterMgr->mCurParams; | ||
286 | LLWLParamSet oldWLSet = skyMgr->mCurParams; | ||
287 | struct WLCombined* thisSet = &userSet; | ||
288 | bool user = true; | ||
289 | |||
290 | switch(scope) | ||
291 | { | ||
292 | case WL_SCOPE_USER : | ||
293 | { | ||
294 | thisSet = &userSet; | ||
295 | thisSet->water.mName = waterMgr->mCurParams.mName; | ||
296 | thisSet->sky.mName = skyMgr->mCurParams.mName; | ||
297 | thisSet->enabled = true; | ||
298 | // Check if user selected to show the saved region or parcel settings. | ||
299 | if (newSky && (sRegionPresetName == skyMgr->mCurParams.mName)) | ||
300 | thisSet->enabled = false; | ||
301 | if (newWater && (sParcelPresetName == skyMgr->mCurParams.mName)) | ||
302 | thisSet->enabled = false; | ||
303 | break; | ||
304 | } | ||
305 | case WL_SCOPE_REGION : | ||
306 | { | ||
307 | thisSet = ®ionSet; | ||
308 | thisSet->water.mName = sRegionPresetName; | ||
309 | thisSet->sky.mName = sRegionPresetName; | ||
310 | thisSet->enabled = (gSavedSettings.getU32("LightShareAllowed") != LIGHTSHARE_NEVER); | ||
311 | break; | ||
312 | } | ||
313 | case WL_SCOPE_PARCEL : | ||
314 | { | ||
315 | thisSet = &parcelSet; | ||
316 | thisSet->water.mName = sParcelPresetName; | ||
317 | thisSet->sky.mName = sParcelPresetName; | ||
318 | thisSet->enabled = (gSavedSettings.getU32("LightShareAllowed") != LIGHTSHARE_NEVER); | ||
319 | break; | ||
320 | } | ||
321 | case WL_SCOPE_RLV : | ||
322 | { | ||
323 | thisSet = &RLVSet; | ||
324 | thisSet->water.mName = sRLVPresetName; | ||
325 | thisSet->sky.mName = sRLVPresetName; | ||
326 | // TODO set enabled properly. | ||
327 | break; | ||
328 | } | ||
329 | } | ||
330 | |||
331 | if (newWater) | ||
332 | thisSet->water.setAll(newWater->getAll()); | ||
333 | if (newWaterNormal) | ||
334 | thisSet->water.mParamValues["normalMap"] = *newWaterNormal; | ||
335 | if (newSky) | ||
336 | thisSet->sky.setAll(newSky->getAll()); | ||
289 | 337 | ||
290 | // static | 338 | if ((NULL == newWater) && (NULL == newSky)) |
291 | bool WindlightMessage::isValid() | 339 | thisSet->enabled = false; |
340 | |||
341 | F32 fade = 0; //Instant | ||
342 | bool error; | ||
343 | fade = thisSet->sky.getFloat("fade", error); | ||
344 | |||
345 | if (fade) | ||
346 | { | ||
347 | // TODO - should copy the original, then set that here. | ||
348 | // The fade should delete this copy once it's done fading. | ||
349 | // Dunno if we actually need to do any of this anyway. | ||
350 | waterMgr->removeParamSet( oldWaterSet.mName, false ); | ||
351 | waterMgr->addParamSet( oldWaterSet.mName, oldWaterSet ); | ||
352 | waterMgr->setNormalMapID( *newWaterNormal ); | ||
353 | waterMgr->getParamSet(oldWaterSet.mName, waterMgr->mCurParams); | ||
354 | waterMgr->propagateParameters(); | ||
355 | |||
356 | skyMgr->removeParamSet( oldWLSet.mName, false ); | ||
357 | skyMgr->addParamSet( oldWLSet.mName, oldWLSet ); | ||
358 | skyMgr->getParamSet(oldWLSet.mName, skyMgr->mCurParams); | ||
359 | skyMgr->propagateParameters(); | ||
360 | } | ||
361 | |||
362 | if (regionSet.enabled) | ||
363 | { | ||
364 | waterMgr->setParamSet( regionSet.water.mName, regionSet.water ); | ||
365 | skyMgr->setParamSet( regionSet.sky.mName, regionSet.sky ); | ||
366 | mergeWaterSets(&(regionSet.water), &oldWaterSet); | ||
367 | mergeWLSets(&(regionSet.sky), &oldWLSet); | ||
368 | } | ||
369 | else | ||
370 | { | ||
371 | waterMgr->removeParamSet( regionSet.water.mName, false ); | ||
372 | skyMgr->removeParamSet( regionSet.sky.mName, false ); | ||
373 | } | ||
374 | if (parcelSet.enabled) | ||
375 | { | ||
376 | waterMgr->setParamSet( parcelSet.water.mName, parcelSet.water ); | ||
377 | skyMgr->setParamSet( parcelSet.sky.mName, parcelSet.sky ); | ||
378 | mergeWaterSets(&(parcelSet.water), &oldWaterSet); | ||
379 | mergeWLSets(&(parcelSet.sky), &oldWLSet); | ||
380 | } | ||
381 | else | ||
382 | { | ||
383 | waterMgr->removeParamSet( parcelSet.water.mName, false ); | ||
384 | skyMgr->removeParamSet( parcelSet.sky.mName, false ); | ||
385 | } | ||
386 | if (userSet.enabled) | ||
387 | { | ||
388 | mergeWaterSets(&(userSet.water), &oldWaterSet); | ||
389 | mergeWLSets(&(userSet.sky), &oldWLSet); | ||
390 | } | ||
391 | if (RLVSet.enabled) | ||
392 | { | ||
393 | mergeWaterSets(&(RLVSet.water), &oldWaterSet); | ||
394 | mergeWLSets(&(RLVSet.sky), &oldWLSet); | ||
395 | } | ||
396 | |||
397 | skyMgr->mAnimator.mIsRunning = false; | ||
398 | skyMgr->mAnimator.mUseLindenTime = false; | ||
399 | if (fade) | ||
400 | { | ||
401 | waterMgr->SetMixTime(&oldWaterSet, fade); | ||
402 | skyMgr->SetMixTime(&oldWLSet, fade); | ||
403 | } | ||
404 | else | ||
405 | { | ||
406 | if (newWater) | ||
407 | { | ||
408 | waterMgr->setParamSet( thisSet->water.mName, oldWaterSet ); | ||
409 | waterMgr->setNormalMapID( *newWaterNormal ); | ||
410 | waterMgr->getParamSet(thisSet->water.mName, waterMgr->mCurParams); | ||
411 | waterMgr->propagateParameters(); | ||
412 | } | ||
413 | |||
414 | if (newSky) | ||
415 | { | ||
416 | skyMgr->setParamSet( thisSet->sky.mName, oldWLSet ); | ||
417 | skyMgr->getParamSet(thisSet->sky.mName, skyMgr->mCurParams); | ||
418 | skyMgr->propagateParameters(); | ||
419 | } | ||
420 | } | ||
421 | |||
422 | LLWorld::getInstance()->rebuildClouds(gAgent.getRegion()); | ||
423 | } | ||
424 | |||
425 | bool LightShare::isValid() | ||
292 | { | 426 | { |
293 | return mIsValid; | 427 | return mIsValid; |
294 | } | 428 | } |
295 | 429 | ||
296 | 430 | void LightShare::process_packet( char* buf ) | |
297 | void WindlightMessage::process_packet( char* buf ) | ||
298 | { | 431 | { |
299 | // *FIXME: Horrible idea, fragile, not byte-order or endian | 432 | // *FIXME: Horrible idea, fragile, not byte-order or endian |
300 | // safe, no validation, etc. etc. -Jacek | 433 | // safe, no validation, etc. etc. -Jacek |
301 | mPacket = (Meta7WindlightPacket*)buf; | 434 | mPacket = (Meta7WindlightPacket*)buf; |
302 | } | 435 | } |
303 | 436 | ||
304 | 437 | void LightShare::process_water() | |
305 | void WindlightMessage::process_water() | ||
306 | { | 438 | { |
307 | mWater->set("waterFogColor", | 439 | mWater->set("waterFogColor", |
308 | mPacket->waterColor.red / 256.f, | 440 | mPacket->waterColor.red / 256.f, |
@@ -358,7 +490,7 @@ void WindlightMessage::process_water() | |||
358 | } | 490 | } |
359 | 491 | ||
360 | 492 | ||
361 | void WindlightMessage::process_sky() | 493 | void LightShare::process_sky() |
362 | { | 494 | { |
363 | mSky->setSunAngle(F_TWO_PI * mPacket->sunMoonPosiiton); | 495 | mSky->setSunAngle(F_TWO_PI * mPacket->sunMoonPosiiton); |
364 | mSky->setEastAngle(F_TWO_PI * mPacket->eastAngle); | 496 | mSky->setEastAngle(F_TWO_PI * mPacket->eastAngle); |
@@ -453,5 +585,3 @@ void WindlightMessage::process_sky() | |||
453 | 585 | ||
454 | mSky->setStarBrightness(mPacket->starBrightness); | 586 | mSky->setStarBrightness(mPacket->starBrightness); |
455 | } | 587 | } |
456 | |||
457 | |||
diff --git a/linden/indra/newview/lightshare.h b/linden/indra/newview/llettherebelight.h index 4792823..d83e827 100644 --- a/linden/indra/newview/lightshare.h +++ b/linden/indra/newview/llettherebelight.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /** | 1 | /** |
2 | * @file lightshare.h | 2 | * @file llettherebelight.h |
3 | * @brief WindlightMessage class definition. | 3 | * @brief WindlightMessage class definition. |
4 | * | 4 | * |
5 | * Copyright (c) 2010, Jacek Antonelli | 5 | * Copyright (c) 2010, Jacek Antonelli |
@@ -30,23 +30,34 @@ | |||
30 | #define LIGHTSHARE_H | 30 | #define LIGHTSHARE_H |
31 | 31 | ||
32 | #include <string> | 32 | #include <string> |
33 | #include "llwlparamset.h" | ||
34 | #include "llwaterparamset.h" | ||
35 | #include "lluuid.h" | ||
33 | 36 | ||
34 | struct Meta7WindlightPacket; | 37 | struct Meta7WindlightPacket; |
35 | class LLMessageSystem; | ||
36 | class LLSD; | ||
37 | class LLTimer; | ||
38 | class LLUUID; | ||
39 | class LLWaterParamSet; | ||
40 | class LLWLParamSet; | ||
41 | 38 | ||
42 | 39 | ||
40 | typedef enum wl_scope | ||
41 | { | ||
42 | WL_SCOPE_USER, | ||
43 | WL_SCOPE_REGION, | ||
44 | WL_SCOPE_PARCEL, | ||
45 | WL_SCOPE_RLV | ||
46 | } WLScope; | ||
47 | |||
48 | struct WLCombined | ||
49 | { | ||
50 | LLWaterParamSet water; | ||
51 | LLWLParamSet sky; | ||
52 | BOOL enabled; | ||
53 | }; | ||
54 | |||
43 | // Encapsulates a "Windlight" (LightShare) message sent from the | 55 | // Encapsulates a "Windlight" (LightShare) message sent from the |
44 | // region, allowing the settings to be applied at a later time. | 56 | // region, allowing the settings to be applied at a later time. |
45 | // | 57 | // |
46 | class WindlightMessage | 58 | class LightShare |
47 | { | 59 | { |
48 | public: | 60 | public: |
49 | |||
50 | // The meanings of the LightShareAllowed user setting. | 61 | // The meanings of the LightShareAllowed user setting. |
51 | enum LIGHTSHARE_ALLOWED | 62 | enum LIGHTSHARE_ALLOWED |
52 | { | 63 | { |
@@ -55,66 +66,54 @@ class WindlightMessage | |||
55 | LIGHTSHARE_ALWAYS = 2, | 66 | LIGHTSHARE_ALWAYS = 2, |
56 | }; | 67 | }; |
57 | 68 | ||
58 | // Constructs a new WindlightMessage instance from a GenericMessage | 69 | // The name of the preset where the region settings are stored. |
70 | static const std::string sRegionPresetName; | ||
71 | // The name of the preset where the parcel settings are stored. | ||
72 | static const std::string sParcelPresetName; | ||
73 | // The name of the preset where the RLV settings are stored. | ||
74 | static const std::string sRLVPresetName; | ||
75 | |||
76 | // Constructs a new LightShare instance from a GenericMessage | ||
59 | // with the "Windlight" method, such as those sent by a | 77 | // with the "Windlight" method, such as those sent by a |
60 | // Lightshare-enabled OpenSim region. | 78 | // Lightshare-enabled OpenSim region. |
61 | WindlightMessage( LLMessageSystem* msg ); | 79 | LightShare( LLMessageSystem* msg ); |
62 | 80 | ||
63 | ~WindlightMessage(); | 81 | ~LightShare(); |
64 | |||
65 | // The name of the water preset where the region settings are stored. | ||
66 | static const std::string sWaterPresetName; | ||
67 | |||
68 | // The name of the sky preset where the region settings are stored. | ||
69 | static const std::string sSkyPresetName; | ||
70 | 82 | ||
71 | // The name of the preset where the backup settings are stored. | 83 | // The name of the preset where the backup settings are stored. |
72 | static const std::string sBackupWaterPresetName; | 84 | static const std::string sBackupWaterPresetName; |
73 | static const std::string sBackupSkyPresetName; | 85 | static const std::string sBackupSkyPresetName; |
74 | 86 | ||
75 | // Message handler for GenericMessage with the "Windlight" method. | 87 | // Message handler for GenericMessage with the "Windlight" method. |
76 | // Creates and applies a new WindlightMessage (or prompts user). | 88 | // Creates and applies a new LightShare (or prompts user). |
77 | static void processWindlight(LLMessageSystem* msg, void**); | 89 | static void processWindlight(LLMessageSystem* msg, void**); |
78 | 90 | ||
79 | // Callback when the user interacts with the notification. | 91 | static void applyMaybe(LLWaterParamSet* thisWater, LLUUID* thisVaterNormal, LLWLParamSet* thisSky); |
80 | static bool applyCallback(const LLSD& notification, | ||
81 | const LLSD& response); | ||
82 | 92 | ||
83 | // Called after the user has entered a new region, to reset the | 93 | // Called after the user has entered a new region, to reset the |
84 | // "ignore while in this region" state. | 94 | // "ignore while in this region" state. |
85 | // Also resets/deactivates the Windlight settings in response to the "WindlightReset" method. | 95 | // Also resets/deactivates the Windlight settings in response to the "WindlightReset" method. |
86 | static void resetRegion(); | 96 | static void resetRegion(); |
87 | 97 | ||
88 | // Applies/activates the Windlight settings from the message. | ||
89 | bool apply(); | ||
90 | |||
91 | // Returns true if the message contains valid Windlight settings. | 98 | // Returns true if the message contains valid Windlight settings. |
92 | // (But there's no real validation yet, so this is always true.) | 99 | // (But there's no real validation yet, so this is always true.) |
93 | bool isValid(); | 100 | bool isValid(); |
94 | 101 | ||
102 | static void apply(LLWaterParamSet * newWater, LLUUID *newWaterNormal, LLWLParamSet *newSky, WLScope scope); | ||
95 | 103 | ||
96 | protected: | 104 | private: |
97 | |||
98 | // Restart the timer for temporarily ignoring settings. | ||
99 | static void restartIgnoreTimer(); | ||
100 | |||
101 | // Returns true if the ignore timer has expired (i.e. new settings | ||
102 | // should not be ignored anymore). | ||
103 | static bool ignoreTimerHasExpired(); | ||
104 | |||
105 | |||
106 | private: | ||
107 | |||
108 | static WindlightMessage* sMostRecent; | ||
109 | static LLTimer* sIgnoreTimer; | 105 | static LLTimer* sIgnoreTimer; |
110 | static bool sIgnoreRegion; | 106 | static bool sIgnoreRegion; |
111 | 107 | ||
112 | Meta7WindlightPacket* mPacket; | 108 | Meta7WindlightPacket* mPacket; |
113 | LLWaterParamSet* mWater; | 109 | static LLWaterParamSet* mWater; |
114 | LLWLParamSet* mSky; | 110 | static LLWLParamSet* mSky; |
115 | LLUUID* mWaterNormal; | 111 | static LLUUID* mWaterNormal; |
116 | bool mIsValid; | 112 | bool mIsValid; |
117 | 113 | ||
114 | // Callback when the user interacts with the notification. | ||
115 | static bool applyCallback(const LLSD& notification, const LLSD& response); | ||
116 | |||
118 | // Converts the message's raw bytes into a Meta7WindlightPacket. | 117 | // Converts the message's raw bytes into a Meta7WindlightPacket. |
119 | void process_packet( char* buf ); | 118 | void process_packet( char* buf ); |
120 | 119 | ||
@@ -124,6 +123,15 @@ class WindlightMessage | |||
124 | // Constructs a LLWLParamSet from the Meta7WindlightPacket. | 123 | // Constructs a LLWLParamSet from the Meta7WindlightPacket. |
125 | void process_sky(); | 124 | void process_sky(); |
126 | 125 | ||
126 | // Restart the timer for temporarily ignoring settings. | ||
127 | static void restartIgnoreTimer(); | ||
128 | |||
129 | // Returns true if the ignore timer has expired (i.e. new settings | ||
130 | // should not be ignored anymore). | ||
131 | static bool ignoreTimerHasExpired(); | ||
132 | |||
133 | static void mergeWaterSets(LLWaterParamSet* thisSet, LLWaterParamSet* oldSet); | ||
134 | static void mergeWLSets(LLWLParamSet* thisSet, LLWLParamSet* oldSet); | ||
127 | }; | 135 | }; |
128 | 136 | ||
129 | #endif | 137 | #endif |
diff --git a/linden/indra/newview/llflexibleobject.cpp b/linden/indra/newview/llflexibleobject.cpp index 8f2c6d5..ad4341c 100644 --- a/linden/indra/newview/llflexibleobject.cpp +++ b/linden/indra/newview/llflexibleobject.cpp | |||
@@ -233,9 +233,6 @@ void LLVolumeImplFlexible::setAttributesOfAllSections(LLVector3* inScale) | |||
233 | mSection[0].mVelocity.setVec(0,0,0); | 233 | mSection[0].mVelocity.setVec(0,0,0); |
234 | mSection[0].mAxisRotation.setQuat(begin_rot,0,0,1); | 234 | mSection[0].mAxisRotation.setQuat(begin_rot,0,0,1); |
235 | 235 | ||
236 | LLVector3 parentSectionPosition = mSection[0].mPosition; | ||
237 | LLVector3 last_direction = mSection[0].mDirection; | ||
238 | |||
239 | remapSections(mSection, mInitializedRes, mSection, mSimulateRes); | 236 | remapSections(mSection, mInitializedRes, mSection, mSimulateRes); |
240 | mInitializedRes = mSimulateRes; | 237 | mInitializedRes = mSimulateRes; |
241 | 238 | ||
diff --git a/linden/indra/newview/llfloateractivespeakers.cpp b/linden/indra/newview/llfloateractivespeakers.cpp index 4af21b6..1016e1e 100644 --- a/linden/indra/newview/llfloateractivespeakers.cpp +++ b/linden/indra/newview/llfloateractivespeakers.cpp | |||
@@ -1010,7 +1010,7 @@ void LLSpeakerMgr::update(BOOL resort_ok) | |||
1010 | LLUUID speaker_id = speaker_it->first; | 1010 | LLUUID speaker_id = speaker_it->first; |
1011 | LLSpeaker* speakerp = speaker_it->second; | 1011 | LLSpeaker* speakerp = speaker_it->second; |
1012 | 1012 | ||
1013 | speaker_map_t::iterator cur_speaker_it = speaker_it++; | 1013 | speaker_it++; |
1014 | 1014 | ||
1015 | if (voice_channel_active && gVoiceClient->getVoiceEnabled(speaker_id)) | 1015 | if (voice_channel_active && gVoiceClient->getVoiceEnabled(speaker_id)) |
1016 | { | 1016 | { |
diff --git a/linden/indra/newview/llfloaterbeacons.cpp b/linden/indra/newview/llfloaterbeacons.cpp index aa89780..7c40931 100644 --- a/linden/indra/newview/llfloaterbeacons.cpp +++ b/linden/indra/newview/llfloaterbeacons.cpp | |||
@@ -54,6 +54,7 @@ LLFloaterBeacons::LLFloaterBeacons(const LLSD& seed) | |||
54 | LLPipeline::setRenderScriptedTouchBeacons(gSavedSettings.getBOOL("scripttouchbeacon")); | 54 | LLPipeline::setRenderScriptedTouchBeacons(gSavedSettings.getBOOL("scripttouchbeacon")); |
55 | LLPipeline::setRenderScriptedBeacons( gSavedSettings.getBOOL("scriptsbeacon")); | 55 | LLPipeline::setRenderScriptedBeacons( gSavedSettings.getBOOL("scriptsbeacon")); |
56 | LLPipeline::setRenderPhysicalBeacons( gSavedSettings.getBOOL("physicalbeacon")); | 56 | LLPipeline::setRenderPhysicalBeacons( gSavedSettings.getBOOL("physicalbeacon")); |
57 | LLPipeline::setRenderMOAPBeacons( gSavedSettings.getBOOL("moapbeacon")); | ||
57 | LLPipeline::setRenderSoundBeacons( gSavedSettings.getBOOL("soundsbeacon")); | 58 | LLPipeline::setRenderSoundBeacons( gSavedSettings.getBOOL("soundsbeacon")); |
58 | LLPipeline::setRenderParticleBeacons( gSavedSettings.getBOOL("particlesbeacon")); | 59 | LLPipeline::setRenderParticleBeacons( gSavedSettings.getBOOL("particlesbeacon")); |
59 | LLPipeline::setRenderHighlights( gSavedSettings.getBOOL("renderhighlights")); | 60 | LLPipeline::setRenderHighlights( gSavedSettings.getBOOL("renderhighlights")); |
@@ -67,6 +68,7 @@ BOOL LLFloaterBeacons::postBuild() | |||
67 | childSetCommitCallback("physical", onClickUICheck, this); | 68 | childSetCommitCallback("physical", onClickUICheck, this); |
68 | childSetCommitCallback("sounds", onClickUICheck, this); | 69 | childSetCommitCallback("sounds", onClickUICheck, this); |
69 | childSetCommitCallback("particles", onClickUICheck, this); | 70 | childSetCommitCallback("particles", onClickUICheck, this); |
71 | childSetCommitCallback("moap", onClickUICheck, this); | ||
70 | childSetCommitCallback("highlights", onClickUICheck, this); | 72 | childSetCommitCallback("highlights", onClickUICheck, this); |
71 | childSetCommitCallback("beacons", onClickUICheck, this); | 73 | childSetCommitCallback("beacons", onClickUICheck, this); |
72 | return TRUE; | 74 | return TRUE; |
@@ -132,6 +134,7 @@ void LLFloaterBeacons::onClickUICheck(LLUICtrl *ctrl, void* data) | |||
132 | else if(name == "physical") LLPipeline::setRenderPhysicalBeacons(check->get()); | 134 | else if(name == "physical") LLPipeline::setRenderPhysicalBeacons(check->get()); |
133 | else if(name == "sounds") LLPipeline::setRenderSoundBeacons(check->get()); | 135 | else if(name == "sounds") LLPipeline::setRenderSoundBeacons(check->get()); |
134 | else if(name == "particles") LLPipeline::setRenderParticleBeacons(check->get()); | 136 | else if(name == "particles") LLPipeline::setRenderParticleBeacons(check->get()); |
137 | else if(name == "moap") LLPipeline::setRenderMOAPBeacons(check->get()); | ||
135 | else if(name == "highlights") | 138 | else if(name == "highlights") |
136 | { | 139 | { |
137 | LLPipeline::toggleRenderHighlights(NULL); | 140 | LLPipeline::toggleRenderHighlights(NULL); |
diff --git a/linden/indra/newview/llfloaterbuildoptions.cpp b/linden/indra/newview/llfloaterbuildoptions.cpp index 8c6c5f3..b6c15b6 100644 --- a/linden/indra/newview/llfloaterbuildoptions.cpp +++ b/linden/indra/newview/llfloaterbuildoptions.cpp | |||
@@ -115,6 +115,9 @@ BOOL LLFloaterBuildOptions::postBuild() | |||
115 | getChild<LLTextureCtrl>("texture control")->setImageAssetID(LLUUID(gSavedPerAccountSettings.getString("BuildPrefs_Texture"))); | 115 | getChild<LLTextureCtrl>("texture control")->setImageAssetID(LLUUID(gSavedPerAccountSettings.getString("BuildPrefs_Texture"))); |
116 | 116 | ||
117 | childSetValue("BuildPrefsRenderHighlight_toggle", gSavedSettings.getBOOL("RenderHighlightSelections") ); | 117 | childSetValue("BuildPrefsRenderHighlight_toggle", gSavedSettings.getBOOL("RenderHighlightSelections") ); |
118 | childSetValue("BuildPrefsRenderHidden_toggle", gSavedSettings.getBOOL("RenderHiddenSelections") ); | ||
119 | childSetValue("BuildPrefsRenderLightRadius_toggle", gSavedSettings.getBOOL("RenderLightRadius") ); | ||
120 | childSetValue("BuildPrefsShowSelectionBeam_toggle", gSavedSettings.getBOOL("ShowSelectionBeam") ); | ||
118 | childSetValue("grouplandrez", gSavedSettings.getBOOL("RezWithLandGroup") ); | 121 | childSetValue("grouplandrez", gSavedSettings.getBOOL("RezWithLandGroup") ); |
119 | childSetValue("GridSubUnit", gSavedSettings.getBOOL("GridSubUnit") ); | 122 | childSetValue("GridSubUnit", gSavedSettings.getBOOL("GridSubUnit") ); |
120 | childSetValue("GridCrossSection", gSavedSettings.getBOOL("GridCrossSections") ); | 123 | childSetValue("GridCrossSection", gSavedSettings.getBOOL("GridCrossSections") ); |
@@ -293,6 +296,17 @@ void LLFloaterBuildOptions::apply() | |||
293 | LLSelectMgr::sRenderSelectionHighlights = !LLSelectMgr::sRenderSelectionHighlights; | 296 | LLSelectMgr::sRenderSelectionHighlights = !LLSelectMgr::sRenderSelectionHighlights; |
294 | gSavedSettings.setBOOL("RenderHighlightSelections", LLSelectMgr::sRenderSelectionHighlights); | 297 | gSavedSettings.setBOOL("RenderHighlightSelections", LLSelectMgr::sRenderSelectionHighlights); |
295 | } | 298 | } |
299 | if (gSavedSettings.getBOOL("RenderHiddenSelections") != (BOOL)(childGetValue("BuildPrefsRenderHidden_toggle").asBoolean())) | ||
300 | { | ||
301 | LLSelectMgr::sRenderHiddenSelections = !LLSelectMgr::sRenderHiddenSelections; | ||
302 | gSavedSettings.setBOOL("RenderHiddenSelections", LLSelectMgr::sRenderHiddenSelections); | ||
303 | } | ||
304 | if (gSavedSettings.getBOOL("RenderLightRadius") != (BOOL)(childGetValue("BuildPrefsRenderLightRadius_toggle").asBoolean())) | ||
305 | { | ||
306 | LLSelectMgr::sRenderLightRadius = !LLSelectMgr::sRenderLightRadius; | ||
307 | gSavedSettings.setBOOL("RenderLightRadius", LLSelectMgr::sRenderLightRadius); | ||
308 | } | ||
309 | gSavedSettings.setBOOL("ShowSelectionBeam", childGetValue("BuildPrefsShowSelectionBeam_toggle").asBoolean() ); | ||
296 | 310 | ||
297 | gSavedSettings.setBOOL("RezWithLandGroup", childGetValue("grouplandrez").asBoolean() ); | 311 | gSavedSettings.setBOOL("RezWithLandGroup", childGetValue("grouplandrez").asBoolean() ); |
298 | gSavedSettings.setBOOL("GridSubUnit", childGetValue("GridSubUnit").asBoolean() ); | 312 | gSavedSettings.setBOOL("GridSubUnit", childGetValue("GridSubUnit").asBoolean() ); |
@@ -340,6 +354,9 @@ void LLFloaterBuildOptions::reset() | |||
340 | mBuildTextureUUID = (LLUUID)gSavedPerAccountSettings.getControl("BuildPrefs_Texture")->getDefault().asString(); | 354 | mBuildTextureUUID = (LLUUID)gSavedPerAccountSettings.getControl("BuildPrefs_Texture")->getDefault().asString(); |
341 | 355 | ||
342 | childSetValue("BuildPrefsRenderHighlight_toggle", gSavedSettings.getControl("RenderHighlightSelections")->getDefault() ); | 356 | childSetValue("BuildPrefsRenderHighlight_toggle", gSavedSettings.getControl("RenderHighlightSelections")->getDefault() ); |
357 | childSetValue("BuildPrefsRenderHidden_toggle", gSavedSettings.getControl("RenderHiddenSelections")->getDefault() ); | ||
358 | childSetValue("BuildPrefsRenderLightRadius_toggle", gSavedSettings.getControl("RenderLightRadius")->getDefault() ); | ||
359 | childSetValue("BuildPrefsShowSelectionBeam_toggle", gSavedSettings.getControl("ShowSelectionBeam")->getDefault() ); | ||
343 | childSetValue("grouplandrez", gSavedSettings.getControl("RezWithLandGroup")->getDefault() ); | 360 | childSetValue("grouplandrez", gSavedSettings.getControl("RezWithLandGroup")->getDefault() ); |
344 | childSetValue("GridSubUnit", gSavedSettings.getControl("GridSubUnit")->getDefault() ); | 361 | childSetValue("GridSubUnit", gSavedSettings.getControl("GridSubUnit")->getDefault() ); |
345 | childSetValue("GridCrossSection", gSavedSettings.getControl("GridCrossSections")->getDefault() ); | 362 | childSetValue("GridCrossSection", gSavedSettings.getControl("GridCrossSections")->getDefault() ); |
diff --git a/linden/indra/newview/llfloaterchat.cpp b/linden/indra/newview/llfloaterchat.cpp index f1749ac..5a168a5 100644 --- a/linden/indra/newview/llfloaterchat.cpp +++ b/linden/indra/newview/llfloaterchat.cpp | |||
@@ -364,7 +364,7 @@ void LLFloaterChat::addChatHistory(const LLChat& chat, bool log_to_file) | |||
364 | { | 364 | { |
365 | // desaturate muted chat | 365 | // desaturate muted chat |
366 | LLColor4 muted_color = lerp(color, LLColor4::grey, 0.5f); | 366 | LLColor4 muted_color = lerp(color, LLColor4::grey, 0.5f); |
367 | add_timestamped_line(history_editor_with_mute, chat, color); | 367 | add_timestamped_line(history_editor_with_mute, chat, muted_color); |
368 | } | 368 | } |
369 | 369 | ||
370 | // add objects as transient speakers that can be muted | 370 | // add objects as transient speakers that can be muted |
diff --git a/linden/indra/newview/llfloaterenvsettings.cpp b/linden/indra/newview/llfloaterenvsettings.cpp index 801ff49..2cb1988 100644 --- a/linden/indra/newview/llfloaterenvsettings.cpp +++ b/linden/indra/newview/llfloaterenvsettings.cpp | |||
@@ -291,21 +291,6 @@ void LLFloaterEnvSettings::onOpenWLManager(void* userData) | |||
291 | WLFloaterManager::show(); | 291 | WLFloaterManager::show(); |
292 | } | 292 | } |
293 | 293 | ||
294 | void LLFloaterEnvSettings::onSubmitWindlight(void* userData) | ||
295 | { | ||
296 | Meta7WindlightPacket * wl = new Meta7WindlightPacket(); | ||
297 | |||
298 | LLWaterParamManager * param_mgr = LLWaterParamManager::instance(); | ||
299 | wl->reflectionWaveletScale.X = param_mgr->mNormalScale.mX; | ||
300 | wl->reflectionWaveletScale.Y = param_mgr->mNormalScale.mY; | ||
301 | wl->reflectionWaveletScale.Z = param_mgr->mNormalScale.mZ; | ||
302 | |||
303 | |||
304 | std::vector<std::string> strings; | ||
305 | strings.push_back((char*)wl); | ||
306 | send_generic_message("Windlight", strings); | ||
307 | } | ||
308 | |||
309 | void LLFloaterEnvSettings::onUseEstateTime(void* userData) | 294 | void LLFloaterEnvSettings::onUseEstateTime(void* userData) |
310 | { | 295 | { |
311 | if(LLFloaterWindLight::isOpen()) | 296 | if(LLFloaterWindLight::isOpen()) |
diff --git a/linden/indra/newview/llfloaterjoystick.cpp b/linden/indra/newview/llfloaterjoystick.cpp index fd39621..b96af5b 100644 --- a/linden/indra/newview/llfloaterjoystick.cpp +++ b/linden/indra/newview/llfloaterjoystick.cpp | |||
@@ -100,7 +100,6 @@ BOOL LLFloaterJoystick::postBuild() | |||
100 | if (child) | 100 | if (child) |
101 | { | 101 | { |
102 | LLRect r = child->getRect(); | 102 | LLRect r = child->getRect(); |
103 | LLRect f = getRect(); | ||
104 | rect = LLRect(350, r.mTop, r.mRight + 200, 0); | 103 | rect = LLRect(350, r.mTop, r.mRight + 200, 0); |
105 | } | 104 | } |
106 | 105 | ||
diff --git a/linden/indra/newview/llfloatermediabrowser.cpp b/linden/indra/newview/llfloatermediabrowser.cpp index 54ffc0f..ed1ec42 100644 --- a/linden/indra/newview/llfloatermediabrowser.cpp +++ b/linden/indra/newview/llfloatermediabrowser.cpp | |||
@@ -54,6 +54,7 @@ | |||
54 | #include "llviewerparcelmedia.h" | 54 | #include "llviewerparcelmedia.h" |
55 | #include "llcombobox.h" | 55 | #include "llcombobox.h" |
56 | 56 | ||
57 | #include "hippogridmanager.h" | ||
57 | 58 | ||
58 | // TEMP | 59 | // TEMP |
59 | #include "llsdutil.h" | 60 | #include "llsdutil.h" |
@@ -157,7 +158,7 @@ void LLFloaterMediaBrowser::buildURLHistory() | |||
157 | 158 | ||
158 | std::string LLFloaterMediaBrowser::getSupportURL() | 159 | std::string LLFloaterMediaBrowser::getSupportURL() |
159 | { | 160 | { |
160 | return getString("support_page_url"); | 161 | return gHippoGridManager->getConnectedGrid()->getSupportURL(); |
161 | } | 162 | } |
162 | void LLFloaterMediaBrowser::onClose(bool app_quitting) | 163 | void LLFloaterMediaBrowser::onClose(bool app_quitting) |
163 | { | 164 | { |
diff --git a/linden/indra/newview/llfloatertools.cpp b/linden/indra/newview/llfloatertools.cpp index e22de66..2bf4b31 100644 --- a/linden/indra/newview/llfloatertools.cpp +++ b/linden/indra/newview/llfloatertools.cpp | |||
@@ -393,6 +393,7 @@ BOOL LLFloaterTools::postBuild() | |||
393 | mStatusText["rotate"] = getString("status_rotate"); | 393 | mStatusText["rotate"] = getString("status_rotate"); |
394 | mStatusText["scale"] = getString("status_scale"); | 394 | mStatusText["scale"] = getString("status_scale"); |
395 | mStatusText["move"] = getString("status_move"); | 395 | mStatusText["move"] = getString("status_move"); |
396 | mStatusText["selectface"] = getString("status_selectface"); | ||
396 | mStatusText["align"] = getString("status_align"); | 397 | mStatusText["align"] = getString("status_align"); |
397 | mStatusText["modifyland"] = getString("status_modifyland"); | 398 | mStatusText["modifyland"] = getString("status_modifyland"); |
398 | mStatusText["camera"] = getString("status_camera"); | 399 | mStatusText["camera"] = getString("status_camera"); |
diff --git a/linden/indra/newview/llfloaterwater.cpp b/linden/indra/newview/llfloaterwater.cpp index 782c56e..9dd3aab 100644 --- a/linden/indra/newview/llfloaterwater.cpp +++ b/linden/indra/newview/llfloaterwater.cpp | |||
@@ -1,11 +1,11 @@ | |||
1 | /** | 1 | /** |
2 | * @file llfloaterwater.cpp | 2 | * @file llfloaterwater.cpp |
3 | * @brief LLFloaterWater class definition | 3 | * @brief LLFloaterWater class definition |
4 | * | 4 | * |
5 | * $LicenseInfo:firstyear=2007&license=viewergpl$ | 5 | * $LicenseInfo:firstyear=2007&license=viewergpl$ |
6 | * | 6 | * |
7 | * Copyright (c) 2007-2009, Linden Research, Inc. | 7 | * Copyright (c) 2007-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 |
@@ -13,17 +13,17 @@ | |||
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. |
@@ -62,6 +62,7 @@ | |||
62 | 62 | ||
63 | #include "llwaterparamset.h" | 63 | #include "llwaterparamset.h" |
64 | #include "llwaterparammanager.h" | 64 | #include "llwaterparammanager.h" |
65 | #include "llwlparammanager.h" | ||
65 | #include "llpostprocess.h" | 66 | #include "llpostprocess.h" |
66 | 67 | ||
67 | #include "wlfloaterwindlightsend.h" | 68 | #include "wlfloaterwindlightsend.h" |
@@ -75,15 +76,15 @@ std::set<std::string> LLFloaterWater::sDefaultPresets; | |||
75 | LLFloaterWater::LLFloaterWater() : LLFloater(std::string("water floater")) | 76 | LLFloaterWater::LLFloaterWater() : LLFloater(std::string("water floater")) |
76 | { | 77 | { |
77 | LLUICtrlFactory::getInstance()->buildFloater(this, "floater_water.xml"); | 78 | LLUICtrlFactory::getInstance()->buildFloater(this, "floater_water.xml"); |
78 | 79 | ||
79 | // add the combo boxes | 80 | // add the combo boxes |
80 | LLComboBox* comboBox = getChild<LLComboBox>("WaterPresetsCombo"); | 81 | LLComboBox* comboBox = getChild<LLComboBox>("WaterPresetsCombo"); |
81 | 82 | ||
82 | if(comboBox != NULL) { | 83 | if(comboBox != NULL) { |
83 | 84 | ||
84 | std::map<std::string, LLWaterParamSet>::iterator mIt = | 85 | std::map<std::string, LLWaterParamSet>::iterator mIt = |
85 | LLWaterParamManager::instance()->mParamList.begin(); | 86 | LLWaterParamManager::instance()->mParamList.begin(); |
86 | for(; mIt != LLWaterParamManager::instance()->mParamList.end(); mIt++) | 87 | for(; mIt != LLWaterParamManager::instance()->mParamList.end(); mIt++) |
87 | { | 88 | { |
88 | comboBox->add(mIt->first); | 89 | comboBox->add(mIt->first); |
89 | } | 90 | } |
@@ -117,7 +118,7 @@ void LLFloaterWater::initCallbacks(void) { | |||
117 | initHelpBtn("WaterFogColorHelp", "HelpWaterFogColor"); | 118 | initHelpBtn("WaterFogColorHelp", "HelpWaterFogColor"); |
118 | initHelpBtn("WaterFogDensityHelp", "HelpWaterFogDensity"); | 119 | initHelpBtn("WaterFogDensityHelp", "HelpWaterFogDensity"); |
119 | initHelpBtn("WaterUnderWaterFogModHelp", "HelpUnderWaterFogMod"); | 120 | initHelpBtn("WaterUnderWaterFogModHelp", "HelpUnderWaterFogMod"); |
120 | initHelpBtn("WaterGlowHelp", "HelpWaterGlow"); | 121 | initHelpBtn("WaterGlowHelp", "HelpWaterGlow"); |
121 | initHelpBtn("WaterNormalScaleHelp", "HelpWaterNormalScale"); | 122 | initHelpBtn("WaterNormalScaleHelp", "HelpWaterNormalScale"); |
122 | initHelpBtn("WaterFresnelScaleHelp", "HelpWaterFresnelScale"); | 123 | initHelpBtn("WaterFresnelScaleHelp", "HelpWaterFresnelScale"); |
123 | initHelpBtn("WaterFresnelOffsetHelp", "HelpWaterFresnelOffset"); | 124 | initHelpBtn("WaterFresnelOffsetHelp", "HelpWaterFresnelOffset"); |
@@ -134,7 +135,7 @@ void LLFloaterWater::initCallbacks(void) { | |||
134 | 135 | ||
135 | childSetCommitCallback("WaterFogColor", onWaterFogColorMoved, ¶m_mgr->mFogColor); | 136 | childSetCommitCallback("WaterFogColor", onWaterFogColorMoved, ¶m_mgr->mFogColor); |
136 | 137 | ||
137 | // | 138 | // |
138 | childSetCommitCallback("WaterGlow", onColorControlAMoved, ¶m_mgr->mFogColor); | 139 | childSetCommitCallback("WaterGlow", onColorControlAMoved, ¶m_mgr->mFogColor); |
139 | 140 | ||
140 | // fog density | 141 | // fog density |
@@ -212,11 +213,11 @@ bool LLFloaterWater::newPromptCallback(const LLSD& notification, const LLSD& res | |||
212 | 213 | ||
213 | // add the current parameters to the list | 214 | // add the current parameters to the list |
214 | // see if it's there first | 215 | // see if it's there first |
215 | std::map<std::string, LLWaterParamSet>::iterator mIt = | 216 | std::map<std::string, LLWaterParamSet>::iterator mIt = |
216 | param_mgr->mParamList.find(text); | 217 | param_mgr->mParamList.find(text); |
217 | 218 | ||
218 | // if not there, add a new one | 219 | // if not there, add a new one |
219 | if(mIt == param_mgr->mParamList.end()) | 220 | if(mIt == param_mgr->mParamList.end()) |
220 | { | 221 | { |
221 | param_mgr->addParamSet(text, param_mgr->mCurParams); | 222 | param_mgr->addParamSet(text, param_mgr->mCurParams); |
222 | comboBox->add(text); | 223 | comboBox->add(text); |
@@ -227,8 +228,8 @@ bool LLFloaterWater::newPromptCallback(const LLSD& notification, const LLSD& res | |||
227 | param_mgr->savePreset(text); | 228 | param_mgr->savePreset(text); |
228 | 229 | ||
229 | // otherwise, send a message to the user | 230 | // otherwise, send a message to the user |
230 | } | 231 | } |
231 | else | 232 | else |
232 | { | 233 | { |
233 | LLNotifications::instance().add("ExistsWaterPresetAlert"); | 234 | LLNotifications::instance().add("ExistsWaterPresetAlert"); |
234 | } | 235 | } |
@@ -261,13 +262,13 @@ void LLFloaterWater::syncMenu() | |||
261 | colCtrl->set(col); | 262 | colCtrl->set(col); |
262 | 263 | ||
263 | // fog and wavelets | 264 | // fog and wavelets |
264 | param_mgr->mFogDensity.mExp = | 265 | param_mgr->mFogDensity.mExp = |
265 | log(current_params.getFloat(param_mgr->mFogDensity.mName, err)) / | 266 | log(current_params.getFloat(param_mgr->mFogDensity.mName, err)) / |
266 | log(param_mgr->mFogDensity.mBase); | 267 | log(param_mgr->mFogDensity.mBase); |
267 | param_mgr->setDensitySliderValue(param_mgr->mFogDensity.mExp); | 268 | param_mgr->setDensitySliderValue(param_mgr->mFogDensity.mExp); |
268 | childSetValue("WaterFogDensity", param_mgr->mFogDensity.mExp); | 269 | childSetValue("WaterFogDensity", param_mgr->mFogDensity.mExp); |
269 | 270 | ||
270 | param_mgr->mUnderWaterFogMod.mX = | 271 | param_mgr->mUnderWaterFogMod.mX = |
271 | current_params.getFloat(param_mgr->mUnderWaterFogMod.mName, err); | 272 | current_params.getFloat(param_mgr->mUnderWaterFogMod.mName, err); |
272 | childSetValue("WaterUnderWaterFogMod", param_mgr->mUnderWaterFogMod.mX); | 273 | childSetValue("WaterUnderWaterFogMod", param_mgr->mUnderWaterFogMod.mX); |
273 | 274 | ||
@@ -433,14 +434,14 @@ void LLFloaterWater::onColorControlRMoved(LLUICtrl* ctrl, void* userData) | |||
433 | colorControl->mR = sldrCtrl->getValueF32(); | 434 | colorControl->mR = sldrCtrl->getValueF32(); |
434 | 435 | ||
435 | // move i if it's the max | 436 | // move i if it's the max |
436 | if(colorControl->mR >= colorControl->mG | 437 | if(colorControl->mR >= colorControl->mG |
437 | && colorControl->mR >= colorControl->mB | 438 | && colorControl->mR >= colorControl->mB |
438 | && colorControl->mHasSliderName) | 439 | && colorControl->mHasSliderName) |
439 | { | 440 | { |
440 | colorControl->mI = colorControl->mR; | 441 | colorControl->mI = colorControl->mR; |
441 | std::string name = colorControl->mSliderName; | 442 | std::string name = colorControl->mSliderName; |
442 | name.append("I"); | 443 | name.append("I"); |
443 | 444 | ||
444 | sWaterMenu->childSetValue(name, colorControl->mR); | 445 | sWaterMenu->childSetValue(name, colorControl->mR); |
445 | } | 446 | } |
446 | 447 | ||
@@ -457,7 +458,7 @@ void LLFloaterWater::onColorControlGMoved(LLUICtrl* ctrl, void* userData) | |||
457 | colorControl->mG = sldrCtrl->getValueF32(); | 458 | colorControl->mG = sldrCtrl->getValueF32(); |
458 | 459 | ||
459 | // move i if it's the max | 460 | // move i if it's the max |
460 | if(colorControl->mG >= colorControl->mR | 461 | if(colorControl->mG >= colorControl->mR |
461 | && colorControl->mG >= colorControl->mB | 462 | && colorControl->mG >= colorControl->mB |
462 | && colorControl->mHasSliderName) | 463 | && colorControl->mHasSliderName) |
463 | { | 464 | { |
@@ -517,9 +518,9 @@ void LLFloaterWater::onColorControlIMoved(LLUICtrl* ctrl, void* userData) | |||
517 | WaterColorControl * colorControl = static_cast<WaterColorControl *>(userData); | 518 | WaterColorControl * colorControl = static_cast<WaterColorControl *>(userData); |
518 | 519 | ||
519 | colorControl->mI = sldrCtrl->getValueF32(); | 520 | colorControl->mI = sldrCtrl->getValueF32(); |
520 | 521 | ||
521 | // only for sliders where we pass a name | 522 | // only for sliders where we pass a name |
522 | if(colorControl->mHasSliderName) | 523 | if(colorControl->mHasSliderName) |
523 | { | 524 | { |
524 | // set it to the top | 525 | // set it to the top |
525 | F32 maxVal = std::max(std::max(colorControl->mR, colorControl->mG), colorControl->mB); | 526 | F32 maxVal = std::max(std::max(colorControl->mR, colorControl->mG), colorControl->mB); |
@@ -541,7 +542,7 @@ void LLFloaterWater::onColorControlIMoved(LLUICtrl* ctrl, void* userData) | |||
541 | colorControl->mR = 0; | 542 | colorControl->mR = 0; |
542 | colorControl->mG = 0; | 543 | colorControl->mG = 0; |
543 | colorControl->mB = 0; | 544 | colorControl->mB = 0; |
544 | 545 | ||
545 | // if all at the start | 546 | // if all at the start |
546 | // set them all to the intensity | 547 | // set them all to the intensity |
547 | } | 548 | } |
@@ -597,7 +598,7 @@ void LLFloaterWater::onFloatControlMoved(LLUICtrl* ctrl, void* userData) | |||
597 | void LLFloaterWater::onWaterFogColorMoved(LLUICtrl* ctrl, void* userData) | 598 | void LLFloaterWater::onWaterFogColorMoved(LLUICtrl* ctrl, void* userData) |
598 | { | 599 | { |
599 | LLColorSwatchCtrl* swatch = static_cast<LLColorSwatchCtrl*>(ctrl); | 600 | LLColorSwatchCtrl* swatch = static_cast<LLColorSwatchCtrl*>(ctrl); |
600 | WaterColorControl * colorControl = static_cast<WaterColorControl *>(userData); | 601 | WaterColorControl * colorControl = static_cast<WaterColorControl *>(userData); |
601 | *colorControl = swatch->get(); | 602 | *colorControl = swatch->get(); |
602 | 603 | ||
603 | colorControl->update(LLWaterParamManager::instance()->mCurParams); | 604 | colorControl->update(LLWaterParamManager::instance()->mCurParams); |
@@ -652,7 +653,7 @@ void LLFloaterWater::onSavePreset(LLUICtrl* ctrl, void* userData) | |||
652 | } | 653 | } |
653 | 654 | ||
654 | if (ctrl->getValue().asString() == "save_inventory_item") | 655 | if (ctrl->getValue().asString() == "save_inventory_item") |
655 | { | 656 | { |
656 | // Check if this is already a notecard. | 657 | // Check if this is already a notecard. |
657 | if(LLWaterParamManager::instance()->mCurParams.mInventoryID.notNull()) | 658 | if(LLWaterParamManager::instance()->mCurParams.mInventoryID.notNull()) |
658 | { | 659 | { |
@@ -662,13 +663,13 @@ void LLFloaterWater::onSavePreset(LLUICtrl* ctrl, void* userData) | |||
662 | { | 663 | { |
663 | // Make sure we have a ".ww" extension. | 664 | // Make sure we have a ".ww" extension. |
664 | std::string name = comboBox->getSelectedItemLabel(); | 665 | std::string name = comboBox->getSelectedItemLabel(); |
665 | if(name.length() > 2 && name.compare(name.length() - 3, 3, ".ww") != 0) | 666 | if(!LLWLParamManager::isWaterSettingsNotecard(name)) |
666 | { | 667 | { |
667 | name += ".ww"; | 668 | name += ".ww"; |
668 | } | 669 | } |
669 | LLPointer<KVFloaterWaterNotecardCreatedCallback> cb = new KVFloaterWaterNotecardCreatedCallback(); | 670 | LLPointer<KVFloaterWaterNotecardCreatedCallback> cb = new KVFloaterWaterNotecardCreatedCallback(); |
670 | // Create a notecard and then save it. | 671 | // Create a notecard and then save it. |
671 | create_inventory_item(gAgent.getID(), | 672 | create_inventory_item(gAgent.getID(), |
672 | gAgent.getSessionID(), | 673 | gAgent.getSessionID(), |
673 | LLUUID::null, | 674 | LLUUID::null, |
674 | LLTransactionID::tnull, | 675 | LLTransactionID::tnull, |
@@ -679,7 +680,7 @@ void LLFloaterWater::onSavePreset(LLUICtrl* ctrl, void* userData) | |||
679 | NOT_WEARABLE, | 680 | NOT_WEARABLE, |
680 | PERM_ITEM_UNRESTRICTED, | 681 | PERM_ITEM_UNRESTRICTED, |
681 | cb); | 682 | cb); |
682 | 683 | ||
683 | } | 684 | } |
684 | } | 685 | } |
685 | else if (ctrl->getValue().asString() == "send_to_server_item") | 686 | else if (ctrl->getValue().asString() == "send_to_server_item") |
@@ -690,13 +691,13 @@ void LLFloaterWater::onSavePreset(LLUICtrl* ctrl, void* userData) | |||
690 | } | 691 | } |
691 | else | 692 | else |
692 | { | 693 | { |
693 | LLWaterParamManager::instance()->mCurParams.mName = | 694 | LLWaterParamManager::instance()->mCurParams.mName = |
694 | comboBox->getSelectedItemLabel(); | 695 | comboBox->getSelectedItemLabel(); |
695 | 696 | ||
696 | // check to see if it's a default and shouldn't be overwritten | 697 | // check to see if it's a default and shouldn't be overwritten |
697 | std::set<std::string>::iterator sIt = sDefaultPresets.find( | 698 | std::set<std::string>::iterator sIt = sDefaultPresets.find( |
698 | comboBox->getSelectedItemLabel()); | 699 | comboBox->getSelectedItemLabel()); |
699 | if(sIt != sDefaultPresets.end() && !gSavedSettings.getBOOL("WaterEditPresets")) | 700 | if(sIt != sDefaultPresets.end() && !gSavedSettings.getBOOL("WaterEditPresets")) |
700 | { | 701 | { |
701 | LLNotifications::instance().add("WLNoEditDefault"); | 702 | LLNotifications::instance().add("WLNoEditDefault"); |
702 | return; | 703 | return; |
@@ -710,7 +711,7 @@ bool LLFloaterWater::saveNotecardCallback(const LLSD& notification, const LLSD& | |||
710 | { | 711 | { |
711 | S32 option = LLNotification::getSelectedOption(notification, response); | 712 | S32 option = LLNotification::getSelectedOption(notification, response); |
712 | // if they choose save, do it. Otherwise, don't do anything | 713 | // if they choose save, do it. Otherwise, don't do anything |
713 | if(option == 0) | 714 | if(option == 0) |
714 | { | 715 | { |
715 | LLWaterParamManager * param_mgr = LLWaterParamManager::instance(); | 716 | LLWaterParamManager * param_mgr = LLWaterParamManager::instance(); |
716 | param_mgr->setParamSet(param_mgr->mCurParams.mName, param_mgr->mCurParams); | 717 | param_mgr->setParamSet(param_mgr->mCurParams.mName, param_mgr->mCurParams); |
@@ -723,12 +724,12 @@ bool LLFloaterWater::saveAlertCallback(const LLSD& notification, const LLSD& res | |||
723 | { | 724 | { |
724 | S32 option = LLNotification::getSelectedOption(notification, response); | 725 | S32 option = LLNotification::getSelectedOption(notification, response); |
725 | // if they choose save, do it. Otherwise, don't do anything | 726 | // if they choose save, do it. Otherwise, don't do anything |
726 | if(option == 0) | 727 | if(option == 0) |
727 | { | 728 | { |
728 | LLWaterParamManager * param_mgr = LLWaterParamManager::instance(); | 729 | LLWaterParamManager * param_mgr = LLWaterParamManager::instance(); |
729 | 730 | ||
730 | param_mgr->setParamSet( | 731 | param_mgr->setParamSet( |
731 | param_mgr->mCurParams.mName, | 732 | param_mgr->mCurParams.mName, |
732 | param_mgr->mCurParams); | 733 | param_mgr->mCurParams); |
733 | 734 | ||
734 | // comment this back in to save to file | 735 | // comment this back in to save to file |
@@ -755,38 +756,36 @@ bool LLFloaterWater::deleteAlertCallback(const LLSD& notification, const LLSD& r | |||
755 | { | 756 | { |
756 | S32 option = LLNotification::getSelectedOption(notification, response); | 757 | S32 option = LLNotification::getSelectedOption(notification, response); |
757 | // if they choose delete, do it. Otherwise, don't do anything | 758 | // if they choose delete, do it. Otherwise, don't do anything |
758 | if(option == 0) | 759 | if(option == 0) |
759 | { | 760 | { |
760 | LLComboBox* combo_box = sWaterMenu->getChild<LLComboBox>("WaterPresetsCombo"); | 761 | LLComboBox* combo_box = sWaterMenu->getChild<LLComboBox>("WaterPresetsCombo"); |
761 | LLFloaterDayCycle* day_cycle = NULL; | 762 | LLFloaterDayCycle* day_cycle = NULL; |
762 | LLComboBox* key_combo = NULL; | 763 | LLComboBox* key_combo = NULL; |
763 | LLMultiSliderCtrl* mult_sldr = NULL; | ||
764 | 764 | ||
765 | if(LLFloaterDayCycle::isOpen()) | 765 | if(LLFloaterDayCycle::isOpen()) |
766 | { | 766 | { |
767 | day_cycle = LLFloaterDayCycle::instance(); | 767 | day_cycle = LLFloaterDayCycle::instance(); |
768 | key_combo = day_cycle->getChild<LLComboBox>("WaterKeyPresets"); | 768 | key_combo = day_cycle->getChild<LLComboBox>("WaterKeyPresets"); |
769 | mult_sldr = day_cycle->getChild<LLMultiSliderCtrl>("WaterDayCycleKeys"); | ||
770 | } | 769 | } |
771 | 770 | ||
772 | std::string name = combo_box->getSelectedValue().asString(); | 771 | std::string name = combo_box->getSelectedValue().asString(); |
773 | 772 | ||
774 | // check to see if it's a default and shouldn't be deleted | 773 | // check to see if it's a default and shouldn't be deleted |
775 | std::set<std::string>::iterator sIt = sDefaultPresets.find(name); | 774 | std::set<std::string>::iterator sIt = sDefaultPresets.find(name); |
776 | if(sIt != sDefaultPresets.end()) | 775 | if(sIt != sDefaultPresets.end()) |
777 | { | 776 | { |
778 | LLNotifications::instance().add("WaterNoEditDefault"); | 777 | LLNotifications::instance().add("WaterNoEditDefault"); |
779 | return false; | 778 | return false; |
780 | } | 779 | } |
781 | 780 | ||
782 | LLWaterParamManager::instance()->removeParamSet(name, true); | 781 | LLWaterParamManager::instance()->removeParamSet(name, true); |
783 | 782 | ||
784 | // remove and choose another | 783 | // remove and choose another |
785 | S32 new_index = combo_box->getCurrentIndex(); | 784 | S32 new_index = combo_box->getCurrentIndex(); |
786 | 785 | ||
787 | combo_box->remove(name); | 786 | combo_box->remove(name); |
788 | 787 | ||
789 | if(key_combo != NULL) | 788 | if(key_combo != NULL) |
790 | { | 789 | { |
791 | key_combo->remove(name); | 790 | key_combo->remove(name); |
792 | 791 | ||
@@ -795,12 +794,12 @@ bool LLFloaterWater::deleteAlertCallback(const LLSD& notification, const LLSD& r | |||
795 | } | 794 | } |
796 | 795 | ||
797 | // pick the previously selected index after delete | 796 | // pick the previously selected index after delete |
798 | if(new_index > 0) | 797 | if(new_index > 0) |
799 | { | 798 | { |
800 | new_index--; | 799 | new_index--; |
801 | } | 800 | } |
802 | 801 | ||
803 | if(combo_box->getItemCount() > 0) | 802 | if(combo_box->getItemCount() > 0) |
804 | { | 803 | { |
805 | combo_box->setCurrentByIndex(new_index); | 804 | combo_box->setCurrentByIndex(new_index); |
806 | } | 805 | } |
@@ -812,12 +811,12 @@ bool LLFloaterWater::deleteAlertCallback(const LLSD& notification, const LLSD& r | |||
812 | void LLFloaterWater::onChangePresetName(LLUICtrl* ctrl, void * userData) | 811 | void LLFloaterWater::onChangePresetName(LLUICtrl* ctrl, void * userData) |
813 | { | 812 | { |
814 | LLComboBox * combo_box = static_cast<LLComboBox*>(ctrl); | 813 | LLComboBox * combo_box = static_cast<LLComboBox*>(ctrl); |
815 | 814 | ||
816 | if(combo_box->getSimple() == "") | 815 | if(combo_box->getSimple() == "") |
817 | { | 816 | { |
818 | return; | 817 | return; |
819 | } | 818 | } |
820 | 819 | ||
821 | LLWaterParamManager::instance()->loadPreset( | 820 | LLWaterParamManager::instance()->loadPreset( |
822 | combo_box->getSelectedValue().asString()); | 821 | combo_box->getSelectedValue().asString()); |
823 | sWaterMenu->syncMenu(); | 822 | sWaterMenu->syncMenu(); |
@@ -829,12 +828,12 @@ void LLFloaterWater::onClickNext(void* user_data) | |||
829 | LLWaterParamSet& currentParams = param_mgr->mCurParams; | 828 | LLWaterParamSet& currentParams = param_mgr->mCurParams; |
830 | 829 | ||
831 | // find place of current param | 830 | // find place of current param |
832 | std::map<std::string, LLWaterParamSet>::iterator mIt = | 831 | std::map<std::string, LLWaterParamSet>::iterator mIt = |
833 | param_mgr->mParamList.find(currentParams.mName); | 832 | param_mgr->mParamList.find(currentParams.mName); |
834 | 833 | ||
835 | // if at the end, loop | 834 | // if at the end, loop |
836 | std::map<std::string, LLWaterParamSet>::iterator last = param_mgr->mParamList.end(); --last; | 835 | std::map<std::string, LLWaterParamSet>::iterator last = param_mgr->mParamList.end(); --last; |
837 | if(mIt == last) | 836 | if(mIt == last) |
838 | { | 837 | { |
839 | mIt = param_mgr->mParamList.begin(); | 838 | mIt = param_mgr->mParamList.begin(); |
840 | } | 839 | } |
@@ -853,11 +852,11 @@ void LLFloaterWater::onClickPrev(void* user_data) | |||
853 | LLWaterParamSet & currentParams = param_mgr->mCurParams; | 852 | LLWaterParamSet & currentParams = param_mgr->mCurParams; |
854 | 853 | ||
855 | // find place of current param | 854 | // find place of current param |
856 | std::map<std::string, LLWaterParamSet>::iterator mIt = | 855 | std::map<std::string, LLWaterParamSet>::iterator mIt = |
857 | param_mgr->mParamList.find(currentParams.mName); | 856 | param_mgr->mParamList.find(currentParams.mName); |
858 | 857 | ||
859 | // if at the beginning, loop | 858 | // if at the beginning, loop |
860 | if(mIt == param_mgr->mParamList.begin()) | 859 | if(mIt == param_mgr->mParamList.begin()) |
861 | { | 860 | { |
862 | std::map<std::string, LLWaterParamSet>::iterator last = param_mgr->mParamList.end(); --last; | 861 | std::map<std::string, LLWaterParamSet>::iterator last = param_mgr->mParamList.end(); --last; |
863 | mIt = last; | 862 | mIt = last; |
diff --git a/linden/indra/newview/llfloaterwindlight.cpp b/linden/indra/newview/llfloaterwindlight.cpp index 4937232..52d6e14 100644 --- a/linden/indra/newview/llfloaterwindlight.cpp +++ b/linden/indra/newview/llfloaterwindlight.cpp | |||
@@ -873,7 +873,7 @@ void LLFloaterWindLight::onSavePreset(LLUICtrl* ctrl, void* userData) | |||
873 | { | 873 | { |
874 | // Make sure we have a ".wl" extension. | 874 | // Make sure we have a ".wl" extension. |
875 | std::string name = comboBox->getSelectedItemLabel(); | 875 | std::string name = comboBox->getSelectedItemLabel(); |
876 | if(name.length() > 2 && name.compare(name.length() - 3, 3, ".wl") != 0) | 876 | if(!LLWLParamManager::isSkySettingsNotecard(name)) |
877 | { | 877 | { |
878 | name += ".wl"; | 878 | name += ".wl"; |
879 | } | 879 | } |
@@ -973,14 +973,12 @@ bool LLFloaterWindLight::deleteAlertCallback(const LLSD& notification, const LLS | |||
973 | "WLPresetsCombo"); | 973 | "WLPresetsCombo"); |
974 | LLFloaterDayCycle* day_cycle = NULL; | 974 | LLFloaterDayCycle* day_cycle = NULL; |
975 | LLComboBox* key_combo = NULL; | 975 | LLComboBox* key_combo = NULL; |
976 | LLMultiSliderCtrl* mult_sldr = NULL; | ||
977 | 976 | ||
978 | if(LLFloaterDayCycle::isOpen()) | 977 | if(LLFloaterDayCycle::isOpen()) |
979 | { | 978 | { |
980 | day_cycle = LLFloaterDayCycle::instance(); | 979 | day_cycle = LLFloaterDayCycle::instance(); |
981 | key_combo = day_cycle->getChild<LLComboBox>( | 980 | key_combo = day_cycle->getChild<LLComboBox>( |
982 | "WLKeyPresets"); | 981 | "WLKeyPresets"); |
983 | mult_sldr = day_cycle->getChild<LLMultiSliderCtrl>("WLDayCycleKeys"); | ||
984 | } | 982 | } |
985 | 983 | ||
986 | std::string name(combo_box->getSelectedValue().asString()); | 984 | std::string name(combo_box->getSelectedValue().asString()); |
diff --git a/linden/indra/newview/llfolderview.cpp b/linden/indra/newview/llfolderview.cpp index ce2b2b4..489a5d5 100644 --- a/linden/indra/newview/llfolderview.cpp +++ b/linden/indra/newview/llfolderview.cpp | |||
@@ -3767,12 +3767,6 @@ BOOL LLFolderView::handleKeyHere( KEY key, MASK mask ) | |||
3767 | LLMenuGL::sMenuContainer->hideMenus(); | 3767 | LLMenuGL::sMenuContainer->hideMenus(); |
3768 | } | 3768 | } |
3769 | 3769 | ||
3770 | LLView *item = NULL; | ||
3771 | if (getChildCount() > 0) | ||
3772 | { | ||
3773 | item = *(getChildList()->begin()); | ||
3774 | } | ||
3775 | |||
3776 | switch( key ) | 3770 | switch( key ) |
3777 | { | 3771 | { |
3778 | case KEY_F2: | 3772 | case KEY_F2: |
diff --git a/linden/indra/newview/llgesturemgr.cpp b/linden/indra/newview/llgesturemgr.cpp index 2258bc1..f806ccc 100644 --- a/linden/indra/newview/llgesturemgr.cpp +++ b/linden/indra/newview/llgesturemgr.cpp | |||
@@ -565,7 +565,7 @@ BOOL LLGestureManager::triggerAndReviseString(const std::string &utf8str, std::s | |||
565 | } | 565 | } |
566 | } | 566 | } |
567 | } | 567 | } |
568 | 568 | ||
569 | if(!gesture) | 569 | if(!gesture) |
570 | { | 570 | { |
571 | // This token doesn't match a gesture. Pass it through to the output. | 571 | // This token doesn't match a gesture. Pass it through to the output. |
diff --git a/linden/indra/newview/llhoverview.cpp b/linden/indra/newview/llhoverview.cpp index b4faf25..12479c1 100644 --- a/linden/indra/newview/llhoverview.cpp +++ b/linden/indra/newview/llhoverview.cpp | |||
@@ -546,14 +546,15 @@ void LLHoverView::updateText() | |||
546 | 546 | ||
547 | LLParcel* hover_parcel = LLViewerParcelMgr::getInstance()->getHoverParcel(); | 547 | LLParcel* hover_parcel = LLViewerParcelMgr::getInstance()->getHoverParcel(); |
548 | LLUUID owner; | 548 | LLUUID owner; |
549 | S32 width = 0; | 549 | // Their use is commented out below. No doubt both will get deleted on a later clean up pass. |
550 | S32 height = 0; | 550 | //S32 width = 0; |
551 | //S32 height = 0; | ||
551 | 552 | ||
552 | if ( hover_parcel ) | 553 | if ( hover_parcel ) |
553 | { | 554 | { |
554 | owner = hover_parcel->getOwnerID(); | 555 | owner = hover_parcel->getOwnerID(); |
555 | width = S32(LLViewerParcelMgr::getInstance()->getHoverParcelWidth()); | 556 | // width = S32(LLViewerParcelMgr::getInstance()->getHoverParcelWidth()); |
556 | height = S32(LLViewerParcelMgr::getInstance()->getHoverParcelHeight()); | 557 | // height = S32(LLViewerParcelMgr::getInstance()->getHoverParcelHeight()); |
557 | } | 558 | } |
558 | 559 | ||
559 | // Line: "Land" | 560 | // Line: "Land" |
diff --git a/linden/indra/newview/llinventorybridge.cpp b/linden/indra/newview/llinventorybridge.cpp index eb2170a..6e6b39c 100644 --- a/linden/indra/newview/llinventorybridge.cpp +++ b/linden/indra/newview/llinventorybridge.cpp | |||
@@ -1439,7 +1439,6 @@ BOOL move_inv_category_world_to_agent(const LLUUID& object_id, | |||
1439 | if(drop && accept) | 1439 | if(drop && accept) |
1440 | { | 1440 | { |
1441 | it = inventory_objects.begin(); | 1441 | it = inventory_objects.begin(); |
1442 | InventoryObjectList::iterator first_it = inventory_objects.begin(); | ||
1443 | LLMoveInv* move_inv = new LLMoveInv; | 1442 | LLMoveInv* move_inv = new LLMoveInv; |
1444 | move_inv->mObjectID = object_id; | 1443 | move_inv->mObjectID = object_id; |
1445 | move_inv->mCategoryID = category_id; | 1444 | move_inv->mCategoryID = category_id; |
@@ -1922,24 +1921,11 @@ void LLFolderBridge::pasteFromClipboard() | |||
1922 | item = model->getItem(objects.get(i)); | 1921 | item = model->getItem(objects.get(i)); |
1923 | if (item) | 1922 | if (item) |
1924 | { | 1923 | { |
1925 | copy_inventory_item( | 1924 | LLInvFVBridge::changeItemParent( |
1926 | gAgent.getID(), | 1925 | model, |
1927 | item->getPermissions().getOwner(), | 1926 | (LLViewerInventoryItem*)item, |
1928 | item->getUUID(), | 1927 | mUUID, |
1929 | parent_id, | 1928 | FALSE); |
1930 | std::string(), | ||
1931 | LLPointer<LLInventoryCallback>(NULL)); | ||
1932 | LLInventoryCategory* cat = model->getCategory(item->getUUID()); | ||
1933 | if(cat) | ||
1934 | { | ||
1935 | model->purgeDescendentsOf(mUUID); | ||
1936 | } | ||
1937 | LLInventoryObject* obj = model->getObject(item->getUUID()); | ||
1938 | if(!obj) return; | ||
1939 | obj->removeFromServer(); | ||
1940 | LLPreview::hide(item->getUUID()); | ||
1941 | model->deleteObject(item->getUUID()); | ||
1942 | model->notifyObservers(); | ||
1943 | } | 1929 | } |
1944 | } | 1930 | } |
1945 | } | 1931 | } |
@@ -3123,11 +3109,11 @@ void LLNotecardBridge::openItem() | |||
3123 | LLViewerInventoryItem* item = getItem(); | 3109 | LLViewerInventoryItem* item = getItem(); |
3124 | if (item) | 3110 | if (item) |
3125 | { | 3111 | { |
3126 | if(isSkySetting()) | 3112 | if(LLWLParamManager::isSkySettingsNotecard(getName())) |
3127 | { | 3113 | { |
3128 | LLWLParamManager::instance()->loadPresetNotecard(item->getName(), item->getAssetUUID(), mUUID); | 3114 | LLWLParamManager::instance()->loadPresetNotecard(item->getName(), item->getAssetUUID(), mUUID); |
3129 | } | 3115 | } |
3130 | else if(isWaterSetting()) | 3116 | else if(LLWLParamManager::isWaterSettingsNotecard(getName())) |
3131 | { | 3117 | { |
3132 | LLWaterParamManager::instance()->loadPresetNotecard(item->getName(), item->getAssetUUID(), mUUID); | 3118 | LLWaterParamManager::instance()->loadPresetNotecard(item->getName(), item->getAssetUUID(), mUUID); |
3133 | } | 3119 | } |
@@ -3158,13 +3144,13 @@ void LLNotecardBridge::buildContextMenu(LLMenuGL& menu, U32 flags) | |||
3158 | else | 3144 | else |
3159 | { | 3145 | { |
3160 | 3146 | ||
3161 | if(isWindLight()) | 3147 | if(LLWLParamManager::isSettingsNotecard(getName())) |
3162 | { | 3148 | { |
3163 | if(isSkySetting()) | 3149 | if(LLWLParamManager::isSkySettingsNotecard(getName())) |
3164 | { | 3150 | { |
3165 | items.push_back(std::string("Use WindLight Settings")); | 3151 | items.push_back(std::string("Use WindLight Settings")); |
3166 | } | 3152 | } |
3167 | else if(isWaterSetting()) | 3153 | else if(LLWLParamManager::isWaterSettingsNotecard(getName())) |
3168 | { | 3154 | { |
3169 | items.push_back(std::string("Use WaterLight Settings")); | 3155 | items.push_back(std::string("Use WaterLight Settings")); |
3170 | } | 3156 | } |
@@ -3221,11 +3207,11 @@ void LLNotecardBridge::performAction(LLFolderView* folder, LLInventoryModel* mod | |||
3221 | 3207 | ||
3222 | LLUIImagePtr LLNotecardBridge::getIcon() const | 3208 | LLUIImagePtr LLNotecardBridge::getIcon() const |
3223 | { | 3209 | { |
3224 | if(isSkySetting()) | 3210 | if(LLWLParamManager::isSkySettingsNotecard(getName())) |
3225 | { | 3211 | { |
3226 | return LLUI::getUIImage("Inv_WindLight"); | 3212 | return LLUI::getUIImage("Inv_WindLight"); |
3227 | } | 3213 | } |
3228 | else if(isWaterSetting()) | 3214 | else if(LLWLParamManager::isWaterSettingsNotecard(getName())) |
3229 | { | 3215 | { |
3230 | return LLUI::getUIImage("Inv_WaterLight"); | 3216 | return LLUI::getUIImage("Inv_WaterLight"); |
3231 | } | 3217 | } |
@@ -3235,20 +3221,6 @@ LLUIImagePtr LLNotecardBridge::getIcon() const | |||
3235 | } | 3221 | } |
3236 | } | 3222 | } |
3237 | 3223 | ||
3238 | bool LLNotecardBridge::isSkySetting() const | ||
3239 | { | ||
3240 | return (getName().length() > 2 && getName().compare(getName().length() - 3, 3, ".wl") == 0); | ||
3241 | } | ||
3242 | |||
3243 | bool LLNotecardBridge::isWaterSetting() const | ||
3244 | { | ||
3245 | return (getName().length() > 2 && getName().compare(getName().length() - 3, 3, ".ww") == 0); | ||
3246 | } | ||
3247 | |||
3248 | bool LLNotecardBridge::isWindLight() const | ||
3249 | { | ||
3250 | return (isSkySetting() || isWaterSetting()); | ||
3251 | } | ||
3252 | 3224 | ||
3253 | // +=================================================+ | 3225 | // +=================================================+ |
3254 | // | LLGestureBridge | | 3226 | // | LLGestureBridge | |
diff --git a/linden/indra/newview/llinventorybridge.h b/linden/indra/newview/llinventorybridge.h index 5a53aa5..0318e6c 100644 --- a/linden/indra/newview/llinventorybridge.h +++ b/linden/indra/newview/llinventorybridge.h | |||
@@ -511,9 +511,6 @@ public: | |||
511 | virtual const std::string& getPrefix() { return sPrefix; } | 511 | virtual const std::string& getPrefix() { return sPrefix; } |
512 | 512 | ||
513 | virtual LLUIImagePtr getIcon() const; | 513 | virtual LLUIImagePtr getIcon() const; |
514 | bool isSkySetting() const; | ||
515 | bool isWaterSetting() const; | ||
516 | bool isWindLight() const; | ||
517 | virtual void openItem(); | 514 | virtual void openItem(); |
518 | virtual void buildContextMenu(LLMenuGL& menu, U32 flags); | 515 | virtual void buildContextMenu(LLMenuGL& menu, U32 flags); |
519 | virtual void performAction(LLFolderView* folder, LLInventoryModel* model, std::string action); | 516 | virtual void performAction(LLFolderView* folder, LLInventoryModel* model, std::string action); |
diff --git a/linden/indra/newview/llinventorymodel.cpp b/linden/indra/newview/llinventorymodel.cpp index 3f74965..8b98782 100644 --- a/linden/indra/newview/llinventorymodel.cpp +++ b/linden/indra/newview/llinventorymodel.cpp | |||
@@ -455,8 +455,6 @@ LLUUID LLInventoryModel::createNewCategory(const LLUUID& parent_id, | |||
455 | void (*callback)(const LLSD&, void*), | 455 | void (*callback)(const LLSD&, void*), |
456 | void* user_data) | 456 | void* user_data) |
457 | { | 457 | { |
458 | llassert_always(NULL != callback); | ||
459 | |||
460 | LLUUID id; | 458 | LLUUID id; |
461 | 459 | ||
462 | if(!isInventoryUsable()) | 460 | if(!isInventoryUsable()) |
@@ -464,7 +462,8 @@ LLUUID LLInventoryModel::createNewCategory(const LLUUID& parent_id, | |||
464 | llwarns << "Inventory is broken." << llendl; | 462 | llwarns << "Inventory is broken." << llendl; |
465 | LLSD result; | 463 | LLSD result; |
466 | result["failure"] = true; | 464 | result["failure"] = true; |
467 | callback(result, user_data); | 465 | if (callback) |
466 | callback(result, user_data); | ||
468 | } | 467 | } |
469 | 468 | ||
470 | 469 | ||
@@ -473,7 +472,8 @@ LLUUID LLInventoryModel::createNewCategory(const LLUUID& parent_id, | |||
473 | LL_DEBUGS("Inventory") << "Attempt to create simstate category." << LL_ENDL; | 472 | LL_DEBUGS("Inventory") << "Attempt to create simstate category." << LL_ENDL; |
474 | LLSD result; | 473 | LLSD result; |
475 | result["failure"] = true; | 474 | result["failure"] = true; |
476 | callback(result, user_data); | 475 | if (callback) |
476 | callback(result, user_data); | ||
477 | } | 477 | } |
478 | 478 | ||
479 | id.generate(); | 479 | id.generate(); |
@@ -492,10 +492,8 @@ LLUUID LLInventoryModel::createNewCategory(const LLUUID& parent_id, | |||
492 | name.assign(NEW_CATEGORY_NAME); | 492 | name.assign(NEW_CATEGORY_NAME); |
493 | } | 493 | } |
494 | 494 | ||
495 | if (user_data) // callback required for acked message. | 495 | if ((NULL != callback) && (NULL != user_data)) // callback required for acked message. |
496 | { | 496 | { |
497 | |||
498 | |||
499 | LLViewerRegion* viewer_region = gAgent.getRegion(); | 497 | LLViewerRegion* viewer_region = gAgent.getRegion(); |
500 | 498 | ||
501 | if (!viewer_region->capabilitiesReceived()) | 499 | if (!viewer_region->capabilitiesReceived()) |
@@ -537,7 +535,10 @@ LLUUID LLInventoryModel::createNewCategory(const LLUUID& parent_id, | |||
537 | { | 535 | { |
538 | // user_data is a LLCategoryCreate object instantiated in the calling | 536 | // user_data is a LLCategoryCreate object instantiated in the calling |
539 | // function - bug (or low memory - any leaks?). | 537 | // function - bug (or low memory - any leaks?). |
540 | llwarns << "NULL user_data" << llendl; | 538 | // Or, it might just be no problem, since passing the callback in the first place is optional. |
539 | // It's really up to the calling function to know what it passed to pass back to the callback. | ||
540 | if (callback) | ||
541 | llwarns << "NULL user_data" << llendl; | ||
541 | } | 542 | } |
542 | 543 | ||
543 | // Add the category to the internal representation | 544 | // Add the category to the internal representation |
@@ -1211,7 +1212,6 @@ void LLInventoryModel::fetchInventoryResponder::result(const LLSD& content) | |||
1211 | item_array_t items; | 1212 | item_array_t items; |
1212 | update_map_t update; | 1213 | update_map_t update; |
1213 | S32 count = content["items"].size(); | 1214 | S32 count = content["items"].size(); |
1214 | bool all_one_folder = true; | ||
1215 | LLUUID folder_id; | 1215 | LLUUID folder_id; |
1216 | // Does this loop ever execute more than once? | 1216 | // Does this loop ever execute more than once? |
1217 | for(S32 i = 0; i < count; ++i) | 1217 | for(S32 i = 0; i < count; ++i) |
@@ -1244,10 +1244,6 @@ void LLInventoryModel::fetchInventoryResponder::result(const LLSD& content) | |||
1244 | { | 1244 | { |
1245 | folder_id = titem->getParentUUID(); | 1245 | folder_id = titem->getParentUUID(); |
1246 | } | 1246 | } |
1247 | else | ||
1248 | { | ||
1249 | all_one_folder = false; | ||
1250 | } | ||
1251 | } | 1247 | } |
1252 | 1248 | ||
1253 | U32 changes = 0x0; | 1249 | U32 changes = 0x0; |
@@ -2960,7 +2956,6 @@ bool LLInventoryModel::messageUpdateCore(LLMessageSystem* msg, bool account) | |||
2960 | item_array_t items; | 2956 | item_array_t items; |
2961 | update_map_t update; | 2957 | update_map_t update; |
2962 | S32 count = msg->getNumberOfBlocksFast(_PREHASH_InventoryData); | 2958 | S32 count = msg->getNumberOfBlocksFast(_PREHASH_InventoryData); |
2963 | bool all_one_folder = true; | ||
2964 | LLUUID folder_id; | 2959 | LLUUID folder_id; |
2965 | // Does this loop ever execute more than once? | 2960 | // Does this loop ever execute more than once? |
2966 | for(S32 i = 0; i < count; ++i) | 2961 | for(S32 i = 0; i < count; ++i) |
@@ -2992,10 +2987,6 @@ bool LLInventoryModel::messageUpdateCore(LLMessageSystem* msg, bool account) | |||
2992 | { | 2987 | { |
2993 | folder_id = titem->getParentUUID(); | 2988 | folder_id = titem->getParentUUID(); |
2994 | } | 2989 | } |
2995 | else | ||
2996 | { | ||
2997 | all_one_folder = false; | ||
2998 | } | ||
2999 | } | 2990 | } |
3000 | if(account) | 2991 | if(account) |
3001 | { | 2992 | { |
diff --git a/linden/indra/newview/llmaniprotate.cpp b/linden/indra/newview/llmaniprotate.cpp index 77c8bd5..fa5ab56 100644 --- a/linden/indra/newview/llmaniprotate.cpp +++ b/linden/indra/newview/llmaniprotate.cpp | |||
@@ -1652,7 +1652,6 @@ void LLManipRotate::highlightManipulators( S32 x, S32 y ) | |||
1652 | return; | 1652 | return; |
1653 | } | 1653 | } |
1654 | 1654 | ||
1655 | LLQuaternion object_rot = first_object->getRenderRotation(); | ||
1656 | LLVector3 rotation_center = gAgent.getPosAgentFromGlobal(mRotationCenter); | 1655 | LLVector3 rotation_center = gAgent.getPosAgentFromGlobal(mRotationCenter); |
1657 | LLVector3 mouse_dir_x; | 1656 | LLVector3 mouse_dir_x; |
1658 | LLVector3 mouse_dir_y; | 1657 | LLVector3 mouse_dir_y; |
diff --git a/linden/indra/newview/llmanipscale.cpp b/linden/indra/newview/llmanipscale.cpp index fe6bc26..f69dca4 100644 --- a/linden/indra/newview/llmanipscale.cpp +++ b/linden/indra/newview/llmanipscale.cpp | |||
@@ -1172,9 +1172,6 @@ void LLManipScale::dragFace( S32 x, S32 y ) | |||
1172 | mInSnapRegime = FALSE; | 1172 | mInSnapRegime = FALSE; |
1173 | } | 1173 | } |
1174 | 1174 | ||
1175 | BOOL send_scale_update = FALSE; | ||
1176 | BOOL send_position_update = FALSE; | ||
1177 | |||
1178 | LLVector3 dir_agent; | 1175 | LLVector3 dir_agent; |
1179 | if( part_dir_local.mV[VX] ) | 1176 | if( part_dir_local.mV[VX] ) |
1180 | { | 1177 | { |
@@ -1191,8 +1188,6 @@ void LLManipScale::dragFace( S32 x, S32 y ) | |||
1191 | stretchFace( | 1188 | stretchFace( |
1192 | projected_vec(drag_start_dir_f, dir_agent) + drag_start_center_agent, | 1189 | projected_vec(drag_start_dir_f, dir_agent) + drag_start_center_agent, |
1193 | projected_vec(drag_delta, dir_agent)); | 1190 | projected_vec(drag_delta, dir_agent)); |
1194 | send_position_update = TRUE; | ||
1195 | send_scale_update = TRUE; | ||
1196 | 1191 | ||
1197 | mDragPointGlobal = drag_point_global; | 1192 | mDragPointGlobal = drag_point_global; |
1198 | } | 1193 | } |
diff --git a/linden/indra/newview/llmaniptranslate.cpp b/linden/indra/newview/llmaniptranslate.cpp index 7a7233e..b79c1a9 100644 --- a/linden/indra/newview/llmaniptranslate.cpp +++ b/linden/indra/newview/llmaniptranslate.cpp | |||
@@ -487,9 +487,6 @@ BOOL LLManipTranslate::handleHover(S32 x, S32 y, MASK mask) | |||
487 | } | 487 | } |
488 | } | 488 | } |
489 | 489 | ||
490 | // Throttle updates to 10 per second. | ||
491 | BOOL send_update = FALSE; | ||
492 | |||
493 | LLVector3 axis_f; | 490 | LLVector3 axis_f; |
494 | LLVector3d axis_d; | 491 | LLVector3d axis_d; |
495 | 492 | ||
@@ -701,10 +698,7 @@ BOOL LLManipTranslate::handleHover(S32 x, S32 y, MASK mask) | |||
701 | LLVector3 new_position_local = selectNode->mSavedPositionLocal + (clamped_relative_move_f * objWorldRotation); | 698 | LLVector3 new_position_local = selectNode->mSavedPositionLocal + (clamped_relative_move_f * objWorldRotation); |
702 | 699 | ||
703 | // move and clamp root object first, before adjusting children | 700 | // move and clamp root object first, before adjusting children |
704 | if (new_position_local != old_position_local) | 701 | |
705 | { | ||
706 | send_update = TRUE; | ||
707 | } | ||
708 | //RN: I forget, but we need to do this because of snapping which doesn't often result | 702 | //RN: I forget, but we need to do this because of snapping which doesn't often result |
709 | // in position changes even when the mouse moves | 703 | // in position changes even when the mouse moves |
710 | object->setPosition(new_position_local); | 704 | object->setPosition(new_position_local); |
@@ -714,8 +708,6 @@ BOOL LLManipTranslate::handleHover(S32 x, S32 y, MASK mask) | |||
714 | 708 | ||
715 | if (selectNode->mIndividualSelection) | 709 | if (selectNode->mIndividualSelection) |
716 | { | 710 | { |
717 | send_update = FALSE; | ||
718 | |||
719 | // counter-translate child objects if we are moving the root as an individual | 711 | // counter-translate child objects if we are moving the root as an individual |
720 | object->resetChildrenPosition(old_position_local - new_position_local, TRUE) ; | 712 | object->resetChildrenPosition(old_position_local - new_position_local, TRUE) ; |
721 | } | 713 | } |
@@ -752,7 +744,6 @@ BOOL LLManipTranslate::handleHover(S32 x, S32 y, MASK mask) | |||
752 | } | 744 | } |
753 | 745 | ||
754 | // PR: Only update if changed | 746 | // PR: Only update if changed |
755 | LLVector3d old_position_global = object->getPositionGlobal(); | ||
756 | LLVector3 old_position_agent = object->getPositionAgent(); | 747 | LLVector3 old_position_agent = object->getPositionAgent(); |
757 | LLVector3 new_position_agent = gAgent.getPosAgentFromGlobal(new_position_global); | 748 | LLVector3 new_position_agent = gAgent.getPosAgentFromGlobal(new_position_global); |
758 | if (object->isRootEdit()) | 749 | if (object->isRootEdit()) |
@@ -774,11 +765,6 @@ BOOL LLManipTranslate::handleHover(S32 x, S32 y, MASK mask) | |||
774 | { | 765 | { |
775 | // counter-translate child objects if we are moving the root as an individual | 766 | // counter-translate child objects if we are moving the root as an individual |
776 | object->resetChildrenPosition(old_position_agent - new_position_agent, TRUE) ; | 767 | object->resetChildrenPosition(old_position_agent - new_position_agent, TRUE) ; |
777 | send_update = FALSE; | ||
778 | } | ||
779 | else if (old_position_global != new_position_global) | ||
780 | { | ||
781 | send_update = TRUE; | ||
782 | } | 768 | } |
783 | } | 769 | } |
784 | selectNode->mLastPositionLocal = object->getPosition(); | 770 | selectNode->mLastPositionLocal = object->getPosition(); |
@@ -1302,7 +1288,7 @@ void LLManipTranslate::renderSnapGuides() | |||
1302 | // add in off-axis offset | 1288 | // add in off-axis offset |
1303 | tick_start += (mSnapOffsetAxis * mSnapOffsetMeters); | 1289 | tick_start += (mSnapOffsetAxis * mSnapOffsetMeters); |
1304 | 1290 | ||
1305 | BOOL is_sub_tick = FALSE; | 1291 | // BOOL is_sub_tick = FALSE; |
1306 | F32 tick_scale = 1.f; | 1292 | F32 tick_scale = 1.f; |
1307 | for (F32 division_level = max_subdivisions; division_level >= sGridMinSubdivisionLevel; division_level /= 2.f) | 1293 | for (F32 division_level = max_subdivisions; division_level >= sGridMinSubdivisionLevel; division_level /= 2.f) |
1308 | { | 1294 | { |
@@ -1311,7 +1297,7 @@ void LLManipTranslate::renderSnapGuides() | |||
1311 | break; | 1297 | break; |
1312 | } | 1298 | } |
1313 | tick_scale *= 0.7f; | 1299 | tick_scale *= 0.7f; |
1314 | is_sub_tick = TRUE; | 1300 | // is_sub_tick = TRUE; |
1315 | } | 1301 | } |
1316 | 1302 | ||
1317 | // S32 num_ticks_to_fade = is_sub_tick ? num_ticks_per_side / 2 : num_ticks_per_side; | 1303 | // S32 num_ticks_to_fade = is_sub_tick ? num_ticks_per_side / 2 : num_ticks_per_side; |
@@ -1533,7 +1519,6 @@ void LLManipTranslate::renderSnapGuides() | |||
1533 | 1519 | ||
1534 | float a = line_alpha; | 1520 | float a = line_alpha; |
1535 | 1521 | ||
1536 | LLColor4 col = gColors.getColor("SilhouetteChildColor"); | ||
1537 | { | 1522 | { |
1538 | //draw grid behind objects | 1523 | //draw grid behind objects |
1539 | LLGLDepthTest gls_depth(GL_TRUE, GL_FALSE); | 1524 | LLGLDepthTest gls_depth(GL_TRUE, GL_FALSE); |
diff --git a/linden/indra/newview/llmediadataclient.cpp b/linden/indra/newview/llmediadataclient.cpp new file mode 100644 index 0000000..e2fa700 --- /dev/null +++ b/linden/indra/newview/llmediadataclient.cpp | |||
@@ -0,0 +1,813 @@ | |||
1 | /** | ||
2 | * @file llmediadataclient.cpp | ||
3 | * @brief class for queueing up requests for media data | ||
4 | * | ||
5 | * $LicenseInfo:firstyear=2001&license=viewergpl$ | ||
6 | * | ||
7 | * Copyright (c) 2001-2010, Linden Research, Inc. | ||
8 | * | ||
9 | * Second Life Viewer Source Code | ||
10 | * The source code in this file ("Source Code") is provided by Linden Lab | ||
11 | * to you under the terms of the GNU General Public License, version 2.0 | ||
12 | * ("GPL"), unless you have obtained a separate licensing agreement | ||
13 | * ("Other License"), formally executed by you and Linden Lab. Terms of | ||
14 | * the GPL can be found in doc/GPL-license.txt in this distribution, or | ||
15 | * online at http://secondlife.com/developers/opensource/gplv2 | ||
16 | * | ||
17 | * There are special exceptions to the terms and conditions of the GPL as | ||
18 | * it is applied to this Source Code. View the full text of the exception | ||
19 | * in the file doc/FLOSS-exception.txt in this software distribution, or | ||
20 | * online at | ||
21 | * http://secondlife.com/developers/opensource/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 | |||
34 | #include "llviewerprecompiledheaders.h" | ||
35 | |||
36 | #include "llmediadataclient.h" | ||
37 | |||
38 | #if LL_MSVC | ||
39 | // disable boost::lexical_cast warning | ||
40 | #pragma warning (disable:4702) | ||
41 | #endif | ||
42 | |||
43 | #include <boost/lexical_cast.hpp> | ||
44 | |||
45 | #include "llhttpstatuscodes.h" | ||
46 | #include "llsdutil.h" | ||
47 | #include "llmediaentry.h" | ||
48 | #include "lltextureentry.h" | ||
49 | #include "llviewerregion.h" | ||
50 | |||
51 | // | ||
52 | // When making a request | ||
53 | // - obtain the "overall interest score" of the object. | ||
54 | // This would be the sum of the impls' interest scores. | ||
55 | // - put the request onto a queue sorted by this score | ||
56 | // (highest score at the front of the queue) | ||
57 | // - On a timer, once a second, pull off the head of the queue and send | ||
58 | // the request. | ||
59 | // - Any request that gets a 503 still goes through the retry logic | ||
60 | // | ||
61 | |||
62 | // | ||
63 | // Forward decls | ||
64 | // | ||
65 | const F32 LLMediaDataClient::QUEUE_TIMER_DELAY = 1.0; // seconds(s) | ||
66 | const F32 LLMediaDataClient::UNAVAILABLE_RETRY_TIMER_DELAY = 10.0; // secs | ||
67 | const U32 LLMediaDataClient::MAX_RETRIES = 10; | ||
68 | const U32 LLMediaDataClient::MAX_SORTED_QUEUE_SIZE = 10000; | ||
69 | const U32 LLMediaDataClient::MAX_ROUND_ROBIN_QUEUE_SIZE = 10000; | ||
70 | |||
71 | // << operators | ||
72 | std::ostream& operator<<(std::ostream &s, const LLMediaDataClient::request_queue_t &q); | ||
73 | std::ostream& operator<<(std::ostream &s, const LLMediaDataClient::Request &q); | ||
74 | |||
75 | ////////////////////////////////////////////////////////////////////////////////////// | ||
76 | // | ||
77 | // LLMediaDataClient | ||
78 | // | ||
79 | ////////////////////////////////////////////////////////////////////////////////////// | ||
80 | |||
81 | LLMediaDataClient::LLMediaDataClient(F32 queue_timer_delay, | ||
82 | F32 retry_timer_delay, | ||
83 | U32 max_retries, | ||
84 | U32 max_sorted_queue_size, | ||
85 | U32 max_round_robin_queue_size) | ||
86 | : mQueueTimerDelay(queue_timer_delay), | ||
87 | mRetryTimerDelay(retry_timer_delay), | ||
88 | mMaxNumRetries(max_retries), | ||
89 | mMaxSortedQueueSize(max_sorted_queue_size), | ||
90 | mMaxRoundRobinQueueSize(max_round_robin_queue_size), | ||
91 | mQueueTimerIsRunning(false), | ||
92 | mCurrentQueueIsTheSortedQueue(true) | ||
93 | { | ||
94 | } | ||
95 | |||
96 | LLMediaDataClient::~LLMediaDataClient() | ||
97 | { | ||
98 | stopQueueTimer(); | ||
99 | |||
100 | // This should clear the queue, and hopefully call all the destructors. | ||
101 | LL_DEBUGS("LLMediaDataClient") << "~LLMediaDataClient destructor: queue: " << | ||
102 | (isEmpty() ? "<empty> " : "<not empty> ") << LL_ENDL; | ||
103 | |||
104 | mSortedQueue.clear(); | ||
105 | mRoundRobinQueue.clear(); | ||
106 | } | ||
107 | |||
108 | bool LLMediaDataClient::isEmpty() const | ||
109 | { | ||
110 | return mSortedQueue.empty() && mRoundRobinQueue.empty(); | ||
111 | } | ||
112 | |||
113 | bool LLMediaDataClient::isInQueue(const LLMediaDataClientObject::ptr_t &object) | ||
114 | { | ||
115 | return (LLMediaDataClient::findOrRemove(mSortedQueue, object, false/*remove*/, LLMediaDataClient::Request::ANY).notNull() | ||
116 | || (LLMediaDataClient::findOrRemove(mRoundRobinQueue, object, false/*remove*/, LLMediaDataClient::Request::ANY).notNull())); | ||
117 | } | ||
118 | |||
119 | bool LLMediaDataClient::removeFromQueue(const LLMediaDataClientObject::ptr_t &object) | ||
120 | { | ||
121 | bool removedFromSortedQueue = LLMediaDataClient::findOrRemove(mSortedQueue, object, true/*remove*/, LLMediaDataClient::Request::ANY).notNull(); | ||
122 | bool removedFromRoundRobinQueue = LLMediaDataClient::findOrRemove(mRoundRobinQueue, object, true/*remove*/, LLMediaDataClient::Request::ANY).notNull(); | ||
123 | return removedFromSortedQueue || removedFromRoundRobinQueue; | ||
124 | } | ||
125 | |||
126 | //static | ||
127 | LLMediaDataClient::request_ptr_t LLMediaDataClient::findOrRemove(request_queue_t &queue, const LLMediaDataClientObject::ptr_t &obj, bool remove, LLMediaDataClient::Request::Type type) | ||
128 | { | ||
129 | request_ptr_t result; | ||
130 | request_queue_t::iterator iter = queue.begin(); | ||
131 | request_queue_t::iterator end = queue.end(); | ||
132 | while (iter != end) | ||
133 | { | ||
134 | if (obj->getID() == (*iter)->getObject()->getID() && (type == LLMediaDataClient::Request::ANY || type == (*iter)->getType())) | ||
135 | { | ||
136 | result = *iter; | ||
137 | if (remove) queue.erase(iter); | ||
138 | break; | ||
139 | } | ||
140 | iter++; | ||
141 | } | ||
142 | return result; | ||
143 | } | ||
144 | |||
145 | void LLMediaDataClient::request(const LLMediaDataClientObject::ptr_t &object, const LLSD &payload) | ||
146 | { | ||
147 | if (object.isNull() || ! object->hasMedia()) return; | ||
148 | |||
149 | // Push the object on the queue | ||
150 | enqueue(new Request(getCapabilityName(), payload, object, this)); | ||
151 | } | ||
152 | |||
153 | void LLMediaDataClient::enqueue(const Request *request) | ||
154 | { | ||
155 | if (request->isNew()) | ||
156 | { | ||
157 | // Add to sorted queue | ||
158 | if (LLMediaDataClient::findOrRemove(mSortedQueue, request->getObject(), true/*remove*/, request->getType()).notNull()) | ||
159 | { | ||
160 | LL_DEBUGS("LLMediaDataClient") << "REMOVING OLD request for " << *request << " ALREADY THERE!" << LL_ENDL; | ||
161 | } | ||
162 | |||
163 | LL_DEBUGS("LLMediaDataClient") << "Queuing SORTED request for " << *request << LL_ENDL; | ||
164 | |||
165 | // Sadly, we have to const-cast because items put into the queue are not const | ||
166 | mSortedQueue.push_back(const_cast<LLMediaDataClient::Request*>(request)); | ||
167 | |||
168 | LL_DEBUGS("LLMediaDataClientQueue") << "SORTED queue:" << mSortedQueue << LL_ENDL; | ||
169 | } | ||
170 | else { | ||
171 | if (mRoundRobinQueue.size() > mMaxRoundRobinQueueSize) | ||
172 | { | ||
173 | LL_INFOS_ONCE("LLMediaDataClient") << "RR QUEUE MAXED OUT!!!" << LL_ENDL; | ||
174 | LL_DEBUGS("LLMediaDataClient") << "Not queuing " << *request << LL_ENDL; | ||
175 | return; | ||
176 | } | ||
177 | |||
178 | // ROUND ROBIN: if it is there, and it is a GET request, leave it. If not, put at front! | ||
179 | request_ptr_t existing_request; | ||
180 | if (request->getType() == Request::GET) | ||
181 | { | ||
182 | existing_request = LLMediaDataClient::findOrRemove(mRoundRobinQueue, request->getObject(), false/*remove*/, request->getType()); | ||
183 | } | ||
184 | if (existing_request.isNull()) | ||
185 | { | ||
186 | LL_DEBUGS("LLMediaDataClient") << "Queuing RR request for " << *request << LL_ENDL; | ||
187 | // Push the request on the pending queue | ||
188 | // Sadly, we have to const-cast because items put into the queue are not const | ||
189 | mRoundRobinQueue.push_front(const_cast<LLMediaDataClient::Request*>(request)); | ||
190 | |||
191 | LL_DEBUGS("LLMediaDataClientQueue") << "RR queue:" << mRoundRobinQueue << LL_ENDL; | ||
192 | } | ||
193 | else | ||
194 | { | ||
195 | LL_DEBUGS("LLMediaDataClient") << "ALREADY THERE: NOT Queuing request for " << *request << LL_ENDL; | ||
196 | |||
197 | existing_request->markSent(false); | ||
198 | } | ||
199 | } | ||
200 | // Start the timer if not already running | ||
201 | startQueueTimer(); | ||
202 | } | ||
203 | |||
204 | void LLMediaDataClient::startQueueTimer() | ||
205 | { | ||
206 | if (! mQueueTimerIsRunning) | ||
207 | { | ||
208 | LL_DEBUGS("LLMediaDataClient") << "starting queue timer (delay=" << mQueueTimerDelay << " seconds)" << LL_ENDL; | ||
209 | // LLEventTimer automagically takes care of the lifetime of this object | ||
210 | new QueueTimer(mQueueTimerDelay, this); | ||
211 | } | ||
212 | else { | ||
213 | LL_DEBUGS("LLMediaDataClient") << "not starting queue timer (it's already running, right???)" << LL_ENDL; | ||
214 | } | ||
215 | } | ||
216 | |||
217 | void LLMediaDataClient::stopQueueTimer() | ||
218 | { | ||
219 | mQueueTimerIsRunning = false; | ||
220 | } | ||
221 | |||
222 | bool LLMediaDataClient::processQueueTimer() | ||
223 | { | ||
224 | sortQueue(); | ||
225 | |||
226 | if(!isEmpty()) | ||
227 | { | ||
228 | LL_DEBUGS("LLMediaDataClient") << "QueueTimer::tick() started, SORTED queue size is: " << mSortedQueue.size() | ||
229 | << ", RR queue size is: " << mRoundRobinQueue.size() << LL_ENDL; | ||
230 | LL_DEBUGS("LLMediaDataClientQueue") << "QueueTimer::tick() started, SORTED queue is: " << mSortedQueue << LL_ENDL; | ||
231 | LL_DEBUGS("LLMediaDataClientQueue") << "QueueTimer::tick() started, RR queue is: " << mRoundRobinQueue << LL_ENDL; | ||
232 | } | ||
233 | |||
234 | serviceQueue(); | ||
235 | |||
236 | LL_DEBUGS("LLMediaDataClient") << "QueueTimer::tick() finished, SORTED queue size is: " << mSortedQueue.size() | ||
237 | << ", RR queue size is: " << mRoundRobinQueue.size() << LL_ENDL; | ||
238 | LL_DEBUGS("LLMediaDataClientQueue") << "QueueTimer::tick() finished, SORTED queue is: " << mSortedQueue << LL_ENDL; | ||
239 | LL_DEBUGS("LLMediaDataClientQueue") << "QueueTimer::tick() finished, RR queue is: " << mRoundRobinQueue << LL_ENDL; | ||
240 | |||
241 | return isEmpty(); | ||
242 | } | ||
243 | |||
244 | void LLMediaDataClient::sortQueue() | ||
245 | { | ||
246 | if(!mSortedQueue.empty()) | ||
247 | { | ||
248 | // Score all items first | ||
249 | request_queue_t::iterator iter = mSortedQueue.begin(); | ||
250 | request_queue_t::iterator end = mSortedQueue.end(); | ||
251 | while (iter != end) | ||
252 | { | ||
253 | (*iter)->updateScore(); | ||
254 | iter++; | ||
255 | } | ||
256 | |||
257 | // Re-sort the list... | ||
258 | // NOTE: should this be a stable_sort? If so we need to change to using a vector. | ||
259 | mSortedQueue.sort(LLMediaDataClient::compareRequests); | ||
260 | |||
261 | // ...then cull items over the max | ||
262 | U32 size = mSortedQueue.size(); | ||
263 | if (size > mMaxSortedQueueSize) | ||
264 | { | ||
265 | U32 num_to_cull = (size - mMaxSortedQueueSize); | ||
266 | LL_INFOS_ONCE("LLMediaDataClient") << "sorted queue MAXED OUT! Culling " | ||
267 | << num_to_cull << " items" << LL_ENDL; | ||
268 | while (num_to_cull-- > 0) | ||
269 | { | ||
270 | mSortedQueue.pop_back(); | ||
271 | } | ||
272 | } | ||
273 | } | ||
274 | } | ||
275 | |||
276 | // static | ||
277 | bool LLMediaDataClient::compareRequests(const request_ptr_t &o1, const request_ptr_t &o2) | ||
278 | { | ||
279 | if (o2.isNull()) return true; | ||
280 | if (o1.isNull()) return false; | ||
281 | return ( o1->getScore() > o2->getScore() ); | ||
282 | } | ||
283 | |||
284 | void LLMediaDataClient::serviceQueue() | ||
285 | { | ||
286 | request_queue_t *queue_p = getCurrentQueue(); | ||
287 | |||
288 | // quick retry loop for cases where we shouldn't wait for the next timer tick | ||
289 | while(true) | ||
290 | { | ||
291 | if (queue_p->empty()) | ||
292 | { | ||
293 | LL_DEBUGS("LLMediaDataClient") << "queue empty: " << (*queue_p) << LL_ENDL; | ||
294 | break; | ||
295 | } | ||
296 | |||
297 | // Peel one off of the items from the queue, and execute request | ||
298 | request_ptr_t request = queue_p->front(); | ||
299 | llassert(!request.isNull()); | ||
300 | const LLMediaDataClientObject *object = (request.isNull()) ? NULL : request->getObject(); | ||
301 | llassert(NULL != object); | ||
302 | |||
303 | // Check for conditions that would make us just pop and rapidly loop through | ||
304 | // the queue. | ||
305 | if(request.isNull() || | ||
306 | request->isMarkedSent() || | ||
307 | NULL == object || | ||
308 | object->isDead() || | ||
309 | !object->hasMedia()) | ||
310 | { | ||
311 | if (request.isNull()) | ||
312 | { | ||
313 | LL_WARNS("LLMediaDataClient") << "Skipping NULL request" << LL_ENDL; | ||
314 | } | ||
315 | else { | ||
316 | LL_INFOS("LLMediaDataClient") << "Skipping : " << *request << " " | ||
317 | << ((request->isMarkedSent()) ? " request is marked sent" : | ||
318 | ((NULL == object) ? " object is NULL " : | ||
319 | ((object->isDead()) ? "object is dead" : | ||
320 | ((!object->hasMedia()) ? "object has no media!" : "BADNESS!")))) << LL_ENDL; | ||
321 | } | ||
322 | queue_p->pop_front(); | ||
323 | continue; // jump back to the start of the quick retry loop | ||
324 | } | ||
325 | |||
326 | // Next, ask if this is "interesting enough" to fetch. If not, just stop | ||
327 | // and wait for the next timer go-round. Only do this for the sorted | ||
328 | // queue. | ||
329 | if (mCurrentQueueIsTheSortedQueue && !object->isInterestingEnough()) | ||
330 | { | ||
331 | LL_DEBUGS("LLMediaDataClient") << "Not fetching " << *request << ": not interesting enough" << LL_ENDL; | ||
332 | break; | ||
333 | } | ||
334 | |||
335 | // Finally, try to send the HTTP message to the cap url | ||
336 | std::string url = request->getCapability(); | ||
337 | bool maybe_retry = false; | ||
338 | if (!url.empty()) | ||
339 | { | ||
340 | const LLSD &sd_payload = request->getPayload(); | ||
341 | LL_INFOS("LLMediaDataClient") << "Sending request for " << *request << LL_ENDL; | ||
342 | |||
343 | // Call the subclass for creating the responder | ||
344 | LLHTTPClient::post(url, sd_payload, createResponder(request)); | ||
345 | } | ||
346 | else { | ||
347 | LL_INFOS("LLMediaDataClient") << "NOT Sending request for " << *request << ": empty cap url!" << LL_ENDL; | ||
348 | maybe_retry = true; | ||
349 | } | ||
350 | |||
351 | bool exceeded_retries = request->getRetryCount() > mMaxNumRetries; | ||
352 | if (maybe_retry && ! exceeded_retries) // Try N times before giving up | ||
353 | { | ||
354 | // We got an empty cap, but in that case we will retry again next | ||
355 | // timer fire. | ||
356 | request->incRetryCount(); | ||
357 | } | ||
358 | else { | ||
359 | if (exceeded_retries) | ||
360 | { | ||
361 | LL_WARNS("LLMediaDataClient") << "Could not send request " << *request << " for " | ||
362 | << mMaxNumRetries << " tries...popping object id " << object->getID() << LL_ENDL; | ||
363 | // XXX Should we bring up a warning dialog?? | ||
364 | } | ||
365 | |||
366 | queue_p->pop_front(); | ||
367 | |||
368 | if (! mCurrentQueueIsTheSortedQueue) { | ||
369 | // Round robin | ||
370 | request->markSent(true); | ||
371 | mRoundRobinQueue.push_back(request); | ||
372 | } | ||
373 | } | ||
374 | |||
375 | // end of quick loop -- any cases where we want to loop will use 'continue' to jump back to the start. | ||
376 | break; | ||
377 | } | ||
378 | |||
379 | swapCurrentQueue(); | ||
380 | } | ||
381 | |||
382 | void LLMediaDataClient::swapCurrentQueue() | ||
383 | { | ||
384 | // Swap | ||
385 | mCurrentQueueIsTheSortedQueue = !mCurrentQueueIsTheSortedQueue; | ||
386 | // If its empty, swap back | ||
387 | if (getCurrentQueue()->empty()) | ||
388 | { | ||
389 | mCurrentQueueIsTheSortedQueue = !mCurrentQueueIsTheSortedQueue; | ||
390 | } | ||
391 | } | ||
392 | |||
393 | LLMediaDataClient::request_queue_t *LLMediaDataClient::getCurrentQueue() | ||
394 | { | ||
395 | return (mCurrentQueueIsTheSortedQueue) ? &mSortedQueue : &mRoundRobinQueue; | ||
396 | } | ||
397 | |||
398 | // dump the queue | ||
399 | std::ostream& operator<<(std::ostream &s, const LLMediaDataClient::request_queue_t &q) | ||
400 | { | ||
401 | int i = 0; | ||
402 | LLMediaDataClient::request_queue_t::const_iterator iter = q.begin(); | ||
403 | LLMediaDataClient::request_queue_t::const_iterator end = q.end(); | ||
404 | while (iter != end) | ||
405 | { | ||
406 | s << "\t" << i << "]: " << (*iter)->getObject()->getID().asString() << "(" << (*iter)->getObject()->getMediaInterest() << ")"; | ||
407 | iter++; | ||
408 | i++; | ||
409 | } | ||
410 | return s; | ||
411 | } | ||
412 | |||
413 | ////////////////////////////////////////////////////////////////////////////////////// | ||
414 | // | ||
415 | // LLMediaDataClient::QueueTimer | ||
416 | // Queue of LLMediaDataClientObject smart pointers to request media for. | ||
417 | // | ||
418 | ////////////////////////////////////////////////////////////////////////////////////// | ||
419 | |||
420 | LLMediaDataClient::QueueTimer::QueueTimer(F32 time, LLMediaDataClient *mdc) | ||
421 | : LLEventTimer(time), mMDC(mdc) | ||
422 | { | ||
423 | mMDC->setIsRunning(true); | ||
424 | } | ||
425 | |||
426 | LLMediaDataClient::QueueTimer::~QueueTimer() | ||
427 | { | ||
428 | LL_DEBUGS("LLMediaDataClient") << "~QueueTimer" << LL_ENDL; | ||
429 | mMDC->setIsRunning(false); | ||
430 | mMDC = NULL; | ||
431 | } | ||
432 | |||
433 | // virtual | ||
434 | BOOL LLMediaDataClient::QueueTimer::tick() | ||
435 | { | ||
436 | if (mMDC.isNull()) return TRUE; | ||
437 | return mMDC->processQueueTimer(); | ||
438 | } | ||
439 | |||
440 | |||
441 | ////////////////////////////////////////////////////////////////////////////////////// | ||
442 | // | ||
443 | // LLMediaDataClient::Responder::RetryTimer | ||
444 | // | ||
445 | ////////////////////////////////////////////////////////////////////////////////////// | ||
446 | |||
447 | LLMediaDataClient::Responder::RetryTimer::RetryTimer(F32 time, Responder *mdr) | ||
448 | : LLEventTimer(time), mResponder(mdr) | ||
449 | { | ||
450 | } | ||
451 | |||
452 | // virtual | ||
453 | LLMediaDataClient::Responder::RetryTimer::~RetryTimer() | ||
454 | { | ||
455 | LL_DEBUGS("LLMediaDataClient") << "~RetryTimer" << *(mResponder->getRequest()) << LL_ENDL; | ||
456 | |||
457 | // XXX This is weird: Instead of doing the work in tick() (which re-schedules | ||
458 | // a timer, which might be risky), do it here, in the destructor. Yes, it is very odd. | ||
459 | // Instead of retrying, we just put the request back onto the queue | ||
460 | LL_INFOS("LLMediaDataClient") << "RetryTimer fired for: " << *(mResponder->getRequest()) << " retrying" << LL_ENDL; | ||
461 | mResponder->getRequest()->reEnqueue(); | ||
462 | |||
463 | // Release the ref to the responder. | ||
464 | mResponder = NULL; | ||
465 | } | ||
466 | |||
467 | // virtual | ||
468 | BOOL LLMediaDataClient::Responder::RetryTimer::tick() | ||
469 | { | ||
470 | // Don't fire again | ||
471 | return TRUE; | ||
472 | } | ||
473 | |||
474 | |||
475 | ////////////////////////////////////////////////////////////////////////////////////// | ||
476 | // | ||
477 | // LLMediaDataClient::Request | ||
478 | // | ||
479 | ////////////////////////////////////////////////////////////////////////////////////// | ||
480 | /*static*/U32 LLMediaDataClient::Request::sNum = 0; | ||
481 | |||
482 | LLMediaDataClient::Request::Request(const char *cap_name, | ||
483 | const LLSD& sd_payload, | ||
484 | LLMediaDataClientObject *obj, | ||
485 | LLMediaDataClient *mdc) | ||
486 | : mCapName(cap_name), | ||
487 | mPayload(sd_payload), | ||
488 | mObject(obj), | ||
489 | mNum(++sNum), | ||
490 | mRetryCount(0), | ||
491 | mMDC(mdc), | ||
492 | mMarkedSent(false), | ||
493 | mScore((F64)0.0) | ||
494 | { | ||
495 | } | ||
496 | |||
497 | LLMediaDataClient::Request::~Request() | ||
498 | { | ||
499 | LL_DEBUGS("LLMediaDataClient") << "~Request" << (*this) << LL_ENDL; | ||
500 | mMDC = NULL; | ||
501 | mObject = NULL; | ||
502 | } | ||
503 | |||
504 | |||
505 | std::string LLMediaDataClient::Request::getCapability() const | ||
506 | { | ||
507 | return getObject()->getCapabilityUrl(getCapName()); | ||
508 | } | ||
509 | |||
510 | // Helper function to get the "type" of request, which just pokes around to | ||
511 | // discover it. | ||
512 | LLMediaDataClient::Request::Type LLMediaDataClient::Request::getType() const | ||
513 | { | ||
514 | if (0 == strcmp(mCapName, "ObjectMediaNavigate")) | ||
515 | { | ||
516 | return NAVIGATE; | ||
517 | } | ||
518 | else if (0 == strcmp(mCapName, "ObjectMedia")) | ||
519 | { | ||
520 | const std::string &verb = mPayload["verb"]; | ||
521 | if (verb == "GET") | ||
522 | { | ||
523 | return GET; | ||
524 | } | ||
525 | else if (verb == "UPDATE") | ||
526 | { | ||
527 | return UPDATE; | ||
528 | } | ||
529 | } | ||
530 | llassert(false); | ||
531 | return GET; | ||
532 | } | ||
533 | |||
534 | const char *LLMediaDataClient::Request::getTypeAsString() const | ||
535 | { | ||
536 | Type t = getType(); | ||
537 | switch (t) | ||
538 | { | ||
539 | case GET: | ||
540 | return "GET"; | ||
541 | break; | ||
542 | case UPDATE: | ||
543 | return "UPDATE"; | ||
544 | break; | ||
545 | case NAVIGATE: | ||
546 | return "NAVIGATE"; | ||
547 | break; | ||
548 | case ANY: | ||
549 | return "ANY"; | ||
550 | break; | ||
551 | } | ||
552 | return ""; | ||
553 | } | ||
554 | |||
555 | |||
556 | void LLMediaDataClient::Request::reEnqueue() const | ||
557 | { | ||
558 | // I sure hope this doesn't deref a bad pointer: | ||
559 | mMDC->enqueue(this); | ||
560 | } | ||
561 | |||
562 | F32 LLMediaDataClient::Request::getRetryTimerDelay() const | ||
563 | { | ||
564 | return (mMDC == NULL) ? LLMediaDataClient::UNAVAILABLE_RETRY_TIMER_DELAY : | ||
565 | mMDC->mRetryTimerDelay; | ||
566 | } | ||
567 | |||
568 | U32 LLMediaDataClient::Request::getMaxNumRetries() const | ||
569 | { | ||
570 | return (mMDC == NULL) ? LLMediaDataClient::MAX_RETRIES : mMDC->mMaxNumRetries; | ||
571 | } | ||
572 | |||
573 | void LLMediaDataClient::Request::markSent(bool flag) | ||
574 | { | ||
575 | if (mMarkedSent != flag) | ||
576 | { | ||
577 | mMarkedSent = flag; | ||
578 | if (!mMarkedSent) | ||
579 | { | ||
580 | mNum = ++sNum; | ||
581 | } | ||
582 | } | ||
583 | } | ||
584 | |||
585 | void LLMediaDataClient::Request::updateScore() | ||
586 | { | ||
587 | F64 tmp = mObject->getMediaInterest(); | ||
588 | if (tmp != mScore) | ||
589 | { | ||
590 | LL_DEBUGS("LLMediaDataClient") << "Score for " << mObject->getID() << " changed from " << mScore << " to " << tmp << LL_ENDL; | ||
591 | mScore = tmp; | ||
592 | } | ||
593 | } | ||
594 | |||
595 | std::ostream& operator<<(std::ostream &s, const LLMediaDataClient::Request &r) | ||
596 | { | ||
597 | s << "request: num=" << r.getNum() | ||
598 | << " type=" << r.getTypeAsString() | ||
599 | << " ID=" << r.getObject()->getID() | ||
600 | << " #retries=" << r.getRetryCount(); | ||
601 | return s; | ||
602 | } | ||
603 | |||
604 | |||
605 | ////////////////////////////////////////////////////////////////////////////////////// | ||
606 | // | ||
607 | // LLMediaDataClient::Responder | ||
608 | // | ||
609 | ////////////////////////////////////////////////////////////////////////////////////// | ||
610 | |||
611 | LLMediaDataClient::Responder::Responder(const request_ptr_t &request) | ||
612 | : mRequest(request) | ||
613 | { | ||
614 | } | ||
615 | |||
616 | LLMediaDataClient::Responder::~Responder() | ||
617 | { | ||
618 | LL_DEBUGS("LLMediaDataClient") << "~Responder" << *(getRequest()) << LL_ENDL; | ||
619 | mRequest = NULL; | ||
620 | } | ||
621 | |||
622 | /*virtual*/ | ||
623 | void LLMediaDataClient::Responder::error(U32 status, const std::string& reason) | ||
624 | { | ||
625 | if (status == HTTP_SERVICE_UNAVAILABLE) | ||
626 | { | ||
627 | F32 retry_timeout = mRequest->getRetryTimerDelay(); | ||
628 | |||
629 | mRequest->incRetryCount(); | ||
630 | |||
631 | if (mRequest->getRetryCount() < mRequest->getMaxNumRetries()) | ||
632 | { | ||
633 | LL_INFOS("LLMediaDataClient") << *mRequest << " got SERVICE_UNAVAILABLE...retrying in " << retry_timeout << " seconds" << LL_ENDL; | ||
634 | |||
635 | // Start timer (instances are automagically tracked by | ||
636 | // InstanceTracker<> and LLEventTimer) | ||
637 | new RetryTimer(F32(retry_timeout/*secs*/), this); | ||
638 | } | ||
639 | else { | ||
640 | LL_INFOS("LLMediaDataClient") << *mRequest << " got SERVICE_UNAVAILABLE...retry count " | ||
641 | << mRequest->getRetryCount() << " exceeds " << mRequest->getMaxNumRetries() << ", not retrying" << LL_ENDL; | ||
642 | } | ||
643 | } | ||
644 | else { | ||
645 | std::string msg = boost::lexical_cast<std::string>(status) + ": " + reason; | ||
646 | LL_WARNS("LLMediaDataClient") << *mRequest << " http error(" << msg << ")" << LL_ENDL; | ||
647 | } | ||
648 | } | ||
649 | |||
650 | /*virtual*/ | ||
651 | void LLMediaDataClient::Responder::result(const LLSD& content) | ||
652 | { | ||
653 | LL_DEBUGS("LLMediaDataClientResponse") << *mRequest << " result : " << ll_print_sd(content) << LL_ENDL; | ||
654 | } | ||
655 | |||
656 | ////////////////////////////////////////////////////////////////////////////////////// | ||
657 | // | ||
658 | // LLObjectMediaDataClient | ||
659 | // Subclass of LLMediaDataClient for the ObjectMedia cap | ||
660 | // | ||
661 | ////////////////////////////////////////////////////////////////////////////////////// | ||
662 | |||
663 | LLMediaDataClient::Responder *LLObjectMediaDataClient::createResponder(const request_ptr_t &request) const | ||
664 | { | ||
665 | return new LLObjectMediaDataClient::Responder(request); | ||
666 | } | ||
667 | |||
668 | const char *LLObjectMediaDataClient::getCapabilityName() const | ||
669 | { | ||
670 | return "ObjectMedia"; | ||
671 | } | ||
672 | |||
673 | void LLObjectMediaDataClient::fetchMedia(LLMediaDataClientObject *object) | ||
674 | { | ||
675 | LLSD sd_payload; | ||
676 | sd_payload["verb"] = "GET"; | ||
677 | sd_payload[LLTextureEntry::OBJECT_ID_KEY] = object->getID(); | ||
678 | request(object, sd_payload); | ||
679 | } | ||
680 | |||
681 | void LLObjectMediaDataClient::updateMedia(LLMediaDataClientObject *object) | ||
682 | { | ||
683 | LLSD sd_payload; | ||
684 | sd_payload["verb"] = "UPDATE"; | ||
685 | sd_payload[LLTextureEntry::OBJECT_ID_KEY] = object->getID(); | ||
686 | LLSD object_media_data; | ||
687 | int i = 0; | ||
688 | int end = object->getMediaDataCount(); | ||
689 | for ( ; i < end ; ++i) | ||
690 | { | ||
691 | object_media_data.append(object->getMediaDataLLSD(i)); | ||
692 | } | ||
693 | sd_payload[LLTextureEntry::OBJECT_MEDIA_DATA_KEY] = object_media_data; | ||
694 | |||
695 | LL_DEBUGS("LLMediaDataClient") << "update media data: " << object->getID() << " " << ll_print_sd(sd_payload) << LL_ENDL; | ||
696 | |||
697 | request(object, sd_payload); | ||
698 | } | ||
699 | |||
700 | /*virtual*/ | ||
701 | void LLObjectMediaDataClient::Responder::result(const LLSD& content) | ||
702 | { | ||
703 | const LLMediaDataClient::Request::Type type = getRequest()->getType(); | ||
704 | llassert(type == LLMediaDataClient::Request::GET || type == LLMediaDataClient::Request::UPDATE) | ||
705 | if (type == LLMediaDataClient::Request::GET) | ||
706 | { | ||
707 | LL_DEBUGS("LLMediaDataClientResponse") << *(getRequest()) << " GET returned: " << ll_print_sd(content) << LL_ENDL; | ||
708 | |||
709 | // Look for an error | ||
710 | if (content.has("error")) | ||
711 | { | ||
712 | const LLSD &error = content["error"]; | ||
713 | LL_WARNS("LLMediaDataClient") << *(getRequest()) << " Error getting media data for object: code=" << | ||
714 | error["code"].asString() << ": " << error["message"].asString() << LL_ENDL; | ||
715 | |||
716 | // XXX Warn user? | ||
717 | } | ||
718 | else { | ||
719 | // Check the data | ||
720 | const LLUUID &object_id = content[LLTextureEntry::OBJECT_ID_KEY]; | ||
721 | if (object_id != getRequest()->getObject()->getID()) | ||
722 | { | ||
723 | // NOT good, wrong object id!! | ||
724 | LL_WARNS("LLMediaDataClient") << *(getRequest()) << " DROPPING response with wrong object id (" << object_id << ")" << LL_ENDL; | ||
725 | return; | ||
726 | } | ||
727 | |||
728 | // Otherwise, update with object media data | ||
729 | getRequest()->getObject()->updateObjectMediaData(content[LLTextureEntry::OBJECT_MEDIA_DATA_KEY], | ||
730 | content[LLTextureEntry::MEDIA_VERSION_KEY]); | ||
731 | } | ||
732 | } | ||
733 | else if (type == LLMediaDataClient::Request::UPDATE) | ||
734 | { | ||
735 | // just do what our superclass does | ||
736 | LLMediaDataClient::Responder::result(content); | ||
737 | } | ||
738 | } | ||
739 | |||
740 | ////////////////////////////////////////////////////////////////////////////////////// | ||
741 | // | ||
742 | // LLObjectMediaNavigateClient | ||
743 | // Subclass of LLMediaDataClient for the ObjectMediaNavigate cap | ||
744 | // | ||
745 | ////////////////////////////////////////////////////////////////////////////////////// | ||
746 | LLMediaDataClient::Responder *LLObjectMediaNavigateClient::createResponder(const request_ptr_t &request) const | ||
747 | { | ||
748 | return new LLObjectMediaNavigateClient::Responder(request); | ||
749 | } | ||
750 | |||
751 | const char *LLObjectMediaNavigateClient::getCapabilityName() const | ||
752 | { | ||
753 | return "ObjectMediaNavigate"; | ||
754 | } | ||
755 | |||
756 | void LLObjectMediaNavigateClient::navigate(LLMediaDataClientObject *object, U8 texture_index, const std::string &url) | ||
757 | { | ||
758 | LLSD sd_payload; | ||
759 | sd_payload[LLTextureEntry::OBJECT_ID_KEY] = object->getID(); | ||
760 | sd_payload[LLMediaEntry::CURRENT_URL_KEY] = url; | ||
761 | sd_payload[LLTextureEntry::TEXTURE_INDEX_KEY] = (LLSD::Integer)texture_index; | ||
762 | |||
763 | LL_INFOS("LLMediaDataClient") << "navigate() initiated: " << ll_print_sd(sd_payload) << LL_ENDL; | ||
764 | |||
765 | request(object, sd_payload); | ||
766 | } | ||
767 | |||
768 | /*virtual*/ | ||
769 | void LLObjectMediaNavigateClient::Responder::error(U32 status, const std::string& reason) | ||
770 | { | ||
771 | // Bounce back (unless HTTP_SERVICE_UNAVAILABLE, in which case call base | ||
772 | // class | ||
773 | if (status == HTTP_SERVICE_UNAVAILABLE) | ||
774 | { | ||
775 | LLMediaDataClient::Responder::error(status, reason); | ||
776 | } | ||
777 | else { | ||
778 | // bounce the face back | ||
779 | LL_WARNS("LLMediaDataClient") << *(getRequest()) << " Error navigating: http code=" << status << LL_ENDL; | ||
780 | const LLSD &payload = getRequest()->getPayload(); | ||
781 | // bounce the face back | ||
782 | getRequest()->getObject()->mediaNavigateBounceBack((LLSD::Integer)payload[LLTextureEntry::TEXTURE_INDEX_KEY]); | ||
783 | } | ||
784 | } | ||
785 | |||
786 | /*virtual*/ | ||
787 | void LLObjectMediaNavigateClient::Responder::result(const LLSD& content) | ||
788 | { | ||
789 | LL_INFOS("LLMediaDataClient") << *(getRequest()) << " NAVIGATE returned " << ll_print_sd(content) << LL_ENDL; | ||
790 | |||
791 | if (content.has("error")) | ||
792 | { | ||
793 | const LLSD &error = content["error"]; | ||
794 | int error_code = error["code"]; | ||
795 | |||
796 | if (ERROR_PERMISSION_DENIED_CODE == error_code) | ||
797 | { | ||
798 | LL_WARNS("LLMediaDataClient") << *(getRequest()) << " Navigation denied: bounce back" << LL_ENDL; | ||
799 | const LLSD &payload = getRequest()->getPayload(); | ||
800 | // bounce the face back | ||
801 | getRequest()->getObject()->mediaNavigateBounceBack((LLSD::Integer)payload[LLTextureEntry::TEXTURE_INDEX_KEY]); | ||
802 | } | ||
803 | else { | ||
804 | LL_WARNS("LLMediaDataClient") << *(getRequest()) << " Error navigating: code=" << | ||
805 | error["code"].asString() << ": " << error["message"].asString() << LL_ENDL; | ||
806 | } | ||
807 | // XXX Warn user? | ||
808 | } | ||
809 | else { | ||
810 | // just do what our superclass does | ||
811 | LLMediaDataClient::Responder::result(content); | ||
812 | } | ||
813 | } | ||
diff --git a/linden/indra/newview/llmediadataclient.h b/linden/indra/newview/llmediadataclient.h new file mode 100644 index 0000000..0ed7c57 --- /dev/null +++ b/linden/indra/newview/llmediadataclient.h | |||
@@ -0,0 +1,341 @@ | |||
1 | /** | ||
2 | * @file llmediadataclient.h | ||
3 | * @brief class for queueing up requests to the media service | ||
4 | * | ||
5 | * $LicenseInfo:firstyear=2007&license=viewergpl$ | ||
6 | * | ||
7 | * Copyright (c) 2007-2010, Linden Research, Inc. | ||
8 | * | ||
9 | * Second Life Viewer Source Code | ||
10 | * The source code in this file ("Source Code") is provided by Linden Lab | ||
11 | * to you under the terms of the GNU General Public License, version 2.0 | ||
12 | * ("GPL"), unless you have obtained a separate licensing agreement | ||
13 | * ("Other License"), formally executed by you and Linden Lab. Terms of | ||
14 | * the GPL can be found in doc/GPL-license.txt in this distribution, or | ||
15 | * online at http://secondlife.com/developers/opensource/gplv2 | ||
16 | * | ||
17 | * There are special exceptions to the terms and conditions of the GPL as | ||
18 | * it is applied to this Source Code. View the full text of the exception | ||
19 | * in the file doc/FLOSS-exception.txt in this software distribution, or | ||
20 | * online at | ||
21 | * http://secondlife.com/developers/opensource/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 | |||
34 | #ifndef LL_LLMEDIADATACLIENT_H | ||
35 | #define LL_LLMEDIADATACLIENT_H | ||
36 | |||
37 | #include "llhttpclient.h" | ||
38 | #include <queue> | ||
39 | //#include "llrefcount.h" | ||
40 | //#include "llpointer.h" | ||
41 | //#include "lleventtimer.h" | ||
42 | |||
43 | |||
44 | // Link seam for LLVOVolume | ||
45 | class LLMediaDataClientObject : public LLRefCount | ||
46 | { | ||
47 | public: | ||
48 | // Get the number of media data items | ||
49 | virtual U8 getMediaDataCount() const = 0; | ||
50 | // Get the media data at index, as an LLSD | ||
51 | virtual LLSD getMediaDataLLSD(U8 index) const = 0; | ||
52 | // Get this object's UUID | ||
53 | virtual LLUUID getID() const = 0; | ||
54 | // Navigate back to previous URL | ||
55 | virtual void mediaNavigateBounceBack(U8 index) = 0; | ||
56 | // Does this object have media? | ||
57 | virtual bool hasMedia() const = 0; | ||
58 | // Update the object's media data to the given array | ||
59 | virtual void updateObjectMediaData(LLSD const &media_data_array, const std::string &version_string) = 0; | ||
60 | // Return the total "interest" of the media (on-screen area) | ||
61 | virtual F64 getMediaInterest() const = 0; | ||
62 | // Return the given cap url | ||
63 | virtual std::string getCapabilityUrl(const std::string &name) const = 0; | ||
64 | // Return whether the object has been marked dead | ||
65 | virtual bool isDead() const = 0; | ||
66 | // Returns a media version number for the object | ||
67 | virtual U32 getMediaVersion() const = 0; | ||
68 | // Returns whether the object is "interesting enough" to fetch | ||
69 | virtual bool isInterestingEnough() const = 0; | ||
70 | // Returns whether we've seen this object yet or not | ||
71 | virtual bool isNew() const = 0; | ||
72 | |||
73 | // smart pointer | ||
74 | typedef LLPointer<LLMediaDataClientObject> ptr_t; | ||
75 | }; | ||
76 | |||
77 | // This object creates a priority queue for requests. | ||
78 | // Abstracts the Cap URL, the request, and the responder | ||
79 | class LLMediaDataClient : public LLRefCount | ||
80 | { | ||
81 | public: | ||
82 | LOG_CLASS(LLMediaDataClient); | ||
83 | |||
84 | const static F32 QUEUE_TIMER_DELAY;// = 1.0; // seconds(s) | ||
85 | const static F32 UNAVAILABLE_RETRY_TIMER_DELAY;// = 5.0; // secs | ||
86 | const static U32 MAX_RETRIES;// = 4; | ||
87 | const static U32 MAX_SORTED_QUEUE_SIZE;// = 10000; | ||
88 | const static U32 MAX_ROUND_ROBIN_QUEUE_SIZE;// = 10000; | ||
89 | |||
90 | // Constructor | ||
91 | LLMediaDataClient(F32 queue_timer_delay = QUEUE_TIMER_DELAY, | ||
92 | F32 retry_timer_delay = UNAVAILABLE_RETRY_TIMER_DELAY, | ||
93 | U32 max_retries = MAX_RETRIES, | ||
94 | U32 max_sorted_queue_size = MAX_SORTED_QUEUE_SIZE, | ||
95 | U32 max_round_robin_queue_size = MAX_ROUND_ROBIN_QUEUE_SIZE); | ||
96 | |||
97 | // Make the request | ||
98 | void request(const LLMediaDataClientObject::ptr_t &object, const LLSD &payload); | ||
99 | |||
100 | F32 getRetryTimerDelay() const { return mRetryTimerDelay; } | ||
101 | |||
102 | // Returns true iff the queue is empty | ||
103 | bool isEmpty() const; | ||
104 | |||
105 | // Returns true iff the given object is in the queue | ||
106 | bool isInQueue(const LLMediaDataClientObject::ptr_t &object); | ||
107 | |||
108 | // Remove the given object from the queue. Returns true iff the given object is removed. | ||
109 | bool removeFromQueue(const LLMediaDataClientObject::ptr_t &object); | ||
110 | |||
111 | // Called only by the Queue timer and tests (potentially) | ||
112 | bool processQueueTimer(); | ||
113 | |||
114 | protected: | ||
115 | // Destructor | ||
116 | virtual ~LLMediaDataClient(); // use unref | ||
117 | |||
118 | // Request | ||
119 | class Request : public LLRefCount | ||
120 | { | ||
121 | public: | ||
122 | enum Type { | ||
123 | GET, | ||
124 | UPDATE, | ||
125 | NAVIGATE, | ||
126 | ANY | ||
127 | }; | ||
128 | |||
129 | Request(const char *cap_name, const LLSD& sd_payload, LLMediaDataClientObject *obj, LLMediaDataClient *mdc); | ||
130 | const char *getCapName() const { return mCapName; } | ||
131 | const LLSD &getPayload() const { return mPayload; } | ||
132 | LLMediaDataClientObject *getObject() const { return mObject; } | ||
133 | |||
134 | U32 getNum() const { return mNum; } | ||
135 | |||
136 | U32 getRetryCount() const { return mRetryCount; } | ||
137 | void incRetryCount() { mRetryCount++; } | ||
138 | |||
139 | // Note: may return empty string! | ||
140 | std::string getCapability() const; | ||
141 | |||
142 | Type getType() const; | ||
143 | const char *getTypeAsString() const; | ||
144 | |||
145 | // Re-enqueue thyself | ||
146 | void reEnqueue() const; | ||
147 | |||
148 | F32 getRetryTimerDelay() const; | ||
149 | U32 getMaxNumRetries() const; | ||
150 | |||
151 | bool isNew() const { return mObject.notNull() ? mObject->isNew() : false; } | ||
152 | void markSent(bool flag); | ||
153 | bool isMarkedSent() const { return mMarkedSent; } | ||
154 | void updateScore(); | ||
155 | F64 getScore() const { return mScore; } | ||
156 | |||
157 | public: | ||
158 | friend std::ostream& operator<<(std::ostream &s, const Request &q); | ||
159 | |||
160 | protected: | ||
161 | virtual ~Request(); // use unref(); | ||
162 | |||
163 | private: | ||
164 | const char *mCapName; | ||
165 | LLSD mPayload; | ||
166 | LLMediaDataClientObject::ptr_t mObject; | ||
167 | // Simple tracking | ||
168 | U32 mNum; | ||
169 | static U32 sNum; | ||
170 | U32 mRetryCount; | ||
171 | F64 mScore; | ||
172 | bool mMarkedSent; | ||
173 | |||
174 | // Back pointer to the MDC...not a ref! | ||
175 | LLMediaDataClient *mMDC; | ||
176 | }; | ||
177 | typedef LLPointer<Request> request_ptr_t; | ||
178 | |||
179 | // Responder | ||
180 | class Responder : public LLHTTPClient::Responder | ||
181 | { | ||
182 | public: | ||
183 | Responder(const request_ptr_t &request); | ||
184 | //If we get back an error (not found, etc...), handle it here | ||
185 | virtual void error(U32 status, const std::string& reason); | ||
186 | //If we get back a normal response, handle it here. Default just logs it. | ||
187 | virtual void result(const LLSD& content); | ||
188 | |||
189 | const request_ptr_t &getRequest() const { return mRequest; } | ||
190 | |||
191 | protected: | ||
192 | virtual ~Responder(); | ||
193 | |||
194 | private: | ||
195 | |||
196 | class RetryTimer : public LLEventTimer | ||
197 | { | ||
198 | public: | ||
199 | RetryTimer(F32 time, Responder *); | ||
200 | virtual ~RetryTimer(); | ||
201 | virtual BOOL tick(); | ||
202 | private: | ||
203 | // back-pointer | ||
204 | boost::intrusive_ptr<Responder> mResponder; | ||
205 | }; | ||
206 | |||
207 | request_ptr_t mRequest; | ||
208 | }; | ||
209 | |||
210 | protected: | ||
211 | |||
212 | // Subclasses must override this factory method to return a new responder | ||
213 | virtual Responder *createResponder(const request_ptr_t &request) const = 0; | ||
214 | |||
215 | // Subclasses must override to return a cap name | ||
216 | virtual const char *getCapabilityName() const = 0; | ||
217 | |||
218 | virtual void sortQueue(); | ||
219 | virtual void serviceQueue(); | ||
220 | |||
221 | private: | ||
222 | typedef std::list<request_ptr_t> request_queue_t; | ||
223 | |||
224 | void enqueue(const Request*); | ||
225 | |||
226 | // Return whether the given object is/was in the queue | ||
227 | static LLMediaDataClient::request_ptr_t findOrRemove(request_queue_t &queue, const LLMediaDataClientObject::ptr_t &obj, bool remove, Request::Type type); | ||
228 | |||
229 | // Comparator for sorting | ||
230 | static bool compareRequests(const request_ptr_t &o1, const request_ptr_t &o2); | ||
231 | static F64 getObjectScore(const LLMediaDataClientObject::ptr_t &obj); | ||
232 | |||
233 | friend std::ostream& operator<<(std::ostream &s, const Request &q); | ||
234 | friend std::ostream& operator<<(std::ostream &s, const request_queue_t &q); | ||
235 | |||
236 | class QueueTimer : public LLEventTimer | ||
237 | { | ||
238 | public: | ||
239 | QueueTimer(F32 time, LLMediaDataClient *mdc); | ||
240 | virtual BOOL tick(); | ||
241 | protected: | ||
242 | virtual ~QueueTimer(); | ||
243 | private: | ||
244 | // back-pointer | ||
245 | LLPointer<LLMediaDataClient> mMDC; | ||
246 | }; | ||
247 | |||
248 | void startQueueTimer(); | ||
249 | void stopQueueTimer(); | ||
250 | void setIsRunning(bool val) { mQueueTimerIsRunning = val; } | ||
251 | |||
252 | void swapCurrentQueue(); | ||
253 | request_queue_t *getCurrentQueue(); | ||
254 | |||
255 | const F32 mQueueTimerDelay; | ||
256 | const F32 mRetryTimerDelay; | ||
257 | const U32 mMaxNumRetries; | ||
258 | const U32 mMaxSortedQueueSize; | ||
259 | const U32 mMaxRoundRobinQueueSize; | ||
260 | |||
261 | bool mQueueTimerIsRunning; | ||
262 | |||
263 | request_queue_t mSortedQueue; | ||
264 | request_queue_t mRoundRobinQueue; | ||
265 | bool mCurrentQueueIsTheSortedQueue; | ||
266 | }; | ||
267 | |||
268 | |||
269 | // MediaDataClient specific for the ObjectMedia cap | ||
270 | class LLObjectMediaDataClient : public LLMediaDataClient | ||
271 | { | ||
272 | public: | ||
273 | LLObjectMediaDataClient(F32 queue_timer_delay = QUEUE_TIMER_DELAY, | ||
274 | F32 retry_timer_delay = UNAVAILABLE_RETRY_TIMER_DELAY, | ||
275 | U32 max_retries = MAX_RETRIES, | ||
276 | U32 max_sorted_queue_size = MAX_SORTED_QUEUE_SIZE, | ||
277 | U32 max_round_robin_queue_size = MAX_ROUND_ROBIN_QUEUE_SIZE) | ||
278 | : LLMediaDataClient(queue_timer_delay, retry_timer_delay, max_retries) | ||
279 | {} | ||
280 | virtual ~LLObjectMediaDataClient() {} | ||
281 | |||
282 | void fetchMedia(LLMediaDataClientObject *object); | ||
283 | void updateMedia(LLMediaDataClientObject *object); | ||
284 | |||
285 | protected: | ||
286 | // Subclasses must override this factory method to return a new responder | ||
287 | virtual Responder *createResponder(const request_ptr_t &request) const; | ||
288 | |||
289 | // Subclasses must override to return a cap name | ||
290 | virtual const char *getCapabilityName() const; | ||
291 | |||
292 | class Responder : public LLMediaDataClient::Responder | ||
293 | { | ||
294 | public: | ||
295 | Responder(const request_ptr_t &request) | ||
296 | : LLMediaDataClient::Responder(request) {} | ||
297 | virtual void result(const LLSD &content); | ||
298 | }; | ||
299 | }; | ||
300 | |||
301 | |||
302 | // MediaDataClient specific for the ObjectMediaNavigate cap | ||
303 | class LLObjectMediaNavigateClient : public LLMediaDataClient | ||
304 | { | ||
305 | public: | ||
306 | // NOTE: from llmediaservice.h | ||
307 | static const int ERROR_PERMISSION_DENIED_CODE = 8002; | ||
308 | |||
309 | LLObjectMediaNavigateClient(F32 queue_timer_delay = QUEUE_TIMER_DELAY, | ||
310 | F32 retry_timer_delay = UNAVAILABLE_RETRY_TIMER_DELAY, | ||
311 | U32 max_retries = MAX_RETRIES, | ||
312 | U32 max_sorted_queue_size = MAX_SORTED_QUEUE_SIZE, | ||
313 | U32 max_round_robin_queue_size = MAX_ROUND_ROBIN_QUEUE_SIZE) | ||
314 | : LLMediaDataClient(queue_timer_delay, retry_timer_delay, max_retries) | ||
315 | {} | ||
316 | virtual ~LLObjectMediaNavigateClient() {} | ||
317 | |||
318 | void navigate(LLMediaDataClientObject *object, U8 texture_index, const std::string &url); | ||
319 | |||
320 | protected: | ||
321 | // Subclasses must override this factory method to return a new responder | ||
322 | virtual Responder *createResponder(const request_ptr_t &request) const; | ||
323 | |||
324 | // Subclasses must override to return a cap name | ||
325 | virtual const char *getCapabilityName() const; | ||
326 | |||
327 | class Responder : public LLMediaDataClient::Responder | ||
328 | { | ||
329 | public: | ||
330 | Responder(const request_ptr_t &request) | ||
331 | : LLMediaDataClient::Responder(request) {} | ||
332 | virtual void error(U32 status, const std::string& reason); | ||
333 | virtual void result(const LLSD &content); | ||
334 | private: | ||
335 | void mediaNavigateBounceBack(); | ||
336 | }; | ||
337 | |||
338 | }; | ||
339 | |||
340 | |||
341 | #endif // LL_LLMEDIADATACLIENT_H | ||
diff --git a/linden/indra/newview/llpanelavatar.cpp b/linden/indra/newview/llpanelavatar.cpp index 8854986..23941a4 100644 --- a/linden/indra/newview/llpanelavatar.cpp +++ b/linden/indra/newview/llpanelavatar.cpp | |||
@@ -1321,11 +1321,11 @@ void LLPanelAvatar::setAvatarID(const LLUUID &avatar_id, const std::string &name | |||
1321 | { | 1321 | { |
1322 | if (avatar_id.isNull()) return; | 1322 | if (avatar_id.isNull()) return; |
1323 | 1323 | ||
1324 | BOOL avatar_changed = FALSE; | 1324 | // BOOL avatar_changed = FALSE; |
1325 | if (avatar_id != mAvatarID) | 1325 | // if (avatar_id != mAvatarID) |
1326 | { | 1326 | // { |
1327 | avatar_changed = TRUE; | 1327 | // avatar_changed = TRUE; |
1328 | } | 1328 | // } |
1329 | mAvatarID = avatar_id; | 1329 | mAvatarID = avatar_id; |
1330 | 1330 | ||
1331 | // Determine if we have their calling card. | 1331 | // Determine if we have their calling card. |
diff --git a/linden/indra/newview/llpanelcontents.cpp b/linden/indra/newview/llpanelcontents.cpp index 855bb93..7137c23 100644 --- a/linden/indra/newview/llpanelcontents.cpp +++ b/linden/indra/newview/llpanelcontents.cpp | |||
@@ -83,8 +83,6 @@ | |||
83 | 83 | ||
84 | BOOL LLPanelContents::postBuild() | 84 | BOOL LLPanelContents::postBuild() |
85 | { | 85 | { |
86 | LLRect rect = this->getRect(); | ||
87 | |||
88 | setMouseOpaque(FALSE); | 86 | setMouseOpaque(FALSE); |
89 | 87 | ||
90 | childSetAction("button new script",&LLPanelContents::onClickNewScript, this); | 88 | childSetAction("button new script",&LLPanelContents::onClickNewScript, this); |
diff --git a/linden/indra/newview/llpanelface.cpp b/linden/indra/newview/llpanelface.cpp index b9a40da..d8401de 100644 --- a/linden/indra/newview/llpanelface.cpp +++ b/linden/indra/newview/llpanelface.cpp | |||
@@ -74,7 +74,6 @@ | |||
74 | 74 | ||
75 | BOOL LLPanelFace::postBuild() | 75 | BOOL LLPanelFace::postBuild() |
76 | { | 76 | { |
77 | LLRect rect = this->getRect(); | ||
78 | LLTextureCtrl* mTextureCtrl; | 77 | LLTextureCtrl* mTextureCtrl; |
79 | LLColorSwatchCtrl* mColorSwatch; | 78 | LLColorSwatchCtrl* mColorSwatch; |
80 | 79 | ||
diff --git a/linden/indra/newview/llpanelgrouplandmoney.cpp b/linden/indra/newview/llpanelgrouplandmoney.cpp index 3f128fe..e15f585 100644 --- a/linden/indra/newview/llpanelgrouplandmoney.cpp +++ b/linden/indra/newview/llpanelgrouplandmoney.cpp | |||
@@ -1390,13 +1390,11 @@ void LLGroupMoneyPlanningTabEventHandler::processReply(LLMessageSystem* msg, | |||
1390 | S32 cur_land_tax; | 1390 | S32 cur_land_tax; |
1391 | S32 cur_group_tax; | 1391 | S32 cur_group_tax; |
1392 | S32 cur_parcel_dir_fee; | 1392 | S32 cur_parcel_dir_fee; |
1393 | S32 cur_total_tax; | ||
1394 | S32 proj_object_tax; | 1393 | S32 proj_object_tax; |
1395 | S32 proj_light_tax; | 1394 | S32 proj_light_tax; |
1396 | S32 proj_land_tax; | 1395 | S32 proj_land_tax; |
1397 | S32 proj_group_tax; | 1396 | S32 proj_group_tax; |
1398 | S32 proj_parcel_dir_fee; | 1397 | S32 proj_parcel_dir_fee; |
1399 | S32 proj_total_tax; | ||
1400 | S32 non_exempt_members; | 1398 | S32 non_exempt_members; |
1401 | 1399 | ||
1402 | msg->getS32Fast(_PREHASH_MoneyData, _PREHASH_IntervalDays, interval_days ); | 1400 | msg->getS32Fast(_PREHASH_MoneyData, _PREHASH_IntervalDays, interval_days ); |
@@ -1420,9 +1418,6 @@ void LLGroupMoneyPlanningTabEventHandler::processReply(LLMessageSystem* msg, | |||
1420 | msg->getStringFast(_PREHASH_MoneyData, _PREHASH_LastTaxDate, last_stipend_date); | 1418 | msg->getStringFast(_PREHASH_MoneyData, _PREHASH_LastTaxDate, last_stipend_date); |
1421 | msg->getStringFast(_PREHASH_MoneyData, _PREHASH_TaxDate, next_stipend_date); | 1419 | msg->getStringFast(_PREHASH_MoneyData, _PREHASH_TaxDate, next_stipend_date); |
1422 | 1420 | ||
1423 | cur_total_tax = cur_object_tax + cur_light_tax + cur_land_tax + cur_group_tax + cur_parcel_dir_fee; | ||
1424 | proj_total_tax = proj_object_tax + proj_light_tax + proj_land_tax + proj_group_tax + proj_parcel_dir_fee; | ||
1425 | |||
1426 | if (interval_days != mImplementationp->mIntervalLength || | 1421 | if (interval_days != mImplementationp->mIntervalLength || |
1427 | current_interval != mImplementationp->mCurrentInterval) | 1422 | current_interval != mImplementationp->mCurrentInterval) |
1428 | { | 1423 | { |
diff --git a/linden/indra/newview/llpanelinventory.cpp b/linden/indra/newview/llpanelinventory.cpp index 277ab15..8103ee9 100644 --- a/linden/indra/newview/llpanelinventory.cpp +++ b/linden/indra/newview/llpanelinventory.cpp | |||
@@ -81,6 +81,7 @@ | |||
81 | #include "llviewerobjectlist.h" | 81 | #include "llviewerobjectlist.h" |
82 | #include "llviewerwindow.h" | 82 | #include "llviewerwindow.h" |
83 | #include "llwearable.h" | 83 | #include "llwearable.h" |
84 | #include "llwlparammanager.h" | ||
84 | 85 | ||
85 | #include "hippogridmanager.h" | 86 | #include "hippogridmanager.h" |
86 | 87 | ||
@@ -1380,9 +1381,6 @@ public: | |||
1380 | virtual LLUIImagePtr getIcon() const; | 1381 | virtual LLUIImagePtr getIcon() const; |
1381 | virtual void openItem(); | 1382 | virtual void openItem(); |
1382 | virtual BOOL removeItem(); | 1383 | virtual BOOL removeItem(); |
1383 | bool isSkySetting() const; | ||
1384 | bool isWaterSetting() const; | ||
1385 | bool isWindLight() const; | ||
1386 | }; | 1384 | }; |
1387 | 1385 | ||
1388 | LLTaskNotecardBridge::LLTaskNotecardBridge( | 1386 | LLTaskNotecardBridge::LLTaskNotecardBridge( |
@@ -1412,7 +1410,7 @@ void LLTaskNotecardBridge::openItem() | |||
1412 | return; | 1410 | return; |
1413 | } | 1411 | } |
1414 | // [/RLVa:KB] | 1412 | // [/RLVa:KB] |
1415 | if(isWindLight()) | 1413 | if(LLWLParamManager::isSettingsNotecard(getName())) |
1416 | { | 1414 | { |
1417 | return; | 1415 | return; |
1418 | } | 1416 | } |
@@ -1442,11 +1440,11 @@ BOOL LLTaskNotecardBridge::removeItem() | |||
1442 | } | 1440 | } |
1443 | LLUIImagePtr LLTaskNotecardBridge::getIcon() const | 1441 | LLUIImagePtr LLTaskNotecardBridge::getIcon() const |
1444 | { | 1442 | { |
1445 | if(isSkySetting()) | 1443 | if(LLWLParamManager::isSkySettingsNotecard(getName())) |
1446 | { | 1444 | { |
1447 | return LLUI::getUIImage("Inv_WindLight"); | 1445 | return LLUI::getUIImage("Inv_WindLight"); |
1448 | } | 1446 | } |
1449 | else if(isWaterSetting()) | 1447 | else if(LLWLParamManager::isWaterSettingsNotecard(getName())) |
1450 | { | 1448 | { |
1451 | return LLUI::getUIImage("Inv_WaterLight"); | 1449 | return LLUI::getUIImage("Inv_WaterLight"); |
1452 | } | 1450 | } |
@@ -1456,22 +1454,6 @@ LLUIImagePtr LLTaskNotecardBridge::getIcon() const | |||
1456 | } | 1454 | } |
1457 | } | 1455 | } |
1458 | 1456 | ||
1459 | bool LLTaskNotecardBridge::isSkySetting() const | ||
1460 | { | ||
1461 | return (getName().length() > 2 && getName().compare(getName().length() - 3, 3, ".wl") == 0); | ||
1462 | } | ||
1463 | |||
1464 | bool LLTaskNotecardBridge::isWaterSetting() const | ||
1465 | { | ||
1466 | return (getName().length() > 2 && getName().compare(getName().length() - 3, 3, ".ww") == 0); | ||
1467 | } | ||
1468 | |||
1469 | bool LLTaskNotecardBridge::isWindLight() const | ||
1470 | { | ||
1471 | return (isSkySetting() || isWaterSetting()); | ||
1472 | } | ||
1473 | |||
1474 | |||
1475 | ///---------------------------------------------------------------------------- | 1457 | ///---------------------------------------------------------------------------- |
1476 | /// Class LLTaskGestureBridge | 1458 | /// Class LLTaskGestureBridge |
1477 | ///---------------------------------------------------------------------------- | 1459 | ///---------------------------------------------------------------------------- |
diff --git a/linden/indra/newview/llpanellogin.cpp b/linden/indra/newview/llpanellogin.cpp index c709015..4998662 100644 --- a/linden/indra/newview/llpanellogin.cpp +++ b/linden/indra/newview/llpanellogin.cpp | |||
@@ -604,18 +604,17 @@ void LLPanelLogin::addServer(const std::string& server) | |||
604 | const std::string &defaultGrid = gHippoGridManager->getDefaultGridNick(); | 604 | const std::string &defaultGrid = gHippoGridManager->getDefaultGridNick(); |
605 | 605 | ||
606 | LLComboBox *grids = sInstance->getChild<LLComboBox>("server_combo"); | 606 | LLComboBox *grids = sInstance->getChild<LLComboBox>("server_combo"); |
607 | S32 selectIndex = -1, i = 0; | 607 | S32 i = 0; |
608 | grids->removeall(); | 608 | grids->removeall(); |
609 | if (defaultGrid != "") { | 609 | if (defaultGrid != "") { |
610 | grids->add(defaultGrid); | 610 | grids->add(defaultGrid); |
611 | selectIndex = i++; | 611 | i++; |
612 | } | 612 | } |
613 | HippoGridManager::GridIterator it, end = gHippoGridManager->endGrid(); | 613 | HippoGridManager::GridIterator it, end = gHippoGridManager->endGrid(); |
614 | for (it = gHippoGridManager->beginGrid(); it != end; ++it) { | 614 | for (it = gHippoGridManager->beginGrid(); it != end; ++it) { |
615 | const std::string &grid = it->second->getGridNick(); | 615 | const std::string &grid = it->second->getGridNick(); |
616 | if (grid != defaultGrid) { | 616 | if (grid != defaultGrid) { |
617 | grids->add(grid); | 617 | grids->add(grid); |
618 | //if (grid == mCurGrid) selectIndex = i; | ||
619 | i++; | 618 | i++; |
620 | } | 619 | } |
621 | } | 620 | } |
diff --git a/linden/indra/newview/llpanelmediahud.cpp b/linden/indra/newview/llpanelmediahud.cpp index 39c4b63..c4afe27 100644 --- a/linden/indra/newview/llpanelmediahud.cpp +++ b/linden/indra/newview/llpanelmediahud.cpp | |||
@@ -356,7 +356,6 @@ void LLPanelMediaHUD::updateShape() | |||
356 | media_hud_rect.mRight += getRect().getWidth() - media_region->getRect().mRight; | 356 | media_hud_rect.mRight += getRect().getWidth() - media_region->getRect().mRight; |
357 | 357 | ||
358 | 358 | ||
359 | LLRect old_hud_rect = media_hud_rect; | ||
360 | // keep all parts of HUD on-screen | 359 | // keep all parts of HUD on-screen |
361 | media_hud_rect.intersectWith(getParent()->getLocalRect()); | 360 | media_hud_rect.intersectWith(getParent()->getLocalRect()); |
362 | 361 | ||
diff --git a/linden/indra/newview/llpanelobject.cpp b/linden/indra/newview/llpanelobject.cpp index 36c479a..5d156f8 100644 --- a/linden/indra/newview/llpanelobject.cpp +++ b/linden/indra/newview/llpanelobject.cpp | |||
@@ -520,10 +520,10 @@ void LLPanelObject::getState( ) | |||
520 | mBtnPasteRot->setEnabled( enable_rotate ); | 520 | mBtnPasteRot->setEnabled( enable_rotate ); |
521 | mBtnPasteRotClip->setEnabled( enable_rotate ); | 521 | mBtnPasteRotClip->setEnabled( enable_rotate ); |
522 | 522 | ||
523 | BOOL owners_identical; | ||
524 | LLUUID owner_id; | 523 | LLUUID owner_id; |
525 | std::string owner_name; | 524 | std::string owner_name; |
526 | owners_identical = LLSelectMgr::getInstance()->selectGetOwner(owner_id, owner_name); | 525 | // This is still needed for the side effects, though the result is not. |
526 | LLSelectMgr::getInstance()->selectGetOwner(owner_id, owner_name); | ||
527 | 527 | ||
528 | // BUG? Check for all objects being editable? | 528 | // BUG? Check for all objects being editable? |
529 | S32 roots_selected = LLSelectMgr::getInstance()->getSelection()->getRootObjectCount(); | 529 | S32 roots_selected = LLSelectMgr::getInstance()->getSelection()->getRootObjectCount(); |
diff --git a/linden/indra/newview/llpanelpermissions.cpp b/linden/indra/newview/llpanelpermissions.cpp index 6b7bc1b..9799de7 100644 --- a/linden/indra/newview/llpanelpermissions.cpp +++ b/linden/indra/newview/llpanelpermissions.cpp | |||
@@ -541,7 +541,7 @@ void LLPanelPermissions::refresh() | |||
541 | // TODO: Creator permissions | 541 | // TODO: Creator permissions |
542 | 542 | ||
543 | BOOL valid_base_perms = FALSE; | 543 | BOOL valid_base_perms = FALSE; |
544 | BOOL valid_owner_perms = FALSE; | 544 | //BOOL valid_owner_perms = FALSE; |
545 | BOOL valid_group_perms = FALSE; | 545 | BOOL valid_group_perms = FALSE; |
546 | BOOL valid_everyone_perms = FALSE; | 546 | BOOL valid_everyone_perms = FALSE; |
547 | BOOL valid_next_perms = FALSE; | 547 | BOOL valid_next_perms = FALSE; |
@@ -561,7 +561,8 @@ void LLPanelPermissions::refresh() | |||
561 | &base_mask_on, | 561 | &base_mask_on, |
562 | &base_mask_off); | 562 | &base_mask_off); |
563 | 563 | ||
564 | valid_owner_perms = LLSelectMgr::getInstance()->selectGetPerm(PERM_OWNER, | 564 | // TODO - seems odd, but this is not actually used, except to set owner_mask_*. |
565 | /*valid_owner_perms =*/ LLSelectMgr::getInstance()->selectGetPerm(PERM_OWNER, | ||
565 | &owner_mask_on, | 566 | &owner_mask_on, |
566 | &owner_mask_off); | 567 | &owner_mask_off); |
567 | 568 | ||
diff --git a/linden/indra/newview/llpanelvolume.cpp b/linden/indra/newview/llpanelvolume.cpp index b87a233..00b80f0 100644 --- a/linden/indra/newview/llpanelvolume.cpp +++ b/linden/indra/newview/llpanelvolume.cpp | |||
@@ -181,10 +181,10 @@ void LLPanelVolume::getState( ) | |||
181 | return; | 181 | return; |
182 | } | 182 | } |
183 | 183 | ||
184 | BOOL owners_identical; | ||
185 | LLUUID owner_id; | 184 | LLUUID owner_id; |
186 | std::string owner_name; | 185 | std::string owner_name; |
187 | owners_identical = LLSelectMgr::getInstance()->selectGetOwner(owner_id, owner_name); | 186 | // This is still needed for the side effects, though the result is not. |
187 | LLSelectMgr::getInstance()->selectGetOwner(owner_id, owner_name); | ||
188 | 188 | ||
189 | // BUG? Check for all objects being editable? | 189 | // BUG? Check for all objects being editable? |
190 | BOOL editable = root_objectp->permModify(); | 190 | BOOL editable = root_objectp->permModify(); |
diff --git a/linden/indra/newview/llselectmgr.cpp b/linden/indra/newview/llselectmgr.cpp index f6f294a..3525e54 100644 --- a/linden/indra/newview/llselectmgr.cpp +++ b/linden/indra/newview/llselectmgr.cpp | |||
@@ -1072,7 +1072,6 @@ void LLSelectMgr::getGrid(LLVector3& origin, LLQuaternion &rotation, LLVector3 & | |||
1072 | if (mGridMode == GRID_MODE_LOCAL && mSelectedObjects->getObjectCount()) | 1072 | if (mGridMode == GRID_MODE_LOCAL && mSelectedObjects->getObjectCount()) |
1073 | { | 1073 | { |
1074 | //LLViewerObject* root = getSelectedParentObject(mSelectedObjects->getFirstObject()); | 1074 | //LLViewerObject* root = getSelectedParentObject(mSelectedObjects->getFirstObject()); |
1075 | LLBBox bbox = mSavedSelectionBBox; | ||
1076 | mGridOrigin = mSavedSelectionBBox.getCenterAgent(); | 1075 | mGridOrigin = mSavedSelectionBBox.getCenterAgent(); |
1077 | mGridScale = mSavedSelectionBBox.getExtentLocal() * 0.5f; | 1076 | mGridScale = mSavedSelectionBBox.getExtentLocal() * 0.5f; |
1078 | 1077 | ||
@@ -1090,7 +1089,6 @@ void LLSelectMgr::getGrid(LLVector3& origin, LLQuaternion &rotation, LLVector3 & | |||
1090 | else if (mGridMode == GRID_MODE_REF_OBJECT && first_grid_object && first_grid_object->mDrawable.notNull()) | 1089 | else if (mGridMode == GRID_MODE_REF_OBJECT && first_grid_object && first_grid_object->mDrawable.notNull()) |
1091 | { | 1090 | { |
1092 | mGridRotation = first_grid_object->getRenderRotation(); | 1091 | mGridRotation = first_grid_object->getRenderRotation(); |
1093 | LLVector3 first_grid_obj_pos = first_grid_object->getRenderPosition(); | ||
1094 | 1092 | ||
1095 | LLVector3 min_extents(F32_MAX, F32_MAX, F32_MAX); | 1093 | LLVector3 min_extents(F32_MAX, F32_MAX, F32_MAX); |
1096 | LLVector3 max_extents(-F32_MAX, -F32_MAX, -F32_MAX); | 1094 | LLVector3 max_extents(-F32_MAX, -F32_MAX, -F32_MAX); |
diff --git a/linden/indra/newview/llspatialpartition.cpp b/linden/indra/newview/llspatialpartition.cpp index d9fa5b5..a9255b3 100644 --- a/linden/indra/newview/llspatialpartition.cpp +++ b/linden/indra/newview/llspatialpartition.cpp | |||
@@ -2617,9 +2617,6 @@ public: | |||
2617 | return; | 2617 | return; |
2618 | } | 2618 | } |
2619 | 2619 | ||
2620 | LLVector3 nodeCenter = group->mBounds[0]; | ||
2621 | LLVector3 octCenter = LLVector3(group->mOctreeNode->getCenter()); | ||
2622 | |||
2623 | for (LLSpatialGroup::OctreeNode::const_element_iter i = branch->getData().begin(); i != branch->getData().end(); ++i) | 2620 | for (LLSpatialGroup::OctreeNode::const_element_iter i = branch->getData().begin(); i != branch->getData().end(); ++i) |
2624 | { | 2621 | { |
2625 | LLDrawable* drawable = *i; | 2622 | LLDrawable* drawable = *i; |
@@ -2860,9 +2857,6 @@ public: | |||
2860 | 2857 | ||
2861 | virtual bool check(LLDrawable* drawable) | 2858 | virtual bool check(LLDrawable* drawable) |
2862 | { | 2859 | { |
2863 | LLVector3 local_start = mStart; | ||
2864 | LLVector3 local_end = mEnd; | ||
2865 | |||
2866 | if (!gPipeline.hasRenderType(drawable->getRenderType()) || !drawable->isVisible()) | 2860 | if (!gPipeline.hasRenderType(drawable->getRenderType()) || !drawable->isVisible()) |
2867 | { | 2861 | { |
2868 | return false; | 2862 | return false; |
diff --git a/linden/indra/newview/llstartup.cpp b/linden/indra/newview/llstartup.cpp index bbb942f..d232ea8 100644 --- a/linden/indra/newview/llstartup.cpp +++ b/linden/indra/newview/llstartup.cpp | |||
@@ -207,6 +207,8 @@ | |||
207 | #include "rlvhandler.h" | 207 | #include "rlvhandler.h" |
208 | // [/RLVa:KB] | 208 | // [/RLVa:KB] |
209 | 209 | ||
210 | #include "rcmoapradar.h" | ||
211 | |||
210 | #if LL_WINDOWS | 212 | #if LL_WINDOWS |
211 | #include "llwindebug.h" | 213 | #include "llwindebug.h" |
212 | #include "lldxhardware.h" | 214 | #include "lldxhardware.h" |
@@ -266,7 +268,6 @@ bool LLStartUp::sLoginFailed = false; | |||
266 | 268 | ||
267 | void login_show(); | 269 | void login_show(); |
268 | void login_callback(S32 option, void* userdata); | 270 | void login_callback(S32 option, void* userdata); |
269 | bool is_hex_string(U8* str, S32 len); | ||
270 | void show_first_run_dialog(); | 271 | void show_first_run_dialog(); |
271 | bool first_run_dialog_callback(const LLSD& notification, const LLSD& response); | 272 | bool first_run_dialog_callback(const LLSD& notification, const LLSD& response); |
272 | void set_startup_status(const F32 frac, const std::string& string, const std::string& msg); | 273 | void set_startup_status(const F32 frac, const std::string& string, const std::string& msg); |
@@ -352,7 +353,6 @@ bool idle_startup() | |||
352 | const F32 TIMEOUT_SECONDS = 10.f; // changed from 5 to 10 seconds for OpenSim lag -- MC | 353 | const F32 TIMEOUT_SECONDS = 10.f; // changed from 5 to 10 seconds for OpenSim lag -- MC |
353 | const S32 MAX_TIMEOUT_COUNT = 3; | 354 | const S32 MAX_TIMEOUT_COUNT = 3; |
354 | static LLTimer timeout; | 355 | static LLTimer timeout; |
355 | static S32 timeout_count = 0; | ||
356 | 356 | ||
357 | static LLTimer login_time; | 357 | static LLTimer login_time; |
358 | static LLTimer connecting_region_timer; | 358 | static LLTimer connecting_region_timer; |
@@ -384,11 +384,10 @@ bool idle_startup() | |||
384 | 384 | ||
385 | // last location by default | 385 | // last location by default |
386 | static S32 agent_location_id = START_LOCATION_ID_LAST; | 386 | static S32 agent_location_id = START_LOCATION_ID_LAST; |
387 | static S32 location_which = START_LOCATION_ID_LAST; | ||
388 | 387 | ||
389 | static bool show_connect_box = true; | 388 | static bool show_connect_box = true; |
390 | 389 | ||
391 | static bool stipend_since_login = false; | 390 | //static bool stipend_since_login = false; |
392 | 391 | ||
393 | static bool samename = false; | 392 | static bool samename = false; |
394 | 393 | ||
@@ -803,8 +802,6 @@ bool idle_startup() | |||
803 | 802 | ||
804 | gViewerWindow->getWindow()->setCursor(UI_CURSOR_ARROW); | 803 | gViewerWindow->getWindow()->setCursor(UI_CURSOR_ARROW); |
805 | 804 | ||
806 | timeout_count = 0; | ||
807 | |||
808 | if (LLStartUp::shouldAutoLogin()) | 805 | if (LLStartUp::shouldAutoLogin()) |
809 | { | 806 | { |
810 | show_connect_box = false; | 807 | show_connect_box = false; |
@@ -1118,7 +1115,6 @@ bool idle_startup() | |||
1118 | { | 1115 | { |
1119 | // Force login at the last location | 1116 | // Force login at the last location |
1120 | agent_location_id = START_LOCATION_ID_LAST; | 1117 | agent_location_id = START_LOCATION_ID_LAST; |
1121 | location_which = START_LOCATION_ID_LAST; | ||
1122 | gSavedSettings.setBOOL("LoginLastLocation", FALSE); | 1118 | gSavedSettings.setBOOL("LoginLastLocation", FALSE); |
1123 | 1119 | ||
1124 | // Clear some things that would cause us to divert to a user-specified location | 1120 | // Clear some things that would cause us to divert to a user-specified location |
@@ -1130,21 +1126,14 @@ bool idle_startup() | |||
1130 | { | 1126 | { |
1131 | // a startup URL was specified | 1127 | // a startup URL was specified |
1132 | agent_location_id = START_LOCATION_ID_URL; | 1128 | agent_location_id = START_LOCATION_ID_URL; |
1133 | |||
1134 | // doesn't really matter what location_which is, since | ||
1135 | // agent_start_look_at will be overwritten when the | ||
1136 | // UserLoginLocationReply arrives | ||
1137 | location_which = START_LOCATION_ID_LAST; | ||
1138 | } | 1129 | } |
1139 | else if (gSavedSettings.getBOOL("LoginLastLocation")) | 1130 | else if (gSavedSettings.getBOOL("LoginLastLocation")) |
1140 | { | 1131 | { |
1141 | agent_location_id = START_LOCATION_ID_LAST; // last location | 1132 | agent_location_id = START_LOCATION_ID_LAST; // last location |
1142 | location_which = START_LOCATION_ID_LAST; | ||
1143 | } | 1133 | } |
1144 | else | 1134 | else |
1145 | { | 1135 | { |
1146 | agent_location_id = START_LOCATION_ID_HOME; // home | 1136 | agent_location_id = START_LOCATION_ID_HOME; // home |
1147 | location_which = START_LOCATION_ID_HOME; | ||
1148 | } | 1137 | } |
1149 | 1138 | ||
1150 | gViewerWindow->getWindow()->setCursor(UI_CURSOR_WAIT); | 1139 | gViewerWindow->getWindow()->setCursor(UI_CURSOR_WAIT); |
@@ -1790,11 +1779,11 @@ bool idle_startup() | |||
1790 | if((*it).second == "N") gAgent.setFirstLogin(TRUE); | 1779 | if((*it).second == "N") gAgent.setFirstLogin(TRUE); |
1791 | else gAgent.setFirstLogin(FALSE); | 1780 | else gAgent.setFirstLogin(FALSE); |
1792 | } | 1781 | } |
1793 | it = options[0].find("stipend_since_login"); | 1782 | //it = options[0].find("stipend_since_login"); |
1794 | if(it != no_flag) | 1783 | //if(it != no_flag) |
1795 | { | 1784 | //{ |
1796 | if((*it).second == "Y") stipend_since_login = true; | 1785 | // if((*it).second == "Y") stipend_since_login = true; |
1797 | } | 1786 | //} |
1798 | it = options[0].find("gendered"); | 1787 | it = options[0].find("gendered"); |
1799 | if(it != no_flag) | 1788 | if(it != no_flag) |
1800 | { | 1789 | { |
@@ -2086,6 +2075,16 @@ bool idle_startup() | |||
2086 | LLRect window(0, gViewerWindow->getWindowHeight(), gViewerWindow->getWindowWidth(), 0); | 2075 | LLRect window(0, gViewerWindow->getWindowHeight(), gViewerWindow->getWindowWidth(), 0); |
2087 | gViewerWindow->adjustControlRectanglesForFirstUse(window); | 2076 | gViewerWindow->adjustControlRectanglesForFirstUse(window); |
2088 | 2077 | ||
2078 | if (gSavedSettings.getBOOL("ShowRadar")) | ||
2079 | { | ||
2080 | LLFloaterAvatarList::showInstance(); | ||
2081 | } | ||
2082 | |||
2083 | if (gSavedSettings.getBOOL("ShowMOAPRadar")) | ||
2084 | { | ||
2085 | LLFloaterMOAPRadar::showInstance(); | ||
2086 | } | ||
2087 | |||
2089 | if(gSavedSettings.getBOOL("ShowMiniMap")) | 2088 | if(gSavedSettings.getBOOL("ShowMiniMap")) |
2090 | { | 2089 | { |
2091 | LLFloaterMap::showInstance(); | 2090 | LLFloaterMap::showInstance(); |
@@ -3270,39 +3269,6 @@ void LLStartUp::deletePasswordFromDisk() | |||
3270 | LLFile::remove(filepath); | 3269 | LLFile::remove(filepath); |
3271 | } | 3270 | } |
3272 | 3271 | ||
3273 | bool is_hex_string(U8* str, S32 len) | ||
3274 | { | ||
3275 | bool rv = true; | ||
3276 | U8* c = str; | ||
3277 | while(rv && len--) | ||
3278 | { | ||
3279 | switch(*c) | ||
3280 | { | ||
3281 | case '0': | ||
3282 | case '1': | ||
3283 | case '2': | ||
3284 | case '3': | ||
3285 | case '4': | ||
3286 | case '5': | ||
3287 | case '6': | ||
3288 | case '7': | ||
3289 | case '8': | ||
3290 | case '9': | ||
3291 | case 'a': | ||
3292 | case 'b': | ||
3293 | case 'c': | ||
3294 | case 'd': | ||
3295 | case 'e': | ||
3296 | case 'f': | ||
3297 | ++c; | ||
3298 | break; | ||
3299 | default: | ||
3300 | rv = false; | ||
3301 | break; | ||
3302 | } | ||
3303 | } | ||
3304 | return rv; | ||
3305 | } | ||
3306 | 3272 | ||
3307 | void show_first_run_dialog() | 3273 | void show_first_run_dialog() |
3308 | { | 3274 | { |
diff --git a/linden/indra/newview/llsurface.cpp b/linden/indra/newview/llsurface.cpp index 5a99e66..8692c80 100644 --- a/linden/indra/newview/llsurface.cpp +++ b/linden/indra/newview/llsurface.cpp | |||
@@ -1262,8 +1262,6 @@ BOOL LLSurface::generateWaterTexture(const F32 x, const F32 y, | |||
1262 | y_end = tex_width; | 1262 | y_end = tex_width; |
1263 | } | 1263 | } |
1264 | 1264 | ||
1265 | LLVector3d origin_global = from_region_handle(getRegion()->getHandle()); | ||
1266 | |||
1267 | // OK, for now, just have the composition value equal the height at the point. | 1265 | // OK, for now, just have the composition value equal the height at the point. |
1268 | LLVector3 location; | 1266 | LLVector3 location; |
1269 | LLColor4U coloru; | 1267 | LLColor4U coloru; |
diff --git a/linden/indra/newview/lltool.cpp b/linden/indra/newview/lltool.cpp index df2191b..f8188e3 100644 --- a/linden/indra/newview/lltool.cpp +++ b/linden/indra/newview/lltool.cpp | |||
@@ -40,10 +40,12 @@ | |||
40 | 40 | ||
41 | #include "llviewerwindow.h" | 41 | #include "llviewerwindow.h" |
42 | #include "lltoolcomp.h" | 42 | #include "lltoolcomp.h" |
43 | #include "lltoolface.h" | ||
43 | #include "lltoolfocus.h" | 44 | #include "lltoolfocus.h" |
44 | #include "llfocusmgr.h" | 45 | #include "llfocusmgr.h" |
45 | #include "llagent.h" | 46 | #include "llagent.h" |
46 | #include "llviewerjoystick.h" | 47 | #include "llviewerjoystick.h" |
48 | #include "qtoolalign.h" | ||
47 | 49 | ||
48 | extern BOOL gDebugClicks; | 50 | extern BOOL gDebugClicks; |
49 | 51 | ||
@@ -187,7 +189,7 @@ LLTool* LLTool::getOverrideTool(MASK mask) | |||
187 | { | 189 | { |
188 | return NULL; | 190 | return NULL; |
189 | } | 191 | } |
190 | if (mask & MASK_ALT) | 192 | else if (mask & MASK_ALT) |
191 | { | 193 | { |
192 | return LLToolCamera::getInstance(); | 194 | return LLToolCamera::getInstance(); |
193 | } | 195 | } |
diff --git a/linden/indra/newview/lltoolcomp.cpp b/linden/indra/newview/lltoolcomp.cpp index 7bf99f0..2ec1d8e 100644 --- a/linden/indra/newview/lltoolcomp.cpp +++ b/linden/indra/newview/lltoolcomp.cpp | |||
@@ -43,6 +43,7 @@ | |||
43 | #include "llmaniptranslate.h" | 43 | #include "llmaniptranslate.h" |
44 | #include "llmenugl.h" // for right-click menu hack | 44 | #include "llmenugl.h" // for right-click menu hack |
45 | #include "llselectmgr.h" | 45 | #include "llselectmgr.h" |
46 | #include "lltoolface.h" | ||
46 | #include "lltoolfocus.h" | 47 | #include "lltoolfocus.h" |
47 | #include "lltoolgrab.h" | 48 | #include "lltoolgrab.h" |
48 | #include "lltoolgun.h" | 49 | #include "lltoolgun.h" |
@@ -131,6 +132,36 @@ void LLToolComposite::handleSelect() | |||
131 | mSelected = TRUE; | 132 | mSelected = TRUE; |
132 | } | 133 | } |
133 | 134 | ||
135 | |||
136 | LLTool* LLToolComposite::getOverrideTool(MASK mask) | ||
137 | { | ||
138 | if (gKeyboard->getKeyDown('M') && | ||
139 | ((mask == (MASK_ALT | MASK_CONTROL)) || (mask == (MASK_ALT | MASK_CONTROL | MASK_SHIFT)))) | ||
140 | { | ||
141 | return QToolAlign::getInstance(); | ||
142 | } | ||
143 | else if (gKeyboard->getKeyDown('P') && | ||
144 | (mask == (MASK_CONTROL | MASK_SHIFT))) | ||
145 | { | ||
146 | return LLToolCompTranslate::getInstance(); | ||
147 | } | ||
148 | else if (gKeyboard->getKeyDown('F') && | ||
149 | (mask == (MASK_ALT | MASK_CONTROL))) | ||
150 | { | ||
151 | return LLToolFace::getInstance(); | ||
152 | } | ||
153 | else if (mask == (MASK_CONTROL | MASK_SHIFT)) | ||
154 | { | ||
155 | return LLToolCompScale::getInstance(); | ||
156 | } | ||
157 | else if (mask == MASK_CONTROL) | ||
158 | { | ||
159 | return LLToolCompRotate::getInstance(); | ||
160 | } | ||
161 | return LLTool::getOverrideTool(mask); | ||
162 | } | ||
163 | |||
164 | |||
134 | //---------------------------------------------------------------------------- | 165 | //---------------------------------------------------------------------------- |
135 | // LLToolCompInspect | 166 | // LLToolCompInspect |
136 | //---------------------------------------------------------------------------- | 167 | //---------------------------------------------------------------------------- |
@@ -277,24 +308,6 @@ BOOL LLToolCompTranslate::handleMouseUp(S32 x, S32 y, MASK mask) | |||
277 | return LLToolComposite::handleMouseUp(x, y, mask); | 308 | return LLToolComposite::handleMouseUp(x, y, mask); |
278 | } | 309 | } |
279 | 310 | ||
280 | LLTool* LLToolCompTranslate::getOverrideTool(MASK mask) | ||
281 | { | ||
282 | if (gKeyboard->getKeyDown('A') && | ||
283 | ((mask & MASK_CONTROL) || (mask == (MASK_CONTROL | MASK_SHIFT)))) | ||
284 | { | ||
285 | return QToolAlign::getInstance(); | ||
286 | } | ||
287 | else if (mask == MASK_CONTROL) | ||
288 | { | ||
289 | return LLToolCompRotate::getInstance(); | ||
290 | } | ||
291 | else if (mask == (MASK_CONTROL | MASK_SHIFT)) | ||
292 | { | ||
293 | return LLToolCompScale::getInstance(); | ||
294 | } | ||
295 | return LLToolComposite::getOverrideTool(mask); | ||
296 | } | ||
297 | |||
298 | BOOL LLToolCompTranslate::handleDoubleClick(S32 x, S32 y, MASK mask) | 311 | BOOL LLToolCompTranslate::handleDoubleClick(S32 x, S32 y, MASK mask) |
299 | { | 312 | { |
300 | if (mManip->getSelection()->isEmpty() && mManip->getHighlightedPart() == LLManip::LL_NO_PART) | 313 | if (mManip->getSelection()->isEmpty() && mManip->getHighlightedPart() == LLManip::LL_NO_PART) |
@@ -401,22 +414,6 @@ BOOL LLToolCompScale::handleMouseUp(S32 x, S32 y, MASK mask) | |||
401 | return LLToolComposite::handleMouseUp(x, y, mask); | 414 | return LLToolComposite::handleMouseUp(x, y, mask); |
402 | } | 415 | } |
403 | 416 | ||
404 | LLTool* LLToolCompScale::getOverrideTool(MASK mask) | ||
405 | { | ||
406 | if (gKeyboard->getKeyDown('A') && | ||
407 | ((mask & MASK_CONTROL) || (mask == (MASK_CONTROL | MASK_SHIFT)))) | ||
408 | { | ||
409 | return QToolAlign::getInstance(); | ||
410 | } | ||
411 | else if (mask == MASK_CONTROL) | ||
412 | { | ||
413 | return LLToolCompRotate::getInstance(); | ||
414 | } | ||
415 | |||
416 | return LLToolComposite::getOverrideTool(mask); | ||
417 | } | ||
418 | |||
419 | |||
420 | BOOL LLToolCompScale::handleDoubleClick(S32 x, S32 y, MASK mask) | 417 | BOOL LLToolCompScale::handleDoubleClick(S32 x, S32 y, MASK mask) |
421 | { | 418 | { |
422 | if (!mManip->getSelection()->isEmpty() && mManip->getHighlightedPart() == LLManip::LL_NO_PART) | 419 | if (!mManip->getSelection()->isEmpty() && mManip->getHighlightedPart() == LLManip::LL_NO_PART) |
@@ -471,18 +468,16 @@ LLToolCompCreate::~LLToolCompCreate() | |||
471 | 468 | ||
472 | BOOL LLToolCompCreate::handleMouseDown(S32 x, S32 y, MASK mask) | 469 | BOOL LLToolCompCreate::handleMouseDown(S32 x, S32 y, MASK mask) |
473 | { | 470 | { |
474 | BOOL handled = FALSE; | ||
475 | mMouseDown = TRUE; | 471 | mMouseDown = TRUE; |
476 | 472 | ||
477 | if ( (mask == MASK_SHIFT) || (mask == MASK_CONTROL) ) | 473 | if ( (mask == MASK_SHIFT) || (mask == MASK_CONTROL) ) |
478 | { | 474 | { |
479 | gViewerWindow->pickAsync(x, y, mask, pickCallback); | 475 | gViewerWindow->pickAsync(x, y, mask, pickCallback); |
480 | handled = TRUE; | ||
481 | } | 476 | } |
482 | else | 477 | else |
483 | { | 478 | { |
484 | setCurrentTool( mPlacer ); | 479 | setCurrentTool( mPlacer ); |
485 | handled = mPlacer->placeObject( x, y, mask ); | 480 | mPlacer->placeObject( x, y, mask ); |
486 | } | 481 | } |
487 | 482 | ||
488 | mObjectPlacedOnMouseDown = TRUE; | 483 | mObjectPlacedOnMouseDown = TRUE; |
@@ -606,20 +601,6 @@ BOOL LLToolCompRotate::handleMouseUp(S32 x, S32 y, MASK mask) | |||
606 | return LLToolComposite::handleMouseUp(x, y, mask); | 601 | return LLToolComposite::handleMouseUp(x, y, mask); |
607 | } | 602 | } |
608 | 603 | ||
609 | LLTool* LLToolCompRotate::getOverrideTool(MASK mask) | ||
610 | { | ||
611 | if (gKeyboard->getKeyDown('A') && | ||
612 | ((mask & MASK_CONTROL) || (mask == (MASK_CONTROL | MASK_SHIFT)))) | ||
613 | { | ||
614 | return QToolAlign::getInstance(); | ||
615 | } | ||
616 | else if (mask == (MASK_CONTROL | MASK_SHIFT)) | ||
617 | { | ||
618 | return LLToolCompScale::getInstance(); | ||
619 | } | ||
620 | return LLToolComposite::getOverrideTool(mask); | ||
621 | } | ||
622 | |||
623 | BOOL LLToolCompRotate::handleDoubleClick(S32 x, S32 y, MASK mask) | 604 | BOOL LLToolCompRotate::handleDoubleClick(S32 x, S32 y, MASK mask) |
624 | { | 605 | { |
625 | if (!mManip->getSelection()->isEmpty() && mManip->getHighlightedPart() == LLManip::LL_NO_PART) | 606 | if (!mManip->getSelection()->isEmpty() && mManip->getHighlightedPart() == LLManip::LL_NO_PART) |
diff --git a/linden/indra/newview/lltoolcomp.h b/linden/indra/newview/lltoolcomp.h index 81ed0ba..cb5e544 100644 --- a/linden/indra/newview/lltoolcomp.h +++ b/linden/indra/newview/lltoolcomp.h | |||
@@ -84,6 +84,9 @@ public: | |||
84 | { mCur->localPointToScreen(local_x, local_y, screen_x, screen_y); } | 84 | { mCur->localPointToScreen(local_x, local_y, screen_x, screen_y); } |
85 | 85 | ||
86 | BOOL isSelecting(); | 86 | BOOL isSelecting(); |
87 | |||
88 | virtual LLTool* getOverrideTool(MASK mask); | ||
89 | |||
87 | protected: | 90 | protected: |
88 | void setCurrentTool( LLTool* new_tool ); | 91 | void setCurrentTool( LLTool* new_tool ); |
89 | LLTool* getCurrentTool() { return mCur; } | 92 | LLTool* getCurrentTool() { return mCur; } |
@@ -113,8 +116,8 @@ public: | |||
113 | virtual ~LLToolCompInspect(); | 116 | virtual ~LLToolCompInspect(); |
114 | 117 | ||
115 | // Overridden from LLToolComposite | 118 | // Overridden from LLToolComposite |
116 | virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask); | 119 | virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask); |
117 | virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask); | 120 | virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask); |
118 | 121 | ||
119 | static void pickCallback(const LLPickInfo& pick_info); | 122 | static void pickCallback(const LLPickInfo& pick_info); |
120 | }; | 123 | }; |
@@ -135,8 +138,6 @@ public: | |||
135 | virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask); // Returns to the default tool | 138 | virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask); // Returns to the default tool |
136 | virtual void render(); | 139 | virtual void render(); |
137 | 140 | ||
138 | virtual LLTool* getOverrideTool(MASK mask); | ||
139 | |||
140 | static void pickCallback(const LLPickInfo& pick_info); | 141 | static void pickCallback(const LLPickInfo& pick_info); |
141 | }; | 142 | }; |
142 | 143 | ||
@@ -150,14 +151,12 @@ public: | |||
150 | virtual ~LLToolCompScale(); | 151 | virtual ~LLToolCompScale(); |
151 | 152 | ||
152 | // Overridden from LLToolComposite | 153 | // Overridden from LLToolComposite |
153 | virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask); | 154 | virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask); |
154 | virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask); | 155 | virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask); |
155 | virtual BOOL handleHover(S32 x, S32 y, MASK mask); | 156 | virtual BOOL handleHover(S32 x, S32 y, MASK mask); |
156 | virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask); // Returns to the default tool | 157 | virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask); // Returns to the default tool |
157 | virtual void render(); | 158 | virtual void render(); |
158 | 159 | ||
159 | virtual LLTool* getOverrideTool(MASK mask); | ||
160 | |||
161 | static void pickCallback(const LLPickInfo& pick_info); | 160 | static void pickCallback(const LLPickInfo& pick_info); |
162 | }; | 161 | }; |
163 | 162 | ||
@@ -172,17 +171,13 @@ public: | |||
172 | virtual ~LLToolCompRotate(); | 171 | virtual ~LLToolCompRotate(); |
173 | 172 | ||
174 | // Overridden from LLToolComposite | 173 | // Overridden from LLToolComposite |
175 | virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask); | 174 | virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask); |
176 | virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask); | 175 | virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask); |
177 | virtual BOOL handleHover(S32 x, S32 y, MASK mask); | 176 | virtual BOOL handleHover(S32 x, S32 y, MASK mask); |
178 | virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask); | 177 | virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask); |
179 | virtual void render(); | 178 | virtual void render(); |
180 | 179 | ||
181 | virtual LLTool* getOverrideTool(MASK mask); | ||
182 | |||
183 | static void pickCallback(const LLPickInfo& pick_info); | 180 | static void pickCallback(const LLPickInfo& pick_info); |
184 | |||
185 | protected: | ||
186 | }; | 181 | }; |
187 | 182 | ||
188 | //----------------------------------------------------------------------- | 183 | //----------------------------------------------------------------------- |
@@ -195,14 +190,14 @@ public: | |||
195 | virtual ~LLToolCompCreate(); | 190 | virtual ~LLToolCompCreate(); |
196 | 191 | ||
197 | // Overridden from LLToolComposite | 192 | // Overridden from LLToolComposite |
198 | virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask); | 193 | virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask); |
199 | virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask); | 194 | virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask); |
200 | virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask); | 195 | virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask); |
201 | 196 | ||
202 | static void pickCallback(const LLPickInfo& pick_info); | 197 | static void pickCallback(const LLPickInfo& pick_info); |
203 | protected: | 198 | protected: |
204 | LLToolPlacer* mPlacer; | 199 | LLToolPlacer* mPlacer; |
205 | BOOL mObjectPlacedOnMouseDown; | 200 | BOOL mObjectPlacedOnMouseDown; |
206 | }; | 201 | }; |
207 | 202 | ||
208 | 203 | ||
@@ -220,7 +215,7 @@ public: | |||
220 | virtual ~LLToolCompGun(); | 215 | virtual ~LLToolCompGun(); |
221 | 216 | ||
222 | // Overridden from LLToolComposite | 217 | // Overridden from LLToolComposite |
223 | virtual BOOL handleHover(S32 x, S32 y, MASK mask); | 218 | virtual BOOL handleHover(S32 x, S32 y, MASK mask); |
224 | virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask); | 219 | virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask); |
225 | virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask); | 220 | virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask); |
226 | virtual BOOL handleRightMouseDown(S32 x, S32 y, MASK mask); | 221 | virtual BOOL handleRightMouseDown(S32 x, S32 y, MASK mask); |
diff --git a/linden/indra/newview/lltooldraganddrop.cpp b/linden/indra/newview/lltooldraganddrop.cpp index 18c4917..2adcf14 100644 --- a/linden/indra/newview/lltooldraganddrop.cpp +++ b/linden/indra/newview/lltooldraganddrop.cpp | |||
@@ -1521,18 +1521,6 @@ void LLToolDragAndDrop::dropInventory(LLViewerObject* hit_obj, | |||
1521 | gFloaterTools->dirty(); | 1521 | gFloaterTools->dirty(); |
1522 | } | 1522 | } |
1523 | 1523 | ||
1524 | struct LLGiveInventoryInfo | ||
1525 | { | ||
1526 | LLUUID mToAgentID; | ||
1527 | LLUUID mInventoryObjectID; | ||
1528 | LLUUID mIMSessionID; | ||
1529 | LLGiveInventoryInfo(const LLUUID& to_agent, const LLUUID& obj_id, const LLUUID &im_session_id = LLUUID::null) : | ||
1530 | mToAgentID(to_agent), | ||
1531 | mInventoryObjectID(obj_id), | ||
1532 | mIMSessionID(im_session_id) | ||
1533 | {} | ||
1534 | }; | ||
1535 | |||
1536 | void LLToolDragAndDrop::giveInventory(const LLUUID& to_agent, | 1524 | void LLToolDragAndDrop::giveInventory(const LLUUID& to_agent, |
1537 | LLInventoryItem* item, | 1525 | LLInventoryItem* item, |
1538 | const LLUUID& im_session_id) | 1526 | const LLUUID& im_session_id) |
@@ -1701,8 +1689,6 @@ void LLToolDragAndDrop::giveInventoryCategory(const LLUUID& to_agent, | |||
1701 | } | 1689 | } |
1702 | else | 1690 | else |
1703 | { | 1691 | { |
1704 | LLGiveInventoryInfo* info = NULL; | ||
1705 | info = new LLGiveInventoryInfo(to_agent, cat->getUUID(), im_session_id); | ||
1706 | LLSD args; | 1692 | LLSD args; |
1707 | args["COUNT"] = llformat("%d",giveable.countNoCopy()); | 1693 | args["COUNT"] = llformat("%d",giveable.countNoCopy()); |
1708 | LLSD payload; | 1694 | LLSD payload; |
diff --git a/linden/indra/newview/lltoolface.cpp b/linden/indra/newview/lltoolface.cpp index 735ecd9..834bf76 100644 --- a/linden/indra/newview/lltoolface.cpp +++ b/linden/indra/newview/lltoolface.cpp | |||
@@ -57,7 +57,7 @@ | |||
57 | // | 57 | // |
58 | 58 | ||
59 | LLToolFace::LLToolFace() | 59 | LLToolFace::LLToolFace() |
60 | : LLTool(std::string("Texture")) | 60 | : LLToolComposite(std::string("Texture")) |
61 | { } | 61 | { } |
62 | 62 | ||
63 | 63 | ||
@@ -156,6 +156,7 @@ void LLToolFace::pickCallback(const LLPickInfo& pick_info) | |||
156 | 156 | ||
157 | void LLToolFace::handleSelect() | 157 | void LLToolFace::handleSelect() |
158 | { | 158 | { |
159 | gFloaterTools->setStatusText("selectface"); | ||
159 | // From now on, draw faces | 160 | // From now on, draw faces |
160 | LLSelectMgr::getInstance()->setTEMode(TRUE); | 161 | LLSelectMgr::getInstance()->setTEMode(TRUE); |
161 | } | 162 | } |
diff --git a/linden/indra/newview/lltoolface.h b/linden/indra/newview/lltoolface.h index f2b7d23..fc6f7de 100644 --- a/linden/indra/newview/lltoolface.h +++ b/linden/indra/newview/lltoolface.h | |||
@@ -34,12 +34,13 @@ | |||
34 | #define LL_LLTOOLFACE_H | 34 | #define LL_LLTOOLFACE_H |
35 | 35 | ||
36 | #include "lltool.h" | 36 | #include "lltool.h" |
37 | #include "lltoolcomp.h" | ||
37 | 38 | ||
38 | class LLViewerObject; | 39 | class LLViewerObject; |
39 | class LLPickInfo; | 40 | class LLPickInfo; |
40 | 41 | ||
41 | class LLToolFace | 42 | class LLToolFace |
42 | : public LLTool, public LLSingleton<LLToolFace> | 43 | : public LLToolComposite, public LLSingleton<LLToolFace> |
43 | { | 44 | { |
44 | public: | 45 | public: |
45 | LLToolFace(); | 46 | LLToolFace(); |
diff --git a/linden/indra/newview/lltoolfocus.cpp b/linden/indra/newview/lltoolfocus.cpp index ae0cd1e..c0dedb6 100644 --- a/linden/indra/newview/lltoolfocus.cpp +++ b/linden/indra/newview/lltoolfocus.cpp | |||
@@ -318,8 +318,6 @@ BOOL LLToolCamera::handleHover(S32 x, S32 y, MASK mask) | |||
318 | S32 dx = gViewerWindow->getCurrentMouseDX(); | 318 | S32 dx = gViewerWindow->getCurrentMouseDX(); |
319 | S32 dy = gViewerWindow->getCurrentMouseDY(); | 319 | S32 dy = gViewerWindow->getCurrentMouseDY(); |
320 | 320 | ||
321 | BOOL moved_outside_slop = FALSE; | ||
322 | |||
323 | if (hasMouseCapture() && mValidClickPoint) | 321 | if (hasMouseCapture() && mValidClickPoint) |
324 | { | 322 | { |
325 | mAccumX += llabs(dx); | 323 | mAccumX += llabs(dx); |
@@ -327,19 +325,11 @@ BOOL LLToolCamera::handleHover(S32 x, S32 y, MASK mask) | |||
327 | 325 | ||
328 | if (mAccumX >= SLOP_RANGE) | 326 | if (mAccumX >= SLOP_RANGE) |
329 | { | 327 | { |
330 | if (!mOutsideSlopX) | ||
331 | { | ||
332 | moved_outside_slop = TRUE; | ||
333 | } | ||
334 | mOutsideSlopX = TRUE; | 328 | mOutsideSlopX = TRUE; |
335 | } | 329 | } |
336 | 330 | ||
337 | if (mAccumY >= SLOP_RANGE) | 331 | if (mAccumY >= SLOP_RANGE) |
338 | { | 332 | { |
339 | if (!mOutsideSlopY) | ||
340 | { | ||
341 | moved_outside_slop = TRUE; | ||
342 | } | ||
343 | mOutsideSlopY = TRUE; | 333 | mOutsideSlopY = TRUE; |
344 | } | 334 | } |
345 | } | 335 | } |
diff --git a/linden/indra/newview/lltoolmgr.cpp b/linden/indra/newview/lltoolmgr.cpp index 675412d..9e7bc5c 100644 --- a/linden/indra/newview/lltoolmgr.cpp +++ b/linden/indra/newview/lltoolmgr.cpp | |||
@@ -193,7 +193,7 @@ LLTool* LLToolMgr::getCurrentTool() | |||
193 | else | 193 | else |
194 | { | 194 | { |
195 | // due to window management weirdness we can get here with gToolNull | 195 | // due to window management weirdness we can get here with gToolNull |
196 | bool can_override = mBaseTool && (mBaseTool != gToolNull) ; | 196 | bool can_override = mBaseTool && (mBaseTool != gToolNull); |
197 | mOverrideTool = can_override ? mBaseTool->getOverrideTool(override_mask) : NULL; | 197 | mOverrideTool = can_override ? mBaseTool->getOverrideTool(override_mask) : NULL; |
198 | 198 | ||
199 | // use keyboard-override tool if available otherwise drop back to base tool | 199 | // use keyboard-override tool if available otherwise drop back to base tool |
diff --git a/linden/indra/newview/llurlhistory.cpp b/linden/indra/newview/llurlhistory.cpp index fd161a2..e3de706 100644 --- a/linden/indra/newview/llurlhistory.cpp +++ b/linden/indra/newview/llurlhistory.cpp | |||
@@ -119,8 +119,6 @@ void LLURLHistory::addURL(const std::string& collection, const std::string& url) | |||
119 | // static | 119 | // static |
120 | void LLURLHistory::removeURL(const std::string& collection, const std::string& url) | 120 | void LLURLHistory::removeURL(const std::string& collection, const std::string& url) |
121 | { | 121 | { |
122 | LLSD::array_iterator iter = sHistorySD[collection].beginArray(); | ||
123 | LLSD::array_iterator end = sHistorySD[collection].endArray(); | ||
124 | for(int index = 0; index < sHistorySD[collection].size(); index++) | 122 | for(int index = 0; index < sHistorySD[collection].size(); index++) |
125 | { | 123 | { |
126 | if(sHistorySD[collection].get(index).asString() == url) | 124 | if(sHistorySD[collection].get(index).asString() == url) |
diff --git a/linden/indra/newview/llviewercamera.cpp b/linden/indra/newview/llviewercamera.cpp index fecab65..69a5621 100644 --- a/linden/indra/newview/llviewercamera.cpp +++ b/linden/indra/newview/llviewercamera.cpp | |||
@@ -131,9 +131,6 @@ void LLViewerCamera::updateCameraLocation(const LLVector3 ¢er, | |||
131 | 131 | ||
132 | mLastPointOfInterest = point_of_interest; | 132 | mLastPointOfInterest = point_of_interest; |
133 | 133 | ||
134 | // constrain to max distance from avatar | ||
135 | LLVector3 camera_offset = center - gAgent.getPositionAgent(); | ||
136 | |||
137 | LLViewerRegion * regp = gAgent.getRegion(); | 134 | LLViewerRegion * regp = gAgent.getRegion(); |
138 | F32 water_height = (NULL != regp) ? regp->getWaterHeight() : 0.f; | 135 | F32 water_height = (NULL != regp) ? regp->getWaterHeight() : 0.f; |
139 | 136 | ||
@@ -306,7 +303,7 @@ void LLViewerCamera::setPerspective(BOOL for_selection, | |||
306 | { | 303 | { |
307 | F32 fov_y, aspect; | 304 | F32 fov_y, aspect; |
308 | fov_y = RAD_TO_DEG * getView(); | 305 | fov_y = RAD_TO_DEG * getView(); |
309 | BOOL z_default_near, z_default_far = FALSE; | 306 | BOOL z_default_far = FALSE; |
310 | if (z_far <= 0) | 307 | if (z_far <= 0) |
311 | { | 308 | { |
312 | z_default_far = TRUE; | 309 | z_default_far = TRUE; |
@@ -314,7 +311,6 @@ void LLViewerCamera::setPerspective(BOOL for_selection, | |||
314 | } | 311 | } |
315 | if (z_near <= 0) | 312 | if (z_near <= 0) |
316 | { | 313 | { |
317 | z_default_near = TRUE; | ||
318 | z_near = getNear(); | 314 | z_near = getNear(); |
319 | } | 315 | } |
320 | aspect = getAspect(); | 316 | aspect = getAspect(); |
diff --git a/linden/indra/newview/llviewerdisplay.cpp b/linden/indra/newview/llviewerdisplay.cpp index 5d9a55d..4495ecc 100644 --- a/linden/indra/newview/llviewerdisplay.cpp +++ b/linden/indra/newview/llviewerdisplay.cpp | |||
@@ -977,7 +977,6 @@ void render_hud_attachments() | |||
977 | if (LLPipeline::sShowHUDAttachments && !gDisconnected && setup_hud_matrices()) | 977 | if (LLPipeline::sShowHUDAttachments && !gDisconnected && setup_hud_matrices()) |
978 | { | 978 | { |
979 | LLCamera hud_cam = *LLViewerCamera::getInstance(); | 979 | LLCamera hud_cam = *LLViewerCamera::getInstance(); |
980 | LLVector3 origin = hud_cam.getOrigin(); | ||
981 | hud_cam.setOrigin(-1.f,0,0); | 980 | hud_cam.setOrigin(-1.f,0,0); |
982 | hud_cam.setAxes(LLVector3(1,0,0), LLVector3(0,1,0), LLVector3(0,0,1)); | 981 | hud_cam.setAxes(LLVector3(1,0,0), LLVector3(0,1,0), LLVector3(0,0,1)); |
983 | LLViewerCamera::updateFrustumPlanes(hud_cam, TRUE); | 982 | LLViewerCamera::updateFrustumPlanes(hud_cam, TRUE); |
diff --git a/linden/indra/newview/llviewergenericmessage.cpp b/linden/indra/newview/llviewergenericmessage.cpp index 0bbcadd..e4b325d 100644 --- a/linden/indra/newview/llviewergenericmessage.cpp +++ b/linden/indra/newview/llviewergenericmessage.cpp | |||
@@ -1,12 +1,12 @@ | |||
1 | /** | 1 | /** |
2 | * @file llviewergenericmessage.cpp | 2 | * @file llviewergenericmessage.cpp |
3 | * @brief Handle processing of "generic messages" which contain short lists of strings. | 3 | * @brief Handle processing of "generic messages" which contain short lists of strings. |
4 | * @author James Cook | 4 | * @author James Cook |
5 | * | 5 | * |
6 | * $LicenseInfo:firstyear=2007&license=viewergpl$ | 6 | * $LicenseInfo:firstyear=2007&license=viewergpl$ |
7 | * | 7 | * |
8 | * Copyright (c) 2007-2009, Linden Research, Inc. | 8 | * Copyright (c) 2007-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 |
@@ -14,17 +14,17 @@ | |||
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. |
@@ -39,7 +39,7 @@ | |||
39 | #include "message.h" | 39 | #include "message.h" |
40 | #include "llagent.h" | 40 | #include "llagent.h" |
41 | #include "lluuid.h" | 41 | #include "lluuid.h" |
42 | #include "lightshare.h" | 42 | #include "llettherebelight.h" |
43 | 43 | ||
44 | 44 | ||
45 | LLDispatcher gGenericDispatcher; | 45 | LLDispatcher gGenericDispatcher; |
@@ -84,16 +84,16 @@ void process_generic_message(LLMessageSystem* msg, void**) | |||
84 | msg->getUUID("AgentData", "AgentID", agent_id); | 84 | msg->getUUID("AgentData", "AgentID", agent_id); |
85 | std::string method; | 85 | std::string method; |
86 | msg->getStringFast(_PREHASH_MethodData, _PREHASH_Method, method); | 86 | msg->getStringFast(_PREHASH_MethodData, _PREHASH_Method, method); |
87 | 87 | ||
88 | // TODO: Use a proper dispatcher. | 88 | // TODO: Use a proper dispatcher. |
89 | if(method == "Windlight") | 89 | if(method == "Windlight") |
90 | { | 90 | { |
91 | WindlightMessage::processWindlight(msg, NULL); | 91 | LightShare::processWindlight(msg, NULL); |
92 | return; | 92 | return; |
93 | } | 93 | } |
94 | else if(method == "WindlightReset") | 94 | else if(method == "WindlightReset") |
95 | { | 95 | { |
96 | WindlightMessage::resetRegion(); | 96 | LightShare::resetRegion(); |
97 | return; | 97 | return; |
98 | } | 98 | } |
99 | 99 | ||
@@ -111,7 +111,7 @@ void process_generic_message(LLMessageSystem* msg, void**) | |||
111 | 111 | ||
112 | if(!gGenericDispatcher.dispatch(request, invoice, strings)) | 112 | if(!gGenericDispatcher.dispatch(request, invoice, strings)) |
113 | { | 113 | { |
114 | llwarns << "GenericMessage " << request << " failed to dispatch" | 114 | llwarns << "GenericMessage " << request << " failed to dispatch" |
115 | << llendl; | 115 | << llendl; |
116 | } | 116 | } |
117 | } | 117 | } |
diff --git a/linden/indra/newview/llviewermenu.cpp b/linden/indra/newview/llviewermenu.cpp index f2f37c4..0b76f2c 100644 --- a/linden/indra/newview/llviewermenu.cpp +++ b/linden/indra/newview/llviewermenu.cpp | |||
@@ -238,6 +238,8 @@ | |||
238 | #include "llfloaterteleporthistory.h" | 238 | #include "llfloaterteleporthistory.h" |
239 | #include "slfloatermediafilter.h" | 239 | #include "slfloatermediafilter.h" |
240 | 240 | ||
241 | #include "rcmoapradar.h" | ||
242 | |||
241 | using namespace LLVOAvatarDefines; | 243 | using namespace LLVOAvatarDefines; |
242 | void init_client_menu(LLMenuGL* menu); | 244 | void init_client_menu(LLMenuGL* menu); |
243 | void init_server_menu(LLMenuGL* menu); | 245 | void init_server_menu(LLMenuGL* menu); |
@@ -1096,10 +1098,10 @@ void init_debug_ui_menu(LLMenuGL* menu) | |||
1096 | menu->append(new LLMenuItemCallGL("Editable UI", &edit_ui)); | 1098 | menu->append(new LLMenuItemCallGL("Editable UI", &edit_ui)); |
1097 | menu->append(new LLMenuItemCallGL( "Dump SelectMgr", &dump_select_mgr)); | 1099 | menu->append(new LLMenuItemCallGL( "Dump SelectMgr", &dump_select_mgr)); |
1098 | menu->append(new LLMenuItemCallGL( "Dump Inventory", &dump_inventory)); | 1100 | menu->append(new LLMenuItemCallGL( "Dump Inventory", &dump_inventory)); |
1099 | menu->append(new LLMenuItemCallGL( "Dump Focus Holder", &handle_dump_focus, NULL, NULL, 'F', MASK_ALT | MASK_CONTROL)); | 1101 | menu->append(new LLMenuItemCallGL( "Dump Focus Holder", &handle_dump_focus)); |
1100 | menu->append(new LLMenuItemCallGL( "Print Selected Object Info", &print_object_info, NULL, NULL, 'P', MASK_CONTROL|MASK_SHIFT )); | 1102 | menu->append(new LLMenuItemCallGL( "Print Selected Object Info", &print_object_info)); |
1101 | menu->append(new LLMenuItemCallGL( "Print Agent Info", &print_agent_nvpairs, NULL, NULL, 'P', MASK_SHIFT )); | 1103 | menu->append(new LLMenuItemCallGL( "Print Agent Info", &print_agent_nvpairs)); |
1102 | menu->append(new LLMenuItemCallGL( "Memory Stats", &output_statistics, NULL, NULL, 'M', MASK_SHIFT | MASK_ALT | MASK_CONTROL)); | 1104 | menu->append(new LLMenuItemCallGL( "Memory Stats", &output_statistics)); |
1103 | menu->append(new LLMenuItemCheckGL("Double-Click Auto-Pilot", | 1105 | menu->append(new LLMenuItemCheckGL("Double-Click Auto-Pilot", |
1104 | menu_toggle_control, NULL, menu_check_control, | 1106 | menu_toggle_control, NULL, menu_check_control, |
1105 | (void*)"DoubleClickAutoPilot")); | 1107 | (void*)"DoubleClickAutoPilot")); |
@@ -1256,7 +1258,6 @@ void init_debug_rendering_menu(LLMenuGL* menu) | |||
1256 | sub_menu->append(new LLMenuItemCheckGL("Octree", &LLPipeline::toggleRenderDebug, NULL, | 1258 | sub_menu->append(new LLMenuItemCheckGL("Octree", &LLPipeline::toggleRenderDebug, NULL, |
1257 | &LLPipeline::toggleRenderDebugControl, | 1259 | &LLPipeline::toggleRenderDebugControl, |
1258 | (void*)LLPipeline::RENDER_DEBUG_OCTREE)); | 1260 | (void*)LLPipeline::RENDER_DEBUG_OCTREE)); |
1259 | // For Imprudence 1.3 - need to XUIfy | ||
1260 | sub_menu->append(new LLMenuItemCheckGL("Shadow Frusta", &LLPipeline::toggleRenderDebug, NULL, | 1261 | sub_menu->append(new LLMenuItemCheckGL("Shadow Frusta", &LLPipeline::toggleRenderDebug, NULL, |
1261 | &LLPipeline::toggleRenderDebugControl, | 1262 | &LLPipeline::toggleRenderDebugControl, |
1262 | (void*)LLPipeline::RENDER_DEBUG_SHADOW_FRUSTA)); | 1263 | (void*)LLPipeline::RENDER_DEBUG_SHADOW_FRUSTA)); |
@@ -5216,6 +5217,24 @@ class LLViewEnableLastChatter : public view_listener_t | |||
5216 | } | 5217 | } |
5217 | }; | 5218 | }; |
5218 | 5219 | ||
5220 | class LLViewToggleRadar: public view_listener_t | ||
5221 | { | ||
5222 | bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) | ||
5223 | { | ||
5224 | LLFloaterAvatarList::toggle(0); | ||
5225 | return true; | ||
5226 | } | ||
5227 | }; | ||
5228 | |||
5229 | class LLViewToggleMOAPRadar: public view_listener_t | ||
5230 | { | ||
5231 | bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) | ||
5232 | { | ||
5233 | LLFloaterMOAPRadar::toggle(0); | ||
5234 | return true; | ||
5235 | } | ||
5236 | }; | ||
5237 | |||
5219 | class LLEditEnableDeselect : public view_listener_t | 5238 | class LLEditEnableDeselect : public view_listener_t |
5220 | { | 5239 | { |
5221 | bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) | 5240 | bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) |
@@ -8946,12 +8965,6 @@ class LLAdvancedToggleAssetBrowser: public view_listener_t | |||
8946 | { | 8965 | { |
8947 | //open the floater | 8966 | //open the floater |
8948 | LLFloaterAssetBrowser::show(0); | 8967 | LLFloaterAssetBrowser::show(0); |
8949 | |||
8950 | bool vis = false; | ||
8951 | if(LLFloaterAssetBrowser::getInstance()) | ||
8952 | { | ||
8953 | vis = (bool)LLFloaterAssetBrowser::getInstance()->getVisible(); | ||
8954 | } | ||
8955 | return true; | 8968 | return true; |
8956 | } | 8969 | } |
8957 | }; | 8970 | }; |
@@ -9058,7 +9071,7 @@ class LLAdvancedToggleRenderType : public view_listener_t | |||
9058 | { | 9071 | { |
9059 | bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) | 9072 | bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) |
9060 | { | 9073 | { |
9061 | U32 render_type = render_type_from_string( userdata.asString() ); | 9074 | intptr_t render_type = render_type_from_string( userdata.asString() ); |
9062 | if ( render_type != 0 ) | 9075 | if ( render_type != 0 ) |
9063 | { | 9076 | { |
9064 | LLPipeline::toggleRenderTypeControl( (void*)render_type ); | 9077 | LLPipeline::toggleRenderTypeControl( (void*)render_type ); |
@@ -9072,7 +9085,7 @@ class LLAdvancedCheckRenderType : public view_listener_t | |||
9072 | { | 9085 | { |
9073 | bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) | 9086 | bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) |
9074 | { | 9087 | { |
9075 | U32 render_type = render_type_from_string( userdata["data"].asString() ); | 9088 | intptr_t render_type = render_type_from_string( userdata["data"].asString() ); |
9076 | bool new_value = false; | 9089 | bool new_value = false; |
9077 | 9090 | ||
9078 | if ( render_type != 0 ) | 9091 | if ( render_type != 0 ) |
@@ -9138,7 +9151,7 @@ class LLAdvancedToggleFeature : public view_listener_t | |||
9138 | { | 9151 | { |
9139 | bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) | 9152 | bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) |
9140 | { | 9153 | { |
9141 | U32 feature = feature_from_string( userdata.asString() ); | 9154 | intptr_t feature = feature_from_string( userdata.asString() ); |
9142 | 9155 | ||
9143 | if ( feature != 0 ) | 9156 | if ( feature != 0 ) |
9144 | { | 9157 | { |
@@ -9154,7 +9167,7 @@ class LLAdvancedCheckFeature : public view_listener_t | |||
9154 | { | 9167 | { |
9155 | bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) | 9168 | bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) |
9156 | { | 9169 | { |
9157 | U32 feature = feature_from_string( userdata["data"].asString() ); | 9170 | intptr_t feature = feature_from_string( userdata["data"].asString() ); |
9158 | bool new_value = false; | 9171 | bool new_value = false; |
9159 | 9172 | ||
9160 | if ( feature != 0 ) | 9173 | if ( feature != 0 ) |
@@ -9249,6 +9262,10 @@ U32 info_display_from_string(std::string info_display) | |||
9249 | { | 9262 | { |
9250 | return LLPipeline::RENDER_DEBUG_SCULPTED; | 9263 | return LLPipeline::RENDER_DEBUG_SCULPTED; |
9251 | } | 9264 | } |
9265 | else if ("shadow frusta" == info_display) | ||
9266 | { | ||
9267 | return LLPipeline::RENDER_DEBUG_SHADOW_FRUSTA; | ||
9268 | } | ||
9252 | else | 9269 | else |
9253 | { | 9270 | { |
9254 | return 0; | 9271 | return 0; |
@@ -9260,7 +9277,7 @@ class LLAdvancedToggleInfoDisplay : public view_listener_t | |||
9260 | { | 9277 | { |
9261 | bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) | 9278 | bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) |
9262 | { | 9279 | { |
9263 | U32 info_display = info_display_from_string( userdata.asString() ); | 9280 | intptr_t info_display = info_display_from_string( userdata.asString() ); |
9264 | 9281 | ||
9265 | if ( info_display != 0 ) | 9282 | if ( info_display != 0 ) |
9266 | { | 9283 | { |
@@ -9276,7 +9293,7 @@ class LLAdvancedCheckInfoDisplay : public view_listener_t | |||
9276 | { | 9293 | { |
9277 | bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) | 9294 | bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) |
9278 | { | 9295 | { |
9279 | U32 info_display = info_display_from_string( userdata["data"].asString() ); | 9296 | intptr_t info_display = info_display_from_string( userdata["data"].asString() ); |
9280 | bool new_value = false; | 9297 | bool new_value = false; |
9281 | 9298 | ||
9282 | if ( info_display != 0 ) | 9299 | if ( info_display != 0 ) |
@@ -11215,6 +11232,8 @@ void initialize_menus() | |||
11215 | addMenu(new LLViewEnableMouselook(), "View.EnableMouselook"); | 11232 | addMenu(new LLViewEnableMouselook(), "View.EnableMouselook"); |
11216 | addMenu(new LLViewEnableJoystickFlycam(), "View.EnableJoystickFlycam"); | 11233 | addMenu(new LLViewEnableJoystickFlycam(), "View.EnableJoystickFlycam"); |
11217 | addMenu(new LLViewEnableLastChatter(), "View.EnableLastChatter"); | 11234 | addMenu(new LLViewEnableLastChatter(), "View.EnableLastChatter"); |
11235 | addMenu(new LLViewToggleRadar(), "View.ToggleAvatarList"); | ||
11236 | addMenu(new LLViewToggleMOAPRadar(), "View.ToggleMOAPList"); | ||
11218 | 11237 | ||
11219 | addMenu(new LLViewCheckBuildMode(), "View.CheckBuildMode"); | 11238 | addMenu(new LLViewCheckBuildMode(), "View.CheckBuildMode"); |
11220 | addMenu(new LLViewCheckJoystickFlycam(), "View.CheckJoystickFlycam"); | 11239 | addMenu(new LLViewCheckJoystickFlycam(), "View.CheckJoystickFlycam"); |
diff --git a/linden/indra/newview/llviewermessage.cpp b/linden/indra/newview/llviewermessage.cpp index 9a0cf47..10d701d 100755..100644 --- a/linden/indra/newview/llviewermessage.cpp +++ b/linden/indra/newview/llviewermessage.cpp | |||
@@ -1,12 +1,12 @@ | |||
1 | 1 | ||
2 | /** | 2 | /** |
3 | * @file llviewermessage.cpp | 3 | * @file llviewermessage.cpp |
4 | * @brief Dumping ground for viewer-side message system callbacks. | 4 | * @brief Dumping ground for viewer-side message system callbacks. |
5 | * | 5 | * |
6 | * $LicenseInfo:firstyear=2002&license=viewergpl$ | 6 | * $LicenseInfo:firstyear=2002&license=viewergpl$ |
7 | * | 7 | * |
8 | * Copyright (c) 2002-2009, Linden Research, Inc. | 8 | * Copyright (c) 2002-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 |
@@ -14,17 +14,17 @@ | |||
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. |
@@ -37,7 +37,7 @@ | |||
37 | 37 | ||
38 | #include <deque> | 38 | #include <deque> |
39 | 39 | ||
40 | #include "llaudioengine.h" | 40 | #include "llaudioengine.h" |
41 | #include "indra_constants.h" | 41 | #include "indra_constants.h" |
42 | #include "lscript_byteformat.h" | 42 | #include "lscript_byteformat.h" |
43 | #include "mean_collision_data.h" | 43 | #include "mean_collision_data.h" |
@@ -65,7 +65,7 @@ | |||
65 | #include "lltimer.h" | 65 | #include "lltimer.h" |
66 | #include "llmd5.h" | 66 | #include "llmd5.h" |
67 | 67 | ||
68 | #include "lightshare.h" | 68 | #include "llettherebelight.h" |
69 | #include "llagent.h" | 69 | #include "llagent.h" |
70 | #include "llcallingcard.h" | 70 | #include "llcallingcard.h" |
71 | #include "llconsole.h" | 71 | #include "llconsole.h" |
@@ -132,6 +132,7 @@ | |||
132 | #include "llvlmanager.h" | 132 | #include "llvlmanager.h" |
133 | #include "llvoavatar.h" | 133 | #include "llvoavatar.h" |
134 | #include "llvotextbubble.h" | 134 | #include "llvotextbubble.h" |
135 | #include "llwlparammanager.h" | ||
135 | #include "llweb.h" | 136 | #include "llweb.h" |
136 | #include "llworld.h" | 137 | #include "llworld.h" |
137 | #include "pipeline.h" | 138 | #include "pipeline.h" |
@@ -151,7 +152,6 @@ | |||
151 | 152 | ||
152 | #include "hippogridmanager.h" | 153 | #include "hippogridmanager.h" |
153 | #include "hippolimits.h" | 154 | #include "hippolimits.h" |
154 | #include "wlsettingsmanager.h" | ||
155 | 155 | ||
156 | #if LL_WINDOWS // For Windows specific error handler | 156 | #if LL_WINDOWS // For Windows specific error handler |
157 | #include "llwindebug.h" // For the invalid message handler | 157 | #include "llwindebug.h" // For the invalid message handler |
@@ -199,8 +199,8 @@ const U32 OFFER_THROTTLE_MAX_COUNT=5; //number of items per time period | |||
199 | const F32 OFFER_THROTTLE_TIME=10.f; //time period in seconds | 199 | const F32 OFFER_THROTTLE_TIME=10.f; //time period in seconds |
200 | 200 | ||
201 | //script permissions | 201 | //script permissions |
202 | const std::string SCRIPT_QUESTIONS[SCRIPT_PERMISSION_EOF] = | 202 | const std::string SCRIPT_QUESTIONS[SCRIPT_PERMISSION_EOF] = |
203 | { | 203 | { |
204 | "ScriptTakeMoney", | 204 | "ScriptTakeMoney", |
205 | "ActOnControlInputs", | 205 | "ActOnControlInputs", |
206 | "RemapControlInputs", | 206 | "RemapControlInputs", |
@@ -214,7 +214,7 @@ const std::string SCRIPT_QUESTIONS[SCRIPT_PERMISSION_EOF] = | |||
214 | "ControlYourCamera" | 214 | "ControlYourCamera" |
215 | }; | 215 | }; |
216 | 216 | ||
217 | const BOOL SCRIPT_QUESTION_IS_CAUTION[SCRIPT_PERMISSION_EOF] = | 217 | const BOOL SCRIPT_QUESTION_IS_CAUTION[SCRIPT_PERMISSION_EOF] = |
218 | { | 218 | { |
219 | TRUE, // ScriptTakeMoney, | 219 | TRUE, // ScriptTakeMoney, |
220 | FALSE, // ActOnControlInputs | 220 | FALSE, // ActOnControlInputs |
@@ -466,7 +466,7 @@ void process_layer_data(LLMessageSystem *mesgsys, void **user_data) | |||
466 | // char image_uuid_str[UUID_STR_SIZE]; /* Flawfinder: ignore */ | 466 | // char image_uuid_str[UUID_STR_SIZE]; /* Flawfinder: ignore */ |
467 | // memcpy(image_uuid_str, pos_uuid+2, UUID_STR_SIZE-1); /* Flawfinder: ignore */ | 467 | // memcpy(image_uuid_str, pos_uuid+2, UUID_STR_SIZE-1); /* Flawfinder: ignore */ |
468 | // image_uuid_str[UUID_STR_SIZE-1] = 0; | 468 | // image_uuid_str[UUID_STR_SIZE-1] = 0; |
469 | 469 | ||
470 | // LLUUID image_uuid(image_uuid_str); | 470 | // LLUUID image_uuid(image_uuid_str); |
471 | 471 | ||
472 | // LL_INFOS("Messaging") << "Found UUID: " << image_uuid << LL_ENDL; | 472 | // LL_INFOS("Messaging") << "Found UUID: " << image_uuid << LL_ENDL; |
@@ -541,7 +541,7 @@ void process_layer_data(LLMessageSystem *mesgsys, void **user_data) | |||
541 | // else | 541 | // else |
542 | // { | 542 | // { |
543 | // LLFILE* fIn = LLFile::fopen(filename, "rb"); /* Flawfinder: ignore */ | 543 | // LLFILE* fIn = LLFile::fopen(filename, "rb"); /* Flawfinder: ignore */ |
544 | // if (fIn) | 544 | // if (fIn) |
545 | // { | 545 | // { |
546 | // LLPointer<LLImageJ2C> ImageUtility = new LLImageJ2C; | 546 | // LLPointer<LLImageJ2C> ImageUtility = new LLImageJ2C; |
547 | // LLPointer<LLImageTGA> TargaUtility = new LLImageTGA; | 547 | // LLPointer<LLImageTGA> TargaUtility = new LLImageTGA; |
@@ -562,13 +562,13 @@ void process_layer_data(LLMessageSystem *mesgsys, void **user_data) | |||
562 | 562 | ||
563 | // ImageUtility->updateData(); | 563 | // ImageUtility->updateData(); |
564 | // ImageUtility->decode(image, 100000.0f); | 564 | // ImageUtility->decode(image, 100000.0f); |
565 | 565 | ||
566 | // TargaUtility->encode(image); | 566 | // TargaUtility->encode(image); |
567 | // U8 *data = TargaUtility->getData(); | 567 | // U8 *data = TargaUtility->getData(); |
568 | // S32 data_size = TargaUtility->getDataSize(); | 568 | // S32 data_size = TargaUtility->getDataSize(); |
569 | 569 | ||
570 | // std::string file_path = gDirUtilp->getDirName(filename); | 570 | // std::string file_path = gDirUtilp->getDirName(filename); |
571 | 571 | ||
572 | // std::string output_file = llformat("%s/image-%03d.tga", file_path.c_str(), image_num);//filename; | 572 | // std::string output_file = llformat("%s/image-%03d.tga", file_path.c_str(), image_num);//filename; |
573 | // //S32 name_len = output_file.length(); | 573 | // //S32 name_len = output_file.length(); |
574 | // //strcpy(&output_file[name_len-3], "tga"); | 574 | // //strcpy(&output_file[name_len-3], "tga"); |
@@ -657,7 +657,6 @@ void send_sound_trigger(const LLUUID& sound_id, F32 gain) | |||
657 | bool join_group_response(const LLSD& notification, const LLSD& response) | 657 | bool join_group_response(const LLSD& notification, const LLSD& response) |
658 | { | 658 | { |
659 | S32 option = LLNotification::getSelectedOption(notification, response); | 659 | S32 option = LLNotification::getSelectedOption(notification, response); |
660 | BOOL delete_context_data = TRUE; | ||
661 | bool accept_invite = false; | 660 | bool accept_invite = false; |
662 | 661 | ||
663 | LLUUID group_id = notification["payload"]["group_id"].asUUID(); | 662 | LLUUID group_id = notification["payload"]["group_id"].asUUID(); |
@@ -686,7 +685,6 @@ bool join_group_response(const LLSD& notification, const LLSD& response) | |||
686 | } | 685 | } |
687 | else | 686 | else |
688 | { | 687 | { |
689 | delete_context_data = FALSE; | ||
690 | LLSD args; | 688 | LLSD args; |
691 | args["NAME"] = name; | 689 | args["NAME"] = name; |
692 | args["INVITE"] = message; | 690 | args["INVITE"] = message; |
@@ -700,7 +698,6 @@ bool join_group_response(const LLSD& notification, const LLSD& response) | |||
700 | // sure the user is sure they want to join. | 698 | // sure the user is sure they want to join. |
701 | if (fee > 0) | 699 | if (fee > 0) |
702 | { | 700 | { |
703 | delete_context_data = FALSE; | ||
704 | LLSD args; | 701 | LLSD args; |
705 | args["COST"] = llformat("%d", fee); | 702 | args["COST"] = llformat("%d", fee); |
706 | args["CURRENCY"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol(); | 703 | args["CURRENCY"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol(); |
@@ -756,10 +753,10 @@ private: | |||
756 | std::string mFromName; | 753 | std::string mFromName; |
757 | }; | 754 | }; |
758 | 755 | ||
759 | //unlike the FetchObserver for AgentOffer, we only make one | 756 | //unlike the FetchObserver for AgentOffer, we only make one |
760 | //instance of the AddedObserver for TaskOffers | 757 | //instance of the AddedObserver for TaskOffers |
761 | //and it never dies. We do this because we don't know the UUID of | 758 | //and it never dies. We do this because we don't know the UUID of |
762 | //task offers until they are accepted, so we don't wouldn't | 759 | //task offers until they are accepted, so we don't wouldn't |
763 | //know what to watch for, so instead we just watch for all additions. | 760 | //know what to watch for, so instead we just watch for all additions. |
764 | class LLOpenTaskOffer : public LLInventoryAddedObserver | 761 | class LLOpenTaskOffer : public LLInventoryAddedObserver |
765 | { | 762 | { |
@@ -776,7 +773,7 @@ LLOpenTaskOffer* gNewInventoryObserver=NULL; | |||
776 | 773 | ||
777 | void start_new_inventory_observer() | 774 | void start_new_inventory_observer() |
778 | { | 775 | { |
779 | if (!gNewInventoryObserver) //task offer observer | 776 | if (!gNewInventoryObserver) //task offer observer |
780 | { | 777 | { |
781 | // Observer is deleted by gInventory | 778 | // Observer is deleted by gInventory |
782 | gNewInventoryObserver = new LLOpenTaskOffer; | 779 | gNewInventoryObserver = new LLOpenTaskOffer; |
@@ -835,7 +832,7 @@ protected: | |||
835 | 832 | ||
836 | 833 | ||
837 | //Returns TRUE if we are OK, FALSE if we are throttled | 834 | //Returns TRUE if we are OK, FALSE if we are throttled |
838 | //Set check_only true if you want to know the throttle status | 835 | //Set check_only true if you want to know the throttle status |
839 | //without registering a hit | 836 | //without registering a hit |
840 | bool check_offer_throttle(const std::string& from_name, bool check_only) | 837 | bool check_offer_throttle(const std::string& from_name, bool check_only) |
841 | { | 838 | { |
@@ -851,7 +848,7 @@ bool check_offer_throttle(const std::string& from_name, bool check_only) | |||
851 | { | 848 | { |
852 | return gThrottleTimer.hasExpired(); | 849 | return gThrottleTimer.hasExpired(); |
853 | } | 850 | } |
854 | 851 | ||
855 | if(gThrottleTimer.checkExpirationAndReset(OFFER_THROTTLE_TIME)) | 852 | if(gThrottleTimer.checkExpirationAndReset(OFFER_THROTTLE_TIME)) |
856 | { | 853 | { |
857 | LL_DEBUGS("Messaging") << "Throttle Expired" << LL_ENDL; | 854 | LL_DEBUGS("Messaging") << "Throttle Expired" << LL_ENDL; |
@@ -897,7 +894,7 @@ bool check_offer_throttle(const std::string& from_name, bool check_only) | |||
897 | } | 894 | } |
898 | } | 895 | } |
899 | } | 896 | } |
900 | 897 | ||
901 | void open_offer(const std::vector<LLUUID>& items, const std::string& from_name) | 898 | void open_offer(const std::vector<LLUUID>& items, const std::string& from_name) |
902 | { | 899 | { |
903 | std::vector<LLUUID>::const_iterator it = items.begin(); | 900 | std::vector<LLUUID>::const_iterator it = items.begin(); |
@@ -928,11 +925,9 @@ void open_offer(const std::vector<LLUUID>& items, const std::string& from_name) | |||
928 | { | 925 | { |
929 | case LLAssetType::AT_NOTECARD: | 926 | case LLAssetType::AT_NOTECARD: |
930 | // Don't show WindLight settings as notecards. | 927 | // Don't show WindLight settings as notecards. |
931 | // *TODO: centralise all these damned .wl/.ww checks somewhere. | 928 | if(!LLWLParamManager::isSettingsNotecard(item->getName())) |
932 | if((item->getName().length() > 2 && item->getName().compare(item->getName().length() - 3, 3, ".wl") != 0) && | ||
933 | (item->getName().compare(item->getName().length() - 3, 3, ".ww") != 0)) | ||
934 | { | 929 | { |
935 | open_notecard((LLViewerInventoryItem*)item, std::string("Note: ") + item->getName(), | 930 | open_notecard((LLViewerInventoryItem*)item, std::string("Note: ") + item->getName(), |
936 | LLUUID::null, show_keep_discard, LLUUID::null, FALSE); | 931 | LLUUID::null, show_keep_discard, LLUUID::null, FALSE); |
937 | } | 932 | } |
938 | break; | 933 | break; |
@@ -948,7 +943,7 @@ void open_offer(const std::vector<LLUUID>& items, const std::string& from_name) | |||
948 | } | 943 | } |
949 | } | 944 | } |
950 | //highlight item, if it's not in the trash or lost+found | 945 | //highlight item, if it's not in the trash or lost+found |
951 | 946 | ||
952 | // Don't auto-open the inventory floater | 947 | // Don't auto-open the inventory floater |
953 | LLInventoryView* view = LLInventoryView::getActiveInventory(); | 948 | LLInventoryView* view = LLInventoryView::getActiveInventory(); |
954 | if(!view) | 949 | if(!view) |
@@ -1028,7 +1023,7 @@ void inventory_offer_mute_callback(const LLUUID& blocked_id, | |||
1028 | OfferMatcher(const LLUUID& to_block) : blocked_id(to_block) {} | 1023 | OfferMatcher(const LLUUID& to_block) : blocked_id(to_block) {} |
1029 | BOOL matches(const LLNotificationPtr notification) const | 1024 | BOOL matches(const LLNotificationPtr notification) const |
1030 | { | 1025 | { |
1031 | if(notification->getName() == "ObjectGiveItem" | 1026 | if(notification->getName() == "ObjectGiveItem" |
1032 | || notification->getName() == "ObjectGiveItemUnknownUser" | 1027 | || notification->getName() == "ObjectGiveItemUnknownUser" |
1033 | || notification->getName() == "UserGiveItem") | 1028 | || notification->getName() == "UserGiveItem") |
1034 | { | 1029 | { |
@@ -1104,7 +1099,7 @@ bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD& | |||
1104 | std::string name; | 1099 | std::string name; |
1105 | gAgent.buildFullname(name); | 1100 | gAgent.buildFullname(name); |
1106 | msg->addStringFast(_PREHASH_FromAgentName, name); | 1101 | msg->addStringFast(_PREHASH_FromAgentName, name); |
1107 | msg->addStringFast(_PREHASH_Message, ""); | 1102 | msg->addStringFast(_PREHASH_Message, ""); |
1108 | msg->addU32Fast(_PREHASH_ParentEstateID, 0); | 1103 | msg->addU32Fast(_PREHASH_ParentEstateID, 0); |
1109 | msg->addUUIDFast(_PREHASH_RegionID, LLUUID::null); | 1104 | msg->addUUIDFast(_PREHASH_RegionID, LLUUID::null); |
1110 | msg->addVector3Fast(_PREHASH_Position, gAgent.getPositionAgent()); | 1105 | msg->addVector3Fast(_PREHASH_Position, gAgent.getPositionAgent()); |
@@ -1164,9 +1159,9 @@ bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD& | |||
1164 | { | 1159 | { |
1165 | from_string = chatHistory_string = mFromName; | 1160 | from_string = chatHistory_string = mFromName; |
1166 | } | 1161 | } |
1167 | 1162 | ||
1168 | bool busy=FALSE; | 1163 | bool busy=FALSE; |
1169 | 1164 | ||
1170 | switch(button) | 1165 | switch(button) |
1171 | { | 1166 | { |
1172 | case IOR_ACCEPT: | 1167 | case IOR_ACCEPT: |
@@ -1188,7 +1183,7 @@ bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD& | |||
1188 | // ACCEPT. The math for the dialog works, because the accept | 1183 | // ACCEPT. The math for the dialog works, because the accept |
1189 | // for inventory_offered, task_inventory_offer or | 1184 | // for inventory_offered, task_inventory_offer or |
1190 | // group_notice_inventory is 1 greater than the offer integer value. | 1185 | // group_notice_inventory is 1 greater than the offer integer value. |
1191 | // Generates IM_INVENTORY_ACCEPTED, IM_TASK_INVENTORY_ACCEPTED, | 1186 | // Generates IM_INVENTORY_ACCEPTED, IM_TASK_INVENTORY_ACCEPTED, |
1192 | // or IM_GROUP_NOTICE_INVENTORY_ACCEPTED | 1187 | // or IM_GROUP_NOTICE_INVENTORY_ACCEPTED |
1193 | msg->addU8Fast(_PREHASH_Dialog, (U8)(mIM + 1)); | 1188 | msg->addU8Fast(_PREHASH_Dialog, (U8)(mIM + 1)); |
1194 | msg->addBinaryDataFast(_PREHASH_BinaryBucket, &(mFolderID.mData), | 1189 | msg->addBinaryDataFast(_PREHASH_BinaryBucket, &(mFolderID.mData), |
@@ -1288,7 +1283,7 @@ bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD& | |||
1288 | LLFloaterChat::addChatHistory(chat); | 1283 | LLFloaterChat::addChatHistory(chat); |
1289 | 1284 | ||
1290 | // If it's from an agent, we have to fetch the item to throw | 1285 | // If it's from an agent, we have to fetch the item to throw |
1291 | // it away. If it's from a task or group, just denying the | 1286 | // it away. If it's from a task or group, just denying the |
1292 | // request will suffice to discard the item. | 1287 | // request will suffice to discard the item. |
1293 | if(IM_INVENTORY_OFFERED == mIM) | 1288 | if(IM_INVENTORY_OFFERED == mIM) |
1294 | { | 1289 | { |
@@ -1306,7 +1301,7 @@ bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD& | |||
1306 | { | 1301 | { |
1307 | opener = discard_agent_offer; | 1302 | opener = discard_agent_offer; |
1308 | } | 1303 | } |
1309 | 1304 | ||
1310 | } | 1305 | } |
1311 | if (busy && (!mFromGroup && !mFromObject)) | 1306 | if (busy && (!mFromGroup && !mFromObject)) |
1312 | { | 1307 | { |
@@ -1338,7 +1333,7 @@ void inventory_offer_handler(LLOfferInfo* info, BOOL from_task) | |||
1338 | info->forceResponse(IOR_BUSY); | 1333 | info->forceResponse(IOR_BUSY); |
1339 | return; | 1334 | return; |
1340 | } | 1335 | } |
1341 | 1336 | ||
1342 | //If muted, don't even go through the messaging stuff. Just curtail the offer here. | 1337 | //If muted, don't even go through the messaging stuff. Just curtail the offer here. |
1343 | if (LLMuteList::getInstance()->isMuted(info->mFromID, info->mFromName)) | 1338 | if (LLMuteList::getInstance()->isMuted(info->mFromID, info->mFromName)) |
1344 | { | 1339 | { |
@@ -1377,7 +1372,7 @@ void inventory_offer_handler(LLOfferInfo* info, BOOL from_task) | |||
1377 | } | 1372 | } |
1378 | // [/RLVa:KB] | 1373 | // [/RLVa:KB] |
1379 | } | 1374 | } |
1380 | 1375 | ||
1381 | LLSD args; | 1376 | LLSD args; |
1382 | args["[OBJECTNAME]"] = msg; | 1377 | args["[OBJECTNAME]"] = msg; |
1383 | 1378 | ||
@@ -1480,7 +1475,7 @@ static LLNotificationFunctorRegistration group_vote_callback_reg("GroupVote", gr | |||
1480 | bool lure_callback(const LLSD& notification, const LLSD& response) | 1475 | bool lure_callback(const LLSD& notification, const LLSD& response) |
1481 | { | 1476 | { |
1482 | S32 option = 0; | 1477 | S32 option = 0; |
1483 | if (response.isInteger()) | 1478 | if (response.isInteger()) |
1484 | { | 1479 | { |
1485 | option = response.asInteger(); | 1480 | option = response.asInteger(); |
1486 | } | 1481 | } |
@@ -1488,7 +1483,7 @@ bool lure_callback(const LLSD& notification, const LLSD& response) | |||
1488 | { | 1483 | { |
1489 | option = LLNotification::getSelectedOption(notification, response); | 1484 | option = LLNotification::getSelectedOption(notification, response); |
1490 | } | 1485 | } |
1491 | 1486 | ||
1492 | LLUUID from_id = notification["payload"]["from_id"].asUUID(); | 1487 | LLUUID from_id = notification["payload"]["from_id"].asUUID(); |
1493 | LLUUID lure_id = notification["payload"]["lure_id"].asUUID(); | 1488 | LLUUID lure_id = notification["payload"]["lure_id"].asUUID(); |
1494 | BOOL godlike = notification["payload"]["godlike"].asBoolean(); | 1489 | BOOL godlike = notification["payload"]["godlike"].asBoolean(); |
@@ -1548,7 +1543,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) | |||
1548 | S32 binary_bucket_size; | 1543 | S32 binary_bucket_size; |
1549 | LLChat chat; | 1544 | LLChat chat; |
1550 | std::string buffer; | 1545 | std::string buffer; |
1551 | 1546 | ||
1552 | // *TODO:translate - need to fix the full name to first/last (maybe) | 1547 | // *TODO:translate - need to fix the full name to first/last (maybe) |
1553 | msg->getUUIDFast(_PREHASH_AgentData, _PREHASH_AgentID, from_id); | 1548 | msg->getUUIDFast(_PREHASH_AgentData, _PREHASH_AgentID, from_id); |
1554 | msg->getBOOLFast(_PREHASH_MessageBlock, _PREHASH_FromGroup, from_group); | 1549 | msg->getBOOLFast(_PREHASH_MessageBlock, _PREHASH_FromGroup, from_group); |
@@ -1573,7 +1568,6 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) | |||
1573 | BOOL is_owned_by_me = FALSE; | 1568 | BOOL is_owned_by_me = FALSE; |
1574 | 1569 | ||
1575 | LLUUID computed_session_id = LLIMMgr::computeSessionID(dialog,from_id); | 1570 | LLUUID computed_session_id = LLIMMgr::computeSessionID(dialog,from_id); |
1576 | |||
1577 | chat.mMuted = is_muted && !is_god; | 1571 | chat.mMuted = is_muted && !is_god; |
1578 | chat.mFromID = from_id; | 1572 | chat.mFromID = from_id; |
1579 | chat.mFromName = name; | 1573 | chat.mFromName = name; |
@@ -1722,7 +1716,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) | |||
1722 | || dialog == IM_TYPING_STOP | 1716 | || dialog == IM_TYPING_STOP |
1723 | || dialog == IM_BUSY_AUTO_RESPONSE) | 1717 | || dialog == IM_BUSY_AUTO_RESPONSE) |
1724 | { | 1718 | { |
1725 | 1719 | ||
1726 | if(session_id != computed_session_id) | 1720 | if(session_id != computed_session_id) |
1727 | { | 1721 | { |
1728 | session_id = computed_session_id; | 1722 | session_id = computed_session_id; |
@@ -1961,7 +1955,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) | |||
1961 | } | 1955 | } |
1962 | } | 1956 | } |
1963 | //InstantMessageResponseItem< | 1957 | //InstantMessageResponseItem< |
1964 | 1958 | ||
1965 | } | 1959 | } |
1966 | } | 1960 | } |
1967 | } | 1961 | } |
@@ -1981,10 +1975,10 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) | |||
1981 | LLNotifications::instance().add("SystemMessageTip",args); | 1975 | LLNotifications::instance().add("SystemMessageTip",args); |
1982 | break; | 1976 | break; |
1983 | 1977 | ||
1984 | case IM_NOTHING_SPECIAL: | 1978 | case IM_NOTHING_SPECIAL: |
1985 | // Don't show dialog, just do IM | 1979 | // Don't show dialog, just do IM |
1986 | if (!gAgent.isGodlike() | 1980 | if (!gAgent.isGodlike() |
1987 | && gAgent.getRegion()->isPrelude() | 1981 | && gAgent.getRegion()->isPrelude() |
1988 | && to_id.isNull() ) | 1982 | && to_id.isNull() ) |
1989 | { | 1983 | { |
1990 | // do nothing -- don't distract newbies in | 1984 | // do nothing -- don't distract newbies in |
@@ -2005,7 +1999,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) | |||
2005 | ( (!gRlvHandler.hasBehaviour(RLV_BHVR_RECVIM)) || (gRlvHandler.isException(RLV_BHVR_RECVIM, from_id))) ) | 1999 | ( (!gRlvHandler.hasBehaviour(RLV_BHVR_RECVIM)) || (gRlvHandler.isException(RLV_BHVR_RECVIM, from_id))) ) |
2006 | // [/RLVa:KB] | 2000 | // [/RLVa:KB] |
2007 | { | 2001 | { |
2008 | // return a standard "busy" message, but only do it to online IM | 2002 | // return a standard "busy" message, but only do it to online IM |
2009 | // (i.e. not other auto responses and not store-and-forward IM) | 2003 | // (i.e. not other auto responses and not store-and-forward IM) |
2010 | if (!gIMMgr->hasSession(session_id)) | 2004 | if (!gIMMgr->hasSession(session_id)) |
2011 | { | 2005 | { |
@@ -2031,7 +2025,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) | |||
2031 | // now store incoming IM in chat history | 2025 | // now store incoming IM in chat history |
2032 | 2026 | ||
2033 | buffer = separator_string + message.substr(message_offset); | 2027 | buffer = separator_string + message.substr(message_offset); |
2034 | 2028 | ||
2035 | LL_INFOS("Messaging") << "process_improved_im: session_id( " << session_id << " ), from_id( " << from_id << " )" << LL_ENDL; | 2029 | LL_INFOS("Messaging") << "process_improved_im: session_id( " << session_id << " ), from_id( " << from_id << " )" << LL_ENDL; |
2036 | 2030 | ||
2037 | // add to IM panel, but do not bother the user | 2031 | // add to IM panel, but do not bother the user |
@@ -2177,7 +2171,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) | |||
2177 | U8 item_name[DB_INV_ITEM_NAME_BUF_SIZE]; | 2171 | U8 item_name[DB_INV_ITEM_NAME_BUF_SIZE]; |
2178 | }* notice_bin_bucket; | 2172 | }* notice_bin_bucket; |
2179 | 2173 | ||
2180 | // Make sure the binary bucket is big enough to hold the header | 2174 | // Make sure the binary bucket is big enough to hold the header |
2181 | // and a null terminated item name. | 2175 | // and a null terminated item name. |
2182 | if ( (binary_bucket_size < (S32)((sizeof(notice_bucket_header_t) + sizeof(U8)))) | 2176 | if ( (binary_bucket_size < (S32)((sizeof(notice_bucket_header_t) + sizeof(U8)))) |
2183 | || (binary_bucket[binary_bucket_size - 1] != '\0') ) | 2177 | || (binary_bucket[binary_bucket_size - 1] != '\0') ) |
@@ -2198,7 +2192,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) | |||
2198 | if (has_inventory) | 2192 | if (has_inventory) |
2199 | { | 2193 | { |
2200 | info = new LLOfferInfo; | 2194 | info = new LLOfferInfo; |
2201 | 2195 | ||
2202 | info->mIM = IM_GROUP_NOTICE; | 2196 | info->mIM = IM_GROUP_NOTICE; |
2203 | info->mFromID = from_id; | 2197 | info->mFromID = from_id; |
2204 | info->mFromGroup = from_group; | 2198 | info->mFromGroup = from_group; |
@@ -2214,7 +2208,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) | |||
2214 | info->mDesc = item_name; | 2208 | info->mDesc = item_name; |
2215 | info->mHost = msg->getSender(); | 2209 | info->mHost = msg->getSender(); |
2216 | } | 2210 | } |
2217 | 2211 | ||
2218 | std::string str(message); | 2212 | std::string str(message); |
2219 | 2213 | ||
2220 | // Tokenize the string. | 2214 | // Tokenize the string. |
@@ -2418,7 +2412,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) | |||
2418 | LL_WARNS("Messaging") << "Received IM: IM_GROUP_ELECTION_DEPRECATED" << LL_ENDL; | 2412 | LL_WARNS("Messaging") << "Received IM: IM_GROUP_ELECTION_DEPRECATED" << LL_ENDL; |
2419 | } | 2413 | } |
2420 | break; | 2414 | break; |
2421 | 2415 | ||
2422 | case IM_SESSION_SEND: | 2416 | case IM_SESSION_SEND: |
2423 | { | 2417 | { |
2424 | if (!is_god && is_busy) | 2418 | if (!is_god && is_busy) |
@@ -2480,7 +2474,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) | |||
2480 | { | 2474 | { |
2481 | group_name = std::string((char*)binary_bucket); | 2475 | group_name = std::string((char*)binary_bucket); |
2482 | } | 2476 | } |
2483 | chat.mText = std::string("IM [") + group_name + std::string("] ") + name | 2477 | chat.mText = std::string("IM [") + group_name + std::string("] ") + name |
2484 | + separator_string + saved + message.substr(message_offset); | 2478 | + separator_string + saved + message.substr(message_offset); |
2485 | } | 2479 | } |
2486 | else | 2480 | else |
@@ -2527,7 +2521,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) | |||
2527 | } | 2521 | } |
2528 | 2522 | ||
2529 | std::string tempname = name; | 2523 | std::string tempname = name; |
2530 | 2524 | ||
2531 | size_t found = tempname.find(" "); | 2525 | size_t found = tempname.find(" "); |
2532 | while(found != std::string::npos) | 2526 | while(found != std::string::npos) |
2533 | { | 2527 | { |
@@ -2539,7 +2533,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) | |||
2539 | { | 2533 | { |
2540 | name = ">>"; | 2534 | name = ">>"; |
2541 | chat.mFromName = name; | 2535 | chat.mFromName = name; |
2542 | 2536 | ||
2543 | } | 2537 | } |
2544 | 2538 | ||
2545 | std::ostringstream link; | 2539 | std::ostringstream link; |
@@ -2591,14 +2585,14 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) | |||
2591 | gIMMgr->addMessage(session_id, from_id, name, buffer); | 2585 | gIMMgr->addMessage(session_id, from_id, name, buffer); |
2592 | } | 2586 | } |
2593 | break; | 2587 | break; |
2594 | 2588 | ||
2595 | case IM_LURE_USER: | 2589 | case IM_LURE_USER: |
2596 | { | 2590 | { |
2597 | if (is_muted) | 2591 | if (is_muted) |
2598 | { | 2592 | { |
2599 | return; | 2593 | return; |
2600 | } | 2594 | } |
2601 | else if (is_busy) | 2595 | else if (is_busy) |
2602 | { | 2596 | { |
2603 | busy_message(msg,from_id); | 2597 | busy_message(msg,from_id); |
2604 | } | 2598 | } |
@@ -2734,7 +2728,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) | |||
2734 | } | 2728 | } |
2735 | 2729 | ||
2736 | std::string url; | 2730 | std::string url; |
2737 | 2731 | ||
2738 | url.assign((char*)binary_bucket, binary_bucket_size-1); | 2732 | url.assign((char*)binary_bucket, binary_bucket_size-1); |
2739 | args["MESSAGE"] = message; | 2733 | args["MESSAGE"] = message; |
2740 | args["URL"] = url; | 2734 | args["URL"] = url; |
@@ -2784,11 +2778,11 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) | |||
2784 | // as the database should already include the relationship. But it | 2778 | // as the database should already include the relationship. But it |
2785 | // doesn't hurt for dupes. | 2779 | // doesn't hurt for dupes. |
2786 | LLAvatarTracker::formFriendship(from_id); | 2780 | LLAvatarTracker::formFriendship(from_id); |
2787 | 2781 | ||
2788 | std::vector<std::string> strings; | 2782 | std::vector<std::string> strings; |
2789 | strings.push_back(from_id.asString()); | 2783 | strings.push_back(from_id.asString()); |
2790 | send_generic_message("requestonlinenotification", strings); | 2784 | send_generic_message("requestonlinenotification", strings); |
2791 | 2785 | ||
2792 | args["NAME"] = name; | 2786 | args["NAME"] = name; |
2793 | LLNotifications::instance().add("FriendshipAccepted", args); | 2787 | LLNotifications::instance().add("FriendshipAccepted", args); |
2794 | } | 2788 | } |
@@ -2808,7 +2802,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) | |||
2808 | } | 2802 | } |
2809 | } | 2803 | } |
2810 | 2804 | ||
2811 | void busy_message (LLMessageSystem* msg, LLUUID from_id) | 2805 | void busy_message (LLMessageSystem* msg, LLUUID from_id) |
2812 | { | 2806 | { |
2813 | if (gAgent.getBusy()) | 2807 | if (gAgent.getBusy()) |
2814 | { | 2808 | { |
@@ -2851,7 +2845,7 @@ bool callingcard_offer_callback(const LLSD& notification, const LLSD& response) | |||
2851 | msg->sendReliable(LLHost(notification["payload"]["sender"].asString())); | 2845 | msg->sendReliable(LLHost(notification["payload"]["sender"].asString())); |
2852 | break; | 2846 | break; |
2853 | case 1: | 2847 | case 1: |
2854 | // decline | 2848 | // decline |
2855 | msg->newMessageFast(_PREHASH_DeclineCallingCard); | 2849 | msg->newMessageFast(_PREHASH_DeclineCallingCard); |
2856 | msg->nextBlockFast(_PREHASH_AgentData); | 2850 | msg->nextBlockFast(_PREHASH_AgentData); |
2857 | msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); | 2851 | msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); |
@@ -2902,7 +2896,7 @@ void process_offer_callingcard(LLMessageSystem* msg, void**) | |||
2902 | 2896 | ||
2903 | if(!source_name.empty()) | 2897 | if(!source_name.empty()) |
2904 | { | 2898 | { |
2905 | if (gAgent.getBusy() | 2899 | if (gAgent.getBusy() |
2906 | || LLMuteList::getInstance()->isMuted(source_id, source_name, LLMute::flagTextChat)) | 2900 | || LLMuteList::getInstance()->isMuted(source_id, source_name, LLMute::flagTextChat)) |
2907 | { | 2901 | { |
2908 | // automatically decline offer | 2902 | // automatically decline offer |
@@ -2959,13 +2953,13 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data) | |||
2959 | 2953 | ||
2960 | msg->getString("ChatData", "FromName", from_name); | 2954 | msg->getString("ChatData", "FromName", from_name); |
2961 | chat.mFromName = from_name; | 2955 | chat.mFromName = from_name; |
2962 | 2956 | ||
2963 | msg->getUUID("ChatData", "SourceID", from_id); | 2957 | msg->getUUID("ChatData", "SourceID", from_id); |
2964 | chat.mFromID = from_id; | 2958 | chat.mFromID = from_id; |
2965 | 2959 | ||
2966 | // Object owner for objects | 2960 | // Object owner for objects |
2967 | msg->getUUID("ChatData", "OwnerID", owner_id); | 2961 | msg->getUUID("ChatData", "OwnerID", owner_id); |
2968 | 2962 | ||
2969 | msg->getU8Fast(_PREHASH_ChatData, _PREHASH_SourceType, source_temp); | 2963 | msg->getU8Fast(_PREHASH_ChatData, _PREHASH_SourceType, source_temp); |
2970 | chat.mSourceType = (EChatSourceType)source_temp; | 2964 | chat.mSourceType = (EChatSourceType)source_temp; |
2971 | 2965 | ||
@@ -2974,9 +2968,9 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data) | |||
2974 | 2968 | ||
2975 | msg->getU8Fast(_PREHASH_ChatData, _PREHASH_Audible, audible_temp); | 2969 | msg->getU8Fast(_PREHASH_ChatData, _PREHASH_Audible, audible_temp); |
2976 | chat.mAudible = (EChatAudible)audible_temp; | 2970 | chat.mAudible = (EChatAudible)audible_temp; |
2977 | 2971 | ||
2978 | chat.mTime = LLFrameTimer::getElapsedSeconds(); | 2972 | chat.mTime = LLFrameTimer::getElapsedSeconds(); |
2979 | 2973 | ||
2980 | BOOL is_busy = gAgent.getBusy(); | 2974 | BOOL is_busy = gAgent.getBusy(); |
2981 | 2975 | ||
2982 | BOOL is_muted = FALSE; | 2976 | BOOL is_muted = FALSE; |
@@ -2984,7 +2978,7 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data) | |||
2984 | is_muted = LLMuteList::getInstance()->isMuted( | 2978 | is_muted = LLMuteList::getInstance()->isMuted( |
2985 | from_id, | 2979 | from_id, |
2986 | from_name, | 2980 | from_name, |
2987 | LLMute::flagTextChat) | 2981 | LLMute::flagTextChat) |
2988 | || LLMuteList::getInstance()->isMuted(owner_id, LLMute::flagTextChat); | 2982 | || LLMuteList::getInstance()->isMuted(owner_id, LLMute::flagTextChat); |
2989 | is_god = chat.mSourceType != CHAT_SOURCE_OBJECT && | 2983 | is_god = chat.mSourceType != CHAT_SOURCE_OBJECT && |
2990 | LLMuteList::getInstance()->isGod(from_name); | 2984 | LLMuteList::getInstance()->isGod(from_name); |
@@ -2994,9 +2988,9 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data) | |||
2994 | if (chatter) | 2988 | if (chatter) |
2995 | { | 2989 | { |
2996 | chat.mPosAgent = chatter->getPositionAgent(); | 2990 | chat.mPosAgent = chatter->getPositionAgent(); |
2997 | 2991 | ||
2998 | // Make swirly things only for talking objects. (not script debug messages, though) | 2992 | // Make swirly things only for talking objects. (not script debug messages, though) |
2999 | // if (chat.mSourceType == CHAT_SOURCE_OBJECT | 2993 | // if (chat.mSourceType == CHAT_SOURCE_OBJECT |
3000 | // && chat.mChatType != CHAT_TYPE_DEBUG_MSG) | 2994 | // && chat.mChatType != CHAT_TYPE_DEBUG_MSG) |
3001 | // [RLVa:KB] - Alternate: Snowglobe-1.2.4 | Checked: 2009-07-10 (RLVa-1.0.0g) | 2995 | // [RLVa:KB] - Alternate: Snowglobe-1.2.4 | Checked: 2009-07-10 (RLVa-1.0.0g) |
3002 | // Don't show swirly things for llOwnerSay() chat here because we handle those further down | 2996 | // Don't show swirly things for llOwnerSay() chat here because we handle those further down |
@@ -3008,7 +3002,7 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data) | |||
3008 | LLPointer<LLViewerPartSourceChat> psc = new LLViewerPartSourceChat(chatter->getPositionAgent()); | 3002 | LLPointer<LLViewerPartSourceChat> psc = new LLViewerPartSourceChat(chatter->getPositionAgent()); |
3009 | psc->setSourceObject(chatter); | 3003 | psc->setSourceObject(chatter); |
3010 | psc->setColor(color); | 3004 | psc->setColor(color); |
3011 | //We set the particles to be owned by the object's owner, | 3005 | //We set the particles to be owned by the object's owner, |
3012 | //just in case they should be muted by the mute list | 3006 | //just in case they should be muted by the mute list |
3013 | psc->setOwnerUUID(owner_id); | 3007 | psc->setOwnerUUID(owner_id); |
3014 | LLViewerPartSim::getInstance()->addPartSource(psc); | 3008 | LLViewerPartSim::getInstance()->addPartSource(psc); |
@@ -3018,7 +3012,7 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data) | |||
3018 | if (is_audible | 3012 | if (is_audible |
3019 | && (is_god || (!is_muted && !is_busy))) | 3013 | && (is_god || (!is_muted && !is_busy))) |
3020 | { | 3014 | { |
3021 | if (chat.mChatType != CHAT_TYPE_START | 3015 | if (chat.mChatType != CHAT_TYPE_START |
3022 | && chat.mChatType != CHAT_TYPE_STOP) | 3016 | && chat.mChatType != CHAT_TYPE_STOP) |
3023 | { | 3017 | { |
3024 | gAgent.heardChat(chat.mFromID); | 3018 | gAgent.heardChat(chat.mFromID); |
@@ -3028,7 +3022,7 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data) | |||
3028 | is_owned_by_me = chatter->permYouOwner(); | 3022 | is_owned_by_me = chatter->permYouOwner(); |
3029 | } | 3023 | } |
3030 | 3024 | ||
3031 | if(chat.mSourceType == CHAT_SOURCE_OBJECT | 3025 | if(chat.mSourceType == CHAT_SOURCE_OBJECT |
3032 | && chat.mChatType != CHAT_TYPE_DEBUG_MSG | 3026 | && chat.mChatType != CHAT_TYPE_DEBUG_MSG |
3033 | && !owner_id.isNull() | 3027 | && !owner_id.isNull() |
3034 | && owner_id != gAgent.getID()) | 3028 | && owner_id != gAgent.getID()) |
@@ -3090,7 +3084,7 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data) | |||
3090 | msg->getStringFast(_PREHASH_ChatData, _PREHASH_Message, mesg); | 3084 | msg->getStringFast(_PREHASH_ChatData, _PREHASH_Message, mesg); |
3091 | 3085 | ||
3092 | // [RLVa:KB] - Checked: 2009-10-06 (RLVa-1.0.4d) | Modified: RLVa-1.0.4d | 3086 | // [RLVa:KB] - Checked: 2009-10-06 (RLVa-1.0.4d) | Modified: RLVa-1.0.4d |
3093 | if ( (rlv_handler_t::isEnabled()) && | 3087 | if ( (rlv_handler_t::isEnabled()) && |
3094 | (CHAT_TYPE_START != chat.mChatType) && (CHAT_TYPE_STOP != chat.mChatType) && (CHAT_TYPE_OWNER != chat.mChatType) ) | 3088 | (CHAT_TYPE_START != chat.mChatType) && (CHAT_TYPE_STOP != chat.mChatType) && (CHAT_TYPE_OWNER != chat.mChatType) ) |
3095 | { | 3089 | { |
3096 | // NOTE: chatter can be NULL (may not have rezzed yet, or could be another avie's HUD attachment) | 3090 | // NOTE: chatter can be NULL (may not have rezzed yet, or could be another avie's HUD attachment) |
@@ -3099,7 +3093,7 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data) | |||
3099 | // Filtering "rules": | 3093 | // Filtering "rules": |
3100 | // avatar => filter all avie text (unless it's this avie or they're an exemption) | 3094 | // avatar => filter all avie text (unless it's this avie or they're an exemption) |
3101 | // objects => filter everything except attachments this avie owns | 3095 | // objects => filter everything except attachments this avie owns |
3102 | if ( ( (CHAT_SOURCE_AGENT == chat.mSourceType) && (from_id != gAgent.getID()) ) || | 3096 | if ( ( (CHAT_SOURCE_AGENT == chat.mSourceType) && (from_id != gAgent.getID()) ) || |
3103 | ( (CHAT_SOURCE_OBJECT == chat.mSourceType) && ((!is_owned_by_me) || (!is_attachment)) ) ) | 3097 | ( (CHAT_SOURCE_OBJECT == chat.mSourceType) && ((!is_owned_by_me) || (!is_attachment)) ) ) |
3104 | { | 3098 | { |
3105 | if (!rlvIsEmote(mesg)) | 3099 | if (!rlvIsEmote(mesg)) |
@@ -3122,7 +3116,7 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data) | |||
3122 | { | 3116 | { |
3123 | if (chat.mFromID != gAgent.getID()) | 3117 | if (chat.mFromID != gAgent.getID()) |
3124 | from_name = RlvStrings::getAnonym(from_name); | 3118 | from_name = RlvStrings::getAnonym(from_name); |
3125 | } | 3119 | } |
3126 | else | 3120 | else |
3127 | { | 3121 | { |
3128 | if ( (!is_owned_by_me) || (!is_attachment) ) | 3122 | if ( (!is_owned_by_me) || (!is_attachment) ) |
@@ -3164,7 +3158,7 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data) | |||
3164 | if (LLFloaterMap::getInstance()) | 3158 | if (LLFloaterMap::getInstance()) |
3165 | { | 3159 | { |
3166 | PanelRadarEntry* entry = LLFloaterMap::getInstance()->getRadar()->getEntry(from_id); | 3160 | PanelRadarEntry* entry = LLFloaterMap::getInstance()->getRadar()->getEntry(from_id); |
3167 | if (entry) | 3161 | if (entry) |
3168 | { | 3162 | { |
3169 | entry->setStatus(RADAR_STATUS_TYPING); | 3163 | entry->setStatus(RADAR_STATUS_TYPING); |
3170 | } | 3164 | } |
@@ -3185,7 +3179,7 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data) | |||
3185 | if (LLFloaterMap::getInstance()) | 3179 | if (LLFloaterMap::getInstance()) |
3186 | { | 3180 | { |
3187 | PanelRadarEntry* entry = LLFloaterMap::getInstance()->getRadar()->getEntry(from_id); | 3181 | PanelRadarEntry* entry = LLFloaterMap::getInstance()->getRadar()->getEntry(from_id); |
3188 | if (entry) | 3182 | if (entry) |
3189 | { | 3183 | { |
3190 | entry->setStatus(RADAR_STATUS_NONE); | 3184 | entry->setStatus(RADAR_STATUS_NONE); |
3191 | } | 3185 | } |
@@ -3202,7 +3196,7 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data) | |||
3202 | 3196 | ||
3203 | if (!is_muted && !is_busy) | 3197 | if (!is_muted && !is_busy) |
3204 | { | 3198 | { |
3205 | 3199 | ||
3206 | BOOL sUseChatBubbles = gSavedSettings.getBOOL("UseChatBubbles"); | 3200 | BOOL sUseChatBubbles = gSavedSettings.getBOOL("UseChatBubbles"); |
3207 | if(sUseChatBubbles) | 3201 | if(sUseChatBubbles) |
3208 | { | 3202 | { |
@@ -3288,7 +3282,7 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data) | |||
3288 | verb = " retained: @"; | 3282 | verb = " retained: @"; |
3289 | mesg = strRetained; | 3283 | mesg = strRetained; |
3290 | } | 3284 | } |
3291 | else | 3285 | else |
3292 | { | 3286 | { |
3293 | verb = ": @"; | 3287 | verb = ": @"; |
3294 | if (!strExecuted.empty()) | 3288 | if (!strExecuted.empty()) |
@@ -3309,7 +3303,7 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data) | |||
3309 | LLPointer<LLViewerPartSourceChat> psc = new LLViewerPartSourceChat(chatter->getPositionAgent()); | 3303 | LLPointer<LLViewerPartSourceChat> psc = new LLViewerPartSourceChat(chatter->getPositionAgent()); |
3310 | psc->setSourceObject(chatter); | 3304 | psc->setSourceObject(chatter); |
3311 | psc->setColor(color); | 3305 | psc->setColor(color); |
3312 | //We set the particles to be owned by the object's owner, | 3306 | //We set the particles to be owned by the object's owner, |
3313 | //just in case they should be muted by the mute list | 3307 | //just in case they should be muted by the mute list |
3314 | psc->setOwnerUUID(owner_id); | 3308 | psc->setOwnerUUID(owner_id); |
3315 | LLViewerPartSim::getInstance()->addPartSource(psc); | 3309 | LLViewerPartSim::getInstance()->addPartSource(psc); |
@@ -3337,7 +3331,7 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data) | |||
3337 | chat.mText += verb; | 3331 | chat.mText += verb; |
3338 | chat.mText += mesg; | 3332 | chat.mText += mesg; |
3339 | } | 3333 | } |
3340 | 3334 | ||
3341 | if (chatter) | 3335 | if (chatter) |
3342 | { | 3336 | { |
3343 | chat.mPosAgent = chatter->getPositionAgent(); | 3337 | chat.mPosAgent = chatter->getPositionAgent(); |
@@ -3374,10 +3368,10 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data) | |||
3374 | 3368 | ||
3375 | 3369 | ||
3376 | // Simulator we're on is informing the viewer that the agent | 3370 | // Simulator we're on is informing the viewer that the agent |
3377 | // is starting to teleport (perhaps to another sim, perhaps to the | 3371 | // is starting to teleport (perhaps to another sim, perhaps to the |
3378 | // same sim). If we initiated the teleport process by sending some kind | 3372 | // same sim). If we initiated the teleport process by sending some kind |
3379 | // of TeleportRequest, then this info is redundant, but if the sim | 3373 | // of TeleportRequest, then this info is redundant, but if the sim |
3380 | // initiated the teleport (via a script call, being killed, etc.) | 3374 | // initiated the teleport (via a script call, being killed, etc.) |
3381 | // then this info is news to us. | 3375 | // then this info is news to us. |
3382 | void process_teleport_start(LLMessageSystem *msg, void**) | 3376 | void process_teleport_start(LLMessageSystem *msg, void**) |
3383 | { | 3377 | { |
@@ -3404,7 +3398,7 @@ void process_teleport_start(LLMessageSystem *msg, void**) | |||
3404 | gTeleportDisplay = TRUE; | 3398 | gTeleportDisplay = TRUE; |
3405 | gAgent.setTeleportState( LLAgent::TELEPORT_START ); | 3399 | gAgent.setTeleportState( LLAgent::TELEPORT_START ); |
3406 | make_ui_sound("UISndTeleportOut"); | 3400 | make_ui_sound("UISndTeleportOut"); |
3407 | 3401 | ||
3408 | // Don't call LLFirstUse::useTeleport here because this could be | 3402 | // Don't call LLFirstUse::useTeleport here because this could be |
3409 | // due to being killed, which would send you home, not to a Telehub | 3403 | // due to being killed, which would send you home, not to a Telehub |
3410 | } | 3404 | } |
@@ -3441,7 +3435,7 @@ void process_teleport_progress(LLMessageSystem* msg, void**) | |||
3441 | //if we don't find the coresponding mapping in our progress mappings | 3435 | //if we don't find the coresponding mapping in our progress mappings |
3442 | std::string message = buffer; | 3436 | std::string message = buffer; |
3443 | 3437 | ||
3444 | if (LLAgent::sTeleportProgressMessages.find(buffer) != | 3438 | if (LLAgent::sTeleportProgressMessages.find(buffer) != |
3445 | LLAgent::sTeleportProgressMessages.end() ) | 3439 | LLAgent::sTeleportProgressMessages.end() ) |
3446 | { | 3440 | { |
3447 | message = LLAgent::sTeleportProgressMessages[buffer]; | 3441 | message = LLAgent::sTeleportProgressMessages[buffer]; |
@@ -3502,7 +3496,7 @@ public: | |||
3502 | 3496 | ||
3503 | 3497 | ||
3504 | 3498 | ||
3505 | class LLPostTeleportNotifiers : public LLEventTimer | 3499 | class LLPostTeleportNotifiers : public LLEventTimer |
3506 | { | 3500 | { |
3507 | public: | 3501 | public: |
3508 | LLPostTeleportNotifiers(); | 3502 | LLPostTeleportNotifiers(); |
@@ -3529,10 +3523,10 @@ BOOL LLPostTeleportNotifiers::tick() | |||
3529 | LLInventoryFetchDescendentsObserver::folder_ref_t folders; | 3523 | LLInventoryFetchDescendentsObserver::folder_ref_t folders; |
3530 | LLUUID folder_id; | 3524 | LLUUID folder_id; |
3531 | folder_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_CALLINGCARD); | 3525 | folder_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_CALLINGCARD); |
3532 | if(folder_id.notNull()) | 3526 | if(folder_id.notNull()) |
3533 | folders.push_back(folder_id); | 3527 | folders.push_back(folder_id); |
3534 | folder_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_LANDMARK); | 3528 | folder_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_LANDMARK); |
3535 | if(folder_id.notNull()) | 3529 | if(folder_id.notNull()) |
3536 | folders.push_back(folder_id); | 3530 | folders.push_back(folder_id); |
3537 | if(!folders.empty()) | 3531 | if(!folders.empty()) |
3538 | { | 3532 | { |
@@ -3588,7 +3582,7 @@ void process_teleport_finish(LLMessageSystem* msg, void**) | |||
3588 | msg->getU64Fast(_PREHASH_Info, _PREHASH_RegionHandle, region_handle); | 3582 | msg->getU64Fast(_PREHASH_Info, _PREHASH_RegionHandle, region_handle); |
3589 | U32 teleport_flags; | 3583 | U32 teleport_flags; |
3590 | msg->getU32Fast(_PREHASH_Info, _PREHASH_TeleportFlags, teleport_flags); | 3584 | msg->getU32Fast(_PREHASH_Info, _PREHASH_TeleportFlags, teleport_flags); |
3591 | 3585 | ||
3592 | U32 region_size_x = 256; | 3586 | U32 region_size_x = 256; |
3593 | msg->getU32Fast(_PREHASH_Info, _PREHASH_RegionSizeX, region_size_x); | 3587 | msg->getU32Fast(_PREHASH_Info, _PREHASH_RegionSizeX, region_size_x); |
3594 | U32 region_size_y = 256; | 3588 | U32 region_size_y = 256; |
@@ -3600,17 +3594,17 @@ void process_teleport_finish(LLMessageSystem* msg, void**) | |||
3600 | region_size_x = 256; | 3594 | region_size_x = 256; |
3601 | region_size_y = 256; | 3595 | region_size_y = 256; |
3602 | } | 3596 | } |
3603 | 3597 | ||
3604 | std::string seedCap; | 3598 | std::string seedCap; |
3605 | msg->getStringFast(_PREHASH_Info, _PREHASH_SeedCapability, seedCap); | 3599 | msg->getStringFast(_PREHASH_Info, _PREHASH_SeedCapability, seedCap); |
3606 | 3600 | ||
3607 | // update home location if we are teleporting out of prelude - specific to teleporting to welcome area | 3601 | // update home location if we are teleporting out of prelude - specific to teleporting to welcome area |
3608 | if((teleport_flags & TELEPORT_FLAGS_SET_HOME_TO_TARGET) | 3602 | if((teleport_flags & TELEPORT_FLAGS_SET_HOME_TO_TARGET) |
3609 | && (!gAgent.isGodlike())) | 3603 | && (!gAgent.isGodlike())) |
3610 | { | 3604 | { |
3611 | gAgent.setHomePosRegion(region_handle, pos); | 3605 | gAgent.setHomePosRegion(region_handle, pos); |
3612 | 3606 | ||
3613 | // Create a timer that will send notices when teleporting is all finished. Since this is | 3607 | // Create a timer that will send notices when teleporting is all finished. Since this is |
3614 | // based on the LLEventTimer class, it will be managed by that class and not orphaned or leaked. | 3608 | // based on the LLEventTimer class, it will be managed by that class and not orphaned or leaked. |
3615 | new LLPostTeleportNotifiers(); | 3609 | new LLPostTeleportNotifiers(); |
3616 | } | 3610 | } |
@@ -3674,8 +3668,7 @@ void process_teleport_finish(LLMessageSystem* msg, void**) | |||
3674 | // gViewerWindow->setShowProgress(TRUE); | 3668 | // gViewerWindow->setShowProgress(TRUE); |
3675 | 3669 | ||
3676 | // Tell the LightShare handler that we have changed regions. | 3670 | // Tell the LightShare handler that we have changed regions. |
3677 | WindlightMessage::resetRegion(); | 3671 | LightShare::resetRegion(); |
3678 | WLSettingsManager::wlresetRegion(); | ||
3679 | } | 3672 | } |
3680 | 3673 | ||
3681 | // stuff we have to do every time we get an AvatarInitComplete from a sim | 3674 | // stuff we have to do every time we get an AvatarInitComplete from a sim |
@@ -3713,7 +3706,7 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**) | |||
3713 | msg->getVector3Fast(_PREHASH_Data, _PREHASH_LookAt, look_at); | 3706 | msg->getVector3Fast(_PREHASH_Data, _PREHASH_LookAt, look_at); |
3714 | U64 region_handle; | 3707 | U64 region_handle; |
3715 | msg->getU64Fast(_PREHASH_Data, _PREHASH_RegionHandle, region_handle); | 3708 | msg->getU64Fast(_PREHASH_Data, _PREHASH_RegionHandle, region_handle); |
3716 | 3709 | ||
3717 | std::string version_channel; | 3710 | std::string version_channel; |
3718 | msg->getString("SimData", "ChannelVersion", version_channel); | 3711 | msg->getString("SimData", "ChannelVersion", version_channel); |
3719 | 3712 | ||
@@ -3735,8 +3728,8 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**) | |||
3735 | LL_WARNS("Messaging") << "current region " << gAgent.getRegion()->getOriginGlobal() << LL_ENDL; | 3728 | LL_WARNS("Messaging") << "current region " << gAgent.getRegion()->getOriginGlobal() << LL_ENDL; |
3736 | } | 3729 | } |
3737 | 3730 | ||
3738 | LL_WARNS("Messaging") << "Agent being sent to invalid home region: " | 3731 | LL_WARNS("Messaging") << "Agent being sent to invalid home region: " |
3739 | << x << ":" << y | 3732 | << x << ":" << y |
3740 | << " current pos " << gAgent.getPositionGlobal() | 3733 | << " current pos " << gAgent.getPositionGlobal() |
3741 | << LL_ENDL; | 3734 | << LL_ENDL; |
3742 | LLAppViewer::instance()->forceDisconnect("You were sent to an invalid region."); | 3735 | LLAppViewer::instance()->forceDisconnect("You were sent to an invalid region."); |
@@ -3784,7 +3777,7 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**) | |||
3784 | // if (avatarp) | 3777 | // if (avatarp) |
3785 | { | 3778 | { |
3786 | // Chat the "back" SLURL. (DEV-4907) | 3779 | // Chat the "back" SLURL. (DEV-4907) |
3787 | // Show this in the console if DisableTeleportScreens is true | 3780 | // Show this in the console if DisableTeleportScreens is true |
3788 | // Why? Because it's nifty, that's why -- MC | 3781 | // Why? Because it's nifty, that's why -- MC |
3789 | LLChat chat("Teleport completed from " + gAgent.getTeleportSourceSLURL()); | 3782 | LLChat chat("Teleport completed from " + gAgent.getTeleportSourceSLURL()); |
3790 | chat.mSourceType = CHAT_SOURCE_SYSTEM; | 3783 | chat.mSourceType = CHAT_SOURCE_SYSTEM; |
@@ -3874,7 +3867,7 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**) | |||
3874 | { | 3867 | { |
3875 | avatarp->mFootPlane.clearVec(); | 3868 | avatarp->mFootPlane.clearVec(); |
3876 | } | 3869 | } |
3877 | 3870 | ||
3878 | // send walk-vs-run status | 3871 | // send walk-vs-run status |
3879 | gAgent.sendWalkRun(gAgent.getRunning() || gAgent.getAlwaysRun()); | 3872 | gAgent.sendWalkRun(gAgent.getRunning() || gAgent.getAlwaysRun()); |
3880 | 3873 | ||
@@ -3931,7 +3924,7 @@ void process_crossed_region(LLMessageSystem* msg, void**) | |||
3931 | LLHost sim_host(sim_ip, sim_port); | 3924 | LLHost sim_host(sim_ip, sim_port); |
3932 | U64 region_handle; | 3925 | U64 region_handle; |
3933 | msg->getU64Fast(_PREHASH_RegionData, _PREHASH_RegionHandle, region_handle); | 3926 | msg->getU64Fast(_PREHASH_RegionData, _PREHASH_RegionHandle, region_handle); |
3934 | 3927 | ||
3935 | std::string seedCap; | 3928 | std::string seedCap; |
3936 | msg->getStringFast(_PREHASH_RegionData, _PREHASH_SeedCapability, seedCap); | 3929 | msg->getStringFast(_PREHASH_RegionData, _PREHASH_SeedCapability, seedCap); |
3937 | 3930 | ||
@@ -3953,8 +3946,7 @@ void process_crossed_region(LLMessageSystem* msg, void**) | |||
3953 | regionp->setSeedCapability(seedCap); | 3946 | regionp->setSeedCapability(seedCap); |
3954 | 3947 | ||
3955 | // Tell the LightShare handler that we have changed regions. | 3948 | // Tell the LightShare handler that we have changed regions. |
3956 | WindlightMessage::resetRegion(); | 3949 | LightShare::resetRegion(); |
3957 | WLSettingsManager::wlresetRegion(); | ||
3958 | } | 3950 | } |
3959 | 3951 | ||
3960 | 3952 | ||
@@ -4000,11 +3992,11 @@ void send_agent_update(BOOL force_send, BOOL send_reliable) | |||
4000 | const U8 DUP_MSGS = 1; // HACK! number of times to repeat data on motionless agent | 3992 | const U8 DUP_MSGS = 1; // HACK! number of times to repeat data on motionless agent |
4001 | 3993 | ||
4002 | // Store data on last sent update so that if no changes, no send | 3994 | // Store data on last sent update so that if no changes, no send |
4003 | static LLVector3 last_camera_pos_agent, | 3995 | static LLVector3 last_camera_pos_agent, |
4004 | last_camera_at, | 3996 | last_camera_at, |
4005 | last_camera_left, | 3997 | last_camera_left, |
4006 | last_camera_up; | 3998 | last_camera_up; |
4007 | 3999 | ||
4008 | static LLVector3 cam_center_chg, | 4000 | static LLVector3 cam_center_chg, |
4009 | cam_rot_chg; | 4001 | cam_rot_chg; |
4010 | 4002 | ||
@@ -4057,13 +4049,13 @@ void send_agent_update(BOOL force_send, BOOL send_reliable) | |||
4057 | 4049 | ||
4058 | head_rot_chg = dot(last_head_rot, head_rotation); | 4050 | head_rot_chg = dot(last_head_rot, head_rotation); |
4059 | 4051 | ||
4060 | if (force_send || | 4052 | if (force_send || |
4061 | (cam_center_chg.magVec() > TRANSLATE_THRESHOLD) || | 4053 | (cam_center_chg.magVec() > TRANSLATE_THRESHOLD) || |
4062 | (head_rot_chg < THRESHOLD_HEAD_ROT_QDOT) || | 4054 | (head_rot_chg < THRESHOLD_HEAD_ROT_QDOT) || |
4063 | (last_render_state != render_state) || | 4055 | (last_render_state != render_state) || |
4064 | (cam_rot_chg.magVec() > ROTATION_THRESHOLD) || | 4056 | (cam_rot_chg.magVec() > ROTATION_THRESHOLD) || |
4065 | control_flag_change != 0 || | 4057 | control_flag_change != 0 || |
4066 | flag_change != 0) | 4058 | flag_change != 0) |
4067 | { | 4059 | { |
4068 | /* | 4060 | /* |
4069 | if (head_rot_chg < THRESHOLD_HEAD_ROT_QDOT) | 4061 | if (head_rot_chg < THRESHOLD_HEAD_ROT_QDOT) |
@@ -4071,7 +4063,7 @@ void send_agent_update(BOOL force_send, BOOL send_reliable) | |||
4071 | //LL_INFOS("Messaging") << "head rot " << head_rotation << LL_ENDL; | 4063 | //LL_INFOS("Messaging") << "head rot " << head_rotation << LL_ENDL; |
4072 | LL_INFOS("Messaging") << "head_rot_chg = " << head_rot_chg << LL_ENDL; | 4064 | LL_INFOS("Messaging") << "head_rot_chg = " << head_rot_chg << LL_ENDL; |
4073 | } | 4065 | } |
4074 | if (cam_rot_chg.magVec() > ROTATION_THRESHOLD) | 4066 | if (cam_rot_chg.magVec() > ROTATION_THRESHOLD) |
4075 | { | 4067 | { |
4076 | LL_INFOS("Messaging") << "cam rot " << cam_rot_chg.magVec() << LL_ENDL; | 4068 | LL_INFOS("Messaging") << "cam rot " << cam_rot_chg.magVec() << LL_ENDL; |
4077 | } | 4069 | } |
@@ -4102,8 +4094,8 @@ void send_agent_update(BOOL force_send, BOOL send_reliable) | |||
4102 | // some threshold from the last update, however this can break fine | 4094 | // some threshold from the last update, however this can break fine |
4103 | // adjustments when trying to aim an attached gun, so what we do here | 4095 | // adjustments when trying to aim an attached gun, so what we do here |
4104 | // (where we would normally skip sending an update when nothing has changed) | 4096 | // (where we would normally skip sending an update when nothing has changed) |
4105 | // is gradually reduce the threshold to allow a better update to | 4097 | // is gradually reduce the threshold to allow a better update to |
4106 | // eventually get sent... should update to within 0.5 degrees in less | 4098 | // eventually get sent... should update to within 0.5 degrees in less |
4107 | // than a second. | 4099 | // than a second. |
4108 | if (head_rot_chg < THRESHOLD_HEAD_ROT_QDOT + (MAX_HEAD_ROT_QDOT - THRESHOLD_HEAD_ROT_QDOT) * duplicate_count / AGENT_UPDATES_PER_SECOND) | 4100 | if (head_rot_chg < THRESHOLD_HEAD_ROT_QDOT + (MAX_HEAD_ROT_QDOT - THRESHOLD_HEAD_ROT_QDOT) * duplicate_count / AGENT_UPDATES_PER_SECOND) |
4109 | { | 4101 | { |
@@ -4136,13 +4128,13 @@ void send_agent_update(BOOL force_send, BOOL send_reliable) | |||
4136 | // { | 4128 | // { |
4137 | // LL_INFOS("Messaging") << "Sending camera center " << camera_pos_agent << LL_ENDL; | 4129 | // LL_INFOS("Messaging") << "Sending camera center " << camera_pos_agent << LL_ENDL; |
4138 | // } | 4130 | // } |
4139 | 4131 | ||
4140 | msg->addVector3Fast(_PREHASH_CameraCenter, camera_pos_agent); | 4132 | msg->addVector3Fast(_PREHASH_CameraCenter, camera_pos_agent); |
4141 | msg->addVector3Fast(_PREHASH_CameraAtAxis, LLViewerCamera::getInstance()->getAtAxis()); | 4133 | msg->addVector3Fast(_PREHASH_CameraAtAxis, LLViewerCamera::getInstance()->getAtAxis()); |
4142 | msg->addVector3Fast(_PREHASH_CameraLeftAxis, LLViewerCamera::getInstance()->getLeftAxis()); | 4134 | msg->addVector3Fast(_PREHASH_CameraLeftAxis, LLViewerCamera::getInstance()->getLeftAxis()); |
4143 | msg->addVector3Fast(_PREHASH_CameraUpAxis, LLViewerCamera::getInstance()->getUpAxis()); | 4135 | msg->addVector3Fast(_PREHASH_CameraUpAxis, LLViewerCamera::getInstance()->getUpAxis()); |
4144 | msg->addF32Fast(_PREHASH_Far, gAgent.mDrawDistance); | 4136 | msg->addF32Fast(_PREHASH_Far, gAgent.mDrawDistance); |
4145 | 4137 | ||
4146 | msg->addU32Fast(_PREHASH_ControlFlags, control_flags); | 4138 | msg->addU32Fast(_PREHASH_ControlFlags, control_flags); |
4147 | 4139 | ||
4148 | if (gDebugClicks) | 4140 | if (gDebugClicks) |
@@ -4171,7 +4163,7 @@ void send_agent_update(BOOL force_send, BOOL send_reliable) | |||
4171 | 4163 | ||
4172 | // LL_DEBUGS("Messaging") << "agent " << avatar_pos_agent << " cam " << camera_pos_agent << LL_ENDL; | 4164 | // LL_DEBUGS("Messaging") << "agent " << avatar_pos_agent << " cam " << camera_pos_agent << LL_ENDL; |
4173 | 4165 | ||
4174 | // Copy the old data | 4166 | // Copy the old data |
4175 | last_head_rot = head_rotation; | 4167 | last_head_rot = head_rotation; |
4176 | last_render_state = render_state; | 4168 | last_render_state = render_state; |
4177 | last_camera_pos_agent = camera_pos_agent; | 4169 | last_camera_pos_agent = camera_pos_agent; |
@@ -4190,7 +4182,7 @@ void send_agent_update(BOOL force_send, BOOL send_reliable) | |||
4190 | extern U32 gObjectBits; | 4182 | extern U32 gObjectBits; |
4191 | 4183 | ||
4192 | void process_object_update(LLMessageSystem *mesgsys, void **user_data) | 4184 | void process_object_update(LLMessageSystem *mesgsys, void **user_data) |
4193 | { | 4185 | { |
4194 | LLMemType mt(LLMemType::MTYPE_OBJECT); | 4186 | LLMemType mt(LLMemType::MTYPE_OBJECT); |
4195 | // Update the data counters | 4187 | // Update the data counters |
4196 | if (mesgsys->getReceiveCompressedSize()) | 4188 | if (mesgsys->getReceiveCompressedSize()) |
@@ -4396,7 +4388,7 @@ void process_sound_trigger(LLMessageSystem *msg, void **) | |||
4396 | 4388 | ||
4397 | // Don't play sounds triggered by someone you muted. | 4389 | // Don't play sounds triggered by someone you muted. |
4398 | if (LLMuteList::getInstance()->isMuted(owner_id, LLMute::flagObjectSounds)) return; | 4390 | if (LLMuteList::getInstance()->isMuted(owner_id, LLMute::flagObjectSounds)) return; |
4399 | 4391 | ||
4400 | // Don't play sounds from an object you muted | 4392 | // Don't play sounds from an object you muted |
4401 | if (LLMuteList::getInstance()->isMuted(object_id)) return; | 4393 | if (LLMuteList::getInstance()->isMuted(object_id)) return; |
4402 | 4394 | ||
@@ -4426,7 +4418,7 @@ void process_sound_trigger(LLMessageSystem *msg, void **) | |||
4426 | { | 4418 | { |
4427 | return; | 4419 | return; |
4428 | }*/ | 4420 | }*/ |
4429 | 4421 | ||
4430 | gAudiop->triggerSound(sound_id, owner_id, gain, LLAudioEngine::AUDIO_TYPE_SFX, pos_global); | 4422 | gAudiop->triggerSound(sound_id, owner_id, gain, LLAudioEngine::AUDIO_TYPE_SFX, pos_global); |
4431 | } | 4423 | } |
4432 | 4424 | ||
@@ -4450,10 +4442,10 @@ void process_preload_sound(LLMessageSystem *msg, void **user_data) | |||
4450 | 4442 | ||
4451 | if (LLMuteList::getInstance()->isMuted(object_id)) return; | 4443 | if (LLMuteList::getInstance()->isMuted(object_id)) return; |
4452 | if (LLMuteList::getInstance()->isMuted(owner_id, LLMute::flagObjectSounds)) return; | 4444 | if (LLMuteList::getInstance()->isMuted(owner_id, LLMute::flagObjectSounds)) return; |
4453 | 4445 | ||
4454 | LLAudioSource *sourcep = objectp->getAudioSource(owner_id); | 4446 | LLAudioSource *sourcep = objectp->getAudioSource(owner_id); |
4455 | if (!sourcep) return; | 4447 | if (!sourcep) return; |
4456 | 4448 | ||
4457 | LLAudioData *datap = gAudiop->getAudioData(sound_id); | 4449 | LLAudioData *datap = gAudiop->getAudioData(sound_id); |
4458 | 4450 | ||
4459 | // Note that I don't actually do any loading of the | 4451 | // Note that I don't actually do any loading of the |
@@ -4467,7 +4459,7 @@ void process_preload_sound(LLMessageSystem *msg, void **user_data) | |||
4467 | { | 4459 | { |
4468 | return; | 4460 | return; |
4469 | }*/ | 4461 | }*/ |
4470 | 4462 | ||
4471 | // Add audioData starts a transfer internally. | 4463 | // Add audioData starts a transfer internally. |
4472 | sourcep->addAudioData(datap, FALSE); | 4464 | sourcep->addAudioData(datap, FALSE); |
4473 | } | 4465 | } |
@@ -4495,12 +4487,12 @@ void process_attached_sound(LLMessageSystem *msg, void **user_data) | |||
4495 | // we don't know about this object, just bail | 4487 | // we don't know about this object, just bail |
4496 | return; | 4488 | return; |
4497 | } | 4489 | } |
4498 | 4490 | ||
4499 | if (LLMuteList::getInstance()->isMuted(object_id)) return; | 4491 | if (LLMuteList::getInstance()->isMuted(object_id)) return; |
4500 | 4492 | ||
4501 | if (LLMuteList::getInstance()->isMuted(owner_id, LLMute::flagObjectSounds)) return; | 4493 | if (LLMuteList::getInstance()->isMuted(owner_id, LLMute::flagObjectSounds)) return; |
4502 | 4494 | ||
4503 | 4495 | ||
4504 | // Don't play sounds from a region with maturity above current agent maturity | 4496 | // Don't play sounds from a region with maturity above current agent maturity |
4505 | // Actually, let's -- MC | 4497 | // Actually, let's -- MC |
4506 | /*LLVector3d pos = objectp->getPositionGlobal(); | 4498 | /*LLVector3d pos = objectp->getPositionGlobal(); |
@@ -4508,7 +4500,7 @@ void process_attached_sound(LLMessageSystem *msg, void **user_data) | |||
4508 | { | 4500 | { |
4509 | return; | 4501 | return; |
4510 | }*/ | 4502 | }*/ |
4511 | 4503 | ||
4512 | objectp->setAttachedSound(sound_id, owner_id, gain, flags); | 4504 | objectp->setAttachedSound(sound_id, owner_id, gain, flags); |
4513 | } | 4505 | } |
4514 | 4506 | ||
@@ -4547,7 +4539,7 @@ void process_health_message(LLMessageSystem *mesgsys, void **user_data) | |||
4547 | 4539 | ||
4548 | 4540 | ||
4549 | void process_sim_stats(LLMessageSystem *msg, void **user_data) | 4541 | void process_sim_stats(LLMessageSystem *msg, void **user_data) |
4550 | { | 4542 | { |
4551 | S32 count = msg->getNumberOfBlocks("Stat"); | 4543 | S32 count = msg->getNumberOfBlocks("Stat"); |
4552 | for (S32 i = 0; i < count; ++i) | 4544 | for (S32 i = 0; i < count; ++i) |
4553 | { | 4545 | { |
@@ -4696,7 +4688,7 @@ void process_sim_stats(LLMessageSystem *msg, void **user_data) | |||
4696 | BOOL was_flying = gAgent.getFlying(); | 4688 | BOOL was_flying = gAgent.getFlying(); |
4697 | regionp->setRegionFlags(region_flags); | 4689 | regionp->setRegionFlags(region_flags); |
4698 | regionp->setMaxTasks(max_tasks_per_region); | 4690 | regionp->setMaxTasks(max_tasks_per_region); |
4699 | // HACK: This makes agents drop from the sky if the region is | 4691 | // HACK: This makes agents drop from the sky if the region is |
4700 | // set to no fly while people are still in the sim. | 4692 | // set to no fly while people are still in the sim. |
4701 | if (was_flying && regionp->getBlockFly()) | 4693 | if (was_flying && regionp->getBlockFly()) |
4702 | { | 4694 | { |
@@ -4713,7 +4705,7 @@ void process_avatar_animation(LLMessageSystem *mesgsys, void **user_data) | |||
4713 | LLUUID uuid; | 4705 | LLUUID uuid; |
4714 | S32 anim_sequence_id; | 4706 | S32 anim_sequence_id; |
4715 | LLVOAvatar *avatarp; | 4707 | LLVOAvatar *avatarp; |
4716 | 4708 | ||
4717 | mesgsys->getUUIDFast(_PREHASH_Sender, _PREHASH_ID, uuid); | 4709 | mesgsys->getUUIDFast(_PREHASH_Sender, _PREHASH_ID, uuid); |
4718 | 4710 | ||
4719 | //clear animation flags | 4711 | //clear animation flags |
@@ -4730,7 +4722,7 @@ void process_avatar_animation(LLMessageSystem *mesgsys, void **user_data) | |||
4730 | S32 num_source_blocks = mesgsys->getNumberOfBlocksFast(_PREHASH_AnimationSourceList); | 4722 | S32 num_source_blocks = mesgsys->getNumberOfBlocksFast(_PREHASH_AnimationSourceList); |
4731 | 4723 | ||
4732 | avatarp->mSignaledAnimations.clear(); | 4724 | avatarp->mSignaledAnimations.clear(); |
4733 | 4725 | ||
4734 | if (avatarp->isSelf()) | 4726 | if (avatarp->isSelf()) |
4735 | { | 4727 | { |
4736 | LLUUID object_id; | 4728 | LLUUID object_id; |
@@ -4740,7 +4732,7 @@ void process_avatar_animation(LLMessageSystem *mesgsys, void **user_data) | |||
4740 | mesgsys->getUUIDFast(_PREHASH_AnimationList, _PREHASH_AnimID, animation_id, i); | 4732 | mesgsys->getUUIDFast(_PREHASH_AnimationList, _PREHASH_AnimID, animation_id, i); |
4741 | mesgsys->getS32Fast(_PREHASH_AnimationList, _PREHASH_AnimSequenceID, anim_sequence_id, i); | 4733 | mesgsys->getS32Fast(_PREHASH_AnimationList, _PREHASH_AnimSequenceID, anim_sequence_id, i); |
4742 | 4734 | ||
4743 | LL_DEBUGS("Messaging") << "Animation id " << animation_id | 4735 | LL_DEBUGS("Messaging") << "Animation id " << animation_id |
4744 | << " from self using sequence id " << anim_sequence_id << LL_ENDL; | 4736 | << " from self using sequence id " << anim_sequence_id << LL_ENDL; |
4745 | 4737 | ||
4746 | avatarp->mSignaledAnimations[animation_id] = anim_sequence_id; | 4738 | avatarp->mSignaledAnimations[animation_id] = anim_sequence_id; |
@@ -4748,7 +4740,7 @@ void process_avatar_animation(LLMessageSystem *mesgsys, void **user_data) | |||
4748 | if (i < num_source_blocks) | 4740 | if (i < num_source_blocks) |
4749 | { | 4741 | { |
4750 | mesgsys->getUUIDFast(_PREHASH_AnimationSourceList, _PREHASH_ObjectID, object_id, i); | 4742 | mesgsys->getUUIDFast(_PREHASH_AnimationSourceList, _PREHASH_ObjectID, object_id, i); |
4751 | 4743 | ||
4752 | LLViewerObject* object = gObjectList.findObject(object_id); | 4744 | LLViewerObject* object = gObjectList.findObject(object_id); |
4753 | if (object) | 4745 | if (object) |
4754 | { | 4746 | { |
@@ -4780,8 +4772,8 @@ void process_avatar_animation(LLMessageSystem *mesgsys, void **user_data) | |||
4780 | mesgsys->getUUIDFast(_PREHASH_AnimationList, _PREHASH_AnimID, animation_id, i); | 4772 | mesgsys->getUUIDFast(_PREHASH_AnimationList, _PREHASH_AnimID, animation_id, i); |
4781 | mesgsys->getS32Fast(_PREHASH_AnimationList, _PREHASH_AnimSequenceID, anim_sequence_id, i); | 4773 | mesgsys->getS32Fast(_PREHASH_AnimationList, _PREHASH_AnimSequenceID, anim_sequence_id, i); |
4782 | avatarp->mSignaledAnimations[animation_id] = anim_sequence_id; | 4774 | avatarp->mSignaledAnimations[animation_id] = anim_sequence_id; |
4783 | LL_DEBUGS("Messaging") << "Received animation id " << animation_id | 4775 | LL_DEBUGS("Messaging") << "Received animation id " << animation_id |
4784 | << " from " << uuid | 4776 | << " from " << uuid |
4785 | << " using sequence id " << anim_sequence_id << LL_ENDL; | 4777 | << " using sequence id " << anim_sequence_id << LL_ENDL; |
4786 | } | 4778 | } |
4787 | } | 4779 | } |
@@ -4856,7 +4848,7 @@ void process_avatar_sit_response(LLMessageSystem *mesgsys, void **user_data) | |||
4856 | { | 4848 | { |
4857 | gAgent.setSitCamera(sitObjectID, camera_eye, camera_at); | 4849 | gAgent.setSitCamera(sitObjectID, camera_eye, camera_at); |
4858 | } | 4850 | } |
4859 | 4851 | ||
4860 | gAgent.mForceMouselook = force_mouselook; | 4852 | gAgent.mForceMouselook = force_mouselook; |
4861 | 4853 | ||
4862 | LLViewerObject* object = gObjectList.findObject(sitObjectID); | 4854 | LLViewerObject* object = gObjectList.findObject(sitObjectID); |
@@ -4952,7 +4944,7 @@ void process_set_follow_cam_properties(LLMessageSystem *mesgsys, void **user_dat | |||
4952 | LLFollowCamMgr::setFocusThreshold(source_id, value); | 4944 | LLFollowCamMgr::setFocusThreshold(source_id, value); |
4953 | break; | 4945 | break; |
4954 | case FOLLOWCAM_ACTIVE: | 4946 | case FOLLOWCAM_ACTIVE: |
4955 | //if 1, set using followcam,. | 4947 | //if 1, set using followcam,. |
4956 | LLFollowCamMgr::setCameraActive(source_id, value != 0.f); | 4948 | LLFollowCamMgr::setCameraActive(source_id, value != 0.f); |
4957 | break; | 4949 | break; |
4958 | case FOLLOWCAM_POSITION_X: | 4950 | case FOLLOWCAM_POSITION_X: |
@@ -5004,7 +4996,7 @@ void process_set_follow_cam_properties(LLMessageSystem *mesgsys, void **user_dat | |||
5004 | LLFollowCamMgr::setFocusOffset(source_id, focus_offset); | 4996 | LLFollowCamMgr::setFocusOffset(source_id, focus_offset); |
5005 | } | 4997 | } |
5006 | } | 4998 | } |
5007 | //end Ventrella | 4999 | //end Ventrella |
5008 | 5000 | ||
5009 | 5001 | ||
5010 | // Culled from newsim lltask.cpp | 5002 | // Culled from newsim lltask.cpp |
@@ -5196,7 +5188,7 @@ void process_money_balance_reply( LLMessageSystem* msg, void** ) | |||
5196 | bool handle_special_notification_callback(const LLSD& notification, const LLSD& response) | 5188 | bool handle_special_notification_callback(const LLSD& notification, const LLSD& response) |
5197 | { | 5189 | { |
5198 | S32 option = LLNotification::getSelectedOption(notification, response); | 5190 | S32 option = LLNotification::getSelectedOption(notification, response); |
5199 | 5191 | ||
5200 | if (0 == option) | 5192 | if (0 == option) |
5201 | { | 5193 | { |
5202 | // set the preference to the maturity of the region we're calling | 5194 | // set the preference to the maturity of the region we're calling |
@@ -5205,7 +5197,7 @@ bool handle_special_notification_callback(const LLSD& notification, const LLSD& | |||
5205 | gAgent.sendMaturityPreferenceToServer(preferredMaturity); | 5197 | gAgent.sendMaturityPreferenceToServer(preferredMaturity); |
5206 | 5198 | ||
5207 | } | 5199 | } |
5208 | 5200 | ||
5209 | return false; | 5201 | return false; |
5210 | } | 5202 | } |
5211 | 5203 | ||
@@ -5214,10 +5206,10 @@ bool handle_special_notification(std::string notificationID, LLSD& llsdBlock) | |||
5214 | { | 5206 | { |
5215 | int regionAccess = llsdBlock["_region_access"].asInteger(); | 5207 | int regionAccess = llsdBlock["_region_access"].asInteger(); |
5216 | llsdBlock["REGIONMATURITY"] = LLViewerRegion::accessToString(regionAccess); | 5208 | llsdBlock["REGIONMATURITY"] = LLViewerRegion::accessToString(regionAccess); |
5217 | 5209 | ||
5218 | // we're going to throw the LLSD in there in case anyone ever wants to use it | 5210 | // we're going to throw the LLSD in there in case anyone ever wants to use it |
5219 | LLNotifications::instance().add(notificationID+"_Notify", llsdBlock); | 5211 | LLNotifications::instance().add(notificationID+"_Notify", llsdBlock); |
5220 | 5212 | ||
5221 | if (regionAccess == SIM_ACCESS_MATURE) | 5213 | if (regionAccess == SIM_ACCESS_MATURE) |
5222 | { | 5214 | { |
5223 | if (gAgent.isTeen()) | 5215 | if (gAgent.isTeen()) |
@@ -5266,7 +5258,7 @@ bool attempt_standard_notification(LLMessageSystem* msgsystem) | |||
5266 | llwarns << "attempt_standard_notification: Attempted to read notification parameter data into LLSD but failed:" << llsdRaw << llendl; | 5258 | llwarns << "attempt_standard_notification: Attempted to read notification parameter data into LLSD but failed:" << llsdRaw << llendl; |
5267 | } | 5259 | } |
5268 | } | 5260 | } |
5269 | 5261 | ||
5270 | if ( | 5262 | if ( |
5271 | (notificationID == "RegionEntryAccessBlocked") || | 5263 | (notificationID == "RegionEntryAccessBlocked") || |
5272 | (notificationID == "LandClaimAccessBlocked") || | 5264 | (notificationID == "LandClaimAccessBlocked") || |
@@ -5277,32 +5269,32 @@ bool attempt_standard_notification(LLMessageSystem* msgsystem) | |||
5277 | (Commented so a grep will find the notification strings, since | 5269 | (Commented so a grep will find the notification strings, since |
5278 | we construct them on the fly; if you add additional notifications, | 5270 | we construct them on the fly; if you add additional notifications, |
5279 | please update the comment.) | 5271 | please update the comment.) |
5280 | 5272 | ||
5281 | Could throw any of the following notifications: | 5273 | Could throw any of the following notifications: |
5282 | 5274 | ||
5283 | RegionEntryAccessBlocked | 5275 | RegionEntryAccessBlocked |
5284 | RegionEntryAccessBlocked_Notify | 5276 | RegionEntryAccessBlocked_Notify |
5285 | RegionEntryAccessBlocked_Change | 5277 | RegionEntryAccessBlocked_Change |
5286 | RegionEntryAccessBlocked_KB | 5278 | RegionEntryAccessBlocked_KB |
5287 | LandClaimAccessBlocked | 5279 | LandClaimAccessBlocked |
5288 | LandClaimAccessBlocked_Notify | 5280 | LandClaimAccessBlocked_Notify |
5289 | LandClaimAccessBlocked_Change | 5281 | LandClaimAccessBlocked_Change |
5290 | LandClaimAccessBlocked_KB | 5282 | LandClaimAccessBlocked_KB |
5291 | LandBuyAccessBlocked | 5283 | LandBuyAccessBlocked |
5292 | LandBuyAccessBlocked_Notify | 5284 | LandBuyAccessBlocked_Notify |
5293 | LandBuyAccessBlocked_Change | 5285 | LandBuyAccessBlocked_Change |
5294 | LandBuyAccessBlocked_KB | 5286 | LandBuyAccessBlocked_KB |
5295 | 5287 | ||
5296 | -----------------------------------------------------------------------*/ | 5288 | -----------------------------------------------------------------------*/ |
5297 | if (handle_special_notification(notificationID, llsdBlock)) | 5289 | if (handle_special_notification(notificationID, llsdBlock)) |
5298 | { | 5290 | { |
5299 | return true; | 5291 | return true; |
5300 | } | 5292 | } |
5301 | } | 5293 | } |
5302 | 5294 | ||
5303 | LLNotifications::instance().add(notificationID, llsdBlock); | 5295 | LLNotifications::instance().add(notificationID, llsdBlock); |
5304 | return true; | 5296 | return true; |
5305 | } | 5297 | } |
5306 | return false; | 5298 | return false; |
5307 | } | 5299 | } |
5308 | 5300 | ||
@@ -5312,7 +5304,7 @@ void process_agent_alert_message(LLMessageSystem* msgsystem, void** user_data) | |||
5312 | // make sure the cursor is back to the usual default since the | 5304 | // make sure the cursor is back to the usual default since the |
5313 | // alert is probably due to some kind of error. | 5305 | // alert is probably due to some kind of error. |
5314 | gViewerWindow->getWindow()->resetBusyCount(); | 5306 | gViewerWindow->getWindow()->resetBusyCount(); |
5315 | 5307 | ||
5316 | if (!attempt_standard_notification(msgsystem)) | 5308 | if (!attempt_standard_notification(msgsystem)) |
5317 | { | 5309 | { |
5318 | BOOL modal = FALSE; | 5310 | BOOL modal = FALSE; |
@@ -5333,7 +5325,7 @@ void process_alert_message(LLMessageSystem *msgsystem, void **user_data) | |||
5333 | // make sure the cursor is back to the usual default since the | 5325 | // make sure the cursor is back to the usual default since the |
5334 | // alert is probably due to some kind of error. | 5326 | // alert is probably due to some kind of error. |
5335 | gViewerWindow->getWindow()->resetBusyCount(); | 5327 | gViewerWindow->getWindow()->resetBusyCount(); |
5336 | 5328 | ||
5337 | if (!attempt_standard_notification(msgsystem)) | 5329 | if (!attempt_standard_notification(msgsystem)) |
5338 | { | 5330 | { |
5339 | BOOL modal = FALSE; | 5331 | BOOL modal = FALSE; |
@@ -5462,7 +5454,7 @@ void process_mean_collision_alert_message(LLMessageSystem *msgsystem, void **use | |||
5462 | { | 5454 | { |
5463 | if (gAgent.inPrelude()) | 5455 | if (gAgent.inPrelude()) |
5464 | { | 5456 | { |
5465 | // In prelude, bumping is OK. This dialog is rather confusing to | 5457 | // In prelude, bumping is OK. This dialog is rather confusing to |
5466 | // newbies, so we don't show it. Drop the packet on the floor. | 5458 | // newbies, so we don't show it. Drop the packet on the floor. |
5467 | return; | 5459 | return; |
5468 | } | 5460 | } |
@@ -5519,7 +5511,7 @@ void process_frozen_message(LLMessageSystem *msgsystem, void **user_data) | |||
5519 | // alert is probably due to some kind of error. | 5511 | // alert is probably due to some kind of error. |
5520 | gViewerWindow->getWindow()->resetBusyCount(); | 5512 | gViewerWindow->getWindow()->resetBusyCount(); |
5521 | BOOL b_frozen; | 5513 | BOOL b_frozen; |
5522 | 5514 | ||
5523 | msgsystem->getBOOL("FrozenData", "Data", b_frozen); | 5515 | msgsystem->getBOOL("FrozenData", "Data", b_frozen); |
5524 | 5516 | ||
5525 | // TODO: make being frozen change view | 5517 | // TODO: make being frozen change view |
@@ -5538,8 +5530,8 @@ void process_economy_data(LLMessageSystem *msg, void** /*user_data*/) | |||
5538 | 5530 | ||
5539 | S32 upload_cost = LLGlobalEconomy::Singleton::getInstance()->getPriceUpload(); | 5531 | S32 upload_cost = LLGlobalEconomy::Singleton::getInstance()->getPriceUpload(); |
5540 | 5532 | ||
5541 | LL_INFOS_ONCE("Messaging") << "EconomyData message arrived; upload cost is " | 5533 | LL_INFOS_ONCE("Messaging") << "EconomyData message arrived; upload cost is " |
5542 | << gHippoGridManager->getConnectedGrid()->getCurrencySymbol() | 5534 | << gHippoGridManager->getConnectedGrid()->getCurrencySymbol() |
5543 | << upload_cost << LL_ENDL; | 5535 | << upload_cost << LL_ENDL; |
5544 | 5536 | ||
5545 | LLFloaterImagePreview::setUploadAmount(upload_cost); | 5537 | LLFloaterImagePreview::setUploadAmount(upload_cost); |
@@ -5562,13 +5554,13 @@ void notify_cautioned_script_question(const LLSD& notification, const LLSD& resp | |||
5562 | { | 5554 | { |
5563 | // check to see if the person we are asking | 5555 | // check to see if the person we are asking |
5564 | 5556 | ||
5565 | // "'[OBJECTNAME]', an object owned by '[OWNERNAME]', | 5557 | // "'[OBJECTNAME]', an object owned by '[OWNERNAME]', |
5566 | // located in [REGIONNAME] at [REGIONPOS], | 5558 | // located in [REGIONNAME] at [REGIONPOS], |
5567 | // has been <granted|denied> permission to: [PERMISSIONS]." | 5559 | // has been <granted|denied> permission to: [PERMISSIONS]." |
5568 | 5560 | ||
5569 | LLUIString notice(LLFloaterChat::getInstance()->getString(granted ? "ScriptQuestionCautionChatGranted" : "ScriptQuestionCautionChatDenied")); | 5561 | LLUIString notice(LLFloaterChat::getInstance()->getString(granted ? "ScriptQuestionCautionChatGranted" : "ScriptQuestionCautionChatDenied")); |
5570 | 5562 | ||
5571 | // always include the object name and owner name | 5563 | // always include the object name and owner name |
5572 | notice.setArg("[OBJECTNAME]", notification["payload"]["object_name"].asString()); | 5564 | notice.setArg("[OBJECTNAME]", notification["payload"]["object_name"].asString()); |
5573 | notice.setArg("[OWNERNAME]", notification["payload"]["owner_name"].asString()); | 5565 | notice.setArg("[OWNERNAME]", notification["payload"]["owner_name"].asString()); |
5574 | 5566 | ||
@@ -5580,7 +5572,7 @@ void notify_cautioned_script_question(const LLSD& notification, const LLSD& resp | |||
5580 | { | 5572 | { |
5581 | // found the viewerobject, get it's position in its region | 5573 | // found the viewerobject, get it's position in its region |
5582 | LLVector3 objpos(viewobj->getPosition()); | 5574 | LLVector3 objpos(viewobj->getPosition()); |
5583 | 5575 | ||
5584 | // try to lookup the name of the region the object is in | 5576 | // try to lookup the name of the region the object is in |
5585 | LLViewerRegion* viewregion = viewobj->getRegion(); | 5577 | LLViewerRegion* viewregion = viewobj->getRegion(); |
5586 | if (viewregion) | 5578 | if (viewregion) |
@@ -5607,7 +5599,7 @@ void notify_cautioned_script_question(const LLSD& notification, const LLSD& resp | |||
5607 | notice.setArg("[REGIONPOS]", "(unknown position)"); | 5599 | notice.setArg("[REGIONPOS]", "(unknown position)"); |
5608 | } | 5600 | } |
5609 | 5601 | ||
5610 | // check each permission that was requested, and list each | 5602 | // check each permission that was requested, and list each |
5611 | // permission that has been flagged as a caution permission | 5603 | // permission that has been flagged as a caution permission |
5612 | BOOL caution = FALSE; | 5604 | BOOL caution = FALSE; |
5613 | S32 count = 0; | 5605 | S32 count = 0; |
@@ -5659,7 +5651,7 @@ bool script_question_cb(const LLSD& notification, const LLSD& response) | |||
5659 | { | 5651 | { |
5660 | new_questions = 0; | 5652 | new_questions = 0; |
5661 | allowed = FALSE; | 5653 | allowed = FALSE; |
5662 | } | 5654 | } |
5663 | 5655 | ||
5664 | LLUUID task_id = notification["payload"]["task_id"].asUUID(); | 5656 | LLUUID task_id = notification["payload"]["task_id"].asUUID(); |
5665 | LLUUID item_id = notification["payload"]["item_id"].asUUID(); | 5657 | LLUUID item_id = notification["payload"]["item_id"].asUUID(); |
@@ -5751,10 +5743,10 @@ void process_script_question(LLMessageSystem *msg, void **user_data) | |||
5751 | { | 5743 | { |
5752 | throttle_name = taskid.getString(); | 5744 | throttle_name = taskid.getString(); |
5753 | } | 5745 | } |
5754 | 5746 | ||
5755 | // don't display permission requests if this object is muted | 5747 | // don't display permission requests if this object is muted |
5756 | if (LLMuteList::getInstance()->isMuted(taskid)) return; | 5748 | if (LLMuteList::getInstance()->isMuted(taskid)) return; |
5757 | 5749 | ||
5758 | // throttle excessive requests from any specific user's scripts | 5750 | // throttle excessive requests from any specific user's scripts |
5759 | typedef LLKeyThrottle<std::string> LLStringThrottle; | 5751 | typedef LLKeyThrottle<std::string> LLStringThrottle; |
5760 | static LLStringThrottle question_throttle( LLREQUEST_PERMISSION_THROTTLE_LIMIT, LLREQUEST_PERMISSION_THROTTLE_INTERVAL ); | 5752 | static LLStringThrottle question_throttle( LLREQUEST_PERMISSION_THROTTLE_LIMIT, LLREQUEST_PERMISSION_THROTTLE_INTERVAL ); |
@@ -5791,7 +5783,7 @@ void process_script_question(LLMessageSystem *msg, void **user_data) | |||
5791 | { | 5783 | { |
5792 | LLStringUtil::format_map_t args; | 5784 | LLStringUtil::format_map_t args; |
5793 | args["[CURRENCY]"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol(); | 5785 | args["[CURRENCY]"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol(); |
5794 | 5786 | ||
5795 | count++; | 5787 | count++; |
5796 | script_question += " " + LLFloaterChat::getInstance()->getString(SCRIPT_QUESTIONS[i], args) + "\n"; | 5788 | script_question += " " + LLFloaterChat::getInstance()->getString(SCRIPT_QUESTIONS[i], args) + "\n"; |
5797 | 5789 | ||
@@ -6144,7 +6136,7 @@ void send_group_notice(const LLUUID& group_id, | |||
6144 | { | 6136 | { |
6145 | bucket_to_send = (U8*) EMPTY_BINARY_BUCKET; | 6137 | bucket_to_send = (U8*) EMPTY_BINARY_BUCKET; |
6146 | } | 6138 | } |
6147 | 6139 | ||
6148 | 6140 | ||
6149 | send_improved_im( | 6141 | send_improved_im( |
6150 | group_id, | 6142 | group_id, |
@@ -6209,7 +6201,7 @@ void handle_lure(const LLUUID& invitee) | |||
6209 | } | 6201 | } |
6210 | 6202 | ||
6211 | // Prompt for a message to the invited user. | 6203 | // Prompt for a message to the invited user. |
6212 | void handle_lure(LLDynamicArray<LLUUID>& ids) | 6204 | void handle_lure(LLDynamicArray<LLUUID>& ids) |
6213 | { | 6205 | { |
6214 | LLSD edit_args; | 6206 | LLSD edit_args; |
6215 | // [RLVa:KB] - Version: 1.23.4 | Checked: 2009-07-04 (RLVa-1.0.0a) | 6207 | // [RLVa:KB] - Version: 1.23.4 | Checked: 2009-07-04 (RLVa-1.0.0a) |
@@ -6254,7 +6246,7 @@ void send_improved_im(const LLUUID& to_id, | |||
6254 | U8 offline, | 6246 | U8 offline, |
6255 | EInstantMessage dialog, | 6247 | EInstantMessage dialog, |
6256 | const LLUUID& id, | 6248 | const LLUUID& id, |
6257 | U32 timestamp, | 6249 | U32 timestamp, |
6258 | const U8* binary_bucket, | 6250 | const U8* binary_bucket, |
6259 | S32 binary_bucket_size) | 6251 | S32 binary_bucket_size) |
6260 | { | 6252 | { |
@@ -6313,7 +6305,7 @@ void process_user_info_reply(LLMessageSystem* msg, void**) | |||
6313 | LL_WARNS("Messaging") << "process_user_info_reply - " | 6305 | LL_WARNS("Messaging") << "process_user_info_reply - " |
6314 | << "wrong agent id." << LL_ENDL; | 6306 | << "wrong agent id." << LL_ENDL; |
6315 | } | 6307 | } |
6316 | 6308 | ||
6317 | BOOL im_via_email; | 6309 | BOOL im_via_email; |
6318 | msg->getBOOLFast(_PREHASH_UserData, _PREHASH_IMViaEMail, im_via_email); | 6310 | msg->getBOOLFast(_PREHASH_UserData, _PREHASH_IMViaEMail, im_via_email); |
6319 | std::string email; | 6311 | std::string email; |
@@ -6367,7 +6359,7 @@ void process_script_dialog(LLMessageSystem* msg, void**) | |||
6367 | 6359 | ||
6368 | LLSD payload; | 6360 | LLSD payload; |
6369 | 6361 | ||
6370 | std::string message; | 6362 | std::string message; |
6371 | std::string first_name; | 6363 | std::string first_name; |
6372 | std::string last_name; | 6364 | std::string last_name; |
6373 | std::string title; | 6365 | std::string title; |
@@ -6387,7 +6379,7 @@ void process_script_dialog(LLMessageSystem* msg, void**) | |||
6387 | { | 6379 | { |
6388 | std::vector<LLMute> mutes = LLMuteList::getInstance()->getMutes(); | 6380 | std::vector<LLMute> mutes = LLMuteList::getInstance()->getMutes(); |
6389 | for (U32 i = 0; i < mutes.size(); i++) | 6381 | for (U32 i = 0; i < mutes.size(); i++) |
6390 | { | 6382 | { |
6391 | //this is almost like saying (mutes[i].mType != LLMute::Object), but more verbose ... -Kaku | 6383 | //this is almost like saying (mutes[i].mType != LLMute::Object), but more verbose ... -Kaku |
6392 | if ( | 6384 | if ( |
6393 | ((mutes[i].mType == LLMute::AGENT) | 6385 | ((mutes[i].mType == LLMute::AGENT) |
@@ -6650,7 +6642,7 @@ void process_script_teleport_request(LLMessageSystem* msg, void**) | |||
6650 | // remove above two lines and replace with below line | 6642 | // remove above two lines and replace with below line |
6651 | // to re-enable parcel browser for llMapDestination() | 6643 | // to re-enable parcel browser for llMapDestination() |
6652 | // LLURLDispatcher::dispatch(LLURLDispatcher::buildSLURL(sim_name, (S32)pos.mV[VX], (S32)pos.mV[VY], (S32)pos.mV[VZ]), FALSE); | 6644 | // LLURLDispatcher::dispatch(LLURLDispatcher::buildSLURL(sim_name, (S32)pos.mV[VX], (S32)pos.mV[VY], (S32)pos.mV[VZ]), FALSE); |
6653 | 6645 | ||
6654 | } | 6646 | } |
6655 | 6647 | ||
6656 | void process_covenant_reply(LLMessageSystem* msg, void**) | 6648 | void process_covenant_reply(LLMessageSystem* msg, void**) |
@@ -6683,7 +6675,7 @@ void process_covenant_reply(LLMessageSystem* msg, void**) | |||
6683 | LLFloaterBuyLand::updateLastModified(last_modified); | 6675 | LLFloaterBuyLand::updateLastModified(last_modified); |
6684 | 6676 | ||
6685 | gCacheName->getName(estate_owner_id, callbackCacheEstateOwnerName); | 6677 | gCacheName->getName(estate_owner_id, callbackCacheEstateOwnerName); |
6686 | 6678 | ||
6687 | // load the actual covenant asset data | 6679 | // load the actual covenant asset data |
6688 | const BOOL high_priority = TRUE; | 6680 | const BOOL high_priority = TRUE; |
6689 | if (covenant_id.notNull()) | 6681 | if (covenant_id.notNull()) |
@@ -6721,7 +6713,7 @@ void callbackCacheEstateOwnerName(const LLUUID& id, | |||
6721 | BOOL is_group, void*) | 6713 | BOOL is_group, void*) |
6722 | { | 6714 | { |
6723 | std::string name; | 6715 | std::string name; |
6724 | 6716 | ||
6725 | if (id.isNull()) | 6717 | if (id.isNull()) |
6726 | { | 6718 | { |
6727 | name = "(none)"; | 6719 | name = "(none)"; |
@@ -6745,9 +6737,9 @@ void onCovenantLoadComplete(LLVFS *vfs, | |||
6745 | if(0 == status) | 6737 | if(0 == status) |
6746 | { | 6738 | { |
6747 | LLVFile file(vfs, asset_uuid, type, LLVFile::READ); | 6739 | LLVFile file(vfs, asset_uuid, type, LLVFile::READ); |
6748 | 6740 | ||
6749 | S32 file_length = file.getSize(); | 6741 | S32 file_length = file.getSize(); |
6750 | 6742 | ||
6751 | char* buffer = new char[file_length+1]; | 6743 | char* buffer = new char[file_length+1]; |
6752 | if (buffer == NULL) | 6744 | if (buffer == NULL) |
6753 | { | 6745 | { |
@@ -6756,10 +6748,10 @@ void onCovenantLoadComplete(LLVFS *vfs, | |||
6756 | } | 6748 | } |
6757 | 6749 | ||
6758 | file.read((U8*)buffer, file_length); /* Flawfinder: ignore */ | 6750 | file.read((U8*)buffer, file_length); /* Flawfinder: ignore */ |
6759 | 6751 | ||
6760 | // put a EOS at the end | 6752 | // put a EOS at the end |
6761 | buffer[file_length] = 0; | 6753 | buffer[file_length] = 0; |
6762 | 6754 | ||
6763 | if( (file_length > 19) && !strncmp( buffer, "Linden text version", 19 ) ) | 6755 | if( (file_length > 19) && !strncmp( buffer, "Linden text version", 19 ) ) |
6764 | { | 6756 | { |
6765 | LLViewerTextEditor* editor = | 6757 | LLViewerTextEditor* editor = |
@@ -6788,7 +6780,7 @@ void onCovenantLoadComplete(LLVFS *vfs, | |||
6788 | else | 6780 | else |
6789 | { | 6781 | { |
6790 | LLViewerStats::getInstance()->incStat( LLViewerStats::ST_DOWNLOAD_FAILED ); | 6782 | LLViewerStats::getInstance()->incStat( LLViewerStats::ST_DOWNLOAD_FAILED ); |
6791 | 6783 | ||
6792 | if( LL_ERR_ASSET_REQUEST_NOT_IN_DATABASE == status || | 6784 | if( LL_ERR_ASSET_REQUEST_NOT_IN_DATABASE == status || |
6793 | LL_ERR_FILE_EMPTY == status) | 6785 | LL_ERR_FILE_EMPTY == status) |
6794 | { | 6786 | { |
@@ -6802,7 +6794,7 @@ void onCovenantLoadComplete(LLVFS *vfs, | |||
6802 | { | 6794 | { |
6803 | covenant_text = "Unable to load estate covenant at this time."; | 6795 | covenant_text = "Unable to load estate covenant at this time."; |
6804 | } | 6796 | } |
6805 | 6797 | ||
6806 | LL_WARNS("Messaging") << "Problem loading notecard: " << status << LL_ENDL; | 6798 | LL_WARNS("Messaging") << "Problem loading notecard: " << status << LL_ENDL; |
6807 | } | 6799 | } |
6808 | LLPanelEstateCovenant::updateCovenantText(covenant_text, asset_uuid); | 6800 | LLPanelEstateCovenant::updateCovenantText(covenant_text, asset_uuid); |
@@ -6820,7 +6812,7 @@ void process_feature_disabled_message(LLMessageSystem* msg, void**) | |||
6820 | msg->getStringFast(_PREHASH_FailureInfo,_PREHASH_ErrorMessage, messageText,0); | 6812 | msg->getStringFast(_PREHASH_FailureInfo,_PREHASH_ErrorMessage, messageText,0); |
6821 | msg->getUUIDFast(_PREHASH_FailureInfo,_PREHASH_AgentID,agentID); | 6813 | msg->getUUIDFast(_PREHASH_FailureInfo,_PREHASH_AgentID,agentID); |
6822 | msg->getUUIDFast(_PREHASH_FailureInfo,_PREHASH_TransactionID,transactionID); | 6814 | msg->getUUIDFast(_PREHASH_FailureInfo,_PREHASH_TransactionID,transactionID); |
6823 | 6815 | ||
6824 | LL_WARNS("Messaging") << "Blacklisted Feature Response:" << messageText << LL_ENDL; | 6816 | LL_WARNS("Messaging") << "Blacklisted Feature Response:" << messageText << LL_ENDL; |
6825 | } | 6817 | } |
6826 | 6818 | ||
diff --git a/linden/indra/newview/llviewerobject.cpp b/linden/indra/newview/llviewerobject.cpp index 576f312..880e1bb 100644 --- a/linden/indra/newview/llviewerobject.cpp +++ b/linden/indra/newview/llviewerobject.cpp | |||
@@ -2046,9 +2046,6 @@ BOOL LLViewerObject::idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time) | |||
2046 | if (HJT_HINGE == mJointInfo->mJointType) | 2046 | if (HJT_HINGE == mJointInfo->mJointType) |
2047 | { | 2047 | { |
2048 | // hinge = uniform circular motion | 2048 | // hinge = uniform circular motion |
2049 | LLVector3 parent_pivot = getVelocity(); | ||
2050 | LLVector3 parent_axis = getAcceleration(); | ||
2051 | |||
2052 | angle = dt * (ang_vel * mJointInfo->mAxisOrAnchor); // AxisOrAnchor = axis | 2049 | angle = dt * (ang_vel * mJointInfo->mAxisOrAnchor); // AxisOrAnchor = axis |
2053 | dQ.setQuat(angle, mJointInfo->mAxisOrAnchor); // AxisOrAnchor = axis | 2050 | dQ.setQuat(angle, mJointInfo->mAxisOrAnchor); // AxisOrAnchor = axis |
2054 | LLVector3 pivot_offset = pos - mJointInfo->mPivot; // pos in pivot-frame | 2051 | LLVector3 pivot_offset = pos - mJointInfo->mPivot; // pos in pivot-frame |
diff --git a/linden/indra/newview/llviewerobject.h b/linden/indra/newview/llviewerobject.h index 9b05470..98b7115 100644 --- a/linden/indra/newview/llviewerobject.h +++ b/linden/indra/newview/llviewerobject.h | |||
@@ -157,7 +157,13 @@ public: | |||
157 | enum { MEDIA_TYPE_NONE = 0, MEDIA_TYPE_WEB_PAGE = 1 }; | 157 | enum { MEDIA_TYPE_NONE = 0, MEDIA_TYPE_WEB_PAGE = 1 }; |
158 | 158 | ||
159 | // Return codes for processUpdateMessage | 159 | // Return codes for processUpdateMessage |
160 | enum { MEDIA_URL_REMOVED = 0x1, MEDIA_URL_ADDED = 0x2, MEDIA_URL_UPDATED = 0x4, INVALID_UPDATE = 0x80000000 }; | 160 | enum { |
161 | MEDIA_URL_REMOVED = 0x1, | ||
162 | MEDIA_URL_ADDED = 0x2, | ||
163 | MEDIA_URL_UPDATED = 0x4, | ||
164 | MEDIA_FLAGS_CHANGED = 0x8, | ||
165 | INVALID_UPDATE = 0x80000000 | ||
166 | }; | ||
161 | 167 | ||
162 | virtual U32 processUpdateMessage(LLMessageSystem *mesgsys, | 168 | virtual U32 processUpdateMessage(LLMessageSystem *mesgsys, |
163 | void **user_data, | 169 | void **user_data, |
diff --git a/linden/indra/newview/llviewerobjectlist.cpp b/linden/indra/newview/llviewerobjectlist.cpp index ad92fe3..c82b1ae 100644 --- a/linden/indra/newview/llviewerobjectlist.cpp +++ b/linden/indra/newview/llviewerobjectlist.cpp | |||
@@ -288,7 +288,6 @@ void LLViewerObjectList::processObjectUpdate(LLMessageSystem *mesgsys, | |||
288 | { | 288 | { |
289 | LLFastTimer t(LLFastTimer::FTM_PROCESS_OBJECTS); | 289 | LLFastTimer t(LLFastTimer::FTM_PROCESS_OBJECTS); |
290 | 290 | ||
291 | LLVector3d camera_global = gAgent.getCameraPositionGlobal(); | ||
292 | LLViewerObject *objectp; | 291 | LLViewerObject *objectp; |
293 | S32 num_objects; | 292 | S32 num_objects; |
294 | U32 local_id; | 293 | U32 local_id; |
@@ -305,28 +304,28 @@ void LLViewerObjectList::processObjectUpdate(LLMessageSystem *mesgsys, | |||
305 | if (!cached && !compressed && update_type != OUT_FULL) | 304 | if (!cached && !compressed && update_type != OUT_FULL) |
306 | { | 305 | { |
307 | gTerseObjectUpdates += num_objects; | 306 | gTerseObjectUpdates += num_objects; |
308 | S32 size; | 307 | // S32 size; |
309 | if (mesgsys->getReceiveCompressedSize()) | 308 | // if (mesgsys->getReceiveCompressedSize()) |
310 | { | 309 | // { |
311 | size = mesgsys->getReceiveCompressedSize(); | 310 | // size = mesgsys->getReceiveCompressedSize(); |
312 | } | 311 | // } |
313 | else | 312 | // else |
314 | { | 313 | // { |
315 | size = mesgsys->getReceiveSize(); | 314 | // size = mesgsys->getReceiveSize(); |
316 | } | 315 | // } |
317 | // llinfos << "Received terse " << num_objects << " in " << size << " byte (" << size/num_objects << ")" << llendl; | 316 | // llinfos << "Received terse " << num_objects << " in " << size << " byte (" << size/num_objects << ")" << llendl; |
318 | } | 317 | } |
319 | else | 318 | else |
320 | { | 319 | { |
321 | S32 size; | 320 | // S32 size; |
322 | if (mesgsys->getReceiveCompressedSize()) | 321 | // if (mesgsys->getReceiveCompressedSize()) |
323 | { | 322 | // { |
324 | size = mesgsys->getReceiveCompressedSize(); | 323 | // size = mesgsys->getReceiveCompressedSize(); |
325 | } | 324 | // } |
326 | else | 325 | // else |
327 | { | 326 | // { |
328 | size = mesgsys->getReceiveSize(); | 327 | // size = mesgsys->getReceiveSize(); |
329 | } | 328 | // } |
330 | 329 | ||
331 | // llinfos << "Received " << num_objects << " in " << size << " byte (" << size/num_objects << ")" << llendl; | 330 | // llinfos << "Received " << num_objects << " in " << size << " byte (" << size/num_objects << ")" << llendl; |
332 | gFullObjectUpdates += num_objects; | 331 | gFullObjectUpdates += num_objects; |
@@ -639,7 +638,7 @@ void LLViewerObjectList::updateApparentAngles(LLAgent &agent) | |||
639 | mCurLazyUpdateIndex = 0; | 638 | mCurLazyUpdateIndex = 0; |
640 | } | 639 | } |
641 | 640 | ||
642 | mCurBin = (++mCurBin) % NUM_BINS; | 641 | mCurBin = (mCurBin + 1) % NUM_BINS; |
643 | 642 | ||
644 | LLVOAvatar::cullAvatarsByPixelArea(); | 643 | LLVOAvatar::cullAvatarsByPixelArea(); |
645 | } | 644 | } |
diff --git a/linden/indra/newview/llviewerparcelmedia.cpp b/linden/indra/newview/llviewerparcelmedia.cpp index 386a86e..a9ea1e6 100644 --- a/linden/indra/newview/llviewerparcelmedia.cpp +++ b/linden/indra/newview/llviewerparcelmedia.cpp | |||
@@ -101,12 +101,11 @@ void LLViewerParcelMedia::update(LLParcel* parcel) | |||
101 | sMediaRegionID = LLUUID() ; | 101 | sMediaRegionID = LLUUID() ; |
102 | stop() ; | 102 | stop() ; |
103 | LL_DEBUGS("Media") << "no agent region, bailing out." << LL_ENDL; | 103 | LL_DEBUGS("Media") << "no agent region, bailing out." << LL_ENDL; |
104 | return ; | 104 | return ; |
105 | } | 105 | } |
106 | 106 | ||
107 | // we're in a parcel | 107 | // we're in a parcel |
108 | bool new_parcel = false; | 108 | S32 parcelid = parcel->getLocalID(); |
109 | S32 parcelid = parcel->getLocalID(); | ||
110 | 109 | ||
111 | LLUUID regionid = gAgent.getRegion()->getRegionID(); | 110 | LLUUID regionid = gAgent.getRegion()->getRegionID(); |
112 | if (parcelid != sMediaParcelLocalID || regionid != sMediaRegionID) | 111 | if (parcelid != sMediaParcelLocalID || regionid != sMediaRegionID) |
@@ -114,7 +113,6 @@ void LLViewerParcelMedia::update(LLParcel* parcel) | |||
114 | LL_DEBUGS("Media") << "New parcel, parcel id = " << parcelid << ", region id = " << regionid << LL_ENDL; | 113 | LL_DEBUGS("Media") << "New parcel, parcel id = " << parcelid << ", region id = " << regionid << LL_ENDL; |
115 | sMediaParcelLocalID = parcelid; | 114 | sMediaParcelLocalID = parcelid; |
116 | sMediaRegionID = regionid; | 115 | sMediaRegionID = regionid; |
117 | new_parcel = true; | ||
118 | } | 116 | } |
119 | 117 | ||
120 | std::string mediaUrl = std::string ( parcel->getMediaURL () ); | 118 | std::string mediaUrl = std::string ( parcel->getMediaURL () ); |
diff --git a/linden/indra/newview/llviewerregion.cpp b/linden/indra/newview/llviewerregion.cpp index 2fafe30..42eb112 100644 --- a/linden/indra/newview/llviewerregion.cpp +++ b/linden/indra/newview/llviewerregion.cpp | |||
@@ -1436,6 +1436,8 @@ void LLViewerRegion::setSeedCapability(const std::string& url) | |||
1436 | capabilityNames.append("EstateChangeInfo"); | 1436 | capabilityNames.append("EstateChangeInfo"); |
1437 | capabilityNames.append("EventQueueGet"); | 1437 | capabilityNames.append("EventQueueGet"); |
1438 | capabilityNames.append("FetchInventory"); | 1438 | capabilityNames.append("FetchInventory"); |
1439 | capabilityNames.append("ObjectMedia"); | ||
1440 | capabilityNames.append("ObjectMediaNavigate"); | ||
1439 | capabilityNames.append("FetchLib"); | 1441 | capabilityNames.append("FetchLib"); |
1440 | capabilityNames.append("FetchLibDescendents"); | 1442 | capabilityNames.append("FetchLibDescendents"); |
1441 | capabilityNames.append("GetDisplayNames"); | 1443 | capabilityNames.append("GetDisplayNames"); |
diff --git a/linden/indra/newview/llvlcomposition.cpp b/linden/indra/newview/llvlcomposition.cpp index afd9b95..beec1f1 100644 --- a/linden/indra/newview/llvlcomposition.cpp +++ b/linden/indra/newview/llvlcomposition.cpp | |||
@@ -384,9 +384,6 @@ BOOL LLVLComposition::generateTexture(const F32 x, const F32 y, | |||
384 | LLPointer<LLImageRaw> raw = new LLImageRaw(tex_width, tex_height, tex_comps); | 384 | LLPointer<LLImageRaw> raw = new LLImageRaw(tex_width, tex_height, tex_comps); |
385 | U8 *rawp = raw->getData(); | 385 | U8 *rawp = raw->getData(); |
386 | 386 | ||
387 | F32 tex_width_inv = 1.f/tex_width; | ||
388 | F32 tex_height_inv = 1.f/tex_height; | ||
389 | |||
390 | F32 st_x_stride, st_y_stride; | 387 | F32 st_x_stride, st_y_stride; |
391 | st_x_stride = ((F32)st_width / (F32)mTexScaleX)*((F32)mWidth / (F32)tex_width); | 388 | st_x_stride = ((F32)st_width / (F32)mTexScaleX)*((F32)mWidth / (F32)tex_width); |
392 | st_y_stride = ((F32)st_height / (F32)mTexScaleY)*((F32)mWidth / (F32)tex_height); | 389 | st_y_stride = ((F32)st_height / (F32)mTexScaleY)*((F32)mWidth / (F32)tex_height); |
@@ -421,11 +418,6 @@ BOOL LLVLComposition::generateTexture(const F32 x, const F32 y, | |||
421 | tex1 = tex0 + 1; | 418 | tex1 = tex0 + 1; |
422 | tex1 = llclamp(tex1, 0, 3); | 419 | tex1 = llclamp(tex1, 0, 3); |
423 | 420 | ||
424 | F32 xy_int_i, xy_int_j; | ||
425 | |||
426 | xy_int_i = i * tex_width_inv; | ||
427 | xy_int_j = j * tex_height_inv; | ||
428 | |||
429 | st_offset = (lltrunc(sti) + lltrunc(stj)*st_width) * st_comps; | 421 | st_offset = (lltrunc(sti) + lltrunc(stj)*st_width) * st_comps; |
430 | for (U32 k = 0; k < tex_comps; k++) | 422 | for (U32 k = 0; k < tex_comps; k++) |
431 | { | 423 | { |
diff --git a/linden/indra/newview/llvoavatar.cpp b/linden/indra/newview/llvoavatar.cpp index 54f4942..812e924 100644 --- a/linden/indra/newview/llvoavatar.cpp +++ b/linden/indra/newview/llvoavatar.cpp | |||
@@ -2500,7 +2500,6 @@ void LLVOAvatar::computeBodySize() | |||
2500 | 2500 | ||
2501 | // some of the joints have not been cached | 2501 | // some of the joints have not been cached |
2502 | LLVector3 skull = mSkullp->getPosition(); | 2502 | LLVector3 skull = mSkullp->getPosition(); |
2503 | LLVector3 skull_scale = mSkullp->getScale(); | ||
2504 | 2503 | ||
2505 | LLVector3 neck = mNeckp->getPosition(); | 2504 | LLVector3 neck = mNeckp->getPosition(); |
2506 | LLVector3 neck_scale = mNeckp->getScale(); | 2505 | LLVector3 neck_scale = mNeckp->getScale(); |
@@ -2580,7 +2579,6 @@ U32 LLVOAvatar::processUpdateMessage(LLMessageSystem *mesgsys, | |||
2580 | { | 2579 | { |
2581 | LLMemType mt(LLMemType::MTYPE_AVATAR); | 2580 | LLMemType mt(LLMemType::MTYPE_AVATAR); |
2582 | 2581 | ||
2583 | LLVector3 old_vel = getVelocity(); | ||
2584 | // Do base class updates... | 2582 | // Do base class updates... |
2585 | U32 retval = LLViewerObject::processUpdateMessage(mesgsys, user_data, block_num, update_type, dp); | 2583 | U32 retval = LLViewerObject::processUpdateMessage(mesgsys, user_data, block_num, update_type, dp); |
2586 | 2584 | ||
@@ -3312,6 +3310,16 @@ void LLVOAvatar::resolveClient(LLColor4& avatar_name_color, std::string& client, | |||
3312 | avatar_name_color = avatar_name_color * (F32)0.333333333333; | 3310 | avatar_name_color = avatar_name_color * (F32)0.333333333333; |
3313 | client = "Meerkat"; | 3311 | client = "Meerkat"; |
3314 | } | 3312 | } |
3313 | else if(idx == LLUUID("7eab0700-f000-0000-0000-546561706f74")) | ||
3314 | { | ||
3315 | avatar_name_color = LLColor4(0.69f,0.42f,0.84f,1.0f); // Armins V3 viewer. | ||
3316 | client = "Teapot"; | ||
3317 | } | ||
3318 | else if(idx == LLUUID("b32f01bc-f9b3-4535-b1f3-99dc38f022db")) | ||
3319 | { | ||
3320 | avatar_name_color = LLColor4(0.8f,1.0f,0.0f,1.0f);//Meta7 | ||
3321 | client = "Meta7"; | ||
3322 | } | ||
3315 | else if(idx == LLUUID("ccda2b3b-e72c-a112-e126-fee238b67218")) | 3323 | else if(idx == LLUUID("ccda2b3b-e72c-a112-e126-fee238b67218")) |
3316 | { | 3324 | { |
3317 | avatar_name_color += LLColor4::green;//emerald | 3325 | avatar_name_color += LLColor4::green;//emerald |
@@ -3819,8 +3827,6 @@ void LLVOAvatar::idleUpdateNameTag(const LLVector3& root_pos_last) | |||
3819 | mNameText->setLabel(mNameString); | 3827 | mNameText->setLabel(mNameString); |
3820 | } | 3828 | } |
3821 | 3829 | ||
3822 | char line[MAX_STRING]; /* Flawfinder: ignore */ | ||
3823 | line[0] = '\0'; | ||
3824 | std::deque<LLChat>::iterator chat_iter = mChats.begin(); | 3830 | std::deque<LLChat>::iterator chat_iter = mChats.begin(); |
3825 | mNameText->clearString(); | 3831 | mNameText->clearString(); |
3826 | 3832 | ||
@@ -4283,8 +4289,6 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent) | |||
4283 | xyVel.mV[VZ] = 0.0f; | 4289 | xyVel.mV[VZ] = 0.0f; |
4284 | speed = xyVel.length(); | 4290 | speed = xyVel.length(); |
4285 | 4291 | ||
4286 | BOOL throttle = TRUE; | ||
4287 | |||
4288 | if (!(mIsSitting && getParent())) | 4292 | if (!(mIsSitting && getParent())) |
4289 | { | 4293 | { |
4290 | //-------------------------------------------------------------------- | 4294 | //-------------------------------------------------------------------- |
@@ -4295,7 +4299,6 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent) | |||
4295 | if (mTimeLast == 0.0f) | 4299 | if (mTimeLast == 0.0f) |
4296 | { | 4300 | { |
4297 | mTimeLast = animation_time; | 4301 | mTimeLast = animation_time; |
4298 | throttle = FALSE; | ||
4299 | 4302 | ||
4300 | // put the pelvis at slaved position/mRotation | 4303 | // put the pelvis at slaved position/mRotation |
4301 | mRoot.setWorldPosition( getPositionAgent() ); // first frame | 4304 | mRoot.setWorldPosition( getPositionAgent() ); // first frame |
diff --git a/linden/indra/newview/llvoiceclient.cpp b/linden/indra/newview/llvoiceclient.cpp index 559bc31..409bb68 100644 --- a/linden/indra/newview/llvoiceclient.cpp +++ b/linden/indra/newview/llvoiceclient.cpp | |||
@@ -3160,7 +3160,7 @@ void LLVoiceClient::giveUp() | |||
3160 | 3160 | ||
3161 | static void oldSDKTransform (LLVector3 &left, LLVector3 &up, LLVector3 &at, LLVector3d &pos, LLVector3 &vel) | 3161 | static void oldSDKTransform (LLVector3 &left, LLVector3 &up, LLVector3 &at, LLVector3d &pos, LLVector3 &vel) |
3162 | { | 3162 | { |
3163 | F32 nat[3], nup[3], nl[3], nvel[3]; // the new at, up, left vectors and the new position and velocity | 3163 | F32 nat[3], nup[3], nl[3]; // the new at, up, left vectors and the new position and velocity (velocity was not used, so I deleted it) |
3164 | F64 npos[3]; | 3164 | F64 npos[3]; |
3165 | 3165 | ||
3166 | // The original XML command was sent like this: | 3166 | // The original XML command was sent like this: |
@@ -3210,10 +3210,6 @@ static void oldSDKTransform (LLVector3 &left, LLVector3 &up, LLVector3 &at, LLVe | |||
3210 | npos[1] = pos.mdV[VZ]; | 3210 | npos[1] = pos.mdV[VZ]; |
3211 | npos[2] = pos.mdV[VY]; | 3211 | npos[2] = pos.mdV[VY]; |
3212 | 3212 | ||
3213 | nvel[0] = vel.mV[VX]; | ||
3214 | nvel[1] = vel.mV[VZ]; | ||
3215 | nvel[2] = vel.mV[VY]; | ||
3216 | |||
3217 | for(int i=0;i<3;++i) { | 3213 | for(int i=0;i<3;++i) { |
3218 | at.mV[i] = nat[i]; | 3214 | at.mV[i] = nat[i]; |
3219 | up.mV[i] = nup[i]; | 3215 | up.mV[i] = nup[i]; |
@@ -3264,10 +3260,6 @@ static void oldSDKTransform (LLVector3 &left, LLVector3 &up, LLVector3 &at, LLVe | |||
3264 | npos[1] = pos.mdV[VZ]; | 3260 | npos[1] = pos.mdV[VZ]; |
3265 | npos[2] = pos.mdV[VY] * -1.0; | 3261 | npos[2] = pos.mdV[VY] * -1.0; |
3266 | 3262 | ||
3267 | nvel[0] = vel.mV[VX]; | ||
3268 | nvel[1] = vel.mV[VZ]; | ||
3269 | nvel[2] = vel.mV[VY]; | ||
3270 | |||
3271 | for(int i=0;i<3;++i) { | 3263 | for(int i=0;i<3;++i) { |
3272 | at.mV[i] = nat[i]; | 3264 | at.mV[i] = nat[i]; |
3273 | up.mV[i] = nup[i]; | 3265 | up.mV[i] = nup[i]; |
diff --git a/linden/indra/newview/llvosurfacepatch.cpp b/linden/indra/newview/llvosurfacepatch.cpp index 1671880..380eff5 100644 --- a/linden/indra/newview/llvosurfacepatch.cpp +++ b/linden/indra/newview/llvosurfacepatch.cpp | |||
@@ -423,7 +423,7 @@ void LLVOSurfacePatch::updateNorthGeometry(LLFace *facep, | |||
423 | S32 vertex_count = 0; | 423 | S32 vertex_count = 0; |
424 | S32 i, x, y; | 424 | S32 i, x, y; |
425 | 425 | ||
426 | S32 num_vertices, num_indices; | 426 | S32 num_vertices; |
427 | 427 | ||
428 | U32 render_stride = mLastStride; | 428 | U32 render_stride = mLastStride; |
429 | S32 patch_size = mPatchp->getSurface()->getGridsPerPatchEdge(); | 429 | S32 patch_size = mPatchp->getSurface()->getGridsPerPatchEdge(); |
@@ -441,7 +441,6 @@ void LLVOSurfacePatch::updateNorthGeometry(LLFace *facep, | |||
441 | if (north_stride == render_stride) | 441 | if (north_stride == render_stride) |
442 | { | 442 | { |
443 | num_vertices = 2 * length + 1; | 443 | num_vertices = 2 * length + 1; |
444 | num_indices = length * 6 - 3; | ||
445 | 444 | ||
446 | facep->mCenterAgent = (mPatchp->getPointAgent(8, 15) + mPatchp->getPointAgent(8, 16))*0.5f; | 445 | facep->mCenterAgent = (mPatchp->getPointAgent(8, 15) + mPatchp->getPointAgent(8, 16))*0.5f; |
447 | 446 | ||
@@ -494,7 +493,6 @@ void LLVOSurfacePatch::updateNorthGeometry(LLFace *facep, | |||
494 | { | 493 | { |
495 | // North stride is longer (has less vertices) | 494 | // North stride is longer (has less vertices) |
496 | num_vertices = length + length/2 + 1; | 495 | num_vertices = length + length/2 + 1; |
497 | num_indices = half_length*9 - 3; | ||
498 | 496 | ||
499 | facep->mCenterAgent = (mPatchp->getPointAgent(7, 15) + mPatchp->getPointAgent(8, 16))*0.5f; | 497 | facep->mCenterAgent = (mPatchp->getPointAgent(7, 15) + mPatchp->getPointAgent(8, 16))*0.5f; |
500 | 498 | ||
@@ -555,7 +553,6 @@ void LLVOSurfacePatch::updateNorthGeometry(LLFace *facep, | |||
555 | length = patch_size / north_stride; | 553 | length = patch_size / north_stride; |
556 | half_length = length / 2; | 554 | half_length = length / 2; |
557 | num_vertices = length + half_length + 1; | 555 | num_vertices = length + half_length + 1; |
558 | num_indices = 9*half_length - 3; | ||
559 | 556 | ||
560 | facep->mCenterAgent = (mPatchp->getPointAgent(15, 7) + mPatchp->getPointAgent(16, 8))*0.5f; | 557 | facep->mCenterAgent = (mPatchp->getPointAgent(15, 7) + mPatchp->getPointAgent(16, 8))*0.5f; |
561 | 558 | ||
@@ -629,7 +626,7 @@ void LLVOSurfacePatch::updateEastGeometry(LLFace *facep, | |||
629 | { | 626 | { |
630 | S32 i, x, y; | 627 | S32 i, x, y; |
631 | 628 | ||
632 | S32 num_vertices, num_indices; | 629 | S32 num_vertices; |
633 | 630 | ||
634 | U32 render_stride = mLastStride; | 631 | U32 render_stride = mLastStride; |
635 | S32 patch_size = mPatchp->getSurface()->getGridsPerPatchEdge(); | 632 | S32 patch_size = mPatchp->getSurface()->getGridsPerPatchEdge(); |
@@ -642,7 +639,6 @@ void LLVOSurfacePatch::updateEastGeometry(LLFace *facep, | |||
642 | if (east_stride == render_stride) | 639 | if (east_stride == render_stride) |
643 | { | 640 | { |
644 | num_vertices = 2 * length + 1; | 641 | num_vertices = 2 * length + 1; |
645 | num_indices = length * 6 - 3; | ||
646 | 642 | ||
647 | facep->mCenterAgent = (mPatchp->getPointAgent(8, 15) + mPatchp->getPointAgent(8, 16))*0.5f; | 643 | facep->mCenterAgent = (mPatchp->getPointAgent(8, 15) + mPatchp->getPointAgent(8, 16))*0.5f; |
648 | 644 | ||
@@ -693,7 +689,6 @@ void LLVOSurfacePatch::updateEastGeometry(LLFace *facep, | |||
693 | { | 689 | { |
694 | // East stride is longer (has less vertices) | 690 | // East stride is longer (has less vertices) |
695 | num_vertices = length + half_length + 1; | 691 | num_vertices = length + half_length + 1; |
696 | num_indices = half_length*9 - 3; | ||
697 | 692 | ||
698 | facep->mCenterAgent = (mPatchp->getPointAgent(7, 15) + mPatchp->getPointAgent(8, 16))*0.5f; | 693 | facep->mCenterAgent = (mPatchp->getPointAgent(7, 15) + mPatchp->getPointAgent(8, 16))*0.5f; |
699 | 694 | ||
@@ -750,7 +745,6 @@ void LLVOSurfacePatch::updateEastGeometry(LLFace *facep, | |||
750 | length = patch_size / east_stride; | 745 | length = patch_size / east_stride; |
751 | half_length = length / 2; | 746 | half_length = length / 2; |
752 | num_vertices = length + length/2 + 1; | 747 | num_vertices = length + length/2 + 1; |
753 | num_indices = 9*(length/2) - 3; | ||
754 | 748 | ||
755 | facep->mCenterAgent = (mPatchp->getPointAgent(15, 7) + mPatchp->getPointAgent(16, 8))*0.5f; | 749 | facep->mCenterAgent = (mPatchp->getPointAgent(15, 7) + mPatchp->getPointAgent(16, 8))*0.5f; |
756 | 750 | ||
diff --git a/linden/indra/newview/llvovolume.cpp b/linden/indra/newview/llvovolume.cpp index d580d61..2b9f94c 100644 --- a/linden/indra/newview/llvovolume.cpp +++ b/linden/indra/newview/llvovolume.cpp | |||
@@ -68,6 +68,9 @@ | |||
68 | #include "rlvhandler.h" | 68 | #include "rlvhandler.h" |
69 | // [/RLVa:KB] | 69 | // [/RLVa:KB] |
70 | 70 | ||
71 | #include "llmediaentry.h" | ||
72 | #include "llmediadataclient.h" | ||
73 | |||
71 | const S32 MIN_QUIET_FRAMES_COALESCE = 30; | 74 | const S32 MIN_QUIET_FRAMES_COALESCE = 30; |
72 | const F32 FORCE_SIMPLE_RENDER_AREA = 512.f; | 75 | const F32 FORCE_SIMPLE_RENDER_AREA = 512.f; |
73 | const F32 FORCE_CULL_AREA = 8.f; | 76 | const F32 FORCE_CULL_AREA = 8.f; |
@@ -79,6 +82,93 @@ F32 LLVOVolume::sLODFactor = 1.f; | |||
79 | F32 LLVOVolume::sLODSlopDistanceFactor = 0.5f; //Changing this to zero, effectively disables the LOD transition slop | 82 | F32 LLVOVolume::sLODSlopDistanceFactor = 0.5f; //Changing this to zero, effectively disables the LOD transition slop |
80 | F32 LLVOVolume::sDistanceFactor = 1.0f; | 83 | F32 LLVOVolume::sDistanceFactor = 1.0f; |
81 | S32 LLVOVolume::sNumLODChanges = 0; | 84 | S32 LLVOVolume::sNumLODChanges = 0; |
85 | LLPointer<LLObjectMediaDataClient> LLVOVolume::sObjectMediaClient = NULL; | ||
86 | LLPointer<LLObjectMediaNavigateClient> LLVOVolume::sObjectMediaNavigateClient = NULL; | ||
87 | |||
88 | // Implementation class of LLMediaDataClientObject. See llmediadataclient.h | ||
89 | class LLMediaDataClientObjectImpl : public LLMediaDataClientObject | ||
90 | { | ||
91 | public: | ||
92 | LLMediaDataClientObjectImpl(LLVOVolume *obj, bool isNew) : mObject(obj), mNew(isNew) {} | ||
93 | LLMediaDataClientObjectImpl() { mObject = NULL; } | ||
94 | |||
95 | virtual U8 getMediaDataCount() const | ||
96 | { return mObject->getNumTEs(); } | ||
97 | |||
98 | virtual LLSD getMediaDataLLSD(U8 index) const | ||
99 | { | ||
100 | LLSD result; | ||
101 | LLTextureEntry *te = mObject->getTE(index); | ||
102 | if (NULL != te) | ||
103 | { | ||
104 | llassert((te->getMediaData() != NULL) == te->hasMedia()); | ||
105 | if (te->getMediaData() != NULL) | ||
106 | { | ||
107 | result = te->getMediaData()->asLLSD(); | ||
108 | // XXX HACK: workaround bug in asLLSD() where whitelist is not set properly | ||
109 | // See DEV-41949 | ||
110 | if (!result.has(LLMediaEntry::WHITELIST_KEY)) | ||
111 | { | ||
112 | result[LLMediaEntry::WHITELIST_KEY] = LLSD::emptyArray(); | ||
113 | } | ||
114 | } | ||
115 | } | ||
116 | return result; | ||
117 | } | ||
118 | |||
119 | virtual LLUUID getID() const | ||
120 | { return mObject->getID(); } | ||
121 | |||
122 | virtual void mediaNavigateBounceBack(U8 index) | ||
123 | { mObject->mediaNavigateBounceBack(index); } | ||
124 | |||
125 | virtual bool hasMedia() const | ||
126 | { return mObject->hasMedia();} | ||
127 | |||
128 | virtual void updateObjectMediaData(LLSD const &data, const std::string &version_string) | ||
129 | { mObject->updateObjectMediaData(data, version_string); } | ||
130 | |||
131 | virtual F64 getMediaInterest() const | ||
132 | { | ||
133 | //F64 interest = mObject->getTotalMediaInterest(); | ||
134 | //FIXME | ||
135 | F64 interest = 1024; | ||
136 | if (interest < (F64)0.0) | ||
137 | { | ||
138 | // media interest not valid yet, try pixel area | ||
139 | interest = mObject->getPixelArea(); | ||
140 | // HACK: force recalculation of pixel area if interest is the "magic default" of 1024. | ||
141 | if (interest == 1024.f) | ||
142 | { | ||
143 | const_cast<LLVOVolume*>(static_cast<LLVOVolume*>(mObject))->setPixelAreaAndAngle(gAgent); | ||
144 | interest = mObject->getPixelArea(); | ||
145 | } | ||
146 | } | ||
147 | return interest; | ||
148 | } | ||
149 | |||
150 | virtual bool isInterestingEnough() const | ||
151 | { | ||
152 | return true; //FUCKEDUP --> LLViewerMedia::isInterestingEnough(mObject, getMediaInterest()); | ||
153 | } | ||
154 | |||
155 | virtual std::string getCapabilityUrl(const std::string &name) const | ||
156 | { return mObject->getRegion()->getCapability(name); } | ||
157 | |||
158 | virtual bool isDead() const | ||
159 | { return mObject->isDead(); } | ||
160 | |||
161 | virtual U32 getMediaVersion() const | ||
162 | { return LLTextureEntry::getVersionFromMediaVersionString(mObject->getMediaURL()); } | ||
163 | |||
164 | virtual bool isNew() const | ||
165 | { return mNew; } | ||
166 | |||
167 | private: | ||
168 | LLPointer<LLVOVolume> mObject; | ||
169 | bool mNew; | ||
170 | }; | ||
171 | |||
82 | 172 | ||
83 | LLVOVolume::LLVOVolume(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp) | 173 | LLVOVolume::LLVOVolume(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp) |
84 | : LLViewerObject(id, pcode, regionp), | 174 | : LLViewerObject(id, pcode, regionp), |
@@ -123,6 +213,18 @@ void LLVOVolume::markDead() | |||
123 | // static | 213 | // static |
124 | void LLVOVolume::initClass() | 214 | void LLVOVolume::initClass() |
125 | { | 215 | { |
216 | // gSavedSettings better be around | ||
217 | if (gSavedSettings.getBOOL("PrimMediaMasterEnabled")) | ||
218 | { | ||
219 | const F32 queue_timer_delay = gSavedSettings.getF32("PrimMediaRequestQueueDelay"); | ||
220 | const F32 retry_timer_delay = gSavedSettings.getF32("PrimMediaRetryTimerDelay"); | ||
221 | const U32 max_retries = gSavedSettings.getU32("PrimMediaMaxRetries"); | ||
222 | const U32 max_sorted_queue_size = gSavedSettings.getU32("PrimMediaMaxSortedQueueSize"); | ||
223 | const U32 max_round_robin_queue_size = gSavedSettings.getU32("PrimMediaMaxRoundRobinQueueSize"); | ||
224 | |||
225 | sObjectMediaClient = new LLObjectMediaDataClient(queue_timer_delay, retry_timer_delay, max_retries, | ||
226 | max_sorted_queue_size, max_round_robin_queue_size); | ||
227 | } | ||
126 | } | 228 | } |
127 | 229 | ||
128 | 230 | ||
@@ -132,6 +234,7 @@ U32 LLVOVolume::processUpdateMessage(LLMessageSystem *mesgsys, | |||
132 | LLDataPacker *dp) | 234 | LLDataPacker *dp) |
133 | { | 235 | { |
134 | LLColor4U color; | 236 | LLColor4U color; |
237 | const S32 teDirtyBits = (TEM_CHANGE_TEXTURE|TEM_CHANGE_COLOR|TEM_CHANGE_MEDIA); | ||
135 | 238 | ||
136 | // Do base class updates... | 239 | // Do base class updates... |
137 | U32 retval = LLViewerObject::processUpdateMessage(mesgsys, user_data, block_num, update_type, dp); | 240 | U32 retval = LLViewerObject::processUpdateMessage(mesgsys, user_data, block_num, update_type, dp); |
@@ -199,10 +302,15 @@ U32 LLVOVolume::processUpdateMessage(LLMessageSystem *mesgsys, | |||
199 | // | 302 | // |
200 | // Unpack texture entry data | 303 | // Unpack texture entry data |
201 | // | 304 | // |
202 | if (unpackTEMessage(mesgsys, _PREHASH_ObjectData, block_num) & (TEM_CHANGE_TEXTURE|TEM_CHANGE_COLOR)) | 305 | S32 result =unpackTEMessage(mesgsys, _PREHASH_ObjectData, block_num); |
306 | if (result & teDirtyBits) | ||
203 | { | 307 | { |
204 | updateTEData(); | 308 | updateTEData(); |
205 | } | 309 | } |
310 | if (result & TEM_CHANGE_MEDIA) | ||
311 | { | ||
312 | retval |= MEDIA_FLAGS_CHANGED; | ||
313 | } | ||
206 | } | 314 | } |
207 | else | 315 | else |
208 | { | 316 | { |
@@ -235,9 +343,16 @@ U32 LLVOVolume::processUpdateMessage(LLMessageSystem *mesgsys, | |||
235 | // llerrs << "Bogus TE data in " << getID() << ", crashing!" << llendl; | 343 | // llerrs << "Bogus TE data in " << getID() << ", crashing!" << llendl; |
236 | llwarns << "Bogus TE data in " << getID() << llendl; | 344 | llwarns << "Bogus TE data in " << getID() << llendl; |
237 | } | 345 | } |
238 | else if (res2 & (TEM_CHANGE_TEXTURE|TEM_CHANGE_COLOR)) | 346 | else |
239 | { | 347 | { |
240 | updateTEData(); | 348 | if (res2 & teDirtyBits) |
349 | { | ||
350 | updateTEData(); | ||
351 | } | ||
352 | if (res2 & TEM_CHANGE_MEDIA) | ||
353 | { | ||
354 | retval |= MEDIA_FLAGS_CHANGED; | ||
355 | } | ||
241 | } | 356 | } |
242 | 357 | ||
243 | U32 value = dp->getPassFlags(); | 358 | U32 value = dp->getPassFlags(); |
@@ -275,13 +390,39 @@ U32 LLVOVolume::processUpdateMessage(LLMessageSystem *mesgsys, | |||
275 | U8 tdpbuffer[1024]; | 390 | U8 tdpbuffer[1024]; |
276 | LLDataPackerBinaryBuffer tdp(tdpbuffer, 1024); | 391 | LLDataPackerBinaryBuffer tdp(tdpbuffer, 1024); |
277 | mesgsys->getBinaryDataFast(_PREHASH_ObjectData, _PREHASH_TextureEntry, tdpbuffer, 0, block_num); | 392 | mesgsys->getBinaryDataFast(_PREHASH_ObjectData, _PREHASH_TextureEntry, tdpbuffer, 0, block_num); |
278 | if ( unpackTEMessage(tdp) & (TEM_CHANGE_TEXTURE|TEM_CHANGE_COLOR)) | 393 | S32 result = unpackTEMessage(tdp); |
394 | if (result & teDirtyBits) | ||
279 | { | 395 | { |
280 | updateTEData(); | 396 | updateTEData(); |
281 | } | 397 | } |
398 | if (result & TEM_CHANGE_MEDIA) | ||
399 | { | ||
400 | retval |= MEDIA_FLAGS_CHANGED; | ||
401 | } | ||
282 | } | 402 | } |
283 | } | 403 | } |
284 | } | 404 | } |
405 | |||
406 | if (retval & (MEDIA_URL_REMOVED | MEDIA_URL_ADDED | MEDIA_URL_UPDATED | MEDIA_FLAGS_CHANGED)) | ||
407 | { | ||
408 | // If only the media URL changed, and it isn't a media version URL, | ||
409 | // ignore it | ||
410 | if ( ! ( retval & (MEDIA_URL_ADDED | MEDIA_URL_UPDATED) && | ||
411 | mMedia && ! mMedia->mMediaURL.empty() && | ||
412 | ! LLTextureEntry::isMediaVersionString(mMedia->mMediaURL) ) ) | ||
413 | { | ||
414 | // If the media changed at all, request new media data | ||
415 | LL_DEBUGS("MediaOnAPrim") << "Media update: " << getID() << ": retval=" << retval << " Media URL: " << | ||
416 | ((mMedia) ? mMedia->mMediaURL : std::string("")) << LL_ENDL; | ||
417 | requestMediaDataUpdate(retval & MEDIA_FLAGS_CHANGED); | ||
418 | } | ||
419 | else { | ||
420 | LL_INFOS("MediaOnAPrim") << "Ignoring media update for: " << getID() << " Media URL: " << | ||
421 | ((mMedia) ? mMedia->mMediaURL : std::string("")) << LL_ENDL; | ||
422 | } | ||
423 | } | ||
424 | // ...and clean up any media impls | ||
425 | cleanUpMediaImpls(); | ||
285 | 426 | ||
286 | return retval; | 427 | return retval; |
287 | } | 428 | } |
@@ -2894,4 +3035,253 @@ void LLHUDPartition::shift(const LLVector3 &offset) | |||
2894 | //HUD objects don't shift with region crossing. That would be silly. | 3035 | //HUD objects don't shift with region crossing. That would be silly. |
2895 | } | 3036 | } |
2896 | 3037 | ||
3038 | void LLVOVolume::requestMediaDataUpdate(bool isNew) | ||
3039 | { | ||
3040 | if (sObjectMediaClient) | ||
3041 | sObjectMediaClient->fetchMedia(new LLMediaDataClientObjectImpl(this, isNew)); | ||
3042 | } | ||
3043 | |||
3044 | void LLVOVolume::cleanUpMediaImpls() | ||
3045 | { | ||
3046 | // Iterate through our TEs and remove any Impls that are no longer used | ||
3047 | const U8 numTEs = getNumTEs(); | ||
3048 | for (U8 i = 0; i < numTEs; i++) | ||
3049 | { | ||
3050 | const LLTextureEntry* te = getTE(i); | ||
3051 | if( ! te->hasMedia()) | ||
3052 | { | ||
3053 | // Delete the media IMPL! | ||
3054 | removeMediaImpl(i) ; | ||
3055 | } | ||
3056 | } | ||
3057 | } | ||
3058 | |||
3059 | void LLVOVolume::removeMediaImpl(S32 texture_index) | ||
3060 | { | ||
3061 | if(mMediaImplList.size() <= (U32)texture_index || mMediaImplList[texture_index].isNull()) | ||
3062 | { | ||
3063 | return ; | ||
3064 | } | ||
3065 | |||
3066 | //make the face referencing to mMediaImplList[texture_index] to point back to the old texture. | ||
3067 | if(mDrawable) | ||
3068 | { | ||
3069 | LLFace* facep = mDrawable->getFace(texture_index) ; | ||
3070 | if(facep) | ||
3071 | { | ||
3072 | //LLViewerMediaTexture* media_tex = LLViewerTextureManager::findMediaTexture(mMediaImplList[texture_index]->getMediaTextureID()) ; | ||
3073 | //if(media_tex) | ||
3074 | //{ | ||
3075 | // media_tex->removeMediaFromFace(facep) ; | ||
3076 | //} | ||
3077 | } | ||
3078 | } | ||
3079 | |||
3080 | //check if some other face(s) of this object reference(s)to this media impl. | ||
3081 | S32 i ; | ||
3082 | S32 end = (S32)mMediaImplList.size() ; | ||
3083 | for(i = 0; i < end ; i++) | ||
3084 | { | ||
3085 | if( i != texture_index && mMediaImplList[i] == mMediaImplList[texture_index]) | ||
3086 | { | ||
3087 | break ; | ||
3088 | } | ||
3089 | } | ||
3090 | |||
3091 | if(i == end) //this object does not need this media impl. | ||
3092 | { | ||
3093 | //mMediaImplList[texture_index]->removeObject(this) ; | ||
3094 | } | ||
3095 | |||
3096 | mMediaImplList[texture_index] = NULL ; | ||
3097 | return ; | ||
3098 | } | ||
3099 | |||
3100 | void LLVOVolume::addMediaImpl(LLViewerMediaImpl* media_impl, S32 texture_index) | ||
3101 | { | ||
3102 | if((S32)mMediaImplList.size() < texture_index + 1) | ||
3103 | { | ||
3104 | mMediaImplList.resize(texture_index + 1) ; | ||
3105 | } | ||
3106 | |||
3107 | if(mMediaImplList[texture_index].notNull()) | ||
3108 | { | ||
3109 | if(mMediaImplList[texture_index] == media_impl) | ||
3110 | { | ||
3111 | return ; | ||
3112 | } | ||
3113 | |||
3114 | removeMediaImpl(texture_index) ; | ||
3115 | } | ||
3116 | |||
3117 | mMediaImplList[texture_index] = media_impl; | ||
3118 | //media_impl->addObject(this) ; | ||
3119 | |||
3120 | //add the face to show the media if it is in playing | ||
3121 | if(mDrawable) | ||
3122 | { | ||
3123 | LLFace* facep = mDrawable->getFace(texture_index) ; | ||
3124 | if(facep) | ||
3125 | { | ||
3126 | //LLViewerMediaTexture* media_tex = LLViewerTextureManager::findMediaTexture(mMediaImplList[texture_index]->getMediaTextureID()) ; | ||
3127 | //if(media_tex) | ||
3128 | //{ | ||
3129 | // media_tex->addMediaToFace(facep) ; | ||
3130 | //} | ||
3131 | } | ||
3132 | else //the face is not available now, start media on this face later. | ||
3133 | { | ||
3134 | //media_impl->setUpdated(TRUE) ; | ||
3135 | } | ||
3136 | } | ||
3137 | return ; | ||
3138 | } | ||
3139 | |||
3140 | void LLVOVolume::sendMediaDataUpdate() | ||
3141 | { | ||
3142 | if (sObjectMediaClient) | ||
3143 | sObjectMediaClient->updateMedia(new LLMediaDataClientObjectImpl(this, false)); | ||
3144 | } | ||
3145 | |||
3146 | void LLVOVolume::updateObjectMediaData(const LLSD &media_data_array, const std::string &media_version) | ||
3147 | { | ||
3148 | // media_data_array is an array of media entry maps | ||
3149 | // media_version is the version string in the response. | ||
3150 | U32 fetched_version = LLTextureEntry::getVersionFromMediaVersionString(media_version); | ||
3151 | |||
3152 | // Only update it if it is newer! | ||
3153 | if ( (S32)fetched_version > mLastFetchedMediaVersion) | ||
3154 | { | ||
3155 | mLastFetchedMediaVersion = fetched_version; | ||
3156 | //llinfos << "updating:" << this->getID() << " " << ll_pretty_print_sd(media_data_array) << llendl; | ||
3157 | |||
3158 | LLSD::array_const_iterator iter = media_data_array.beginArray(); | ||
3159 | LLSD::array_const_iterator end = media_data_array.endArray(); | ||
3160 | U8 texture_index = 0; | ||
3161 | for (; iter != end; ++iter, ++texture_index) | ||
3162 | { | ||
3163 | syncMediaData(texture_index, *iter, false/*merge*/, false/*ignore_agent*/); | ||
3164 | } | ||
3165 | } | ||
3166 | } | ||
3167 | |||
3168 | bool LLVOVolume::hasMedia() const | ||
3169 | { | ||
3170 | bool result = false; | ||
3171 | const U8 numTEs = getNumTEs(); | ||
3172 | for (U8 i = 0; i < numTEs; i++) | ||
3173 | { | ||
3174 | const LLTextureEntry* te = getTE(i); | ||
3175 | if(te->hasMedia()) | ||
3176 | { | ||
3177 | result = true; | ||
3178 | break; | ||
3179 | } | ||
3180 | } | ||
3181 | return result; | ||
3182 | } | ||
3183 | |||
3184 | void LLVOVolume::syncMediaData(S32 texture_index, const LLSD &media_data, bool merge, bool ignore_agent) | ||
3185 | { | ||
3186 | if(mDead) | ||
3187 | { | ||
3188 | // If the object has been marked dead, don't process media updates. | ||
3189 | return; | ||
3190 | } | ||
3191 | |||
3192 | LLTextureEntry *te = getTE(texture_index); | ||
3193 | // LL_DEBUGS("MediaOnAPrim") << "BEFORE: texture_index = " << texture_index | ||
3194 | // << " hasMedia = " << te->hasMedia() << " : " | ||
3195 | // << ((NULL == te->getMediaData()) ? "NULL MEDIA DATA" : ll_pretty_print_sd(te->getMediaData()->asLLSD())) << llendl; | ||
2897 | 3196 | ||
3197 | std::string previous_url; | ||
3198 | LLMediaEntry* mep = te->getMediaData(); | ||
3199 | if(mep) | ||
3200 | { | ||
3201 | // Save the "current url" from before the update so we can tell if | ||
3202 | // it changes. | ||
3203 | previous_url = mep->getCurrentURL(); | ||
3204 | } | ||
3205 | |||
3206 | if (merge) | ||
3207 | { | ||
3208 | te->mergeIntoMediaData(media_data); | ||
3209 | } | ||
3210 | else { | ||
3211 | // XXX Question: what if the media data is undefined LLSD, but the | ||
3212 | // update we got above said that we have media flags?? Here we clobber | ||
3213 | // that, assuming the data from the service is more up-to-date. | ||
3214 | te->updateMediaData(media_data); | ||
3215 | } | ||
3216 | |||
3217 | mep = te->getMediaData(); | ||
3218 | if(mep) | ||
3219 | { | ||
3220 | //bool update_from_self = false; | ||
3221 | if (!ignore_agent) | ||
3222 | { | ||
3223 | LLUUID updating_agent = LLTextureEntry::getAgentIDFromMediaVersionString(getMediaURL()); | ||
3224 | //update_from_self = (updating_agent == gAgent.getID()); | ||
3225 | } | ||
3226 | //viewer_media_t media_impl = LLViewerMedia::updateMediaImpl(mep, previous_url, update_from_self); | ||
3227 | |||
3228 | //addMediaImpl(media_impl, texture_index) ; | ||
3229 | } | ||
3230 | else | ||
3231 | { | ||
3232 | //removeMediaImpl(texture_index); | ||
3233 | } | ||
3234 | |||
3235 | // LL_DEBUGS("MediaOnAPrim") << "AFTER: texture_index = " << texture_index | ||
3236 | // << " hasMedia = " << te->hasMedia() << " : " | ||
3237 | // << ((NULL == te->getMediaData()) ? "NULL MEDIA DATA" : ll_pretty_print_sd(te->getMediaData()->asLLSD())) << llendl; | ||
3238 | } | ||
3239 | |||
3240 | |||
3241 | void LLVOVolume::mediaNavigateBounceBack(U8 texture_index) | ||
3242 | { | ||
3243 | /* | ||
3244 | // Find the media entry for this navigate | ||
3245 | const LLMediaEntry* mep = NULL; | ||
3246 | viewer_media_t impl = getMediaImpl(texture_index); | ||
3247 | LLTextureEntry *te = getTE(texture_index); | ||
3248 | if(te) | ||
3249 | { | ||
3250 | mep = te->getMediaData(); | ||
3251 | } | ||
3252 | |||
3253 | if (mep && impl) | ||
3254 | { | ||
3255 | std::string url = mep->getCurrentURL(); | ||
3256 | // Look for a ":", if not there, assume "http://" | ||
3257 | if (!url.empty() && std::string::npos == url.find(':')) | ||
3258 | { | ||
3259 | url = "http://" + url; | ||
3260 | } | ||
3261 | // If the url we're trying to "bounce back" to is either empty or not | ||
3262 | // allowed by the whitelist, try the home url. If *that* doesn't work, | ||
3263 | // set the media as failed and unload it | ||
3264 | if (url.empty() || !mep->checkCandidateUrl(url)) | ||
3265 | { | ||
3266 | url = mep->getHomeURL(); | ||
3267 | // Look for a ":", if not there, assume "http://" | ||
3268 | if (!url.empty() && std::string::npos == url.find(':')) | ||
3269 | { | ||
3270 | url = "http://" + url; | ||
3271 | } | ||
3272 | } | ||
3273 | if (url.empty() || !mep->checkCandidateUrl(url)) | ||
3274 | { | ||
3275 | // The url to navigate back to is not good, and we have nowhere else | ||
3276 | // to go. | ||
3277 | LL_WARNS("MediaOnAPrim") << "FAILED to bounce back URL \"" << url << "\" -- unloading impl" << LL_ENDL; | ||
3278 | impl->setMediaFailed(true); | ||
3279 | } | ||
3280 | else { | ||
3281 | // Okay, navigate now | ||
3282 | LL_INFOS("MediaOnAPrim") << "bouncing back to URL: " << url << LL_ENDL; | ||
3283 | impl->navigateTo(url, "", false, true); | ||
3284 | } | ||
3285 | } | ||
3286 | */ | ||
3287 | } | ||
diff --git a/linden/indra/newview/llvovolume.h b/linden/indra/newview/llvovolume.h index d09a198..39d9227 100644 --- a/linden/indra/newview/llvovolume.h +++ b/linden/indra/newview/llvovolume.h | |||
@@ -36,6 +36,8 @@ | |||
36 | #include "llviewerobject.h" | 36 | #include "llviewerobject.h" |
37 | #include "llviewerimage.h" | 37 | #include "llviewerimage.h" |
38 | #include "llframetimer.h" | 38 | #include "llframetimer.h" |
39 | #include "llmediadataclient.h" | ||
40 | #include "llviewermedia.h" | ||
39 | #include "llapr.h" | 41 | #include "llapr.h" |
40 | #include <map> | 42 | #include <map> |
41 | 43 | ||
@@ -43,6 +45,8 @@ class LLViewerTextureAnim; | |||
43 | class LLDrawPool; | 45 | class LLDrawPool; |
44 | class LLSelectNode; | 46 | class LLSelectNode; |
45 | 47 | ||
48 | typedef std::vector<viewer_media_t> media_list_t; | ||
49 | |||
46 | enum LLVolumeInterfaceType | 50 | enum LLVolumeInterfaceType |
47 | { | 51 | { |
48 | INTERFACE_FLEXIBLE = 1, | 52 | INTERFACE_FLEXIBLE = 1, |
@@ -217,6 +221,46 @@ public: | |||
217 | 221 | ||
218 | // tag: vaa emerald local_asset_browser | 222 | // tag: vaa emerald local_asset_browser |
219 | void setSculptChanged(BOOL has_changed) { mSculptChanged = has_changed; } | 223 | void setSculptChanged(BOOL has_changed) { mSculptChanged = has_changed; } |
224 | |||
225 | |||
226 | // Functions that deal with media, or media navigation | ||
227 | |||
228 | // Update this object's media data with the given media data array | ||
229 | // (typically this is only called upon a response from a server request) | ||
230 | void updateObjectMediaData(const LLSD &media_data_array, const std::string &media_version); | ||
231 | |||
232 | // Bounce back media at the given index to its current URL (or home URL, if current URL is empty) | ||
233 | void mediaNavigateBounceBack(U8 texture_index); | ||
234 | |||
235 | // Returns whether or not this object has permission to navigate or control | ||
236 | // the given media entry | ||
237 | enum MediaPermType { | ||
238 | MEDIA_PERM_INTERACT, MEDIA_PERM_CONTROL | ||
239 | }; | ||
240 | bool hasMediaPermission(const LLMediaEntry* media_entry, MediaPermType perm_type); | ||
241 | |||
242 | void mediaNavigated(LLViewerMediaImpl *impl, LLPluginClassMedia* plugin, std::string new_location); | ||
243 | void mediaEvent(LLViewerMediaImpl *impl, LLPluginClassMedia* plugin, LLViewerMediaObserver::EMediaEvent event); | ||
244 | |||
245 | // Sync the given media data with the impl and the given te | ||
246 | void syncMediaData(S32 te, const LLSD &media_data, bool merge, bool ignore_agent); | ||
247 | |||
248 | // Send media data update to the simulator. | ||
249 | void sendMediaDataUpdate(); | ||
250 | |||
251 | viewer_media_t getMediaImpl(U8 face_id) const; | ||
252 | S32 getFaceIndexWithMediaImpl(const LLViewerMediaImpl* media_impl, S32 start_face_id); | ||
253 | F64 getTotalMediaInterest() const; | ||
254 | |||
255 | bool hasMedia() const; | ||
256 | |||
257 | LLVector3 getApproximateFaceNormal(U8 face_id); | ||
258 | |||
259 | // Returns 'true' iff the media data for this object is in flight | ||
260 | bool isMediaDataBeingFetched() const; | ||
261 | |||
262 | // Returns the "last fetched" media version, or -1 if not fetched yet | ||
263 | S32 getLastFetchedMediaVersion() const { return mLastFetchedMediaVersion; } | ||
220 | 264 | ||
221 | protected: | 265 | protected: |
222 | S32 computeLODDetail(F32 distance, F32 radius); | 266 | S32 computeLODDetail(F32 distance, F32 radius); |
@@ -224,6 +268,11 @@ protected: | |||
224 | LLFace* addFace(S32 face_index); | 268 | LLFace* addFace(S32 face_index); |
225 | void updateTEData(); | 269 | void updateTEData(); |
226 | 270 | ||
271 | void requestMediaDataUpdate(bool isNew); | ||
272 | void cleanUpMediaImpls(); | ||
273 | void addMediaImpl(LLViewerMediaImpl* media_impl, S32 texture_index) ; | ||
274 | void removeMediaImpl(S32 texture_index) ; | ||
275 | |||
227 | public: | 276 | public: |
228 | LLViewerTextureAnim *mTextureAnimp; | 277 | LLViewerTextureAnim *mTextureAnimp; |
229 | U8 mTexAnimMode; | 278 | U8 mTexAnimMode; |
@@ -242,12 +291,16 @@ private: | |||
242 | LLVolumeInterface *mVolumeImpl; | 291 | LLVolumeInterface *mVolumeImpl; |
243 | LLPointer<LLViewerImage> mSculptTexture; | 292 | LLPointer<LLViewerImage> mSculptTexture; |
244 | S32 mIndexInTex; // index of this volume in the texture's volume list | 293 | S32 mIndexInTex; // index of this volume in the texture's volume list |
294 | media_list_t mMediaImplList; | ||
295 | S32 mLastFetchedMediaVersion; // as fetched from the server, starts as -1 | ||
245 | 296 | ||
246 | // statics | 297 | // statics |
247 | public: | 298 | public: |
248 | static F32 sLODSlopDistanceFactor;// Changing this to zero, effectively disables the LOD transition slop | 299 | static F32 sLODSlopDistanceFactor;// Changing this to zero, effectively disables the LOD transition slop |
249 | static F32 sLODFactor; // LOD scale factor | 300 | static F32 sLODFactor; // LOD scale factor |
250 | static F32 sDistanceFactor; // LOD distance factor | 301 | static F32 sDistanceFactor; // LOD distance factor |
302 | static LLPointer<LLObjectMediaDataClient> sObjectMediaClient; | ||
303 | static LLPointer<LLObjectMediaNavigateClient> sObjectMediaNavigateClient; | ||
251 | 304 | ||
252 | protected: | 305 | protected: |
253 | static S32 sNumLODChanges; | 306 | static S32 sNumLODChanges; |
diff --git a/linden/indra/newview/llvowlsky.cpp b/linden/indra/newview/llvowlsky.cpp index 572a2a1..5cbda97 100644 --- a/linden/indra/newview/llvowlsky.cpp +++ b/linden/indra/newview/llvowlsky.cpp | |||
@@ -719,12 +719,13 @@ void LLVOWLSky::updateStarColors() | |||
719 | { | 719 | { |
720 | std::vector<LLColor4>::iterator v_c = mStarColors.begin(); | 720 | std::vector<LLColor4>::iterator v_c = mStarColors.begin(); |
721 | std::vector<F32>::iterator v_i = mStarIntensities.begin(); | 721 | std::vector<F32>::iterator v_i = mStarIntensities.begin(); |
722 | std::vector<LLVector3>::iterator v_p = mStarVertices.begin(); | 722 | // A bunch of stuff here is not used, but looks like it might be useful later, so I'll leave it, but commented out. |
723 | //std::vector<LLVector3>::iterator v_p = mStarVertices.begin(); | ||
723 | 724 | ||
724 | const F32 var = 0.15f; | 725 | const F32 var = 0.15f; |
725 | const F32 min = 0.5f; //0.75f; | 726 | const F32 min = 0.5f; //0.75f; |
726 | const F32 sunclose_max = 0.6f; | 727 | //const F32 sunclose_max = 0.6f; |
727 | const F32 sunclose_range = 1 - sunclose_max; | 728 | //const F32 sunclose_range = 1 - sunclose_max; |
728 | 729 | ||
729 | //F32 below_horizon = - llmin(0.0f, gSky.mVOSkyp->getToSunLast().mV[2]); | 730 | //F32 below_horizon = - llmin(0.0f, gSky.mVOSkyp->getToSunLast().mV[2]); |
730 | //F32 brightness_factor = llmin(1.0f, below_horizon * 20); | 731 | //F32 brightness_factor = llmin(1.0f, below_horizon * 20); |
@@ -738,14 +739,14 @@ void LLVOWLSky::updateStarColors() | |||
738 | U32 x; | 739 | U32 x; |
739 | for (x = 0; x < getStarsNumVerts(); ++x) | 740 | for (x = 0; x < getStarsNumVerts(); ++x) |
740 | { | 741 | { |
741 | F32 sundir_factor = 1; | 742 | //F32 sundir_factor = 1; |
742 | LLVector3 tostar = *v_p; | 743 | //LLVector3 tostar = *v_p; |
743 | tostar.normVec(); | 744 | //tostar.normVec(); |
744 | const F32 how_close_to_sun = tostar * gSky.mVOSkyp->getToSunLast(); | 745 | //const F32 how_close_to_sun = tostar * gSky.mVOSkyp->getToSunLast(); |
745 | if (how_close_to_sun > sunclose_max) | 746 | //if (how_close_to_sun > sunclose_max) |
746 | { | 747 | //{ |
747 | sundir_factor = (1 - how_close_to_sun) / sunclose_range; | 748 | // sundir_factor = (1 - how_close_to_sun) / sunclose_range; |
748 | } | 749 | //} |
749 | intensity = *(v_i); | 750 | intensity = *(v_i); |
750 | F32 alpha = v_c->mV[VALPHA] + (ll_frand() - 0.5f) * var * intensity; | 751 | F32 alpha = v_c->mV[VALPHA] + (ll_frand() - 0.5f) * var * intensity; |
751 | if (alpha < min * intensity) | 752 | if (alpha < min * intensity) |
@@ -762,7 +763,7 @@ void LLVOWLSky::updateStarColors() | |||
762 | v_c->mV[VALPHA] = alpha; | 763 | v_c->mV[VALPHA] = alpha; |
763 | v_c++; | 764 | v_c++; |
764 | v_i++; | 765 | v_i++; |
765 | v_p++; | 766 | //v_p++; |
766 | } | 767 | } |
767 | } | 768 | } |
768 | } | 769 | } |
diff --git a/linden/indra/newview/llwaterparammanager.cpp b/linden/indra/newview/llwaterparammanager.cpp index 0156622..2386631 100644 --- a/linden/indra/newview/llwaterparammanager.cpp +++ b/linden/indra/newview/llwaterparammanager.cpp | |||
@@ -3,9 +3,9 @@ | |||
3 | * @brief Implementation for the LLWaterParamManager class. | 3 | * @brief Implementation for the LLWaterParamManager class. |
4 | * | 4 | * |
5 | * $LicenseInfo:firstyear=2007&license=viewergpl$ | 5 | * $LicenseInfo:firstyear=2007&license=viewergpl$ |
6 | * | 6 | * |
7 | * Copyright (c) 2007-2009, Linden Research, Inc. | 7 | * Copyright (c) 2007-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 |
@@ -13,17 +13,17 @@ | |||
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. |
@@ -69,6 +69,7 @@ | |||
69 | 69 | ||
70 | #include "llwlparammanager.h" | 70 | #include "llwlparammanager.h" |
71 | #include "llwaterparamset.h" | 71 | #include "llwaterparamset.h" |
72 | #include "llettherebelight.h" | ||
72 | #include "llpostprocess.h" | 73 | #include "llpostprocess.h" |
73 | #include "llfloaterwater.h" | 74 | #include "llfloaterwater.h" |
74 | 75 | ||
@@ -102,9 +103,9 @@ void LLWaterParamManager::loadAllPresets(const std::string& file_name) | |||
102 | { | 103 | { |
103 | std::string path_name(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "windlight/water", "")); | 104 | std::string path_name(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "windlight/water", "")); |
104 | LL_DEBUGS2("AppInit", "ShaderLoading") << "Loading Default water settings from " << path_name << LL_ENDL; | 105 | LL_DEBUGS2("AppInit", "ShaderLoading") << "Loading Default water settings from " << path_name << LL_ENDL; |
105 | 106 | ||
106 | bool found = true; | 107 | bool found = true; |
107 | while(found) | 108 | while(found) |
108 | { | 109 | { |
109 | std::string name; | 110 | std::string name; |
110 | found = gDirUtilp->getNextFileInDir(path_name, "*.xml", name, false); | 111 | found = gDirUtilp->getNextFileInDir(path_name, "*.xml", name, false); |
@@ -128,9 +129,9 @@ void LLWaterParamManager::loadAllPresets(const std::string& file_name) | |||
128 | 129 | ||
129 | std::string path_name2(gDirUtilp->getExpandedFilename( LL_PATH_USER_SETTINGS , "windlight/water", "")); | 130 | std::string path_name2(gDirUtilp->getExpandedFilename( LL_PATH_USER_SETTINGS , "windlight/water", "")); |
130 | LL_DEBUGS2("AppInit", "Shaders") << "Loading User water settings from " << path_name2 << LL_ENDL; | 131 | LL_DEBUGS2("AppInit", "Shaders") << "Loading User water settings from " << path_name2 << LL_ENDL; |
131 | 132 | ||
132 | found = true; | 133 | found = true; |
133 | while(found) | 134 | while(found) |
134 | { | 135 | { |
135 | std::string name; | 136 | std::string name; |
136 | found = gDirUtilp->getNextFileInDir(path_name2, "*.xml", name, false); | 137 | found = gDirUtilp->getNextFileInDir(path_name2, "*.xml", name, false); |
@@ -159,7 +160,7 @@ void LLWaterParamManager::loadPreset(const std::string & name,bool propagate) | |||
159 | if(propagate) | 160 | if(propagate) |
160 | { | 161 | { |
161 | getParamSet(name, mCurParams); | 162 | getParamSet(name, mCurParams); |
162 | propagateParameters(); | 163 | LightShare::apply(&mCurParams, NULL, NULL, WL_SCOPE_USER); |
163 | } | 164 | } |
164 | return; | 165 | return; |
165 | } | 166 | } |
@@ -174,10 +175,10 @@ void LLWaterParamManager::loadPreset(const std::string & name,bool propagate) | |||
174 | 175 | ||
175 | std::string pathName(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "windlight/water", escaped_filename)); | 176 | std::string pathName(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "windlight/water", escaped_filename)); |
176 | LL_DEBUGS2("AppInit", "Shaders") << "Loading water settings from " << pathName << LL_ENDL; | 177 | LL_DEBUGS2("AppInit", "Shaders") << "Loading water settings from " << pathName << LL_ENDL; |
177 | 178 | ||
178 | std::ifstream presetsXML; | 179 | std::ifstream presetsXML; |
179 | presetsXML.open(pathName.c_str()); | 180 | presetsXML.open(pathName.c_str()); |
180 | 181 | ||
181 | // That failed, try loading from the users area instead. | 182 | // That failed, try loading from the users area instead. |
182 | if(!presetsXML) | 183 | if(!presetsXML) |
183 | { | 184 | { |
@@ -190,8 +191,8 @@ void LLWaterParamManager::loadPreset(const std::string & name,bool propagate) | |||
190 | { | 191 | { |
191 | loadPresetXML(name, presetsXML); | 192 | loadPresetXML(name, presetsXML); |
192 | presetsXML.close(); | 193 | presetsXML.close(); |
193 | } | 194 | } |
194 | else | 195 | else |
195 | { | 196 | { |
196 | llwarns << "Can't find " << name << llendl; | 197 | llwarns << "Can't find " << name << llendl; |
197 | return; | 198 | return; |
@@ -200,21 +201,21 @@ void LLWaterParamManager::loadPreset(const std::string & name,bool propagate) | |||
200 | if(propagate) | 201 | if(propagate) |
201 | { | 202 | { |
202 | getParamSet(name, mCurParams); | 203 | getParamSet(name, mCurParams); |
203 | propagateParameters(); | 204 | LightShare::apply(&mCurParams, NULL, NULL, WL_SCOPE_USER); |
204 | } | 205 | } |
205 | } | 206 | } |
206 | 207 | ||
207 | bool LLWaterParamManager::loadPresetXML(const std::string& name, std::istream& preset_stream, bool propagate /* = false */, bool check_if_real /* = false */) | 208 | bool LLWaterParamManager::loadPresetXML(const std::string& name, std::istream& preset_stream, bool propagate /* = false */, bool check_if_real /* = false */) |
208 | { | 209 | { |
209 | LLSD paramsData(LLSD::emptyMap()); | 210 | LLSD paramsData(LLSD::emptyMap()); |
210 | 211 | ||
211 | LLPointer<LLSDParser> parser = new LLSDXMLParser(); | 212 | LLPointer<LLSDParser> parser = new LLSDXMLParser(); |
212 | 213 | ||
213 | if(parser->parse(preset_stream, paramsData, LLSDSerialize::SIZE_UNLIMITED) == LLSDParser::PARSE_FAILURE) | 214 | if(parser->parse(preset_stream, paramsData, LLSDSerialize::SIZE_UNLIMITED) == LLSDParser::PARSE_FAILURE) |
214 | { | 215 | { |
215 | return false; | 216 | return false; |
216 | } | 217 | } |
217 | 218 | ||
218 | if(check_if_real) | 219 | if(check_if_real) |
219 | { | 220 | { |
220 | static const char* expected_windlight_settings[] = { | 221 | static const char* expected_windlight_settings[] = { |
@@ -240,17 +241,17 @@ bool LLWaterParamManager::loadPresetXML(const std::string& name, std::istream& p | |||
240 | } | 241 | } |
241 | } | 242 | } |
242 | } | 243 | } |
243 | 244 | ||
244 | std::map<std::string, LLWaterParamSet>::iterator mIt = mParamList.find(name); | 245 | std::map<std::string, LLWaterParamSet>::iterator mIt = mParamList.find(name); |
245 | if(mIt == mParamList.end()) | 246 | if(mIt == mParamList.end()) |
246 | { | 247 | { |
247 | addParamSet(name, paramsData); | 248 | addParamSet(name, paramsData); |
248 | } | 249 | } |
249 | else | 250 | else |
250 | { | 251 | { |
251 | setParamSet(name, paramsData); | 252 | setParamSet(name, paramsData); |
252 | } | 253 | } |
253 | 254 | ||
254 | if(propagate) | 255 | if(propagate) |
255 | { | 256 | { |
256 | getParamSet(name, mCurParams); | 257 | getParamSet(name, mCurParams); |
@@ -306,19 +307,19 @@ bool LLWaterParamManager::savePresetToNotecard(const std::string & name) | |||
306 | { | 307 | { |
307 | // make an empty llsd | 308 | // make an empty llsd |
308 | LLSD paramsData(LLSD::emptyMap()); | 309 | LLSD paramsData(LLSD::emptyMap()); |
309 | 310 | ||
310 | // fill it with LLSD windlight params | 311 | // fill it with LLSD windlight params |
311 | paramsData = mParamList[name].getAll(); | 312 | paramsData = mParamList[name].getAll(); |
312 | 313 | ||
313 | // get some XML | 314 | // get some XML |
314 | std::ostringstream presetsXML; | 315 | std::ostringstream presetsXML; |
315 | LLPointer<LLSDFormatter> formatter = new LLSDXMLFormatter(); | 316 | LLPointer<LLSDFormatter> formatter = new LLSDXMLFormatter(); |
316 | formatter->format(paramsData, presetsXML, LLSDFormatter::OPTIONS_PRETTY); | 317 | formatter->format(paramsData, presetsXML, LLSDFormatter::OPTIONS_PRETTY); |
317 | 318 | ||
318 | // Write it to a notecard | 319 | // Write it to a notecard |
319 | LLNotecard notecard; | 320 | LLNotecard notecard; |
320 | notecard.setText(presetsXML.str()); | 321 | notecard.setText(presetsXML.str()); |
321 | 322 | ||
322 | LLInventoryItem *item = gInventory.getItem(mParamList[name].mInventoryID); | 323 | LLInventoryItem *item = gInventory.getItem(mParamList[name].mInventoryID); |
323 | if(!item) | 324 | if(!item) |
324 | { | 325 | { |
@@ -332,13 +333,13 @@ bool LLWaterParamManager::savePresetToNotecard(const std::string & name) | |||
332 | LLAssetID asset_id; | 333 | LLAssetID asset_id; |
333 | tid.generate(); | 334 | tid.generate(); |
334 | asset_id = tid.makeAssetID(gAgent.getSecureSessionID()); | 335 | asset_id = tid.makeAssetID(gAgent.getSecureSessionID()); |
335 | 336 | ||
336 | LLVFile file(gVFS, asset_id, LLAssetType::AT_NOTECARD, LLVFile::APPEND); | 337 | LLVFile file(gVFS, asset_id, LLAssetType::AT_NOTECARD, LLVFile::APPEND); |
337 | 338 | ||
338 | std::ostringstream stream; | 339 | std::ostringstream stream; |
339 | notecard.exportStream(stream); | 340 | notecard.exportStream(stream); |
340 | std::string buffer = stream.str(); | 341 | std::string buffer = stream.str(); |
341 | 342 | ||
342 | S32 size = buffer.length() + 1; | 343 | S32 size = buffer.length() + 1; |
343 | file.setMaxSize(size); | 344 | file.setMaxSize(size); |
344 | file.write((U8*)buffer.c_str(), size); | 345 | file.write((U8*)buffer.c_str(), size); |
@@ -351,7 +352,7 @@ bool LLWaterParamManager::savePresetToNotecard(const std::string & name) | |||
351 | LL_WARNS("WindLight") << "Stuff the legacy system." << LL_ENDL; | 352 | LL_WARNS("WindLight") << "Stuff the legacy system." << LL_ENDL; |
352 | return false; | 353 | return false; |
353 | } | 354 | } |
354 | 355 | ||
355 | propagateParameters(); | 356 | propagateParameters(); |
356 | return true; | 357 | return true; |
357 | } | 358 | } |
@@ -374,8 +375,8 @@ void LLWaterParamManager::propagateParameters(void) | |||
374 | } | 375 | } |
375 | 376 | ||
376 | bool err; | 377 | bool err; |
377 | F32 fog_density_slider = | 378 | F32 fog_density_slider = |
378 | log(mCurParams.getFloat(mFogDensity.mName, err)) / | 379 | log(mCurParams.getFloat(mFogDensity.mName, err)) / |
379 | log(mFogDensity.mBase); | 380 | log(mFogDensity.mBase); |
380 | 381 | ||
381 | setDensitySliderValue(fog_density_slider); | 382 | setDensitySliderValue(fog_density_slider); |
@@ -398,12 +399,12 @@ void LLWaterParamManager::updateShaderUniforms(LLGLSLShader * shader) | |||
398 | void LLWaterParamManager::update(LLViewerCamera * cam) | 399 | void LLWaterParamManager::update(LLViewerCamera * cam) |
399 | { | 400 | { |
400 | LLFastTimer ftm(LLFastTimer::FTM_UPDATE_WLPARAM); | 401 | LLFastTimer ftm(LLFastTimer::FTM_UPDATE_WLPARAM); |
401 | 402 | ||
402 | // update the shaders and the menu | 403 | // update the shaders and the menu |
403 | propagateParameters(); | 404 | propagateParameters(); |
404 | 405 | ||
405 | // sync menus if they exist | 406 | // sync menus if they exist |
406 | if(LLFloaterWater::isOpen()) | 407 | if(LLFloaterWater::isOpen()) |
407 | { | 408 | { |
408 | LLFloaterWater::instance()->syncMenu(); | 409 | LLFloaterWater::instance()->syncMenu(); |
409 | } | 410 | } |
@@ -411,12 +412,12 @@ void LLWaterParamManager::update(LLViewerCamera * cam) | |||
411 | stop_glerror(); | 412 | stop_glerror(); |
412 | 413 | ||
413 | // only do this if we're dealing with shaders | 414 | // only do this if we're dealing with shaders |
414 | if(gPipeline.canUseVertexShaders()) | 415 | if(gPipeline.canUseVertexShaders()) |
415 | { | 416 | { |
416 | //transform water plane to eye space | 417 | //transform water plane to eye space |
417 | glh::vec3f norm(0.f, 0.f, 1.f); | 418 | glh::vec3f norm(0.f, 0.f, 1.f); |
418 | glh::vec3f p(0.f, 0.f, gAgent.getRegion()->getWaterHeight()+0.1f); | 419 | glh::vec3f p(0.f, 0.f, gAgent.getRegion()->getWaterHeight()+0.1f); |
419 | 420 | ||
420 | F32 modelView[16]; | 421 | F32 modelView[16]; |
421 | for (U32 i = 0; i < 16; i++) | 422 | for (U32 i = 0; i < 16; i++) |
422 | { | 423 | { |
@@ -434,13 +435,13 @@ void LLWaterParamManager::update(LLViewerCamera * cam) | |||
434 | mWaterPlane = LLVector4(enorm.v[0], enorm.v[1], enorm.v[2], -ep.dot(enorm)); | 435 | mWaterPlane = LLVector4(enorm.v[0], enorm.v[1], enorm.v[2], -ep.dot(enorm)); |
435 | 436 | ||
436 | LLVector3 sunMoonDir; | 437 | LLVector3 sunMoonDir; |
437 | if (gSky.getSunDirection().mV[2] > NIGHTTIME_ELEVATION_COS) | 438 | if (gSky.getSunDirection().mV[2] > NIGHTTIME_ELEVATION_COS) |
438 | { | 439 | { |
439 | sunMoonDir = gSky.getSunDirection(); | 440 | sunMoonDir = gSky.getSunDirection(); |
440 | } | 441 | } |
441 | else | 442 | else |
442 | { | 443 | { |
443 | sunMoonDir = gSky.getMoonDirection(); | 444 | sunMoonDir = gSky.getMoonDirection(); |
444 | } | 445 | } |
445 | sunMoonDir.normVec(); | 446 | sunMoonDir.normVec(); |
446 | mWaterFogKS = 1.f/llmax(sunMoonDir.mV[2], WATER_FOG_LIGHT_CLAMP); | 447 | mWaterFogKS = 1.f/llmax(sunMoonDir.mV[2], WATER_FOG_LIGHT_CLAMP); |
@@ -510,8 +511,8 @@ bool LLWaterParamManager::addParamSet(const std::string& name, LLWaterParamSet& | |||
510 | { | 511 | { |
511 | // add a new one if not one there already | 512 | // add a new one if not one there already |
512 | std::map<std::string, LLWaterParamSet>::iterator mIt = mParamList.find(name); | 513 | std::map<std::string, LLWaterParamSet>::iterator mIt = mParamList.find(name); |
513 | if(mIt == mParamList.end()) | 514 | if(mIt == mParamList.end()) |
514 | { | 515 | { |
515 | mParamList[name] = param; | 516 | mParamList[name] = param; |
516 | return true; | 517 | return true; |
517 | } | 518 | } |
@@ -538,7 +539,7 @@ bool LLWaterParamManager::getParamSet(const std::string& name, LLWaterParamSet& | |||
538 | { | 539 | { |
539 | // find it and set it | 540 | // find it and set it |
540 | std::map<std::string, LLWaterParamSet>::iterator mIt = mParamList.find(name); | 541 | std::map<std::string, LLWaterParamSet>::iterator mIt = mParamList.find(name); |
541 | if(mIt != mParamList.end()) | 542 | if(mIt != mParamList.end()) |
542 | { | 543 | { |
543 | param = mParamList[name]; | 544 | param = mParamList[name]; |
544 | param.mName = name; | 545 | param.mName = name; |
@@ -558,11 +559,11 @@ bool LLWaterParamManager::setParamSet(const std::string& name, LLWaterParamSet& | |||
558 | bool LLWaterParamManager::setParamSet(const std::string& name, const LLSD & param) | 559 | bool LLWaterParamManager::setParamSet(const std::string& name, const LLSD & param) |
559 | { | 560 | { |
560 | // quick, non robust (we won't be working with files, but assets) check | 561 | // quick, non robust (we won't be working with files, but assets) check |
561 | if(!param.isMap()) | 562 | if(!param.isMap()) |
562 | { | 563 | { |
563 | return false; | 564 | return false; |
564 | } | 565 | } |
565 | 566 | ||
566 | mParamList[name].setAll(param); | 567 | mParamList[name].setAll(param); |
567 | 568 | ||
568 | return true; | 569 | return true; |
@@ -572,7 +573,7 @@ bool LLWaterParamManager::removeParamSet(const std::string& name, bool delete_fr | |||
572 | { | 573 | { |
573 | // remove from param list | 574 | // remove from param list |
574 | std::map<std::string, LLWaterParamSet>::iterator mIt = mParamList.find(name); | 575 | std::map<std::string, LLWaterParamSet>::iterator mIt = mParamList.find(name); |
575 | if(mIt != mParamList.end()) | 576 | if(mIt != mParamList.end()) |
576 | { | 577 | { |
577 | mParamList.erase(mIt); | 578 | mParamList.erase(mIt); |
578 | } | 579 | } |
@@ -581,13 +582,13 @@ bool LLWaterParamManager::removeParamSet(const std::string& name, bool delete_fr | |||
581 | { | 582 | { |
582 | 583 | ||
583 | std::string path_name(gDirUtilp->getExpandedFilename( LL_PATH_USER_SETTINGS , "windlight/water", "")); | 584 | std::string path_name(gDirUtilp->getExpandedFilename( LL_PATH_USER_SETTINGS , "windlight/water", "")); |
584 | 585 | ||
585 | // use full curl escaped name | 586 | // use full curl escaped name |
586 | char * curl_str = curl_escape(name.c_str(), name.size()); | 587 | char * curl_str = curl_escape(name.c_str(), name.size()); |
587 | std::string escaped_name(curl_str); | 588 | std::string escaped_name(curl_str); |
588 | curl_free(curl_str); | 589 | curl_free(curl_str); |
589 | curl_str = NULL; | 590 | curl_str = NULL; |
590 | 591 | ||
591 | gDirUtilp->deleteFilesInDir(path_name, escaped_name + ".xml"); | 592 | gDirUtilp->deleteFilesInDir(path_name, escaped_name + ".xml"); |
592 | } | 593 | } |
593 | 594 | ||
@@ -599,7 +600,7 @@ F32 LLWaterParamManager::getFogDensity(void) | |||
599 | bool err; | 600 | bool err; |
600 | 601 | ||
601 | F32 fogDensity = mCurParams.getFloat("waterFogDensity", err); | 602 | F32 fogDensity = mCurParams.getFloat("waterFogDensity", err); |
602 | 603 | ||
603 | // modify if we're underwater | 604 | // modify if we're underwater |
604 | const F32 water_height = gAgent.getRegion() ? gAgent.getRegion()->getWaterHeight() : 0.f; | 605 | const F32 water_height = gAgent.getRegion() ? gAgent.getRegion()->getWaterHeight() : 0.f; |
605 | F32 camera_height = gAgent.getCameraPositionAgent().mV[2]; | 606 | F32 camera_height = gAgent.getCameraPositionAgent().mV[2]; |
@@ -659,7 +660,7 @@ void LLWaterParamManager::loadWaterNotecard(LLVFS *vfs, const LLUUID& asset_id, | |||
659 | } | 660 | } |
660 | else | 661 | else |
661 | { | 662 | { |
662 | // We can do this because we know mCurParams | 663 | // We can do this because we know mCurParams |
663 | sInstance->mParamList[name].mInventoryID = inventory_id; | 664 | sInstance->mParamList[name].mInventoryID = inventory_id; |
664 | } | 665 | } |
665 | } | 666 | } |
diff --git a/linden/indra/newview/llwaterparamset.cpp b/linden/indra/newview/llwaterparamset.cpp index 4b2e426..5825a23 100644 --- a/linden/indra/newview/llwaterparamset.cpp +++ b/linden/indra/newview/llwaterparamset.cpp | |||
@@ -192,8 +192,6 @@ LLVector3 LLWaterParamSet::getVector3(const std::string& paramName, bool& error) | |||
192 | LLVector2 LLWaterParamSet::getVector2(const std::string& paramName, bool& error) | 192 | LLVector2 LLWaterParamSet::getVector2(const std::string& paramName, bool& error) |
193 | { | 193 | { |
194 | // test to see if right type | 194 | // test to see if right type |
195 | int ttest; | ||
196 | ttest = mParamValues.size(); | ||
197 | LLSD cur_val = mParamValues.get(paramName); | 195 | LLSD cur_val = mParamValues.get(paramName); |
198 | if (!cur_val.isArray() || cur_val.size() != 2) | 196 | if (!cur_val.isArray() || cur_val.size() != 2) |
199 | { | 197 | { |
diff --git a/linden/indra/newview/llwaterparamset.h b/linden/indra/newview/llwaterparamset.h index efbad31..09da42b 100644 --- a/linden/indra/newview/llwaterparamset.h +++ b/linden/indra/newview/llwaterparamset.h | |||
@@ -47,12 +47,14 @@ class LLWaterParamSet; | |||
47 | class LLWaterParamSet | 47 | class LLWaterParamSet |
48 | { | 48 | { |
49 | friend class LLWaterParamManager; | 49 | friend class LLWaterParamManager; |
50 | friend class LLWLParamManager; | ||
51 | friend class LightShare; | ||
50 | 52 | ||
51 | public: | 53 | public: |
52 | std::string mName; | 54 | std::string mName; |
53 | LLUUID mInventoryID; | 55 | LLUUID mInventoryID; |
54 | 56 | ||
55 | private: | 57 | protected: |
56 | 58 | ||
57 | LLSD mParamValues; | 59 | LLSD mParamValues; |
58 | 60 | ||
diff --git a/linden/indra/newview/llwlparammanager.cpp b/linden/indra/newview/llwlparammanager.cpp index 8007cce..59de0ad 100644 --- a/linden/indra/newview/llwlparammanager.cpp +++ b/linden/indra/newview/llwlparammanager.cpp | |||
@@ -3,9 +3,9 @@ | |||
3 | * @brief Implementation for the LLWLParamManager class. | 3 | * @brief Implementation for the LLWLParamManager class. |
4 | * | 4 | * |
5 | * $LicenseInfo:firstyear=2007&license=viewergpl$ | 5 | * $LicenseInfo:firstyear=2007&license=viewergpl$ |
6 | * | 6 | * |
7 | * Copyright (c) 2007-2009, Linden Research, Inc. | 7 | * Copyright (c) 2007-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 |
@@ -13,17 +13,17 @@ | |||
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. |
@@ -33,6 +33,8 @@ | |||
33 | #include "llviewerprecompiledheaders.h" | 33 | #include "llviewerprecompiledheaders.h" |
34 | 34 | ||
35 | #include "llwlparammanager.h" | 35 | #include "llwlparammanager.h" |
36 | #include "llwaterparammanager.h" | ||
37 | #include "llettherebelight.h" | ||
36 | 38 | ||
37 | #include "pipeline.h" | 39 | #include "pipeline.h" |
38 | #include "llsky.h" | 40 | #include "llsky.h" |
@@ -60,6 +62,7 @@ | |||
60 | #include "llfloaterdaycycle.h" | 62 | #include "llfloaterdaycycle.h" |
61 | #include "llfloaterenvsettings.h" | 63 | #include "llfloaterenvsettings.h" |
62 | 64 | ||
65 | #include "llworld.h" | ||
63 | 66 | ||
64 | // For notecard loading | 67 | // For notecard loading |
65 | #include "llvfile.h" | 68 | #include "llvfile.h" |
@@ -124,9 +127,9 @@ void LLWLParamManager::loadPresets(const std::string& file_name) | |||
124 | { | 127 | { |
125 | std::string path_name(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "windlight/skies", "")); | 128 | std::string path_name(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "windlight/skies", "")); |
126 | LL_DEBUGS2("AppInit", "ShaderLoading") << "Loading Default WindLight settings from " << path_name << LL_ENDL; | 129 | LL_DEBUGS2("AppInit", "ShaderLoading") << "Loading Default WindLight settings from " << path_name << LL_ENDL; |
127 | 130 | ||
128 | bool found = true; | 131 | bool found = true; |
129 | while(found) | 132 | while(found) |
130 | { | 133 | { |
131 | std::string name; | 134 | std::string name; |
132 | found = gDirUtilp->getNextFileInDir(path_name, "*.xml", name, false); | 135 | found = gDirUtilp->getNextFileInDir(path_name, "*.xml", name, false); |
@@ -150,9 +153,9 @@ void LLWLParamManager::loadPresets(const std::string& file_name) | |||
150 | 153 | ||
151 | std::string path_name2(gDirUtilp->getExpandedFilename( LL_PATH_USER_SETTINGS , "windlight/skies", "")); | 154 | std::string path_name2(gDirUtilp->getExpandedFilename( LL_PATH_USER_SETTINGS , "windlight/skies", "")); |
152 | LL_INFOS2("AppInit", "Shaders") << "Loading User WindLight settings from " << path_name2 << LL_ENDL; | 155 | LL_INFOS2("AppInit", "Shaders") << "Loading User WindLight settings from " << path_name2 << LL_ENDL; |
153 | 156 | ||
154 | found = true; | 157 | found = true; |
155 | while(found) | 158 | while(found) |
156 | { | 159 | { |
157 | std::string name; | 160 | std::string name; |
158 | found = gDirUtilp->getNextFileInDir(path_name2, "*.xml", name, false); | 161 | found = gDirUtilp->getNextFileInDir(path_name2, "*.xml", name, false); |
@@ -176,14 +179,14 @@ void LLWLParamManager::loadPresets(const std::string& file_name) | |||
176 | bool LLWLParamManager::loadPresetXML(const std::string& name, std::istream& preset_stream, bool propagate /* = false */, bool check_if_real /* = false */) | 179 | bool LLWLParamManager::loadPresetXML(const std::string& name, std::istream& preset_stream, bool propagate /* = false */, bool check_if_real /* = false */) |
177 | { | 180 | { |
178 | LLSD paramsData(LLSD::emptyMap()); | 181 | LLSD paramsData(LLSD::emptyMap()); |
179 | 182 | ||
180 | LLPointer<LLSDParser> parser = new LLSDXMLParser(); | 183 | LLPointer<LLSDParser> parser = new LLSDXMLParser(); |
181 | 184 | ||
182 | if(parser->parse(preset_stream, paramsData, LLSDSerialize::SIZE_UNLIMITED) == LLSDParser::PARSE_FAILURE) | 185 | if(parser->parse(preset_stream, paramsData, LLSDSerialize::SIZE_UNLIMITED) == LLSDParser::PARSE_FAILURE) |
183 | { | 186 | { |
184 | return false; | 187 | return false; |
185 | } | 188 | } |
186 | 189 | ||
187 | if(check_if_real) | 190 | if(check_if_real) |
188 | { | 191 | { |
189 | static const char* expected_windlight_settings[] = { | 192 | static const char* expected_windlight_settings[] = { |
@@ -220,13 +223,13 @@ bool LLWLParamManager::loadPresetXML(const std::string& name, std::istream& pres | |||
220 | } | 223 | } |
221 | } | 224 | } |
222 | } | 225 | } |
223 | 226 | ||
224 | std::map<std::string, LLWLParamSet>::iterator mIt = mParamList.find(name); | 227 | std::map<std::string, LLWLParamSet>::iterator mIt = mParamList.find(name); |
225 | if(mIt == mParamList.end()) | 228 | if(mIt == mParamList.end()) |
226 | { | 229 | { |
227 | addParamSet(name, paramsData); | 230 | addParamSet(name, paramsData); |
228 | } | 231 | } |
229 | else | 232 | else |
230 | { | 233 | { |
231 | setParamSet(name, paramsData); | 234 | setParamSet(name, paramsData); |
232 | } | 235 | } |
@@ -258,12 +261,12 @@ void LLWLParamManager::savePresets(const std::string & fileName) | |||
258 | //and not over the RO system wide version. | 261 | //and not over the RO system wide version. |
259 | 262 | ||
260 | LLSD paramsData(LLSD::emptyMap()); | 263 | LLSD paramsData(LLSD::emptyMap()); |
261 | 264 | ||
262 | std::string pathName(gDirUtilp->getExpandedFilename( LL_PATH_USER_SETTINGS , "windlight", fileName)); | 265 | std::string pathName(gDirUtilp->getExpandedFilename( LL_PATH_USER_SETTINGS , "windlight", fileName)); |
263 | 266 | ||
264 | for(std::map<std::string, LLWLParamSet>::iterator mIt = mParamList.begin(); | 267 | for(std::map<std::string, LLWLParamSet>::iterator mIt = mParamList.begin(); |
265 | mIt != mParamList.end(); | 268 | mIt != mParamList.end(); |
266 | ++mIt) | 269 | ++mIt) |
267 | { | 270 | { |
268 | paramsData[mIt->first] = mIt->second.getAll(); | 271 | paramsData[mIt->first] = mIt->second.getAll(); |
269 | } | 272 | } |
@@ -295,7 +298,7 @@ bool LLWLParamManager::savePresetToNotecard(const std::string & name) | |||
295 | // Write it to a notecard | 298 | // Write it to a notecard |
296 | LLNotecard notecard; | 299 | LLNotecard notecard; |
297 | notecard.setText(presetsXML.str()); | 300 | notecard.setText(presetsXML.str()); |
298 | 301 | ||
299 | LLInventoryItem *item = gInventory.getItem(mParamList[name].mInventoryID); | 302 | LLInventoryItem *item = gInventory.getItem(mParamList[name].mInventoryID); |
300 | if(!item) | 303 | if(!item) |
301 | { | 304 | { |
@@ -309,13 +312,13 @@ bool LLWLParamManager::savePresetToNotecard(const std::string & name) | |||
309 | LLAssetID asset_id; | 312 | LLAssetID asset_id; |
310 | tid.generate(); | 313 | tid.generate(); |
311 | asset_id = tid.makeAssetID(gAgent.getSecureSessionID()); | 314 | asset_id = tid.makeAssetID(gAgent.getSecureSessionID()); |
312 | 315 | ||
313 | LLVFile file(gVFS, asset_id, LLAssetType::AT_NOTECARD, LLVFile::APPEND); | 316 | LLVFile file(gVFS, asset_id, LLAssetType::AT_NOTECARD, LLVFile::APPEND); |
314 | 317 | ||
315 | std::ostringstream stream; | 318 | std::ostringstream stream; |
316 | notecard.exportStream(stream); | 319 | notecard.exportStream(stream); |
317 | std::string buffer = stream.str(); | 320 | std::string buffer = stream.str(); |
318 | 321 | ||
319 | S32 size = buffer.length() + 1; | 322 | S32 size = buffer.length() + 1; |
320 | file.setMaxSize(size); | 323 | file.setMaxSize(size); |
321 | file.write((U8*)buffer.c_str(), size); | 324 | file.write((U8*)buffer.c_str(), size); |
@@ -328,7 +331,7 @@ bool LLWLParamManager::savePresetToNotecard(const std::string & name) | |||
328 | LL_WARNS("WindLight") << "Stuff the legacy system." << LL_ENDL; | 331 | LL_WARNS("WindLight") << "Stuff the legacy system." << LL_ENDL; |
329 | return false; | 332 | return false; |
330 | } | 333 | } |
331 | 334 | ||
332 | propagateParameters(); | 335 | propagateParameters(); |
333 | return true; | 336 | return true; |
334 | } | 337 | } |
@@ -341,7 +344,7 @@ void LLWLParamManager::loadPreset(const std::string & name,bool propagate) | |||
341 | if(propagate) | 344 | if(propagate) |
342 | { | 345 | { |
343 | getParamSet(name, mCurParams); | 346 | getParamSet(name, mCurParams); |
344 | propagateParameters(); | 347 | LightShare::apply(NULL, NULL, &mCurParams, WL_SCOPE_USER); |
345 | } | 348 | } |
346 | return; | 349 | return; |
347 | } | 350 | } |
@@ -355,7 +358,7 @@ void LLWLParamManager::loadPreset(const std::string & name,bool propagate) | |||
355 | escaped_filename += ".xml"; | 358 | escaped_filename += ".xml"; |
356 | 359 | ||
357 | std::string pathName(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "windlight/skies", escaped_filename)); | 360 | std::string pathName(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "windlight/skies", escaped_filename)); |
358 | LL_DEBUGS2("AppInit", "Shaders") << "Loading WindLight sky setting from " << pathName << LL_ENDL; | 361 | LL_DEBUGS2("AppInit", "Shaders") << "Loading WindLight sky setting from " << pathName << LL_ENDL; |
359 | 362 | ||
360 | llifstream presetsXML; | 363 | llifstream presetsXML; |
361 | presetsXML.open(pathName.c_str()); | 364 | presetsXML.open(pathName.c_str()); |
@@ -364,7 +367,7 @@ void LLWLParamManager::loadPreset(const std::string & name,bool propagate) | |||
364 | if(!presetsXML) | 367 | if(!presetsXML) |
365 | { | 368 | { |
366 | pathName=gDirUtilp->getExpandedFilename( LL_PATH_USER_SETTINGS , "windlight/skies", escaped_filename); | 369 | pathName=gDirUtilp->getExpandedFilename( LL_PATH_USER_SETTINGS , "windlight/skies", escaped_filename); |
367 | LL_DEBUGS2("AppInit", "Shaders")<< "Loading User WindLight sky setting from " << LL_ENDL; | 370 | LL_DEBUGS2("AppInit", "Shaders")<< "Loading User WindLight sky setting from " << LL_ENDL; |
368 | presetsXML.open(pathName.c_str()); | 371 | presetsXML.open(pathName.c_str()); |
369 | } | 372 | } |
370 | 373 | ||
@@ -372,22 +375,22 @@ void LLWLParamManager::loadPreset(const std::string & name,bool propagate) | |||
372 | { | 375 | { |
373 | loadPresetXML(name, presetsXML); | 376 | loadPresetXML(name, presetsXML); |
374 | presetsXML.close(); | 377 | presetsXML.close(); |
375 | } | 378 | } |
376 | else | 379 | else |
377 | { | 380 | { |
378 | llwarns << "Can't find " << name << llendl; | 381 | llwarns << "Can't find " << name << llendl; |
379 | return; | 382 | return; |
380 | } | 383 | } |
381 | 384 | ||
382 | 385 | ||
383 | if(propagate) | 386 | if(propagate) |
384 | { | 387 | { |
385 | getParamSet(name, mCurParams); | 388 | getParamSet(name, mCurParams); |
386 | propagateParameters(); | 389 | LightShare::apply(NULL, NULL, &mCurParams, WL_SCOPE_USER); |
387 | } | 390 | } |
388 | 391 | ||
389 | notifyObservers(); | 392 | notifyObservers(); |
390 | } | 393 | } |
391 | 394 | ||
392 | void LLWLParamManager::savePreset(const std::string & name) | 395 | void LLWLParamManager::savePreset(const std::string & name) |
393 | { | 396 | { |
@@ -427,7 +430,7 @@ void LLWLParamManager::updateShaderUniforms(LLGLSLShader * shader) | |||
427 | { | 430 | { |
428 | shader->uniform4fv(LLViewerShaderMgr::LIGHTNORM, 1, mRotatedLightDir.mV); | 431 | shader->uniform4fv(LLViewerShaderMgr::LIGHTNORM, 1, mRotatedLightDir.mV); |
429 | shader->uniform3fv("camPosLocal", 1, LLViewerCamera::getInstance()->getOrigin().mV); | 432 | shader->uniform3fv("camPosLocal", 1, LLViewerCamera::getInstance()->getOrigin().mV); |
430 | } | 433 | } |
431 | 434 | ||
432 | else if (shader->mShaderGroup == LLGLSLShader::SG_SKY) | 435 | else if (shader->mShaderGroup == LLGLSLShader::SG_SKY) |
433 | { | 436 | { |
@@ -435,13 +438,13 @@ void LLWLParamManager::updateShaderUniforms(LLGLSLShader * shader) | |||
435 | } | 438 | } |
436 | 439 | ||
437 | shader->uniform1f("scene_light_strength", mSceneLightStrength); | 440 | shader->uniform1f("scene_light_strength", mSceneLightStrength); |
438 | 441 | ||
439 | } | 442 | } |
440 | 443 | ||
441 | void LLWLParamManager::propagateParameters(void) | 444 | void LLWLParamManager::propagateParameters(void) |
442 | { | 445 | { |
443 | LLFastTimer ftm(LLFastTimer::FTM_UPDATE_WLPARAM); | 446 | LLFastTimer ftm(LLFastTimer::FTM_UPDATE_WLPARAM); |
444 | 447 | ||
445 | LLVector4 sunDir; | 448 | LLVector4 sunDir; |
446 | LLVector4 moonDir; | 449 | LLVector4 moonDir; |
447 | 450 | ||
@@ -491,7 +494,7 @@ void LLWLParamManager::propagateParameters(void) | |||
491 | // bind the variables for all shaders only if we're using WindLight | 494 | // bind the variables for all shaders only if we're using WindLight |
492 | LLViewerShaderMgr::shader_iter shaders_iter, end_shaders; | 495 | LLViewerShaderMgr::shader_iter shaders_iter, end_shaders; |
493 | end_shaders = LLViewerShaderMgr::instance()->endShaders(); | 496 | end_shaders = LLViewerShaderMgr::instance()->endShaders(); |
494 | for(shaders_iter = LLViewerShaderMgr::instance()->beginShaders(); shaders_iter != end_shaders; ++shaders_iter) | 497 | for(shaders_iter = LLViewerShaderMgr::instance()->beginShaders(); shaders_iter != end_shaders; ++shaders_iter) |
495 | { | 498 | { |
496 | if (shaders_iter->mProgramObject != 0 | 499 | if (shaders_iter->mProgramObject != 0 |
497 | && (gPipeline.canUseWindLightShaders() | 500 | && (gPipeline.canUseWindLightShaders() |
@@ -512,29 +515,29 @@ void LLWLParamManager::propagateParameters(void) | |||
512 | void LLWLParamManager::update(LLViewerCamera * cam) | 515 | void LLWLParamManager::update(LLViewerCamera * cam) |
513 | { | 516 | { |
514 | LLFastTimer ftm(LLFastTimer::FTM_UPDATE_WLPARAM); | 517 | LLFastTimer ftm(LLFastTimer::FTM_UPDATE_WLPARAM); |
515 | 518 | ||
516 | // update clouds, sun, and general | 519 | // update clouds, sun, and general |
517 | mCurParams.updateCloudScrolling(); | 520 | mCurParams.updateCloudScrolling(); |
518 | 521 | ||
519 | // update only if running | 522 | // update only if running |
520 | if(mAnimator.mIsRunning) | 523 | if(mAnimator.mIsRunning) |
521 | { | 524 | { |
522 | mAnimator.update(mCurParams); | 525 | mAnimator.update(mCurParams); |
523 | } | 526 | } |
524 | 527 | ||
525 | // update the shaders and the menu | 528 | // update the shaders and the menu |
526 | propagateParameters(); | 529 | propagateParameters(); |
527 | 530 | ||
528 | // sync menus if they exist | 531 | // sync menus if they exist |
529 | if(LLFloaterWindLight::isOpen()) | 532 | if(LLFloaterWindLight::isOpen()) |
530 | { | 533 | { |
531 | LLFloaterWindLight::instance()->syncMenu(); | 534 | LLFloaterWindLight::instance()->syncMenu(); |
532 | } | 535 | } |
533 | if(LLFloaterDayCycle::isOpen()) | 536 | if(LLFloaterDayCycle::isOpen()) |
534 | { | 537 | { |
535 | LLFloaterDayCycle::instance()->syncMenu(); | 538 | LLFloaterDayCycle::instance()->syncMenu(); |
536 | } | 539 | } |
537 | if(LLFloaterEnvSettings::isOpen()) | 540 | if(LLFloaterEnvSettings::isOpen()) |
538 | { | 541 | { |
539 | LLFloaterEnvSettings::instance()->syncMenu(); | 542 | LLFloaterEnvSettings::instance()->syncMenu(); |
540 | } | 543 | } |
@@ -547,8 +550,8 @@ void LLWLParamManager::update(LLViewerCamera * cam) | |||
547 | // executed some of the time. For example for water shaders only. | 550 | // executed some of the time. For example for water shaders only. |
548 | { | 551 | { |
549 | F32 camYawDelta = mSunDeltaYaw * DEG_TO_RAD; | 552 | F32 camYawDelta = mSunDeltaYaw * DEG_TO_RAD; |
550 | 553 | ||
551 | LLVector3 lightNorm3(mLightDir); | 554 | LLVector3 lightNorm3(mLightDir); |
552 | lightNorm3 *= LLQuaternion(-(camYaw + camYawDelta), LLVector3(0.f, 1.f, 0.f)); | 555 | lightNorm3 *= LLQuaternion(-(camYaw + camYawDelta), LLVector3(0.f, 1.f, 0.f)); |
553 | mRotatedLightDir = LLVector4(lightNorm3, 0.f); | 556 | mRotatedLightDir = LLVector4(lightNorm3, 0.f); |
554 | 557 | ||
@@ -621,7 +624,7 @@ void LLWLParamManager::cleanupClass() | |||
621 | 624 | ||
622 | void LLWLParamManager::resetAnimator(F32 curTime, bool run) | 625 | void LLWLParamManager::resetAnimator(F32 curTime, bool run) |
623 | { | 626 | { |
624 | mAnimator.setTrack(mDay.mTimeMap, mDay.mDayRate, | 627 | mAnimator.setTrack(mDay.mTimeMap, mDay.mDayRate, |
625 | curTime, run); | 628 | curTime, run); |
626 | 629 | ||
627 | return; | 630 | return; |
@@ -630,8 +633,8 @@ bool LLWLParamManager::addParamSet(const std::string& name, LLWLParamSet& param) | |||
630 | { | 633 | { |
631 | // add a new one if not one there already | 634 | // add a new one if not one there already |
632 | std::map<std::string, LLWLParamSet>::iterator mIt = mParamList.find(name); | 635 | std::map<std::string, LLWLParamSet>::iterator mIt = mParamList.find(name); |
633 | if(mIt == mParamList.end()) | 636 | if(mIt == mParamList.end()) |
634 | { | 637 | { |
635 | mParamList[name] = param; | 638 | mParamList[name] = param; |
636 | return true; | 639 | return true; |
637 | } | 640 | } |
@@ -658,7 +661,7 @@ bool LLWLParamManager::getParamSet(const std::string& name, LLWLParamSet& param) | |||
658 | { | 661 | { |
659 | // find it and set it | 662 | // find it and set it |
660 | std::map<std::string, LLWLParamSet>::iterator mIt = mParamList.find(name); | 663 | std::map<std::string, LLWLParamSet>::iterator mIt = mParamList.find(name); |
661 | if(mIt != mParamList.end()) | 664 | if(mIt != mParamList.end()) |
662 | { | 665 | { |
663 | param = mParamList[name]; | 666 | param = mParamList[name]; |
664 | param.mName = name; | 667 | param.mName = name; |
@@ -678,11 +681,11 @@ bool LLWLParamManager::setParamSet(const std::string& name, LLWLParamSet& param) | |||
678 | bool LLWLParamManager::setParamSet(const std::string& name, const LLSD & param) | 681 | bool LLWLParamManager::setParamSet(const std::string& name, const LLSD & param) |
679 | { | 682 | { |
680 | // quick, non robust (we won't be working with files, but assets) check | 683 | // quick, non robust (we won't be working with files, but assets) check |
681 | if(!param.isMap()) | 684 | if(!param.isMap()) |
682 | { | 685 | { |
683 | return false; | 686 | return false; |
684 | } | 687 | } |
685 | 688 | ||
686 | mParamList[name].setAll(param); | 689 | mParamList[name].setAll(param); |
687 | 690 | ||
688 | return true; | 691 | return true; |
@@ -692,7 +695,7 @@ bool LLWLParamManager::removeParamSet(const std::string& name, bool delete_from_ | |||
692 | { | 695 | { |
693 | // remove from param list | 696 | // remove from param list |
694 | std::map<std::string, LLWLParamSet>::iterator mIt = mParamList.find(name); | 697 | std::map<std::string, LLWLParamSet>::iterator mIt = mParamList.find(name); |
695 | if(mIt != mParamList.end()) | 698 | if(mIt != mParamList.end()) |
696 | { | 699 | { |
697 | mParamList.erase(mIt); | 700 | mParamList.erase(mIt); |
698 | } | 701 | } |
@@ -701,11 +704,11 @@ bool LLWLParamManager::removeParamSet(const std::string& name, bool delete_from_ | |||
701 | 704 | ||
702 | // remove all references | 705 | // remove all references |
703 | bool stat = true; | 706 | bool stat = true; |
704 | do | 707 | do |
705 | { | 708 | { |
706 | // get it | 709 | // get it |
707 | stat = mDay.getKey(name, key); | 710 | stat = mDay.getKey(name, key); |
708 | if(stat == false) | 711 | if(stat == false) |
709 | { | 712 | { |
710 | break; | 713 | break; |
711 | } | 714 | } |
@@ -714,17 +717,17 @@ bool LLWLParamManager::removeParamSet(const std::string& name, bool delete_from_ | |||
714 | stat = mDay.removeKey(key); | 717 | stat = mDay.removeKey(key); |
715 | 718 | ||
716 | } while(stat == true); | 719 | } while(stat == true); |
717 | 720 | ||
718 | if(delete_from_disk) | 721 | if(delete_from_disk) |
719 | { | 722 | { |
720 | std::string path_name(gDirUtilp->getExpandedFilename( LL_PATH_USER_SETTINGS , "windlight/skies", "")); | 723 | std::string path_name(gDirUtilp->getExpandedFilename( LL_PATH_USER_SETTINGS , "windlight/skies", "")); |
721 | 724 | ||
722 | // use full curl escaped name | 725 | // use full curl escaped name |
723 | char * curl_str = curl_escape(name.c_str(), name.size()); | 726 | char * curl_str = curl_escape(name.c_str(), name.size()); |
724 | std::string escaped_name(curl_str); | 727 | std::string escaped_name(curl_str); |
725 | curl_free(curl_str); | 728 | curl_free(curl_str); |
726 | curl_str = NULL; | 729 | curl_str = NULL; |
727 | 730 | ||
728 | gDirUtilp->deleteFilesInDir(path_name, escaped_name + ".xml"); | 731 | gDirUtilp->deleteFilesInDir(path_name, escaped_name + ".xml"); |
729 | } | 732 | } |
730 | 733 | ||
@@ -797,7 +800,7 @@ void LLWLParamManager::loadWindlightNotecard(LLVFS *vfs, const LLUUID& asset_id, | |||
797 | } | 800 | } |
798 | else | 801 | else |
799 | { | 802 | { |
800 | // We can do this because we know mCurParams | 803 | // We can do this because we know mCurParams |
801 | sInstance->mParamList[name].mInventoryID = inventory_id; | 804 | sInstance->mParamList[name].mInventoryID = inventory_id; |
802 | } | 805 | } |
803 | } | 806 | } |
@@ -836,3 +839,21 @@ void LLWLParamManager::notifyObservers() | |||
836 | observer->changed(); | 839 | observer->changed(); |
837 | } | 840 | } |
838 | } | 841 | } |
842 | |||
843 | // static | ||
844 | bool LLWLParamManager::isWaterSettingsNotecard(std::string name) | ||
845 | { | ||
846 | return (name.length() > 2 && name.compare(name.length() - 3, 3, ".ww") == 0); | ||
847 | } | ||
848 | |||
849 | // static | ||
850 | bool LLWLParamManager::isSkySettingsNotecard(std::string name) | ||
851 | { | ||
852 | return (name.length() > 2 && name.compare(name.length() - 3, 3, ".wl") == 0); | ||
853 | } | ||
854 | |||
855 | // static | ||
856 | bool LLWLParamManager::isSettingsNotecard(std::string name) | ||
857 | { | ||
858 | return (isSkySettingsNotecard(name) || isWaterSettingsNotecard(name)); | ||
859 | } | ||
diff --git a/linden/indra/newview/llwlparammanager.h b/linden/indra/newview/llwlparammanager.h index fc1127e..034b2e6 100644 --- a/linden/indra/newview/llwlparammanager.h +++ b/linden/indra/newview/llwlparammanager.h | |||
@@ -3,9 +3,9 @@ | |||
3 | * @brief Implementation for the LLWLParamManager class. | 3 | * @brief Implementation for the LLWLParamManager class. |
4 | * | 4 | * |
5 | * $LicenseInfo:firstyear=2007&license=viewergpl$ | 5 | * $LicenseInfo:firstyear=2007&license=viewergpl$ |
6 | * | 6 | * |
7 | * Copyright (c) 2007-2009, Linden Research, Inc. | 7 | * Copyright (c) 2007-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 |
@@ -13,17 +13,17 @@ | |||
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. |
@@ -36,6 +36,7 @@ | |||
36 | #include <vector> | 36 | #include <vector> |
37 | #include <map> | 37 | #include <map> |
38 | #include "llwlparamset.h" | 38 | #include "llwlparamset.h" |
39 | #include "llwaterparamset.h" | ||
39 | #include "llwlanimator.h" | 40 | #include "llwlanimator.h" |
40 | #include "llwldaycycle.h" | 41 | #include "llwldaycycle.h" |
41 | #include "llviewercamera.h" | 42 | #include "llviewercamera.h" |
@@ -51,10 +52,10 @@ public: | |||
51 | virtual ~LLWLPresetsObserver() { }; | 52 | virtual ~LLWLPresetsObserver() { }; |
52 | virtual void changed() = 0; | 53 | virtual void changed() = 0; |
53 | }; | 54 | }; |
54 | 55 | ||
55 | // color control | 56 | // color control |
56 | struct WLColorControl { | 57 | struct WLColorControl { |
57 | 58 | ||
58 | F32 r, g, b, i; /// the values | 59 | F32 r, g, b, i; /// the values |
59 | std::string mName; /// name to use to dereference params | 60 | std::string mName; /// name to use to dereference params |
60 | std::string mSliderName; /// name of the slider in menu | 61 | std::string mSliderName; /// name of the slider in menu |
@@ -88,7 +89,7 @@ struct WLColorControl { | |||
88 | r = val.mV[0]; | 89 | r = val.mV[0]; |
89 | g = val.mV[1]; | 90 | g = val.mV[1]; |
90 | b = val.mV[2]; | 91 | b = val.mV[2]; |
91 | i = val.mV[3]; | 92 | i = val.mV[3]; |
92 | return *this; | 93 | return *this; |
93 | } | 94 | } |
94 | 95 | ||
@@ -131,6 +132,7 @@ struct WLFloatControl { | |||
131 | } | 132 | } |
132 | }; | 133 | }; |
133 | 134 | ||
135 | |||
134 | /// WindLight parameter manager class - what controls all the wind light shaders | 136 | /// WindLight parameter manager class - what controls all the wind light shaders |
135 | class LLWLParamManager | 137 | class LLWLParamManager |
136 | { | 138 | { |
@@ -151,19 +153,19 @@ public: | |||
151 | /// load an individual preset into the sky from an LLSD stream | 153 | /// load an individual preset into the sky from an LLSD stream |
152 | /// Returns whether the stream was actually reasonable XML to load from. | 154 | /// Returns whether the stream was actually reasonable XML to load from. |
153 | bool loadPresetXML(const std::string& name, std::istream& preset_stream, bool propogate=false, bool check_if_real=false); | 155 | bool loadPresetXML(const std::string& name, std::istream& preset_stream, bool propogate=false, bool check_if_real=false); |
154 | 156 | ||
155 | /// Load an individual preset from a notecard. | 157 | /// Load an individual preset from a notecard. |
156 | void loadPresetNotecard(const std::string& name, const LLUUID& asset_id, const LLUUID& inv_id); | 158 | void loadPresetNotecard(const std::string& name, const LLUUID& asset_id, const LLUUID& inv_id); |
157 | 159 | ||
158 | /// save the parameter presets to file | 160 | /// save the parameter presets to file |
159 | void savePreset(const std::string & name); | 161 | void savePreset(const std::string & name); |
160 | 162 | ||
161 | /// save the parameter presets to file | 163 | /// save the parameter presets to file |
162 | bool savePresetToNotecard(const std::string & name); | 164 | bool savePresetToNotecard(const std::string & name); |
163 | 165 | ||
164 | /// Set shader uniforms dirty, so they'll update automatically. | 166 | /// Set shader uniforms dirty, so they'll update automatically. |
165 | void propagateParameters(void); | 167 | void propagateParameters(void); |
166 | 168 | ||
167 | /// Update shader uniforms that have changed. | 169 | /// Update shader uniforms that have changed. |
168 | void updateShaderUniforms(LLGLSLShader * shader); | 170 | void updateShaderUniforms(LLGLSLShader * shader); |
169 | 171 | ||
@@ -181,7 +183,7 @@ public: | |||
181 | 183 | ||
182 | // get where the light is pointing | 184 | // get where the light is pointing |
183 | inline LLVector4 getRotatedLightDir(void) const; | 185 | inline LLVector4 getRotatedLightDir(void) const; |
184 | 186 | ||
185 | /// get the dome's offset | 187 | /// get the dome's offset |
186 | inline F32 getDomeOffset(void) const; | 188 | inline F32 getDomeOffset(void) const; |
187 | 189 | ||
@@ -193,7 +195,7 @@ public: | |||
193 | 195 | ||
194 | // Cleanup of global data that's only inited once per class. | 196 | // Cleanup of global data that's only inited once per class. |
195 | static void cleanupClass(); | 197 | static void cleanupClass(); |
196 | 198 | ||
197 | /// add a param to the list | 199 | /// add a param to the list |
198 | bool addParamSet(const std::string& name, LLWLParamSet& param); | 200 | bool addParamSet(const std::string& name, LLWLParamSet& param); |
199 | 201 | ||
@@ -205,9 +207,9 @@ public: | |||
205 | 207 | ||
206 | /// set the param in the list with a new param | 208 | /// set the param in the list with a new param |
207 | bool setParamSet(const std::string& name, LLWLParamSet& param); | 209 | bool setParamSet(const std::string& name, LLWLParamSet& param); |
208 | 210 | ||
209 | /// set the param in the list with a new param | 211 | /// set the param in the list with a new param |
210 | bool setParamSet(const std::string& name, LLSD const & param); | 212 | bool setParamSet(const std::string& name, LLSD const & param); |
211 | 213 | ||
212 | /// gets rid of a parameter and any references to it | 214 | /// gets rid of a parameter and any references to it |
213 | /// returns true if successful | 215 | /// returns true if successful |
@@ -223,6 +225,11 @@ public: | |||
223 | 225 | ||
224 | void SetMixTime(LLWLParamSet* mixSet, F32 mixTime); | 226 | void SetMixTime(LLWLParamSet* mixSet, F32 mixTime); |
225 | 227 | ||
228 | // Notecard settings checkers. | ||
229 | static bool isWaterSettingsNotecard(std::string name); | ||
230 | static bool isSkySettingsNotecard(std::string name); | ||
231 | static bool isSettingsNotecard(std::string name); | ||
232 | |||
226 | public: | 233 | public: |
227 | 234 | ||
228 | // helper variables | 235 | // helper variables |
@@ -249,7 +256,7 @@ public: | |||
249 | WLFloatControl mWLGamma; | 256 | WLFloatControl mWLGamma; |
250 | 257 | ||
251 | F32 mSceneLightStrength; | 258 | F32 mSceneLightStrength; |
252 | 259 | ||
253 | /// Atmospherics | 260 | /// Atmospherics |
254 | WLColorControl mBlueHorizon; | 261 | WLColorControl mBlueHorizon; |
255 | WLColorControl mHazeDensity; | 262 | WLColorControl mHazeDensity; |
@@ -275,10 +282,10 @@ public: | |||
275 | /// sky dome | 282 | /// sky dome |
276 | F32 mDomeOffset; | 283 | F32 mDomeOffset; |
277 | F32 mDomeRadius; | 284 | F32 mDomeRadius; |
278 | 285 | ||
279 | // list of all the parameters, listed by name | 286 | // list of all the parameters, listed by name |
280 | std::map<std::string, LLWLParamSet> mParamList; | 287 | std::map<std::string, LLWLParamSet> mParamList; |
281 | 288 | ||
282 | private: | 289 | private: |
283 | // our parameter manager singleton instance | 290 | // our parameter manager singleton instance |
284 | static LLWLParamManager * sInstance; | 291 | static LLWLParamManager * sInstance; |
@@ -287,11 +294,10 @@ private: | |||
287 | LLWLParamSet* sMixSet; | 294 | LLWLParamSet* sMixSet; |
288 | F32 sMixTime; | 295 | F32 sMixTime; |
289 | F32 sMixCount; | 296 | F32 sMixCount; |
290 | 297 | ||
291 | static std::vector<LLWLPresetsObserver*> sObservers; | 298 | static std::vector<LLWLPresetsObserver*> sObservers; |
292 | 299 | ||
293 | static void loadWindlightNotecard(LLVFS *vfs, const LLUUID& asset_id, LLAssetType::EType asset_type, void *user_data, S32 status, LLExtStat ext_status); | 300 | static void loadWindlightNotecard(LLVFS *vfs, const LLUUID& asset_id, LLAssetType::EType asset_type, void *user_data, S32 status, LLExtStat ext_status); |
294 | |||
295 | }; | 301 | }; |
296 | 302 | ||
297 | inline F32 LLWLParamManager::getDomeOffset(void) const | 303 | inline F32 LLWLParamManager::getDomeOffset(void) const |
diff --git a/linden/indra/newview/llwlparamset.h b/linden/indra/newview/llwlparamset.h index 038490d..ce01f84 100644 --- a/linden/indra/newview/llwlparamset.h +++ b/linden/indra/newview/llwlparamset.h | |||
@@ -3,9 +3,9 @@ | |||
3 | * @brief Interface for the LLWLParamSet class. | 3 | * @brief Interface for the LLWLParamSet class. |
4 | * | 4 | * |
5 | * $LicenseInfo:firstyear=2005&license=viewergpl$ | 5 | * $LicenseInfo:firstyear=2005&license=viewergpl$ |
6 | * | 6 | * |
7 | * Copyright (c) 2005-2009, Linden Research, Inc. | 7 | * Copyright (c) 2005-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 |
@@ -13,17 +13,17 @@ | |||
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. |
@@ -46,16 +46,16 @@ class LLWLParamSet; | |||
46 | /// A class representing a set of parameter values for the WindLight shaders. | 46 | /// A class representing a set of parameter values for the WindLight shaders. |
47 | class LLWLParamSet { | 47 | class LLWLParamSet { |
48 | 48 | ||
49 | friend class LLWLParamManager; | 49 | friend class LightShare; |
50 | 50 | ||
51 | public: | 51 | public: |
52 | std::string mName; | 52 | std::string mName; |
53 | LLUUID mInventoryID; | 53 | LLUUID mInventoryID; |
54 | 54 | ||
55 | private: | 55 | protected: |
56 | 56 | ||
57 | LLSD mParamValues; | 57 | LLSD mParamValues; |
58 | 58 | ||
59 | float mCloudScrollXOffset, mCloudScrollYOffset; | 59 | float mCloudScrollXOffset, mCloudScrollYOffset; |
60 | 60 | ||
61 | public: | 61 | public: |
@@ -67,10 +67,10 @@ public: | |||
67 | 67 | ||
68 | /// set the total llsd | 68 | /// set the total llsd |
69 | void setAll(const LLSD& val); | 69 | void setAll(const LLSD& val); |
70 | 70 | ||
71 | /// get the total llsd | 71 | /// get the total llsd |
72 | const LLSD& getAll(); | 72 | const LLSD& getAll(); |
73 | 73 | ||
74 | 74 | ||
75 | /// Set a float parameter. | 75 | /// Set a float parameter. |
76 | /// \param paramName The name of the parameter to set. | 76 | /// \param paramName The name of the parameter to set. |
@@ -120,61 +120,61 @@ public: | |||
120 | 120 | ||
121 | /// Get an integer parameter | 121 | /// Get an integer parameter |
122 | /// \param paramName The name of the parameter to set. | 122 | /// \param paramName The name of the parameter to set. |
123 | /// \param error A flag to set if it's not the proper return type | 123 | /// \param error A flag to set if it's not the proper return type |
124 | F32 getFloat(const std::string& paramName, bool& error); | 124 | F32 getFloat(const std::string& paramName, bool& error); |
125 | 125 | ||
126 | 126 | ||
127 | // specific getters and setters | 127 | // specific getters and setters |
128 | 128 | ||
129 | 129 | ||
130 | /// set the star's brightness | 130 | /// set the star's brightness |
131 | /// \param val brightness value | 131 | /// \param val brightness value |
132 | void setStarBrightness(F32 val); | 132 | void setStarBrightness(F32 val); |
133 | 133 | ||
134 | /// get the star brightness value; | 134 | /// get the star brightness value; |
135 | F32 getStarBrightness(); | 135 | F32 getStarBrightness(); |
136 | 136 | ||
137 | void setSunAngle(F32 val); | 137 | void setSunAngle(F32 val); |
138 | F32 getSunAngle(); | 138 | F32 getSunAngle(); |
139 | 139 | ||
140 | void setEastAngle(F32 val); | 140 | void setEastAngle(F32 val); |
141 | F32 getEastAngle(); | 141 | F32 getEastAngle(); |
142 | 142 | ||
143 | 143 | ||
144 | 144 | ||
145 | /// set the cloud scroll x enable value | 145 | /// set the cloud scroll x enable value |
146 | /// \param val scroll x value | 146 | /// \param val scroll x value |
147 | void setEnableCloudScrollX(bool val); | 147 | void setEnableCloudScrollX(bool val); |
148 | 148 | ||
149 | /// get the scroll x enable value; | 149 | /// get the scroll x enable value; |
150 | bool getEnableCloudScrollX(); | 150 | bool getEnableCloudScrollX(); |
151 | 151 | ||
152 | /// set the star's brightness | 152 | /// set the star's brightness |
153 | /// \param val scroll y bool value | 153 | /// \param val scroll y bool value |
154 | void setEnableCloudScrollY(bool val); | 154 | void setEnableCloudScrollY(bool val); |
155 | 155 | ||
156 | /// get the scroll enable y value; | 156 | /// get the scroll enable y value; |
157 | bool getEnableCloudScrollY(); | 157 | bool getEnableCloudScrollY(); |
158 | 158 | ||
159 | /// set the cloud scroll x enable value | 159 | /// set the cloud scroll x enable value |
160 | /// \param val scroll x value | 160 | /// \param val scroll x value |
161 | void setCloudScrollX(F32 val); | 161 | void setCloudScrollX(F32 val); |
162 | 162 | ||
163 | /// get the scroll x enable value; | 163 | /// get the scroll x enable value; |
164 | F32 getCloudScrollX(); | 164 | F32 getCloudScrollX(); |
165 | 165 | ||
166 | /// set the star's brightness | 166 | /// set the star's brightness |
167 | /// \param val scroll y bool value | 167 | /// \param val scroll y bool value |
168 | void setCloudScrollY(F32 val); | 168 | void setCloudScrollY(F32 val); |
169 | 169 | ||
170 | /// get the scroll enable y value; | 170 | /// get the scroll enable y value; |
171 | F32 getCloudScrollY(); | 171 | F32 getCloudScrollY(); |
172 | 172 | ||
173 | /// interpolate two parameter sets | 173 | /// interpolate two parameter sets |
174 | /// \param src The parameter set to start with | 174 | /// \param src The parameter set to start with |
175 | /// \param dest The parameter set to end with | 175 | /// \param dest The parameter set to end with |
176 | /// \param weight The amount to interpolate | 176 | /// \param weight The amount to interpolate |
177 | void mix(LLWLParamSet& src, LLWLParamSet& dest, | 177 | void mix(LLWLParamSet& src, LLWLParamSet& dest, |
178 | F32 weight); | 178 | F32 weight); |
179 | 179 | ||
180 | void updateCloudScrolling(void); | 180 | void updateCloudScrolling(void); |
diff --git a/linden/indra/newview/llworldmapview.cpp b/linden/indra/newview/llworldmapview.cpp index d7a6838..b2cab52 100644 --- a/linden/indra/newview/llworldmapview.cpp +++ b/linden/indra/newview/llworldmapview.cpp | |||
@@ -1192,8 +1192,6 @@ void LLWorldMapView::drawTracking(const LLVector3d& pos_global, const LLColor4& | |||
1192 | S32 text_x = x; | 1192 | S32 text_x = x; |
1193 | S32 text_y = (S32)(y - sTrackCircleImage->getHeight()/2 - font->getLineHeight()); | 1193 | S32 text_y = (S32)(y - sTrackCircleImage->getHeight()/2 - font->getLineHeight()); |
1194 | 1194 | ||
1195 | BOOL is_in_window = true; | ||
1196 | |||
1197 | if( x < 0 | 1195 | if( x < 0 |
1198 | || y < 0 | 1196 | || y < 0 |
1199 | || x >= getRect().getWidth() | 1197 | || x >= getRect().getWidth() |
@@ -1206,7 +1204,6 @@ void LLWorldMapView::drawTracking(const LLVector3d& pos_global, const LLColor4& | |||
1206 | text_x = sTrackingArrowX; | 1204 | text_x = sTrackingArrowX; |
1207 | text_y = sTrackingArrowY; | 1205 | text_y = sTrackingArrowY; |
1208 | } | 1206 | } |
1209 | is_in_window = false; | ||
1210 | } | 1207 | } |
1211 | else if (LLTracker::getTrackingStatus() == LLTracker::TRACKING_LOCATION && | 1208 | else if (LLTracker::getTrackingStatus() == LLTracker::TRACKING_LOCATION && |
1212 | LLTracker::getTrackedLocationType() != LLTracker::LOCATION_NOTHING) | 1209 | LLTracker::getTrackedLocationType() != LLTracker::LOCATION_NOTHING) |
diff --git a/linden/indra/newview/packaging/mac/English.lproj/InfoPlist.strings b/linden/indra/newview/packaging/mac/English.lproj/InfoPlist.strings index 1ebe727..5b4a12e 100644 --- a/linden/indra/newview/packaging/mac/English.lproj/InfoPlist.strings +++ b/linden/indra/newview/packaging/mac/English.lproj/InfoPlist.strings | |||
@@ -1,5 +1,5 @@ | |||
1 | /* Localized versions of Info.plist keys */ | 1 | /* Localized versions of Info.plist keys */ |
2 | 2 | ||
3 | CFBundleName = "Imprudence"; | 3 | CFBundleName = "meta-impy"; |
4 | CFBundleShortVersionString = "Imprudence 1.4.0 beta 1"; | 4 | CFBundleShortVersionString = "meta-impy 1.4.0.3 exp 1"; |
5 | CFBundleGetInfoString = "Imprudence 1.4.0 beta 1"; | 5 | CFBundleGetInfoString = "meta-impy 1.4.0.3 exp 1"; |
diff --git a/linden/indra/newview/panelradar.cpp b/linden/indra/newview/panelradar.cpp index c94c0d1..ad6efc2 100644 --- a/linden/indra/newview/panelradar.cpp +++ b/linden/indra/newview/panelradar.cpp | |||
@@ -408,7 +408,6 @@ void PanelRadar::updateButtonStates() | |||
408 | static bool enable_unmute = false; | 408 | static bool enable_unmute = false; |
409 | static bool enable_track = false; | 409 | static bool enable_track = false; |
410 | static bool enable_estate = false; | 410 | static bool enable_estate = false; |
411 | static bool enable_friend = false; | ||
412 | static bool enable_cam = false; | 411 | static bool enable_cam = false; |
413 | 412 | ||
414 | if (mRadarTabs->getCurrentPanelIndex() == 0) // Avatar tab | 413 | if (mRadarTabs->getCurrentPanelIndex() == 0) // Avatar tab |
@@ -426,7 +425,6 @@ void PanelRadar::updateButtonStates() | |||
426 | enable_estate = isKickable(mSelectedAvatar); | 425 | enable_estate = isKickable(mSelectedAvatar); |
427 | enable_unmute = LLMuteList::getInstance()->isMuted(mSelectedAvatar); | 426 | enable_unmute = LLMuteList::getInstance()->isMuted(mSelectedAvatar); |
428 | enable_track = gAgent.isGodlike() || is_agent_mappable(mSelectedAvatar); | 427 | enable_track = gAgent.isGodlike() || is_agent_mappable(mSelectedAvatar); |
429 | enable_friend = !is_agent_friend(mSelectedAvatar); | ||
430 | enable_cam = mSelectedDistance >= 0 && mSelectedDistance <= gSavedSettings.getF32("NearMeRange"); | 428 | enable_cam = mSelectedDistance >= 0 && mSelectedDistance <= gSavedSettings.getF32("NearMeRange"); |
431 | } | 429 | } |
432 | else | 430 | else |
@@ -436,7 +434,6 @@ void PanelRadar::updateButtonStates() | |||
436 | enable_estate = false; | 434 | enable_estate = false; |
437 | enable_unmute = false; | 435 | enable_unmute = false; |
438 | enable_track = false; | 436 | enable_track = false; |
439 | enable_friend = false; | ||
440 | enable_cam = false; | 437 | enable_cam = false; |
441 | } | 438 | } |
442 | 439 | ||
diff --git a/linden/indra/newview/pipeline.cpp b/linden/indra/newview/pipeline.cpp index e2d9f85..a13a605 100644 --- a/linden/indra/newview/pipeline.cpp +++ b/linden/indra/newview/pipeline.cpp | |||
@@ -232,6 +232,7 @@ BOOL LLPipeline::sPickAvatar = TRUE; | |||
232 | BOOL LLPipeline::sDynamicLOD = TRUE; | 232 | BOOL LLPipeline::sDynamicLOD = TRUE; |
233 | BOOL LLPipeline::sShowHUDAttachments = TRUE; | 233 | BOOL LLPipeline::sShowHUDAttachments = TRUE; |
234 | BOOL LLPipeline::sRenderPhysicalBeacons = TRUE; | 234 | BOOL LLPipeline::sRenderPhysicalBeacons = TRUE; |
235 | BOOL LLPipeline::sRenderMOAPBeacons = FALSE; | ||
235 | BOOL LLPipeline::sRenderScriptedBeacons = FALSE; | 236 | BOOL LLPipeline::sRenderScriptedBeacons = FALSE; |
236 | BOOL LLPipeline::sRenderScriptedTouchBeacons = TRUE; | 237 | BOOL LLPipeline::sRenderScriptedTouchBeacons = TRUE; |
237 | BOOL LLPipeline::sRenderParticleBeacons = FALSE; | 238 | BOOL LLPipeline::sRenderParticleBeacons = FALSE; |
@@ -2167,6 +2168,43 @@ void renderPhysicalBeacons(LLDrawable* drawablep) | |||
2167 | } | 2168 | } |
2168 | } | 2169 | } |
2169 | 2170 | ||
2171 | void renderMOAPBeacons(LLDrawable* drawablep) | ||
2172 | { | ||
2173 | LLViewerObject *vobj = drawablep->getVObj(); | ||
2174 | |||
2175 | if(!vobj || vobj->isAvatar()) | ||
2176 | return; | ||
2177 | |||
2178 | BOOL beacon=FALSE; | ||
2179 | U8 tecount=vobj->getNumTEs(); | ||
2180 | for(int x=0;x<tecount;x++) | ||
2181 | { | ||
2182 | if(vobj->getTE(x)->hasMedia()) | ||
2183 | { | ||
2184 | beacon=TRUE; | ||
2185 | break; | ||
2186 | } | ||
2187 | } | ||
2188 | if(beacon==TRUE) | ||
2189 | { | ||
2190 | if (gPipeline.sRenderBeacons) | ||
2191 | { | ||
2192 | gObjectList.addDebugBeacon(vobj->getPositionAgent(), "", LLColor4(0.f, 1.f, 0.f, 0.5f), LLColor4(1.f, 1.f, 1.f, 0.5f), gSavedSettings.getS32("DebugBeaconLineWidth")); | ||
2193 | } | ||
2194 | |||
2195 | if (gPipeline.sRenderHighlight) | ||
2196 | { | ||
2197 | S32 face_id; | ||
2198 | S32 count = drawablep->getNumFaces(); | ||
2199 | for (face_id = 0; face_id < count; face_id++) | ||
2200 | { | ||
2201 | gPipeline.mHighlightFaces.push_back(drawablep->getFace(face_id) ); | ||
2202 | } | ||
2203 | } | ||
2204 | } | ||
2205 | } | ||
2206 | |||
2207 | |||
2170 | void renderParticleBeacons(LLDrawable* drawablep) | 2208 | void renderParticleBeacons(LLDrawable* drawablep) |
2171 | { | 2209 | { |
2172 | // Look for attachments, objects, etc. | 2210 | // Look for attachments, objects, etc. |
@@ -2249,18 +2287,12 @@ void LLPipeline::postSort(LLCamera& camera) | |||
2249 | const S32 bin_count = 1024*8; | 2287 | const S32 bin_count = 1024*8; |
2250 | 2288 | ||
2251 | static LLCullResult::drawinfo_list_t alpha_bins[bin_count]; | 2289 | static LLCullResult::drawinfo_list_t alpha_bins[bin_count]; |
2252 | static U32 bin_size[bin_count]; | ||
2253 | 2290 | ||
2254 | //clear one bin per frame to avoid memory bloat | 2291 | //clear one bin per frame to avoid memory bloat |
2255 | static S32 clear_idx = 0; | 2292 | static S32 clear_idx = 0; |
2256 | clear_idx = (1+clear_idx)%bin_count; | 2293 | clear_idx = (1+clear_idx)%bin_count; |
2257 | alpha_bins[clear_idx].clear(); | 2294 | alpha_bins[clear_idx].clear(); |
2258 | 2295 | ||
2259 | for (U32 j = 0; j < bin_count; j++) | ||
2260 | { | ||
2261 | bin_size[j] = 0; | ||
2262 | } | ||
2263 | |||
2264 | //build render map | 2296 | //build render map |
2265 | for (LLCullResult::sg_list_t::iterator i = sCull->beginVisibleGroups(); i != sCull->endVisibleGroups(); ++i) | 2297 | for (LLCullResult::sg_list_t::iterator i = sCull->beginVisibleGroups(); i != sCull->endVisibleGroups(); ++i) |
2266 | { | 2298 | { |
@@ -2347,6 +2379,11 @@ void LLPipeline::postSort(LLCamera& camera) | |||
2347 | forAllVisibleDrawables(renderPhysicalBeacons); | 2379 | forAllVisibleDrawables(renderPhysicalBeacons); |
2348 | } | 2380 | } |
2349 | 2381 | ||
2382 | if(sRenderMOAPBeacons) | ||
2383 | { | ||
2384 | forAllVisibleDrawables(renderMOAPBeacons); | ||
2385 | } | ||
2386 | |||
2350 | if (sRenderParticleBeacons) | 2387 | if (sRenderParticleBeacons) |
2351 | { | 2388 | { |
2352 | forAllVisibleDrawables(renderParticleBeacons); | 2389 | forAllVisibleDrawables(renderParticleBeacons); |
@@ -4581,6 +4618,24 @@ BOOL LLPipeline::getRenderScriptedTouchBeacons(void*) | |||
4581 | } | 4618 | } |
4582 | 4619 | ||
4583 | // static | 4620 | // static |
4621 | void LLPipeline::setRenderMOAPBeacons(BOOL val) | ||
4622 | { | ||
4623 | sRenderMOAPBeacons = val; | ||
4624 | } | ||
4625 | |||
4626 | // static | ||
4627 | void LLPipeline::toggleRenderMOAPBeacons(void*) | ||
4628 | { | ||
4629 | sRenderMOAPBeacons = !sRenderMOAPBeacons; | ||
4630 | } | ||
4631 | |||
4632 | // static | ||
4633 | BOOL LLPipeline::getRenderMOAPBeacons(void*) | ||
4634 | { | ||
4635 | return sRenderMOAPBeacons; | ||
4636 | } | ||
4637 | |||
4638 | // static | ||
4584 | void LLPipeline::setRenderPhysicalBeacons(BOOL val) | 4639 | void LLPipeline::setRenderPhysicalBeacons(BOOL val) |
4585 | { | 4640 | { |
4586 | sRenderPhysicalBeacons = val; | 4641 | sRenderPhysicalBeacons = val; |
@@ -5913,8 +5968,6 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in) | |||
5913 | 5968 | ||
5914 | stop_glerror(); | 5969 | stop_glerror(); |
5915 | 5970 | ||
5916 | LLVector3 origin = camera.getOrigin(); | ||
5917 | |||
5918 | glPushMatrix(); | 5971 | glPushMatrix(); |
5919 | 5972 | ||
5920 | mat.set_scale(glh::vec3f(1,1,-1)); | 5973 | mat.set_scale(glh::vec3f(1,1,-1)); |
diff --git a/linden/indra/newview/pipeline.h b/linden/indra/newview/pipeline.h index c5ab7ab..254b3c1 100644 --- a/linden/indra/newview/pipeline.h +++ b/linden/indra/newview/pipeline.h | |||
@@ -271,6 +271,10 @@ public: | |||
271 | static void toggleRenderPhysicalBeacons(void* data); | 271 | static void toggleRenderPhysicalBeacons(void* data); |
272 | static BOOL getRenderPhysicalBeacons(void* data); | 272 | static BOOL getRenderPhysicalBeacons(void* data); |
273 | 273 | ||
274 | static void setRenderMOAPBeacons(BOOL val); | ||
275 | static void toggleRenderMOAPBeacons(void * data); | ||
276 | static BOOL getRenderMOAPBeacons(void * data); | ||
277 | |||
274 | static void setRenderScriptedBeacons(BOOL val); | 278 | static void setRenderScriptedBeacons(BOOL val); |
275 | static void toggleRenderScriptedBeacons(void* data); | 279 | static void toggleRenderScriptedBeacons(void* data); |
276 | static BOOL getRenderScriptedBeacons(void* data); | 280 | static BOOL getRenderScriptedBeacons(void* data); |
@@ -572,6 +576,7 @@ protected: | |||
572 | S32 mLightingDetail; | 576 | S32 mLightingDetail; |
573 | 577 | ||
574 | static BOOL sRenderPhysicalBeacons; | 578 | static BOOL sRenderPhysicalBeacons; |
579 | static BOOL sRenderMOAPBeacons; | ||
575 | static BOOL sRenderScriptedTouchBeacons; | 580 | static BOOL sRenderScriptedTouchBeacons; |
576 | static BOOL sRenderScriptedBeacons; | 581 | static BOOL sRenderScriptedBeacons; |
577 | static BOOL sRenderParticleBeacons; | 582 | static BOOL sRenderParticleBeacons; |
diff --git a/linden/indra/newview/qtoolalign.cpp b/linden/indra/newview/qtoolalign.cpp index 3fe31f7..b4944fe 100644 --- a/linden/indra/newview/qtoolalign.cpp +++ b/linden/indra/newview/qtoolalign.cpp | |||
@@ -36,7 +36,7 @@ const F32 MANIPULATOR_SELECT_SIZE = 20.0; | |||
36 | 36 | ||
37 | 37 | ||
38 | QToolAlign::QToolAlign() | 38 | QToolAlign::QToolAlign() |
39 | : LLTool(std::string("Align")) | 39 | : LLToolComposite(std::string("Align")) |
40 | { | 40 | { |
41 | } | 41 | } |
42 | 42 | ||
@@ -46,7 +46,6 @@ QToolAlign::~QToolAlign() | |||
46 | } | 46 | } |
47 | 47 | ||
48 | 48 | ||
49 | |||
50 | BOOL QToolAlign::handleMouseDown(S32 x, S32 y, MASK mask) | 49 | BOOL QToolAlign::handleMouseDown(S32 x, S32 y, MASK mask) |
51 | { | 50 | { |
52 | if (mHighlightedAxis != -1) | 51 | if (mHighlightedAxis != -1) |
@@ -62,6 +61,11 @@ BOOL QToolAlign::handleMouseDown(S32 x, S32 y, MASK mask) | |||
62 | } | 61 | } |
63 | 62 | ||
64 | 63 | ||
64 | BOOL QToolAlign::handleDoubleClick(S32 x, S32 y, MASK mask) | ||
65 | { | ||
66 | return TRUE; | ||
67 | } | ||
68 | |||
65 | 69 | ||
66 | void QToolAlign::pickCallback(const LLPickInfo& pick_info) | 70 | void QToolAlign::pickCallback(const LLPickInfo& pick_info) |
67 | { | 71 | { |
@@ -95,7 +99,7 @@ void QToolAlign::pickCallback(const LLPickInfo& pick_info) | |||
95 | } | 99 | } |
96 | else | 100 | else |
97 | { | 101 | { |
98 | if (!(pick_info.mKeyMask == MASK_SHIFT)) | 102 | if (!(pick_info.mKeyMask & MASK_SHIFT)) |
99 | { | 103 | { |
100 | LLSelectMgr::getInstance()->deselectAll(); | 104 | LLSelectMgr::getInstance()->deselectAll(); |
101 | } | 105 | } |
@@ -105,7 +109,6 @@ void QToolAlign::pickCallback(const LLPickInfo& pick_info) | |||
105 | } | 109 | } |
106 | 110 | ||
107 | 111 | ||
108 | |||
109 | void QToolAlign::handleSelect() | 112 | void QToolAlign::handleSelect() |
110 | { | 113 | { |
111 | // no parts, please | 114 | // no parts, please |
@@ -207,7 +210,6 @@ BOOL QToolAlign::handleHover(S32 x, S32 y, MASK mask) | |||
207 | } | 210 | } |
208 | 211 | ||
209 | 212 | ||
210 | |||
211 | void setup_transforms_bbox(LLBBox bbox) | 213 | void setup_transforms_bbox(LLBBox bbox) |
212 | { | 214 | { |
213 | // translate to center | 215 | // translate to center |
@@ -242,6 +244,7 @@ void render_bbox(LLBBox bbox) | |||
242 | gGL.popMatrix(); | 244 | gGL.popMatrix(); |
243 | } | 245 | } |
244 | 246 | ||
247 | |||
245 | void render_cone_bbox(LLBBox bbox) | 248 | void render_cone_bbox(LLBBox bbox) |
246 | { | 249 | { |
247 | glMatrixMode(GL_MODELVIEW); | 250 | glMatrixMode(GL_MODELVIEW); |
@@ -256,7 +259,6 @@ void render_cone_bbox(LLBBox bbox) | |||
256 | } | 259 | } |
257 | 260 | ||
258 | 261 | ||
259 | |||
260 | // the selection bbox isn't axis aligned, so we must construct one | 262 | // the selection bbox isn't axis aligned, so we must construct one |
261 | // should this be cached in the selection manager? yes. | 263 | // should this be cached in the selection manager? yes. |
262 | LLBBox get_selection_axis_aligned_bbox() | 264 | LLBBox get_selection_axis_aligned_bbox() |
@@ -288,7 +290,6 @@ LLBBox get_selection_axis_aligned_bbox() | |||
288 | } | 290 | } |
289 | 291 | ||
290 | 292 | ||
291 | |||
292 | void QToolAlign::computeManipulatorSize() | 293 | void QToolAlign::computeManipulatorSize() |
293 | { | 294 | { |
294 | if (LLSelectMgr::getInstance()->getSelection()->getSelectType() == SELECT_TYPE_HUD) | 295 | if (LLSelectMgr::getInstance()->getSelection()->getSelectType() == SELECT_TYPE_HUD) |
@@ -407,6 +408,7 @@ void QToolAlign::render() | |||
407 | } | 408 | } |
408 | } | 409 | } |
409 | 410 | ||
411 | |||
410 | // only works for our specialized (AABB, position centered) bboxes | 412 | // only works for our specialized (AABB, position centered) bboxes |
411 | BOOL bbox_overlap(LLBBox bbox1, LLBBox bbox2) | 413 | BOOL bbox_overlap(LLBBox bbox1, LLBBox bbox2) |
412 | { | 414 | { |
@@ -422,7 +424,6 @@ BOOL bbox_overlap(LLBBox bbox1, LLBBox bbox2) | |||
422 | } | 424 | } |
423 | 425 | ||
424 | 426 | ||
425 | |||
426 | // used to sort bboxes before packing | 427 | // used to sort bboxes before packing |
427 | class BBoxCompare | 428 | class BBoxCompare |
428 | { | 429 | { |
@@ -598,5 +599,3 @@ void QToolAlign::align() | |||
598 | 599 | ||
599 | LLSelectMgr::getInstance()->sendMultipleUpdate(UPD_POSITION); | 600 | LLSelectMgr::getInstance()->sendMultipleUpdate(UPD_POSITION); |
600 | } | 601 | } |
601 | |||
602 | |||
diff --git a/linden/indra/newview/qtoolalign.h b/linden/indra/newview/qtoolalign.h index b2c18b7..2d30b92 100644 --- a/linden/indra/newview/qtoolalign.h +++ b/linden/indra/newview/qtoolalign.h | |||
@@ -13,6 +13,7 @@ | |||
13 | #define Q_QTOOLALIGN_H | 13 | #define Q_QTOOLALIGN_H |
14 | 14 | ||
15 | #include "lltool.h" | 15 | #include "lltool.h" |
16 | #include "lltoolcomp.h" | ||
16 | #include "llbbox.h" | 17 | #include "llbbox.h" |
17 | 18 | ||
18 | class LLViewerObject; | 19 | class LLViewerObject; |
@@ -20,7 +21,7 @@ class LLPickInfo; | |||
20 | class LLToolSelectRect; | 21 | class LLToolSelectRect; |
21 | 22 | ||
22 | class QToolAlign | 23 | class QToolAlign |
23 | : public LLTool, public LLSingleton<QToolAlign> | 24 | : public LLToolComposite, public LLSingleton<QToolAlign> |
24 | { | 25 | { |
25 | public: | 26 | public: |
26 | QToolAlign(); | 27 | QToolAlign(); |
@@ -29,6 +30,7 @@ public: | |||
29 | virtual void handleSelect(); | 30 | virtual void handleSelect(); |
30 | virtual void handleDeselect(); | 31 | virtual void handleDeselect(); |
31 | virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask); | 32 | virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask); |
33 | virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask); | ||
32 | virtual BOOL handleHover(S32 x, S32 y, MASK mask); | 34 | virtual BOOL handleHover(S32 x, S32 y, MASK mask); |
33 | virtual void render(); | 35 | virtual void render(); |
34 | 36 | ||
diff --git a/linden/indra/newview/rcmoapradar.cpp b/linden/indra/newview/rcmoapradar.cpp new file mode 100644 index 0000000..f0593ef --- /dev/null +++ b/linden/indra/newview/rcmoapradar.cpp | |||
@@ -0,0 +1,440 @@ | |||
1 | // MOAP Radar | ||
2 | // Robin Cornelius | ||
3 | |||
4 | |||
5 | #include "llviewerprecompiledheaders.h" | ||
6 | |||
7 | #include "llavatarconstants.h" | ||
8 | #include "llfloateravatarlist.h" | ||
9 | |||
10 | #include "lluictrlfactory.h" | ||
11 | #include "llviewerwindow.h" | ||
12 | #include "llscrolllistctrl.h" | ||
13 | #include "llradiogroup.h" | ||
14 | #include "llviewercontrol.h" | ||
15 | #include "llbutton.h" | ||
16 | |||
17 | #include "llvoavatar.h" | ||
18 | #include "llimview.h" | ||
19 | #include "rcmoapradar.h" | ||
20 | #include "llregionflags.h" | ||
21 | #include "llfloaterreporter.h" | ||
22 | #include "llagent.h" | ||
23 | #include "llviewerregion.h" | ||
24 | #include "lltracker.h" | ||
25 | #include "llviewerstats.h" | ||
26 | #include "llerror.h" | ||
27 | #include "llchat.h" | ||
28 | #include "llfloaterchat.h" | ||
29 | #include "llviewermessage.h" | ||
30 | #include "llweb.h" | ||
31 | #include "llviewerobjectlist.h" | ||
32 | #include "llmutelist.h" | ||
33 | #include "llcallbacklist.h" | ||
34 | #include "llmediaentry.h" | ||
35 | |||
36 | #include <time.h> | ||
37 | #include <string.h> | ||
38 | |||
39 | #include <map> | ||
40 | |||
41 | #include "llworld.h" | ||
42 | |||
43 | #include "llsdutil.h" | ||
44 | |||
45 | LLFloaterMOAPRadar* LLFloaterMOAPRadar::sInstance = NULL; | ||
46 | |||
47 | LLFloaterMOAPRadar::LLFloaterMOAPRadar() : LLFloater(std::string("MOAPradar")) | ||
48 | { | ||
49 | llassert_always(sInstance == NULL); | ||
50 | sInstance = this; | ||
51 | mUpdateRate = gSavedSettings.getU32("MOAPRadarUpdateRate") * 3 + 3; | ||
52 | mTrackingRunning=false; | ||
53 | } | ||
54 | |||
55 | LLFloaterMOAPRadar::~LLFloaterMOAPRadar() | ||
56 | { | ||
57 | gIdleCallbacks.deleteFunction(LLFloaterMOAPRadar::callbackIdle); | ||
58 | sInstance = NULL; | ||
59 | } | ||
60 | |||
61 | //static | ||
62 | void LLFloaterMOAPRadar::toggle(void*) | ||
63 | { | ||
64 | if (sInstance) | ||
65 | { | ||
66 | if (sInstance->getVisible()) | ||
67 | { | ||
68 | sInstance->close(false); | ||
69 | } | ||
70 | else | ||
71 | { | ||
72 | sInstance->open(); | ||
73 | } | ||
74 | } | ||
75 | else | ||
76 | { | ||
77 | showInstance(); | ||
78 | } | ||
79 | } | ||
80 | |||
81 | //static | ||
82 | void LLFloaterMOAPRadar::showInstance() | ||
83 | { | ||
84 | if (sInstance) | ||
85 | { | ||
86 | if (!sInstance->getVisible()) | ||
87 | { | ||
88 | sInstance->open(); | ||
89 | } | ||
90 | } | ||
91 | else | ||
92 | { | ||
93 | sInstance = new LLFloaterMOAPRadar(); | ||
94 | LLUICtrlFactory::getInstance()->buildFloater(sInstance, "floater_moap_radar.xml"); | ||
95 | } | ||
96 | } | ||
97 | |||
98 | void LLFloaterMOAPRadar::draw() | ||
99 | { | ||
100 | LLFloater::draw(); | ||
101 | } | ||
102 | |||
103 | void LLFloaterMOAPRadar::onOpen() | ||
104 | { | ||
105 | gSavedSettings.setBOOL("ShowMOAPRadar", TRUE); | ||
106 | sInstance->setVisible(TRUE); | ||
107 | } | ||
108 | |||
109 | void LLFloaterMOAPRadar::onClose(bool app_quitting) | ||
110 | { | ||
111 | sInstance->setVisible(FALSE); | ||
112 | if (!app_quitting) | ||
113 | { | ||
114 | gSavedSettings.setBOOL("ShowMOAPRadar", FALSE); | ||
115 | } | ||
116 | if (!gSavedSettings.getBOOL("MOAPRadarKeepOpen") || app_quitting) | ||
117 | { | ||
118 | destroy(); | ||
119 | } | ||
120 | } | ||
121 | |||
122 | |||
123 | BOOL LLFloaterMOAPRadar::postBuild() | ||
124 | { | ||
125 | |||
126 | mMOAPList = getChild<LLScrollListCtrl>("moap_list"); | ||
127 | mMOAPList->sortByColumn("distance", TRUE); | ||
128 | |||
129 | mTrackBtn = getChild<LLButton>("track_btn"); | ||
130 | mTrackBtn->setLabel(LLStringExplicit("Track")); | ||
131 | |||
132 | childSetAction("open_btn", onClickOpen, this); | ||
133 | childSetAction("track_btn", onClickTrack, this); | ||
134 | childSetAction("copy_btn", onClickCopy, this); | ||
135 | |||
136 | mMOAPList->setCommitOnSelectionChange(TRUE); | ||
137 | childSetCommitCallback("moap_list", onSelectMOAP, this); | ||
138 | |||
139 | gIdleCallbacks.addFunction(LLFloaterMOAPRadar::callbackIdle); | ||
140 | |||
141 | return TRUE; | ||
142 | } | ||
143 | |||
144 | //static | ||
145 | void LLFloaterMOAPRadar::callbackIdle(void *userdata) { | ||
146 | if (LLFloaterMOAPRadar::sInstance != NULL) | ||
147 | { | ||
148 | // Do not update at every frame: this would be insane ! | ||
149 | if (gFrameCount % LLFloaterMOAPRadar::sInstance->mUpdateRate == 0) | ||
150 | { | ||
151 | LLFloaterMOAPRadar::sInstance->updateMOAPList(); | ||
152 | } | ||
153 | } | ||
154 | } | ||
155 | |||
156 | |||
157 | void LLFloaterMOAPRadar::updateMOAPList() | ||
158 | { | ||
159 | if (sInstance != this) return; | ||
160 | |||
161 | mMOAPList->deleteAllItems(); | ||
162 | |||
163 | S32 obj_count=gObjectList.getNumObjects(); | ||
164 | |||
165 | int count=0; | ||
166 | |||
167 | for(int objnum=0;objnum<obj_count;objnum++) | ||
168 | { | ||
169 | LLPointer<LLViewerObject> obj = gObjectList.getObject(objnum); | ||
170 | |||
171 | if(obj.isNull()) | ||
172 | continue; | ||
173 | |||
174 | if(obj->isDead() || obj->isOrphaned()) | ||
175 | continue; | ||
176 | |||
177 | if(obj->getMediaType() == LLViewerObject::MEDIA_TYPE_NONE) | ||
178 | continue; | ||
179 | |||
180 | LLSD element; | ||
181 | |||
182 | element["id"] = obj->getID(); | ||
183 | |||
184 | for(int face=0;face<obj->getNumTEs();face++) | ||
185 | { | ||
186 | const LLTextureEntry * te=obj->getTE(face); | ||
187 | if(te==NULL) | ||
188 | continue; | ||
189 | |||
190 | if(te->hasMedia()) | ||
191 | { | ||
192 | LLMediaEntry* media=te->getMediaData(); | ||
193 | |||
194 | if(media==NULL) | ||
195 | continue; | ||
196 | |||
197 | LLSD media_details; | ||
198 | media->asLLSD(media_details); | ||
199 | |||
200 | element["columns"][LIST_URL]["column"] = "URL"; | ||
201 | element["columns"][LIST_URL]["type"] = "text"; | ||
202 | std::string URL=media->getCurrentURL(); | ||
203 | if(URL=="") | ||
204 | URL="(Waiting....)"; | ||
205 | |||
206 | element["columns"][LIST_URL]["value"] = URL; | ||
207 | |||
208 | if(mTrackingRunning && mTrackedID==obj->getID() && mTrackedFace==face) | ||
209 | { | ||
210 | element["columns"][LIST_URL]["font-style"] = "BOLD"; | ||
211 | } | ||
212 | else | ||
213 | { | ||
214 | element["columns"][LIST_URL]["font-style"] = "NORMAL"; | ||
215 | } | ||
216 | |||
217 | element["columns"][LIST_FACE]["column"] = "face"; | ||
218 | element["columns"][LIST_FACE]["type"] = "text"; | ||
219 | std::stringstream face_buf; | ||
220 | face_buf << face; | ||
221 | element["columns"][LIST_FACE]["value"] = face_buf.str(); | ||
222 | |||
223 | LLVector3d offset = gAgent.getPositionGlobal()-obj->getPositionGlobal(); | ||
224 | S32 dist= offset.length(); | ||
225 | |||
226 | element["columns"][LIST_DISTANCE]["column"] = "distance"; | ||
227 | element["columns"][LIST_DISTANCE]["type"] = "text"; | ||
228 | std::stringstream dist_buf; | ||
229 | dist_buf << std::fixed << std::setprecision(2) << dist<<"m"; | ||
230 | element["columns"][LIST_DISTANCE]["value"] = dist_buf.str(); | ||
231 | |||
232 | if(dist<25) | ||
233 | element["columns"][LIST_DISTANCE]["color"] = LLColor4::green.getValue(); | ||
234 | else if(dist<50) | ||
235 | element["columns"][LIST_DISTANCE]["color"] = LLColor4::blue1.getValue(); | ||
236 | else if(dist<100) | ||
237 | element["columns"][LIST_DISTANCE]["color"] = LLColor4::black.getValue(); | ||
238 | else if(dist<256) | ||
239 | element["columns"][LIST_DISTANCE]["color"] = LLColor4::yellow.getValue(); | ||
240 | else | ||
241 | element["columns"][LIST_DISTANCE]["color"] = LLColor4::red.getValue(); | ||
242 | |||
243 | |||
244 | element["columns"][LIST_POSITION]["column"] = "position"; | ||
245 | element["columns"][LIST_POSITION]["type"] = "text"; | ||
246 | element["columns"][LIST_POSITION]["value"] = ""; | ||
247 | |||
248 | element["columns"][LIST_ALTITUDE]["column"] = "altitude"; | ||
249 | element["columns"][LIST_ALTITUDE]["type"] = "text"; | ||
250 | std::stringstream alt_buf; | ||
251 | alt_buf << std::fixed << std::setprecision(2) << obj->getPositionGlobal().mdV[2]<<"m"; | ||
252 | element["columns"][LIST_ALTITUDE]["value"] = alt_buf.str(); | ||
253 | |||
254 | element["columns"][LIST_POSITION]["column"]="position"; | ||
255 | element["columns"][LIST_POSITION]["type"] = "text"; | ||
256 | std::stringstream pos_buf; | ||
257 | |||
258 | S32 moap_x = (S32)offset.mdV[VX]; | ||
259 | S32 moap_y = (S32)offset.mdV[VY]; | ||
260 | if (moap_x >= -256 && moap_x <= 256 && moap_y >= -256 && moap_y <= 256) | ||
261 | { | ||
262 | pos_buf<< std::fixed << std::setprecision(2)<<obj->getPositionRegion().mV[VX]<<","<<obj->getPositionRegion().mV[VY]; | ||
263 | } | ||
264 | else | ||
265 | { | ||
266 | if (moap_y < 0) | ||
267 | pos_buf<<"S"; | ||
268 | else if (moap_y > 256) | ||
269 | pos_buf<<"N"; | ||
270 | |||
271 | if (moap_x < 0) | ||
272 | pos_buf<<"W"; | ||
273 | else if (moap_x > 256) | ||
274 | pos_buf<<"E"; | ||
275 | } | ||
276 | |||
277 | |||
278 | element["columns"][LIST_POSITION]["value"] = pos_buf.str(); | ||
279 | |||
280 | mMOAPList->addElement(element, ADD_BOTTOM); | ||
281 | |||
282 | if(mSelectedObjID==obj->getID() && mSelectedFace==face) | ||
283 | { | ||
284 | mMOAPList->selectNthItem(count); | ||
285 | } | ||
286 | |||
287 | count++; | ||
288 | } | ||
289 | } | ||
290 | } | ||
291 | |||
292 | updatetrackbtn(); | ||
293 | } | ||
294 | |||
295 | // static | ||
296 | void LLFloaterMOAPRadar::onClickOpen(void* userdata) | ||
297 | { | ||
298 | LLFloaterMOAPRadar *self = (LLFloaterMOAPRadar*)userdata; | ||
299 | |||
300 | LLDynamicArray<LLUUID> ids = self->mMOAPList->getSelectedIDs(); | ||
301 | |||
302 | if(ids.empty()) | ||
303 | { | ||
304 | return; | ||
305 | } | ||
306 | |||
307 | LLUUID id=ids.front(); | ||
308 | |||
309 | LLPointer<LLViewerObject> obj = gObjectList.findObject(id); | ||
310 | if(obj.notNull()) | ||
311 | { | ||
312 | |||
313 | const LLTextureEntry * te=obj->getTE(self->mSelectedFace); | ||
314 | if(te==NULL) | ||
315 | return; | ||
316 | |||
317 | if(te->hasMedia()) | ||
318 | { | ||
319 | LLMediaEntry* media=te->getMediaData(); | ||
320 | if(media) | ||
321 | { | ||
322 | //gViewerWindow->mWindow->copyTextToClipboard(utf8str_to_wstring(media->getCurrentURL())); | ||
323 | LLWeb::loadURL(media->getCurrentURL()); | ||
324 | } | ||
325 | } | ||
326 | } | ||
327 | |||
328 | } | ||
329 | |||
330 | // static | ||
331 | void LLFloaterMOAPRadar::onClickTrack(void* userdata) | ||
332 | { | ||
333 | LLFloaterMOAPRadar *self = (LLFloaterMOAPRadar*)userdata; | ||
334 | |||
335 | LLDynamicArray<LLUUID> ids = self->mMOAPList->getSelectedIDs(); | ||
336 | |||
337 | if(self->mTrackingRunning) | ||
338 | { | ||
339 | LLTracker::stopTracking(NULL); | ||
340 | self->mTrackingRunning=false; | ||
341 | } | ||
342 | |||
343 | if(ids.empty()) | ||
344 | { | ||
345 | self->mTrackedID=LLUUID::null; | ||
346 | self->mTrackingRunning=false; | ||
347 | return; | ||
348 | } | ||
349 | |||
350 | LLUUID id=ids.front(); | ||
351 | |||
352 | if(id==self->mTrackedID && self->mSelectedFace==self->mTrackedFace) | ||
353 | { | ||
354 | self->mTrackedID=LLUUID::null; | ||
355 | self->mTrackingRunning=false; | ||
356 | return; | ||
357 | } | ||
358 | |||
359 | self->mTrackedID=LLUUID::null; | ||
360 | |||
361 | LLPointer<LLViewerObject> obj = gObjectList.findObject(id); | ||
362 | if(obj.notNull()) | ||
363 | { | ||
364 | LLTracker::trackLocation(obj->getPositionGlobal(),"MOAP Tracking","",LLTracker::LOCATION_ITEM); | ||
365 | self->mTrackingRunning=true; | ||
366 | self->mTrackedID=id; | ||
367 | self->mTrackedFace=self->mSelectedFace; | ||
368 | } | ||
369 | } | ||
370 | |||
371 | // static | ||
372 | void LLFloaterMOAPRadar::onClickCopy(void* userdata) | ||
373 | { | ||
374 | LLFloaterMOAPRadar *self = (LLFloaterMOAPRadar*)userdata; | ||
375 | |||
376 | LLDynamicArray<LLUUID> ids = self->mMOAPList->getSelectedIDs(); | ||
377 | |||
378 | if(ids.empty()) | ||
379 | { | ||
380 | LLTracker::stopTracking(NULL); | ||
381 | return; | ||
382 | } | ||
383 | |||
384 | LLUUID id=ids.front(); | ||
385 | |||
386 | LLPointer<LLViewerObject> obj = gObjectList.findObject(id); | ||
387 | |||
388 | if(obj.notNull()) | ||
389 | { | ||
390 | |||
391 | const LLTextureEntry * te=obj->getTE(self->mSelectedFace); | ||
392 | if(te==NULL) | ||
393 | return; | ||
394 | |||
395 | if(te->hasMedia()) | ||
396 | { | ||
397 | LLMediaEntry* media=te->getMediaData(); | ||
398 | if(media) | ||
399 | { | ||
400 | gViewerWindow->mWindow->copyTextToClipboard(utf8str_to_wstring(media->getCurrentURL())); | ||
401 | } | ||
402 | } | ||
403 | } | ||
404 | |||
405 | } | ||
406 | |||
407 | //static | ||
408 | void LLFloaterMOAPRadar::onSelectMOAP(LLUICtrl*, void* userdata) | ||
409 | { | ||
410 | LLFloaterMOAPRadar *self = (LLFloaterMOAPRadar*)userdata; | ||
411 | |||
412 | LLScrollListItem *item = self->mMOAPList->getFirstSelected(); | ||
413 | if (item) | ||
414 | { | ||
415 | self->mSelectedObjID = item->getUUID(); | ||
416 | self->mSelectedFace = item->getColumn(LIST_FACE)->getValue().asInteger(); | ||
417 | } | ||
418 | |||
419 | self->updatetrackbtn(); | ||
420 | } | ||
421 | |||
422 | void LLFloaterMOAPRadar::updatetrackbtn() | ||
423 | { | ||
424 | if( mTrackingRunning) | ||
425 | { | ||
426 | if( mTrackedID==mSelectedObjID && mTrackedFace==mSelectedFace) | ||
427 | { | ||
428 | mTrackBtn->setLabel(LLStringExplicit("Untrack")); | ||
429 | } | ||
430 | else | ||
431 | { | ||
432 | mTrackBtn->setLabel(LLStringExplicit("New Track")); | ||
433 | } | ||
434 | } | ||
435 | else | ||
436 | { | ||
437 | mTrackBtn->setLabel(LLStringExplicit("Track")); | ||
438 | } | ||
439 | |||
440 | } \ No newline at end of file | ||
diff --git a/linden/indra/newview/rcmoapradar.h b/linden/indra/newview/rcmoapradar.h new file mode 100644 index 0000000..1d01546 --- /dev/null +++ b/linden/indra/newview/rcmoapradar.h | |||
@@ -0,0 +1,58 @@ | |||
1 | |||
2 | |||
3 | class LLFloaterMOAPRadar : public LLFloater | ||
4 | { | ||
5 | |||
6 | private: | ||
7 | LLFloaterMOAPRadar(); | ||
8 | public: | ||
9 | ~LLFloaterMOAPRadar(); | ||
10 | |||
11 | enum AVATARS_COLUMN_ORDER | ||
12 | { | ||
13 | LIST_URL, | ||
14 | LIST_FACE, | ||
15 | LIST_DISTANCE, | ||
16 | LIST_POSITION, | ||
17 | LIST_ALTITUDE | ||
18 | }; | ||
19 | |||
20 | /*virtual*/ void onClose(bool app_quitting); | ||
21 | /*virtual*/ void onOpen(); | ||
22 | /*virtual*/ BOOL postBuild(); | ||
23 | /*virtual*/ void draw(); | ||
24 | |||
25 | static void toggle(void*); | ||
26 | |||
27 | static void showInstance(); | ||
28 | |||
29 | static void callbackIdle(void *userdata); | ||
30 | |||
31 | void updateMOAPList(); | ||
32 | |||
33 | static void onClickOpen(void* userdata); | ||
34 | static void onClickCopy(void* userdata); | ||
35 | static void onClickTrack(void* userdata); | ||
36 | static void onSelectMOAP(LLUICtrl*, void* userdata); | ||
37 | |||
38 | |||
39 | private: | ||
40 | static LLFloaterMOAPRadar* sInstance; | ||
41 | LLScrollListCtrl* mMOAPList; | ||
42 | LLButton * mTrackBtn; | ||
43 | |||
44 | U32 mUpdateRate; | ||
45 | |||
46 | LLUUID mSelectedObjID; | ||
47 | U8 mSelectedFace; | ||
48 | bool mTrackingRunning; | ||
49 | |||
50 | LLUUID mTrackedID; | ||
51 | U8 mTrackedFace; | ||
52 | |||
53 | void updatetrackbtn(); | ||
54 | |||
55 | public: | ||
56 | static LLFloaterMOAPRadar* getInstance() { return sInstance; } | ||
57 | |||
58 | }; \ No newline at end of file | ||
diff --git a/linden/indra/newview/res-sdl/imprudence_icon.BMP b/linden/indra/newview/res-sdl/imprudence_icon.BMP new file mode 100644 index 0000000..c3f4887 --- /dev/null +++ b/linden/indra/newview/res-sdl/imprudence_icon.BMP | |||
Binary files differ | |||
diff --git a/linden/indra/newview/res/imprudence_icon.png b/linden/indra/newview/res/imprudence_icon.png new file mode 100644 index 0000000..8795fa7 --- /dev/null +++ b/linden/indra/newview/res/imprudence_icon.png | |||
Binary files differ | |||
diff --git a/linden/indra/newview/res/viewerRes.rc b/linden/indra/newview/res/viewerRes.rc index 21d4785..85603cf 100644 --- a/linden/indra/newview/res/viewerRes.rc +++ b/linden/indra/newview/res/viewerRes.rc | |||
@@ -156,11 +156,11 @@ BEGIN | |||
156 | BEGIN | 156 | BEGIN |
157 | VALUE "CompanyName", "meta-impy Viewer Project" | 157 | VALUE "CompanyName", "meta-impy Viewer Project" |
158 | VALUE "FileDescription", "meta-impy" | 158 | VALUE "FileDescription", "meta-impy" |
159 | VALUE "FileVersion", "1.4.0 beta 2" | 159 | VALUE "FileVersion", "1.4.0 exp 1" |
160 | VALUE "InternalName", "meta-impy" | 160 | VALUE "InternalName", "meta-impy" |
161 | VALUE "OriginalFilename", "meta-impy.exe" | 161 | VALUE "OriginalFilename", "meta-impy.exe" |
162 | VALUE "ProductName", "meta-impy" | 162 | VALUE "ProductName", "meta-impy" |
163 | VALUE "ProductVersion", "1.4.0 beta 2" | 163 | VALUE "ProductVersion", "1.4.0 exp 1" |
164 | END | 164 | END |
165 | END | 165 | END |
166 | BLOCK "VarFileInfo" | 166 | BLOCK "VarFileInfo" |
diff --git a/linden/indra/newview/skins/dark/textures/icon_top_pick.tga b/linden/indra/newview/skins/dark/textures/icon_top_pick.tga new file mode 100644 index 0000000..0b34882 --- /dev/null +++ b/linden/indra/newview/skins/dark/textures/icon_top_pick.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/default/colors_base.xml b/linden/indra/newview/skins/default/colors_base.xml index d1f202b..92ffae7 100644 --- a/linden/indra/newview/skins/default/colors_base.xml +++ b/linden/indra/newview/skins/default/colors_base.xml | |||
@@ -205,5 +205,6 @@ | |||
205 | <ContextSilhouetteColor value="239, 156, 0, 255" /> <!-- For "context" highlighting, i.e. pie menu --> | 205 | <ContextSilhouetteColor value="239, 156, 0, 255" /> <!-- For "context" highlighting, i.e. pie menu --> |
206 | <GroupOverTierColor value="110, 15, 15, 255" /> <!-- Warning text in Group Info window --> | 206 | <GroupOverTierColor value="110, 15, 15, 255" /> <!-- Warning text in Group Info window --> |
207 | <ConsoleBackground value="0, 0, 0, 255" /> <!-- Background for inworld chat --> | 207 | <ConsoleBackground value="0, 0, 0, 255" /> <!-- Background for inworld chat --> |
208 | <ComboBoxBg value="255, 255, 255, 255"/> | ||
208 | 209 | ||
209 | </settings> | 210 | </settings> |
diff --git a/linden/indra/newview/skins/default/html/en-us/loading/imprudence_loading.png b/linden/indra/newview/skins/default/html/en-us/loading/imprudence_loading.png new file mode 100644 index 0000000..f9ea7a2 --- /dev/null +++ b/linden/indra/newview/skins/default/html/en-us/loading/imprudence_loading.png | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/default/textures/uv_test1.bmp b/linden/indra/newview/skins/default/textures/uv_test1.bmp new file mode 100644 index 0000000..a6ad9bc --- /dev/null +++ b/linden/indra/newview/skins/default/textures/uv_test1.bmp | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/default/xui/da/floater_html.xml b/linden/indra/newview/skins/default/xui/da/floater_html.xml index 28480f8..5961a0d 100644 --- a/linden/indra/newview/skins/default/xui/da/floater_html.xml +++ b/linden/indra/newview/skins/default/xui/da/floater_html.xml | |||
@@ -4,10 +4,4 @@ | |||
4 | <button label="Retur" name="back_btn" /> | 4 | <button label="Retur" name="back_btn" /> |
5 | <button label="Frem" name="forward_btn" /> | 5 | <button label="Frem" name="forward_btn" /> |
6 | <button label="start" name="go_btn" /> | 6 | <button label="start" name="go_btn" /> |
7 | <string name="home_page_url"> | ||
8 | http://www.secondlife.com | ||
9 | </string> | ||
10 | <string name="support_page_url"> | ||
11 | http://support.secondlife.com | ||
12 | </string> | ||
13 | </floater> | 7 | </floater> |
diff --git a/linden/indra/newview/skins/default/xui/de/floater_html.xml b/linden/indra/newview/skins/default/xui/de/floater_html.xml index 7bf1bad..55a9580 100644 --- a/linden/indra/newview/skins/default/xui/de/floater_html.xml +++ b/linden/indra/newview/skins/default/xui/de/floater_html.xml | |||
@@ -4,10 +4,4 @@ | |||
4 | <button label="Zurück" name="back_btn" /> | 4 | <button label="Zurück" name="back_btn" /> |
5 | <button label="Weiter" name="forward_btn" /> | 5 | <button label="Weiter" name="forward_btn" /> |
6 | <button label="Los" name="go_btn" /> | 6 | <button label="Los" name="go_btn" /> |
7 | <string name="home_page_url"> | ||
8 | http://de.secondlife.com | ||
9 | </string> | ||
10 | <string name="support_page_url"> | ||
11 | http://de.secondlife.com/support | ||
12 | </string> | ||
13 | </floater> | 7 | </floater> |
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 975ae60..4ec46e2 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 | |||
@@ -30,30 +30,29 @@ | |||
30 | height="386" | 30 | height="386" |
31 | help_topic="about_credits_tab" | 31 | help_topic="about_credits_tab" |
32 | name="credits_panel"> | 32 | name="credits_panel"> |
33 | |||
34 | <text_editor bottom="6" embedded_items="false" | 33 | <text_editor bottom="6" embedded_items="false" |
35 | follows="left|top|right|bottom" font="SansSerifSmall" height="374" left="6" | 34 | follows="left|top|right|bottom" font="SansSerifSmall" height="374" left="6" |
36 | max_length="65536" mouse_opaque="true" name="credits_editor" width="423" | 35 | max_length="65536" mouse_opaque="true" name="credits_editor" width="423" |
37 | word_wrap="true"> | 36 | word_wrap="true"> |
38 | This meta-impy viewer is based on the Imprudence viewer, and brought to you by Dave and Chris. | 37 | This meta-impy viewer is based on the Imprudence viewer, and brought to you by Dave and Chris. |
39 | 38 | ||
40 | http://onefang.net/redmine/ for bug reports, feature requests, bitching, and downloads. | 39 | http://onefang.net/redmine/ for bug reports, feature requests, bitching, and downloads. |
41 | http://github.com/onefang/meta-impy for the source code. | 40 | http://github.com/onefang/meta-impy for the source code. |
42 | 41 | ||
43 | 42 | ||
44 | The Imprudence Viewer was rocked hard by: | 43 | The Imprudence Viewer was rocked hard by: |
45 | Jacek Antonelli, McCabe Maxsted, Armin Weatherwax, Elektra Hesse, and CodeBastard Redgrave. | 44 | Armin Weatherwax, Boroondas Gupte, CodeBastard Redgrave, Elektra Hesse, Jacek Antonelli, McCabe Maxsted, and onefang rejected. |
46 | 45 | ||
47 | http://kokuaviewer.org/ | 46 | http://kokuaviewer.org/ |
48 | 47 | ||
49 | Imprudence is so awesome thanks to contributions from many generous people: | 48 | Imprudence is so awesome thanks to contributions from many generous people: |
50 | 49 | ||
51 | For their patches and code contributions, we thank Admiral Admiral, Aimee Trescothick, Aleric Inglewood, Alissa Sabre, Angus Boyd, Ansariel Hiller, Archimedies Plutonian, Ardy Lay, Asuka Neely, Balp Allen, Carjay McGinnis, Chalice Yao, Dale Glass, Damian Delacrois, Danny Nolan, Eryn, Felix Duesenburg, Frederick Martian, Geneko Nemeth, Grandma Bates, Hazim Gazov, Henri Beauchamp, Hg Beeks, Hiroshi Kumaki, Kakurady Drakenar, Katharine Berry, KirstenLee Cinquetti, Kitty Barnett, Latif Khalifa, Lance Corrimal, Lilly Zenovka, Makomk Makosen, Mana Janus, Matthew Dowd, Michelle2 Zenovka, Mimika Oh, Mm Alder, Nemurimasu Neiro, Nicholaz Beresford, Nicky Perian, Patrick Sapinski, Paul Churchill, Peter Lameth, Qarl Fizz, Revolution Smythe, Robin Cornelius, Seraph Linden, Shyotl Kuhr, Siana Gearz, SignpostMarv Martin, Stephen Zenith, TankMaster Finesmith, Thickbrick Sleaford, Thomas Shikami, Tom Meta, Tonya Souther, tx Oh, Vaalith Jinn, Vadim Bigbear, Vex Streeter, WhiteStar Magic, Zi Ree, and Zwagoth Klaar. | 50 | For their patches and code contributions, we thank Admiral Admiral, Aimee Trescothick, Aleric Inglewood, Alissa Sabre, Angus Boyd, Ansariel Hiller, Archimedies Plutonian, Ardy Lay, Asuka Neely, Balp Allen, Carjay McGinnis, Chalice Yao, Dale Glass, Damian Delacrois, Danny Nolan, Eryn, Felix Duesenburg, Frederick Martian, Geneko Nemeth, Grandma Bates, Hazim Gazov, Henri Beauchamp, Hg Beeks, Hiroshi Kumaki, Johnnie Carling, Lord Drakeo, Kakurady Drakenar, Katharine Berry, Kentron Katana, KirstenLee Cinquetti, Kitty Barnett, Latif Khalifa, Lance Corrimal, Lilly Zenovka, Makomk Makosen, Mana Janus, Matthew Dowd, Michelle2 Zenovka, Mimika Oh, Mm Alder, Nemurimasu Neiro, Nicholaz Beresford, Nicky Perian, Patrick Sapinski, Paul Churchill, Peter Lameth, Qarl Fizz, Revolution Smythe, Robin Cornelius, Seraph Linden, Shyotl Kuhr, Siana Gearz, SignpostMarv Martin, Stephen Zenith, TankMaster Finesmith, Thickbrick Sleaford, Thomas Shikami, Tom Meta, Tonya Souther, tx Oh, Vaalith Jinn, Vadim Bigbear, Vex Streeter, WhiteStar Magic, Zi Ree, and Zwagoth Klaar. |
52 | 51 | ||
53 | For their WindLight presets, we thank Ana Lutetia, CodeBastard Redgrave, and Torley Linden. | 52 | For their WindLight presets, we thank Ana Lutetia, CodeBastard Redgrave, and Torley Linden. |
54 | 53 | ||
55 | Thanks also to the developer(s) of the Ascent Viewer, Astra Viewer, Cool VL Viewer, Dolphin Viewer, Emerald Viewer, FrozenGlobe Viewer, Hippo Viewer, Meerkat Viewer, Meta7 Viewer, Phoenix Viewer, Singularity Viewer and Snowglobe 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. | 54 | Thanks also to the developer(s) of the Ascent Viewer, Astra Viewer, Cool VL Viewer, Dolphin Viewer, Emerald Viewer, FrozenGlobe Viewer, Hippo Viewer, Meerkat Viewer, Meta7 Viewer, Phoenix Viewer, Singularity Viewer and Snowglobe 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. |
56 | 55 | ||
57 | For a complete list of who did what, read the release notes! | 56 | For a complete list of who did what, read the release notes! |
58 | 57 | ||
59 | Many thanks to the many residents in many grids who contributed towards this viewer in countless ways. | 58 | Many thanks to the many residents in many grids who contributed towards this viewer in countless ways. |
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_beacons.xml b/linden/indra/newview/skins/default/xui/en-us/floater_beacons.xml index e698878..2f9fc4d 100644 --- a/linden/indra/newview/skins/default/xui/en-us/floater_beacons.xml +++ b/linden/indra/newview/skins/default/xui/en-us/floater_beacons.xml | |||
@@ -1,15 +1,16 @@ | |||
1 | <?xml version="1.0" encoding="utf-8" standalone="yes" ?> | 1 | <?xml version="1.0" encoding="utf-8" standalone="yes" ?> |
2 | <floater can_close="true" can_drag_on_left="false" can_minimize="true" can_resize="false" | 2 | <floater can_close="true" can_drag_on_left="false" can_minimize="true" can_resize="false" |
3 | width="250" height="225" | 3 | width="250" height="255" |
4 | name="beacons" title="Beacons" | 4 | name="beacons" title="Beacons" |
5 | rect_control="FloaterBeaconsRect" control_name="BeaconsEnabled"> | 5 | rect_control="FloaterBeaconsRect" control_name="BeaconsEnabled"> |
6 | <panel bottom="10" follows="left|top|right|bottom" left="10" width="230" height="200" name="beacons_panel"> | 6 | <panel bottom="10" follows="left|top|right|bottom" left="10" width="230" height="240" name="beacons_panel"> |
7 | <check_box bottom_delta="-33" follows="left|top" left="0" name="touch_only" label="Scripted Objects with Touch Only" control_name="scripttouchbeacon" /> | 7 | <check_box bottom_delta="-33" follows="left|top" left="0" name="touch_only" label="Scripted Objects with Touch Only" control_name="scripttouchbeacon" /> |
8 | <check_box bottom_delta="-20" follows="left|top" left="0" name="scripted" label="Scripted Objects" control_name="scriptsbeacon" /> | 8 | <check_box bottom_delta="-20" follows="left|top" left="0" name="scripted" label="Scripted Objects" control_name="scriptsbeacon" /> |
9 | <check_box bottom_delta="-20" follows="left|top" left="0" name="physical" label="Physical Objects" control_name="physicalbeacon" /> | 9 | <check_box bottom_delta="-20" follows="left|top" left="0" name="physical" label="Physical Objects" control_name="physicalbeacon" /> |
10 | <check_box bottom_delta="-20" follows="left|top" left="0" name="sounds" label="Sound Sources" control_name="soundsbeacon" /> | 10 | <check_box bottom_delta="-20" follows="left|top" left="0" name="sounds" label="Sound Sources" control_name="soundsbeacon" /> |
11 | <check_box bottom_delta="-20" follows="left|top" left="0" name="particles" label="Particle Sources" control_name="particlesbeacon" /> | 11 | <check_box bottom_delta="-20" follows="left|top" left="0" name="particles" label="Particle Sources" control_name="particlesbeacon" /> |
12 | <check_box bottom_delta="-20" follows="left|top" left="0" name="highlights" label="Render Highlights" control_name="renderhighlights" /> | 12 | <check_box bottom_delta="-20" follows="left|top" left="0" name="highlights" label="Render Highlights" control_name="renderhighlights" /> |
13 | <check_box bottom_delta="-20" follows="left|top" left="0" name="moap" label="MOAP Objects" control_name="moapbeacon" /> | ||
13 | <check_box bottom_delta="-20" follows="left|top" left="0" name="beacons" label="Render Beacons" control_name="renderbeacons" /> | 14 | <check_box bottom_delta="-20" follows="left|top" left="0" name="beacons" label="Render Beacons" control_name="renderbeacons" /> |
14 | <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | 15 | <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" |
15 | bottom_delta="-30" drop_shadow_visible="true" enabled="true" follows="left|top" | 16 | bottom_delta="-30" drop_shadow_visible="true" enabled="true" follows="left|top" |
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_build_options.xml b/linden/indra/newview/skins/default/xui/en-us/floater_build_options.xml index 53dd217..5f9e745 100644 --- a/linden/indra/newview/skins/default/xui/en-us/floater_build_options.xml +++ b/linden/indra/newview/skins/default/xui/en-us/floater_build_options.xml | |||
@@ -68,13 +68,34 @@ | |||
68 | label="Values are percent" left_delta="-5" mouse_opaque="true" | 68 | label="Values are percent" left_delta="-5" mouse_opaque="true" |
69 | tool_tip="Default settings are Percentages and every axis set at 50" | 69 | tool_tip="Default settings are Percentages and every axis set at 50" |
70 | name="PivotPercToggle" radio_style="false" width="100" /> | 70 | name="PivotPercToggle" radio_style="false" width="100" /> |
71 | 71 | ||
72 | <check_box bottom_delta="60" enabled="true" follows="left|top" font="SansSerifSmall" height="16" | 72 | <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" |
73 | initial_value="true" label="Show selection outlines" left_delta="143" | 73 | bottom_delta="-50" drop_shadow_visible="true" enabled="true" follows="left|top" font="SansSerifSmall" |
74 | mouse_opaque="true" name="BuildPrefsRenderHighlight_toggle" | 74 | h_pad="0" halign="left" height="10" left="220" mouse_opaque="false" |
75 | name="text_box8" v_pad="0" width="150">Show during build:</text> | ||
76 | <view_border bevel_style="none" border_thickness="1" bottom_delta="-98" follows="top|left" height="90" | ||
77 | left="198" name="ShowBorder" width="135" /> | ||
78 | |||
79 | |||
80 | <check_box bottom_delta="70" enabled="true" follows="left|top" font="SansSerifSmall" height="16" | ||
81 | initial_value="true" label="Hidden selection" left_delta="0" | ||
82 | mouse_opaque="true" name="BuildPrefsRenderHidden_toggle" | ||
75 | radio_style="false" width="270"/> | 83 | radio_style="false" width="270"/> |
76 | <check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall" height="16" | 84 | <check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall" height="16" |
77 | label="Limit Select Distance" left_delta="0" mouse_opaque="true" | 85 | initial_value="true" label="Light radius" left_delta="0" |
86 | mouse_opaque="true" name="BuildPrefsRenderLightRadius_toggle" | ||
87 | radio_style="false" width="270"/> | ||
88 | <check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall" height="16" | ||
89 | initial_value="true" label="Selection beam" left_delta="0" | ||
90 | mouse_opaque="true" name="BuildPrefsShowSelectionBeam_toggle" | ||
91 | radio_style="false" width="270"/> | ||
92 | <check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall" height="16" | ||
93 | initial_value="true" label="Selection outlines" left_delta="0" | ||
94 | mouse_opaque="true" name="BuildPrefsRenderHighlight_toggle" | ||
95 | radio_style="false" width="270"/> | ||
96 | |||
97 | <check_box bottom_delta="198" enabled="true" follows="left|top" font="SansSerifSmall" height="16" | ||
98 | label="Limit Select Distance" left_delta="148" mouse_opaque="true" | ||
78 | tooltip="" | 99 | tooltip="" |
79 | name="limit_select_dist_check" radio_style="false" width="270" /> | 100 | name="limit_select_dist_check" radio_style="false" width="270" /> |
80 | <check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall" height="16" | 101 | <check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall" height="16" |
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_clear_cache.xml b/linden/indra/newview/skins/default/xui/en-us/floater_clear_cache.xml index 7974d85..c00a86d 100644 --- a/linden/indra/newview/skins/default/xui/en-us/floater_clear_cache.xml +++ b/linden/indra/newview/skins/default/xui/en-us/floater_clear_cache.xml | |||
@@ -7,7 +7,7 @@ | |||
7 | font="SansSerifSmall" h_pad="0" halign="left" height="16" left_delta="20" | 7 | font="SansSerifSmall" h_pad="0" halign="left" height="16" left_delta="20" |
8 | mouse_opaque="true" name="cache_label" v_pad="0" width="185"> | 8 | mouse_opaque="true" name="cache_label" v_pad="0" width="185"> |
9 | Cache Will Be Cleared After | 9 | Cache Will Be Cleared After |
10 | You Restart Imprudence | 10 | You Restart meta-impy |
11 | </text> | 11 | </text> |
12 | <check_box bottom_delta="-37" follows="left|top" font="SansSerifSmall" height="20" | 12 | <check_box bottom_delta="-37" follows="left|top" font="SansSerifSmall" height="20" |
13 | initial_value="false" label="Clear texture cache" left="10" | 13 | initial_value="false" label="Clear texture cache" left="10" |
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_html.xml b/linden/indra/newview/skins/default/xui/en-us/floater_html.xml index d107454..76283c3 100644 --- a/linden/indra/newview/skins/default/xui/en-us/floater_html.xml +++ b/linden/indra/newview/skins/default/xui/en-us/floater_html.xml | |||
@@ -16,10 +16,4 @@ | |||
16 | select_all_on_focus_received="true" width="435" /> | 16 | select_all_on_focus_received="true" width="435" /> |
17 | <button bottom_delta="0" follows="top|right" font="SansSerifSmall" height="20" | 17 | <button bottom_delta="0" follows="top|right" font="SansSerifSmall" height="20" |
18 | label="Go" left_delta="440" name="go_btn" width="70" /> | 18 | label="Go" left_delta="440" name="go_btn" width="70" /> |
19 | <string name="home_page_url"> | ||
20 | http://www.secondlife.com | ||
21 | </string> | ||
22 | <string name="support_page_url"> | ||
23 | http://support.secondlife.com | ||
24 | </string> | ||
25 | </floater> | 19 | </floater> |
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_media_browser.xml b/linden/indra/newview/skins/default/xui/en-us/floater_media_browser.xml index 76eee6f..12fe153 100644 --- a/linden/indra/newview/skins/default/xui/en-us/floater_media_browser.xml +++ b/linden/indra/newview/skins/default/xui/en-us/floater_media_browser.xml | |||
@@ -48,10 +48,4 @@ | |||
48 | left="-110" name="set_home" width="104" /> | 48 | left="-110" name="set_home" width="104" /> |
49 | </layout_panel> | 49 | </layout_panel> |
50 | </layout_stack> | 50 | </layout_stack> |
51 | <string name="home_page_url"> | ||
52 | http://www.secondlife.com | ||
53 | </string> | ||
54 | <string name="support_page_url"> | ||
55 | http://support.secondlife.com | ||
56 | </string> | ||
57 | </floater> | 51 | </floater> |
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_moap_radar.xml b/linden/indra/newview/skins/default/xui/en-us/floater_moap_radar.xml new file mode 100644 index 0000000..b9e3f99 --- /dev/null +++ b/linden/indra/newview/skins/default/xui/en-us/floater_moap_radar.xml | |||
@@ -0,0 +1,54 @@ | |||
1 | <?xml version="1.0" encoding="utf-8" standalone="yes"?> | ||
2 | <floater name="MOAP" title="MOAP Radar" | ||
3 | can_resize="true" can_minimize="true" can_close="true" can_drag_on_left="false" | ||
4 | rect_control="FloaterRadarRect" min_width="700" min_height="150"> | ||
5 | |||
6 | <scroll_list name="moap_list" | ||
7 | left="10" right="-10" top="-20" bottom="40" can_resize="true" | ||
8 | column_padding="0" follows="left|top|bottom|right" | ||
9 | draw_heading="true" multi_select="true" search_column="1" | ||
10 | tool_tip="MOAP List"> | ||
11 | <column name="URL" label="URL" width="450" tool_tip="URL of MOAP"/> | ||
12 | <column name="face" label="Face" width="48" tool_tip="URL of MOAP"/> | ||
13 | <column name="distance" label="Dist." width="48" tool_tip="Distance from your avatar"/> | ||
14 | <column name="position" label="Pos." width="90" tool_tip="Position (X, Y) within this sim, or general direction (cardinal point) for outside sims"/> | ||
15 | <column name="altitude" label="Alt." width="48" tool_tip="Altitude"/> | ||
16 | </scroll_list> | ||
17 | |||
18 | |||
19 | <button | ||
20 | name="open_btn" | ||
21 | label="Open" | ||
22 | tool_tip="Open Current URL" | ||
23 | left="10" | ||
24 | bottom_delta="-30" | ||
25 | width="80" | ||
26 | height="20" | ||
27 | font="SansSerifSmall" | ||
28 | follows="bottom|left" | ||
29 | /> | ||
30 | <button | ||
31 | name="track_btn" | ||
32 | label="(Un)Track" | ||
33 | tool_tip="Toggle tracking of this MOAPs position" | ||
34 | left_delta="90" | ||
35 | bottom_delta="0" | ||
36 | width="80" | ||
37 | height="20" | ||
38 | font="SansSerifSmall" | ||
39 | follows="bottom|left" | ||
40 | /> | ||
41 | <button | ||
42 | name="copy_btn" | ||
43 | label="Get URL" | ||
44 | tool_tip="Copies URL to the clipboard" | ||
45 | left_delta="90" | ||
46 | bottom_delta="0" | ||
47 | width="80" | ||
48 | height="20" | ||
49 | font="SansSerifSmall" | ||
50 | follows="bottom|left" | ||
51 | /> | ||
52 | <!-- upper middle row --> | ||
53 | |||
54 | </floater> | ||
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_tools.xml b/linden/indra/newview/skins/default/xui/en-us/floater_tools.xml index 3f476cf..2ed5120 100644 --- a/linden/indra/newview/skins/default/xui/en-us/floater_tools.xml +++ b/linden/indra/newview/skins/default/xui/en-us/floater_tools.xml | |||
@@ -69,20 +69,24 @@ | |||
69 | 69 | ||
70 | <check_box bottom="-70" follows="left|top" font="SansSerifSmall" height="16" | 70 | <check_box bottom="-70" follows="left|top" font="SansSerifSmall" height="16" |
71 | initial_value="false" label="Position" left="4" mouse_opaque="true" | 71 | initial_value="false" label="Position" left="4" mouse_opaque="true" |
72 | name="radio position" radio_style="true" width="114" /> | 72 | name="radio position" radio_style="true" width="114" |
73 | tool_tip="Position selected prims (Ctrl-Shift-P)." /> | ||
73 | <check_box bottom_delta="-15" follows="left|top" font="SansSerifSmall" height="16" | 74 | <check_box bottom_delta="-15" follows="left|top" font="SansSerifSmall" height="16" |
74 | initial_value="false" label="Rotate (Ctrl)" left="4" mouse_opaque="true" | 75 | initial_value="false" label="Rotate (Ctrl)" left="4" mouse_opaque="true" |
75 | name="radio rotate" radio_style="true" width="114" /> | 76 | name="radio rotate" radio_style="true" width="114" |
77 | tool_tip="Rotate selected prims (Ctrl)." /> | ||
76 | <check_box bottom_delta="-15" follows="left|top" font="SansSerifSmall" height="16" | 78 | <check_box bottom_delta="-15" follows="left|top" font="SansSerifSmall" height="16" |
77 | initial_value="false" label="Stretch (Ctrl-Shift)" left="4" | 79 | initial_value="false" label="Stretch (Ctrl-Shift)" left="4" |
78 | mouse_opaque="true" name="radio stretch" radio_style="true" width="123" /> | 80 | mouse_opaque="true" name="radio stretch" radio_style="true" width="123" |
81 | tool_tip="Resize selected prims (Ctrl-Shift)." /> | ||
79 | <check_box bottom_delta="-15" follows="left|top" font="SansSerifSmall" height="16" | 82 | <check_box bottom_delta="-15" follows="left|top" font="SansSerifSmall" height="16" |
80 | initial_value="false" label="Select faces to texture" left="4" mouse_opaque="true" | 83 | initial_value="false" label="Select faces to texture" left="4" mouse_opaque="true" |
81 | name="radio select face" radio_style="true" width="114" /> | 84 | name="radio select face" radio_style="true" width="114" |
85 | tool_tip="Select faces of prims to texture (Ctrl-Alt-F)." /> | ||
82 | <check_box bottom_delta="-15" follows="left|top" font="SansSerifSmall" height="16" | 86 | <check_box bottom_delta="-15" follows="left|top" font="SansSerifSmall" height="16" |
83 | initial_value="false" label="Align (Shift to Pack)" left="4" mouse_opaque="true" | 87 | initial_value="false" label="Align (Shift to Pack)" left="4" mouse_opaque="true" |
84 | name="radio align" radio_style="true" width="114" | 88 | name="radio align" radio_style="true" width="114" |
85 | tool_tip="Align aligns all selected prims' edges along an axis, Pack moves all selected prims' edges so they're touching" /> | 89 | tool_tip="Align (Ctrl-Alt-M) aligns all selected prims edges along an axis. Pack (Ctrl-Alt-Shift-M) moves all selected prims edges so they're touching." /> |
86 | <check_box bottom_delta="-19" control_name="EditLinkedParts" follows="left|top" | 90 | <check_box bottom_delta="-19" control_name="EditLinkedParts" follows="left|top" |
87 | font="SansSerifSmall" height="16" initial_value="false" | 91 | font="SansSerifSmall" height="16" initial_value="false" |
88 | label="Edit linked parts" left="4" mouse_opaque="true" | 92 | label="Edit linked parts" left="4" mouse_opaque="true" |
@@ -1363,9 +1367,12 @@ | |||
1363 | <string name="status_move"> | 1367 | <string name="status_move"> |
1364 | Drag to Move, Shift-Drag to Copy | 1368 | Drag to Move, Shift-Drag to Copy |
1365 | </string> | 1369 | </string> |
1366 | <string name="status_align"> | 1370 | <string name="status_selectface"> |
1367 | CTRL-A to align on an axis, CTRL-Shift-A to Pack | 1371 | Click to select a Face for texturing |
1368 | </string> | 1372 | </string> |
1373 | <string name="status_align"> | ||
1374 | Click to Align, Shift-Click to Pack | ||
1375 | </string> | ||
1369 | <string name="status_modifyland"> | 1376 | <string name="status_modifyland"> |
1370 | Click and Hold to Modify Land | 1377 | Click and Hold to Modify Land |
1371 | </string> | 1378 | </string> |
@@ -1379,7 +1386,7 @@ | |||
1379 | Click Inworld to Build | 1386 | Click Inworld to Build |
1380 | </string> | 1387 | </string> |
1381 | <string name="status_selectland"> | 1388 | <string name="status_selectland"> |
1382 | Click and Drag to Select Land | 1389 | Click and Drag to select Land |
1383 | </string> | 1390 | </string> |
1384 | <string name="grid_screen_text"> | 1391 | <string name="grid_screen_text"> |
1385 | Screen | 1392 | Screen |
diff --git a/linden/indra/newview/skins/default/xui/en-us/menu_inventory.xml b/linden/indra/newview/skins/default/xui/en-us/menu_inventory.xml index 0cbd7c6..8295d3a 100644 --- a/linden/indra/newview/skins/default/xui/en-us/menu_inventory.xml +++ b/linden/indra/newview/skins/default/xui/en-us/menu_inventory.xml | |||
@@ -166,17 +166,15 @@ | |||
166 | <on_click filter="" function="Inventory.DoToSelected" userdata="copy_uuid" /> | 166 | <on_click filter="" function="Inventory.DoToSelected" userdata="copy_uuid" /> |
167 | </menu_item_call> | 167 | </menu_item_call> |
168 | <menu_item_separator name="Copy Separator" /> | 168 | <menu_item_separator name="Copy Separator" /> |
169 | <!-- See IMP-961 http://redmine.kokuaviewer.org/issues/961 | 169 | <menu_item_call bottom_delta="-18" height="18" label="Cut" left="0" mouse_opaque="true" |
170 | <menu_item_call bottom_delta="-18" height="18" label="Cut" left="0" mouse_opaque="true" | ||
171 | name="Cut" width="128"> | 170 | name="Cut" width="128"> |
172 | <on_click filter="" function="Inventory.DoToSelected" userdata="cut" /> | 171 | <on_click filter="" function="Inventory.DoToSelected" userdata="cut" /> |
173 | </menu_item_call> | 172 | </menu_item_call> |
174 | --> | 173 | <menu_item_call bottom_delta="-18" height="18" label="Copy" left="0" mouse_opaque="true" |
175 | <menu_item_call bottom_delta="-18" height="18" label="Copy" left="0" mouse_opaque="true" | ||
176 | name="Copy" width="128"> | 174 | name="Copy" width="128"> |
177 | <on_click filter="" function="Inventory.DoToSelected" userdata="copy" /> | 175 | <on_click filter="" function="Inventory.DoToSelected" userdata="copy" /> |
178 | </menu_item_call> | 176 | </menu_item_call> |
179 | <menu_item_call bottom_delta="-18" height="18" label="Paste" left="0" mouse_opaque="true" | 177 | <menu_item_call bottom_delta="-18" height="18" label="Paste" left="0" mouse_opaque="true" |
180 | name="Paste" width="128"> | 178 | name="Paste" width="128"> |
181 | <on_click filter="" function="Inventory.DoToSelected" userdata="paste" /> | 179 | <on_click filter="" function="Inventory.DoToSelected" userdata="paste" /> |
182 | </menu_item_call> | 180 | </menu_item_call> |
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 ffdafe2..9b9a198 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 | |||
@@ -23,15 +23,15 @@ | |||
23 | <on_click function="ShowFloater" userdata="help f1" /> | 23 | <on_click function="ShowFloater" userdata="help f1" /> |
24 | </menu_item_call> | 24 | </menu_item_call> |
25 | <menu_item_separator /> | 25 | <menu_item_separator /> |
26 | <menu_item_call name="Imprudence Blog" | 26 | <menu_item_call name="Imprudence communication channels" |
27 | label="Imprudence Blog"> | 27 | label="Imprudence communication channels"> |
28 | <on_click function="PromptShowURL" | 28 | <on_click function="PromptShowURL" |
29 | userdata="WebLaunchImprudenceBlog,http://imprudenceviewer.org/" /> | 29 | userdata="WebLaunchImprudenceComms,http://wiki.kokuaviewer.org/wiki/Communication_Channels" /> |
30 | </menu_item_call> | 30 | </menu_item_call> |
31 | <menu_item_call name="Imprudence Forums" | 31 | <menu_item_call name="Imprudence bug reporting" |
32 | label="Imprudence Forums"> | 32 | label="Imprudence bug reporting"> |
33 | <on_click function="PromptShowURL" | 33 | <on_click function="PromptShowURL" |
34 | userdata="WebLaunchImprudenceForums,http://imprudenceviewer.org/forums/" /> | 34 | userdata="WebLaunchImprudenceBugs,http://wiki.kokuaviewer.org/wiki/Reporting_a_bug" /> |
35 | </menu_item_call> | 35 | </menu_item_call> |
36 | <menu_item_separator /> | 36 | <menu_item_separator /> |
37 | <menu_item_call label="About meta-impy" name="About meta-impy"> | 37 | <menu_item_call label="About meta-impy" name="About meta-impy"> |
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 193592b..125962d 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 | |||
@@ -385,6 +385,10 @@ | |||
385 | <on_click function="ShowFloater" userdata="mini map" /> | 385 | <on_click function="ShowFloater" userdata="mini map" /> |
386 | <on_check control="ShowMiniMap" /> | 386 | <on_check control="ShowMiniMap" /> |
387 | </menu_item_check> | 387 | </menu_item_check> |
388 | <menu_item_check enabled="true" label="MOAP Radar" name="MOAPRadar" shortcut=""> | ||
389 | <on_click function="View.ToggleMOAPList" userdata="moapradar" /> | ||
390 | <on_check control="ShowMOAPRadar" /> | ||
391 | </menu_item_check> | ||
388 | <menu_item_separator /> | 392 | <menu_item_separator /> |
389 | <menu_item_check label="Animation Overrider" name="AO" | 393 | <menu_item_check label="Animation Overrider" name="AO" |
390 | shortcut="control|shift|O"> | 394 | shortcut="control|shift|O"> |
@@ -677,17 +681,17 @@ | |||
677 | userdata="" /> | 681 | userdata="" /> |
678 | <on_check control="RenderLightRadius" /> | 682 | <on_check control="RenderLightRadius" /> |
679 | </menu_item_check> | 683 | </menu_item_check> |
680 | <menu_item_check label="Show Selection Outlines" | ||
681 | name="Show Selection Outlines"> | ||
682 | <on_click function="Tools.ShowSelectionHighlights" userdata="" /> | ||
683 | <on_check control="RenderHighlightSelections" /> | ||
684 | </menu_item_check> | ||
685 | <menu_item_check name="Show Selection Beam" | 684 | <menu_item_check name="Show Selection Beam" |
686 | label="Show Selection Beam"> | 685 | label="Show Selection Beam"> |
687 | <on_click function="ToggleControl" | 686 | <on_click function="ToggleControl" |
688 | userdata="ShowSelectionBeam" /> | 687 | userdata="ShowSelectionBeam" /> |
689 | <on_check control="ShowSelectionBeam" /> | 688 | <on_check control="ShowSelectionBeam" /> |
690 | </menu_item_check> | 689 | </menu_item_check> |
690 | <menu_item_check label="Show Selection Outlines" | ||
691 | name="Show Selection Outlines"> | ||
692 | <on_click function="Tools.ShowSelectionHighlights" userdata="" /> | ||
693 | <on_check control="RenderHighlightSelections" /> | ||
694 | </menu_item_check> | ||
691 | </menu> | 695 | </menu> |
692 | <menu_item_separator /> | 696 | <menu_item_separator /> |
693 | <menu_item_check name="Snap to Grid" enabled="false" | 697 | <menu_item_check name="Snap to Grid" enabled="false" |
@@ -844,15 +848,15 @@ | |||
844 | <on_click function="ShowFloater" userdata="help tutorial" /> | 848 | <on_click function="ShowFloater" userdata="help tutorial" /> |
845 | </menu_item_call> | 849 | </menu_item_call> |
846 | <menu_item_separator /> | 850 | <menu_item_separator /> |
847 | <menu_item_call name="Imprudence Blog" | 851 | <menu_item_call name="Imprudence communication channels" |
848 | label="Imprudence Blog"> | 852 | label="Imprudence communication channels"> |
849 | <on_click function="PromptShowURL" | 853 | <on_click function="PromptShowURL" |
850 | userdata="WebLaunchImprudenceBlog,http://blog.kokuaviewer.org/" /> | 854 | userdata="WebLaunchImprudenceComms,http://wiki.kokuaviewer.org/wiki/Communication_Channels" /> |
851 | </menu_item_call> | 855 | </menu_item_call> |
852 | <menu_item_call name="Imprudence Forums" | 856 | <menu_item_call name="Imprudence bug reporting" |
853 | label="Imprudence Forums"> | 857 | label="Imprudence bug reporting"> |
854 | <on_click function="PromptShowURL" | 858 | <on_click function="PromptShowURL" |
855 | userdata="WebLaunchImprudenceForums,http://forums.kokuaviewer.org/" /> | 859 | userdata="WebLaunchImprudenceBugs,http://wiki.kokuaviewer.org/wiki/Reporting_a_bug" /> |
856 | </menu_item_call> | 860 | </menu_item_call> |
857 | <menu_item_separator /> | 861 | <menu_item_separator /> |
858 | <menu_item_call name="Scripting Portal" | 862 | <menu_item_call name="Scripting Portal" |
@@ -1323,6 +1327,12 @@ | |||
1323 | <on_check function="Advanced.CheckInfoDisplay" | 1327 | <on_check function="Advanced.CheckInfoDisplay" |
1324 | userdata="sculpt" /> | 1328 | userdata="sculpt" /> |
1325 | </menu_item_check> | 1329 | </menu_item_check> |
1330 | <menu_item_check name="ShadowFrusta" label="Shadow Frusta"> | ||
1331 | <on_click function="Advanced.ToggleInfoDisplay" | ||
1332 | userdata="shadow frusta" /> | ||
1333 | <on_check function="Advanced.CheckInfoDisplay" | ||
1334 | userdata="shadow frusta" /> | ||
1335 | </menu_item_check> | ||
1326 | <menu_item_check name="Vectorize Perf Test" | 1336 | <menu_item_check name="Vectorize Perf Test" |
1327 | label="Vectorize Perf Test"> | 1337 | label="Vectorize Perf Test"> |
1328 | <on_click function="ToggleControl" | 1338 | <on_click function="ToggleControl" |
@@ -1644,23 +1654,17 @@ | |||
1644 | <menu_item_call name="Dump Inventory" label="Dump Inventory"> | 1654 | <menu_item_call name="Dump Inventory" label="Dump Inventory"> |
1645 | <on_click function="Advanced.DumpInventory" userdata="" /> | 1655 | <on_click function="Advanced.DumpInventory" userdata="" /> |
1646 | </menu_item_call> | 1656 | </menu_item_call> |
1647 | <menu_item_call name="Dump Focus Holder" | 1657 | <menu_item_call name="Dump Focus Holder" label="Dump Focus Holder"> |
1648 | label="Dump Focus Holder" | ||
1649 | shortcut="control|alt|F"> | ||
1650 | <on_click function="Advanced.DumpFocusHolder" userdata="" /> | 1658 | <on_click function="Advanced.DumpFocusHolder" userdata="" /> |
1651 | </menu_item_call> | 1659 | </menu_item_call> |
1652 | <menu_item_call name="Print Selected Object Info" | 1660 | <menu_item_call name="Print Selected Object Info" label="Print Selected Object Info"> |
1653 | label="Print Selected Object Info" | ||
1654 | shortcut="control|shift|P"> | ||
1655 | <on_click function="Advanced.PrintSelectedObjectInfo" | 1661 | <on_click function="Advanced.PrintSelectedObjectInfo" |
1656 | userdata="" /> | 1662 | userdata="" /> |
1657 | </menu_item_call> | 1663 | </menu_item_call> |
1658 | <menu_item_call name="Print Agent Info" | 1664 | <menu_item_call name="Print Agent Info" label="Print Agent Info"> |
1659 | label="Print Agent Info" shortcut="shift|P"> | ||
1660 | <on_click function="Advanced.PrintAgentInfo" userdata="" /> | 1665 | <on_click function="Advanced.PrintAgentInfo" userdata="" /> |
1661 | </menu_item_call> | 1666 | </menu_item_call> |
1662 | <menu_item_call name="Memory Stats" label="Memory Stats" | 1667 | <menu_item_call name="Memory Stats" label="Memory Stats"> |
1663 | shortcut="control|alt|shift|M"> | ||
1664 | <on_click function="Advanced.PrintTextureMemoryStats" | 1668 | <on_click function="Advanced.PrintTextureMemoryStats" |
1665 | userdata="" /> | 1669 | userdata="" /> |
1666 | </menu_item_call> | 1670 | </menu_item_call> |
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 5f97d74..a31f609 100644 --- a/linden/indra/newview/skins/default/xui/en-us/notifications.xml +++ b/linden/indra/newview/skins/default/xui/en-us/notifications.xml | |||
@@ -7245,11 +7245,11 @@ Show Look At is a debug setting that displays where an avatar's head is looking. | |||
7245 | 7245 | ||
7246 | <notification | 7246 | <notification |
7247 | icon="alert.tga" | 7247 | icon="alert.tga" |
7248 | name="WebLaunchImprudenceBlog" | 7248 | name="WebLaunchImprudenceComms" |
7249 | type="alert"> | 7249 | type="alert"> |
7250 | Go to the Official Imprudence Blog, for the Latest News and Information. | 7250 | Go to the Official Imprudence communications channels, to discuss the Imprudence Project. |
7251 | <usetemplate | 7251 | <usetemplate |
7252 | ignoretext="When launching web browser to view the blog" | 7252 | ignoretext="When launching web browser to view the communications channels" |
7253 | name="okcancelignore" | 7253 | name="okcancelignore" |
7254 | notext="Cancel" | 7254 | notext="Cancel" |
7255 | yestext="Go to page"/> | 7255 | yestext="Go to page"/> |
@@ -7257,11 +7257,11 @@ Go to the Official Imprudence Blog, for the Latest News and Information. | |||
7257 | 7257 | ||
7258 | <notification | 7258 | <notification |
7259 | icon="alert.tga" | 7259 | icon="alert.tga" |
7260 | name="WebLaunchImprudenceForums" | 7260 | name="WebLaunchImprudenceBugs" |
7261 | type="alert"> | 7261 | type="alert"> |
7262 | Go to the Official Imprudence Forums to discuss the Imprudence Project. | 7262 | Go to the Official Imprudence bug and feature trackers, to report bugs and request new features. |
7263 | <usetemplate | 7263 | <usetemplate |
7264 | ignoretext="When launching web browser to view the forums" | 7264 | ignoretext="When launching web browser to view the bug and feature trackers" |
7265 | name="okcancelignore" | 7265 | name="okcancelignore" |
7266 | notext="Cancel" | 7266 | notext="Cancel" |
7267 | yestext="Go to page"/> | 7267 | yestext="Go to page"/> |
diff --git a/linden/indra/newview/skins/default/xui/es/floater_html.xml b/linden/indra/newview/skins/default/xui/es/floater_html.xml index 5977fff..8f469b1 100644 --- a/linden/indra/newview/skins/default/xui/es/floater_html.xml +++ b/linden/indra/newview/skins/default/xui/es/floater_html.xml | |||
@@ -4,10 +4,4 @@ | |||
4 | <button label="Atrás" name="back_btn"/> | 4 | <button label="Atrás" name="back_btn"/> |
5 | <button label="Adelante" name="forward_btn"/> | 5 | <button label="Adelante" name="forward_btn"/> |
6 | <button label="Ir" name="go_btn"/> | 6 | <button label="Ir" name="go_btn"/> |
7 | <string name="home_page_url"> | ||
8 | http://www.secondlife.com | ||
9 | </string> | ||
10 | <string name="support_page_url"> | ||
11 | http://support.secondlife.com | ||
12 | </string> | ||
13 | </floater> | 7 | </floater> |
diff --git a/linden/indra/newview/skins/default/xui/fr/floater_html.xml b/linden/indra/newview/skins/default/xui/fr/floater_html.xml index 1538189..f335617 100644 --- a/linden/indra/newview/skins/default/xui/fr/floater_html.xml +++ b/linden/indra/newview/skins/default/xui/fr/floater_html.xml | |||
@@ -7,10 +7,4 @@ | |||
7 | <button label="Arrêter" name="stop_btn" /> | 7 | <button label="Arrêter" name="stop_btn" /> |
8 | <button label="Domicile" name="home_btn" /> | 8 | <button label="Domicile" name="home_btn" /> |
9 | <button label="Aller" name="go_btn" /> | 9 | <button label="Aller" name="go_btn" /> |
10 | <string name="home_page_url"> | ||
11 | http://www.secondlife.com | ||
12 | </string> | ||
13 | <string name="support_page_url"> | ||
14 | http://support.secondlife.com | ||
15 | </string> | ||
16 | </floater> | 10 | </floater> |
diff --git a/linden/indra/newview/skins/default/xui/hu/floater_html.xml b/linden/indra/newview/skins/default/xui/hu/floater_html.xml index 21b6a21..5923c52 100644 --- a/linden/indra/newview/skins/default/xui/hu/floater_html.xml +++ b/linden/indra/newview/skins/default/xui/hu/floater_html.xml | |||
@@ -5,9 +5,6 @@ | |||
5 | <button label="Kezdő helyszín" name="home_btn" /> | 5 | <button label="Kezdő helyszín" name="home_btn" /> |
6 | <button label="Előre" name="forward_btn" /> | 6 | <button label="Előre" name="forward_btn" /> |
7 | <button label="Menj" name="go_btn" /> | 7 | <button label="Menj" name="go_btn" /> |
8 | <text name="home_page_url"> | ||
9 | http://www.google.com | ||
10 | </text> | ||
11 | <text name="in-world_help_title"> | 8 | <text name="in-world_help_title"> |
12 | In-World segítség | 9 | In-World segítség |
13 | </text> | 10 | </text> |
diff --git a/linden/indra/newview/skins/default/xui/it/floater_html.xml b/linden/indra/newview/skins/default/xui/it/floater_html.xml index 4080f80..b2d1951 100644 --- a/linden/indra/newview/skins/default/xui/it/floater_html.xml +++ b/linden/indra/newview/skins/default/xui/it/floater_html.xml | |||
@@ -4,10 +4,4 @@ | |||
4 | <button label="Indietro" name="back_btn"/> | 4 | <button label="Indietro" name="back_btn"/> |
5 | <button label="Avanti" name="forward_btn"/> | 5 | <button label="Avanti" name="forward_btn"/> |
6 | <button label="Vai" name="go_btn"/> | 6 | <button label="Vai" name="go_btn"/> |
7 | <string name="home_page_url"> | ||
8 | http://www.secondlife.com | ||
9 | </string> | ||
10 | <string name="support_page_url"> | ||
11 | http://support.secondlife.com | ||
12 | </string> | ||
13 | </floater> | 7 | </floater> |
diff --git a/linden/indra/newview/skins/default/xui/ja/floater_html.xml b/linden/indra/newview/skins/default/xui/ja/floater_html.xml index 62aac82..1cb5384 100644 --- a/linden/indra/newview/skins/default/xui/ja/floater_html.xml +++ b/linden/indra/newview/skins/default/xui/ja/floater_html.xml | |||
@@ -5,10 +5,4 @@ | |||
5 | <button label="ホーム" name="home_btn" /> | 5 | <button label="ホーム" name="home_btn" /> |
6 | <button label="進む" name="forward_btn" /> | 6 | <button label="進む" name="forward_btn" /> |
7 | <button label="移動" name="go_btn" /> | 7 | <button label="移動" name="go_btn" /> |
8 | <string name="home_page_url"> | ||
9 | http://jp.secondlife.com | ||
10 | </string> | ||
11 | <string name="support_page_url"> | ||
12 | http://wiki.secondlife.com/wiki/Knowledge_Base/ja | ||
13 | </string> | ||
14 | </floater> | 8 | </floater> |
diff --git a/linden/indra/newview/skins/default/xui/nl/floater_html.xml b/linden/indra/newview/skins/default/xui/nl/floater_html.xml index 1604248..0147319 100644 --- a/linden/indra/newview/skins/default/xui/nl/floater_html.xml +++ b/linden/indra/newview/skins/default/xui/nl/floater_html.xml | |||
@@ -4,10 +4,4 @@ | |||
4 | <button label="Terug" name="back_btn"/> | 4 | <button label="Terug" name="back_btn"/> |
5 | <button label="Vooruit" name="forward_btn"/> | 5 | <button label="Vooruit" name="forward_btn"/> |
6 | <button label="Ga" name="go_btn"/> | 6 | <button label="Ga" name="go_btn"/> |
7 | <string name="home_page_url"> | ||
8 | http://www.secondlife.com | ||
9 | </string> | ||
10 | <string name="support_page_url"> | ||
11 | http://support.secondlife.com | ||
12 | </string> | ||
13 | </floater> | 7 | </floater> |
diff --git a/linden/indra/newview/skins/default/xui/pl/floater_html.xml b/linden/indra/newview/skins/default/xui/pl/floater_html.xml index 90d29e1..645fe80 100755 --- a/linden/indra/newview/skins/default/xui/pl/floater_html.xml +++ b/linden/indra/newview/skins/default/xui/pl/floater_html.xml | |||
@@ -5,10 +5,4 @@ | |||
5 | <button label="Prześlij dalej" name="forward_btn" width="85"/> | 5 | <button label="Prześlij dalej" name="forward_btn" width="85"/> |
6 | <line_editor left_delta="100" name="url_edit" width="420" /> | 6 | <line_editor left_delta="100" name="url_edit" width="420" /> |
7 | <button label="Idź" name="go_btn" left_delta="425" /> | 7 | <button label="Idź" name="go_btn" left_delta="425" /> |
8 | <string name="home_page_url"> | ||
9 | http://www.secondlife.com | ||
10 | </string> | ||
11 | <string name="support_page_url"> | ||
12 | http://support.secondlife.com | ||
13 | </string> | ||
14 | </floater> | 8 | </floater> |
diff --git a/linden/indra/newview/skins/default/xui/pt/floater_html.xml b/linden/indra/newview/skins/default/xui/pt/floater_html.xml index 3d500dd..aaa49c8 100644 --- a/linden/indra/newview/skins/default/xui/pt/floater_html.xml +++ b/linden/indra/newview/skins/default/xui/pt/floater_html.xml | |||
@@ -4,10 +4,4 @@ | |||
4 | <button label="Voltar" name="back_btn"/> | 4 | <button label="Voltar" name="back_btn"/> |
5 | <button label="Adiantar" name="forward_btn"/> | 5 | <button label="Adiantar" name="forward_btn"/> |
6 | <button label="Ir" name="go_btn"/> | 6 | <button label="Ir" name="go_btn"/> |
7 | <string name="home_page_url"> | ||
8 | http://www.secondlife.com | ||
9 | </string> | ||
10 | <string name="support_page_url"> | ||
11 | http://support.secondlife.com | ||
12 | </string> | ||
13 | </floater> | 7 | </floater> |
diff --git a/linden/indra/newview/skins/default/xui/ru/floater_html.xml b/linden/indra/newview/skins/default/xui/ru/floater_html.xml index 4a5942b..6492440 100644 --- a/linden/indra/newview/skins/default/xui/ru/floater_html.xml +++ b/linden/indra/newview/skins/default/xui/ru/floater_html.xml | |||
@@ -4,7 +4,4 @@ | |||
4 | <button label="Назад" name="back_btn" /> | 4 | <button label="Назад" name="back_btn" /> |
5 | <button label="Вперед" name="forward_btn" /> | 5 | <button label="Вперед" name="forward_btn" /> |
6 | <button label="Перейти" name="go_btn" /> | 6 | <button label="Перейти" name="go_btn" /> |
7 | <string name="home_page_url"> | ||
8 | http://www.secondlife.com | ||
9 | </string> | ||
10 | </floater> | 7 | </floater> |
diff --git a/linden/indra/newview/skins/default/xui/uk/floater_html.xml b/linden/indra/newview/skins/default/xui/uk/floater_html.xml index 8bde260..11a10cf 100644 --- a/linden/indra/newview/skins/default/xui/uk/floater_html.xml +++ b/linden/indra/newview/skins/default/xui/uk/floater_html.xml | |||
@@ -4,7 +4,4 @@ | |||
4 | <button label="Назад" name="back_btn" /> | 4 | <button label="Назад" name="back_btn" /> |
5 | <button label="Вперед" name="forward_btn" /> | 5 | <button label="Вперед" name="forward_btn" /> |
6 | <button label="Перейти" name="go_btn" /> | 6 | <button label="Перейти" name="go_btn" /> |
7 | <string name="home_page_url"> | ||
8 | http://www.secondlife.com | ||
9 | </string> | ||
10 | </floater> | 7 | </floater> |
diff --git a/linden/indra/newview/skins/default/xui/zh/notifications.xml b/linden/indra/newview/skins/default/xui/zh/notifications.xml index ea49e35..9ee9d2f 100644 --- a/linden/indra/newview/skins/default/xui/zh/notifications.xml +++ b/linden/indra/newview/skins/default/xui/zh/notifications.xml | |||
@@ -3624,24 +3624,6 @@ GLOW — 发光 | |||
3624 | name="okignore" | 3624 | name="okignore" |
3625 | yestext="OK"/> | 3625 | yestext="OK"/> |
3626 | </notification> | 3626 | </notification> |
3627 | |||
3628 | <notification name="WebLaunchImprudenceBlog"> | ||
3629 | 前往 Imprudence 官方日志阅读最新的新闻和信息。 | ||
3630 | <usetemplate | ||
3631 | ignoretext="打开网络浏览器阅读网络日志时" | ||
3632 | name="okcancelignore" | ||
3633 | notext="取消" | ||
3634 | yestext="打开网页"/> | ||
3635 | </notification> | ||
3636 | |||
3637 | <notification name="WebLaunchImprudenceForums"> | ||
3638 | 前往 Imprudence 官方论坛讨论 Imprudence 工程。 | ||
3639 | <usetemplate | ||
3640 | ignoretext="打开网络浏览器阅读论坛时" | ||
3641 | name="okcancelignore" | ||
3642 | notext="取消" | ||
3643 | yestext="打开网页"/> | ||
3644 | </notification> | ||
3645 | 3627 | ||
3646 | <notification | 3628 | <notification |
3647 | icon="alert.tga" | 3629 | icon="alert.tga" |
diff --git a/linden/indra/newview/skins/gemini/colors_base.xml b/linden/indra/newview/skins/gemini/colors_base.xml index 0b65586..31e6c57 100644 --- a/linden/indra/newview/skins/gemini/colors_base.xml +++ b/linden/indra/newview/skins/gemini/colors_base.xml | |||
@@ -66,7 +66,7 @@ | |||
66 | <ScrollBgWriteableColor value="33, 33, 33, 80" /> | 66 | <ScrollBgWriteableColor value="33, 33, 33, 80" /> |
67 | <ScrollBGStripeColor value="100, 100, 100, 25" /> | 67 | <ScrollBGStripeColor value="100, 100, 100, 25" /> |
68 | <ScrollDisabledColor value="33, 33, 33, 204" /> | 68 | <ScrollDisabledColor value="33, 33, 33, 204" /> |
69 | <ScrollSelectedBGColor value="222, 222, 222, 150" /> | 69 | <ScrollSelectedBGColor value="33, 33, 33, 204" /> |
70 | <ScrollSelectedFGColor value="255, 255, 255, 255" /> <!-- Text color --> | 70 | <ScrollSelectedFGColor value="255, 255, 255, 255" /> <!-- Text color --> |
71 | <ScrollUnselectedColor value="222, 222, 222, 150" /> <!-- Text color --> | 71 | <ScrollUnselectedColor value="222, 222, 222, 150" /> <!-- Text color --> |
72 | <ScrollHighlightedColor value="222, 222, 222, 80" /> <!-- Hover color --> | 72 | <ScrollHighlightedColor value="222, 222, 222, 80" /> <!-- Hover color --> |
diff --git a/linden/indra/newview/skins/silver/textures/0098b015-3daf-4cfe-a72f-915369ea97c2.tga b/linden/indra/newview/skins/silver/textures/0098b015-3daf-4cfe-a72f-915369ea97c2.tga new file mode 100644 index 0000000..5c86082 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/0098b015-3daf-4cfe-a72f-915369ea97c2.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/3c18c87e-5f50-14e2-e744-f44734aa365f.tga b/linden/indra/newview/skins/silver/textures/3c18c87e-5f50-14e2-e744-f44734aa365f.tga new file mode 100644 index 0000000..79ba740 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/3c18c87e-5f50-14e2-e744-f44734aa365f.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/7a0b1bdb-b5d9-4df5-bac2-ba230da93b5b.tga b/linden/indra/newview/skins/silver/textures/7a0b1bdb-b5d9-4df5-bac2-ba230da93b5b.tga new file mode 100644 index 0000000..60c62e9 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/7a0b1bdb-b5d9-4df5-bac2-ba230da93b5b.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/7dabc040-ec13-2309-ddf7-4f161f6de2f4.tga b/linden/indra/newview/skins/silver/textures/7dabc040-ec13-2309-ddf7-4f161f6de2f4.tga new file mode 100644 index 0000000..7b55a05 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/7dabc040-ec13-2309-ddf7-4f161f6de2f4.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/9cad3e6d-2d6d-107d-f8ab-5ba272b5bfe1.tga b/linden/indra/newview/skins/silver/textures/9cad3e6d-2d6d-107d-f8ab-5ba272b5bfe1.tga new file mode 100644 index 0000000..4bed5ce --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/9cad3e6d-2d6d-107d-f8ab-5ba272b5bfe1.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/active_speakers.tga b/linden/indra/newview/skins/silver/textures/active_speakers.tga new file mode 100644 index 0000000..ccd902c --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/active_speakers.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/active_voice_tab.tga b/linden/indra/newview/skins/silver/textures/active_voice_tab.tga new file mode 100644 index 0000000..1a68c98 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/active_voice_tab.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/arrow_down.tga b/linden/indra/newview/skins/silver/textures/arrow_down.tga new file mode 100644 index 0000000..5b05df1 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/arrow_down.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/arrow_left.tga b/linden/indra/newview/skins/silver/textures/arrow_left.tga new file mode 100644 index 0000000..43fbf12 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/arrow_left.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/arrow_right.tga b/linden/indra/newview/skins/silver/textures/arrow_right.tga new file mode 100644 index 0000000..a92ac9c --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/arrow_right.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/arrow_up.tga b/linden/indra/newview/skins/silver/textures/arrow_up.tga new file mode 100644 index 0000000..2c27ed1 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/arrow_up.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/b4870163-6208-42a9-9801-93133bf9a6cd.tga b/linden/indra/newview/skins/silver/textures/b4870163-6208-42a9-9801-93133bf9a6cd.tga new file mode 100644 index 0000000..4bc75f5 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/b4870163-6208-42a9-9801-93133bf9a6cd.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/black.tga b/linden/indra/newview/skins/silver/textures/black.tga new file mode 100644 index 0000000..e368ea4 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/black.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/btn_chatbar.tga b/linden/indra/newview/skins/silver/textures/btn_chatbar.tga new file mode 100644 index 0000000..52bd97a --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/btn_chatbar.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/btn_chatbar_selected.tga b/linden/indra/newview/skins/silver/textures/btn_chatbar_selected.tga new file mode 100644 index 0000000..b8398b5 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/btn_chatbar_selected.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/button_anim_pause.tga b/linden/indra/newview/skins/silver/textures/button_anim_pause.tga new file mode 100644 index 0000000..ccd4a08 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/button_anim_pause.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/button_anim_pause_selected.tga b/linden/indra/newview/skins/silver/textures/button_anim_pause_selected.tga new file mode 100644 index 0000000..d1f9a66 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/button_anim_pause_selected.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/button_anim_play.tga b/linden/indra/newview/skins/silver/textures/button_anim_play.tga new file mode 100644 index 0000000..a19dffd --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/button_anim_play.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/button_anim_play_selected.tga b/linden/indra/newview/skins/silver/textures/button_anim_play_selected.tga new file mode 100644 index 0000000..143ec5d --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/button_anim_play_selected.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/button_anim_stop.tga b/linden/indra/newview/skins/silver/textures/button_anim_stop.tga new file mode 100644 index 0000000..2615d26 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/button_anim_stop.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/button_anim_stop_selected.tga b/linden/indra/newview/skins/silver/textures/button_anim_stop_selected.tga new file mode 100644 index 0000000..a271b3e --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/button_anim_stop_selected.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/button_disabled_32x128.tga b/linden/indra/newview/skins/silver/textures/button_disabled_32x128.tga new file mode 100644 index 0000000..9be524e --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/button_disabled_32x128.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/button_enabled_32x128.tga b/linden/indra/newview/skins/silver/textures/button_enabled_32x128.tga new file mode 100644 index 0000000..3ca7479 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/button_enabled_32x128.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/button_enabled_selected_32x128.tga b/linden/indra/newview/skins/silver/textures/button_enabled_selected_32x128.tga new file mode 100644 index 0000000..759b639 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/button_enabled_selected_32x128.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/c1e21504-f136-451d-b8e9-929037812f1d.tga b/linden/indra/newview/skins/silver/textures/c1e21504-f136-451d-b8e9-929037812f1d.tga new file mode 100644 index 0000000..79abce1 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/c1e21504-f136-451d-b8e9-929037812f1d.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/c63f124c-6340-4fbf-b59e-0869a44adb64.tga b/linden/indra/newview/skins/silver/textures/c63f124c-6340-4fbf-b59e-0869a44adb64.tga new file mode 100644 index 0000000..061f1f2 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/c63f124c-6340-4fbf-b59e-0869a44adb64.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/ce15fd63-b0b6-463c-a37d-ea6393208b3e.tga b/linden/indra/newview/skins/silver/textures/ce15fd63-b0b6-463c-a37d-ea6393208b3e.tga new file mode 100644 index 0000000..50d686f --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/ce15fd63-b0b6-463c-a37d-ea6393208b3e.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/checkbox_disabled_false.tga b/linden/indra/newview/skins/silver/textures/checkbox_disabled_false.tga new file mode 100644 index 0000000..074ded7 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/checkbox_disabled_false.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/checkbox_disabled_true.tga b/linden/indra/newview/skins/silver/textures/checkbox_disabled_true.tga new file mode 100644 index 0000000..79d2590 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/checkbox_disabled_true.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/checkbox_enabled_false.tga b/linden/indra/newview/skins/silver/textures/checkbox_enabled_false.tga new file mode 100644 index 0000000..8e5796f --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/checkbox_enabled_false.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/checkbox_enabled_true.tga b/linden/indra/newview/skins/silver/textures/checkbox_enabled_true.tga new file mode 100644 index 0000000..175b07d --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/checkbox_enabled_true.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/close_in_blue.tga b/linden/indra/newview/skins/silver/textures/close_in_blue.tga new file mode 100644 index 0000000..69f3831 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/close_in_blue.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/close_inactive_blue.tga b/linden/indra/newview/skins/silver/textures/close_inactive_blue.tga new file mode 100644 index 0000000..fcd62aa --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/close_inactive_blue.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/closebox.tga b/linden/indra/newview/skins/silver/textures/closebox.tga new file mode 100644 index 0000000..616dc48 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/closebox.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/combobox_arrow.tga b/linden/indra/newview/skins/silver/textures/combobox_arrow.tga new file mode 100644 index 0000000..0f3efe9 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/combobox_arrow.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/darkgray.tga b/linden/indra/newview/skins/silver/textures/darkgray.tga new file mode 100644 index 0000000..e69be08 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/darkgray.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/down_arrow.png b/linden/indra/newview/skins/silver/textures/down_arrow.png new file mode 100644 index 0000000..ea89b50 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/down_arrow.png | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/eye_button_active.tga b/linden/indra/newview/skins/silver/textures/eye_button_active.tga new file mode 100644 index 0000000..5c849eb --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/eye_button_active.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/eye_button_inactive.tga b/linden/indra/newview/skins/silver/textures/eye_button_inactive.tga new file mode 100644 index 0000000..82809c2 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/eye_button_inactive.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/ff9a71eb-7414-4cf8-866e-a701deb7c3cf.tga b/linden/indra/newview/skins/silver/textures/ff9a71eb-7414-4cf8-866e-a701deb7c3cf.tga new file mode 100644 index 0000000..ac9213b --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/ff9a71eb-7414-4cf8-866e-a701deb7c3cf.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/ff_edit_mine_button.tga b/linden/indra/newview/skins/silver/textures/ff_edit_mine_button.tga new file mode 100644 index 0000000..4d54e42 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/ff_edit_mine_button.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/ff_edit_theirs_button.tga b/linden/indra/newview/skins/silver/textures/ff_edit_theirs_button.tga new file mode 100644 index 0000000..1fc2f04 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/ff_edit_theirs_button.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/ff_online_status_button.tga b/linden/indra/newview/skins/silver/textures/ff_online_status_button.tga new file mode 100644 index 0000000..5772a94 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/ff_online_status_button.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/ff_visible_map_button.tga b/linden/indra/newview/skins/silver/textures/ff_visible_map_button.tga new file mode 100644 index 0000000..be1ef1e --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/ff_visible_map_button.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/ff_visible_online_button.tga b/linden/indra/newview/skins/silver/textures/ff_visible_online_button.tga new file mode 100644 index 0000000..e27c2f6 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/ff_visible_online_button.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/flyout_btn_left.tga b/linden/indra/newview/skins/silver/textures/flyout_btn_left.tga new file mode 100644 index 0000000..6263f6e --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/flyout_btn_left.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/flyout_btn_left_disabled.tga b/linden/indra/newview/skins/silver/textures/flyout_btn_left_disabled.tga new file mode 100644 index 0000000..a63c8c0 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/flyout_btn_left_disabled.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/flyout_btn_left_selected.tga b/linden/indra/newview/skins/silver/textures/flyout_btn_left_selected.tga new file mode 100644 index 0000000..c22a71b --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/flyout_btn_left_selected.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/flyout_btn_right.tga b/linden/indra/newview/skins/silver/textures/flyout_btn_right.tga new file mode 100644 index 0000000..b86451f --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/flyout_btn_right.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/flyout_btn_right_disabled.tga b/linden/indra/newview/skins/silver/textures/flyout_btn_right_disabled.tga new file mode 100644 index 0000000..c4efcaa --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/flyout_btn_right_disabled.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/flyout_btn_right_selected.tga b/linden/indra/newview/skins/silver/textures/flyout_btn_right_selected.tga new file mode 100644 index 0000000..e6d79e2 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/flyout_btn_right_selected.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/icn_chatbar.tga b/linden/indra/newview/skins/silver/textures/icn_chatbar.tga new file mode 100644 index 0000000..67662f7 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/icn_chatbar.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/icn_label_media.tga b/linden/indra/newview/skins/silver/textures/icn_label_media.tga new file mode 100644 index 0000000..603d607 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/icn_label_media.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/icn_label_music.tga b/linden/indra/newview/skins/silver/textures/icn_label_music.tga new file mode 100644 index 0000000..9acf8f4 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/icn_label_music.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/icn_label_web.tga b/linden/indra/newview/skins/silver/textures/icn_label_web.tga new file mode 100644 index 0000000..577fc02 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/icn_label_web.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/icn_media-pause.tga b/linden/indra/newview/skins/silver/textures/icn_media-pause.tga new file mode 100644 index 0000000..a2cfeee --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/icn_media-pause.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/icn_media-play.tga b/linden/indra/newview/skins/silver/textures/icn_media-play.tga new file mode 100644 index 0000000..c810318 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/icn_media-play.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/icn_media_movie.tga b/linden/indra/newview/skins/silver/textures/icn_media_movie.tga new file mode 100644 index 0000000..603d607 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/icn_media_movie.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/icn_media_web.tga b/linden/indra/newview/skins/silver/textures/icn_media_web.tga new file mode 100644 index 0000000..bf962ae --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/icn_media_web.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/icn_music-pause.tga b/linden/indra/newview/skins/silver/textures/icn_music-pause.tga new file mode 100644 index 0000000..cfa092c --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/icn_music-pause.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/icn_music-play.tga b/linden/indra/newview/skins/silver/textures/icn_music-play.tga new file mode 100644 index 0000000..1854abc --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/icn_music-play.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/icn_pause.tga b/linden/indra/newview/skins/silver/textures/icn_pause.tga new file mode 100644 index 0000000..2808510 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/icn_pause.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/icn_play.tga b/linden/indra/newview/skins/silver/textures/icn_play.tga new file mode 100644 index 0000000..0833398 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/icn_play.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/icn_rounded-text-field.tga b/linden/indra/newview/skins/silver/textures/icn_rounded-text-field.tga new file mode 100644 index 0000000..20953ad --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/icn_rounded-text-field.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/icn_slide-groove_dark.tga b/linden/indra/newview/skins/silver/textures/icn_slide-groove_dark.tga new file mode 100644 index 0000000..5ce7a9b --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/icn_slide-groove_dark.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/icn_slide-highlight.tga b/linden/indra/newview/skins/silver/textures/icn_slide-highlight.tga new file mode 100644 index 0000000..e626c5a --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/icn_slide-highlight.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/icn_slide-thumb_dark.tga b/linden/indra/newview/skins/silver/textures/icn_slide-thumb_dark.tga new file mode 100644 index 0000000..86c6e59 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/icn_slide-thumb_dark.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/icn_speaker-muted_dark.tga b/linden/indra/newview/skins/silver/textures/icn_speaker-muted_dark.tga new file mode 100644 index 0000000..0a4bb99 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/icn_speaker-muted_dark.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/icn_speaker_dark.tga b/linden/indra/newview/skins/silver/textures/icn_speaker_dark.tga new file mode 100644 index 0000000..d19ce60 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/icn_speaker_dark.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/icn_stop.tga b/linden/indra/newview/skins/silver/textures/icn_stop.tga new file mode 100644 index 0000000..c7f12f2 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/icn_stop.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/icn_toolbar_build.tga b/linden/indra/newview/skins/silver/textures/icn_toolbar_build.tga new file mode 100644 index 0000000..3a56ea7 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/icn_toolbar_build.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/icn_toolbar_fly.tga b/linden/indra/newview/skins/silver/textures/icn_toolbar_fly.tga new file mode 100644 index 0000000..da3d694 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/icn_toolbar_fly.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/icn_toolbar_inventory.tga b/linden/indra/newview/skins/silver/textures/icn_toolbar_inventory.tga new file mode 100644 index 0000000..3197c08 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/icn_toolbar_inventory.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/icn_toolbar_map.tga b/linden/indra/newview/skins/silver/textures/icn_toolbar_map.tga new file mode 100644 index 0000000..ba7bf97 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/icn_toolbar_map.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/icn_toolbar_minimap.tga b/linden/indra/newview/skins/silver/textures/icn_toolbar_minimap.tga new file mode 100644 index 0000000..d574584 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/icn_toolbar_minimap.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/icn_toolbar_search.tga b/linden/indra/newview/skins/silver/textures/icn_toolbar_search.tga new file mode 100644 index 0000000..bf1702e --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/icn_toolbar_search.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/icn_toolbar_snapshot.tga b/linden/indra/newview/skins/silver/textures/icn_toolbar_snapshot.tga new file mode 100644 index 0000000..e8bfaa7 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/icn_toolbar_snapshot.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/icn_voice-call-end.tga b/linden/indra/newview/skins/silver/textures/icn_voice-call-end.tga new file mode 100644 index 0000000..7792bc1 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/icn_voice-call-end.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/icn_voice-call-start.tga b/linden/indra/newview/skins/silver/textures/icn_voice-call-start.tga new file mode 100644 index 0000000..062820b --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/icn_voice-call-start.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/icn_voice-groupfocus.tga b/linden/indra/newview/skins/silver/textures/icn_voice-groupfocus.tga new file mode 100644 index 0000000..6d49ede --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/icn_voice-groupfocus.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/icn_voice-localchat.tga b/linden/indra/newview/skins/silver/textures/icn_voice-localchat.tga new file mode 100644 index 0000000..8a377c1 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/icn_voice-localchat.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/icn_voice-pvtfocus.tga b/linden/indra/newview/skins/silver/textures/icn_voice-pvtfocus.tga new file mode 100644 index 0000000..d858245 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/icn_voice-pvtfocus.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/icn_voice_ptt-off.tga b/linden/indra/newview/skins/silver/textures/icn_voice_ptt-off.tga new file mode 100644 index 0000000..d7e9cd2 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/icn_voice_ptt-off.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/icn_voice_ptt-on-lvl1.tga b/linden/indra/newview/skins/silver/textures/icn_voice_ptt-on-lvl1.tga new file mode 100644 index 0000000..99c9a71 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/icn_voice_ptt-on-lvl1.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/icn_voice_ptt-on-lvl2.tga b/linden/indra/newview/skins/silver/textures/icn_voice_ptt-on-lvl2.tga new file mode 100644 index 0000000..26ae300 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/icn_voice_ptt-on-lvl2.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/icn_voice_ptt-on-lvl3.tga b/linden/indra/newview/skins/silver/textures/icn_voice_ptt-on-lvl3.tga new file mode 100644 index 0000000..4b8f5a2 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/icn_voice_ptt-on-lvl3.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/icn_voice_ptt-on.tga b/linden/indra/newview/skins/silver/textures/icn_voice_ptt-on.tga new file mode 100644 index 0000000..b712c81 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/icn_voice_ptt-on.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/icon_auction.tga b/linden/indra/newview/skins/silver/textures/icon_auction.tga new file mode 100644 index 0000000..76d1227 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/icon_auction.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/icon_avatar_offline.tga b/linden/indra/newview/skins/silver/textures/icon_avatar_offline.tga new file mode 100644 index 0000000..ea6a076 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/icon_avatar_offline.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/icon_avatar_online.tga b/linden/indra/newview/skins/silver/textures/icon_avatar_online.tga new file mode 100644 index 0000000..13f8da8 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/icon_avatar_online.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/icon_day_cycle.tga b/linden/indra/newview/skins/silver/textures/icon_day_cycle.tga new file mode 100644 index 0000000..98927fc --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/icon_day_cycle.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/icon_event.tga b/linden/indra/newview/skins/silver/textures/icon_event.tga new file mode 100644 index 0000000..2c06d08 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/icon_event.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/icon_event_mature.tga b/linden/indra/newview/skins/silver/textures/icon_event_mature.tga new file mode 100644 index 0000000..71067c0 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/icon_event_mature.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/icon_for_sale.tga b/linden/indra/newview/skins/silver/textures/icon_for_sale.tga new file mode 100644 index 0000000..cb7f313 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/icon_for_sale.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/icon_group.tga b/linden/indra/newview/skins/silver/textures/icon_group.tga new file mode 100644 index 0000000..faecb81 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/icon_group.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/icon_groupnotice.tga b/linden/indra/newview/skins/silver/textures/icon_groupnotice.tga new file mode 100644 index 0000000..115e4e2 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/icon_groupnotice.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/icon_groupnoticeinventory.tga b/linden/indra/newview/skins/silver/textures/icon_groupnoticeinventory.tga new file mode 100644 index 0000000..f713020 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/icon_groupnoticeinventory.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/icon_lock.tga b/linden/indra/newview/skins/silver/textures/icon_lock.tga new file mode 100644 index 0000000..98d8a2d --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/icon_lock.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/icon_top_pick.tga b/linden/indra/newview/skins/silver/textures/icon_top_pick.tga new file mode 100644 index 0000000..0b34882 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/icon_top_pick.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/inv_folder_animation.tga b/linden/indra/newview/skins/silver/textures/inv_folder_animation.tga new file mode 100644 index 0000000..7466825 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/inv_folder_animation.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/inv_folder_bodypart.tga b/linden/indra/newview/skins/silver/textures/inv_folder_bodypart.tga new file mode 100644 index 0000000..3262605 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/inv_folder_bodypart.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/inv_folder_callingcard.tga b/linden/indra/newview/skins/silver/textures/inv_folder_callingcard.tga new file mode 100644 index 0000000..d7e0ab7 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/inv_folder_callingcard.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/inv_folder_clothing.tga b/linden/indra/newview/skins/silver/textures/inv_folder_clothing.tga new file mode 100644 index 0000000..bce4a65 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/inv_folder_clothing.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/inv_folder_gesture.tga b/linden/indra/newview/skins/silver/textures/inv_folder_gesture.tga new file mode 100644 index 0000000..9392256 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/inv_folder_gesture.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/inv_folder_landmark.tga b/linden/indra/newview/skins/silver/textures/inv_folder_landmark.tga new file mode 100644 index 0000000..0f57ccf --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/inv_folder_landmark.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/inv_folder_lostandfound.tga b/linden/indra/newview/skins/silver/textures/inv_folder_lostandfound.tga new file mode 100644 index 0000000..1285c25 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/inv_folder_lostandfound.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/inv_folder_notecard.tga b/linden/indra/newview/skins/silver/textures/inv_folder_notecard.tga new file mode 100644 index 0000000..daebd14 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/inv_folder_notecard.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/inv_folder_object.tga b/linden/indra/newview/skins/silver/textures/inv_folder_object.tga new file mode 100644 index 0000000..f3e9ea0 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/inv_folder_object.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/inv_folder_plain_closed.tga b/linden/indra/newview/skins/silver/textures/inv_folder_plain_closed.tga new file mode 100644 index 0000000..84d116a --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/inv_folder_plain_closed.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/inv_folder_plain_open.tga b/linden/indra/newview/skins/silver/textures/inv_folder_plain_open.tga new file mode 100644 index 0000000..d536448 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/inv_folder_plain_open.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/inv_folder_script.tga b/linden/indra/newview/skins/silver/textures/inv_folder_script.tga new file mode 100644 index 0000000..b8a04e4 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/inv_folder_script.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/inv_folder_snapshot.tga b/linden/indra/newview/skins/silver/textures/inv_folder_snapshot.tga new file mode 100644 index 0000000..468ec2c --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/inv_folder_snapshot.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/inv_folder_sound.tga b/linden/indra/newview/skins/silver/textures/inv_folder_sound.tga new file mode 100644 index 0000000..c58300b --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/inv_folder_sound.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/inv_folder_texture.tga b/linden/indra/newview/skins/silver/textures/inv_folder_texture.tga new file mode 100644 index 0000000..6a321cf --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/inv_folder_texture.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/inv_folder_trash.tga b/linden/indra/newview/skins/silver/textures/inv_folder_trash.tga new file mode 100644 index 0000000..7aa6b93 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/inv_folder_trash.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/inv_item_animation.tga b/linden/indra/newview/skins/silver/textures/inv_item_animation.tga new file mode 100644 index 0000000..637033a --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/inv_item_animation.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/inv_item_attach.tga b/linden/indra/newview/skins/silver/textures/inv_item_attach.tga new file mode 100644 index 0000000..55469f6 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/inv_item_attach.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/inv_item_callingcard_offline.tga b/linden/indra/newview/skins/silver/textures/inv_item_callingcard_offline.tga new file mode 100644 index 0000000..ad8658c --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/inv_item_callingcard_offline.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/inv_item_callingcard_online.tga b/linden/indra/newview/skins/silver/textures/inv_item_callingcard_online.tga new file mode 100644 index 0000000..9660601 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/inv_item_callingcard_online.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/inv_item_clothing.tga b/linden/indra/newview/skins/silver/textures/inv_item_clothing.tga new file mode 100644 index 0000000..b786426 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/inv_item_clothing.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/inv_item_eyes.tga b/linden/indra/newview/skins/silver/textures/inv_item_eyes.tga new file mode 100644 index 0000000..18e8368 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/inv_item_eyes.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/inv_item_gesture.tga b/linden/indra/newview/skins/silver/textures/inv_item_gesture.tga new file mode 100644 index 0000000..a6fe629 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/inv_item_gesture.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/inv_item_gloves.tga b/linden/indra/newview/skins/silver/textures/inv_item_gloves.tga new file mode 100644 index 0000000..bcc6aee --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/inv_item_gloves.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/inv_item_hair.tga b/linden/indra/newview/skins/silver/textures/inv_item_hair.tga new file mode 100644 index 0000000..686214e --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/inv_item_hair.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/inv_item_jacket.tga b/linden/indra/newview/skins/silver/textures/inv_item_jacket.tga new file mode 100644 index 0000000..69c5f07 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/inv_item_jacket.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/inv_item_landmark.tga b/linden/indra/newview/skins/silver/textures/inv_item_landmark.tga new file mode 100644 index 0000000..833d4e6 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/inv_item_landmark.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/inv_item_landmark_visited.tga b/linden/indra/newview/skins/silver/textures/inv_item_landmark_visited.tga new file mode 100644 index 0000000..283f0ec --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/inv_item_landmark_visited.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/inv_item_notecard.tga b/linden/indra/newview/skins/silver/textures/inv_item_notecard.tga new file mode 100644 index 0000000..0ad68d0 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/inv_item_notecard.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/inv_item_object.tga b/linden/indra/newview/skins/silver/textures/inv_item_object.tga new file mode 100644 index 0000000..c749105 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/inv_item_object.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/inv_item_object_multi.tga b/linden/indra/newview/skins/silver/textures/inv_item_object_multi.tga new file mode 100644 index 0000000..4b3a590 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/inv_item_object_multi.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/inv_item_pants.tga b/linden/indra/newview/skins/silver/textures/inv_item_pants.tga new file mode 100644 index 0000000..38dbc57 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/inv_item_pants.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/inv_item_script.tga b/linden/indra/newview/skins/silver/textures/inv_item_script.tga new file mode 100644 index 0000000..1203e8a --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/inv_item_script.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/inv_item_shape.tga b/linden/indra/newview/skins/silver/textures/inv_item_shape.tga new file mode 100644 index 0000000..2e8a5a7 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/inv_item_shape.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/inv_item_shirt.tga b/linden/indra/newview/skins/silver/textures/inv_item_shirt.tga new file mode 100644 index 0000000..8c6f5eb --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/inv_item_shirt.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/inv_item_shoes.tga b/linden/indra/newview/skins/silver/textures/inv_item_shoes.tga new file mode 100644 index 0000000..ac7a2b0 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/inv_item_shoes.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/inv_item_skin.tga b/linden/indra/newview/skins/silver/textures/inv_item_skin.tga new file mode 100644 index 0000000..ab4169f --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/inv_item_skin.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/inv_item_skirt.tga b/linden/indra/newview/skins/silver/textures/inv_item_skirt.tga new file mode 100644 index 0000000..4476040 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/inv_item_skirt.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/inv_item_snapshot.tga b/linden/indra/newview/skins/silver/textures/inv_item_snapshot.tga new file mode 100644 index 0000000..3adf4e5 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/inv_item_snapshot.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/inv_item_socks.tga b/linden/indra/newview/skins/silver/textures/inv_item_socks.tga new file mode 100644 index 0000000..2d7bb7e --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/inv_item_socks.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/inv_item_sound.tga b/linden/indra/newview/skins/silver/textures/inv_item_sound.tga new file mode 100644 index 0000000..7ef9052 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/inv_item_sound.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/inv_item_texture.tga b/linden/indra/newview/skins/silver/textures/inv_item_texture.tga new file mode 100644 index 0000000..6b4269d --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/inv_item_texture.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/inv_item_underpants.tga b/linden/indra/newview/skins/silver/textures/inv_item_underpants.tga new file mode 100644 index 0000000..f679e34 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/inv_item_underpants.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/inv_item_undershirt.tga b/linden/indra/newview/skins/silver/textures/inv_item_undershirt.tga new file mode 100644 index 0000000..359e3d7 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/inv_item_undershirt.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/lightgray.tga b/linden/indra/newview/skins/silver/textures/lightgray.tga new file mode 100644 index 0000000..e69be08 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/lightgray.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/map_avatar_16.tga b/linden/indra/newview/skins/silver/textures/map_avatar_16.tga new file mode 100644 index 0000000..f59e9e9 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/map_avatar_16.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/map_avatar_you_8.tga b/linden/indra/newview/skins/silver/textures/map_avatar_you_8.tga new file mode 100644 index 0000000..8500ead --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/map_avatar_you_8.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/map_event.tga b/linden/indra/newview/skins/silver/textures/map_event.tga new file mode 100644 index 0000000..2c06d08 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/map_event.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/map_event_adult.tga b/linden/indra/newview/skins/silver/textures/map_event_adult.tga new file mode 100644 index 0000000..f548126 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/map_event_adult.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/map_event_mature.tga b/linden/indra/newview/skins/silver/textures/map_event_mature.tga new file mode 100644 index 0000000..71067c0 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/map_event_mature.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/map_home.tga b/linden/indra/newview/skins/silver/textures/map_home.tga new file mode 100644 index 0000000..acaaa3d --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/map_home.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/map_infohub.tga b/linden/indra/newview/skins/silver/textures/map_infohub.tga new file mode 100644 index 0000000..545b8e5 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/map_infohub.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/map_telehub.tga b/linden/indra/newview/skins/silver/textures/map_telehub.tga new file mode 100644 index 0000000..57aa723 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/map_telehub.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/minimize.tga b/linden/indra/newview/skins/silver/textures/minimize.tga new file mode 100644 index 0000000..c1ab0f9 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/minimize.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/minimize_inactive.tga b/linden/indra/newview/skins/silver/textures/minimize_inactive.tga new file mode 100644 index 0000000..191c5d3 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/minimize_inactive.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/minimize_pressed.tga b/linden/indra/newview/skins/silver/textures/minimize_pressed.tga new file mode 100644 index 0000000..07368e5 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/minimize_pressed.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/notify_next.png b/linden/indra/newview/skins/silver/textures/notify_next.png new file mode 100644 index 0000000..b160ef7 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/notify_next.png | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/object_cone.tga b/linden/indra/newview/skins/silver/textures/object_cone.tga new file mode 100644 index 0000000..1bbca75 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/object_cone.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/object_cone_active.tga b/linden/indra/newview/skins/silver/textures/object_cone_active.tga new file mode 100644 index 0000000..7b8799d --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/object_cone_active.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/object_cube.tga b/linden/indra/newview/skins/silver/textures/object_cube.tga new file mode 100644 index 0000000..c08f874 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/object_cube.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/object_cube_active.tga b/linden/indra/newview/skins/silver/textures/object_cube_active.tga new file mode 100644 index 0000000..fac474e --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/object_cube_active.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/object_cylinder.tga b/linden/indra/newview/skins/silver/textures/object_cylinder.tga new file mode 100644 index 0000000..271c841 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/object_cylinder.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/object_cylinder_active.tga b/linden/indra/newview/skins/silver/textures/object_cylinder_active.tga new file mode 100644 index 0000000..5dc5c5e --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/object_cylinder_active.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/object_grass.tga b/linden/indra/newview/skins/silver/textures/object_grass.tga new file mode 100644 index 0000000..3e6b8f8 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/object_grass.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/object_grass_active.tga b/linden/indra/newview/skins/silver/textures/object_grass_active.tga new file mode 100644 index 0000000..98f84e5 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/object_grass_active.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/object_hemi_cone.tga b/linden/indra/newview/skins/silver/textures/object_hemi_cone.tga new file mode 100644 index 0000000..7b7cc63 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/object_hemi_cone.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/object_hemi_cone_active.tga b/linden/indra/newview/skins/silver/textures/object_hemi_cone_active.tga new file mode 100644 index 0000000..eabec15 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/object_hemi_cone_active.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/object_hemi_cylinder.tga b/linden/indra/newview/skins/silver/textures/object_hemi_cylinder.tga new file mode 100644 index 0000000..dc15140 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/object_hemi_cylinder.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/object_hemi_cylinder_active.tga b/linden/indra/newview/skins/silver/textures/object_hemi_cylinder_active.tga new file mode 100644 index 0000000..8047d7f --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/object_hemi_cylinder_active.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/object_hemi_sphere.tga b/linden/indra/newview/skins/silver/textures/object_hemi_sphere.tga new file mode 100644 index 0000000..9f21f3a --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/object_hemi_sphere.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/object_hemi_sphere_active.tga b/linden/indra/newview/skins/silver/textures/object_hemi_sphere_active.tga new file mode 100644 index 0000000..c6d20e0 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/object_hemi_sphere_active.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/object_prism.tga b/linden/indra/newview/skins/silver/textures/object_prism.tga new file mode 100644 index 0000000..489fa35 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/object_prism.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/object_prism_active.tga b/linden/indra/newview/skins/silver/textures/object_prism_active.tga new file mode 100644 index 0000000..b53b897 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/object_prism_active.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/object_pyramid.tga b/linden/indra/newview/skins/silver/textures/object_pyramid.tga new file mode 100644 index 0000000..69a1d09 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/object_pyramid.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/object_pyramid_active.tga b/linden/indra/newview/skins/silver/textures/object_pyramid_active.tga new file mode 100644 index 0000000..98aaade --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/object_pyramid_active.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/object_ring.tga b/linden/indra/newview/skins/silver/textures/object_ring.tga new file mode 100644 index 0000000..4dd05e4 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/object_ring.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/object_ring_active.tga b/linden/indra/newview/skins/silver/textures/object_ring_active.tga new file mode 100644 index 0000000..4e98b59 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/object_ring_active.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/object_sphere.tga b/linden/indra/newview/skins/silver/textures/object_sphere.tga new file mode 100644 index 0000000..e6a41d5 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/object_sphere.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/object_sphere_active.tga b/linden/indra/newview/skins/silver/textures/object_sphere_active.tga new file mode 100644 index 0000000..33c944a --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/object_sphere_active.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/object_tetrahedron.tga b/linden/indra/newview/skins/silver/textures/object_tetrahedron.tga new file mode 100644 index 0000000..01e02cd --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/object_tetrahedron.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/object_tetrahedron_active.tga b/linden/indra/newview/skins/silver/textures/object_tetrahedron_active.tga new file mode 100644 index 0000000..3e30a7c --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/object_tetrahedron_active.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/object_torus.tga b/linden/indra/newview/skins/silver/textures/object_torus.tga new file mode 100644 index 0000000..8c9f665 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/object_torus.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/object_torus_active.tga b/linden/indra/newview/skins/silver/textures/object_torus_active.tga new file mode 100644 index 0000000..53d2da8 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/object_torus_active.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/object_tree.tga b/linden/indra/newview/skins/silver/textures/object_tree.tga new file mode 100644 index 0000000..dc427e9 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/object_tree.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/object_tree_active.tga b/linden/indra/newview/skins/silver/textures/object_tree_active.tga new file mode 100644 index 0000000..36509fd --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/object_tree_active.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/object_tube.tga b/linden/indra/newview/skins/silver/textures/object_tube.tga new file mode 100644 index 0000000..b53d1e9 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/object_tube.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/object_tube_active.tga b/linden/indra/newview/skins/silver/textures/object_tube_active.tga new file mode 100644 index 0000000..c990b0b --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/object_tube_active.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/progressbar_fill.tga b/linden/indra/newview/skins/silver/textures/progressbar_fill.tga new file mode 100644 index 0000000..f078013 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/progressbar_fill.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/progressbar_track.tga b/linden/indra/newview/skins/silver/textures/progressbar_track.tga new file mode 100644 index 0000000..2057071 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/progressbar_track.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/ptt_lock_off.tga b/linden/indra/newview/skins/silver/textures/ptt_lock_off.tga new file mode 100644 index 0000000..d15ce1f --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/ptt_lock_off.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/ptt_lock_on.tga b/linden/indra/newview/skins/silver/textures/ptt_lock_on.tga new file mode 100644 index 0000000..1e21fce --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/ptt_lock_on.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/radio_active_false.tga b/linden/indra/newview/skins/silver/textures/radio_active_false.tga new file mode 100644 index 0000000..02043ae --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/radio_active_false.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/radio_active_true.tga b/linden/indra/newview/skins/silver/textures/radio_active_true.tga new file mode 100644 index 0000000..bf1035a --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/radio_active_true.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/radio_inactive_false.tga b/linden/indra/newview/skins/silver/textures/radio_inactive_false.tga new file mode 100644 index 0000000..48a9342 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/radio_inactive_false.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/radio_inactive_true.tga b/linden/indra/newview/skins/silver/textures/radio_inactive_true.tga new file mode 100644 index 0000000..785b3fa --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/radio_inactive_true.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/resize_handle_bottom_right_blue.tga b/linden/indra/newview/skins/silver/textures/resize_handle_bottom_right_blue.tga new file mode 100644 index 0000000..6c3a6ad --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/resize_handle_bottom_right_blue.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/restore.tga b/linden/indra/newview/skins/silver/textures/restore.tga new file mode 100644 index 0000000..8263ae1 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/restore.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/restore_inactive.tga b/linden/indra/newview/skins/silver/textures/restore_inactive.tga new file mode 100644 index 0000000..191c5d3 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/restore_inactive.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/restore_pressed.tga b/linden/indra/newview/skins/silver/textures/restore_pressed.tga new file mode 100644 index 0000000..aa44394 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/restore_pressed.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/rounded_square.tga b/linden/indra/newview/skins/silver/textures/rounded_square.tga new file mode 100644 index 0000000..c8fc7b7 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/rounded_square.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/rounded_square_soft.tga b/linden/indra/newview/skins/silver/textures/rounded_square_soft.tga new file mode 100644 index 0000000..0e5bc79 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/rounded_square_soft.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/scrollbutton_down_in_blue.tga b/linden/indra/newview/skins/silver/textures/scrollbutton_down_in_blue.tga new file mode 100644 index 0000000..fd870b5 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/scrollbutton_down_in_blue.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/scrollbutton_down_out_blue.tga b/linden/indra/newview/skins/silver/textures/scrollbutton_down_out_blue.tga new file mode 100644 index 0000000..1f95b34 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/scrollbutton_down_out_blue.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/scrollbutton_left_in_blue.tga b/linden/indra/newview/skins/silver/textures/scrollbutton_left_in_blue.tga new file mode 100644 index 0000000..595fd59 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/scrollbutton_left_in_blue.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/scrollbutton_left_out_blue.tga b/linden/indra/newview/skins/silver/textures/scrollbutton_left_out_blue.tga new file mode 100644 index 0000000..86c0987 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/scrollbutton_left_out_blue.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/scrollbutton_right_in_blue.tga b/linden/indra/newview/skins/silver/textures/scrollbutton_right_in_blue.tga new file mode 100644 index 0000000..790e515 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/scrollbutton_right_in_blue.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/scrollbutton_right_out_blue.tga b/linden/indra/newview/skins/silver/textures/scrollbutton_right_out_blue.tga new file mode 100644 index 0000000..4f37667 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/scrollbutton_right_out_blue.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/scrollbutton_up_in_blue.tga b/linden/indra/newview/skins/silver/textures/scrollbutton_up_in_blue.tga new file mode 100644 index 0000000..4955af7 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/scrollbutton_up_in_blue.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/scrollbutton_up_out_blue.tga b/linden/indra/newview/skins/silver/textures/scrollbutton_up_out_blue.tga new file mode 100644 index 0000000..e66696b --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/scrollbutton_up_out_blue.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/sm_rounded_corners_simple.tga b/linden/indra/newview/skins/silver/textures/sm_rounded_corners_simple.tga new file mode 100644 index 0000000..30bbbb4 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/sm_rounded_corners_simple.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/spin_down_in_blue.tga b/linden/indra/newview/skins/silver/textures/spin_down_in_blue.tga new file mode 100644 index 0000000..ce8576a --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/spin_down_in_blue.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/spin_down_out_blue.tga b/linden/indra/newview/skins/silver/textures/spin_down_out_blue.tga new file mode 100644 index 0000000..ff53284 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/spin_down_out_blue.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/spin_up_in_blue.tga b/linden/indra/newview/skins/silver/textures/spin_up_in_blue.tga new file mode 100644 index 0000000..de36da6 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/spin_up_in_blue.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/spin_up_out_blue.tga b/linden/indra/newview/skins/silver/textures/spin_up_out_blue.tga new file mode 100644 index 0000000..743d2c5 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/spin_up_out_blue.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/square_btn_32x128.tga b/linden/indra/newview/skins/silver/textures/square_btn_32x128.tga new file mode 100644 index 0000000..e14e45b --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/square_btn_32x128.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/square_btn_selected_32x128.tga b/linden/indra/newview/skins/silver/textures/square_btn_selected_32x128.tga new file mode 100644 index 0000000..749c0f4 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/square_btn_selected_32x128.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/startup_logo.j2c b/linden/indra/newview/skins/silver/textures/startup_logo.j2c new file mode 100644 index 0000000..e3332cb --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/startup_logo.j2c | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/status_buy_currency.tga b/linden/indra/newview/skins/silver/textures/status_buy_currency.tga new file mode 100644 index 0000000..9898005 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/status_buy_currency.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/status_buy_currency_pressed.tga b/linden/indra/newview/skins/silver/textures/status_buy_currency_pressed.tga new file mode 100644 index 0000000..9d5d164 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/status_buy_currency_pressed.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/status_buy_land.tga b/linden/indra/newview/skins/silver/textures/status_buy_land.tga new file mode 100644 index 0000000..dded697 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/status_buy_land.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/status_buy_land_pressed.tga b/linden/indra/newview/skins/silver/textures/status_buy_land_pressed.tga new file mode 100644 index 0000000..f5c5fba --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/status_buy_land_pressed.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/status_health.tga b/linden/indra/newview/skins/silver/textures/status_health.tga new file mode 100644 index 0000000..c29a965 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/status_health.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/status_no_build.tga b/linden/indra/newview/skins/silver/textures/status_no_build.tga new file mode 100644 index 0000000..fbd463f --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/status_no_build.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/status_no_fly.tga b/linden/indra/newview/skins/silver/textures/status_no_fly.tga new file mode 100644 index 0000000..d93c531 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/status_no_fly.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/status_no_push.tga b/linden/indra/newview/skins/silver/textures/status_no_push.tga new file mode 100644 index 0000000..578f0d9 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/status_no_push.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/status_no_scripts.tga b/linden/indra/newview/skins/silver/textures/status_no_scripts.tga new file mode 100644 index 0000000..a020f4c --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/status_no_scripts.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/status_no_voice.tga b/linden/indra/newview/skins/silver/textures/status_no_voice.tga new file mode 100644 index 0000000..9e34801 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/status_no_voice.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/status_search.tga b/linden/indra/newview/skins/silver/textures/status_search.tga new file mode 100644 index 0000000..12de046 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/status_search.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/status_voice.tga b/linden/indra/newview/skins/silver/textures/status_voice.tga new file mode 100644 index 0000000..9e34801 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/status_voice.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/tab_bottom_blue.tga b/linden/indra/newview/skins/silver/textures/tab_bottom_blue.tga new file mode 100644 index 0000000..1c68257 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/tab_bottom_blue.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/tab_bottom_selected_blue.tga b/linden/indra/newview/skins/silver/textures/tab_bottom_selected_blue.tga new file mode 100644 index 0000000..60887a8 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/tab_bottom_selected_blue.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/tab_left.tga b/linden/indra/newview/skins/silver/textures/tab_left.tga new file mode 100644 index 0000000..b2cd44b --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/tab_left.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/tab_left_selected.tga b/linden/indra/newview/skins/silver/textures/tab_left_selected.tga new file mode 100644 index 0000000..3c959a2 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/tab_left_selected.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/tab_top_blue.tga b/linden/indra/newview/skins/silver/textures/tab_top_blue.tga new file mode 100644 index 0000000..f522c86 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/tab_top_blue.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/tab_top_selected_blue.tga b/linden/indra/newview/skins/silver/textures/tab_top_selected_blue.tga new file mode 100644 index 0000000..66d3541 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/tab_top_selected_blue.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/tearoff_pressed.tga b/linden/indra/newview/skins/silver/textures/tearoff_pressed.tga new file mode 100644 index 0000000..cea2fdc --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/tearoff_pressed.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/tearoffbox.tga b/linden/indra/newview/skins/silver/textures/tearoffbox.tga new file mode 100644 index 0000000..6a11c07 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/tearoffbox.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/tool_dozer.tga b/linden/indra/newview/skins/silver/textures/tool_dozer.tga new file mode 100644 index 0000000..0bb1a2e --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/tool_dozer.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/tool_dozer_active.tga b/linden/indra/newview/skins/silver/textures/tool_dozer_active.tga new file mode 100644 index 0000000..faf232d --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/tool_dozer_active.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/tool_zoom.tga b/linden/indra/newview/skins/silver/textures/tool_zoom.tga new file mode 100644 index 0000000..0a467b7 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/tool_zoom.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/tool_zoom_active.tga b/linden/indra/newview/skins/silver/textures/tool_zoom_active.tga new file mode 100644 index 0000000..cee7e50 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/tool_zoom_active.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/toolbar_bg.tga b/linden/indra/newview/skins/silver/textures/toolbar_bg.tga new file mode 100644 index 0000000..d4525d1 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/toolbar_bg.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/toolbar_btn_disabled.tga b/linden/indra/newview/skins/silver/textures/toolbar_btn_disabled.tga new file mode 100644 index 0000000..9be524e --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/toolbar_btn_disabled.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/toolbar_btn_enabled.tga b/linden/indra/newview/skins/silver/textures/toolbar_btn_enabled.tga new file mode 100644 index 0000000..6cd80b4 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/toolbar_btn_enabled.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/toolbar_btn_selected.tga b/linden/indra/newview/skins/silver/textures/toolbar_btn_selected.tga new file mode 100644 index 0000000..d1d63f3 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/toolbar_btn_selected.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/toolbar_tab.tga b/linden/indra/newview/skins/silver/textures/toolbar_tab.tga new file mode 100644 index 0000000..e241f2e --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/toolbar_tab.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/up_arrow.png b/linden/indra/newview/skins/silver/textures/up_arrow.png new file mode 100644 index 0000000..31f1c38 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/up_arrow.png | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/white.tga b/linden/indra/newview/skins/silver/textures/white.tga new file mode 100644 index 0000000..55e3793 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/white.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/viewer_manifest.py b/linden/indra/newview/viewer_manifest.py index e350af0..b67af99 100755 --- a/linden/indra/newview/viewer_manifest.py +++ b/linden/indra/newview/viewer_manifest.py | |||
@@ -232,21 +232,15 @@ class WindowsManifest(ViewerManifest): | |||
232 | 232 | ||
233 | def construct(self): | 233 | def construct(self): |
234 | super(WindowsManifest, self).construct() | 234 | super(WindowsManifest, self).construct() |
235 | # the final exe is complicated because we're not sure where it's coming from, | 235 | # Come out, come out, where ever you are. |
236 | # nor do we have a fixed name for the executable | 236 | executable = self.find_existing_file('release/meta-impy-bin.exe', 'releasesse2/meta-impy-bin.exe', 'relwithdebinfo/meta-impy-bin.exe', 'debug/meta-impy-bin.exe', './meta-impy-bin.exe') |
237 | # Actually, we know on both counts -- MC | 237 | nmake = False |
238 | if self.configuration().lower() == "release": | 238 | self.path(executable, dst=self.final_exe()) |
239 | self.path(self.find_existing_file('release/meta-impy-bin.exe'), dst=self.final_exe()) | ||
240 | elif self.configuration().lower() == "releasesse2": | ||
241 | self.path(self.find_existing_file('releasesse2/meta-impy-bin.exe'), dst=self.final_exe()) | ||
242 | elif self.configuration().lower() == "relwithdebinfo": | ||
243 | self.path(self.find_existing_file('relwithdebinfo/meta-impy-bin.exe'), dst=self.final_exe()) | ||
244 | elif self.configuration().lower() == "debug": | ||
245 | self.path(self.find_existing_file('debug/meta-impy-bin.exe'), dst=self.final_exe()) | ||
246 | else: | ||
247 | self.path(self.find_existing_file('release/meta-impy-bin.exe', 'releasesse2/meta-impy-bin.exe', 'relwithdebinfo/meta-impy-bin.exe', 'debug/meta-impy-bin.exe'), dst=self.final_exe()) | ||
248 | 239 | ||
249 | # copy over the the pdb file for the regular or SSE2 versions if we don't already have one copied | 240 | # copy over the the pdb file for the regular or SSE2 versions if we don't already have one copied |
241 | # Don't think this ever worked, the destination seems bogus. | ||
242 | # It's trying to copy a built file outside of the source tree, a file we have anyway. | ||
243 | # TODO - do we even need this? | ||
250 | symbol_ver = '.'.join(self.args['version']) | 244 | symbol_ver = '.'.join(self.args['version']) |
251 | symbol_file = 'meta-impy-%s.%s.pdb' % (symbol_ver, self.args['configuration']) | 245 | symbol_file = 'meta-impy-%s.%s.pdb' % (symbol_ver, self.args['configuration']) |
252 | symbol_path = '../../../../../pdb_files/%s' % (symbol_file) | 246 | symbol_path = '../../../../../pdb_files/%s' % (symbol_file) |
@@ -255,26 +249,28 @@ class WindowsManifest(ViewerManifest): | |||
255 | else: | 249 | else: |
256 | #print "%s doesn't exist yet" % (os.getcwd() + symbol_path) | 250 | #print "%s doesn't exist yet" % (os.getcwd() + symbol_path) |
257 | try: | 251 | try: |
258 | self.path(self.find_existing_file('release/meta-impy-bin.pdb'), dst="../%s" % (symbol_path)) | 252 | self.path(self.find_existing_file(executable.split('/', 1)[0] % '/meta-impy-bin.pdb'), dst="../%s" % (symbol_path)) |
259 | pass | 253 | pass |
260 | except: | 254 | except: |
261 | print "Can't save symbol file %s, skipping" % (symbol_path) | 255 | print "Can't save symbol file %s, skipping" % (symbol_path) |
262 | pass | 256 | pass |
263 | 257 | ||
264 | self.gather_documents() | 258 | self.gather_documents() |
265 | 259 | ||
266 | if self.prefix("../..", dst="doc"): | 260 | if self.prefix("../..", dst="doc"): |
267 | self.path("LICENSE-libraries.txt") | 261 | self.path("LICENSE-libraries.txt") |
268 | self.end_prefix("../..") | 262 | self.end_prefix("../..") |
269 | 263 | ||
270 | |||
271 | self.path("meta-impy.url") | 264 | self.path("meta-impy.url") |
272 | 265 | ||
273 | # Plugin host application | 266 | # Plugin host application |
274 | self.path(os.path.join(os.pardir, | 267 | try: |
275 | 'llplugin', 'slplugin', self.args['configuration'], "SLPlugin.exe"), | 268 | self.path(os.path.join(os.pardir, 'llplugin', 'slplugin', self.args['configuration'], "SLPlugin.exe"), "SLPlugin.exe") |
276 | "SLPlugin.exe") | 269 | except: |
277 | 270 | # Probably an nmake build, which is not putting exe's into the configuration folders. | |
271 | self.path(os.path.join(os.pardir, 'llplugin', 'slplugin', "SLPlugin.exe"), "SLPlugin.exe") | ||
272 | # Propogate our wild guess. | ||
273 | nmake = True | ||
278 | 274 | ||
279 | self.path("featuretable.txt") | 275 | self.path("featuretable.txt") |
280 | 276 | ||
@@ -283,17 +279,17 @@ class WindowsManifest(ViewerManifest): | |||
283 | 279 | ||
284 | # For using FMOD for sound... DJS | 280 | # For using FMOD for sound... DJS |
285 | #self.path("fmod.dll") | 281 | #self.path("fmod.dll") |
286 | 282 | ||
287 | # For spellchecking | 283 | # For spellchecking |
288 | if self.prefix(src=self.args['configuration'], dst=""): | 284 | if self.prefix(self.args['configuration'], dst=""): |
289 | self.path("libhunspell.dll") | 285 | self.path("libhunspell.dll") |
290 | self.end_prefix() | 286 | self.end_prefix() |
291 | 287 | ||
292 | # Copy the llkdu DSO .config | 288 | # Copy the llkdu DSO .config |
293 | self.path("llkdu.dll.2.config") | 289 | self.path("llkdu.dll.2.config") |
294 | 290 | ||
295 | # Get llcommon and deps. | 291 | # Get llcommon and deps. |
296 | if self.prefix(src=self.args['configuration'], dst=""): | 292 | if self.prefix(self.args['configuration'], dst=""): |
297 | self.path('libapr-1.dll') | 293 | self.path('libapr-1.dll') |
298 | self.path('libaprutil-1.dll') | 294 | self.path('libaprutil-1.dll') |
299 | self.path('libapriconv-1.dll') | 295 | self.path('libapriconv-1.dll') |
@@ -309,23 +305,28 @@ class WindowsManifest(ViewerManifest): | |||
309 | if self.prefix(src="../../libraries/i686-win32/lib/release", dst=""): | 305 | if self.prefix(src="../../libraries/i686-win32/lib/release", dst=""): |
310 | self.path("openal32.dll") | 306 | self.path("openal32.dll") |
311 | self.path("alut.dll") | 307 | self.path("alut.dll") |
312 | self.end_prefix() | 308 | self.end_prefix() |
313 | 309 | ||
310 | # TODO - Yes, I know, would be better if nmake builds put stuff in the right place, track that down and fix it later. | ||
311 | if nmake: | ||
312 | config = '' | ||
313 | else: | ||
314 | config = self.args['configuration'] | ||
314 | # Media plugins - QuickTime | 315 | # Media plugins - QuickTime |
315 | if self.prefix(src='../media_plugins/quicktime/%s' % self.args['configuration'], dst="llplugin"): | 316 | if self.prefix(src='../media_plugins/quicktime/%s' % config, dst="llplugin"): |
316 | self.path("media_plugin_quicktime.dll") | 317 | self.path("media_plugin_quicktime.dll") |
317 | self.end_prefix() | 318 | self.end_prefix() |
318 | 319 | ||
319 | # Media plugins - WebKit/Qt | 320 | # Media plugins - WebKit/Qt |
320 | if self.prefix(src='../media_plugins/webkit/%s' % self.args['configuration'], dst="llplugin"): | 321 | if self.prefix(src='../media_plugins/webkit/%s' % config, dst="llplugin"): |
321 | self.path("media_plugin_webkit.dll") | 322 | self.path("media_plugin_webkit.dll") |
322 | self.end_prefix() | 323 | self.end_prefix() |
323 | 324 | ||
324 | # Media plugins - GStreamer | 325 | # Media plugins - GStreamer |
325 | if self.prefix(src='../media_plugins/gstreamer010/%s' % self.args['configuration'], dst="llplugin"): | 326 | if self.prefix(src='../media_plugins/gstreamer010/%s' % config, dst="llplugin"): |
326 | self.path("media_plugin_gstreamer010.dll") | 327 | self.path("media_plugin_gstreamer010.dll") |
327 | self.end_prefix() | 328 | self.end_prefix() |
328 | 329 | ||
329 | # For WebKit/Qt plugin runtimes | 330 | # For WebKit/Qt plugin runtimes |
330 | if self.prefix(src="../../libraries/i686-win32/lib/release", dst="llplugin"): | 331 | if self.prefix(src="../../libraries/i686-win32/lib/release", dst="llplugin"): |
331 | self.path("libeay32.dll") | 332 | self.path("libeay32.dll") |
@@ -476,13 +477,15 @@ class WindowsManifest(ViewerManifest): | |||
476 | sse_string = "-(SSE2-optimized)" | 477 | sse_string = "-(SSE2-optimized)" |
477 | 478 | ||
478 | version = '.'.join(self.args['version']) | 479 | version = '.'.join(self.args['version']) |
479 | base_filename = self.installer_prefix() + version + sse_string | 480 | version_number = version.split('-', 1)[0] |
481 | base_filename = self.installer_prefix() + version + "-Windows-x86" + sse_string | ||
480 | app_name = self.channel() | 482 | app_name = self.channel() |
481 | app_ver_name="%s %s" % (app_name, version) | 483 | app_ver_name="%s %s" % (app_name, version) |
482 | 484 | ||
483 | new_script = base_filename + ".iss" | 485 | new_script = base_filename + ".iss" |
484 | self.replace_in("installers/windows/meta-impy_installer_template.iss", new_script, { | 486 | self.replace_in("installers/windows/meta-impy_installer_template.iss", new_script, { |
485 | "%%VERSION%%":version, | 487 | "%%VERSION%%":version, |
488 | "%%VERSIONNUMBER%%":version_number, | ||
486 | "%%INSTALLERFILENAME%%":base_filename, | 489 | "%%INSTALLERFILENAME%%":base_filename, |
487 | "%%PACKAGEFILES%%":self.args['dest'], | 490 | "%%PACKAGEFILES%%":self.args['dest'], |
488 | "%%APPNAME%%":app_name, | 491 | "%%APPNAME%%":app_name, |
@@ -1035,13 +1038,32 @@ class Linux_i686Manifest(LinuxManifest): | |||
1035 | #self.path("libgstvolume.so") | 1038 | #self.path("libgstvolume.so") |
1036 | #self.path("libgstvorbis.so") | 1039 | #self.path("libgstvorbis.so") |
1037 | #self.path("libgstwavparse.so") | 1040 | #self.path("libgstwavparse.so") |
1038 | 1041 | ||
1039 | #self.end_prefix("gstreamer-plugins") | 1042 | #self.end_prefix("gstreamer-plugins") |
1040 | 1043 | ||
1041 | # [$PLOTR$] these two are not needed when STATIC_LIBOTR_ETC is on in .../linden/indra/CMakeLists.txt | 1044 | # [$PLOTR$] these two are not needed when STATIC_LIBOTR_ETC is on in .../linden/indra/CMakeLists.txt |
1042 | # self.path("libotr.so.2.2.0") | 1045 | # self.path("libotr.so.2.2.0") |
1043 | # self.path("libotr.so.2") | 1046 | # self.path("libotr.so.2") |
1044 | # [/$PLOTR$] | 1047 | # [/$PLOTR$] |
1048 | |||
1049 | # Wish I could kill it with fire. lol | ||
1050 | self.path("libboost_date_time-mt.so") | ||
1051 | self.path("libboost_date_time-mt.so.1.52.0") | ||
1052 | self.path("libboost_filesystem-mt.so") | ||
1053 | self.path("libboost_filesystem-mt.so.1.52.0") | ||
1054 | self.path("libboost_iostreams-mt.so") | ||
1055 | self.path("libboost_iostreams-mt.so.1.52.0") | ||
1056 | self.path("libboost_program_options-mt.so") | ||
1057 | self.path("libboost_program_options-mt.so.1.52.0") | ||
1058 | self.path("libboost_regex-mt.so") | ||
1059 | self.path("libboost_regex-mt.so.1.52.0") | ||
1060 | self.path("libboost_signals-mt.so") | ||
1061 | self.path("libboost_signals-mt.so.1.52.0") | ||
1062 | self.path("libboost_system-mt.so") | ||
1063 | self.path("libboost_system-mt.so.1.52.0") | ||
1064 | self.path("libboost_thread-mt.so") | ||
1065 | self.path("libboost_thread-mt.so.1.52.0") | ||
1066 | |||
1045 | self.end_prefix("lib") | 1067 | self.end_prefix("lib") |
1046 | 1068 | ||
1047 | # Vivox runtimes and libs | 1069 | # Vivox runtimes and libs |
@@ -1124,11 +1146,48 @@ class Linux_x86_64Manifest(LinuxManifest): | |||
1124 | # self.path("libpangoxft-1.0.so.0") # So we depend system gdk pixbufs and pango anyway. | 1146 | # self.path("libpangoxft-1.0.so.0") # So we depend system gdk pixbufs and pango anyway. |
1125 | ##self.path("libpixman-1.so.0") | 1147 | ##self.path("libpixman-1.so.0") |
1126 | 1148 | ||
1127 | #self.end_prefix("gstreamer-plugins") | ||
1128 | # [$PLOTR$] these two are not needed when STATIC_LIBOTR_ETC is on in .../linden/indra/CMakeLists.txt | 1149 | # [$PLOTR$] these two are not needed when STATIC_LIBOTR_ETC is on in .../linden/indra/CMakeLists.txt |
1129 | # self.path("libotr.so.2.2.0") | 1150 | # self.path("libotr.so.2.2.0") |
1130 | # self.path("libotr.so.2") | 1151 | # self.path("libotr.so.2") |
1131 | # [/$PLOTR$] | 1152 | # [/$PLOTR$] |
1153 | |||
1154 | #KILL IT WITH FIRE | ||
1155 | ## Gstreamer libs | ||
1156 | #self.end_prefix("gstreamer-plugins") | ||
1157 | #self.path("libgstbase-0.10.so.0") | ||
1158 | #self.path("libgstreamer-0.10.so.0") | ||
1159 | #self.path("libgstaudio-0.10.so.0") | ||
1160 | #self.path("libgstbase-0.10.so.0") | ||
1161 | #self.path("libgstcontroller-0.10.so.0") | ||
1162 | #self.path("libgstdataprotocol-0.10.so.0") | ||
1163 | #self.path("libgstinterfaces-0.10.so.0") | ||
1164 | #self.path("libgstnetbuffer-0.10.so.0") | ||
1165 | #self.path("libgstpbutils-0.10.so.0") | ||
1166 | #self.path("libgstriff-0.10.so.0") | ||
1167 | #self.path("libgstrtp-0.10.so.0") | ||
1168 | #self.path("libgstrtsp-0.10.so.0") | ||
1169 | #self.path("libgstsdp-0.10.so.0") | ||
1170 | #self.path("libgsttag-0.10.so.0") | ||
1171 | #self.path("libgstvideo-0.10.so.0") | ||
1172 | |||
1173 | # Wish I could kill it with fire. lol | ||
1174 | self.path("libboost_date_time-mt.so") | ||
1175 | self.path("libboost_date_time-mt.so.1.52.0") | ||
1176 | self.path("libboost_filesystem-mt.so") | ||
1177 | self.path("libboost_filesystem-mt.so.1.52.0") | ||
1178 | self.path("libboost_iostreams-mt.so") | ||
1179 | self.path("libboost_iostreams-mt.so.1.52.0") | ||
1180 | self.path("libboost_program_options-mt.so") | ||
1181 | self.path("libboost_program_options-mt.so.1.52.0") | ||
1182 | self.path("libboost_regex-mt.so") | ||
1183 | self.path("libboost_regex-mt.so.1.52.0") | ||
1184 | self.path("libboost_signals-mt.so") | ||
1185 | self.path("libboost_signals-mt.so.1.52.0") | ||
1186 | self.path("libboost_system-mt.so") | ||
1187 | self.path("libboost_system-mt.so.1.52.0") | ||
1188 | self.path("libboost_thread-mt.so") | ||
1189 | self.path("libboost_thread-mt.so.1.52.0") | ||
1190 | |||
1132 | self.end_prefix("lib64") | 1191 | self.end_prefix("lib64") |
1133 | 1192 | ||
1134 | 1193 | ||
diff --git a/linden/indra/newview/viewerinfo.cpp b/linden/indra/newview/viewerinfo.cpp index 1762096..07ec740 100644 --- a/linden/indra/newview/viewerinfo.cpp +++ b/linden/indra/newview/viewerinfo.cpp | |||
@@ -30,13 +30,15 @@ namespace ViewerInfo | |||
30 | 30 | ||
31 | // These are intentionally defined here instead of in the header, | 31 | // These are intentionally defined here instead of in the header, |
32 | // because they should NOT be read directly. Use the functions. | 32 | // because they should NOT be read directly. Use the functions. |
33 | |||
34 | // NOTE: Some parts of the build system scan this file looking for version numbers and such, commenting out sections confuses that. | ||
33 | const std::string NAME = "meta-impy"; | 35 | const std::string NAME = "meta-impy"; |
34 | const std::string VARNT = ""; | 36 | const std::string VARNT = ""; |
35 | const S32 MAJOR = 1; | 37 | const S32 MAJOR = 1; |
36 | const S32 MINOR = 4; | 38 | const S32 MINOR = 4; |
37 | const S32 PATCH = 0; | 39 | const S32 PATCH = 0; |
38 | const S32 RLEAS = 3; // increment for each beta/RC/release | 40 | const S32 RLEAS = 3; // increment for each beta/RC/release |
39 | const std::string EXTRA = "beta 2"; | 41 | const std::string EXTRA = "exp 1"; |
40 | 42 | ||
41 | // Mac OS X bundle identifier. Should match the one in Info.plist. | 43 | // Mac OS X bundle identifier. Should match the one in Info.plist. |
42 | const std::string BUNDLE_ID = "org.imprudenceviewer.viewer"; | 44 | const std::string BUNDLE_ID = "org.imprudenceviewer.viewer"; |
diff --git a/linden/indra/newview/windlightsettingsupdate.cpp b/linden/indra/newview/windlightsettingsupdate.cpp deleted file mode 100644 index ad6e7c9..0000000 --- a/linden/indra/newview/windlightsettingsupdate.cpp +++ /dev/null | |||
@@ -1,200 +0,0 @@ | |||
1 | /* | ||
2 | * @file kowopenregionsettings.cpp | ||
3 | * @brief Handler for OpenRegionInfo event queue message. | ||
4 | * | ||
5 | * Copyright (c) 2010, Patrick Sapinski | ||
6 | * | ||
7 | * The source code in this file ("Source Code") is provided to you | ||
8 | * under the terms of the GNU General Public License, version 2.0 | ||
9 | * ("GPL"). Terms of the GPL can be found in doc/GPL-license.txt in | ||
10 | * this distribution, or online at | ||
11 | * http://secondlifegrid.net/programs/open_source/licensing/gplv2 | ||
12 | * | ||
13 | * There are special exceptions to the terms and conditions of the GPL as | ||
14 | * it is applied to this Source Code. View the full text of the exception | ||
15 | * in the file doc/FLOSS-exception.txt in this software distribution, or | ||
16 | * online at | ||
17 | * http://secondlifegrid.net/programs/open_source/licensing/flossexception | ||
18 | * | ||
19 | * By copying, modifying or distributing this software, you acknowledge | ||
20 | * that you have read and understood your obligations described above, | ||
21 | * and agree to abide by those obligations. | ||
22 | * | ||
23 | * ALL SOURCE CODE IS PROVIDED "AS IS." THE AUTHOR MAKES NO | ||
24 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | ||
25 | * COMPLETENESS OR PERFORMANCE. | ||
26 | */ | ||
27 | |||
28 | #include "llviewerprecompiledheaders.h" | ||
29 | #include "llhttpnode.h" | ||
30 | #include "hippolimits.h" | ||
31 | #include "llfloatertools.h" | ||
32 | #include "llviewercontrol.h" | ||
33 | #include "llagent.h" | ||
34 | #include "llsurface.h" | ||
35 | #include "llviewerregion.h" | ||
36 | #include "llviewerobject.h" | ||
37 | |||
38 | #include "linden_common.h" | ||
39 | #include "llwaterparammanager.h" | ||
40 | #include "llwaterparamset.h" | ||
41 | #include "llwlparammanager.h" | ||
42 | #include "llwlparamset.h" | ||
43 | #include "message.h" | ||
44 | #include "meta7windlight.h" | ||
45 | #include "lightshare.h" | ||
46 | #include "wlsettingsmanager.h" | ||
47 | |||
48 | //DEBUG includes | ||
49 | //#include "llsdserialize.h" //LLSDNotationStreamer - for dumping LLSD to string | ||
50 | |||
51 | class WindLightSettingsUpdate : public LLHTTPNode | ||
52 | { | ||
53 | /*virtual*/ void post( | ||
54 | LLHTTPNode::ResponsePtr response, | ||
55 | const LLSD& context, | ||
56 | const LLSD& input) const | ||
57 | { | ||
58 | if (!input.isMap() || !input.has("body")) | ||
59 | { | ||
60 | llinfos << "malformed WindLightSettingsUpdate update!" << llendl; | ||
61 | return; | ||
62 | } | ||
63 | LLWaterParamSet* mWater; | ||
64 | LLWLParamSet* mSky; | ||
65 | LLUUID* mWaterNormal; | ||
66 | |||
67 | mWater = new LLWaterParamSet(); | ||
68 | mSky = new LLWLParamSet(); | ||
69 | mWaterNormal = new LLUUID(); | ||
70 | |||
71 | LLSD body = input["body"]; | ||
72 | |||
73 | mWater->set("waterFogColor", | ||
74 | body["waterColorX"].asReal() / 256.f, | ||
75 | body["waterColorY"].asReal() / 256.f, | ||
76 | body["waterColorZ"].asReal() / 256.f, | ||
77 | body["waterColorW"].asReal() / 256.f); | ||
78 | mWater->set("waterFogDensity", body["waterFogDensityExponent"].asReal()); | ||
79 | mWater->set("underWaterFogMod", body["underwaterFogModifier"].asReal()); | ||
80 | mWater->set("normScale", body["reflectionWaveletScaleX"].asReal(), | ||
81 | body["reflectionWaveletScaleY"].asReal(), | ||
82 | body["reflectionWaveletScaleZ"].asReal()); | ||
83 | mWater->set("fresnelScale", body["fresnelScale"].asReal()); | ||
84 | mWater->set("fresnelOffset", body["fresnelOffset"].asReal()); | ||
85 | mWater->set("scaleAbove", body["refractScaleAbove"].asReal()); | ||
86 | mWater->set("scaleBelow", body["refractScaleBelow"].asReal()); | ||
87 | mWater->set("blurMultiplier", body["blurMultiplier"].asReal()); | ||
88 | mWater->set("wave2Dir", body["bigWaveDirectionX"].asReal(), | ||
89 | body["bigWaveDirectionY"].asReal()); | ||
90 | mWater->set("wave1Dir", body["littleWaveDirectionX"].asReal(), | ||
91 | body["littleWaveDirectionY"].asReal()); | ||
92 | mWaterNormal->parseUUID(body["normalMapTexture"].asUUID().asString(), mWaterNormal); | ||
93 | |||
94 | mSky->setSunAngle(body["sunMoonPosition"].asReal()); | ||
95 | mSky->setEastAngle(body["eastAngle"].asReal()); | ||
96 | |||
97 | mSky->set("sunlight_color", | ||
98 | body["sunMoonColorX"].asReal() * 3.0f, | ||
99 | body["sunMoonColorY"].asReal() * 3.0f, | ||
100 | body["sunMoonColorZ"].asReal() * 3.0f, | ||
101 | body["sunMoonColorW"].asReal() * 3.0f); | ||
102 | |||
103 | mSky->set("ambient", | ||
104 | body["ambientX"].asReal() * 3.0f, | ||
105 | body["ambientY"].asReal() * 3.0f, | ||
106 | body["ambientZ"].asReal() * 3.0f, | ||
107 | body["ambientW"].asReal() * 3.0f); | ||
108 | |||
109 | mSky->set("blue_horizon", | ||
110 | body["horizonX"].asReal() * 2.0f, | ||
111 | body["horizonY"].asReal() * 2.0f, | ||
112 | body["horizonZ"].asReal() * 2.0f, | ||
113 | body["horizonW"].asReal() * 2.0f); | ||
114 | |||
115 | mSky->set("blue_density", | ||
116 | body["blueDensityX"].asReal(), | ||
117 | body["blueDensityY"].asReal(), | ||
118 | body["blueDensityZ"].asReal(), | ||
119 | 1.0); | ||
120 | |||
121 | mSky->set("haze_horizon", | ||
122 | body["hazeHorizon"].asReal(), | ||
123 | body["hazeHorizon"].asReal(), | ||
124 | body["hazeHorizon"].asReal(), | ||
125 | 1.f); | ||
126 | |||
127 | mSky->set("haze_density", | ||
128 | body["hazeDensity"].asReal(), | ||
129 | 0.f, 0.f, 1.f); | ||
130 | |||
131 | mSky->set("cloud_shadow", | ||
132 | body["cloudCoverage"].asReal(), | ||
133 | 0.f, 0.f, 1.f); | ||
134 | |||
135 | mSky->set("density_multiplier", | ||
136 | body["densityMultiplier"].asReal() / 1000.0f, | ||
137 | 0.f, 0.f, 1.f); | ||
138 | |||
139 | mSky->set("distance_multiplier", | ||
140 | body["distanceMultiplier"].asReal(), | ||
141 | 0.f, 0.f, 1.f); | ||
142 | |||
143 | mSky->set("max_y", | ||
144 | body["maxAltitude"].asReal(), | ||
145 | 0.f, 0.f, 1.f); | ||
146 | |||
147 | mSky->set("cloud_color", | ||
148 | body["cloudColorX"].asReal(), | ||
149 | body["cloudColorY"].asReal(), | ||
150 | body["cloudColorZ"].asReal(), | ||
151 | body["cloudColorW"].asReal()); | ||
152 | |||
153 | mSky->set("cloud_pos_density1", | ||
154 | body["cloudXYDensityX"].asReal(), | ||
155 | body["cloudXYDensityY"].asReal(), | ||
156 | body["cloudXYDensityZ"].asReal(), | ||
157 | 1.f); | ||
158 | |||
159 | mSky->set("cloud_pos_density2", | ||
160 | body["cloudDetailXYDensityX"].asReal(), | ||
161 | body["cloudDetailXYDensityY"].asReal(), | ||
162 | body["cloudDetailXYDensityZ"].asReal(), | ||
163 | 1.f); | ||
164 | |||
165 | mSky->set("cloud_scale", | ||
166 | body["cloudScale"].asReal(), | ||
167 | 0.f, 0.f, 1.f); | ||
168 | |||
169 | mSky->set("gamma", | ||
170 | body["sceneGamma"].asReal(), | ||
171 | 0.f, 0.f, 1.f); | ||
172 | |||
173 | mSky->set("glow", | ||
174 | (2 - body["sunGlowSize"].asReal()) * 20, | ||
175 | 0.f, | ||
176 | -body["sunGlowFocus"].asReal() * 5, | ||
177 | 1.f); | ||
178 | |||
179 | mSky->setCloudScrollX(body["cloudScrollX"].asReal() + 10.0f); | ||
180 | mSky->setCloudScrollY(body["cloudScrollY"].asReal() + 10.0f); | ||
181 | |||
182 | mSky->setEnableCloudScrollX(!body["cloudScrollXLock"].asBoolean()); | ||
183 | mSky->setEnableCloudScrollY(!body["cloudScrollYLock"].asBoolean()); | ||
184 | |||
185 | mSky->setStarBrightness(body["starBrightness"].asReal()); | ||
186 | |||
187 | mSky->set("fade", body["fade"].asReal()); | ||
188 | |||
189 | //Update this here.. since it isn't a part of WL... go figure | ||
190 | gHippoLimits->skyUseClassicClouds = body["drawClassicClouds"].asBoolean(); | ||
191 | gSavedSettings.setF32("ClassicCloudHeight",body["classicCloudHeight"].asReal()); | ||
192 | gSavedSettings.setF32("ClassicCloudRange",body["classicCloudRange"].asReal()); | ||
193 | |||
194 | WLSettingsManager::Apply(mSky, mWater, mWaterNormal); | ||
195 | } | ||
196 | }; | ||
197 | |||
198 | LLHTTPRegistration<WindLightSettingsUpdate> | ||
199 | gHTTPRegistrationWindLightSettingsUpdate( | ||
200 | "/message/WindLightSettingsUpdate"); \ No newline at end of file | ||
diff --git a/linden/indra/newview/wlfloatermanager.cpp b/linden/indra/newview/wlfloatermanager.cpp index 63abe14..382244d 100644 --- a/linden/indra/newview/wlfloatermanager.cpp +++ b/linden/indra/newview/wlfloatermanager.cpp | |||
@@ -1,11 +1,11 @@ | |||
1 | /** | 1 | /** |
2 | * @file wlfloaterwindlightsend.cpp | 2 | * @file wlfloaterwindlightsend.cpp |
3 | * @brief WLFloaterWindLightSend class definition | 3 | * @brief WLFloaterWindLightSend class definition |
4 | * | 4 | * |
5 | * $LicenseInfo:firstyear=2007&license=viewergpl$ | 5 | * $LicenseInfo:firstyear=2007&license=viewergpl$ |
6 | * | 6 | * |
7 | * Copyright (c) 2007-2009, Linden Research, Inc. | 7 | * Copyright (c) 2007-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 |
@@ -13,17 +13,17 @@ | |||
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. |
@@ -70,17 +70,17 @@ | |||
70 | #include "llviewerparcelmgr.h" | 70 | #include "llviewerparcelmgr.h" |
71 | #include "llparcel.h" | 71 | #include "llparcel.h" |
72 | #include "wlretrievesettings.h" | 72 | #include "wlretrievesettings.h" |
73 | #include "wlsettingsmanager.h" | 73 | #include "llettherebelight.h" |
74 | #include "wlfloaterwindlightsend.h" | 74 | #include "wlfloaterwindlightsend.h" |
75 | 75 | ||
76 | #undef max | 76 | #undef max |
77 | WLFloaterManager* WLFloaterManager::sWindLight; | 77 | WLFloaterManager* WLFloaterManager::sWindLight; |
78 | std::map<std::string, LLWLParamSet*> WLFloaterManager::mWLParamList; | 78 | std::map<std::string, LLWLParamSet*> WLFloaterManager::mWLParamList; |
79 | std::map<std::string, LLWaterParamSet*> WLFloaterManager::mWaterParamList; | 79 | std::map<std::string, LLWaterParamSet*> WLFloaterManager::mWaterParamList; |
80 | std::map<std::string, LLUUID*> WLFloaterManager::mWaterNormalParamList; | 80 | std::map<std::string, LLUUID*> WLFloaterManager::mWaterNormalParamList; |
81 | std::map<std::string, LLSD> WLFloaterManager::mMinAltParamList; | 81 | std::map<std::string, LLSD> WLFloaterManager::mMinAltParamList; |
82 | std::map<std::string, LLSD> WLFloaterManager::mMaxAltParamList; | 82 | std::map<std::string, LLSD> WLFloaterManager::mMaxAltParamList; |
83 | std::map<std::string, LLSD> WLFloaterManager::mFadeParamList; | 83 | std::map<std::string, LLSD> WLFloaterManager::mFadeParamList; |
84 | 84 | ||
85 | WLFloaterManager::WLFloaterManager() : LLFloater(std::string("windlight manager floater")) | 85 | WLFloaterManager::WLFloaterManager() : LLFloater(std::string("windlight manager floater")) |
86 | { | 86 | { |
@@ -214,7 +214,7 @@ void WLFloaterManager::onShow(void* userData) | |||
214 | LLWaterParamSet* mWater = mgr->mWaterParamList[name]; | 214 | LLWaterParamSet* mWater = mgr->mWaterParamList[name]; |
215 | LLUUID* mWaterNormal = mgr->mWaterNormalParamList[name]; | 215 | LLUUID* mWaterNormal = mgr->mWaterNormalParamList[name]; |
216 | if(mSky != NULL && mWater != NULL && mWaterNormal != NULL) | 216 | if(mSky != NULL && mWater != NULL && mWaterNormal != NULL) |
217 | WLSettingsManager::Apply(mSky, mWater, mWaterNormal); | 217 | LightShare::applyMaybe(mWater, mWaterNormal, mSky); |
218 | } | 218 | } |
219 | void WLFloaterManager::onSetToCurrent(void* userData) | 219 | void WLFloaterManager::onSetToCurrent(void* userData) |
220 | { | 220 | { |
@@ -233,10 +233,10 @@ void WLFloaterManager::onSetToCurrent(void* userData) | |||
233 | if(name == "(Region Settings)") | 233 | if(name == "(Region Settings)") |
234 | { | 234 | { |
235 | type = 0; | 235 | type = 0; |
236 | } | 236 | } |
237 | 237 | ||
238 | if(mSky != NULL && mWater != NULL && mWaterNormal != NULL) | 238 | if(mSky != NULL && mWater != NULL && mWaterNormal != NULL) |
239 | WLFloaterWindLightSend::SendSettings(false, type, NULL, *mSky, *mWater, fade, minAlt, maxAlt, *mWaterNormal); | 239 | WLFloaterWindLightSend::SendSettings(false, type, NULL, *mSky, *mWater, fade, minAlt, maxAlt, *mWaterNormal); |
240 | } | 240 | } |
241 | void WLFloaterManager::onRemove(void* userData) | 241 | void WLFloaterManager::onRemove(void* userData) |
242 | { | 242 | { |
@@ -258,7 +258,7 @@ void WLFloaterManager::onRemove(void* userData) | |||
258 | } | 258 | } |
259 | 259 | ||
260 | if(mSky != NULL && mWater != NULL && mWaterNormal != NULL) | 260 | if(mSky != NULL && mWater != NULL && mWaterNormal != NULL) |
261 | WLFloaterWindLightSend::SendSettings(true, type, false, *mSky, *mWater, fade, minAlt, maxAlt, *mWaterNormal); | 261 | WLFloaterWindLightSend::SendSettings(true, type, false, *mSky, *mWater, fade, minAlt, maxAlt, *mWaterNormal); |
262 | } | 262 | } |
263 | 263 | ||
264 | 264 | ||
@@ -269,13 +269,12 @@ void WLFloaterManager::UpdateFloater() | |||
269 | LLComboBox* comboBox = mgr->getChild<LLComboBox>("WLSettingsCombo"); | 269 | LLComboBox* comboBox = mgr->getChild<LLComboBox>("WLSettingsCombo"); |
270 | comboBox->clear(); | 270 | comboBox->clear(); |
271 | comboBox->removeall(); | 271 | comboBox->removeall(); |
272 | std::map<std::string, LLWLParamSet*>::iterator mIt = | 272 | std::map<std::string, LLWLParamSet*>::iterator mIt = |
273 | WLFloaterManager::instance()->mWLParamList.begin(); | 273 | WLFloaterManager::instance()->mWLParamList.begin(); |
274 | for(; mIt != WLFloaterManager::instance()->mWLParamList.end(); mIt++) | 274 | for(; mIt != WLFloaterManager::instance()->mWLParamList.end(); mIt++) |
275 | { | 275 | { |
276 | comboBox->add(mIt->first); | 276 | comboBox->add(mIt->first); |
277 | } | 277 | } |
278 | //Reorder them | 278 | //Reorder them |
279 | comboBox->sortByName(); | 279 | comboBox->sortByName(); |
280 | } | 280 | } |
281 | |||
diff --git a/linden/indra/newview/wlretrievesettings.cpp b/linden/indra/newview/wlretrievesettings.cpp index afa84f2..a8ed2b5 100644 --- a/linden/indra/newview/wlretrievesettings.cpp +++ b/linden/indra/newview/wlretrievesettings.cpp | |||
@@ -1,11 +1,11 @@ | |||
1 | /** | 1 | /** |
2 | * @file wlfloaterwindlightsend.cpp | 2 | * @file wlfloaterwindlightsend.cpp |
3 | * @brief WLFloaterWindLightSend class definition | 3 | * @brief WLFloaterWindLightSend class definition |
4 | * | 4 | * |
5 | * $LicenseInfo:firstyear=2007&license=viewergpl$ | 5 | * $LicenseInfo:firstyear=2007&license=viewergpl$ |
6 | * | 6 | * |
7 | * Copyright (c) 2007-2009, Linden Research, Inc. | 7 | * Copyright (c) 2007-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 |
@@ -13,17 +13,17 @@ | |||
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. |
@@ -67,8 +67,7 @@ | |||
67 | #include "hippolimits.h" | 67 | #include "hippolimits.h" |
68 | #include "wlfloaterwindlightsend.h" | 68 | #include "wlfloaterwindlightsend.h" |
69 | #include "llviewerregion.h" | 69 | #include "llviewerregion.h" |
70 | #include "wlsettingsmanager.h" | 70 | #include "llettherebelight.h" |
71 | #include "lightshare.h" | ||
72 | 71 | ||
73 | #include "linden_common.h" | 72 | #include "linden_common.h" |
74 | #include "llviewercontrol.h" | 73 | #include "llviewercontrol.h" |
@@ -93,7 +92,7 @@ void retrieveWindlightSettings::result(const LLSD& content) | |||
93 | for(LLSD::array_const_iterator wls = content["WindLight"].beginArray(); | 92 | for(LLSD::array_const_iterator wls = content["WindLight"].beginArray(); |
94 | wls != content["WindLight"].endArray(); | 93 | wls != content["WindLight"].endArray(); |
95 | ++wls) | 94 | ++wls) |
96 | { | 95 | { |
97 | LLSD windLightLLSD = *wls; | 96 | LLSD windLightLLSD = *wls; |
98 | LLWaterParamSet* mWater; | 97 | LLWaterParamSet* mWater; |
99 | LLWLParamSet* mSky; | 98 | LLWLParamSet* mSky; |
@@ -235,4 +234,4 @@ void retrieveWindlightSettings::error(U32 status, const std::string& reason) | |||
235 | { | 234 | { |
236 | LL_INFOS("Inventory") << "retrieveWindlightSettings::error " | 235 | LL_INFOS("Inventory") << "retrieveWindlightSettings::error " |
237 | << status << ": " << reason << LL_ENDL; | 236 | << status << ": " << reason << LL_ENDL; |
238 | } \ No newline at end of file | 237 | } |
diff --git a/linden/indra/newview/wlsettingsmanager.cpp b/linden/indra/newview/wlsettingsmanager.cpp deleted file mode 100644 index c0a07e1..0000000 --- a/linden/indra/newview/wlsettingsmanager.cpp +++ /dev/null | |||
@@ -1,253 +0,0 @@ | |||
1 | /** | ||
2 | * @file wlfloaterwindlightsend.cpp | ||
3 | * @brief WLFloaterWindLightSend class definition | ||
4 | * | ||
5 | * $LicenseInfo:firstyear=2007&license=viewergpl$ | ||
6 | * | ||
7 | * Copyright (c) 2007-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 "llfloaterwindlight.h" | ||
36 | |||
37 | #include "pipeline.h" | ||
38 | #include "llsky.h" | ||
39 | |||
40 | #include "llsliderctrl.h" | ||
41 | #include "llmultislider.h" | ||
42 | #include "llmultisliderctrl.h" | ||
43 | #include "llspinctrl.h" | ||
44 | #include "llcheckboxctrl.h" | ||
45 | #include "lluictrlfactory.h" | ||
46 | #include "llviewercamera.h" | ||
47 | #include "llcombobox.h" | ||
48 | #include "lllineeditor.h" | ||
49 | #include "llfloaterdaycycle.h" | ||
50 | #include "lltabcontainer.h" | ||
51 | #include "llboost.h" | ||
52 | |||
53 | #include "llagent.h" | ||
54 | #include "llinventorymodel.h" | ||
55 | #include "llviewerinventory.h" | ||
56 | |||
57 | #include "v4math.h" | ||
58 | #include "llviewerdisplay.h" | ||
59 | #include "llviewercontrol.h" | ||
60 | #include "llviewerwindow.h" | ||
61 | #include "llsavedsettingsglue.h" | ||
62 | |||
63 | #include "llwlparamset.h" | ||
64 | #include "llwlparammanager.h" | ||
65 | #include "llwaterparammanager.h" | ||
66 | #include "llpostprocess.h" | ||
67 | #include "hippolimits.h" | ||
68 | #include "wlfloaterwindlightsend.h" | ||
69 | #include "llviewerregion.h" | ||
70 | #include "wlsettingsmanager.h" | ||
71 | #include "lightshare.h" | ||
72 | |||
73 | #include "linden_common.h" | ||
74 | #include "llviewercontrol.h" | ||
75 | #include "message.h" | ||
76 | #include "meta7windlight.h" | ||
77 | #include "llworld.h" | ||
78 | |||
79 | #undef max | ||
80 | |||
81 | const std::string WLSettingsManager::wlWaterPresetName = "(Region settings)"; | ||
82 | const std::string WLSettingsManager::wlSkyPresetName = "(Region settings)"; | ||
83 | |||
84 | LLTimer* WLSettingsManager::wlIgnoreTimer = new LLTimer(); | ||
85 | bool WLSettingsManager::wlIgnoreRegion = false; | ||
86 | LLWaterParamSet* WLSettingsManager::mWater = NULL; | ||
87 | LLWLParamSet* WLSettingsManager::mSky = NULL; | ||
88 | LLUUID* WLSettingsManager::mWaterNormal = NULL; | ||
89 | |||
90 | void WLSettingsManager::Apply( LLWLParamSet* Sky, LLWaterParamSet* Water, LLUUID* WaterNormal ) | ||
91 | { | ||
92 | if( gSavedSettings.getU32("LightShareAllowed") <= WindlightMessage::LIGHTSHARE_NEVER ) | ||
93 | return; | ||
94 | |||
95 | std::string water = LLWaterParamManager::instance()->mCurParams.mName; | ||
96 | std::string sky = LLWLParamManager::instance()->mCurParams.mName; | ||
97 | |||
98 | // If they are using region settings already, or LightShare is | ||
99 | // always allowed, just apply the new settings, don't bother asking. | ||
100 | if( gSavedSettings.getU32("LightShareAllowed") == WindlightMessage::LIGHTSHARE_ALWAYS || | ||
101 | (sky == wlSkyPresetName && water == wlWaterPresetName) ) | ||
102 | { | ||
103 | mSky = Sky; | ||
104 | mWater = Water; | ||
105 | mWaterNormal = WaterNormal; | ||
106 | Apply(); | ||
107 | return; | ||
108 | } | ||
109 | |||
110 | if( !wlignoreTimerHasExpired() ) | ||
111 | { | ||
112 | // The user recently ignored a windlight message, so ignore | ||
113 | // this one too, and restart the timer. | ||
114 | wlrestartIgnoreTimer(); | ||
115 | return; | ||
116 | } | ||
117 | |||
118 | if(wlIgnoreRegion) | ||
119 | { | ||
120 | // We are ignoring new settings until user enters a new region. | ||
121 | return; | ||
122 | } | ||
123 | |||
124 | if( gSavedSettings.getU32("LightShareAllowed") == WindlightMessage::LIGHTSHARE_ASK && | ||
125 | mSky == NULL && mWater == NULL) | ||
126 | { | ||
127 | // No most recent, so store this and create notification | ||
128 | // asking the user whether to apply or not. | ||
129 | mSky = Sky; | ||
130 | mWater = Water; | ||
131 | mWaterNormal = WaterNormal; | ||
132 | LLNotifications::instance().add("ConfirmLightShare", LLSD(), LLSD(), | ||
133 | boost::bind(&wlapplyCallback, _1, _2)); | ||
134 | } | ||
135 | else | ||
136 | { | ||
137 | // No new notification (to avoid spamming the user, we do keep the saves from above) | ||
138 | mSky = Sky; | ||
139 | mWater = Water; | ||
140 | mWaterNormal = WaterNormal; | ||
141 | } | ||
142 | } | ||
143 | |||
144 | // static | ||
145 | bool WLSettingsManager::wlapplyCallback(const LLSD& notification, | ||
146 | const LLSD& response) | ||
147 | { | ||
148 | S32 option = LLNotification::getSelectedOption(notification, response); | ||
149 | |||
150 | switch(option) | ||
151 | { | ||
152 | case 0:{ | ||
153 | // "Apply" | ||
154 | Apply(); | ||
155 | break; | ||
156 | } | ||
157 | case 1:{ | ||
158 | // "Not Now", ignore until the region stops spamming | ||
159 | wlrestartIgnoreTimer(); | ||
160 | break; | ||
161 | } | ||
162 | case 2:{ | ||
163 | // "Ignore", ignore all until user leaves the region | ||
164 | wlIgnoreRegion = true; | ||
165 | break; | ||
166 | } | ||
167 | } | ||
168 | return false; | ||
169 | } | ||
170 | |||
171 | //static | ||
172 | void WLSettingsManager::Apply() | ||
173 | { | ||
174 | LLWaterParamManager* water_mgr = LLWaterParamManager::instance(); | ||
175 | LLWLParamManager* sky_mgr = LLWLParamManager::instance(); | ||
176 | |||
177 | F32 fade = 0; //Instant | ||
178 | bool error; | ||
179 | fade = mSky->getFloat("fade", error); | ||
180 | |||
181 | mWater->mName = wlWaterPresetName; | ||
182 | if(fade != 0 && water_mgr->mCurParams.mName == wlWaterPresetName)//Load the settings forcefully the first time | ||
183 | { | ||
184 | LLWaterParamSet oldWset = water_mgr->mCurParams; | ||
185 | //This still needs done so that we update right, but load it to the old | ||
186 | water_mgr->removeParamSet( wlWaterPresetName, false ); | ||
187 | water_mgr->addParamSet( wlWaterPresetName, oldWset ); | ||
188 | water_mgr->savePreset( wlWaterPresetName ); | ||
189 | water_mgr->loadPreset( wlWaterPresetName, true ); | ||
190 | water_mgr->setNormalMapID( *mWaterNormal ); | ||
191 | //Then mix with the new | ||
192 | water_mgr->SetMixTime(mWater, fade); | ||
193 | } | ||
194 | else | ||
195 | { | ||
196 | //Instant if fade is 0 | ||
197 | water_mgr->removeParamSet( wlWaterPresetName, false ); | ||
198 | water_mgr->addParamSet( wlWaterPresetName, *mWater ); | ||
199 | water_mgr->savePreset( wlWaterPresetName ); | ||
200 | water_mgr->loadPreset( wlWaterPresetName, true ); | ||
201 | water_mgr->setNormalMapID( *mWaterNormal ); | ||
202 | } | ||
203 | |||
204 | mSky->mName = wlSkyPresetName; | ||
205 | if(fade != 0 && sky_mgr->mCurParams.mName == wlSkyPresetName)//Load the settings forcefully the first time | ||
206 | { | ||
207 | LLWLParamSet oldset = sky_mgr->mCurParams; | ||
208 | //This still needs done so that we update right, but load it to the old | ||
209 | sky_mgr->removeParamSet( wlSkyPresetName, true ); | ||
210 | sky_mgr->addParamSet( wlSkyPresetName, oldset ); | ||
211 | sky_mgr->savePreset( wlSkyPresetName ); | ||
212 | sky_mgr->loadPreset( wlSkyPresetName, true ); | ||
213 | //Then mix with the new | ||
214 | sky_mgr->SetMixTime(mSky, fade); | ||
215 | } | ||
216 | else | ||
217 | { | ||
218 | //Instant if fade is 0 | ||
219 | sky_mgr->mAnimator.mIsRunning = false; | ||
220 | sky_mgr->mAnimator.mUseLindenTime = false; | ||
221 | sky_mgr->removeParamSet( wlSkyPresetName, false ); | ||
222 | sky_mgr->addParamSet( wlSkyPresetName, *mSky ); | ||
223 | sky_mgr->savePreset( wlSkyPresetName ); | ||
224 | sky_mgr->loadPreset( wlSkyPresetName, true ); | ||
225 | } | ||
226 | |||
227 | LLWorld::getInstance()->rebuildClouds(gAgent.getRegion()); | ||
228 | |||
229 | mSky = NULL; | ||
230 | mWater = NULL; | ||
231 | mWaterNormal = NULL; | ||
232 | } | ||
233 | |||
234 | // static | ||
235 | void WLSettingsManager::wlresetRegion() | ||
236 | { | ||
237 | wlIgnoreRegion = false; | ||
238 | LLWorld::getInstance()->rebuildClouds(gAgent.getRegion()); | ||
239 | } | ||
240 | |||
241 | // static | ||
242 | void WLSettingsManager::wlrestartIgnoreTimer() | ||
243 | { | ||
244 | F32 time = gSavedSettings.getF32("LightShareIgnoreTimer"); | ||
245 | wlIgnoreTimer->start(); | ||
246 | wlIgnoreTimer->setTimerExpirySec( (time < 0) ? 0 : time ); | ||
247 | } | ||
248 | |||
249 | // static | ||
250 | bool WLSettingsManager::wlignoreTimerHasExpired() | ||
251 | { | ||
252 | return wlIgnoreTimer->hasExpired(); | ||
253 | } \ No newline at end of file | ||
diff --git a/linden/indra/newview/wlsettingsmanager.h b/linden/indra/newview/wlsettingsmanager.h deleted file mode 100644 index 5a0e9e7..0000000 --- a/linden/indra/newview/wlsettingsmanager.h +++ /dev/null | |||
@@ -1,90 +0,0 @@ | |||
1 | /** | ||
2 | * @file wlfloaterwindlightsend.h | ||
3 | * @brief WLFloaterWindLightSend class definition | ||
4 | * | ||
5 | * $LicenseInfo:firstyear=2007&license=viewergpl$ | ||
6 | * | ||
7 | * Copyright (c) 2007-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 | /* | ||
34 | * Menu for adjusting the atmospheric settings of the world | ||
35 | */ | ||
36 | |||
37 | #ifndef WINDLIGHTSETTINGSMANAGER_H | ||
38 | #define WINDLIGHTSETTINGSMANAGER_H | ||
39 | |||
40 | #include <string> | ||
41 | #include "llwlparamset.h" | ||
42 | #include "llwaterparamset.h" | ||
43 | #include "lluuid.h" | ||
44 | |||
45 | class LLSD; | ||
46 | class LLTimer; | ||
47 | class LLUUID; | ||
48 | class LLWaterParamSet; | ||
49 | class LLWLParamSet; | ||
50 | |||
51 | |||
52 | /// Menuing system for all of windlight's functionality | ||
53 | class WLSettingsManager | ||
54 | { | ||
55 | public: | ||
56 | |||
57 | static LLTimer* wlIgnoreTimer; | ||
58 | static bool wlIgnoreRegion; | ||
59 | |||
60 | // Called after the user has entered a new region, to reset the | ||
61 | // "ignore while in this region" state. | ||
62 | static void wlresetRegion(); | ||
63 | |||
64 | static void Apply( LLWLParamSet* Sky, LLWaterParamSet* Water, LLUUID* WaterNormal ); | ||
65 | |||
66 | // Callback when the user interacts with the notification. | ||
67 | static bool wlapplyCallback(const LLSD& notification, | ||
68 | const LLSD& response); | ||
69 | |||
70 | static LLWaterParamSet* mWater; | ||
71 | static LLWLParamSet* mSky; | ||
72 | static LLUUID* mWaterNormal; | ||
73 | |||
74 | private: | ||
75 | static void Apply(); | ||
76 | |||
77 | // The name of the water preset where the region settings are stored. | ||
78 | static const std::string wlWaterPresetName; | ||
79 | |||
80 | // The name of the sky preset where the region settings are stored. | ||
81 | static const std::string wlSkyPresetName; | ||
82 | |||
83 | // Restart the timer for temporarily ignoring settings. | ||
84 | static void wlrestartIgnoreTimer(); | ||
85 | |||
86 | // Returns true if the ignore timer has expired (i.e. new settings | ||
87 | // should not be ignored anymore). | ||
88 | static bool wlignoreTimerHasExpired(); | ||
89 | }; | ||
90 | #endif \ No newline at end of file | ||
diff --git a/linden/indra/test_apps/llplugintest/CMakeLists.txt b/linden/indra/test_apps/llplugintest/CMakeLists.txt index a6cb740..91ba2db 100644 --- a/linden/indra/test_apps/llplugintest/CMakeLists.txt +++ b/linden/indra/test_apps/llplugintest/CMakeLists.txt | |||
@@ -311,7 +311,7 @@ endif (DARWIN OR LINUX) | |||
311 | if (DARWIN) | 311 | if (DARWIN) |
312 | # path inside the app bundle where we'll need to copy plugins and other related files | 312 | # path inside the app bundle where we'll need to copy plugins and other related files |
313 | set(PLUGINS_DESTINATION_DIR | 313 | set(PLUGINS_DESTINATION_DIR |
314 | ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/llmediaplugintest.app/Contents/Resources | 314 | ${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_CFG_INTDIR}/llmediaplugintest.app/Contents/Resources |
315 | ) | 315 | ) |
316 | 316 | ||
317 | # create the Contents/Resources directory | 317 | # create the Contents/Resources directory |
@@ -326,7 +326,7 @@ if (DARWIN) | |||
326 | ) | 326 | ) |
327 | else (DARWIN) | 327 | else (DARWIN) |
328 | set(PLUGINS_DESTINATION_DIR | 328 | set(PLUGINS_DESTINATION_DIR |
329 | ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/ | 329 | ${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_CFG_INTDIR}/ |
330 | ) | 330 | ) |
331 | endif (DARWIN) | 331 | endif (DARWIN) |
332 | 332 | ||
diff --git a/linden/install.xml b/linden/install.xml index 3e5810a..dff0768 100755 --- a/linden/install.xml +++ b/linden/install.xml | |||
@@ -195,16 +195,16 @@ | |||
195 | <key>linux</key> | 195 | <key>linux</key> |
196 | <map> | 196 | <map> |
197 | <key>md5sum</key> | 197 | <key>md5sum</key> |
198 | <string>4db3d74e40d149eeec06f4d97a609bb1</string> | 198 | <string>146ed8a8c2ef8ab3f0a6c4f214fc5c22</string> |
199 | <key>url</key> | 199 | <key>url</key> |
200 | <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/boost-1.39.0-linux-20100624.tar.bz2</uri> | 200 | <uri>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-boost/rev/268347/arch/Linux/installer/boost-1.52.0-linux-20121218.tar.bz2</uri> |
201 | </map> | 201 | </map> |
202 | <key>linux64</key> | 202 | <key>linux64</key> |
203 | <map> | 203 | <map> |
204 | <key>md5sum</key> | 204 | <key>md5sum</key> |
205 | <string>ebfaa439a8a78db7d99a26a73a70994a</string> | 205 | <string>b9dbe1ab34187a9a6f53fd89f88060d2</string> |
206 | <key>url</key> | 206 | <key>url</key> |
207 | <uri>http://imprudenceviewer.org/download/libs/boost-1.39.0-linux64-20100901.tar.bz2</uri> | 207 | <uri>https://bitbucket.org/kokua/3p-boost-64/downloads/boost-1.52.0-linux64-20130107.tar.bz2</uri> |
208 | </map> | 208 | </map> |
209 | <key>windows</key> | 209 | <key>windows</key> |
210 | <map> | 210 | <map> |
diff --git a/linden/scripts/install.py b/linden/scripts/install.py index a7c0a48..1e2bccb 100755 --- a/linden/scripts/install.py +++ b/linden/scripts/install.py | |||
@@ -565,6 +565,7 @@ windows/i686/vs/2003 -- specify a windows visual studio 2003 package""" | |||
565 | tar.extractall(path=install_dir) | 565 | tar.extractall(path=install_dir) |
566 | except AttributeError: | 566 | except AttributeError: |
567 | _extractall(tar, path=install_dir) | 567 | _extractall(tar, path=install_dir) |
568 | |||
568 | symlinks = [] | 569 | symlinks = [] |
569 | if _get_platform() == 'linux' or _get_platform() == 'linux64': | 570 | if _get_platform() == 'linux' or _get_platform() == 'linux64': |
570 | first = 1 | 571 | first = 1 |
@@ -591,6 +592,46 @@ windows/i686/vs/2003 -- specify a windows visual studio 2003 package""" | |||
591 | os.symlink(target, link_name) | 592 | os.symlink(target, link_name) |
592 | symlinks += [LINK] | 593 | symlinks += [LINK] |
593 | print " %s --> %s" % (LINK, target) | 594 | print " %s --> %s" % (LINK, target) |
595 | |||
596 | # Reroute autobuilds | ||
597 | auto_name = install_dir + "/include" | ||
598 | if os.path.exists(auto_name): | ||
599 | print "Moving autobuilt include files to legacy locations." | ||
600 | for entry in os.listdir(auto_name): | ||
601 | os.rename(auto_name + "/" + entry, install_dir + "/libraries/include/" + entry) | ||
602 | os.rmdir(auto_name) | ||
603 | |||
604 | auto_name = install_dir + "/lib" | ||
605 | dest_name = '' | ||
606 | if _get_platform() == 'darwin': | ||
607 | dest_name = 'universal-darwin/' | ||
608 | if _get_platform() == 'linux64': | ||
609 | dest_name = 'x86_64-linux/' | ||
610 | if _get_platform() == 'linux': | ||
611 | dest_name = 'i686-linux/' | ||
612 | if _get_platform() == 'windows': | ||
613 | dest_name = 'i686-win32/' | ||
614 | if os.path.exists(auto_name): | ||
615 | print "Moving autobuilt lib files to legacy locations." | ||
616 | for entry in os.listdir(auto_name): | ||
617 | if os.path.isdir(auto_name + "/" + entry): | ||
618 | path = install_dir + "/libraries/" + dest_name + "lib_" + entry | ||
619 | if entry == 'release': | ||
620 | # Linux is special, coz it's got server code. | ||
621 | if _get_platform() == 'linux' or _get_platform() == 'linux64': | ||
622 | path = install_dir + "/libraries/" + dest_name + "lib_" + entry + "_client" | ||
623 | # Windows is also special. | ||
624 | if _get_platform() == 'windows': | ||
625 | path = install_dir + "/libraries/" + dest_name + "lib/" + entry | ||
626 | if not os.path.exists(path): | ||
627 | os.makedirs(path) | ||
628 | for filename in os.listdir(auto_name + "/" + entry): | ||
629 | os.rename(auto_name + "/" + entry + "/" + filename, path + "/" + filename) | ||
630 | os.rmdir(auto_name + "/" + entry) | ||
631 | else: | ||
632 | os.rename(auto_name + "/" + entry, install_dir + "/libraries/" + dest_name + "lib/" + entry) | ||
633 | os.rmdir(auto_name) | ||
634 | |||
594 | if ifile.pkgname in self._installed: | 635 | if ifile.pkgname in self._installed: |
595 | self._installed[ifile.pkgname].add_files( | 636 | self._installed[ifile.pkgname].add_files( |
596 | ifile.url, | 637 | ifile.url, |
@@ -830,10 +871,10 @@ def _default_installable_cache(): | |||
830 | """In general, the installable files do not change much, so find a | 871 | """In general, the installable files do not change much, so find a |
831 | host/user specific location to cache files.""" | 872 | host/user specific location to cache files.""" |
832 | user = _getuser() | 873 | user = _getuser() |
833 | cache_dir = "/var/tmp/%s/install.cache" % user | 874 | if sys.platform != 'cygwin' and _get_platform() == 'windows': |
834 | if _get_platform() == 'windows': | 875 | cache_dir = os.path.join(tempfile.gettempdir(), 'install.cache.%s' % user) |
835 | cache_dir = os.path.join(tempfile.gettempdir(), \ | 876 | else: |
836 | 'install.cache.%s' % user) | 877 | cache_dir = "/var/tmp/%s/install.cache" % user |
837 | return cache_dir | 878 | return cache_dir |
838 | 879 | ||
839 | def parse_args(): | 880 | def parse_args(): |
diff --git a/linden/scripts/linux/0-patch-SL-source b/linden/scripts/linux/0-patch-SL-source index 4885d5d..ce0dabe 100755 --- a/linden/scripts/linux/0-patch-SL-source +++ b/linden/scripts/linux/0-patch-SL-source | |||
@@ -22,7 +22,7 @@ if [ "$PATCHES" != "" ] ; then | |||
22 | elif echo $i | grep ".bz2" &>/dev/null ; then | 22 | elif echo $i | grep ".bz2" &>/dev/null ; then |
23 | bzcat $i | patch -p1 -s | 23 | bzcat $i | patch -p1 -s |
24 | elif echo $i | grep ".zip" &>/dev/null ; then | 24 | elif echo $i | grep ".zip" &>/dev/null ; then |
25 | unzip -o $i >/dev/null | 25 | unzip -o $i >/dev/null |
26 | else | 26 | else |
27 | patch -p1 -s <$i | 27 | patch -p1 -s <$i |
28 | fi | 28 | fi |
diff --git a/linden/scripts/linux/1-get-libraries-from-SL b/linden/scripts/linux/1-get-libraries-from-SL index 9ba61f4..99a4367 100755 --- a/linden/scripts/linux/1-get-libraries-from-SL +++ b/linden/scripts/linux/1-get-libraries-from-SL | |||
@@ -53,7 +53,7 @@ source config-SL-source | |||
53 | cd $PATH_TO_SOURCES/indra | 53 | cd $PATH_TO_SOURCES/indra |
54 | 54 | ||
55 | # Do a clean build | 55 | # Do a clean build |
56 | ./develop.py clean | 56 | #./develop.py $os_extra clean |
57 | 57 | ||
58 | # Force the vectorization use if we chose so. | 58 | # Force the vectorization use if we chose so. |
59 | if [ "$FORCE_VECTORIZE" == "yes" ] ; then | 59 | if [ "$FORCE_VECTORIZE" == "yes" ] ; then |
@@ -65,7 +65,8 @@ else | |||
65 | FATAL_WARNINGS="" | 65 | FATAL_WARNINGS="" |
66 | fi | 66 | fi |
67 | # Configure the sources and download the LL provided libraries: | 67 | # Configure the sources and download the LL provided libraries: |
68 | ./develop.py --type=Release configure "$FATAL_WARNINGS" \ | 68 | ./develop.py $os_extra --type=$TYPE configure "$FATAL_WARNINGS" \ |
69 | -DCMAKE_C_FLAGS:STRING="-O2 $TUNE_FLAGS" -DCMAKE_CXX_FLAGS:STRING="-O2 $TUNE_FLAGS" \ | 69 | -DCMAKE_C_FLAGS:STRING="$TUNE_FLAGS" -DCMAKE_CXX_FLAGS:STRING="$TUNE_FLAGS" \ |
70 | -DCMAKE_C_FLAGS_RELEASE:STRING="-O2 $TUNE_FLAGS" -DCMAKE_CXX_FLAGS_RELEASE:STRING="-O2 $TUNE_FLAGS" \ | 70 | -DCMAKE_C_FLAGS_DEBUG:STRING="-g $TUNE_FLAGS" -DCMAKE_CXX_FLAGS_DEBUG:STRING="-g $TUNE_FLAGS" \ |
71 | -DCMAKE_C_FLAGS_RELWITHDEBINFO:STRING="-g -O2 $TUNE_FLAGS" -DCMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING="-g -O2 $TUNE_FLAGS" | 71 | -DCMAKE_C_FLAGS_RELEASE:STRING="$TUNE_FLAGS" -DCMAKE_CXX_FLAGS_RELEASE:STRING="$TUNE_FLAGS" \ |
72 | -DCMAKE_C_FLAGS_RELWITHDEBINFO:STRING="-g $TUNE_FLAGS" -DCMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING="-g $TUNE_FLAGS" -DPACKAGE:BOOL=ON | ||
diff --git a/linden/scripts/linux/3-compile-SL-source b/linden/scripts/linux/3-compile-SL-source index 34395bb..4ac80a7 100755 --- a/linden/scripts/linux/3-compile-SL-source +++ b/linden/scripts/linux/3-compile-SL-source | |||
@@ -54,10 +54,7 @@ source config-SL-source | |||
54 | function compile() { | 54 | function compile() { |
55 | cd $PATH_TO_SOURCES/indra | 55 | cd $PATH_TO_SOURCES/indra |
56 | echo "Compiling the client into $TEMP_DIR..." | 56 | echo "Compiling the client into $TEMP_DIR..." |
57 | nice -n 19 ionice -c 3 ./develop.py --type=Release build | 57 | nice -n 19 $ionice ./develop.py $os_extra --type=$TYPE build |
58 | # if (($? == 0)) ; then | ||
59 | # mv -f $PATH_TO_SOURCES/indra/viewer-linux-i686*/newview/SecondLife*.tar.bz2 $HOME/ | ||
60 | # fi | ||
61 | } | 58 | } |
62 | 59 | ||
63 | ########### end of functions ########### | 60 | ########### end of functions ########### |
@@ -66,14 +63,7 @@ if [ "$TEMP_DIR" == "" ] ; then | |||
66 | export TEMP_DIR="/usr/tmp/$USER" | 63 | export TEMP_DIR="/usr/tmp/$USER" |
67 | fi | 64 | fi |
68 | 65 | ||
69 | # Check to see if we simply want to retry a compilation: | ||
70 | if [ "$1" == "--retry" ] ; then | ||
71 | compile | ||
72 | exit $? | ||
73 | fi | ||
74 | |||
75 | # Use the parameter (if any) as the path to the archives: | 66 | # Use the parameter (if any) as the path to the archives: |
76 | |||
77 | PATH_TO_ARCHIVES=`pwd` | 67 | PATH_TO_ARCHIVES=`pwd` |
78 | if [ "$1" != "" ] && [ "$1" != "--prep" ] ; then | 68 | if [ "$1" != "" ] && [ "$1" != "--prep" ] ; then |
79 | if [ -d $1 ] ; then | 69 | if [ -d $1 ] ; then |
@@ -83,19 +73,4 @@ if [ "$1" != "" ] && [ "$1" != "--prep" ] ; then | |||
83 | fi | 73 | fi |
84 | 74 | ||
85 | cd $PATH_TO_SOURCES/indra | 75 | cd $PATH_TO_SOURCES/indra |
86 | |||
87 | # Do a clean build | ||
88 | #./develop.py clean | ||
89 | |||
90 | # Force the vectorization use if we chose so. | ||
91 | if [ "$FORCE_VECTORIZE" == "yes" ] ; then | ||
92 | TUNE_FLAGS="$TUNE_FLAGS -DLL_VECTORIZE=1" | ||
93 | fi | ||
94 | if [ "$ALLOW_WARNINGS" == "yes" ] ; then | ||
95 | FATAL_WARNINGS="-DGCC_DISABLE_FATAL_WARNINGS:BOOL=TRUE" | ||
96 | else | ||
97 | FATAL_WARNINGS="" | ||
98 | fi | ||
99 | |||
100 | time compile | 76 | time compile |
101 | |||
diff --git a/linden/scripts/linux/4-package-viewer b/linden/scripts/linux/4-package-viewer index b2bff7f..a1a74f2 100755 --- a/linden/scripts/linux/4-package-viewer +++ b/linden/scripts/linux/4-package-viewer | |||
@@ -1,5 +1,12 @@ | |||
1 | #!/bin/bash | 1 | #!/bin/bash |
2 | 2 | ||
3 | cd ../../indra/viewer-linux-* | 3 | source config-SL-source |
4 | make package | ||
5 | 4 | ||
5 | if [ "$OSTYPE" == "cygwin" ] ; then | ||
6 | # Assumes version has been passed in from outside, coz Windows insists on adding crap to python output. | ||
7 | cd ../../indra/build-nmake/ | ||
8 | iscc newview/${TYPE}/package/${version}-Windows-x86.iss | ||
9 | else | ||
10 | cd ../../indra/viewer-linux-* | ||
11 | make package | ||
12 | fi | ||
diff --git a/linden/scripts/linux/config-SL-source b/linden/scripts/linux/config-SL-source index 174d7d4..f60fd92 100644 --- a/linden/scripts/linux/config-SL-source +++ b/linden/scripts/linux/config-SL-source | |||
@@ -9,6 +9,9 @@ | |||
9 | # accordingly, so that you (should) end up with a properly packaged client. | 9 | # accordingly, so that you (should) end up with a properly packaged client. |
10 | 10 | ||
11 | PWD=`pwd` | 11 | PWD=`pwd` |
12 | os_extra='' | ||
13 | ionice='ionice -c 3' | ||
14 | |||
12 | 15 | ||
13 | # Where the sources of the client will be held (defaults to "./linden"): | 16 | # Where the sources of the client will be held (defaults to "./linden"): |
14 | PATH_TO_SOURCES="$PWD/../.." | 17 | PATH_TO_SOURCES="$PWD/../.." |
@@ -18,6 +21,8 @@ PATH_TO_PATCHES="$PWD/../../patches" | |||
18 | TEMP_DIR="/tmp/SL-$USER" | 21 | TEMP_DIR="/tmp/SL-$USER" |
19 | mkdir -p $TEMP_DIR | 22 | mkdir -p $TEMP_DIR |
20 | 23 | ||
24 | TYPE="RelWithDebInfo" | ||
25 | |||
21 | USE_SYSTEM_GTK="no" | 26 | USE_SYSTEM_GTK="no" |
22 | USE_SYSTEM_SDL="no" | 27 | USE_SYSTEM_SDL="no" |
23 | USE_SYSTEM_SSL="no" | 28 | USE_SYSTEM_SSL="no" |
@@ -53,7 +58,7 @@ USE_SYSTEM_BOOST="no" | |||
53 | # You may add tune flags here, to optimize the code for your processor. | 58 | # You may add tune flags here, to optimize the code for your processor. |
54 | # Example, for an Athlon XP: | 59 | # Example, for an Athlon XP: |
55 | # TUNE_FLAGS="-march=athlon-xp" | 60 | # TUNE_FLAGS="-march=athlon-xp" |
56 | TUNE_FLAGS="-fomit-frame-pointer -frename-registers -ftree-vectorize -fweb -fexpensive-optimizations -msse -mfpmath=sse" | 61 | TUNE_FLAGS="-O2 -fomit-frame-pointer -frename-registers -ftree-vectorize -fweb -fexpensive-optimizations -msse -mfpmath=sse" |
57 | # Set this to "yes" to force vectorization use in the viewer code (only for | 62 | # Set this to "yes" to force vectorization use in the viewer code (only for |
58 | # processors with SSE or Altivec units, and only if you did enable them via | 63 | # processors with SSE or Altivec units, and only if you did enable them via |
59 | # the TUNE_FLAGS. | 64 | # the TUNE_FLAGS. |
@@ -61,3 +66,18 @@ FORCE_VECTORIZE="yes" | |||
61 | 66 | ||
62 | # When using gcc v4.3 or later, you might have to set this to yes... | 67 | # When using gcc v4.3 or later, you might have to set this to yes... |
63 | ALLOW_WARNINGS="yes" | 68 | ALLOW_WARNINGS="yes" |
69 | |||
70 | |||
71 | # Change it all for cygwin. | ||
72 | if [ "$OSTYPE" == "cygwin" ] ; then | ||
73 | os_extra='-G nmake' | ||
74 | ionice='' | ||
75 | USE_SYSTEM_LIBSTDC="no" | ||
76 | TUNE_FLAGS="/EHsc /GR /Zm1000 /DWIN32 /D_WINDOWS " | ||
77 | FORCE_VECTORIZE="no" | ||
78 | ALLOW_WARNINGS="no" | ||
79 | fi | ||
80 | |||
81 | |||
82 | # Work around python problems. | ||
83 | export PYTHONUNBUFFERED='True' | ||
diff --git a/linden/scripts/viewer_info.py b/linden/scripts/viewer_info.py index 53ea432..bd0f436 100755 --- a/linden/scripts/viewer_info.py +++ b/linden/scripts/viewer_info.py | |||
@@ -54,10 +54,11 @@ class ViewerInfo: | |||
54 | self.major = re.search('MAJOR\s*=\s*(\d+)', data).group(1) | 54 | self.major = re.search('MAJOR\s*=\s*(\d+)', data).group(1) |
55 | self.minor = re.search('MINOR\s*=\s*(\d+)', data).group(1) | 55 | self.minor = re.search('MINOR\s*=\s*(\d+)', data).group(1) |
56 | self.patch = re.search('PATCH\s*=\s*(\d+)', data).group(1) | 56 | self.patch = re.search('PATCH\s*=\s*(\d+)', data).group(1) |
57 | self.release = re.search('RLEAS\s*=\s*(\d+)', data).group(1) | ||
57 | self.extra = re.search('EXTRA\s*=\s*"([^"]*)"', data).group(1) | 58 | self.extra = re.search('EXTRA\s*=\s*"([^"]*)"', data).group(1) |
58 | self.bundle_id = re.search('BUNDLE_ID\s*=\s*"([^"]*)"', data).group(1) | 59 | self.bundle_id = re.search('BUNDLE_ID\s*=\s*"([^"]*)"', data).group(1) |
59 | 60 | ||
60 | self.version = "%s.%s.%s"%(self.major, self.minor, self.patch) | 61 | self.version = "%s.%s.%s.%s"%(self.major, self.minor, self.patch, self.release) |
61 | if len(self.extra) > 0: | 62 | if len(self.extra) > 0: |
62 | # Replace spaces and some puncuation with '-' in extra | 63 | # Replace spaces and some puncuation with '-' in extra |
63 | extra = re.sub('[- \t:;,!+/\\"\'`]+', '-', self.extra) | 64 | extra = re.sub('[- \t:;,!+/\\"\'`]+', '-', self.extra) |