diff options
Diffstat (limited to '')
113 files changed, 2736 insertions, 2399 deletions
diff --git a/linden/doc/contributions.txt b/linden/doc/contributions.txt index cd9745b..4546053 100644 --- a/linden/doc/contributions.txt +++ b/linden/doc/contributions.txt | |||
@@ -5,7 +5,7 @@ received from them. To see more about these contributions, visit | |||
5 | http://jira.secondlife.com/ and enter the issue identifier. | 5 | http://jira.secondlife.com/ and enter the issue identifier. |
6 | 6 | ||
7 | Able Whitman - VWR-650 | 7 | Able Whitman - VWR-650 |
8 | Alissa Sabre - VWR-81, VWR-83, VWR-171, VWR-251, VWR-414, VWR-415, VWR-459, VWR-606, VWR-652 | 8 | Alissa Sabre - VWR-81, VWR-83, VWR-171, VWR-251, VWR-414, VWR-415, VWR-459, VWR-606, VWR-652, VWR-1351, VWR-1410 |
9 | Argent Stonecutter - VWR-68 | 9 | Argent Stonecutter - VWR-68 |
10 | Benja Kepler - VWR-746 | 10 | Benja Kepler - VWR-746 |
11 | Blakar Ogre - VWR-881 | 11 | Blakar Ogre - VWR-881 |
@@ -17,15 +17,17 @@ Duckless Vandyke - VWR-383 | |||
17 | Dylan Haskell - VWR-72 | 17 | Dylan Haskell - VWR-72 |
18 | Dzonatas Sol - VWR-198, VWR-878 | 18 | Dzonatas Sol - VWR-198, VWR-878 |
19 | Eddy Stryker - VWR-15, VWR-23 | 19 | Eddy Stryker - VWR-15, VWR-23 |
20 | Fremont Cunningham - VWR-1147 | ||
20 | Gigs Taggart - VWR-71, VWR-326, VWR-1217 | 21 | Gigs Taggart - VWR-71, VWR-326, VWR-1217 |
21 | Ginko Bayliss - VWR-4 | 22 | Ginko Bayliss - VWR-4 |
22 | Hikkoshi Sakai - VWR-429 | 23 | Hikkoshi Sakai - VWR-429 |
23 | Hiro Sommambulist - VWR-66, VWR-97, VWR-100, VWR-105, VWR-108, VWR-118, VWR-132, VWR-136, VWR-143 | 24 | Hiro Sommambulist - VWR-66, VWR-97, VWR-100, VWR-105, VWR-108, VWR-118, VWR-132, VWR-136, VWR-143 |
25 | Iskar Ariantho - VWR-1223 | ||
24 | Jacek Antonelli - VWR-165, VWR-188, VWR-427, VWR-597 | 26 | Jacek Antonelli - VWR-165, VWR-188, VWR-427, VWR-597 |
25 | Joghert LeSabre - VWR-64 | 27 | Joghert LeSabre - VWR-64 |
26 | Kage Pixel - VWR-11 | 28 | Kage Pixel - VWR-11 |
27 | Kunnis Basiat - VWR-82 | 29 | Kunnis Basiat - VWR-82 |
28 | Nicholaz Beresford - VWR-132, VWR-176, VWR-793, VWR-794, VWR-802, VWR-803, VWR-804, VWR-805, VWR-808, VWR-809, VWR-810, VWR-823, VWR-869, VWR-870, VWR-871, VWR-873, VWR-908, VWR-966 | 30 | Nicholaz Beresford - VWR-132, VWR-176, VWR-793, VWR-794, VWR-802, VWR-803, VWR-804, VWR-805, VWR-808, VWR-809, VWR-810, VWR-823, VWR-869, VWR-870, VWR-871, VWR-873, VWR-908, VWR-966, VWR-1410, VWR-1418 |
29 | Paul Churchill - VWR-20 | 31 | Paul Churchill - VWR-20 |
30 | Paula Innis - VWR-30, VWR-1049 | 32 | Paula Innis - VWR-30, VWR-1049 |
31 | Peekay Semyorka - VWR-7, VWR-19, VWR-49, VWR-79 | 33 | Peekay Semyorka - VWR-7, VWR-19, VWR-49, VWR-79 |
@@ -38,6 +40,7 @@ Still Defiant - VWR-207, VWR-446 | |||
38 | Strife Onizuka - SVC-9, VWR-74, VWR-85, VWR-148 | 40 | Strife Onizuka - SVC-9, VWR-74, VWR-85, VWR-148 |
39 | tenebrous pau - VWR-247 | 41 | tenebrous pau - VWR-247 |
40 | TBBle Kurosawa - VWR-938, VWR-941, VWR-944 | 42 | TBBle Kurosawa - VWR-938, VWR-941, VWR-944 |
43 | Tharax Ferraris - VWR-605 | ||
41 | Zi Ree - VWR-671, VWR-682, VWR-1140 | 44 | Zi Ree - VWR-671, VWR-682, VWR-1140 |
42 | Zipherius Turas - VWR-76, VWR-77 | 45 | Zipherius Turas - VWR-76, VWR-77 |
43 | 46 | ||
diff --git a/linden/indra/SConstruct b/linden/indra/SConstruct index 68c8fc7..3de5e4f 100644 --- a/linden/indra/SConstruct +++ b/linden/indra/SConstruct | |||
@@ -184,13 +184,20 @@ for build_target in targets: | |||
184 | ./llcommon ./llmath ./llwindow ./llaudio ./llcharacter | 184 | ./llcommon ./llmath ./llwindow ./llaudio ./llcharacter |
185 | ./lldatabase ./llhavok ./llimage ./llinventory ./llmedia ./llmessage | 185 | ./lldatabase ./llhavok ./llimage ./llinventory ./llmedia ./llmessage |
186 | ./llprimitive ./llrender ./llscene ./llui ./llvfs ./llwindow | 186 | ./llprimitive ./llrender ./llscene ./llui ./llvfs ./llwindow |
187 | ./llxml ./lscript | 187 | ./llxml ./lscript ./lscript/lscript_compile |
188 | ../libraries/include | 188 | ../libraries/include |
189 | ../libraries/include/havok | 189 | ../libraries/include/havok |
190 | """ + | 190 | """ + |
191 | '../libraries/' + system_str + '/include' ) | 191 | '../libraries/' + system_str + '/include' ) |
192 | 192 | ||
193 | client_external_libs = ['resolv'] | 193 | if platform == 'linux' and build_target == 'client': |
194 | if arch == 'x86_64' and os.path.exists('/usr/lib64'): | ||
195 | client_external_libs = [File('/usr/lib64/libresolv.a')] | ||
196 | else: | ||
197 | client_external_libs = ['llresolv6'] | ||
198 | else: | ||
199 | client_external_libs = ['resolv'] | ||
200 | |||
194 | system_link_flags = '' | 201 | system_link_flags = '' |
195 | 202 | ||
196 | if platform != 'linux' and build_target == 'client' and enable_mozlib: | 203 | if platform != 'linux' and build_target == 'client' and enable_mozlib: |
@@ -240,7 +247,7 @@ for build_target in targets: | |||
240 | cppflags += server_cppflags + ' ' | 247 | cppflags += server_cppflags + ' ' |
241 | else: | 248 | else: |
242 | # Viewer flags | 249 | # Viewer flags |
243 | cflags += '-falign-loops=16 -fno-math-errno -fexceptions -fsigned-char -fno-strict-aliasing -ffast-math ' | 250 | cflags += '-fno-math-errno -fexceptions -fsigned-char -fno-strict-aliasing ' |
244 | cppflags += '-DLL_MESA_HEADLESS=0 -DLL_MESA=0 ' | 251 | cppflags += '-DLL_MESA_HEADLESS=0 -DLL_MESA=0 ' |
245 | try: | 252 | try: |
246 | client_cppflags = os.environ['CLIENT_CPPFLAGS'] | 253 | client_cppflags = os.environ['CLIENT_CPPFLAGS'] |
@@ -283,32 +290,44 @@ for build_target in targets: | |||
283 | cflags += '-x c++ -arch ppc -pipe -Wno-trigraphs -fpascal-strings -faltivec -fasm-blocks -g -fmessage-length=0 -mtune=G4 -Wno-deprecated-declarations -Wno-invalid-offsetof -mmacosx-version-min=10.3 -Wmost -Wno-sign-compare -Wno-switch -fconstant-cfstrings -ffor-scope -Wno-reorder ' | 290 | cflags += '-x c++ -arch ppc -pipe -Wno-trigraphs -fpascal-strings -faltivec -fasm-blocks -g -fmessage-length=0 -mtune=G4 -Wno-deprecated-declarations -Wno-invalid-offsetof -mmacosx-version-min=10.3 -Wmost -Wno-sign-compare -Wno-switch -fconstant-cfstrings -ffor-scope -Wno-reorder ' |
284 | cppflags += '-x c++ -DLL_DARWIN=1 -fpch-preprocess -F./newview/build/Deployment -fconstant-cfstrings -isysroot /Developer/SDKs/MacOSX10.3.9.sdk ' | 291 | cppflags += '-x c++ -DLL_DARWIN=1 -fpch-preprocess -F./newview/build/Deployment -fconstant-cfstrings -isysroot /Developer/SDKs/MacOSX10.3.9.sdk ' |
285 | 292 | ||
293 | if standalone: | ||
294 | gcc_bin = 'g++' | ||
295 | elif build_target != 'client': | ||
296 | gcc_bin = 'g++-3.3' | ||
297 | elif arch == 'x86_64cross': | ||
298 | gcc_bin = '/opt/crosstool/gcc-4.0.2-glibc-2.3.6/x86_64-unknown-linux-gnu/bin/x86_64-unknown-linux-gnu-gcc' | ||
299 | strip_cmd = '/opt/crosstool/gcc-4.0.2-glibc-2.3.6/x86_64-unknown-linux-gnu/x86_64-unknown-linux-gnu/bin/strip -S -o $TARGET $SOURCE' | ||
300 | |||
301 | else: | ||
302 | gcc_bin = 'g++-3.4' | ||
303 | |||
304 | # Are we using the Intel compiler? | ||
305 | if gcc_bin.find('icpc') >= 0: | ||
306 | cflags += '-wr193,654,981,1125 -w1 ' | ||
307 | elif build_target == 'client': | ||
308 | cflags += '-falign-loops=16 -ffast-math ' | ||
309 | |||
286 | cxxflags += cflags | 310 | cxxflags += cflags |
287 | 311 | ||
288 | ### Build type-specific flags ### | 312 | ### Build type-specific flags ### |
289 | 313 | ||
290 | debug_cflags = cflags + '-fno-inline -O0 ' | 314 | debug_cflags = cflags + '-fno-inline -O0 ' |
315 | debug_cxxflags = cxxflags + '-fno-inline -O0 ' | ||
291 | debug_cppflags = cppflags + '-D_DEBUG -DLL_DEBUG=1 ' | 316 | debug_cppflags = cppflags + '-D_DEBUG -DLL_DEBUG=1 ' |
292 | debug_cxxflags = cxxflags | ||
293 | release_cflags = cflags + '-O2 ' | 317 | release_cflags = cflags + '-O2 ' |
318 | release_cxxflags = cxxflags + '-O2 ' | ||
294 | release_cppflags = cppflags + '-DNDEBUG -DLL_RELEASE=1 ' | 319 | release_cppflags = cppflags + '-DNDEBUG -DLL_RELEASE=1 ' |
295 | release_cxxflags = cxxflags | ||
296 | releasenoopt_cflags = cflags + '-O0 ' | 320 | releasenoopt_cflags = cflags + '-O0 ' |
321 | releasenoopt_cxxflags = cxxflags + '-O0 ' | ||
297 | releasenoopt_cppflags = cppflags + '-DNDEBUG -DLL_RELEASE=1 ' | 322 | releasenoopt_cppflags = cppflags + '-DNDEBUG -DLL_RELEASE=1 ' |
298 | releasenoopt_cxxflags = cxxflags | ||
299 | releasefordownload_cflags = cflags + '-O2 ' | 323 | releasefordownload_cflags = cflags + '-O2 ' |
324 | releasefordownload_cxxflags = cxxflags + '-O2 ' | ||
300 | releasefordownload_cppflags = cppflags + '-DNDEBUG -DLL_RELEASE=1 -DLL_RELEASE_FOR_DOWNLOAD=1 ' | 325 | releasefordownload_cppflags = cppflags + '-DNDEBUG -DLL_RELEASE=1 -DLL_RELEASE_FOR_DOWNLOAD=1 ' |
301 | releasefordownload_cxxflags = cxxflags | ||
302 | 326 | ||
303 | ################ | 327 | ################ |
304 | # ENVIRONMENT # | 328 | # ENVIRONMENT # |
305 | ################ | 329 | ################ |
306 | 330 | ||
307 | if standalone: | ||
308 | gcc_bin = 'g++' | ||
309 | else: | ||
310 | gcc_bin = 'g++-3.4' | ||
311 | |||
312 | # If you strip more aggressively than -S then the quality of crash- | 331 | # If you strip more aggressively than -S then the quality of crash- |
313 | # logger backtraces deteriorates. | 332 | # logger backtraces deteriorates. |
314 | strip_cmd = 'strip -S -o $TARGET $SOURCE' | 333 | strip_cmd = 'strip -S -o $TARGET $SOURCE' |
@@ -324,13 +343,6 @@ for build_target in targets: | |||
324 | else: | 343 | else: |
325 | hidesyms_cmd = 'cp -f $SOURCE $TARGET' | 344 | hidesyms_cmd = 'cp -f $SOURCE $TARGET' |
326 | 345 | ||
327 | if build_target != 'client': | ||
328 | gcc_bin = 'g++-3.3' | ||
329 | |||
330 | if arch == 'x86_64cross': | ||
331 | gcc_bin = '/opt/crosstool/gcc-4.0.2-glibc-2.3.6/x86_64-unknown-linux-gnu/bin/x86_64-unknown-linux-gnu-gcc' | ||
332 | strip_cmd = '/opt/crosstool/gcc-4.0.2-glibc-2.3.6/x86_64-unknown-linux-gnu/x86_64-unknown-linux-gnu/bin/strip -S -o $TARGET $SOURCE' | ||
333 | |||
334 | compiler = gcc_bin | 346 | compiler = gcc_bin |
335 | compiler_no_distcc = compiler | 347 | compiler_no_distcc = compiler |
336 | if enable_distcc: | 348 | if enable_distcc: |
@@ -380,6 +392,18 @@ for build_target in targets: | |||
380 | 392 | ||
381 | env_no_distcc = env.Copy(CXX = compiler_no_distcc) | 393 | env_no_distcc = env.Copy(CXX = compiler_no_distcc) |
382 | 394 | ||
395 | vec_match = re.compile("_vec\.") | ||
396 | env_vec = env.Copy() # _vec is for default vector optimizations or none | ||
397 | |||
398 | sse_match = re.compile("_sse\.") | ||
399 | env_sse = env.Copy() | ||
400 | env_sse.Append(CPPFLAGS = ' -msse -mfpmath=sse') | ||
401 | |||
402 | sse2_match = re.compile("_sse2\.") | ||
403 | env_sse2 = env.Copy() | ||
404 | env_sse2.Append(CPPFLAGS = ' -msse2 -mfpmath=sse') | ||
405 | |||
406 | |||
383 | ### Distributed build hosts ### | 407 | ### Distributed build hosts ### |
384 | 408 | ||
385 | if enable_distcc: | 409 | if enable_distcc: |
@@ -407,6 +431,21 @@ for build_target in targets: | |||
407 | # HELPER FUNCTIONS # | 431 | # HELPER FUNCTIONS # |
408 | ##################### | 432 | ##################### |
409 | 433 | ||
434 | ## handle special compiler modes | ||
435 | |||
436 | def file_obj(file): | ||
437 | if file == 'newsim/lltask.cpp': | ||
438 | print 'Found lltask!' | ||
439 | return env_no_distcc.Object(file) | ||
440 | elif vec_match.search(file) != None: | ||
441 | return env_vec.Object(file) | ||
442 | elif sse_match.search(file) != None: | ||
443 | return env_sse.Object(file) | ||
444 | elif sse2_match.search(file) != None: | ||
445 | return env_sse2.Object(file) | ||
446 | else: | ||
447 | return file | ||
448 | |||
410 | ### Load a files.lst and files.PLATFORM.lst for each module ### | 449 | ### Load a files.lst and files.PLATFORM.lst for each module ### |
411 | 450 | ||
412 | def load_files(module, source_fname): | 451 | def load_files(module, source_fname): |
@@ -417,12 +456,7 @@ for build_target in targets: | |||
417 | for x in list: | 456 | for x in list: |
418 | if not x.startswith('#'): | 457 | if not x.startswith('#'): |
419 | file = os.path.join(build_dir, x) | 458 | file = os.path.join(build_dir, x) |
420 | if x == 'newsim/lltask.cpp': | 459 | new_list.append(file_obj(file)) |
421 | print 'Found lltask!' | ||
422 | obj = env_no_distcc.Object(file) | ||
423 | new_list.append(obj) | ||
424 | else: | ||
425 | new_list.append(file) | ||
426 | list_file.close() | 460 | list_file.close() |
427 | except IOError, val: | 461 | except IOError, val: |
428 | print 'Error: unable to open file list',source_fname, | 462 | print 'Error: unable to open file list',source_fname, |
@@ -434,7 +468,7 @@ for build_target in targets: | |||
434 | list = Split(platform_list_file.read()) | 468 | list = Split(platform_list_file.read()) |
435 | for x in list: | 469 | for x in list: |
436 | file = os.path.join(build_dir, x) | 470 | file = os.path.join(build_dir, x) |
437 | new_list.append(file) | 471 | new_list.append(file_obj(file)) |
438 | platform_list_file.close() | 472 | platform_list_file.close() |
439 | except IOError: | 473 | except IOError: |
440 | return new_list | 474 | return new_list |
@@ -559,7 +593,8 @@ for build_target in targets: | |||
559 | if arch != 'x86_64' and arch != 'x86_64cross': | 593 | if arch != 'x86_64' and arch != 'x86_64cross': |
560 | if enable_fmod: | 594 | if enable_fmod: |
561 | external_libs += [ 'fmod-3.75' ] | 595 | external_libs += [ 'fmod-3.75' ] |
562 | external_libs += ['tcmalloc', 'stacktrace'] | 596 | if buildtype == 'debug': |
597 | external_libs += ['tcmalloc', 'stacktrace'] | ||
563 | 598 | ||
564 | external_libs.remove('cares') | 599 | external_libs.remove('cares') |
565 | 600 | ||
diff --git a/linden/indra/indra_complete/indra_complete.sln b/linden/indra/indra_complete/indra_complete.sln index a56a889..27e147e 100644 --- a/linden/indra/indra_complete/indra_complete.sln +++ b/linden/indra/indra_complete/indra_complete.sln | |||
@@ -141,12 +141,14 @@ EndProject | |||
141 | ProjectSection(ProjectDependencies) = postProject | 141 | ProjectSection(ProjectDependencies) = postProject |
142 | {7BCB4B2C-8378-4186-88EA-5742B5ABE17F} = {7BCB4B2C-8378-4186-88EA-5742B5ABE17F} | 142 | {7BCB4B2C-8378-4186-88EA-5742B5ABE17F} = {7BCB4B2C-8378-4186-88EA-5742B5ABE17F} |
143 | {44CE6D82-7320-4609-8FC3-5965C19F4808} = {44CE6D82-7320-4609-8FC3-5965C19F4808} | 143 | {44CE6D82-7320-4609-8FC3-5965C19F4808} = {44CE6D82-7320-4609-8FC3-5965C19F4808} |
144 | {BFA102B0-C891-4E13-B1CF-C2F28073DA8E} = {BFA102B0-C891-4E13-B1CF-C2F28073DA8E} | ||
144 | {E87FD9BE-BE42-4EA3-BF4D-D992223046D9} = {E87FD9BE-BE42-4EA3-BF4D-D992223046D9} | 145 | {E87FD9BE-BE42-4EA3-BF4D-D992223046D9} = {E87FD9BE-BE42-4EA3-BF4D-D992223046D9} |
145 | EndProjectSection | 146 | EndProjectSection |
146 | EndProject | 147 | EndProject |
147 | ProjectSection(ProjectDependencies) = postProject | 148 | ProjectSection(ProjectDependencies) = postProject |
148 | {7BCB4B2C-8378-4186-88EA-5742B5ABE17F} = {7BCB4B2C-8378-4186-88EA-5742B5ABE17F} | 149 | {7BCB4B2C-8378-4186-88EA-5742B5ABE17F} = {7BCB4B2C-8378-4186-88EA-5742B5ABE17F} |
149 | {F882263E-4F2A-43D9-A45A-FA4C8EC66552} = {F882263E-4F2A-43D9-A45A-FA4C8EC66552} | 150 | {F882263E-4F2A-43D9-A45A-FA4C8EC66552} = {F882263E-4F2A-43D9-A45A-FA4C8EC66552} |
151 | {BFA102B0-C891-4E13-B1CF-C2F28073DA8E} = {BFA102B0-C891-4E13-B1CF-C2F28073DA8E} | ||
150 | {E87FD9BE-BE42-4EA3-BF4D-D992223046D9} = {E87FD9BE-BE42-4EA3-BF4D-D992223046D9} | 152 | {E87FD9BE-BE42-4EA3-BF4D-D992223046D9} = {E87FD9BE-BE42-4EA3-BF4D-D992223046D9} |
151 | EndProjectSection | 153 | EndProjectSection |
152 | EndProject | 154 | EndProject |
@@ -262,6 +264,8 @@ Global | |||
262 | Debug = Debug | 264 | Debug = Debug |
263 | Release = Release | 265 | Release = Release |
264 | EndGlobalSection | 266 | EndGlobalSection |
267 | GlobalSection(ProjectDependencies) = postSolution | ||
268 | EndGlobalSection | ||
265 | GlobalSection(ProjectConfiguration) = postSolution | 269 | GlobalSection(ProjectConfiguration) = postSolution |
266 | {7BCB4B2C-8378-4186-88EA-5742B5ABE17F}.Debug.ActiveCfg = Debug|Win32 | 270 | {7BCB4B2C-8378-4186-88EA-5742B5ABE17F}.Debug.ActiveCfg = Debug|Win32 |
267 | {7BCB4B2C-8378-4186-88EA-5742B5ABE17F}.Debug.Build.0 = Debug|Win32 | 271 | {7BCB4B2C-8378-4186-88EA-5742B5ABE17F}.Debug.Build.0 = Debug|Win32 |
diff --git a/linden/indra/llcharacter/llheadrotmotion.cpp b/linden/indra/llcharacter/llheadrotmotion.cpp index cfab048..73f8e8b 100644 --- a/linden/indra/llcharacter/llheadrotmotion.cpp +++ b/linden/indra/llcharacter/llheadrotmotion.cpp | |||
@@ -438,6 +438,10 @@ BOOL LLEyeMotion::onUpdate(F32 time, U8* joint_mask) | |||
438 | up.setVec(eye_look_at % left); | 438 | up.setVec(eye_look_at % left); |
439 | 439 | ||
440 | target_eye_rot = LLQuaternion(eye_look_at, left, up); | 440 | target_eye_rot = LLQuaternion(eye_look_at, left, up); |
441 | // convert target rotation to head-local coordinates | ||
442 | target_eye_rot *= ~mHeadJoint->getWorldRotation(); | ||
443 | // constrain target orientation to be in front of avatar's face | ||
444 | target_eye_rot.constrain(EYE_ROT_LIMIT_ANGLE); | ||
441 | 445 | ||
442 | // calculate vergence | 446 | // calculate vergence |
443 | F32 interocular_dist = (mLeftEyeState.getJoint()->getWorldPosition() - mRightEyeState.getJoint()->getWorldPosition()).magVec(); | 447 | F32 interocular_dist = (mLeftEyeState.getJoint()->getWorldPosition() - mRightEyeState.getJoint()->getWorldPosition()).magVec(); |
@@ -446,7 +450,7 @@ BOOL LLEyeMotion::onUpdate(F32 time, U8* joint_mask) | |||
446 | } | 450 | } |
447 | else | 451 | else |
448 | { | 452 | { |
449 | target_eye_rot = mHeadJoint->getWorldRotation(); | 453 | target_eye_rot = LLQuaternion::DEFAULT; |
450 | vergence = 0.f; | 454 | vergence = 0.f; |
451 | } | 455 | } |
452 | 456 | ||
@@ -488,18 +492,8 @@ BOOL LLEyeMotion::onUpdate(F32 time, U8* joint_mask) | |||
488 | vergence_quat.transQuat(); | 492 | vergence_quat.transQuat(); |
489 | right_eye_rot = vergence_quat * eye_jitter_rot * right_eye_rot; | 493 | right_eye_rot = vergence_quat * eye_jitter_rot * right_eye_rot; |
490 | 494 | ||
491 | //set final eye rotations | 495 | mLeftEyeState.setRotation( left_eye_rot ); |
492 | // start with left | 496 | mRightEyeState.setRotation( right_eye_rot ); |
493 | LLQuaternion tQw = mLeftEyeState.getJoint()->getParent()->getWorldRotation(); | ||
494 | LLQuaternion tQh = left_eye_rot * ~tQw; | ||
495 | tQh.constrain(EYE_ROT_LIMIT_ANGLE); | ||
496 | mLeftEyeState.setRotation( tQh ); | ||
497 | |||
498 | // now do right eye | ||
499 | tQw = mRightEyeState.getJoint()->getParent()->getWorldRotation(); | ||
500 | tQh = right_eye_rot * ~tQw; | ||
501 | tQh.constrain(EYE_ROT_LIMIT_ANGLE); | ||
502 | mRightEyeState.setRotation( tQh ); | ||
503 | 497 | ||
504 | return TRUE; | 498 | return TRUE; |
505 | } | 499 | } |
diff --git a/linden/indra/llcharacter/lljointstate.h b/linden/indra/llcharacter/lljointstate.h index 8b55410..5311374 100644 --- a/linden/indra/llcharacter/lljointstate.h +++ b/linden/indra/llcharacter/lljointstate.h | |||
@@ -118,7 +118,7 @@ public: | |||
118 | void setScale( const LLVector3& scale ) { llassert(mUsage & SCALE); mScale = scale; } | 118 | void setScale( const LLVector3& scale ) { llassert(mUsage & SCALE); mScale = scale; } |
119 | 119 | ||
120 | // get/set priority | 120 | // get/set priority |
121 | const LLJoint::JointPriority getPriority() { return mPriority; } | 121 | LLJoint::JointPriority getPriority() { return mPriority; } |
122 | void setPriority( const LLJoint::JointPriority priority ) { mPriority = priority; } | 122 | void setPriority( const LLJoint::JointPriority priority ) { mPriority = priority; } |
123 | }; | 123 | }; |
124 | 124 | ||
diff --git a/linden/indra/llcharacter/llmotioncontroller.cpp b/linden/indra/llcharacter/llmotioncontroller.cpp index 3ef35ec..2427fd8 100644 --- a/linden/indra/llcharacter/llmotioncontroller.cpp +++ b/linden/indra/llcharacter/llmotioncontroller.cpp | |||
@@ -360,7 +360,7 @@ BOOL LLMotionController::startMotion(const LLUUID &id, F32 start_offset) | |||
360 | { | 360 | { |
361 | if (motion->isStopped()) // motion has been stopped | 361 | if (motion->isStopped()) // motion has been stopped |
362 | { | 362 | { |
363 | deactivateMotion(motion); | 363 | deactivateMotion(motion, false); |
364 | } | 364 | } |
365 | else if (mTime < motion->mSendStopTimestamp) // motion is still active | 365 | else if (mTime < motion->mSendStopTimestamp) // motion is still active |
366 | { | 366 | { |
@@ -396,7 +396,7 @@ BOOL LLMotionController::stopMotionLocally(const LLUUID &id, BOOL stop_immediate | |||
396 | 396 | ||
397 | if (stop_immediate) | 397 | if (stop_immediate) |
398 | { | 398 | { |
399 | deactivateMotion(motion); | 399 | deactivateMotion(motion, false); |
400 | } | 400 | } |
401 | return TRUE; | 401 | return TRUE; |
402 | } | 402 | } |
@@ -492,7 +492,7 @@ void LLMotionController::updateMotionsByType(LLMotion::LLMotionBlendType anim_ty | |||
492 | { | 492 | { |
493 | if (motionp->isStopped() && mTime > motionp->getStopTime() + motionp->getEaseOutDuration()) | 493 | if (motionp->isStopped() && mTime > motionp->getStopTime() + motionp->getEaseOutDuration()) |
494 | { | 494 | { |
495 | deactivateMotion(motionp); | 495 | deactivateMotion(motionp, false); |
496 | } | 496 | } |
497 | else if (motionp->isStopped() && mTime > motionp->getStopTime()) | 497 | else if (motionp->isStopped() && mTime > motionp->getStopTime()) |
498 | { | 498 | { |
@@ -546,8 +546,7 @@ void LLMotionController::updateMotionsByType(LLMotion::LLMotionBlendType anim_ty | |||
546 | { | 546 | { |
547 | if (motionp->isStopped() && mTime > motionp->getStopTime() + motionp->getEaseOutDuration()) | 547 | if (motionp->isStopped() && mTime > motionp->getStopTime() + motionp->getEaseOutDuration()) |
548 | { | 548 | { |
549 | posep->setWeight(0.f); | 549 | deactivateMotion(motionp, true); |
550 | deactivateMotion(motionp); | ||
551 | } | 550 | } |
552 | continue; | 551 | continue; |
553 | } | 552 | } |
@@ -573,8 +572,7 @@ void LLMotionController::updateMotionsByType(LLMotion::LLMotionBlendType anim_ty | |||
573 | } | 572 | } |
574 | else | 573 | else |
575 | { | 574 | { |
576 | posep->setWeight(0.f); | 575 | deactivateMotion(motionp, true); |
577 | deactivateMotion(motionp); | ||
578 | continue; | 576 | continue; |
579 | } | 577 | } |
580 | } | 578 | } |
@@ -822,8 +820,15 @@ BOOL LLMotionController::activateMotion(LLMotion *motion, F32 time) | |||
822 | //----------------------------------------------------------------------------- | 820 | //----------------------------------------------------------------------------- |
823 | // deactivateMotion() | 821 | // deactivateMotion() |
824 | //----------------------------------------------------------------------------- | 822 | //----------------------------------------------------------------------------- |
825 | BOOL LLMotionController::deactivateMotion(LLMotion *motion) | 823 | BOOL LLMotionController::deactivateMotion(LLMotion *motion, bool remove_weight) |
826 | { | 824 | { |
825 | if( remove_weight ) | ||
826 | { | ||
827 | // immediately remove pose weighting instead of letting it time out | ||
828 | LLPose *posep = motion->getPose(); | ||
829 | posep->setWeight(0.f); | ||
830 | } | ||
831 | |||
827 | motion->deactivate(); | 832 | motion->deactivate(); |
828 | mActiveMotions.remove(motion); | 833 | mActiveMotions.remove(motion); |
829 | 834 | ||
diff --git a/linden/indra/llcharacter/llmotioncontroller.h b/linden/indra/llcharacter/llmotioncontroller.h index 94149da..959a16a 100644 --- a/linden/indra/llcharacter/llmotioncontroller.h +++ b/linden/indra/llcharacter/llmotioncontroller.h | |||
@@ -182,7 +182,7 @@ protected: | |||
182 | void deleteAllMotions(); | 182 | void deleteAllMotions(); |
183 | void addLoadedMotion(LLMotion *motion); | 183 | void addLoadedMotion(LLMotion *motion); |
184 | BOOL activateMotion(LLMotion *motion, F32 time); | 184 | BOOL activateMotion(LLMotion *motion, F32 time); |
185 | BOOL deactivateMotion(LLMotion *motion); | 185 | BOOL deactivateMotion(LLMotion *motion, bool remove_weight); |
186 | void updateRegularMotions(); | 186 | void updateRegularMotions(); |
187 | void updateAdditiveMotions(); | 187 | void updateAdditiveMotions(); |
188 | void resetJointSignatures(); | 188 | void resetJointSignatures(); |
diff --git a/linden/indra/llcharacter/llvisualparam.h b/linden/indra/llcharacter/llvisualparam.h index ec19fa0..ddd0469 100644 --- a/linden/indra/llcharacter/llvisualparam.h +++ b/linden/indra/llcharacter/llvisualparam.h | |||
@@ -108,7 +108,7 @@ public: | |||
108 | virtual void stopAnimating(BOOL set_by_user); | 108 | virtual void stopAnimating(BOOL set_by_user); |
109 | 109 | ||
110 | // Interface methods | 110 | // Interface methods |
111 | const S32 getID() { return mID; } | 111 | S32 getID() { return mID; } |
112 | void setID(S32 id) { llassert(!mInfo); mID = id; } | 112 | void setID(S32 id) { llassert(!mInfo); mID = id; } |
113 | 113 | ||
114 | const LLString& getName() const { return mInfo->mName; } | 114 | const LLString& getName() const { return mInfo->mName; } |
@@ -120,7 +120,7 @@ public: | |||
120 | void setMaxDisplayName(const char* s) { mInfo->mMaxName = s; } | 120 | void setMaxDisplayName(const char* s) { mInfo->mMaxName = s; } |
121 | void setMinDisplayName(const char* s) { mInfo->mMinName = s; } | 121 | void setMinDisplayName(const char* s) { mInfo->mMinName = s; } |
122 | 122 | ||
123 | const EVisualParamGroup getGroup() { return mInfo->mGroup; } | 123 | EVisualParamGroup getGroup() { return mInfo->mGroup; } |
124 | F32 getMinWeight() { return mInfo->mMinWeight; } | 124 | F32 getMinWeight() { return mInfo->mMinWeight; } |
125 | F32 getMaxWeight() { return mInfo->mMaxWeight; } | 125 | F32 getMaxWeight() { return mInfo->mMaxWeight; } |
126 | F32 getDefaultWeight() { return mInfo->mDefaultWeight; } | 126 | F32 getDefaultWeight() { return mInfo->mDefaultWeight; } |
diff --git a/linden/indra/llcommon/llenum.h b/linden/indra/llcommon/llenum.h index 310ccd2..3e75a22 100644 --- a/linden/indra/llcommon/llenum.h +++ b/linden/indra/llcommon/llenum.h | |||
@@ -52,7 +52,7 @@ public: | |||
52 | } | 52 | } |
53 | } | 53 | } |
54 | 54 | ||
55 | const U32 operator[](std::string str) | 55 | U32 operator[](std::string str) |
56 | { | 56 | { |
57 | std::map<const std::string, const U32>::iterator itor; | 57 | std::map<const std::string, const U32>::iterator itor; |
58 | itor = mEnumMap.find(str); | 58 | itor = mEnumMap.find(str); |
diff --git a/linden/indra/llcommon/llpreprocessor.h b/linden/indra/llcommon/llpreprocessor.h index 495b9e8..76145c5 100644 --- a/linden/indra/llcommon/llpreprocessor.h +++ b/linden/indra/llcommon/llpreprocessor.h | |||
@@ -71,12 +71,22 @@ | |||
71 | #define MOZILLA_INTERNAL_API 1 | 71 | #define MOZILLA_INTERNAL_API 1 |
72 | #endif | 72 | #endif |
73 | 73 | ||
74 | // Deal with minor differences on Unixy OSes. | 74 | // Figure out differences between compilers |
75 | #if LL_DARWIN || LL_LINUX | 75 | #if defined(__GNUC__) |
76 | #define GCC_VERSION (__GNUC__ * 10000 \ | 76 | #define GCC_VERSION (__GNUC__ * 10000 \ |
77 | + __GNUC_MINOR__ * 100 \ | 77 | + __GNUC_MINOR__ * 100 \ |
78 | + __GNUC_PATCHLEVEL__) | 78 | + __GNUC_PATCHLEVEL__) |
79 | #ifndef LL_GNUC | ||
80 | #define LL_GNUC 1 | ||
81 | #endif | ||
82 | #elif defined(__MSVC_VER__) || defined(_MSC_VER) | ||
83 | #ifndef LL_MSVC | ||
84 | #define LL_MSVC 1 | ||
85 | #endif | ||
86 | #endif | ||
79 | 87 | ||
88 | // Deal with minor differences on Unixy OSes. | ||
89 | #if LL_DARWIN || LL_LINUX | ||
80 | // Different name, same functionality. | 90 | // Different name, same functionality. |
81 | #define stricmp strcasecmp | 91 | #define stricmp strcasecmp |
82 | #define strnicmp strncasecmp | 92 | #define strnicmp strncasecmp |
@@ -89,9 +99,9 @@ | |||
89 | #endif | 99 | #endif |
90 | 100 | ||
91 | // Deal with the differeneces on Windows | 101 | // Deal with the differeneces on Windows |
92 | #if LL_WINDOWS | 102 | #if LL_MSVC |
93 | #define snprintf safe_snprintf /* Flawfinder: ignore */ | 103 | #define snprintf safe_snprintf /* Flawfinder: ignore */ |
94 | #endif // LL_WINDOWS | 104 | #endif // LL_MSVC |
95 | 105 | ||
96 | // Static linking with apr on windows needs to be declared. | 106 | // Static linking with apr on windows needs to be declared. |
97 | #ifdef LL_WINDOWS | 107 | #ifdef LL_WINDOWS |
@@ -110,7 +120,7 @@ | |||
110 | 120 | ||
111 | 121 | ||
112 | // Deal with VC6 problems | 122 | // Deal with VC6 problems |
113 | #if defined(LL_WINDOWS) | 123 | #if LL_MSVC |
114 | #pragma warning( 3 : 4701 ) // "local variable used without being initialized" Treat this as level 3, not level 4. | 124 | #pragma warning( 3 : 4701 ) // "local variable used without being initialized" Treat this as level 3, not level 4. |
115 | #pragma warning( 3 : 4702 ) // "unreachable code" Treat this as level 3, not level 4. | 125 | #pragma warning( 3 : 4702 ) // "unreachable code" Treat this as level 3, not level 4. |
116 | #pragma warning( 3 : 4189 ) // "local variable initialized but not referenced" Treat this as level 3, not level 4. | 126 | #pragma warning( 3 : 4189 ) // "local variable initialized but not referenced" Treat this as level 3, not level 4. |
@@ -121,6 +131,6 @@ | |||
121 | #pragma warning( disable : 4503 ) // 'decorated name length exceeded, name was truncated'. Does not seem to affect compilation. | 131 | #pragma warning( disable : 4503 ) // 'decorated name length exceeded, name was truncated'. Does not seem to affect compilation. |
122 | #pragma warning( disable : 4800 ) // 'BOOL' : forcing value to bool 'true' or 'false' (performance warning) | 132 | #pragma warning( disable : 4800 ) // 'BOOL' : forcing value to bool 'true' or 'false' (performance warning) |
123 | #pragma warning( disable : 4996 ) // warning: deprecated | 133 | #pragma warning( disable : 4996 ) // warning: deprecated |
124 | #endif // LL_WINDOWS | 134 | #endif // LL_MSVC |
125 | 135 | ||
126 | #endif // not LL_LINDEN_PREPROCESSOR_H | 136 | #endif // not LL_LINDEN_PREPROCESSOR_H |
diff --git a/linden/indra/llcommon/llprocessor.cpp b/linden/indra/llcommon/llprocessor.cpp index bd21351..e76294d 100644 --- a/linden/indra/llcommon/llprocessor.cpp +++ b/linden/indra/llcommon/llprocessor.cpp | |||
@@ -1538,6 +1538,7 @@ void CProcessor::GetStandardProcessorExtensions() | |||
1538 | CPUInfo._Ext.FXSR_FastStreamingSIMD_ExtensionsSaveRestore = CheckBit(edxreg, 24); | 1538 | CPUInfo._Ext.FXSR_FastStreamingSIMD_ExtensionsSaveRestore = CheckBit(edxreg, 24); |
1539 | CPUInfo._Ext.SSE_StreamingSIMD_Extensions = CheckBit(edxreg, 25); | 1539 | CPUInfo._Ext.SSE_StreamingSIMD_Extensions = CheckBit(edxreg, 25); |
1540 | CPUInfo._Ext.SSE2_StreamingSIMD2_Extensions = CheckBit(edxreg, 26); | 1540 | CPUInfo._Ext.SSE2_StreamingSIMD2_Extensions = CheckBit(edxreg, 26); |
1541 | CPUInfo._Ext.Altivec_Extensions = false; | ||
1541 | CPUInfo._Ext.SS_SelfSnoop = CheckBit(edxreg, 27); | 1542 | CPUInfo._Ext.SS_SelfSnoop = CheckBit(edxreg, 27); |
1542 | CPUInfo._Ext.HT_HyperThreading = CheckBit(edxreg, 28); | 1543 | CPUInfo._Ext.HT_HyperThreading = CheckBit(edxreg, 28); |
1543 | CPUInfo._Ext.HT_HyterThreadingSiblings = (ebxreg >> 16) & 0xFF; | 1544 | CPUInfo._Ext.HT_HyterThreadingSiblings = (ebxreg >> 16) & 0xFF; |
@@ -1891,11 +1892,12 @@ const ProcessorInfo *CProcessor::GetCPUInfo() | |||
1891 | break; | 1892 | break; |
1892 | } | 1893 | } |
1893 | 1894 | ||
1894 | // It's kinda like MMX or SSE... | ||
1895 | CPUInfo._Ext.EMMX_MultimediaExtensions = | 1895 | CPUInfo._Ext.EMMX_MultimediaExtensions = |
1896 | CPUInfo._Ext.MMX_MultimediaExtensions = | 1896 | CPUInfo._Ext.MMX_MultimediaExtensions = |
1897 | CPUInfo._Ext.SSE_StreamingSIMD_Extensions = | 1897 | CPUInfo._Ext.SSE_StreamingSIMD_Extensions = |
1898 | CPUInfo._Ext.SSE2_StreamingSIMD2_Extensions = hasFeature("hw.optional.altivec"); | 1898 | CPUInfo._Ext.SSE2_StreamingSIMD2_Extensions = false; |
1899 | |||
1900 | CPUInfo._Ext.Altivec_Extensions = hasFeature("hw.optional.altivec"); | ||
1899 | 1901 | ||
1900 | #endif | 1902 | #endif |
1901 | 1903 | ||
@@ -1912,6 +1914,7 @@ const ProcessorInfo *CProcessor::GetCPUInfo() | |||
1912 | CPUInfo._Ext.MMX_MultimediaExtensions = hasFeature("hw.optional.mmx"); | 1914 | CPUInfo._Ext.MMX_MultimediaExtensions = hasFeature("hw.optional.mmx"); |
1913 | CPUInfo._Ext.SSE_StreamingSIMD_Extensions = hasFeature("hw.optional.sse"); | 1915 | CPUInfo._Ext.SSE_StreamingSIMD_Extensions = hasFeature("hw.optional.sse"); |
1914 | CPUInfo._Ext.SSE2_StreamingSIMD2_Extensions = hasFeature("hw.optional.sse2"); | 1916 | CPUInfo._Ext.SSE2_StreamingSIMD2_Extensions = hasFeature("hw.optional.sse2"); |
1917 | CPUInfo._Ext.Altivec_Extensions = false; | ||
1915 | CPUInfo._Ext.AA64_AMD64BitArchitecture = hasFeature("hw.optional.x86_64"); | 1918 | CPUInfo._Ext.AA64_AMD64BitArchitecture = hasFeature("hw.optional.x86_64"); |
1916 | 1919 | ||
1917 | #endif | 1920 | #endif |
@@ -2065,6 +2068,7 @@ bool CProcessor::CPUInfoToText(char *strBuffer, unsigned int uiMaxLen) | |||
2065 | BOOLADD("SS Self Snoop: ", CPUInfo._Ext.SS_SelfSnoop); | 2068 | BOOLADD("SS Self Snoop: ", CPUInfo._Ext.SS_SelfSnoop); |
2066 | BOOLADD("SSE Streaming SIMD Extensions: ", CPUInfo._Ext.SSE_StreamingSIMD_Extensions); | 2069 | BOOLADD("SSE Streaming SIMD Extensions: ", CPUInfo._Ext.SSE_StreamingSIMD_Extensions); |
2067 | BOOLADD("SSE2 Streaming SIMD 2 Extensions: ", CPUInfo._Ext.SSE2_StreamingSIMD2_Extensions); | 2070 | BOOLADD("SSE2 Streaming SIMD 2 Extensions: ", CPUInfo._Ext.SSE2_StreamingSIMD2_Extensions); |
2071 | BOOLADD("ALTVEC Altivec Extensions: ", CPUInfo._Ext.Altivec_Extensions); | ||
2068 | BOOLADD("TM Thermal Monitor: ", CPUInfo._Ext.TM_ThermalMonitor); | 2072 | BOOLADD("TM Thermal Monitor: ", CPUInfo._Ext.TM_ThermalMonitor); |
2069 | BOOLADD("TSC Time Stamp Counter: ", CPUInfo._Ext.TSC_TimeStampCounter); | 2073 | BOOLADD("TSC Time Stamp Counter: ", CPUInfo._Ext.TSC_TimeStampCounter); |
2070 | BOOLADD("VME Virtual 8086 Mode Enhancements: ", CPUInfo._Ext.VME_Virtual8086ModeEnhancements); | 2074 | BOOLADD("VME Virtual 8086 Mode Enhancements: ", CPUInfo._Ext.VME_Virtual8086ModeEnhancements); |
diff --git a/linden/indra/llcommon/llprocessor.h b/linden/indra/llcommon/llprocessor.h index fd9a5da..6db9328 100644 --- a/linden/indra/llcommon/llprocessor.h +++ b/linden/indra/llcommon/llprocessor.h | |||
@@ -71,6 +71,7 @@ typedef struct ProcessorExtensions | |||
71 | bool FXSR_FastStreamingSIMD_ExtensionsSaveRestore; | 71 | bool FXSR_FastStreamingSIMD_ExtensionsSaveRestore; |
72 | bool SSE_StreamingSIMD_Extensions; | 72 | bool SSE_StreamingSIMD_Extensions; |
73 | bool SSE2_StreamingSIMD2_Extensions; | 73 | bool SSE2_StreamingSIMD2_Extensions; |
74 | bool Altivec_Extensions; | ||
74 | bool SS_SelfSnoop; | 75 | bool SS_SelfSnoop; |
75 | bool HT_HyperThreading; | 76 | bool HT_HyperThreading; |
76 | unsigned int HT_HyterThreadingSiblings; | 77 | unsigned int HT_HyterThreadingSiblings; |
diff --git a/linden/indra/llcommon/llskiplist.h b/linden/indra/llcommon/llskiplist.h index be3385d..40d0c8a 100644 --- a/linden/indra/llcommon/llskiplist.h +++ b/linden/indra/llcommon/llskiplist.h | |||
@@ -28,11 +28,10 @@ | |||
28 | #ifndef LL_LLSKIPLIST_H | 28 | #ifndef LL_LLSKIPLIST_H |
29 | #define LL_LLSKIPLIST_H | 29 | #define LL_LLSKIPLIST_H |
30 | 30 | ||
31 | #include "llerror.h" | 31 | #include "llrand.h" |
32 | //#include "vmath.h" | ||
33 | 32 | ||
34 | // NOTA BENE: Insert first needs to be < NOT <= | 33 | // NOTA BENE: Insert first needs to be < NOT <= |
35 | 34 | // Binary depth must be >= 2 | |
36 | template <class DATA_TYPE, S32 BINARY_DEPTH = 10> | 35 | template <class DATA_TYPE, S32 BINARY_DEPTH = 10> |
37 | class LLSkipList | 36 | class LLSkipList |
38 | { | 37 | { |
@@ -144,14 +143,11 @@ private: | |||
144 | // Implementation | 143 | // Implementation |
145 | // | 144 | // |
146 | 145 | ||
146 | |||
147 | // Binary depth must be >= 2 | ||
147 | template <class DATA_TYPE, S32 BINARY_DEPTH> | 148 | template <class DATA_TYPE, S32 BINARY_DEPTH> |
148 | inline void LLSkipList<DATA_TYPE, BINARY_DEPTH>::init() | 149 | inline void LLSkipList<DATA_TYPE, BINARY_DEPTH>::init() |
149 | { | 150 | { |
150 | if (BINARY_DEPTH < 2) | ||
151 | { | ||
152 | llerrs << "Trying to create skip list with too little depth, " | ||
153 | "must be 2 or greater" << llendl; | ||
154 | } | ||
155 | S32 i; | 151 | S32 i; |
156 | for (i = 0; i < BINARY_DEPTH; i++) | 152 | for (i = 0; i < BINARY_DEPTH; i++) |
157 | { | 153 | { |
diff --git a/linden/indra/llcommon/llsys.cpp b/linden/indra/llcommon/llsys.cpp index 48f2474..33e5cda 100644 --- a/linden/indra/llcommon/llsys.cpp +++ b/linden/indra/llcommon/llsys.cpp | |||
@@ -304,12 +304,33 @@ LLCPUInfo::LLCPUInfo() | |||
304 | { | 304 | { |
305 | CProcessor proc; | 305 | CProcessor proc; |
306 | const ProcessorInfo* info = proc.GetCPUInfo(); | 306 | const ProcessorInfo* info = proc.GetCPUInfo(); |
307 | mHasSSE = (info->_Ext.SSE_StreamingSIMD_Extensions != 0); | 307 | // proc.WriteInfoTextFile("procInfo.txt"); |
308 | mHasSSE2 = (info->_Ext.SSE2_StreamingSIMD2_Extensions != 0); | 308 | mHasSSE = info->_Ext.SSE_StreamingSIMD_Extensions; |
309 | mHasSSE2 = info->_Ext.SSE2_StreamingSIMD2_Extensions; | ||
310 | mHasAltivec = info->_Ext.Altivec_Extensions; | ||
309 | mCPUMhz = (S32)(proc.GetCPUFrequency(50)/1000000.0); | 311 | mCPUMhz = (S32)(proc.GetCPUFrequency(50)/1000000.0); |
310 | mFamily.assign( info->strFamily ); | 312 | mFamily.assign( info->strFamily ); |
311 | } | 313 | } |
312 | 314 | ||
315 | bool LLCPUInfo::hasAltivec() const | ||
316 | { | ||
317 | return mHasAltivec; | ||
318 | } | ||
319 | |||
320 | bool LLCPUInfo::hasSSE() const | ||
321 | { | ||
322 | return mHasSSE; | ||
323 | } | ||
324 | |||
325 | bool LLCPUInfo::hasSSE2() const | ||
326 | { | ||
327 | return mHasSSE2; | ||
328 | } | ||
329 | |||
330 | S32 LLCPUInfo::getMhz() const | ||
331 | { | ||
332 | return mCPUMhz; | ||
333 | } | ||
313 | 334 | ||
314 | std::string LLCPUInfo::getCPUString() const | 335 | std::string LLCPUInfo::getCPUString() const |
315 | { | 336 | { |
diff --git a/linden/indra/llcommon/llsys.h b/linden/indra/llcommon/llsys.h index 2047d9a..83ea081 100644 --- a/linden/indra/llcommon/llsys.h +++ b/linden/indra/llcommon/llsys.h | |||
@@ -72,16 +72,18 @@ public: | |||
72 | 72 | ||
73 | std::string getCPUString() const; | 73 | std::string getCPUString() const; |
74 | 74 | ||
75 | BOOL hasSSE() const { return mHasSSE; } | 75 | bool hasAltivec() const; |
76 | BOOL hasSSE2() const { return mHasSSE2; } | 76 | bool hasSSE() const; |
77 | S32 getMhz() const { return mCPUMhz; } | 77 | bool hasSSE2() const; |
78 | S32 getMhz() const; | ||
78 | 79 | ||
79 | // Family is "AMD Duron" or "Intel Pentium Pro" | 80 | // Family is "AMD Duron" or "Intel Pentium Pro" |
80 | const std::string& getFamily() const { return mFamily; } | 81 | const std::string& getFamily() const { return mFamily; } |
81 | 82 | ||
82 | private: | 83 | private: |
83 | BOOL mHasSSE; | 84 | bool mHasSSE; |
84 | BOOL mHasSSE2; | 85 | bool mHasSSE2; |
86 | bool mHasAltivec; | ||
85 | S32 mCPUMhz; | 87 | S32 mCPUMhz; |
86 | std::string mFamily; | 88 | std::string mFamily; |
87 | }; | 89 | }; |
diff --git a/linden/indra/llcommon/llversion.h b/linden/indra/llcommon/llversion.h index 096cf2e..eb8310e 100644 --- a/linden/indra/llcommon/llversion.h +++ b/linden/indra/llcommon/llversion.h | |||
@@ -31,7 +31,7 @@ | |||
31 | 31 | ||
32 | const S32 LL_VERSION_MAJOR = 1; | 32 | const S32 LL_VERSION_MAJOR = 1; |
33 | const S32 LL_VERSION_MINOR = 17; | 33 | const S32 LL_VERSION_MINOR = 17; |
34 | const S32 LL_VERSION_PATCH = 2; | 34 | const S32 LL_VERSION_PATCH = 3; |
35 | const S32 LL_VERSION_BUILD = 0; | 35 | const S32 LL_VERSION_BUILD = 0; |
36 | 36 | ||
37 | #endif | 37 | #endif |
diff --git a/linden/indra/llcommon/metaclass.cpp b/linden/indra/llcommon/metaclass.cpp index 251795e..e545411 100644 --- a/linden/indra/llcommon/metaclass.cpp +++ b/linden/indra/llcommon/metaclass.cpp | |||
@@ -28,7 +28,10 @@ | |||
28 | * COMPLETENESS OR PERFORMANCE. | 28 | * COMPLETENESS OR PERFORMANCE. |
29 | */ | 29 | */ |
30 | 30 | ||
31 | #include "linden_common.h" | ||
32 | |||
31 | #include "metaclass.h" | 33 | #include "metaclass.h" |
34 | |||
32 | #include "metaproperty.h" | 35 | #include "metaproperty.h" |
33 | #include "reflective.h" | 36 | #include "reflective.h" |
34 | 37 | ||
diff --git a/linden/indra/llcommon/metaproperty.cpp b/linden/indra/llcommon/metaproperty.cpp index 23ed7d9..221f7a7 100644 --- a/linden/indra/llcommon/metaproperty.cpp +++ b/linden/indra/llcommon/metaproperty.cpp | |||
@@ -28,7 +28,10 @@ | |||
28 | * COMPLETENESS OR PERFORMANCE. | 28 | * COMPLETENESS OR PERFORMANCE. |
29 | */ | 29 | */ |
30 | 30 | ||
31 | #include "linden_common.h" | ||
32 | |||
31 | #include "metaproperty.h" | 33 | #include "metaproperty.h" |
34 | |||
32 | #include "metaclass.h" | 35 | #include "metaclass.h" |
33 | 36 | ||
34 | LLMetaProperty::LLMetaProperty(const std::string& name, const LLMetaClass& object_class) : | 37 | LLMetaProperty::LLMetaProperty(const std::string& name, const LLMetaClass& object_class) : |
diff --git a/linden/indra/llcommon/reflective.cpp b/linden/indra/llcommon/reflective.cpp index 7c07d88..c8050e0 100644 --- a/linden/indra/llcommon/reflective.cpp +++ b/linden/indra/llcommon/reflective.cpp | |||
@@ -27,6 +27,8 @@ | |||
27 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | 27 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, |
28 | * COMPLETENESS OR PERFORMANCE. | 28 | * COMPLETENESS OR PERFORMANCE. |
29 | */ | 29 | */ |
30 | |||
31 | #include "linden_common.h" | ||
30 | 32 | ||
31 | #include "reflective.h" | 33 | #include "reflective.h" |
32 | 34 | ||
diff --git a/linden/indra/llinventory/llparcel.h b/linden/indra/llinventory/llparcel.h index a33ffad..66af8ad 100644 --- a/linden/indra/llinventory/llparcel.h +++ b/linden/indra/llinventory/llparcel.h | |||
@@ -298,7 +298,7 @@ public: | |||
298 | const char* getMusicURL() const { return mMusicURL.c_str(); } | 298 | const char* getMusicURL() const { return mMusicURL.c_str(); } |
299 | const char* getMediaURL() const { return mMediaURL.c_str(); } | 299 | const char* getMediaURL() const { return mMediaURL.c_str(); } |
300 | const LLUUID& getMediaID() const { return mMediaID; } | 300 | const LLUUID& getMediaID() const { return mMediaID; } |
301 | const U8 getMediaAutoScale() const { return mMediaAutoScale; } | 301 | U8 getMediaAutoScale() const { return mMediaAutoScale; } |
302 | S32 getLocalID() const { return mLocalID; } | 302 | S32 getLocalID() const { return mLocalID; } |
303 | const LLUUID& getOwnerID() const { return mOwnerID; } | 303 | const LLUUID& getOwnerID() const { return mOwnerID; } |
304 | const LLUUID& getGroupID() const { return mGroupID; } | 304 | const LLUUID& getGroupID() const { return mGroupID; } |
diff --git a/linden/indra/llinventory/llparcelflags.h b/linden/indra/llinventory/llparcelflags.h index 38d49fe..0c07b29 100644 --- a/linden/indra/llinventory/llparcelflags.h +++ b/linden/indra/llinventory/llparcelflags.h | |||
@@ -64,7 +64,7 @@ const U32 PF_ALLOW_GROUP_OBJECT_ENTRY = 1 << 28; // Only allow group (and owner) | |||
64 | const U32 PF_ALLOW_VOICE_CHAT = 1 << 29; // Allow residents to use voice chat on this parcel | 64 | const U32 PF_ALLOW_VOICE_CHAT = 1 << 29; // Allow residents to use voice chat on this parcel |
65 | const U32 PF_USE_ESTATE_VOICE_CHAN = 1 << 30; | 65 | const U32 PF_USE_ESTATE_VOICE_CHAN = 1 << 30; |
66 | 66 | ||
67 | const U32 PF_RESERVED = 1 << 31; | 67 | const U32 PF_RESERVED = 1U << 31; |
68 | 68 | ||
69 | // If any of these are true the parcel is restricting access in some maner. | 69 | // If any of these are true the parcel is restricting access in some maner. |
70 | const U32 PF_USE_RESTRICTED_ACCESS = PF_USE_ACCESS_GROUP | 70 | const U32 PF_USE_RESTRICTED_ACCESS = PF_USE_ACCESS_GROUP |
diff --git a/linden/indra/llmath/llmath.vcproj b/linden/indra/llmath/llmath.vcproj index 4876065..bdc8ded 100644 --- a/linden/indra/llmath/llmath.vcproj +++ b/linden/indra/llmath/llmath.vcproj | |||
@@ -272,6 +272,18 @@ | |||
272 | RelativePath=".\lluuid.h"> | 272 | RelativePath=".\lluuid.h"> |
273 | </File> | 273 | </File> |
274 | <File | 274 | <File |
275 | RelativePath=".\llv4math.h"> | ||
276 | </File> | ||
277 | <File | ||
278 | RelativePath=".\llv4matrix3.h"> | ||
279 | </File> | ||
280 | <File | ||
281 | RelativePath=".\llv4matrix4.h"> | ||
282 | </File> | ||
283 | <File | ||
284 | RelativePath=".\llv4vector3.h"> | ||
285 | </File> | ||
286 | <File | ||
275 | RelativePath=".\llvolume.h"> | 287 | RelativePath=".\llvolume.h"> |
276 | </File> | 288 | </File> |
277 | <File | 289 | <File |
diff --git a/linden/indra/llmath/llmath_vc8.vcproj b/linden/indra/llmath/llmath_vc8.vcproj index ea23702..03d75c3 100644 --- a/linden/indra/llmath/llmath_vc8.vcproj +++ b/linden/indra/llmath/llmath_vc8.vcproj | |||
@@ -389,6 +389,22 @@ | |||
389 | > | 389 | > |
390 | </File> | 390 | </File> |
391 | <File | 391 | <File |
392 | RelativePath=".\llv4math.h" | ||
393 | > | ||
394 | </File> | ||
395 | <File | ||
396 | RelativePath=".\llv4matrix3.h" | ||
397 | > | ||
398 | </File> | ||
399 | <File | ||
400 | RelativePath=".\llv4matrix4.h" | ||
401 | > | ||
402 | </File> | ||
403 | <File | ||
404 | RelativePath=".\llv4vector3.h" | ||
405 | > | ||
406 | </File> | ||
407 | <File | ||
392 | RelativePath=".\llvolume.h" | 408 | RelativePath=".\llvolume.h" |
393 | > | 409 | > |
394 | </File> | 410 | </File> |
diff --git a/linden/indra/llmath/lluuid.h b/linden/indra/llmath/lluuid.h index 99cd585..6334ea4 100644 --- a/linden/indra/llmath/lluuid.h +++ b/linden/indra/llmath/lluuid.h | |||
@@ -317,6 +317,8 @@ typedef LLUUID LLAssetID; | |||
317 | class LLTransactionID : public LLUUID | 317 | class LLTransactionID : public LLUUID |
318 | { | 318 | { |
319 | public: | 319 | public: |
320 | LLTransactionID() : LLUUID() { } | ||
321 | |||
320 | static const LLTransactionID tnull; | 322 | static const LLTransactionID tnull; |
321 | LLAssetID makeAssetID(const LLUUID& session) const; | 323 | LLAssetID makeAssetID(const LLUUID& session) const; |
322 | }; | 324 | }; |
diff --git a/linden/indra/llmath/llv4math.h b/linden/indra/llmath/llv4math.h new file mode 100644 index 0000000..d0b956b --- /dev/null +++ b/linden/indra/llmath/llv4math.h | |||
@@ -0,0 +1,121 @@ | |||
1 | /** | ||
2 | * @file llviewerjointmesh.cpp | ||
3 | * @brief LLV4* class header file - vector processor enabled math | ||
4 | * | ||
5 | * Copyright (c) 2007-2007, Linden Research, Inc. | ||
6 | * | ||
7 | * Second Life Viewer Source Code | ||
8 | * The source code in this file ("Source Code") is provided by Linden Lab | ||
9 | * to you under the terms of the GNU General Public License, version 2.0 | ||
10 | * ("GPL"), unless you have obtained a separate licensing agreement | ||
11 | * ("Other License"), formally executed by you and Linden Lab. Terms of | ||
12 | * the GPL can be found in doc/GPL-license.txt in this distribution, or | ||
13 | * online at http://secondlife.com/developers/opensource/gplv2 | ||
14 | * | ||
15 | * There are special exceptions to the terms and conditions of the GPL as | ||
16 | * it is applied to this Source Code. View the full text of the exception | ||
17 | * in the file doc/FLOSS-exception.txt in this software distribution, or | ||
18 | * online at http://secondlife.com/developers/opensource/flossexception | ||
19 | * | ||
20 | * By copying, modifying or distributing this software, you acknowledge | ||
21 | * that you have read and understood your obligations described above, | ||
22 | * and agree to abide by those obligations. | ||
23 | * | ||
24 | * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO | ||
25 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | ||
26 | * COMPLETENESS OR PERFORMANCE. | ||
27 | */ | ||
28 | |||
29 | #ifndef LL_LLV4MATH_H | ||
30 | #define LL_LLV4MATH_H | ||
31 | |||
32 | //----------------------------------------------------------------------------- | ||
33 | //----------------------------------------------------------------------------- | ||
34 | // LLV4MATH - GNUC | ||
35 | //----------------------------------------------------------------------------- | ||
36 | //----------------------------------------------------------------------------- | ||
37 | |||
38 | #if LL_GNUC && __GNUC__ >= 4 && __SSE__ | ||
39 | |||
40 | #define LL_VECTORIZE 1 | ||
41 | |||
42 | #if LL_DARWIN | ||
43 | |||
44 | #include <Accelerate/Accelerate.h> | ||
45 | #include <xmmintrin.h> | ||
46 | typedef vFloat V4F32; | ||
47 | |||
48 | #else | ||
49 | |||
50 | #include <xmmintrin.h> | ||
51 | typedef float V4F32 __attribute__((vector_size(16))); | ||
52 | |||
53 | #endif | ||
54 | |||
55 | #endif | ||
56 | #if LL_GNUC | ||
57 | |||
58 | #define LL_LLV4MATH_ALIGN_PREFIX | ||
59 | #define LL_LLV4MATH_ALIGN_POSTFIX __attribute__((aligned(16))) | ||
60 | |||
61 | #endif | ||
62 | |||
63 | //----------------------------------------------------------------------------- | ||
64 | //----------------------------------------------------------------------------- | ||
65 | // LLV4MATH - MSVC | ||
66 | //----------------------------------------------------------------------------- | ||
67 | //----------------------------------------------------------------------------- | ||
68 | |||
69 | #if LL_MSVC && _M_IX86_FP | ||
70 | |||
71 | #define LL_VECTORIZE 1 | ||
72 | |||
73 | #include <xmmintrin.h> | ||
74 | |||
75 | typedef __m128 V4F32; | ||
76 | |||
77 | #endif | ||
78 | #if LL_MSVC | ||
79 | |||
80 | #define LL_LLV4MATH_ALIGN_PREFIX __declspec(align(16)) | ||
81 | #define LL_LLV4MATH_ALIGN_POSTFIX | ||
82 | |||
83 | #endif | ||
84 | |||
85 | //----------------------------------------------------------------------------- | ||
86 | //----------------------------------------------------------------------------- | ||
87 | // LLV4MATH - default - no vectorization | ||
88 | //----------------------------------------------------------------------------- | ||
89 | //----------------------------------------------------------------------------- | ||
90 | |||
91 | #if !LL_VECTORIZE | ||
92 | |||
93 | #define LL_VECTORIZE 0 | ||
94 | |||
95 | struct V4F32 { F32 __pad__[4]; }; | ||
96 | |||
97 | inline F32 llv4lerp(F32 a, F32 b, F32 w) { return ( b - a ) * w + a; } | ||
98 | |||
99 | #endif | ||
100 | |||
101 | #ifndef LL_LLV4MATH_ALIGN_PREFIX | ||
102 | # define LL_LLV4MATH_ALIGN_PREFIX | ||
103 | #endif | ||
104 | #ifndef LL_LLV4MATH_ALIGN_POSTFIX | ||
105 | # define LL_LLV4MATH_ALIGN_POSTFIX | ||
106 | #endif | ||
107 | |||
108 | //----------------------------------------------------------------------------- | ||
109 | //----------------------------------------------------------------------------- | ||
110 | // LLV4MATH | ||
111 | //----------------------------------------------------------------------------- | ||
112 | //----------------------------------------------------------------------------- | ||
113 | |||
114 | |||
115 | #define LLV4_NUM_AXIS 4 | ||
116 | |||
117 | class LLV4Vector3; | ||
118 | class LLV4Matrix3; | ||
119 | class LLV4Matrix4; | ||
120 | |||
121 | #endif | ||
diff --git a/linden/indra/llmath/llv4matrix3.h b/linden/indra/llmath/llv4matrix3.h new file mode 100644 index 0000000..0811338 --- /dev/null +++ b/linden/indra/llmath/llv4matrix3.h | |||
@@ -0,0 +1,222 @@ | |||
1 | /** | ||
2 | * @file llviewerjointmesh.cpp | ||
3 | * @brief LLV4* class header file - vector processor enabled math | ||
4 | * | ||
5 | * Copyright (c) 2007-2007, Linden Research, Inc. | ||
6 | * | ||
7 | * Second Life Viewer Source Code | ||
8 | * The source code in this file ("Source Code") is provided by Linden Lab | ||
9 | * to you under the terms of the GNU General Public License, version 2.0 | ||
10 | * ("GPL"), unless you have obtained a separate licensing agreement | ||
11 | * ("Other License"), formally executed by you and Linden Lab. Terms of | ||
12 | * the GPL can be found in doc/GPL-license.txt in this distribution, or | ||
13 | * online at http://secondlife.com/developers/opensource/gplv2 | ||
14 | * | ||
15 | * There are special exceptions to the terms and conditions of the GPL as | ||
16 | * it is applied to this Source Code. View the full text of the exception | ||
17 | * in the file doc/FLOSS-exception.txt in this software distribution, or | ||
18 | * online at http://secondlife.com/developers/opensource/flossexception | ||
19 | * | ||
20 | * By copying, modifying or distributing this software, you acknowledge | ||
21 | * that you have read and understood your obligations described above, | ||
22 | * and agree to abide by those obligations. | ||
23 | * | ||
24 | * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO | ||
25 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | ||
26 | * COMPLETENESS OR PERFORMANCE. | ||
27 | */ | ||
28 | |||
29 | #ifndef LL_LLV4MATRIX3_H | ||
30 | #define LL_LLV4MATRIX3_H | ||
31 | |||
32 | #include "llv4math.h" | ||
33 | #include "llv4vector3.h" | ||
34 | #include "m3math.h" // for operator LLMatrix3() | ||
35 | |||
36 | //----------------------------------------------------------------------------- | ||
37 | //----------------------------------------------------------------------------- | ||
38 | // LLV4Matrix3 | ||
39 | //----------------------------------------------------------------------------- | ||
40 | //----------------------------------------------------------------------------- | ||
41 | |||
42 | LL_LLV4MATH_ALIGN_PREFIX | ||
43 | |||
44 | class LLV4Matrix3 | ||
45 | { | ||
46 | public: | ||
47 | union { | ||
48 | F32 mMatrix[LLV4_NUM_AXIS][LLV4_NUM_AXIS]; | ||
49 | V4F32 mV[LLV4_NUM_AXIS]; | ||
50 | }; | ||
51 | |||
52 | void lerp(const LLV4Matrix3 &a, const LLV4Matrix3 &b, const F32 &w); | ||
53 | void multiply(const LLVector3 &a, LLVector3& out) const; | ||
54 | void multiply(const LLVector4 &a, LLV4Vector3& out) const; | ||
55 | void multiply(const LLVector3 &a, LLV4Vector3& out) const; | ||
56 | |||
57 | const LLV4Matrix3& transpose(); | ||
58 | const LLV4Matrix3& operator=(const LLMatrix3& a); | ||
59 | |||
60 | operator LLMatrix3() const { return (reinterpret_cast<const LLMatrix4*>(const_cast<const F32*>(&mMatrix[0][0])))->getMat3(); } | ||
61 | |||
62 | friend LLVector3 operator*(const LLVector3& a, const LLV4Matrix3& b); | ||
63 | } | ||
64 | |||
65 | LL_LLV4MATH_ALIGN_POSTFIX; | ||
66 | |||
67 | |||
68 | |||
69 | //----------------------------------------------------------------------------- | ||
70 | //----------------------------------------------------------------------------- | ||
71 | // LLV4Matrix3 - SSE | ||
72 | //----------------------------------------------------------------------------- | ||
73 | //----------------------------------------------------------------------------- | ||
74 | |||
75 | #if LL_VECTORIZE | ||
76 | |||
77 | inline void LLV4Matrix3::lerp(const LLV4Matrix3 &a, const LLV4Matrix3 &b, const F32 &w) | ||
78 | { | ||
79 | __m128 vw = _mm_set1_ps(w); | ||
80 | mV[VX] = _mm_add_ps(_mm_mul_ps(_mm_sub_ps(b.mV[VX], a.mV[VX]), vw), a.mV[VX]); // ( b - a ) * w + a | ||
81 | mV[VY] = _mm_add_ps(_mm_mul_ps(_mm_sub_ps(b.mV[VY], a.mV[VY]), vw), a.mV[VY]); | ||
82 | mV[VZ] = _mm_add_ps(_mm_mul_ps(_mm_sub_ps(b.mV[VZ], a.mV[VZ]), vw), a.mV[VZ]); | ||
83 | } | ||
84 | |||
85 | inline void LLV4Matrix3::multiply(const LLVector3 &a, LLVector3& o) const | ||
86 | { | ||
87 | LLV4Vector3 j; | ||
88 | j.v = _mm_mul_ps(_mm_set1_ps(a.mV[VX]), mV[VX]); // ( ax * vx ) + ... | ||
89 | j.v = _mm_add_ps(j.v , _mm_mul_ps(_mm_set1_ps(a.mV[VY]), mV[VY])); | ||
90 | j.v = _mm_add_ps(j.v , _mm_mul_ps(_mm_set1_ps(a.mV[VZ]), mV[VZ])); | ||
91 | o.setVec(j.mV); | ||
92 | } | ||
93 | |||
94 | inline void LLV4Matrix3::multiply(const LLVector4 &a, LLV4Vector3& o) const | ||
95 | { | ||
96 | o.v = _mm_mul_ps(_mm_set1_ps(a.mV[VX]), mV[VX]); // ( ax * vx ) + ... | ||
97 | o.v = _mm_add_ps(o.v , _mm_mul_ps(_mm_set1_ps(a.mV[VY]), mV[VY])); | ||
98 | o.v = _mm_add_ps(o.v , _mm_mul_ps(_mm_set1_ps(a.mV[VZ]), mV[VZ])); | ||
99 | } | ||
100 | |||
101 | inline void LLV4Matrix3::multiply(const LLVector3 &a, LLV4Vector3& o) const | ||
102 | { | ||
103 | o.v = _mm_mul_ps(_mm_set1_ps(a.mV[VX]), mV[VX]); // ( ax * vx ) + ... | ||
104 | o.v = _mm_add_ps(o.v , _mm_mul_ps(_mm_set1_ps(a.mV[VY]), mV[VY])); | ||
105 | o.v = _mm_add_ps(o.v , _mm_mul_ps(_mm_set1_ps(a.mV[VZ]), mV[VZ])); | ||
106 | } | ||
107 | |||
108 | //----------------------------------------------------------------------------- | ||
109 | //----------------------------------------------------------------------------- | ||
110 | // LLV4Matrix3 | ||
111 | //----------------------------------------------------------------------------- | ||
112 | //----------------------------------------------------------------------------- | ||
113 | |||
114 | #else | ||
115 | |||
116 | inline void LLV4Matrix3::lerp(const LLV4Matrix3 &a, const LLV4Matrix3 &b, const F32 &w) | ||
117 | { | ||
118 | mMatrix[VX][VX] = llv4lerp(a.mMatrix[VX][VX], b.mMatrix[VX][VX], w); | ||
119 | mMatrix[VX][VY] = llv4lerp(a.mMatrix[VX][VY], b.mMatrix[VX][VY], w); | ||
120 | mMatrix[VX][VZ] = llv4lerp(a.mMatrix[VX][VZ], b.mMatrix[VX][VZ], w); | ||
121 | |||
122 | mMatrix[VY][VX] = llv4lerp(a.mMatrix[VY][VX], b.mMatrix[VY][VX], w); | ||
123 | mMatrix[VY][VY] = llv4lerp(a.mMatrix[VY][VY], b.mMatrix[VY][VY], w); | ||
124 | mMatrix[VY][VZ] = llv4lerp(a.mMatrix[VY][VZ], b.mMatrix[VY][VZ], w); | ||
125 | |||
126 | mMatrix[VZ][VX] = llv4lerp(a.mMatrix[VZ][VX], b.mMatrix[VZ][VX], w); | ||
127 | mMatrix[VZ][VY] = llv4lerp(a.mMatrix[VZ][VY], b.mMatrix[VZ][VY], w); | ||
128 | mMatrix[VZ][VZ] = llv4lerp(a.mMatrix[VZ][VZ], b.mMatrix[VZ][VZ], w); | ||
129 | } | ||
130 | |||
131 | inline void LLV4Matrix3::multiply(const LLVector3 &a, LLVector3& o) const | ||
132 | { | ||
133 | o.setVec( a.mV[VX] * mMatrix[VX][VX] + | ||
134 | a.mV[VY] * mMatrix[VY][VX] + | ||
135 | a.mV[VZ] * mMatrix[VZ][VX], | ||
136 | |||
137 | a.mV[VX] * mMatrix[VX][VY] + | ||
138 | a.mV[VY] * mMatrix[VY][VY] + | ||
139 | a.mV[VZ] * mMatrix[VZ][VY], | ||
140 | |||
141 | a.mV[VX] * mMatrix[VX][VZ] + | ||
142 | a.mV[VY] * mMatrix[VY][VZ] + | ||
143 | a.mV[VZ] * mMatrix[VZ][VZ]); | ||
144 | } | ||
145 | |||
146 | inline void LLV4Matrix3::multiply(const LLVector4 &a, LLV4Vector3& o) const | ||
147 | { | ||
148 | o.setVec( a.mV[VX] * mMatrix[VX][VX] + | ||
149 | a.mV[VY] * mMatrix[VY][VX] + | ||
150 | a.mV[VZ] * mMatrix[VZ][VX], | ||
151 | |||
152 | a.mV[VX] * mMatrix[VX][VY] + | ||
153 | a.mV[VY] * mMatrix[VY][VY] + | ||
154 | a.mV[VZ] * mMatrix[VZ][VY], | ||
155 | |||
156 | a.mV[VX] * mMatrix[VX][VZ] + | ||
157 | a.mV[VY] * mMatrix[VY][VZ] + | ||
158 | a.mV[VZ] * mMatrix[VZ][VZ]); | ||
159 | } | ||
160 | |||
161 | inline void LLV4Matrix3::multiply(const LLVector3 &a, LLV4Vector3& o) const | ||
162 | { | ||
163 | o.setVec( a.mV[VX] * mMatrix[VX][VX] + | ||
164 | a.mV[VY] * mMatrix[VY][VX] + | ||
165 | a.mV[VZ] * mMatrix[VZ][VX], | ||
166 | |||
167 | a.mV[VX] * mMatrix[VX][VY] + | ||
168 | a.mV[VY] * mMatrix[VY][VY] + | ||
169 | a.mV[VZ] * mMatrix[VZ][VY], | ||
170 | |||
171 | a.mV[VX] * mMatrix[VX][VZ] + | ||
172 | a.mV[VY] * mMatrix[VY][VZ] + | ||
173 | a.mV[VZ] * mMatrix[VZ][VZ]); | ||
174 | } | ||
175 | |||
176 | //----------------------------------------------------------------------------- | ||
177 | //----------------------------------------------------------------------------- | ||
178 | // LLV4Matrix3 | ||
179 | //----------------------------------------------------------------------------- | ||
180 | //----------------------------------------------------------------------------- | ||
181 | |||
182 | #endif | ||
183 | |||
184 | inline const LLV4Matrix3& LLV4Matrix3::transpose() | ||
185 | { | ||
186 | #if LL_VECTORIZE && defined(_MM_TRANSPOSE4_PS) | ||
187 | _MM_TRANSPOSE4_PS(mV[VX], mV[VY], mV[VZ], mV[VW]); | ||
188 | return *this; | ||
189 | #else | ||
190 | F32 temp; | ||
191 | temp = mMatrix[VX][VY]; mMatrix[VX][VY] = mMatrix[VY][VX]; mMatrix[VY][VX] = temp; | ||
192 | temp = mMatrix[VX][VZ]; mMatrix[VX][VZ] = mMatrix[VZ][VX]; mMatrix[VZ][VX] = temp; | ||
193 | temp = mMatrix[VY][VZ]; mMatrix[VY][VZ] = mMatrix[VZ][VY]; mMatrix[VZ][VY] = temp; | ||
194 | #endif | ||
195 | return *this; | ||
196 | } | ||
197 | |||
198 | inline const LLV4Matrix3& LLV4Matrix3::operator=(const LLMatrix3& a) | ||
199 | { | ||
200 | memcpy(mMatrix[VX], a.mMatrix[VX], sizeof(F32) * 3 ); | ||
201 | memcpy(mMatrix[VY], a.mMatrix[VY], sizeof(F32) * 3 ); | ||
202 | memcpy(mMatrix[VZ], a.mMatrix[VZ], sizeof(F32) * 3 ); | ||
203 | return *this; | ||
204 | } | ||
205 | |||
206 | inline LLVector3 operator*(const LLVector3& a, const LLV4Matrix3& b) | ||
207 | { | ||
208 | return LLVector3( | ||
209 | a.mV[VX] * b.mMatrix[VX][VX] + | ||
210 | a.mV[VY] * b.mMatrix[VY][VX] + | ||
211 | a.mV[VZ] * b.mMatrix[VZ][VX], | ||
212 | |||
213 | a.mV[VX] * b.mMatrix[VX][VY] + | ||
214 | a.mV[VY] * b.mMatrix[VY][VY] + | ||
215 | a.mV[VZ] * b.mMatrix[VZ][VY], | ||
216 | |||
217 | a.mV[VX] * b.mMatrix[VX][VZ] + | ||
218 | a.mV[VY] * b.mMatrix[VY][VZ] + | ||
219 | a.mV[VZ] * b.mMatrix[VZ][VZ] ); | ||
220 | } | ||
221 | |||
222 | #endif | ||
diff --git a/linden/indra/llmath/llv4matrix4.h b/linden/indra/llmath/llv4matrix4.h new file mode 100644 index 0000000..38280a2 --- /dev/null +++ b/linden/indra/llmath/llv4matrix4.h | |||
@@ -0,0 +1,251 @@ | |||
1 | /** | ||
2 | * @file llviewerjointmesh.cpp | ||
3 | * @brief LLV4* class header file - vector processor enabled math | ||
4 | * | ||
5 | * Copyright (c) 2007-2007, Linden Research, Inc. | ||
6 | * | ||
7 | * Second Life Viewer Source Code | ||
8 | * The source code in this file ("Source Code") is provided by Linden Lab | ||
9 | * to you under the terms of the GNU General Public License, version 2.0 | ||
10 | * ("GPL"), unless you have obtained a separate licensing agreement | ||
11 | * ("Other License"), formally executed by you and Linden Lab. Terms of | ||
12 | * the GPL can be found in doc/GPL-license.txt in this distribution, or | ||
13 | * online at http://secondlife.com/developers/opensource/gplv2 | ||
14 | * | ||
15 | * There are special exceptions to the terms and conditions of the GPL as | ||
16 | * it is applied to this Source Code. View the full text of the exception | ||
17 | * in the file doc/FLOSS-exception.txt in this software distribution, or | ||
18 | * online at http://secondlife.com/developers/opensource/flossexception | ||
19 | * | ||
20 | * By copying, modifying or distributing this software, you acknowledge | ||
21 | * that you have read and understood your obligations described above, | ||
22 | * and agree to abide by those obligations. | ||
23 | * | ||
24 | * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO | ||
25 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | ||
26 | * COMPLETENESS OR PERFORMANCE. | ||
27 | */ | ||
28 | |||
29 | #ifndef LL_LLV4MATRIX4_H | ||
30 | #define LL_LLV4MATRIX4_H | ||
31 | |||
32 | #include "llv4math.h" | ||
33 | #include "llv4matrix3.h" // just for operator LLV4Matrix3() | ||
34 | #include "llv4vector3.h" | ||
35 | |||
36 | //----------------------------------------------------------------------------- | ||
37 | //----------------------------------------------------------------------------- | ||
38 | // LLV4Matrix4 | ||
39 | //----------------------------------------------------------------------------- | ||
40 | //----------------------------------------------------------------------------- | ||
41 | |||
42 | LL_LLV4MATH_ALIGN_PREFIX | ||
43 | |||
44 | class LLV4Matrix4 | ||
45 | { | ||
46 | public: | ||
47 | union { | ||
48 | F32 mMatrix[LLV4_NUM_AXIS][LLV4_NUM_AXIS]; | ||
49 | V4F32 mV[LLV4_NUM_AXIS]; | ||
50 | }; | ||
51 | |||
52 | void lerp(const LLV4Matrix4 &a, const LLV4Matrix4 &b, const F32 &w); | ||
53 | void multiply(const LLVector3 &a, LLVector3& o) const; | ||
54 | void multiply(const LLVector3 &a, LLV4Vector3& o) const; | ||
55 | |||
56 | const LLV4Matrix4& transpose(); | ||
57 | const LLV4Matrix4& translate(const LLVector3 &vec); | ||
58 | const LLV4Matrix4& translate(const LLV4Vector3 &vec); | ||
59 | const LLV4Matrix4& operator=(const LLMatrix4& a); | ||
60 | |||
61 | operator LLMatrix4() const { return *(reinterpret_cast<const LLMatrix4*>(const_cast<const F32*>(&mMatrix[0][0]))); } | ||
62 | operator LLV4Matrix3() const { return *(reinterpret_cast<const LLV4Matrix3*>(const_cast<const F32*>(&mMatrix[0][0]))); } | ||
63 | |||
64 | friend LLVector3 operator*(const LLVector3 &a, const LLV4Matrix4 &b); | ||
65 | } | ||
66 | |||
67 | LL_LLV4MATH_ALIGN_POSTFIX; | ||
68 | |||
69 | //----------------------------------------------------------------------------- | ||
70 | //----------------------------------------------------------------------------- | ||
71 | // LLV4Matrix4 - SSE | ||
72 | //----------------------------------------------------------------------------- | ||
73 | //----------------------------------------------------------------------------- | ||
74 | |||
75 | #if LL_VECTORIZE | ||
76 | |||
77 | inline void LLV4Matrix4::lerp(const LLV4Matrix4 &a, const LLV4Matrix4 &b, const F32 &w) | ||
78 | { | ||
79 | __m128 vw = _mm_set1_ps(w); | ||
80 | mV[VX] = _mm_add_ps(_mm_mul_ps(_mm_sub_ps(b.mV[VX], a.mV[VX]), vw), a.mV[VX]); // ( b - a ) * w + a | ||
81 | mV[VY] = _mm_add_ps(_mm_mul_ps(_mm_sub_ps(b.mV[VY], a.mV[VY]), vw), a.mV[VY]); | ||
82 | mV[VZ] = _mm_add_ps(_mm_mul_ps(_mm_sub_ps(b.mV[VZ], a.mV[VZ]), vw), a.mV[VZ]); | ||
83 | mV[VW] = _mm_add_ps(_mm_mul_ps(_mm_sub_ps(b.mV[VW], a.mV[VW]), vw), a.mV[VW]); | ||
84 | } | ||
85 | |||
86 | inline void LLV4Matrix4::multiply(const LLVector3 &a, LLVector3& o) const | ||
87 | { | ||
88 | LLV4Vector3 j; | ||
89 | j.v = _mm_add_ps(mV[VW], _mm_mul_ps(_mm_set1_ps(a.mV[VX]), mV[VX])); // ( ax * vx ) + vw | ||
90 | j.v = _mm_add_ps(j.v , _mm_mul_ps(_mm_set1_ps(a.mV[VY]), mV[VY])); | ||
91 | j.v = _mm_add_ps(j.v , _mm_mul_ps(_mm_set1_ps(a.mV[VZ]), mV[VZ])); | ||
92 | o.setVec(j.mV); | ||
93 | } | ||
94 | |||
95 | inline void LLV4Matrix4::multiply(const LLVector3 &a, LLV4Vector3& o) const | ||
96 | { | ||
97 | o.v = _mm_add_ps(mV[VW], _mm_mul_ps(_mm_set1_ps(a.mV[VX]), mV[VX])); // ( ax * vx ) + vw | ||
98 | o.v = _mm_add_ps(o.v , _mm_mul_ps(_mm_set1_ps(a.mV[VY]), mV[VY])); | ||
99 | o.v = _mm_add_ps(o.v , _mm_mul_ps(_mm_set1_ps(a.mV[VZ]), mV[VZ])); | ||
100 | } | ||
101 | |||
102 | inline const LLV4Matrix4& LLV4Matrix4::translate(const LLV4Vector3 &vec) | ||
103 | { | ||
104 | mV[VW] = _mm_add_ps(mV[VW], vec.v); | ||
105 | return (*this); | ||
106 | } | ||
107 | |||
108 | //----------------------------------------------------------------------------- | ||
109 | //----------------------------------------------------------------------------- | ||
110 | // LLV4Matrix4 | ||
111 | //----------------------------------------------------------------------------- | ||
112 | //----------------------------------------------------------------------------- | ||
113 | |||
114 | #else | ||
115 | |||
116 | inline void LLV4Matrix4::lerp(const LLV4Matrix4 &a, const LLV4Matrix4 &b, const F32 &w) | ||
117 | { | ||
118 | mMatrix[VX][VX] = llv4lerp(a.mMatrix[VX][VX], b.mMatrix[VX][VX], w); | ||
119 | mMatrix[VX][VY] = llv4lerp(a.mMatrix[VX][VY], b.mMatrix[VX][VY], w); | ||
120 | mMatrix[VX][VZ] = llv4lerp(a.mMatrix[VX][VZ], b.mMatrix[VX][VZ], w); | ||
121 | |||
122 | mMatrix[VY][VX] = llv4lerp(a.mMatrix[VY][VX], b.mMatrix[VY][VX], w); | ||
123 | mMatrix[VY][VY] = llv4lerp(a.mMatrix[VY][VY], b.mMatrix[VY][VY], w); | ||
124 | mMatrix[VY][VZ] = llv4lerp(a.mMatrix[VY][VZ], b.mMatrix[VY][VZ], w); | ||
125 | |||
126 | mMatrix[VZ][VX] = llv4lerp(a.mMatrix[VZ][VX], b.mMatrix[VZ][VX], w); | ||
127 | mMatrix[VZ][VY] = llv4lerp(a.mMatrix[VZ][VY], b.mMatrix[VZ][VY], w); | ||
128 | mMatrix[VZ][VZ] = llv4lerp(a.mMatrix[VZ][VZ], b.mMatrix[VZ][VZ], w); | ||
129 | |||
130 | mMatrix[VW][VX] = llv4lerp(a.mMatrix[VW][VX], b.mMatrix[VW][VX], w); | ||
131 | mMatrix[VW][VY] = llv4lerp(a.mMatrix[VW][VY], b.mMatrix[VW][VY], w); | ||
132 | mMatrix[VW][VZ] = llv4lerp(a.mMatrix[VW][VZ], b.mMatrix[VW][VZ], w); | ||
133 | } | ||
134 | |||
135 | inline void LLV4Matrix4::multiply(const LLVector3 &a, LLVector3& o) const | ||
136 | { | ||
137 | o.setVec( a.mV[VX] * mMatrix[VX][VX] + | ||
138 | a.mV[VY] * mMatrix[VY][VX] + | ||
139 | a.mV[VZ] * mMatrix[VZ][VX] + | ||
140 | mMatrix[VW][VX], | ||
141 | |||
142 | a.mV[VX] * mMatrix[VX][VY] + | ||
143 | a.mV[VY] * mMatrix[VY][VY] + | ||
144 | a.mV[VZ] * mMatrix[VZ][VY] + | ||
145 | mMatrix[VW][VY], | ||
146 | |||
147 | a.mV[VX] * mMatrix[VX][VZ] + | ||
148 | a.mV[VY] * mMatrix[VY][VZ] + | ||
149 | a.mV[VZ] * mMatrix[VZ][VZ] + | ||
150 | mMatrix[VW][VZ]); | ||
151 | } | ||
152 | |||
153 | inline void LLV4Matrix4::multiply(const LLVector3 &a, LLV4Vector3& o) const | ||
154 | { | ||
155 | o.setVec( a.mV[VX] * mMatrix[VX][VX] + | ||
156 | a.mV[VY] * mMatrix[VY][VX] + | ||
157 | a.mV[VZ] * mMatrix[VZ][VX] + | ||
158 | mMatrix[VW][VX], | ||
159 | |||
160 | a.mV[VX] * mMatrix[VX][VY] + | ||
161 | a.mV[VY] * mMatrix[VY][VY] + | ||
162 | a.mV[VZ] * mMatrix[VZ][VY] + | ||
163 | mMatrix[VW][VY], | ||
164 | |||
165 | a.mV[VX] * mMatrix[VX][VZ] + | ||
166 | a.mV[VY] * mMatrix[VY][VZ] + | ||
167 | a.mV[VZ] * mMatrix[VZ][VZ] + | ||
168 | mMatrix[VW][VZ]); | ||
169 | } | ||
170 | |||
171 | inline const LLV4Matrix4& LLV4Matrix4::translate(const LLV4Vector3 &vec) | ||
172 | { | ||
173 | mMatrix[3][0] += vec.mV[0]; | ||
174 | mMatrix[3][1] += vec.mV[1]; | ||
175 | mMatrix[3][2] += vec.mV[2]; | ||
176 | return (*this); | ||
177 | } | ||
178 | |||
179 | //----------------------------------------------------------------------------- | ||
180 | //----------------------------------------------------------------------------- | ||
181 | // LLV4Matrix4 | ||
182 | //----------------------------------------------------------------------------- | ||
183 | //----------------------------------------------------------------------------- | ||
184 | |||
185 | #endif | ||
186 | |||
187 | inline const LLV4Matrix4& LLV4Matrix4::operator=(const LLMatrix4& a) | ||
188 | { | ||
189 | memcpy(mMatrix, a.mMatrix, sizeof(F32) * 16 ); | ||
190 | return *this; | ||
191 | } | ||
192 | |||
193 | inline const LLV4Matrix4& LLV4Matrix4::transpose() | ||
194 | { | ||
195 | #if LL_VECTORIZE && defined(_MM_TRANSPOSE4_PS) | ||
196 | _MM_TRANSPOSE4_PS(mV[VX], mV[VY], mV[VZ], mV[VW]); | ||
197 | #else | ||
198 | LLV4Matrix4 mat; | ||
199 | mat.mMatrix[0][0] = mMatrix[0][0]; | ||
200 | mat.mMatrix[1][0] = mMatrix[0][1]; | ||
201 | mat.mMatrix[2][0] = mMatrix[0][2]; | ||
202 | mat.mMatrix[3][0] = mMatrix[0][3]; | ||
203 | |||
204 | mat.mMatrix[0][1] = mMatrix[1][0]; | ||
205 | mat.mMatrix[1][1] = mMatrix[1][1]; | ||
206 | mat.mMatrix[2][1] = mMatrix[1][2]; | ||
207 | mat.mMatrix[3][1] = mMatrix[1][3]; | ||
208 | |||
209 | mat.mMatrix[0][2] = mMatrix[2][0]; | ||
210 | mat.mMatrix[1][2] = mMatrix[2][1]; | ||
211 | mat.mMatrix[2][2] = mMatrix[2][2]; | ||
212 | mat.mMatrix[3][2] = mMatrix[2][3]; | ||
213 | |||
214 | mat.mMatrix[0][3] = mMatrix[3][0]; | ||
215 | mat.mMatrix[1][3] = mMatrix[3][1]; | ||
216 | mat.mMatrix[2][3] = mMatrix[3][2]; | ||
217 | mat.mMatrix[3][3] = mMatrix[3][3]; | ||
218 | |||
219 | *this = mat; | ||
220 | #endif | ||
221 | return *this; | ||
222 | } | ||
223 | |||
224 | inline const LLV4Matrix4& LLV4Matrix4::translate(const LLVector3 &vec) | ||
225 | { | ||
226 | mMatrix[3][0] += vec.mV[0]; | ||
227 | mMatrix[3][1] += vec.mV[1]; | ||
228 | mMatrix[3][2] += vec.mV[2]; | ||
229 | return (*this); | ||
230 | } | ||
231 | |||
232 | inline LLVector3 operator*(const LLVector3 &a, const LLV4Matrix4 &b) | ||
233 | { | ||
234 | return LLVector3(a.mV[VX] * b.mMatrix[VX][VX] + | ||
235 | a.mV[VY] * b.mMatrix[VY][VX] + | ||
236 | a.mV[VZ] * b.mMatrix[VZ][VX] + | ||
237 | b.mMatrix[VW][VX], | ||
238 | |||
239 | a.mV[VX] * b.mMatrix[VX][VY] + | ||
240 | a.mV[VY] * b.mMatrix[VY][VY] + | ||
241 | a.mV[VZ] * b.mMatrix[VZ][VY] + | ||
242 | b.mMatrix[VW][VY], | ||
243 | |||
244 | a.mV[VX] * b.mMatrix[VX][VZ] + | ||
245 | a.mV[VY] * b.mMatrix[VY][VZ] + | ||
246 | a.mV[VZ] * b.mMatrix[VZ][VZ] + | ||
247 | b.mMatrix[VW][VZ]); | ||
248 | } | ||
249 | |||
250 | |||
251 | #endif | ||
diff --git a/linden/indra/llmath/llv4vector3.h b/linden/indra/llmath/llv4vector3.h new file mode 100644 index 0000000..994e7f5 --- /dev/null +++ b/linden/indra/llmath/llv4vector3.h | |||
@@ -0,0 +1,82 @@ | |||
1 | /** | ||
2 | * @file llviewerjointmesh.cpp | ||
3 | * @brief LLV4* class header file - vector processor enabled math | ||
4 | * | ||
5 | * Copyright (c) 2007-2007, Linden Research, Inc. | ||
6 | * | ||
7 | * Second Life Viewer Source Code | ||
8 | * The source code in this file ("Source Code") is provided by Linden Lab | ||
9 | * to you under the terms of the GNU General Public License, version 2.0 | ||
10 | * ("GPL"), unless you have obtained a separate licensing agreement | ||
11 | * ("Other License"), formally executed by you and Linden Lab. Terms of | ||
12 | * the GPL can be found in doc/GPL-license.txt in this distribution, or | ||
13 | * online at http://secondlife.com/developers/opensource/gplv2 | ||
14 | * | ||
15 | * There are special exceptions to the terms and conditions of the GPL as | ||
16 | * it is applied to this Source Code. View the full text of the exception | ||
17 | * in the file doc/FLOSS-exception.txt in this software distribution, or | ||
18 | * online at http://secondlife.com/developers/opensource/flossexception | ||
19 | * | ||
20 | * By copying, modifying or distributing this software, you acknowledge | ||
21 | * that you have read and understood your obligations described above, | ||
22 | * and agree to abide by those obligations. | ||
23 | * | ||
24 | * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO | ||
25 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | ||
26 | * COMPLETENESS OR PERFORMANCE. | ||
27 | */ | ||
28 | |||
29 | #ifndef LL_LLV4VECTOR3_H | ||
30 | #define LL_LLV4VECTOR3_H | ||
31 | |||
32 | #include "llv4math.h" | ||
33 | |||
34 | //----------------------------------------------------------------------------- | ||
35 | //----------------------------------------------------------------------------- | ||
36 | // LLV4Vector3 | ||
37 | //----------------------------------------------------------------------------- | ||
38 | //----------------------------------------------------------------------------- | ||
39 | |||
40 | LL_LLV4MATH_ALIGN_PREFIX | ||
41 | |||
42 | class LLV4Vector3 | ||
43 | { | ||
44 | public: | ||
45 | union { | ||
46 | F32 mV[LLV4_NUM_AXIS]; | ||
47 | V4F32 v; | ||
48 | }; | ||
49 | |||
50 | enum { | ||
51 | ALIGNMENT = 16 | ||
52 | }; | ||
53 | |||
54 | void setVec(F32 x, F32 y, F32 z); | ||
55 | void setVec(F32 a); | ||
56 | } | ||
57 | |||
58 | LL_LLV4MATH_ALIGN_POSTFIX; | ||
59 | |||
60 | //----------------------------------------------------------------------------- | ||
61 | //----------------------------------------------------------------------------- | ||
62 | // LLV4Vector3 | ||
63 | //----------------------------------------------------------------------------- | ||
64 | //----------------------------------------------------------------------------- | ||
65 | |||
66 | inline void LLV4Vector3::setVec(F32 x, F32 y, F32 z) | ||
67 | { | ||
68 | mV[VX] = x; | ||
69 | mV[VY] = y; | ||
70 | mV[VZ] = z; | ||
71 | } | ||
72 | |||
73 | inline void LLV4Vector3::setVec(F32 a) | ||
74 | { | ||
75 | #if LL_VECTORIZE | ||
76 | v = _mm_set1_ps(a); | ||
77 | #else | ||
78 | setVec(a, a, a); | ||
79 | #endif | ||
80 | } | ||
81 | |||
82 | #endif | ||
diff --git a/linden/indra/llmath/llvolume.h b/linden/indra/llmath/llvolume.h index 3973f70..8292d0c 100644 --- a/linden/indra/llmath/llvolume.h +++ b/linden/indra/llmath/llvolume.h | |||
@@ -842,7 +842,7 @@ public: | |||
842 | U8 getPathType() const { return mPathp->mParams.getCurveType(); } | 842 | U8 getPathType() const { return mPathp->mParams.getCurveType(); } |
843 | S32 getNumFaces() const { return (S32)mProfilep->mFaces.size(); } | 843 | S32 getNumFaces() const { return (S32)mProfilep->mFaces.size(); } |
844 | S32 getNumVolumeFaces() const { return mNumVolumeFaces; } | 844 | S32 getNumVolumeFaces() const { return mNumVolumeFaces; } |
845 | const F32 getDetail() const { return mDetail; } | 845 | F32 getDetail() const { return mDetail; } |
846 | const LLVolumeParams & getParams() const { return mParams; } | 846 | const LLVolumeParams & getParams() const { return mParams; } |
847 | LLVolumeParams getCopyOfParams() const { return mParams; } | 847 | LLVolumeParams getCopyOfParams() const { return mParams; } |
848 | const LLProfile& getProfile() const { return *mProfilep; } | 848 | const LLProfile& getProfile() const { return *mProfilep; } |
diff --git a/linden/indra/llmath/v4color.h b/linden/indra/llmath/v4color.h index d79b6c8..2e9d13f 100644 --- a/linden/indra/llmath/v4color.h +++ b/linden/indra/llmath/v4color.h | |||
@@ -93,7 +93,7 @@ class LLColor4 | |||
93 | F32 magVec() const; // Returns magnitude of LLColor4 | 93 | F32 magVec() const; // Returns magnitude of LLColor4 |
94 | F32 magVecSquared() const; // Returns magnitude squared of LLColor4 | 94 | F32 magVecSquared() const; // Returns magnitude squared of LLColor4 |
95 | F32 normVec(); // Normalizes and returns the magnitude of LLColor4 | 95 | F32 normVec(); // Normalizes and returns the magnitude of LLColor4 |
96 | const BOOL isOpaque() { return mV[VALPHA] == 1.f; } | 96 | BOOL isOpaque() { return mV[VALPHA] == 1.f; } |
97 | 97 | ||
98 | F32 operator[](int idx) const { return mV[idx]; } | 98 | F32 operator[](int idx) const { return mV[idx]; } |
99 | F32 &operator[](int idx) { return mV[idx]; } | 99 | F32 &operator[](int idx) { return mV[idx]; } |
diff --git a/linden/indra/llmessage/llteleportflags.h b/linden/indra/llmessage/llteleportflags.h index 25aac14..60916bd 100644 --- a/linden/indra/llmessage/llteleportflags.h +++ b/linden/indra/llmessage/llteleportflags.h | |||
@@ -44,6 +44,7 @@ const U32 TELEPORT_FLAGS_911 = 1 << 10; | |||
44 | const U32 TELEPORT_FLAGS_DISABLE_CANCEL = 1 << 11; // Used for llTeleportAgentHome() | 44 | const U32 TELEPORT_FLAGS_DISABLE_CANCEL = 1 << 11; // Used for llTeleportAgentHome() |
45 | const U32 TELEPORT_FLAGS_VIA_REGION_ID = 1 << 12; | 45 | const U32 TELEPORT_FLAGS_VIA_REGION_ID = 1 << 12; |
46 | const U32 TELEPORT_FLAGS_IS_FLYING = 1 << 13; | 46 | const U32 TELEPORT_FLAGS_IS_FLYING = 1 << 13; |
47 | const U32 TELEPORT_FLAGS_SHOW_RESET_HOME = 1 << 14; | ||
47 | 48 | ||
48 | const U32 TELEPORT_FLAGS_MASK_VIA = TELEPORT_FLAGS_VIA_LURE | 49 | const U32 TELEPORT_FLAGS_MASK_VIA = TELEPORT_FLAGS_VIA_LURE |
49 | | TELEPORT_FLAGS_VIA_LANDMARK | 50 | | TELEPORT_FLAGS_VIA_LANDMARK |
diff --git a/linden/indra/llmessage/machine.h b/linden/indra/llmessage/machine.h index 490ddc5..b28e621 100644 --- a/linden/indra/llmessage/machine.h +++ b/linden/indra/llmessage/machine.h | |||
@@ -62,8 +62,8 @@ public: | |||
62 | 62 | ||
63 | // get functions | 63 | // get functions |
64 | EMachineType getMachineType() const { return mMachineType; } | 64 | EMachineType getMachineType() const { return mMachineType; } |
65 | const U32 getMachineIP() const { return mHost.getAddress(); } | 65 | U32 getMachineIP() const { return mHost.getAddress(); } |
66 | const S32 getMachinePort() const { return mHost.getPort(); } | 66 | S32 getMachinePort() const { return mHost.getPort(); } |
67 | const LLHost &getMachineHost() const { return mHost; } | 67 | const LLHost &getMachineHost() const { return mHost; } |
68 | // The control port is the listen port of the parent process that | 68 | // The control port is the listen port of the parent process that |
69 | // launched this machine. 0 means none or not known. | 69 | // launched this machine. 0 means none or not known. |
diff --git a/linden/indra/llmessage/net.cpp b/linden/indra/llmessage/net.cpp index 1395093..92efd15 100644 --- a/linden/indra/llmessage/net.cpp +++ b/linden/indra/llmessage/net.cpp | |||
@@ -291,8 +291,9 @@ S32 start_net(S32& socket_out, int& nPort) | |||
291 | 291 | ||
292 | void end_net(S32& socket_out) | 292 | void end_net(S32& socket_out) |
293 | { | 293 | { |
294 | if (socket_out < 0) | 294 | if (socket_out >= 0) |
295 | { | 295 | { |
296 | shutdown(socket_out, SD_BOTH); | ||
296 | closesocket(socket_out); | 297 | closesocket(socket_out); |
297 | } | 298 | } |
298 | WSACleanup(); | 299 | WSACleanup(); |
@@ -463,7 +464,7 @@ S32 start_net(S32& socket_out, int& nPort) | |||
463 | 464 | ||
464 | void end_net(S32& socket_out) | 465 | void end_net(S32& socket_out) |
465 | { | 466 | { |
466 | if (socket_out < 0) | 467 | if (socket_out >= 0) |
467 | { | 468 | { |
468 | close(socket_out); | 469 | close(socket_out); |
469 | } | 470 | } |
diff --git a/linden/indra/llprimitive/llprimitive.h b/linden/indra/llprimitive/llprimitive.h index 29cd09f..1a568d1 100644 --- a/linden/indra/llprimitive/llprimitive.h +++ b/linden/indra/llprimitive/llprimitive.h | |||
@@ -340,14 +340,14 @@ public: | |||
340 | void setAcceleration(const F32 x, const F32 y, const F32 z) { mAcceleration.setVec(x,y,z); } | 340 | void setAcceleration(const F32 x, const F32 y, const F32 z) { mAcceleration.setVec(x,y,z); } |
341 | #endif | 341 | #endif |
342 | 342 | ||
343 | const LLPCode getPCode() const { return mPrimitiveCode; } | 343 | LLPCode getPCode() const { return mPrimitiveCode; } |
344 | const char * getPCodeString() const { return pCodeToString(mPrimitiveCode); } | 344 | const char * getPCodeString() const { return pCodeToString(mPrimitiveCode); } |
345 | const LLVector3& getAngularVelocity() const { return mAngularVelocity; } | 345 | const LLVector3& getAngularVelocity() const { return mAngularVelocity; } |
346 | const LLVector3& getVelocity() const { return mVelocity; } | 346 | const LLVector3& getVelocity() const { return mVelocity; } |
347 | const LLVector3& getAcceleration() const { return mAcceleration; } | 347 | const LLVector3& getAcceleration() const { return mAcceleration; } |
348 | const U8 getNumTEs() const { return mNumTEs; } | 348 | U8 getNumTEs() const { return mNumTEs; } |
349 | 349 | ||
350 | const U8 getMaterial() const { return mMaterial; } | 350 | U8 getMaterial() const { return mMaterial; } |
351 | 351 | ||
352 | void setVolumeType(const U8 code); | 352 | void setVolumeType(const U8 code); |
353 | U8 getVolumeType(); | 353 | U8 getVolumeType(); |
diff --git a/linden/indra/llprimitive/lltreeparams.h b/linden/indra/llprimitive/lltreeparams.h index 29bbc9a..2754eb4 100644 --- a/linden/indra/llprimitive/lltreeparams.h +++ b/linden/indra/llprimitive/lltreeparams.h | |||
@@ -32,7 +32,7 @@ | |||
32 | /* for information about formulas associated with each type | 32 | /* for information about formulas associated with each type |
33 | * check the Weber + Penn paper | 33 | * check the Weber + Penn paper |
34 | */ | 34 | */ |
35 | typedef enum EShapeRatio { SR_CONICAL, SR_SPHERICAL, SR_HEMISPHERICAL, | 35 | enum EShapeRatio { SR_CONICAL, SR_SPHERICAL, SR_HEMISPHERICAL, |
36 | SR_CYLINDRICAL, SR_TAPERED_CYLINDRICAL, SR_FLAME, | 36 | SR_CYLINDRICAL, SR_TAPERED_CYLINDRICAL, SR_FLAME, |
37 | SR_INVERSE_CONICAL, SR_TEND_FLAME, SR_ENVELOPE}; | 37 | SR_INVERSE_CONICAL, SR_TEND_FLAME, SR_ENVELOPE}; |
38 | 38 | ||
diff --git a/linden/indra/llui/llscrolllistctrl.h b/linden/indra/llui/llscrolllistctrl.h index 9829832..f1bd9bb 100644 --- a/linden/indra/llui/llscrolllistctrl.h +++ b/linden/indra/llui/llscrolllistctrl.h | |||
@@ -59,7 +59,7 @@ public: | |||
59 | virtual S32 getHeight() const = 0; | 59 | virtual S32 getHeight() const = 0; |
60 | virtual const LLString& getText() const { return LLString::null; } | 60 | virtual const LLString& getText() const { return LLString::null; } |
61 | virtual const LLString& getTextLower() const { return LLString::null; } | 61 | virtual const LLString& getTextLower() const { return LLString::null; } |
62 | virtual const BOOL getVisible() const { return TRUE; } | 62 | virtual BOOL getVisible() const { return TRUE; } |
63 | virtual void setWidth(S32 width) = 0; | 63 | virtual void setWidth(S32 width) = 0; |
64 | virtual void highlightText(S32 offset, S32 num_chars) {} | 64 | virtual void highlightText(S32 offset, S32 num_chars) {} |
65 | virtual BOOL isText() = 0; | 65 | virtual BOOL isText() = 0; |
@@ -96,7 +96,7 @@ public: | |||
96 | virtual void setWidth(S32 width) { mWidth = width; } | 96 | virtual void setWidth(S32 width) { mWidth = width; } |
97 | virtual S32 getHeight() const { return llround(mFont->getLineHeight()); } | 97 | virtual S32 getHeight() const { return llround(mFont->getLineHeight()); } |
98 | virtual const LLString& getText() const { return mText.getString(); } | 98 | virtual const LLString& getText() const { return mText.getString(); } |
99 | virtual const BOOL getVisible() const { return mVisible; } | 99 | virtual BOOL getVisible() const { return mVisible; } |
100 | virtual void highlightText(S32 offset, S32 num_chars) {mHighlightOffset = offset; mHighlightCount = num_chars;} | 100 | virtual void highlightText(S32 offset, S32 num_chars) {mHighlightOffset = offset; mHighlightCount = num_chars;} |
101 | void setText(const LLString& text); | 101 | void setText(const LLString& text); |
102 | virtual void setColor(const LLColor4&); | 102 | virtual void setColor(const LLColor4&); |
diff --git a/linden/indra/llui/lltextbox.cpp b/linden/indra/llui/lltextbox.cpp index c4f2cea..ba0747f 100644 --- a/linden/indra/llui/lltextbox.cpp +++ b/linden/indra/llui/lltextbox.cpp | |||
@@ -439,6 +439,7 @@ LLView* LLTextBox::fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *f | |||
439 | text, | 439 | text, |
440 | font, | 440 | font, |
441 | FALSE); | 441 | FALSE); |
442 | |||
442 | 443 | ||
443 | LLFontGL::HAlign halign = LLView::selectFontHAlign(node); | 444 | LLFontGL::HAlign halign = LLView::selectFontHAlign(node); |
444 | text_box->setHAlign(halign); | 445 | text_box->setHAlign(halign); |
@@ -450,6 +451,12 @@ LLView* LLTextBox::fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *f | |||
450 | { | 451 | { |
451 | text_box->mFontStyle = LLFontGL::getStyleFromString(font_style); | 452 | text_box->mFontStyle = LLFontGL::getStyleFromString(font_style); |
452 | } | 453 | } |
454 | |||
455 | BOOL mouse_opaque; | ||
456 | if (node->getAttributeBOOL("mouse_opaque", mouse_opaque)) | ||
457 | { | ||
458 | text_box->setMouseOpaque(mouse_opaque); | ||
459 | } | ||
453 | 460 | ||
454 | if(node->hasAttribute("text_color")) | 461 | if(node->hasAttribute("text_color")) |
455 | { | 462 | { |
diff --git a/linden/indra/llui/lluictrl.h b/linden/indra/llui/lluictrl.h index 3093437..5056319 100644 --- a/linden/indra/llui/lluictrl.h +++ b/linden/indra/llui/lluictrl.h | |||
@@ -136,7 +136,7 @@ public: | |||
136 | { | 136 | { |
137 | /*virtual*/ filterResult_t operator() (const LLView* const view, const viewList_t & children) const | 137 | /*virtual*/ filterResult_t operator() (const LLView* const view, const viewList_t & children) const |
138 | { | 138 | { |
139 | return filterResult_t(view->isCtrl() && static_cast<const LLUICtrl * const>(view)->hasTabStop() && children.size() == 0, TRUE); | 139 | return filterResult_t(view->isCtrl() && static_cast<const LLUICtrl *>(view)->hasTabStop() && children.size() == 0, TRUE); |
140 | } | 140 | } |
141 | }; | 141 | }; |
142 | 142 | ||
@@ -144,7 +144,7 @@ public: | |||
144 | { | 144 | { |
145 | /*virtual*/ filterResult_t operator() (const LLView* const view, const viewList_t & children) const | 145 | /*virtual*/ filterResult_t operator() (const LLView* const view, const viewList_t & children) const |
146 | { | 146 | { |
147 | return filterResult_t(view->isCtrl() && static_cast<const LLUICtrl * const>(view)->acceptsTextInput(), TRUE); | 147 | return filterResult_t(view->isCtrl() && static_cast<const LLUICtrl *>(view)->acceptsTextInput(), TRUE); |
148 | } | 148 | } |
149 | }; | 149 | }; |
150 | 150 | ||
diff --git a/linden/indra/llui/llview.cpp b/linden/indra/llui/llview.cpp index 22d426a..0b04213 100644 --- a/linden/indra/llui/llview.cpp +++ b/linden/indra/llui/llview.cpp | |||
@@ -455,8 +455,8 @@ bool LLCompareByTabOrder::operator() (const LLView* const a, const LLView* const | |||
455 | if(b && b->isCtrl()) b_score--; | 455 | if(b && b->isCtrl()) b_score--; |
456 | if(a_score == -2 && b_score == -2) | 456 | if(a_score == -2 && b_score == -2) |
457 | { | 457 | { |
458 | const LLUICtrl * const a_ctrl = static_cast<const LLUICtrl* const>(a); | 458 | const LLUICtrl * const a_ctrl = static_cast<const LLUICtrl*>(a); |
459 | const LLUICtrl * const b_ctrl = static_cast<const LLUICtrl* const>(b); | 459 | const LLUICtrl * const b_ctrl = static_cast<const LLUICtrl*>(b); |
460 | LLView::child_tab_order_const_iter_t a_found = mTabOrder.find(a_ctrl), b_found = mTabOrder.find(b_ctrl); | 460 | LLView::child_tab_order_const_iter_t a_found = mTabOrder.find(a_ctrl), b_found = mTabOrder.find(b_ctrl); |
461 | if(a_found != mTabOrder.end()) a_score--; | 461 | if(a_found != mTabOrder.end()) a_score--; |
462 | if(b_found != mTabOrder.end()) b_score--; | 462 | if(b_found != mTabOrder.end()) b_score--; |
diff --git a/linden/indra/llui/llviewquery.cpp b/linden/indra/llui/llviewquery.cpp index 65f191b..314a483 100644 --- a/linden/indra/llui/llviewquery.cpp +++ b/linden/indra/llui/llviewquery.cpp | |||
@@ -49,7 +49,7 @@ filterResult_t LLEnabledFilter::operator() (const LLView* const view, const view | |||
49 | } | 49 | } |
50 | filterResult_t LLTabStopFilter::operator() (const LLView* const view, const viewList_t & children) const | 50 | filterResult_t LLTabStopFilter::operator() (const LLView* const view, const viewList_t & children) const |
51 | { | 51 | { |
52 | return filterResult_t(view->isCtrl() && static_cast<const LLUICtrl* const>(view)->hasTabStop(), | 52 | return filterResult_t(view->isCtrl() && static_cast<const LLUICtrl*>(view)->hasTabStop(), |
53 | view->canFocusChildren()); | 53 | view->canFocusChildren()); |
54 | } | 54 | } |
55 | 55 | ||
diff --git a/linden/indra/llxml/llxmlnode.h b/linden/indra/llxml/llxmlnode.h index f95a53b..3c338e2 100644 --- a/linden/indra/llxml/llxmlnode.h +++ b/linden/indra/llxml/llxmlnode.h | |||
@@ -171,12 +171,12 @@ public: | |||
171 | BOOL getAttributeString(const LLString& name, LLString& value ); | 171 | BOOL getAttributeString(const LLString& name, LLString& value ); |
172 | 172 | ||
173 | const ValueType& getType() const { return mType; } | 173 | const ValueType& getType() const { return mType; } |
174 | const U32 getLength() const { return mLength; } | 174 | U32 getLength() const { return mLength; } |
175 | const U32 getPrecision() const { return mPrecision; } | 175 | U32 getPrecision() const { return mPrecision; } |
176 | const LLString& getValue() const { return mValue; } | 176 | const LLString& getValue() const { return mValue; } |
177 | LLString getTextContents() const; | 177 | LLString getTextContents() const; |
178 | const LLStringTableEntry* getName() const { return mName; } | 178 | const LLStringTableEntry* getName() const { return mName; } |
179 | const BOOL hasName(LLString name) const { return mName == gStringTable.checkStringEntry(name); } | 179 | BOOL hasName(LLString name) const { return mName == gStringTable.checkStringEntry(name); } |
180 | const LLString& getID() const { return mID; } | 180 | const LLString& getID() const { return mID; } |
181 | 181 | ||
182 | U32 getChildCount() const; | 182 | U32 getChildCount() const; |
diff --git a/linden/indra/lscript/lscript_library.h b/linden/indra/lscript/lscript_library.h index 8c4a3d0..353ff69 100644 --- a/linden/indra/lscript/lscript_library.h +++ b/linden/indra/lscript/lscript_library.h | |||
@@ -84,7 +84,7 @@ public: | |||
84 | LLQuaternion mQuat; | 84 | LLQuaternion mQuat; |
85 | LLScriptLibData *mListp; | 85 | LLScriptLibData *mListp; |
86 | 86 | ||
87 | friend const bool operator<=(const LLScriptLibData &a, const LLScriptLibData &b) | 87 | friend bool operator<=(const LLScriptLibData &a, const LLScriptLibData &b) |
88 | { | 88 | { |
89 | if (a.mType == b.mType) | 89 | if (a.mType == b.mType) |
90 | { | 90 | { |
@@ -112,7 +112,7 @@ public: | |||
112 | return TRUE; | 112 | return TRUE; |
113 | } | 113 | } |
114 | 114 | ||
115 | friend const bool operator==(const LLScriptLibData &a, const LLScriptLibData &b) | 115 | friend bool operator==(const LLScriptLibData &a, const LLScriptLibData &b) |
116 | { | 116 | { |
117 | if (a.mType == b.mType) | 117 | if (a.mType == b.mType) |
118 | { | 118 | { |
diff --git a/linden/indra/newview/English.lproj/InfoPlist.strings b/linden/indra/newview/English.lproj/InfoPlist.strings index 6044498..794f869 100644 --- a/linden/indra/newview/English.lproj/InfoPlist.strings +++ b/linden/indra/newview/English.lproj/InfoPlist.strings | |||
@@ -1,5 +1,5 @@ | |||
1 | /* Localized versions of Info.plist keys */ | 1 | /* Localized versions of Info.plist keys */ |
2 | 2 | ||
3 | CFBundleName = "Second Life"; | 3 | CFBundleName = "Second Life"; |
4 | CFBundleShortVersionString = "Second Life version 1.17.2.0"; | 4 | CFBundleShortVersionString = "Second Life version 1.17.3.0"; |
5 | CFBundleGetInfoString = "Second Life version 1.17.2.0, Copyright 2004-2007 Linden Research, Inc."; | 5 | CFBundleGetInfoString = "Second Life version 1.17.3.0, Copyright 2004-2007 Linden Research, Inc."; |
diff --git a/linden/indra/newview/Info-SecondLife.plist b/linden/indra/newview/Info-SecondLife.plist index 3fbf135..5d351bb 100644 --- a/linden/indra/newview/Info-SecondLife.plist +++ b/linden/indra/newview/Info-SecondLife.plist | |||
@@ -32,7 +32,7 @@ | |||
32 | </dict> | 32 | </dict> |
33 | </array> | 33 | </array> |
34 | <key>CFBundleVersion</key> | 34 | <key>CFBundleVersion</key> |
35 | <string>1.17.2.0</string> | 35 | <string>1.17.3.0</string> |
36 | <key>CSResourcesFileMapped</key> | 36 | <key>CSResourcesFileMapped</key> |
37 | <true/> | 37 | <true/> |
38 | </dict> | 38 | </dict> |
diff --git a/linden/indra/newview/app_settings/shaders/class1/objects/shinyF.glsl b/linden/indra/newview/app_settings/shaders/class1/objects/shinyF.glsl index 12c99a6..6942132 100644 --- a/linden/indra/newview/app_settings/shaders/class1/objects/shinyF.glsl +++ b/linden/indra/newview/app_settings/shaders/class1/objects/shinyF.glsl | |||
@@ -1,13 +1,13 @@ | |||
1 | void applyScatter(inout vec3 col); | 1 | void applyScatter(inout vec3 col); |
2 | 2 | ||
3 | uniform samplerCube environmentMap; | 3 | uniform samplerCube environmentMap; |
4 | 4 | ||
5 | void main() | 5 | void main() |
6 | { | 6 | { |
7 | vec3 ref = textureCube(environmentMap, gl_TexCoord[0].xyz).rgb; | 7 | vec3 ref = textureCube(environmentMap, gl_TexCoord[0].xyz).rgb; |
8 | 8 | ||
9 | applyScatter(ref); | 9 | applyScatter(ref); |
10 | 10 | ||
11 | gl_FragColor.rgb = ref; | 11 | gl_FragColor.rgb = ref; |
12 | gl_FragColor.a = gl_Color.a; | 12 | gl_FragColor.a = gl_Color.a; |
13 | } | 13 | } |
diff --git a/linden/indra/newview/app_settings/shaders/class1/objects/shinyV.glsl b/linden/indra/newview/app_settings/shaders/class1/objects/shinyV.glsl index 621ff6b..16fba01 100644 --- a/linden/indra/newview/app_settings/shaders/class1/objects/shinyV.glsl +++ b/linden/indra/newview/app_settings/shaders/class1/objects/shinyV.glsl | |||
@@ -1,27 +1,27 @@ | |||
1 | void default_scatter(vec3 viewVec, vec3 lightDir); | 1 | void default_scatter(vec3 viewVec, vec3 lightDir); |
2 | 2 | ||
3 | uniform vec4 origin; | 3 | uniform vec4 origin; |
4 | 4 | ||
5 | void main() | 5 | void main() |
6 | { | 6 | { |
7 | //transform vertex | 7 | //transform vertex |
8 | gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; | 8 | gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; |
9 | 9 | ||
10 | vec3 pos = (gl_ModelViewMatrix * gl_Vertex).xyz; | 10 | vec3 pos = (gl_ModelViewMatrix * gl_Vertex).xyz; |
11 | vec3 norm = normalize(gl_NormalMatrix * gl_Normal); | 11 | vec3 norm = normalize(gl_NormalMatrix * gl_Normal); |
12 | 12 | ||
13 | gl_FrontColor = gl_Color; | 13 | gl_FrontColor = gl_Color; |
14 | 14 | ||
15 | vec3 ref = reflect(pos, norm); | 15 | vec3 ref = reflect(pos, norm); |
16 | 16 | ||
17 | vec3 d = pos - origin.xyz; | 17 | vec3 d = pos - origin.xyz; |
18 | float dist = dot(normalize(d), ref); | 18 | float dist = dot(normalize(d), ref); |
19 | vec3 e = d + (ref * max(origin.w-dist, 0.0)); | 19 | vec3 e = d + (ref * max(origin.w-dist, 0.0)); |
20 | 20 | ||
21 | ref = e - origin.xyz; | 21 | ref = e - origin.xyz; |
22 | 22 | ||
23 | gl_TexCoord[0] = gl_TextureMatrix[0]*vec4(ref,1.0); | 23 | gl_TexCoord[0] = gl_TextureMatrix[0]*vec4(ref,1.0); |
24 | 24 | ||
25 | default_scatter(pos.xyz, gl_LightSource[0].position.xyz); | 25 | default_scatter(pos.xyz, gl_LightSource[0].position.xyz); |
26 | } | 26 | } |
27 | 27 | ||
diff --git a/linden/indra/newview/app_settings/shaders/class3/environment/waterF.glsl b/linden/indra/newview/app_settings/shaders/class3/environment/waterF.glsl index 3a117c5..ac8b07c 100644 --- a/linden/indra/newview/app_settings/shaders/class3/environment/waterF.glsl +++ b/linden/indra/newview/app_settings/shaders/class3/environment/waterF.glsl | |||
@@ -1,145 +1,145 @@ | |||
1 | void applyScatter(inout vec3 color); | 1 | void applyScatter(inout vec3 color); |
2 | 2 | ||
3 | uniform sampler2D diffuseMap; | 3 | uniform sampler2D diffuseMap; |
4 | uniform sampler2D bumpMap; | 4 | uniform sampler2D bumpMap; |
5 | uniform samplerCube environmentMap; //: TEXUNIT4, // Environment map texture | 5 | uniform samplerCube environmentMap; //: TEXUNIT4, // Environment map texture |
6 | uniform sampler2D screenTex; // : TEXUNIT5 | 6 | uniform sampler2D screenTex; // : TEXUNIT5 |
7 | 7 | ||
8 | uniform vec3 lightDir; | 8 | uniform vec3 lightDir; |
9 | uniform vec3 specular; | 9 | uniform vec3 specular; |
10 | uniform float lightExp; | 10 | uniform float lightExp; |
11 | uniform vec2 fbScale; | 11 | uniform vec2 fbScale; |
12 | uniform float refScale; | 12 | uniform float refScale; |
13 | 13 | ||
14 | float msin(float x) { | 14 | float msin(float x) { |
15 | float k = sin(x)+1.0; | 15 | float k = sin(x)+1.0; |
16 | k *= 0.5; | 16 | k *= 0.5; |
17 | k *= k; | 17 | k *= k; |
18 | return 2.0 * k; | 18 | return 2.0 * k; |
19 | } | 19 | } |
20 | 20 | ||
21 | float mcos(float x) { | 21 | float mcos(float x) { |
22 | float k = cos(x)+1.0; | 22 | float k = cos(x)+1.0; |
23 | k *= 0.5; | 23 | k *= 0.5; |
24 | k *= k; | 24 | k *= k; |
25 | return 2.0 * k; | 25 | return 2.0 * k; |
26 | } | 26 | } |
27 | 27 | ||
28 | float waveS(vec2 v, float t, float a, float f, vec2 d, float s, sampler1D sinMap) | 28 | float waveS(vec2 v, float t, float a, float f, vec2 d, float s, sampler1D sinMap) |
29 | { | 29 | { |
30 | return texture1D(sinMap, (dot(d, v)*f + t*s)*f).r*a; | 30 | return texture1D(sinMap, (dot(d, v)*f + t*s)*f).r*a; |
31 | } | 31 | } |
32 | 32 | ||
33 | float waveC(vec2 v, float t, float a, float f, vec2 d, float s, sampler1D sinMap) | 33 | float waveC(vec2 v, float t, float a, float f, vec2 d, float s, sampler1D sinMap) |
34 | { | 34 | { |
35 | return texture1D(sinMap, (dot(d, v)*f + t*s)*f).g*a*2.0-1.0; | 35 | return texture1D(sinMap, (dot(d, v)*f + t*s)*f).g*a*2.0-1.0; |
36 | } | 36 | } |
37 | 37 | ||
38 | float magnitude(vec3 vec) { | 38 | float magnitude(vec3 vec) { |
39 | return sqrt(dot(vec,vec)); | 39 | return sqrt(dot(vec,vec)); |
40 | } | 40 | } |
41 | 41 | ||
42 | vec3 mreflect(vec3 i, vec3 n) { | 42 | vec3 mreflect(vec3 i, vec3 n) { |
43 | return i + n * 2.0 * abs(dot(n,i))+vec3(0.0,0.0,0.5); | 43 | return i + n * 2.0 * abs(dot(n,i))+vec3(0.0,0.0,0.5); |
44 | } | 44 | } |
45 | 45 | ||
46 | void main() | 46 | void main() |
47 | { | 47 | { |
48 | vec2 texCoord = gl_TexCoord[0].xy; // Texture coordinates | 48 | vec2 texCoord = gl_TexCoord[0].xy; // Texture coordinates |
49 | vec2 littleWave1 = gl_TexCoord[0].zw; | 49 | vec2 littleWave1 = gl_TexCoord[0].zw; |
50 | vec2 littleWave2 = gl_TexCoord[1].xy; | 50 | vec2 littleWave2 = gl_TexCoord[1].xy; |
51 | vec2 bigWave = gl_TexCoord[1].zw; | 51 | vec2 bigWave = gl_TexCoord[1].zw; |
52 | vec3 viewVec = gl_TexCoord[2].xyz; | 52 | vec3 viewVec = gl_TexCoord[2].xyz; |
53 | vec4 refCoord = gl_TexCoord[3]; | 53 | vec4 refCoord = gl_TexCoord[3]; |
54 | vec4 col = gl_Color; | 54 | vec4 col = gl_Color; |
55 | vec4 color; | 55 | vec4 color; |
56 | 56 | ||
57 | //get color from alpha map (alpha denotes water depth), rgb denotes water color | 57 | //get color from alpha map (alpha denotes water depth), rgb denotes water color |
58 | vec4 wcol = texture2D(diffuseMap, texCoord.xy); | 58 | vec4 wcol = texture2D(diffuseMap, texCoord.xy); |
59 | 59 | ||
60 | float dist = length(viewVec); | 60 | float dist = length(viewVec); |
61 | 61 | ||
62 | //store texture alpha | 62 | //store texture alpha |
63 | float da = wcol.a; | 63 | float da = wcol.a; |
64 | 64 | ||
65 | //modulate by incoming water color | 65 | //modulate by incoming water color |
66 | //wcol.a *= refCoord.w; | 66 | //wcol.a *= refCoord.w; |
67 | 67 | ||
68 | //scale wcol.a (water depth) for steep transition | 68 | //scale wcol.a (water depth) for steep transition |
69 | wcol.a *= wcol.a; | 69 | wcol.a *= wcol.a; |
70 | 70 | ||
71 | //normalize view vector | 71 | //normalize view vector |
72 | viewVec = normalize(viewVec); | 72 | viewVec = normalize(viewVec); |
73 | 73 | ||
74 | //get bigwave normal | 74 | //get bigwave normal |
75 | vec3 wavef = texture2D(bumpMap, bigWave).xyz*2.0; | 75 | vec3 wavef = texture2D(bumpMap, bigWave).xyz*2.0; |
76 | 76 | ||
77 | vec3 view = vec3(viewVec.x, viewVec.y, viewVec.z); | 77 | vec3 view = vec3(viewVec.x, viewVec.y, viewVec.z); |
78 | 78 | ||
79 | float dx = 1.0-(dot(wavef*2.0-vec3(1.0), view))*da; | 79 | float dx = 1.0-(dot(wavef*2.0-vec3(1.0), view))*da; |
80 | dx *= 0.274; | 80 | dx *= 0.274; |
81 | 81 | ||
82 | //get detail normals | 82 | //get detail normals |
83 | vec3 dcol = texture2D(bumpMap, littleWave1+dx*view.xy).rgb*0.75; | 83 | vec3 dcol = texture2D(bumpMap, littleWave1+dx*view.xy).rgb*0.75; |
84 | dcol += texture2D(bumpMap, littleWave2+view.xy*dx*0.1).rgb*1.25; | 84 | dcol += texture2D(bumpMap, littleWave2+view.xy*dx*0.1).rgb*1.25; |
85 | 85 | ||
86 | //interpolate between big waves and little waves (big waves in deep water) | 86 | //interpolate between big waves and little waves (big waves in deep water) |
87 | wavef = wavef*wcol.a + dcol*(1.0-wcol.a); | 87 | wavef = wavef*wcol.a + dcol*(1.0-wcol.a); |
88 | 88 | ||
89 | //crunch normal to range [-1,1] | 89 | //crunch normal to range [-1,1] |
90 | wavef -= vec3(1,1,1); | 90 | wavef -= vec3(1,1,1); |
91 | wavef = normalize(wavef); | 91 | wavef = normalize(wavef); |
92 | //wavef = vec3(0.0, 0.0, 1.0); | 92 | //wavef = vec3(0.0, 0.0, 1.0); |
93 | 93 | ||
94 | //get base fresnel component | 94 | //get base fresnel component |
95 | float df = dot(viewVec,wavef); | 95 | float df = dot(viewVec,wavef); |
96 | //translate and flip fresnel | 96 | //translate and flip fresnel |
97 | df = 1.0-clamp(-df,0.0,1.0); | 97 | df = 1.0-clamp(-df,0.0,1.0); |
98 | 98 | ||
99 | //set output alpha based on fresnel | 99 | //set output alpha based on fresnel |
100 | color.a = clamp((1.0-df+da)*0.5,0.0,1.0); | 100 | color.a = clamp((1.0-df+da)*0.5,0.0,1.0); |
101 | 101 | ||
102 | //calculate reflection vector | 102 | //calculate reflection vector |
103 | vec3 refnorm = vec3(wavef.x*0.5, wavef.y*0.5, wavef.z*2.0); | 103 | vec3 refnorm = vec3(wavef.x*0.5, wavef.y*0.5, wavef.z*2.0); |
104 | 104 | ||
105 | //ramp normal towards eye for far view stuff | 105 | //ramp normal towards eye for far view stuff |
106 | float ramp = dist/256.0; | 106 | float ramp = dist/256.0; |
107 | refnorm -= viewVec * ramp; | 107 | refnorm -= viewVec * ramp; |
108 | vec3 ref = reflect(viewVec.xyz, normalize(refnorm)); | 108 | vec3 ref = reflect(viewVec.xyz, normalize(refnorm)); |
109 | ref.z /= sqrt(dist); | 109 | ref.z /= sqrt(dist); |
110 | 110 | ||
111 | //get diffuse component | 111 | //get diffuse component |
112 | float diff = clamp(dot(ref, wavef),0.0,1.0)*0.9; | 112 | float diff = clamp(dot(ref, wavef),0.0,1.0)*0.9; |
113 | 113 | ||
114 | //fudge diffuse for extra contrast and ambience | 114 | //fudge diffuse for extra contrast and ambience |
115 | diff *= diff; | 115 | diff *= diff; |
116 | diff += 0.4; | 116 | diff += 0.4; |
117 | 117 | ||
118 | vec3 fog = gl_TexCoord[5].rgb*0.5; | 118 | vec3 fog = gl_TexCoord[5].rgb*0.5; |
119 | 119 | ||
120 | //read from reflection map | 120 | //read from reflection map |
121 | vec3 refcol = textureCube(environmentMap, ref).rgb; | 121 | vec3 refcol = textureCube(environmentMap, ref).rgb; |
122 | //tint reflection by fresnal, bias by z component of view vec | 122 | //tint reflection by fresnal, bias by z component of view vec |
123 | color.rgb = refcol*(df*df*dcol.x*dcol.y); | 123 | color.rgb = refcol*(df*df*dcol.x*dcol.y); |
124 | 124 | ||
125 | //add diffuse contribution (fake blue water, yay!) | 125 | //add diffuse contribution (fake blue water, yay!) |
126 | vec3 blue = vec3(0.1, 0.3, 0.6); | 126 | vec3 blue = vec3(0.1, 0.3, 0.6); |
127 | color.rgb += (diff/(max(ramp, 1.0)))*vec3(fog.r*blue.r, fog.g*blue.g, fog.b*blue.b); | 127 | color.rgb += (diff/(max(ramp, 1.0)))*vec3(fog.r*blue.r, fog.g*blue.g, fog.b*blue.b); |
128 | 128 | ||
129 | //figure out distortion vector (ripply) | 129 | //figure out distortion vector (ripply) |
130 | vec2 distort = clamp(((refCoord.xy/refCoord.z) * 0.5 + 0.5 + wavef.xy*refScale),0.0,0.99); | 130 | vec2 distort = clamp(((refCoord.xy/refCoord.z) * 0.5 + 0.5 + wavef.xy*refScale),0.0,0.99); |
131 | 131 | ||
132 | //read from framebuffer (offset) | 132 | //read from framebuffer (offset) |
133 | vec4 fb = texture2D(screenTex, distort*fbScale); | 133 | vec4 fb = texture2D(screenTex, distort*fbScale); |
134 | 134 | ||
135 | //tint by framebuffer | 135 | //tint by framebuffer |
136 | color.rgb = da*color.rgb + (1.0-da)*fb.rgb; | 136 | color.rgb = da*color.rgb + (1.0-da)*fb.rgb; |
137 | 137 | ||
138 | //render as solid (previous pixel color already present) | 138 | //render as solid (previous pixel color already present) |
139 | color.a = 1.0; | 139 | color.a = 1.0; |
140 | 140 | ||
141 | //apply fog | 141 | //apply fog |
142 | applyScatter(color.rgb); | 142 | applyScatter(color.rgb); |
143 | 143 | ||
144 | gl_FragColor = color; | 144 | gl_FragColor = color; |
145 | } | 145 | } |
diff --git a/linden/indra/newview/files.lst b/linden/indra/newview/files.lst index d6794d7..a4ff014 100644 --- a/linden/indra/newview/files.lst +++ b/linden/indra/newview/files.lst | |||
@@ -25,7 +25,6 @@ newview/llconfirmationmanager.cpp | |||
25 | newview/llconsole.cpp | 25 | newview/llconsole.cpp |
26 | newview/llcontainerview.cpp | 26 | newview/llcontainerview.cpp |
27 | newview/llcontroldef.cpp | 27 | newview/llcontroldef.cpp |
28 | newview/llcountdown.cpp | ||
29 | newview/llcubemap.cpp | 28 | newview/llcubemap.cpp |
30 | newview/llcurrencyuimanager.cpp | 29 | newview/llcurrencyuimanager.cpp |
31 | newview/llcylinder.cpp | 30 | newview/llcylinder.cpp |
@@ -53,7 +52,6 @@ newview/lleventpoll.cpp | |||
53 | newview/llface.cpp | 52 | newview/llface.cpp |
54 | newview/llfasttimerview.cpp | 53 | newview/llfasttimerview.cpp |
55 | newview/llfeaturemanager.cpp | 54 | newview/llfeaturemanager.cpp |
56 | newview/llfft.cpp | ||
57 | newview/llfilepicker.cpp | 55 | newview/llfilepicker.cpp |
58 | newview/llfirstuse.cpp | 56 | newview/llfirstuse.cpp |
59 | newview/llflexibleobject.cpp | 57 | newview/llflexibleobject.cpp |
@@ -237,7 +235,6 @@ newview/lltexlayer.cpp | |||
237 | newview/lltexturecache.cpp | 235 | newview/lltexturecache.cpp |
238 | newview/lltexturefetch.cpp | 236 | newview/lltexturefetch.cpp |
239 | newview/lltexturectrl.cpp | 237 | newview/lltexturectrl.cpp |
240 | newview/lltexturetable.cpp | ||
241 | newview/lltextureview.cpp | 238 | newview/lltextureview.cpp |
242 | newview/lltoolbar.cpp | 239 | newview/lltoolbar.cpp |
243 | newview/lltoolbrush.cpp | 240 | newview/lltoolbrush.cpp |
@@ -278,6 +275,9 @@ newview/llviewerinventory.cpp | |||
278 | newview/llviewerjointattachment.cpp | 275 | newview/llviewerjointattachment.cpp |
279 | newview/llviewerjoint.cpp | 276 | newview/llviewerjoint.cpp |
280 | newview/llviewerjointmesh.cpp | 277 | newview/llviewerjointmesh.cpp |
278 | newview/llviewerjointmesh_sse.cpp | ||
279 | newview/llviewerjointmesh_sse2.cpp | ||
280 | newview/llviewerjointmesh_vec.cpp | ||
281 | newview/llviewerjointshape.cpp | 281 | newview/llviewerjointshape.cpp |
282 | newview/llviewerjoystick.cpp | 282 | newview/llviewerjoystick.cpp |
283 | newview/llviewerkeyboard.cpp | 283 | newview/llviewerkeyboard.cpp |
@@ -318,7 +318,6 @@ newview/llvotextbubble.cpp | |||
318 | newview/llvotree.cpp | 318 | newview/llvotree.cpp |
319 | newview/llvovolume.cpp | 319 | newview/llvovolume.cpp |
320 | newview/llvowater.cpp | 320 | newview/llvowater.cpp |
321 | newview/llwaterpatch.cpp | ||
322 | newview/llwearable.cpp | 321 | newview/llwearable.cpp |
323 | newview/llwearablelist.cpp | 322 | newview/llwearablelist.cpp |
324 | newview/llweb.cpp | 323 | newview/llweb.cpp |
diff --git a/linden/indra/newview/gpu_table.txt b/linden/indra/newview/gpu_table.txt index a6d1dee..74fbe2c 100644 --- a/linden/indra/newview/gpu_table.txt +++ b/linden/indra/newview/gpu_table.txt | |||
@@ -66,6 +66,9 @@ Intel 915GM .*Intel.*915GM 0 | |||
66 | Intel 945G .*Intel.*945G 0 | 66 | Intel 945G .*Intel.*945G 0 |
67 | Intel 945GM .*Intel.*945GM 0 | 67 | Intel 945GM .*Intel.*945GM 0 |
68 | Intel 950 .*Intel.*950.*950 0 | 68 | Intel 950 .*Intel.*950.*950 0 |
69 | Intel G965 .*Intel.*G965.* 0 | ||
70 | Intel GM965 .*Intel.*GM965.* 0 | ||
71 | Intel G33 .*Intel.*G33.* 0 | ||
69 | Intel Brookdale .*Intel.*Brookdale.* 0 | 72 | Intel Brookdale .*Intel.*Brookdale.* 0 |
70 | Intel Montara .*Intel.*Montara.* 0 | 73 | Intel Montara .*Intel.*Montara.* 0 |
71 | Intel Springdale .*Intel.*Springdale.* 0 | 74 | Intel Springdale .*Intel.*Springdale.* 0 |
diff --git a/linden/indra/newview/llagent.cpp b/linden/indra/newview/llagent.cpp index 150e35f..553c968 100644 --- a/linden/indra/newview/llagent.cpp +++ b/linden/indra/newview/llagent.cpp | |||
@@ -1025,7 +1025,7 @@ const LLVector3 &LLAgent::getPositionAgent() | |||
1025 | //----------------------------------------------------------------------------- | 1025 | //----------------------------------------------------------------------------- |
1026 | // getRegionsVisited() | 1026 | // getRegionsVisited() |
1027 | //----------------------------------------------------------------------------- | 1027 | //----------------------------------------------------------------------------- |
1028 | const S32 LLAgent::getRegionsVisited() const | 1028 | S32 LLAgent::getRegionsVisited() const |
1029 | { | 1029 | { |
1030 | return mRegionsVisited.size(); | 1030 | return mRegionsVisited.size(); |
1031 | } | 1031 | } |
@@ -1033,7 +1033,7 @@ const S32 LLAgent::getRegionsVisited() const | |||
1033 | //----------------------------------------------------------------------------- | 1033 | //----------------------------------------------------------------------------- |
1034 | // getDistanceTraveled() | 1034 | // getDistanceTraveled() |
1035 | //----------------------------------------------------------------------------- | 1035 | //----------------------------------------------------------------------------- |
1036 | const F64 LLAgent::getDistanceTraveled() const | 1036 | F64 LLAgent::getDistanceTraveled() const |
1037 | { | 1037 | { |
1038 | return mDistanceTraveled; | 1038 | return mDistanceTraveled; |
1039 | } | 1039 | } |
diff --git a/linden/indra/newview/llagent.h b/linden/indra/newview/llagent.h index 0ca9f22..e4d207c 100644 --- a/linden/indra/newview/llagent.h +++ b/linden/indra/newview/llagent.h | |||
@@ -300,8 +300,8 @@ public: | |||
300 | 300 | ||
301 | const LLVector3d &getPositionGlobal(); | 301 | const LLVector3d &getPositionGlobal(); |
302 | const LLVector3 &getPositionAgent(); | 302 | const LLVector3 &getPositionAgent(); |
303 | const S32 getRegionsVisited() const; | 303 | S32 getRegionsVisited() const; |
304 | const F64 getDistanceTraveled() const; | 304 | F64 getDistanceTraveled() const; |
305 | 305 | ||
306 | const LLVector3d &getFocusGlobal() const { return mFocusGlobal; } | 306 | const LLVector3d &getFocusGlobal() const { return mFocusGlobal; } |
307 | const LLVector3d &getFocusTargetGlobal() const { return mFocusTargetGlobal; } | 307 | const LLVector3d &getFocusTargetGlobal() const { return mFocusTargetGlobal; } |
diff --git a/linden/indra/newview/llcape.h b/linden/indra/newview/llcape.h index 1ccdc9c..f491a61 100644 --- a/linden/indra/newview/llcape.h +++ b/linden/indra/newview/llcape.h | |||
@@ -211,7 +211,8 @@ class LLVOCloth : public LLViewerObject | |||
211 | //-------------------------------------- | 211 | //-------------------------------------- |
212 | LLClothAttributes mAttributes; // these determine the characteristics of the cloth | 212 | LLClothAttributes mAttributes; // these determine the characteristics of the cloth |
213 | LLVector3 mAvatarCollisionSpherePosition; // derived from the avatar | 213 | LLVector3 mAvatarCollisionSpherePosition; // derived from the avatar |
214 | LLPointer<LLViewerObject> mDummyVO [ CLOTH_MAX_STRANDS ]; | 214 | // Backlink only; don't make this an LLPointer. |
215 | LLViewerObject* mDummyVO [ CLOTH_MAX_STRANDS ]; | ||
215 | LLVolumeImplFlexible* mStrand [ CLOTH_MAX_STRANDS ]; // the array of strands that make up the cloth | 216 | LLVolumeImplFlexible* mStrand [ CLOTH_MAX_STRANDS ]; // the array of strands that make up the cloth |
216 | 217 | ||
217 | 218 | ||
diff --git a/linden/indra/newview/llcontroldef.cpp b/linden/indra/newview/llcontroldef.cpp index 7481d99..e0153d7 100644 --- a/linden/indra/newview/llcontroldef.cpp +++ b/linden/indra/newview/llcontroldef.cpp | |||
@@ -1317,6 +1317,12 @@ void declare_settings() | |||
1317 | gSavedSettings.declareBOOL("FlycamAbsolute", FALSE, "Treat Flycam values as absolute positions (not deltas)."); | 1317 | gSavedSettings.declareBOOL("FlycamAbsolute", FALSE, "Treat Flycam values as absolute positions (not deltas)."); |
1318 | gSavedSettings.declareBOOL("FlycamZoomDirect", FALSE, "Map flycam zoom axis directly to camera zoom."); | 1318 | gSavedSettings.declareBOOL("FlycamZoomDirect", FALSE, "Map flycam zoom axis directly to camera zoom."); |
1319 | 1319 | ||
1320 | // Vector Processor & Math | ||
1321 | gSavedSettings.declareBOOL("VectorizePerfTest", TRUE, "Test SSE/vectorization performance and choose fastest version."); | ||
1322 | gSavedSettings.declareBOOL("VectorizeEnable", FALSE, "Enable general vector operations and data alignment."); | ||
1323 | gSavedSettings.declareBOOL("VectorizeSkin", TRUE, "Enable vector operations for avatar skinning."); | ||
1324 | gSavedSettings.declareU32( "VectorizeProcessor", 0, "0=Compiler Default, 1=SSE, 2=SSE2, autodetected", NO_PERSIST); | ||
1325 | |||
1320 | // | 1326 | // |
1321 | // crash_settings.xml | 1327 | // crash_settings.xml |
1322 | // | 1328 | // |
diff --git a/linden/indra/newview/llcountdown.cpp b/linden/indra/newview/llcountdown.cpp deleted file mode 100644 index 42dc440..0000000 --- a/linden/indra/newview/llcountdown.cpp +++ /dev/null | |||
@@ -1,106 +0,0 @@ | |||
1 | /** | ||
2 | * @file llcountdown.cpp | ||
3 | * @brief Implementation of the countdown box. | ||
4 | * | ||
5 | * Copyright (c) 2002-2007, Linden Research, Inc. | ||
6 | * | ||
7 | * Second Life Viewer Source Code | ||
8 | * The source code in this file ("Source Code") is provided by Linden Lab | ||
9 | * to you under the terms of the GNU General Public License, version 2.0 | ||
10 | * ("GPL"), unless you have obtained a separate licensing agreement | ||
11 | * ("Other License"), formally executed by you and Linden Lab. Terms of | ||
12 | * the GPL can be found in doc/GPL-license.txt in this distribution, or | ||
13 | * online at http://secondlife.com/developers/opensource/gplv2 | ||
14 | * | ||
15 | * There are special exceptions to the terms and conditions of the GPL as | ||
16 | * it is applied to this Source Code. View the full text of the exception | ||
17 | * in the file doc/FLOSS-exception.txt in this software distribution, or | ||
18 | * online at http://secondlife.com/developers/opensource/flossexception | ||
19 | * | ||
20 | * By copying, modifying or distributing this software, you acknowledge | ||
21 | * that you have read and understood your obligations described above, | ||
22 | * and agree to abide by those obligations. | ||
23 | * | ||
24 | * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO | ||
25 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | ||
26 | * COMPLETENESS OR PERFORMANCE. | ||
27 | */ | ||
28 | |||
29 | #include "llviewerprecompiledheaders.h" | ||
30 | |||
31 | #include "llcountdown.h" | ||
32 | |||
33 | ///---------------------------------------------------------------------------- | ||
34 | /// Local function declarations, constants, enums, and typedefs | ||
35 | ///---------------------------------------------------------------------------- | ||
36 | |||
37 | const LLString DEFAULT_BASE_PREFIX("This dialag will close in "); | ||
38 | const LLString DEFAULT_BASE_SUFFIX(" seconds"); | ||
39 | |||
40 | ///---------------------------------------------------------------------------- | ||
41 | /// Class llcountdown | ||
42 | ///---------------------------------------------------------------------------- | ||
43 | |||
44 | // Default constructor | ||
45 | LLCountdown::LLCountdown(const std::string& name, const LLRect& rect, F32 seconds, | ||
46 | const char* base_prefix, const char* base_suffix) : | ||
47 | LLTextBox(name, rect), | ||
48 | mSeconds(seconds), | ||
49 | mHalfway(seconds/2-0.99f) | ||
50 | { | ||
51 | mExpired.reset(); | ||
52 | if(base_prefix) | ||
53 | { | ||
54 | mBasePrefix.assign(base_prefix); | ||
55 | } | ||
56 | else | ||
57 | { | ||
58 | mBasePrefix = DEFAULT_BASE_PREFIX; | ||
59 | } | ||
60 | if(base_suffix) | ||
61 | { | ||
62 | mBaseSuffix.assign(base_suffix); | ||
63 | } | ||
64 | else | ||
65 | { | ||
66 | mBaseSuffix = DEFAULT_BASE_SUFFIX; | ||
67 | } | ||
68 | S32 s = llfloor(mSeconds); | ||
69 | LLString buffer = mBasePrefix + llformat("%d",s) + mBaseSuffix; | ||
70 | setText(buffer); | ||
71 | } | ||
72 | |||
73 | // Destroys the object | ||
74 | LLCountdown::~LLCountdown() | ||
75 | { | ||
76 | } | ||
77 | |||
78 | BOOL LLCountdown::isExpired() | ||
79 | { | ||
80 | if(mExpired.getElapsedTimeF32() > mSeconds) | ||
81 | { | ||
82 | return TRUE; | ||
83 | } | ||
84 | return FALSE; | ||
85 | } | ||
86 | |||
87 | void LLCountdown::draw() | ||
88 | { | ||
89 | F32 elapsed = mExpired.getElapsedTimeF32(); | ||
90 | if(elapsed > mSeconds) | ||
91 | { | ||
92 | LLString buffer = mBasePrefix + "0" + mBaseSuffix; | ||
93 | setText(buffer); | ||
94 | } | ||
95 | else if(elapsed > mHalfway) | ||
96 | { | ||
97 | S32 seconds = llfloor(llmax((mSeconds - elapsed), 0.0f)); | ||
98 | LLString buffer = mBasePrefix + llformat("%d",seconds) + mBaseSuffix; | ||
99 | setText(buffer); | ||
100 | } | ||
101 | LLTextBox::draw(); | ||
102 | } | ||
103 | |||
104 | ///---------------------------------------------------------------------------- | ||
105 | /// Local function definitions | ||
106 | ///---------------------------------------------------------------------------- | ||
diff --git a/linden/indra/newview/llcountdown.h b/linden/indra/newview/llcountdown.h deleted file mode 100644 index 06f6167..0000000 --- a/linden/indra/newview/llcountdown.h +++ /dev/null | |||
@@ -1,67 +0,0 @@ | |||
1 | /** | ||
2 | * @file llcountdown.h | ||
3 | * @brief LLCountdown class header file | ||
4 | * | ||
5 | * Copyright (c) 2002-2007, Linden Research, Inc. | ||
6 | * | ||
7 | * Second Life Viewer Source Code | ||
8 | * The source code in this file ("Source Code") is provided by Linden Lab | ||
9 | * to you under the terms of the GNU General Public License, version 2.0 | ||
10 | * ("GPL"), unless you have obtained a separate licensing agreement | ||
11 | * ("Other License"), formally executed by you and Linden Lab. Terms of | ||
12 | * the GPL can be found in doc/GPL-license.txt in this distribution, or | ||
13 | * online at http://secondlife.com/developers/opensource/gplv2 | ||
14 | * | ||
15 | * There are special exceptions to the terms and conditions of the GPL as | ||
16 | * it is applied to this Source Code. View the full text of the exception | ||
17 | * in the file doc/FLOSS-exception.txt in this software distribution, or | ||
18 | * online at http://secondlife.com/developers/opensource/flossexception | ||
19 | * | ||
20 | * By copying, modifying or distributing this software, you acknowledge | ||
21 | * that you have read and understood your obligations described above, | ||
22 | * and agree to abide by those obligations. | ||
23 | * | ||
24 | * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO | ||
25 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | ||
26 | * COMPLETENESS OR PERFORMANCE. | ||
27 | */ | ||
28 | |||
29 | #ifndef LL_LLCOUNTDOWN_H | ||
30 | #define LL_LLCOUNTDOWN_H | ||
31 | |||
32 | #include "lltimer.h" | ||
33 | #include "lltextbox.h" | ||
34 | |||
35 | //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
36 | // Class LLCountdown | ||
37 | // | ||
38 | // This class draws a text box that counts down from seconds to zero, | ||
39 | // with a little bit of slop. | ||
40 | //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
41 | |||
42 | class LLCountdown : public LLTextBox | ||
43 | { | ||
44 | protected: | ||
45 | LLString mBasePrefix; | ||
46 | LLString mBaseSuffix; | ||
47 | LLTimer mExpired; | ||
48 | F32 mSeconds; | ||
49 | F32 mHalfway; | ||
50 | |||
51 | void buildLabel(); | ||
52 | |||
53 | public: | ||
54 | LLCountdown(const std::string& name, const LLRect& rect, F32 seconds, | ||
55 | const char* base_prefix = NULL, | ||
56 | const char* base_suffix = NULL); | ||
57 | virtual ~LLCountdown(); | ||
58 | |||
59 | // cannot be const because our timers are not const. Damn | ||
60 | // const-incorrectness. | ||
61 | BOOL isExpired(); | ||
62 | |||
63 | virtual void draw(); | ||
64 | }; | ||
65 | |||
66 | |||
67 | #endif // LL_LLCOUNTDOWN_H | ||
diff --git a/linden/indra/newview/lldrawable.h b/linden/indra/newview/lldrawable.h index 97e512f..e550142 100644 --- a/linden/indra/newview/lldrawable.h +++ b/linden/indra/newview/lldrawable.h | |||
@@ -46,6 +46,7 @@ | |||
46 | #include "llviewerobject.h" | 46 | #include "llviewerobject.h" |
47 | #include "llrect.h" | 47 | #include "llrect.h" |
48 | 48 | ||
49 | class LLCamera; | ||
49 | class LLDrawPool; | 50 | class LLDrawPool; |
50 | class LLDrawable; | 51 | class LLDrawable; |
51 | class LLFace; | 52 | class LLFace; |
@@ -88,7 +89,7 @@ public: | |||
88 | 89 | ||
89 | const LLMatrix4& getWorldMatrix() const { return mXform.getWorldMatrix(); } | 90 | const LLMatrix4& getWorldMatrix() const { return mXform.getWorldMatrix(); } |
90 | const LLMatrix4& getRenderMatrix() const { return isRoot() ? getWorldMatrix() : getParent()->getWorldMatrix(); } | 91 | const LLMatrix4& getRenderMatrix() const { return isRoot() ? getWorldMatrix() : getParent()->getWorldMatrix(); } |
91 | const void setPosition(LLVector3 v) const { } | 92 | void setPosition(LLVector3 v) const { } |
92 | const LLVector3& getPosition() const { return mXform.getPosition(); } | 93 | const LLVector3& getPosition() const { return mXform.getPosition(); } |
93 | const LLVector3& getWorldPosition() const { return mXform.getPositionW(); } | 94 | const LLVector3& getWorldPosition() const { return mXform.getPositionW(); } |
94 | const LLVector3 getPositionAgent() const; | 95 | const LLVector3 getPositionAgent() const; |
@@ -96,14 +97,14 @@ public: | |||
96 | const LLVector3& getScale() const { return mCurrentScale; } | 97 | const LLVector3& getScale() const { return mCurrentScale; } |
97 | const LLQuaternion& getWorldRotation() const { return mXform.getWorldRotation(); } | 98 | const LLQuaternion& getWorldRotation() const { return mXform.getWorldRotation(); } |
98 | const LLQuaternion& getRotation() const { return mXform.getRotation(); } | 99 | const LLQuaternion& getRotation() const { return mXform.getRotation(); } |
99 | const F32 getIntensity() const { return llmin(mXform.getScale().mV[0], 4.f); } | 100 | F32 getIntensity() const { return llmin(mXform.getScale().mV[0], 4.f); } |
100 | const S32 getLOD() const { return mVObjp ? mVObjp->getLOD() : 1; } | 101 | S32 getLOD() const { return mVObjp ? mVObjp->getLOD() : 1; } |
101 | const F64 getBinRadius() const { return mBinRadius; } | 102 | F64 getBinRadius() const { return mBinRadius; } |
102 | void getMinMax(LLVector3& min,LLVector3& max) const { mXform.getMinMax(min,max); } | 103 | void getMinMax(LLVector3& min,LLVector3& max) const { mXform.getMinMax(min,max); } |
103 | LLXformMatrix* getXform() { return &mXform; } | 104 | LLXformMatrix* getXform() { return &mXform; } |
104 | 105 | ||
105 | const U32 getState() const { return mState; } | 106 | U32 getState() const { return mState; } |
106 | const BOOL isState (U32 bits) const { return ((mState & bits) != 0); } | 107 | BOOL isState (U32 bits) const { return ((mState & bits) != 0); } |
107 | void setState (U32 bits) { mState |= bits; } | 108 | void setState (U32 bits) { mState |= bits; } |
108 | void clearState(U32 bits) { mState &= ~bits; } | 109 | void clearState(U32 bits) { mState &= ~bits; } |
109 | 110 | ||
diff --git a/linden/indra/newview/lldriverparam.h b/linden/indra/newview/lldriverparam.h index f7b0819..fb13e50 100644 --- a/linden/indra/newview/lldriverparam.h +++ b/linden/indra/newview/lldriverparam.h | |||
@@ -104,7 +104,8 @@ protected: | |||
104 | typedef std::vector<LLDrivenEntry> entry_list_t; | 104 | typedef std::vector<LLDrivenEntry> entry_list_t; |
105 | entry_list_t mDriven; | 105 | entry_list_t mDriven; |
106 | LLViewerVisualParam* mCurrentDistortionParam; | 106 | LLViewerVisualParam* mCurrentDistortionParam; |
107 | LLPointer<LLVOAvatar> mAvatarp; | 107 | // Backlink only; don't make this an LLPointer. |
108 | LLVOAvatar* mAvatarp; | ||
108 | }; | 109 | }; |
109 | 110 | ||
110 | #endif // LL_LLDRIVERPARAM_H | 111 | #endif // LL_LLDRIVERPARAM_H |
diff --git a/linden/indra/newview/llface.cpp b/linden/indra/newview/llface.cpp index 782048c..cfda05a 100644 --- a/linden/indra/newview/llface.cpp +++ b/linden/indra/newview/llface.cpp | |||
@@ -936,7 +936,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume, | |||
936 | BOOL is_static = mDrawablep->isStatic(); | 936 | BOOL is_static = mDrawablep->isStatic(); |
937 | BOOL is_global = is_static; | 937 | BOOL is_global = is_static; |
938 | 938 | ||
939 | if (-1 == index_offset) | 939 | if (index_offset == (U32) -1) |
940 | { | 940 | { |
941 | return TRUE; | 941 | return TRUE; |
942 | } | 942 | } |
diff --git a/linden/indra/newview/llface.h b/linden/indra/newview/llface.h index 6870789..711cd8e 100644 --- a/linden/indra/newview/llface.h +++ b/linden/indra/newview/llface.h | |||
@@ -75,11 +75,11 @@ public: | |||
75 | 75 | ||
76 | const LLMatrix4& getWorldMatrix() const { return mVObjp->getWorldMatrix(mXform); } | 76 | const LLMatrix4& getWorldMatrix() const { return mVObjp->getWorldMatrix(mXform); } |
77 | const LLMatrix4& getRenderMatrix() const; | 77 | const LLMatrix4& getRenderMatrix() const; |
78 | const U32 getIndicesCount() const { return mIndicesCount; }; | 78 | U32 getIndicesCount() const { return mIndicesCount; }; |
79 | const S32 getIndicesStart() const { return mIndicesIndex; }; | 79 | S32 getIndicesStart() const { return mIndicesIndex; }; |
80 | const S32 getGeomCount() const { return mGeomCount; } // vertex count for this face | 80 | S32 getGeomCount() const { return mGeomCount; } // vertex count for this face |
81 | const S32 getGeomIndex() const { return mGeomIndex; } // index into draw pool | 81 | S32 getGeomIndex() const { return mGeomIndex; } // index into draw pool |
82 | const U32 getGeomStart() const { return mGeomIndex; } // index into draw pool | 82 | U32 getGeomStart() const { return mGeomIndex; } // index into draw pool |
83 | LLViewerImage* getTexture() const { return mTexture; } | 83 | LLViewerImage* getTexture() const { return mTexture; } |
84 | void setTexture(LLViewerImage* tex) { mTexture = tex; } | 84 | void setTexture(LLViewerImage* tex) { mTexture = tex; } |
85 | LLXformMatrix* getXform() const { return mXform; } | 85 | LLXformMatrix* getXform() const { return mXform; } |
diff --git a/linden/indra/newview/llfft.cpp b/linden/indra/newview/llfft.cpp deleted file mode 100644 index 2b80ad9..0000000 --- a/linden/indra/newview/llfft.cpp +++ /dev/null | |||
@@ -1,577 +0,0 @@ | |||
1 | /** | ||
2 | * @file llfft.cpp | ||
3 | * @brief FFT function implementations | ||
4 | * | ||
5 | * Copyright (c) 2003-2007, Linden Research, Inc. | ||
6 | * | ||
7 | * Second Life Viewer Source Code | ||
8 | * The source code in this file ("Source Code") is provided by Linden Lab | ||
9 | * to you under the terms of the GNU General Public License, version 2.0 | ||
10 | * ("GPL"), unless you have obtained a separate licensing agreement | ||
11 | * ("Other License"), formally executed by you and Linden Lab. Terms of | ||
12 | * the GPL can be found in doc/GPL-license.txt in this distribution, or | ||
13 | * online at http://secondlife.com/developers/opensource/gplv2 | ||
14 | * | ||
15 | * There are special exceptions to the terms and conditions of the GPL as | ||
16 | * it is applied to this Source Code. View the full text of the exception | ||
17 | * in the file doc/FLOSS-exception.txt in this software distribution, or | ||
18 | * online at http://secondlife.com/developers/opensource/flossexception | ||
19 | * | ||
20 | * By copying, modifying or distributing this software, you acknowledge | ||
21 | * that you have read and understood your obligations described above, | ||
22 | * and agree to abide by those obligations. | ||
23 | * | ||
24 | * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO | ||
25 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | ||
26 | * COMPLETENESS OR PERFORMANCE. | ||
27 | */ | ||
28 | |||
29 | /* | ||
30 | * Fast Fourier Transform | ||
31 | * | ||
32 | */ | ||
33 | #include "llviewerprecompiledheaders.h" | ||
34 | |||
35 | #include "llfft.h" | ||
36 | #include "llerror.h" | ||
37 | |||
38 | /* | ||
39 | ** | ||
40 | ********************************************************************* | ||
41 | ** Forward and inverse discrete Fourier transforms on complex data ** | ||
42 | ********************************************************************* | ||
43 | ** | ||
44 | ** | ||
45 | ** forward_fft(array, rows, cols) | ||
46 | ** COMPLEX *array; | ||
47 | ** S32 rows, cols; | ||
48 | ** | ||
49 | ** inverse_fft(array, rows, cols) | ||
50 | ** COMPLEX *array; | ||
51 | ** S32 rows, cols; | ||
52 | ** | ||
53 | ** These entry points compute the forward and inverse DFT's, respectively, | ||
54 | ** of a single-precision COMPLEX array. | ||
55 | ** | ||
56 | ** The result is a COMPLEX array of the same size, returned in | ||
57 | ** the same space as the input array. That is, the original array is | ||
58 | ** overwritten and destroyed. | ||
59 | ** | ||
60 | ** Rows and columns must each be an integral power of 2. | ||
61 | ** | ||
62 | ** These routines return integer value -1 if an error was detected, | ||
63 | ** 0 otherwise | ||
64 | ** | ||
65 | ** This implementation of the DFT uses the transform pair defined as follows. | ||
66 | ** | ||
67 | ** Let there be two COMPLEX arrays each with n rows and m columns | ||
68 | ** Index them as | ||
69 | ** f(x,y): 0 <= x <= m - 1, 0 <= y <= n - 1 | ||
70 | ** F(u,v): -m/2 <= u <= m/2 - 1, -n/2 <= v <= n/2 - 1 | ||
71 | ** | ||
72 | ** Then the forward and inverse transforms are related as | ||
73 | ** | ||
74 | ** Forward: | ||
75 | ** | ||
76 | ** F(u,v) = \sum_{x=0}^{m-1} \sum_{y=0}^{n-1} | ||
77 | ** f(x,y) \exp{-2\pi i (ux/m + vy/n)} | ||
78 | ** | ||
79 | ** | ||
80 | ** Inverse: | ||
81 | ** | ||
82 | ** f(x,y) = 1/(mn) \sum_{u=-m/2}^{m/2-1} \sum_{v=-n/2}^{n/2-1} | ||
83 | ** F(u,v) \exp{2\pi i (ux/m + vy/n)} | ||
84 | ** | ||
85 | ** Therefore, the transforms have these properties: | ||
86 | ** 1. \sum_x \sum_y f(x,y) = F(0,0) | ||
87 | ** 2. m n \sum_x \sum_y |f(x,y)|^2 = \sum_u \sum_v |F(u,v)|^2 | ||
88 | ** | ||
89 | */ | ||
90 | |||
91 | |||
92 | //DPCOMPLEX *stageBuff; /* buffer to hold a row or column at a time */ | ||
93 | //COMPLEX *bigBuff; /* a pointer to the input array */ | ||
94 | |||
95 | |||
96 | /* | ||
97 | * These macros move complex data between bigBuff and | ||
98 | * stageBuff | ||
99 | */ | ||
100 | |||
101 | inline void LoadRow(DPCOMPLEX* stageBuff, COMPLEX* bigBuff, U32 row, U32 cols) | ||
102 | { | ||
103 | for (U32 j = row*cols, k = 0 ; k < cols ; j++, k++) | ||
104 | { | ||
105 | stageBuff[k].re = bigBuff[j].re; | ||
106 | stageBuff[k].im = bigBuff[j].im; | ||
107 | } | ||
108 | } | ||
109 | |||
110 | inline void StoreRow(DPCOMPLEX* stageBuff, COMPLEX* bigBuff, U32 row, U32 cols) | ||
111 | { | ||
112 | for (U32 j = row*cols, k = 0 ; k < cols ; j++, k++) | ||
113 | { | ||
114 | bigBuff[j].re = (F32)stageBuff[k].re; | ||
115 | bigBuff[j].im = (F32)stageBuff[k].im; | ||
116 | } | ||
117 | } | ||
118 | |||
119 | inline void LoadCol(DPCOMPLEX* stageBuff, COMPLEX* bigBuff, U32 col, U32 rows, U32 cols) | ||
120 | { | ||
121 | for (U32 j = col,k = 0 ; k < rows ; j+=cols, k++) | ||
122 | { | ||
123 | stageBuff[k].re = bigBuff[j].re; | ||
124 | stageBuff[k].im = bigBuff[j].im; | ||
125 | } | ||
126 | } | ||
127 | |||
128 | inline void StoreCol(DPCOMPLEX* stageBuff, COMPLEX* bigBuff, U32 col, U32 rows, U32 cols) | ||
129 | { | ||
130 | for (U32 j = col,k = 0 ; k < rows ; j+=cols, k++) | ||
131 | { | ||
132 | bigBuff[j].re = (F32)stageBuff[k].re; | ||
133 | bigBuff[j].im = (F32)stageBuff[k].im; | ||
134 | } | ||
135 | } | ||
136 | |||
137 | |||
138 | /* do something with an error message */ | ||
139 | inline void handle_error(S8* msg) | ||
140 | { | ||
141 | llerrs << msg << llendl; | ||
142 | } | ||
143 | |||
144 | |||
145 | /* | ||
146 | ** compute DFT: forward if direction==0, inverse if direction==1 | ||
147 | ** array must be COMPLEX | ||
148 | */ | ||
149 | BOOL fft(const LLFFTPlan& plan, COMPLEX *array, S32 rows, S32 cols, S32 direction) | ||
150 | { | ||
151 | S32 i; | ||
152 | |||
153 | if (!plan.valid() || plan.rows() != rows || plan.cols() != cols) | ||
154 | return FALSE; | ||
155 | |||
156 | /* compute transform row by row */ | ||
157 | |||
158 | if(cols>1) | ||
159 | { | ||
160 | for(i=0;i<rows;i++) | ||
161 | { | ||
162 | LoadRow(plan.buffer(), array, i, cols); | ||
163 | FFT842(direction, cols, plan.buffer()); | ||
164 | StoreRow(plan.buffer(), array, i, cols); | ||
165 | } | ||
166 | } | ||
167 | |||
168 | if(rows<2) /* done */ | ||
169 | { | ||
170 | //freeBuffer(); | ||
171 | return TRUE; | ||
172 | } | ||
173 | |||
174 | |||
175 | /* compute transform column by column */ | ||
176 | |||
177 | for(i=0;i<cols;i++) | ||
178 | { | ||
179 | LoadCol(plan.buffer(), array, i, rows, cols); | ||
180 | FFT842(direction, rows, plan.buffer()); | ||
181 | StoreCol(plan.buffer(), array, i, rows, cols); | ||
182 | } | ||
183 | |||
184 | //freeBuffer(); | ||
185 | |||
186 | return TRUE; | ||
187 | } | ||
188 | |||
189 | |||
190 | |||
191 | /* | ||
192 | ** FFT842 | ||
193 | ** This routine replaces the input DPCOMPLEX vector by its | ||
194 | ** finite discrete complex fourier transform if in==0. | ||
195 | ** It replaces the input DPCOMPLEX vector by its | ||
196 | ** finite discrete complex inverse fourier transform if in==1. | ||
197 | ** | ||
198 | ** in - FORWARD or INVERSE | ||
199 | ** n - length of vector | ||
200 | ** b - input vector | ||
201 | ** | ||
202 | ** It performs as many base 8 iterations as possible and | ||
203 | ** then finishes with a base 4 iteration or a base 2 | ||
204 | ** iteration if needed. | ||
205 | ** | ||
206 | ** Ported from the FORTRAN code in Programming for Digital Signal Processing, | ||
207 | ** IEEE Press 1979, Section 1, by G. D. Bergland and M. T. Dolan | ||
208 | ** | ||
209 | */ | ||
210 | void FFT842(S32 in, S32 n, DPCOMPLEX *b) | ||
211 | { | ||
212 | F64 fn, r, fi; | ||
213 | |||
214 | S32 L[16],L1,L2,L3,L4,L5,L6,L7,L8,L9,L10,L11,L12,L13,L14,L15; | ||
215 | S32 j1,j2,j3,j4,j5,j6,j7,j8,j9,j10,j11,j12,j13,j14; | ||
216 | S32 i, j, ij, ji, ij1, ji1; | ||
217 | S32 n2pow, n8pow, nthpo, ipass, nxtlt, lengt; | ||
218 | |||
219 | n2pow = fastlog2(n); | ||
220 | nthpo = n; | ||
221 | fn = 1.0 / (F64)nthpo; | ||
222 | |||
223 | |||
224 | if(in==FORWARD) | ||
225 | { | ||
226 | /* take conjugate */ | ||
227 | for(i=0;i<n;i++) | ||
228 | { | ||
229 | b[i].im *= -1.0; | ||
230 | } | ||
231 | } | ||
232 | |||
233 | if(in==INVERSE) | ||
234 | { | ||
235 | /* scramble inputs */ | ||
236 | for(i=0,j=n/2;j<n;i++,j++) | ||
237 | { | ||
238 | r = b[j].re; | ||
239 | fi = b[j].im; | ||
240 | b[j].re = b[i].re; | ||
241 | b[j].im = b[i].im; | ||
242 | b[i].re = r; | ||
243 | b[i].im = fi; | ||
244 | } | ||
245 | } | ||
246 | |||
247 | n8pow = n2pow/3; | ||
248 | |||
249 | if(n8pow) | ||
250 | { | ||
251 | /* radix 8 iterations */ | ||
252 | for(ipass=1;ipass<=n8pow;ipass++) | ||
253 | { | ||
254 | nxtlt = 0x1 << (n2pow - 3*ipass); | ||
255 | lengt = 8*nxtlt; | ||
256 | R8TX(nxtlt,nthpo,lengt, | ||
257 | b,b+nxtlt,b+2*nxtlt, | ||
258 | b+3*nxtlt,b+4*nxtlt,b+5*nxtlt, | ||
259 | b+6*nxtlt,b+7*nxtlt); | ||
260 | } | ||
261 | } | ||
262 | |||
263 | if(n2pow%3 == 1) | ||
264 | { | ||
265 | /* radix 2 iteration needed */ | ||
266 | R2TX(nthpo,b,b+1); | ||
267 | } | ||
268 | |||
269 | |||
270 | if(n2pow%3 == 2) | ||
271 | { | ||
272 | /* radix 4 iteration needed */ | ||
273 | R4TX(nthpo,b,b+1,b+2,b+3); | ||
274 | } | ||
275 | |||
276 | |||
277 | |||
278 | for(j=1;j<=15;j++) | ||
279 | { | ||
280 | L[j] = 1; | ||
281 | if(j-n2pow <= 0) L[j] = 0x1 << (n2pow + 1 - j); | ||
282 | } | ||
283 | L15=L[1];L14=L[2];L13=L[3];L12=L[4];L11=L[5];L10=L[6];L9=L[7]; | ||
284 | L8=L[8];L7=L[9];L6=L[10];L5=L[11];L4=L[12];L3=L[13];L2=L[14];L1=L[15]; | ||
285 | |||
286 | ij = 1; | ||
287 | |||
288 | for(j1=1;j1<=L1;j1++) | ||
289 | for(j2=j1;j2<=L2;j2+=L1) | ||
290 | for(j3=j2;j3<=L3;j3+=L2) | ||
291 | for(j4=j3;j4<=L4;j4+=L3) | ||
292 | for(j5=j4;j5<=L5;j5+=L4) | ||
293 | for(j6=j5;j6<=L6;j6+=L5) | ||
294 | for(j7=j6;j7<=L7;j7+=L6) | ||
295 | for(j8=j7;j8<=L8;j8+=L7) | ||
296 | for(j9=j8;j9<=L9;j9+=L8) | ||
297 | for(j10=j9;j10<=L10;j10+=L9) | ||
298 | for(j11=j10;j11<=L11;j11+=L10) | ||
299 | for(j12=j11;j12<=L12;j12+=L11) | ||
300 | for(j13=j12;j13<=L13;j13+=L12) | ||
301 | for(j14=j13;j14<=L14;j14+=L13) | ||
302 | for(ji=j14;ji<=L15;ji+=L14) | ||
303 | { | ||
304 | ij1 = ij-1; | ||
305 | ji1 = ji-1; | ||
306 | |||
307 | if(ij-ji<0) | ||
308 | { | ||
309 | r = b[ij1].re; | ||
310 | b[ij1].re = b[ji1].re; | ||
311 | b[ji1].re = r; | ||
312 | fi = b[ij1].im; | ||
313 | b[ij1].im = b[ji1].im; | ||
314 | b[ji1].im = fi; | ||
315 | } | ||
316 | ij++; | ||
317 | } | ||
318 | |||
319 | if(in==FORWARD) // take conjugates & unscramble outputs | ||
320 | { | ||
321 | for(i=0,j=n/2;j<n;i++,j++) | ||
322 | { | ||
323 | r = b[j].re; | ||
324 | fi = b[j].im; | ||
325 | b[j].re = b[i].re; | ||
326 | b[j].im = -b[i].im; | ||
327 | b[i].re = r; | ||
328 | b[i].im = -fi; | ||
329 | } | ||
330 | } | ||
331 | |||
332 | if(in==INVERSE) // scale outputs | ||
333 | { | ||
334 | for(i=0;i<nthpo;i++) | ||
335 | { | ||
336 | b[i].re *= fn; | ||
337 | b[i].im *= fn; | ||
338 | } | ||
339 | } | ||
340 | } | ||
341 | |||
342 | |||
343 | /* | ||
344 | ** radix 2 iteration subroutine | ||
345 | */ | ||
346 | void R2TX(S32 nthpo, DPCOMPLEX *c0, DPCOMPLEX *c1) | ||
347 | { | ||
348 | S32 k,kk; | ||
349 | F64 *cr0, *ci0, *cr1, *ci1, r1, fi1; | ||
350 | |||
351 | cr0 = &(c0[0].re); | ||
352 | ci0 = &(c0[0].im); | ||
353 | cr1 = &(c1[0].re); | ||
354 | ci1 = &(c1[0].im); | ||
355 | |||
356 | for(k = 0; k < nthpo; k += 2) | ||
357 | { | ||
358 | kk = k*2; | ||
359 | |||
360 | r1 = cr0[kk] + cr1[kk]; | ||
361 | cr1[kk] = cr0[kk] - cr1[kk]; | ||
362 | cr0[kk] = r1; | ||
363 | fi1 = ci0[kk] + ci1[kk]; | ||
364 | ci1[kk] = ci0[kk] - ci1[kk]; | ||
365 | ci0[kk] = fi1; | ||
366 | } | ||
367 | } | ||
368 | |||
369 | |||
370 | /* | ||
371 | ** radix 4 iteration subroutine | ||
372 | */ | ||
373 | void R4TX(S32 nthpo, DPCOMPLEX *c0, DPCOMPLEX *c1, DPCOMPLEX *c2, DPCOMPLEX *c3) | ||
374 | { | ||
375 | S32 k,kk; | ||
376 | F64 *cr0, *ci0, *cr1, *ci1, *cr2, *ci2, *cr3, *ci3; | ||
377 | F64 r1,r2,r3,r4,i1,i2,i3,i4; | ||
378 | |||
379 | cr0 = &(c0[0].re); | ||
380 | cr1 = &(c1[0].re); | ||
381 | cr2 = &(c2[0].re); | ||
382 | cr3 = &(c3[0].re); | ||
383 | ci0 = &(c0[0].im); | ||
384 | ci1 = &(c1[0].im); | ||
385 | ci2 = &(c2[0].im); | ||
386 | ci3 = &(c3[0].im); | ||
387 | |||
388 | for(k = 1; k <= nthpo; k += 4) | ||
389 | { | ||
390 | kk = (k-1)*2; /* real and imag parts alternate */ | ||
391 | |||
392 | r1 = cr0[kk] + cr2[kk]; | ||
393 | r2 = cr0[kk] - cr2[kk]; | ||
394 | r3 = cr1[kk] + cr3[kk]; | ||
395 | r4 = cr1[kk] - cr3[kk]; | ||
396 | i1 = ci0[kk] + ci2[kk]; | ||
397 | i2 = ci0[kk] - ci2[kk]; | ||
398 | i3 = ci1[kk] + ci3[kk]; | ||
399 | i4 = ci1[kk] - ci3[kk]; | ||
400 | cr0[kk] = r1 + r3; | ||
401 | ci0[kk] = i1 + i3; | ||
402 | cr1[kk] = r1 - r3; | ||
403 | ci1[kk] = i1 - i3; | ||
404 | cr2[kk] = r2 - i4; | ||
405 | ci2[kk] = i2 + r4; | ||
406 | cr3[kk] = r2 + i4; | ||
407 | ci3[kk] = i2 - r4; | ||
408 | } | ||
409 | } | ||
410 | |||
411 | |||
412 | |||
413 | /* | ||
414 | ** radix 8 iteration subroutine | ||
415 | */ | ||
416 | void R8TX(S32 nxtlt, S32 nthpo, S32 lengt, DPCOMPLEX *cc0, DPCOMPLEX *cc1, DPCOMPLEX *cc2, | ||
417 | DPCOMPLEX *cc3, DPCOMPLEX *cc4, DPCOMPLEX *cc5, DPCOMPLEX *cc6, DPCOMPLEX *cc7) | ||
418 | { | ||
419 | S32 j,k,kk; | ||
420 | F64 scale, arg, tr, ti; | ||
421 | F64 c1,c2,c3,c4,c5,c6,c7; | ||
422 | F64 s1,s2,s3,s4,s5,s6,s7; | ||
423 | F64 ar0,ar1,ar2,ar3,ar4,ar5,ar6,ar7; | ||
424 | F64 ai0,ai1,ai2,ai3,ai4,ai5,ai6,ai7; | ||
425 | F64 br0,br1,br2,br3,br4,br5,br6,br7; | ||
426 | F64 bi0,bi1,bi2,bi3,bi4,bi5,bi6,bi7; | ||
427 | |||
428 | F64 *cr0,*cr1,*cr2,*cr3,*cr4,*cr5,*cr6,*cr7; | ||
429 | F64 *ci0,*ci1,*ci2,*ci3,*ci4,*ci5,*ci6,*ci7; | ||
430 | |||
431 | cr0 = &(cc0[0].re); | ||
432 | cr1 = &(cc1[0].re); | ||
433 | cr2 = &(cc2[0].re); | ||
434 | cr3 = &(cc3[0].re); | ||
435 | cr4 = &(cc4[0].re); | ||
436 | cr5 = &(cc5[0].re); | ||
437 | cr6 = &(cc6[0].re); | ||
438 | cr7 = &(cc7[0].re); | ||
439 | |||
440 | ci0 = &(cc0[0].im); | ||
441 | ci1 = &(cc1[0].im); | ||
442 | ci2 = &(cc2[0].im); | ||
443 | ci3 = &(cc3[0].im); | ||
444 | ci4 = &(cc4[0].im); | ||
445 | ci5 = &(cc5[0].im); | ||
446 | ci6 = &(cc6[0].im); | ||
447 | ci7 = &(cc7[0].im); | ||
448 | |||
449 | |||
450 | scale = F_TWO_PI/lengt; | ||
451 | |||
452 | for(j = 1; j <= nxtlt; j++) | ||
453 | { | ||
454 | arg = (j-1)*scale; | ||
455 | c1 = cos(arg); | ||
456 | s1 = sin(arg); | ||
457 | c2 = c1*c1 - s1*s1; | ||
458 | s2 = c1*s1 + c1*s1; | ||
459 | c3 = c1*c2 - s1*s2; | ||
460 | s3 = c2*s1 + s2*c1; | ||
461 | c4 = c2*c2 - s2*s2; | ||
462 | s4 = c2*s2 + c2*s2; | ||
463 | c5 = c2*c3 - s2*s3; | ||
464 | s5 = c3*s2 + s3*c2; | ||
465 | c6 = c3*c3 - s3*s3; | ||
466 | s6 = c3*s3 + c3*s3; | ||
467 | c7 = c3*c4 - s3*s4; | ||
468 | s7 = c4*s3 + s4*c3; | ||
469 | |||
470 | for(k = j; k <= nthpo; k += lengt) | ||
471 | { | ||
472 | kk = (k-1)*2; /* index by twos; re & im alternate */ | ||
473 | |||
474 | ar0 = cr0[kk] + cr4[kk]; | ||
475 | ar1 = cr1[kk] + cr5[kk]; | ||
476 | ar2 = cr2[kk] + cr6[kk]; | ||
477 | ar3 = cr3[kk] + cr7[kk]; | ||
478 | ar4 = cr0[kk] - cr4[kk]; | ||
479 | ar5 = cr1[kk] - cr5[kk]; | ||
480 | ar6 = cr2[kk] - cr6[kk]; | ||
481 | ar7 = cr3[kk] - cr7[kk]; | ||
482 | ai0 = ci0[kk] + ci4[kk]; | ||
483 | ai1 = ci1[kk] + ci5[kk]; | ||
484 | ai2 = ci2[kk] + ci6[kk]; | ||
485 | ai3 = ci3[kk] + ci7[kk]; | ||
486 | ai4 = ci0[kk] - ci4[kk]; | ||
487 | ai5 = ci1[kk] - ci5[kk]; | ||
488 | ai6 = ci2[kk] - ci6[kk]; | ||
489 | ai7 = ci3[kk] - ci7[kk]; | ||
490 | br0 = ar0 + ar2; | ||
491 | br1 = ar1 + ar3; | ||
492 | br2 = ar0 - ar2; | ||
493 | br3 = ar1 - ar3; | ||
494 | br4 = ar4 - ai6; | ||
495 | br5 = ar5 - ai7; | ||
496 | br6 = ar4 + ai6; | ||
497 | br7 = ar5 + ai7; | ||
498 | bi0 = ai0 + ai2; | ||
499 | bi1 = ai1 + ai3; | ||
500 | bi2 = ai0 - ai2; | ||
501 | bi3 = ai1 - ai3; | ||
502 | bi4 = ai4 + ar6; | ||
503 | bi5 = ai5 + ar7; | ||
504 | bi6 = ai4 - ar6; | ||
505 | bi7 = ai5 - ar7; | ||
506 | cr0[kk] = br0 + br1; | ||
507 | ci0[kk] = bi0 + bi1; | ||
508 | if(j > 1) | ||
509 | { | ||
510 | cr1[kk] = c4*(br0-br1) - s4*(bi0-bi1); | ||
511 | cr2[kk] = c2*(br2-bi3) - s2*(bi2+br3); | ||
512 | cr3[kk] = c6*(br2+bi3) - s6*(bi2-br3); | ||
513 | ci1[kk] = c4*(bi0-bi1) + s4*(br0-br1); | ||
514 | ci2[kk] = c2*(bi2+br3) + s2*(br2-bi3); | ||
515 | ci3[kk] = c6*(bi2-br3) + s6*(br2+bi3); | ||
516 | tr = OO_SQRT2*(br5-bi5); | ||
517 | ti = OO_SQRT2*(br5+bi5); | ||
518 | cr4[kk] = c1*(br4+tr) - s1*(bi4+ti); | ||
519 | ci4[kk] = c1*(bi4+ti) + s1*(br4+tr); | ||
520 | cr5[kk] = c5*(br4-tr) - s5*(bi4-ti); | ||
521 | ci5[kk] = c5*(bi4-ti) + s5*(br4-tr); | ||
522 | tr = -OO_SQRT2*(br7+bi7); | ||
523 | ti = OO_SQRT2*(br7-bi7); | ||
524 | cr6[kk] = c3*(br6+tr) - s3*(bi6+ti); | ||
525 | ci6[kk] = c3*(bi6+ti) + s3*(br6+tr); | ||
526 | cr7[kk] = c7*(br6-tr) - s7*(bi6-ti); | ||
527 | ci7[kk] = c7*(bi6-ti) + s7*(br6-tr); | ||
528 | } | ||
529 | else | ||
530 | { | ||
531 | cr1[kk] = br0 - br1; | ||
532 | cr2[kk] = br2 - bi3; | ||
533 | cr3[kk] = br2 + bi3; | ||
534 | ci1[kk] = bi0 - bi1; | ||
535 | ci2[kk] = bi2 + br3; | ||
536 | ci3[kk] = bi2 - br3; | ||
537 | tr = OO_SQRT2*(br5-bi5); | ||
538 | ti = OO_SQRT2*(br5+bi5); | ||
539 | cr4[kk] = br4 + tr; | ||
540 | ci4[kk] = bi4 + ti; | ||
541 | cr5[kk] = br4 - tr; | ||
542 | ci5[kk] = bi4 - ti; | ||
543 | tr = -OO_SQRT2*(br7+bi7); | ||
544 | ti = OO_SQRT2*(br7-bi7); | ||
545 | cr6[kk] = br6 + tr; | ||
546 | ci6[kk] = bi6 + ti; | ||
547 | cr7[kk] = br6 - tr; | ||
548 | ci7[kk] = bi6 - ti; | ||
549 | } | ||
550 | } | ||
551 | } | ||
552 | } | ||
553 | |||
554 | |||
555 | /* see if exactly one bit is set in integer argument */ | ||
556 | S32 power_of_2(S32 n) | ||
557 | { | ||
558 | S32 bits=0; | ||
559 | while(n) | ||
560 | { | ||
561 | bits += n & 1; | ||
562 | n >>= 1; | ||
563 | } | ||
564 | return(bits==1); | ||
565 | } | ||
566 | |||
567 | /* get binary log of integer argument; exact if n a power of 2 */ | ||
568 | S32 fastlog2(S32 n) | ||
569 | { | ||
570 | S32 log = -1; | ||
571 | while(n) | ||
572 | { | ||
573 | log++; | ||
574 | n >>= 1; | ||
575 | } | ||
576 | return(log); | ||
577 | } | ||
diff --git a/linden/indra/newview/llfft.h b/linden/indra/newview/llfft.h deleted file mode 100644 index 07e868b..0000000 --- a/linden/indra/newview/llfft.h +++ /dev/null | |||
@@ -1,105 +0,0 @@ | |||
1 | /** | ||
2 | * @file llfft.h | ||
3 | * @brief FFT function definitions | ||
4 | * | ||
5 | * Copyright (c) 2003-2007, Linden Research, Inc. | ||
6 | * | ||
7 | * Second Life Viewer Source Code | ||
8 | * The source code in this file ("Source Code") is provided by Linden Lab | ||
9 | * to you under the terms of the GNU General Public License, version 2.0 | ||
10 | * ("GPL"), unless you have obtained a separate licensing agreement | ||
11 | * ("Other License"), formally executed by you and Linden Lab. Terms of | ||
12 | * the GPL can be found in doc/GPL-license.txt in this distribution, or | ||
13 | * online at http://secondlife.com/developers/opensource/gplv2 | ||
14 | * | ||
15 | * There are special exceptions to the terms and conditions of the GPL as | ||
16 | * it is applied to this Source Code. View the full text of the exception | ||
17 | * in the file doc/FLOSS-exception.txt in this software distribution, or | ||
18 | * online at http://secondlife.com/developers/opensource/flossexception | ||
19 | * | ||
20 | * By copying, modifying or distributing this software, you acknowledge | ||
21 | * that you have read and understood your obligations described above, | ||
22 | * and agree to abide by those obligations. | ||
23 | * | ||
24 | * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO | ||
25 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | ||
26 | * COMPLETENESS OR PERFORMANCE. | ||
27 | */ | ||
28 | |||
29 | #ifndef LL_LLFFT_H | ||
30 | #define LL_LLFFT_H | ||
31 | |||
32 | /* | ||
33 | * Fast Fourier Transform | ||
34 | * | ||
35 | */ | ||
36 | |||
37 | //#include <stdio.h> | ||
38 | //#include <math.h> | ||
39 | |||
40 | #include "llmath.h" | ||
41 | |||
42 | #define FORWARD 0 | ||
43 | #define INVERSE 1 | ||
44 | |||
45 | typedef struct {F32 re; F32 im;} COMPLEX; | ||
46 | typedef struct {F64 re; F64 im;} DPCOMPLEX; | ||
47 | |||
48 | |||
49 | void FFT842(S32 in, S32 n, DPCOMPLEX *b); | ||
50 | void R2TX(S32 nthpo, DPCOMPLEX *c0, DPCOMPLEX *c1); | ||
51 | void R4TX(S32 nthpo, DPCOMPLEX *c0, DPCOMPLEX *c1, DPCOMPLEX *c2, DPCOMPLEX *c3); | ||
52 | void R8TX(S32 nxtlt, S32 nthpo, S32 lengt, DPCOMPLEX *cc0, DPCOMPLEX *cc1, DPCOMPLEX *cc2, | ||
53 | DPCOMPLEX *cc3, DPCOMPLEX *cc4, DPCOMPLEX *cc5, DPCOMPLEX *cc6, DPCOMPLEX *cc7); | ||
54 | S32 power_of_2(S32 n); | ||
55 | S32 fastlog2(S32 n); | ||
56 | |||
57 | class LLFFTPlan | ||
58 | { | ||
59 | private: | ||
60 | S32 mRows; | ||
61 | S32 mCols; | ||
62 | S32 mSize; | ||
63 | DPCOMPLEX* mBuff; | ||
64 | public: | ||
65 | LLFFTPlan() : mRows(0), mCols(0), mSize(0), mBuff(0) {} | ||
66 | LLFFTPlan(S32 rows, S32 cols) { init(rows, cols); } | ||
67 | ~LLFFTPlan() { destroy(); } | ||
68 | |||
69 | void init(S32 rows, S32 cols) | ||
70 | { | ||
71 | if(power_of_2(rows) && power_of_2(cols)) | ||
72 | { | ||
73 | mRows = rows; | ||
74 | mCols = cols; | ||
75 | mSize = mRows > mCols ? mRows : mCols; | ||
76 | mBuff = new DPCOMPLEX[mSize]; | ||
77 | } | ||
78 | } | ||
79 | void destroy() | ||
80 | { | ||
81 | delete [] mBuff; | ||
82 | mSize = 0; | ||
83 | } | ||
84 | |||
85 | BOOL valid() const { return mBuff != NULL; } | ||
86 | DPCOMPLEX* buffer() const { return mBuff; } | ||
87 | S32 rows() const { return mRows; } | ||
88 | S32 cols() const { return mCols; } | ||
89 | }; | ||
90 | |||
91 | S32 fft(const LLFFTPlan& plan, COMPLEX *array, S32 rows, S32 cols, S32 direction); | ||
92 | |||
93 | /* do forward transform. array must be COMPLEX */ | ||
94 | inline S32 forward_fft(const LLFFTPlan& plan, COMPLEX *array, S32 rows, S32 cols) | ||
95 | { | ||
96 | return fft(plan, array, rows, cols, FORWARD); | ||
97 | } | ||
98 | |||
99 | /* do inverse transform. array must be COMPLEX */ | ||
100 | inline S32 inverse_fft(const LLFFTPlan& plan, COMPLEX *array, S32 rows, S32 cols) | ||
101 | { | ||
102 | return fft(plan, array, rows, cols, INVERSE); | ||
103 | } | ||
104 | |||
105 | #endif | ||
diff --git a/linden/indra/newview/llflexibleobject.cpp b/linden/indra/newview/llflexibleobject.cpp index 8e4fe91..836cfdc 100644 --- a/linden/indra/newview/llflexibleobject.cpp +++ b/linden/indra/newview/llflexibleobject.cpp | |||
@@ -626,7 +626,7 @@ void LLVolumeImplFlexible::onSetScale(const LLVector3& scale, BOOL damped) | |||
626 | 626 | ||
627 | BOOL LLVolumeImplFlexible::doUpdateGeometry(LLDrawable *drawable) | 627 | BOOL LLVolumeImplFlexible::doUpdateGeometry(LLDrawable *drawable) |
628 | { | 628 | { |
629 | LLVOVolume *volume = (LLVOVolume*)mVO.get(); | 629 | LLVOVolume *volume = (LLVOVolume*)mVO; |
630 | 630 | ||
631 | if (volume->mDrawable.isNull()) // Not sure why this is happening, but it is... | 631 | if (volume->mDrawable.isNull()) // Not sure why this is happening, but it is... |
632 | { | 632 | { |
@@ -742,7 +742,7 @@ void LLVolumeImplFlexible::updateRelativeXform() | |||
742 | { | 742 | { |
743 | LLQuaternion delta_rot; | 743 | LLQuaternion delta_rot; |
744 | LLVector3 delta_pos, delta_scale; | 744 | LLVector3 delta_pos, delta_scale; |
745 | LLVOVolume* vo = (LLVOVolume*) mVO.get(); | 745 | LLVOVolume* vo = (LLVOVolume*) mVO; |
746 | 746 | ||
747 | //matrix from local space to parent relative/global space | 747 | //matrix from local space to parent relative/global space |
748 | delta_rot = vo->mDrawable->isSpatialRoot() ? LLQuaternion() : vo->mDrawable->getRotation(); | 748 | delta_rot = vo->mDrawable->isSpatialRoot() ? LLQuaternion() : vo->mDrawable->getRotation(); |
diff --git a/linden/indra/newview/llflexibleobject.h b/linden/indra/newview/llflexibleobject.h index 507073b..f3da5bb 100644 --- a/linden/indra/newview/llflexibleobject.h +++ b/linden/indra/newview/llflexibleobject.h | |||
@@ -111,7 +111,8 @@ class LLVolumeImplFlexible : public LLVolumeInterface | |||
111 | //-------------------------------------- | 111 | //-------------------------------------- |
112 | // private members | 112 | // private members |
113 | //-------------------------------------- | 113 | //-------------------------------------- |
114 | LLPointer<LLViewerObject> mVO; | 114 | // Backlink only; don't make this an LLPointer. |
115 | LLViewerObject* mVO; | ||
115 | LLTimer mTimer; | 116 | LLTimer mTimer; |
116 | LLVector3 mAnchorPosition; | 117 | LLVector3 mAnchorPosition; |
117 | LLVector3 mParentPosition; | 118 | LLVector3 mParentPosition; |
diff --git a/linden/indra/newview/llfloaterabout.cpp b/linden/indra/newview/llfloaterabout.cpp index 372d7e0..cc3bb08 100644 --- a/linden/indra/newview/llfloaterabout.cpp +++ b/linden/indra/newview/llfloaterabout.cpp | |||
@@ -82,9 +82,10 @@ LLFloaterAbout::LLFloaterAbout() | |||
82 | 82 | ||
83 | // Version string | 83 | // Version string |
84 | LLString version = gSecondLife | 84 | LLString version = gSecondLife |
85 | + llformat(" %d.%d.%d (%d) %s %s", | 85 | + llformat(" %d.%d.%d (%d) %s %s (%s)", |
86 | LL_VERSION_MAJOR, LL_VERSION_MINOR, LL_VERSION_PATCH, LL_VIEWER_BUILD, | 86 | LL_VERSION_MAJOR, LL_VERSION_MINOR, LL_VERSION_PATCH, LL_VIEWER_BUILD, |
87 | __DATE__, __TIME__); | 87 | __DATE__, __TIME__, |
88 | gChannelName.c_str()); | ||
88 | support.append(version); | 89 | support.append(version); |
89 | support.append("\n\n"); | 90 | support.append("\n\n"); |
90 | 91 | ||
diff --git a/linden/indra/newview/llfloaterchat.cpp b/linden/indra/newview/llfloaterchat.cpp index 5e416d4..dd79afd 100644 --- a/linden/indra/newview/llfloaterchat.cpp +++ b/linden/indra/newview/llfloaterchat.cpp | |||
@@ -187,22 +187,22 @@ void LLFloaterChat::addChatHistory(const LLChat& chat, bool log_to_file) | |||
187 | // could flash the chat button in the status bar here. JC | 187 | // could flash the chat button in the status bar here. JC |
188 | if (!gFloaterChat) return; | 188 | if (!gFloaterChat) return; |
189 | 189 | ||
190 | LLViewerTextEditor* HistoryEditor = (LLViewerTextEditor*)gFloaterChat->getChildByName("Chat History Editor"); | 190 | LLViewerTextEditor* history_editor = (LLViewerTextEditor*)gFloaterChat->getChildByName("Chat History Editor"); |
191 | LLViewerTextEditor* HistoryEditorWithMute = (LLViewerTextEditor*)gFloaterChat->getChildByName("Chat History Editor with mute"); | 191 | LLViewerTextEditor* history_editor_with_mute = (LLViewerTextEditor*)gFloaterChat->getChildByName("Chat History Editor with mute"); |
192 | 192 | ||
193 | HistoryEditor->setParseHTML(TRUE); | 193 | history_editor->setParseHTML(TRUE); |
194 | HistoryEditorWithMute->setParseHTML(TRUE); | 194 | history_editor_with_mute->setParseHTML(TRUE); |
195 | 195 | ||
196 | if (!chat.mMuted) | 196 | if (!chat.mMuted) |
197 | { | 197 | { |
198 | add_timestamped_line(HistoryEditor, chat.mText, color); | 198 | add_timestamped_line(history_editor, chat.mText, color); |
199 | add_timestamped_line(HistoryEditorWithMute, chat.mText, color); | 199 | add_timestamped_line(history_editor_with_mute, chat.mText, color); |
200 | } | 200 | } |
201 | else | 201 | else |
202 | { | 202 | { |
203 | // desaturate muted chat | 203 | // desaturate muted chat |
204 | LLColor4 muted_color = lerp(color, LLColor4::grey, 0.5f); | 204 | LLColor4 muted_color = lerp(color, LLColor4::grey, 0.5f); |
205 | add_timestamped_line(HistoryEditorWithMute, chat.mText, color); | 205 | add_timestamped_line(history_editor_with_mute, chat.mText, color); |
206 | } | 206 | } |
207 | 207 | ||
208 | if (!chat.mMuted | 208 | if (!chat.mMuted |
@@ -211,17 +211,19 @@ void LLFloaterChat::addChatHistory(const LLChat& chat, bool log_to_file) | |||
211 | && chat.mFromID != gAgent.getID()) | 211 | && chat.mFromID != gAgent.getID()) |
212 | { | 212 | { |
213 | 213 | ||
214 | LLComboBox* ChatterCombo = LLUICtrlFactory::getComboBoxByName(gFloaterChat,"chatter combobox"); | 214 | LLComboBox* chatter_combo = LLUICtrlFactory::getComboBoxByName(gFloaterChat,"chatter combobox"); |
215 | 215 | ||
216 | if(!ChatterCombo) | 216 | if(!chatter_combo) |
217 | return; | 217 | { |
218 | return; | ||
219 | } | ||
218 | 220 | ||
219 | if (!ChatterCombo->setCurrentByID(chat.mFromID)) | 221 | if (!chatter_combo->setCurrentByID(chat.mFromID)) |
220 | { | 222 | { |
221 | // if we have too many items... | 223 | // if we have too many items... |
222 | if (ChatterCombo->getItemCount() >= MAX_CHATTER_COUNT) | 224 | if (chatter_combo->getItemCount() >= MAX_CHATTER_COUNT) |
223 | { | 225 | { |
224 | ChatterCombo->remove(0); | 226 | chatter_combo->remove(0); |
225 | } | 227 | } |
226 | 228 | ||
227 | LLMute mute(chat.mFromID, chat.mFromName); | 229 | LLMute mute(chat.mFromID, chat.mFromName); |
@@ -234,8 +236,8 @@ void LLFloaterChat::addChatHistory(const LLChat& chat, bool log_to_file) | |||
234 | mute.mType = LLMute::AGENT; | 236 | mute.mType = LLMute::AGENT; |
235 | } | 237 | } |
236 | LLString item = mute.getDisplayName(); | 238 | LLString item = mute.getDisplayName(); |
237 | ChatterCombo->add(item, chat.mFromID); | 239 | chatter_combo->add(item, chat.mFromID); |
238 | ChatterCombo->setCurrentByIndex(ChatterCombo->getItemCount() - 1); | 240 | chatter_combo->setCurrentByIndex(chatter_combo->getItemCount() - 1); |
239 | gFloaterChat->childSetEnabled("Mute resident",TRUE); | 241 | gFloaterChat->childSetEnabled("Mute resident",TRUE); |
240 | } | 242 | } |
241 | } | 243 | } |
@@ -246,11 +248,11 @@ void LLFloaterChat::setHistoryCursorAndScrollToEnd() | |||
246 | { | 248 | { |
247 | if (gFloaterChat) | 249 | if (gFloaterChat) |
248 | { | 250 | { |
249 | LLViewerTextEditor* HistoryEditor = (LLViewerTextEditor*)gFloaterChat->getChildByName("Chat History Editor"); | 251 | LLViewerTextEditor* history_editor = (LLViewerTextEditor*)gFloaterChat->getChildByName("Chat History Editor"); |
250 | LLViewerTextEditor* HistoryEditorWithMute = (LLViewerTextEditor*)gFloaterChat->getChildByName("Chat History Editor with mute"); | 252 | LLViewerTextEditor* history_editor_with_mute = (LLViewerTextEditor*)gFloaterChat->getChildByName("Chat History Editor with mute"); |
251 | 253 | ||
252 | HistoryEditor->setCursorAndScrollToEnd(); | 254 | history_editor->setCursorAndScrollToEnd(); |
253 | HistoryEditorWithMute->setCursorAndScrollToEnd(); | 255 | history_editor_with_mute->setCursorAndScrollToEnd(); |
254 | } | 256 | } |
255 | } | 257 | } |
256 | 258 | ||
@@ -279,10 +281,10 @@ void LLFloaterChat::onClickMute(void *data) | |||
279 | { | 281 | { |
280 | LLFloaterChat* self = (LLFloaterChat*)data; | 282 | LLFloaterChat* self = (LLFloaterChat*)data; |
281 | 283 | ||
282 | LLComboBox* ChatterCombo = LLUICtrlFactory::getComboBoxByName(self,"chatter combobox"); | 284 | LLComboBox* chatter_combo = LLUICtrlFactory::getComboBoxByName(self,"chatter combobox"); |
283 | 285 | ||
284 | const LLString& name = ChatterCombo->getSimple(); | 286 | const LLString& name = chatter_combo->getSimple(); |
285 | LLUUID id = ChatterCombo->getCurrentID(); | 287 | LLUUID id = chatter_combo->getCurrentID(); |
286 | 288 | ||
287 | if (name.empty()) return; | 289 | if (name.empty()) return; |
288 | 290 | ||
@@ -328,24 +330,24 @@ void LLFloaterChat::onClickToggleShowMute(LLUICtrl* caller, void *data) | |||
328 | 330 | ||
329 | //LLCheckBoxCtrl* | 331 | //LLCheckBoxCtrl* |
330 | BOOL show_mute = LLUICtrlFactory::getCheckBoxByName(floater,"show mutes")->get(); | 332 | BOOL show_mute = LLUICtrlFactory::getCheckBoxByName(floater,"show mutes")->get(); |
331 | LLViewerTextEditor* HistoryEditor = (LLViewerTextEditor*)floater->getChildByName("Chat History Editor"); | 333 | LLViewerTextEditor* history_editor = (LLViewerTextEditor*)floater->getChildByName("Chat History Editor"); |
332 | LLViewerTextEditor* HistoryEditorWithMute = (LLViewerTextEditor*)floater->getChildByName("Chat History Editor with mute"); | 334 | LLViewerTextEditor* history_editor_with_mute = (LLViewerTextEditor*)floater->getChildByName("Chat History Editor with mute"); |
333 | 335 | ||
334 | if (!HistoryEditor || !HistoryEditorWithMute) | 336 | if (!history_editor || !history_editor_with_mute) |
335 | return; | 337 | return; |
336 | 338 | ||
337 | //BOOL show_mute = floater->mShowMuteCheckBox->get(); | 339 | //BOOL show_mute = floater->mShowMuteCheckBox->get(); |
338 | if (show_mute) | 340 | if (show_mute) |
339 | { | 341 | { |
340 | HistoryEditor->setVisible(FALSE); | 342 | history_editor->setVisible(FALSE); |
341 | HistoryEditorWithMute->setVisible(TRUE); | 343 | history_editor_with_mute->setVisible(TRUE); |
342 | HistoryEditorWithMute->setCursorAndScrollToEnd(); | 344 | history_editor_with_mute->setCursorAndScrollToEnd(); |
343 | } | 345 | } |
344 | else | 346 | else |
345 | { | 347 | { |
346 | HistoryEditor->setVisible(TRUE); | 348 | history_editor->setVisible(TRUE); |
347 | HistoryEditorWithMute->setVisible(FALSE); | 349 | history_editor_with_mute->setVisible(FALSE); |
348 | HistoryEditor->setCursorAndScrollToEnd(); | 350 | history_editor->setCursorAndScrollToEnd(); |
349 | } | 351 | } |
350 | } | 352 | } |
351 | 353 | ||
diff --git a/linden/indra/newview/llfloatereditui.cpp b/linden/indra/newview/llfloatereditui.cpp index 81c93ce..47cf97d 100644 --- a/linden/indra/newview/llfloatereditui.cpp +++ b/linden/indra/newview/llfloatereditui.cpp | |||
@@ -68,7 +68,7 @@ void LLFloaterEditUI::navigateHierarchyButtonPressed(void* data) | |||
68 | idx = parentChildren->size()-1; | 68 | idx = parentChildren->size()-1; |
69 | else | 69 | else |
70 | idx--; | 70 | idx--; |
71 | if( idx < 0 || idx >= parentChildren->size())break; | 71 | if( (long) idx < 0 || idx >= parentChildren->size())break; |
72 | for(sidx = 0,itor = parentChildren->begin();itor!=parentChildren->end();itor++,sidx++){ | 72 | for(sidx = 0,itor = parentChildren->begin();itor!=parentChildren->end();itor++,sidx++){ |
73 | if(sidx == idx) | 73 | if(sidx == idx) |
74 | { | 74 | { |
@@ -84,7 +84,7 @@ void LLFloaterEditUI::navigateHierarchyButtonPressed(void* data) | |||
84 | idx = 0; | 84 | idx = 0; |
85 | else | 85 | else |
86 | idx++; | 86 | idx++; |
87 | if( idx < 0 || idx >= parentChildren->size())break; | 87 | if( (long) idx < 0 || idx >= parentChildren->size())break; |
88 | for(sidx = 0,itor = parentChildren->begin();itor!=parentChildren->end();itor++,sidx++){ | 88 | for(sidx = 0,itor = parentChildren->begin();itor!=parentChildren->end();itor++,sidx++){ |
89 | if(sidx == idx) | 89 | if(sidx == idx) |
90 | { | 90 | { |
diff --git a/linden/indra/newview/llfloaterland.cpp b/linden/indra/newview/llfloaterland.cpp index ee89975..78e5e70 100644 --- a/linden/indra/newview/llfloaterland.cpp +++ b/linden/indra/newview/llfloaterland.cpp | |||
@@ -192,13 +192,11 @@ void LLFloaterLand::show() | |||
192 | // (and hence we have the local id). | 192 | // (and hence we have the local id). |
193 | // gParcelMgr->sendParcelAccessListRequest(AL_ACCESS | AL_BAN | AL_RENTER); | 193 | // gParcelMgr->sendParcelAccessListRequest(AL_ACCESS | AL_BAN | AL_RENTER); |
194 | 194 | ||
195 | // If we've already got the parcel data, fill the | ||
196 | // floater with it. | ||
197 | sInstance->mParcel = gParcelMgr->getFloatingParcelSelection(); | 195 | sInstance->mParcel = gParcelMgr->getFloatingParcelSelection(); |
198 | if (sInstance->mParcel->getParcel()) | 196 | |
199 | { | 197 | // Refresh even if not over a region so we don't get an |
200 | sInstance->refresh(); | 198 | // uninitialized dialog. The dialog is 0-region aware. |
201 | } | 199 | sInstance->refresh(); |
202 | } | 200 | } |
203 | 201 | ||
204 | //static | 202 | //static |
diff --git a/linden/indra/newview/llfloaterregioninfo.cpp b/linden/indra/newview/llfloaterregioninfo.cpp index 85fbfe1..70e975e 100644 --- a/linden/indra/newview/llfloaterregioninfo.cpp +++ b/linden/indra/newview/llfloaterregioninfo.cpp | |||
@@ -50,6 +50,7 @@ | |||
50 | #include "llcombobox.h" | 50 | #include "llcombobox.h" |
51 | #include "llfilepicker.h" | 51 | #include "llfilepicker.h" |
52 | #include "llfloatergodtools.h" // for send_sim_wide_deletes() | 52 | #include "llfloatergodtools.h" // for send_sim_wide_deletes() |
53 | #include "llfloatertopobjects.h" // added to fix SL-32336 | ||
53 | #include "llfloatergroups.h" | 54 | #include "llfloatergroups.h" |
54 | #include "llfloatertelehub.h" | 55 | #include "llfloatertelehub.h" |
55 | #include "lllineeditor.h" | 56 | #include "lllineeditor.h" |
@@ -885,6 +886,8 @@ void LLPanelRegionDebugInfo::onClickTopColliders(void* data) | |||
885 | strings_t strings; | 886 | strings_t strings; |
886 | strings.push_back("1"); // one physics step | 887 | strings.push_back("1"); // one physics step |
887 | LLUUID invoice(LLFloaterRegionInfo::getLastInvoice()); | 888 | LLUUID invoice(LLFloaterRegionInfo::getLastInvoice()); |
889 | LLFloaterTopObjects::show(); | ||
890 | LLFloaterTopObjects::clearList(); | ||
888 | self->sendEstateOwnerMessage(gMessageSystem, "colliders", invoice, strings); | 891 | self->sendEstateOwnerMessage(gMessageSystem, "colliders", invoice, strings); |
889 | } | 892 | } |
890 | 893 | ||
@@ -895,6 +898,8 @@ void LLPanelRegionDebugInfo::onClickTopScripts(void* data) | |||
895 | strings_t strings; | 898 | strings_t strings; |
896 | strings.push_back("6"); // top 5 scripts | 899 | strings.push_back("6"); // top 5 scripts |
897 | LLUUID invoice(LLFloaterRegionInfo::getLastInvoice()); | 900 | LLUUID invoice(LLFloaterRegionInfo::getLastInvoice()); |
901 | LLFloaterTopObjects::show(); | ||
902 | LLFloaterTopObjects::clearList(); | ||
898 | self->sendEstateOwnerMessage(gMessageSystem, "scripts", invoice, strings); | 903 | self->sendEstateOwnerMessage(gMessageSystem, "scripts", invoice, strings); |
899 | } | 904 | } |
900 | 905 | ||
diff --git a/linden/indra/newview/llfloatertopobjects.cpp b/linden/indra/newview/llfloatertopobjects.cpp index 6212ce9..53d00fc 100644 --- a/linden/indra/newview/llfloatertopobjects.cpp +++ b/linden/indra/newview/llfloatertopobjects.cpp | |||
@@ -370,19 +370,22 @@ void LLFloaterTopObjects::onDisableSelected(void* data) | |||
370 | sInstance->doToObjects(ACTION_DISABLE, false); | 370 | sInstance->doToObjects(ACTION_DISABLE, false); |
371 | } | 371 | } |
372 | 372 | ||
373 | //static | ||
373 | void LLFloaterTopObjects::clearList() | 374 | void LLFloaterTopObjects::clearList() |
374 | { | 375 | { |
375 | LLCtrlListInterface *list = childGetListInterface("objects_list"); | 376 | LLCtrlListInterface *list = sInstance->childGetListInterface("objects_list"); |
376 | 377 | ||
377 | if (list) | 378 | if (list) |
378 | { | 379 | { |
379 | list->operateOnAll(LLCtrlListInterface::OP_DELETE); | 380 | list->operateOnAll(LLCtrlListInterface::OP_DELETE); |
380 | } | 381 | } |
381 | 382 | ||
382 | mObjectListData.clear(); | 383 | sInstance->mObjectListData.clear(); |
383 | mObjectListIDs.clear(); | 384 | sInstance->mObjectListIDs.clear(); |
385 | sInstance->mtotalScore = 0.f; | ||
384 | } | 386 | } |
385 | 387 | ||
388 | //static | ||
386 | void LLFloaterTopObjects::onRefresh(void* data) | 389 | void LLFloaterTopObjects::onRefresh(void* data) |
387 | { | 390 | { |
388 | U32 mode = STAT_REPORT_TOP_SCRIPTS; | 391 | U32 mode = STAT_REPORT_TOP_SCRIPTS; |
@@ -397,8 +400,6 @@ void LLFloaterTopObjects::onRefresh(void* data) | |||
397 | sInstance->clearList(); | 400 | sInstance->clearList(); |
398 | } | 401 | } |
399 | 402 | ||
400 | sInstance->mtotalScore = 0.f; | ||
401 | |||
402 | LLMessageSystem *msg = gMessageSystem; | 403 | LLMessageSystem *msg = gMessageSystem; |
403 | msg->newMessageFast(_PREHASH_LandStatRequest); | 404 | msg->newMessageFast(_PREHASH_LandStatRequest); |
404 | msg->nextBlockFast(_PREHASH_AgentData); | 405 | msg->nextBlockFast(_PREHASH_AgentData); |
diff --git a/linden/indra/newview/llfloatertopobjects.h b/linden/indra/newview/llfloatertopobjects.h index 3d8a1e6..b539ebc 100644 --- a/linden/indra/newview/llfloatertopobjects.h +++ b/linden/indra/newview/llfloatertopobjects.h | |||
@@ -44,7 +44,7 @@ public: | |||
44 | static void handle_land_reply(LLMessageSystem* msg, void** data); | 44 | static void handle_land_reply(LLMessageSystem* msg, void** data); |
45 | void handleReply(LLMessageSystem* msg, void** data); | 45 | void handleReply(LLMessageSystem* msg, void** data); |
46 | 46 | ||
47 | void clearList(); | 47 | static void clearList(); |
48 | void updateSelectionInfo(); | 48 | void updateSelectionInfo(); |
49 | virtual BOOL postBuild(); | 49 | virtual BOOL postBuild(); |
50 | 50 | ||
diff --git a/linden/indra/newview/llimpanel.h b/linden/indra/newview/llimpanel.h index 00b7033..10d387e 100644 --- a/linden/indra/newview/llimpanel.h +++ b/linden/indra/newview/llimpanel.h | |||
@@ -98,7 +98,7 @@ public: | |||
98 | 98 | ||
99 | const LLUUID& getSessionID() const { return mSessionUUID; } | 99 | const LLUUID& getSessionID() const { return mSessionUUID; } |
100 | const LLUUID& getOtherParticipantID() const { return mOtherParticipantUUID; } | 100 | const LLUUID& getOtherParticipantID() const { return mOtherParticipantUUID; } |
101 | const EInstantMessage getDialogType() const { return mDialog; } | 101 | EInstantMessage getDialogType() const { return mDialog; } |
102 | 102 | ||
103 | void sessionInitReplyReceived(const LLUUID& im_session_id); | 103 | void sessionInitReplyReceived(const LLUUID& im_session_id); |
104 | 104 | ||
diff --git a/linden/indra/newview/llpanelcontents.cpp b/linden/indra/newview/llpanelcontents.cpp index 4d138d4..73c1cac 100644 --- a/linden/indra/newview/llpanelcontents.cpp +++ b/linden/indra/newview/llpanelcontents.cpp | |||
@@ -56,7 +56,6 @@ | |||
56 | #include "llviewerobject.h" | 56 | #include "llviewerobject.h" |
57 | #include "llviewerregion.h" | 57 | #include "llviewerregion.h" |
58 | #include "llresmgr.h" | 58 | #include "llresmgr.h" |
59 | #include "lltexturetable.h" | ||
60 | #include "llselectmgr.h" | 59 | #include "llselectmgr.h" |
61 | #include "llpreviewscript.h" | 60 | #include "llpreviewscript.h" |
62 | #include "lltool.h" | 61 | #include "lltool.h" |
diff --git a/linden/indra/newview/llpaneldisplay.cpp b/linden/indra/newview/llpaneldisplay.cpp index d79dcb4..c4fa1dc 100644 --- a/linden/indra/newview/llpaneldisplay.cpp +++ b/linden/indra/newview/llpaneldisplay.cpp | |||
@@ -520,6 +520,7 @@ void LLPanelDisplay2::refreshEnabledState() | |||
520 | 520 | ||
521 | void LLPanelDisplay2::apply() | 521 | void LLPanelDisplay2::apply() |
522 | { | 522 | { |
523 | |||
523 | // Anisotropic rendering | 524 | // Anisotropic rendering |
524 | BOOL old_anisotropic = LLImageGL::sGlobalUseAnisotropic; | 525 | BOOL old_anisotropic = LLImageGL::sGlobalUseAnisotropic; |
525 | LLImageGL::sGlobalUseAnisotropic = childGetValue("ani"); | 526 | LLImageGL::sGlobalUseAnisotropic = childGetValue("ani"); |
diff --git a/linden/indra/newview/llpanelface.cpp b/linden/indra/newview/llpanelface.cpp index 9cbfdc2..b48d8c7 100644 --- a/linden/indra/newview/llpanelface.cpp +++ b/linden/indra/newview/llpanelface.cpp | |||
@@ -51,7 +51,6 @@ | |||
51 | #include "lltextbox.h" | 51 | #include "lltextbox.h" |
52 | #include "lltexturectrl.h" | 52 | #include "lltexturectrl.h" |
53 | #include "lltextureentry.h" | 53 | #include "lltextureentry.h" |
54 | #include "lltexturetable.h" | ||
55 | #include "lltooldraganddrop.h" | 54 | #include "lltooldraganddrop.h" |
56 | #include "llui.h" | 55 | #include "llui.h" |
57 | #include "llviewercontrol.h" | 56 | #include "llviewercontrol.h" |
diff --git a/linden/indra/newview/llpanellogin.cpp b/linden/indra/newview/llpanellogin.cpp index 5f31216..fdc431c 100644 --- a/linden/indra/newview/llpanellogin.cpp +++ b/linden/indra/newview/llpanellogin.cpp | |||
@@ -220,7 +220,8 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect, | |||
220 | text->setClickedCallback(onClickVersion); | 220 | text->setClickedCallback(onClickVersion); |
221 | text->setCallbackUserData(this); | 221 | text->setCallbackUserData(this); |
222 | 222 | ||
223 | // HACK | 223 | // HACK to move to the lower-right of the window |
224 | // replace/remove this logic when we have dynamic layouts | ||
224 | S32 right = getRect().mRight; | 225 | S32 right = getRect().mRight; |
225 | LLRect r = text->getRect(); | 226 | LLRect r = text->getRect(); |
226 | const S32 PAD = 2; | 227 | const S32 PAD = 2; |
@@ -229,6 +230,31 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect, | |||
229 | text->setRect(r); | 230 | text->setRect(r); |
230 | } | 231 | } |
231 | 232 | ||
233 | LLTextBox* channel_text = LLUICtrlFactory::getTextBoxByName(this, "channel_text"); | ||
234 | if (channel_text) | ||
235 | { | ||
236 | channel_text->setText(gChannelName); | ||
237 | channel_text->setClickedCallback(onClickVersion); | ||
238 | channel_text->setCallbackUserData(this); | ||
239 | |||
240 | // HACK to move to the right of the window, above the version string, | ||
241 | // replace/remove this logic when we have dynamic layouts | ||
242 | S32 right = getRect().mRight; | ||
243 | LLRect r = channel_text->getRect(); | ||
244 | const S32 PAD = 2; | ||
245 | S32 version_string_top = r.mTop; | ||
246 | if(text) | ||
247 | { | ||
248 | version_string_top = text->getRect().mTop; | ||
249 | } | ||
250 | r.setOriginAndSize( | ||
251 | right - r.getWidth() - PAD, | ||
252 | version_string_top, | ||
253 | r.getWidth(), | ||
254 | r.getHeight()); | ||
255 | channel_text->setRect(r); | ||
256 | } | ||
257 | |||
232 | // get the web browser control | 258 | // get the web browser control |
233 | #if LL_LIBXUL_ENABLED | 259 | #if LL_LIBXUL_ENABLED |
234 | LLWebBrowserCtrl* web_browser = LLUICtrlFactory::getWebBrowserCtrlByName(this, "login_html"); | 260 | LLWebBrowserCtrl* web_browser = LLUICtrlFactory::getWebBrowserCtrlByName(this, "login_html"); |
diff --git a/linden/indra/newview/llpolymesh.h b/linden/indra/newview/llpolymesh.h index 9634dbf..a421e05 100644 --- a/linden/indra/newview/llpolymesh.h +++ b/linden/indra/newview/llpolymesh.h | |||
@@ -360,7 +360,8 @@ protected: | |||
360 | typedef LLAssocList<std::string, LLPolyMeshSharedData*> LLPolyMeshSharedDataTable; | 360 | typedef LLAssocList<std::string, LLPolyMeshSharedData*> LLPolyMeshSharedDataTable; |
361 | static LLPolyMeshSharedDataTable sGlobalSharedMeshList; | 361 | static LLPolyMeshSharedDataTable sGlobalSharedMeshList; |
362 | 362 | ||
363 | LLPointer<LLVOAvatar> mAvatarp; | 363 | // Backlink only; don't make this an LLPointer. |
364 | LLVOAvatar* mAvatarp; | ||
364 | }; | 365 | }; |
365 | 366 | ||
366 | //----------------------------------------------------------------------------- | 367 | //----------------------------------------------------------------------------- |
@@ -426,7 +427,8 @@ protected: | |||
426 | joint_vec_map_t mJointScales; | 427 | joint_vec_map_t mJointScales; |
427 | joint_vec_map_t mJointOffsets; | 428 | joint_vec_map_t mJointOffsets; |
428 | LLVector3 mDefaultVec; | 429 | LLVector3 mDefaultVec; |
429 | LLPointer<LLVOAvatar> mAvatar; | 430 | // Backlink only; don't make this an LLPointer. |
431 | LLVOAvatar *mAvatar; | ||
430 | }; | 432 | }; |
431 | 433 | ||
432 | #endif // LL_LLPOLYMESH_H | 434 | #endif // LL_LLPOLYMESH_H |
diff --git a/linden/indra/newview/llprogressview.cpp b/linden/indra/newview/llprogressview.cpp index 71a1d66..2ec8dcd 100644 --- a/linden/indra/newview/llprogressview.cpp +++ b/linden/indra/newview/llprogressview.cpp | |||
@@ -124,7 +124,7 @@ BOOL LLProgressView::handleKeyHere(KEY key, MASK mask, BOOL called_from_parent) | |||
124 | // Suck up all keystokes except CTRL-Q. | 124 | // Suck up all keystokes except CTRL-Q. |
125 | if( ('Q' == key) && (MASK_CONTROL == mask) ) | 125 | if( ('Q' == key) && (MASK_CONTROL == mask) ) |
126 | { | 126 | { |
127 | app_request_quit(); | 127 | app_user_quit(); |
128 | } | 128 | } |
129 | return TRUE; | 129 | return TRUE; |
130 | } | 130 | } |
diff --git a/linden/indra/newview/llsrv.cpp b/linden/indra/newview/llsrv.cpp index 4dec48d..5a623bc 100644 --- a/linden/indra/newview/llsrv.cpp +++ b/linden/indra/newview/llsrv.cpp | |||
@@ -73,49 +73,37 @@ vector<LLSRVRecord> LLSRV::query(const string& name) | |||
73 | 73 | ||
74 | #include <netdb.h> | 74 | #include <netdb.h> |
75 | 75 | ||
76 | vector<LLSRVRecord> LLSRV::query(const string& queryName) | 76 | #ifdef HOMEGROWN_RESPONSE_PARSER |
77 | |||
78 | // We ought to be using libresolv's ns_initparse and ns_parserr to | ||
79 | // parse the result of our query. However, libresolv isn't packaged | ||
80 | // correctly on Linux (as of BIND 9), so neither of these functions is | ||
81 | // available without statically linking against libresolv. Ugh! This | ||
82 | // fallback function is available if we need to parse the response | ||
83 | // ourselves without relying too much on libresolv. It is NOT THE | ||
84 | // DEFAULT. | ||
85 | |||
86 | vector<LLSRVRecord> LLSRV::parseResponse(const unsigned char *response, | ||
87 | int resp_len) | ||
77 | { | 88 | { |
78 | unsigned char response[16384]; | ||
79 | vector<LLSRVRecord> recs; | 89 | vector<LLSRVRecord> recs; |
80 | char name[1024]; | ||
81 | int len; | ||
82 | |||
83 | len = res_query(queryName.c_str(), ns_c_in, ns_t_srv, response, | ||
84 | sizeof(response)); | ||
85 | |||
86 | if (len == -1) | ||
87 | { | ||
88 | llinfos << "Query failed for " << queryName << llendl; | ||
89 | return recs; | ||
90 | } | ||
91 | else if (len > (int) sizeof(response)) | ||
92 | { | ||
93 | llinfos << "Response too big for " << queryName | ||
94 | << " (capacity " << sizeof(response) | ||
95 | << ", response " << len << ")" << llendl; | ||
96 | return recs; | ||
97 | } | ||
98 | |||
99 | // We "should" be using libresolv's ns_initparse and ns_parserr to | ||
100 | // parse the result of our query. However, libresolv isn't | ||
101 | // packaged correctly on Linux (as of BIND 9), so neither of these | ||
102 | // functions is available without statically linking against | ||
103 | // libresolv. Ugh! So we parse the response ourselves. | ||
104 | 90 | ||
105 | const unsigned char *pos = response + sizeof(HEADER); | 91 | const unsigned char *pos = response + sizeof(HEADER); |
106 | const unsigned char *end = response + len; | 92 | const unsigned char *end = response + resp_len; |
107 | const HEADER *hdr = (const HEADER *) response; | 93 | const HEADER *hdr = (const HEADER *) response; |
94 | char name[1024]; | ||
108 | 95 | ||
109 | // Skip over the query embedded in the response. | 96 | // Skip over the query embedded in the response. |
110 | 97 | ||
111 | for (int q = ntohs(hdr->qdcount); q > 0; --q) | 98 | for (int q = ntohs(hdr->qdcount); q > 0; --q) |
112 | { | 99 | { |
113 | len = dn_expand(response, end, pos, name, sizeof(name)); | 100 | int len = dn_expand(response, end, pos, name, sizeof(name)); |
114 | 101 | ||
115 | if (len == -1) | 102 | if (len == -1) |
116 | { | 103 | { |
117 | llinfos << "Could not expand queried name in RR response" << llendl; | 104 | llinfos << "Could not expand queried name in RR response" |
118 | return recs; | 105 | << llendl; |
106 | goto bail; | ||
119 | } | 107 | } |
120 | 108 | ||
121 | pos += len + NS_QFIXEDSZ; | 109 | pos += len + NS_QFIXEDSZ; |
@@ -125,11 +113,12 @@ vector<LLSRVRecord> LLSRV::query(const string& queryName) | |||
125 | { | 113 | { |
126 | static const ns_rr *rr; | 114 | static const ns_rr *rr; |
127 | 115 | ||
128 | len = dn_expand(response, end, pos, name, sizeof(name) - 1); | 116 | int len = dn_expand(response, end, pos, name, sizeof(name) - 1); |
129 | if (len == -1) | 117 | if (len == -1) |
130 | { | 118 | { |
131 | llinfos << "Could not expand response name in RR response" << llendl; | 119 | llinfos << "Could not expand response name in RR response" |
132 | return recs; | 120 | << llendl; |
121 | goto bail; | ||
133 | } | 122 | } |
134 | 123 | ||
135 | // Skip over the resource name and headers we don't care about. | 124 | // Skip over the resource name and headers we don't care about. |
@@ -150,7 +139,7 @@ vector<LLSRVRecord> LLSRV::query(const string& queryName) | |||
150 | if (len == -1) | 139 | if (len == -1) |
151 | { | 140 | { |
152 | llinfos << "Could not expand name in RR response" << llendl; | 141 | llinfos << "Could not expand name in RR response" << llendl; |
153 | return recs; | 142 | goto bail; |
154 | } | 143 | } |
155 | 144 | ||
156 | recs.push_back(LLSRVRecord(prio, weight, name, port)); | 145 | recs.push_back(LLSRVRecord(prio, weight, name, port)); |
@@ -158,12 +147,177 @@ vector<LLSRVRecord> LLSRV::query(const string& queryName) | |||
158 | 147 | ||
159 | // There are likely to be more records in the response, but we | 148 | // There are likely to be more records in the response, but we |
160 | // don't care about those, at least for now. | 149 | // don't care about those, at least for now. |
150 | bail: | ||
151 | return reorder(recs); | ||
152 | } | ||
161 | 153 | ||
162 | return recs; | 154 | #else // HOMEGROWN_RESPONSE_PARSER |
155 | |||
156 | // This version of the response parser is the one to use if libresolv | ||
157 | // is available and behaving itself. | ||
158 | |||
159 | vector<LLSRVRecord> LLSRV::parseResponse(const unsigned char *response, | ||
160 | int resp_len) | ||
161 | { | ||
162 | vector<LLSRVRecord> recs; | ||
163 | ns_msg hdr; | ||
164 | |||
165 | if (ns_initparse(response, resp_len, &hdr)) | ||
166 | { | ||
167 | llinfos << "Could not parse response" << llendl; | ||
168 | goto bail; | ||
169 | } | ||
170 | |||
171 | for (int i = 0; i < ns_msg_count(hdr, ns_s_an); i++) | ||
172 | { | ||
173 | ns_rr rr; | ||
174 | |||
175 | if (ns_parserr(&hdr, ns_s_an, i, &rr)) | ||
176 | { | ||
177 | llinfos << "Could not parse RR" << llendl; | ||
178 | goto bail; | ||
179 | } | ||
180 | |||
181 | if (ns_rr_type(rr) != ns_t_srv) | ||
182 | { | ||
183 | continue; | ||
184 | } | ||
185 | |||
186 | const unsigned char *pos = ns_rr_rdata(rr); | ||
187 | U16 prio, weight, port; | ||
188 | char name[1024]; | ||
189 | int ret; | ||
190 | |||
191 | NS_GET16(prio, pos); | ||
192 | NS_GET16(weight, pos); | ||
193 | NS_GET16(port, pos); | ||
194 | |||
195 | ret = dn_expand(ns_msg_base(hdr), ns_msg_end(hdr), pos, | ||
196 | name, sizeof(name)); | ||
197 | |||
198 | if (ret == -1) | ||
199 | { | ||
200 | llinfos << "Could not decompress name" << llendl; | ||
201 | goto bail; | ||
202 | } | ||
203 | |||
204 | recs.push_back(LLSRVRecord(prio, weight, name, port)); | ||
205 | } | ||
206 | |||
207 | bail: | ||
208 | return reorder(recs); | ||
209 | } | ||
210 | |||
211 | #endif // HOMEGROWN_RESPONSE_PARSER | ||
212 | |||
213 | vector<LLSRVRecord> LLSRV::query(const string& queryName) | ||
214 | { | ||
215 | unsigned char response[16384]; | ||
216 | vector<LLSRVRecord> recs; | ||
217 | int len; | ||
218 | |||
219 | len = res_query(queryName.c_str(), ns_c_in, ns_t_srv, response, | ||
220 | sizeof(response)); | ||
221 | |||
222 | if (len == -1) | ||
223 | { | ||
224 | llinfos << "Query failed for " << queryName << llendl; | ||
225 | goto bail; | ||
226 | } | ||
227 | else if (len > (int) sizeof(response)) | ||
228 | { | ||
229 | llinfos << "Response too big for " << queryName | ||
230 | << " (capacity " << sizeof(response) | ||
231 | << ", response " << len << ")" << llendl; | ||
232 | goto bail; | ||
233 | } | ||
234 | |||
235 | recs = parseResponse(response, len); | ||
236 | bail: | ||
237 | return reorder(recs); | ||
163 | } | 238 | } |
164 | 239 | ||
165 | #endif // LL_WINDOWS | 240 | #endif // LL_WINDOWS |
166 | 241 | ||
242 | // Implement the algorithm specified in RFC 2782 for dealing with RRs | ||
243 | // of differing priorities and weights. | ||
244 | vector<LLSRVRecord> LLSRV::reorder(vector<LLSRVRecord>& recs) | ||
245 | { | ||
246 | typedef list<const LLSRVRecord *> reclist_t; | ||
247 | typedef map<U16, reclist_t> bucket_t; | ||
248 | vector<LLSRVRecord> newRecs; | ||
249 | bucket_t buckets; | ||
250 | |||
251 | // Don't rely on the DNS server to shuffle responses. | ||
252 | |||
253 | random_shuffle(recs.begin(), recs.end()); | ||
254 | |||
255 | for (vector<LLSRVRecord>::const_iterator iter = recs.begin(); | ||
256 | iter != recs.end(); ++iter) | ||
257 | { | ||
258 | buckets[iter->priority()].push_back(&*iter); | ||
259 | } | ||
260 | |||
261 | // Priorities take precedence over weights. | ||
262 | |||
263 | for (bucket_t::iterator iter = buckets.begin(); | ||
264 | iter != buckets.end(); ++iter) | ||
265 | { | ||
266 | reclist_t& myPrio = iter->second; | ||
267 | reclist_t r; | ||
268 | |||
269 | // RRs with weight zero go to the front of the intermediate | ||
270 | // list, so they'll have little chance of being chosen. | ||
271 | // Larger weights have a higher likelihood of selection. | ||
272 | |||
273 | for (reclist_t::iterator i = myPrio.begin(); i != myPrio.end(); ) | ||
274 | { | ||
275 | if ((*i)->weight() == 0) | ||
276 | { | ||
277 | r.push_back(*i); | ||
278 | i = myPrio.erase(i); | ||
279 | } else { | ||
280 | ++i; | ||
281 | } | ||
282 | } | ||
283 | |||
284 | r.insert(r.end(), myPrio.begin(), myPrio.end()); | ||
285 | |||
286 | while (!r.empty()) | ||
287 | { | ||
288 | U32 total = 0; | ||
289 | |||
290 | for (reclist_t::const_iterator i = r.begin(); i != r.end(); ++i) | ||
291 | { | ||
292 | total += (*i)->weight(); | ||
293 | } | ||
294 | |||
295 | U32 target = total > 1 ? (rand() % total) : 0; | ||
296 | U32 partial = 0; | ||
297 | |||
298 | for (reclist_t::iterator i = r.begin(); i != r.end(); ) | ||
299 | { | ||
300 | partial += (*i)->weight(); | ||
301 | if (partial >= target) | ||
302 | { | ||
303 | newRecs.push_back(**i); | ||
304 | i = r.erase(i); | ||
305 | } else { | ||
306 | ++i; | ||
307 | } | ||
308 | } | ||
309 | } | ||
310 | } | ||
311 | |||
312 | // Order RRs by lowest numeric priority. The stable sort | ||
313 | // preserves the weight choices we made above. | ||
314 | |||
315 | stable_sort(newRecs.begin(), newRecs.end(), | ||
316 | LLSRVRecord::ComparePriorityLowest()); | ||
317 | |||
318 | return newRecs; | ||
319 | } | ||
320 | |||
167 | vector<string> LLSRV::rewriteURI(const string& uriStr) | 321 | vector<string> LLSRV::rewriteURI(const string& uriStr) |
168 | { | 322 | { |
169 | LLURI uri(uriStr); | 323 | LLURI uri(uriStr); |
@@ -186,6 +340,14 @@ vector<string> LLSRV::rewriteURI(const string& uriStr) | |||
186 | size_t i; | 340 | size_t i; |
187 | 341 | ||
188 | llinfos << "Got " << srvs.size() << " results" << llendl; | 342 | llinfos << "Got " << srvs.size() << " results" << llendl; |
343 | for (iter = srvs.begin(); iter != srvs.end(); ++iter) | ||
344 | { | ||
345 | lldebugs << "host " << iter->target() << ':' << iter->port() | ||
346 | << " prio " << iter->priority() | ||
347 | << " weight " << iter->weight() | ||
348 | << llendl; | ||
349 | } | ||
350 | |||
189 | if (srvs.size() > maxSrvs) | 351 | if (srvs.size() > maxSrvs) |
190 | { | 352 | { |
191 | llinfos << "Clamping to " << maxSrvs << llendl; | 353 | llinfos << "Clamping to " << maxSrvs << llendl; |
diff --git a/linden/indra/newview/llsrv.h b/linden/indra/newview/llsrv.h index fca646d..9417664 100644 --- a/linden/indra/newview/llsrv.h +++ b/linden/indra/newview/llsrv.h | |||
@@ -41,6 +41,7 @@ protected: | |||
41 | std::string mTarget; | 41 | std::string mTarget; |
42 | U16 mPort; | 42 | U16 mPort; |
43 | 43 | ||
44 | public: | ||
44 | LLSRVRecord(U16 priority, U16 weight, const std::string& target, | 45 | LLSRVRecord(U16 priority, U16 weight, const std::string& target, |
45 | U16 port) : | 46 | U16 port) : |
46 | mPriority(priority), | 47 | mPriority(priority), |
@@ -48,16 +49,30 @@ protected: | |||
48 | mTarget(target), | 49 | mTarget(target), |
49 | mPort(port) { | 50 | mPort(port) { |
50 | } | 51 | } |
51 | 52 | ||
52 | public: | ||
53 | U16 priority() const { return mPriority; } | 53 | U16 priority() const { return mPriority; } |
54 | U16 weight() const { return mWeight; } | 54 | U16 weight() const { return mWeight; } |
55 | const std::string& target() const { return mTarget; } | 55 | const std::string& target() const { return mTarget; } |
56 | U16 port() const { return mPort; } | 56 | U16 port() const { return mPort; } |
57 | |||
58 | struct ComparePriorityLowest | ||
59 | { | ||
60 | bool operator()(const LLSRVRecord& lhs, const LLSRVRecord& rhs) | ||
61 | { | ||
62 | return lhs.mPriority < rhs.mPriority; | ||
63 | } | ||
64 | }; | ||
57 | }; | 65 | }; |
58 | 66 | ||
59 | class LLSRV | 67 | class LLSRV |
60 | { | 68 | { |
69 | protected: | ||
70 | #ifndef LL_WINDOWS | ||
71 | static std::vector<LLSRVRecord> parseResponse(const unsigned char *response, | ||
72 | int resp_len); | ||
73 | #endif | ||
74 | static std::vector<LLSRVRecord> reorder(std::vector<LLSRVRecord>& recs); | ||
75 | |||
61 | public: | 76 | public: |
62 | static std::vector<LLSRVRecord> query(const std::string& name); | 77 | static std::vector<LLSRVRecord> query(const std::string& name); |
63 | static std::vector<std::string> rewriteURI(const std::string& uri); | 78 | static std::vector<std::string> rewriteURI(const std::string& uri); |
diff --git a/linden/indra/newview/llstatusbar.cpp b/linden/indra/newview/llstatusbar.cpp index 784765b..f0c6ea5 100644 --- a/linden/indra/newview/llstatusbar.cpp +++ b/linden/indra/newview/llstatusbar.cpp | |||
@@ -82,6 +82,7 @@ LLStatusBar *gStatusBar = NULL; | |||
82 | S32 STATUS_BAR_HEIGHT = 0; | 82 | S32 STATUS_BAR_HEIGHT = 0; |
83 | extern S32 MENU_BAR_HEIGHT; | 83 | extern S32 MENU_BAR_HEIGHT; |
84 | 84 | ||
85 | |||
85 | // TODO: these values ought to be in the XML too | 86 | // TODO: these values ought to be in the XML too |
86 | const S32 MENU_PARCEL_SPACING = 1; // Distance from right of menu item to parcel information | 87 | const S32 MENU_PARCEL_SPACING = 1; // Distance from right of menu item to parcel information |
87 | const S32 SIM_STAT_WIDTH = 8; | 88 | const S32 SIM_STAT_WIDTH = 8; |
@@ -95,6 +96,10 @@ const F32 ICON_FLASH_FREQUENCY = 2.f; | |||
95 | const S32 GRAPHIC_FUDGE = 4; | 96 | const S32 GRAPHIC_FUDGE = 4; |
96 | const S32 TEXT_HEIGHT = 18; | 97 | const S32 TEXT_HEIGHT = 18; |
97 | 98 | ||
99 | std::vector<std::string> LLStatusBar::sDays; | ||
100 | std::vector<std::string> LLStatusBar::sMonths; | ||
101 | const U32 LLStatusBar::MAX_DATE_STRING_LENGTH = 2000; | ||
102 | |||
98 | LLStatusBar::LLStatusBar(const std::string& name, const LLRect& rect) | 103 | LLStatusBar::LLStatusBar(const std::string& name, const LLRect& rect) |
99 | : LLPanel(name, LLRect(), FALSE), // not mouse opaque | 104 | : LLPanel(name, LLRect(), FALSE), // not mouse opaque |
100 | mBalance(0), | 105 | mBalance(0), |
@@ -106,6 +111,10 @@ LLStatusBar::LLStatusBar(const std::string& name, const LLRect& rect) | |||
106 | mMouseOpaque = FALSE; | 111 | mMouseOpaque = FALSE; |
107 | setIsChrome(TRUE); | 112 | setIsChrome(TRUE); |
108 | 113 | ||
114 | // size of day of the weeks and year | ||
115 | sDays.reserve(7); | ||
116 | sMonths.reserve(12); | ||
117 | |||
109 | mBalanceTimer = new LLFrameTimer(); | 118 | mBalanceTimer = new LLFrameTimer(); |
110 | mHealthTimer = new LLFrameTimer(); | 119 | mHealthTimer = new LLFrameTimer(); |
111 | 120 | ||
@@ -114,6 +123,9 @@ LLStatusBar::LLStatusBar(const std::string& name, const LLRect& rect) | |||
114 | // status bar can never get a tab | 123 | // status bar can never get a tab |
115 | setFocusRoot(FALSE); | 124 | setFocusRoot(FALSE); |
116 | 125 | ||
126 | // build date necessary data (must do after panel built) | ||
127 | setupDate(); | ||
128 | |||
117 | mBtnScriptOut = LLUICtrlFactory::getButtonByName( this, "scriptout" ); | 129 | mBtnScriptOut = LLUICtrlFactory::getButtonByName( this, "scriptout" ); |
118 | mBtnHealth = LLUICtrlFactory::getButtonByName( this, "health" ); | 130 | mBtnHealth = LLUICtrlFactory::getButtonByName( this, "health" ); |
119 | mBtnFly = LLUICtrlFactory::getButtonByName( this, "fly" ); | 131 | mBtnFly = LLUICtrlFactory::getButtonByName( this, "fly" ); |
@@ -128,7 +140,7 @@ LLStatusBar::LLStatusBar(const std::string& name, const LLRect& rect) | |||
128 | 140 | ||
129 | mTextHealth = LLUICtrlFactory::getTextBoxByName( this, "HealthText" ); | 141 | mTextHealth = LLUICtrlFactory::getTextBoxByName( this, "HealthText" ); |
130 | mTextTime = LLUICtrlFactory::getTextBoxByName( this, "TimeText" ); | 142 | mTextTime = LLUICtrlFactory::getTextBoxByName( this, "TimeText" ); |
131 | 143 | ||
132 | S32 x = mRect.getWidth() - 2; | 144 | S32 x = mRect.getWidth() - 2; |
133 | S32 y = 0; | 145 | S32 y = 0; |
134 | LLRect r; | 146 | LLRect r; |
@@ -265,6 +277,14 @@ void LLStatusBar::refresh() | |||
265 | << " " << am_pm << " " << tz; | 277 | << " " << am_pm << " " << tz; |
266 | mTextTime->setText(t.str().c_str()); | 278 | mTextTime->setText(t.str().c_str()); |
267 | 279 | ||
280 | // Year starts at 1900, set the tooltip to have the date | ||
281 | std::ostringstream date; | ||
282 | date << sDays[internal_time->tm_wday] << ", " | ||
283 | << std::setfill('0') << std::setw(2) << internal_time->tm_mday << " " | ||
284 | << sMonths[internal_time->tm_mon] << " " | ||
285 | << internal_time->tm_year + 1900; | ||
286 | mTextTime->setToolTip(date.str().c_str()); | ||
287 | |||
268 | LLRect r; | 288 | LLRect r; |
269 | const S32 MENU_RIGHT = gMenuBarView->getRightmostMenuEdge(); | 289 | const S32 MENU_RIGHT = gMenuBarView->getRightmostMenuEdge(); |
270 | S32 x = MENU_RIGHT + MENU_PARCEL_SPACING; | 290 | S32 x = MENU_RIGHT + MENU_PARCEL_SPACING; |
@@ -644,6 +664,69 @@ void LLStatusBar::onClickBuyLand(void*) | |||
644 | gParcelMgr->startBuyLand(); | 664 | gParcelMgr->startBuyLand(); |
645 | } | 665 | } |
646 | 666 | ||
667 | // sets the static variables necessary for the date | ||
668 | void LLStatusBar::setupDate() | ||
669 | { | ||
670 | // fill the day array with what's in the xui | ||
671 | LLString day_list = childGetText("StatBarDaysOfWeek"); | ||
672 | size_t length = day_list.size(); | ||
673 | |||
674 | // quick input check | ||
675 | if(length < MAX_DATE_STRING_LENGTH) | ||
676 | { | ||
677 | // tokenize it and put it in the array | ||
678 | LLString cur_word; | ||
679 | for(size_t i = 0; i < length; ++i) | ||
680 | { | ||
681 | if(day_list[i] == ':') | ||
682 | { | ||
683 | sDays.push_back(cur_word); | ||
684 | cur_word.clear(); | ||
685 | } | ||
686 | else | ||
687 | { | ||
688 | cur_word.append(1, day_list.c_str()[i]); | ||
689 | } | ||
690 | } | ||
691 | sDays.push_back(cur_word); | ||
692 | } | ||
693 | |||
694 | // fill the day array with what's in the xui | ||
695 | LLString month_list = childGetText( "StatBarMonthsOfYear" ); | ||
696 | length = month_list.size(); | ||
697 | |||
698 | // quick input check | ||
699 | if(length < MAX_DATE_STRING_LENGTH) | ||
700 | { | ||
701 | // tokenize it and put it in the array | ||
702 | LLString cur_word; | ||
703 | for(size_t i = 0; i < length; ++i) | ||
704 | { | ||
705 | if(month_list[i] == ':') | ||
706 | { | ||
707 | sMonths.push_back(cur_word); | ||
708 | cur_word.clear(); | ||
709 | } | ||
710 | else | ||
711 | { | ||
712 | cur_word.append(1, month_list.c_str()[i]); | ||
713 | } | ||
714 | } | ||
715 | sMonths.push_back(cur_word); | ||
716 | } | ||
717 | |||
718 | // make sure we have at least 7 days and 12 months | ||
719 | if(sDays.size() < 7) | ||
720 | { | ||
721 | sDays.resize(7); | ||
722 | } | ||
723 | |||
724 | if(sMonths.size() < 12) | ||
725 | { | ||
726 | sMonths.resize(12); | ||
727 | } | ||
728 | } | ||
729 | |||
647 | BOOL can_afford_transaction(S32 cost) | 730 | BOOL can_afford_transaction(S32 cost) |
648 | { | 731 | { |
649 | return((cost <= 0)||((gStatusBar) && (gStatusBar->getBalance() >=cost))); | 732 | return((cost <= 0)||((gStatusBar) && (gStatusBar->getBalance() >=cost))); |
diff --git a/linden/indra/newview/llstatusbar.h b/linden/indra/newview/llstatusbar.h index a072cd9..e08066b 100644 --- a/linden/indra/newview/llstatusbar.h +++ b/linden/indra/newview/llstatusbar.h | |||
@@ -93,6 +93,9 @@ protected: | |||
93 | static void onClickScripts(void*); | 93 | static void onClickScripts(void*); |
94 | static void onClickBuyLand(void*); | 94 | static void onClickBuyLand(void*); |
95 | static void onClickScriptDebug(void*); | 95 | static void onClickScriptDebug(void*); |
96 | |||
97 | // simple method to setup the part that holds the date | ||
98 | void setupDate(); | ||
96 | 99 | ||
97 | protected: | 100 | protected: |
98 | LLTextBox *mTextBalance; | 101 | LLTextBox *mTextBalance; |
@@ -121,6 +124,10 @@ protected: | |||
121 | S32 mSquareMetersCommitted; | 124 | S32 mSquareMetersCommitted; |
122 | LLFrameTimer* mBalanceTimer; | 125 | LLFrameTimer* mBalanceTimer; |
123 | LLFrameTimer* mHealthTimer; | 126 | LLFrameTimer* mHealthTimer; |
127 | |||
128 | static std::vector<std::string> sDays; | ||
129 | static std::vector<std::string> sMonths; | ||
130 | static const U32 LLStatusBar::MAX_DATE_STRING_LENGTH; | ||
124 | }; | 131 | }; |
125 | 132 | ||
126 | // *HACK: Status bar owns your cached money balance. JC | 133 | // *HACK: Status bar owns your cached money balance. JC |
diff --git a/linden/indra/newview/lltexlayer.cpp b/linden/indra/newview/lltexlayer.cpp index 26ee098..2005e39 100644 --- a/linden/indra/newview/lltexlayer.cpp +++ b/linden/indra/newview/lltexlayer.cpp | |||
@@ -2314,7 +2314,7 @@ LLColor4 LLTexParamColor::getNetColor() | |||
2314 | { | 2314 | { |
2315 | llassert( getInfo()->mNumColors >= 1 ); | 2315 | llassert( getInfo()->mNumColors >= 1 ); |
2316 | 2316 | ||
2317 | F32 effective_weight = ( mAvatar.notNull() && (mAvatar->getSex() & getSex()) ) ? mCurWeight : getDefaultWeight(); | 2317 | F32 effective_weight = ( mAvatar && (mAvatar->getSex() & getSex()) ) ? mCurWeight : getDefaultWeight(); |
2318 | 2318 | ||
2319 | S32 index_last = getInfo()->mNumColors - 1; | 2319 | S32 index_last = getInfo()->mNumColors - 1; |
2320 | F32 scaled_weight = effective_weight * index_last; | 2320 | F32 scaled_weight = effective_weight * index_last; |
diff --git a/linden/indra/newview/lltexlayer.h b/linden/indra/newview/lltexlayer.h index 920ae4a..7d517ee 100644 --- a/linden/indra/newview/lltexlayer.h +++ b/linden/indra/newview/lltexlayer.h | |||
@@ -286,7 +286,8 @@ protected: | |||
286 | typedef std::vector<LLTexLayer *> layer_list_t; | 286 | typedef std::vector<LLTexLayer *> layer_list_t; |
287 | layer_list_t mLayerList; | 287 | layer_list_t mLayerList; |
288 | LLTexLayerSetBuffer* mComposite; | 288 | LLTexLayerSetBuffer* mComposite; |
289 | LLPointer<LLVOAvatar> mAvatar; | 289 | // Backlink only; don't make this an LLPointer. |
290 | LLVOAvatar* mAvatar; | ||
290 | BOOL mUpdatesEnabled; | 291 | BOOL mUpdatesEnabled; |
291 | BOOL mHasBump; | 292 | BOOL mHasBump; |
292 | 293 | ||
@@ -443,7 +444,7 @@ public: | |||
443 | protected: | 444 | protected: |
444 | typedef std::vector<LLTexParamColor *> param_list_t; | 445 | typedef std::vector<LLTexParamColor *> param_list_t; |
445 | param_list_t mParamList; | 446 | param_list_t mParamList; |
446 | LLPointer<LLVOAvatar> mAvatar; | 447 | LLVOAvatar* mAvatar; // just backlink, don't LLPointer |
447 | 448 | ||
448 | LLTexGlobalColorInfo *mInfo; | 449 | LLTexGlobalColorInfo *mInfo; |
449 | }; | 450 | }; |
@@ -489,7 +490,7 @@ protected: | |||
489 | LLVector3 mAvgDistortionVec; | 490 | LLVector3 mAvgDistortionVec; |
490 | LLTexGlobalColor* mTexGlobalColor; // either has mTexGlobalColor or mTexLayer as its parent | 491 | LLTexGlobalColor* mTexGlobalColor; // either has mTexGlobalColor or mTexLayer as its parent |
491 | LLTexLayer* mTexLayer; | 492 | LLTexLayer* mTexLayer; |
492 | LLPointer<LLVOAvatar> mAvatar; // redundant, but simplifies the code | 493 | LLVOAvatar* mAvatar; // redundant, but simplifies the code (don't LLPointer) |
493 | }; | 494 | }; |
494 | 495 | ||
495 | //----------------------------------------------------------------------------- | 496 | //----------------------------------------------------------------------------- |
@@ -569,7 +570,7 @@ public: | |||
569 | ~LLBakedUploadData() {} | 570 | ~LLBakedUploadData() {} |
570 | 571 | ||
571 | LLUUID mID; | 572 | LLUUID mID; |
572 | LLPointer<LLVOAvatar> mAvatar; | 573 | LLVOAvatar* mAvatar; // just backlink, don't LLPointer |
573 | LLTexLayerSetBuffer* mLayerSetBuffer; | 574 | LLTexLayerSetBuffer* mLayerSetBuffer; |
574 | LLUUID mWearableAssets[WT_COUNT]; | 575 | LLUUID mWearableAssets[WT_COUNT]; |
575 | }; | 576 | }; |
diff --git a/linden/indra/newview/lltexturetable.cpp b/linden/indra/newview/lltexturetable.cpp deleted file mode 100644 index 52e4a46..0000000 --- a/linden/indra/newview/lltexturetable.cpp +++ /dev/null | |||
@@ -1,157 +0,0 @@ | |||
1 | /** | ||
2 | * @file lltexturetable.cpp | ||
3 | * @brief Table of texture names and IDs for viewer | ||
4 | * | ||
5 | * Copyright (c) 2001-2007, Linden Research, Inc. | ||
6 | * | ||
7 | * Second Life Viewer Source Code | ||
8 | * The source code in this file ("Source Code") is provided by Linden Lab | ||
9 | * to you under the terms of the GNU General Public License, version 2.0 | ||
10 | * ("GPL"), unless you have obtained a separate licensing agreement | ||
11 | * ("Other License"), formally executed by you and Linden Lab. Terms of | ||
12 | * the GPL can be found in doc/GPL-license.txt in this distribution, or | ||
13 | * online at http://secondlife.com/developers/opensource/gplv2 | ||
14 | * | ||
15 | * There are special exceptions to the terms and conditions of the GPL as | ||
16 | * it is applied to this Source Code. View the full text of the exception | ||
17 | * in the file doc/FLOSS-exception.txt in this software distribution, or | ||
18 | * online at http://secondlife.com/developers/opensource/flossexception | ||
19 | * | ||
20 | * By copying, modifying or distributing this software, you acknowledge | ||
21 | * that you have read and understood your obligations described above, | ||
22 | * and agree to abide by those obligations. | ||
23 | * | ||
24 | * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO | ||
25 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | ||
26 | * COMPLETENESS OR PERFORMANCE. | ||
27 | */ | ||
28 | |||
29 | #include "llviewerprecompiledheaders.h" | ||
30 | |||
31 | #include <string.h> | ||
32 | |||
33 | #include "lltexturetable.h" | ||
34 | #include "llstring.h" | ||
35 | |||
36 | LLTextureTable gTextureTable; | ||
37 | |||
38 | |||
39 | LLTextureInfo::LLTextureInfo(const std::string& name, const LLUUID &uuid, const std::string& description) | ||
40 | { | ||
41 | S32 length = name.size(); | ||
42 | if (length > 0) | ||
43 | { | ||
44 | mName = name; | ||
45 | } | ||
46 | else | ||
47 | { | ||
48 | char *temp = new char[UUID_STR_LENGTH]; | ||
49 | uuid.toString(temp); | ||
50 | mName = temp; | ||
51 | } | ||
52 | LLString::toLower(mName); | ||
53 | |||
54 | mUUID = uuid; | ||
55 | mDescription = description; | ||
56 | } | ||
57 | |||
58 | LLTextureInfo::~LLTextureInfo() | ||
59 | { | ||
60 | } | ||
61 | |||
62 | LLTextureTable::LLTextureTable() | ||
63 | { | ||
64 | mTextureInfoList.setInsertBefore(&LLTextureTable::insertBefore); | ||
65 | } | ||
66 | |||
67 | LLTextureTable::~LLTextureTable() | ||
68 | { | ||
69 | mTextureInfoList.deleteAllData(); | ||
70 | } | ||
71 | |||
72 | // Comparison function for sorting the list. | ||
73 | // static | ||
74 | BOOL LLTextureTable::insertBefore(LLTextureInfo* a, LLTextureInfo* b) | ||
75 | { | ||
76 | return (a->mName.compare(b->mName) < 0); | ||
77 | } | ||
78 | |||
79 | |||
80 | //void LLTextureTable::bubbleSort() | ||
81 | //{ | ||
82 | // mTextureInfoList.bubbleSortList(); | ||
83 | //} | ||
84 | |||
85 | BOOL LLTextureTable::add(const std::string& name, const LLUUID &uuid, const std::string& description) | ||
86 | { | ||
87 | LLTextureInfo *infop; | ||
88 | |||
89 | infop = new LLTextureInfo(name, uuid, description); | ||
90 | if (!infop) return FALSE; | ||
91 | |||
92 | mTextureInfoList.addDataSorted(infop); | ||
93 | |||
94 | return TRUE; | ||
95 | } | ||
96 | |||
97 | |||
98 | // *FIX: Since the table is sorted based on name, this could be vastly | ||
99 | // sped up by doing a binary search. | ||
100 | LLUUID LLTextureTable::getUUID(const std::string& name) | ||
101 | { | ||
102 | LLTextureInfo *infop; | ||
103 | |||
104 | for (infop = mTextureInfoList.getFirstData(); infop != NULL; infop = mTextureInfoList.getNextData() ) | ||
105 | { | ||
106 | LLString name_lc = name; | ||
107 | LLString::toLower(name_lc); | ||
108 | if (name_lc == infop->mName) | ||
109 | { | ||
110 | return infop->mUUID; | ||
111 | } | ||
112 | } | ||
113 | |||
114 | return LLUUID::null; | ||
115 | } | ||
116 | |||
117 | |||
118 | std::string LLTextureTable::getDesc(const std::string& name) | ||
119 | { | ||
120 | LLTextureInfo *infop; | ||
121 | |||
122 | for (infop = mTextureInfoList.getFirstData(); infop != NULL; infop = mTextureInfoList.getNextData() ) | ||
123 | { | ||
124 | LLString name_lc = name; | ||
125 | LLString::toLower(name_lc); | ||
126 | if (name_lc == infop->mName) | ||
127 | { | ||
128 | return infop->mDescription; | ||
129 | } | ||
130 | } | ||
131 | |||
132 | return LLString::null; | ||
133 | } | ||
134 | |||
135 | |||
136 | std::string LLTextureTable::getName(const LLUUID &id) | ||
137 | { | ||
138 | LLTextureInfo *infop; | ||
139 | |||
140 | for (infop = mTextureInfoList.getFirstData(); infop != NULL; infop = mTextureInfoList.getNextData() ) | ||
141 | { | ||
142 | if (id == infop->mUUID) | ||
143 | { | ||
144 | return infop->mName; | ||
145 | } | ||
146 | } | ||
147 | |||
148 | return LLString::null; | ||
149 | } | ||
150 | |||
151 | |||
152 | void LLTextureTable::deleteAll() | ||
153 | { | ||
154 | // Clear out the list | ||
155 | |||
156 | mTextureInfoList.deleteAllData(); | ||
157 | } | ||
diff --git a/linden/indra/newview/lltexturetable.h b/linden/indra/newview/lltexturetable.h deleted file mode 100644 index 85510b5..0000000 --- a/linden/indra/newview/lltexturetable.h +++ /dev/null | |||
@@ -1,70 +0,0 @@ | |||
1 | /** | ||
2 | * @file lltexturetable.h | ||
3 | * @brief Table of texture names and IDs for viewer | ||
4 | * | ||
5 | * Copyright (c) 2001-2007, Linden Research, Inc. | ||
6 | * | ||
7 | * Second Life Viewer Source Code | ||
8 | * The source code in this file ("Source Code") is provided by Linden Lab | ||
9 | * to you under the terms of the GNU General Public License, version 2.0 | ||
10 | * ("GPL"), unless you have obtained a separate licensing agreement | ||
11 | * ("Other License"), formally executed by you and Linden Lab. Terms of | ||
12 | * the GPL can be found in doc/GPL-license.txt in this distribution, or | ||
13 | * online at http://secondlife.com/developers/opensource/gplv2 | ||
14 | * | ||
15 | * There are special exceptions to the terms and conditions of the GPL as | ||
16 | * it is applied to this Source Code. View the full text of the exception | ||
17 | * in the file doc/FLOSS-exception.txt in this software distribution, or | ||
18 | * online at http://secondlife.com/developers/opensource/flossexception | ||
19 | * | ||
20 | * By copying, modifying or distributing this software, you acknowledge | ||
21 | * that you have read and understood your obligations described above, | ||
22 | * and agree to abide by those obligations. | ||
23 | * | ||
24 | * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO | ||
25 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | ||
26 | * COMPLETENESS OR PERFORMANCE. | ||
27 | */ | ||
28 | |||
29 | // Table of texture information for the viewer UI. The Table is | ||
30 | // maintained in a sorted order at all times. | ||
31 | |||
32 | #ifndef LL_LLTEXTURETABLE_H | ||
33 | #define LL_LLTEXTURETABLE_H | ||
34 | |||
35 | #include "lluuid.h" | ||
36 | #include "linked_lists.h" | ||
37 | |||
38 | class LLTextureInfo | ||
39 | { | ||
40 | public: | ||
41 | LLTextureInfo(const std::string& name, const LLUUID &uuid, const std::string& description); | ||
42 | ~LLTextureInfo(); | ||
43 | std::string mName; | ||
44 | LLUUID mUUID; | ||
45 | std::string mDescription; | ||
46 | }; | ||
47 | |||
48 | class LLTextureTable | ||
49 | { | ||
50 | public: | ||
51 | LLTextureTable(); | ||
52 | ~LLTextureTable(); | ||
53 | |||
54 | BOOL add(const std::string& name, const LLUUID &uuid, | ||
55 | const std::string& description); // copies memory, false if fails | ||
56 | LLUUID getUUID(const std::string& name); // LLUUID::null if not found | ||
57 | std::string getDesc(const std::string& name); | ||
58 | std::string getName(const LLUUID &id); | ||
59 | void deleteAll(); | ||
60 | //void bubbleSort(); | ||
61 | |||
62 | static BOOL insertBefore(LLTextureInfo* a, LLTextureInfo* b); | ||
63 | |||
64 | public: | ||
65 | LLLinkedList<LLTextureInfo> mTextureInfoList; | ||
66 | }; | ||
67 | |||
68 | extern LLTextureTable gTextureTable; | ||
69 | |||
70 | #endif | ||
diff --git a/linden/indra/newview/lltextureview.cpp b/linden/indra/newview/lltextureview.cpp index bd9b273..6a24a57 100644 --- a/linden/indra/newview/lltextureview.cpp +++ b/linden/indra/newview/lltextureview.cpp | |||
@@ -43,7 +43,6 @@ | |||
43 | #include "lltexlayer.h" | 43 | #include "lltexlayer.h" |
44 | #include "lltexturecache.h" | 44 | #include "lltexturecache.h" |
45 | #include "lltexturefetch.h" | 45 | #include "lltexturefetch.h" |
46 | #include "lltexturetable.h" | ||
47 | #include "llviewerobject.h" | 46 | #include "llviewerobject.h" |
48 | #include "llviewerimage.h" | 47 | #include "llviewerimage.h" |
49 | #include "llviewerimagelist.h" | 48 | #include "llviewerimagelist.h" |
@@ -183,9 +182,6 @@ void LLTextureBar::draw() | |||
183 | 182 | ||
184 | LLGLSUIDefault gls_ui; | 183 | LLGLSUIDefault gls_ui; |
185 | 184 | ||
186 | // Get the name or UUID of the image. | ||
187 | gTextureTable.getName(mImagep->mID); | ||
188 | |||
189 | // Name, pixel_area, requested pixel area, decode priority | 185 | // Name, pixel_area, requested pixel area, decode priority |
190 | char uuid_str[255]; | 186 | char uuid_str[255]; |
191 | mImagep->mID.toString(uuid_str); | 187 | mImagep->mID.toString(uuid_str); |
diff --git a/linden/indra/newview/llviewerimage.cpp b/linden/indra/newview/llviewerimage.cpp index b129a9a..e40fb80 100644 --- a/linden/indra/newview/llviewerimage.cpp +++ b/linden/indra/newview/llviewerimage.cpp | |||
@@ -43,7 +43,6 @@ | |||
43 | #include "llimagetga.h" | 43 | #include "llimagetga.h" |
44 | #include "llmemtype.h" | 44 | #include "llmemtype.h" |
45 | #include "llstl.h" | 45 | #include "llstl.h" |
46 | #include "lltexturetable.h" | ||
47 | #include "llvfile.h" | 46 | #include "llvfile.h" |
48 | #include "llvfs.h" | 47 | #include "llvfs.h" |
49 | #include "message.h" | 48 | #include "message.h" |
diff --git a/linden/indra/newview/llviewerimagelist.cpp b/linden/indra/newview/llviewerimagelist.cpp index fce719f..6616bc6 100644 --- a/linden/indra/newview/llviewerimagelist.cpp +++ b/linden/indra/newview/llviewerimagelist.cpp | |||
@@ -51,7 +51,6 @@ | |||
51 | #include "llagent.h" | 51 | #include "llagent.h" |
52 | #include "lltexturecache.h" | 52 | #include "lltexturecache.h" |
53 | #include "lltexturefetch.h" | 53 | #include "lltexturefetch.h" |
54 | #include "lltexturetable.h" // For looking up names from uuid's. | ||
55 | #include "llviewercontrol.h" | 54 | #include "llviewercontrol.h" |
56 | #include "llviewerimage.h" | 55 | #include "llviewerimage.h" |
57 | #include "llviewerregion.h" | 56 | #include "llviewerregion.h" |
diff --git a/linden/indra/newview/llviewerjointattachment.h b/linden/indra/newview/llviewerjointattachment.h index a8c2c71..ce2f8b9 100644 --- a/linden/indra/newview/llviewerjointattachment.h +++ b/linden/indra/newview/llviewerjointattachment.h | |||
@@ -79,7 +79,7 @@ public: | |||
79 | 79 | ||
80 | S32 getGroup() { return mGroup; } | 80 | S32 getGroup() { return mGroup; } |
81 | S32 getPieSlice() { return mPieSlice; } | 81 | S32 getPieSlice() { return mPieSlice; } |
82 | BOOL getAttachmentDirty() { return mAttachmentDirty && mAttachedObject.notNull(); } | 82 | BOOL getAttachmentDirty() { return mAttachmentDirty && mAttachedObject; } |
83 | LLViewerObject *getObject() { return mAttachedObject; } | 83 | LLViewerObject *getObject() { return mAttachedObject; } |
84 | S32 getNumObjects() { return (mAttachedObject ? 1 : 0); } | 84 | S32 getNumObjects() { return (mAttachedObject ? 1 : 0); } |
85 | const LLUUID& getItemID() { return mItemID; } | 85 | const LLUUID& getItemID() { return mItemID; } |
@@ -99,7 +99,8 @@ protected: | |||
99 | 99 | ||
100 | protected: | 100 | protected: |
101 | LLJoint* mJoint; | 101 | LLJoint* mJoint; |
102 | LLPointer<LLViewerObject> mAttachedObject; | 102 | // Backlink only; don't make this an LLPointer. |
103 | LLViewerObject* mAttachedObject; | ||
103 | BOOL mAttachmentDirty; // does attachment drawable need to be fixed up? | 104 | BOOL mAttachmentDirty; // does attachment drawable need to be fixed up? |
104 | BOOL mVisibleInFirst; | 105 | BOOL mVisibleInFirst; |
105 | LLVector3 mOriginalPos; | 106 | LLVector3 mOriginalPos; |
diff --git a/linden/indra/newview/llviewerjointmesh.cpp b/linden/indra/newview/llviewerjointmesh.cpp index c76990c..642fa7b 100644 --- a/linden/indra/newview/llviewerjointmesh.cpp +++ b/linden/indra/newview/llviewerjointmesh.cpp | |||
@@ -31,14 +31,11 @@ | |||
31 | //----------------------------------------------------------------------------- | 31 | //----------------------------------------------------------------------------- |
32 | #include "llviewerprecompiledheaders.h" | 32 | #include "llviewerprecompiledheaders.h" |
33 | 33 | ||
34 | #if LL_WINDOWS // For Intel vector classes | ||
35 | #include "fvec.h" | ||
36 | #endif | ||
37 | |||
38 | #include "imageids.h" | 34 | #include "imageids.h" |
39 | #include "llfasttimer.h" | 35 | #include "llfasttimer.h" |
40 | 36 | ||
41 | #include "llagent.h" | 37 | #include "llagent.h" |
38 | #include "llapr.h" | ||
42 | #include "llbox.h" | 39 | #include "llbox.h" |
43 | #include "lldrawable.h" | 40 | #include "lldrawable.h" |
44 | #include "lldrawpoolavatar.h" | 41 | #include "lldrawpoolavatar.h" |
@@ -49,12 +46,18 @@ | |||
49 | #include "llglheaders.h" | 46 | #include "llglheaders.h" |
50 | #include "lltexlayer.h" | 47 | #include "lltexlayer.h" |
51 | #include "llviewercamera.h" | 48 | #include "llviewercamera.h" |
49 | #include "llviewercontrol.h" | ||
52 | #include "llviewerimagelist.h" | 50 | #include "llviewerimagelist.h" |
53 | #include "llviewerjointmesh.h" | 51 | #include "llviewerjointmesh.h" |
54 | #include "llvoavatar.h" | 52 | #include "llvoavatar.h" |
55 | #include "llsky.h" | 53 | #include "llsky.h" |
56 | #include "pipeline.h" | 54 | #include "pipeline.h" |
57 | #include "llglslshader.h" | 55 | #include "llglslshader.h" |
56 | #include "llmath.h" | ||
57 | #include "v4math.h" | ||
58 | #include "m3math.h" | ||
59 | #include "m4math.h" | ||
60 | |||
58 | 61 | ||
59 | #if !LL_DARWIN && !LL_LINUX | 62 | #if !LL_DARWIN && !LL_LINUX |
60 | extern PFNGLWEIGHTPOINTERARBPROC glWeightPointerARB; | 63 | extern PFNGLWEIGHTPOINTERARBPROC glWeightPointerARB; |
@@ -68,6 +71,7 @@ static const U32 sRenderMask = LLVertexBuffer::MAP_VERTEX | | |||
68 | LLVertexBuffer::MAP_NORMAL | | 71 | LLVertexBuffer::MAP_NORMAL | |
69 | LLVertexBuffer::MAP_TEXCOORD; | 72 | LLVertexBuffer::MAP_TEXCOORD; |
70 | 73 | ||
74 | |||
71 | //----------------------------------------------------------------------------- | 75 | //----------------------------------------------------------------------------- |
72 | //----------------------------------------------------------------------------- | 76 | //----------------------------------------------------------------------------- |
73 | // LLViewerJointMesh::LLSkinJoint | 77 | // LLViewerJointMesh::LLSkinJoint |
@@ -120,6 +124,7 @@ BOOL LLSkinJoint::setupSkinJoint( LLViewerJoint *joint) | |||
120 | return TRUE; | 124 | return TRUE; |
121 | } | 125 | } |
122 | 126 | ||
127 | |||
123 | //----------------------------------------------------------------------------- | 128 | //----------------------------------------------------------------------------- |
124 | //----------------------------------------------------------------------------- | 129 | //----------------------------------------------------------------------------- |
125 | // LLViewerJointMesh | 130 | // LLViewerJointMesh |
@@ -414,9 +419,9 @@ const S32 NUM_AXES = 3; | |||
414 | // rotation Z 0-n | 419 | // rotation Z 0-n |
415 | // pivot parent 0-n -- child = n+1 | 420 | // pivot parent 0-n -- child = n+1 |
416 | 421 | ||
417 | static LLMatrix4 gJointMat[32]; | 422 | static LLMatrix4 gJointMatUnaligned[32]; |
418 | static LLMatrix3 gJointRot[32]; | 423 | static LLMatrix3 gJointRotUnaligned[32]; |
419 | static LLVector4 gJointPivot[32]; | 424 | static LLVector4 gJointPivot[32]; |
420 | 425 | ||
421 | //----------------------------------------------------------------------------- | 426 | //----------------------------------------------------------------------------- |
422 | // uploadJointMatrices() | 427 | // uploadJointMatrices() |
@@ -437,8 +442,8 @@ void LLViewerJointMesh::uploadJointMatrices() | |||
437 | { | 442 | { |
438 | joint_mat *= LLDrawPoolAvatar::getModelView(); | 443 | joint_mat *= LLDrawPoolAvatar::getModelView(); |
439 | } | 444 | } |
440 | gJointMat[joint_num] = joint_mat; | 445 | gJointMatUnaligned[joint_num] = joint_mat; |
441 | gJointRot[joint_num] = joint_mat.getMat3(); | 446 | gJointRotUnaligned[joint_num] = joint_mat.getMat3(); |
442 | } | 447 | } |
443 | 448 | ||
444 | BOOL last_pivot_uploaded = FALSE; | 449 | BOOL last_pivot_uploaded = FALSE; |
@@ -475,8 +480,8 @@ void LLViewerJointMesh::uploadJointMatrices() | |||
475 | { | 480 | { |
476 | LLVector3 pivot; | 481 | LLVector3 pivot; |
477 | pivot = LLVector3(gJointPivot[i]); | 482 | pivot = LLVector3(gJointPivot[i]); |
478 | pivot = pivot * gJointRot[i]; | 483 | pivot = pivot * gJointRotUnaligned[i]; |
479 | gJointMat[i].translate(pivot); | 484 | gJointMatUnaligned[i].translate(pivot); |
480 | } | 485 | } |
481 | 486 | ||
482 | // upload matrices | 487 | // upload matrices |
@@ -487,11 +492,11 @@ void LLViewerJointMesh::uploadJointMatrices() | |||
487 | 492 | ||
488 | for (joint_num = 0; joint_num < reference_mesh->mJointRenderData.count(); joint_num++) | 493 | for (joint_num = 0; joint_num < reference_mesh->mJointRenderData.count(); joint_num++) |
489 | { | 494 | { |
490 | gJointMat[joint_num].transpose(); | 495 | gJointMatUnaligned[joint_num].transpose(); |
491 | 496 | ||
492 | for (S32 axis = 0; axis < NUM_AXES; axis++) | 497 | for (S32 axis = 0; axis < NUM_AXES; axis++) |
493 | { | 498 | { |
494 | F32* vector = gJointMat[joint_num].mMatrix[axis]; | 499 | F32* vector = gJointMatUnaligned[joint_num].mMatrix[axis]; |
495 | //glProgramLocalParameter4fvARB(GL_VERTEX_PROGRAM_ARB, LL_CHARACTER_MAX_JOINTS_PER_MESH * axis + joint_num+5, (GLfloat*)vector); | 500 | //glProgramLocalParameter4fvARB(GL_VERTEX_PROGRAM_ARB, LL_CHARACTER_MAX_JOINTS_PER_MESH * axis + joint_num+5, (GLfloat*)vector); |
496 | U32 offset = LL_CHARACTER_MAX_JOINTS_PER_MESH*axis+joint_num; | 501 | U32 offset = LL_CHARACTER_MAX_JOINTS_PER_MESH*axis+joint_num; |
497 | memcpy(mat+offset*4, vector, sizeof(GLfloat)*4); | 502 | memcpy(mat+offset*4, vector, sizeof(GLfloat)*4); |
@@ -903,21 +908,9 @@ BOOL LLViewerJointMesh::updateLOD(F32 pixel_area, BOOL activate) | |||
903 | return (valid != activate); | 908 | return (valid != activate); |
904 | } | 909 | } |
905 | 910 | ||
906 | 911 | // static | |
907 | void LLViewerJointMesh::updateGeometry() | 912 | void LLViewerJointMesh::updateGeometryOriginal(LLFace *mFace, LLPolyMesh *mMesh) |
908 | { | 913 | { |
909 | if (!(mValid | ||
910 | && mMesh | ||
911 | && mFace | ||
912 | && mMesh->hasWeights() | ||
913 | && mFace->mVertexBuffer.notNull() | ||
914 | && LLShaderMgr::getVertexShaderLevel(LLShaderMgr::SHADER_AVATAR) == 0)) | ||
915 | { | ||
916 | return; | ||
917 | } | ||
918 | |||
919 | uploadJointMatrices(); | ||
920 | |||
921 | LLStrider<LLVector3> o_vertices; | 914 | LLStrider<LLVector3> o_vertices; |
922 | LLStrider<LLVector3> o_normals; | 915 | LLStrider<LLVector3> o_normals; |
923 | 916 | ||
@@ -958,9 +951,9 @@ void LLViewerJointMesh::updateGeometry() | |||
958 | // No lerp required in this case. | 951 | // No lerp required in this case. |
959 | if (w == 1.0f) | 952 | if (w == 1.0f) |
960 | { | 953 | { |
961 | gBlendMat = gJointMat[joint+1]; | 954 | gBlendMat = gJointMatUnaligned[joint+1]; |
962 | o_vertices[bidx] = coords[index] * gBlendMat; | 955 | o_vertices[bidx] = coords[index] * gBlendMat; |
963 | gBlendRotMat = gJointRot[joint+1]; | 956 | gBlendRotMat = gJointRotUnaligned[joint+1]; |
964 | o_normals[bidx] = normals[index] * gBlendRotMat; | 957 | o_normals[bidx] = normals[index] * gBlendRotMat; |
965 | continue; | 958 | continue; |
966 | } | 959 | } |
@@ -968,8 +961,8 @@ void LLViewerJointMesh::updateGeometry() | |||
968 | // Try to keep all the accesses to the matrix data as close | 961 | // Try to keep all the accesses to the matrix data as close |
969 | // together as possible. This function is a hot spot on the | 962 | // together as possible. This function is a hot spot on the |
970 | // Mac. JC | 963 | // Mac. JC |
971 | LLMatrix4 &m0 = gJointMat[joint+1]; | 964 | LLMatrix4 &m0 = gJointMatUnaligned[joint+1]; |
972 | LLMatrix4 &m1 = gJointMat[joint+0]; | 965 | LLMatrix4 &m1 = gJointMatUnaligned[joint+0]; |
973 | 966 | ||
974 | gBlendMat.mMatrix[VX][VX] = lerp(m1.mMatrix[VX][VX], m0.mMatrix[VX][VX], w); | 967 | gBlendMat.mMatrix[VX][VX] = lerp(m1.mMatrix[VX][VX], m0.mMatrix[VX][VX], w); |
975 | gBlendMat.mMatrix[VX][VY] = lerp(m1.mMatrix[VX][VY], m0.mMatrix[VX][VY], w); | 968 | gBlendMat.mMatrix[VX][VY] = lerp(m1.mMatrix[VX][VY], m0.mMatrix[VX][VY], w); |
@@ -989,8 +982,8 @@ void LLViewerJointMesh::updateGeometry() | |||
989 | 982 | ||
990 | o_vertices[bidx] = coords[index] * gBlendMat; | 983 | o_vertices[bidx] = coords[index] * gBlendMat; |
991 | 984 | ||
992 | LLMatrix3 &n0 = gJointRot[joint+1]; | 985 | LLMatrix3 &n0 = gJointRotUnaligned[joint+1]; |
993 | LLMatrix3 &n1 = gJointRot[joint+0]; | 986 | LLMatrix3 &n1 = gJointRotUnaligned[joint+0]; |
994 | 987 | ||
995 | gBlendRotMat.mMatrix[VX][VX] = lerp(n1.mMatrix[VX][VX], n0.mMatrix[VX][VX], w); | 988 | gBlendRotMat.mMatrix[VX][VX] = lerp(n1.mMatrix[VX][VX], n0.mMatrix[VX][VX], w); |
996 | gBlendRotMat.mMatrix[VX][VY] = lerp(n1.mMatrix[VX][VY], n0.mMatrix[VX][VY], w); | 989 | gBlendRotMat.mMatrix[VX][VY] = lerp(n1.mMatrix[VX][VY], n0.mMatrix[VX][VY], w); |
@@ -1008,6 +1001,161 @@ void LLViewerJointMesh::updateGeometry() | |||
1008 | } | 1001 | } |
1009 | } | 1002 | } |
1010 | 1003 | ||
1004 | const U32 UPDATE_GEOMETRY_CALL_MASK = 0x1FFF; // 8K samples before overflow | ||
1005 | const U32 UPDATE_GEOMETRY_CALL_OVERFLOW = ~UPDATE_GEOMETRY_CALL_MASK; | ||
1006 | static bool sUpdateGeometryCallPointer = false; | ||
1007 | static F64 sUpdateGeometryGlobalTime = 0.0 ; | ||
1008 | static F64 sUpdateGeometryElapsedTime = 0.0 ; | ||
1009 | static F64 sUpdateGeometryElapsedTimeOff = 0.0 ; | ||
1010 | static F64 sUpdateGeometryElapsedTimeOn = 0.0 ; | ||
1011 | static F64 sUpdateGeometryRunAvgOff[10]; | ||
1012 | static F64 sUpdateGeometryRunAvgOn[10]; | ||
1013 | static U32 sUpdateGeometryRunCount = 0 ; | ||
1014 | static U32 sUpdateGeometryCalls = 0 ; | ||
1015 | static U32 sUpdateGeometryLastProcessor = 0 ; | ||
1016 | void (*LLViewerJointMesh::sUpdateGeometryFunc)(LLFace* face, LLPolyMesh* mesh); | ||
1017 | |||
1018 | void LLViewerJointMesh::updateGeometry() | ||
1019 | { | ||
1020 | extern BOOL gVectorizePerfTest; | ||
1021 | extern U32 gVectorizeProcessor; | ||
1022 | |||
1023 | if (!(mValid | ||
1024 | && mMesh | ||
1025 | && mFace | ||
1026 | && mMesh->hasWeights() | ||
1027 | && mFace->mVertexBuffer.notNull() | ||
1028 | && LLShaderMgr::getVertexShaderLevel(LLShaderMgr::SHADER_AVATAR) == 0)) | ||
1029 | { | ||
1030 | return; | ||
1031 | } | ||
1032 | |||
1033 | if (!gVectorizePerfTest) | ||
1034 | { | ||
1035 | // Once we've measured performance, just run the specified | ||
1036 | // code version. | ||
1037 | if(sUpdateGeometryFunc == updateGeometryOriginal) | ||
1038 | uploadJointMatrices(); | ||
1039 | sUpdateGeometryFunc(mFace, mMesh); | ||
1040 | } | ||
1041 | else | ||
1042 | { | ||
1043 | // At startup, measure the amount of time in skinning and choose | ||
1044 | // the fastest one. | ||
1045 | LLTimer ug_timer ; | ||
1046 | |||
1047 | if (sUpdateGeometryCallPointer) | ||
1048 | { | ||
1049 | if(sUpdateGeometryFunc == updateGeometryOriginal) | ||
1050 | uploadJointMatrices(); | ||
1051 | // call accelerated version for this processor | ||
1052 | sUpdateGeometryFunc(mFace, mMesh); | ||
1053 | } | ||
1054 | else | ||
1055 | { | ||
1056 | uploadJointMatrices(); | ||
1057 | updateGeometryOriginal(mFace, mMesh); | ||
1058 | } | ||
1059 | |||
1060 | sUpdateGeometryElapsedTime += ug_timer.getElapsedTimeF64(); | ||
1061 | ++sUpdateGeometryCalls; | ||
1062 | if(0 != (sUpdateGeometryCalls & UPDATE_GEOMETRY_CALL_OVERFLOW)) | ||
1063 | { | ||
1064 | F64 time_since_app_start = ug_timer.getElapsedSeconds(); | ||
1065 | if(sUpdateGeometryGlobalTime == 0.0 | ||
1066 | || sUpdateGeometryLastProcessor != gVectorizeProcessor) | ||
1067 | { | ||
1068 | sUpdateGeometryGlobalTime = time_since_app_start; | ||
1069 | sUpdateGeometryElapsedTime = 0; | ||
1070 | sUpdateGeometryCalls = 0; | ||
1071 | sUpdateGeometryRunCount = 0; | ||
1072 | sUpdateGeometryLastProcessor = gVectorizeProcessor; | ||
1073 | sUpdateGeometryCallPointer = false; | ||
1074 | return; | ||
1075 | } | ||
1076 | F64 percent_time_in_function = | ||
1077 | ( sUpdateGeometryElapsedTime * 100.0 ) / ( time_since_app_start - sUpdateGeometryGlobalTime ) ; | ||
1078 | sUpdateGeometryGlobalTime = time_since_app_start; | ||
1079 | if (!sUpdateGeometryCallPointer) | ||
1080 | { | ||
1081 | // First set of run data is with vectorization off. | ||
1082 | sUpdateGeometryCallPointer = true; | ||
1083 | llinfos << "profile (avg of " << sUpdateGeometryCalls << " samples) = " | ||
1084 | << "vectorize off " << percent_time_in_function | ||
1085 | << "% of time with " | ||
1086 | << (sUpdateGeometryElapsedTime / (F64)sUpdateGeometryCalls) | ||
1087 | << " seconds per call " | ||
1088 | << llendl; | ||
1089 | sUpdateGeometryRunAvgOff[sUpdateGeometryRunCount] = percent_time_in_function; | ||
1090 | sUpdateGeometryElapsedTimeOff += sUpdateGeometryElapsedTime; | ||
1091 | sUpdateGeometryCalls = 0; | ||
1092 | } | ||
1093 | else | ||
1094 | { | ||
1095 | // Second set of run data is with vectorization on. | ||
1096 | sUpdateGeometryCallPointer = false; | ||
1097 | llinfos << "profile (avg of " << sUpdateGeometryCalls << " samples) = " | ||
1098 | << "VEC on " << percent_time_in_function | ||
1099 | << "% of time with " | ||
1100 | << (sUpdateGeometryElapsedTime / (F64)sUpdateGeometryCalls) | ||
1101 | << " seconds per call " | ||
1102 | << llendl; | ||
1103 | sUpdateGeometryRunAvgOn[sUpdateGeometryRunCount] = percent_time_in_function ; | ||
1104 | sUpdateGeometryElapsedTimeOn += sUpdateGeometryElapsedTime; | ||
1105 | |||
1106 | sUpdateGeometryCalls = 0; | ||
1107 | sUpdateGeometryRunCount++; | ||
1108 | F64 a = 0.0, b = 0.0; | ||
1109 | for(U32 i = 0; i<sUpdateGeometryRunCount; i++) | ||
1110 | { | ||
1111 | a += sUpdateGeometryRunAvgOff[i]; | ||
1112 | b += sUpdateGeometryRunAvgOn[i]; | ||
1113 | } | ||
1114 | a /= sUpdateGeometryRunCount; | ||
1115 | b /= sUpdateGeometryRunCount; | ||
1116 | F64 perf_boost = ( sUpdateGeometryElapsedTimeOff - sUpdateGeometryElapsedTimeOn ) / sUpdateGeometryElapsedTimeOn; | ||
1117 | llinfos << "run averages (" << (F64)sUpdateGeometryRunCount | ||
1118 | << "/10) vectorize off " << a | ||
1119 | << "% : vectorize type " << gVectorizeProcessor | ||
1120 | << " " << b | ||
1121 | << "% : performance boost " | ||
1122 | << perf_boost * 100.0 | ||
1123 | << "%" | ||
1124 | << llendl ; | ||
1125 | if(sUpdateGeometryRunCount == 10) | ||
1126 | { | ||
1127 | // In case user runs test again, force reset of data on | ||
1128 | // next run. | ||
1129 | sUpdateGeometryGlobalTime = 0.0; | ||
1130 | |||
1131 | // We have data now on which version is faster. Switch to that | ||
1132 | // code and save the data for next run. | ||
1133 | gVectorizePerfTest = FALSE; | ||
1134 | gSavedSettings.setBOOL("VectorizePerfTest", FALSE); | ||
1135 | |||
1136 | if (perf_boost > 0.0) | ||
1137 | { | ||
1138 | llinfos << "Vectorization improves avatar skinning performance, " | ||
1139 | << "keeping on for future runs." | ||
1140 | << llendl; | ||
1141 | gSavedSettings.setBOOL("VectorizeSkin", TRUE); | ||
1142 | } | ||
1143 | else | ||
1144 | { | ||
1145 | // SIMD decreases performance, fall back to original code | ||
1146 | llinfos << "Vectorization decreases avatar skinning performance, " | ||
1147 | << "switching back to original code." | ||
1148 | << llendl; | ||
1149 | |||
1150 | gSavedSettings.setBOOL("VectorizeSkin", FALSE); | ||
1151 | } | ||
1152 | } | ||
1153 | } | ||
1154 | sUpdateGeometryElapsedTime = 0.0f; | ||
1155 | } | ||
1156 | } | ||
1157 | } | ||
1158 | |||
1011 | void LLViewerJointMesh::dump() | 1159 | void LLViewerJointMesh::dump() |
1012 | { | 1160 | { |
1013 | if (mValid) | 1161 | if (mValid) |
diff --git a/linden/indra/newview/llviewerjointmesh.h b/linden/indra/newview/llviewerjointmesh.h index f016da6..b40daed 100644 --- a/linden/indra/newview/llviewerjointmesh.h +++ b/linden/indra/newview/llviewerjointmesh.h | |||
@@ -146,6 +146,22 @@ public: | |||
146 | 146 | ||
147 | /*virtual*/ BOOL isAnimatable() { return FALSE; } | 147 | /*virtual*/ BOOL isAnimatable() { return FALSE; } |
148 | void writeCAL3D(apr_file_t* fp, S32 material_num, LLCharacter* characterp); | 148 | void writeCAL3D(apr_file_t* fp, S32 material_num, LLCharacter* characterp); |
149 | |||
150 | // Avatar vertex skinning is a significant performance issue on computers | ||
151 | // with avatar vertex programs turned off (for example, most Macs). We | ||
152 | // therefore have custom versions that use SIMD instructions. | ||
153 | // | ||
154 | // These functions require compiler options for SSE2, SSE, or neither, and | ||
155 | // hence are contained in separate individual .cpp files. JC | ||
156 | static void updateGeometryOriginal(LLFace* face, LLPolyMesh* mesh); | ||
157 | // generic vector code, used for Altivec | ||
158 | static void updateGeometryVectorized(LLFace* face, LLPolyMesh* mesh); | ||
159 | static void updateGeometrySSE(LLFace* face, LLPolyMesh* mesh); | ||
160 | static void updateGeometrySSE2(LLFace* face, LLPolyMesh* mesh); | ||
161 | |||
162 | // Use a fuction pointer to indicate which version we are running. | ||
163 | static void (*sUpdateGeometryFunc)(LLFace* face, LLPolyMesh* mesh); | ||
164 | |||
149 | private: | 165 | private: |
150 | // Allocate skin data | 166 | // Allocate skin data |
151 | BOOL allocateSkinData( U32 numSkinJoints ); | 167 | BOOL allocateSkinData( U32 numSkinJoints ); |
diff --git a/linden/indra/newview/llviewerjointmesh_sse.cpp b/linden/indra/newview/llviewerjointmesh_sse.cpp new file mode 100644 index 0000000..4e30ce1 --- /dev/null +++ b/linden/indra/newview/llviewerjointmesh_sse.cpp | |||
@@ -0,0 +1,114 @@ | |||
1 | /** | ||
2 | * @file llviewerjointmesh.cpp | ||
3 | * @brief LLV4 class implementation with LLViewerJointMesh class | ||
4 | * | ||
5 | * Copyright (c) 2007-2007, Linden Research, Inc. | ||
6 | * | ||
7 | * Second Life Viewer Source Code | ||
8 | * The source code in this file ("Source Code") is provided by Linden Lab | ||
9 | * to you under the terms of the GNU General Public License, version 2.0 | ||
10 | * ("GPL"), unless you have obtained a separate licensing agreement | ||
11 | * ("Other License"), formally executed by you and Linden Lab. Terms of | ||
12 | * the GPL can be found in doc/GPL-license.txt in this distribution, or | ||
13 | * online at http://secondlife.com/developers/opensource/gplv2 | ||
14 | * | ||
15 | * There are special exceptions to the terms and conditions of the GPL as | ||
16 | * it is applied to this Source Code. View the full text of the exception | ||
17 | * in the file doc/FLOSS-exception.txt in this software distribution, or | ||
18 | * online at http://secondlife.com/developers/opensource/flossexception | ||
19 | * | ||
20 | * By copying, modifying or distributing this software, you acknowledge | ||
21 | * that you have read and understood your obligations described above, | ||
22 | * and agree to abide by those obligations. | ||
23 | * | ||
24 | * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO | ||
25 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | ||
26 | * COMPLETENESS OR PERFORMANCE. | ||
27 | */ | ||
28 | |||
29 | //----------------------------------------------------------------------------- | ||
30 | // Header Files | ||
31 | //----------------------------------------------------------------------------- | ||
32 | |||
33 | // Do not use precompiled headers, because we need to build this file with | ||
34 | // SSE support, but not the precompiled header file. JC | ||
35 | #include "linden_common.h" | ||
36 | |||
37 | #include "llviewerjointmesh.h" | ||
38 | |||
39 | // project includes | ||
40 | #include "llface.h" | ||
41 | #include "llpolymesh.h" | ||
42 | |||
43 | // library includes | ||
44 | #include "lldarray.h" | ||
45 | #include "llv4math.h" // for LL_VECTORIZE | ||
46 | #include "llv4matrix3.h" | ||
47 | #include "llv4matrix4.h" | ||
48 | #include "v3math.h" | ||
49 | |||
50 | // *NOTE: SSE must be enabled for this module | ||
51 | |||
52 | #if LL_VECTORIZE | ||
53 | |||
54 | static LLV4Matrix4 sJointMat[32]; | ||
55 | |||
56 | inline void matrix_translate(LLV4Matrix4& m, const LLMatrix4* w, const LLVector3& j) | ||
57 | { | ||
58 | m.mV[VX] = _mm_loadu_ps(w->mMatrix[VX]); | ||
59 | m.mV[VY] = _mm_loadu_ps(w->mMatrix[VY]); | ||
60 | m.mV[VZ] = _mm_loadu_ps(w->mMatrix[VZ]); | ||
61 | m.mV[VW] = _mm_loadu_ps(w->mMatrix[VW]); | ||
62 | m.mV[VW] = _mm_add_ps(m.mV[VW], _mm_mul_ps(_mm_set1_ps(j.mV[VX]), m.mV[VX])); // ( ax * vx ) + vw | ||
63 | m.mV[VW] = _mm_add_ps(m.mV[VW], _mm_mul_ps(_mm_set1_ps(j.mV[VY]), m.mV[VY])); | ||
64 | m.mV[VW] = _mm_add_ps(m.mV[VW], _mm_mul_ps(_mm_set1_ps(j.mV[VZ]), m.mV[VZ])); | ||
65 | } | ||
66 | |||
67 | // static | ||
68 | void LLViewerJointMesh::updateGeometrySSE(LLFace *face, LLPolyMesh *mesh) | ||
69 | { | ||
70 | LLDynamicArray<LLJointRenderData*>& joint_data = mesh->getReferenceMesh()->mJointRenderData; | ||
71 | |||
72 | //upload joint pivots/matrices | ||
73 | for(S32 j = 0, jend = joint_data.count(); j < jend ; ++j ) | ||
74 | { | ||
75 | matrix_translate(sJointMat[j], joint_data[j]->mWorldMatrix, | ||
76 | joint_data[j]->mSkinJoint ? | ||
77 | joint_data[j]->mSkinJoint->mRootToJointSkinOffset | ||
78 | : joint_data[j+1]->mSkinJoint->mRootToParentJointSkinOffset); | ||
79 | } | ||
80 | |||
81 | F32 weight = F32_MAX; | ||
82 | LLV4Matrix4 blend_mat; | ||
83 | |||
84 | LLStrider<LLVector3> o_vertices; | ||
85 | LLStrider<LLVector3> o_normals; | ||
86 | |||
87 | LLVertexBuffer *buffer = face->mVertexBuffer; | ||
88 | buffer->getVertexStrider(o_vertices, mesh->mFaceVertexOffset); | ||
89 | buffer->getNormalStrider(o_normals, mesh->mFaceVertexOffset); | ||
90 | |||
91 | const F32* weights = mesh->getWeights(); | ||
92 | const LLVector3* coords = mesh->getCoords(); | ||
93 | const LLVector3* normals = mesh->getNormals(); | ||
94 | for (U32 index = 0, index_end = mesh->getNumVertices(); index < index_end; ++index) | ||
95 | { | ||
96 | if( weight != weights[index]) | ||
97 | { | ||
98 | S32 joint = llfloor(weight = weights[index]); | ||
99 | blend_mat.lerp(sJointMat[joint], sJointMat[joint+1], weight - joint); | ||
100 | } | ||
101 | blend_mat.multiply(coords[index], o_vertices[index]); | ||
102 | ((LLV4Matrix3)blend_mat).multiply(normals[index], o_normals[index]); | ||
103 | } | ||
104 | } | ||
105 | |||
106 | #else | ||
107 | |||
108 | void LLViewerJointMesh::updateGeometrySSE(LLFace *face, LLPolyMesh *mesh) | ||
109 | { | ||
110 | LLViewerJointMesh::updateGeometryVectorized(face, mesh); | ||
111 | return; | ||
112 | } | ||
113 | |||
114 | #endif | ||
diff --git a/linden/indra/newview/llviewerjointmesh_sse2.cpp b/linden/indra/newview/llviewerjointmesh_sse2.cpp new file mode 100644 index 0000000..1c205ae --- /dev/null +++ b/linden/indra/newview/llviewerjointmesh_sse2.cpp | |||
@@ -0,0 +1,116 @@ | |||
1 | /** | ||
2 | * @file llviewerjointmesh.cpp | ||
3 | * @brief LLV4 class implementation with LLViewerJointMesh class | ||
4 | * | ||
5 | * Copyright (c) 2007-2007, Linden Research, Inc. | ||
6 | * | ||
7 | * Second Life Viewer Source Code | ||
8 | * The source code in this file ("Source Code") is provided by Linden Lab | ||
9 | * to you under the terms of the GNU General Public License, version 2.0 | ||
10 | * ("GPL"), unless you have obtained a separate licensing agreement | ||
11 | * ("Other License"), formally executed by you and Linden Lab. Terms of | ||
12 | * the GPL can be found in doc/GPL-license.txt in this distribution, or | ||
13 | * online at http://secondlife.com/developers/opensource/gplv2 | ||
14 | * | ||
15 | * There are special exceptions to the terms and conditions of the GPL as | ||
16 | * it is applied to this Source Code. View the full text of the exception | ||
17 | * in the file doc/FLOSS-exception.txt in this software distribution, or | ||
18 | * online at http://secondlife.com/developers/opensource/flossexception | ||
19 | * | ||
20 | * By copying, modifying or distributing this software, you acknowledge | ||
21 | * that you have read and understood your obligations described above, | ||
22 | * and agree to abide by those obligations. | ||
23 | * | ||
24 | * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO | ||
25 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | ||
26 | * COMPLETENESS OR PERFORMANCE. | ||
27 | */ | ||
28 | |||
29 | //----------------------------------------------------------------------------- | ||
30 | // Header Files | ||
31 | //----------------------------------------------------------------------------- | ||
32 | |||
33 | // Do not use precompiled headers, because we need to build this file with | ||
34 | // SSE support, but not the precompiled header file. JC | ||
35 | #include "linden_common.h" | ||
36 | |||
37 | #include "llviewerjointmesh.h" | ||
38 | |||
39 | // project includes | ||
40 | #include "llface.h" | ||
41 | #include "llpolymesh.h" | ||
42 | |||
43 | // library includes | ||
44 | #include "lldarray.h" | ||
45 | #include "llstrider.h" | ||
46 | #include "llv4math.h" // for LL_VECTORIZE | ||
47 | #include "llv4matrix3.h" | ||
48 | #include "llv4matrix4.h" | ||
49 | #include "m4math.h" | ||
50 | #include "v3math.h" | ||
51 | |||
52 | // *NOTE: SSE2 must be enabled for this module | ||
53 | |||
54 | #if LL_VECTORIZE | ||
55 | |||
56 | static LLV4Matrix4 sJointMat[32]; | ||
57 | |||
58 | inline void matrix_translate(LLV4Matrix4& m, const LLMatrix4* w, const LLVector3& j) | ||
59 | { | ||
60 | m.mV[VX] = _mm_loadu_ps(w->mMatrix[VX]); | ||
61 | m.mV[VY] = _mm_loadu_ps(w->mMatrix[VY]); | ||
62 | m.mV[VZ] = _mm_loadu_ps(w->mMatrix[VZ]); | ||
63 | m.mV[VW] = _mm_loadu_ps(w->mMatrix[VW]); | ||
64 | m.mV[VW] = _mm_add_ps(m.mV[VW], _mm_mul_ps(_mm_set1_ps(j.mV[VX]), m.mV[VX])); // ( ax * vx ) + vw | ||
65 | m.mV[VW] = _mm_add_ps(m.mV[VW], _mm_mul_ps(_mm_set1_ps(j.mV[VY]), m.mV[VY])); | ||
66 | m.mV[VW] = _mm_add_ps(m.mV[VW], _mm_mul_ps(_mm_set1_ps(j.mV[VZ]), m.mV[VZ])); | ||
67 | } | ||
68 | |||
69 | // static | ||
70 | void LLViewerJointMesh::updateGeometrySSE2(LLFace *face, LLPolyMesh *mesh) | ||
71 | { | ||
72 | LLDynamicArray<LLJointRenderData*>& joint_data = mesh->getReferenceMesh()->mJointRenderData; | ||
73 | |||
74 | //upload joint pivots/matrices | ||
75 | for(S32 j = 0, jend = joint_data.count(); j < jend ; ++j ) | ||
76 | { | ||
77 | matrix_translate(sJointMat[j], joint_data[j]->mWorldMatrix, | ||
78 | joint_data[j]->mSkinJoint ? | ||
79 | joint_data[j]->mSkinJoint->mRootToJointSkinOffset | ||
80 | : joint_data[j+1]->mSkinJoint->mRootToParentJointSkinOffset); | ||
81 | } | ||
82 | |||
83 | F32 weight = F32_MAX; | ||
84 | LLV4Matrix4 blend_mat; | ||
85 | |||
86 | LLStrider<LLVector3> o_vertices; | ||
87 | LLStrider<LLVector3> o_normals; | ||
88 | |||
89 | LLVertexBuffer *buffer = face->mVertexBuffer; | ||
90 | buffer->getVertexStrider(o_vertices, mesh->mFaceVertexOffset); | ||
91 | buffer->getNormalStrider(o_normals, mesh->mFaceVertexOffset); | ||
92 | |||
93 | const F32* weights = mesh->getWeights(); | ||
94 | const LLVector3* coords = mesh->getCoords(); | ||
95 | const LLVector3* normals = mesh->getNormals(); | ||
96 | for (U32 index = 0, index_end = mesh->getNumVertices(); index < index_end; ++index) | ||
97 | { | ||
98 | if( weight != weights[index]) | ||
99 | { | ||
100 | S32 joint = llfloor(weight = weights[index]); | ||
101 | blend_mat.lerp(sJointMat[joint], sJointMat[joint+1], weight - joint); | ||
102 | } | ||
103 | blend_mat.multiply(coords[index], o_vertices[index]); | ||
104 | ((LLV4Matrix3)blend_mat).multiply(normals[index], o_normals[index]); | ||
105 | } | ||
106 | } | ||
107 | |||
108 | #else | ||
109 | |||
110 | void LLViewerJointMesh::updateGeometrySSE2(LLFace *face, LLPolyMesh *mesh) | ||
111 | { | ||
112 | LLViewerJointMesh::updateGeometryVectorized(face, mesh); | ||
113 | return; | ||
114 | } | ||
115 | |||
116 | #endif | ||
diff --git a/linden/indra/newview/llviewerjointmesh_vec.cpp b/linden/indra/newview/llviewerjointmesh_vec.cpp new file mode 100644 index 0000000..4d52361 --- /dev/null +++ b/linden/indra/newview/llviewerjointmesh_vec.cpp | |||
@@ -0,0 +1,97 @@ | |||
1 | /** | ||
2 | * @file llviewerjointmesh.cpp | ||
3 | * @brief LLV4 math class implementation with LLViewerJointMesh class | ||
4 | * | ||
5 | * Copyright (c) 2001-2007, Linden Research, Inc. | ||
6 | * | ||
7 | * Second Life Viewer Source Code | ||
8 | * The source code in this file ("Source Code") is provided by Linden Lab | ||
9 | * to you under the terms of the GNU General Public License, version 2.0 | ||
10 | * ("GPL"), unless you have obtained a separate licensing agreement | ||
11 | * ("Other License"), formally executed by you and Linden Lab. Terms of | ||
12 | * the GPL can be found in doc/GPL-license.txt in this distribution, or | ||
13 | * online at http://secondlife.com/developers/opensource/gplv2 | ||
14 | * | ||
15 | * There are special exceptions to the terms and conditions of the GPL as | ||
16 | * it is applied to this Source Code. View the full text of the exception | ||
17 | * in the file doc/FLOSS-exception.txt in this software distribution, or | ||
18 | * online at http://secondlife.com/developers/opensource/flossexception | ||
19 | * | ||
20 | * By copying, modifying or distributing this software, you acknowledge | ||
21 | * that you have read and understood your obligations described above, | ||
22 | * and agree to abide by those obligations. | ||
23 | * | ||
24 | * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO | ||
25 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | ||
26 | * COMPLETENESS OR PERFORMANCE. | ||
27 | */ | ||
28 | |||
29 | //----------------------------------------------------------------------------- | ||
30 | // Header Files | ||
31 | //----------------------------------------------------------------------------- | ||
32 | #include "llviewerprecompiledheaders.h" | ||
33 | |||
34 | #include "llviewerjointmesh.h" | ||
35 | |||
36 | #include "llface.h" | ||
37 | #include "llpolymesh.h" | ||
38 | #include "llv4math.h" | ||
39 | #include "llv4matrix3.h" | ||
40 | #include "llv4matrix4.h" | ||
41 | |||
42 | // *NOTE: This is the fallback code for vectorized joint mesh skinning. | ||
43 | // For builds that must support non-SSE x86 code (Windows, perhaps Linux) | ||
44 | // SSE code generation should be disabled for this file. | ||
45 | // | ||
46 | // For builds that run on processors that always have SSE (Mac), | ||
47 | // SSE code generation can be enabled. JC | ||
48 | |||
49 | static LLV4Matrix4 sJointMat[32]; | ||
50 | |||
51 | // static | ||
52 | void LLViewerJointMesh::updateGeometryVectorized(LLFace *face, LLPolyMesh *mesh) | ||
53 | { | ||
54 | LLDynamicArray<LLJointRenderData*>& joint_data = mesh->getReferenceMesh()->mJointRenderData; | ||
55 | S32 j, joint_num, joint_end = joint_data.count(); | ||
56 | LLV4Vector3 pivot; | ||
57 | |||
58 | //upload joint pivots/matrices | ||
59 | for(j = joint_num = 0; joint_num < joint_end ; ++joint_num ) | ||
60 | { | ||
61 | LLSkinJoint *sj; | ||
62 | const LLMatrix4 * wm = joint_data[joint_num]->mWorldMatrix; | ||
63 | if (NULL == (sj = joint_data[joint_num]->mSkinJoint)) | ||
64 | { | ||
65 | sj = joint_data[++joint_num]->mSkinJoint; | ||
66 | ((LLV4Matrix3)(sJointMat[j] = *wm)).multiply(sj->mRootToParentJointSkinOffset, pivot); | ||
67 | sJointMat[j++].translate(pivot); | ||
68 | wm = joint_data[joint_num]->mWorldMatrix; | ||
69 | } | ||
70 | ((LLV4Matrix3)(sJointMat[j] = *wm)).multiply(sj->mRootToJointSkinOffset, pivot); | ||
71 | sJointMat[j++].translate(pivot); | ||
72 | } | ||
73 | |||
74 | F32 weight = F32_MAX; | ||
75 | LLV4Matrix4 blend_mat; | ||
76 | |||
77 | LLStrider<LLVector3> o_vertices; | ||
78 | LLStrider<LLVector3> o_normals; | ||
79 | |||
80 | LLVertexBuffer *buffer = face->mVertexBuffer; | ||
81 | buffer->getVertexStrider(o_vertices, mesh->mFaceVertexOffset); | ||
82 | buffer->getNormalStrider(o_normals, mesh->mFaceVertexOffset); | ||
83 | |||
84 | const F32* weights = mesh->getWeights(); | ||
85 | const LLVector3* coords = mesh->getCoords(); | ||
86 | const LLVector3* normals = mesh->getNormals(); | ||
87 | for (U32 index = 0, index_end = mesh->getNumVertices(); index < index_end; ++index) | ||
88 | { | ||
89 | if( weight != weights[index]) | ||
90 | { | ||
91 | S32 joint = llfloor(weight = weights[index]); | ||
92 | blend_mat.lerp(sJointMat[joint], sJointMat[joint+1], weight - joint); | ||
93 | } | ||
94 | blend_mat.multiply(coords[index], o_vertices[index]); | ||
95 | ((LLV4Matrix3)blend_mat).multiply(normals[index], o_normals[index]); | ||
96 | } | ||
97 | } | ||
diff --git a/linden/indra/newview/llviewermenu.cpp b/linden/indra/newview/llviewermenu.cpp index b36b9a2..a142aff 100644 --- a/linden/indra/newview/llviewermenu.cpp +++ b/linden/indra/newview/llviewermenu.cpp | |||
@@ -980,6 +980,7 @@ extern BOOL gDebugClicks; | |||
980 | extern BOOL gDebugWindowProc; | 980 | extern BOOL gDebugWindowProc; |
981 | extern BOOL gDebugTextEditorTips; | 981 | extern BOOL gDebugTextEditorTips; |
982 | extern BOOL gDebugSelectMgr; | 982 | extern BOOL gDebugSelectMgr; |
983 | extern BOOL gVectorizePerfTest; | ||
983 | 984 | ||
984 | void init_debug_ui_menu(LLMenuGL* menu) | 985 | void init_debug_ui_menu(LLMenuGL* menu) |
985 | { | 986 | { |
@@ -1189,6 +1190,8 @@ void init_debug_rendering_menu(LLMenuGL* menu) | |||
1189 | (void*)"ShowDepthBuffer")); | 1190 | (void*)"ShowDepthBuffer")); |
1190 | sub_menu->append(new LLMenuItemToggleGL("Show Select Buffer", &gDebugSelect)); | 1191 | sub_menu->append(new LLMenuItemToggleGL("Show Select Buffer", &gDebugSelect)); |
1191 | 1192 | ||
1193 | sub_menu->append(new LLMenuItemToggleGL("Vectorize Perf Test", &gVectorizePerfTest)); | ||
1194 | |||
1192 | sub_menu = new LLMenuGL("Render Tests"); | 1195 | sub_menu = new LLMenuGL("Render Tests"); |
1193 | 1196 | ||
1194 | sub_menu->append(new LLMenuItemCheckGL("Camera Offset", | 1197 | sub_menu->append(new LLMenuItemCheckGL("Camera Offset", |
diff --git a/linden/indra/newview/llviewermenufile.cpp b/linden/indra/newview/llviewermenufile.cpp index 19dfebe..09b2baf 100644 --- a/linden/indra/newview/llviewermenufile.cpp +++ b/linden/indra/newview/llviewermenufile.cpp | |||
@@ -435,7 +435,7 @@ class LLFileQuit : public view_listener_t | |||
435 | { | 435 | { |
436 | bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) | 436 | bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) |
437 | { | 437 | { |
438 | app_request_quit(); | 438 | app_user_quit(); |
439 | return true; | 439 | return true; |
440 | } | 440 | } |
441 | }; | 441 | }; |
diff --git a/linden/indra/newview/llviewermessage.cpp b/linden/indra/newview/llviewermessage.cpp index 8f2fc1a..d9e2927 100644 --- a/linden/indra/newview/llviewermessage.cpp +++ b/linden/indra/newview/llviewermessage.cpp | |||
@@ -2268,6 +2268,7 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data) | |||
2268 | } | 2268 | } |
2269 | break; | 2269 | break; |
2270 | case CHAT_TYPE_DEBUG_MSG: | 2270 | case CHAT_TYPE_DEBUG_MSG: |
2271 | case CHAT_TYPE_OWNER: | ||
2271 | case CHAT_TYPE_NORMAL: | 2272 | case CHAT_TYPE_NORMAL: |
2272 | verb = ": "; | 2273 | verb = ": "; |
2273 | break; | 2274 | break; |
@@ -2573,7 +2574,7 @@ void process_teleport_finish(LLMessageSystem* msg, void**) | |||
2573 | msg->getStringFast(_PREHASH_Info, _PREHASH_SeedCapability, | 2574 | msg->getStringFast(_PREHASH_Info, _PREHASH_SeedCapability, |
2574 | STD_STRING_BUF_SIZE, seedCap); | 2575 | STD_STRING_BUF_SIZE, seedCap); |
2575 | 2576 | ||
2576 | // update home location if we are teleporting out of prelude | 2577 | // update home location if we are teleporting out of prelude - specific to teleporting to welcome area |
2577 | if((teleport_flags & TELEPORT_FLAGS_SET_HOME_TO_TARGET) | 2578 | if((teleport_flags & TELEPORT_FLAGS_SET_HOME_TO_TARGET) |
2578 | && (!gAgent.isGodlike())) | 2579 | && (!gAgent.isGodlike())) |
2579 | { | 2580 | { |
@@ -4277,6 +4278,8 @@ void notify_cautioned_script_question(LLScriptQuestionCBData* cbdata, S32 orig_q | |||
4277 | // only continue if at least some permissions were requested | 4278 | // only continue if at least some permissions were requested |
4278 | if (orig_questions) | 4279 | if (orig_questions) |
4279 | { | 4280 | { |
4281 | // check to see if the person we are asking | ||
4282 | |||
4280 | // "'[OBJECTNAME]', an object owned by '[OWNERNAME]', | 4283 | // "'[OBJECTNAME]', an object owned by '[OWNERNAME]', |
4281 | // located in [REGIONNAME] at [REGIONPOS], | 4284 | // located in [REGIONNAME] at [REGIONPOS], |
4282 | // has been <granted|denied> permission to: [PERMISSIONS]." | 4285 | // has been <granted|denied> permission to: [PERMISSIONS]." |
@@ -4440,6 +4443,9 @@ void process_script_question(LLMessageSystem *msg, void **user_data) | |||
4440 | msg->getStringFast(_PREHASH_Data, _PREHASH_ObjectOwner, DB_FULL_NAME_BUF_SIZE, owner_name); | 4443 | msg->getStringFast(_PREHASH_Data, _PREHASH_ObjectOwner, DB_FULL_NAME_BUF_SIZE, owner_name); |
4441 | msg->getS32Fast(_PREHASH_Data, _PREHASH_Questions, questions ); | 4444 | msg->getS32Fast(_PREHASH_Data, _PREHASH_Questions, questions ); |
4442 | 4445 | ||
4446 | // don't display permission requests if this object is muted - JS. | ||
4447 | if (gMuteListp->isMuted(taskid)) return; | ||
4448 | |||
4443 | LLString script_question; | 4449 | LLString script_question; |
4444 | if (questions) | 4450 | if (questions) |
4445 | { | 4451 | { |
diff --git a/linden/indra/newview/llviewerwindow.cpp b/linden/indra/newview/llviewerwindow.cpp index 116df89..d2190cc 100644 --- a/linden/indra/newview/llviewerwindow.cpp +++ b/linden/indra/newview/llviewerwindow.cpp | |||
@@ -1154,7 +1154,7 @@ BOOL LLViewerWindow::handleCloseRequest(LLWindow *window) | |||
1154 | { | 1154 | { |
1155 | // User has indicated they want to close, but we may need to ask | 1155 | // User has indicated they want to close, but we may need to ask |
1156 | // about modified documents. | 1156 | // about modified documents. |
1157 | app_request_quit(); | 1157 | app_user_quit(); |
1158 | // Don't quit immediately | 1158 | // Don't quit immediately |
1159 | return FALSE; | 1159 | return FALSE; |
1160 | } | 1160 | } |
diff --git a/linden/indra/newview/llvosky.h b/linden/indra/newview/llvosky.h index 81c9bf5..12980c9 100644 --- a/linden/indra/newview/llvosky.h +++ b/linden/indra/newview/llvosky.h | |||
@@ -277,7 +277,7 @@ public: | |||
277 | void setHorizonVisibility(const F32 c = 1) { mHorizonVisibility = c; } | 277 | void setHorizonVisibility(const F32 c = 1) { mHorizonVisibility = c; } |
278 | const F32& getVisibility() const { return mVisibility; } | 278 | const F32& getVisibility() const { return mVisibility; } |
279 | void setVisibility(const F32 c = 1) { mVisibility = c; } | 279 | void setVisibility(const F32 c = 1) { mVisibility = c; } |
280 | const F32 getHaloBrighness() const | 280 | F32 getHaloBrighness() const |
281 | { | 281 | { |
282 | return llmax(0.f, llmin(0.9f, mHorizonVisibility)) * mVisibility; | 282 | return llmax(0.f, llmin(0.9f, mHorizonVisibility)) * mVisibility; |
283 | } | 283 | } |
diff --git a/linden/indra/newview/llvowater.h b/linden/indra/newview/llvowater.h index 0bb0c46..53a0a02 100644 --- a/linden/indra/newview/llvowater.h +++ b/linden/indra/newview/llvowater.h | |||
@@ -32,9 +32,6 @@ | |||
32 | #include "llviewerobject.h" | 32 | #include "llviewerobject.h" |
33 | #include "llviewerimage.h" | 33 | #include "llviewerimage.h" |
34 | #include "v2math.h" | 34 | #include "v2math.h" |
35 | #include "llfft.h" | ||
36 | |||
37 | #include "llwaterpatch.h" | ||
38 | 35 | ||
39 | const U32 N_RES = 16; //32 // number of subdivisions of wave tile | 36 | const U32 N_RES = 16; //32 // number of subdivisions of wave tile |
40 | const U8 WAVE_STEP = 8; | 37 | const U8 WAVE_STEP = 8; |
diff --git a/linden/indra/newview/llwaterpatch.cpp b/linden/indra/newview/llwaterpatch.cpp deleted file mode 100644 index f6a8640..0000000 --- a/linden/indra/newview/llwaterpatch.cpp +++ /dev/null | |||
@@ -1,132 +0,0 @@ | |||
1 | /** | ||
2 | * @file llwaterpatch.cpp | ||
3 | * @brief LLWaterTri class implementation | ||
4 | * | ||
5 | * Copyright (c) 2001-2007, Linden Research, Inc. | ||
6 | * | ||
7 | * Second Life Viewer Source Code | ||
8 | * The source code in this file ("Source Code") is provided by Linden Lab | ||
9 | * to you under the terms of the GNU General Public License, version 2.0 | ||
10 | * ("GPL"), unless you have obtained a separate licensing agreement | ||
11 | * ("Other License"), formally executed by you and Linden Lab. Terms of | ||
12 | * the GPL can be found in doc/GPL-license.txt in this distribution, or | ||
13 | * online at http://secondlife.com/developers/opensource/gplv2 | ||
14 | * | ||
15 | * There are special exceptions to the terms and conditions of the GPL as | ||
16 | * it is applied to this Source Code. View the full text of the exception | ||
17 | * in the file doc/FLOSS-exception.txt in this software distribution, or | ||
18 | * online at http://secondlife.com/developers/opensource/flossexception | ||
19 | * | ||
20 | * By copying, modifying or distributing this software, you acknowledge | ||
21 | * that you have read and understood your obligations described above, | ||
22 | * and agree to abide by those obligations. | ||
23 | * | ||
24 | * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO | ||
25 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | ||
26 | * COMPLETENESS OR PERFORMANCE. | ||
27 | */ | ||
28 | |||
29 | #include "llviewerprecompiledheaders.h" | ||
30 | |||
31 | #include "llwaterpatch.h" | ||
32 | |||
33 | #include "llvowater.h" | ||
34 | |||
35 | U32 LLWaterTri::sMinStep; | ||
36 | LL2Coord LLWaterTri::sCam; | ||
37 | F32 LLWaterTri::sClipFar; | ||
38 | U32 LLWaterTri::sMaxDivLevel; | ||
39 | BOOL LLWaterTri::sCurrRound = FALSE; | ||
40 | |||
41 | |||
42 | LLWaterTri::LLWaterTri (U8 level, S8 type, LLWaterTri* par): LLRoamTriNode(level, type, par), mRefine(FALSE) | ||
43 | { | ||
44 | if (!parent() || type == 0) | ||
45 | { | ||
46 | mSize = mLvtx.distance(mRvtx) * sMinStep; | ||
47 | mCurr = sCurrRound; | ||
48 | setNotUpToDate(); | ||
49 | return; | ||
50 | } | ||
51 | |||
52 | mSize = par->size() * OO_SQRT2; | ||
53 | setPatch(par->patch()); | ||
54 | // LL2Coord c1 = par->Lvtx(); | ||
55 | // LL2Coord c2 = par->Rvtx(); | ||
56 | |||
57 | // if (c1.x() - c2.x() == 1 || c1.y() - c2.y() == 1) | ||
58 | // bool stophere = true; | ||
59 | |||
60 | if (type < 0) // left child | ||
61 | { | ||
62 | mLvtx = par->Tvtx(); | ||
63 | mRvtx = par->Lvtx(); | ||
64 | //mTvtx = middle(c1, c2); | ||
65 | } else { | ||
66 | mRvtx = par->Tvtx(); | ||
67 | mLvtx = par->Rvtx(); | ||
68 | //mTvtx = middle(c1, c2); | ||
69 | } | ||
70 | mTvtx = par->middleSide(); | ||
71 | mMiddle = mLvtx.middle(mRvtx); | ||
72 | if (((LLWaterPatch*)patch())->visible()) | ||
73 | setNotUpToDate(); | ||
74 | else | ||
75 | setUpToDate(); | ||
76 | } | ||
77 | |||
78 | |||
79 | void LLWaterTri::updatePassive() | ||
80 | { | ||
81 | setUpToDate(); | ||
82 | if (!leaf()) | ||
83 | { | ||
84 | mLchild->updatePassive(); | ||
85 | mRchild->updatePassive(); | ||
86 | } | ||
87 | } | ||
88 | |||
89 | |||
90 | BOOL LLWaterTri::refine() | ||
91 | { | ||
92 | if (upToDate()) | ||
93 | return mRefine; | ||
94 | |||
95 | if (!patch()->refine(this)) | ||
96 | { | ||
97 | setUpToDate(); | ||
98 | mRefine = FALSE; | ||
99 | return mRefine; | ||
100 | } | ||
101 | |||
102 | const static F32 a = 0.6f; | ||
103 | const static F32 K = sMinStep / 50.f;//0.08f; | ||
104 | const static F32 eps = K;//0.01f; | ||
105 | |||
106 | const F32 tri_dist = llmin(sCam.distance(middleSide()) * sMinStep, sClipFar); | ||
107 | const F32 func = K * (1 - (1 - eps) * exp(a * (tri_dist - sClipFar))); | ||
108 | |||
109 | |||
110 | //const F32 tri_size = distance(mLvtx, mRvtx) * sMinStep;// * min_step2; | ||
111 | const F32 ratio = mSize / (tri_dist + 1); | ||
112 | |||
113 | if (tri_dist > 0.8 * sClipFar) | ||
114 | mRefine = ratio > func; | ||
115 | else | ||
116 | mRefine = (ratio > func) && (mLevel < sMaxDivLevel); | ||
117 | |||
118 | if (!mRefine && !mLeaf) | ||
119 | { | ||
120 | if (mLchild->refine()) | ||
121 | mRefine = TRUE; | ||
122 | else if (mRchild->refine()) | ||
123 | mRefine = TRUE; | ||
124 | } | ||
125 | |||
126 | setUpToDate(); | ||
127 | return mRefine; | ||
128 | |||
129 | //return mGrid->refine(this); | ||
130 | //return FALSE; | ||
131 | } | ||
132 | |||
diff --git a/linden/indra/newview/llwaterpatch.h b/linden/indra/newview/llwaterpatch.h deleted file mode 100644 index f4eddf6..0000000 --- a/linden/indra/newview/llwaterpatch.h +++ /dev/null | |||
@@ -1,317 +0,0 @@ | |||
1 | /** | ||
2 | * @file llwaterpatch.h | ||
3 | * @brief LLWaterTri class header file | ||
4 | * | ||
5 | * Copyright (c) 2001-2007, Linden Research, Inc. | ||
6 | * | ||
7 | * Second Life Viewer Source Code | ||
8 | * The source code in this file ("Source Code") is provided by Linden Lab | ||
9 | * to you under the terms of the GNU General Public License, version 2.0 | ||
10 | * ("GPL"), unless you have obtained a separate licensing agreement | ||
11 | * ("Other License"), formally executed by you and Linden Lab. Terms of | ||
12 | * the GPL can be found in doc/GPL-license.txt in this distribution, or | ||
13 | * online at http://secondlife.com/developers/opensource/gplv2 | ||
14 | * | ||
15 | * There are special exceptions to the terms and conditions of the GPL as | ||
16 | * it is applied to this Source Code. View the full text of the exception | ||
17 | * in the file doc/FLOSS-exception.txt in this software distribution, or | ||
18 | * online at http://secondlife.com/developers/opensource/flossexception | ||
19 | * | ||
20 | * By copying, modifying or distributing this software, you acknowledge | ||
21 | * that you have read and understood your obligations described above, | ||
22 | * and agree to abide by those obligations. | ||
23 | * | ||
24 | * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO | ||
25 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | ||
26 | * COMPLETENESS OR PERFORMANCE. | ||
27 | */ | ||
28 | |||
29 | #ifndef LL_WATER_PATCH_H | ||
30 | #define LL_WATER_PATCH_H | ||
31 | |||
32 | #include "llmath.h" | ||
33 | #include "v3math.h" | ||
34 | #include "llroam.h" | ||
35 | |||
36 | const U8 MAX_LEVEL = 10; | ||
37 | |||
38 | class LL2Coord | ||
39 | { | ||
40 | protected: | ||
41 | S32 mX; | ||
42 | S32 mY; | ||
43 | public: | ||
44 | LL2Coord() {} | ||
45 | //LL2Coord() : mX(0), mY(0) {} | ||
46 | LL2Coord (S32 i, S32 j) : mX(i), mY(j) {} | ||
47 | LL2Coord operator+ (const LL2Coord& c) const | ||
48 | { | ||
49 | return LL2Coord(mX + c.mX, mY + c.mY); | ||
50 | } | ||
51 | LL2Coord operator* (F32 c) const | ||
52 | { | ||
53 | return LL2Coord(llround(mX * c), llround(mY * c)); | ||
54 | } | ||
55 | S32 x() const { return mX; } | ||
56 | S32 y() const { return mY; } | ||
57 | |||
58 | S32& x() { return mX; } | ||
59 | S32& y() { return mY; } | ||
60 | |||
61 | LL2Coord middle(const LL2Coord& c2) const | ||
62 | { | ||
63 | return LL2Coord((x() + c2.x()) >> 1, (y() + c2.y()) >> 1); | ||
64 | } | ||
65 | |||
66 | S32 distance2(const LL2Coord& c2) const | ||
67 | { | ||
68 | S32 dx = x() - c2.x(); | ||
69 | S32 dy = y() - c2.y(); | ||
70 | |||
71 | return dx * dx + dy * dy; | ||
72 | } | ||
73 | |||
74 | F32 distance(const LL2Coord& c2) const | ||
75 | { | ||
76 | return (F32) sqrt((F32)distance2(c2)); | ||
77 | } | ||
78 | }; | ||
79 | |||
80 | |||
81 | |||
82 | |||
83 | |||
84 | |||
85 | class LLWaterGrid; | ||
86 | |||
87 | class LLWaterTri : public LLRoamTriNode | ||
88 | { | ||
89 | protected: | ||
90 | LL2Coord mLvtx; // Left vertex | ||
91 | LL2Coord mRvtx; // Right vertex | ||
92 | LL2Coord mTvtx; // Top vertex | ||
93 | LL2Coord mMiddle; // Top vertex | ||
94 | |||
95 | F32 mSize; | ||
96 | |||
97 | BOOL mCurr; | ||
98 | BOOL mRefine; | ||
99 | |||
100 | public: | ||
101 | static LL2Coord sCam; | ||
102 | static F32 sClipFar; | ||
103 | static U32 sMaxDivLevel; | ||
104 | static U32 sMinStep; | ||
105 | |||
106 | static BOOL sCurrRound; | ||
107 | |||
108 | |||
109 | public: | ||
110 | LLWaterTri (const LL2Coord& l, const LL2Coord& r, const LL2Coord& t): | ||
111 | LLRoamTriNode(0, 0, 0), mLvtx(l), mRvtx(r), mTvtx(t), mRefine(FALSE) | ||
112 | { | ||
113 | mSize = mLvtx.distance(mRvtx) * sMinStep; | ||
114 | mCurr = sCurrRound; | ||
115 | mMiddle = mLvtx.middle(mRvtx); | ||
116 | } | ||
117 | |||
118 | LLWaterTri (U8 level = 0, S8 type = 0, LLWaterTri* par = 0); | ||
119 | |||
120 | virtual LLRoamTriNode* newLChild() | ||
121 | { | ||
122 | return new LLWaterTri(mLevel+1, -1, this); | ||
123 | } | ||
124 | virtual LLRoamTriNode* newRChild() | ||
125 | { | ||
126 | return new LLWaterTri(mLevel+1, 1, this); | ||
127 | } | ||
128 | |||
129 | virtual ~LLWaterTri() {} | ||
130 | |||
131 | const LL2Coord& Lvtx() const { return mLvtx; } | ||
132 | const LL2Coord& Rvtx() const { return mRvtx; } | ||
133 | const LL2Coord& Tvtx() const { return mTvtx; } | ||
134 | |||
135 | F32 size() const { return mSize; } | ||
136 | |||
137 | LL2Coord middleSide() const { return mMiddle; }//middle(mLvtx, mRvtx); } | ||
138 | |||
139 | void setLvtx(const LL2Coord& c) { mLvtx = c; } | ||
140 | void setRvtx(const LL2Coord& c) { mRvtx = c; } | ||
141 | void setTvtx(const LL2Coord& c) { mTvtx = c; } | ||
142 | |||
143 | void updatePassive(); | ||
144 | BOOL refine(); | ||
145 | void initForcefulRefine() | ||
146 | { | ||
147 | setUpToDate(); | ||
148 | mRefine = TRUE; | ||
149 | } | ||
150 | void flushFromQueue() { setUpToDate(); } | ||
151 | |||
152 | BOOL upToDate() const { return mCurr == sCurrRound; } | ||
153 | void setUpToDate() { mCurr = sCurrRound; } | ||
154 | void setNotUpToDate() { mCurr = !sCurrRound; } | ||
155 | static void nextRound() { sCurrRound = !sCurrRound; } | ||
156 | |||
157 | BOOL checkUpToDate() const | ||
158 | { | ||
159 | BOOL ok = leaf() ? upToDate() : | ||
160 | upToDate() && ((LLWaterTri*)Lchild())->upToDate() && ((LLWaterTri*)Rchild())->upToDate(); | ||
161 | if (!ok) | ||
162 | return ok; | ||
163 | else | ||
164 | return ok; | ||
165 | } | ||
166 | |||
167 | }; | ||
168 | |||
169 | |||
170 | |||
171 | |||
172 | class LLWaterPatch : public LLRoamPatch | ||
173 | { | ||
174 | protected: | ||
175 | LL2Coord mOrig; // Bottom left vertex | ||
176 | U32 mSize; | ||
177 | U32 mRegionWidth; | ||
178 | LLVector3 mCenter; | ||
179 | BOOL mVis; | ||
180 | |||
181 | public: | ||
182 | LLWaterPatch() : | ||
183 | LLRoamPatch(MAX_LEVEL, TRUE), mOrig(0, 0), mSize(32), mRegionWidth(256) {} | ||
184 | |||
185 | LLWaterPatch(const LL2Coord o, U32 size, U32 width, const LLVector3& center, | ||
186 | U8 max_level = MAX_LEVEL, BOOL back_slash = TRUE) : | ||
187 | LLRoamPatch(back_slash, max_level), mOrig(o), mSize(size), mRegionWidth(width), mCenter(center) | ||
188 | { createTris(); } | ||
189 | |||
190 | LLWaterPatch(S32 o1, S32 o2, U32 size, U32 width, const LLVector3& center, | ||
191 | U8 max_level = MAX_LEVEL, BOOL back_slash = TRUE) : | ||
192 | LLRoamPatch(back_slash, max_level), mOrig(o1, o2), mSize(size), mRegionWidth(width), mCenter(center) | ||
193 | { createTris(); } | ||
194 | |||
195 | |||
196 | const LL2Coord& orig() const { return mOrig; } | ||
197 | void set (S32 o1, S32 o2, U32 size, U32 width, const LLVector3& center, | ||
198 | U8 max_level = MAX_LEVEL, BOOL back_slash = TRUE) | ||
199 | { | ||
200 | deleteTris(); | ||
201 | mBackSlash = back_slash; | ||
202 | mMaxLevel = max_level; | ||
203 | mOrig.x() = o1; | ||
204 | mOrig.y() = o2; | ||
205 | mSize = size; | ||
206 | mCenter = center; | ||
207 | mRegionWidth = width; | ||
208 | mNumTris = 0; | ||
209 | createTris(); | ||
210 | } | ||
211 | |||
212 | void setMaxLevel (U8 max_level) { mMaxLevel = max_level; } | ||
213 | |||
214 | void createTris() | ||
215 | { | ||
216 | if (mBackSlash) | ||
217 | { | ||
218 | mTri[0] = new LLWaterTri(LL2Coord(mOrig.x() + mSize, mOrig.y()), | ||
219 | LL2Coord(mOrig.x(), mOrig.y() + mSize), mOrig); | ||
220 | mTri[1] = new LLWaterTri(LL2Coord(mOrig.x(), mOrig.y() + mSize), | ||
221 | LL2Coord(mOrig.x() + mSize, mOrig.y()), | ||
222 | LL2Coord(mOrig.x() + mSize, mOrig.y() + mSize)); | ||
223 | } else { | ||
224 | mTri[0] = new LLWaterTri(mOrig, | ||
225 | LL2Coord(mOrig.x() + mSize, mOrig.y() + mSize), | ||
226 | LL2Coord(mOrig.x(), mOrig.y() + mSize)); | ||
227 | mTri[1] = new LLWaterTri(LL2Coord(mOrig.x() + mSize, mOrig.y() + mSize), | ||
228 | mOrig, | ||
229 | LL2Coord(mOrig.x() + mSize, mOrig.y())); | ||
230 | } | ||
231 | setTris(); | ||
232 | ((LLWaterTri*)mTri[0])->setUpToDate(); | ||
233 | ((LLWaterTri*)mTri[1])->setUpToDate(); | ||
234 | } | ||
235 | //virtual ~LLWaterPatch() {} | ||
236 | void setInvisible() { mVis = FALSE; } | ||
237 | void setVisible() { mVis = TRUE; } | ||
238 | |||
239 | BOOL visible() const { return mVis; } | ||
240 | |||
241 | BOOL updateTree(const LLVector3 &camera_pos, const LLVector3 &look_at, const LLVector3 ®_orig) | ||
242 | { | ||
243 | const static F32 patch_rad = mRegionWidth * F_SQRT2 * 0.5f; | ||
244 | |||
245 | LLVector3 to_patch = reg_orig + mCenter - camera_pos; | ||
246 | F32 to_patch_dist = to_patch.normVec(); | ||
247 | |||
248 | if ( to_patch_dist < patch_rad) | ||
249 | { | ||
250 | setVisible(); | ||
251 | update(); | ||
252 | } else { | ||
253 | const F32 sin_min_angle = patch_rad / to_patch_dist; | ||
254 | const F32 cos_min_angle = (F32)sqrt(1.f - sin_min_angle * sin_min_angle); | ||
255 | const F32 cos_max = OO_SQRT2 * (cos_min_angle - sin_min_angle); | ||
256 | |||
257 | if (to_patch * look_at > cos_max) | ||
258 | { | ||
259 | setVisible(); | ||
260 | update(); | ||
261 | } else { | ||
262 | setInvisible(); | ||
263 | updatePassive(); | ||
264 | } | ||
265 | } | ||
266 | |||
267 | return mVis; | ||
268 | } | ||
269 | |||
270 | BOOL updateVisibility(const LLVector3 &camera_pos, const LLVector3 &look_at, const LLVector3 ®_orig) | ||
271 | { | ||
272 | const static F32 patch_rad = mRegionWidth * F_SQRT2 * 0.5f; | ||
273 | const static U32 reg_width_half = mRegionWidth / 2; | ||
274 | //const static F32 patch_rad2 = patch_rad * patch_rad; | ||
275 | |||
276 | LLVector3 to_patch = reg_orig + mCenter - camera_pos; | ||
277 | //const F32 to_patch_dist2D2 = to_patch.mV[VX] * to_patch.mV[VX] + to_patch.mV[VY] * to_patch.mV[VY]; | ||
278 | |||
279 | if (fabs(to_patch.mV[VX]) <= reg_width_half && fabs(to_patch.mV[VY]) <= reg_width_half) | ||
280 | //if ( to_patch_dist2D2 < patch_rad2) | ||
281 | { | ||
282 | setVisible(); | ||
283 | } else { | ||
284 | F32 to_patch_dist = to_patch.normVec(); | ||
285 | //const F32 to_patch_dist = sqrt(to_patch_dist2D2 + to_patch.mV[VZ] * to_patch.mV[VZ]); | ||
286 | const F32 sin_min_angle = patch_rad / to_patch_dist; | ||
287 | if (sin_min_angle >= 1) | ||
288 | { | ||
289 | setVisible(); | ||
290 | } else { | ||
291 | const F32 cos_min_angle = (F32)sqrt(1.f - sin_min_angle * sin_min_angle); | ||
292 | const F32 cos_max = OO_SQRT2 * (cos_min_angle - sin_min_angle); | ||
293 | |||
294 | if (to_patch * look_at > cos_max) | ||
295 | { | ||
296 | setVisible(); | ||
297 | } else { | ||
298 | setInvisible(); | ||
299 | } | ||
300 | } | ||
301 | } | ||
302 | |||
303 | return mVis; | ||
304 | } | ||
305 | void checkUpToDate() const | ||
306 | { | ||
307 | for (U8 h = 0; h < 2; h++) | ||
308 | { | ||
309 | ((LLWaterTri*)left())->checkUpToDate(); | ||
310 | ((LLWaterTri*)right())->checkUpToDate(); | ||
311 | } | ||
312 | } | ||
313 | |||
314 | }; | ||
315 | |||
316 | |||
317 | #endif | ||
diff --git a/linden/indra/newview/macview.xcodeproj/project.pbxproj b/linden/indra/newview/macview.xcodeproj/project.pbxproj index 02be1d5..059ae5a 100644 --- a/linden/indra/newview/macview.xcodeproj/project.pbxproj +++ b/linden/indra/newview/macview.xcodeproj/project.pbxproj | |||
@@ -27,6 +27,9 @@ | |||
27 | 1A0201850B7A861200D5C589 /* llblowfishcipher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A02017E0B7A861200D5C589 /* llblowfishcipher.cpp */; }; | 27 | 1A0201850B7A861200D5C589 /* llblowfishcipher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A02017E0B7A861200D5C589 /* llblowfishcipher.cpp */; }; |
28 | 1A0201860B7A861200D5C589 /* llnullcipher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A0201810B7A861200D5C589 /* llnullcipher.cpp */; }; | 28 | 1A0201860B7A861200D5C589 /* llnullcipher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A0201810B7A861200D5C589 /* llnullcipher.cpp */; }; |
29 | 1A0201870B7A861200D5C589 /* llxorcipher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A0201830B7A861200D5C589 /* llxorcipher.cpp */; }; | 29 | 1A0201870B7A861200D5C589 /* llxorcipher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A0201830B7A861200D5C589 /* llxorcipher.cpp */; }; |
30 | 1A0DA5130C3AC07800361F49 /* llviewerjointmesh_vec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A0DA5100C3AC07700361F49 /* llviewerjointmesh_vec.cpp */; }; | ||
31 | 1A0DA5140C3AC07800361F49 /* llviewerjointmesh_sse2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A0DA5110C3AC07700361F49 /* llviewerjointmesh_sse2.cpp */; }; | ||
32 | 1A0DA5150C3AC07800361F49 /* llviewerjointmesh_sse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A0DA5120C3AC07700361F49 /* llviewerjointmesh_sse.cpp */; }; | ||
30 | 1A1C61620847AEE6005D7227 /* llvolumemgr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A1C615E0847AEE6005D7227 /* llvolumemgr.cpp */; }; | 33 | 1A1C61620847AEE6005D7227 /* llvolumemgr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A1C615E0847AEE6005D7227 /* llvolumemgr.cpp */; }; |
31 | 1A1C61630847AEE6005D7227 /* llvolume.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A1C615F0847AEE6005D7227 /* llvolume.cpp */; }; | 34 | 1A1C61630847AEE6005D7227 /* llvolume.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A1C615F0847AEE6005D7227 /* llvolume.cpp */; }; |
32 | 1A1C61760847B307005D7227 /* llvolumemessage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A1C61740847B307005D7227 /* llvolumemessage.cpp */; }; | 35 | 1A1C61760847B307005D7227 /* llvolumemessage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A1C61740847B307005D7227 /* llvolumemessage.cpp */; }; |
@@ -95,7 +98,6 @@ | |||
95 | 5503BB3C05446B20003D051F /* llwind.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F529C2051F61DF00A80050 /* llwind.cpp */; }; | 98 | 5503BB3C05446B20003D051F /* llwind.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F529C2051F61DF00A80050 /* llwind.cpp */; }; |
96 | 5503BB3D05446B20003D051F /* llwearablelist.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F529C3051F61DF00A80050 /* llwearablelist.cpp */; }; | 99 | 5503BB3D05446B20003D051F /* llwearablelist.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F529C3051F61DF00A80050 /* llwearablelist.cpp */; }; |
97 | 5503BB3E05446B20003D051F /* llwearable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F529C4051F61DF00A80050 /* llwearable.cpp */; }; | 100 | 5503BB3E05446B20003D051F /* llwearable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F529C4051F61DF00A80050 /* llwearable.cpp */; }; |
98 | 5503BB3F05446B20003D051F /* llwaterpatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F529C5051F61DF00A80050 /* llwaterpatch.cpp */; }; | ||
99 | 5503BB4005446B20003D051F /* llvowater.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F529C6051F61DF00A80050 /* llvowater.cpp */; }; | 101 | 5503BB4005446B20003D051F /* llvowater.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F529C6051F61DF00A80050 /* llvowater.cpp */; }; |
100 | 5503BB4105446B20003D051F /* llvovolume.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F529C7051F61DF00A80050 /* llvovolume.cpp */; }; | 102 | 5503BB4105446B20003D051F /* llvovolume.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F529C7051F61DF00A80050 /* llvovolume.cpp */; }; |
101 | 5503BB4305446B20003D051F /* llvotree.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F529C9051F61DF00A80050 /* llvotree.cpp */; }; | 103 | 5503BB4305446B20003D051F /* llvotree.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F529C9051F61DF00A80050 /* llvotree.cpp */; }; |
@@ -158,7 +160,6 @@ | |||
158 | 5503BB9105446B20003D051F /* llfloaterland.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F52A17051F61DF00A80050 /* llfloaterland.cpp */; }; | 160 | 5503BB9105446B20003D051F /* llfloaterland.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F52A17051F61DF00A80050 /* llfloaterland.cpp */; }; |
159 | 5503BB9205446B20003D051F /* llpanelface.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F52A18051F61DF00A80050 /* llpanelface.cpp */; }; | 161 | 5503BB9205446B20003D051F /* llpanelface.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F52A18051F61DF00A80050 /* llpanelface.cpp */; }; |
160 | 5503BB9305446B20003D051F /* llpanelevent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F52A19051F61DF00A80050 /* llpanelevent.cpp */; }; | 162 | 5503BB9305446B20003D051F /* llpanelevent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F52A19051F61DF00A80050 /* llpanelevent.cpp */; }; |
161 | 5503BB9405446B20003D051F /* llcountdown.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F52A1A051F61DF00A80050 /* llcountdown.cpp */; }; | ||
162 | 5503BB9505446B20003D051F /* llcontroldef.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F52A1B051F61DF00A80050 /* llcontroldef.cpp */; }; | 163 | 5503BB9505446B20003D051F /* llcontroldef.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F52A1B051F61DF00A80050 /* llcontroldef.cpp */; }; |
163 | 5503BB9805446B20003D051F /* llframestatview.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F52A1E051F61DF00A80050 /* llframestatview.cpp */; }; | 164 | 5503BB9805446B20003D051F /* llframestatview.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F52A1E051F61DF00A80050 /* llframestatview.cpp */; }; |
164 | 5503BB9905446B20003D051F /* llframestats.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F52A1F051F61DF00A80050 /* llframestats.cpp */; }; | 165 | 5503BB9905446B20003D051F /* llframestats.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F52A1F051F61DF00A80050 /* llframestats.cpp */; }; |
@@ -166,7 +167,6 @@ | |||
166 | 5503BB9E05446B20003D051F /* llhudobject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F52A24051F61DF00A80050 /* llhudobject.cpp */; }; | 167 | 5503BB9E05446B20003D051F /* llhudobject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F52A24051F61DF00A80050 /* llhudobject.cpp */; }; |
167 | 5503BB9F05446B20003D051F /* llhudmanager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F52A25051F61DF00A80050 /* llhudmanager.cpp */; }; | 168 | 5503BB9F05446B20003D051F /* llhudmanager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F52A25051F61DF00A80050 /* llhudmanager.cpp */; }; |
168 | 5503BBA005446B20003D051F /* lldrawpoolalpha.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F52A26051F61DF00A80050 /* lldrawpoolalpha.cpp */; }; | 169 | 5503BBA005446B20003D051F /* lldrawpoolalpha.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F52A26051F61DF00A80050 /* lldrawpoolalpha.cpp */; }; |
169 | 5503BBA105446B20003D051F /* lltexturetable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F52A27051F61DF00A80050 /* lltexturetable.cpp */; }; | ||
170 | 5503BBA205446B20003D051F /* lltexturectrl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F52A28051F61DF00A80050 /* lltexturectrl.cpp */; }; | 170 | 5503BBA205446B20003D051F /* lltexturectrl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F52A28051F61DF00A80050 /* lltexturectrl.cpp */; }; |
171 | 5503BBA405446B20003D051F /* llpanelobject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F52A2A051F61DF00A80050 /* llpanelobject.cpp */; }; | 171 | 5503BBA405446B20003D051F /* llpanelobject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F52A2A051F61DF00A80050 /* llpanelobject.cpp */; }; |
172 | 5503BBA505446B20003D051F /* llpanelnetwork.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F52A2B051F61DF00A80050 /* llpanelnetwork.cpp */; }; | 172 | 5503BBA505446B20003D051F /* llpanelnetwork.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F52A2B051F61DF00A80050 /* llpanelnetwork.cpp */; }; |
@@ -260,7 +260,6 @@ | |||
260 | 5503BC2105446B20003D051F /* llcolorscheme.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F52AA9051F61DF00A80050 /* llcolorscheme.cpp */; }; | 260 | 5503BC2105446B20003D051F /* llcolorscheme.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F52AA9051F61DF00A80050 /* llcolorscheme.cpp */; }; |
261 | 5503BC2205446B20003D051F /* llmutelist.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F52AAA051F61DF00A80050 /* llmutelist.cpp */; }; | 261 | 5503BC2205446B20003D051F /* llmutelist.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F52AAA051F61DF00A80050 /* llmutelist.cpp */; }; |
262 | 5503BC2305446B20003D051F /* llmoveview.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F52AAB051F61DF00A80050 /* llmoveview.cpp */; }; | 262 | 5503BC2305446B20003D051F /* llmoveview.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F52AAB051F61DF00A80050 /* llmoveview.cpp */; }; |
263 | 5503BC2405446B20003D051F /* llfft.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F52AAC051F61DF00A80050 /* llfft.cpp */; }; | ||
264 | 5503BC2505446B20003D051F /* llfloatermap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F52AAD051F61DF00A80050 /* llfloatermap.cpp */; }; | 263 | 5503BC2505446B20003D051F /* llfloatermap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F52AAD051F61DF00A80050 /* llfloatermap.cpp */; }; |
265 | 5503BC2705446B20003D051F /* llregionposition.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F52AAF051F61DF00A80050 /* llregionposition.cpp */; }; | 264 | 5503BC2705446B20003D051F /* llregionposition.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F52AAF051F61DF00A80050 /* llregionposition.cpp */; }; |
266 | 5503BC2905446B20003D051F /* llasynchostbyname.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F52AB2051F61DF00A80050 /* llasynchostbyname.cpp */; }; | 265 | 5503BC2905446B20003D051F /* llasynchostbyname.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F52AB2051F61DF00A80050 /* llasynchostbyname.cpp */; }; |
@@ -822,6 +821,9 @@ | |||
822 | 1A0201820B7A861200D5C589 /* llnullcipher.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llnullcipher.h; sourceTree = "<group>"; }; | 821 | 1A0201820B7A861200D5C589 /* llnullcipher.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llnullcipher.h; sourceTree = "<group>"; }; |
823 | 1A0201830B7A861200D5C589 /* llxorcipher.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llxorcipher.cpp; sourceTree = "<group>"; }; | 822 | 1A0201830B7A861200D5C589 /* llxorcipher.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llxorcipher.cpp; sourceTree = "<group>"; }; |
824 | 1A0201840B7A861200D5C589 /* llxorcipher.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llxorcipher.h; sourceTree = "<group>"; }; | 823 | 1A0201840B7A861200D5C589 /* llxorcipher.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llxorcipher.h; sourceTree = "<group>"; }; |
824 | 1A0DA5100C3AC07700361F49 /* llviewerjointmesh_vec.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llviewerjointmesh_vec.cpp; sourceTree = "<group>"; }; | ||
825 | 1A0DA5110C3AC07700361F49 /* llviewerjointmesh_sse2.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llviewerjointmesh_sse2.cpp; sourceTree = "<group>"; }; | ||
826 | 1A0DA5120C3AC07700361F49 /* llviewerjointmesh_sse.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llviewerjointmesh_sse.cpp; sourceTree = "<group>"; }; | ||
825 | 1A1C615E0847AEE6005D7227 /* llvolumemgr.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llvolumemgr.cpp; sourceTree = "<group>"; }; | 827 | 1A1C615E0847AEE6005D7227 /* llvolumemgr.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llvolumemgr.cpp; sourceTree = "<group>"; }; |
826 | 1A1C615F0847AEE6005D7227 /* llvolume.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llvolume.cpp; sourceTree = "<group>"; }; | 828 | 1A1C615F0847AEE6005D7227 /* llvolume.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llvolume.cpp; sourceTree = "<group>"; }; |
827 | 1A1C61600847AEE6005D7227 /* llvolumemgr.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llvolumemgr.h; sourceTree = "<group>"; }; | 829 | 1A1C61600847AEE6005D7227 /* llvolumemgr.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llvolumemgr.h; sourceTree = "<group>"; }; |
@@ -925,7 +927,6 @@ | |||
925 | 26F529C2051F61DF00A80050 /* llwind.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llwind.cpp; sourceTree = SOURCE_ROOT; }; | 927 | 26F529C2051F61DF00A80050 /* llwind.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llwind.cpp; sourceTree = SOURCE_ROOT; }; |
926 | 26F529C3051F61DF00A80050 /* llwearablelist.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llwearablelist.cpp; sourceTree = SOURCE_ROOT; }; | 928 | 26F529C3051F61DF00A80050 /* llwearablelist.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llwearablelist.cpp; sourceTree = SOURCE_ROOT; }; |
927 | 26F529C4051F61DF00A80050 /* llwearable.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llwearable.cpp; sourceTree = SOURCE_ROOT; }; | 929 | 26F529C4051F61DF00A80050 /* llwearable.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llwearable.cpp; sourceTree = SOURCE_ROOT; }; |
928 | 26F529C5051F61DF00A80050 /* llwaterpatch.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llwaterpatch.cpp; sourceTree = SOURCE_ROOT; }; | ||
929 | 26F529C6051F61DF00A80050 /* llvowater.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llvowater.cpp; sourceTree = SOURCE_ROOT; }; | 930 | 26F529C6051F61DF00A80050 /* llvowater.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llvowater.cpp; sourceTree = SOURCE_ROOT; }; |
930 | 26F529C7051F61DF00A80050 /* llvovolume.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llvovolume.cpp; sourceTree = SOURCE_ROOT; }; | 931 | 26F529C7051F61DF00A80050 /* llvovolume.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llvovolume.cpp; sourceTree = SOURCE_ROOT; }; |
931 | 26F529C9051F61DF00A80050 /* llvotree.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llvotree.cpp; sourceTree = SOURCE_ROOT; }; | 932 | 26F529C9051F61DF00A80050 /* llvotree.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llvotree.cpp; sourceTree = SOURCE_ROOT; }; |
@@ -989,7 +990,6 @@ | |||
989 | 26F52A17051F61DF00A80050 /* llfloaterland.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llfloaterland.cpp; sourceTree = SOURCE_ROOT; }; | 990 | 26F52A17051F61DF00A80050 /* llfloaterland.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llfloaterland.cpp; sourceTree = SOURCE_ROOT; }; |
990 | 26F52A18051F61DF00A80050 /* llpanelface.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llpanelface.cpp; sourceTree = SOURCE_ROOT; }; | 991 | 26F52A18051F61DF00A80050 /* llpanelface.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llpanelface.cpp; sourceTree = SOURCE_ROOT; }; |
991 | 26F52A19051F61DF00A80050 /* llpanelevent.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llpanelevent.cpp; sourceTree = SOURCE_ROOT; }; | 992 | 26F52A19051F61DF00A80050 /* llpanelevent.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llpanelevent.cpp; sourceTree = SOURCE_ROOT; }; |
992 | 26F52A1A051F61DF00A80050 /* llcountdown.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llcountdown.cpp; sourceTree = SOURCE_ROOT; }; | ||
993 | 26F52A1B051F61DF00A80050 /* llcontroldef.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llcontroldef.cpp; sourceTree = SOURCE_ROOT; }; | 993 | 26F52A1B051F61DF00A80050 /* llcontroldef.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llcontroldef.cpp; sourceTree = SOURCE_ROOT; }; |
994 | 26F52A1E051F61DF00A80050 /* llframestatview.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llframestatview.cpp; sourceTree = SOURCE_ROOT; }; | 994 | 26F52A1E051F61DF00A80050 /* llframestatview.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llframestatview.cpp; sourceTree = SOURCE_ROOT; }; |
995 | 26F52A1F051F61DF00A80050 /* llframestats.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llframestats.cpp; sourceTree = SOURCE_ROOT; }; | 995 | 26F52A1F051F61DF00A80050 /* llframestats.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llframestats.cpp; sourceTree = SOURCE_ROOT; }; |
@@ -997,7 +997,6 @@ | |||
997 | 26F52A24051F61DF00A80050 /* llhudobject.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llhudobject.cpp; sourceTree = SOURCE_ROOT; }; | 997 | 26F52A24051F61DF00A80050 /* llhudobject.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llhudobject.cpp; sourceTree = SOURCE_ROOT; }; |
998 | 26F52A25051F61DF00A80050 /* llhudmanager.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llhudmanager.cpp; sourceTree = SOURCE_ROOT; }; | 998 | 26F52A25051F61DF00A80050 /* llhudmanager.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llhudmanager.cpp; sourceTree = SOURCE_ROOT; }; |
999 | 26F52A26051F61DF00A80050 /* lldrawpoolalpha.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = lldrawpoolalpha.cpp; sourceTree = SOURCE_ROOT; }; | 999 | 26F52A26051F61DF00A80050 /* lldrawpoolalpha.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = lldrawpoolalpha.cpp; sourceTree = SOURCE_ROOT; }; |
1000 | 26F52A27051F61DF00A80050 /* lltexturetable.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = lltexturetable.cpp; sourceTree = SOURCE_ROOT; }; | ||
1001 | 26F52A28051F61DF00A80050 /* lltexturectrl.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = lltexturectrl.cpp; sourceTree = SOURCE_ROOT; }; | 1000 | 26F52A28051F61DF00A80050 /* lltexturectrl.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = lltexturectrl.cpp; sourceTree = SOURCE_ROOT; }; |
1002 | 26F52A2A051F61DF00A80050 /* llpanelobject.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llpanelobject.cpp; sourceTree = SOURCE_ROOT; }; | 1001 | 26F52A2A051F61DF00A80050 /* llpanelobject.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llpanelobject.cpp; sourceTree = SOURCE_ROOT; }; |
1003 | 26F52A2B051F61DF00A80050 /* llpanelnetwork.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llpanelnetwork.cpp; sourceTree = SOURCE_ROOT; }; | 1002 | 26F52A2B051F61DF00A80050 /* llpanelnetwork.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llpanelnetwork.cpp; sourceTree = SOURCE_ROOT; }; |
@@ -1093,7 +1092,6 @@ | |||
1093 | 26F52AA9051F61DF00A80050 /* llcolorscheme.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llcolorscheme.cpp; sourceTree = SOURCE_ROOT; }; | 1092 | 26F52AA9051F61DF00A80050 /* llcolorscheme.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llcolorscheme.cpp; sourceTree = SOURCE_ROOT; }; |
1094 | 26F52AAA051F61DF00A80050 /* llmutelist.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llmutelist.cpp; sourceTree = SOURCE_ROOT; }; | 1093 | 26F52AAA051F61DF00A80050 /* llmutelist.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llmutelist.cpp; sourceTree = SOURCE_ROOT; }; |
1095 | 26F52AAB051F61DF00A80050 /* llmoveview.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llmoveview.cpp; sourceTree = SOURCE_ROOT; }; | 1094 | 26F52AAB051F61DF00A80050 /* llmoveview.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llmoveview.cpp; sourceTree = SOURCE_ROOT; }; |
1096 | 26F52AAC051F61DF00A80050 /* llfft.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llfft.cpp; sourceTree = SOURCE_ROOT; }; | ||
1097 | 26F52AAD051F61DF00A80050 /* llfloatermap.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llfloatermap.cpp; sourceTree = SOURCE_ROOT; }; | 1095 | 26F52AAD051F61DF00A80050 /* llfloatermap.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llfloatermap.cpp; sourceTree = SOURCE_ROOT; }; |
1098 | 26F52AAF051F61DF00A80050 /* llregionposition.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llregionposition.cpp; sourceTree = SOURCE_ROOT; }; | 1096 | 26F52AAF051F61DF00A80050 /* llregionposition.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llregionposition.cpp; sourceTree = SOURCE_ROOT; }; |
1099 | 26F52AB2051F61DF00A80050 /* llasynchostbyname.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llasynchostbyname.cpp; sourceTree = SOURCE_ROOT; }; | 1097 | 26F52AB2051F61DF00A80050 /* llasynchostbyname.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llasynchostbyname.cpp; sourceTree = SOURCE_ROOT; }; |
@@ -1634,7 +1632,6 @@ | |||
1634 | 997B4BE206015821001B0407 /* llwind.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llwind.h; sourceTree = SOURCE_ROOT; }; | 1632 | 997B4BE206015821001B0407 /* llwind.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llwind.h; sourceTree = SOURCE_ROOT; }; |
1635 | 997B4BE306015821001B0407 /* llwearablelist.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llwearablelist.h; sourceTree = SOURCE_ROOT; }; | 1633 | 997B4BE306015821001B0407 /* llwearablelist.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llwearablelist.h; sourceTree = SOURCE_ROOT; }; |
1636 | 997B4BE406015821001B0407 /* llwearable.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llwearable.h; sourceTree = SOURCE_ROOT; }; | 1634 | 997B4BE406015821001B0407 /* llwearable.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llwearable.h; sourceTree = SOURCE_ROOT; }; |
1637 | 997B4BE506015821001B0407 /* llwaterpatch.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llwaterpatch.h; sourceTree = SOURCE_ROOT; }; | ||
1638 | 997B4BE606015821001B0407 /* llvowater.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llvowater.h; sourceTree = SOURCE_ROOT; }; | 1635 | 997B4BE606015821001B0407 /* llvowater.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llvowater.h; sourceTree = SOURCE_ROOT; }; |
1639 | 997B4BE706015821001B0407 /* llvovolume.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llvovolume.h; sourceTree = SOURCE_ROOT; }; | 1636 | 997B4BE706015821001B0407 /* llvovolume.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llvovolume.h; sourceTree = SOURCE_ROOT; }; |
1640 | 997B4BE806015821001B0407 /* llvotreenew.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llvotreenew.h; sourceTree = SOURCE_ROOT; }; | 1637 | 997B4BE806015821001B0407 /* llvotreenew.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llvotreenew.h; sourceTree = SOURCE_ROOT; }; |
@@ -1701,7 +1698,6 @@ | |||
1701 | 997B4C3206015821001B0407 /* lltoolbar.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = lltoolbar.h; sourceTree = SOURCE_ROOT; }; | 1698 | 997B4C3206015821001B0407 /* lltoolbar.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = lltoolbar.h; sourceTree = SOURCE_ROOT; }; |
1702 | 997B4C3306015821001B0407 /* lltool.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = lltool.h; sourceTree = SOURCE_ROOT; }; | 1699 | 997B4C3306015821001B0407 /* lltool.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = lltool.h; sourceTree = SOURCE_ROOT; }; |
1703 | 997B4C3406015821001B0407 /* lltextureview.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = lltextureview.h; sourceTree = SOURCE_ROOT; }; | 1700 | 997B4C3406015821001B0407 /* lltextureview.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = lltextureview.h; sourceTree = SOURCE_ROOT; }; |
1704 | 997B4C3506015821001B0407 /* lltexturetable.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = lltexturetable.h; sourceTree = SOURCE_ROOT; }; | ||
1705 | 997B4C3606015821001B0407 /* lltexturectrl.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = lltexturectrl.h; sourceTree = SOURCE_ROOT; }; | 1701 | 997B4C3606015821001B0407 /* lltexturectrl.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = lltexturectrl.h; sourceTree = SOURCE_ROOT; }; |
1706 | 997B4C3B06015821001B0407 /* lltexlayer.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = lltexlayer.h; sourceTree = SOURCE_ROOT; }; | 1702 | 997B4C3B06015821001B0407 /* lltexlayer.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = lltexlayer.h; sourceTree = SOURCE_ROOT; }; |
1707 | 997B4C3D06015821001B0407 /* lltable.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = lltable.h; sourceTree = SOURCE_ROOT; }; | 1703 | 997B4C3D06015821001B0407 /* lltable.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = lltable.h; sourceTree = SOURCE_ROOT; }; |
@@ -1826,7 +1822,6 @@ | |||
1826 | 997B4CE506015822001B0407 /* llfloaterabout.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llfloaterabout.h; sourceTree = SOURCE_ROOT; }; | 1822 | 997B4CE506015822001B0407 /* llfloaterabout.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llfloaterabout.h; sourceTree = SOURCE_ROOT; }; |
1827 | 997B4CE706015822001B0407 /* llfirstuse.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llfirstuse.h; sourceTree = SOURCE_ROOT; }; | 1823 | 997B4CE706015822001B0407 /* llfirstuse.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llfirstuse.h; sourceTree = SOURCE_ROOT; }; |
1828 | 997B4CE906015822001B0407 /* llfilepicker.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llfilepicker.h; sourceTree = SOURCE_ROOT; }; | 1824 | 997B4CE906015822001B0407 /* llfilepicker.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llfilepicker.h; sourceTree = SOURCE_ROOT; }; |
1829 | 997B4CEA06015822001B0407 /* llfft.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llfft.h; sourceTree = SOURCE_ROOT; }; | ||
1830 | 997B4CEB06015822001B0407 /* llfeaturemanager.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llfeaturemanager.h; sourceTree = SOURCE_ROOT; }; | 1825 | 997B4CEB06015822001B0407 /* llfeaturemanager.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llfeaturemanager.h; sourceTree = SOURCE_ROOT; }; |
1831 | 997B4CEC06015822001B0407 /* llface.inl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = llface.inl; sourceTree = SOURCE_ROOT; }; | 1826 | 997B4CEC06015822001B0407 /* llface.inl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = llface.inl; sourceTree = SOURCE_ROOT; }; |
1832 | 997B4CEE06015822001B0407 /* llcylinder.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llcylinder.h; sourceTree = SOURCE_ROOT; }; | 1827 | 997B4CEE06015822001B0407 /* llcylinder.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llcylinder.h; sourceTree = SOURCE_ROOT; }; |
@@ -1848,7 +1843,6 @@ | |||
1848 | 997B4D0006015823001B0407 /* lldrawpool.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = lldrawpool.h; sourceTree = SOURCE_ROOT; }; | 1843 | 997B4D0006015823001B0407 /* lldrawpool.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = lldrawpool.h; sourceTree = SOURCE_ROOT; }; |
1849 | 997B4D0106015823001B0407 /* lldrawable.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = lldrawable.h; sourceTree = SOURCE_ROOT; }; | 1844 | 997B4D0106015823001B0407 /* lldrawable.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = lldrawable.h; sourceTree = SOURCE_ROOT; }; |
1850 | 997B4D0306015823001B0407 /* lldebugview.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = lldebugview.h; sourceTree = SOURCE_ROOT; }; | 1845 | 997B4D0306015823001B0407 /* lldebugview.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = lldebugview.h; sourceTree = SOURCE_ROOT; }; |
1851 | 997B4D0406015823001B0407 /* llcountdown.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llcountdown.h; sourceTree = SOURCE_ROOT; }; | ||
1852 | 997B4D0506015823001B0407 /* llconversation.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llconversation.h; sourceTree = SOURCE_ROOT; }; | 1846 | 997B4D0506015823001B0407 /* llconversation.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llconversation.h; sourceTree = SOURCE_ROOT; }; |
1853 | 997B4D0606015823001B0407 /* llcontainerview.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llcontainerview.h; sourceTree = SOURCE_ROOT; }; | 1847 | 997B4D0606015823001B0407 /* llcontainerview.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llcontainerview.h; sourceTree = SOURCE_ROOT; }; |
1854 | 997B4D0706015823001B0407 /* llconsole.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llconsole.h; sourceTree = SOURCE_ROOT; }; | 1848 | 997B4D0706015823001B0407 /* llconsole.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llconsole.h; sourceTree = SOURCE_ROOT; }; |
@@ -2352,6 +2346,9 @@ | |||
2352 | 26F529A0051F61CD00A80050 /* newview */ = { | 2346 | 26F529A0051F61CD00A80050 /* newview */ = { |
2353 | isa = PBXGroup; | 2347 | isa = PBXGroup; |
2354 | children = ( | 2348 | children = ( |
2349 | 1A0DA5100C3AC07700361F49 /* llviewerjointmesh_vec.cpp */, | ||
2350 | 1A0DA5110C3AC07700361F49 /* llviewerjointmesh_sse2.cpp */, | ||
2351 | 1A0DA5120C3AC07700361F49 /* llviewerjointmesh_sse.cpp */, | ||
2355 | 26F52A9D051F61DF00A80050 /* head.cpp */, | 2352 | 26F52A9D051F61DF00A80050 /* head.cpp */, |
2356 | 26F52A41051F61DF00A80050 /* llagent.cpp */, | 2353 | 26F52A41051F61DF00A80050 /* llagent.cpp */, |
2357 | 1A758C910A436FCA00589675 /* llagentdata.cpp */, | 2354 | 1A758C910A436FCA00589675 /* llagentdata.cpp */, |
@@ -2379,7 +2376,6 @@ | |||
2379 | 26F52A03051F61DF00A80050 /* llconsole.cpp */, | 2376 | 26F52A03051F61DF00A80050 /* llconsole.cpp */, |
2380 | 26F52A78051F61DF00A80050 /* llcontainerview.cpp */, | 2377 | 26F52A78051F61DF00A80050 /* llcontainerview.cpp */, |
2381 | 26F52A1B051F61DF00A80050 /* llcontroldef.cpp */, | 2378 | 26F52A1B051F61DF00A80050 /* llcontroldef.cpp */, |
2382 | 26F52A1A051F61DF00A80050 /* llcountdown.cpp */, | ||
2383 | 26F52ACB051F61DF00A80050 /* llcubemap.cpp */, | 2379 | 26F52ACB051F61DF00A80050 /* llcubemap.cpp */, |
2384 | 99BB5170099AC1FC004BF9F2 /* llcurrencyuimanager.cpp */, | 2380 | 99BB5170099AC1FC004BF9F2 /* llcurrencyuimanager.cpp */, |
2385 | 99BB5171099AC1FC004BF9F2 /* llcurrencyuimanager.h */, | 2381 | 99BB5171099AC1FC004BF9F2 /* llcurrencyuimanager.h */, |
@@ -2412,7 +2408,6 @@ | |||
2412 | 26F52A3A051F61DF00A80050 /* llface.cpp */, | 2408 | 26F52A3A051F61DF00A80050 /* llface.cpp */, |
2413 | 912541AD0691FF79008C66F7 /* llfasttimerview.cpp */, | 2409 | 912541AD0691FF79008C66F7 /* llfasttimerview.cpp */, |
2414 | 263E02FE05239C9A00A80050 /* llfeaturemanager.cpp */, | 2410 | 263E02FE05239C9A00A80050 /* llfeaturemanager.cpp */, |
2415 | 26F52AAC051F61DF00A80050 /* llfft.cpp */, | ||
2416 | 26F52AD3051F61DF00A80050 /* llfilepicker.cpp */, | 2411 | 26F52AD3051F61DF00A80050 /* llfilepicker.cpp */, |
2417 | 8B2ECFA00534C21A00A80059 /* llfirstuse.cpp */, | 2412 | 8B2ECFA00534C21A00A80059 /* llfirstuse.cpp */, |
2418 | 8B2ECF9E0534C17A00A80059 /* llfirstuse.h */, | 2413 | 8B2ECF9E0534C17A00A80059 /* llfirstuse.h */, |
@@ -2628,7 +2623,6 @@ | |||
2628 | 26F52A28051F61DF00A80050 /* lltexturectrl.cpp */, | 2623 | 26F52A28051F61DF00A80050 /* lltexturectrl.cpp */, |
2629 | AA02B9BA0B0CE44D00F2996D /* lltexturefetch.cpp */, | 2624 | AA02B9BA0B0CE44D00F2996D /* lltexturefetch.cpp */, |
2630 | AA02B9BB0B0CE44D00F2996D /* lltexturefetch.h */, | 2625 | AA02B9BB0B0CE44D00F2996D /* lltexturefetch.h */, |
2631 | 26F52A27051F61DF00A80050 /* lltexturetable.cpp */, | ||
2632 | 26F529F6051F61DF00A80050 /* lltextureview.cpp */, | 2626 | 26F529F6051F61DF00A80050 /* lltextureview.cpp */, |
2633 | 26F529F5051F61DF00A80050 /* lltool.cpp */, | 2627 | 26F529F5051F61DF00A80050 /* lltool.cpp */, |
2634 | 26F529F4051F61DF00A80050 /* lltoolbar.cpp */, | 2628 | 26F529F4051F61DF00A80050 /* lltoolbar.cpp */, |
@@ -2724,7 +2718,6 @@ | |||
2724 | 26F529C9051F61DF00A80050 /* llvotree.cpp */, | 2718 | 26F529C9051F61DF00A80050 /* llvotree.cpp */, |
2725 | 26F529C7051F61DF00A80050 /* llvovolume.cpp */, | 2719 | 26F529C7051F61DF00A80050 /* llvovolume.cpp */, |
2726 | 26F529C6051F61DF00A80050 /* llvowater.cpp */, | 2720 | 26F529C6051F61DF00A80050 /* llvowater.cpp */, |
2727 | 26F529C5051F61DF00A80050 /* llwaterpatch.cpp */, | ||
2728 | 26F529C4051F61DF00A80050 /* llwearable.cpp */, | 2721 | 26F529C4051F61DF00A80050 /* llwearable.cpp */, |
2729 | 26F529C3051F61DF00A80050 /* llwearablelist.cpp */, | 2722 | 26F529C3051F61DF00A80050 /* llwearablelist.cpp */, |
2730 | 1AF7C1E30AF6C44800C4BF4A /* llweb.cpp */, | 2723 | 1AF7C1E30AF6C44800C4BF4A /* llweb.cpp */, |
@@ -3155,48 +3148,38 @@ | |||
3155 | 6192225C074A9B5A005E1F34 /* llui */ = { | 3148 | 6192225C074A9B5A005E1F34 /* llui */ = { |
3156 | isa = PBXGroup; | 3149 | isa = PBXGroup; |
3157 | children = ( | 3150 | children = ( |
3158 | A29852A10BC6BC630005FA09 /* llhtmlhelp.h */, | ||
3159 | 1A1F130A0B3919F100845A6C /* lleditmenuhandler.h */, | ||
3160 | 1A1F130B0B3919F100845A6C /* lleditmenuhandler.cpp */, | ||
3161 | 1AEF0A590B2DFE71003F107C /* llrootview.h */, | ||
3162 | 1AEF0A5A0B2DFE72003F107C /* llrootview.cpp */, | ||
3163 | 1AEF0A560B2DFE67003F107C /* llctrlselectioninterface.cpp */, | ||
3164 | 1AEF0A570B2DFE67003F107C /* llctrlselectioninterface.h */, | ||
3165 | 299F95BE0ADDE5D000C94EEF /* llviewquery.cpp */, | ||
3166 | 299F95BF0ADDE5D000C94EEF /* llviewquery.h */, | ||
3167 | AAEAAF250A8104D8005F0707 /* llscrollingpanellist.cpp */, | ||
3168 | AAEAAF260A8104D8005F0707 /* llscrollingpanellist.h */, | ||
3169 | AAA133690A3F94D000419F7C /* lluistring.cpp */, | ||
3170 | AAA1336A0A3F94D000419F7C /* lluistring.h */, | ||
3171 | 1A8BF3770A1AAB7B005B9D5A /* llcallbackmap.h */, | ||
3172 | 93AE41C908F483E300141675 /* llalertdialog.h */, | ||
3173 | 93AE41CA08F483E300141675 /* llmodaldialog.h */, | ||
3174 | 93AE41C508F483C800141675 /* llalertdialog.cpp */, | 3151 | 93AE41C508F483C800141675 /* llalertdialog.cpp */, |
3175 | 93AE41C608F483C900141675 /* llmodaldialog.cpp */, | 3152 | 93AE41C908F483E300141675 /* llalertdialog.h */, |
3176 | EB9E8314082AEEF2007B4479 /* llmenugl.cpp */, | ||
3177 | EB9E8315082AEEF2007B4479 /* llmenugl.h */, | ||
3178 | EB9E8316082AEEF2007B4479 /* llresmgr.cpp */, | ||
3179 | EB9E8317082AEEF2007B4479 /* llresmgr.h */, | ||
3180 | EB3EE68E083ABB5D002BF676 /* llbutton.cpp */, | 3153 | EB3EE68E083ABB5D002BF676 /* llbutton.cpp */, |
3181 | EB3EE68F083ABB5D002BF676 /* llbutton.h */, | 3154 | EB3EE68F083ABB5D002BF676 /* llbutton.h */, |
3155 | 1A8BF3770A1AAB7B005B9D5A /* llcallbackmap.h */, | ||
3182 | EB3EE690083ABB5D002BF676 /* llcheckboxctrl.cpp */, | 3156 | EB3EE690083ABB5D002BF676 /* llcheckboxctrl.cpp */, |
3183 | EB3EE691083ABB5D002BF676 /* llcheckboxctrl.h */, | 3157 | EB3EE691083ABB5D002BF676 /* llcheckboxctrl.h */, |
3184 | EB3EE692083ABB5D002BF676 /* llclipboard.cpp */, | 3158 | EB3EE692083ABB5D002BF676 /* llclipboard.cpp */, |
3185 | EB3EE693083ABB5D002BF676 /* llclipboard.h */, | 3159 | EB3EE693083ABB5D002BF676 /* llclipboard.h */, |
3186 | EB3EE694083ABB5D002BF676 /* llcombobox.cpp */, | 3160 | EB3EE694083ABB5D002BF676 /* llcombobox.cpp */, |
3187 | EB3EE695083ABB5D002BF676 /* llcombobox.h */, | 3161 | EB3EE695083ABB5D002BF676 /* llcombobox.h */, |
3162 | 1AEF0A560B2DFE67003F107C /* llctrlselectioninterface.cpp */, | ||
3163 | 1AEF0A570B2DFE67003F107C /* llctrlselectioninterface.h */, | ||
3188 | EB3EE696083ABB5D002BF676 /* lldraghandle.cpp */, | 3164 | EB3EE696083ABB5D002BF676 /* lldraghandle.cpp */, |
3189 | EB3EE697083ABB5D002BF676 /* lldraghandle.h */, | 3165 | EB3EE697083ABB5D002BF676 /* lldraghandle.h */, |
3166 | 1A1F130B0B3919F100845A6C /* lleditmenuhandler.cpp */, | ||
3167 | 1A1F130A0B3919F100845A6C /* lleditmenuhandler.h */, | ||
3190 | EB3EE698083ABB5D002BF676 /* llfloater.cpp */, | 3168 | EB3EE698083ABB5D002BF676 /* llfloater.cpp */, |
3191 | EB3EE699083ABB5D002BF676 /* llfloater.h */, | 3169 | EB3EE699083ABB5D002BF676 /* llfloater.h */, |
3192 | EB3EE69A083ABB5D002BF676 /* llfocusmgr.cpp */, | 3170 | EB3EE69A083ABB5D002BF676 /* llfocusmgr.cpp */, |
3193 | EB3EE69B083ABB5D002BF676 /* llfocusmgr.h */, | 3171 | EB3EE69B083ABB5D002BF676 /* llfocusmgr.h */, |
3172 | A29852A10BC6BC630005FA09 /* llhtmlhelp.h */, | ||
3194 | EB3EE69C083ABB5D002BF676 /* lliconctrl.cpp */, | 3173 | EB3EE69C083ABB5D002BF676 /* lliconctrl.cpp */, |
3195 | EB3EE69D083ABB5D002BF676 /* lliconctrl.h */, | 3174 | EB3EE69D083ABB5D002BF676 /* lliconctrl.h */, |
3196 | EB3EE69E083ABB5D002BF676 /* llkeywords.cpp */, | 3175 | EB3EE69E083ABB5D002BF676 /* llkeywords.cpp */, |
3197 | EB3EE69F083ABB5D002BF676 /* llkeywords.h */, | 3176 | EB3EE69F083ABB5D002BF676 /* llkeywords.h */, |
3198 | EB3EE6A0083ABB5D002BF676 /* lllineeditor.cpp */, | 3177 | EB3EE6A0083ABB5D002BF676 /* lllineeditor.cpp */, |
3199 | EB3EE6A1083ABB5D002BF676 /* lllineeditor.h */, | 3178 | EB3EE6A1083ABB5D002BF676 /* lllineeditor.h */, |
3179 | EB9E8314082AEEF2007B4479 /* llmenugl.cpp */, | ||
3180 | EB9E8315082AEEF2007B4479 /* llmenugl.h */, | ||
3181 | 93AE41C608F483C900141675 /* llmodaldialog.cpp */, | ||
3182 | 93AE41CA08F483E300141675 /* llmodaldialog.h */, | ||
3200 | EB3EE6A2083ABB5D002BF676 /* llpanel.cpp */, | 3183 | EB3EE6A2083ABB5D002BF676 /* llpanel.cpp */, |
3201 | EB3EE6A3083ABB5D002BF676 /* llpanel.h */, | 3184 | EB3EE6A3083ABB5D002BF676 /* llpanel.h */, |
3202 | EB3EE6A4083ABB5D002BF676 /* llradiogroup.cpp */, | 3185 | EB3EE6A4083ABB5D002BF676 /* llradiogroup.cpp */, |
@@ -3205,10 +3188,16 @@ | |||
3205 | EB3EE6A7083ABB5D002BF676 /* llresizebar.h */, | 3188 | EB3EE6A7083ABB5D002BF676 /* llresizebar.h */, |
3206 | EB3EE6A8083ABB5D002BF676 /* llresizehandle.cpp */, | 3189 | EB3EE6A8083ABB5D002BF676 /* llresizehandle.cpp */, |
3207 | EB3EE6A9083ABB5D002BF676 /* llresizehandle.h */, | 3190 | EB3EE6A9083ABB5D002BF676 /* llresizehandle.h */, |
3191 | EB9E8316082AEEF2007B4479 /* llresmgr.cpp */, | ||
3192 | EB9E8317082AEEF2007B4479 /* llresmgr.h */, | ||
3193 | 1AEF0A5A0B2DFE72003F107C /* llrootview.cpp */, | ||
3194 | 1AEF0A590B2DFE71003F107C /* llrootview.h */, | ||
3208 | EB3EE6AA083ABB5D002BF676 /* llscrollbar.cpp */, | 3195 | EB3EE6AA083ABB5D002BF676 /* llscrollbar.cpp */, |
3209 | EB3EE6AB083ABB5D002BF676 /* llscrollbar.h */, | 3196 | EB3EE6AB083ABB5D002BF676 /* llscrollbar.h */, |
3210 | EB3EE6AC083ABB5D002BF676 /* llscrollcontainer.cpp */, | 3197 | EB3EE6AC083ABB5D002BF676 /* llscrollcontainer.cpp */, |
3211 | EB3EE6AD083ABB5D002BF676 /* llscrollcontainer.h */, | 3198 | EB3EE6AD083ABB5D002BF676 /* llscrollcontainer.h */, |
3199 | AAEAAF250A8104D8005F0707 /* llscrollingpanellist.cpp */, | ||
3200 | AAEAAF260A8104D8005F0707 /* llscrollingpanellist.h */, | ||
3212 | EB3EE6AE083ABB5D002BF676 /* llscrolllistctrl.cpp */, | 3201 | EB3EE6AE083ABB5D002BF676 /* llscrolllistctrl.cpp */, |
3213 | EB3EE6AF083ABB5D002BF676 /* llscrolllistctrl.h */, | 3202 | EB3EE6AF083ABB5D002BF676 /* llscrolllistctrl.h */, |
3214 | EB3EE6B0083ABB5D002BF676 /* llslider.cpp */, | 3203 | EB3EE6B0083ABB5D002BF676 /* llslider.cpp */, |
@@ -3227,19 +3216,23 @@ | |||
3227 | EB3EE6BD083ABB5D002BF676 /* lltextbox.h */, | 3216 | EB3EE6BD083ABB5D002BF676 /* lltextbox.h */, |
3228 | EB3EE6C0083ABB5D002BF676 /* lltexteditor.cpp */, | 3217 | EB3EE6C0083ABB5D002BF676 /* lltexteditor.cpp */, |
3229 | EB3EE6C1083ABB5D002BF676 /* lltexteditor.h */, | 3218 | EB3EE6C1083ABB5D002BF676 /* lltexteditor.h */, |
3230 | EB3EE6C2083ABB5D002BF676 /* lluictrlfactory.cpp */, | ||
3231 | EB3EE6C3083ABB5D002BF676 /* lluictrlfactory.h */, | ||
3232 | EB3EE6C4083ABB5E002BF676 /* llviewborder.cpp */, | ||
3233 | EB3EE6C5083ABB5E002BF676 /* llviewborder.h */, | ||
3234 | EB9E8318082AEEF3007B4479 /* llui.cpp */, | 3219 | EB9E8318082AEEF3007B4479 /* llui.cpp */, |
3235 | EB9E8319082AEEF3007B4479 /* llui.h */, | 3220 | EB9E8319082AEEF3007B4479 /* llui.h */, |
3236 | EB9E831A082AEEF3007B4479 /* lluiconstants.h */, | 3221 | EB9E831A082AEEF3007B4479 /* lluiconstants.h */, |
3237 | EB9E831B082AEEF3007B4479 /* lluictrl.cpp */, | 3222 | EB9E831B082AEEF3007B4479 /* lluictrl.cpp */, |
3238 | EB9E831C082AEEF3007B4479 /* lluictrl.h */, | 3223 | EB9E831C082AEEF3007B4479 /* lluictrl.h */, |
3239 | EB9E831D082AEEF3007B4479 /* llview.cpp */, | 3224 | EB3EE6C2083ABB5D002BF676 /* lluictrlfactory.cpp */, |
3240 | EB9E831E082AEEF3007B4479 /* llview.h */, | 3225 | EB3EE6C3083ABB5D002BF676 /* lluictrlfactory.h */, |
3226 | AAA133690A3F94D000419F7C /* lluistring.cpp */, | ||
3227 | AAA1336A0A3F94D000419F7C /* lluistring.h */, | ||
3241 | 6192225F074A9B5A005E1F34 /* llundo.cpp */, | 3228 | 6192225F074A9B5A005E1F34 /* llundo.cpp */, |
3242 | 61922260074A9B5A005E1F34 /* llundo.h */, | 3229 | 61922260074A9B5A005E1F34 /* llundo.h */, |
3230 | EB9E831D082AEEF3007B4479 /* llview.cpp */, | ||
3231 | EB9E831E082AEEF3007B4479 /* llview.h */, | ||
3232 | EB3EE6C4083ABB5E002BF676 /* llviewborder.cpp */, | ||
3233 | EB3EE6C5083ABB5E002BF676 /* llviewborder.h */, | ||
3234 | 299F95BE0ADDE5D000C94EEF /* llviewquery.cpp */, | ||
3235 | 299F95BF0ADDE5D000C94EEF /* llviewquery.h */, | ||
3243 | ); | 3236 | ); |
3244 | name = llui; | 3237 | name = llui; |
3245 | path = ../llui; | 3238 | path = ../llui; |
@@ -3528,302 +3521,298 @@ | |||
3528 | 997B4BCB060157E5001B0407 /* newview headers */ = { | 3521 | 997B4BCB060157E5001B0407 /* newview headers */ = { |
3529 | isa = PBXGroup; | 3522 | isa = PBXGroup; |
3530 | children = ( | 3523 | children = ( |
3524 | 997B4CF006015822001B0407 /* audiosettings.h */, | ||
3525 | 997B4D2406015823001B0407 /* head.h */, | ||
3526 | 997B4D2306015823001B0407 /* llagent.h */, | ||
3527 | 1A758C990A43700400589675 /* llagentdata.h */, | ||
3528 | 997B4D2206015823001B0407 /* llagentpilot.h */, | ||
3529 | 997B4D2106015823001B0407 /* llagparray.h */, | ||
3530 | 997B4D2006015823001B0407 /* llagparray.inl */, | ||
3531 | 997B4D1E06015823001B0407 /* llappearance.h */, | ||
3532 | 997B4D2506015823001B0407 /* llasynchostbyname.h */, | ||
3533 | 997B4D1C06015823001B0407 /* llaudiostatus.h */, | ||
3534 | 997B4D1806015823001B0407 /* llbbox.h */, | ||
3535 | 997B4D1606015823001B0407 /* llbox.h */, | ||
3536 | 997B4D1306015823001B0407 /* llcallbacklist.h */, | ||
3537 | 997B4D1206015823001B0407 /* llcallingcard.h */, | ||
3538 | 997B4D1106015823001B0407 /* llcameraview.h */, | ||
3531 | 9C1842500B9F94F200208356 /* llcaphttpsender.h */, | 3539 | 9C1842500B9F94F200208356 /* llcaphttpsender.h */, |
3532 | 1A8870E60BCC5AAD00E89AA6 /* llresourcedata.h */, | 3540 | 997B4D1006015823001B0407 /* llchatbar.h */, |
3533 | A3C20E4E0BB0BD49007E872B /* llviewerjoystick.h */, | 3541 | 997B4D0D06015823001B0407 /* llcloud.h */, |
3534 | A3C20E4D0BB0BD37007E872B /* llglslshader.h */, | 3542 | 997B4D0C06015823001B0407 /* llcolorscheme.h */, |
3535 | 1AF7C1F20AF6C45000C4BF4A /* llweb.h */, | 3543 | 997B4D0B06015823001B0407 /* llcolorswatch.h */, |
3544 | 997B4D0906015823001B0407 /* llcompass.h */, | ||
3545 | 997B4D0806015823001B0407 /* llcompilequeue.h */, | ||
3546 | 997B4D0706015823001B0407 /* llconsole.h */, | ||
3547 | 997B4D0606015823001B0407 /* llcontainerview.h */, | ||
3548 | 997B4D0506015823001B0407 /* llconversation.h */, | ||
3549 | 997B4CEF06015822001B0407 /* llcubemap.h */, | ||
3550 | 997B4CEE06015822001B0407 /* llcylinder.h */, | ||
3551 | 997B4D0306015823001B0407 /* lldebugview.h */, | ||
3552 | 997B4D0106015823001B0407 /* lldrawable.h */, | ||
3553 | 997B4D0006015823001B0407 /* lldrawpool.h */, | ||
3554 | 997B4CFF06015823001B0407 /* lldrawpoolalpha.h */, | ||
3555 | 997B4CFE06015823001B0407 /* lldrawpoolavatar.h */, | ||
3556 | 997B4CFD06015823001B0407 /* lldrawpoolbump.h */, | ||
3557 | 997B4CFC06015823001B0407 /* lldrawpoolground.h */, | ||
3558 | 997B4CFB06015823001B0407 /* lldrawpoolsimple.h */, | ||
3559 | 997B4CFA06015823001B0407 /* lldrawpoolsky.h */, | ||
3560 | 997B4CF806015823001B0407 /* lldrawpoolterrain.h */, | ||
3561 | 997B4CF706015823001B0407 /* lldrawpooltree.h */, | ||
3562 | 997B4CF606015823001B0407 /* lldrawpooltreenew.h */, | ||
3563 | 997B4CF506015823001B0407 /* lldrawpoolwater.h */, | ||
3564 | 997B4CF406015822001B0407 /* lldriverparam.h */, | ||
3565 | 997B4CF206015822001B0407 /* llemote.h */, | ||
3566 | 915F492B06B5739800F629BF /* lleventinfo.h */, | ||
3567 | 915F492306B572FB00F629BF /* lleventnotifier.h */, | ||
3568 | 997B4CF106015822001B0407 /* llface.h */, | ||
3569 | 997B4CEC06015822001B0407 /* llface.inl */, | ||
3570 | 912541B00691FF8D008C66F7 /* llfasttimerview.h */, | ||
3571 | 997B4CEB06015822001B0407 /* llfeaturemanager.h */, | ||
3572 | 997B4CE906015822001B0407 /* llfilepicker.h */, | ||
3573 | 997B4CE706015822001B0407 /* llfirstuse.h */, | ||
3574 | 997B4CE506015822001B0407 /* llfloaterabout.h */, | ||
3575 | 997B4CE306015822001B0407 /* llfloaterauction.h */, | ||
3576 | 997B4CE206015822001B0407 /* llfloateravatarinfo.h */, | ||
3577 | 1A61A7FA0A5ED44E009FE3D2 /* llfloateravatarpicker.h */, | ||
3536 | 1AF9CA450AE972D4003EFF2D /* llfloateravatartextures.h */, | 3578 | 1AF9CA450AE972D4003EFF2D /* llfloateravatartextures.h */, |
3537 | 1AD61F6C0AC09B2600507FB9 /* llimview.h */, | 3579 | 997B4CE006015822001B0407 /* llfloaterbuildoptions.h */, |
3538 | 1A5B3B530A70146900A90391 /* llfloaterbump.h */, | 3580 | 1A5B3B530A70146900A90391 /* llfloaterbump.h */, |
3539 | A3285A350A71419F00F619A5 /* llinventorybridge.h */, | 3581 | 997B4CDF06015822001B0407 /* llfloaterbuy.h */, |
3540 | A3D968F10A6EBCA7007E8BD2 /* llfloaternewim.h */, | 3582 | 997B4CDE06015822001B0407 /* llfloaterbuycontents.h */, |
3541 | 1A61A7FA0A5ED44E009FE3D2 /* llfloateravatarpicker.h */, | 3583 | 997B4CDC06015822001B0407 /* llfloaterchat.h */, |
3542 | A3AF6BD00A544F0A005B5E2C /* llpanellogin.h */, | 3584 | 91CB311706FB586300DBCE1E /* llfloaterclothing.h */, |
3543 | 1A758C990A43700400589675 /* llagentdata.h */, | 3585 | 997B4CDB06015822001B0407 /* llfloatercustomize.h */, |
3544 | 1A758C980A436FF400589675 /* llpanellandoptions.h */, | 3586 | 997B4CDA06015822001B0407 /* llfloaterdirectory.h */, |
3545 | 1A758C970A436FF000589675 /* llpanellandobjects.h */, | 3587 | 913AA1FE0798560200D111CE /* llfloaterfriends.h */, |
3546 | 1AFA40B60A2DFD8200C13F70 /* llsavedsettingsglue.h */, | 3588 | 997B4CD906015822001B0407 /* llfloatergesture.h */, |
3547 | 1A8BF3790A1AABAD005B9D5A /* llfloatertest.h */, | 3589 | 997B4CD806015822001B0407 /* llfloatergodtools.h */, |
3548 | 1A3143DD0A02B725005B87E7 /* llprefschat.h */, | 3590 | 997B4CD606015822001B0407 /* llfloatergroupinfo.h */, |
3549 | 1A3143DC0A02B720005B87E7 /* llprefsim.h */, | ||
3550 | 1A3143DB0A02B70E005B87E7 /* llviewernetwork.h */, | ||
3551 | 84401E2E0A13CC9A006720A5 /* llfloatergroupinvite.h */, | 3591 | 84401E2E0A13CC9A006720A5 /* llfloatergroupinvite.h */, |
3592 | 997B4CD506015822001B0407 /* llfloatergroupprofile.h */, | ||
3593 | 997B4CD406015822001B0407 /* llfloatergroups.h */, | ||
3594 | 997B4CD206015822001B0407 /* llfloaterland.h */, | ||
3595 | 997B4CD106015822001B0407 /* llfloaterlandholdings.h */, | ||
3596 | 997B4CCF06015822001B0407 /* llfloatermap.h */, | ||
3597 | 997B4CCD06015822001B0407 /* llfloatermute.h */, | ||
3598 | 997B4CCC06015822001B0407 /* llfloaternamedesc.h */, | ||
3599 | A3D968F10A6EBCA7007E8BD2 /* llfloaternewim.h */, | ||
3600 | 997B4CCB06015822001B0407 /* llfloaterpostcard.h */, | ||
3601 | 997B4CCA06015822001B0407 /* llfloaterpreference.h */, | ||
3602 | 997B4CC906015822001B0407 /* llfloaterproperties.h */, | ||
3603 | 9174D2C20653FC3700A7E32B /* llfloaterregioninfo.h */, | ||
3604 | 997B4CC706015822001B0407 /* llfloaterreporter.h */, | ||
3552 | 91E86C3307BD3B6400F56E75 /* llfloatersaveavatar.h */, | 3605 | 91E86C3307BD3B6400F56E75 /* llfloatersaveavatar.h */, |
3553 | 913AA1FE0798560200D111CE /* llfloaterfriends.h */, | 3606 | 997B4CC606015822001B0407 /* llfloatersnapshot.h */, |
3554 | 9104C0CD0778AE20001EC4F6 /* llpanelmsgs.h */, | 3607 | 1A8BF3790A1AABAD005B9D5A /* llfloatertest.h */, |
3608 | 997B4CC506015822001B0407 /* llfloatertools.h */, | ||
3609 | 997B4CC406015822001B0407 /* llfloatertos.h */, | ||
3610 | 997B4CC106015822001B0407 /* llfloaterworldmap.h */, | ||
3611 | 997B4CC006015822001B0407 /* llfolderview.h */, | ||
3612 | 997B4CBF06015822001B0407 /* llframestats.h */, | ||
3613 | 997B4CBE06015822001B0407 /* llframestatview.h */, | ||
3614 | 997B4CBD06015822001B0407 /* llgenepool.h */, | ||
3615 | 91FC1D480652802C009CF498 /* llgesturemgr.h */, | ||
3616 | 997B4CBC06015822001B0407 /* llgivemoney.h */, | ||
3617 | A3C20E4D0BB0BD37007E872B /* llglslshader.h */, | ||
3555 | 2EFEA8EA09F4557900CB0193 /* llgroupnotify.h */, | 3618 | 2EFEA8EA09F4557900CB0193 /* llgroupnotify.h */, |
3556 | 91CB311706FB586300DBCE1E /* llfloaterclothing.h */, | 3619 | 997B4CBA06015822001B0407 /* llhippo.h */, |
3620 | 997B4CB906015822001B0407 /* llhoverview.h */, | ||
3621 | 997B4CB806015822001B0407 /* llhudconnector.h */, | ||
3622 | 997B4CB706015822001B0407 /* llhudeffect.h */, | ||
3623 | 997B4CB606015822001B0407 /* llhudeffectbeam.h */, | ||
3624 | 997B4CB506015822001B0407 /* llhudeffectlookat.h */, | ||
3625 | 997B4CB406015822001B0407 /* llhudeffectpointat.h */, | ||
3626 | 997B4CB306015822001B0407 /* llhudeffecttrail.h */, | ||
3627 | 997B4CB206015822001B0407 /* llhudmanager.h */, | ||
3628 | 997B4CB106015822001B0407 /* llhudobject.h */, | ||
3629 | 997B4CB006015822001B0407 /* llhudrender.h */, | ||
3630 | 997B4CAF06015822001B0407 /* llhudtext.h */, | ||
3631 | 997B4CAE06015822001B0407 /* llhudview.h */, | ||
3632 | 997B4CAC06015822001B0407 /* llimpanel.h */, | ||
3633 | 1AD61F6C0AC09B2600507FB9 /* llimview.h */, | ||
3634 | A3285A350A71419F00F619A5 /* llinventorybridge.h */, | ||
3635 | 997B4CAB06015822001B0407 /* llinventoryclipboard.h */, | ||
3636 | 997B4CAA06015822001B0407 /* llinventorymodel.h */, | ||
3637 | 997B4CA906015822001B0407 /* llinventoryview.h */, | ||
3638 | 997B4CA806015822001B0407 /* lljoystickbutton.h */, | ||
3639 | 997B4CA506015822001B0407 /* lllandmarklist.h */, | ||
3640 | 997B4CA406015822001B0407 /* lllightconstants.h */, | ||
3641 | 997B4CA106015822001B0407 /* llmanip.h */, | ||
3642 | 997B4CA006015822001B0407 /* llmaniprotate.h */, | ||
3643 | 997B4C9F06015822001B0407 /* llmanipscale.h */, | ||
3644 | 997B4C9E06015822001B0407 /* llmaniptranslate.h */, | ||
3645 | E34C14750AE6A3FF009BF4DE /* llmapresponders.h */, | ||
3646 | 997B4C9D06015822001B0407 /* llmenucommands.h */, | ||
3647 | 997B4C9906015822001B0407 /* llmorphview.h */, | ||
3648 | 997B4C9806015822001B0407 /* llmoveview.h */, | ||
3649 | 997B4C9706015822001B0407 /* llmutelist.h */, | ||
3650 | 997B4C9606015822001B0407 /* llnamebox.h */, | ||
3651 | 997B4C9506015822001B0407 /* llnameeditor.h */, | ||
3652 | 997B4C9406015822001B0407 /* llnamelistctrl.h */, | ||
3653 | 997B4C9306015822001B0407 /* llnetmap.h */, | ||
3654 | 997B4C9106015822001B0407 /* llnotify.h */, | ||
3655 | 997B4C9006015822001B0407 /* lloverlaybar.h */, | ||
3656 | 997B4C8E06015822001B0407 /* llpanelaudioprefs.h */, | ||
3657 | 997B4C8D06015822001B0407 /* llpanelavatar.h */, | ||
3658 | 99FBB048087363B00048A5CC /* llpanelclassified.h */, | ||
3659 | 997B4C8B06015822001B0407 /* llpanelcontents.h */, | ||
3660 | 997B4C8A06015822001B0407 /* llpanelcreate.h */, | ||
3661 | 997B4C8906015822001B0407 /* llpaneldebug.h */, | ||
3662 | 997B4C8606015822001B0407 /* llpaneldirbrowser.h */, | ||
3663 | 99FBB090087366930048A5CC /* llpaneldirclassified.h */, | ||
3664 | 997B4C8506015822001B0407 /* llpaneldirevents.h */, | ||
3665 | 997B4C8406015822001B0407 /* llpaneldirfind.h */, | ||
3666 | 997B4C8306015822001B0407 /* llpaneldirgroups.h */, | ||
3667 | 997B4C8206015822001B0407 /* llpaneldirland.h */, | ||
3668 | 997B4C8006015822001B0407 /* llpaneldirpeople.h */, | ||
3669 | 997B4C7F06015822001B0407 /* llpaneldirpicks.h */, | ||
3670 | 997B4C7E06015822001B0407 /* llpaneldirplaces.h */, | ||
3671 | 997B4C7D06015822001B0407 /* llpaneldirpopular.h */, | ||
3672 | 997B4C7C06015822001B0407 /* llpaneldisplay.h */, | ||
3673 | 997B4C7A06015822001B0407 /* llpanelevent.h */, | ||
3674 | 997B4C7906015822001B0407 /* llpanelface.h */, | ||
3675 | 997B4C7706015822001B0407 /* llpanelgeneral.h */, | ||
3676 | 2EFEA8ED09F455C900CB0193 /* llpanelgroup.h */, | ||
3677 | 2EFEA8EF09F4588000CB0193 /* llpanelgroupgeneral.h */, | ||
3557 | 84401E310A13CCB2006720A5 /* llpanelgroupinvite.h */, | 3678 | 84401E310A13CCB2006720A5 /* llpanelgroupinvite.h */, |
3558 | 2EA4CEEE09F83C0B008F60F7 /* llpanelgrouplandmoney.h */, | 3679 | 2EA4CEEE09F83C0B008F60F7 /* llpanelgrouplandmoney.h */, |
3559 | 2EA4CEEF09F83C16008F60F7 /* llpanelgrouproles.h */, | ||
3560 | 2E6FE90E09FD562D00AF02FF /* llpanelgroupnotices.h */, | 3680 | 2E6FE90E09FD562D00AF02FF /* llpanelgroupnotices.h */, |
3561 | 915F492B06B5739800F629BF /* lleventinfo.h */, | 3681 | 2EA4CEEF09F83C16008F60F7 /* llpanelgrouproles.h */, |
3562 | 915F492306B572FB00F629BF /* lleventnotifier.h */, | 3682 | 997B4C7506015822001B0407 /* llpanelgroupvoting.h */, |
3563 | 91DF405006A73E0C00CA7FE5 /* llviewerdisplay.h */, | 3683 | 997B4C7406015822001B0407 /* llpanelinput.h */, |
3564 | 2EFEA8EF09F4588000CB0193 /* llpanelgroupgeneral.h */, | 3684 | 997B4C7306015822001B0407 /* llpanelinventory.h */, |
3565 | 2EFEA8ED09F455C900CB0193 /* llpanelgroup.h */, | 3685 | 997B4C7206015822001B0407 /* llpanelland.h */, |
3566 | 91DF402206A739CB00CA7FE5 /* llstartup.h */, | 3686 | 1A758C970A436FF000589675 /* llpanellandobjects.h */, |
3567 | 912541B00691FF8D008C66F7 /* llfasttimerview.h */, | 3687 | 1A758C980A436FF400589675 /* llpanellandoptions.h */, |
3568 | 9174D2C20653FC3700A7E32B /* llfloaterregioninfo.h */, | 3688 | 997B4C7106015822001B0407 /* llpanelleaderboard.h */, |
3569 | 91FC1D480652802C009CF498 /* llgesturemgr.h */, | 3689 | A3AF6BD00A544F0A005B5E2C /* llpanellogin.h */, |
3690 | 997B4C6F06015822001B0407 /* llpanelmorph.h */, | ||
3691 | 9104C0CD0778AE20001EC4F6 /* llpanelmsgs.h */, | ||
3692 | 997B4C6D06015822001B0407 /* llpanelnetwork.h */, | ||
3693 | 997B4C6C06015821001B0407 /* llpanelobject.h */, | ||
3694 | 997B4C6B06015821001B0407 /* llpanelpermissions.h */, | ||
3695 | 997B4C6A06015821001B0407 /* llpanelpick.h */, | ||
3696 | 997B4C6906015821001B0407 /* llpanelplace.h */, | ||
3697 | 997B4C6706015821001B0407 /* llpatchvertexarray.h */, | ||
3698 | 997B4C6506015821001B0407 /* llpolymesh.h */, | ||
3699 | 997B4C6406015821001B0407 /* llpolymorph.h */, | ||
3700 | 1A3143DD0A02B725005B87E7 /* llprefschat.h */, | ||
3701 | 1A3143DC0A02B720005B87E7 /* llprefsim.h */, | ||
3702 | 997B4C6206015821001B0407 /* llpreview.h */, | ||
3570 | 91FC1D4606527FEC009CF498 /* llpreviewgesture.h */, | 3703 | 91FC1D4606527FEC009CF498 /* llpreviewgesture.h */, |
3571 | 997B4BD006015820001B0407 /* viewer.h */, | 3704 | 997B4C6106015821001B0407 /* llpreviewlandmark.h */, |
3572 | 997B4BD106015820001B0407 /* VertexCache.h */, | 3705 | 997B4C6006015821001B0407 /* llpreviewnotecard.h */, |
3573 | 997B4BD406015820001B0407 /* randgauss.h */, | 3706 | 997B4C5F06015821001B0407 /* llpreviewobject.h */, |
3574 | 997B4BD506015820001B0407 /* pipeline.h */, | 3707 | 997B4C5E06015821001B0407 /* llpreviewscript.h */, |
3575 | 997B4BD906015821001B0407 /* noise.h */, | 3708 | 997B4C5D06015821001B0407 /* llpreviewsound.h */, |
3576 | 997B4BDA06015821001B0407 /* moviemaker.h */, | 3709 | 997B4C5C06015821001B0407 /* llpreviewtexture.h */, |
3577 | 997B4BDB06015821001B0407 /* macview_Prefix.h */, | 3710 | 997B4C5A06015821001B0407 /* llprogressview.h */, |
3578 | 997B4BDC06015821001B0407 /* macmain.h */, | 3711 | 997B4C5706015821001B0407 /* llregionposition.h */, |
3579 | 997B4BDE06015821001B0407 /* llworldmapview.h */, | 3712 | 1A8870E60BCC5AAD00E89AA6 /* llresourcedata.h */, |
3580 | 997B4BDF06015821001B0407 /* llworldmap.h */, | 3713 | 997B4C5206015821001B0407 /* llroam.h */, |
3581 | 997B4BE006015821001B0407 /* llworld.h */, | 3714 | 1AFA40B60A2DFD8200C13F70 /* llsavedsettingsglue.h */, |
3582 | 997B4BE106015821001B0407 /* llwindebug.h */, | 3715 | 997B4C4E06015821001B0407 /* llselectmgr.h */, |
3583 | 997B4BE206015821001B0407 /* llwind.h */, | 3716 | 997B4C4D06015821001B0407 /* llsky.h */, |
3584 | 997B4BE306015821001B0407 /* llwearablelist.h */, | ||
3585 | 997B4BE406015821001B0407 /* llwearable.h */, | ||
3586 | 997B4BE506015821001B0407 /* llwaterpatch.h */, | ||
3587 | 997B4BE606015821001B0407 /* llvowater.h */, | ||
3588 | 997B4BE706015821001B0407 /* llvovolume.h */, | ||
3589 | 997B4BE806015821001B0407 /* llvotreenew.h */, | ||
3590 | 997B4BE906015821001B0407 /* llvotree.h */, | ||
3591 | 997B4BEA06015821001B0407 /* llvotextbubble.h */, | ||
3592 | 997B4BEB06015821001B0407 /* llvosurfacepatch.h */, | ||
3593 | 997B4BEC06015821001B0407 /* llvosky.h */, | ||
3594 | 997B4BED06015821001B0407 /* llvopartgroup.h */, | ||
3595 | 997B4BEF06015821001B0407 /* llvoground.h */, | ||
3596 | 997B4BF006015821001B0407 /* llvograss.h */, | ||
3597 | 997B4BF106015821001B0407 /* llvoclouds.h */, | ||
3598 | 997B4BF206015821001B0407 /* llvocache.h */, | ||
3599 | 997B4BF306015821001B0407 /* llvoavatar.h */, | ||
3600 | 997B4BF406015821001B0407 /* llvlmanager.h */, | ||
3601 | 997B4BF506015821001B0407 /* llvlcomposition.h */, | ||
3602 | 997B4BF606015821001B0407 /* llviewerwindow.h */, | ||
3603 | 997B4BF706015821001B0407 /* llviewervisualparam.h */, | ||
3604 | 997B4BF806015821001B0407 /* llviewerthrottle.h */, | ||
3605 | 997B4BF906015821001B0407 /* llviewertextureanim.h */, | ||
3606 | 997B4BFA06015821001B0407 /* llviewerstats.h */, | ||
3607 | 997B4BFC06015821001B0407 /* llviewerregion.h */, | ||
3608 | 997B4BFD06015821001B0407 /* llviewerpartsource.h */, | ||
3609 | 997B4BFE06015821001B0407 /* llviewerpartsim.h */, | ||
3610 | 997B4BFF06015821001B0407 /* llviewerparceloverlay.h */, | ||
3611 | 997B4C0006015821001B0407 /* llviewerparcelmgr.h */, | ||
3612 | 997B4C0106015821001B0407 /* llviewerobjectlist.h */, | ||
3613 | 997B4C0206015821001B0407 /* llviewerobject.h */, | ||
3614 | 997B4C0306015821001B0407 /* llviewermessage.h */, | ||
3615 | 997B4C0406015821001B0407 /* llviewermenu.h */, | ||
3616 | 997B4C0506015821001B0407 /* llviewerlayer.h */, | ||
3617 | 997B4C0606015821001B0407 /* llviewerjointshape.h */, | ||
3618 | 997B4C0706015821001B0407 /* llviewerimagelist.h */, | ||
3619 | 997B4C0806015821001B0407 /* llviewerimage.h */, | ||
3620 | 997B4C0906015821001B0407 /* llviewergesture.h */, | ||
3621 | 997B4C0A06015821001B0407 /* llviewercamera.h */, | ||
3622 | 997B4C0B06015821001B0407 /* llviewerbuild.h */, | ||
3623 | 997B4C0E06015821001B0407 /* llvelocitybar.h */, | ||
3624 | 997B4C0F06015821001B0407 /* llviewerjointmesh.h */, | ||
3625 | 997B4C1006015821001B0407 /* llviewerjointattachment.h */, | ||
3626 | 997B4C1106015821001B0407 /* llviewerjoint.h */, | ||
3627 | 997B4C1206015821001B0407 /* llviewerinventory.h */, | ||
3628 | 997B4C1306015821001B0407 /* lluserauth.h */, | ||
3629 | 997B4C1406015821001B0407 /* llurl.h */, | ||
3630 | 997B4C1506015821001B0407 /* lluploaddialog.h */, | ||
3631 | 997B4C1806015821001B0407 /* lluiconstants.h */, | ||
3632 | 997B4C1B06015821001B0407 /* lltoolview.h */, | ||
3633 | 997B4C1C06015821001B0407 /* lltoolselectrect.h */, | ||
3634 | 997B4C1D06015821001B0407 /* lltoolselectland.h */, | ||
3635 | 997B4C1E06015821001B0407 /* lltoolselect.h */, | ||
3636 | 997B4C2006015821001B0407 /* lltoolplacer.h */, | ||
3637 | 997B4C2106015821001B0407 /* lltoolpie.h */, | ||
3638 | 997B4C2406015821001B0407 /* lltracker.h */, | ||
3639 | 997B4C2506015821001B0407 /* lltoolobjpicker.h */, | ||
3640 | 997B4C2606015821001B0407 /* lltoolmorph.h */, | ||
3641 | 997B4C2706015821001B0407 /* lltoolmgr.h */, | ||
3642 | 997B4C2806015821001B0407 /* lltoolindividual.h */, | ||
3643 | 997B4C2906015821001B0407 /* lltoolgun.h */, | ||
3644 | 997B4C2A06015821001B0407 /* lltoolgrab.h */, | ||
3645 | 997B4C2B06015821001B0407 /* lltoolfocus.h */, | ||
3646 | 997B4C2C06015821001B0407 /* lltoolface.h */, | ||
3647 | 997B4C2D06015821001B0407 /* lltooldraganddrop.h */, | ||
3648 | 997B4C2E06015821001B0407 /* lltoolcomp.h */, | ||
3649 | 997B4C3006015821001B0407 /* lltoolbrush.h */, | ||
3650 | 997B4C3206015821001B0407 /* lltoolbar.h */, | ||
3651 | 997B4C3306015821001B0407 /* lltool.h */, | ||
3652 | 997B4C3406015821001B0407 /* lltextureview.h */, | ||
3653 | 997B4C3506015821001B0407 /* lltexturetable.h */, | ||
3654 | 997B4C3606015821001B0407 /* lltexturectrl.h */, | ||
3655 | 997B4C3B06015821001B0407 /* lltexlayer.h */, | ||
3656 | 997B4C3D06015821001B0407 /* lltable.h */, | ||
3657 | 997B4C4006015821001B0407 /* llstatview.h */, | ||
3658 | 997B4C4106015821001B0407 /* llstatusbar.h */, | ||
3659 | 997B4C4206015821001B0407 /* llstatgraph.h */, | ||
3660 | 997B4C4306015821001B0407 /* llstatbar.h */, | ||
3661 | 997B4C4406015821001B0407 /* llsprite.h */, | ||
3662 | 997B4C4606015821001B0407 /* llsphere.h */, | ||
3663 | 997B4C4706015821001B0407 /* llspatialpartition.h */, | 3717 | 997B4C4706015821001B0407 /* llspatialpartition.h */, |
3664 | 997B4C4A06015821001B0407 /* llsurfacepatch.h */, | 3718 | 997B4C4606015821001B0407 /* llsphere.h */, |
3719 | 997B4C4406015821001B0407 /* llsprite.h */, | ||
3720 | 91DF402206A739CB00CA7FE5 /* llstartup.h */, | ||
3721 | 997B4C4306015821001B0407 /* llstatbar.h */, | ||
3722 | 997B4C4206015821001B0407 /* llstatgraph.h */, | ||
3723 | 997B4C4106015821001B0407 /* llstatusbar.h */, | ||
3724 | 997B4C4006015821001B0407 /* llstatview.h */, | ||
3665 | 997B4C4B06015821001B0407 /* llsurface.h */, | 3725 | 997B4C4B06015821001B0407 /* llsurface.h */, |
3666 | 997B4C4D06015821001B0407 /* llsky.h */, | 3726 | 997B4C4A06015821001B0407 /* llsurfacepatch.h */, |
3667 | 997B4C4E06015821001B0407 /* llselectmgr.h */, | 3727 | 997B4C3D06015821001B0407 /* lltable.h */, |
3668 | 997B4C5206015821001B0407 /* llroam.h */, | 3728 | 997B4C3B06015821001B0407 /* lltexlayer.h */, |
3669 | 997B4C5706015821001B0407 /* llregionposition.h */, | 3729 | 997B4C3606015821001B0407 /* lltexturectrl.h */, |
3670 | 997B4C5A06015821001B0407 /* llprogressview.h */, | 3730 | 997B4C3406015821001B0407 /* lltextureview.h */, |
3671 | 997B4C5C06015821001B0407 /* llpreviewtexture.h */, | 3731 | 997B4C3306015821001B0407 /* lltool.h */, |
3672 | 997B4C5D06015821001B0407 /* llpreviewsound.h */, | 3732 | 997B4C3206015821001B0407 /* lltoolbar.h */, |
3673 | 997B4C5E06015821001B0407 /* llpreviewscript.h */, | 3733 | 997B4C3006015821001B0407 /* lltoolbrush.h */, |
3674 | 997B4C5F06015821001B0407 /* llpreviewobject.h */, | 3734 | 997B4C2E06015821001B0407 /* lltoolcomp.h */, |
3675 | 997B4C6006015821001B0407 /* llpreviewnotecard.h */, | 3735 | 997B4C2D06015821001B0407 /* lltooldraganddrop.h */, |
3676 | 997B4C6106015821001B0407 /* llpreviewlandmark.h */, | 3736 | 997B4C2C06015821001B0407 /* lltoolface.h */, |
3677 | 997B4C6206015821001B0407 /* llpreview.h */, | 3737 | 997B4C2B06015821001B0407 /* lltoolfocus.h */, |
3678 | 997B4C6406015821001B0407 /* llpolymorph.h */, | 3738 | 997B4C2A06015821001B0407 /* lltoolgrab.h */, |
3679 | 997B4C6506015821001B0407 /* llpolymesh.h */, | 3739 | 997B4C2906015821001B0407 /* lltoolgun.h */, |
3680 | 997B4C6706015821001B0407 /* llpatchvertexarray.h */, | 3740 | 997B4C2806015821001B0407 /* lltoolindividual.h */, |
3681 | 997B4C6906015821001B0407 /* llpanelplace.h */, | 3741 | 997B4C2706015821001B0407 /* lltoolmgr.h */, |
3682 | 997B4C6A06015821001B0407 /* llpanelpick.h */, | 3742 | 997B4C2606015821001B0407 /* lltoolmorph.h */, |
3683 | 997B4C6B06015821001B0407 /* llpanelpermissions.h */, | 3743 | 997B4C2506015821001B0407 /* lltoolobjpicker.h */, |
3684 | 997B4C6C06015821001B0407 /* llpanelobject.h */, | 3744 | 997B4C2106015821001B0407 /* lltoolpie.h */, |
3685 | 997B4C6D06015822001B0407 /* llpanelnetwork.h */, | 3745 | 997B4C2006015821001B0407 /* lltoolplacer.h */, |
3686 | 997B4C6F06015822001B0407 /* llpanelmorph.h */, | 3746 | 997B4C1E06015821001B0407 /* lltoolselect.h */, |
3687 | 997B4C7106015822001B0407 /* llpanelleaderboard.h */, | 3747 | 997B4C1D06015821001B0407 /* lltoolselectland.h */, |
3688 | 997B4C7206015822001B0407 /* llpanelland.h */, | 3748 | 997B4C1C06015821001B0407 /* lltoolselectrect.h */, |
3689 | 997B4C7306015822001B0407 /* llpanelinventory.h */, | 3749 | 997B4C1B06015821001B0407 /* lltoolview.h */, |
3690 | 997B4C7406015822001B0407 /* llpanelinput.h */, | 3750 | 997B4C2406015821001B0407 /* lltracker.h */, |
3691 | 997B4C7506015822001B0407 /* llpanelgroupvoting.h */, | 3751 | 997B4C1806015821001B0407 /* lluiconstants.h */, |
3692 | 997B4C7706015822001B0407 /* llpanelgeneral.h */, | 3752 | 997B4C1506015821001B0407 /* lluploaddialog.h */, |
3693 | 997B4C7906015822001B0407 /* llpanelface.h */, | 3753 | 997B4C1406015821001B0407 /* llurl.h */, |
3694 | 997B4C7A06015822001B0407 /* llpanelevent.h */, | 3754 | 997B4C1306015821001B0407 /* lluserauth.h */, |
3695 | 997B4C7C06015822001B0407 /* llpaneldisplay.h */, | 3755 | 997B4C0E06015821001B0407 /* llvelocitybar.h */, |
3696 | 997B4C7D06015822001B0407 /* llpaneldirpopular.h */, | 3756 | 997B4C0B06015821001B0407 /* llviewerbuild.h */, |
3697 | 997B4C7E06015822001B0407 /* llpaneldirplaces.h */, | 3757 | 997B4C0A06015821001B0407 /* llviewercamera.h */, |
3698 | 997B4C7F06015822001B0407 /* llpaneldirpicks.h */, | 3758 | 91DF405006A73E0C00CA7FE5 /* llviewerdisplay.h */, |
3699 | 997B4C8006015822001B0407 /* llpaneldirpeople.h */, | 3759 | 997B4C0906015821001B0407 /* llviewergesture.h */, |
3700 | 997B4C8206015822001B0407 /* llpaneldirland.h */, | 3760 | 997B4C0806015821001B0407 /* llviewerimage.h */, |
3701 | 997B4C8306015822001B0407 /* llpaneldirgroups.h */, | 3761 | 997B4C0706015821001B0407 /* llviewerimagelist.h */, |
3702 | 997B4C8406015822001B0407 /* llpaneldirfind.h */, | 3762 | 997B4C1206015821001B0407 /* llviewerinventory.h */, |
3703 | 997B4C8506015822001B0407 /* llpaneldirevents.h */, | 3763 | 997B4C1106015821001B0407 /* llviewerjoint.h */, |
3704 | 997B4C8606015822001B0407 /* llpaneldirbrowser.h */, | 3764 | 997B4C1006015821001B0407 /* llviewerjointattachment.h */, |
3705 | 99FBB090087366930048A5CC /* llpaneldirclassified.h */, | 3765 | 997B4C0F06015821001B0407 /* llviewerjointmesh.h */, |
3706 | 997B4C8906015822001B0407 /* llpaneldebug.h */, | 3766 | 997B4C0606015821001B0407 /* llviewerjointshape.h */, |
3707 | 997B4C8A06015822001B0407 /* llpanelcreate.h */, | 3767 | A3C20E4E0BB0BD49007E872B /* llviewerjoystick.h */, |
3708 | 99FBB048087363B00048A5CC /* llpanelclassified.h */, | 3768 | 997B4C0506015821001B0407 /* llviewerlayer.h */, |
3709 | 997B4C8B06015822001B0407 /* llpanelcontents.h */, | 3769 | 997B4C0406015821001B0407 /* llviewermenu.h */, |
3710 | 997B4C8D06015822001B0407 /* llpanelavatar.h */, | 3770 | 997B4C0306015821001B0407 /* llviewermessage.h */, |
3711 | 997B4C8E06015822001B0407 /* llpanelaudioprefs.h */, | 3771 | 1A3143DB0A02B70E005B87E7 /* llviewernetwork.h */, |
3712 | 997B4C9006015822001B0407 /* lloverlaybar.h */, | 3772 | 997B4C0206015821001B0407 /* llviewerobject.h */, |
3713 | 997B4C9106015822001B0407 /* llnotify.h */, | 3773 | 997B4C0106015821001B0407 /* llviewerobjectlist.h */, |
3714 | 997B4C9306015822001B0407 /* llnetmap.h */, | 3774 | 997B4C0006015821001B0407 /* llviewerparcelmgr.h */, |
3715 | 997B4C9406015822001B0407 /* llnamelistctrl.h */, | 3775 | 997B4BFF06015821001B0407 /* llviewerparceloverlay.h */, |
3716 | 997B4C9506015822001B0407 /* llnameeditor.h */, | 3776 | 997B4BFE06015821001B0407 /* llviewerpartsim.h */, |
3717 | 997B4C9606015822001B0407 /* llnamebox.h */, | 3777 | 997B4BFD06015821001B0407 /* llviewerpartsource.h */, |
3718 | 997B4C9706015822001B0407 /* llmutelist.h */, | 3778 | 997B4BFC06015821001B0407 /* llviewerregion.h */, |
3719 | 997B4C9806015822001B0407 /* llmoveview.h */, | 3779 | 997B4BFA06015821001B0407 /* llviewerstats.h */, |
3720 | 997B4C9906015822001B0407 /* llmorphview.h */, | 3780 | 997B4BF906015821001B0407 /* llviewertextureanim.h */, |
3721 | 997B4C9D06015822001B0407 /* llmenucommands.h */, | 3781 | 997B4BF806015821001B0407 /* llviewerthrottle.h */, |
3722 | 997B4C9E06015822001B0407 /* llmaniptranslate.h */, | 3782 | 997B4BF706015821001B0407 /* llviewervisualparam.h */, |
3723 | 997B4C9F06015822001B0407 /* llmanipscale.h */, | 3783 | 997B4BF606015821001B0407 /* llviewerwindow.h */, |
3724 | 997B4CA006015822001B0407 /* llmaniprotate.h */, | 3784 | 997B4BF506015821001B0407 /* llvlcomposition.h */, |
3725 | 997B4CA106015822001B0407 /* llmanip.h */, | 3785 | 997B4BF406015821001B0407 /* llvlmanager.h */, |
3726 | 997B4CA406015822001B0407 /* lllightconstants.h */, | 3786 | 997B4BF306015821001B0407 /* llvoavatar.h */, |
3727 | 997B4CA506015822001B0407 /* lllandmarklist.h */, | 3787 | 997B4BF206015821001B0407 /* llvocache.h */, |
3728 | 997B4CA806015822001B0407 /* lljoystickbutton.h */, | 3788 | 997B4BF106015821001B0407 /* llvoclouds.h */, |
3729 | 997B4CA906015822001B0407 /* llinventoryview.h */, | 3789 | 997B4BF006015821001B0407 /* llvograss.h */, |
3730 | 997B4CAA06015822001B0407 /* llinventorymodel.h */, | 3790 | 997B4BEF06015821001B0407 /* llvoground.h */, |
3731 | 997B4CAB06015822001B0407 /* llinventoryclipboard.h */, | 3791 | 997B4BED06015821001B0407 /* llvopartgroup.h */, |
3732 | 997B4CAC06015822001B0407 /* llimpanel.h */, | 3792 | 997B4BEC06015821001B0407 /* llvosky.h */, |
3733 | 997B4CAE06015822001B0407 /* llhudview.h */, | 3793 | 997B4BEB06015821001B0407 /* llvosurfacepatch.h */, |
3734 | 997B4CAF06015822001B0407 /* llhudtext.h */, | 3794 | 997B4BEA06015821001B0407 /* llvotextbubble.h */, |
3735 | 997B4CB006015822001B0407 /* llhudrender.h */, | 3795 | 997B4BE906015821001B0407 /* llvotree.h */, |
3736 | 997B4CB106015822001B0407 /* llhudobject.h */, | 3796 | 997B4BE806015821001B0407 /* llvotreenew.h */, |
3737 | 997B4CB206015822001B0407 /* llhudmanager.h */, | 3797 | 997B4BE706015821001B0407 /* llvovolume.h */, |
3738 | 997B4CB306015822001B0407 /* llhudeffecttrail.h */, | 3798 | 997B4BE606015821001B0407 /* llvowater.h */, |
3739 | 997B4CB406015822001B0407 /* llhudeffectpointat.h */, | 3799 | 997B4BE406015821001B0407 /* llwearable.h */, |
3740 | 997B4CB506015822001B0407 /* llhudeffectlookat.h */, | 3800 | 997B4BE306015821001B0407 /* llwearablelist.h */, |
3741 | 997B4CB606015822001B0407 /* llhudeffectbeam.h */, | 3801 | 1AF7C1F20AF6C45000C4BF4A /* llweb.h */, |
3742 | 997B4CB706015822001B0407 /* llhudeffect.h */, | 3802 | 997B4BE206015821001B0407 /* llwind.h */, |
3743 | 997B4CB806015822001B0407 /* llhudconnector.h */, | 3803 | 997B4BE106015821001B0407 /* llwindebug.h */, |
3744 | 997B4CB906015822001B0407 /* llhoverview.h */, | 3804 | 997B4BE006015821001B0407 /* llworld.h */, |
3745 | 997B4CBA06015822001B0407 /* llhippo.h */, | 3805 | 997B4BDF06015821001B0407 /* llworldmap.h */, |
3746 | 997B4CBC06015822001B0407 /* llgivemoney.h */, | 3806 | 997B4BDE06015821001B0407 /* llworldmapview.h */, |
3747 | 997B4CBD06015822001B0407 /* llgenepool.h */, | 3807 | 997B4BDC06015821001B0407 /* macmain.h */, |
3748 | 997B4CBE06015822001B0407 /* llframestatview.h */, | ||
3749 | 997B4CBF06015822001B0407 /* llframestats.h */, | ||
3750 | 997B4CC006015822001B0407 /* llfolderview.h */, | ||
3751 | 997B4CC106015822001B0407 /* llfloaterworldmap.h */, | ||
3752 | 997B4CC406015822001B0407 /* llfloatertos.h */, | ||
3753 | 997B4CC506015822001B0407 /* llfloatertools.h */, | ||
3754 | 997B4CC606015822001B0407 /* llfloatersnapshot.h */, | ||
3755 | 997B4CC706015822001B0407 /* llfloaterreporter.h */, | ||
3756 | 997B4CC906015822001B0407 /* llfloaterproperties.h */, | ||
3757 | 997B4CCA06015822001B0407 /* llfloaterpreference.h */, | ||
3758 | 997B4CCB06015822001B0407 /* llfloaterpostcard.h */, | ||
3759 | 997B4CCC06015822001B0407 /* llfloaternamedesc.h */, | ||
3760 | 997B4CCD06015822001B0407 /* llfloatermute.h */, | ||
3761 | 997B4CCF06015822001B0407 /* llfloatermap.h */, | ||
3762 | 997B4CD106015822001B0407 /* llfloaterlandholdings.h */, | ||
3763 | 997B4CD206015822001B0407 /* llfloaterland.h */, | ||
3764 | 997B4CD406015822001B0407 /* llfloatergroups.h */, | ||
3765 | 997B4CD506015822001B0407 /* llfloatergroupprofile.h */, | ||
3766 | 997B4CD606015822001B0407 /* llfloatergroupinfo.h */, | ||
3767 | 997B4CD806015822001B0407 /* llfloatergodtools.h */, | ||
3768 | 997B4CD906015822001B0407 /* llfloatergesture.h */, | ||
3769 | 997B4CDA06015822001B0407 /* llfloaterdirectory.h */, | ||
3770 | 997B4CDB06015822001B0407 /* llfloatercustomize.h */, | ||
3771 | 997B4CDC06015822001B0407 /* llfloaterchat.h */, | ||
3772 | 997B4CDE06015822001B0407 /* llfloaterbuycontents.h */, | ||
3773 | 997B4CDF06015822001B0407 /* llfloaterbuy.h */, | ||
3774 | 997B4CE006015822001B0407 /* llfloaterbuildoptions.h */, | ||
3775 | 997B4CE206015822001B0407 /* llfloateravatarinfo.h */, | ||
3776 | 997B4CE306015822001B0407 /* llfloaterauction.h */, | ||
3777 | 997B4CE506015822001B0407 /* llfloaterabout.h */, | ||
3778 | 997B4CE706015822001B0407 /* llfirstuse.h */, | ||
3779 | 997B4CE906015822001B0407 /* llfilepicker.h */, | ||
3780 | 997B4CEA06015822001B0407 /* llfft.h */, | ||
3781 | 997B4CEB06015822001B0407 /* llfeaturemanager.h */, | ||
3782 | 997B4CEC06015822001B0407 /* llface.inl */, | ||
3783 | 997B4CEE06015822001B0407 /* llcylinder.h */, | ||
3784 | 997B4CEF06015822001B0407 /* llcubemap.h */, | ||
3785 | 997B4CF006015822001B0407 /* audiosettings.h */, | ||
3786 | 997B4CF106015822001B0407 /* llface.h */, | ||
3787 | 997B4CF206015822001B0407 /* llemote.h */, | ||
3788 | 997B4CF406015822001B0407 /* lldriverparam.h */, | ||
3789 | 997B4CF506015823001B0407 /* lldrawpoolwater.h */, | ||
3790 | 997B4CF606015823001B0407 /* lldrawpooltreenew.h */, | ||
3791 | 997B4CF706015823001B0407 /* lldrawpooltree.h */, | ||
3792 | 997B4CF806015823001B0407 /* lldrawpoolterrain.h */, | ||
3793 | 997B4CFA06015823001B0407 /* lldrawpoolsky.h */, | ||
3794 | 997B4CFB06015823001B0407 /* lldrawpoolsimple.h */, | ||
3795 | 997B4CFC06015823001B0407 /* lldrawpoolground.h */, | ||
3796 | 997B4CFD06015823001B0407 /* lldrawpoolbump.h */, | ||
3797 | 997B4CFE06015823001B0407 /* lldrawpoolavatar.h */, | ||
3798 | 997B4CFF06015823001B0407 /* lldrawpoolalpha.h */, | ||
3799 | 997B4D0006015823001B0407 /* lldrawpool.h */, | ||
3800 | 997B4D0106015823001B0407 /* lldrawable.h */, | ||
3801 | 997B4D0306015823001B0407 /* lldebugview.h */, | ||
3802 | 997B4D0406015823001B0407 /* llcountdown.h */, | ||
3803 | 997B4D0506015823001B0407 /* llconversation.h */, | ||
3804 | 997B4D0606015823001B0407 /* llcontainerview.h */, | ||
3805 | 997B4D0706015823001B0407 /* llconsole.h */, | ||
3806 | 997B4D0806015823001B0407 /* llcompilequeue.h */, | ||
3807 | 997B4D0906015823001B0407 /* llcompass.h */, | ||
3808 | 997B4D0B06015823001B0407 /* llcolorswatch.h */, | ||
3809 | 997B4D0C06015823001B0407 /* llcolorscheme.h */, | ||
3810 | 997B4D0D06015823001B0407 /* llcloud.h */, | ||
3811 | 997B4D1006015823001B0407 /* llchatbar.h */, | ||
3812 | 997B4D1106015823001B0407 /* llcameraview.h */, | ||
3813 | 997B4D1206015823001B0407 /* llcallingcard.h */, | ||
3814 | 997B4D1306015823001B0407 /* llcallbacklist.h */, | ||
3815 | 997B4D1606015823001B0407 /* llbox.h */, | ||
3816 | 997B4D1806015823001B0407 /* llbbox.h */, | ||
3817 | 997B4D1C06015823001B0407 /* llaudiostatus.h */, | ||
3818 | 997B4D1E06015823001B0407 /* llappearance.h */, | ||
3819 | 997B4D2006015823001B0407 /* llagparray.inl */, | ||
3820 | 997B4D2106015823001B0407 /* llagparray.h */, | ||
3821 | 997B4D2206015823001B0407 /* llagentpilot.h */, | ||
3822 | 997B4D2306015823001B0407 /* llagent.h */, | ||
3823 | 997B4D2406015823001B0407 /* head.h */, | ||
3824 | 997B4D2506015823001B0407 /* llasynchostbyname.h */, | ||
3825 | FD53B3DB09BDE88B00BFE3BC /* macutil_Prefix.h */, | 3808 | FD53B3DB09BDE88B00BFE3BC /* macutil_Prefix.h */, |
3826 | E34C14750AE6A3FF009BF4DE /* llmapresponders.h */, | 3809 | 997B4BDB06015821001B0407 /* macview_Prefix.h */, |
3810 | 997B4BDA06015821001B0407 /* moviemaker.h */, | ||
3811 | 997B4BD906015821001B0407 /* noise.h */, | ||
3812 | 997B4BD506015820001B0407 /* pipeline.h */, | ||
3813 | 997B4BD406015820001B0407 /* randgauss.h */, | ||
3814 | 997B4BD106015820001B0407 /* VertexCache.h */, | ||
3815 | 997B4BD006015820001B0407 /* viewer.h */, | ||
3827 | ); | 3816 | ); |
3828 | name = "newview headers"; | 3817 | name = "newview headers"; |
3829 | sourceTree = "<group>"; | 3818 | sourceTree = "<group>"; |
@@ -4149,7 +4138,6 @@ | |||
4149 | 5503BB3C05446B20003D051F /* llwind.cpp in Sources */, | 4138 | 5503BB3C05446B20003D051F /* llwind.cpp in Sources */, |
4150 | 5503BB3D05446B20003D051F /* llwearablelist.cpp in Sources */, | 4139 | 5503BB3D05446B20003D051F /* llwearablelist.cpp in Sources */, |
4151 | 5503BB3E05446B20003D051F /* llwearable.cpp in Sources */, | 4140 | 5503BB3E05446B20003D051F /* llwearable.cpp in Sources */, |
4152 | 5503BB3F05446B20003D051F /* llwaterpatch.cpp in Sources */, | ||
4153 | 5503BB4005446B20003D051F /* llvowater.cpp in Sources */, | 4141 | 5503BB4005446B20003D051F /* llvowater.cpp in Sources */, |
4154 | 5503BB4105446B20003D051F /* llvovolume.cpp in Sources */, | 4142 | 5503BB4105446B20003D051F /* llvovolume.cpp in Sources */, |
4155 | 5503BB4305446B20003D051F /* llvotree.cpp in Sources */, | 4143 | 5503BB4305446B20003D051F /* llvotree.cpp in Sources */, |
@@ -4212,7 +4200,6 @@ | |||
4212 | 5503BB9105446B20003D051F /* llfloaterland.cpp in Sources */, | 4200 | 5503BB9105446B20003D051F /* llfloaterland.cpp in Sources */, |
4213 | 5503BB9205446B20003D051F /* llpanelface.cpp in Sources */, | 4201 | 5503BB9205446B20003D051F /* llpanelface.cpp in Sources */, |
4214 | 5503BB9305446B20003D051F /* llpanelevent.cpp in Sources */, | 4202 | 5503BB9305446B20003D051F /* llpanelevent.cpp in Sources */, |
4215 | 5503BB9405446B20003D051F /* llcountdown.cpp in Sources */, | ||
4216 | 5503BB9505446B20003D051F /* llcontroldef.cpp in Sources */, | 4203 | 5503BB9505446B20003D051F /* llcontroldef.cpp in Sources */, |
4217 | 5503BB9805446B20003D051F /* llframestatview.cpp in Sources */, | 4204 | 5503BB9805446B20003D051F /* llframestatview.cpp in Sources */, |
4218 | 5503BB9905446B20003D051F /* llframestats.cpp in Sources */, | 4205 | 5503BB9905446B20003D051F /* llframestats.cpp in Sources */, |
@@ -4220,7 +4207,6 @@ | |||
4220 | 5503BB9E05446B20003D051F /* llhudobject.cpp in Sources */, | 4207 | 5503BB9E05446B20003D051F /* llhudobject.cpp in Sources */, |
4221 | 5503BB9F05446B20003D051F /* llhudmanager.cpp in Sources */, | 4208 | 5503BB9F05446B20003D051F /* llhudmanager.cpp in Sources */, |
4222 | 5503BBA005446B20003D051F /* lldrawpoolalpha.cpp in Sources */, | 4209 | 5503BBA005446B20003D051F /* lldrawpoolalpha.cpp in Sources */, |
4223 | 5503BBA105446B20003D051F /* lltexturetable.cpp in Sources */, | ||
4224 | 5503BBA205446B20003D051F /* lltexturectrl.cpp in Sources */, | 4210 | 5503BBA205446B20003D051F /* lltexturectrl.cpp in Sources */, |
4225 | 5503BBA405446B20003D051F /* llpanelobject.cpp in Sources */, | 4211 | 5503BBA405446B20003D051F /* llpanelobject.cpp in Sources */, |
4226 | 5503BBA505446B20003D051F /* llpanelnetwork.cpp in Sources */, | 4212 | 5503BBA505446B20003D051F /* llpanelnetwork.cpp in Sources */, |
@@ -4314,7 +4300,6 @@ | |||
4314 | 5503BC2105446B20003D051F /* llcolorscheme.cpp in Sources */, | 4300 | 5503BC2105446B20003D051F /* llcolorscheme.cpp in Sources */, |
4315 | 5503BC2205446B20003D051F /* llmutelist.cpp in Sources */, | 4301 | 5503BC2205446B20003D051F /* llmutelist.cpp in Sources */, |
4316 | 5503BC2305446B20003D051F /* llmoveview.cpp in Sources */, | 4302 | 5503BC2305446B20003D051F /* llmoveview.cpp in Sources */, |
4317 | 5503BC2405446B20003D051F /* llfft.cpp in Sources */, | ||
4318 | 5503BC2505446B20003D051F /* llfloatermap.cpp in Sources */, | 4303 | 5503BC2505446B20003D051F /* llfloatermap.cpp in Sources */, |
4319 | 5503BC2705446B20003D051F /* llregionposition.cpp in Sources */, | 4304 | 5503BC2705446B20003D051F /* llregionposition.cpp in Sources */, |
4320 | 5503BC2905446B20003D051F /* llasynchostbyname.cpp in Sources */, | 4305 | 5503BC2905446B20003D051F /* llasynchostbyname.cpp in Sources */, |
@@ -4576,6 +4561,9 @@ | |||
4576 | 88A95BB20C14D5FC0027E363 /* llsrv.cpp in Sources */, | 4561 | 88A95BB20C14D5FC0027E363 /* llsrv.cpp in Sources */, |
4577 | 8833693F0C18AF33007F52DA /* llimagepng.cpp in Sources */, | 4562 | 8833693F0C18AF33007F52DA /* llimagepng.cpp in Sources */, |
4578 | 883369400C18AF33007F52DA /* llpngwrapper.cpp in Sources */, | 4563 | 883369400C18AF33007F52DA /* llpngwrapper.cpp in Sources */, |
4564 | 1A0DA5130C3AC07800361F49 /* llviewerjointmesh_vec.cpp in Sources */, | ||
4565 | 1A0DA5140C3AC07800361F49 /* llviewerjointmesh_sse2.cpp in Sources */, | ||
4566 | 1A0DA5150C3AC07800361F49 /* llviewerjointmesh_sse.cpp in Sources */, | ||
4579 | ); | 4567 | ); |
4580 | runOnlyForDeploymentPostprocessing = 0; | 4568 | runOnlyForDeploymentPostprocessing = 0; |
4581 | }; | 4569 | }; |
diff --git a/linden/indra/newview/newview.vcproj b/linden/indra/newview/newview.vcproj index ae0c02d..a6d4fa5 100644 --- a/linden/indra/newview/newview.vcproj +++ b/linden/indra/newview/newview.vcproj | |||
@@ -344,9 +344,6 @@ | |||
344 | RelativePath=".\llcontroldef.cpp"> | 344 | RelativePath=".\llcontroldef.cpp"> |
345 | </File> | 345 | </File> |
346 | <File | 346 | <File |
347 | RelativePath=".\llcountdown.cpp"> | ||
348 | </File> | ||
349 | <File | ||
350 | RelativePath=".\llcubemap.cpp"> | 347 | RelativePath=".\llcubemap.cpp"> |
351 | </File> | 348 | </File> |
352 | <File | 349 | <File |
@@ -431,9 +428,6 @@ | |||
431 | RelativePath=".\llfeaturemanager.cpp"> | 428 | RelativePath=".\llfeaturemanager.cpp"> |
432 | </File> | 429 | </File> |
433 | <File | 430 | <File |
434 | RelativePath=".\llfft.cpp"> | ||
435 | </File> | ||
436 | <File | ||
437 | RelativePath=".\llfilepicker.cpp"> | 431 | RelativePath=".\llfilepicker.cpp"> |
438 | </File> | 432 | </File> |
439 | <File | 433 | <File |
@@ -983,9 +977,6 @@ | |||
983 | RelativePath=".\lltexturefetch.cpp"> | 977 | RelativePath=".\lltexturefetch.cpp"> |
984 | </File> | 978 | </File> |
985 | <File | 979 | <File |
986 | RelativePath=".\lltexturetable.cpp"> | ||
987 | </File> | ||
988 | <File | ||
989 | RelativePath=".\lltextureview.cpp"> | 980 | RelativePath=".\lltextureview.cpp"> |
990 | </File> | 981 | </File> |
991 | <File | 982 | <File |
@@ -1109,6 +1100,71 @@ | |||
1109 | RelativePath=".\llviewerjointmesh.cpp"> | 1100 | RelativePath=".\llviewerjointmesh.cpp"> |
1110 | </File> | 1101 | </File> |
1111 | <File | 1102 | <File |
1103 | RelativePath=".\llviewerjointmesh_sse.cpp"> | ||
1104 | <FileConfiguration | ||
1105 | Name="Debug|Win32"> | ||
1106 | <Tool | ||
1107 | Name="VCCLCompilerTool" | ||
1108 | EnableEnhancedInstructionSet="1" | ||
1109 | UsePrecompiledHeader="0"/> | ||
1110 | </FileConfiguration> | ||
1111 | <FileConfiguration | ||
1112 | Name="Release|Win32"> | ||
1113 | <Tool | ||
1114 | Name="VCCLCompilerTool" | ||
1115 | EnableEnhancedInstructionSet="1" | ||
1116 | UsePrecompiledHeader="0"/> | ||
1117 | </FileConfiguration> | ||
1118 | <FileConfiguration | ||
1119 | Name="ReleaseForDownload|Win32"> | ||
1120 | <Tool | ||
1121 | Name="VCCLCompilerTool" | ||
1122 | EnableEnhancedInstructionSet="1" | ||
1123 | UsePrecompiledHeader="0"/> | ||
1124 | </FileConfiguration> | ||
1125 | <FileConfiguration | ||
1126 | Name="ReleaseNoOpt|Win32"> | ||
1127 | <Tool | ||
1128 | Name="VCCLCompilerTool" | ||
1129 | EnableEnhancedInstructionSet="1" | ||
1130 | UsePrecompiledHeader="0"/> | ||
1131 | </FileConfiguration> | ||
1132 | </File> | ||
1133 | <File | ||
1134 | RelativePath=".\llviewerjointmesh_sse2.cpp"> | ||
1135 | <FileConfiguration | ||
1136 | Name="Debug|Win32"> | ||
1137 | <Tool | ||
1138 | Name="VCCLCompilerTool" | ||
1139 | EnableEnhancedInstructionSet="2" | ||
1140 | UsePrecompiledHeader="0"/> | ||
1141 | </FileConfiguration> | ||
1142 | <FileConfiguration | ||
1143 | Name="Release|Win32"> | ||
1144 | <Tool | ||
1145 | Name="VCCLCompilerTool" | ||
1146 | EnableEnhancedInstructionSet="2" | ||
1147 | UsePrecompiledHeader="0"/> | ||
1148 | </FileConfiguration> | ||
1149 | <FileConfiguration | ||
1150 | Name="ReleaseForDownload|Win32"> | ||
1151 | <Tool | ||
1152 | Name="VCCLCompilerTool" | ||
1153 | EnableEnhancedInstructionSet="2" | ||
1154 | UsePrecompiledHeader="0"/> | ||
1155 | </FileConfiguration> | ||
1156 | <FileConfiguration | ||
1157 | Name="ReleaseNoOpt|Win32"> | ||
1158 | <Tool | ||
1159 | Name="VCCLCompilerTool" | ||
1160 | EnableEnhancedInstructionSet="2" | ||
1161 | UsePrecompiledHeader="0"/> | ||
1162 | </FileConfiguration> | ||
1163 | </File> | ||
1164 | <File | ||
1165 | RelativePath=".\llviewerjointmesh_vec.cpp"> | ||
1166 | </File> | ||
1167 | <File | ||
1112 | RelativePath=".\llviewerjointshape.cpp"> | 1168 | RelativePath=".\llviewerjointshape.cpp"> |
1113 | </File> | 1169 | </File> |
1114 | <File | 1170 | <File |
@@ -1226,9 +1282,6 @@ | |||
1226 | RelativePath=".\llvowater.cpp"> | 1282 | RelativePath=".\llvowater.cpp"> |
1227 | </File> | 1283 | </File> |
1228 | <File | 1284 | <File |
1229 | RelativePath=".\llwaterpatch.cpp"> | ||
1230 | </File> | ||
1231 | <File | ||
1232 | RelativePath=".\llwearable.cpp"> | 1285 | RelativePath=".\llwearable.cpp"> |
1233 | </File> | 1286 | </File> |
1234 | <File | 1287 | <File |
@@ -1360,9 +1413,6 @@ | |||
1360 | RelativePath=".\llcontainerview.h"> | 1413 | RelativePath=".\llcontainerview.h"> |
1361 | </File> | 1414 | </File> |
1362 | <File | 1415 | <File |
1363 | RelativePath=".\llcountdown.h"> | ||
1364 | </File> | ||
1365 | <File | ||
1366 | RelativePath=".\llcubemap.h"> | 1416 | RelativePath=".\llcubemap.h"> |
1367 | </File> | 1417 | </File> |
1368 | <File | 1418 | <File |
@@ -1447,9 +1497,6 @@ | |||
1447 | RelativePath=".\llfeaturemanager.h"> | 1497 | RelativePath=".\llfeaturemanager.h"> |
1448 | </File> | 1498 | </File> |
1449 | <File | 1499 | <File |
1450 | RelativePath=".\llfft.h"> | ||
1451 | </File> | ||
1452 | <File | ||
1453 | RelativePath=".\llfilepicker.h"> | 1500 | RelativePath=".\llfilepicker.h"> |
1454 | </File> | 1501 | </File> |
1455 | <File | 1502 | <File |
@@ -2017,9 +2064,6 @@ | |||
2017 | RelativePath=".\lltexturefetch.h"> | 2064 | RelativePath=".\lltexturefetch.h"> |
2018 | </File> | 2065 | </File> |
2019 | <File | 2066 | <File |
2020 | RelativePath=".\lltexturetable.h"> | ||
2021 | </File> | ||
2022 | <File | ||
2023 | RelativePath=".\lltextureview.h"> | 2067 | RelativePath=".\lltextureview.h"> |
2024 | </File> | 2068 | </File> |
2025 | <File | 2069 | <File |
@@ -2260,9 +2304,6 @@ | |||
2260 | RelativePath=".\llvowater.h"> | 2304 | RelativePath=".\llvowater.h"> |
2261 | </File> | 2305 | </File> |
2262 | <File | 2306 | <File |
2263 | RelativePath=".\llwaterpatch.h"> | ||
2264 | </File> | ||
2265 | <File | ||
2266 | RelativePath=".\llwearable.h"> | 2307 | RelativePath=".\llwearable.h"> |
2267 | </File> | 2308 | </File> |
2268 | <File | 2309 | <File |
diff --git a/linden/indra/newview/newview_vc8.vcproj b/linden/indra/newview/newview_vc8.vcproj index 445ebd9..5ba125b 100644 --- a/linden/indra/newview/newview_vc8.vcproj +++ b/linden/indra/newview/newview_vc8.vcproj | |||
@@ -496,10 +496,6 @@ | |||
496 | > | 496 | > |
497 | </File> | 497 | </File> |
498 | <File | 498 | <File |
499 | RelativePath=".\llcountdown.cpp" | ||
500 | > | ||
501 | </File> | ||
502 | <File | ||
503 | RelativePath=".\llcubemap.cpp" | 499 | RelativePath=".\llcubemap.cpp" |
504 | > | 500 | > |
505 | </File> | 501 | </File> |
@@ -612,10 +608,6 @@ | |||
612 | > | 608 | > |
613 | </File> | 609 | </File> |
614 | <File | 610 | <File |
615 | RelativePath=".\llfft.cpp" | ||
616 | > | ||
617 | </File> | ||
618 | <File | ||
619 | RelativePath=".\llfilepicker.cpp" | 611 | RelativePath=".\llfilepicker.cpp" |
620 | > | 612 | > |
621 | </File> | 613 | </File> |
@@ -1348,10 +1340,6 @@ | |||
1348 | > | 1340 | > |
1349 | </File> | 1341 | </File> |
1350 | <File | 1342 | <File |
1351 | RelativePath=".\lltexturetable.cpp" | ||
1352 | > | ||
1353 | </File> | ||
1354 | <File | ||
1355 | RelativePath=".\lltextureview.cpp" | 1343 | RelativePath=".\lltextureview.cpp" |
1356 | > | 1344 | > |
1357 | </File> | 1345 | </File> |
@@ -1516,6 +1504,95 @@ | |||
1516 | > | 1504 | > |
1517 | </File> | 1505 | </File> |
1518 | <File | 1506 | <File |
1507 | RelativePath=".\llviewerjointmesh_sse.cpp" | ||
1508 | > | ||
1509 | <FileConfiguration | ||
1510 | Name="Debug|Win32" | ||
1511 | > | ||
1512 | <Tool | ||
1513 | Name="VCCLCompilerTool" | ||
1514 | EnableEnhancedInstructionSet="1" | ||
1515 | UsePrecompiledHeader="0" | ||
1516 | WarnAsError="false" | ||
1517 | /> | ||
1518 | </FileConfiguration> | ||
1519 | <FileConfiguration | ||
1520 | Name="Release|Win32" | ||
1521 | > | ||
1522 | <Tool | ||
1523 | Name="VCCLCompilerTool" | ||
1524 | EnableEnhancedInstructionSet="1" | ||
1525 | UsePrecompiledHeader="0" | ||
1526 | WarnAsError="false" | ||
1527 | /> | ||
1528 | </FileConfiguration> | ||
1529 | <FileConfiguration | ||
1530 | Name="ReleaseForDownload|Win32" | ||
1531 | > | ||
1532 | <Tool | ||
1533 | Name="VCCLCompilerTool" | ||
1534 | EnableEnhancedInstructionSet="1" | ||
1535 | UsePrecompiledHeader="0" | ||
1536 | WarnAsError="false" | ||
1537 | /> | ||
1538 | </FileConfiguration> | ||
1539 | <FileConfiguration | ||
1540 | Name="ReleaseNoOpt|Win32" | ||
1541 | > | ||
1542 | <Tool | ||
1543 | Name="VCCLCompilerTool" | ||
1544 | EnableEnhancedInstructionSet="1" | ||
1545 | UsePrecompiledHeader="0" | ||
1546 | WarnAsError="false" | ||
1547 | /> | ||
1548 | </FileConfiguration> | ||
1549 | </File> | ||
1550 | <File | ||
1551 | RelativePath=".\llviewerjointmesh_sse2.cpp" | ||
1552 | > | ||
1553 | <FileConfiguration | ||
1554 | Name="Debug|Win32" | ||
1555 | > | ||
1556 | <Tool | ||
1557 | Name="VCCLCompilerTool" | ||
1558 | EnableEnhancedInstructionSet="2" | ||
1559 | WarnAsError="false" | ||
1560 | /> | ||
1561 | </FileConfiguration> | ||
1562 | <FileConfiguration | ||
1563 | Name="Release|Win32" | ||
1564 | > | ||
1565 | <Tool | ||
1566 | Name="VCCLCompilerTool" | ||
1567 | EnableEnhancedInstructionSet="2" | ||
1568 | WarnAsError="false" | ||
1569 | /> | ||
1570 | </FileConfiguration> | ||
1571 | <FileConfiguration | ||
1572 | Name="ReleaseForDownload|Win32" | ||
1573 | > | ||
1574 | <Tool | ||
1575 | Name="VCCLCompilerTool" | ||
1576 | EnableEnhancedInstructionSet="2" | ||
1577 | WarnAsError="false" | ||
1578 | /> | ||
1579 | </FileConfiguration> | ||
1580 | <FileConfiguration | ||
1581 | Name="ReleaseNoOpt|Win32" | ||
1582 | > | ||
1583 | <Tool | ||
1584 | Name="VCCLCompilerTool" | ||
1585 | EnableEnhancedInstructionSet="2" | ||
1586 | UsePrecompiledHeader="0" | ||
1587 | WarnAsError="false" | ||
1588 | /> | ||
1589 | </FileConfiguration> | ||
1590 | </File> | ||
1591 | <File | ||
1592 | RelativePath=".\llviewerjointmesh_vec.cpp" | ||
1593 | > | ||
1594 | </File> | ||
1595 | <File | ||
1519 | RelativePath=".\llviewerjointshape.cpp" | 1596 | RelativePath=".\llviewerjointshape.cpp" |
1520 | > | 1597 | > |
1521 | </File> | 1598 | </File> |
@@ -1672,10 +1749,6 @@ | |||
1672 | > | 1749 | > |
1673 | </File> | 1750 | </File> |
1674 | <File | 1751 | <File |
1675 | RelativePath=".\llwaterpatch.cpp" | ||
1676 | > | ||
1677 | </File> | ||
1678 | <File | ||
1679 | RelativePath=".\llwearable.cpp" | 1752 | RelativePath=".\llwearable.cpp" |
1680 | > | 1753 | > |
1681 | </File> | 1754 | </File> |
@@ -1850,10 +1923,6 @@ | |||
1850 | > | 1923 | > |
1851 | </File> | 1924 | </File> |
1852 | <File | 1925 | <File |
1853 | RelativePath=".\llcountdown.h" | ||
1854 | > | ||
1855 | </File> | ||
1856 | <File | ||
1857 | RelativePath=".\llcubemap.h" | 1926 | RelativePath=".\llcubemap.h" |
1858 | > | 1927 | > |
1859 | </File> | 1928 | </File> |
@@ -1966,10 +2035,6 @@ | |||
1966 | > | 2035 | > |
1967 | </File> | 2036 | </File> |
1968 | <File | 2037 | <File |
1969 | RelativePath=".\llfft.h" | ||
1970 | > | ||
1971 | </File> | ||
1972 | <File | ||
1973 | RelativePath=".\llfilepicker.h" | 2038 | RelativePath=".\llfilepicker.h" |
1974 | > | 2039 | > |
1975 | </File> | 2040 | </File> |
@@ -2722,10 +2787,6 @@ | |||
2722 | > | 2787 | > |
2723 | </File> | 2788 | </File> |
2724 | <File | 2789 | <File |
2725 | RelativePath=".\lltexturetable.h" | ||
2726 | > | ||
2727 | </File> | ||
2728 | <File | ||
2729 | RelativePath=".\lltextureview.h" | 2790 | RelativePath=".\lltextureview.h" |
2730 | > | 2791 | > |
2731 | </File> | 2792 | </File> |
@@ -3046,10 +3107,6 @@ | |||
3046 | > | 3107 | > |
3047 | </File> | 3108 | </File> |
3048 | <File | 3109 | <File |
3049 | RelativePath=".\llwaterpatch.h" | ||
3050 | > | ||
3051 | </File> | ||
3052 | <File | ||
3053 | RelativePath=".\llwearable.h" | 3110 | RelativePath=".\llwearable.h" |
3054 | > | 3111 | > |
3055 | </File> | 3112 | </File> |
diff --git a/linden/indra/newview/releasenotes.txt b/linden/indra/newview/releasenotes.txt index 278f022..83fb42f 100644 --- a/linden/indra/newview/releasenotes.txt +++ b/linden/indra/newview/releasenotes.txt | |||
@@ -1,3 +1,24 @@ | |||
1 | Release Notes for Second Life 1.17.3(0) July 5, 2007 | ||
2 | ===================================== | ||
3 | Changes: | ||
4 | * Added muting for permissions requests | ||
5 | * Added viewer channel info to Help > About Second Life... | ||
6 | |||
7 | Bug fixes: | ||
8 | * SVC-21: Request for making identification of llOwnerSay messages possible | ||
9 | * VWR-1418: Progressive memory consumption (leak) since 1.17.1 | ||
10 | * VWR-1410: Quirk in net.cpp | ||
11 | * VWR-1351: Violation against the conding standard in llfloaterchat.cpp | ||
12 | * VWR-1203: Avatars eyes are constantly crossing in 1.17 | ||
13 | * VWR-1184: [Linux VWR] Signal 7 (SIGBUS) Error (caused by libtcmalloc) | ||
14 | * VWR-1147: A patch set is provided to add an optional 'Confirm Exit' pop-up window for most user client exit methods. Prevents the 'Accidental Quit'. | ||
15 | * VWR-605: Include the SL date & day with the time | ||
16 | * VWR-561: Blurry arrows in camera control and other graphics issues | ||
17 | * VWR-53: Inconsistency in order of AV texture layer between the upper and lower body | ||
18 | * Fixed Top Scripts window not refreshing when button is pressed while Top Colliders list is still open | ||
19 | * Fixed odd text overlay on About Land > General tab | ||
20 | * Fixed format of llOwnerSay chat text | ||
21 | |||
1 | Release Notes for Second Life 1.17.2(0) June 27, 2007 | 22 | Release Notes for Second Life 1.17.2(0) June 27, 2007 |
2 | ===================================== | 23 | ===================================== |
3 | Changes: | 24 | Changes: |
diff --git a/linden/indra/newview/res/newViewRes.rc b/linden/indra/newview/res/newViewRes.rc index 5a8c413..bd94933 100644 --- a/linden/indra/newview/res/newViewRes.rc +++ b/linden/indra/newview/res/newViewRes.rc | |||
@@ -227,8 +227,8 @@ TOOLPIPETTE CURSOR "toolpipette.cur" | |||
227 | // | 227 | // |
228 | 228 | ||
229 | VS_VERSION_INFO VERSIONINFO | 229 | VS_VERSION_INFO VERSIONINFO |
230 | FILEVERSION 1,17,2,0 | 230 | FILEVERSION 1,17,3,0 |
231 | PRODUCTVERSION 1,17,2,0 | 231 | PRODUCTVERSION 1,17,3,0 |
232 | FILEFLAGSMASK 0x3fL | 232 | FILEFLAGSMASK 0x3fL |
233 | #ifdef _DEBUG | 233 | #ifdef _DEBUG |
234 | FILEFLAGS 0x1L | 234 | FILEFLAGS 0x1L |
@@ -245,12 +245,12 @@ BEGIN | |||
245 | BEGIN | 245 | BEGIN |
246 | VALUE "CompanyName", "Linden Lab" | 246 | VALUE "CompanyName", "Linden Lab" |
247 | VALUE "FileDescription", "Second Life" | 247 | VALUE "FileDescription", "Second Life" |
248 | VALUE "FileVersion", "1.17.2.0" | 248 | VALUE "FileVersion", "1.17.3.0" |
249 | VALUE "InternalName", "Second Life" | 249 | VALUE "InternalName", "Second Life" |
250 | VALUE "LegalCopyright", "Copyright © 2001-2007, Linden Research, Inc." | 250 | VALUE "LegalCopyright", "Copyright © 2001-2007, Linden Research, Inc." |
251 | VALUE "OriginalFilename", "SecondLife.exe" | 251 | VALUE "OriginalFilename", "SecondLife.exe" |
252 | VALUE "ProductName", "Second Life" | 252 | VALUE "ProductName", "Second Life" |
253 | VALUE "ProductVersion", "1.17.2.0" | 253 | VALUE "ProductVersion", "1.17.3.0" |
254 | END | 254 | END |
255 | END | 255 | END |
256 | BLOCK "VarFileInfo" | 256 | BLOCK "VarFileInfo" |
diff --git a/linden/indra/newview/skins/xui/en-us/alerts.xml b/linden/indra/newview/skins/xui/en-us/alerts.xml index 6c11a06..319e495 100644 --- a/linden/indra/newview/skins/xui/en-us/alerts.xml +++ b/linden/indra/newview/skins/xui/en-us/alerts.xml | |||
@@ -1180,17 +1180,6 @@ Please choose the male or female avatar. | |||
1180 | Female | 1180 | Female |
1181 | </option> | 1181 | </option> |
1182 | </alert> | 1182 | </alert> |
1183 | <alert modal="true" name="ConfirmQuit"> | ||
1184 | <message name="message"> | ||
1185 | Are you sure you want to quit? | ||
1186 | </message> | ||
1187 | <option name="Yes"> | ||
1188 | Yes | ||
1189 | </option> | ||
1190 | <option name="No"> | ||
1191 | No | ||
1192 | </option> | ||
1193 | </alert> | ||
1194 | <alert modal="true" name="RegionNoTerraforming"> | 1183 | <alert modal="true" name="RegionNoTerraforming"> |
1195 | <message name="message"> | 1184 | <message name="message"> |
1196 | The region [REGION] does not allow terraforming. | 1185 | The region [REGION] does not allow terraforming. |
@@ -4102,6 +4091,20 @@ will only work if a script is added with a money() event. | |||
4102 | Cancel | 4091 | Cancel |
4103 | </option> | 4092 | </option> |
4104 | </alert> | 4093 | </alert> |
4094 | <alert modal="true" name="ConfirmQuit"> | ||
4095 | <message name="message"> | ||
4096 | Are you sure you want to quit? | ||
4097 | </message> | ||
4098 | <ignore name="ignore"> | ||
4099 | Ignore | ||
4100 | </ignore> | ||
4101 | <option name="Quit"> | ||
4102 | Quit | ||
4103 | </option> | ||
4104 | <option name="Continue"> | ||
4105 | Continue | ||
4106 | </option> | ||
4107 | </alert> | ||
4105 | <alert modal="true" name="HelpReportAbuseEmailLL" > | 4108 | <alert modal="true" name="HelpReportAbuseEmailLL" > |
4106 | <message name="message"> | 4109 | <message name="message"> |
4107 | Use this tool to report violations of the Terms of Service | 4110 | Use this tool to report violations of the Terms of Service |
diff --git a/linden/indra/newview/skins/xui/en-us/panel_login.xml b/linden/indra/newview/skins/xui/en-us/panel_login.xml index 7df2151..ba4884d 100644 --- a/linden/indra/newview/skins/xui/en-us/panel_login.xml +++ b/linden/indra/newview/skins/xui/en-us/panel_login.xml | |||
@@ -91,4 +91,10 @@ | |||
91 | left="698" mouse_opaque="true" name="version_text" v_pad="0" width="100"> | 91 | left="698" mouse_opaque="true" name="version_text" v_pad="0" width="100"> |
92 | 1.23.4 (5) | 92 | 1.23.4 (5) |
93 | </text> | 93 | </text> |
94 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | ||
95 | bottom="14" drop_shadow_visible="true" follows="right|bottom" | ||
96 | font="SansSerifSmall" h_pad="0" halign="right" height="12" hidden="false" | ||
97 | left="698" mouse_opaque="true" name="channel_text" v_pad="0" width="300"> | ||
98 | [Viewer Channel Name] | ||
99 | </text> | ||
94 | </panel> | 100 | </panel> |
diff --git a/linden/indra/newview/skins/xui/en-us/panel_status_bar.xml b/linden/indra/newview/skins/xui/en-us/panel_status_bar.xml index 9feaafc..b584151 100644 --- a/linden/indra/newview/skins/xui/en-us/panel_status_bar.xml +++ b/linden/indra/newview/skins/xui/en-us/panel_status_bar.xml | |||
@@ -28,7 +28,8 @@ | |||
28 | image_unselected="status_buy_currency.tga" label="" label_selected="" | 28 | image_unselected="status_buy_currency.tga" label="" label_selected="" |
29 | left="-120" mouse_opaque="true" name="buycurrency" scale_image="true" | 29 | left="-120" mouse_opaque="true" name="buycurrency" scale_image="true" |
30 | tool_tip="Buy currency" width="16" /> | 30 | tool_tip="Buy currency" width="16" /> |
31 | <text type="string" length="12" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | 31 | <text type="string" length="12" bg_visible="false" border_drop_shadow_visible="false" |
32 | border_visible="false" | ||
32 | bottom="-20" disabled_color="1 1 1 1" drop_shadow_visible="true" | 33 | bottom="-20" disabled_color="1 1 1 1" drop_shadow_visible="true" |
33 | enabled="true" follows="right|bottom" font="SansSerifSmall" h_pad="0" | 34 | enabled="true" follows="right|bottom" font="SansSerifSmall" h_pad="0" |
34 | halign="right" height="18" hidden="false" left="-210" mouse_opaque="true" | 35 | halign="right" height="18" hidden="false" left="-210" mouse_opaque="true" |
@@ -36,6 +37,14 @@ | |||
36 | v_pad="2" width="80"> | 37 | v_pad="2" width="80"> |
37 | 12:00 AM | 38 | 12:00 AM |
38 | </text> | 39 | </text> |
40 | |||
41 | <text hidden="true" name="StatBarDaysOfWeek"> | ||
42 | Sunday:Monday:Tuesday:Wednesday:Thursday:Friday:Saturday | ||
43 | </text> | ||
44 | <text hidden="true" name="StatBarMonthsOfYear"> | ||
45 | January:February:March:April:May:June:July:August:September:October:November:December | ||
46 | </text> | ||
47 | |||
39 | <button bottom="-18" enabled="true" follows="right|bottom" font="SansSerif" | 48 | <button bottom="-18" enabled="true" follows="right|bottom" font="SansSerif" |
40 | halign="center" height="16" hidden="false" | 49 | halign="center" height="16" hidden="false" |
41 | image_disabled="status_script_debug.tga" | 50 | image_disabled="status_script_debug.tga" |
diff --git a/linden/indra/newview/viewer.cpp b/linden/indra/newview/viewer.cpp index 7ff6cc3..48108bd 100644 --- a/linden/indra/newview/viewer.cpp +++ b/linden/indra/newview/viewer.cpp | |||
@@ -205,6 +205,7 @@ | |||
205 | #include "llviewerbuild.h" | 205 | #include "llviewerbuild.h" |
206 | #include "llviewercamera.h" | 206 | #include "llviewercamera.h" |
207 | #include "llviewercontrol.h" | 207 | #include "llviewercontrol.h" |
208 | #include "llviewerjointmesh.h" | ||
208 | #include "llviewerimagelist.h" | 209 | #include "llviewerimagelist.h" |
209 | #include "llviewerkeyboard.h" | 210 | #include "llviewerkeyboard.h" |
210 | #include "llviewermenu.h" | 211 | #include "llviewermenu.h" |
@@ -1077,8 +1078,10 @@ int main( int argc, char **argv ) | |||
1077 | // Initialize apple menubar and various callbacks | 1078 | // Initialize apple menubar and various callbacks |
1078 | init_apple_menu(gSecondLife.c_str()); | 1079 | init_apple_menu(gSecondLife.c_str()); |
1079 | 1080 | ||
1081 | #if __ppc__ | ||
1080 | // If the CPU doesn't have Altivec (i.e. it's not at least a G4), don't go any further. | 1082 | // If the CPU doesn't have Altivec (i.e. it's not at least a G4), don't go any further. |
1081 | if(!gSysCPU.hasSSE()) | 1083 | // Only test PowerPC - all Intel Macs have SSE. |
1084 | if(!gSysCPU.hasAltivec()) | ||
1082 | { | 1085 | { |
1083 | std::ostringstream msg; | 1086 | std::ostringstream msg; |
1084 | msg << gSecondLife << " requires a processor with AltiVec (G4 or later)."; | 1087 | msg << gSecondLife << " requires a processor with AltiVec (G4 or later)."; |
@@ -1089,6 +1092,7 @@ int main( int argc, char **argv ) | |||
1089 | remove_marker_file(); | 1092 | remove_marker_file(); |
1090 | return 1; | 1093 | return 1; |
1091 | } | 1094 | } |
1095 | #endif | ||
1092 | 1096 | ||
1093 | #endif // LL_DARWIN | 1097 | #endif // LL_DARWIN |
1094 | 1098 | ||
@@ -2447,7 +2451,7 @@ static inline bool being_debugged() | |||
2447 | if (ret != -1) | 2451 | if (ret != -1) |
2448 | { | 2452 | { |
2449 | char buf[1024]; | 2453 | char buf[1024]; |
2450 | size_t n; | 2454 | ssize_t n; |
2451 | 2455 | ||
2452 | n = readlink(name, buf, sizeof(buf) - 1); | 2456 | n = readlink(name, buf, sizeof(buf) - 1); |
2453 | if (n != -1) | 2457 | if (n != -1) |
@@ -2899,7 +2903,7 @@ OSErr AEQuitHandler(const AppleEvent *messagein, AppleEvent *reply, long refIn) | |||
2899 | { | 2903 | { |
2900 | OSErr result = noErr; | 2904 | OSErr result = noErr; |
2901 | 2905 | ||
2902 | app_request_quit(); | 2906 | app_user_quit(); |
2903 | 2907 | ||
2904 | return(result); | 2908 | return(result); |
2905 | } | 2909 | } |
@@ -3171,6 +3175,20 @@ void app_force_quit(const char* launch_file_on_quit) | |||
3171 | gQuit = TRUE; | 3175 | gQuit = TRUE; |
3172 | } | 3176 | } |
3173 | 3177 | ||
3178 | static void finish_quit(S32 option, void *userdata) | ||
3179 | { | ||
3180 | if (option == 0) | ||
3181 | { | ||
3182 | app_request_quit(); | ||
3183 | } | ||
3184 | } | ||
3185 | |||
3186 | void app_user_quit() | ||
3187 | { | ||
3188 | gViewerWindow->alertXml("ConfirmQuit", finish_quit, NULL); | ||
3189 | } | ||
3190 | |||
3191 | |||
3174 | // Don't quit instantly. Instead, request to be logged off. | 3192 | // Don't quit instantly. Instead, request to be logged off. |
3175 | // Called from control-Q handler, Windows(tm) close-window message (WM_CLOSE), and Mac Quit AppleEvent handler. | 3193 | // Called from control-Q handler, Windows(tm) close-window message (WM_CLOSE), and Mac Quit AppleEvent handler. |
3176 | void app_request_quit() | 3194 | void app_request_quit() |
@@ -4980,6 +4998,89 @@ class LLRenderLightingDetailListener: public LLSimpleListener | |||
4980 | }; | 4998 | }; |
4981 | static LLRenderLightingDetailListener render_lighting_detail_listener; | 4999 | static LLRenderLightingDetailListener render_lighting_detail_listener; |
4982 | 5000 | ||
5001 | |||
5002 | //------------------------------------------------------------------- | ||
5003 | //------------------------------------------------------------------- | ||
5004 | // Vector Performance Options | ||
5005 | //------------------------------------------------------------------- | ||
5006 | //------------------------------------------------------------------- | ||
5007 | |||
5008 | // Initially, we test the performance of the vectorization code, then | ||
5009 | // turn it off if it ends up being slower. JC | ||
5010 | BOOL gVectorizePerfTest = TRUE; | ||
5011 | BOOL gVectorizeEnable = FALSE; | ||
5012 | U32 gVectorizeProcessor = 0; | ||
5013 | BOOL gVectorizeSkin = FALSE; | ||
5014 | |||
5015 | void update_vector_performances(void) | ||
5016 | { | ||
5017 | char *vp; | ||
5018 | |||
5019 | switch(gVectorizeProcessor) | ||
5020 | { | ||
5021 | case 2: vp = "SSE2"; break; // *TODO: replace the magic #s | ||
5022 | case 1: vp = "SSE"; break; | ||
5023 | default: vp = "COMPILER DEFAULT"; break; | ||
5024 | } | ||
5025 | llinfos << "Vectorization : " << ( gVectorizeEnable ? "ENABLED" : "DISABLED" ) << llendl ; | ||
5026 | llinfos << "Vector Processor : " << vp << llendl ; | ||
5027 | llinfos << "Vectorized Skinning : " << ( gVectorizeSkin ? "ENABLED" : "DISABLED" ) << llendl ; | ||
5028 | |||
5029 | if(gVectorizeEnable && gVectorizeSkin) | ||
5030 | { | ||
5031 | switch(gVectorizeProcessor) | ||
5032 | { | ||
5033 | case 2: | ||
5034 | LLViewerJointMesh::sUpdateGeometryFunc = &LLViewerJointMesh::updateGeometrySSE2; | ||
5035 | break; | ||
5036 | case 1: | ||
5037 | LLViewerJointMesh::sUpdateGeometryFunc = &LLViewerJointMesh::updateGeometrySSE; | ||
5038 | break; | ||
5039 | default: | ||
5040 | LLViewerJointMesh::sUpdateGeometryFunc = &LLViewerJointMesh::updateGeometryVectorized; | ||
5041 | break; | ||
5042 | } | ||
5043 | } | ||
5044 | else | ||
5045 | { | ||
5046 | LLViewerJointMesh::sUpdateGeometryFunc = &LLViewerJointMesh::updateGeometryOriginal; | ||
5047 | } | ||
5048 | } | ||
5049 | |||
5050 | |||
5051 | class LLVectorizationEnableListener: public LLSimpleListener | ||
5052 | { | ||
5053 | bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) | ||
5054 | { | ||
5055 | gVectorizeEnable = event->getValue().asBoolean(); | ||
5056 | update_vector_performances(); | ||
5057 | return true; | ||
5058 | } | ||
5059 | }; | ||
5060 | static LLVectorizationEnableListener vectorization_enable_listener; | ||
5061 | |||
5062 | class LLVectorizeSkinListener: public LLSimpleListener | ||
5063 | { | ||
5064 | bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) | ||
5065 | { | ||
5066 | gVectorizeSkin = event->getValue().asBoolean(); | ||
5067 | update_vector_performances(); | ||
5068 | return true; | ||
5069 | } | ||
5070 | }; | ||
5071 | static LLVectorizeSkinListener vectorize_skin_listener; | ||
5072 | |||
5073 | class LLVectorProcessorListener: public LLSimpleListener | ||
5074 | { | ||
5075 | bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) | ||
5076 | { | ||
5077 | gVectorizeProcessor = event->getValue().asInteger(); | ||
5078 | update_vector_performances(); | ||
5079 | return true; | ||
5080 | } | ||
5081 | }; | ||
5082 | static LLVectorProcessorListener vector_processor_listener; | ||
5083 | |||
4983 | // Use these strictly for things that are constructed at startup, | 5084 | // Use these strictly for things that are constructed at startup, |
4984 | // or for things that are performance critical. JC | 5085 | // or for things that are performance critical. JC |
4985 | void saved_settings_to_globals() | 5086 | void saved_settings_to_globals() |
@@ -5031,6 +5132,38 @@ void saved_settings_to_globals() | |||
5031 | gHandleKeysAsync = gSavedSettings.getBOOL("AsyncKeyboard"); | 5132 | gHandleKeysAsync = gSavedSettings.getBOOL("AsyncKeyboard"); |
5032 | LLHoverView::sShowHoverTips = gSavedSettings.getBOOL("ShowHoverTips"); | 5133 | LLHoverView::sShowHoverTips = gSavedSettings.getBOOL("ShowHoverTips"); |
5033 | 5134 | ||
5135 | if (gSysCPU.hasAltivec()) | ||
5136 | { | ||
5137 | gSavedSettings.setBOOL("VectorizeEnable", TRUE ); | ||
5138 | gSavedSettings.setU32("VectorizeProcessor", 0 ); | ||
5139 | } | ||
5140 | else | ||
5141 | if (gSysCPU.hasSSE2()) | ||
5142 | { | ||
5143 | gSavedSettings.setBOOL("VectorizeEnable", TRUE ); | ||
5144 | gSavedSettings.setU32("VectorizeProcessor", 2 ); | ||
5145 | } | ||
5146 | else | ||
5147 | if (gSysCPU.hasSSE()) | ||
5148 | { | ||
5149 | gSavedSettings.setBOOL("VectorizeEnable", TRUE ); | ||
5150 | gSavedSettings.setU32("VectorizeProcessor", 1 ); | ||
5151 | } | ||
5152 | else | ||
5153 | { | ||
5154 | // Don't bother testing or running if CPU doesn't support it. JC | ||
5155 | gSavedSettings.setBOOL("VectorizePerfTest", FALSE ); | ||
5156 | gSavedSettings.setBOOL("VectorizeEnable", FALSE ); | ||
5157 | gSavedSettings.setU32("VectorizeProcessor", 0 ); | ||
5158 | gSavedSettings.setBOOL("VectorizeSkin", FALSE); | ||
5159 | } | ||
5160 | |||
5161 | gVectorizePerfTest = gSavedSettings.getBOOL("VectorizePerfTest"); | ||
5162 | gVectorizeEnable = gSavedSettings.getBOOL("VectorizeEnable"); | ||
5163 | gVectorizeProcessor = gSavedSettings.getU32("VectorizeProcessor"); | ||
5164 | gVectorizeSkin = gSavedSettings.getBOOL("VectorizeSkin"); | ||
5165 | update_vector_performances(); | ||
5166 | |||
5034 | // Into a global in case we corrupt the list on crash. | 5167 | // Into a global in case we corrupt the list on crash. |
5035 | gCrashBehavior = gCrashSettings.getS32(CRASH_BEHAVIOR_SETTING); | 5168 | gCrashBehavior = gCrashSettings.getS32(CRASH_BEHAVIOR_SETTING); |
5036 | 5169 | ||
@@ -5077,6 +5210,9 @@ void saved_settings_to_globals() | |||
5077 | gSavedSettings.getControl("FlycamAxis4")->addListener(&joystick_listener); | 5210 | gSavedSettings.getControl("FlycamAxis4")->addListener(&joystick_listener); |
5078 | gSavedSettings.getControl("FlycamAxis5")->addListener(&joystick_listener); | 5211 | gSavedSettings.getControl("FlycamAxis5")->addListener(&joystick_listener); |
5079 | gSavedSettings.getControl("FlycamAxis6")->addListener(&joystick_listener); | 5212 | gSavedSettings.getControl("FlycamAxis6")->addListener(&joystick_listener); |
5213 | gSavedSettings.getControl("VectorizeEnable")->addListener(&vectorization_enable_listener); | ||
5214 | gSavedSettings.getControl("VectorizeProcessor")->addListener(&vector_processor_listener); | ||
5215 | gSavedSettings.getControl("VectorizeSkin")->addListener(&vectorize_skin_listener); | ||
5080 | 5216 | ||
5081 | // gAgent.init() also loads from saved settings. | 5217 | // gAgent.init() also loads from saved settings. |
5082 | } | 5218 | } |
diff --git a/linden/indra/newview/viewer.h b/linden/indra/newview/viewer.h index 22edc73..74ca366 100644 --- a/linden/indra/newview/viewer.h +++ b/linden/indra/newview/viewer.h | |||
@@ -286,6 +286,9 @@ BOOL raycast_for_new_obj_pos( S32 x, S32 y, LLViewerObject** hit_obj, S32* hit_f | |||
286 | // Saves the final snapshot, but only once. | 286 | // Saves the final snapshot, but only once. |
287 | void save_final_snapshot(void*); | 287 | void save_final_snapshot(void*); |
288 | 288 | ||
289 | // Call when user is requesting application to quit, ask for confirmation. | ||
290 | void app_user_quit(); | ||
291 | |||
289 | // Call when user is requesting application to quit. | 292 | // Call when user is requesting application to quit. |
290 | void app_request_quit(); | 293 | void app_request_quit(); |
291 | 294 | ||
diff --git a/linden/indra/newview/viewer_manifest.py b/linden/indra/newview/viewer_manifest.py index 2da4a22..e66af2a 100755 --- a/linden/indra/newview/viewer_manifest.py +++ b/linden/indra/newview/viewer_manifest.py | |||
@@ -432,8 +432,8 @@ class Linux_i686Manifest(LinuxManifest): | |||
432 | # self.path("libstdc++.so.6") | 432 | # self.path("libstdc++.so.6") |
433 | self.path("libuuid.so", "libuuid.so.1") | 433 | self.path("libuuid.so", "libuuid.so.1") |
434 | self.path("libSDL-1.2.so.0") | 434 | self.path("libSDL-1.2.so.0") |
435 | self.path("libtcmalloc.so.0") | 435 | #self.path("libtcmalloc.so.0") |
436 | self.path("libstacktrace.so.0") | 436 | #self.path("libstacktrace.so.0") |
437 | # self.path("libllkdu.so", "../bin/libllkdu.so") # llkdu goes in bin for some reason | 437 | # self.path("libllkdu.so", "../bin/libllkdu.so") # llkdu goes in bin for some reason |
438 | self.end_prefix("lib") | 438 | self.end_prefix("lib") |
439 | 439 | ||