aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linden/indra/newview/llvovolume.cpp
diff options
context:
space:
mode:
authorJacek Antonelli2008-08-15 23:44:54 -0500
committerJacek Antonelli2008-08-15 23:44:54 -0500
commitb2afb8800bb033a04bb3ecdf0363068d56648ef1 (patch)
tree3568129b5bbddb47cd39d622b4137a8fbff4abaf /linden/indra/newview/llvovolume.cpp
parentSecond Life viewer sources 1.14.0.1 (diff)
downloadmeta-impy-b2afb8800bb033a04bb3ecdf0363068d56648ef1.zip
meta-impy-b2afb8800bb033a04bb3ecdf0363068d56648ef1.tar.gz
meta-impy-b2afb8800bb033a04bb3ecdf0363068d56648ef1.tar.bz2
meta-impy-b2afb8800bb033a04bb3ecdf0363068d56648ef1.tar.xz
Second Life viewer sources 1.15.0.2
Diffstat (limited to 'linden/indra/newview/llvovolume.cpp')
-rw-r--r--linden/indra/newview/llvovolume.cpp55
1 files changed, 19 insertions, 36 deletions
diff --git a/linden/indra/newview/llvovolume.cpp b/linden/indra/newview/llvovolume.cpp
index f425687..0a778e4 100644
--- a/linden/indra/newview/llvovolume.cpp
+++ b/linden/indra/newview/llvovolume.cpp
@@ -4,6 +4,7 @@
4 * 4 *
5 * Copyright (c) 2001-2007, Linden Research, Inc. 5 * Copyright (c) 2001-2007, Linden Research, Inc.
6 * 6 *
7 * Second Life Viewer Source Code
7 * The source code in this file ("Source Code") is provided by Linden Lab 8 * The source code in this file ("Source Code") is provided by Linden Lab
8 * to you under the terms of the GNU General Public License, version 2.0 9 * to you under the terms of the GNU General Public License, version 2.0
9 * ("GPL"), unless you have obtained a separate licensing agreement 10 * ("GPL"), unless you have obtained a separate licensing agreement
@@ -276,60 +277,41 @@ void LLVOVolume::animateTextures()
276 277
277 for (S32 i = start; i <= end; i++) 278 for (S32 i = start; i <= end; i++)
278 { 279 {
279 LLQuaternion quat;
280 LLVector3 scale(1,1,1);
281
282 LLFace* facep = mDrawable->getFace(i); 280 LLFace* facep = mDrawable->getFace(i);
283 const LLTextureEntry* te = facep->getTextureEntry(); 281 const LLTextureEntry* te = facep->getTextureEntry();
284 LLMatrix4& tex_mat = facep->mTextureMatrix;
285 282
286 if (!te) 283 if (!te)
287 { 284 {
288 continue; 285 continue;
289 } 286 }
287
290 if (!(result & LLViewerTextureAnim::ROTATE)) 288 if (!(result & LLViewerTextureAnim::ROTATE))
291 { 289 {
292 te->getRotation(&rot); 290 te->getRotation(&rot);
293 } 291 }
294
295 {
296 F32 axis = -1;
297 F32 s,t;
298 te->getScale(&s,&t);
299 if (s < 0)
300 {
301 axis = -axis;
302 }
303 if (t < 0)
304 {
305 axis = -axis;
306 }
307 quat.setQuat(rot, 0, 0, axis);
308 }
309
310 if (!(result & LLViewerTextureAnim::TRANSLATE)) 292 if (!(result & LLViewerTextureAnim::TRANSLATE))
311 { 293 {
312 te->getOffset(&off_s,&off_t); 294 te->getOffset(&off_s,&off_t);
313 } 295 }
296 if (!(result & LLViewerTextureAnim::SCALE))
297 {
298 te->getScale(&scale_s, &scale_t);
299 }
314 300
301 LLVector3 scale(scale_s, scale_t, 1.f);
315 LLVector3 trans(off_s+0.5f, off_t+0.5f, 0.f); 302 LLVector3 trans(off_s+0.5f, off_t+0.5f, 0.f);
316 303 LLQuaternion quat;
304 quat.setQuat(rot, 0, 0, -1.f);
305
306 LLMatrix4& tex_mat = facep->mTextureMatrix;
317 tex_mat.identity(); 307 tex_mat.identity();
318 tex_mat.translate(LLVector3(-0.5f, -0.5f, 0.f)); 308 tex_mat.translate(LLVector3(-0.5f, -0.5f, 0.f));
319 tex_mat.rotate(quat); 309 tex_mat.rotate(quat);
320 310
321 if (!(result & LLViewerTextureAnim::SCALE)) 311 LLMatrix4 mat;
322 { 312 mat.initAll(scale, LLQuaternion(), LLVector3());
323 te->getScale(&scale_s, &scale_t); 313 tex_mat *= mat;
324 } 314
325
326 {
327 scale.setVec(scale_s, scale_t, 1.f);
328 LLMatrix4 mat;
329 mat.initAll(scale, LLQuaternion(), LLVector3());
330 tex_mat *= mat;
331 }
332
333 tex_mat.translate(trans); 315 tex_mat.translate(trans);
334 } 316 }
335 } 317 }
@@ -2022,13 +2004,13 @@ void LLVolumeGeometryManager::registerFace(LLSpatialGroup* group, LLFace* facep,
2022 LLVOVolume* volume = (LLVOVolume*) facep->getViewerObject(); 2004 LLVOVolume* volume = (LLVOVolume*) facep->getViewerObject();
2023 BOOL is_light = volume->mDrawable->isLight(); 2005 BOOL is_light = volume->mDrawable->isLight();
2024 2006
2025// U8 alpha = is_light ? 196 : 160; 2007 U8 alpha = is_light ? 196 : 160;
2026 LLColor3 col = is_light ? volume->getLightColor() : LLColor3(0,0,0); 2008 LLColor3 col = is_light ? volume->getLightColor() : LLColor3(0,0,0);
2027 LLColor4 col2 = facep->getRenderColor(); 2009 LLColor4 col2 = facep->getRenderColor();
2028 draw_info->mGlowColor.setVec((U8) (col.mV[0]*col2.mV[0]*255), 2010 draw_info->mGlowColor.setVec((U8) (col.mV[0]*col2.mV[0]*255),
2029 (U8) (col.mV[1]*col2.mV[1]*255), 2011 (U8) (col.mV[1]*col2.mV[1]*255),
2030 (U8) (col.mV[2]*col2.mV[2]*255), 2012 (U8) (col.mV[2]*col2.mV[2]*255),
2031 196); 2013 alpha);
2032 draw_info->mTextureMatrix = tex_mat; 2014 draw_info->mTextureMatrix = tex_mat;
2033 validate_draw_info(*draw_info); 2015 validate_draw_info(*draw_info);
2034 } 2016 }
@@ -2333,7 +2315,8 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
2333 registerFace(group, facep, LLRenderPass::PASS_BUMP); 2315 registerFace(group, facep, LLRenderPass::PASS_BUMP);
2334 } 2316 }
2335 2317
2336 if (vobj->getIsLight()) 2318 if (vobj->getIsLight() ||
2319 (LLPipeline::sRenderGlow && facep->isState(LLFace::FULLBRIGHT)))
2337 { 2320 {
2338 registerFace(group, facep, LLRenderPass::PASS_GLOW); 2321 registerFace(group, facep, LLRenderPass::PASS_GLOW);
2339 } 2322 }