diff options
31 files changed, 498 insertions, 583 deletions
| diff --git a/indra/llmath/llvolume.cpp b/indra/llmath/llvolume.cpp index 2f662b757b..c4be176353 100644 --- a/indra/llmath/llvolume.cpp +++ b/indra/llmath/llvolume.cpp @@ -4179,7 +4179,6 @@ S32 LLVolume::getNumTriangles() const  //-----------------------------------------------------------------------------
  void LLVolume::generateSilhouetteVertices(std::vector<LLVector3> &vertices,
  										  std::vector<LLVector3> &normals,
 -										  std::vector<S32> &segments,
  										  const LLVector3& obj_cam_vec_in,
  										  const LLMatrix4& mat_in,
  										  const LLMatrix3& norm_mat_in,
 @@ -4198,7 +4197,6 @@ void LLVolume::generateSilhouetteVertices(std::vector<LLVector3> &vertices,  	vertices.clear();
  	normals.clear();
 -	segments.clear();
  	if ((mParams.getSculptType() & LL_SCULPT_TYPE_MASK) == LL_SCULPT_TYPE_MESH)
  	{
 @@ -4399,8 +4397,6 @@ void LLVolume::generateSilhouetteVertices(std::vector<LLVector3> &vertices,  						norm_mat.rotate(n[v2], t);
  						t.normalize3fast();
  						normals.push_back(LLVector3(t[0], t[1], t[2]));
 -
 -						segments.push_back(vertices.size());
  					}
  				}		
  			}
 diff --git a/indra/llmath/llvolume.h b/indra/llmath/llvolume.h index 5bd65c2bf2..60b64b1285 100644 --- a/indra/llmath/llvolume.h +++ b/indra/llmath/llvolume.h @@ -986,7 +986,6 @@ public:  	void generateSilhouetteVertices(std::vector<LLVector3> &vertices,   									std::vector<LLVector3> &normals,  -									std::vector<S32> &segments,   									const LLVector3& view_vec,  									const LLMatrix4& mat,  									const LLMatrix3& norm_mat, diff --git a/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl b/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl index eef6556fba..ef823c28b1 100644 --- a/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl +++ b/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl @@ -9,7 +9,7 @@  attribute vec4 object_weight;   -uniform mat4 matrixPalette[64]; +uniform mat4 matrixPalette[32];  mat4 getObjectSkinnedTransform()  { diff --git a/indra/newview/llfilepicker.cpp b/indra/newview/llfilepicker.cpp index f209950cfa..8c0ed29855 100644 --- a/indra/newview/llfilepicker.cpp +++ b/indra/newview/llfilepicker.cpp @@ -420,9 +420,9 @@ BOOL LLFilePicker::getSaveFile(ESaveFilter filter, const std::string& filename)  		{  			wcsncpy( mFilesW,L"untitled.jpeg", FILENAME_BUFFER_SIZE);	/*Flawfinder: ignore*/  		} -		mOFN.lpstrDefExt = L"jpeg"; +		mOFN.lpstrDefExt = L"jpg";  		mOFN.lpstrFilter = -			L"JPEG Images (*.jpeg)\0*.jpeg\0" \ +			L"JPEG Images (*.jpg *.jpeg)\0*.jpg;*.jpeg\0" \  			L"\0";  		break;  	case FFSAVE_AVI: diff --git a/indra/newview/llfloaterregiondebugconsole.cpp b/indra/newview/llfloaterregiondebugconsole.cpp index b3b7645dd4..ada0dcf569 100644 --- a/indra/newview/llfloaterregiondebugconsole.cpp +++ b/indra/newview/llfloaterregiondebugconsole.cpp @@ -3,31 +3,25 @@   * @author Brad Kittenbrink <brad@lindenlab.com>   * @brief Quick and dirty console for region debug settings   * - * $LicenseInfo:firstyear=2010&license=viewergpl$ - *  - * Copyright (c) 2010-2010, Linden Research, Inc. - *  + * $LicenseInfo:firstyear=2010&license=viewerlgpl$   * Second Life Viewer Source Code - * The source code in this file ("Source Code") is provided by Linden Lab - * to you under the terms of the GNU General Public License, version 2.0 - * ("GPL"), unless you have obtained a separate licensing agreement - * ("Other License"), formally executed by you and Linden Lab.  Terms of - * the GPL can be found in doc/GPL-license.txt in this distribution, or - * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * Copyright (C) 2010, Linden Research, Inc. + *  + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only.   *  - * There are special exceptions to the terms and conditions of the GPL as - * it is applied to this Source Code. View the full text of the exception - * in the file doc/FLOSS-exception.txt in this software distribution, or - * online at - * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU + * Lesser General Public License for more details.   *  - * By copying, modifying or distributing this software, you acknowledge - * that you have read and understood your obligations described above, - * and agree to abide by those obligations. + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA   *  - * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO - * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, - * COMPLETENESS OR PERFORMANCE. + * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA   * $/LicenseInfo$   */ diff --git a/indra/newview/llfloatertools.cpp b/indra/newview/llfloatertools.cpp index c9b99d83ff..f5e3d160fc 100644 --- a/indra/newview/llfloatertools.cpp +++ b/indra/newview/llfloatertools.cpp @@ -451,8 +451,7 @@ void LLFloaterTools::refresh()  	if (sShowObjectCost)  	{  		std::string prim_cost_string; -		S32 cost = LLSelectMgr::getInstance()->getSelection()->getSelectedObjectRenderCost(); -		LLResMgr::getInstance()->getIntegerString(prim_cost_string, cost); +  		LLResMgr::getInstance()->getIntegerString(prim_cost_string, calcRenderCost());  		getChild<LLUICtrl>("RenderingCost")->setTextArg("[COUNT]", prim_cost_string);  	} @@ -1010,6 +1009,35 @@ void LLFloaterTools::onClickGridOptions()  	//floaterp->addDependentFloater(LLFloaterBuildOptions::getInstance(), FALSE);  } +S32 LLFloaterTools::calcRenderCost() +{ +       S32 cost = 0; +       std::set<LLUUID> textures; + +       for (LLObjectSelection::iterator selection_iter = LLSelectMgr::getInstance()->getSelection()->begin(); +                 selection_iter != LLSelectMgr::getInstance()->getSelection()->end(); +                 ++selection_iter) +       { +               LLSelectNode *select_node = *selection_iter; +               if (select_node) +               { +                       LLViewerObject *vobj = select_node->getObject(); +                       if (vobj->getVolume()) +                       { +                               LLVOVolume* volume = (LLVOVolume*) vobj; + +                               cost += volume->getRenderCost(textures); +							   cost += textures.size() * LLVOVolume::ARC_TEXTURE_COST; +							   textures.clear(); +                       } +               } +       } + + +       return cost; +} + +  // static  void LLFloaterTools::setEditTool(void* tool_pointer)  { diff --git a/indra/newview/llfloatertools.h b/indra/newview/llfloatertools.h index d5595445e0..87c3d2ab47 100644 --- a/indra/newview/llfloatertools.h +++ b/indra/newview/llfloatertools.h @@ -114,6 +114,7 @@ private:  	static bool multipleFacesSelectedConfirm(const LLSD& notification, const LLSD& response);  	static void setObjectType( LLPCode pcode );  	void onClickGridOptions(); +	S32 calcRenderCost();  public:  	LLButton		*mBtnFocus; diff --git a/indra/newview/llmaniprotate.cpp b/indra/newview/llmaniprotate.cpp index 43a16f8ed8..f1c7e952d1 100644 --- a/indra/newview/llmaniprotate.cpp +++ b/indra/newview/llmaniprotate.cpp @@ -901,32 +901,32 @@ void LLManipRotate::renderSnapGuides()  					{  						if (i == 0)  						{ -							renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Forward") : LLTrans::getString("East"), LLColor4::white); +							renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Direction_Forward") : LLTrans::getString("Direction_East"), LLColor4::white);  						}  						else if (i == 16)  						{  							if (constraint_axis.mV[VZ] > 0.f)  							{ -								renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Left") : LLTrans::getString("North"), LLColor4::white); +								renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Direction_Left") : LLTrans::getString("Direction_North"), LLColor4::white);  							}  							else  							{ -								renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Right") : LLTrans::getString("South"), LLColor4::white); +								renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Direction_Right") : LLTrans::getString("Direction_South"), LLColor4::white);  							}  						}  						else if (i == 32)  						{ -							renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Back") : LLTrans::getString("West"), LLColor4::white); +							renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Direction_Back") : LLTrans::getString("Direction_West"), LLColor4::white);  						}  						else  						{  							if (constraint_axis.mV[VZ] > 0.f)  							{ -								renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Right") : LLTrans::getString("South"), LLColor4::white); +								renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Direction_Right") : LLTrans::getString("Direction_South"), LLColor4::white);  							}  							else  							{ -								renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Left") : LLTrans::getString("North"), LLColor4::white); +								renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Direction_Left") : LLTrans::getString("Direction_North"), LLColor4::white);  							}  						}  					} @@ -934,32 +934,32 @@ void LLManipRotate::renderSnapGuides()  					{  						if (i == 0)  						{ -							renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Left") : LLTrans::getString("North"), LLColor4::white); +							renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Direction_Left") : LLTrans::getString("Direction_North"), LLColor4::white);  						}  						else if (i == 16)  						{  							if (constraint_axis.mV[VX] > 0.f)  							{ -								renderTickText(text_point, LLTrans::getString("Up"), LLColor4::white); +								renderTickText(text_point, LLTrans::getString("Direction_Up"), LLColor4::white);  							}  							else  							{ -								renderTickText(text_point, LLTrans::getString("Down"), LLColor4::white); +								renderTickText(text_point, LLTrans::getString("Direction_Down"), LLColor4::white);  							}  						}  						else if (i == 32)  						{ -							renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Right") : LLTrans::getString("South"), LLColor4::white); +							renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Direction_Right") : LLTrans::getString("Direction_South"), LLColor4::white);  						}  						else  						{  							if (constraint_axis.mV[VX] > 0.f)  							{ -								renderTickText(text_point, LLTrans::getString("Down"), LLColor4::white); +								renderTickText(text_point, LLTrans::getString("Direction_Down"), LLColor4::white);  							}  							else  							{ -								renderTickText(text_point, LLTrans::getString("Up"), LLColor4::white); +								renderTickText(text_point, LLTrans::getString("Direction_Up"), LLColor4::white);  							}  						}  					} @@ -967,32 +967,32 @@ void LLManipRotate::renderSnapGuides()  					{  						if (i == 0)  						{ -							renderTickText(text_point, LLTrans::getString("Up"), LLColor4::white); +							renderTickText(text_point, LLTrans::getString("Direction_Up"), LLColor4::white);  						}  						else if (i == 16)  						{  							if (constraint_axis.mV[VY] > 0.f)  							{ -								renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Forward") : LLTrans::getString("East"), LLColor4::white); +								renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Direction_Forward") : LLTrans::getString("Direction_East"), LLColor4::white);  							}  							else  							{ -								renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Back") : LLTrans::getString("West"), LLColor4::white); +								renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Direction_Back") : LLTrans::getString("Direction_West"), LLColor4::white);  							}  						}  						else if (i == 32)  						{ -							renderTickText(text_point, LLTrans::getString("Down"), LLColor4::white); +							renderTickText(text_point, LLTrans::getString("Direction_Down"), LLColor4::white);  						}  						else  						{  							if (constraint_axis.mV[VY] > 0.f)  							{ -								renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Back") : LLTrans::getString("West"), LLColor4::white); +								renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Direction_Back") : LLTrans::getString("Direction_West"), LLColor4::white);  							}  							else  							{ -								renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Forward") : LLTrans::getString("East"), LLColor4::white); +								renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Direction_Forward") : LLTrans::getString("Direction_East"), LLColor4::white);  							}  						}  					} diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp index 8ffbd5510d..746ba274ed 100644 --- a/indra/newview/llselectmgr.cpp +++ b/indra/newview/llselectmgr.cpp @@ -5204,7 +5204,6 @@ LLSelectNode::LLSelectNode(const LLSelectNode& nodep)  	mSilhouetteVertices = nodep.mSilhouetteVertices;  	mSilhouetteNormals = nodep.mSilhouetteNormals; -	mSilhouetteSegments = nodep.mSilhouetteSegments;  	mSilhouetteExists = nodep.mSilhouetteExists;  	mObject = nodep.mObject; @@ -5628,17 +5627,15 @@ void LLSelectNode::renderOneSilhouette(const LLColor4 &color)  			gGL.setAlphaRejectSettings(LLRender::CF_DEFAULT);  			gGL.begin(LLRender::LINES);  			{ -				S32 i = 0; -				for (S32 seg_num = 0; seg_num < (S32)mSilhouetteSegments.size(); seg_num++) +				for(S32 i = 0; i < mSilhouetteVertices.size(); i += 2)  				{ -					for(; i < mSilhouetteSegments[seg_num]; i++) -					{ -						u_coord += u_divisor * LLSelectMgr::sHighlightUScale; - -						gGL.color4f(color.mV[VRED], color.mV[VGREEN], color.mV[VBLUE], 0.4f); -						gGL.texCoord2f( u_coord, v_coord ); -						gGL.vertex3fv( mSilhouetteVertices[i].mV ); -					} +					u_coord += u_divisor * LLSelectMgr::sHighlightUScale; +					gGL.color4f(color.mV[VRED], color.mV[VGREEN], color.mV[VBLUE], 0.4f); +					gGL.texCoord2f( u_coord, v_coord ); +					gGL.vertex3fv( mSilhouetteVertices[i].mV); +					u_coord += u_divisor * LLSelectMgr::sHighlightUScale; +					gGL.texCoord2f( u_coord, v_coord ); +					gGL.vertex3fv(mSilhouetteVertices[i+1].mV);  				}  			}              gGL.end(); @@ -5649,51 +5646,50 @@ void LLSelectNode::renderOneSilhouette(const LLColor4 &color)  		gGL.setSceneBlendType(LLRender::BT_ALPHA);  		gGL.begin(LLRender::TRIANGLES);  		{ -			S32 i = 0; -			for (S32 seg_num = 0; seg_num < (S32)mSilhouetteSegments.size(); seg_num++) +			for(S32 i = 0; i < mSilhouetteVertices.size(); i+=2)  			{ -				S32 first_i = i; -				LLVector3 v; -				LLVector2 t; +				if (!mSilhouetteNormals[i].isFinite() || +					!mSilhouetteNormals[i+1].isFinite()) +				{ //skip skewed segments +					continue; +				} -				for(; i < mSilhouetteSegments[seg_num]; i++) -				{ +				LLVector3 v[4]; +				LLVector2 tc[4]; +				v[0] = mSilhouetteVertices[i] + (mSilhouetteNormals[i] * silhouette_thickness); +				tc[0].set(u_coord, v_coord + LLSelectMgr::sHighlightVScale); -					if (i == first_i) { -					    LLVector3 vert = (mSilhouetteNormals[i]) * silhouette_thickness; -						vert += mSilhouetteVertices[i]; +				v[1] = mSilhouetteVertices[i]; +				tc[1].set(u_coord, v_coord); -						gGL.color4f(color.mV[VRED], color.mV[VGREEN], color.mV[VBLUE], 0.0f); //LLSelectMgr::sHighlightAlpha); -						gGL.texCoord2f( u_coord, v_coord + LLSelectMgr::sHighlightVScale ); -						gGL.vertex3fv( vert.mV );  -						 -						u_coord += u_divisor * LLSelectMgr::sHighlightUScale; +				u_coord += u_divisor * LLSelectMgr::sHighlightUScale; -						gGL.color4f(color.mV[VRED]*2, color.mV[VGREEN]*2, color.mV[VBLUE]*2, LLSelectMgr::sHighlightAlpha*2); -						gGL.texCoord2f( u_coord, v_coord ); -						gGL.vertex3fv( mSilhouetteVertices[i].mV ); +				v[2] = mSilhouetteVertices[i+1] + (mSilhouetteNormals[i+1] * silhouette_thickness); +				tc[2].set(u_coord, v_coord + LLSelectMgr::sHighlightVScale); +				 +				v[3] = mSilhouetteVertices[i+1]; +				tc[3].set(u_coord,v_coord); -						v = mSilhouetteVertices[i]; -						t = LLVector2(u_coord, v_coord); -					} -					else { -                        LLVector3 vert = (mSilhouetteNormals[i]) * silhouette_thickness; -						vert += mSilhouetteVertices[i]; - -						gGL.color4f(color.mV[VRED], color.mV[VGREEN], color.mV[VBLUE], 0.0f); //LLSelectMgr::sHighlightAlpha); -						gGL.texCoord2f( u_coord, v_coord + LLSelectMgr::sHighlightVScale ); -						gGL.vertex3fv( vert.mV );  -						gGL.vertex3fv( vert.mV );  -						 -						gGL.texCoord2fv(t.mV); -						u_coord += u_divisor * LLSelectMgr::sHighlightUScale; -						gGL.color4f(color.mV[VRED]*2, color.mV[VGREEN]*2, color.mV[VBLUE]*2, LLSelectMgr::sHighlightAlpha*2); -						gGL.vertex3fv(v.mV); -						gGL.texCoord2f( u_coord, v_coord ); -						gGL.vertex3fv( mSilhouetteVertices[i].mV ); +				gGL.color4f(color.mV[VRED], color.mV[VGREEN], color.mV[VBLUE], 0.0f); //LLSelectMgr::sHighlightAlpha); +				gGL.texCoord2fv(tc[0].mV); +				gGL.vertex3fv( v[0].mV );  +				 +				gGL.color4f(color.mV[VRED]*2, color.mV[VGREEN]*2, color.mV[VBLUE]*2, LLSelectMgr::sHighlightAlpha*2); +				gGL.texCoord2fv( tc[1].mV ); +				gGL.vertex3fv( v[1].mV ); -					} -				} +				gGL.color4f(color.mV[VRED], color.mV[VGREEN], color.mV[VBLUE], 0.0f); //LLSelectMgr::sHighlightAlpha); +				gGL.texCoord2fv( tc[2].mV ); +				gGL.vertex3fv( v[2].mV ); + +				gGL.vertex3fv( v[2].mV ); + +				gGL.color4f(color.mV[VRED]*2, color.mV[VGREEN]*2, color.mV[VBLUE]*2, LLSelectMgr::sHighlightAlpha*2); +				gGL.texCoord2fv( tc[1].mV ); +				gGL.vertex3fv( v[1].mV ); + +				gGL.texCoord2fv( tc[3].mV ); +				gGL.vertex3fv( v[3].mV );			  			}  		}  		gGL.end(); @@ -6395,7 +6391,7 @@ U32 LLObjectSelection::getSelectedObjectTriangleCount()  	return count;  } -S32 LLObjectSelection::getSelectedObjectRenderCost() +/*S32 LLObjectSelection::getSelectedObjectRenderCost()  {         S32 cost = 0;         LLVOVolume::texture_cost_t textures; @@ -6419,7 +6415,7 @@ S32 LLObjectSelection::getSelectedObjectRenderCost()         return cost; -} +}*/  //----------------------------------------------------------------------------- diff --git a/indra/newview/llselectmgr.h b/indra/newview/llselectmgr.h index 85d8d3212d..1b354f983a 100644 --- a/indra/newview/llselectmgr.h +++ b/indra/newview/llselectmgr.h @@ -182,7 +182,6 @@ public:  	std::vector<LLVector3>  mTextureScaleRatios;  	std::vector<LLVector3>	mSilhouetteVertices;	// array of vertices to render silhouette of object  	std::vector<LLVector3>	mSilhouetteNormals;	// array of normals to render silhouette of object -	std::vector<S32>		mSilhouetteSegments;	// array of normals to render silhouette of object  	BOOL					mSilhouetteExists;	// need to generate silhouette?  protected: diff --git a/indra/newview/llsimplestat.h b/indra/newview/llsimplestat.h index a90e503adb..9d7780c4f9 100644 --- a/indra/newview/llsimplestat.h +++ b/indra/newview/llsimplestat.h @@ -2,31 +2,25 @@   * @file llsimplestat.h   * @brief Runtime statistics accumulation.   * - * $LicenseInfo:firstyear=2010&license=viewergpl$ - *  - * Copyright (c) 2010, Linden Research, Inc. - *  + * $LicenseInfo:firstyear=2010&license=viewerlgpl$   * Second Life Viewer Source Code - * The source code in this file ("Source Code") is provided by Linden Lab - * to you under the terms of the GNU General Public License, version 2.0 - * ("GPL"), unless you have obtained a separate licensing agreement - * ("Other License"), formally executed by you and Linden Lab.  Terms of - * the GPL can be found in doc/GPL-license.txt in this distribution, or - * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * Copyright (C) 2010, Linden Research, Inc. + *  + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only.   *  - * There are special exceptions to the terms and conditions of the GPL as - * it is applied to this Source Code. View the full text of the exception - * in the file doc/FLOSS-exception.txt in this software distribution, or - * online at - * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU + * Lesser General Public License for more details.   *  - * By copying, modifying or distributing this software, you acknowledge - * that you have read and understood your obligations described above, - * and agree to abide by those obligations. + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA   *  - * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO - * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, - * COMPLETENESS OR PERFORMANCE. + * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA   * $/LicenseInfo$   */ diff --git a/indra/newview/lltranslate.cpp b/indra/newview/lltranslate.cpp index f7159ae324..011aa47e31 100644 --- a/indra/newview/lltranslate.cpp +++ b/indra/newview/lltranslate.cpp @@ -2,27 +2,27 @@  * @file lltranslate.cpp  * @brief Functions for translating text via Google Translate.  * -* $LicenseInfo:firstyear=2009&license=viewerlgpl$ -* Second Life Viewer Source Code -* Copyright (C) 2010, Linden Research, Inc. -*  -* This library is free software; you can redistribute it and/or -* modify it under the terms of the GNU Lesser General Public -* License as published by the Free Software Foundation; -* version 2.1 of the License only. -*  -* This library is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU -* Lesser General Public License for more details. -*  -* You should have received a copy of the GNU Lesser General Public -* License along with this library; if not, write to the Free Software -* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA -*  -* Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA -* $/LicenseInfo$ -*/ + * $LicenseInfo:firstyear=2009&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2010, Linden Research, Inc. + *  + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only. + *  + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU + * Lesser General Public License for more details. + *  + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA + *  + * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA + * $/LicenseInfo$ + */  #include "llviewerprecompiledheaders.h" diff --git a/indra/newview/lltranslate.h b/indra/newview/lltranslate.h index 2426bb71b6..e85a42e878 100644 --- a/indra/newview/lltranslate.h +++ b/indra/newview/lltranslate.h @@ -2,27 +2,27 @@  * @file lltranslate.h  * @brief Human language translation class and JSON response receiver.  * -* $LicenseInfo:firstyear=2009&license=viewerlgpl$ -* Second Life Viewer Source Code -* Copyright (C) 2010, Linden Research, Inc. -*  -* This library is free software; you can redistribute it and/or -* modify it under the terms of the GNU Lesser General Public -* License as published by the Free Software Foundation; -* version 2.1 of the License only. -*  -* This library is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU -* Lesser General Public License for more details. -*  -* You should have received a copy of the GNU Lesser General Public -* License along with this library; if not, write to the Free Software -* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA -*  -* Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA -* $/LicenseInfo$ -*/ + * $LicenseInfo:firstyear=2009&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2010, Linden Research, Inc. + *  + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only. + *  + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU + * Lesser General Public License for more details. + *  + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA + *  + * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA + * $/LicenseInfo$ + */  #ifndef LL_LLTRANSLATE_H  #define LL_LLTRANSLATE_H diff --git a/indra/newview/llviewerassetstats.cpp b/indra/newview/llviewerassetstats.cpp index 9d98302210..e621cf647e 100644 --- a/indra/newview/llviewerassetstats.cpp +++ b/indra/newview/llviewerassetstats.cpp @@ -2,31 +2,25 @@   * @file llviewerassetstats.cpp   * @brief    * - * $LicenseInfo:firstyear=2010&license=viewergpl$ - *  - * Copyright (c) 2010, Linden Research, Inc. - *  + * $LicenseInfo:firstyear=2010&license=viewerlgpl$   * Second Life Viewer Source Code - * The source code in this file ("Source Code") is provided by Linden Lab - * to you under the terms of the GNU General Public License, version 2.0 - * ("GPL"), unless you have obtained a separate licensing agreement - * ("Other License"), formally executed by you and Linden Lab.  Terms of - * the GPL can be found in doc/GPL-license.txt in this distribution, or - * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * Copyright (C) 2010, Linden Research, Inc. + *  + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only.   *  - * There are special exceptions to the terms and conditions of the GPL as - * it is applied to this Source Code. View the full text of the exception - * in the file doc/FLOSS-exception.txt in this software distribution, or - * online at - * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU + * Lesser General Public License for more details.   *  - * By copying, modifying or distributing this software, you acknowledge - * that you have read and understood your obligations described above, - * and agree to abide by those obligations. + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA   *  - * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO - * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, - * COMPLETENESS OR PERFORMANCE. + * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA   * $/LicenseInfo$   */ diff --git a/indra/newview/llviewerassetstats.h b/indra/newview/llviewerassetstats.h index 905ceefad5..73ec5974b2 100644 --- a/indra/newview/llviewerassetstats.h +++ b/indra/newview/llviewerassetstats.h @@ -2,31 +2,25 @@   * @file llviewerassetstats.h   * @brief Client-side collection of asset request statistics   * - * $LicenseInfo:firstyear=2010&license=viewergpl$ - *  - * Copyright (c) 2010, Linden Research, Inc. - *  + * $LicenseInfo:firstyear=2010&license=viewerlgpl$   * Second Life Viewer Source Code - * The source code in this file ("Source Code") is provided by Linden Lab - * to you under the terms of the GNU General Public License, version 2.0 - * ("GPL"), unless you have obtained a separate licensing agreement - * ("Other License"), formally executed by you and Linden Lab.  Terms of - * the GPL can be found in doc/GPL-license.txt in this distribution, or - * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * Copyright (C) 2010, Linden Research, Inc. + *  + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only.   *  - * There are special exceptions to the terms and conditions of the GPL as - * it is applied to this Source Code. View the full text of the exception - * in the file doc/FLOSS-exception.txt in this software distribution, or - * online at - * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU + * Lesser General Public License for more details.   *  - * By copying, modifying or distributing this software, you acknowledge - * that you have read and understood your obligations described above, - * and agree to abide by those obligations. + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA   *  - * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO - * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, - * COMPLETENESS OR PERFORMANCE. + * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA   * $/LicenseInfo$   */ diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index dd6f7011a1..ec264b1f07 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -8241,7 +8241,7 @@ void LLVOAvatar::getImpostorValues(LLVector4a* extents, LLVector3& angle, F32& d  void LLVOAvatar::idleUpdateRenderCost()  { -	static const U32 ARC_BODY_PART_COST = 200; +	static const U32 ARC_BODY_PART_COST = 20;  	static const U32 ARC_LIMIT = 2048;  	static std::set<LLUUID> all_textures; @@ -8252,7 +8252,7 @@ void LLVOAvatar::idleUpdateRenderCost()  	}  	U32 cost = 0; -	LLVOVolume::texture_cost_t textures; +	std::set<LLUUID> textures;  	for (U8 baked_index = 0; baked_index < BAKED_NUM_INDICES; baked_index++)  	{ @@ -8293,21 +8293,15 @@ void LLVOAvatar::idleUpdateRenderCost()  	} -	for (LLVOVolume::texture_cost_t::iterator iter = textures.begin(); iter != textures.end(); ++iter) -	{ -		// add the cost of each individual texture in the linkset -		cost += iter->second; -	} -  	// Diagnostic output to identify all avatar-related textures.  	// Does not affect rendering cost calculation.  	// Could be wrapped in a debug option if output becomes problematic.  	if (isSelf())  	{  		// print any attachment textures we didn't already know about. -		for (LLVOVolume::texture_cost_t::iterator it = textures.begin(); it != textures.end(); ++it) +		for (std::set<LLUUID>::iterator it = textures.begin(); it != textures.end(); ++it)  		{ -			LLUUID image_id = it->first; +			LLUUID image_id = *it;  			if( image_id.isNull() || image_id == IMG_DEFAULT || image_id == IMG_DEFAULT_AVATAR)  				continue;  			if (all_textures.find(image_id) == all_textures.end()) @@ -8339,6 +8333,8 @@ void LLVOAvatar::idleUpdateRenderCost()  		}  	} +	cost += textures.size() * LLVOVolume::ARC_TEXTURE_COST; +  	setDebugText(llformat("%d", cost));  	F32 green = 1.f-llclamp(((F32) cost-(F32)ARC_LIMIT)/(F32)ARC_LIMIT, 0.f, 1.f);  	F32 red = llmin((F32) cost/(F32)ARC_LIMIT, 1.f); diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 55e68d61f9..be987a2310 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -2874,7 +2874,7 @@ void LLVOVolume::generateSilhouette(LLSelectNode* nodep, const LLVector3& view_p  			trans_mat.translate(getRegion()->getOriginAgent());
  		}
 -		volume->generateSilhouetteVertices(nodep->mSilhouetteVertices, nodep->mSilhouetteNormals, nodep->mSilhouetteSegments, view_vector, trans_mat, mRelativeXformInvTrans, nodep->getTESelectMask());
 +		volume->generateSilhouetteVertices(nodep->mSilhouetteVertices, nodep->mSilhouetteNormals, view_vector, trans_mat, mRelativeXformInvTrans, nodep->getTESelectMask());
  		nodep->mSilhouetteExists = TRUE;
  	}
 @@ -2931,39 +2931,17 @@ const LLMatrix4 LLVOVolume::getRenderMatrix() const  // total cost is returned value + 5 * size of the resulting set.
  // Cannot include cost of textures, as they may be re-used in linked
  // children, and cost should only be increased for unique textures  -Nyx
 -U32 LLVOVolume::getRenderCost(texture_cost_t &textures) const
 +U32 LLVOVolume::getRenderCost(std::set<LLUUID> &textures) const
  {
  	// base cost of each prim should be 10 points
  	static const U32 ARC_PRIM_COST = 10;
 -
 -	// Get access to params we'll need at various points.  
 -	// Skip if this is object doesn't have a volume (e.g. is an avatar).
 -	const BOOL has_volume = (getVolume() != NULL);
 -	LLVolumeParams volume_params;
 -	LLPathParams path_params;
 -	LLProfileParams profile_params;
 -
 -	if (has_volume)
 -	{
 -		volume_params = getVolume()->getParams();
 -		path_params = volume_params.getPathParams();
 -		profile_params = volume_params.getProfileParams();
 -	}
 -	
  	// per-prim costs
  	static const U32 ARC_INVISI_COST = 1;
 -	static const U32 ARC_PARTICLE_COST = 100;
 -	static const U32 ARC_CUT_COST = 1;
 -	static const U32 ARC_TEXTURE_COST = 5;
 -
 -	// per-prim multipliers
 -	static const U32 ARC_HOLLOW_MULT = 2;
 -	static const U32 ARC_CIRC_PROF_MULT = 2;
 -	static const U32 ARC_CIRC_PATH_MULT = 2;
 -	static const U32 ARC_GLOW_MULT = 2;
 -	static const U32 ARC_BUMP_MULT = 2;
 -	static const U32 ARC_FLEXI_MULT = 4;
 -	static const U32 ARC_SHINY_MULT = 2;
 +	static const U32 ARC_SHINY_COST = 1;
 +	static const U32 ARC_GLOW_COST = 1;
 +	static const U32 ARC_FLEXI_COST = 8;
 +	static const U32 ARC_PARTICLE_COST = 16;
 +	static const U32 ARC_BUMP_COST = 4;
  	// per-face costs
  	static const U32 ARC_PLANAR_COST = 1;
 @@ -2979,68 +2957,9 @@ U32 LLVOVolume::getRenderCost(texture_cost_t &textures) const  	U32 flexi = 0;
  	U32 animtex = 0;
  	U32 particles = 0;
 +	U32 scale = 0;
  	U32 bump = 0;
  	U32 planar = 0;
 -	U32 cuts = 0;
 -	U32 hollow = 0;
 -	U32 circular_profile = 0;
 -	U32 circular_path = 0;
 -
 -	// these multipliers are variable and can be floating point
 -	F32 scale = 0.f;
 -	F32 twist = 0.f; 
 -	F32 revolutions = 0.f;
 -
 -
 -	const LLDrawable* drawablep = mDrawable;
 -
 -	if (isSculpted())
 -	{
 -		if (isMesh())
 -		{
 -			// base cost is dependent on mesh complexity
 -			// note that 3 is the highest LOD as of the time of this coding.
 -			S32 size = gMeshRepo.getMeshSize(volume_params.getSculptID(),3);
 -			if ( size > 0)
 -			{
 -				if (gMeshRepo.getSkinInfo(volume_params.getSculptID()))
 -				{
 -					// weighted attachment - 1 point for every 3 bytes
 -					shame = (U32)(size / 3.f);
 -				}
 -				else
 -				{
 -					// non-weighted attachment - 1 point for every 4 bytes
 -					shame = (U32)(size / 4.f);
 -				}
 -
 -				if (shame == 0)
 -				{
 -					// someone made a really tiny mesh. 
 -					shame = 1;
 -				}
 -			}
 -			else
 -			{
 -				// something went wrong - user should know their content isn't render-free
 -				return 0;
 -			}
 -		}
 -		else
 -		{
 -			const LLSculptParams *sculpt_params = (LLSculptParams *) getParameterEntry(LLNetworkData::PARAMS_SCULPT);
 -			LLUUID sculpt_id = sculpt_params->getSculptTexture();
 -			if (textures.find(sculpt_id) == textures.end())
 -			{
 -				LLViewerFetchedTexture *texture = LLViewerTextureManager::getFetchedTexture(sculpt_id);
 -				if (texture)
 -				{
 -					S32 texture_cost = (S32)(ARC_TEXTURE_COST * (texture->getFullHeight() / 128.f + texture->getFullWidth() / 128.f + 1));
 -					textures.insert(texture_cost_t::value_type(sculpt_id, texture_cost));
 -				}
 -			}
 -		}
 -	}
  	if (isFlexible())
  	{
 @@ -3052,67 +2971,15 @@ U32 LLVOVolume::getRenderCost(texture_cost_t &textures) const  	}
  	const LLVector3& sc = getScale();
 -	scale += sc.mV[0] + sc.mV[1] + sc.mV[2];
 -	if (scale > 4.f)
 -	{
 -		// scale is a multiplier, cap it at 4.
 -		scale = 4.f;
 -	}
 -
 -	// add points for cut prims
 -	if (path_params.getBegin() != 0.f || path_params.getEnd() != 1.f)
 -	{
 -		++cuts;
 -	}
 -
 -	if (profile_params.getBegin() != 0.f || profile_params.getEnd() != 1.f)
 -	{
 -		++cuts;
 -	}
 -
 -	// double cost for hollow prims / sculpties
 -	if (volume_params.getHollow() != 0.f)
 -	{
 -		hollow = 1;
 -	}
 -
 -	F32 twist_mag = path_params.getTwistBegin() - path_params.getTwistEnd();
 -	if (twist_mag < 0)
 -	{
 -		twist_mag *= -1.f;
 -	}
 -
 -	// note magnitude of twist is [-1.f, 1.f]. which translates to [-180, 180] degrees.
 -	// scale to degrees / 90 by multiplying by 2.
 -	twist = twist_mag * 2.f;
 -
 -	// multiply by the number of revolutions in the prim. cap at 4.
 -	revolutions = path_params.getRevolutions();
 -	if (revolutions > 4.f)
 -	{
 -		revolutions = 4.f;
 -	}
 +	scale += (U32) sc.mV[0] + (U32) sc.mV[1] + (U32) sc.mV[2];
 -	// double cost for circular profiles / sculpties
 -	if (profile_params.getCurveType() == LL_PCODE_PROFILE_CIRCLE ||
 -		profile_params.getCurveType() == LL_PCODE_PROFILE_CIRCLE_HALF)
 -	{
 -		circular_profile = 1;
 -	}
 -
 -	// double cost for circular paths / sculpties
 -	if (path_params.getCurveType() == LL_PCODE_PATH_CIRCLE ||
 -		path_params.getCurveType() == LL_PCODE_PATH_CIRCLE2)
 -	{
 -		circular_path = 1;
 -	}
 +	const LLDrawable* drawablep = mDrawable;
 -	// treat sculpties as hollow prims with circular paths & profiles
 -	if (isSculpted() && !isMesh())
 +	if (isSculpted())
  	{
 -		hollow = 1;
 -		circular_profile = 1;
 -		circular_path = 1;
 +		const LLSculptParams *sculpt_params = (LLSculptParams *) getParameterEntry(LLNetworkData::PARAMS_SCULPT);
 +		LLUUID sculpt_id = sculpt_params->getSculptTexture();
 +		textures.insert(sculpt_id);
  	}
  	for (S32 i = 0; i < drawablep->getNumFaces(); ++i)
 @@ -3123,11 +2990,7 @@ U32 LLVOVolume::getRenderCost(texture_cost_t &textures) const  		if (img)
  		{
 -			if (textures.find(img->getID()) == textures.end())
 -			{
 -				S32 texture_cost = (S32)(ARC_TEXTURE_COST * (img->getFullHeight() / 128.f + img->getFullWidth() / 128.f + 1));
 -				textures.insert(texture_cost_t::value_type(img->getID(), texture_cost));
 -			}
 +			textures.insert(img->getID());
  		}
  		if (face->getPoolType() == LLDrawPool::POOL_ALPHA)
 @@ -3136,24 +2999,21 @@ U32 LLVOVolume::getRenderCost(texture_cost_t &textures) const  		}
  		else if (img && img->getPrimaryFormat() == GL_ALPHA)
  		{
 -			invisi++;
 +			invisi = 1;
  		}
  		if (te)
  		{
  			if (te->getBumpmap())
  			{
 -				// bump is a multiplier, don't add per-face
  				bump = 1;
  			}
  			if (te->getShiny())
  			{
 -				// shiny is a multiplier, don't add per-face
  				shiny = 1;
  			}
  			if (te->getGlow() > 0.f)
  			{
 -				// glow is a multiplier, don't add per-face
  				glow = 1;
  			}
  			if (face->mTextureMatrix != NULL)
 @@ -3167,70 +3027,37 @@ U32 LLVOVolume::getRenderCost(texture_cost_t &textures) const  		}
  	}
 -	// shame currently has the "base" cost of 10 for normal prims, variable for mesh
 -	// add modifier settings
 -	shame += cuts * ARC_CUT_COST;
 -	shame += planar * ARC_PLANAR_COST;
 -	shame += animtex * ARC_ANIM_TEX_COST;
 -	shame += alpha * ARC_ALPHA_COST;
  	shame += invisi * ARC_INVISI_COST;
 +	shame += shiny * ARC_SHINY_COST;
 +	shame += glow * ARC_GLOW_COST;
 +	shame += alpha * ARC_ALPHA_COST;
 +	shame += flexi * ARC_FLEXI_COST;
 +	shame += animtex * ARC_ANIM_TEX_COST;
 +	shame += particles * ARC_PARTICLE_COST;
 +	shame += bump * ARC_BUMP_COST;
 +	shame += planar * ARC_PLANAR_COST;
 +	shame += scale;
 -	// multiply shame by multipliers
 -	if (hollow)
 -	{
 -		shame *= hollow * ARC_HOLLOW_MULT;
 -	}
 -
 -	if (circular_profile)
 -	{
 -		shame *= circular_profile * ARC_CIRC_PROF_MULT;
 -	}
 -
 -	if (circular_path)
 -	{
 -		shame *= circular_path * ARC_CIRC_PATH_MULT;
 -	}
 -
 -	if (glow)
 -	{
 -		shame *= glow * ARC_GLOW_MULT;
 -	}
 -
 -	if (bump)
 -	{
 -		shame *= bump * ARC_BUMP_MULT;
 -	}
 -
 -	if (flexi)
 -	{
 -		shame *= flexi * ARC_FLEXI_MULT;
 -	}
 -
 -	if (shiny)
 -	{
 -		shame *= shiny * ARC_SHINY_MULT;
 -	}
 -
 -	if (twist > 1.f)
 -	{
 -		shame = (U32)(shame * twist);
 -	}
 -
 -	if (scale > 1.f)
 -	{
 -		shame = (U32)(shame *scale);
 -	}
 -
 -	if (revolutions > 1.f)
 +	LLViewerObject::const_child_list_t& child_list = getChildren();
 +	for (LLViewerObject::child_list_t::const_iterator iter = child_list.begin();
 +		 iter != child_list.end(); 
 +		 ++iter)
  	{
 -		shame = (U32)(shame * revolutions);
 +		const LLViewerObject* child_objectp = *iter;
 +		const LLDrawable* child_drawablep = child_objectp->mDrawable;
 +		if (child_drawablep)
 +		{
 +			const LLVOVolume* child_volumep = child_drawablep->getVOVolume();
 +			if (child_volumep)
 +			{
 +				shame += child_volumep->getRenderCost(textures);
 +			}
 +		}
  	}
 -	// add additional costs
 -	shame += particles * ARC_PARTICLE_COST;
 -
  	return shame;
 +
  }
  F32 LLVOVolume::getStreamingCost()
 @@ -3247,16 +3074,13 @@ F32 LLVOVolume::getStreamingCost()  	return 0.f;
  }
 -U32 LLVOVolume::getTriangleCount()
 +U32 LLVOVolume::getTriangleCount() const
  {
  	U32 count = 0;
  	LLVolume* volume = getVolume();
  	if (volume)
  	{
 -		for (S32 i = 0; i < volume->getNumVolumeFaces(); ++i)
 -		{
 -			count += volume->getVolumeFace(i).mNumIndices/3;
 -		}
 +		count = volume->getNumTriangles();
  	}
  	return count;
 diff --git a/indra/newview/llvovolume.h b/indra/newview/llvovolume.h index 5af88c6cbd..0c12f14832 100644 --- a/indra/newview/llvovolume.h +++ b/indra/newview/llvovolume.h @@ -129,10 +129,9 @@ public:  	const LLMatrix4&	getRelativeXform() const				{ return mRelativeXform; }  	const LLMatrix3&	getRelativeXformInvTrans() const		{ return mRelativeXformInvTrans; }  	/*virtual*/	const LLMatrix4	getRenderMatrix() const; -				typedef std::map<LLUUID, S32> texture_cost_t; -				U32 	getRenderCost(texture_cost_t &textures) const; +				U32 	getRenderCost(std::set<LLUUID> &textures) const;  	/*virtual*/	F32		getStreamingCost(); -	/*virtual*/ U32		getTriangleCount(); +	/*virtual*/ U32		getTriangleCount() const;  	/*virtual*/ BOOL lineSegmentIntersect(const LLVector3& start, const LLVector3& end,   										  S32 face = -1,                        // which face to check, -1 = ALL_SIDES  										  BOOL pick_transparent = FALSE, @@ -359,6 +358,8 @@ public:  	static LLPointer<LLObjectMediaDataClient> sObjectMediaClient;  	static LLPointer<LLObjectMediaNavigateClient> sObjectMediaNavigateClient; +	static const U32 ARC_TEXTURE_COST = 5; +  protected:  	static S32 sNumLODChanges; diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index ca58d8275b..69173d26f4 100755 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -1021,7 +1021,6 @@ S32 LLPipeline::getMaxLightingDetail() const  S32 LLPipeline::setLightingDetail(S32 level)  {  	LLMemType mt_ld(LLMemType::MTYPE_PIPELINE_LIGHTING_DETAIL); -	assertInitialized();  	if (level < 0)  	{ diff --git a/indra/newview/skins/default/xui/da/strings.xml b/indra/newview/skins/default/xui/da/strings.xml index 6f891b8d1b..aa02fc14e5 100644 --- a/indra/newview/skins/default/xui/da/strings.xml +++ b/indra/newview/skins/default/xui/da/strings.xml @@ -1843,34 +1843,34 @@ Forventet .wav, .tga, .bmp, .jpg, .jpeg, or .bvh  	<string name="PDT">  		PDT  	</string> -	<string name="Forward"> +	<string name="Direction_Forward">  		Fremad  	</string> -	<string name="Left"> +	<string name="Direction_Left">  		Venstre  	</string> -	<string name="Right"> +	<string name="Direction_Right">  		Højre  	</string> -	<string name="Back"> +	<string name="Direction_Back">  		Bagud  	</string> -	<string name="North"> +	<string name="Direction_North">  		Nord  	</string> -	<string name="South"> +	<string name="Direction_South">  		Syd  	</string> -	<string name="West"> +	<string name="Direction_West">  		Vest  	</string> -	<string name="East"> +	<string name="Direction_East">  		Øst  	</string> -	<string name="Up"> +	<string name="Direction_Up">  		Op  	</string> -	<string name="Down"> +	<string name="Direction_Down">  		Ned  	</string>  	<string name="Any Category"> diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml index e4676194aa..7284e40be2 100644 --- a/indra/newview/skins/default/xui/de/strings.xml +++ b/indra/newview/skins/default/xui/de/strings.xml @@ -1888,34 +1888,34 @@ Gültige Formate: .wav, .tga, .bmp, .jpg, .jpeg oder .bvh  	<string name="PDT">  		PDT  	</string> -	<string name="Forward"> +	<string name="Direction_Forward">  		Vorwärts  	</string> -	<string name="Left"> +	<string name="Direction_Left">  		Links  	</string> -	<string name="Right"> +	<string name="Direction_Right">  		Rechts  	</string> -	<string name="Back"> +	<string name="Direction_Back">  		Hinten  	</string> -	<string name="North"> +	<string name="Direction_North">  		Norden  	</string> -	<string name="South"> +	<string name="Direction_South">  		Süden  	</string> -	<string name="West"> +	<string name="Direction_West">  		Westen  	</string> -	<string name="East"> +	<string name="Direction_East">  		Osten  	</string> -	<string name="Up"> +	<string name="Direction_Up">  		Nach oben  	</string> -	<string name="Down"> +	<string name="Direction_Down">  		Nach unten  	</string>  	<string name="Any Category"> diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index b745ee86b8..4b871343e2 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -2323,9 +2323,6 @@ Expected .wav, .tga, .bmp, .jpg, .jpeg, or .bvh  	<string name="accel-win-alt">Alt+</string>  	<string name="accel-win-shift">Shift+</string> -	<string name="Esc">Esc</string> -	<string name="Home">Home</string> -  	<!-- Previews -->  	<string name="FileSaved">File Saved</string>  	<string name="Receiving">Receiving</string> @@ -2337,16 +2334,16 @@ Expected .wav, .tga, .bmp, .jpg, .jpeg, or .bvh  	<string name="PDT">PDT</string>  	<!-- Directions, HUD --> -	<string name="Forward">Forward</string> -	<string name="Left">Left</string> -	<string name="Right">Right</string> -	<string name="Back">Back</string> -	<string name="North">North</string> -	<string name="South">South</string> -	<string name="West">West</string> -	<string name="East">East</string> -	<string name="Up">Up</string> -	<string name="Down">Down</string> +	<string name="Direction_Forward">Forward</string> +	<string name="Direction_Left">Left</string> +	<string name="Direction_Right">Right</string> +	<string name="Direction_Back">Back</string> +	<string name="Direction_North">North</string> +	<string name="Direction_South">South</string> +	<string name="Direction_West">West</string> +	<string name="Direction_East">East</string> +	<string name="Direction_Up">Up</string> +	<string name="Direction_Down">Down</string>      <!-- Search Category Strings -->  	<string name="Any Category">Any Category</string> @@ -3315,4 +3312,119 @@ Abuse Report</string>    <string name="EmptyOutfitText">There are no items in this outfit</string> +  <!-- Key names begin --> +  <string name="Esc">Esc</string> +  <string name="Space">Space</string> +  <string name="Enter">Enter</string> +  <string name="Tab">Tab</string> +  <string name="Ins">Ins</string> +  <string name="Del">Del</string> +  <string name="Backsp">Backsp</string> +  <string name="Shift">Shift</string> +  <string name="Ctrl">Ctrl</string> +  <string name="Alt">Alt</string> +  <string name="CapsLock">CapsLock</string> +  <string name="Left">Left</string> +  <string name="Right">Right</string> +  <string name="Up">Up</string> +  <string name="Down">Down</string> +  <string name="Home">Home</string> +  <string name="End">End</string> +  <string name="PgUp">PgUp</string> +  <string name="PgDn">PgDn</string> + +  <string name="F1">F1</string> +  <string name="F2">F2</string> +  <string name="F3">F3</string> +  <string name="F4">F4</string> +  <string name="F5">F5</string> +  <string name="F6">F6</string> +  <string name="F7">F7</string> +  <string name="F8">F8</string> +  <string name="F9">F9</string> +  <string name="F10">F10</string> +  <string name="F11">F11</string> +  <string name="F12">F12</string> + +  <string name="Add">Add</string> +  <string name="Subtract">Subtract</string> +  <string name="Multiply">Multiply</string> +  <string name="Divide">Divide</string> +  <string name="PAD_DIVIDE">PAD_DIVIDE</string> +  <string name="PAD_LEFT">PAD_LEFT</string> +  <string name="PAD_RIGHT">PAD_RIGHT</string> +  <string name="PAD_DOWN">PAD_DOWN</string> +  <string name="PAD_UP">PAD_UP</string> +  <string name="PAD_HOME">PAD_HOME</string> +  <string name="PAD_END">PAD_END</string> +  <string name="PAD_PGUP">PAD_PGUP</string> +  <string name="PAD_PGDN">PAD_PGDN</string> +  <string name="PAD_CENTER">PAD_CENTER</string> +  <string name="PAD_INS">PAD_INS</string> +  <string name="PAD_DEL">PAD_DEL</string> +  <string name="PAD_Enter">PAD_Enter</string> +  <string name="PAD_BUTTON0">PAD_BUTTON0</string> +  <string name="PAD_BUTTON1">PAD_BUTTON1</string> +  <string name="PAD_BUTTON2">PAD_BUTTON2</string> +  <string name="PAD_BUTTON3">PAD_BUTTON3</string> +  <string name="PAD_BUTTON4">PAD_BUTTON4</string> +  <string name="PAD_BUTTON5">PAD_BUTTON5</string> +  <string name="PAD_BUTTON6">PAD_BUTTON6</string> +  <string name="PAD_BUTTON7">PAD_BUTTON7</string> +  <string name="PAD_BUTTON8">PAD_BUTTON8</string> +  <string name="PAD_BUTTON9">PAD_BUTTON9</string> +  <string name="PAD_BUTTON10">PAD_BUTTON10</string> +  <string name="PAD_BUTTON11">PAD_BUTTON11</string> +  <string name="PAD_BUTTON12">PAD_BUTTON12</string> +  <string name="PAD_BUTTON13">PAD_BUTTON13</string> +  <string name="PAD_BUTTON14">PAD_BUTTON14</string> +  <string name="PAD_BUTTON15">PAD_BUTTON15</string> + +  <string name="-">-</string> +  <string name="=">=</string> +  <string name="`">`</string> +  <string name=";">;</string> +  <string name="[">[</string> +  <string name="]">]</string> +  <string name="\">\</string> + +  <string name="0">0</string> +  <string name="1">1</string> +  <string name="2">2</string> +  <string name="3">3</string> +  <string name="4">4</string> +  <string name="5">5</string> +  <string name="6">6</string> +  <string name="7">7</string> +  <string name="8">8</string> +  <string name="9">9</string> + +  <string name="A">A</string> +  <string name="B">B</string> +  <string name="C">C</string> +  <string name="D">D</string> +  <string name="E">E</string> +  <string name="F">F</string> +  <string name="G">G</string> +  <string name="H">H</string> +  <string name="I">I</string> +  <string name="J">J</string> +  <string name="K">K</string> +  <string name="L">L</string> +  <string name="M">M</string> +  <string name="N">N</string> +  <string name="O">O</string> +  <string name="P">P</string> +  <string name="Q">Q</string> +  <string name="R">R</string> +  <string name="S">S</string> +  <string name="T">T</string> +  <string name="U">U</string> +  <string name="V">V</string> +  <string name="W">W</string> +  <string name="X">X</string> +  <string name="Y">Y</string> +  <string name="Z">Z</string> +  <!-- Key names end --> +    </strings> diff --git a/indra/newview/skins/default/xui/es/strings.xml b/indra/newview/skins/default/xui/es/strings.xml index 810b1630dd..19adf29d29 100644 --- a/indra/newview/skins/default/xui/es/strings.xml +++ b/indra/newview/skins/default/xui/es/strings.xml @@ -1846,34 +1846,34 @@ Se esperaba .wav, .tga, .bmp, .jpg, .jpeg, o .bvh  	<string name="PDT">  		PDT  	</string> -	<string name="Forward"> +	<string name="Direction_Forward">  		Adelante  	</string> -	<string name="Left"> +	<string name="Direction_Left">  		Izquierda  	</string> -	<string name="Right"> +	<string name="Direction_Right">  		Derecha  	</string> -	<string name="Back"> +	<string name="Direction_Back">  		Atrás  	</string> -	<string name="North"> +	<string name="Direction_North">  		Norte  	</string> -	<string name="South"> +	<string name="Direction_South">  		Sur  	</string> -	<string name="West"> +	<string name="Direction_West">  		Oeste  	</string> -	<string name="East"> +	<string name="Direction_East">  		Este  	</string> -	<string name="Up"> +	<string name="Direction_Up">  		Arriba  	</string> -	<string name="Down"> +	<string name="Direction_Down">  		Abajo  	</string>  	<string name="Any Category"> diff --git a/indra/newview/skins/default/xui/fr/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml index d75f6c731d..74c1fd8622 100644 --- a/indra/newview/skins/default/xui/fr/strings.xml +++ b/indra/newview/skins/default/xui/fr/strings.xml @@ -1888,34 +1888,34 @@  	<string name="PDT">  		PDT  	</string> -	<string name="Forward"> +	<string name="Direction_Forward">  		Vers l'avant  	</string> -	<string name="Left"> +	<string name="Direction_Left">  		Gauche  	</string> -	<string name="Right"> +	<string name="Direction_Right">  		Droite  	</string> -	<string name="Back"> +	<string name="Direction_Back">  		Arrière  	</string> -	<string name="North"> +	<string name="Direction_North">  		Nord  	</string> -	<string name="South"> +	<string name="Direction_South">  		Sud  	</string> -	<string name="West"> +	<string name="Direction_West">  		Ouest  	</string> -	<string name="East"> +	<string name="Direction_East">  		Est  	</string> -	<string name="Up"> +	<string name="Direction_Up">  		Haut  	</string> -	<string name="Down"> +	<string name="Direction_Down">  		Bas  	</string>  	<string name="Any Category"> diff --git a/indra/newview/skins/default/xui/it/strings.xml b/indra/newview/skins/default/xui/it/strings.xml index dfe635182e..37dc90d056 100644 --- a/indra/newview/skins/default/xui/it/strings.xml +++ b/indra/newview/skins/default/xui/it/strings.xml @@ -1846,34 +1846,34 @@ Tipi conosciuti .wav, .tga, .bmp, .jpg, .jpeg, or .bvh  	<string name="PDT">  		Ora legale Pacifico  	</string> -	<string name="Forward"> +	<string name="Direction_Forward">  		Avanti  	</string> -	<string name="Left"> +	<string name="Direction_Left">  		Sinistra  	</string> -	<string name="Right"> +	<string name="Direction_Right">  		Destra  	</string> -	<string name="Back"> +	<string name="Direction_Back">  		Indietro  	</string> -	<string name="North"> +	<string name="Direction_North">  		Nord  	</string> -	<string name="South"> +	<string name="Direction_South">  		Sud  	</string> -	<string name="West"> +	<string name="Direction_West">  		Ovest  	</string> -	<string name="East"> +	<string name="Direction_East">  		Est  	</string> -	<string name="Up"> +	<string name="Direction_Up">  		Su  	</string> -	<string name="Down"> +	<string name="Direction_Down">  		Giù  	</string>  	<string name="Any Category"> diff --git a/indra/newview/skins/default/xui/ja/strings.xml b/indra/newview/skins/default/xui/ja/strings.xml index 187f21257a..75cb126874 100644 --- a/indra/newview/skins/default/xui/ja/strings.xml +++ b/indra/newview/skins/default/xui/ja/strings.xml @@ -1882,34 +1882,34 @@  	<string name="PDT">  		太平洋夏時間  	</string> -	<string name="Forward"> +	<string name="Direction_Forward">  		前  	</string> -	<string name="Left"> +	<string name="Direction_Left">  		左  	</string> -	<string name="Right"> +	<string name="Direction_Right">  		右  	</string> -	<string name="Back"> +	<string name="Direction_Back">  		後ろ  	</string> -	<string name="North"> +	<string name="Direction_North">  		北  	</string> -	<string name="South"> +	<string name="Direction_South">  		南  	</string> -	<string name="West"> +	<string name="Direction_West">  		西  	</string> -	<string name="East"> +	<string name="Direction_East">  		東  	</string> -	<string name="Up"> +	<string name="Direction_Up">  		上  	</string> -	<string name="Down"> +	<string name="Direction_Down">  		下  	</string>  	<string name="Any Category"> diff --git a/indra/newview/skins/default/xui/nl/strings.xml b/indra/newview/skins/default/xui/nl/strings.xml index 07265d2716..87e3638a49 100644 --- a/indra/newview/skins/default/xui/nl/strings.xml +++ b/indra/newview/skins/default/xui/nl/strings.xml @@ -1441,34 +1441,34 @@ Verwacht .wav, .tga, .bmp, .jpg, .jpeg, or .bvh  	<string name="PDT">  		PDT  	</string> -	<string name="Forward"> +	<string name="Direction_Forward">  		Vooruit  	</string> -	<string name="Left"> +	<string name="Direction_Left">  		Links  	</string> -	<string name="Right"> +	<string name="Direction_Right">  		Rechts  	</string> -	<string name="Back"> +	<string name="Direction_Back">  		Achteruit  	</string> -	<string name="North"> +	<string name="Direction_North">  		Noord  	</string> -	<string name="South"> +	<string name="Direction_South">  		Zuid  	</string> -	<string name="West"> +	<string name="Direction_West">  		West  	</string> -	<string name="East"> +	<string name="Direction_East">  		Oost  	</string> -	<string name="Up"> +	<string name="Direction_Up">  		Omhoog  	</string> -	<string name="Down"> +	<string name="Direction_Down">  		Omlaag  	</string>  	<string name="Any Category"> diff --git a/indra/newview/skins/default/xui/pl/strings.xml b/indra/newview/skins/default/xui/pl/strings.xml index d1fb382a2d..e6019bf66d 100644 --- a/indra/newview/skins/default/xui/pl/strings.xml +++ b/indra/newview/skins/default/xui/pl/strings.xml @@ -1843,34 +1843,34 @@ Expected .wav, .tga, .bmp, .jpg, .jpeg, or .bvh  	<string name="PDT">  		PDT  	</string> -	<string name="Forward"> +	<string name="Direction_Forward">  		Do przodu  	</string> -	<string name="Left"> +	<string name="Direction_Left">  		W lewo  	</string> -	<string name="Right"> +	<string name="Direction_Right">  		W prawo  	</string> -	<string name="Back"> +	<string name="Direction_Back">  		Wróć  	</string> -	<string name="North"> +	<string name="Direction_North">  		Północ  	</string> -	<string name="South"> +	<string name="Direction_South">  		Południe  	</string> -	<string name="West"> +	<string name="Direction_West">  		Zachód  	</string> -	<string name="East"> +	<string name="Direction_East">  		Wschód  	</string> -	<string name="Up"> +	<string name="Direction_Up">  		W górę  	</string> -	<string name="Down"> +	<string name="Direction_Down">  		W dół  	</string>  	<string name="Any Category"> diff --git a/indra/newview/skins/default/xui/pt/strings.xml b/indra/newview/skins/default/xui/pt/strings.xml index ce2c2ddaa1..06123e0118 100644 --- a/indra/newview/skins/default/xui/pt/strings.xml +++ b/indra/newview/skins/default/xui/pt/strings.xml @@ -1846,34 +1846,34 @@ Expected .wav, .tga, .bmp, .jpg, .jpeg, or .bvh  	<string name="PDT">  		PDT  	</string> -	<string name="Forward"> +	<string name="Direction_Forward">  		Avante  	</string> -	<string name="Left"> +	<string name="Direction_Left">  		Esquerda  	</string> -	<string name="Right"> +	<string name="Direction_Right">  		Direita  	</string> -	<string name="Back"> +	<string name="Direction_Back">  		Atrás  	</string> -	<string name="North"> +	<string name="Direction_North">  		Norte  	</string> -	<string name="South"> +	<string name="Direction_South">  		Sul  	</string> -	<string name="West"> +	<string name="Direction_West">  		Oeste  	</string> -	<string name="East"> +	<string name="Direction_East">  		Leste  	</string> -	<string name="Up"> +	<string name="Direction_Up">  		Acima  	</string> -	<string name="Down"> +	<string name="Direction_Down">  		Abaixo  	</string>  	<string name="Any Category"> diff --git a/indra/newview/tests/llsimplestat_test.cpp b/indra/newview/tests/llsimplestat_test.cpp index 60a8cac995..b556941f4a 100644 --- a/indra/newview/tests/llsimplestat_test.cpp +++ b/indra/newview/tests/llsimplestat_test.cpp @@ -3,31 +3,25 @@   * @date 2010-10-22   * @brief Test cases for some of llsimplestat.h   * - * $LicenseInfo:firstyear=2010&license=viewergpl$ - *  - * Copyright (c) 2010, Linden Research, Inc. - *  + * $LicenseInfo:firstyear=2010&license=viewerlgpl$   * Second Life Viewer Source Code - * The source code in this file ("Source Code") is provided by Linden Lab - * to you under the terms of the GNU General Public License, version 2.0 - * ("GPL"), unless you have obtained a separate licensing agreement - * ("Other License"), formally executed by you and Linden Lab.  Terms of - * the GPL can be found in doc/GPL-license.txt in this distribution, or - * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * Copyright (C) 2010, Linden Research, Inc. + *  + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only.   *  - * There are special exceptions to the terms and conditions of the GPL as - * it is applied to this Source Code. View the full text of the exception - * in the file doc/FLOSS-exception.txt in this software distribution, or - * online at - * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU + * Lesser General Public License for more details.   *  - * By copying, modifying or distributing this software, you acknowledge - * that you have read and understood your obligations described above, - * and agree to abide by those obligations. + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA   *  - * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO - * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, - * COMPLETENESS OR PERFORMANCE. + * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA   * $/LicenseInfo$   */ diff --git a/indra/newview/tests/llviewerassetstats_test.cpp b/indra/newview/tests/llviewerassetstats_test.cpp index 1bb4fb7c0c..3faddc13c1 100644 --- a/indra/newview/tests/llviewerassetstats_test.cpp +++ b/indra/newview/tests/llviewerassetstats_test.cpp @@ -3,31 +3,25 @@   * @date 2010-10-28   * @brief Test cases for some of newview/llviewerassetstats.cpp   * - * $LicenseInfo:firstyear=2010&license=viewergpl$ - *  - * Copyright (c) 2010, Linden Research, Inc. - *  + * $LicenseInfo:firstyear=2010&license=viewerlgpl$   * Second Life Viewer Source Code - * The source code in this file ("Source Code") is provided by Linden Lab - * to you under the terms of the GNU General Public License, version 2.0 - * ("GPL"), unless you have obtained a separate licensing agreement - * ("Other License"), formally executed by you and Linden Lab.  Terms of - * the GPL can be found in doc/GPL-license.txt in this distribution, or - * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * Copyright (C) 2010, Linden Research, Inc. + *  + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only.   *  - * There are special exceptions to the terms and conditions of the GPL as - * it is applied to this Source Code. View the full text of the exception - * in the file doc/FLOSS-exception.txt in this software distribution, or - * online at - * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU + * Lesser General Public License for more details.   *  - * By copying, modifying or distributing this software, you acknowledge - * that you have read and understood your obligations described above, - * and agree to abide by those obligations. + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA   *  - * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO - * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, - * COMPLETENESS OR PERFORMANCE. + * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA   * $/LicenseInfo$   */ | 
