diff options
Diffstat (limited to 'indra')
47 files changed, 5756 insertions, 5109 deletions
| diff --git a/indra/llcommon/CMakeLists.txt b/indra/llcommon/CMakeLists.txt index 80df91a5c1..9910281b64 100644 --- a/indra/llcommon/CMakeLists.txt +++ b/indra/llcommon/CMakeLists.txt @@ -115,6 +115,7 @@ set(llcommon_HEADER_FILES      indra_constants.h      linden_common.h      linked_lists.h +    llaccountingquota.h      llallocator.h      llallocator_heap_profile.h      llagentconstants.h diff --git a/indra/llcommon/llaccountingquota.h b/indra/llcommon/llaccountingquota.h new file mode 100644 index 0000000000..f52d94f868 --- /dev/null +++ b/indra/llcommon/llaccountingquota.h @@ -0,0 +1,78 @@ +/**  + * @file llaccountingquota.h + * @ + * + * $LicenseInfo:firstyear=2001&license=viewergpl$ + *  + * Copyright (c) 2001-2009, Linden Research, Inc. + *  + * 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 + *  + * 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 + *  + * 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. + *  + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#ifndef LL_ACCOUNTINGQUOTA_H +#define LL_ACCOUNTINGQUOTA_H + +struct ParcelQuota +{ +	ParcelQuota( F32 ownerRenderCost, F32 ownerPhysicsCost, F32 ownerNetworkCost, F32 ownerSimulationCost, +				F32 groupRenderCost, F32 groupPhysicsCost, F32 groupNetworkCost, F32 groupSimulationCost, +				F32 otherRenderCost, F32 otherPhysicsCost, F32 otherNetworkCost, F32 otherSimulationCost, +				F32 totalRenderCost, F32 totalPhysicsCost, F32 totalNetworkCost, F32 totalSimulationCost) +	: mOwnerRenderCost( ownerRenderCost ), mOwnerPhysicsCost( ownerPhysicsCost )  +	, mOwnerNetworkCost( ownerNetworkCost ), mOwnerSimulationCost( ownerSimulationCost ) +	, mGroupRenderCost( groupRenderCost ), mGroupPhysicsCost( groupPhysicsCost ) +	, mGroupNetworkCost( groupNetworkCost ), mGroupSimulationCost( groupSimulationCost ) +	, mOtherRenderCost( otherRenderCost ), mOtherPhysicsCost( otherPhysicsCost ) +	, mOtherNetworkCost( otherNetworkCost ), mOtherSimulationCost( otherSimulationCost ) +	, mTotalRenderCost( totalRenderCost ), mTotalPhysicsCost( totalPhysicsCost )  +	, mTotalNetworkCost( totalNetworkCost ), mTotalSimulationCost( totalSimulationCost ) +	{ +	} +	ParcelQuota(){}			 +	F32 mOwnerRenderCost, mOwnerPhysicsCost, mOwnerNetworkCost, mOwnerSimulationCost; +	F32 mGroupRenderCost, mGroupPhysicsCost, mGroupNetworkCost, mGroupSimulationCost; +	F32 mOtherRenderCost, mOtherPhysicsCost, mOtherNetworkCost, mOtherSimulationCost; +	F32 mTotalRenderCost, mTotalPhysicsCost, mTotalNetworkCost, mTotalSimulationCost; +}; + +struct SelectionQuota +{ +	SelectionQuota( S32 localId, F32 renderCost, F32 physicsCost, F32 networkCost, F32 simulationCost ) +	: mLocalId( localId) +	, mRenderCost( renderCost ) +	, mPhysicsCost( physicsCost ) +	, mNetworkCost( networkCost ) +	, mSimulationCost( simulationCost ) +	{ +	} +	SelectionQuota() {} +	 +	F32 mRenderCost, mPhysicsCost, mNetworkCost, mSimulationCost;	 +	S32 mLocalId; +}; + +#endif + + + diff --git a/indra/llinventory/llparcel.cpp b/indra/llinventory/llparcel.cpp index 0a4cd51ea0..e8cd871157 100644 --- a/indra/llinventory/llparcel.cpp +++ b/indra/llinventory/llparcel.cpp @@ -1348,3 +1348,12 @@ LLParcel::ECategory category_ui_string_to_category(const std::string& s)      // is a distinct option from "None" and "Other"      return LLParcel::C_ANY;  } + +void LLParcel::updateQuota( const LLUUID& objectId,  const ParcelQuota& quota ) +{ +	if ( mID == objectId ) +	{ +		mQuota = quota; +	} +} + diff --git a/indra/llinventory/llparcel.h b/indra/llinventory/llparcel.h index 71b65d99ce..4893337967 100644 --- a/indra/llinventory/llparcel.h +++ b/indra/llinventory/llparcel.h @@ -34,7 +34,7 @@  #include "llpermissions.h"  #include "lltimer.h"  #include "v3math.h" - +#include "llaccountingquota.h"  // Grid out of which parcels taken is stepped every 4 meters.  const F32 PARCEL_GRID_STEP_METERS	= 4.f; @@ -586,7 +586,11 @@ public:  	LLUUID	getPreviousOwnerID() const		{ return mPreviousOwnerID; }  	BOOL	getPreviouslyGroupOwned() const	{ return mPreviouslyGroupOwned; }  	BOOL	getSellWithObjects() const		{ return (mParcelFlags & PF_SELL_PARCEL_OBJECTS) ? TRUE : FALSE; } - +	 +	 +			void		 updateQuota( const LLUUID& objectId, const ParcelQuota& quota ); +	const	ParcelQuota& getQuota( void ) { return mQuota; }	 +	  protected:  	LLUUID mID;  	LLUUID				mOwnerID; @@ -657,8 +661,9 @@ protected:  	BOOL				mRegionPushOverride;  	BOOL				mRegionDenyAnonymousOverride;  	BOOL				mRegionDenyAgeUnverifiedOverride; - - +	 +	ParcelQuota			mQuota; +	  public:  	// HACK, make private  	S32					mLocalID; diff --git a/indra/llprimitive/llmodel.cpp b/indra/llprimitive/llmodel.cpp index 794cdb83d5..57ac7a143f 100644 --- a/indra/llprimitive/llmodel.cpp +++ b/indra/llprimitive/llmodel.cpp @@ -991,6 +991,9 @@ void LLModel::normalizeVolumeFaces()  		scale.splat(1.f);  		scale.div(size); +		LLVector4a inv_scale(1.f); +		inv_scale.div(scale); +  		for (U32 i = 0; i < mVolumeFaces.size(); ++i)  		{  			LLVolumeFace& face = mVolumeFaces[i]; @@ -1007,10 +1010,14 @@ void LLModel::normalizeVolumeFaces()  			// For all the positions, we scale  			// the positions to fit within the unit cube.  			LLVector4a* pos = (LLVector4a*) face.mPositions; +			LLVector4a* norm = (LLVector4a*) face.mNormals; +  			for (U32 j = 0; j < face.mNumVertices; ++j)  			{  			 	pos[j].add(trans);  				pos[j].mul(scale); +				norm[j].mul(inv_scale); +				norm[j].normalize3();  			}  		} diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp index f29ee0e57e..a460912e70 100644 --- a/indra/llrender/llgl.cpp +++ b/indra/llrender/llgl.cpp @@ -328,6 +328,7 @@ LLGLManager::LLGLManager() :  	mHasShaderObjects(FALSE),  	mHasVertexShader(FALSE),  	mHasFragmentShader(FALSE), +	mNumTextureImageUnits(0),  	mHasOcclusionQuery(FALSE),  	mHasOcclusionQuery2(FALSE),  	mHasPointParameters(FALSE), @@ -534,6 +535,13 @@ bool LLGLManager::initGL()  		return false;  	} +	if (mHasFragmentShader) +	{ +		GLint num_tex_image_units; +		glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS_ARB, &num_tex_image_units); +		mNumTextureImageUnits = num_tex_image_units; +	} +	  	setToDebugGPU();  	initGLStates(); @@ -878,11 +886,13 @@ void LLGLManager::initExtensions()  		LL_INFOS("RenderInit") << "Disabling mip-map generation for Intel GPUs" << LL_ENDL;  		mHasMipMapGeneration = FALSE;  	} +#if !LL_DARWIN  	if (mIsATI && mHasMipMapGeneration)  	{  		LL_INFOS("RenderInit") << "Disabling mip-map generation for ATI GPUs (performance opt)" << LL_ENDL;  		mHasMipMapGeneration = FALSE;  	} +#endif  	// Misc  	glGetIntegerv(GL_MAX_ELEMENTS_VERTICES, (GLint*) &mGLMaxVertexRange); diff --git a/indra/llrender/llgl.h b/indra/llrender/llgl.h index 3d002fd8c4..1d7ab188fc 100644 --- a/indra/llrender/llgl.h +++ b/indra/llrender/llgl.h @@ -91,6 +91,7 @@ public:  	BOOL mHasShaderObjects;  	BOOL mHasVertexShader;  	BOOL mHasFragmentShader; +	S32  mNumTextureImageUnits;  	BOOL mHasOcclusionQuery;  	BOOL mHasOcclusionQuery2;  	BOOL mHasPointParameters; diff --git a/indra/llrender/llrender.cpp b/indra/llrender/llrender.cpp index 49e10c4790..c37139ac4c 100644 --- a/indra/llrender/llrender.cpp +++ b/indra/llrender/llrender.cpp @@ -119,14 +119,29 @@ void LLTexUnit::refreshState(void)  	gGL.flush();  	glActiveTextureARB(GL_TEXTURE0_ARB + mIndex); + +	// +	// Per apple spec, don't call glEnable/glDisable when index exceeds max texture units +	// http://www.mailinglistarchive.com/html/mac-opengl@lists.apple.com/2008-07/msg00653.html +	// +	bool enableDisable = (mIndex < gGLManager.mNumTextureUnits); +		  	if (mCurrTexType != TT_NONE)  	{ -		glEnable(sGLTextureType[mCurrTexType]); +		if (enableDisable) +		{ +			glEnable(sGLTextureType[mCurrTexType]); +		} +		  		glBindTexture(sGLTextureType[mCurrTexType], mCurrTexture);  	}  	else  	{ -		glDisable(GL_TEXTURE_2D); +		if (enableDisable) +		{ +			glDisable(GL_TEXTURE_2D); +		} +		  		glBindTexture(GL_TEXTURE_2D, 0);	  	} @@ -167,7 +182,11 @@ void LLTexUnit::enable(eTextureType type)  		mCurrTexType = type;  		gGL.flush(); -		glEnable(sGLTextureType[type]); +		 +		if (mIndex < gGLManager.mNumTextureUnits) +		{ +			glEnable(sGLTextureType[type]); +		}  	}  } @@ -180,7 +199,12 @@ void LLTexUnit::disable(void)  		activate();  		unbind(mCurrTexType);  		gGL.flush(); -		glDisable(sGLTextureType[mCurrTexType]); +		 +		if (mIndex < gGLManager.mNumTextureUnits) +		{ +			glDisable(sGLTextureType[mCurrTexType]); +		} +		  		mCurrTexType = TT_NONE;  	}  } diff --git a/indra/llrender/llrendertarget.cpp b/indra/llrender/llrendertarget.cpp index cd2556d435..da1e94df64 100644 --- a/indra/llrender/llrendertarget.cpp +++ b/indra/llrender/llrendertarget.cpp @@ -44,6 +44,7 @@ void check_framebuffer_status()  		case GL_FRAMEBUFFER_COMPLETE:  			break;  		default: +			llwarns << "check_framebuffer_status failed -- " << std::hex << status << llendl;  			ll_fail("check_framebuffer_status failed");	  			break;  		} diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index cbf22b75e8..769dcf8457 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -77,6 +77,7 @@ include_directories(  set(viewer_SOURCE_FILES      groupchatlistener.cpp +    llaccountingquotamanager.cpp      llagent.cpp      llagentaccess.cpp      llagentcamera.cpp @@ -626,6 +627,7 @@ set(viewer_HEADER_FILES      CMakeLists.txt      ViewerInstall.cmake      groupchatlistener.h +    llaccountingquotamanager.h      llagent.h      llagentaccess.h      llagentcamera.h diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaSkinnedV.glsl index 5addbbb176..65d9209983 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/alphaSkinnedV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/alphaSkinnedV.glsl @@ -35,19 +35,24 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa  	//get distance  	float d = length(lv); -	//normalize light vector -	lv *= 1.0/d; +	float da = 0.0; + +	if (d > 0.0 && la > 0.0 && fa > 0.0) +	{ +		//normalize light vector +		lv *= 1.0/d; -	//distance attenuation -	float dist2 = d*d/(la*la); -	float da = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0); +		//distance attenuation +		float dist2 = d*d/(la*la); +		da = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0); -	// spotlight coefficient. -	float spot = max(dot(-ln, lv), is_pointlight); -	da *= spot*spot; // GL_SPOT_EXPONENT=2 +		// spotlight coefficient. +		float spot = max(dot(-ln, lv), is_pointlight); +		da *= spot*spot; // GL_SPOT_EXPONENT=2 -	//angular attenuation -	da *= calcDirectionalLight(n, lv); +		//angular attenuation +		da *= calcDirectionalLight(n, lv); +	}  	return da;	  } diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl index 525b68c437..2691fc8ded 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl @@ -36,19 +36,24 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa  	//get distance  	float d = length(lv); -	//normalize light vector -	lv *= 1.0/d; +	float da = 0.0; + +	if (d > 0.0 && la > 0.0 && fa > 0.0) +	{ +		//normalize light vector +		lv *= 1.0/d; -	//distance attenuation -	float dist2 = d*d/(la*la); -	float da = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0); +		//distance attenuation +		float dist2 = d*d/(la*la); +		da = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0); -	// spotlight coefficient. -	float spot = max(dot(-ln, lv), is_pointlight); -	da *= spot*spot; // GL_SPOT_EXPONENT=2 +		// spotlight coefficient. +		float spot = max(dot(-ln, lv), is_pointlight); +		da *= spot*spot; // GL_SPOT_EXPONENT=2 -	//angular attenuation -	da *= calcDirectionalLight(n, lv); +		//angular attenuation +		da *= calcDirectionalLight(n, lv); +	}  	return da;	  } diff --git a/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaV.glsl b/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaV.glsl index a2a7dea20d..a012cb5030 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaV.glsl @@ -35,19 +35,24 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa  	//get distance  	float d = length(lv); -	//normalize light vector -	lv *= 1.0/d; +	float da = 0.0; + +	if (d > 0.0 && la > 0.0 && fa > 0.0) +	{ +		//normalize light vector +		lv *= 1.0/d; -	//distance attenuation -	float dist2 = d*d/(la*la); -	float da = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0); +		//distance attenuation +		float dist2 = d*d/(la*la); +		da = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0); -	// spotlight coefficient. -	float spot = max(dot(-ln, lv), is_pointlight); -	da *= spot*spot; // GL_SPOT_EXPONENT=2 +		// spotlight coefficient. +		float spot = max(dot(-ln, lv), is_pointlight); +		da *= spot*spot; // GL_SPOT_EXPONENT=2 -	//angular attenuation -	da *= calcDirectionalLight(n, lv); +		//angular attenuation +		da *= calcDirectionalLight(n, lv); +	}  	return da;	  } diff --git a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl index c5ddf31ac0..609fc4f14f 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl @@ -23,8 +23,9 @@ uniform float sun_wash;  uniform int light_count; -uniform vec4 light[16]; -uniform vec4 light_col[16]; +#define MAX_LIGHT_COUNT		16 +uniform vec4 light[MAX_LIGHT_COUNT]; +uniform vec4 light_col[MAX_LIGHT_COUNT];  varying vec4 vary_fragcoord;  uniform vec2 screen_res; @@ -63,50 +64,56 @@ void main()  	float noise = texture2D(noiseMap, frag.xy/128.0).b;  	vec3 out_col = vec3(0,0,0);  	vec3 npos = normalize(-pos); -	 -	for (int i = 0; i < light_count; ++i) + +	// As of OSX 10.6.7 ATI Apple's crash when using a variable size loop +	for (int i = 0; i < MAX_LIGHT_COUNT; ++i)  	{ +		bool light_contrib = (i < light_count); +		  		vec3 lv = light[i].xyz-pos;  		float dist2 = dot(lv,lv);  		dist2 /= light[i].w;  		if (dist2 > 1.0)  		{ -			continue; +			light_contrib = false;  		}  		float da = dot(norm, lv);  		if (da < 0.0)  		{ -			continue; +			light_contrib = false;  		} -				 -		lv = normalize(lv); -		da = dot(norm, lv); -				 -		float fa = light_col[i].a+1.0; -		float dist_atten = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0); -		dist_atten *= noise; - -		float lit = da * dist_atten; -		vec3 col = light_col[i].rgb*lit*diff; -		//vec3 col = vec3(dist2, light_col[i].a, lit); -		 -		if (spec.a > 0.0) +		if (light_contrib)  		{ -			//vec3 ref = dot(pos+lv, norm); +			lv = normalize(lv); +			da = dot(norm, lv); +					 +			float fa = light_col[i].a+1.0; +			float dist_atten = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0); +			dist_atten *= noise; + +			float lit = da * dist_atten; -			float sa = dot(normalize(lv+npos),norm); +			vec3 col = light_col[i].rgb*lit*diff; +			//vec3 col = vec3(dist2, light_col[i].a, lit); -			if (sa > 0.0) +			if (spec.a > 0.0)  			{ -				sa = texture2D(lightFunc,vec2(sa, spec.a)).a * min(dist_atten*4.0, 1.0); -				sa *= noise; -				col += da*sa*light_col[i].rgb*spec.rgb; +				//vec3 ref = dot(pos+lv, norm); +				 +				float sa = dot(normalize(lv+npos),norm); +				 +				if (sa > 0.0) +				{ +					sa = texture2D(lightFunc,vec2(sa, spec.a)).a * min(dist_atten*4.0, 1.0); +					sa *= noise; +					col += da*sa*light_col[i].rgb*spec.rgb; +				}  			} +			 +			out_col += col;  		} -		 -		out_col += col;	  	}  	if (dot(out_col, out_col) <= 0.0) diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaSkinnedV.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaSkinnedV.glsl index d227346163..dfb36980b0 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/alphaSkinnedV.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/alphaSkinnedV.glsl @@ -35,19 +35,24 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa  	//get distance  	float d = length(lv); -	//normalize light vector -	lv *= 1.0/d; +	float da = 0.0; + +	if (d > 0.0 && la > 0.0 && fa > 0.0) +	{ +		//normalize light vector +		lv *= 1.0/d; -	//distance attenuation -	float dist2 = d*d/(la*la); -	float da = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0); +		//distance attenuation +		float dist2 = d*d/(la*la); +		da = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0); -	// spotlight coefficient. -	float spot = max(dot(-ln, lv), is_pointlight); -	da *= spot*spot; // GL_SPOT_EXPONENT=2 +		// spotlight coefficient. +		float spot = max(dot(-ln, lv), is_pointlight); +		da *= spot*spot; // GL_SPOT_EXPONENT=2 -	//angular attenuation -	da *= calcDirectionalLight(n, lv); +		//angular attenuation +		da *= calcDirectionalLight(n, lv); +	}  	return da;	  } diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl index 86f014df35..f6160815eb 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl @@ -35,19 +35,24 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa  	//get distance  	float d = length(lv); -	//normalize light vector -	lv *= 1.0/d; +	float da = 0.0; + +	if (d > 0.0 && la > 0.0 && fa > 0.0) +	{ +		//normalize light vector +		lv *= 1.0/d; -	//distance attenuation -	float dist2 = d*d/(la*la); -	float da = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0); +		//distance attenuation +		float dist2 = d*d/(la*la); +		da = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0); -	// spotlight coefficient. -	float spot = max(dot(-ln, lv), is_pointlight); -	da *= spot*spot; // GL_SPOT_EXPONENT=2 +		// spotlight coefficient. +		float spot = max(dot(-ln, lv), is_pointlight); +		da *= spot*spot; // GL_SPOT_EXPONENT=2 -	//angular attenuation -	da *= calcDirectionalLight(n, lv); +		//angular attenuation +		da *= calcDirectionalLight(n, lv); +	}  	return da;	  } diff --git a/indra/newview/app_settings/shaders/class2/deferred/avatarAlphaV.glsl b/indra/newview/app_settings/shaders/class2/deferred/avatarAlphaV.glsl index 495e86c8db..0ae09df0c6 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/avatarAlphaV.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/avatarAlphaV.glsl @@ -37,19 +37,24 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa  	//get distance  	float d = length(lv); -	//normalize light vector -	lv *= 1.0/d; +	float da = 0.0; + +	if (d > 0.0 && la > 0.0 && fa > 0.0) +	{ +		//normalize light vector +		lv *= 1.0/d; -	//distance attenuation -	float dist2 = d*d/(la*la); -	float da = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0); +		//distance attenuation +		float dist2 = d*d/(la*la); +		da = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0); -	// spotlight coefficient. -	float spot = max(dot(-ln, lv), is_pointlight); -	da *= spot*spot; // GL_SPOT_EXPONENT=2 +		// spotlight coefficient. +		float spot = max(dot(-ln, lv), is_pointlight); +		da *= spot*spot; // GL_SPOT_EXPONENT=2 -	//angular attenuation -	da *= calcDirectionalLight(n, lv); +		//angular attenuation +		da *= calcDirectionalLight(n, lv); +	}  	return da;	  } diff --git a/indra/newview/featuretable_mac.txt b/indra/newview/featuretable_mac.txt index c075c660f3..e2b979d9e9 100644 --- a/indra/newview/featuretable_mac.txt +++ b/indra/newview/featuretable_mac.txt @@ -281,6 +281,9 @@ RenderVBOEnable				1	0  list TexUnit8orLess  RenderDeferredSSAO			0	0 +list ATI +RenderDeferredSSAO			0	0 +  list Intel  RenderAnisotropic			1	0  RenderLocalLights			1	0 diff --git a/indra/newview/llaccountingquotamanager.cpp b/indra/newview/llaccountingquotamanager.cpp new file mode 100644 index 0000000000..d11b86db15 --- /dev/null +++ b/indra/newview/llaccountingquotamanager.cpp @@ -0,0 +1,264 @@ +/**  + * @file LLAccountingQuotaManager.cpp + * @ Handles the setting and accessing for costs associated with mesh  + * + * $LicenseInfo:firstyear=2001&license=viewergpl$ + *  + * Copyright (c) 2001-2010, Linden Research, Inc. + *  + * 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 + *  + * 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 + *  + * 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. + *  + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#include "llviewerprecompiledheaders.h" +#include "llaccountingquotamanager.h" +#include "llagent.h" +#include "llviewerregion.h" +#include "llviewerobject.h" +#include "llviewerobjectlist.h" +#include "llviewerparcelmgr.h" +#include "llparcel.h" + +//=============================================================================== +LLAccountingQuotaManager::LLAccountingQuotaManager() +{	 +} +//=============================================================================== +class LLAccountingQuotaResponder : public LLCurl::Responder +{ +public: +	LLAccountingQuotaResponder( const LLSD& objectIDs ) +	: mObjectIDs( objectIDs ) +	{ +	} +		 +	void clearPendingRequests ( void ) +	{ +		for ( LLSD::array_iterator iter = mObjectIDs.beginArray(); iter != mObjectIDs.endArray(); ++iter ) +		{ +			LLAccountingQuotaManager::getInstance()->removePendingObjectQuota( iter->asUUID() ); +		} +	} +	 +	void error( U32 statusNum, const std::string& reason ) +	{ +		llwarns	<< "Transport error "<<reason<<llendl;	 +		//prep#do we really want to remove all because of one failure - verify +		clearPendingRequests(); +	} +	 +	void result( const LLSD& content ) +	{ +		if ( !content.isMap() || content.has("error") ) +		{ +			llwarns	<< "Error on fetched data"<< llendl; +			//prep#do we really want to remove all because of one failure - verify +			clearPendingRequests(); +			return; +		} +		 +		//Differentiate what the incoming caps could be from the data +		//bool VOContent  = content.has("Objects"); +		bool containsParcel    = content.has("parcel"); +		bool containsSelection = content.has("selected"); +		//bool VORegion   = content.has("region"); +				 +		//Loop over the stored object ids checking against the incoming data +		for ( LLSD::array_iterator iter = mObjectIDs.beginArray(); iter != mObjectIDs.endArray(); ++iter ) +		{ +			LLUUID objectID = iter->asUUID(); +						 +			LLAccountingQuotaManager::getInstance()->removePendingObjectQuota( objectID ); +				 +			if ( containsParcel ) +			{ +					//Typically should be one +					S32 dataCount = content["parcel"].size(); +					for(S32 i = 0; i < dataCount; i++) +					{ +						//prep#todo verify that this is safe, otherwise just add a bool +						S32 parcelId = 0; +						S32 parcelOwner = 0; +						if ( content["parcel"][i].has("parcel_id") ) +						{ +							parcelId = content["parcel"][i]["parcel_id"].asInteger(); +						} +						if ( content["parcel"][i].has("parcel_owner") ) +						{ +							parcelOwner = content["parcel"][i]["parcel_owner"].asInteger(); +						} +											 +						F32 ownerRenderCost		= 0; +						F32 ownerPhysicsCost	= 0; +						F32 ownerNetworkCost	= 0; +						F32 ownerSimulationCost = 0; +						 +						F32 groupRenderCost		= 0; +						F32 groupPhysicsCost	= 0; +						F32 groupNetworkCost	= 0; +						F32 groupSimulationCost = 0; +						 +						F32 otherRenderCost		= 0; +						F32 otherPhysicsCost	= 0; +						F32 otherNetworkCost	= 0; +						F32 otherSimulationCost = 0; +						 +						F32 totalRenderCost		= 0; +						F32 totalPhysicsCost	= 0; +						F32 totalNetworkCost	= 0; +						F32 totalSimulationCost = 0; +						 +						if ( content["parcel"][i].has("owner") ) +						{ +							ownerRenderCost		= content["parcel"][i]["owner"]["render"].asReal(); +							ownerPhysicsCost	= content["parcel"][i]["owner"]["physics"].asReal(); +							ownerNetworkCost	= content["parcel"][i]["owner"]["network"].asReal(); +							ownerSimulationCost = content["parcel"][i]["owner"]["simulation"].asReal(); +							 +						} +						if ( content["parcel"][i].has("group") ) +						{ +							groupRenderCost		= content["parcel"][i]["group"]["render"].asReal(); +							groupPhysicsCost	= content["parcel"][i]["group"]["physics"].asReal(); +							groupNetworkCost	= content["parcel"][i]["group"]["network"].asReal(); +							groupSimulationCost = content["parcel"][i]["group"]["simulation"].asReal(); +							 +						} +						if ( content["parcel"][i].has("other") ) +						{ +							otherRenderCost		= content["parcel"][i]["other"]["render"].asReal(); +							otherPhysicsCost	= content["parcel"][i]["other"]["physics"].asReal(); +							otherNetworkCost	= content["parcel"][i]["other"]["network"].asReal(); +							otherSimulationCost = content["parcel"][i]["other"]["simulation"].asReal(); +						} +						 +						if ( content["parcel"][i].has("total") ) +						{ +							totalRenderCost		= content["parcel"][i]["total"]["render"].asReal(); +							totalPhysicsCost	= content["parcel"][i]["total"]["physics"].asReal(); +							totalNetworkCost	= content["parcel"][i]["total"]["network"].asReal(); +							totalSimulationCost = content["parcel"][i]["total"]["simulation"].asReal(); +							 +						} +						 +						ParcelQuota parcelQuota( ownerRenderCost, ownerPhysicsCost, ownerNetworkCost, ownerSimulationCost, +												 groupRenderCost, groupPhysicsCost, groupNetworkCost, groupSimulationCost, +												 otherRenderCost, otherPhysicsCost, otherNetworkCost, otherSimulationCost, +												 totalRenderCost, totalPhysicsCost, totalNetworkCost, totalSimulationCost ); +						//Update the Parcel						 +						LLParcel* pParcel = LLViewerParcelMgr::getInstance()->getParcelSelection()->getParcel(); +						if ( pParcel ) +						{ +							pParcel->updateQuota( objectID, parcelQuota );  +						} +					}					 +				} +			else  +			if ( containsSelection ) +			{ +				S32 dataCount = content["selected"].size(); +				for(S32 i = 0; i < dataCount; i++) +				{ +					 +					F32 renderCost		= 0; +					F32 physicsCost		= 0; +					F32 networkCost		= 0; +					F32 simulationCost	= 0; +					 +					S32 localId = 0; +					 +					localId			= content["selected"][i]["local_id"].asInteger(); +					renderCost		= content["selected"][i]["render"].asReal(); +					physicsCost		= content["selected"][i]["physics"].asReal(); +					networkCost		= content["selected"][i]["network"].asReal(); +					simulationCost	= content["selected"][i]["simulation"].asReal(); +					 +					SelectionQuota selectionQuota( localId, renderCost, physicsCost, networkCost, simulationCost ); +					 +					//Update the objects					 +					//gObjectList.updateQuota( localId, selectionQuota );  +					 +				} +			} +			else +			{ +				//Nothing in string  +				LLAccountingQuotaManager::getInstance()->removePendingObjectQuota( objectID ); +			} +		} +	} +	 +private: +	//List of posted objects +	LLSD mObjectIDs; +}; +//=============================================================================== +void LLAccountingQuotaManager::fetchQuotas( const std::string& url ) +{ +	// Invoking system must have already determined capability availability +	if ( !url.empty() ) +	{ +		LLSD objectList; +		U32  objectIndex = 0; +		IDIt IDIter = mUpdateObjectQuota.begin(); +		IDIt IDIterEnd = mUpdateObjectQuota.end(); +		 +		for ( ; IDIter != IDIterEnd; ++IDIter ) +		{ +			// Check to see if a request for this object has already been made. +			if ( mPendingObjectQuota.find( *IDIter ) ==	mPendingObjectQuota.end() ) +			{ +				mPendingObjectQuota.insert( *IDIter );	 +				objectList[objectIndex++] = *IDIter; +			} +		} +	 +		mUpdateObjectQuota.clear(); +		 +		//Post results +		if ( objectList.size() > 0 ) +		{ +			LLSD dataToPost = LLSD::emptyMap();			 +			dataToPost["object_ids"] = objectList; +			LLHTTPClient::post( url, dataToPost, new LLAccountingQuotaResponder( objectList )); +		} +	} +	else +	{ +		//url was empty - warn & continue +		llwarns<<"Supplied url is empty "<<llendl; +		mUpdateObjectQuota.clear(); +		mPendingObjectQuota.clear(); +	} +} +//=============================================================================== +void LLAccountingQuotaManager::updateObjectCost( const LLUUID& objectID ) +{ +	mUpdateObjectQuota.insert( objectID ); +} +//=============================================================================== +void LLAccountingQuotaManager::removePendingObjectQuota( const LLUUID& objectID ) +{ +	mPendingObjectQuota.erase( objectID ); +} +//=============================================================================== diff --git a/indra/newview/llaccountingquotamanager.h b/indra/newview/llaccountingquotamanager.h new file mode 100644 index 0000000000..9551df272c --- /dev/null +++ b/indra/newview/llaccountingquotamanager.h @@ -0,0 +1,61 @@ +/**  + * @file lllAccountingQuotaManager.h + * @ + * + * $LicenseInfo:firstyear=2001&license=viewergpl$ + *  + * Copyright (c) 2001-2009, Linden Research, Inc. + *  + * 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 + *  + * 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 + *  + * 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. + *  + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#ifndef LL_ACCOUNTINGQUOTAMANAGER_H +#define LL_ACCOUNTINGQUOTAMANAGER_H +//=============================================================================== +#include "llaccountingquota.h" +//=============================================================================== +class LLAccountingQuotaManager : public LLSingleton<LLAccountingQuotaManager> +{ +public: +	//Ctor +	LLAccountingQuotaManager(); +	//Store an object that will be eventually fetched +	void updateObjectCost( const LLUUID& objectID ); +	//Request quotas for object list +	void fetchQuotas( const std::string& url ); +	//Delete a specific object from the pending list +	void removePendingObjectQuota( const LLUUID& objectID ); +	 +private: +	//Set of objects that need to update their cost +	std::set<LLUUID> mUpdateObjectQuota; +	//During fetchQuota we move object into a the pending set to signify that  +	//a fetch has been instigated. +	std::set<LLUUID> mPendingObjectQuota; +	typedef std::set<LLUUID>::iterator IDIt; +}; +//=============================================================================== + +#endif // LLACCOUNTINGQUOTAMANAGER + diff --git a/indra/newview/llagentcamera.cpp b/indra/newview/llagentcamera.cpp index c6b5a0113f..80085dad9d 100644 --- a/indra/newview/llagentcamera.cpp +++ b/indra/newview/llagentcamera.cpp @@ -394,7 +394,9 @@ LLVector3 LLAgentCamera::calcFocusOffset(LLViewerObject *object, LLVector3 origi  	LLQuaternion inv_obj_rot = ~obj_rot; // get inverse of rotation  	LLVector3 object_extents;	  	const LLVector4a* oe4 = object->mDrawable->getSpatialExtents(); -	object_extents.set( oe4[1][0], oe4[1][1], oe4[1][2] ); +	LLVector4a size; +	size.setSub(oe4[1], oe4[0]); +	object_extents.set( size[0], size[1], size[2] );  	// make sure they object extents are non-zero  	object_extents.clamp(0.001f, F32_MAX); diff --git a/indra/newview/llfeaturemanager.cpp b/indra/newview/llfeaturemanager.cpp index 3bdab75acf..83844048d1 100644 --- a/indra/newview/llfeaturemanager.cpp +++ b/indra/newview/llfeaturemanager.cpp @@ -765,7 +765,7 @@ void LLFeatureManager::applyBaseMasks()  	{  		maskFeatures("OpenGLPre30");  	} -	if (gGLManager.mNumTextureUnits <= 8) +	if (gGLManager.mNumTextureImageUnits <= 8)  	{  		maskFeatures("TexUnit8orLess");  	} diff --git a/indra/newview/llfirstuse.cpp b/indra/newview/llfirstuse.cpp index 2c4153688a..a9f52282a5 100644 --- a/indra/newview/llfirstuse.cpp +++ b/indra/newview/llfirstuse.cpp @@ -131,7 +131,7 @@ void LLFirstUse::notMoving(bool enable)  // static  void LLFirstUse::viewPopup(bool enable)  { -	firstUseNotification("FirstViewPopup", enable, "HintView", LLSD(), LLSD().with("target", "view_popup").with("direction", "right")); +//	firstUseNotification("FirstViewPopup", enable, "HintView", LLSD(), LLSD().with("target", "view_popup").with("direction", "right"));  }  // static diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp index e8da1aa42c..9dd5269a6b 100644 --- a/indra/newview/llfloatermodelpreview.cpp +++ b/indra/newview/llfloatermodelpreview.cpp @@ -98,7 +98,8 @@  #include "llvfile.h"  #include "llvfs.h"  #include "llcallbacklist.h" - +#include "llviewerobjectlist.h" +#include "llanimationstates.h"  #include "glod/glod.h"  //static @@ -381,12 +382,6 @@ LLFloaterModelPreview::~LLFloaterModelPreview()  {  	sInstance = NULL; -	if ( mModelPreview && mModelPreview->getResetJointFlag() ) -	{		 -		gAgentAvatarp->resetJointPositions(); -	} - -	  	if ( mModelPreview )  	{  		delete mModelPreview; @@ -1577,7 +1572,7 @@ bool LLModelLoader::doLoadModel()  									{  										//llinfos<<"joint "<<lookingForJoint.c_str()<<llendl;  										LLMatrix4 jointTransform = mJointList[lookingForJoint]; -										LLJoint* pJoint = gAgentAvatarp->getJoint( lookingForJoint ); +										LLJoint* pJoint = mPreview->getPreviewAvatar()->getJoint( lookingForJoint );  										if ( pJoint )  										{     											pJoint->storeCurrentXform( jointTransform.getTranslation() );												 @@ -2597,6 +2592,7 @@ LLModelPreview::LLModelPreview(S32 width, S32 height, LLFloater* fmp)  	mLoading = false;  	mLoadState = LLModelLoader::STARTING;  	mGroup = 0; +	mLODFrozen = false;  	mBuildShareTolerance = 0.f;  	mBuildQueueMode = GLOD_QUEUE_GREEDY;  	mBuildBorderMode = GLOD_BORDER_UNLOCK; @@ -2605,6 +2601,13 @@ LLModelPreview::LLModelPreview(S32 width, S32 height, LLFloater* fmp)  	for (U32 i = 0; i < LLModel::NUM_LODS; ++i)  	{  		mRequestedTriangleCount[i] = 0; +		mRequestedCreaseAngle[i] = -1.f; +		mRequestedLoDMode[i] = 0; +		mRequestedErrorThreshold[i] = 0.f; +		mRequestedBuildOperator[i] = 0; +		mRequestedQueueMode[i] = 0; +		mRequestedBorderMode[i] = 0; +		mRequestedShareTolerance[i] = 0.f;  	}  	mViewOption["show_textures"] = false; @@ -2649,6 +2652,8 @@ LLModelPreview::LLModelPreview(S32 width, S32 height, LLFloater* fmp)  	mMasterLegacyJointList.push_front("mHipLeft");  	mMasterLegacyJointList.push_front("mKneeLeft");  	mMasterLegacyJointList.push_front("mFootLeft"); + +	createPreviewAvatar();  }  LLModelPreview::~LLModelPreview() @@ -2702,7 +2707,7 @@ U32 LLModelPreview::calcResourceCost()  	if ( mFMP && mFMP->childGetValue("upload_joints").asBoolean() )  	{ -		gAgentAvatarp->setPelvisOffset( mPelvisZOffset ); +		getPreviewAvatar()->setPelvisOffset( mPelvisZOffset );  	}  	F32 streaming_cost = 0.f; @@ -3247,6 +3252,8 @@ void LLModelPreview::generateNormals()  	F32 angle_cutoff = mFMP->childGetValue("crease_angle").asReal(); +	mRequestedCreaseAngle[which_lod] = angle_cutoff; +  	angle_cutoff *= DEG_TO_RAD;  	if (which_lod == 3 && !mBaseModel.empty()) @@ -3266,7 +3273,7 @@ void LLModelPreview::generateNormals()  	mVertexBuffer[which_lod].clear();  	refresh(); - +	updateStatusMessages();  }  void LLModelPreview::clearMaterials() @@ -3342,6 +3349,7 @@ void LLModelPreview::genLODs(S32 which_lod, U32 decimation, bool enforce_tri_lim  	{  		lod_mode = iface->getFirstSelectedIndex();  	} +	mRequestedLoDMode[mPreviewLOD] = lod_mode;  	F32 lod_error_threshold = mFMP->childGetValue("lod_error_threshold").asReal(); @@ -3365,6 +3373,7 @@ void LLModelPreview::genLODs(S32 which_lod, U32 decimation, bool enforce_tri_lim  	{  		build_operator = iface->getFirstSelectedIndex();  	} +	mRequestedBuildOperator[mPreviewLOD] = build_operator;   	if (build_operator == 0)  	{ @@ -3381,6 +3390,7 @@ void LLModelPreview::genLODs(S32 which_lod, U32 decimation, bool enforce_tri_lim  	{  		queue_mode = iface->getFirstSelectedIndex();  	} +	mRequestedQueueMode[mPreviewLOD] = queue_mode;  	if (queue_mode == 0)  	{ @@ -3402,6 +3412,7 @@ void LLModelPreview::genLODs(S32 which_lod, U32 decimation, bool enforce_tri_lim  	{  		border_mode = iface->getFirstSelectedIndex();  	} +	mRequestedBorderMode[mPreviewLOD] = border_mode;  	if (border_mode == 0)  	{ @@ -3437,6 +3448,7 @@ void LLModelPreview::genLODs(S32 which_lod, U32 decimation, bool enforce_tri_lim  		mBuildShareTolerance = share_tolerance;  		object_dirty = true;  	} +	mRequestedShareTolerance[mPreviewLOD] = share_tolerance;  	if (mGroup == 0)  	{ @@ -3545,6 +3557,7 @@ void LLModelPreview::genLODs(S32 which_lod, U32 decimation, bool enforce_tri_lim  		U32 submeshes = 0;  		mRequestedTriangleCount[lod] = triangle_count; +		mRequestedErrorThreshold[lod] = lod_error_threshold;  		glodGroupParameteri(mGroup, GLOD_ADAPT_MODE, lod_mode);  		stop_gloderror(); @@ -3832,6 +3845,18 @@ void LLModelPreview::updateStatusMessages()  		}  	} + +	//make sure no hulls have more than 256 points in them +	for (U32 i = 0; upload_ok && i < mModel[LLModel::LOD_PHYSICS].size(); ++i) +	{ +		LLModel* mdl = mModel[LLModel::LOD_PHYSICS][i]; + +		for (U32 j = 0; upload_ok && j < mdl->mPhysics.mHull.size(); ++j) +		{ +			upload_ok = upload_ok && mdl->mPhysics.mHull[i].size() <= 256; +		} +	} +  	bool errorStateFromLoader = getLoadState() >= LLModelLoader::ERROR_PARSING ? true : false;  	bool skinAndRigOk = true; @@ -3855,6 +3880,10 @@ void LLModelPreview::updateStatusMessages()  	{  		mFMP->childEnable("ok_btn");  	} +	else +	{ +		mFMP->childDisable("ok_btn"); +	}  	//add up physics triangles etc  	S32 start = 0; @@ -4021,6 +4050,9 @@ void LLModelPreview::updateStatusMessages()  		{	// auto generate, also the default case for wizard which has no radio selection  			fmp->mLODMode[mPreviewLOD] = 1; +			//don't actually regenerate lod when refreshing UI +			mLODFrozen = true; +  			for (U32 i = 0; i < num_file_controls; ++i)  			{  				mFMP->childDisable(file_controls[i]); @@ -4033,20 +4065,21 @@ void LLModelPreview::updateStatusMessages()  			//if (threshold)  			{	 -				U32 lod_mode = 0; -				LLCtrlSelectionInterface* iface = mFMP->childGetSelectionInterface("lod_mode"); -				if (iface) -				{ -					lod_mode = iface->getFirstSelectedIndex(); -				} -  				LLSpinCtrl* threshold = mFMP->getChild<LLSpinCtrl>("lod_error_threshold");  				LLSpinCtrl* limit = mFMP->getChild<LLSpinCtrl>("lod_triangle_limit");  				limit->setMaxValue(mMaxTriangleLimit); -				limit->setValue(mRequestedTriangleCount[mPreviewLOD]); +				limit->forceSetValue(mRequestedTriangleCount[mPreviewLOD]); + +				threshold->forceSetValue(mRequestedErrorThreshold[mPreviewLOD]); -				if (lod_mode == 0) +				mFMP->getChild<LLComboBox>("lod_mode")->selectNthItem(mRequestedLoDMode[mPreviewLOD]); +				mFMP->getChild<LLComboBox>("build_operator")->selectNthItem(mRequestedBuildOperator[mPreviewLOD]); +				mFMP->getChild<LLComboBox>("queue_mode")->selectNthItem(mRequestedQueueMode[mPreviewLOD]); +				mFMP->getChild<LLComboBox>("border_mode")->selectNthItem(mRequestedBorderMode[mPreviewLOD]); +				mFMP->getChild<LLSpinCtrl>("share_tolerance")->setValue(mRequestedShareTolerance[mPreviewLOD]); + +				if (mRequestedLoDMode[mPreviewLOD] == 0)  				{  					limit->setVisible(true);  					threshold->setVisible(false); @@ -4060,6 +4093,8 @@ void LLModelPreview::updateStatusMessages()  					threshold->setVisible(true);  				}  			} + +			mLODFrozen = false;  		}  	} @@ -4075,6 +4110,20 @@ void LLModelPreview::updateStatusMessages()  		mFMP->childDisable("physics_file");  		mFMP->childDisable("physics_browse");  	} + +	LLSpinCtrl* crease = mFMP->getChild<LLSpinCtrl>("crease_angle"); +	 +	if (mRequestedCreaseAngle[mPreviewLOD] == -1.f) +	{ +		mFMP->childSetColor("crease_label", LLColor4::grey); +		crease->forceSetValue(75.f); +	} +	else +	{ +		mFMP->childSetColor("crease_label", LLColor4::white); +		crease->forceSetValue(mRequestedCreaseAngle[mPreviewLOD]); +	} +  }  void LLModelPreview::setPreviewTarget(F32 distance) @@ -4241,42 +4290,6 @@ void LLModelPreview::update()  }  //----------------------------------------------------------------------------- -// changeAvatarsJointPositions() -//----------------------------------------------------------------------------- -void LLModelPreview::changeAvatarsJointPositions( LLModel* pModel ) -{ -	if ( mMasterJointList.empty() ) -	{ -		return; -	} - -	std::vector<std::string> :: const_iterator jointListItBegin = pModel->mSkinInfo.mJointNames.begin(); -	std::vector<std::string> :: const_iterator jointListItEnd = pModel->mSkinInfo.mJointNames.end(); - -	S32 index = 0; -	for ( ; jointListItBegin!=jointListItEnd; ++jointListItBegin, ++index ) -	{	 -		std::string elem = *jointListItBegin; -		//llinfos<<"joint "<<elem<<llendl; - -		S32 matrixCnt = pModel->mSkinInfo.mAlternateBindMatrix.size(); -		if ( matrixCnt < 1 ) -		{ -			llinfos<<"Total WTF moment :"<<matrixCnt<<llendl; -		} -		else -		{ -			LLMatrix4 jointTransform = pModel->mSkinInfo.mAlternateBindMatrix[index]; - -			LLJoint* pJoint = gAgentAvatarp->getJoint( elem ); -			if ( pJoint ) -			{    -				pJoint->storeCurrentXform( jointTransform.getTranslation() );												 -			}	 -		} -	} -} -//-----------------------------------------------------------------------------  // getTranslationForJointOffset()  //-----------------------------------------------------------------------------  LLVector3 LLModelPreview::getTranslationForJointOffset( std::string joint ) @@ -4290,6 +4303,30 @@ LLVector3 LLModelPreview::getTranslationForJointOffset( std::string joint )  	return LLVector3(0.0f,0.0f,0.0f);								  }  //----------------------------------------------------------------------------- +// createPreviewAvatar +//----------------------------------------------------------------------------- +void LLModelPreview::createPreviewAvatar( void ) +{ +	mPreviewAvatar = (LLVOAvatar*)gObjectList.createObjectViewer( LL_PCODE_LEGACY_AVATAR, gAgent.getRegion() ); +	if ( mPreviewAvatar ) +	{ +		mPreviewAvatar->createDrawable( &gPipeline ); +		mPreviewAvatar->mIsDummy = TRUE; +		mPreviewAvatar->mSpecialRenderMode = 1; +		mPreviewAvatar->setPositionAgent( LLVector3::zero ); +		mPreviewAvatar->slamPosition(); +		mPreviewAvatar->updateJointLODs(); +		mPreviewAvatar->updateGeometry( mPreviewAvatar->mDrawable ); +		mPreviewAvatar->startMotion( ANIM_AGENT_STAND ); +		mPreviewAvatar->hideSkirt(); +	} +	else +	{ +		llinfos<<"Failed to create preview avatar for upload model window"<<llendl; +	} +} + +//-----------------------------------------------------------------------------  // render()  //-----------------------------------------------------------------------------  BOOL LLModelPreview::render() @@ -4403,25 +4440,6 @@ BOOL LLModelPreview::render()  	mFMP->childSetEnabled("upload_joints", upload_skin); -	//poke at avatar when we upload custom joints -	/*	 -	if ( upload_joints ) -	{ -		for (LLModelLoader::scene::iterator iter = mScene[mPreviewLOD].begin(); iter != mScene[mPreviewLOD].end(); ++iter) -		{ -			for (LLModelLoader::model_instance_list::iterator model_iter = iter->second.begin(); model_iter != iter->second.end(); ++model_iter) -			{ -				LLModelInstance& instance = *model_iter; -				LLModel* model = instance.mModel; -				if ( !model->mSkinWeights.empty() ) -				{ -					changeAvatarsJointPositions( model ); -				} -			} -		} -	} -	*/ -	  	F32 explode = mFMP->childGetValue("physics_explode").asReal();  	glClear(GL_DEPTH_BUFFER_BIT); @@ -4441,7 +4459,7 @@ BOOL LLModelPreview::render()  	if (skin_weight)  	{ -		target_pos = gAgentAvatarp->getPositionAgent(); +		target_pos = getPreviewAvatar()->getPositionAgent();  		z_near = 0.01f;  		z_far = 1024.f;  		mCameraDistance = 16.f; @@ -4661,8 +4679,7 @@ BOOL LLModelPreview::render()  		}  		else  		{ -			LLVOAvatarSelf* avatar = gAgentAvatarp; -			target_pos = avatar->getPositionAgent(); +			target_pos = getPreviewAvatar()->getPositionAgent();  			LLViewerCamera::getInstance()->setOriginAndLookAt(  															  target_pos + ((LLVector3(mCameraDistance, 0.f, 0.f) + offset) * av_rot),		// camera @@ -4671,7 +4688,7 @@ BOOL LLModelPreview::render()  			if (joint_positions)  			{ -				avatar->renderCollisionVolumes(); +				getPreviewAvatar()->renderCollisionVolumes();  			}  			for (LLModelLoader::scene::iterator iter = mScene[mPreviewLOD].begin(); iter != mScene[mPreviewLOD].end(); ++iter) @@ -4702,7 +4719,7 @@ BOOL LLModelPreview::render()  							LLMatrix4 mat[64];  							for (U32 j = 0; j < model->mSkinInfo.mJointNames.size(); ++j)  							{ -								LLJoint* joint = avatar->getJoint(model->mSkinInfo.mJointNames[j]); +								LLJoint* joint = getPreviewAvatar()->getJoint(model->mSkinInfo.mJointNames[j]);  								if (joint)  								{  									mat[j] = model->mSkinInfo.mInvBindMatrix[j]; @@ -4925,9 +4942,12 @@ void LLModelPreview::textureLoadedCallback( BOOL success, LLViewerFetchedTexture  void LLModelPreview::onLODParamCommit(bool enforce_tri_limit)  { -	genLODs(mPreviewLOD, 3, enforce_tri_limit); -	updateStatusMessages(); -	refresh(); +	if (!mLODFrozen) +	{ +		genLODs(mPreviewLOD, 3, enforce_tri_limit); +		updateStatusMessages(); +		refresh(); +	}  }  LLFloaterModelPreview::DecompRequest::DecompRequest(const std::string& stage, LLModel* mdl) diff --git a/indra/newview/llfloatermodelpreview.h b/indra/newview/llfloatermodelpreview.h index 4d8b46807f..f6d4a08d1f 100644 --- a/indra/newview/llfloatermodelpreview.h +++ b/indra/newview/llfloatermodelpreview.h @@ -341,6 +341,9 @@ public:  	LLVector3 getTranslationForJointOffset( std::string joint ); +	void		createPreviewAvatar( void ); +	LLVOAvatar* getPreviewAvatar( void ) { return mPreviewAvatar; } +   protected:  	friend class LLModelLoader;  	friend class LLFloaterModelPreview; @@ -373,13 +376,20 @@ public:  	std::map<std::string, bool> mViewOption;  	//GLOD object parameters (must rebuild object if these change) +	bool mLODFrozen;  	F32 mBuildShareTolerance;  	U32 mBuildQueueMode;  	U32 mBuildOperator;  	U32 mBuildBorderMode; +	U32 mRequestedLoDMode[LLModel::NUM_LODS];  	S32 mRequestedTriangleCount[LLModel::NUM_LODS]; +	F32 mRequestedErrorThreshold[LLModel::NUM_LODS]; +	U32 mRequestedBuildOperator[LLModel::NUM_LODS]; +	U32 mRequestedQueueMode[LLModel::NUM_LODS]; +	U32 mRequestedBorderMode[LLModel::NUM_LODS]; +	F32 mRequestedShareTolerance[LLModel::NUM_LODS]; +	F32 mRequestedCreaseAngle[LLModel::NUM_LODS]; -	  	LLModelLoader* mModelLoader;  	LLModelLoader::scene mScene[LLModel::NUM_LODS]; @@ -415,6 +425,7 @@ public:  	std::deque<std::string> mMasterLegacyJointList;  	std::deque<std::string> mJointsFromNode;  	JointTransformMap		mJointTransformMap; +	LLPointer<LLVOAvatar>	mPreviewAvatar;  };  #endif  // LL_LLFLOATERMODELPREVIEW_H diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp index 34fda49375..232b8e9096 100644 --- a/indra/newview/llfloaterregioninfo.cpp +++ b/indra/newview/llfloaterregioninfo.cpp @@ -590,6 +590,12 @@ bool LLPanelRegionGeneralInfo::refreshFromRegion(LLViewerRegion* region)  	getChildView("im_btn")->setEnabled(allow_modify);  	getChildView("manage_telehub_btn")->setEnabled(allow_modify); +	const bool enable_mesh = gSavedSettings.getBOOL("MeshEnabled") &&  +		gAgent.getRegion() && +		!gAgent.getRegion()->getCapability("GetMesh").empty() && +		!gAgent.getRegion()->getCapability("ObjectAdd").empty(); +	getChildView("mesh_rez_enabled_check")->setVisible(enable_mesh); +	getChildView("mesh_rez_enabled_check")->setEnabled(getChildView("mesh_rez_enabled_check")->getEnabled() && enable_mesh);  	// Data gets filled in by processRegionInfo  	return LLPanelRegionInfo::refreshFromRegion(region); diff --git a/indra/newview/llfloatertools.cpp b/indra/newview/llfloatertools.cpp index 73c1f99fa0..edcb96314b 100644 --- a/indra/newview/llfloatertools.cpp +++ b/indra/newview/llfloatertools.cpp @@ -85,6 +85,7 @@  #include "llviewerwindow.h"  #include "llvovolume.h"  #include "lluictrlfactory.h" +#include "llaccountingquotamanager.h"  // Globals  LLFloaterTools *gFloaterTools = NULL; @@ -422,7 +423,7 @@ void LLFloaterTools::refresh()  	// Refresh object and prim count labels  	LLLocale locale(LLLocale::USER_LOCALE); -	if ((gAgent.getRegion() && gAgent.getRegion()->getCapability("GetMesh").empty()) || !gSavedSettings.getBOOL("MeshEnabled")) +	if ((gAgent.getRegion() && (gAgent.getRegion()->getCapability("GetMesh").empty() || gAgent.getRegion()->getCapability("ObjectAdd").empty())) || !gSavedSettings.getBOOL("MeshEnabled"))  	{		  		std::string obj_count_string;  		LLResMgr::getInstance()->getIntegerString(obj_count_string, LLSelectMgr::getInstance()->getSelection()->getRootObjectCount()); @@ -789,7 +790,8 @@ void LLFloaterTools::updatePopup(LLCoordGL center, MASK mask)  	bool show_mesh_cost = gAgent.getRegion() &&   		                  !gAgent.getRegion()->getCapability("GetMesh").empty() &&  -						  gSavedSettings.getBOOL("MeshEnabled"); +						  gSavedSettings.getBOOL("MeshEnabled") && +						  !gAgent.getRegion()->getCapability("ObjectAdd").empty();  	getChildView("obj_count")->setVisible( !land_visible && !show_mesh_cost);  	getChildView("prim_count")->setVisible( !land_visible && !show_mesh_cost); diff --git a/indra/newview/llmanipscale.cpp b/indra/newview/llmanipscale.cpp index 738d82e732..673f28e01f 100644 --- a/indra/newview/llmanipscale.cpp +++ b/indra/newview/llmanipscale.cpp @@ -93,6 +93,7 @@ F32 get_default_max_prim_scale(bool is_flora)  	if (gSavedSettings.getBOOL("MeshEnabled") &&   		gAgent.getRegion() &&   		!gAgent.getRegion()->getCapability("GetMesh").empty() && +		!gAgent.getRegion()->getCapability("ObjectAdd").empty() &&  		!is_flora)  	{  		return DEFAULT_MAX_PRIM_SCALE; diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index 0b96a3b34f..55145c6ad7 100644 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -85,6 +85,8 @@ U32 LLMeshRepository::sPeakKbps = 0;  const U32 MAX_TEXTURE_UPLOAD_RETRIES = 5; +void dumpLLSDToFile(const LLSD& content, std::string filename); +  std::string header_lod[] =   {  	"lowest_lod", @@ -489,15 +491,36 @@ public:  		mThread(thread)  	{  	} -	virtual void completedRaw(U32 status, const std::string& reason, -							  const LLChannelDescriptors& channels, -							  const LLIOPipe::buffer_ptr_t& buffer) +	virtual void completed(U32 status, +						   const std::string& reason, +						   const LLSD& content)  	{ -		assert_main_thread(); +		//assert_main_thread();  		llinfos << "completed" << llendl;  		mThread->mPendingUploads--; +		dumpLLSDToFile(content,"whole_model_response.xml"); + +		mThread->mWholeModelUploadURL = content["uploader"].asString();  +	} +}; + +class LLWholeModelUploadResponder: public LLCurl::Responder +{ +	LLMeshUploadThread* mThread; +public: +	LLWholeModelUploadResponder(LLMeshUploadThread* thread): +		mThread(thread) +	{ +	} +	virtual void completed(U32 status, +						   const std::string& reason, +						   const LLSD& content) +	{ +		//assert_main_thread(); +		llinfos << "upload completed" << llendl; +		mThread->mPendingUploads--; +		dumpLLSDToFile(content,"whole_model_upload_response.xml");  	} -	  };  LLMeshRepoThread::LLMeshRepoThread() @@ -1261,7 +1284,7 @@ LLMeshUploadThread::LLMeshUploadThread(LLMeshUploadThread::instance_list& data,  	mUploadObjectAssetCapability = gAgent.getRegion()->getCapability("UploadObjectAsset");  	mNewInventoryCapability = gAgent.getRegion()->getCapability("NewFileAgentInventoryVariablePrice"); -	mWholeModelUploadCapability = gAgent.getRegion()->getCapability("NewFileAgentInventory"); +	mWholeModelFeeCapability = gAgent.getRegion()->getCapability("NewFileAgentInventory");  	mOrigin += gAgent.getAtAxis() * scale.magVec();  } @@ -1363,10 +1386,10 @@ void LLMeshUploadThread::run()  	}  } -#if 0 -void dumpLLSDToFile(LLSD& content, std::string& filename) +#if 1 +void dumpLLSDToFile(const LLSD& content, std::string filename)  { -	std::ofstream of(filename); +	std::ofstream of(filename.c_str());  	LLSDSerialize::toPrettyXML(content,of);  }  #endif @@ -1374,9 +1397,10 @@ void dumpLLSDToFile(LLSD& content, std::string& filename)  void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures)  {  	// TODO where do textures go? -	 +  	LLSD result; +	LLSD res;  	result["folder_id"] = gInventory.findCategoryUUIDForType(LLFolderType::FT_OBJECT);  	result["asset_type"] = "mesh";  	result["inventory_type"] = "object"; @@ -1385,9 +1409,9 @@ void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures)  	// TODO "optional" fields from the spec -	LLSD res;  	res["mesh_list"] = LLSD::emptyArray(); -	res["texture_list"] = LLSD::emptyArray(); +// TODO Textures +	//res["texture_list"] = LLSD::emptyArray();  	S32 mesh_num = 0;  	S32 texture_num = 0; @@ -1433,10 +1457,15 @@ void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures)  		LLQuaternion rot;  		LLMatrix4 transformation = instance.mTransform;  		decomposeMeshMatrix(transformation,pos,rot,scale); -		 + +#if 0  		mesh_entry["childpos"] = ll_sd_from_vector3(pos);  		mesh_entry["childrot"] = ll_sd_from_quaternion(rot);  		mesh_entry["scale"] = ll_sd_from_vector3(scale); +#endif +		mesh_entry["position"] = ll_sd_from_vector3(LLVector3()); +		mesh_entry["rotation"] = ll_sd_from_quaternion(rot); +		mesh_entry["scale"] = ll_sd_from_vector3(scale);  		// TODO should be binary.  		std::string str = ostr.str(); @@ -1480,9 +1509,8 @@ void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures)  	}  	result["asset_resources"] = res; -#if 0	 -	std::string name("whole_model.xml"); -	dumpLLSDToFile(result,name); +#if 1	 +	dumpLLSDToFile(result,"whole_model.xml");  #endif  	dest = result; @@ -1541,9 +1569,24 @@ void LLMeshUploadThread::doWholeModelUpload()  	mPendingUploads++;  	LLCurlRequest::headers_t headers; -	mCurlRequest->post(mWholeModelUploadCapability, headers, model_data.asString(), +	mCurlRequest->post(mWholeModelFeeCapability, headers, model_data,  					   new LLWholeModelFeeResponder(this)); +	do +	{ +		mCurlRequest->process(); +	} while (mCurlRequest->getQueued() > 0); + +	mCurlRequest->post(mWholeModelUploadURL, headers, model_data["asset_resources"], new LLWholeModelUploadResponder(this)); +	 +	do +	{ +		mCurlRequest->process(); +	} while (mCurlRequest->getQueued() > 0); + +	delete mCurlRequest; +	mCurlRequest = NULL; +  	// Currently a no-op.  	mFinished = true;  } diff --git a/indra/newview/llmeshrepository.h b/indra/newview/llmeshrepository.h index 802e3e1aba..f859e29c07 100644 --- a/indra/newview/llmeshrepository.h +++ b/indra/newview/llmeshrepository.h @@ -387,7 +387,8 @@ public:  	LLHost			mHost;  	std::string		mUploadObjectAssetCapability;  	std::string		mNewInventoryCapability; -	std::string		mWholeModelUploadCapability; +	std::string		mWholeModelFeeCapability; +	std::string		mWholeModelUploadURL;  	std::queue<LLMeshUploadData> mUploadQ;  	std::queue<LLMeshUploadData> mConfirmedQ; diff --git a/indra/newview/llpanelobject.cpp b/indra/newview/llpanelobject.cpp index 64af6c2157..b4d0ada196 100644 --- a/indra/newview/llpanelobject.cpp +++ b/indra/newview/llpanelobject.cpp @@ -33,11 +33,9 @@  #include "lleconomy.h"  #include "llerror.h"  #include "llfontgl.h" -#include "llmaterialtable.h"  #include "llpermissionsflags.h"  #include "llstring.h"  #include "llvolume.h" -#include "material_codes.h"  #include "m3math.h"  // project includes @@ -57,7 +55,6 @@  #include "lltool.h"  #include "lltoolcomp.h"  #include "lltoolmgr.h" -#include "lltrans.h"  #include "llui.h"  #include "llviewerobject.h"  #include "llviewerregion.h" @@ -101,17 +98,6 @@ BOOL	LLPanelObject::postBuild()  {  	setMouseOpaque(FALSE); -	std::map<std::string, std::string> material_name_map; -	material_name_map["Stone"]= LLTrans::getString("Stone"); -	material_name_map["Metal"]= LLTrans::getString("Metal");	 -	material_name_map["Glass"]= LLTrans::getString("Glass");	 -	material_name_map["Wood"]= LLTrans::getString("Wood");	 -	material_name_map["Flesh"]= LLTrans::getString("Flesh"); -	material_name_map["Plastic"]= LLTrans::getString("Plastic"); -	material_name_map["Rubber"]= LLTrans::getString("Rubber");	 -	material_name_map["Light"]= LLTrans::getString("Light");		 -	 -	LLMaterialTable::basic.initTableTransNames(material_name_map);  	//--------------------------------------------------------  	// Top  	//-------------------------------------------------------- @@ -166,22 +152,6 @@ BOOL	LLPanelObject::postBuild()  	//-------------------------------------------------------- -	// material type popup -	mComboMaterial = getChild<LLComboBox>("material"); -	childSetCommitCallback("material",onCommitMaterial,this); -	mComboMaterial->removeall(); - -	for (LLMaterialTable::info_list_t::iterator iter = LLMaterialTable::basic.mMaterialInfoList.begin(); -		 iter != LLMaterialTable::basic.mMaterialInfoList.end(); ++iter) -	{ -		LLMaterialInfo* minfop = *iter; -		if (minfop->mMCode != LL_MCODE_LIGHT) -		{ -			mComboMaterial->add(minfop->mName);   -		} -	} -	mComboMaterialItemCount = mComboMaterial->getItemCount(); -  	// Base Type  	mComboBaseType = getChild<LLComboBox>("comboBaseType");  	childSetCommitCallback("comboBaseType",onCommitParametric,this); @@ -309,7 +279,6 @@ BOOL	LLPanelObject::postBuild()  LLPanelObject::LLPanelObject()  :	LLPanel(), -	mComboMaterialItemCount(0),  	mIsPhysical(FALSE),  	mIsTemporary(FALSE),  	mIsPhantom(FALSE), @@ -527,43 +496,6 @@ void LLPanelObject::getState( )  	mCheckCastShadows->setEnabled( roots_selected==1 && editable );  #endif -	// Update material part -	// slightly inefficient - materials are unique per object, not per TE -	U8 material_code = 0; -	struct f : public LLSelectedTEGetFunctor<U8> -	{ -		U8 get(LLViewerObject* object, S32 te) -		{ -			return object->getMaterial(); -		} -	} func; -	bool material_same = LLSelectMgr::getInstance()->getSelection()->getSelectedTEValue( &func, material_code ); -	std::string LEGACY_FULLBRIGHT_DESC = LLTrans::getString("Fullbright"); -	if (editable && single_volume && material_same) -	{ -		mComboMaterial->setEnabled( TRUE ); -		if (material_code == LL_MCODE_LIGHT) -		{ -			if (mComboMaterial->getItemCount() == mComboMaterialItemCount) -			{ -				mComboMaterial->add(LEGACY_FULLBRIGHT_DESC); -			} -			mComboMaterial->setSimple(LEGACY_FULLBRIGHT_DESC); -		} -		else -		{ -			if (mComboMaterial->getItemCount() != mComboMaterialItemCount) -			{ -				mComboMaterial->remove(LEGACY_FULLBRIGHT_DESC); -			} -			 -			mComboMaterial->setSimple(std::string(LLMaterialTable::basic.getName(material_code))); -		} -	} -	else -	{ -		mComboMaterial->setEnabled( FALSE ); -	}  	//----------------------------------------------------------------------------  	S32 selected_item	= MI_BOX; @@ -1095,12 +1027,9 @@ void LLPanelObject::getState( )  	mCtrlSculptTexture->setVisible(sculpt_texture_visible);  	mLabelSculptType->setVisible(sculpt_texture_visible);  	mCtrlSculptType->setVisible(sculpt_texture_visible); -	mCtrlSculptMirror->setVisible(sculpt_texture_visible); -	mCtrlSculptInvert->setVisible(sculpt_texture_visible);  	// sculpt texture -  	if (selected_item == MI_SCULPT)  	{ @@ -1145,7 +1074,7 @@ void LLPanelObject::getState( )  			if (mCtrlSculptMirror)  			{  				mCtrlSculptMirror->set(sculpt_mirror); -				mCtrlSculptMirror->setEnabled(editable); +				mCtrlSculptMirror->setEnabled(editable && !isMesh);  			}  			if (mCtrlSculptInvert) @@ -1166,6 +1095,9 @@ void LLPanelObject::getState( )  		mSculptTextureRevert = LLUUID::null;		  	} +	mCtrlSculptMirror->setVisible(sculpt_texture_visible && !isMesh); +	mCtrlSculptInvert->setVisible(sculpt_texture_visible && !isMesh); +  	//----------------------------------------------------------------------------  	mObject = objectp; @@ -1245,25 +1177,6 @@ void LLPanelObject::sendCastShadows()  }  // static -void LLPanelObject::onCommitMaterial( LLUICtrl* ctrl, void* userdata ) -{ -	//LLPanelObject* self = (LLPanelObject*) userdata; -	LLComboBox* box = (LLComboBox*) ctrl; - -	if (box) -	{ -		// apply the currently selected material to the object -		const std::string& material_name = box->getSimple(); -		std::string LEGACY_FULLBRIGHT_DESC = LLTrans::getString("Fullbright"); -		if (material_name != LEGACY_FULLBRIGHT_DESC) -		{ -			U8 material_code = LLMaterialTable::basic.getMCode(material_name); -			LLSelectMgr::getInstance()->selectionSetMaterial(material_code); -		} -	} -} - -// static  void LLPanelObject::onCommitParametric( LLUICtrl* ctrl, void* userdata )  {  	LLPanelObject* self = (LLPanelObject*) userdata; @@ -1829,7 +1742,8 @@ void LLPanelObject::refresh()  	bool enable_mesh = gSavedSettings.getBOOL("MeshEnabled") &&   					   gAgent.getRegion() && -					   !gAgent.getRegion()->getCapability("GetMesh").empty(); +					   !gAgent.getRegion()->getCapability("GetMesh").empty() && +					   !gAgent.getRegion()->getCapability("ObjectAdd").empty();  	F32 max_scale = get_default_max_prim_scale(LLPickInfo::isFlora(mObject)); @@ -1937,7 +1851,6 @@ void LLPanelObject::clearCtrls()  	mCheckCastShadows->set(FALSE);  	mCheckCastShadows->setEnabled( FALSE );  #endif -	mComboMaterial	->setEnabled( FALSE );  	// Disable text labels  	mLabelPosition	->setEnabled( FALSE );  	mLabelSize		->setEnabled( FALSE ); diff --git a/indra/newview/llpanelobject.h b/indra/newview/llpanelobject.h index e2f2a4400d..475dfdaedb 100644 --- a/indra/newview/llpanelobject.h +++ b/indra/newview/llpanelobject.h @@ -66,7 +66,6 @@ public:  	static void 	onCommitPhantom(		LLUICtrl* ctrl, void* userdata);  	static void 	onCommitCastShadows(	LLUICtrl* ctrl, void* userdata);  	static void 	onCommitPhysics(		LLUICtrl* ctrl, void* userdata); -	static void 	onCommitMaterial(		LLUICtrl* ctrl, void* userdata);  	static void 	onCommitParametric(LLUICtrl* ctrl, void* userdata); @@ -94,10 +93,6 @@ protected:  	void 			getVolumeParams(LLVolumeParams& volume_params);  protected: -	S32				mComboMaterialItemCount; - -	LLComboBox*		mComboMaterial; -	  	// Per-object options  	LLComboBox*		mComboBaseType; diff --git a/indra/newview/llpanelvolume.cpp b/indra/newview/llpanelvolume.cpp index c443814c89..7839cdd811 100644 --- a/indra/newview/llpanelvolume.cpp +++ b/indra/newview/llpanelvolume.cpp @@ -59,6 +59,7 @@  #include "lltool.h"  #include "lltoolcomp.h"  #include "lltoolmgr.h" +#include "lltrans.h"  #include "llui.h"  #include "llviewerobject.h"  #include "llviewerregion.h" @@ -156,6 +157,34 @@ BOOL	LLPanelVolume::postBuild()  		mSpinPhysicsRestitution = getChild<LLSpinCtrl>("Physics Restitution");  		mSpinPhysicsRestitution->setCommitCallback(boost::bind(&LLPanelVolume::sendPhysicsRestitution, this, _1, mSpinPhysicsRestitution));  	} + +	std::map<std::string, std::string> material_name_map; +	material_name_map["Stone"]= LLTrans::getString("Stone"); +	material_name_map["Metal"]= LLTrans::getString("Metal");	 +	material_name_map["Glass"]= LLTrans::getString("Glass");	 +	material_name_map["Wood"]= LLTrans::getString("Wood");	 +	material_name_map["Flesh"]= LLTrans::getString("Flesh"); +	material_name_map["Plastic"]= LLTrans::getString("Plastic"); +	material_name_map["Rubber"]= LLTrans::getString("Rubber");	 +	material_name_map["Light"]= LLTrans::getString("Light");		 +	 +	LLMaterialTable::basic.initTableTransNames(material_name_map); + +	// material type popup +	mComboMaterial = getChild<LLComboBox>("material"); +	childSetCommitCallback("material",onCommitMaterial,this); +	mComboMaterial->removeall(); + +	for (LLMaterialTable::info_list_t::iterator iter = LLMaterialTable::basic.mMaterialInfoList.begin(); +		 iter != LLMaterialTable::basic.mMaterialInfoList.end(); ++iter) +	{ +		LLMaterialInfo* minfop = *iter; +		if (minfop->mMCode != LL_MCODE_LIGHT) +		{ +			mComboMaterial->add(minfop->mName);   +		} +	} +	mComboMaterialItemCount = mComboMaterial->getItemCount();  	// Start with everyone disabled  	clearCtrls(); @@ -164,7 +193,8 @@ BOOL	LLPanelVolume::postBuild()  }  LLPanelVolume::LLPanelVolume() -	: LLPanel() +	: LLPanel(), +	  mComboMaterialItemCount(0)  {  	setMouseOpaque(FALSE); @@ -379,6 +409,46 @@ void LLPanelVolume::getState( )  		getChildView("FlexForceZ")->setEnabled(false);  	} +	// Material properties + +	// Update material part +	// slightly inefficient - materials are unique per object, not per TE +	U8 material_code = 0; +	struct f : public LLSelectedTEGetFunctor<U8> +	{ +		U8 get(LLViewerObject* object, S32 te) +		{ +			return object->getMaterial(); +		} +	} func; +	bool material_same = LLSelectMgr::getInstance()->getSelection()->getSelectedTEValue( &func, material_code ); +	std::string LEGACY_FULLBRIGHT_DESC = LLTrans::getString("Fullbright"); +	if (editable && single_volume && material_same) +	{ +		mComboMaterial->setEnabled( TRUE ); +		if (material_code == LL_MCODE_LIGHT) +		{ +			if (mComboMaterial->getItemCount() == mComboMaterialItemCount) +			{ +				mComboMaterial->add(LEGACY_FULLBRIGHT_DESC); +			} +			mComboMaterial->setSimple(LEGACY_FULLBRIGHT_DESC); +		} +		else +		{ +			if (mComboMaterial->getItemCount() != mComboMaterialItemCount) +			{ +				mComboMaterial->remove(LEGACY_FULLBRIGHT_DESC); +			} +			 +			mComboMaterial->setSimple(std::string(LLMaterialTable::basic.getName(material_code))); +		} +	} +	else +	{ +		mComboMaterial->setEnabled( FALSE ); +	} +  	// Physics properties  	mSpinPhysicsGravity->set(objectp->getPhysicsGravity()); @@ -462,12 +532,12 @@ void LLPanelVolume::refresh()  	bool enable_mesh = gSavedSettings.getBOOL("MeshEnabled") &&   					   gAgent.getRegion() && -					   !gAgent.getRegion()->getCapability("GetMesh").empty(); +					   !gAgent.getRegion()->getCapability("GetMesh").empty() && +					   !gAgent.getRegion()->getCapability("ObjectAdd").empty();  	getChildView("label physicsshapetype")->setVisible(enable_mesh);  	getChildView("Physics Shape Type Combo Ctrl")->setVisible(enable_mesh);  	getChildView("Physics Gravity")->setVisible(enable_mesh); -	getChildView("Physics Material Override")->setVisible(enable_mesh);  	getChildView("Physics Friction")->setVisible(enable_mesh);  	getChildView("Physics Density")->setVisible(enable_mesh);  	getChildView("Physics Restitution")->setVisible(enable_mesh); @@ -522,6 +592,8 @@ void LLPanelVolume::clearCtrls()  	mSpinPhysicsFriction->setEnabled(FALSE);  	mSpinPhysicsDensity->setEnabled(FALSE);  	mSpinPhysicsRestitution->setEnabled(FALSE); + +	mComboMaterial->setEnabled( FALSE );  }  // @@ -674,6 +746,25 @@ void LLPanelVolume::onLightSelectTexture(const LLSD& data)  }  // static +void LLPanelVolume::onCommitMaterial( LLUICtrl* ctrl, void* userdata ) +{ +	//LLPanelObject* self = (LLPanelObject*) userdata; +	LLComboBox* box = (LLComboBox*) ctrl; + +	if (box) +	{ +		// apply the currently selected material to the object +		const std::string& material_name = box->getSimple(); +		std::string LEGACY_FULLBRIGHT_DESC = LLTrans::getString("Fullbright"); +		if (material_name != LEGACY_FULLBRIGHT_DESC) +		{ +			U8 material_code = LLMaterialTable::basic.getMCode(material_name); +			LLSelectMgr::getInstance()->selectionSetMaterial(material_code); +		} +	} +} + +// static  void LLPanelVolume::onCommitLight( LLUICtrl* ctrl, void* userdata )  {  	LLPanelVolume* self = (LLPanelVolume*) userdata; diff --git a/indra/newview/llpanelvolume.h b/indra/newview/llpanelvolume.h index 776a2c1f4a..0ef47db0d9 100644 --- a/indra/newview/llpanelvolume.h +++ b/indra/newview/llpanelvolume.h @@ -63,8 +63,8 @@ public:  	static void 	onCommitLight(			LLUICtrl* ctrl, void* userdata);  	static void 	onCommitIsFlexible(		LLUICtrl* ctrl, void* userdata);  	static void 	onCommitFlexible(		LLUICtrl* ctrl, void* userdata); -  	static void     onCommitPhysicsParam(       LLUICtrl* ctrl, void* userdata); +	static void 	onCommitMaterial(		LLUICtrl* ctrl, void* userdata);  	void		onLightCancelColor(const LLSD& data);  	void		onLightSelectColor(const LLSD& data); @@ -104,6 +104,10 @@ protected:  	LLSpinCtrl*		mSpinForce[3];  */ +	S32			mComboMaterialItemCount; +	LLComboBox*		mComboMaterial; +	 +  	LLColor4		mLightSavedColor;  	LLUUID			mLightSavedTexture;  	LLPointer<LLViewerObject> mObject; diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp index 9b264b81c7..8fa4065fa6 100644 --- a/indra/newview/llselectmgr.cpp +++ b/indra/newview/llselectmgr.cpp @@ -1997,7 +1997,7 @@ void LLSelectMgr::selectionSetPhysicsType(U8 type)  			if (object->permModify())  			{  				object->setPhysicsShapeType(mType); -				object->updateFlags(); +				object->updateFlags(TRUE);  			}  			return true;  		} @@ -2016,7 +2016,7 @@ void LLSelectMgr::selectionSetFriction(F32 friction)  			if (object->permModify())  			{  				object->setPhysicsFriction(mFriction); -				object->updateFlags(); +				object->updateFlags(TRUE);  			}  			return true;  		} @@ -2035,7 +2035,7 @@ void LLSelectMgr::selectionSetGravity(F32 gravity )  			if (object->permModify())  			{  				object->setPhysicsGravity(mGravity); -				object->updateFlags(); +				object->updateFlags(TRUE);  			}  			return true;  		} @@ -2054,7 +2054,7 @@ void LLSelectMgr::selectionSetDensity(F32 density )  			if (object->permModify())  			{  				object->setPhysicsDensity(mDensity); -				object->updateFlags(); +				object->updateFlags(TRUE);  			}  			return true;  		} @@ -2073,7 +2073,7 @@ void LLSelectMgr::selectionSetRestitution(F32 restitution)  			if (object->permModify())  			{  				object->setPhysicsRestitution(mRestitution); -				object->updateFlags(); +				object->updateFlags(TRUE);  			}  			return true;  		} diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index 6d493bfcd5..e7878d8adf 100644 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -102,6 +102,7 @@  #include "lltrans.h"  #include "llsdutil.h"  #include "llmediaentry.h" +#include "llaccountingquota.h"  //#define DEBUG_UPDATE_TYPE @@ -5282,7 +5283,7 @@ bool LLViewerObject::specialHoverCursor() const  			|| (mClickAction != 0);  } -void LLViewerObject::updateFlags() +void LLViewerObject::updateFlags(BOOL physics_changed)  {  	LLViewerRegion* regionp = getRegion();  	if(!regionp) return; @@ -5295,12 +5296,15 @@ void LLViewerObject::updateFlags()  	gMessageSystem->addBOOL("IsTemporary", flagTemporaryOnRez() );  	gMessageSystem->addBOOL("IsPhantom", flagPhantom() );  	gMessageSystem->addBOOL("CastsShadows", flagCastShadows() ); -	gMessageSystem->nextBlock("ExtraPhysics"); -	gMessageSystem->addU8("PhysicsShapeType", getPhysicsShapeType() ); -	gMessageSystem->addF32("Density", getPhysicsDensity() ); -	gMessageSystem->addF32("Friction", getPhysicsFriction() ); -	gMessageSystem->addF32("Restitution", getPhysicsRestitution() ); -	gMessageSystem->addF32("GravityMultiplier", getPhysicsGravity() ); +	if (physics_changed) +	{ +		gMessageSystem->nextBlock("ExtraPhysics"); +		gMessageSystem->addU8("PhysicsShapeType", getPhysicsShapeType() ); +		gMessageSystem->addF32("Density", getPhysicsDensity() ); +		gMessageSystem->addF32("Friction", getPhysicsFriction() ); +		gMessageSystem->addF32("Restitution", getPhysicsRestitution() ); +		gMessageSystem->addF32("GravityMultiplier", getPhysicsGravity() ); +	}  	gMessageSystem->sendReliable( regionp->getHost() );  } @@ -5699,3 +5703,10 @@ public:  LLHTTPRegistration<ObjectPhysicsProperties>  	gHTTPRegistrationObjectPhysicsProperties("/message/ObjectPhysicsProperties"); + + +void LLViewerObject::updateQuota( const SelectionQuota& quota ) +{ +	//update quotas +	mSelectionQuota = quota; +} diff --git a/indra/newview/llviewerobject.h b/indra/newview/llviewerobject.h index e417343bec..a0ad52df6b 100644 --- a/indra/newview/llviewerobject.h +++ b/indra/newview/llviewerobject.h @@ -43,6 +43,7 @@  #include "v3dmath.h"  #include "v3math.h"  #include "llvertexbuffer.h" +#include "llaccountingquota.h"  class LLAgent;			// TODO: Get rid of this.  class LLAudioSource; @@ -488,7 +489,7 @@ public:  	void			setRegion(LLViewerRegion *regionp);  	virtual void	updateRegion(LLViewerRegion *regionp); -	void updateFlags(); +	void updateFlags(BOOL physics_changed = FALSE);  	BOOL setFlags(U32 flag, BOOL state);  	void setPhysicsShapeType(U8 type);  	void setPhysicsGravity(F32 gravity); @@ -643,7 +644,11 @@ protected:  	void unpackParticleSource(LLDataPacker &dp, const LLUUID& owner_id);  	void deleteParticleSource();  	void setParticleSource(const LLPartSysData& particle_parameters, const LLUUID& owner_id); - +	 +public: +	void  updateQuota(  const SelectionQuota& quota ); +	const SelectionQuota& getQuota( void ) { return mSelectionQuota; } +	  private:  	void setNameValueList(const std::string& list);		// clears nv pairs and then individually adds \n separated NV pairs from \0 terminated string  	void deleteTEImages(); // correctly deletes list of images @@ -705,6 +710,8 @@ protected:  	F32 mPhysicsCost;  	F32 mLinksetPhysicsCost; +	SelectionQuota mSelectionQuota; +	  	bool mCostStale;  	mutable bool mPhysicsShapeUnknown; diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp index ab2e07e4df..007b3416f1 100644 --- a/indra/newview/llviewerobjectlist.cpp +++ b/indra/newview/llviewerobjectlist.cpp @@ -1418,6 +1418,15 @@ void LLViewerObjectList::onObjectCostFetchFailure(const LLUUID& object_id)  	mPendingObjectCost.erase(object_id);  } +void LLViewerObjectList::updateQuotaCost( const LLUUID& objectId, const SelectionQuota& quota  ) +{ +	LLViewerObject* pVO = findObject( objectId ); +	if ( pVO ) +	{ +		//pVO->updateQuota( quota ); +	} +} +  void LLViewerObjectList::updatePhysicsFlags(const LLViewerObject* object)  {  	mStalePhysicsFlags.insert(object->getID()); diff --git a/indra/newview/llviewerobjectlist.h b/indra/newview/llviewerobjectlist.h index 65374bca70..8e211eaf73 100644 --- a/indra/newview/llviewerobjectlist.h +++ b/indra/newview/llviewerobjectlist.h @@ -36,6 +36,7 @@  // project includes  #include "llviewerobject.h" +#include "llaccountingquota.h"  class LLCamera;  class LLNetMap; @@ -101,6 +102,8 @@ public:  									F32 restitution,  									F32 gravity_multiplier); +	void updateQuotaCost( const LLUUID& objectId, const SelectionQuota& costs ); +	  	void shiftObjects(const LLVector3 &offset);  	bool hasMapObjectInRegion(LLViewerRegion* regionp) ; diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp index f835351c04..590c82856d 100644 --- a/indra/newview/llviewerregion.cpp +++ b/indra/newview/llviewerregion.cpp @@ -1545,6 +1545,11 @@ void LLViewerRegion::setSeedCapability(const std::string& url)  	capabilityNames.append("ViewerMetrics");  	capabilityNames.append("ViewerStartAuction");  	capabilityNames.append("ViewerStats"); +	//prep# Finalize these!!!!!!!!! +	//capabilityNames.append("AccountingVO");	 +	capabilityNames.append("AccountingParcel"); +	capabilityNames.append("AccountingRegion"); +	  	// Please add new capabilities alphabetically to reduce  	// merge conflicts. @@ -1658,3 +1663,4 @@ std::string LLViewerRegion::getDescription() const  {      return stringize(*this);  } + diff --git a/indra/newview/llviewerregion.h b/indra/newview/llviewerregion.h index 9c5b85b77f..a6e5c47b86 100644 --- a/indra/newview/llviewerregion.h +++ b/indra/newview/llviewerregion.h @@ -275,6 +275,7 @@ public:  	F32 getLandHeightRegion(const LLVector3& region_pos);  	void getInfo(LLSD& info); +	  	typedef enum  	{ diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index f64eb89866..845a87b8cf 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -625,8 +625,14 @@ void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY)  		mDeferredDepth.allocate(resX, resY, 0, TRUE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE);  		addDeferredAttachments(mDeferredScreen); -		mScreen.allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE);		 +		mScreen.allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE); +		 +#if LL_DARWIN +		// As of OS X 10.6.7, Apple doesn't support multiple color formats in a single FBO +		mEdgeMap.allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE); +#else  		mEdgeMap.allocate(resX, resY, GL_ALPHA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE); +#endif  		if (shadow_detail > 0 || ssao)  		{ //only need mDeferredLight[0] for shadows OR ssao @@ -651,7 +657,12 @@ void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY)  			mDeferredLight[2].allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE);  			for (U32 i = 0; i < 2; i++)  			{ +#if LL_DARWIN +				// As of OS X 10.6.7, Apple doesn't support multiple color formats in a single FBO +				mGIMapPost[i].allocate(resX,resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE); +#else  				mGIMapPost[i].allocate(resX,resY, GL_RGB, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE); +#endif  			}  		}  		else @@ -666,8 +677,12 @@ void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY)  		F32 scale = gSavedSettings.getF32("RenderShadowResolutionScale"); +#if LL_DARWIN +		U32 shadow_fmt = 0; +#else  		//HACK: make alpha masking work on ATI depth shadows (work around for ATI driver bug)  		U32 shadow_fmt = gGLManager.mIsATI ? GL_ALPHA : 0; +#endif  		if (shadow_detail > 0)  		{ //allocate 4 sun shadow maps diff --git a/indra/newview/skins/default/xui/en/floater_model_preview.xml b/indra/newview/skins/default/xui/en/floater_model_preview.xml index d08c3e7078..a24306456a 100644 --- a/indra/newview/skins/default/xui/en/floater_model_preview.xml +++ b/indra/newview/skins/default/xui/en/floater_model_preview.xml @@ -1,547 +1,547 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater can_close="true" can_drag_on_left="false" can_minimize="false" -     can_resize="true" height="550" min_height="550" min_width="620" -     name="Model Preview" title="Upload Model" width="620"> - -  <string name="status_idle">Idle</string> -  <string name="status_reading_file">Loading...</string> -  <string name="status_generating_meshes">Generating Meshes...</string> -  <string name="status_vertex_number_overflow">Error: Vertex number is more than 65534, aborted!</string> -  <string name="high">High</string> -  <string name="medium">Medium</string> -  <string name="low">Low</string> -  <string name="lowest">Lowest</string> -  <string name="mesh_status_good">Ship it!</string> -  <string name="mesh_status_na">N/A</string> -  <string name="mesh_status_none">None</string> -  <string name="mesh_status_submesh_mismatch">Levels of detail have a different number of textureable faces.</string> -  <string name="mesh_status_mesh_mismatch">Levels of detail have a different number of mesh instances.</string> -  <string name="mesh_status_too_many_vertices">Level of detail has too many vertices.</string> -  <string name="mesh_status_missing_lod">Missing required level of detail.</string> -  <string name="layer_all">All</string> <!-- Text to display in physics layer combo box for "all layers" --> -  <string name="decomposing">Analyzing...</string> -  <string name="simplifying">Simplifying...</string> -   - -  <text left="15" bottom="25" follows="top|left" height="15" name="name_label"> -    Name: -  </text> -  <line_editor bottom_delta="20" follows="top|left|right" height="19"  -	     name="description_form" prevalidate_callback="ascii" width="290" /> -   -  <text bottom_delta="20" left="15" follows="left|top" height="15" name="lod_label"> -    Preview: -  </text> -  <combo_box bottom_delta="20" follows="left|top" height="18" -	     name="preview_lod_combo" width="240" tool_tip="LOD to view in preview render"> -    <combo_item name="high"> -      Level of Detail: High -    </combo_item> -    <combo_item name="medium"> -      Level of Detail: Medium -    </combo_item> -    <combo_item name="low"> -      Level of Detail: Low -    </combo_item> -    <combo_item name="lowest"> -      Level of Detail: Lowest -    </combo_item> -  </combo_box> - -    <menu_button follows="top|left"  -         image_hover_unselected="Toolbar_Left_Over" -         image_overlay="OptionsMenu_Off" -         image_selected="Toolbar_Left_Selected" -         image_unselected="Toolbar_Left_Off" -         layout="topleft" -         left_pad="5" -         name="options_gear_btn" -         width="31" -         height="25"/> -  <!-- Placeholder panel for 3D preview render --> -  <panel -    name="preview_panel" -    left="15" -    bevel_style="none" -    border_style="line" -    border="true" -    width="290" -    height="290" -    follows="all"/> - -  <text bottom_delta="25" left="25" width="100" follows="bottom|left">Upload Details</text> -  <panel top_pad="5" border="true" left="15" width="290" height="70" follows="bottom|left" -          bevel_style="none" bg_alpha_color="0 0 0 0" bg_opaque_color="0 0 0 0.3"> -    <text left="25" follows="bottom|left" width="140" height="15" name="streaming cost"> -      Resource Cost: [COST] -    </text> -    <text left="25" top_pad="5" width="140" follows="bottom|left" height="15" name="physics cost"> -      Physics Cost: [COST] -    </text> -    <text left="25" top_pad="5" follows="bottom|left" height="15" name="upload fee"> -      Upload Fee: N/A -    </text> -  </panel> - -  <text left="10" bottom="540" width="290" height="15" follows="bottom|left|right" name="status">[STATUS]</text> - -   -  <button bottom="540" left="300"  follows="bottom|right" height="20" label="Defaults" -	     width="80" name="reset_btn" tool_tip="Reset to defaults"/> -  <button bottom="540" left="430"  follows="bottom|right" height="20" label="Upload" -	     width="80" name="ok_btn" tool_tip="Upload to simulator"/> -  <button left_pad="10" follows="right|bottom" height="20" width="80" label="Cancel" name="cancel_btn"/> - -  <tab_container -    follows="right|top|bottom" -    top="15" -    left="310" -    height="470" -    width="300" -    name="import_tab" -    border="true" -    tab_position="top"> - -    <!-- LOD PANEL --> -    <panel -      border="true" -      label="Level of Detail" -      name="lod_panel"> - -      <text left="10" width="240" bottom="20" height="15" follows="left|top" name="lod_table_header"> -        Select Level of Detail: -      </text> -      -      <text valign="center" halign="center" bg_visible="true" bottom_delta="16" left="75" width="65" height="18" follows="left|top" value="Triangles"/> -      <text valign="center" halign="center" bg_visible="true" left_pad="0" width="65" height="18" follows="left|top" value="Vertices"/> -      <text valign="center" halign="center" left_pad="0" width="65" bg_visible="true" height="18" follows="left|top" value="Status"/> -       -      <text valign="center" halign="center" bg_visible="true" name="high_label" left="10" top_pad="0" width="65" height="18" follows="left|top" value="High"/> -      <text valign="center" halign="center" bg_visible="true" name="high_triangles" left_pad="0" width="65" height="18" follows="left|top" value="0"/> -      <text valign="center" halign="center" bg_visible="true" name="high_vertices" left_pad="0" width="65" height="18" follows="left|top" value="0"/> -      <text valign="center" halign="center" bg_visible="true" name="high_status" left_pad="0" width="65" height="18" follows="left|top" value=""/> -      <icon height="16" width="16" image_name="lag_status_critical.tga" mouse_opaque="true" name="status_icon_high" left_delta="20" top_delta="0" /> - -      <text valign="center" halign="center" bg_visible="true" name="medium_label" left="10" top_pad="0" width="65" height="18" follows="left|top" value="Medium"/> -      <text valign="center" halign="center" bg_visible="true" name="medium_triangles" left_pad="0" width="65" height="18" follows="left|top" value="0"/> -      <text valign="center" halign="center" bg_visible="true" name="medium_vertices" left_pad="0" width="65" height="18" follows="left|top" value="0"/> -      <text valign="center" halign="center" bg_visible="true" name="medium_status" left_pad="0" width="65" height="18" follows="left|top" value=""/> -      <icon height="16" width="16" image_name="lag_status_critical.tga" mouse_opaque="true" name="status_icon_medium" left_delta="20" top_delta="0" /> - -      <text valign="center" halign="center" bg_visible="true" name="low_label" left="10" top_pad="0" width="65" height="18" follows="left|top" value="Low"/> -      <text valign="center" halign="center" bg_visible="true" name="low_triangles" left_pad="0" width="65" height="18" follows="left|top" value="0"/> -      <text valign="center" halign="center" bg_visible="true" name="low_vertices" left_pad="0" width="65" height="18" follows="left|top" value="0"/> -      <text valign="center" halign="center" bg_visible="true" name="low_status" left_pad="0" width="65" height="18" follows="left|top" value=""/> -      <icon height="16" width="16" image_name="lag_status_critical.tga" mouse_opaque="true" name="status_icon_low" left_delta="20" top_delta="0" /> - -      <text valign="center" halign="center" bg_visible="true" name="lowest_label" left="10" top_pad="0" width="65" height="18" follows="left|top" value="Lowest"/> -      <text valign="center" halign="center" bg_visible="true" name="lowest_triangles" left_pad="0" width="65" height="18" follows="left|top" value="0"/> -      <text valign="center" halign="center" bg_visible="true" name="lowest_vertices" left_pad="0" width="65" height="18" follows="left|top" value="0"/> -      <text valign="center" halign="center" bg_visible="true" name="lowest_status" left_pad="0" width="65" height="18" follows="left|top" value=""/> -      <icon height="16" width="16" image_name="lag_status_critical.tga" mouse_opaque="true" name="status_icon_lowest" left_delta="20" top_delta="0" /> -       -      <text left="10" width="240" height="15" top_pad="15" follows="left|top" name="lod_table_footer"> -        Level of Detail: [DETAIL] -      </text> - -      <icon height="16" width="16" left="20" follows="left|top" name="lod_status_message_icon"/> -      <text left_pad="5" width="200" height="28" follows="left|top" top_pad="-15" wrap="true" name="lod_status_message_text"/> - -      <text top_pad="-3" left="10" height="15" follows="left|top"> -        Mesh -      </text> - -      <radio_group follows="top|left" height="210" left="30" name="lod_file_or_limit" width="240" value="lod_from_file"> -        <radio_item bottom="195" label="Load from file" name="lod_from_file"/> -        <radio_item bottom="150" label="Auto generate" name="lod_auto_generate"/> -        <radio_item bottom="0" label="None" name="lod_none"/> -      </radio_group> - -      <line_editor follows="left|top" bottom_delta="-170" width="140" left="45" value="" name="lod_file" height="20"/> -      <button bottom_delta="3" name="lod_browse" label="Browse..." left_pad="5" follows="left|top" width="70" height="25"/> - -      <combo_box follows="top|left" name="lod_mode" top_pad="22" width="100" left="45" height="20"> -        <combo_item name="triangle_limit"> -          Triangle Limit -        </combo_item> -        <combo_item name="error_threshold"> -          Error Threshold -        </combo_item> -      </combo_box> -      <spinner follows="top|left" name="lod_triangle_limit" increment="10" left_pad="5" height="20" width="100" decimal_digits="0" enabled="true"/> -      <spinner left_delta="0" bottom_delta="0" increment="0.01"  follows="top|left" name="lod_error_threshold" min_val="0" max_val="100" height="20" width="100" decimal_digits="3" visible="false" enabled="true"/> - -      <text follows="top|left" name="build_operator_text" left="45" top_pad="10" width="100" height="15"> -        Build Operator:   -      </text> -      <text follows="top|left" name="queue_mode_text" left_pad="5" width="100" height="15"> -        Queue Mode: -      </text> -      <combo_box follows="top|left" name="build_operator" top_pad="5" left="45" width="100" height="20"> -        <combo_item name="edge_collapse"> -          Edge Collapse -        </combo_item> -        <combo_item name="half_edge_collapse"> -          Half Edge Collapse -        </combo_item> -      </combo_box> - -      <combo_box follows="top|left" name="queue_mode" left_pad="5" width="100" height="20"> -        <combo_item name="greedy"> -          Greedy -        </combo_item> -        <combo_item name="lazy"> -          Lazy -        </combo_item> -        <combo_item name="independent"> -          Independent -        </combo_item> -      </combo_box> - -      <text top_pad="10" name="border_mode_text" left="45" follows="left|top" width="100" height="15"> -        Border Mode: -      </text> - -      <text left_pad="5" name="share_tolderance_text"  follows="left|top" width="100" height="15"> -        Share Tolerance: -      </text> - -      <combo_box follows="left|top" left="45" height="20" name="border_mode" width="100"> -        <combo_item name="border_unlock"> -          Unlock -        </combo_item> -        <combo_item name="border_lock"> -          Lock -        </combo_item> -      </combo_box> -      <spinner follows="left|top" name="share_tolerance" left_pad="5" width="100" decimal_digits="5" initial_value="0.00001" height="20"/> -              -      <text left="10" top_pad="35" follows="top|left" width="240" height="15"> -        Generate Normals -      </text> -      <text left="35" top_pad="5" follows="top|left" width="100" height="15"> -        Crease Angle: -      </text> -      <spinner follows="top|left" left_pad="5" min_val="0" max_val="180" value="75" width="60" height="20" name="crease_angle"/>   -    </panel> - -    <!--  PANEL --> -    <panel -      border="true" -      label="Physics" -      name="physics_panel"> - -      <!-- PHYSICS GEOMETRY--> -      <panel -        follows="top|left" -        name="physics geometry" -        left="0" -        top="0" -        width="300" -        height="65" -        visible="true" -        border="true" -        bevel_style="none" bg_alpha_color="0 0 0 0" bg_opaque_color="0 0 0 0.3"> - -        <radio_group follows="top|left" top="10" width="240" height="40" name="physics_load_radio" value="physics_load_from_file"> -          <radio_item bottom="0" name="physics_load_from_file" label="File:"/> -          <radio_item bottom="23" name="physics_use_lod" label="Use Level of Detail:"/> -        </radio_group> - -        <combo_box left="180" top="10" follows="left|top" height="18" -	        name="physics_lod_combo" width="110" tool_tip="LOD to use for physics shape"> -          <combo_item name="physics_lowest"> -            Lowest -          </combo_item> -          <combo_item name="physics_low"> -            Low -          </combo_item> -          <combo_item name="physics_medium"> -            Medium -          </combo_item> -          <combo_item name="physics_high"> -            High -          </combo_item> -        </combo_box> - -        <line_editor follows="left|top" top_pad="5" width="140" left="60" value="" name="physics_file" height="20"/> -        <button left_pad="10" name="physics_browse" label="Browse..." follows="left|top" width="70" height="20"/> - -        <!-- -        <check_box name="physics_optimize" follows="left|top" width="130" left="10" top_pad="5" height="20" label="Optimize"/> -        <check_box name="physics_use_hull" follows="left|top" width="130" left_pad="5" height="20" label="Use Convex Hull"/> -        --> -     </panel> - - -      <!-- PHYSICS ANALYSIS--> -      <panel -       follows="top|left" -       name="physics analysis" -       top_pad="0" -       left="0" -       width="300" -       height="130" -       visible="true" -       border="true" -       bevel_style="none" bg_alpha_color="0 0 0 0" bg_opaque_color="0 0 0 0.3"> - -        <text follows="left|top" bottom="40" height="30" left="10" font="SansSerifBig"> -          Step 1: Analysis -        </text> -         -        <text top_pad="5" width="50" follows="top|left" height="15"> -          Method: -        </text> -        <combo_box name="Method" follows="top|left" left_pad="5" bottom_delta="2" height="20" width="80"/> -        <text left="160" bottom_delta="-2" width="50" follows="top|left" height="15"> -          Quality: -        </text> -        <combo_box name="Decompose Quality" bottom_delta="2" follows="top|left" left_pad="5" height="20" width="80"/> - -        <slider name="Smooth" left="10" width="280" follows="top|left" top_pad="10" height="20" label="Smooth:"/> - -        <check_box name="Close Holes (Slow)" follows="top|left" top_pad="10" height="15" label="Close Holes (slow)"/> -                 -        <button left="200" bottom_delta="0" width="90" follows="top|left" label="Analyze" name="Decompose" height="20"/> -        <button left="200" bottom_delta="0" width="90" follows="top|left" label="Cancel" name="decompose_cancel" visble="false" height="20"/> -      </panel> -       - -      <!-- PHYSICS SIMPLIFICATION --> -     <panel -       follows="top|left" -       name="physics simplification" -       left="0" -       top_pad="0" -       width="300" -       height="150" -       visible="true" -       border="true" -       bevel_style="none" bg_alpha_color="0 0 0 0" bg_opaque_color="0 0 0 0.3"> - -        <text follows="left|top" bottom="40" height="30" left="10" font="SansSerifBig"> -          Step 2: Simplification -        </text> - -        <text left="10" top_pad="5" height="15" width="140" follows="top|left"> -          Method: -        </text> -         -        <combo_box left_pad="5" height="20" width="120" follows="top|left" name="Simplify Method"/> - -        <slider left="10" name="Combine Quality" label="Passes:" label_width="120" width="270" follows="top|left" top_pad="10" height="20"/> -        <slider name="Detail Scale" label="Detail Scale:" label_width="120" width="270" follows="top|left" top_pad="10" height="20"/> -        <slider name="Retain%" label="Retain:" label_width="120" width="270" follows="top|left" bottom_delta="0" left_delta="0" visible="false" height="20"/> -        <button left="190" width="90" follows="top|left" label="Simplify" name="Simplify" height="20"/> -        <button left="190" bottom_delta="0" width="90" follows="top|left" label="Cancel" name="simplify_cancel" height="20"/> -         -      </panel> - -      <!-- INFO PANEL --> -      <panel -        left="0" -        top_pad="0" -        width="300" -        height="100" -        follows="left|top" -        name="physics info" -        visible="true" -        border="true"  -        bevel_style="none" bg_alpha_color="0 0 0 0" bg_opaque_color="0 0 0 0.3"> - -        <slider name="physics_explode" follows="top|left" top="10" left="10" label="Preview Spread:" min_val="0.0" max_val="3.0" height="20" width="280"/> -         -        <text follows="top|left" name="physics_triangles" top_pad="10" height="15" left="10"> -          Triangles: [TRIANGLES] -        </text> -        <text follows="top|left" name="physics_points" top_pad="5" height="15"> -          Vertices: [POINTS] -        </text> -        <text follows="top|left" name="physics_hulls" top_pad="5" height="15"> -          Hulls: [HULLS] -        </text> - - -      </panel> -    </panel> - -    <!-- MODIFIERS PANEL --> -    <panel -      border="true" -      label="Modifiers" -      name="modifiers_panel"> -      <text left="10" width="90" bottom="30" follows="top|left" height="15"> -        Scale: -      </text> -      <text left_pad="5" width="140" follows="top|left" height="15"> -        Dimensions: -      </text> - -      <spinner left="10" height="20" follows="top|left" width="80" top_pad="5" value="1.0" min_val="0.01" max_val="64.0" name="import_scale"/> - -      <text left_pad="20" height="15" name="import_dimensions" follows="top|left"> -        [X] x [Y] x [Z] m -      </text> - -      <text left="10" top_pad="20" follows="top|left" height="15"> -        Include: -      </text> - -      <check_box top_pad="5" name="upload_textures" height="15" follows="top|left" label="Textures"/> -      <check_box top_pad="5" name="upload_skin" height="15" follows="top|left" label="Skin weight"/> -      <check_box top_pad="5" left="20" name="upload_joints" height="15" follows="top|left" label="Joint positions"/> - -      <text left="10" top_pad="4" width="90" bottom="30" follows="top|left" height="15"> -        Pelvis Z Offset: -      </text> - -      <spinner left="10" top_pad="4" height="20" follows="top|left" width="80" value="0.0" min_val="-3.00" max_val="3.0" name="pelvis_offset"/> - -    </panel> -  </tab_container> -   -  <!-- -  <button bottom_delta="0" left="10" width="120" name="auto fill" label="Generate LOD" tool_tip="Automatically generate levels of detail"/> -  <button bottom_delta="0" left="140" width="120" name="smooth normals" label="Generate Normals" tool_tip="Regenerate normals based on mesh shape"/> -  <button bottom_delta="0" left="260" width="120" name="consolidate" label="Consolidate" tool_tip="Combine similar submeshes (reduces number of submeshes)"/> -  <button bottom_delta="30" left="260" width="120" name="scrub materials" label="Scrub Materials" tool_tip="Remove all material information (clear textures, set all colors to white)."/> -   -  <spinner bottom_delta="0" left="140" width="120" height="16" initial_value="75" label_width="60" name="edge threshold" decimal_digits="0" min_val="0" max_val="180" increment="5" label="Hard Angle" tool_tip="Maximum angle that will be smoothed between triangles when using Generate Normals"/> - -  <text bottom_delta="30" follows="top|left" height="15" left="10" name="high_lod_label"> -    High LOD: -  </text> -  <combo_box bottom_delta="0" left="97" follows="left|top" height="18"  -             name="high detail combo" width="100" tool_tip="Specify mesh for this level of detail"> -    <combo_item name="high none" value="none"> -      None -    </combo_item> -    <combo_item name="high choose file" value="file"> -      Choose File... -    </combo_item> -    <combo_item name="high triangle limit" value="limit"> -      Triangle Limit -    </combo_item> -  </combo_box> -  <spinner bottom_delta="-5" left="200" width="120"  name="high limit" decimal_digits="0" increment="1" min_val="0" max_val="100" tool_tip="Triangle budget for this LOD"/> -  <text bottom_delta="25" follows="top|left" height="15" left="10" name="high info" width="300"> -    [TRIANGLES] Triangles, [VERTICES] Vertices, [SUBMESHES] Submeshes.   -    [MESSAGE] -  </text> - -  <text bottom_delta="35" follows="top|left" height="15" left="10" name="medium_lod_label"> -    Medium LOD: -  </text> -  <combo_box bottom_delta="0" left="97" follows="left|top" height="18" -             name="medium detail combo" width="100" tool_tip="Specify mesh for this level of detail"> -    <combo_item name="medium none" value="none"> -      None -    </combo_item> -    <combo_item name="medium choose file" value="file"> -      Choose File... -    </combo_item> -    <combo_item name="medium triangle limit" value="limit"> -      Triangle Limit -    </combo_item> -  </combo_box> -  <spinner bottom_delta="-5" left="200" width="120"  name="medium limit" decimal_digits="0" increment="1" min_val="0" max_val="100" tool_tip="Triangle budget for this LOD"/> -  <text bottom_delta="25" follows="top|left" height="15" left="10" name="medium info" width="300"> -    [TRIANGLES] Triangles, [VERTICES] Vertices, [SUBMESHES] Submeshes.   -    [MESSAGE] -  </text> - -  <text bottom_delta="35" follows="top|left" height="15" left="10" name="low_lod_label"> -    Low LOD: -  </text> -  <combo_box bottom_delta="0" left="97" follows="left|top" height="18"  -             name="low detail combo" width="100" tool_tip="Specify mesh for this level of detail"> -    <combo_item name="low none" value="none"> -      None -    </combo_item> -    <combo_item name="low choose file" value="file"> -      Choose File... -    </combo_item> -    <combo_item name="low triangle limit" value="limit"> -      Triangle Limit -    </combo_item> -  </combo_box> -  <spinner bottom_delta="-5" left="200" width="120"  name="low limit" decimal_digits="0" increment="1" min_val="0" max_val="100" tool_tip="Triangle budget for this LOD"/> -  <text bottom_delta="25" follows="top|left" height="15" left="10" name="low info" width="300"> -    [TRIANGLES] Triangles, [VERTICES] Vertices, [SUBMESHES] Submeshes -    [MESSAGE] -  </text> - -  <text bottom_delta="35" follows="top|left" height="15" left="10" name="lowest_lod_label"> -    Lowest LOD: -  </text> -  <combo_box bottom_delta="0" left="97" follows="left|top" height="18"  -             name="lowest detail combo" width="100" tool_tip="Specify mesh for this level of detail"> -    <combo_item name="lowest none" value="none"> -      None -    </combo_item> -    <combo_item name="lowest choose file" value="file"> -      Choose File... -    </combo_item> -    <combo_item name="lowest triangle limit" value="limit"> -      Triangle Limit -    </combo_item> -  </combo_box> -  <spinner bottom_delta="-5" left="200" width="120"  name="lowest limit" decimal_digits="0" increment="1" min_val="0" max_val="100" tool_tip="Triangle budget for this LOD"/> -  <text bottom_delta="25" follows="top|left" height="15" left="10" name="lowest info" width="300"> -    [TRIANGLES] Triangles, [VERTICES] Vertices, [SUBMESHES] Submeshes -    [MESSAGE] -  </text> - -  <text bottom_delta="35" follows="top|left" height="15" left="10" name="physics_lod_label"> -    Physical Shape: -  </text> -  <combo_box bottom_delta="0" left="97" follows="left|top" height="18" -             name="physics detail combo" width="100"> -    <combo_item name="physics none" value="none"> -      None -    </combo_item> -    <combo_item name="physics choose file" value="file"> -      Choose File... -    </combo_item> -    <combo_item name="physics triangle limit" value="limit"> -      Triangle Limit... -    </combo_item> -  </combo_box> -  <spinner bottom_delta="-5" left="200" width="90"  name="physics limit" decimal_digits="0" increment="1" min_val="0" max_val="100" tool_tip="Triangle budget for this LOD"/> -  <button bottom_delta="0" left="290" width="30" follows="left|top" height="20" label=">>"  -          name="decompose_btn" tool_tip="Create convex decomposition."/> -  <text bottom_delta="25" follows="top|left" height="15" left="10" name="physics info" width="300"> -    [TRIANGLES] Triangles, [HULLS] Hulls, [POINTS] Points -  </text> - -  <text bottom_delta="25" follows="top|left" height="15" left="10" name="include label" width="300"> -    Include: -  </text> - -  <check_box bottom_delta="20" follow="bottom|left" height="20" label="Textures" -             left="15" width="125" name="upload_textures" tool_tip="Upload associated textures "/> - -  <check_box bottom_delta="20" follow="bottom|left" height="20" label="Skin Weights" -             left="15" width="125" name="upload_skin" tool_tip="Upload vertex skin weighting information."/> - -  <check_box bottom_delta="20" follow="bottom|left" height="20" label="Joint Positions" -             left="15" width="125" name="upload_joints" tool_tip="Upload joint position information (will override avatar joint positions when mesh is worn)."/> - -   -	<button bottom_delta="25" follows="bottom|left" height="20" label="Upload" -	     left="15" name="ok_btn" width="125" tool_tip="Upload to simulator"/> - -  <text bottom_delta="20" left="15" width="280" follows="top|left" height="15" name="description_label" text_color="1 0.82 0.46 1"> -	  (No charge for upload during First Look) -	</text> -  <text bottom_delta="20" left="15" width="280" follows="top|left" height="15" name="upload_message"> -    [MESSAGE] -  </text> -   -  <spinner bottom_delta="20" label="Scale" left="15" width="120"  name="debug scale" decimal_digits="3" increment="0.1" min_val="0" max_val="64" initial_value="1" tool_tip="Multiplier for incoming object scale.  If incoming dimensions are very small or very large, modify this value to get dimensions into an acceptable range."/> -  <text bottom_delta="30" left="15" width="280" follows="top|left" height="15" name="dimensions"> -    Model Dimensions: [X]m x [Y]m x [Z]m -  </text> -  --> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 +<floater can_close="true" can_drag_on_left="false" can_minimize="false"
 +     can_resize="true" height="550" min_height="550" min_width="620"
 +     name="Model Preview" title="Upload Model" width="620">
 +
 +  <string name="status_idle">Idle</string>
 +  <string name="status_reading_file">Loading...</string>
 +  <string name="status_generating_meshes">Generating Meshes...</string>
 +  <string name="status_vertex_number_overflow">Error: Vertex number is more than 65534, aborted!</string>
 +  <string name="high">High</string>
 +  <string name="medium">Medium</string>
 +  <string name="low">Low</string>
 +  <string name="lowest">Lowest</string>
 +  <string name="mesh_status_good">Ship it!</string>
 +  <string name="mesh_status_na">N/A</string>
 +  <string name="mesh_status_none">None</string>
 +  <string name="mesh_status_submesh_mismatch">Levels of detail have a different number of textureable faces.</string>
 +  <string name="mesh_status_mesh_mismatch">Levels of detail have a different number of mesh instances.</string>
 +  <string name="mesh_status_too_many_vertices">Level of detail has too many vertices.</string>
 +  <string name="mesh_status_missing_lod">Missing required level of detail.</string>
 +  <string name="layer_all">All</string> <!-- Text to display in physics layer combo box for "all layers" -->
 +  <string name="decomposing">Analyzing...</string>
 +  <string name="simplifying">Simplifying...</string>
 +  
 +
 +  <text left="15" bottom="25" follows="top|left" height="15" name="name_label">
 +    Name:
 +  </text>
 +  <line_editor bottom_delta="20" follows="top|left|right" height="19" max_length_bytes="64" 
 +	     name="description_form" prevalidate_callback="ascii" width="290" />
 +  
 +  <text bottom_delta="20" left="15" follows="left|top" height="15" name="lod_label">
 +    Preview:
 +  </text>
 +  <combo_box bottom_delta="20" follows="left|top" height="18"
 +	     name="preview_lod_combo" width="240" tool_tip="LOD to view in preview render">
 +    <combo_item name="high">
 +      Level of Detail: High
 +    </combo_item>
 +    <combo_item name="medium">
 +      Level of Detail: Medium
 +    </combo_item>
 +    <combo_item name="low">
 +      Level of Detail: Low
 +    </combo_item>
 +    <combo_item name="lowest">
 +      Level of Detail: Lowest
 +    </combo_item>
 +  </combo_box>
 +
 +    <menu_button follows="top|left" 
 +         image_hover_unselected="Toolbar_Left_Over"
 +         image_overlay="OptionsMenu_Off"
 +         image_selected="Toolbar_Left_Selected"
 +         image_unselected="Toolbar_Left_Off"
 +         layout="topleft"
 +         left_pad="5"
 +         name="options_gear_btn"
 +         width="31"
 +         height="25"/>
 +  <!-- Placeholder panel for 3D preview render -->
 +  <panel
 +    name="preview_panel"
 +    left="15"
 +    bevel_style="none"
 +    border_style="line"
 +    border="true"
 +    width="290"
 +    height="290"
 +    follows="all"/>
 +
 +  <text bottom_delta="25" left="25" width="100" follows="bottom|left">Upload Details</text>
 +  <panel top_pad="5" border="true" left="15" width="290" height="70" follows="bottom|left"
 +          bevel_style="none" bg_alpha_color="0 0 0 0" bg_opaque_color="0 0 0 0.3">
 +    <text left="25" follows="bottom|left" width="140" height="15" name="streaming cost">
 +      Resource Cost: [COST]
 +    </text>
 +    <text left="25" top_pad="5" width="140" follows="bottom|left" height="15" name="physics cost">
 +      Physics Cost: [COST]
 +    </text>
 +    <text left="25" top_pad="5" follows="bottom|left" height="15" name="upload fee">
 +      Upload Fee: N/A
 +    </text>
 +  </panel>
 +
 +  <text left="10" bottom="540" width="290" height="15" follows="bottom|left|right" name="status">[STATUS]</text>
 +
 +  
 +  <button bottom="540" left="300"  follows="bottom|right" height="20" label="Defaults"
 +	     width="80" name="reset_btn" tool_tip="Reset to defaults"/>
 +  <button bottom="540" left="430"  follows="bottom|right" height="20" label="Upload"
 +	     width="80" name="ok_btn" tool_tip="Upload to simulator"/>
 +  <button left_pad="10" follows="right|bottom" height="20" width="80" label="Cancel" name="cancel_btn"/>
 +
 +  <tab_container
 +    follows="right|top|bottom"
 +    top="15"
 +    left="310"
 +    height="470"
 +    width="300"
 +    name="import_tab"
 +    border="true"
 +    tab_position="top">
 +
 +    <!-- LOD PANEL -->
 +    <panel
 +      border="true"
 +      label="Level of Detail"
 +      name="lod_panel">
 +
 +      <text left="10" width="240" bottom="20" height="15" follows="left|top" name="lod_table_header">
 +        Select Level of Detail:
 +      </text>
 +     
 +      <text valign="center" halign="center" bg_visible="true" bottom_delta="16" left="75" width="65" height="18" follows="left|top" value="Triangles"/>
 +      <text valign="center" halign="center" bg_visible="true" left_pad="0" width="65" height="18" follows="left|top" value="Vertices"/>
 +      <text valign="center" halign="center" left_pad="0" width="65" bg_visible="true" height="18" follows="left|top" value="Status"/>
 +      
 +      <text valign="center" halign="center" bg_visible="true" name="high_label" left="10" top_pad="0" width="65" height="18" follows="left|top" value="High"/>
 +      <text valign="center" halign="center" bg_visible="true" name="high_triangles" left_pad="0" width="65" height="18" follows="left|top" value="0"/>
 +      <text valign="center" halign="center" bg_visible="true" name="high_vertices" left_pad="0" width="65" height="18" follows="left|top" value="0"/>
 +      <text valign="center" halign="center" bg_visible="true" name="high_status" left_pad="0" width="65" height="18" follows="left|top" value=""/>
 +      <icon height="16" width="16" image_name="lag_status_critical.tga" mouse_opaque="true" name="status_icon_high" left_delta="20" top_delta="0" />
 +
 +      <text valign="center" halign="center" bg_visible="true" name="medium_label" left="10" top_pad="0" width="65" height="18" follows="left|top" value="Medium"/>
 +      <text valign="center" halign="center" bg_visible="true" name="medium_triangles" left_pad="0" width="65" height="18" follows="left|top" value="0"/>
 +      <text valign="center" halign="center" bg_visible="true" name="medium_vertices" left_pad="0" width="65" height="18" follows="left|top" value="0"/>
 +      <text valign="center" halign="center" bg_visible="true" name="medium_status" left_pad="0" width="65" height="18" follows="left|top" value=""/>
 +      <icon height="16" width="16" image_name="lag_status_critical.tga" mouse_opaque="true" name="status_icon_medium" left_delta="20" top_delta="0" />
 +
 +      <text valign="center" halign="center" bg_visible="true" name="low_label" left="10" top_pad="0" width="65" height="18" follows="left|top" value="Low"/>
 +      <text valign="center" halign="center" bg_visible="true" name="low_triangles" left_pad="0" width="65" height="18" follows="left|top" value="0"/>
 +      <text valign="center" halign="center" bg_visible="true" name="low_vertices" left_pad="0" width="65" height="18" follows="left|top" value="0"/>
 +      <text valign="center" halign="center" bg_visible="true" name="low_status" left_pad="0" width="65" height="18" follows="left|top" value=""/>
 +      <icon height="16" width="16" image_name="lag_status_critical.tga" mouse_opaque="true" name="status_icon_low" left_delta="20" top_delta="0" />
 +
 +      <text valign="center" halign="center" bg_visible="true" name="lowest_label" left="10" top_pad="0" width="65" height="18" follows="left|top" value="Lowest"/>
 +      <text valign="center" halign="center" bg_visible="true" name="lowest_triangles" left_pad="0" width="65" height="18" follows="left|top" value="0"/>
 +      <text valign="center" halign="center" bg_visible="true" name="lowest_vertices" left_pad="0" width="65" height="18" follows="left|top" value="0"/>
 +      <text valign="center" halign="center" bg_visible="true" name="lowest_status" left_pad="0" width="65" height="18" follows="left|top" value=""/>
 +      <icon height="16" width="16" image_name="lag_status_critical.tga" mouse_opaque="true" name="status_icon_lowest" left_delta="20" top_delta="0" />
 +      
 +      <text left="10" width="240" height="15" top_pad="15" follows="left|top" name="lod_table_footer">
 +        Level of Detail: [DETAIL]
 +      </text>
 +
 +      <icon height="16" width="16" left="20" follows="left|top" name="lod_status_message_icon"/>
 +      <text left_pad="5" width="200" height="28" follows="left|top" top_pad="-15" wrap="true" name="lod_status_message_text"/>
 +
 +      <text top_pad="-3" left="10" height="15" follows="left|top">
 +        Mesh
 +      </text>
 +
 +      <radio_group follows="top|left" height="210" left="30" name="lod_file_or_limit" width="240" value="lod_from_file">
 +        <radio_item bottom="195" label="Load from file" name="lod_from_file"/>
 +        <radio_item bottom="150" label="Auto generate" name="lod_auto_generate"/>
 +        <radio_item bottom="0" label="None" name="lod_none"/>
 +      </radio_group>
 +
 +      <line_editor follows="left|top" bottom_delta="-170" width="140" left="45" value="" name="lod_file" height="20"/>
 +      <button bottom_delta="3" name="lod_browse" label="Browse..." left_pad="5" follows="left|top" width="70" height="25"/>
 +
 +      <combo_box follows="top|left" name="lod_mode" top_pad="22" width="100" left="45" height="20">
 +        <combo_item name="triangle_limit">
 +          Triangle Limit
 +        </combo_item>
 +        <combo_item name="error_threshold">
 +          Error Threshold
 +        </combo_item>
 +      </combo_box>
 +      <spinner follows="top|left" name="lod_triangle_limit" increment="10" left_pad="5" height="20" width="100" decimal_digits="0" enabled="true"/>
 +      <spinner left_delta="0" bottom_delta="0" increment="0.01"  follows="top|left" name="lod_error_threshold" min_val="0" max_val="100" height="20" width="100" decimal_digits="3" visible="false" enabled="true"/>
 +
 +      <text follows="top|left" name="build_operator_text" left="45" top_pad="10" width="100" height="15">
 +        Build Operator:  
 +      </text>
 +      <text follows="top|left" name="queue_mode_text" left_pad="5" width="100" height="15">
 +        Queue Mode:
 +      </text>
 +      <combo_box follows="top|left" name="build_operator" top_pad="5" left="45" width="100" height="20">
 +        <combo_item name="edge_collapse">
 +          Edge Collapse
 +        </combo_item>
 +        <combo_item name="half_edge_collapse">
 +          Half Edge Collapse
 +        </combo_item>
 +      </combo_box>
 +
 +      <combo_box follows="top|left" name="queue_mode" left_pad="5" width="100" height="20">
 +        <combo_item name="greedy">
 +          Greedy
 +        </combo_item>
 +        <combo_item name="lazy">
 +          Lazy
 +        </combo_item>
 +        <combo_item name="independent">
 +          Independent
 +        </combo_item>
 +      </combo_box>
 +
 +      <text top_pad="10" name="border_mode_text" left="45" follows="left|top" width="100" height="15">
 +        Border Mode:
 +      </text>
 +
 +      <text left_pad="5" name="share_tolderance_text"  follows="left|top" width="100" height="15">
 +        Share Tolerance:
 +      </text>
 +
 +      <combo_box follows="left|top" left="45" height="20" name="border_mode" width="100">
 +        <combo_item name="border_unlock">
 +          Unlock
 +        </combo_item>
 +        <combo_item name="border_lock">
 +          Lock
 +        </combo_item>
 +      </combo_box>
 +      <spinner follows="left|top" name="share_tolerance" left_pad="5" width="100" decimal_digits="5" initial_value="0.00001" height="20"/>
 +             
 +      <text left="10" top_pad="35" follows="top|left" width="240" height="15">
 +        Generate Normals
 +      </text>
 +      <text left="35" top_pad="5" follows="top|left" width="100" height="15" name="crease_label">
 +        Crease Angle:
 +      </text>
 +      <spinner follows="top|left" left_pad="5" min_val="0" max_val="180" value="75" width="60" height="20" name="crease_angle"/>  
 +    </panel>
 +
 +    <!--  PANEL -->
 +    <panel
 +      border="true"
 +      label="Physics"
 +      name="physics_panel">
 +
 +      <!-- PHYSICS GEOMETRY-->
 +      <panel
 +        follows="top|left"
 +        name="physics geometry"
 +        left="0"
 +        top="0"
 +        width="300"
 +        height="65"
 +        visible="true"
 +        border="true"
 +        bevel_style="none" bg_alpha_color="0 0 0 0" bg_opaque_color="0 0 0 0.3">
 +
 +        <radio_group follows="top|left" top="10" width="240" height="40" name="physics_load_radio" value="physics_load_from_file">
 +          <radio_item bottom="0" name="physics_load_from_file" label="File:"/>
 +          <radio_item bottom="23" name="physics_use_lod" label="Use Level of Detail:"/>
 +        </radio_group>
 +
 +        <combo_box left="180" top="10" follows="left|top" height="18"
 +	        name="physics_lod_combo" width="110" tool_tip="LOD to use for physics shape">
 +          <combo_item name="physics_lowest">
 +            Lowest
 +          </combo_item>
 +          <combo_item name="physics_low">
 +            Low
 +          </combo_item>
 +          <combo_item name="physics_medium">
 +            Medium
 +          </combo_item>
 +          <combo_item name="physics_high">
 +            High
 +          </combo_item>
 +        </combo_box>
 +
 +        <line_editor follows="left|top" top_pad="5" width="140" left="60" value="" name="physics_file" height="20"/>
 +        <button left_pad="10" name="physics_browse" label="Browse..." follows="left|top" width="70" height="20"/>
 +
 +        <!--
 +        <check_box name="physics_optimize" follows="left|top" width="130" left="10" top_pad="5" height="20" label="Optimize"/>
 +        <check_box name="physics_use_hull" follows="left|top" width="130" left_pad="5" height="20" label="Use Convex Hull"/>
 +        -->
 +     </panel>
 +
 +
 +      <!-- PHYSICS ANALYSIS-->
 +      <panel
 +       follows="top|left"
 +       name="physics analysis"
 +       top_pad="0"
 +       left="0"
 +       width="300"
 +       height="130"
 +       visible="true"
 +       border="true"
 +       bevel_style="none" bg_alpha_color="0 0 0 0" bg_opaque_color="0 0 0 0.3">
 +
 +        <text follows="left|top" bottom="40" height="30" left="10" font="SansSerifBig">
 +          Step 1: Analysis
 +        </text>
 +        
 +        <text top_pad="5" width="50" follows="top|left" height="15">
 +          Method:
 +        </text>
 +        <combo_box name="Method" follows="top|left" left_pad="5" bottom_delta="2" height="20" width="80"/>
 +        <text left="160" bottom_delta="-2" width="50" follows="top|left" height="15">
 +          Quality:
 +        </text>
 +        <combo_box name="Decompose Quality" bottom_delta="2" follows="top|left" left_pad="5" height="20" width="80"/>
 +
 +        <slider name="Smooth" left="10" width="280" follows="top|left" top_pad="10" height="20" label="Smooth:"/>
 +
 +        <check_box name="Close Holes (Slow)" follows="top|left" top_pad="10" height="15" label="Close Holes (slow)"/>
 +                
 +        <button left="200" bottom_delta="0" width="90" follows="top|left" label="Analyze" name="Decompose" height="20"/>
 +        <button left="200" bottom_delta="0" width="90" follows="top|left" label="Cancel" name="decompose_cancel" visble="false" height="20"/>
 +      </panel>
 +      
 +
 +      <!-- PHYSICS SIMPLIFICATION -->
 +     <panel
 +       follows="top|left"
 +       name="physics simplification"
 +       left="0"
 +       top_pad="0"
 +       width="300"
 +       height="150"
 +       visible="true"
 +       border="true"
 +       bevel_style="none" bg_alpha_color="0 0 0 0" bg_opaque_color="0 0 0 0.3">
 +
 +        <text follows="left|top" bottom="40" height="30" left="10" font="SansSerifBig">
 +          Step 2: Simplification
 +        </text>
 +
 +        <text left="10" top_pad="5" height="15" width="140" follows="top|left">
 +          Method:
 +        </text>
 +        
 +        <combo_box left_pad="5" height="20" width="120" follows="top|left" name="Simplify Method"/>
 +
 +        <slider left="10" name="Combine Quality" label="Passes:" label_width="120" width="270" follows="top|left" top_pad="10" height="20"/>
 +        <slider name="Detail Scale" label="Detail Scale:" label_width="120" width="270" follows="top|left" top_pad="10" height="20"/>
 +        <slider name="Retain%" label="Retain:" label_width="120" width="270" follows="top|left" bottom_delta="0" left_delta="0" visible="false" height="20"/>
 +        <button left="190" width="90" follows="top|left" label="Simplify" name="Simplify" height="20"/>
 +        <button left="190" bottom_delta="0" width="90" follows="top|left" label="Cancel" name="simplify_cancel" height="20"/>
 +        
 +      </panel>
 +
 +      <!-- INFO PANEL -->
 +      <panel
 +        left="0"
 +        top_pad="0"
 +        width="300"
 +        height="100"
 +        follows="left|top"
 +        name="physics info"
 +        visible="true"
 +        border="true" 
 +        bevel_style="none" bg_alpha_color="0 0 0 0" bg_opaque_color="0 0 0 0.3">
 +
 +        <slider name="physics_explode" follows="top|left" top="10" left="10" label="Preview Spread:" min_val="0.0" max_val="3.0" height="20" width="280"/>
 +        
 +        <text follows="top|left" name="physics_triangles" top_pad="10" height="15" left="10">
 +          Triangles: [TRIANGLES]
 +        </text>
 +        <text follows="top|left" name="physics_points" top_pad="5" height="15">
 +          Vertices: [POINTS]
 +        </text>
 +        <text follows="top|left" name="physics_hulls" top_pad="5" height="15">
 +          Hulls: [HULLS]
 +        </text>
 +
 +
 +      </panel>
 +    </panel>
 +
 +    <!-- MODIFIERS PANEL -->
 +    <panel
 +      border="true"
 +      label="Modifiers"
 +      name="modifiers_panel">
 +      <text left="10" width="90" bottom="30" follows="top|left" height="15">
 +        Scale:
 +      </text>
 +      <text left_pad="5" width="140" follows="top|left" height="15">
 +        Dimensions:
 +      </text>
 +
 +      <spinner left="10" height="20" follows="top|left" width="80" top_pad="5" value="1.0" min_val="0.01" max_val="64.0" name="import_scale"/>
 +
 +      <text left_pad="20" height="15" name="import_dimensions" follows="top|left">
 +        [X] x [Y] x [Z] m
 +      </text>
 +
 +      <text left="10" top_pad="20" follows="top|left" height="15">
 +        Include:
 +      </text>
 +
 +      <check_box top_pad="5" name="upload_textures" height="15" follows="top|left" label="Textures"/>
 +      <check_box top_pad="5" name="upload_skin" height="15" follows="top|left" label="Skin weight"/>
 +      <check_box top_pad="5" left="20" name="upload_joints" height="15" follows="top|left" label="Joint positions"/>
 +
 +      <text left="10" top_pad="4" width="90" bottom="30" follows="top|left" height="15">
 +        Pelvis Z Offset:
 +      </text>
 +
 +      <spinner left="10" top_pad="4" height="20" follows="top|left" width="80" value="0.0" min_val="-3.00" max_val="3.0" name="pelvis_offset"/>
 +
 +    </panel>
 +  </tab_container>
 +  
 +  <!--
 +  <button bottom_delta="0" left="10" width="120" name="auto fill" label="Generate LOD" tool_tip="Automatically generate levels of detail"/>
 +  <button bottom_delta="0" left="140" width="120" name="smooth normals" label="Generate Normals" tool_tip="Regenerate normals based on mesh shape"/>
 +  <button bottom_delta="0" left="260" width="120" name="consolidate" label="Consolidate" tool_tip="Combine similar submeshes (reduces number of submeshes)"/>
 +  <button bottom_delta="30" left="260" width="120" name="scrub materials" label="Scrub Materials" tool_tip="Remove all material information (clear textures, set all colors to white)."/>
 +  
 +  <spinner bottom_delta="0" left="140" width="120" height="16" initial_value="75" label_width="60" name="edge threshold" decimal_digits="0" min_val="0" max_val="180" increment="5" label="Hard Angle" tool_tip="Maximum angle that will be smoothed between triangles when using Generate Normals"/>
 +
 +  <text bottom_delta="30" follows="top|left" height="15" left="10" name="high_lod_label">
 +    High LOD:
 +  </text>
 +  <combo_box bottom_delta="0" left="97" follows="left|top" height="18" 
 +             name="high detail combo" width="100" tool_tip="Specify mesh for this level of detail">
 +    <combo_item name="high none" value="none">
 +      None
 +    </combo_item>
 +    <combo_item name="high choose file" value="file">
 +      Choose File...
 +    </combo_item>
 +    <combo_item name="high triangle limit" value="limit">
 +      Triangle Limit
 +    </combo_item>
 +  </combo_box>
 +  <spinner bottom_delta="-5" left="200" width="120"  name="high limit" decimal_digits="0" increment="1" min_val="0" max_val="100" tool_tip="Triangle budget for this LOD"/>
 +  <text bottom_delta="25" follows="top|left" height="15" left="10" name="high info" width="300">
 +    [TRIANGLES] Triangles, [VERTICES] Vertices, [SUBMESHES] Submeshes.  
 +    [MESSAGE]
 +  </text>
 +
 +  <text bottom_delta="35" follows="top|left" height="15" left="10" name="medium_lod_label">
 +    Medium LOD:
 +  </text>
 +  <combo_box bottom_delta="0" left="97" follows="left|top" height="18"
 +             name="medium detail combo" width="100" tool_tip="Specify mesh for this level of detail">
 +    <combo_item name="medium none" value="none">
 +      None
 +    </combo_item>
 +    <combo_item name="medium choose file" value="file">
 +      Choose File...
 +    </combo_item>
 +    <combo_item name="medium triangle limit" value="limit">
 +      Triangle Limit
 +    </combo_item>
 +  </combo_box>
 +  <spinner bottom_delta="-5" left="200" width="120"  name="medium limit" decimal_digits="0" increment="1" min_val="0" max_val="100" tool_tip="Triangle budget for this LOD"/>
 +  <text bottom_delta="25" follows="top|left" height="15" left="10" name="medium info" width="300">
 +    [TRIANGLES] Triangles, [VERTICES] Vertices, [SUBMESHES] Submeshes.  
 +    [MESSAGE]
 +  </text>
 +
 +  <text bottom_delta="35" follows="top|left" height="15" left="10" name="low_lod_label">
 +    Low LOD:
 +  </text>
 +  <combo_box bottom_delta="0" left="97" follows="left|top" height="18" 
 +             name="low detail combo" width="100" tool_tip="Specify mesh for this level of detail">
 +    <combo_item name="low none" value="none">
 +      None
 +    </combo_item>
 +    <combo_item name="low choose file" value="file">
 +      Choose File...
 +    </combo_item>
 +    <combo_item name="low triangle limit" value="limit">
 +      Triangle Limit
 +    </combo_item>
 +  </combo_box>
 +  <spinner bottom_delta="-5" left="200" width="120"  name="low limit" decimal_digits="0" increment="1" min_val="0" max_val="100" tool_tip="Triangle budget for this LOD"/>
 +  <text bottom_delta="25" follows="top|left" height="15" left="10" name="low info" width="300">
 +    [TRIANGLES] Triangles, [VERTICES] Vertices, [SUBMESHES] Submeshes
 +    [MESSAGE]
 +  </text>
 +
 +  <text bottom_delta="35" follows="top|left" height="15" left="10" name="lowest_lod_label">
 +    Lowest LOD:
 +  </text>
 +  <combo_box bottom_delta="0" left="97" follows="left|top" height="18" 
 +             name="lowest detail combo" width="100" tool_tip="Specify mesh for this level of detail">
 +    <combo_item name="lowest none" value="none">
 +      None
 +    </combo_item>
 +    <combo_item name="lowest choose file" value="file">
 +      Choose File...
 +    </combo_item>
 +    <combo_item name="lowest triangle limit" value="limit">
 +      Triangle Limit
 +    </combo_item>
 +  </combo_box>
 +  <spinner bottom_delta="-5" left="200" width="120"  name="lowest limit" decimal_digits="0" increment="1" min_val="0" max_val="100" tool_tip="Triangle budget for this LOD"/>
 +  <text bottom_delta="25" follows="top|left" height="15" left="10" name="lowest info" width="300">
 +    [TRIANGLES] Triangles, [VERTICES] Vertices, [SUBMESHES] Submeshes
 +    [MESSAGE]
 +  </text>
 +
 +  <text bottom_delta="35" follows="top|left" height="15" left="10" name="physics_lod_label">
 +    Physical Shape:
 +  </text>
 +  <combo_box bottom_delta="0" left="97" follows="left|top" height="18"
 +             name="physics detail combo" width="100">
 +    <combo_item name="physics none" value="none">
 +      None
 +    </combo_item>
 +    <combo_item name="physics choose file" value="file">
 +      Choose File...
 +    </combo_item>
 +    <combo_item name="physics triangle limit" value="limit">
 +      Triangle Limit...
 +    </combo_item>
 +  </combo_box>
 +  <spinner bottom_delta="-5" left="200" width="90"  name="physics limit" decimal_digits="0" increment="1" min_val="0" max_val="100" tool_tip="Triangle budget for this LOD"/>
 +  <button bottom_delta="0" left="290" width="30" follows="left|top" height="20" label=">>" 
 +          name="decompose_btn" tool_tip="Create convex decomposition."/>
 +  <text bottom_delta="25" follows="top|left" height="15" left="10" name="physics info" width="300">
 +    [TRIANGLES] Triangles, [HULLS] Hulls, [POINTS] Points
 +  </text>
 +
 +  <text bottom_delta="25" follows="top|left" height="15" left="10" name="include label" width="300">
 +    Include:
 +  </text>
 +
 +  <check_box bottom_delta="20" follow="bottom|left" height="20" label="Textures"
 +             left="15" width="125" name="upload_textures" tool_tip="Upload associated textures "/>
 +
 +  <check_box bottom_delta="20" follow="bottom|left" height="20" label="Skin Weights"
 +             left="15" width="125" name="upload_skin" tool_tip="Upload vertex skin weighting information."/>
 +
 +  <check_box bottom_delta="20" follow="bottom|left" height="20" label="Joint Positions"
 +             left="15" width="125" name="upload_joints" tool_tip="Upload joint position information (will override avatar joint positions when mesh is worn)."/>
 +
 +  
 +	<button bottom_delta="25" follows="bottom|left" height="20" label="Upload"
 +	     left="15" name="ok_btn" width="125" tool_tip="Upload to simulator"/>
 +
 +  <text bottom_delta="20" left="15" width="280" follows="top|left" height="15" name="description_label" text_color="1 0.82 0.46 1">
 +	  (No charge for upload during First Look)
 +	</text>
 +  <text bottom_delta="20" left="15" width="280" follows="top|left" height="15" name="upload_message">
 +    [MESSAGE]
 +  </text>
 +  
 +  <spinner bottom_delta="20" label="Scale" left="15" width="120"  name="debug scale" decimal_digits="3" increment="0.1" min_val="0" max_val="64" initial_value="1" tool_tip="Multiplier for incoming object scale.  If incoming dimensions are very small or very large, modify this value to get dimensions into an acceptable range."/>
 +  <text bottom_delta="30" left="15" width="280" follows="top|left" height="15" name="dimensions">
 +    Model Dimensions: [X]m x [Y]m x [Z]m
 +  </text>
 +  -->
 +</floater>
 diff --git a/indra/newview/skins/default/xui/en/floater_model_wizard.xml b/indra/newview/skins/default/xui/en/floater_model_wizard.xml index 92d57b20be..6c0fffa60e 100644 --- a/indra/newview/skins/default/xui/en/floater_model_wizard.xml +++ b/indra/newview/skins/default/xui/en/floater_model_wizard.xml @@ -1,1039 +1,1039 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater - legacy_header_height="18" - layout="topleft" - name="Model Wizard" - help_topic="model_wizard" - bg_opaque_image_overlay="0.5 0.5 0.5 1" - height="480" - save_rect="true" - title="UPLOAD MODEL WIZARD" - width="535"> -	<button -	 top="32" -	 tab_stop="false" -	 left="410" -	 height="32" -	 name="upload_btn" -	 enabled="false" -	 label="5. Upload" -	 border="false" -	 image_unselected="BreadCrumbBtn_Right_Off" -	 image_selected="BreadCrumbBtn_Right_Press" -	 image_hover_unselected="BreadCrumbBtn_Right_Over" -	 image_disabled="BreadCrumbBtn_Right_Disabled" -	 image_disabled_selected="BreadCrumbBtn_Right_Disabled" -	 width="110"> -		<button.commit_callback -		function="Wizard.Upload"/> -	</button> -	<button -	 top="32" -	 left="310" -	 height="32" -	 tab_stop="false" -	 name="review_btn" -	 label="4. Review" -	 enabled="false" -	 border="false" -	 image_unselected="BreadCrumbBtn_Middle_Off" -	 image_selected="BreadCrumbBtn_Middle_Press" -	 image_hover_unselected="BreadCrumbBtn_Middle_Over" -	 image_disabled="BreadCrumbBtn_Middle_Disabled" -	 image_disabled_selected="BreadCrumbBtn_Middle_Disabled" -	 width="110"> -		<button.commit_callback -		function="Wizard.Review"/> -	</button> -	<button -	 top="32" -	 left="210" -	 height="32" -	 name="physics2_btn" -	 label="3. Physics" -	 tab_stop="false" -	 enabled="false" -	 border="false" -	 image_unselected="BreadCrumbBtn_Middle_Off" -	 image_selected="BreadCrumbBtn_Middle_Press" -	 image_hover_unselected="BreadCrumbBtn_Middle_Over" -	 image_disabled="BreadCrumbBtn_Middle_Disabled" -	 image_disabled_selected="BreadCrumbBtn_Middle_Disabled" -	 width="110"> -		<button.commit_callback -		function="Wizard.Physics2"/> -	</button> -	<button -	 top="32" -	 left="210" -	 height="32" -	 name="physics_btn" -	 label="3. Physics" -	 tab_stop="false" -	 enabled="false" -	 border="false" -	 image_unselected="BreadCrumbBtn_Middle_Off" -	 image_selected="BreadCrumbBtn_Middle_Press" -	 image_hover_unselected="BreadCrumbBtn_Middle_Over" -	 image_disabled="BreadCrumbBtn_Middle_Disabled" -	 image_disabled_selected="BreadCrumbBtn_Middle_Disabled" -	 width="110"> -		<button.commit_callback -		function="Wizard.Physics"/> -	</button> -	<button -	 top="32" -	 left="115" -	 name="optimize_btn" -	 label="2. Optimize" -	 tab_stop="false" -	 height="32" -	 border="false" -	 image_unselected="BreadCrumbBtn_Middle_Off" -	 image_selected="BreadCrumbBtn_Middle_Press" -	 image_hover_unselected="BreadCrumbBtn_Middle_Over" -	 image_disabled="BreadCrumbBtn_Middle_Disabled" -	 image_disabled_selected="BreadCrumbBtn_Middle_Disabled" -	 width="110"> -		<button.commit_callback -		function="Wizard.Optimize"/> -	</button> -	<button -	 top="32" -	 left="15" -	 name="choose_file_btn" -	 tab_stop="false" -	 enabled="false" -	 label="1. Choose File" -	 height="32" -	 image_unselected="BreadCrumbBtn_Left_Off" -	 image_selected="BreadCrumbBtn_Left_Press" -	 image_hover_unselected="BreadCrumbBtn_Left_Over" -	 image_disabled="BreadCrumbBtn_Left_Disabled" -	 image_disabled_selected="BreadCrumbBtn_Left_Disabled" -	 width="110"> -		<button.commit_callback -		function="Wizard.Choose"/> -	</button> -	<panel -		 height="388" -		 top_pad="0" -		 name="choose_file_panel" -		 visible="false" -		 width="535" -		 left="0"> -		<panel -		 height="22" -		 top_pad="15" -		 width="505" -		 name="header_panel" -		 bg_opaque_color="DkGray2" -		 background_visible="true" -		 background_opaque="true" -		 left="15"> -			<text -			 width="200" -			 left="10" -			 top="3" -			 name="header_text" -			 text_color="White" -			 height="10" -			 font="SansSerifBig" -			 layout="topleft"> -				Upload Model -			</text> -		</panel> -		<text -		 top_pad="14" -		 width="460" -		 height="20" -		 name="description" -		 font="SansSerifSmall" -		 layout="topleft" -		 word_wrap="true" -		 left_delta="5"> -			This wizard will help you import mesh models to Second Life.  First specify a file containing the model you wish to import.  Second Life supports COLLADA (.dae) files. -		</text> -		<panel -		 top_delta="40" -		 left="15" -		 height="270" -		 width="505" -		 name="content" -		 bg_opaque_color="DkGray2" -		 background_visible="true" -		 background_opaque="true"> -			<text -			 type="string" -			 length="1" -			 text_color="White"  -			 follows="left|top" -			 top="10" -			 height="10" -			 layout="topleft" -			 left_delta="10" -			 name="Cache location" -			 width="300"> -				Filename: -			</text> -			<line_editor -			 border_style="line" -			 border_thickness="1" -			 follows="left|top" -			 font="SansSerifSmall" -			 height="20" -			 layout="topleft" -			 left_delta="0" -			 max_length="4096" -			 name="lod_file" -			 top_pad="5" -			 width="220" /> -			<button -			 follows="left|top" -			 height="23" -			 label="Browse..." -			 label_selected="Browse..." -			 layout="topleft" -			 left_pad="5" -			 name="browse" -			 top_delta="-1" -			 width="85"> -			</button> -			<text -			 top_delta="-15" -			 width="200" -			 height="15" -			 font="SansSerifSmall" -			 layout="topleft" -			 text_color="White" -			 left_pad="19"> -				Model Preview: -			</text> -			<!-- Placeholder panel for 3D preview render --> -			<panel -			 left_delta="0" -			 top_pad="0" -			 name="preview_panel" -			 bevel_style="none" -			 highlight_light_color="0.09 0.09 0.09 1" -			 border="true" -			 height="150" -			 follows="all" -			 width="150"> -			</panel> -			<text -			 top_pad="10" -			 width="130" -			 height="14" -			 left="340" -			 text_color="White" -			 word_wrap="true"> -				Dimensions (meters): -			</text> -			<text -			 top_pad="0" -			 width="160" -			 height="15" -			 font="SansSerifSmallBold"  -			 text_color="White" -			 name="dimensions" -			 left_delta="0"> -				X:         Y:         Z:  -			</text> -			<text -			 top_delta="0" -			 width="160" -			 height="15" -			 name="dimension_dividers" -			 left_delta="41"> -				 |               |    -			</text> -			<text -			 top_delta="0" -			 width="160" -			 height="15" -			 name="dimension_x" -			 left="356"/> -			<text -			 top_delta="0" -			 width="160" -			 height="15" -			 name="dimension_y" -			 left="403"/> -			<text -			 top_delta="0" -			 width="160" -			 height="15" -			 name="dimension_z" -			 left="450"/> -			<text -			 top="100" -			 width="320" -			 height="15" -			 left="10" -			 text_color="White"  -			 word_wrap="true"> -				Note: -			</text> -			<text -			 top_pad="0" -			 width="320" -			 height="40" -			 left="10" -			 word_wrap="true"> -Advanced users familiar with 3d content creation tools may prefer to use the [secondlife:///app/floater/upload_model Advanced Mesh Import Window] . -			</text> -		</panel> -	</panel> - - -	<panel -		 height="388" -		 top_delta="0" -		 name="optimize_panel" -		 visible="false" -		 width="535" -		 left="0"> -		<panel -		 height="22" -		 top_pad="15" -		 name="header_panel" -		 width="505" -		 bg_opaque_color="DkGray2" -		 background_visible="true" -		 background_opaque="true" -		 left="15"> -			<text -			 width="200" -			 left="10" -			 name="header_text" -			 top="3" -			 text_color="White" -			 height="10" -			 font="SansSerifBig" -			 layout="topleft"> -				Optimize -			</text> -		</panel> -		<text -		 top_pad="14" -		 width="460" -		 height="20" -		 font="SansSerifSmall" -		 layout="topleft" -		 name="description" -		 word_wrap="true" -		 left_delta="5"> -			This wizard has optimized your model to improve performance. You may adjust the results of the optimization process bellow or click Next to continue. -		</text> -		<panel -		 top_delta="40" -		 visible="false" -		 left="15" -		 height="270" -		 width="505" -		 name="content" -		 bg_opaque_color="DkGray2" -		 background_visible="true" -		 background_opaque="true"> -			<text -			 top="20" -			 width="300" -			 height="12" -			 font="SansSerifBold" -			 left="112">Generating Level of Detail</text> -			<progress_bar -			  name="optimize_progress_bar" -              image_fill="model_wizard\progress_light.png" -			  color_bg="1 1 1 1" -			  color_bar="1 1 1 0.96" -			  follows="left|right|top" -			  width="260" -			  height="16" -			  image_bar="model_wizard\progress_bar_bg.png" -			  top_pad="14" -			  left="110"/> -			<icon -			 top_pad="10" -			 left_delta="0" -			 width="13" -			 height="12" -			 image_name="model_wizard\check_mark.png"/> -			<text -			 top_delta="0" -			 left_delta="18" -			 name="high_detail_text" -			 width="200" -			 height="14">Generate Level of Detail: High</text> -			<icon -			 top_pad="10" -			 left_delta="-18" -			 width="13" -			 height="12" -			 image_name="model_wizard\check_mark.png"/> -			<text -			 top_delta="0" -			 left_delta="18" -			 name="medium_detail_text" -			 width="200" -			 height="14">Generate Level of Detail: Medium</text> -			<icon -			 top_pad="10" -			 left_delta="-18" -			 width="13" -			 height="12" -			 image_name="model_wizard\check_mark.png"/> -			<text -			 top_delta="0" -			 left_delta="18" -			 name="low_detail_text" -			 width="200" -			 height="14">Generate Level of Detail: Low</text> -			<icon -			 top_pad="10" -			 left_delta="-18" -			 width="13" -			 height="12" -			 image_name="model_wizard\check_mark.png"/> -			<text -			 top_delta="0" -			 left_delta="18" -			 name="lowest_detail_text" -			 width="200" -			 height="14">Generate Level of Detail: Lowest</text> -		</panel> -		<panel -				 top_delta="0" -				 left_delta="0" -				 height="270" -				 width="505" -				 name="content2" -				 bg_opaque_color="DkGray2" -				 background_visible="true" -				 background_opaque="true"> -			<text top="10" left="10" width="85" text_color="White" follows="left|top" height="15" name="lod_label"> -				Model Preview: -			</text> -			<combo_box left_pad="5" top_delta="-5"  follows="left|top" list_position="below" height="22" -	     name="preview_lod_combo2" width="90" tool_tip="LOD to view in preview render"> -				<combo_item name="high"> -					High -				</combo_item> -				<combo_item name="medium"> -					Medium -				</combo_item> -				<combo_item name="low"> -					Low -				</combo_item> -				<combo_item name="lowest"> -					Lowest -				</combo_item> -			</combo_box> -			<panel -				 left="10" -				 top_pad="5" -				 name="preview_panel" -				 bevel_style="none" -				 highlight_light_color="0.09 0.09 0.09 1" -				 border_style="line" -				 border="true" -				 height="185" -				 follows="all" -				 width="185"> -			</panel> -			<text top="45" left="214" text_color="White" font="SansSerifSmallBold" halign="center" width="110" height="30" wrap="true">Higher Performance</text> -			<text top="75" left="204" halign="center" width="130" word_wrap="true"   font="SansSerifSmall" height="80">Faster rendering but less detailed; lowers Resource (prim) cost.</text> -			<text top="45" left="378" text_color="White" font="SansSerifSmallBold" halign="center" width="90" height="30" wrap="true">Higher Accuracy</text> -			<text top="75" left="364" halign="center" width="130" word_wrap="true"   font="SansSerifSmall" height="80">More detailed model but slower; increases Resource (prim) cost.</text> - -			<slider -		   follows="left|top" -		   height="20" -		   increment="1" -		   layout="topleft" -		   left="204" -		   max_val="3" -		   initial_value="2" -		   min_val="0" -		   name="accuracy_slider" -		   show_text="false" -		   top="130" -		   width="290" /> -			<text  -			font="SansSerifSmall"  -			top_pad="0"   -			width="300"  -			left_delta="6"  -			height="4">'   -      </text> - - -			<icon -				 top_pad="14" -				 left_delta="0" -				 width="280" -				 height="2" -				 image_name="model_wizard\divider_line.png"/> -	 -			<text top_delta="20" width="200" text_color="White" left_delta="50" name="streaming cost"  height="20">Resource Cost:    [COST]</text> -			<text -						 top_pad="15" -						 width="130" -						 height="14" -						 left="10" -						 text_color="White" -						 word_wrap="true"> -				Dimensions (meters): -			</text> -			<text -			 top_pad="0" -			 width="160" -			 height="15" -			 font="SansSerifSmallBold" -			 text_color="White" -			 name="dimensions" -			 left_delta="0"> -				X:         Y:         Z: -			</text> -			<text -			 top_delta="0" -			 width="160" -			 height="15" -			 name="dimension_dividers" -			 left_delta="41"> -				|               | -			</text> -			<text -			 top_delta="0" -			 width="160" -			 height="15" -			 name="dimension_x" -			 left_delta="-25"/> -			<text -			 top_delta="0" -			 width="160" -			 height="15" -			 name="dimension_y" -			 left_delta="46"/> -			<text -			 top_delta="0" -			 width="160" -			 height="15" -			 name="dimension_z" -			 left_delta="46"/> -		</panel> -	</panel> - -	<panel -		 height="388" -		 top_delta="0" -		 name="physics_panel" -		 visible="false" -		 width="535" -		 left="0"> -		<panel -		 height="22" -		 top_pad="15" -		 name="header_panel" -		 width="505" -		 bg_opaque_color="DkGray2" -		 background_visible="true" -		 background_opaque="true" -		 left="15"> -			<text -			 width="200" -			 left="10" -			 name="header_text" -			 top="3" -			 height="10" -			 font="SansSerifBig" -			 text_color="White"  -			 layout="topleft"> -				Physics -			</text> -		</panel> -		<text -		 top_pad="10" -		 width="474" -		 height="50" -		 font="SansSerifSmall" -		 layout="topleft" -		 name="description" -		 word_wrap="true" -		 left_delta="5"> -			The wizard will create a physical shape, which determines how the object interacts with other objects and avatars. Set the slider to the detail level most appropriate for how your object will be used: -		</text> -    <panel -		 top_delta="44" -		 left="15" -		 height="270" -		 width="505" -		 name="content" -		 bg_opaque_color="DkGray2" -		 background_visible="true" -		 background_opaque="true"> -      <text top="25" left="30" text_color="White" font="SansSerifSmallBold" width="300" height="4">Performance</text> -      <text top="45" left="10" halign="center" width="130" word_wrap="true"   font="SansSerifSmall" height="80">Faster rendering but less detailed; lowers Resource (prim) cost.</text> -      <text top="25" left="390" text_color="White" font="SansSerifSmallBold" width="300" height="4">Accuracy</text> -      <text top="45" left="360" halign="center" width="130" word_wrap="true"   font="SansSerifSmall" height="80">More detailed model but slower; increases Resource (prim) cost.</text> - -      <slider -		   follows="left|top" -		   height="22" -		   increment=".1" -		   layout="topleft" -		   left="20" -		   max_val="1" -		   initial_value="0.5" -		   min_val="0" -		   name="physics_slider" -		   show_text="false" -		   top="90" -		   width="440" /> -      <text -			font="SansSerifSmall" -			top_pad="0" -			width="500" -			left_delta="6" -			height="4">'             '             '             '             '              '             '             '             '              '             '</text> -      <text top_pad="10" width="110" halign="center" word_wrap="true" left="25"  height="40">Recommended for solid objects</text> -      <text top_delta="0" width="110" halign="center" word_wrap="true" left="190"  height="40">Recommended for buildings</text> -      <text top_delta="0" width="110" halign="center" word_wrap="true" left="350"  height="40">Recommended for vehicles</text> - - -		<icon -			 top_pad="5" -			 left="15" -			 width="470" -			 height="2" -			 image_name="model_wizard\divider_line.png"/> -		 -	<text top_delta="30" width="180" text_color="White" left="160" name="streaming cost"  height="20">Resource Cost:       [COST]</text> -  -    </panel> -	</panel> - -	<panel -		 height="388" -		 top_delta="0" -		 name="physics2_panel" -		 visible="true" -		 width="535" -		 left="0"> -		<panel -		 height="22" -		 top_pad="15" -		 name="header_panel" -		 width="505" -		 bg_opaque_color="DkGray2" -		 background_visible="true" -		 background_opaque="true" -		 left="15"> -			<text -			 width="200" -			 left="10" -			 name="header_text" -			 text_color="White" -			 top="3" -			 height="10" -			 font="SansSerifBig" -			 layout="topleft"> -				Physics -			</text> -		</panel> -		<text -		 top_pad="14" -		 width="475" -		 height="50" -		 font="SansSerifSmall" -		 layout="topleft" -		 name="description" -		 word_wrap="true" -		 left_delta="5"> -			Preview the physics shape below then click Next to continue.  To modify the physics shape, click the Back button. -		</text> -		<panel -			 top_delta="40" -			 left="15" -			 height="270" -			 width="505" -			 name="content" -			 bg_opaque_color="DkGray2" -			 background_visible="true" -			 background_opaque="true"> -			<text top="10" left="10" width="85" text_color="White" follows="left|top" height="15" name="lod_label"> -				Model Preview: -			</text> -			<combo_box left_pad="5" top_delta="-5"  follows="left|top" list_position="below" height="22" -			   name="preview_lod_combo3" width="90" tool_tip="LOD to view in preview render"> -				<combo_item name="high"> -					High -				</combo_item> -				<combo_item name="medium"> -					Medium -				</combo_item> -				<combo_item name="low"> -					Low -				</combo_item> -				<combo_item name="lowest"> -					Lowest -				</combo_item> -			</combo_box> -			<panel -					   left="10" -					   top_pad="10" -					   name="preview_panel" -					   bevel_style="none" -					   highlight_light_color="0.09 0.09 0.09 1" -					   border_style="line" -					   border="true" -					   height="190" -					   follows="all" -					   width="190"> -			</panel> -			<text -						 top_pad="8" -						 width="130" -						 height="14" -						 left="10" -						 text_color="White" -						 word_wrap="true"> -				Dimensions (meters): -			</text> -			<text -			 top_pad="0" -			 width="160" -			 height="15" -			 font="SansSerifSmallBold" -			 text_color="White" -			 name="dimensions" -			 left_delta="0"> -				X:         Y:         Z: -			</text> -			<text -			 top_delta="0" -			 width="160" -			 height="15" -			 name="dimension_dividers" -			 left_delta="41"> -				|               | -			</text> -			<text -			 top_delta="0" -			 width="160" -			 height="15" -			 name="dimension_x" -			 left_delta="-25"/> -			<text -			 top_delta="0" -			 width="160" -			 height="15" -			 name="dimension_y" -			 left_delta="46"/> -			<text -			 top_delta="0" -			 width="160" -			 height="15" -			 name="dimension_z" -			 left_delta="46"/> -			<text top="60" width="180" text_color="White" left="225" name="streaming cost"  height="20">Resource Cost:       [COST]</text> -		</panel> -	</panel> - -	<panel -		 height="388" -		 top_delta="0" -		 name="review_panel" -		 visible="false" -		 width="535" -		 left="0"> -		<panel -		 height="22" -		 top_pad="15" -		 name="header_panel" -		 width="505" -		 bg_opaque_color="DkGray2" -		 background_visible="true" -		 background_opaque="true" -		 left="15"> -			<text -			 width="200" -			 left="10" -			 name="header_text" -			 text_color="White"  -			 top="3" -			 height="10" -			 font="SansSerifBig" -			 layout="topleft"> -				Review -			</text> -		</panel> -		<text -		 top_pad="14" -		 width="470" -		 height="24" -		 font="SansSerifSmall" -		 layout="topleft" -		 name="description" -		 word_wrap="true" -		 left_delta="5"> -			Review the details below then click. Upload to upload your model. Your L$ balance will be charged when you click Upload. -		</text> -		<icon -			 top_pad="10" -			 left="20" -			 width="495" -			 height="2" -			 image_name="model_wizard\divider_line.png"/> -    <panel -		 top_pad="5" -		 left="15" -		 height="270" -		 width="505" -		 name="content"> -      <text top="10" left="10" width="85" text_color="White" follows="left|top" height="15" name="lod_label"> -        Model Preview: -      </text> -      <combo_box left_pad="5" top_delta="-5"  follows="left|top" list_position="below" height="22" -	     name="preview_lod_combo" width="90" tool_tip="LOD to view in preview render"> -        <combo_item name="high"> -          High -        </combo_item> -        <combo_item name="medium"> -          Medium -        </combo_item> -        <combo_item name="low"> -          Low -        </combo_item> -        <combo_item name="lowest"> -          Lowest -        </combo_item> -      </combo_box> -      <panel -				 left="10" -				 top_pad="10" -				 name="preview_panel" -				 bevel_style="none" -				 highlight_light_color="0.09 0.09 0.09 1" -				 border_style="line" -				 border="true" -				 height="190" -				 follows="all" -				 width="190"> -			</panel> -		<text -					 top_pad="8" -					 width="130" -					 height="14" -					 left="10" -					 text_color="White" -					 word_wrap="true"> -			Dimensions (meters): -		</text> -		<text -		 top_pad="0" -		 width="160" -		 height="15" -		 font="SansSerifSmallBold" -		 text_color="White" -		 name="dimensions" -		 left_delta="0"> -			X:         Y:         Z: -		</text> -		<text -		 top_delta="0" -		 width="160" -		 height="15" -		 name="dimension_dividers" -		 left_delta="41"> -			|               | -		</text> -		<text -		 top_delta="0" -		 width="160" -		 height="15" -		 name="dimension_x" -		 left_delta="-25"/> -		<text -		 top_delta="0" -		 width="160" -		 height="15" -		 name="dimension_y" -		 left_delta="46"/> -		<text -		 top_delta="0" -		 width="160" -		 height="15" -		 name="dimension_z" -		 left_delta="46"/> -      </panel> -    <text -      width="300" -      height="12" -      top="125"  -	  name="streaming cost"  -      left="230"  -      font="SansSerifSmallBold"  -      text_color="White">Resource Cost:         [COST]</text> -    <text -      width="285" -      height="30" -      top_pad="0" -      left_delta="0" -      word_wrap="true" -      font="SansSerifItalic">This is the cost to your Region's prim/object limit, at default scale</text> -	<text -	 width="300" -	 height="12" -	 name="physics cost"  -	 top_pad="10" -		 left_delta="0" -	 font="SansSerifSmallBold" -	 text_color="White">Physics Cost:        [COST]</text> -	<text -	  width="285" -	  height="30" -	  top_pad="0" -		  left_delta="0" -	  word_wrap="true" -	  font="SansSerifItalic">This is the cost to your Region's prim/object limit, at default scale</text> -		<text -		 width="200" -		 height="12" -		 top_pad="10" -		left_delta="0" -		 font="SansSerifSmallBold" -		 text_color="White">Upload Fee:</text> -		<text -		  width="285" -		  height="26" -		  top_pad="0" -		  left_delta="0" -		  word_wrap="true" -		  font="SansSerifItalic">This is the amount the upload will cost.</text> -		<check_box -			height="16" -			layout="topleft" -			left_delta="0" -			name="confirm_checkbox" -			top_pad="15" -			width="16" /> -		<text -		  height="100" -		  width="240" -		  word_wrap="true"  -		  left_delta="25" -		  top_delta="0">I confirm that I have the appropriate rights to the material contained in this model. [secondlife:///app/floater/learn_more Learn more]</text> -	</panel> - - - - -	<panel -		 height="388" -		 top_delta="0" -		 name="upload_panel" -		 visible="false" -		 width="535" -		 left="0"> -		<panel -		 height="22" -		 top_pad="15" -		 name="header_panel" -		 width="505" -		 bg_opaque_color="DkGray2" -		 background_visible="true" -		 background_opaque="true" -		 left="15"> -			<text -			 width="200" -			 left="10" -			 name="header_text" -			 top="3" -			 text_color="White"  -			 height="10" -			 font="SansSerifBig" -			 layout="topleft"> -				Upload Complete! -			</text> -		</panel> -		<text -		 top_pad="14" -		 width="474" -		 height="20" -		 font="SansSerifSmall" -		 layout="topleft" -		 name="description" -		 word_wrap="true" -		 left_delta="5"> -			Congratulations! Your model has been sucessfully uploaded.  You will find the model in the Objects folder in your inventory. -		</text> -		<icon -			 top_pad="15" -			 left_delta="0" -			 width="495" -			 height="2" -			 image_name="model_wizard\divider_line.png"/> -	</panel> - - - -	<button -	 top="440" -	 right="-245" -	 width="90" -	 height="22" -	 name="back" -	 label="<< Back" /> -	<button -	 top_delta="0" -	 right="-150" -	 width="90" -	 height="22" -	 name="next" -	 label="Next >> " /> -	<button -	 top_delta="0" -	 right="-150" -	 width="90" -	 height="22" -	 visible="false"  -	 name="upload"  -	 tool_tip="Upload to simulator" -	 label="Upload" /> -	<button -	 top_delta="0" -	 right="-15" -	 width="90" -	 height="22" -	 name="cancel" -	 label="Cancel" /> -	<button -	 top_delta="0" -	 right="-15" -	 width="90" -	 height="22" -	 name="close" -	 visible="false"  -	 label="Close" /> -	<spinner visible="false" left="10" height="20" follows="top|left" width="80" top_pad="-50" value="1.0" min_val="0.01" max_val="64.0" name="import_scale"/> - -	<string name="status_idle">Idle</string> -	<string name="status_reading_file">Loading...</string> -	<string name="status_generating_meshes">Generating Meshes...</string> -  <string name="status_vertex_number_overflow">Error: Vertex number is more than 65534, aborted!</string> -	<string name="high">High</string> -	<string name="medium">Medium</string> -	<string name="low">Low</string> -	<string name="lowest">Lowest</string> -	<string name="mesh_status_good">Ship it!</string> -	<string name="mesh_status_na">N/A</string> -	<string name="mesh_status_none">None</string> -	<string name="mesh_status_submesh_mismatch">Levels of detail have a different number of textureable faces.</string> -	<string name="mesh_status_mesh_mismatch">Levels of detail have a different number of mesh instances.</string> -	<string name="mesh_status_too_many_vertices">Level of detail has too many vertices.</string> -	<string name="mesh_status_missing_lod">Missing required level of detail.</string> -	<string name="layer_all">All</string> -	<!-- Text to display in physics layer combo box for "all layers" --> - -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 +<floater
 + legacy_header_height="18"
 + layout="topleft"
 + name="Model Wizard"
 + help_topic="model_wizard"
 + bg_opaque_image_overlay="0.5 0.5 0.5 1"
 + height="480"
 + save_rect="true"
 + title="UPLOAD MODEL WIZARD"
 + width="535">
 +	<button
 +	 top="32"
 +	 tab_stop="false"
 +	 left="410"
 +	 height="32"
 +	 name="upload_btn"
 +	 enabled="false"
 +	 label="5. Upload"
 +	 border="false"
 +	 image_unselected="BreadCrumbBtn_Right_Off"
 +	 image_selected="BreadCrumbBtn_Right_Press"
 +	 image_hover_unselected="BreadCrumbBtn_Right_Over"
 +	 image_disabled="BreadCrumbBtn_Right_Disabled"
 +	 image_disabled_selected="BreadCrumbBtn_Right_Disabled"
 +	 width="110">
 +		<button.commit_callback
 +		function="Wizard.Upload"/>
 +	</button>
 +	<button
 +	 top="32"
 +	 left="310"
 +	 height="32"
 +	 tab_stop="false"
 +	 name="review_btn"
 +	 label="4. Review"
 +	 enabled="false"
 +	 border="false"
 +	 image_unselected="BreadCrumbBtn_Middle_Off"
 +	 image_selected="BreadCrumbBtn_Middle_Press"
 +	 image_hover_unselected="BreadCrumbBtn_Middle_Over"
 +	 image_disabled="BreadCrumbBtn_Middle_Disabled"
 +	 image_disabled_selected="BreadCrumbBtn_Middle_Disabled"
 +	 width="110">
 +		<button.commit_callback
 +		function="Wizard.Review"/>
 +	</button>
 +	<button
 +	 top="32"
 +	 left="210"
 +	 height="32"
 +	 name="physics2_btn"
 +	 label="3. Physics"
 +	 tab_stop="false"
 +	 enabled="false"
 +	 border="false"
 +	 image_unselected="BreadCrumbBtn_Middle_Off"
 +	 image_selected="BreadCrumbBtn_Middle_Press"
 +	 image_hover_unselected="BreadCrumbBtn_Middle_Over"
 +	 image_disabled="BreadCrumbBtn_Middle_Disabled"
 +	 image_disabled_selected="BreadCrumbBtn_Middle_Disabled"
 +	 width="110">
 +		<button.commit_callback
 +		function="Wizard.Physics2"/>
 +	</button>
 +	<button
 +	 top="32"
 +	 left="210"
 +	 height="32"
 +	 name="physics_btn"
 +	 label="3. Physics"
 +	 tab_stop="false"
 +	 enabled="false"
 +	 border="false"
 +	 image_unselected="BreadCrumbBtn_Middle_Off"
 +	 image_selected="BreadCrumbBtn_Middle_Press"
 +	 image_hover_unselected="BreadCrumbBtn_Middle_Over"
 +	 image_disabled="BreadCrumbBtn_Middle_Disabled"
 +	 image_disabled_selected="BreadCrumbBtn_Middle_Disabled"
 +	 width="110">
 +		<button.commit_callback
 +		function="Wizard.Physics"/>
 +	</button>
 +	<button
 +	 top="32"
 +	 left="115"
 +	 name="optimize_btn"
 +	 label="2. Optimize"
 +	 tab_stop="false"
 +	 height="32"
 +	 border="false"
 +	 image_unselected="BreadCrumbBtn_Middle_Off"
 +	 image_selected="BreadCrumbBtn_Middle_Press"
 +	 image_hover_unselected="BreadCrumbBtn_Middle_Over"
 +	 image_disabled="BreadCrumbBtn_Middle_Disabled"
 +	 image_disabled_selected="BreadCrumbBtn_Middle_Disabled"
 +	 width="110">
 +		<button.commit_callback
 +		function="Wizard.Optimize"/>
 +	</button>
 +	<button
 +	 top="32"
 +	 left="15"
 +	 name="choose_file_btn"
 +	 tab_stop="false"
 +	 enabled="false"
 +	 label="1. Choose File"
 +	 height="32"
 +	 image_unselected="BreadCrumbBtn_Left_Off"
 +	 image_selected="BreadCrumbBtn_Left_Press"
 +	 image_hover_unselected="BreadCrumbBtn_Left_Over"
 +	 image_disabled="BreadCrumbBtn_Left_Disabled"
 +	 image_disabled_selected="BreadCrumbBtn_Left_Disabled"
 +	 width="110">
 +		<button.commit_callback
 +		function="Wizard.Choose"/>
 +	</button>
 +	<panel
 +		 height="388"
 +		 top_pad="0"
 +		 name="choose_file_panel"
 +		 visible="false"
 +		 width="535"
 +		 left="0">
 +		<panel
 +		 height="22"
 +		 top_pad="15"
 +		 width="505"
 +		 name="header_panel"
 +		 bg_opaque_color="DkGray2"
 +		 background_visible="true"
 +		 background_opaque="true"
 +		 left="15">
 +			<text
 +			 width="200"
 +			 left="10"
 +			 top="3"
 +			 name="header_text"
 +			 text_color="White"
 +			 height="10"
 +			 font="SansSerifBig"
 +			 layout="topleft">
 +				Upload Model
 +			</text>
 +		</panel>
 +		<text
 +		 top_pad="14"
 +		 width="460"
 +		 height="20"
 +		 name="description"
 +		 font="SansSerifSmall"
 +		 layout="topleft"
 +		 word_wrap="true"
 +		 left_delta="5">
 +			This wizard will help you import mesh models to Second Life.  First specify a file containing the model you wish to import.  Second Life supports COLLADA (.dae) files.
 +		</text>
 +		<panel
 +		 top_delta="40"
 +		 left="15"
 +		 height="270"
 +		 width="505"
 +		 name="content"
 +		 bg_opaque_color="DkGray2"
 +		 background_visible="true"
 +		 background_opaque="true">
 +			<text
 +			 type="string"
 +			 length="1"
 +			 text_color="White" 
 +			 follows="left|top"
 +			 top="10"
 +			 height="10"
 +			 layout="topleft"
 +			 left_delta="10"
 +			 name="Cache location"
 +			 width="300">
 +				Filename:
 +			</text>
 +			<line_editor
 +			 border_style="line"
 +			 border_thickness="1"
 +			 follows="left|top"
 +			 font="SansSerifSmall"
 +			 height="20"
 +			 layout="topleft"
 +			 left_delta="0"
 +			 max_length="4096"
 +			 name="lod_file"
 +			 top_pad="5"
 +			 width="220" />
 +			<button
 +			 follows="left|top"
 +			 height="23"
 +			 label="Browse..."
 +			 label_selected="Browse..."
 +			 layout="topleft"
 +			 left_pad="5"
 +			 name="browse"
 +			 top_delta="-1"
 +			 width="85">
 +			</button>
 +			<text
 +			 top_delta="-15"
 +			 width="200"
 +			 height="15"
 +			 font="SansSerifSmall"
 +			 layout="topleft"
 +			 text_color="White"
 +			 left_pad="19">
 +				Model Preview:
 +			</text>
 +			<!-- Placeholder panel for 3D preview render -->
 +			<panel
 +			 left_delta="0"
 +			 top_pad="0"
 +			 name="preview_panel"
 +			 bevel_style="none"
 +			 highlight_light_color="0.09 0.09 0.09 1"
 +			 border="true"
 +			 height="150"
 +			 follows="all"
 +			 width="150">
 +			</panel>
 +			<text
 +			 top_pad="10"
 +			 width="130"
 +			 height="14"
 +			 left="340"
 +			 text_color="White"
 +			 word_wrap="true">
 +				Dimensions (meters):
 +			</text>
 +			<text
 +			 top_pad="0"
 +			 width="160"
 +			 height="15"
 +			 font="SansSerifSmallBold" 
 +			 text_color="White"
 +			 name="dimensions"
 +			 left_delta="0">
 +				X:         Y:         Z: 
 +			</text>
 +			<text
 +			 top_delta="0"
 +			 width="160"
 +			 height="15"
 +			 name="dimension_dividers"
 +			 left_delta="41">
 +				 |               |   
 +			</text>
 +			<text
 +			 top_delta="0"
 +			 width="160"
 +			 height="15"
 +			 name="dimension_x"
 +			 left="356"/>
 +			<text
 +			 top_delta="0"
 +			 width="160"
 +			 height="15"
 +			 name="dimension_y"
 +			 left="403"/>
 +			<text
 +			 top_delta="0"
 +			 width="160"
 +			 height="15"
 +			 name="dimension_z"
 +			 left="450"/>
 +			<text
 +			 top="100"
 +			 width="320"
 +			 height="15"
 +			 left="10"
 +			 text_color="White" 
 +			 word_wrap="true">
 +				Note:
 +			</text>
 +			<text
 +			 top_pad="0"
 +			 width="320"
 +			 height="40"
 +			 left="10"
 +			 word_wrap="true">
 +Advanced users familiar with 3d content creation tools may prefer to use the [secondlife:///app/floater/upload_model Advanced Mesh Import Window] .
 +			</text>
 +		</panel>
 +	</panel>
 +
 +
 +	<panel
 +		 height="388"
 +		 top_delta="0"
 +		 name="optimize_panel"
 +		 visible="false"
 +		 width="535"
 +		 left="0">
 +		<panel
 +		 height="22"
 +		 top_pad="15"
 +		 name="header_panel"
 +		 width="505"
 +		 bg_opaque_color="DkGray2"
 +		 background_visible="true"
 +		 background_opaque="true"
 +		 left="15">
 +			<text
 +			 width="200"
 +			 left="10"
 +			 name="header_text"
 +			 top="3"
 +			 text_color="White"
 +			 height="10"
 +			 font="SansSerifBig"
 +			 layout="topleft">
 +				Optimize
 +			</text>
 +		</panel>
 +		<text
 +		 top_pad="14"
 +		 width="460"
 +		 height="20"
 +		 font="SansSerifSmall"
 +		 layout="topleft"
 +		 name="description"
 +		 word_wrap="true"
 +		 left_delta="5">
 +			This wizard has optimized your model to improve performance. You may adjust the results of the optimization process bellow or click Next to continue.
 +		</text>
 +		<panel
 +		 top_delta="40"
 +		 visible="false"
 +		 left="15"
 +		 height="270"
 +		 width="505"
 +		 name="content"
 +		 bg_opaque_color="DkGray2"
 +		 background_visible="true"
 +		 background_opaque="true">
 +			<text
 +			 top="20"
 +			 width="300"
 +			 height="12"
 +			 font="SansSerifBold"
 +			 left="112">Generating Level of Detail</text>
 +			<progress_bar
 +			  name="optimize_progress_bar"
 +              image_fill="model_wizard\progress_light.png"
 +			  color_bg="1 1 1 1"
 +			  color_bar="1 1 1 0.96"
 +			  follows="left|right|top"
 +			  width="260"
 +			  height="16"
 +			  image_bar="model_wizard\progress_bar_bg.png"
 +			  top_pad="14"
 +			  left="110"/>
 +			<icon
 +			 top_pad="10"
 +			 left_delta="0"
 +			 width="13"
 +			 height="12"
 +			 image_name="model_wizard\check_mark.png"/>
 +			<text
 +			 top_delta="0"
 +			 left_delta="18"
 +			 name="high_detail_text"
 +			 width="200"
 +			 height="14">Generate Level of Detail: High</text>
 +			<icon
 +			 top_pad="10"
 +			 left_delta="-18"
 +			 width="13"
 +			 height="12"
 +			 image_name="model_wizard\check_mark.png"/>
 +			<text
 +			 top_delta="0"
 +			 left_delta="18"
 +			 name="medium_detail_text"
 +			 width="200"
 +			 height="14">Generate Level of Detail: Medium</text>
 +			<icon
 +			 top_pad="10"
 +			 left_delta="-18"
 +			 width="13"
 +			 height="12"
 +			 image_name="model_wizard\check_mark.png"/>
 +			<text
 +			 top_delta="0"
 +			 left_delta="18"
 +			 name="low_detail_text"
 +			 width="200"
 +			 height="14">Generate Level of Detail: Low</text>
 +			<icon
 +			 top_pad="10"
 +			 left_delta="-18"
 +			 width="13"
 +			 height="12"
 +			 image_name="model_wizard\check_mark.png"/>
 +			<text
 +			 top_delta="0"
 +			 left_delta="18"
 +			 name="lowest_detail_text"
 +			 width="200"
 +			 height="14">Generate Level of Detail: Lowest</text>
 +		</panel>
 +		<panel
 +				 top_delta="0"
 +				 left_delta="0"
 +				 height="270"
 +				 width="505"
 +				 name="content2"
 +				 bg_opaque_color="DkGray2"
 +				 background_visible="true"
 +				 background_opaque="true">
 +			<text top="10" left="10" width="85" text_color="White" follows="left|top" height="15" name="lod_label">
 +				Model Preview:
 +			</text>
 +			<combo_box left_pad="5" top_delta="-5"  follows="left|top" list_position="below" height="22"
 +	     name="preview_lod_combo2" width="90" tool_tip="LOD to view in preview render">
 +				<combo_item name="high">
 +					High
 +				</combo_item>
 +				<combo_item name="medium">
 +					Medium
 +				</combo_item>
 +				<combo_item name="low">
 +					Low
 +				</combo_item>
 +				<combo_item name="lowest">
 +					Lowest
 +				</combo_item>
 +			</combo_box>
 +			<panel
 +				 left="10"
 +				 top_pad="5"
 +				 name="preview_panel"
 +				 bevel_style="none"
 +				 highlight_light_color="0.09 0.09 0.09 1"
 +				 border_style="line"
 +				 border="true"
 +				 height="185"
 +				 follows="all"
 +				 width="185">
 +			</panel>
 +			<text top="45" left="214" text_color="White" font="SansSerifSmallBold" halign="center" width="110" height="30" wrap="true">Higher Performance</text>
 +			<text top="75" left="204" halign="center" width="130" word_wrap="true"   font="SansSerifSmall" height="80">Faster rendering but less detailed; lowers Resource (prim) cost.</text>
 +			<text top="45" left="378" text_color="White" font="SansSerifSmallBold" halign="center" width="90" height="30" wrap="true">Higher Accuracy</text>
 +			<text top="75" left="364" halign="center" width="130" word_wrap="true"   font="SansSerifSmall" height="80">More detailed model but slower; increases Resource (prim) cost.</text>
 +
 +			<slider
 +		   follows="left|top"
 +		   height="20"
 +		   increment="1"
 +		   layout="topleft"
 +		   left="204"
 +		   max_val="3"
 +		   initial_value="2"
 +		   min_val="0"
 +		   name="accuracy_slider"
 +		   show_text="false"
 +		   top="130"
 +		   width="290" />
 +			<text 
 +			font="SansSerifSmall" 
 +			top_pad="0"  
 +			width="300" 
 +			left_delta="6" 
 +			height="4">'  
 +      </text>
 +
 +
 +			<icon
 +				 top_pad="14"
 +				 left_delta="0"
 +				 width="280"
 +				 height="2"
 +				 image_name="model_wizard\divider_line.png"/>
 +	
 +			<text top_delta="20" width="200" text_color="White" left_delta="50" name="streaming cost"  height="20">Resource Cost:    [COST]</text>
 +			<text
 +						 top_pad="15"
 +						 width="130"
 +						 height="14"
 +						 left="10"
 +						 text_color="White"
 +						 word_wrap="true">
 +				Dimensions (meters):
 +			</text>
 +			<text
 +			 top_pad="0"
 +			 width="160"
 +			 height="15"
 +			 font="SansSerifSmallBold"
 +			 text_color="White"
 +			 name="dimensions"
 +			 left_delta="0">
 +				X:         Y:         Z:
 +			</text>
 +			<text
 +			 top_delta="0"
 +			 width="160"
 +			 height="15"
 +			 name="dimension_dividers"
 +			 left_delta="41">
 +				|               |
 +			</text>
 +			<text
 +			 top_delta="0"
 +			 width="160"
 +			 height="15"
 +			 name="dimension_x"
 +			 left_delta="-25"/>
 +			<text
 +			 top_delta="0"
 +			 width="160"
 +			 height="15"
 +			 name="dimension_y"
 +			 left_delta="46"/>
 +			<text
 +			 top_delta="0"
 +			 width="160"
 +			 height="15"
 +			 name="dimension_z"
 +			 left_delta="46"/>
 +		</panel>
 +	</panel>
 +
 +	<panel
 +		 height="388"
 +		 top_delta="0"
 +		 name="physics_panel"
 +		 visible="false"
 +		 width="535"
 +		 left="0">
 +		<panel
 +		 height="22"
 +		 top_pad="15"
 +		 name="header_panel"
 +		 width="505"
 +		 bg_opaque_color="DkGray2"
 +		 background_visible="true"
 +		 background_opaque="true"
 +		 left="15">
 +			<text
 +			 width="200"
 +			 left="10"
 +			 name="header_text"
 +			 top="3"
 +			 height="10"
 +			 font="SansSerifBig"
 +			 text_color="White" 
 +			 layout="topleft">
 +				Physics
 +			</text>
 +		</panel>
 +		<text
 +		 top_pad="10"
 +		 width="474"
 +		 height="50"
 +		 font="SansSerifSmall"
 +		 layout="topleft"
 +		 name="description"
 +		 word_wrap="true"
 +		 left_delta="5">
 +			The wizard will create a physical shape, which determines how the object interacts with other objects and avatars. Set the slider to the detail level most appropriate for how your object will be used:
 +		</text>
 +    <panel
 +		 top_delta="44"
 +		 left="15"
 +		 height="270"
 +		 width="505"
 +		 name="content"
 +		 bg_opaque_color="DkGray2"
 +		 background_visible="true"
 +		 background_opaque="true">
 +      <text top="15" left="20" text_color="White" font="SansSerifSmallBold" width="110" height="30" wrap="true" halign="center">Higher Performance</text>
 +      <text top="45" left="10" halign="center" width="130" word_wrap="true"   font="SansSerifSmall" height="80">Faster rendering but less detailed; lowers Resource (prim) cost.</text>
 +      <text top="15" left="372" text_color="White" font="SansSerifSmallBold" width="90" height="30" wrap="true" halign="center">Higher Accuracy</text>
 +      <text top="45" left="360" halign="center" width="130" word_wrap="true"   font="SansSerifSmall" height="80">More detailed model but slower; increases Resource (prim) cost.</text>
 +
 +      <slider
 +		   follows="left|top"
 +		   height="22"
 +		   increment=".1"
 +		   layout="topleft"
 +		   left="20"
 +		   max_val="1"
 +		   initial_value="0.5"
 +		   min_val="0"
 +		   name="physics_slider"
 +		   show_text="false"
 +		   top="90"
 +		   width="440" />
 +      <text
 +			font="SansSerifSmall"
 +			top_pad="0"
 +			width="500"
 +			left_delta="6"
 +			height="4">'             '             '             '             '              '             '             '             '              '             '</text>
 +      <text top_pad="10" width="110" halign="center" word_wrap="true" left="25"  height="40">Recommended for solid objects</text>
 +      <text top_delta="0" width="110" halign="center" word_wrap="true" left="190"  height="40">Recommended for buildings</text>
 +      <text top_delta="0" width="110" halign="center" word_wrap="true" left="350"  height="40">Recommended for vehicles</text>
 +
 +
 +		<icon
 +			 top_pad="5"
 +			 left="15"
 +			 width="470"
 +			 height="2"
 +			 image_name="model_wizard\divider_line.png"/>
 +		
 +	<text top_delta="30" width="180" text_color="White" left="160" name="streaming cost"  height="20">Resource Cost:       [COST]</text>
 + 
 +    </panel>
 +	</panel>
 +
 +	<panel
 +		 height="388"
 +		 top_delta="0"
 +		 name="physics2_panel"
 +		 visible="true"
 +		 width="535"
 +		 left="0">
 +		<panel
 +		 height="22"
 +		 top_pad="15"
 +		 name="header_panel"
 +		 width="505"
 +		 bg_opaque_color="DkGray2"
 +		 background_visible="true"
 +		 background_opaque="true"
 +		 left="15">
 +			<text
 +			 width="200"
 +			 left="10"
 +			 name="header_text"
 +			 text_color="White"
 +			 top="3"
 +			 height="10"
 +			 font="SansSerifBig"
 +			 layout="topleft">
 +				Physics
 +			</text>
 +		</panel>
 +		<text
 +		 top_pad="14"
 +		 width="475"
 +		 height="50"
 +		 font="SansSerifSmall"
 +		 layout="topleft"
 +		 name="description"
 +		 word_wrap="true"
 +		 left_delta="5">
 +			Preview the physics shape below then click Next to continue.  To modify the physics shape, click the Back button.
 +		</text>
 +		<panel
 +			 top_delta="40"
 +			 left="15"
 +			 height="270"
 +			 width="505"
 +			 name="content"
 +			 bg_opaque_color="DkGray2"
 +			 background_visible="true"
 +			 background_opaque="true">
 +			<text top="10" left="10" width="85" text_color="White" follows="left|top" height="15" name="lod_label">
 +				Model Preview:
 +			</text>
 +			<combo_box left_pad="5" top_delta="-5"  follows="left|top" list_position="below" height="22"
 +			   name="preview_lod_combo3" width="90" tool_tip="LOD to view in preview render">
 +				<combo_item name="high">
 +					High
 +				</combo_item>
 +				<combo_item name="medium">
 +					Medium
 +				</combo_item>
 +				<combo_item name="low">
 +					Low
 +				</combo_item>
 +				<combo_item name="lowest">
 +					Lowest
 +				</combo_item>
 +			</combo_box>
 +			<panel
 +					   left="10"
 +					   top_pad="10"
 +					   name="preview_panel"
 +					   bevel_style="none"
 +					   highlight_light_color="0.09 0.09 0.09 1"
 +					   border_style="line"
 +					   border="true"
 +					   height="190"
 +					   follows="all"
 +					   width="190">
 +			</panel>
 +			<text
 +						 top_pad="8"
 +						 width="130"
 +						 height="14"
 +						 left="10"
 +						 text_color="White"
 +						 word_wrap="true">
 +				Dimensions (meters):
 +			</text>
 +			<text
 +			 top_pad="0"
 +			 width="160"
 +			 height="15"
 +			 font="SansSerifSmallBold"
 +			 text_color="White"
 +			 name="dimensions"
 +			 left_delta="0">
 +				X:         Y:         Z:
 +			</text>
 +			<text
 +			 top_delta="0"
 +			 width="160"
 +			 height="15"
 +			 name="dimension_dividers"
 +			 left_delta="41">
 +				|               |
 +			</text>
 +			<text
 +			 top_delta="0"
 +			 width="160"
 +			 height="15"
 +			 name="dimension_x"
 +			 left_delta="-25"/>
 +			<text
 +			 top_delta="0"
 +			 width="160"
 +			 height="15"
 +			 name="dimension_y"
 +			 left_delta="46"/>
 +			<text
 +			 top_delta="0"
 +			 width="160"
 +			 height="15"
 +			 name="dimension_z"
 +			 left_delta="46"/>
 +			<text top="60" width="180" text_color="White" left="225" name="streaming cost"  height="20">Resource Cost:       [COST]</text>
 +		</panel>
 +	</panel>
 +
 +	<panel
 +		 height="388"
 +		 top_delta="0"
 +		 name="review_panel"
 +		 visible="false"
 +		 width="535"
 +		 left="0">
 +		<panel
 +		 height="22"
 +		 top_pad="15"
 +		 name="header_panel"
 +		 width="505"
 +		 bg_opaque_color="DkGray2"
 +		 background_visible="true"
 +		 background_opaque="true"
 +		 left="15">
 +			<text
 +			 width="200"
 +			 left="10"
 +			 name="header_text"
 +			 text_color="White" 
 +			 top="3"
 +			 height="10"
 +			 font="SansSerifBig"
 +			 layout="topleft">
 +				Review
 +			</text>
 +		</panel>
 +		<text
 +		 top_pad="14"
 +		 width="470"
 +		 height="24"
 +		 font="SansSerifSmall"
 +		 layout="topleft"
 +		 name="description"
 +		 word_wrap="true"
 +		 left_delta="5">
 +			Review the details below then click. Upload to upload your model. Your L$ balance will be charged when you click Upload.
 +		</text>
 +		<icon
 +			 top_pad="10"
 +			 left="20"
 +			 width="495"
 +			 height="2"
 +			 image_name="model_wizard\divider_line.png"/>
 +    <panel
 +		 top_pad="5"
 +		 left="15"
 +		 height="270"
 +		 width="505"
 +		 name="content">
 +      <text top="10" left="10" width="85" text_color="White" follows="left|top" height="15" name="lod_label">
 +        Model Preview:
 +      </text>
 +      <combo_box left_pad="5" top_delta="-5"  follows="left|top" list_position="below" height="22"
 +	     name="preview_lod_combo" width="90" tool_tip="LOD to view in preview render">
 +        <combo_item name="high">
 +          High
 +        </combo_item>
 +        <combo_item name="medium">
 +          Medium
 +        </combo_item>
 +        <combo_item name="low">
 +          Low
 +        </combo_item>
 +        <combo_item name="lowest">
 +          Lowest
 +        </combo_item>
 +      </combo_box>
 +      <panel
 +				 left="10"
 +				 top_pad="10"
 +				 name="preview_panel"
 +				 bevel_style="none"
 +				 highlight_light_color="0.09 0.09 0.09 1"
 +				 border_style="line"
 +				 border="true"
 +				 height="190"
 +				 follows="all"
 +				 width="190">
 +			</panel>
 +		<text
 +					 top_pad="8"
 +					 width="130"
 +					 height="14"
 +					 left="10"
 +					 text_color="White"
 +					 word_wrap="true">
 +			Dimensions (meters):
 +		</text>
 +		<text
 +		 top_pad="0"
 +		 width="160"
 +		 height="15"
 +		 font="SansSerifSmallBold"
 +		 text_color="White"
 +		 name="dimensions"
 +		 left_delta="0">
 +			X:         Y:         Z:
 +		</text>
 +		<text
 +		 top_delta="0"
 +		 width="160"
 +		 height="15"
 +		 name="dimension_dividers"
 +		 left_delta="41">
 +			|               |
 +		</text>
 +		<text
 +		 top_delta="0"
 +		 width="160"
 +		 height="15"
 +		 name="dimension_x"
 +		 left_delta="-25"/>
 +		<text
 +		 top_delta="0"
 +		 width="160"
 +		 height="15"
 +		 name="dimension_y"
 +		 left_delta="46"/>
 +		<text
 +		 top_delta="0"
 +		 width="160"
 +		 height="15"
 +		 name="dimension_z"
 +		 left_delta="46"/>
 +      </panel>
 +    <text
 +      width="300"
 +      height="12"
 +      top="125" 
 +	  name="streaming cost" 
 +      left="230" 
 +      font="SansSerifSmallBold" 
 +      text_color="White">Resource Cost:         [COST]</text>
 +    <text
 +      width="285"
 +      height="30"
 +      top_pad="0"
 +      left_delta="0"
 +      word_wrap="true"
 +      font="SansSerifItalic">This is the cost to your Region's prim/object limit, at default scale</text>
 +	<text
 +	 width="300"
 +	 height="12"
 +	 name="physics cost" 
 +	 top_pad="10"
 +		 left_delta="0"
 +	 font="SansSerifSmallBold"
 +	 text_color="White">Physics Cost:        [COST]</text>
 +	<text
 +	  width="285"
 +	  height="30"
 +	  top_pad="0"
 +		  left_delta="0"
 +	  word_wrap="true"
 +	  font="SansSerifItalic">This is the cost to your Region's prim/object limit, at default scale</text>
 +		<text
 +		 width="200"
 +		 height="12"
 +		 top_pad="10"
 +		left_delta="0"
 +		 font="SansSerifSmallBold"
 +		 text_color="White">Upload Fee:</text>
 +		<text
 +		  width="285"
 +		  height="26"
 +		  top_pad="0"
 +		  left_delta="0"
 +		  word_wrap="true"
 +		  font="SansSerifItalic">This is the amount the upload will cost.</text>
 +		<check_box
 +			height="16"
 +			layout="topleft"
 +			left_delta="0"
 +			name="confirm_checkbox"
 +			top_pad="15"
 +			width="16" />
 +		<text
 +		  height="100"
 +		  width="240"
 +		  word_wrap="true" 
 +		  left_delta="25"
 +		  top_delta="0">I confirm that I have the appropriate rights to the material contained in this model. [secondlife:///app/floater/learn_more Learn more]</text>
 +	</panel>
 +
 +
 +
 +
 +	<panel
 +		 height="388"
 +		 top_delta="0"
 +		 name="upload_panel"
 +		 visible="false"
 +		 width="535"
 +		 left="0">
 +		<panel
 +		 height="22"
 +		 top_pad="15"
 +		 name="header_panel"
 +		 width="505"
 +		 bg_opaque_color="DkGray2"
 +		 background_visible="true"
 +		 background_opaque="true"
 +		 left="15">
 +			<text
 +			 width="200"
 +			 left="10"
 +			 name="header_text"
 +			 top="3"
 +			 text_color="White" 
 +			 height="10"
 +			 font="SansSerifBig"
 +			 layout="topleft">
 +				Upload Complete!
 +			</text>
 +		</panel>
 +		<text
 +		 top_pad="14"
 +		 width="474"
 +		 height="20"
 +		 font="SansSerifSmall"
 +		 layout="topleft"
 +		 name="description"
 +		 word_wrap="true"
 +		 left_delta="5">
 +			Congratulations! Your model has been sucessfully uploaded.  You will find the model in the Objects folder in your inventory.
 +		</text>
 +		<icon
 +			 top_pad="15"
 +			 left_delta="0"
 +			 width="495"
 +			 height="2"
 +			 image_name="model_wizard\divider_line.png"/>
 +	</panel>
 +
 +
 +
 +	<button
 +	 top="440"
 +	 right="-245"
 +	 width="90"
 +	 height="22"
 +	 name="back"
 +	 label="<< Back" />
 +	<button
 +	 top_delta="0"
 +	 right="-150"
 +	 width="90"
 +	 height="22"
 +	 name="next"
 +	 label="Next >> " />
 +	<button
 +	 top_delta="0"
 +	 right="-150"
 +	 width="90"
 +	 height="22"
 +	 visible="false" 
 +	 name="upload" 
 +	 tool_tip="Upload to simulator"
 +	 label="Upload" />
 +	<button
 +	 top_delta="0"
 +	 right="-15"
 +	 width="90"
 +	 height="22"
 +	 name="cancel"
 +	 label="Cancel" />
 +	<button
 +	 top_delta="0"
 +	 right="-15"
 +	 width="90"
 +	 height="22"
 +	 name="close"
 +	 visible="false" 
 +	 label="Close" />
 +	<spinner visible="false" left="10" height="20" follows="top|left" width="80" top_pad="-50" value="1.0" min_val="0.01" max_val="64.0" name="import_scale"/>
 +
 +	<string name="status_idle">Idle</string>
 +	<string name="status_reading_file">Loading...</string>
 +	<string name="status_generating_meshes">Generating Meshes...</string>
 +  <string name="status_vertex_number_overflow">Error: Vertex number is more than 65534, aborted!</string>
 +	<string name="high">High</string>
 +	<string name="medium">Medium</string>
 +	<string name="low">Low</string>
 +	<string name="lowest">Lowest</string>
 +	<string name="mesh_status_good">Ship it!</string>
 +	<string name="mesh_status_na">N/A</string>
 +	<string name="mesh_status_none">None</string>
 +	<string name="mesh_status_submesh_mismatch">Levels of detail have a different number of textureable faces.</string>
 +	<string name="mesh_status_mesh_mismatch">Levels of detail have a different number of mesh instances.</string>
 +	<string name="mesh_status_too_many_vertices">Level of detail has too many vertices.</string>
 +	<string name="mesh_status_missing_lod">Missing required level of detail.</string>
 +	<string name="layer_all">All</string>
 +	<!-- Text to display in physics layer combo box for "all layers" -->
 +
 +</floater>
 diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml index 05d47506db..e342b441ac 100644 --- a/indra/newview/skins/default/xui/en/floater_tools.xml +++ b/indra/newview/skins/default/xui/en/floater_tools.xml @@ -1,3204 +1,3194 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater - legacy_header_height="18" - follows="left|top|right" - height="580" - layout="topleft" - bg_opaque_image="Window_NoTitle_Foreground" - bg_alpha_image="Window_NoTitle_Background" - name="toolbox floater" - help_topic="toolbox_floater" - save_rect="true" - short_title="BUILD TOOLS" - single_instance="true" - save_visibility="true" - sound_flags="0" - width="295"> -    <floater.string -     name="status_rotate"> -        Drag colored bands to rotate object -    </floater.string> -    <floater.string -     name="status_scale"> -        Click and drag to stretch selected side -    </floater.string> -    <floater.string -     name="status_move"> -        Drag to move, shift-drag to copy -    </floater.string> -    <floater.string -     name="status_modifyland"> -        Click and hold to modify land -    </floater.string> -    <floater.string -     name="status_camera"> -        Click and drag to move camera -    </floater.string> -    <floater.string -     name="status_grab"> -        Drag to move, Ctrl to lift, Ctrl+Shift to rotate -    </floater.string> -    <floater.string -     name="status_place"> -        Click inworld to build -    </floater.string> -    <floater.string -     name="status_selectland"> -        Click and drag to select land -    </floater.string> -    <floater.string -     name="grid_screen_text"> -        Screen -    </floater.string> -    <floater.string -     name="grid_local_text"> -        Local -    </floater.string> -    <floater.string -     name="grid_world_text"> -        World -    </floater.string> -    <floater.string -     name="grid_reference_text"> -        Reference -    </floater.string> -    <floater.string -     name="grid_attachment_text"> -        Attachment -    </floater.string> -    <button -     follows="left|top" -     height="25" -     image_bottom_pad="1" -     image_overlay="Tool_Zoom" -     image_selected="PushButton_Selected_Press" -     layout="topleft" -     left="10" -     name="button focus" -     tool_tip="Focus" -     width="35"> -	  <button.commit_callback -	     function="BuildTool.setTool" -	     parameter="Focus" /> -	</button> -    <button -     follows="left|top" -      height="25" -     image_bottom_pad="1" -     image_overlay="Tool_Grab" -     image_selected="PushButton_Selected_Press" -     layout="topleft" -     left_pad="10" -     name="button move" -     tool_tip="Move" -     width="35"> -	  <button.commit_callback -	     function="BuildTool.setTool" -	     parameter="Move" /> -	</button> -    <button -     follows="left|top" -     height="25" -     image_bottom_pad="1" -     image_overlay="Tool_Face" -     image_selected="PushButton_Selected_Press" -     layout="topleft" -     left_pad="10" -     name="button edit" -     tool_tip="Edit" -     width="35"> -	  <button.commit_callback -	     function="BuildTool.setTool" -	     parameter="Edit" /> -	</button> -    <button -     follows="left|top" -      height="25" -     image_bottom_pad="1" -     image_overlay="Tool_Create" -     image_selected="PushButton_Selected_Press" -     layout="topleft" -     left_pad="10" -     name="button create" -     tool_tip="Create" -     width="35"> -	  <button.commit_callback -	     function="BuildTool.setTool" -	     parameter="Create" /> -	</button> -    <button -     follows="left|top" -      height="25" -     image_bottom_pad="1" -     image_overlay="Tool_Dozer" -     image_selected="PushButton_Selected_Press" -     layout="topleft" -     left_pad="10" -     name="button land" -     tool_tip="Land" -     width="35"> -	  <button.commit_callback -	     function="BuildTool.setTool" -	     parameter="Land" /> -	</button> -    <text -     height="30" -     word_wrap="true" -     use_ellipses="true" -     type="string" -     text_color="LabelSelectedDisabledColor" -     length="1" -     follows="left|top" -     layout="topleft" -     left="8" -     name="text status" -     top_pad="3" -     width="285"> -        Drag to move, shift-drag to copy -    </text> -   <radio_group -     layout="topleft" -     left="10" -      height="70" -      top="59" -     name="focus_radio_group"> -        <radio_item -         top_pad="6" -         label="Zoom" -         layout="topleft" -         name="radio zoom" /> -        <radio_item -         top_pad="6" -         label="Orbit (Ctrl)" -         layout="topleft" -         name="radio orbit" /> -        <radio_item -         top_pad="6" -         label="Pan (Ctrl+Shift)" -         layout="topleft" -         name="radio pan" /> -		 <radio_group.commit_callback -	     function="BuildTool.commitRadioFocus"/> -    </radio_group> -   <slider_bar -     follows="left|top" -     height="14" -     increment="0.01" -     initial_value="0.125" -     layout="topleft" -     max_val="0.5" -     top_delta="-2" -     left_delta="100" -     name="slider zoom" -     width="134"> -	 <slider_bar.commit_callback -	     function="BuildTool.commitZoom"/> -	</slider_bar> -   <radio_group -      left="10" -      height="70" -      top="59" -     layout="topleft" -     name="move_radio_group"> -        <radio_item -         top_pad="6" -         label="Move" -         layout="topleft" -         name="radio move" /> -        <radio_item -		 top_pad="6" -         label="Lift (Ctrl)" -         layout="topleft" -         name="radio lift" /> -        <radio_item -         top_pad="6" -         label="Spin (Ctrl+Shift)" -         layout="topleft" -         name="radio spin" /> -		 <radio_group.commit_callback -			function="BuildTool.commitRadioMove"/> -	</radio_group> -	<radio_group -     follows="left|top" -	 left="5" -	 top="59" -	 height="70" -     layout="topleft" -	 name="edit_radio_group"> -        <radio_item -		 label="Move" -		 layout="topleft" -		 name="radio position" /> -        <radio_item -		 top_pad="6" -         label="Rotate (Ctrl)" -         layout="topleft" -         name="radio rotate" /> -        <radio_item -		 top_pad="6" -         label="Stretch (Ctrl+Shift)" -         layout="topleft" -         name="radio stretch" /> -        <radio_item -		 top_pad="6" -         label="Select Face" -         layout="topleft" -         name="radio select face" /> -			<radio_group.commit_callback -			function="BuildTool.commitRadioEdit"/> -    </radio_group> -    <check_box -     left="5" -     follows="left|top" -     height="28" -	 control_name="EditLinkedParts" -     label="Edit linked" -     layout="topleft" -     name="checkbox edit linked parts" -     top_pad="-10"> -		  <check_box.commit_callback -			function="BuildTool.selectComponent"/> -	</check_box> - -   <button -     follows="left|top" -     height="23" -     label="Link" -     top_pad="2" -     layout="topleft" -     left="5" -     name="link_btn" -     width="50"> -	  <button.commit_callback -	     function="BuildTool.LinkObjects"/> -    </button> -    <button -     follows="left|top" -     height="23" -     label="Unlink" -     layout="topleft" -     left_pad="2" -     name="unlink_btn" -     width="50"> -	  <button.commit_callback -	     function="BuildTool.UnlinkObjects"/> -    </button> -    <text -	   text_color="LtGray_50" -	   follows="top|left" -	   halign="left" -	   left_pad="3" -	   name="RenderingCost" -	   tool_tip="Shows the rendering cost calculated for this object" -	   top_delta="11" -	   type="string" -	   width="100"> -	   þ: [COUNT] -	   </text> -    <check_box -     control_name="ScaleUniform" -     height="19" -     label="" -     layout="topleft" -     left="143" -     name="checkbox uniform" -     top="50" -     width="20" /> -    <text -     height="19" -     label="Stretch Both Sides" -     left_delta="20" -     name="checkbox uniform label" -     top_delta="2" -     width="120" -     layout="topleft" -     follows="top|left" -     wrap="true"> -     	Stretch Both Sides -    </text> -    <check_box -     control_name="ScaleStretchTextures" -     height="19" -     initial_value="true" -     label="Stretch Textures" -     layout="topleft" -     left="143" -     name="checkbox stretch textures" -     top_pad="-6" -     follows="left|top" -     width="134" /> -   <check_box -     control_name="SnapEnabled" -     height="18" -     initial_value="true" -     label="Snap to grid" -     layout="topleft" -     top_pad="0" -     name="checkbox snap to grid" -     width="134" /> -    <combo_box -     height="23" -     layout="topleft" -     follows="left|top" -     name="combobox grid mode" -     tool_tip="Choose the type of grid ruler for positioning the object" -     top_pad="0" -     width="108"> -        <combo_box.item -         label="World grid" -         name="World" -         value="World" /> -        <combo_box.item -         label="Local grid" -         name="Local" -         value="Local" /> -        <combo_box.item -         label="Reference grid" -         name="Reference" -         value="Reference" /> -		 <combo_box.commit_callback -	     function="BuildTool.gridMode"/> -    </combo_box> -    <button -     left_pad="0" -     image_selected="ForwardArrow_Press" -     image_unselected="ForwardArrow_Off" -     layout="topleft" -     follows="top|left" -     name="Options..." -     tool_tip="See more grid options" -     top_pad="-22" -     right="-10" -     width="18" -     height="23" > -	 <button.commit_callback -	     function="BuildTool.gridOptions"/> -	</button> -   <button -     follows="left|top" -     height="20" -     image_disabled="Object_Cube" -     image_disabled_selected="Object_Cube" -     image_selected="Object_Cube_Selected" -     image_unselected="Object_Cube" -     layout="topleft" -     left="10" -     name="ToolCube" -     tool_tip="Cube" -     top="51" -     width="20" /> -    <button -     follows="left|top" -     height="20" -     image_disabled="Object_Prism" -     image_disabled_selected="Object_Prism" -     image_selected="Object_Prism_Selected" -     image_unselected="Object_Prism" -     layout="topleft" -     left_delta="29" -     name="ToolPrism" -     tool_tip="Prism" -     top_delta="0" -     width="20" /> -    <button -     follows="left|top" -     height="20" -     image_disabled="Object_Pyramid" -     image_disabled_selected="Object_Pyramid" -     image_selected="Object_Pyramid_Selected" -     image_unselected="Object_Pyramid" -     layout="topleft" -     left_delta="29" -     name="ToolPyramid" -     tool_tip="Pyramid" -     top_delta="0" -     width="20" /> -    <button -     follows="left|top" -     height="20" -     image_disabled="Object_Tetrahedron" -     image_disabled_selected="Object_Tetrahedron" -     image_selected="Object_Tetrahedron_Selected" -     image_unselected="Object_Tetrahedron" -     layout="topleft" -     left_delta="29" -     name="ToolTetrahedron" -     tool_tip="Tetrahedron" -     top_delta="0" -     width="20" /> -    <button -     follows="left|top" -     height="20" -     image_disabled="Object_Cylinder" -     image_disabled_selected="Object_Cylinder" -     image_selected="Object_Cylinder_Selected" -     image_unselected="Object_Cylinder" -     layout="topleft" -     left_delta="29" -     name="ToolCylinder" -     tool_tip="Cylinder" -     top_delta="0" -     width="20" /> -    <button -     follows="left|top" -     height="20" -     image_disabled="Object_Hemi_Cylinder" -     image_disabled_selected="Object_Hemi_Cylinder" -     image_selected="Object_Hemi_Cylinder_Selected" -     image_unselected="Object_Hemi_Cylinder" -     layout="topleft" -     left_delta="29" -     name="ToolHemiCylinder" -     tool_tip="Hemicylinder" -     top_delta="0" -     width="20" /> -    <button -     follows="left|top" -     height="20" -     image_disabled="Object_Cone" -     image_disabled_selected="Object_Cone" -     image_selected="Object_Cone_Selected" -     image_unselected="Object_Cone" -     layout="topleft" -     left_delta="29" -     name="ToolCone" -     tool_tip="Cone" -     top_delta="0" -     width="20" /> -    <button -     follows="left|top" -     height="20" -     image_disabled="Object_Hemi_Cone" -     image_disabled_selected="Object_Hemi_Cone" -     image_selected="Object_Hemi_Cone_Selected" -     image_unselected="Object_Hemi_Cone" -     layout="topleft" -     left_delta="29" -     name="ToolHemiCone" -     tool_tip="Hemicone" -     top_delta="0" -     width="20" /> -    <button -     follows="left|top" -     height="20" -     image_disabled="Object_Sphere" -     image_disabled_selected="Object_Sphere" -     image_selected="Object_Sphere_Selected" -     image_unselected="Object_Sphere" -     layout="topleft" -     left_delta="29" -     name="ToolSphere" -     tool_tip="Sphere" -     top_delta="0" -     width="20" /> -    <button -     follows="left|top" -     height="20" -     image_disabled="Object_Hemi_Sphere" -     image_disabled_selected="Object_Hemi_Sphere" -     image_selected="Object_Hemi_Sphere_Selected" -     image_unselected="Object_Hemi_Sphere" -     layout="topleft" -     left_delta="29" -     name="ToolHemiSphere" -     tool_tip="Hemisphere" -     top_delta="0" -     width="20" /> -    <button -     follows="left|top" -     height="20" -     image_disabled="Object_Torus" -     image_disabled_selected="Object_Torus" -     image_selected="Object_Torus_Selected" -     image_unselected="Object_Torus" -     layout="topleft" -     left="10" -     name="ToolTorus" -     tool_tip="Torus" -     top="77" -     width="20" /> -    <button -     follows="left|top" -     height="20" -     image_disabled="Object_Tube" -     image_disabled_selected="Object_Tube" -     image_selected="Object_Tube_Selected" -     image_unselected="Object_Tube" -     layout="topleft" -     left_delta="29" -     name="ToolTube" -     tool_tip="Tube" -     top_delta="0" -     width="20" /> -    <button -     follows="left|top" -     height="20" -     image_disabled="Object_Ring" -     image_disabled_selected="Object_Ring" -     image_selected="Object_Ring_Selected" -     image_unselected="Object_Ring" -     layout="topleft" -     left_delta="29" -     name="ToolRing" -     tool_tip="Ring" -     top_delta="0" -     width="20" /> -    <button -     follows="left|top" -     height="20" -     image_disabled="Object_Tree" -     image_disabled_selected="Object_Tree" -     image_selected="Object_Tree_Selected" -     image_unselected="Object_Tree" -     layout="topleft" -     left_delta="29" -     name="ToolTree" -     tool_tip="Tree" -     top_delta="0" -     width="20" /> -    <button -     follows="left|top" -     height="20" -     image_disabled="Object_Grass" -     image_disabled_selected="Object_Grass" -     image_selected="Object_Grass_Selected" -     image_unselected="Object_Grass" -     image_overlay_color="Red" -     layout="topleft" -     left_delta="29" -     name="ToolGrass" -     tool_tip="Grass" -     top_delta="0" -     width="20" /> -    <check_box -     control_name="CreateToolKeepSelected" -     height="19" -     label="Keep Tool selected" -     layout="topleft" -     left="4" -     name="checkbox sticky" -     top="101" -     width="128" /> -    <check_box -     control_name="CreateToolCopySelection" -     height="19" -     label="Copy selection" -     layout="topleft" -     left_delta="0" -     name="checkbox copy selection" -     top_delta="15" -     width="134" /> -    <check_box -     control_name="CreateToolCopyCenters" -     height="19" -     initial_value="true" -     label="Center Copy" -     layout="topleft" -     left_delta="18" -     name="checkbox copy centers" -     top="132" -     width="134" /> -    <check_box -     control_name="CreateToolCopyRotates" -     height="19" -     label="Rotate Copy" -     layout="topleft" -     left_delta="0" -     name="checkbox copy rotates" -     top_delta="16" -     width="134" /> -    <radio_group -     height="105" -     layout="topleft" -     left="4" -     name="land_radio_group" -     top="54" -     width="114"> -        <radio_item -         height="19" -         label="Select Land" -         layout="topleft" -         left="0" -         name="radio select land" -         top="-106" -         width="134" /> -        <radio_item -         height="19" -         label="Flatten" -         layout="topleft" -         left_delta="0" -         name="radio flatten" -         top_delta="15" -         width="114" /> -        <radio_item -         height="19" -         label="Raise" -         layout="topleft" -         left_delta="0" -         name="radio raise" -         top_delta="15" -         width="114" /> -        <radio_item -         height="19" -         label="Lower" -         layout="topleft" -         left_delta="0" -         name="radio lower" -         top_delta="15" -         width="114" /> -        <radio_item -         height="19" -         label="Smooth" -         layout="topleft" -         left_delta="0" -         name="radio smooth" -         top_delta="15" -         width="114" /> -        <radio_item -         height="19" -         label="Roughen" -         layout="topleft" -         left_delta="0" -         name="radio noise" -         top_delta="15" -         width="114" /> -        <radio_item -         height="19" -         label="Revert" -         layout="topleft" -         left_delta="0" -         name="radio revert" -         top_delta="15" -         width="114" /> -		 <radio_group.commit_callback -	     function="BuildTool.commitRadioLand"/> -    </radio_group> -    <text -     type="string" -     length="1" -     follows="left|top" -     height="12" -     layout="topleft" -     left="135" -     name="Bulldozer:" -     top="57" -     width="100"> -        Bulldozer: -    </text> -    <text -     type="string" -     length="1" -     follows="left|top" -     height="12" -     layout="topleft" -     name="Dozer Size:" -     left="135" -     top_pad="5" -     width="50"> -        Size -    </text> -    <slider_bar -	 control_name ="LandBrushSize" -     follows="left|top" -     height="19" -     initial_value="2.0" -     layout="topleft" -     max_val="11" -     min_val="1" -     left_pad="0" -     name="slider brush size" -     top_delta="-3" -     width="80" /> -    <text -     type="string" -     length="1" -     follows="left|top" -     height="12" -     layout="topleft" -     name="Strength:" -     left="135" -     top_pad="5" -     width="50"> -        Strength -    </text> -    <slider_bar -     follows="left|top" -     height="19" -     left_pad="0" -     initial_value="0.00" -     layout="topleft" -     max_val="2" -     min_val="-1" -     name="slider force" -     top_delta="-3" -     width="80" > -	  <slider_bar.commit_callback -	     function="BuildTool.LandBrushForce"/> -    </slider_bar> -    <button -     follows="left|top" -     height="23" -     label="Apply" -     label_selected="Apply" -     top_pad="5" -     layout="topleft" -     left="135" -     name="button apply to selection" -     tool_tip="Modify selected land" -     width="82"> -	  <button.commit_callback -	     function="BuildTool.applyToSelection"/> -    </button> -	<text -	 text_color="LtGray_50" -	  type="string" -	  length="1" -	  height="10" -	  follows="left|top" -	  halign="right" -	  layout="topleft" -	  right="-10" -	  name="obj_count" -	  top_pad="5" -	  width="143"> -		Objects: [COUNT] -	</text> -	<text -    text_color="LtGray_50" -     type="string" -     length="1" -	height="10"  -     follows="left|top" -     halign="right" -     layout="topleft" -     right="-10" -     name="prim_count" -     width="143"> -		Prims: [COUNT] -	</text> -    <text -    text_color="LtGray_50" -     type="string" -     length="1" -     height="10" -     follows="left|top" -     halign="right" -     layout="topleft" -     right="-120" -     name="linked_set_count" -     top="144" -     width="80"> -        Linked Sets: [COUNT] -    </text> -    <text -    text_color="LtGray_50" -     type="string" -     length="1" -     height="10" -     follows="left|top" -     halign="right" -     layout="topleft" -     top_delta="0" -     right="-8" -     name="linked_set_cost" -     tool_tip="Cost of currently selected linked sets as [prims],[physics complexity]"  -     width="80"> -        Cost: [COST] / [PHYSICS] -    </text> -    <text -    text_color="LtGray_50" -     type="string" -     length="1" -     follows="left|top" -     halign="right" -     layout="topleft" -     top_pad="5" -     right="-120" -     name="object_count" -     width="80"> -        Objects: [COUNT] -    </text> -    <text -    text_color="LtGray_50" -     type="string" -     length="1" -     follows="left|top" -     halign="right" -     layout="topleft" -	 top_delta="0" -     right="-8" -     name="object_cost" -     tool_tip="Cost of currently selected objects as [prims] / [physics complexity]" -     width="80"> -        Cost: [COST] / [PHYSICS] -    </text> -    <!-- <text --> -    <!-- text_color="LtGray_50" --> -    <!--  type="string" --> -    <!--  length="1" --> -    <!--  height="10" --> -    <!--  follows="left|top" --> -    <!--  halign="right" --> -    <!--  layout="topleft" --> -    <!--  right="-10" --> -    <!--  name="obj_count" --> -    <!--  top_pad="5" --> -    <!--  width="143"> --> -    <!--     Objects: [COUNT] --> -    <!-- </text> --> -    <!-- <text --> -    <!-- text_color="LtGray_50" --> -    <!--  type="string" --> -    <!--  length="1" --> -    <!--  follows="left|top" --> -    <!--  halign="right" --> -    <!--  layout="topleft" --> -    <!--  right="-10" --> -    <!--  name="prim_count" --> -    <!--  width="143"> --> -    <!--     Prims: [COUNT] --> -    <!-- </text> --> -    <tab_container -     follows="left|top" -     height="410" -     halign="center" -     left="0" -     name="Object Info Tabs" -     tab_max_width="100" -     tab_min_width="40" -     tab_position="top" -     tab_height="25" -     top="173" -     width="295"> -	 -<panel -	 border="false" -	 follows="all" -	 label="General" -	 layout="topleft" -	 mouse_opaque="false" -	 help_topic="toolbox_general_tab" -	 name="General" -	 top="16" -	 width="295"> -	 <panel.string -	  name="text deed continued"> -		Deed -	 </panel.string> -	<panel.string -	 name="text deed"> -		Deed -	</panel.string> -            <panel.string -             name="text modify info 1"> -                You can modify this object -            </panel.string> -            <panel.string -             name="text modify info 2"> -                You can modify these objects -            </panel.string> -            <panel.string -             name="text modify info 3"> -                You can't modify this object -            </panel.string> -            <panel.string -             name="text modify info 4"> -                You can't modify these objects -            </panel.string> -            <panel.string -             name="text modify warning"> -                You must select entire object to set permissions -            </panel.string> -            <panel.string -             name="Cost Default"> -                Price: L$ -            </panel.string> -            <panel.string -             name="Cost Total"> -                Total Price: L$ -            </panel.string> -            <panel.string -             name="Cost Per Unit"> -                Price Per: L$ -            </panel.string> -            <panel.string -             name="Cost Mixed"> -                Mixed Price -            </panel.string> -            <panel.string -             name="Sale Mixed"> -                Mixed Sale -            </panel.string> -            <text -             follows="left|top" -             height="10" -             left="10" -             name="Name:" -             top="5" -             width="90"> -                Name: -            </text> -            <line_editor -             follows="left|top|right" -             height="19" -             left_pad="0" -             max_length_bytes="63" -             name="Object Name" -             select_on_focus="true" -             top_delta="0" -             width="170" /> -            <text -             follows="left|top" -             height="10" -             left="10" -             name="Description:" -             top_pad="3" -             width="90"> -                Description: -            </text> -            <line_editor -             follows="left|top|right" -             height="19" -             left_pad="0" -             max_length_bytes="127" -             name="Object Description" -             select_on_focus="true" -             top_delta="0" -             width="170" /> -            <text -             type="string" -             left="10" -             length="1" -             follows="left|top" -             height="19" -             layout="topleft" -             name="Creator:" -             top_pad="7" -             width="90"> -                Creator: -            </text> -            <!-- *NOTE: Intentionally wide for long names --> -            <text -             type="string" -             length="1" -             follows="left|top" -             left_pad="0" -             height="20" -             layout="topleft" -             name="Creator Name" -             top_delta="0" -             translate="false" -             width="190" -             word_wrap="true" -             use_ellipses="true"> -                TestString PleaseIgnore (please.ignore) -            </text> -            <text -             type="string" -             length="1" -             left="10" -             follows="left|top" -             height="19" -             layout="topleft" -             name="Owner:" -             top_pad="13" -             width="90"> -                Owner: -            </text> -            <!-- *NOTE: Intentionally wide for long names --> -            <text -             type="string" -             length="1" -             follows="left|top" -             height="20" -             layout="topleft" -             name="Owner Name" -             left_pad="0" -             top_delta="0" -             translate="false" -             width="190" -             word_wrap="true" -             use_ellipses="true"> -                TestString PleaseIgnore (please.ignore) -            </text> -           <text -             type="string" -             length="1" -             follows="left|top" -             layout="topleft" -             left="10" -             height="18" -             name="Group:" -             top_pad="17" -             width="75"> -                Group: -            </text> -            <name_box -             follows="left|top" -             height="18" -             initial_value="Loading..." -             layout="topleft" -             left_pad="23" -             name="Group Name Proxy" -             width="142" /> -            <button -			 follows="top|left" -			 height="23" -			 image_overlay="Edit_Wrench" -			 layout="topleft" -			 left_pad="13" -			 name="button set group" -			 tab_stop="false" -			 tool_tip="Choose a group to share this object's permissions" -			 width="23" /> -            <check_box -             height="19" -             follows="left|top" -             label="Share" -             layout="topleft" -             name="checkbox share with group" -             tool_tip="Allow all members of the set group to share your modify permissions for this object. You must Deed to enable role restrictions." -             top_pad="10" -             left="100" -             width="87" /> -            <button -             follows="top|left" -             height="23" -             label="Deed" -             label_selected="Deed" -             layout="topleft" -             name="button deed" -             left_pad="19" -             tool_tip="Deeding gives this item away with next owner permissions. Group shared objects can be deeded by a group officer." -             width="80" /> -            <text -             type="string" -             length="1" -             follows="left|top" -             height="16" -             layout="topleft" -             top_pad="10" -             left="10" -             name="label click action" -             width="118"> -                Click to: -            </text> -            <combo_box -             follows="left|top" -             height="23" -             layout="topleft" -             name="clickaction" -             width="148" -             left_pad="10"> -                <combo_box.item -                 label="Touch  (default)" -                 name="Touch/grab(default)" -                 value="Touch" /> -                <combo_box.item -                 label="Sit on object" -                 name="Sitonobject" -                 value="Sit" /> -                <combo_box.item -                 label="Buy object" -                 name="Buyobject" -                 value="Buy" /> -                <combo_box.item -                 label="Pay object" -                 name="Payobject" -                 value="Pay" /> -                <combo_box.item -                 label="Open" -                 name="Open" -                 value="Open" /> -				 <combo_box.item -                 label="Zoom" -                 name="Zoom" -                 value="Zoom" /> -            </combo_box> -            <check_box -             height="23" -             label="For Sale:" -             layout="topleft" -             name="checkbox for sale" -             left="7" -             width="100" /> -<!-- NEW SALE TYPE COMBO BOX --> -      <combo_box -            left_pad="10" -            layout="topleft" -            follows="left|top" -            allow_text_entry="false" -            height="23" -            initial_value="2" -            max_chars="20" -            mouse_opaque="true" -            name="sale type" -            width="168"> -        <combo_box.item -           name="Copy" -           label="Copy" -           value="2" /> -        <combo_box.item -           name="Contents" -           label="Contents" -           value="3" /> -        <combo_box.item -           name="Original" -           label="Original" -           value="1" /> -      </combo_box> -<!-- NEW PRICE SPINNER -Objects are allowed to be for sale for L$0 to invoke buy UI behavior -even though the user gets a free copy. ---> -    <spinner -        follows="left|top" -        decimal_digits="0" -        increment="1" -        top_pad="8" -        left="118" -        control_name="Edit Cost" -        name="Edit Cost" -        label="Price: L$" -        label_width="65" -        width="165" -        min_val="0" -        height="20" -        max_val="999999999" /> -      <check_box -	   height="15" -	   width="110" -	   top_pad="5" -	   label="Show in search" -       layout="topleft" -	   left="100" -       name="search_check" -       tool_tip="Let people see this object in search results" /> -		<panel -         border="false" -         follows="left|top" -         layout="topleft" -         mouse_opaque="false" -         background_visible="true" -         bg_alpha_color="DkGray" -         name="perms_build" -         left="0" -         top_pad="4" -         height="105" -         width="290"> -            <text -             type="string" -             length="1" -             left="10" -             top_pad="9" -             text_color="EmphasisColor" -             height="16" -             follows="left|top|right" -             layout="topleft" -             name="perm_modify" -             width="264"> -                You can modify this object -            </text> -            <text -               type="string" -               follows="left|top" -               name="Anyone can:" -               width="250" -               left="10"> -                 Anyone: -            </text> -            <check_box -             height="19" -             label="Move" -             layout="topleft" -             name="checkbox allow everyone move" -             left="10" -             width="85" /> -            <check_box -             height="19" -             label="Copy" -             layout="topleft" -             left_pad="0" -             name="checkbox allow everyone copy" -             width="90" /> -            <text -               type="string" -               follows="left|top" -               height="19" -               name="Next owner can:" -               width="250" -               left="10"> -                  Next owner: -            </text> -            <check_box -             follows="left|top|right" -             label="Modify" -             layout="topleft" -             left="10" -             name="checkbox next owner can modify" -             width="85" /> -            <check_box -             follows="left|top|right" -             height="19" -             label="Copy" -             layout="topleft" -             left_pad="0" -             name="checkbox next owner can copy" -             width="80" /> -            <check_box -             follows="left|top|right" -             height="19" -             label="Transfer" -             layout="topleft" -             name="checkbox next owner can transfer" -             left_pad="0" -             top_delta="0" -             tool_tip="Next owner can give away or resell this object" -             width="100" /> -<!-- *NOTE: These "B/O/G/E/N/F fields may overlap "perm_modify" above,  -     but that's OK, this is used only for debugging. --> -            <text -             type="string" -             text_color="EmphasisColor" -             length="1" -             top="9" -             follows="left|top" -             layout="topleft" -             left="230" -             name="B:" -             height="10" -             width="80"> -                B: -            </text> -            <text -             type="string" -             text_color="White" -             length="1" -             follows="left|top" -             layout="topleft" -             left_delta="0" -             top_pad="2" -             name="O:" -             height="10" -             width="80"> -                O: -            </text> -            <text -             type="string" -             text_color="EmphasisColor" -             length="1" -             follows="left|top" -             layout="topleft" -             left_delta="0" -             top_pad="2" -             name="G:" -             height="10" -             width="80"> -                G: -            </text> -            <text -             type="string" -             text_color="White" -             length="1" -             follows="left|top" -             left_delta="0" -             top_pad="2" -             layout="topleft" -             name="E:" -             height="10" -             width="80"> -                E: -            </text> -            <text -             type="string" -             text_color="EmphasisColor" -             length="1" -             follows="left|top" -             layout="topleft" -             left_delta="0" -             top_pad="2" -             name="N:" -             height="10" -             width="80"> -                N: -            </text> -            <text -             type="string" -             text_color="White" -             length="1" -             follows="left|top" -             layout="topleft" -             left_delta="0" -             top_pad="2" -             name="F:" -             height="10" -             width="80"> -                F: -            </text> -        </panel> -      </panel> -      <!-- Object tab --> -      <panel -         border="false" -         follows="all" -         height="567" -         label="Object" -         layout="topleft" -         left_delta="0" -         mouse_opaque="false" -         help_topic="toolbox_object_tab" -         name="Object" -         top="16" -         width="295"> -            <check_box -             height="19" -             label="Locked" -             layout="topleft" -             name="checkbox locked" -             tool_tip="Prevents object from being moved or deleted. Frequently useful during building to avoid unintended edits." -             top_pad="5" -             left="10" -             width="123" /> -            <check_box -             height="19" -             label="Physical" -             layout="topleft" -             name="Physical Checkbox Ctrl" -             tool_tip="Allows object to be pushed and affected by gravity" -             top_pad="0" -             width="123" /> -            <check_box -             height="19" -             label="Temporary" -             layout="topleft" -             name="Temporary Checkbox Ctrl" -             tool_tip="Causes object to be deleted 1 minute after creation" -             top_pad="0" -             width="123" /> -            <check_box -             height="19" -             label="Phantom" -             layout="topleft" -             name="Phantom Checkbox Ctrl" -             tool_tip="Causes object to not collide with other objects or avatars" -             top_pad="0" -             width="123" /> - -            <text -             type="string" -             length="1" -             follows="left|top" -             height="10" -             layout="topleft" -             name="label position" -             top_pad="10" -             width="121"> -                Position (meters) -            </text> -            <spinner -             follows="left|top" -             height="19" -             increment="0.01" -             initial_value="0" -             label="X" -             label_width="10" -             layout="topleft" -             left_delta="0" -             max_val="512" -             min_val="-256" -             name="Pos X" -             text_enabled_color="1 0 0.3 .7" -             top_pad="5" -             width="87" /> -            <spinner -             follows="left|top" -             height="19" -             increment="0.01" -             initial_value="0" -             label="Y" -             label_width="10" -             layout="topleft" -             left_delta="0" -             max_val="512" -             min_val="-256" -             name="Pos Y" -             text_enabled_color="EmphasisColor" -             top_pad="3" -             width="87" /> -            <spinner -             follows="left|top" -             height="19" -             increment="0.01" -             initial_value="0" -             label="Z" -             label_width="10" -             layout="topleft" -             left_delta="0" -             max_val="4096" -             name="Pos Z" -             text_enabled_color="0 0.8 1 .65" -             top_pad="3" -             width="87" /> -            <text -             type="string" -             length="1" -             follows="left|top" -             height="10" -             layout="topleft" -             left_delta="0" -             name="label size" -             top_pad="6" -             width="121"> -                Size (meters) -            </text> -            <spinner -             follows="left|top" -             height="19" -             increment="0.01" -             initial_value="0" -             label="X" -             label_width="10" -             layout="topleft" -             left_delta="0" -             max_val="64" -             min_val="0.01" -             name="Scale X" -             text_enabled_color="1 1 1 1" -             top_pad="5" -             width="87" /> -            <spinner -             follows="left|top" -             height="19" -             increment="0.01" -             initial_value="0" -             label="Y" -             label_width="10" -             layout="topleft" -             left_delta="0" -             max_val="64" -             min_val="0.01" -             name="Scale Y" -             text_enabled_color="1 1 1 1" -             top_pad="3" -             width="87" /> -            <spinner -             follows="left|top" -             height="19" -             increment="0.01" -             initial_value="0" -             label="Z" -             label_width="10" -             layout="topleft" -             left_delta="0" -             max_val="64" -             min_val="0.01" -             name="Scale Z" -             text_enabled_color="1 1 1 1" -             top_pad="3" -             width="87" /> -            <text -             type="string" -             length="1" -             follows="left|top" -             height="10" -             layout="topleft" -             left_delta="0" -             name="label rotation" -             top_pad="10" -             width="121"> -                Rotation (degrees) -            </text> -            <spinner -             decimal_digits="2" -             follows="left|top" -             height="19" -             increment="1" -             initial_value="0" -             label="X" -             label_width="10" -             layout="topleft" -             left_delta="0" -             max_val="9999" -             min_val="-9999" -             name="Rot X" -             text_enabled_color="1 1 1 1" -             top_pad="5" -             width="87" /> -            <spinner -             decimal_digits="2" -             follows="left|top" -             height="19" -             increment="1" -             initial_value="0" -             label="Y" -             label_width="10" -             layout="topleft" -             left_delta="0" -             max_val="9999" -             min_val="-9999" -             name="Rot Y" -             text_enabled_color="1 1 1 1" -             top_pad="3" -             width="87" /> -            <spinner -             decimal_digits="2" -             follows="left|top" -             height="19" -             increment="1" -             initial_value="0" -             label="Z" -             label_width="10" -             layout="topleft" -             left_delta="0" -             max_val="9999" -             min_val="-9999" -             name="Rot Z" -             text_enabled_color="1 1 1 1" -             top_pad="3" -             width="87" /> - <!--           <text -             type="string" -             length="1" -             follows="left|top" -             height="10" -             layout="topleft" -             left="125" -             name="label basetype" -             top="5" -             width="150"> -                Prim Type -            </text>--> -            <combo_box -             height="19" -             layout="topleft" -             name="comboBaseType" -             top="6" -             left="125" -             width="150"> -                <combo_box.item -                 label="Box" -                 name="Box" -                 value="Box" /> -                <combo_box.item -                 label="Cylinder" -                 name="Cylinder" -                 value="Cylinder" /> -                <combo_box.item -                 label="Prism" -                 name="Prism" -                 value="Prism" /> -                <combo_box.item -                 label="Sphere" -                 name="Sphere" -                 value="Sphere" /> -                <combo_box.item -                 label="Torus" -                 name="Torus" -                 value="Torus" /> -                <combo_box.item -                 label="Tube" -                 name="Tube" -                 value="Tube" /> -                <combo_box.item -                 label="Ring" -                 name="Ring" -                 value="Ring" /> -                <combo_box.item -                 label="Sculpted" -                 name="Sculpted" -                 value="Sculpted" /> -            </combo_box> -            <combo_box -             height="19" -             layout="topleft" -             name="material" -             top_pad="5" -             width="150"> -                <combo_box.item -                 label="Stone" -                 name="Stone" -                 value="Stone" /> -                <combo_box.item -                 label="Metal" -                 name="Metal" -                 value="Metal" /> -                <combo_box.item -                 label="Glass" -                 name="Glass" -                 value="Glass" /> -                <combo_box.item -                 label="Wood" -                 name="Wood" -                 value="Wood" /> -                <combo_box.item -                 label="Flesh" -                 name="Flesh" -                 value="Flesh" /> -                <combo_box.item -                 label="Plastic" -                 name="Plastic" -                 value="Plastic" /> -                <combo_box.item -                 label="Rubber" -                 name="Rubber" -                 value="Rubber" /> -            </combo_box> -            <text -             type="string" -             length="1" -             follows="left|top" -             height="10" -             layout="topleft" -             left_delta="0" -             name="text cut" -             top_pad="5" -             width="150"> -                Path Cut (begin/end) -            </text> -            <spinner -             follows="left|top" -             height="16" -             increment="0.025" -             initial_value="0" -             label="B" -             label_width="10" -             layout="topleft" -             left_delta="0" -             max_val="0.98" -             name="cut begin" -             top_pad="4" -             width="68" /> -            <spinner -             follows="left|top" -             height="16" -             increment="0.025" -             initial_value="1" -             label="E" -             label_width="10" -             layout="topleft" -             left_pad="10" -             min_val="0.02" -             name="cut end" -             top_delta="0" -             width="68" /> -            <text -             type="string" -             length="1" -             follows="left|top" -             height="10" -             layout="topleft" -             left="125" -             name="text hollow" -             top_pad="6" -             width="68"> -                Hollow -            </text> -            <text -             type="string" -             length="1" -             follows="left|top" -             height="10" -             layout="topleft" -             left_pad="10" -             name="text skew" -             width="63"> -                Skew -            </text> -            <spinner -             decimal_digits="1" -             follows="left|top" -             height="19" -             increment="5" -             initial_value="0" -             layout="topleft" -             left="125" -             max_val="95" -             name="Scale 1" -             top_pad="4" -             width="68" /> -            <spinner -             decimal_digits="2" -             follows="left|top" -             height="19" -             increment="0.05" -             initial_value="0" -             layout="topleft" -             left_pad="10" -             max_val="0.95" -             min_val="-0.95" -             name="Skew" -             top_delta="0" -             width="68" /> -            <text -             type="string" -             length="1" -             follows="left|top" -             height="15" -             layout="topleft" -             left="125" -             name="Hollow Shape" -             top_pad="4" -             width="150"> -                Hollow Shape -            </text> -            <combo_box -             height="23" -             layout="topleft" -             left_delta="0" -             name="hole" -             top_pad="-2" -             width="150"> -                <combo_box.item -                 label="Default" -                 name="Default" -                 value="Default" /> -                <combo_box.item -                 label="Circle" -                 name="Circle" -                 value="Circle" /> -                <combo_box.item -                 label="Square" -                 name="Square" -                 value="Square" /> -                <combo_box.item -                 label="Triangle" -                 name="Triangle" -                 value="Triangle" /> -            </combo_box> -            <text -             type="string" -             length="1" -             follows="left|top" -             height="10" -             layout="topleft" -             left_delta="0" -             name="text twist" -             top_pad="5" -             width="150"> -                Twist (begin/end) -            </text> -            <spinner -             decimal_digits="0" -             follows="left|top" -             height="19" -             increment="9" -             initial_value="0" -             label="B" -             label_width="10" -             layout="topleft" -             left_delta="0" -             max_val="180" -             min_val="-180" -             name="Twist Begin" -             top_pad="4" -             width="68" /> -            <spinner -             decimal_digits="0" -             follows="left|top" -             height="19" -             increment="9" -             initial_value="0" -             label="E" -             label_width="10" -             layout="topleft" -             left_pad="10" -             max_val="180" -             min_val="-180" -             name="Twist End" -             top_delta="0" -             width="68" /> -            <text -             type="string" -             length="1" -             follows="left|top" -             height="10" -             layout="topleft" -             left="125" -             name="scale_taper" -             top_pad="3" -             width="150"> -                Taper -            </text> -            <text -			 visible="false" -             type="string" -             length="1" -             follows="left|top" -             height="10" -             layout="topleft" -             left_delta="0" -             name="scale_hole" -             top_delta="0" -             width="150"> -                Hole Size -            </text> -            <spinner -             decimal_digits="2" -             follows="left|top" -             height="19" -             increment="0.05" -             initial_value="0" -             label="X" -             label_width="10" -             layout="topleft" -             left_delta="0" -             min_val="-1" -             name="Taper Scale X" -             top_pad="4" -             width="68" /> -            <spinner -             decimal_digits="2" -             follows="left|top" -             height="19" -             increment="0.05" -             initial_value="0" -             label="Y" -             label_width="10" -             layout="topleft" -             left_pad="10" -             min_val="-1" -             name="Taper Scale Y" -             top_delta="0" -             width="68" /> -            <text -             type="string" -             length="1" -             follows="left|top" -             height="10" -             layout="topleft" -             left="125" -             name="text topshear" -             top_pad="3" -             width="141"> -                Top Shear -            </text> -            <spinner -             decimal_digits="2" -             follows="left|top" -             height="19" -             increment="0.05" -             initial_value="0" -             label="X" -             label_width="10" -             layout="topleft" -             left_delta="0" -             max_val="0.5" -             min_val="-0.5" -             name="Shear X" -             top_pad="4" -             width="68" /> -            <spinner -             decimal_digits="2" -             follows="left|top" -             height="19" -             increment="0.05" -             initial_value="0" -             label="Y" -             label_width="10" -             layout="topleft" -             left_pad="10" -             max_val="0.5" -             min_val="-0.5" -             name="Shear Y" -             top_delta="0" -             width="68" /> -            <text -			 visible="false" -             type="string" -             length="1" -             follows="left|top" -             height="10" -             layout="topleft" -             left="125" -             name="advanced_cut" -             top_pad="3" -             width="150"> -                Profile Cut (begin/end) -            </text> -            <text -			 visible="false" -             type="string" -             length="1" -             follows="left|top" -             height="10" -             layout="topleft" -             left_delta="0" -             name="advanced_dimple" -             top_delta="0" -             width="150"> -                Dimple (begin/end) -            </text> -            <text -             type="string" -             length="1" -             follows="left|top" -             height="10" -             layout="topleft" -             left_delta="0" -             name="advanced_slice" -             top_delta="0" -             width="150"> -                Slice (begin/end) -            </text> -            <spinner -             follows="left|top" -             height="19" -             increment="0.02" -             initial_value="0" -             label="B" -             label_width="10" -             layout="topleft" -             left_delta="0" -             max_val="0.98" -             name="Path Limit Begin" -             top_pad="3" -             width="68" /> -            <spinner -             follows="left|top" -             height="19" -             increment="0.02" -             initial_value="1" -             label="E" -             label_width="10" -             layout="topleft" -             left_pad="10" -             min_val="0.02" -             name="Path Limit End" -             top_delta="0" -             width="68" /> -            <text -			 visible="false" -             type="string" -             length="1" -             follows="left|top" -             height="10" -             layout="topleft" -             left="125" -             name="text taper2" -             top_pad="3" -             width="150"> -                Taper -            </text> -            <spinner -			 visible="false" -             decimal_digits="2" -             follows="left|top" -             height="19" -             increment="0.05" -             initial_value="0" -             label="X" -             label_width="10" -             layout="topleft" -             left_delta="0" -             min_val="-1" -             name="Taper X" -             top_pad="3" -             width="68" /> -            <spinner -			 visible="false" -             decimal_digits="2" -             follows="left|top" -             height="19" -             increment="0.05" -             initial_value="0" -             label="Y" -             label_width="10" -             layout="topleft" -             left_pad="10" -             min_val="-1" -             name="Taper Y" -             top_delta="0" -             width="68" /> -            <text -			 visible="false" -             type="string" -             length="1" -             follows="left|top" -             height="10" -             layout="topleft" -             left="125" -             name="text radius delta" -             top_pad="2" -             width="78"> -                Radius -            </text> -            <text -			 visible="false" -             type="string" -             length="1" -             follows="left|top" -             height="10" -             layout="topleft" -             left_delta="78" -             name="text revolutions" -             width="68"> -                Revolutions -            </text> -            <spinner -			 visible="false" -             follows="left|top" -             height="19" -             increment="0.05" -             initial_value="0" -             layout="topleft" -             left="125" -             min_val="-1" -             name="Radius Offset" -             top_pad="4" -             width="68" /> -            <spinner -			 visible="false" -             decimal_digits="2" -             follows="left|top" -             height="19" -             initial_value="1" -             layout="topleft" -             left_pad="10" -             max_val="4" -             min_val="1" -             name="Revolutions" -             top_delta="0" -             width="68" /> -            <texture_picker -             can_apply_immediately="true" -             default_image_name="Default" -             follows="left|top" -             height="141" -             label="Sculpt Texture" -             layout="topleft" -             left="125" -             name="sculpt texture control" -             tool_tip="Click to choose a picture" -             top="70" -             visible="false" -             width="145" /> -            <check_box -             height="19" -             label="Mirror" -             layout="topleft" -             left_delta="0" -             name="sculpt mirror control" -             tool_tip="Flips sculpted prim along the X axis" -             top_pad="8" -             visible="false" -             width="130" /> -            <check_box -             height="19" -             label="Inside-out" -             layout="topleft" -             left_delta="0" -             name="sculpt invert control" -             tool_tip="Inverts the sculpted prims normals, making it appear inside-out" -             top_pad="4" -             visible="false" -             width="121" /> -            <text -             type="string" -             length="1" -             follows="left|top" -             height="10" -             layout="topleft" -             left_delta="0" -             name="label sculpt type" -             top_pad="10" -             visible="false" -             width="130"> -                Stitching type -            </text> -            <combo_box -             height="19" -             layout="topleft" -             left_delta="0" -             name="sculpt type control" -             top_pad="4" -             visible="false" -             width="150"> -                <combo_box.item -                 label="(none)" -                 name="None" -                 value="None" /> -                <combo_box.item -                 label="Sphere" -                 name="Sphere" -                 value="Sphere" /> -                <combo_box.item -                 label="Torus" -                 name="Torus" -                 value="Torus" /> -                <combo_box.item -                 label="Plane" -                 name="Plane" -                 value="Plane" /> -                <combo_box.item -                 label="Cylinder" -                 name="Cylinder" -                 value="Cylinder" /> -              <combo_box.item -                 label="Mesh" -                 name="Mesh" -                 value="Mesh" /> -            </combo_box> -        </panel> -        <panel -         border="false" -         follows="all" -         height="367" -         label="Features" -         layout="topleft" -         left_delta="0" -         mouse_opaque="false" -         help_topic="toolbox_features_tab" -         name="Features" -         top_delta="0" -         width="295"> -	<panel.string name="None">None</panel.string> -	<panel.string name="Prim">Prim</panel.string> -	<panel.string name="Convex Hull">Convex Hull</panel.string> -            <text -             type="string" -             length="1" -             follows="left|top" -             height="20" -             layout="topleft" -             left="10" -             name="select_single" -             top="5" -             width="252" -             word_wrap="true"> -                Select only one primitive to edit features. -            </text> -            <text -             type="string" -             length="1" -             follows="left|top" -             height="10" -             layout="topleft" -             left="10" -             name="edit_object" -             top="5" -             width="252"> -                Edit object features: -            </text> -            <check_box -             height="19" -             label="Flexible Path" -             layout="topleft" -             left="10" -             name="Flexible1D Checkbox Ctrl" -             tool_tip="Allows object to flex about the Z axis (Client-side only)" -             top_pad="20" -             width="121" /> -            <spinner -             follows="left|top" -             height="19" -             increment="1" -             initial_value="2" -             label="Softness" -             label_width="70" -             layout="topleft" -             left_delta="0" -             max_val="3" -             name="FlexNumSections" -             top_pad="10" -             width="128" /> -            <spinner -             follows="left|top" -             height="19" -             increment="0.5" -             initial_value="0.3" -             label="Gravity" -             label_width="70" -             layout="topleft" -             left_delta="0" -             max_val="10" -             min_val="-10" -             name="FlexGravity" -             top_pad="4" -             width="128" /> -            <spinner -             follows="left|top" -             height="19" -             increment="0.5" -             initial_value="2" -             label="Drag" -             label_width="70" -             layout="topleft" -             left_delta="0" -             max_val="10" -             name="FlexFriction" -             top_pad="4" -             width="128" /> -            <spinner -             follows="left|top" -             height="19" -             increment="0.5" -             initial_value="0" -             label="Wind" -             label_width="70" -             layout="topleft" -             left_delta="0" -             max_val="10" -             name="FlexWind" -             top_pad="4" -             width="128" /> -            <spinner -             follows="left|top" -             height="19" -             increment="0.5" -             initial_value="1" -             label="Tension" -             label_width="70" -             layout="topleft" -             left_delta="0" -             max_val="10" -             name="FlexTension" -             top_pad="4" -             width="128" /> -            <spinner -             follows="left|top" -             height="19" -             increment="0.01" -             initial_value="0" -             label="Force X" -             label_width="70" -             layout="topleft" -             left_delta="0" -             max_val="10" -             min_val="-10" -             name="FlexForceX" -             top_pad="4" -             width="128" /> -            <spinner -             follows="left|top" -             height="19" -             increment="0.01" -             initial_value="0" -             label="Force Y" -             label_width="70" -             layout="topleft" -             left_delta="0" -             max_val="10" -             min_val="-10" -             name="FlexForceY" -             top_pad="4" -             width="128" /> -            <spinner -             follows="left|top" -             height="19" -             increment="0.01" -             initial_value="0" -             label="Force Z" -             label_width="70" -             layout="topleft" -             left_delta="0" -             max_val="10" -             min_val="-10" -             name="FlexForceZ" -             top_pad="4" -             width="128" /> - -            <check_box -             height="16" -             label="Light" -             layout="topleft" -             left="10" -             name="Light Checkbox Ctrl" -             tool_tip="Causes object to emit light" -             top_pad="15" -             width="60" /> -            <color_swatch -             can_apply_immediately="true" -             color="0.5 0.5 0.5 1" -	     border.border_thickness="0" -             follows="left|top" -             height="50" -             layout="topleft" -             left_pad="10" -             top_pad="-17" -             name="colorswatch" -             tool_tip="Click to open color picker" -             width="40" /> -         <texture_picker -            allow_no_texture="true" -            top_delta="0" -            can_apply_immediately="true" -            default_image_name="Default" -            follows="left|top" -            height="48" -            label="" -            left_delta="57" -            mouse_opaque="true" -            name="light texture control" -            tool_tip="Click to choose a projection image (only has effect with deferred rendering enabled)" -            width="32" /> -          <spinner -             follows="left|top" -             height="19" -             initial_value="0.5" -             label="Intensity" -             label_width="70" -             layout="topleft" -             left="10" -             name="Light Intensity" -             top_pad="3" -             width="128" /> -          <spinner bottom_delta="0" -                   decimal_digits="3" -                   follows="left|top" -                   height="16" -                   increment="0.1" -                   initial_value="0.5" -                   label="FOV" -                   label_width="55" -                   left="144" -                   max_val="3" -                   min_val="0" -                   mouse_opaque="true" -                   name="Light FOV" -                   width="120" /> -          <spinner follows="left|top" -                   height="19" -                   initial_value="5" -                   label="Radius" -                   label_width="70" -                   layout="topleft" -                   left="10" -                   max_val="20" -                   name="Light Radius" -                   top_pad="3" -                   width="128" /> -          <spinner bottom_delta="0" -                   decimal_digits="3" -                   follows="left|top" -                   height="16" -                   increment="0.5" -                   initial_value="0.5" -                   label="Focus" -                   label_width="55" -                   left="144" -                   max_val="20" -                   min_val="-20" -                   mouse_opaque="true" -                   name="Light Focus" -                   width="120" /> -          <spinner follows="left|top" -                   height="19" -                   increment="0.25" -                   initial_value="1" -                   label="Falloff" -                   label_width="70" -                   layout="topleft" -                   left="10" -                   max_val="2" -                   name="Light Falloff" -                   top_pad="3" -                   width="128" /> -          <spinner bottom_delta="0" -                   decimal_digits="3" -                   follows="left|top" -                   height="16" -                   increment="0.05" -                   initial_value="1" -                   label="Ambiance" -                   label_width="55" -                   left="144" -                   max_val="1" -                   min_val="0" -                   mouse_opaque="true" -                   name="Light Ambiance" -                   width="120" /> -            <text -             type="string" -             length="1" -             follows="left|top" -             height="10" -             layout="topleft" -             name="label physicsshapetype" -             top="38" -             width="121"> -                Physics Shape Type: -            </text> -			<combo_box -			   height="19" -			   top_delta="15"  -			   layout="topleft" -			   follows="left|top" -			   name="Physics Shape Type Combo Ctrl" -			   tool_tip="Choose the physics shape type" -			   width="108"/> - -            <spinner -             follows="left|top" -             height="19" -             increment="1" -             initial_value="1" -             label="Gravity" -             label_width="70" -             layout="topleft" -             min_val="-1" -             max_val="28" -             name="Physics Gravity" -             top_pad="10" -             width="132" /> - -            <check_box -             height="19" -             label="Override material" -             layout="topleft" -             left_delta="0" -             name="Physics Material Override" -             tool_tip="Override Material" -             top_pad="10" -             width="132" /> - -            <spinner -             follows="left|top" -             height="19" -             increment="0.1" -             initial_value="0" -             label="Friction" -             label_width="70" -             layout="topleft" -             left_delta="0" -             max_val="255" -             min_val="0" -             name="Physics Friction" -             top_pad="4" -             width="132" /> - -            <spinner -             follows="left|top" -             height="19" -             increment="0.1" -             initial_value="0" -             label="Density" -             label_width="70" -             layout="topleft" -             left_delta="0" -             max_val="22587" -             min_val="1" -             name="Physics Density" -             top_pad="4" -             width="132" /> - -            <spinner -             follows="left|top" -             height="19" -             increment="0.01" -             initial_value="0" -             label="Restitution" -             label_width="70" -             layout="topleft" -             left_delta="0" -             max_val="1" -             min_val="0" -             name="Physics Restitution" -             top_pad="4" -             width="132" /> -        </panel> -         <panel -         border="false" -         follows="all" -         height="367" -         label="Texture" -         layout="topleft" -         left_delta="0" -         mouse_opaque="false" -         help_topic="toolbox_texture_tab" -         name="Texture" -         top_delta="0" -         width="295"> -            <panel.string -             name="string repeats per meter"> -                Repeats Per Meter -            </panel.string> -            <panel.string -             name="string repeats per face"> -                Repeats Per Face -            </panel.string> -            <texture_picker -             can_apply_immediately="true" -             default_image_name="Default" -             fallback_image="locked_image.j2c" -             follows="left|top" -             height="80" -             label="Texture" -             layout="topleft" -             left="10" -             name="texture control" -             tool_tip="Click to choose a picture" -             top="8" -             width="64" /> -            <color_swatch -             can_apply_immediately="true" -             follows="left|top" -             height="80" -             label="Color" -             layout="topleft" -             left_pad="15" -             name="colorswatch" -             tool_tip="Click to open color picker" -             top_delta="0" -             width="64" /> -            <text -             type="string" -             length="1" -             follows="left|top" -             height="10" -             layout="topleft" -             left_pad="15" -             name="color trans" -             text_readonly_color="LabelDisabledColor" -             top="6" -             width="110"> -                Transparency % -            </text> -            <spinner -             decimal_digits="0" -             follows="left|top" -             height="19" -             increment="2" -             initial_value="0" -             layout="topleft" -             left_delta="0" -             max_val="100" -             name="ColorTrans" -             top_pad="4" -             width="80" /> -            <text -             type="string" -             length="1" -             follows="left|top" -             height="10" -             layout="topleft" -             left_delta="0" -             name="glow label" -             text_readonly_color="LabelDisabledColor" -             top_pad="8" -             width="80"> -                Glow -            </text> -            <spinner -             decimal_digits="2" -             follows="left|top" -             height="19" -             initial_value="0" -             layout="topleft" -             left_delta="0" -             name="glow" -             top_pad="4" -             width="80" /> -            <check_box -             height="19" -             label="Full Bright" -             layout="topleft" -             left_delta="-5" -             name="checkbox fullbright" -             top_pad="4" -             width="81" /> -            <text -             type="string" -             length="1" -             follows="left|top" -             height="10" -             layout="topleft" -             left="10" -             name="tex gen" -             text_readonly_color="LabelDisabledColor" -             top_pad="5" -             width="90"> -                Mapping -            </text> -            <combo_box -             height="23" -             layout="topleft" -             left_delta="0" -             name="combobox texgen" -             top_pad="4" -             width="90"> -                <combo_box.item -                 label="Default" -                 name="Default" -                 value="Default" /> -                <combo_box.item -                 label="Planar" -                 name="Planar" -                 value="Planar" /> -            </combo_box> -            <text -             type="string" -             length="1" -             follows="left|top" -             height="10" -             layout="topleft" -             name="label shininess" -             left_pad="4" -             text_readonly_color="LabelDisabledColor" -             top_pad="-37" -             width="90"> -                Shininess -            </text> -            <combo_box -             height="23" -             layout="topleft" -             left_delta="0" -             name="combobox shininess" -             top_pad="4" -             width="90"> -                <combo_box.item -                 label="None" -                 name="None" -                 value="None" /> -                <combo_box.item -                 label="Low" -                 name="Low" -                 value="Low" /> -                <combo_box.item -                 label="Medium" -                 name="Medium" -                 value="Medium" /> -                <combo_box.item -                 label="High" -                 name="High" -                 value="High" /> -            </combo_box> -            <text -             type="string" -             length="1" -             follows="left|top" -             height="10" -             layout="topleft" -             left_pad="4" -             name="label bumpiness" -             text_readonly_color="LabelDisabledColor" -             top_pad="-37" -             width="90"> -                Bumpiness -            </text> -            <combo_box -             height="23" -             layout="topleft" -             left_delta="0" -             name="combobox bumpiness" -             top_pad="4" -             width="90"> -                <combo_box.item -                 label="None" -                 name="None" -                 value="None" /> -                <combo_box.item -                 label="Brightness" -                 name="Brightness" -                 value="Brightness" /> -                <combo_box.item -                 label="Darkness" -                 name="Darkness" -                 value="Darkness" /> -                <combo_box.item -                 label="woodgrain" -                 name="woodgrain" -                 value="woodgrain" /> -                <combo_box.item -                 label="bark" -                 name="bark" -                 value="bark" /> -                <combo_box.item -                 label="bricks" -                 name="bricks" -                 value="bricks" /> -                <combo_box.item -                 label="checker" -                 name="checker" -                 value="checker" /> -                <combo_box.item -                 label="concrete" -                 name="concrete" -                 value="concrete" /> -                <combo_box.item -                 label="crustytile" -                 name="crustytile" -                 value="crustytile" /> -                <combo_box.item -                 label="cutstone" -                 name="cutstone" -                 value="cutstone" /> -                <combo_box.item -                 label="discs" -                 name="discs" -                 value="discs" /> -                <combo_box.item -                 label="gravel" -                 name="gravel" -                 value="gravel" /> -                <combo_box.item -                 label="petridish" -                 name="petridish" -                 value="petridish" /> -                <combo_box.item -                 label="siding" -                 name="siding" -                 value="siding" /> -                <combo_box.item -                 label="stonetile" -                 name="stonetile" -                 value="stonetile" /> -                <combo_box.item -                 label="stucco" -                 name="stucco" -                 value="stucco" /> -                <combo_box.item -                 label="suction" -                 name="suction" -                 value="suction" /> -                <combo_box.item -                 label="weave" -                 name="weave" -                 value="weave" /> -            </combo_box> -          <!-- -            <line_editor -             bevel_style="in" -             border_style="line" -             border_thickness="1" -             follows="left|top" -             height="16" -             layout="topleft" -             left="10" -             max_length_bytes="63" -             name="Home Url" -             select_on_focus="true" -             top="134" -             width="250" /> -            <check_box -             height="16" -             label="Media Face" -             layout="topleft" -             left_delta="0" -             name="has media" -             top_pad="6" -             width="70" /> -            <button -             follows="left|top" -             font="SansSerifSmall" -             height="20" -             label="Set Media Info" -             label_selected="Set Media Info" -             layout="topleft" -             left_pad="60" -             name="media info set" -             top_delta="-4" -             width="120" /> ---> -            <check_box -             follows="top|left" -             height="16" -             initial_value="false" -             label="Align planar faces" -             layout="topleft" -             left="17" -             name="checkbox planar align" -             tool_tip="Align textures on all selected faces with the last selected face. Requires Planar texture mapping." -             top_delta="26" -             width="140" /> -            <text -             type="string" -             length="1" -             follows="left|top" -             height="10" -             layout="topleft" -             left="10" -             name="rpt" -             text_readonly_color="LabelDisabledColor" -             top_pad="2" -             width="140"> -                Repeats / Face -            </text> -            <spinner -             follows="left|top" -             height="19" -             initial_value="0" -             label="Horizontal (U)" -             label_width="125" -             layout="topleft" -             left="20" -             max_val="100" -             name="TexScaleU" -             top_pad="5" -             width="185" /> -            <check_box -             height="19" -             label="Flip" -             layout="topleft" -             left_pad="5" -             name="checkbox flip s" -             top_delta="0" -             width="70" /> -            <spinner -             follows="left|top" -             height="19" -             initial_value="0" -             label="Vertical (V)" -             label_width="125" -             layout="topleft" -             left="20" -             max_val="100" -             name="TexScaleV" -             width="185" /> -            <check_box -             height="19" -             label="Flip" -             layout="topleft" -             left_pad="5" -             name="checkbox flip t" -             top_delta="0" -             width="70" /> -            <spinner -             decimal_digits="2" -             follows="left|top" -             height="19" -             increment="1" -             initial_value="0" -			 label="Rotation˚" -             layout="topleft" -			 label_width="135" -             left="10" -             max_val="9999" -             min_val="-9999" -             name="TexRot" -             width="195" /> - -            <spinner -             decimal_digits="1" -             follows="left|top" -             height="23" -             initial_value="1" -			 label="Repeats / Meter" -             layout="topleft" -			 label_width="135" -             left="10" -             max_val="10" -             min_val="0.1" -             name="rptctrl" -             width="195" /> -            <button -             follows="left|top" -             height="23" -             label="Apply" -             label_selected="Apply" -             layout="topleft" -             left_pad="5" -             name="button apply" -             width="75" /> -            <text -             type="string" -             length="1" -             follows="left|top" -             height="10" -             layout="topleft" -             left="10" -             name="tex offset" -             text_readonly_color="LabelDisabledColor" -             width="200"> -                Texture Offset -            </text> -            <spinner -             follows="left|top" -             height="19" -             initial_value="0" -             label="Horizontal (U)" -             label_width="125" -             layout="topleft" -             left="20" -             min_val="-1" -             name="TexOffsetU" -             width="185" /> -            <spinner -             follows="left|top" -             height="19" -             initial_value="0" -             label="Vertical (V)" -             label_width="125" -             layout="topleft" -             left_delta="0" -             min_val="-1" -             name="TexOffsetV" -             top_pad="1" -             width="185" /> -        <panel -         border="false" -         follows="left|top" -         layout="topleft" -         mouse_opaque="false" -         background_visible="true" -         bg_alpha_color="DkGray" -         name="Add_Media" -         left="0" -         height="47" -         width="290"> -            <text -             type="string" -             length="1" -             follows="left|top" -             height="18" -             layout="topleft" -             left="10" -             top_pad="3" -             name="media_tex" -             width="190"> -              Media -			</text> -			<button -			 follows="top|left" -			 height="18" -			 image_selected="AddItem_Press" -			 image_unselected="AddItem_Off" -			 image_disabled="AddItem_Disabled" -			 layout="topleft" -			 left_pad="0" -			 name="add_media" -			 tab_stop="false" -			 top_delta="0" -			 tool_tip="Add Media" -			 width="18"> -				<button.commit_callback -				function="BuildTool.AddMedia"/> -			</button> -			<button -			 follows="top|left" -			 height="18" -			 image_selected="TrashItem_Press" -			 image_unselected="TrashItem_Off" -			 layout="topleft" -			 left_pad="5" -			 name="delete_media" -			 tool_tip="Delete this media texture" -			 top_delta="0" -			 width="18"> -				<button.commit_callback -				function="BuildTool.DeleteMedia"/> -			</button> -			<button -			 follows="top|left" -			 tool_tip="Edit this Media" -			 height="12" -             image_disabled="Icon_Gear_Background" -             image_selected="Icon_Gear_Press" -             image_unselected="Icon_Gear_Foreground" -			 layout="topleft" -			 left_pad="10" -			 name="edit_media" -			 top_delta="3" -			 width="12"> -				<button.commit_callback -				function="BuildTool.EditMedia"/> -			</button> -      <text -			 follows="left|top|right" -			 height="9" -			 layout="topleft" -			 left="10" -                         use_ellipses="true" -			 read_only="true" -			 name="media_info" -			 width="280" /> -      <web_browser -        visible="false" -        enabled="false" -        border_visible="true" -        bottom_delta="0" -        follows="top|left" -        left="0" -        name="title_media" -        width="4" -        height="4" -        start_url="about:blank" -        decouple_texture_size="true" /> -     <button -			 follows="right|top" -			 height="22" -			 label="Align" -			 label_selected="Align Media" -			 layout="topleft" -			 right="-16" -			 name="button align" -			 top_delta="-4" -			 tool_tip="Align media texture (must load first)" -			 width="80" /> -		</panel> -	   </panel> -       <panel -         border="false" -         follows="all" -         label="Content" -         layout="topleft" -         left_delta="0" -         mouse_opaque="false" -         help_topic="toolbox_contents_tab" -         name="Contents" -         top_delta="0" -         width="295"> -            <button -             follows="left|top" -             height="23" -             label="New Script" -             label_selected="New Script" -             layout="topleft" -             left="10" -             name="button new script" -             top="10" -             width="134" /> -            <button -             follows="left|top" -             height="23" -             label="Permissions" -             layout="topleft" -             left_pad="8" -             name="button permissions" -             width="134" /> -            <panel_inventory_object -             border="true" -             border_visible="true" -             bevel_style="in" -             follows="left|top|right" -             height="325" -             layout="topleft" -             left="10" -             name="contents_inventory" -             top="50" -             width="275" /> -		</panel> -        </tab_container> -	<panel -	 follows="left|top" -     height="384" -     layout="topleft" -     left_delta="0" -     name="land info panel" -     top_delta="0" -     width="295"> -    <text -         type="string" -         length="1" -         font="SansSerifBig" -         follows="left|top" -         height="19" -         layout="topleft" -         left="20" -         name="label_parcel_info" -         top="24" -         width="240"> -            Parcel Information -        </text> -        <text -         type="string" -         length="1" -         follows="left|top" -         height="19" -         layout="topleft" -         left="30" -         name="label_area_price" -         top="48" -         width="150"> -            Price: L$[PRICE] for [AREA] m² -        </text> -        <text -         type="string" -         length="1" -         follows="left|top" -         height="19" -         layout="topleft" -         left_delta="0" -         name="label_area" -         top_delta="0" -         width="150"> -            Area: [AREA] m² -        </text> -        <button -         follows="left|top" -         height="23" -         label="About Land" -         label_selected="About Land" -         layout="topleft" -         left_delta="0" -         name="button about land" -         top_pad="4" -         width="125" /> -        <check_box -         control_name="ShowParcelOwners" -         height="19" -         label="Show owners" -         layout="topleft" -         left_delta="0" -         name="checkbox show owners" -         tool_tip="Colorize the parcels according to the type of owner: 

Green = Your land 
Aqua = Your group's land 
Red = Owned by others 
Yellow = For sale 
Purple = For auction 
Grey = Public" -         top_pad="8" -         width="205" /> -        <text -         type="string" -         length="1" -         font="SansSerifBig" -         follows="left|top" -         height="19" -         layout="topleft" -         left="20" -         name="label_parcel_modify" -         top="152" -         width="240"> -            Modify Parcel -        </text> -        <button -         follows="left|top" -         height="23" -         label="Subdivide" -         label_selected="Subdivide" -         layout="topleft" -         left="30" -         name="button subdivide land" -         top="172" -         width="125" /> -        <button -         follows="left|top" -         height="23" -         label="Join" -         label_selected="Join" -         layout="topleft" -         left_delta="0" -         name="button join land" -         top_pad="4" -         width="125" /> -        <text -         type="string" -         length="1" -         font="SansSerifBig" -         follows="left|top" -         height="19" -         layout="topleft" -         left="20" -         name="label_parcel_trans" -         top="256" -         width="240"> -            Land Transactions -        </text> -        <button -         follows="left|top" -         height="23" -         label="Buy Land" -         label_selected="Buy Land" -         layout="topleft" -         left="30" -         name="button buy land" -         top="276" -         width="125" /> -        <button -         follows="left|top" -         height="23" -         label="Abandon Land" -         label_selected="Abandon Land" -         layout="topleft" -         left_delta="0" -         name="button abandon land" -         top_pad="4" -         width="125" /> - </panel> -<!-- end of tabs --> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 +<floater
 + legacy_header_height="18"
 + follows="left|top|right"
 + height="580"
 + layout="topleft"
 + bg_opaque_image="Window_NoTitle_Foreground"
 + bg_alpha_image="Window_NoTitle_Background"
 + name="toolbox floater"
 + help_topic="toolbox_floater"
 + save_rect="true"
 + short_title="BUILD TOOLS"
 + single_instance="true"
 + save_visibility="true"
 + sound_flags="0"
 + width="295">
 +    <floater.string
 +     name="status_rotate">
 +        Drag colored bands to rotate object
 +    </floater.string>
 +    <floater.string
 +     name="status_scale">
 +        Click and drag to stretch selected side
 +    </floater.string>
 +    <floater.string
 +     name="status_move">
 +        Drag to move, shift-drag to copy
 +    </floater.string>
 +    <floater.string
 +     name="status_modifyland">
 +        Click and hold to modify land
 +    </floater.string>
 +    <floater.string
 +     name="status_camera">
 +        Click and drag to move camera
 +    </floater.string>
 +    <floater.string
 +     name="status_grab">
 +        Drag to move, Ctrl to lift, Ctrl+Shift to rotate
 +    </floater.string>
 +    <floater.string
 +     name="status_place">
 +        Click inworld to build
 +    </floater.string>
 +    <floater.string
 +     name="status_selectland">
 +        Click and drag to select land
 +    </floater.string>
 +    <floater.string
 +     name="grid_screen_text">
 +        Screen
 +    </floater.string>
 +    <floater.string
 +     name="grid_local_text">
 +        Local
 +    </floater.string>
 +    <floater.string
 +     name="grid_world_text">
 +        World
 +    </floater.string>
 +    <floater.string
 +     name="grid_reference_text">
 +        Reference
 +    </floater.string>
 +    <floater.string
 +     name="grid_attachment_text">
 +        Attachment
 +    </floater.string>
 +    <button
 +     follows="left|top"
 +     height="25"
 +     image_bottom_pad="1"
 +     image_overlay="Tool_Zoom"
 +     image_selected="PushButton_Selected_Press"
 +     layout="topleft"
 +     left="10"
 +     name="button focus"
 +     tool_tip="Focus"
 +     width="35">
 +	  <button.commit_callback
 +	     function="BuildTool.setTool"
 +	     parameter="Focus" />
 +	</button>
 +    <button
 +     follows="left|top"
 +      height="25"
 +     image_bottom_pad="1"
 +     image_overlay="Tool_Grab"
 +     image_selected="PushButton_Selected_Press"
 +     layout="topleft"
 +     left_pad="10"
 +     name="button move"
 +     tool_tip="Move"
 +     width="35">
 +	  <button.commit_callback
 +	     function="BuildTool.setTool"
 +	     parameter="Move" />
 +	</button>
 +    <button
 +     follows="left|top"
 +     height="25"
 +     image_bottom_pad="1"
 +     image_overlay="Tool_Face"
 +     image_selected="PushButton_Selected_Press"
 +     layout="topleft"
 +     left_pad="10"
 +     name="button edit"
 +     tool_tip="Edit"
 +     width="35">
 +	  <button.commit_callback
 +	     function="BuildTool.setTool"
 +	     parameter="Edit" />
 +	</button>
 +    <button
 +     follows="left|top"
 +      height="25"
 +     image_bottom_pad="1"
 +     image_overlay="Tool_Create"
 +     image_selected="PushButton_Selected_Press"
 +     layout="topleft"
 +     left_pad="10"
 +     name="button create"
 +     tool_tip="Create"
 +     width="35">
 +	  <button.commit_callback
 +	     function="BuildTool.setTool"
 +	     parameter="Create" />
 +	</button>
 +    <button
 +     follows="left|top"
 +      height="25"
 +     image_bottom_pad="1"
 +     image_overlay="Tool_Dozer"
 +     image_selected="PushButton_Selected_Press"
 +     layout="topleft"
 +     left_pad="10"
 +     name="button land"
 +     tool_tip="Land"
 +     width="35">
 +	  <button.commit_callback
 +	     function="BuildTool.setTool"
 +	     parameter="Land" />
 +	</button>
 +    <text
 +     height="30"
 +     word_wrap="true"
 +     use_ellipses="true"
 +     type="string"
 +     text_color="LabelSelectedDisabledColor"
 +     length="1"
 +     follows="left|top"
 +     layout="topleft"
 +     left="8"
 +     name="text status"
 +     top_pad="3"
 +     width="285">
 +        Drag to move, shift-drag to copy
 +    </text>
 +   <radio_group
 +     layout="topleft"
 +     left="10"
 +      height="70"
 +      top="59"
 +     name="focus_radio_group">
 +        <radio_item
 +         top_pad="6"
 +         label="Zoom"
 +         layout="topleft"
 +         name="radio zoom" />
 +        <radio_item
 +         top_pad="6"
 +         label="Orbit (Ctrl)"
 +         layout="topleft"
 +         name="radio orbit" />
 +        <radio_item
 +         top_pad="6"
 +         label="Pan (Ctrl+Shift)"
 +         layout="topleft"
 +         name="radio pan" />
 +		 <radio_group.commit_callback
 +	     function="BuildTool.commitRadioFocus"/>
 +    </radio_group>
 +   <slider_bar
 +     follows="left|top"
 +     height="14"
 +     increment="0.01"
 +     initial_value="0.125"
 +     layout="topleft"
 +     max_val="0.5"
 +     top_delta="-2"
 +     left_delta="100"
 +     name="slider zoom"
 +     width="134">
 +	 <slider_bar.commit_callback
 +	     function="BuildTool.commitZoom"/>
 +	</slider_bar>
 +   <radio_group
 +      left="10"
 +      height="70"
 +      top="59"
 +     layout="topleft"
 +     name="move_radio_group">
 +        <radio_item
 +         top_pad="6"
 +         label="Move"
 +         layout="topleft"
 +         name="radio move" />
 +        <radio_item
 +		 top_pad="6"
 +         label="Lift (Ctrl)"
 +         layout="topleft"
 +         name="radio lift" />
 +        <radio_item
 +         top_pad="6"
 +         label="Spin (Ctrl+Shift)"
 +         layout="topleft"
 +         name="radio spin" />
 +		 <radio_group.commit_callback
 +			function="BuildTool.commitRadioMove"/>
 +	</radio_group>
 +	<radio_group
 +     follows="left|top"
 +	 left="5"
 +	 top="59"
 +	 height="70"
 +     layout="topleft"
 +	 name="edit_radio_group">
 +        <radio_item
 +		 label="Move"
 +		 layout="topleft"
 +		 name="radio position" />
 +        <radio_item
 +		 top_pad="6"
 +         label="Rotate (Ctrl)"
 +         layout="topleft"
 +         name="radio rotate" />
 +        <radio_item
 +		 top_pad="6"
 +         label="Stretch (Ctrl+Shift)"
 +         layout="topleft"
 +         name="radio stretch" />
 +        <radio_item
 +		 top_pad="6"
 +         label="Select Face"
 +         layout="topleft"
 +         name="radio select face" />
 +			<radio_group.commit_callback
 +			function="BuildTool.commitRadioEdit"/>
 +    </radio_group>
 +    <check_box
 +     left="5"
 +     follows="left|top"
 +     height="28"
 +	 control_name="EditLinkedParts"
 +     label="Edit linked"
 +     layout="topleft"
 +     name="checkbox edit linked parts"
 +     top_pad="-10">
 +		  <check_box.commit_callback
 +			function="BuildTool.selectComponent"/>
 +	</check_box>
 +
 +   <button
 +     follows="left|top"
 +     height="23"
 +     label="Link"
 +     top_pad="2"
 +     layout="topleft"
 +     left="5"
 +     name="link_btn"
 +     width="50">
 +	  <button.commit_callback
 +	     function="BuildTool.LinkObjects"/>
 +    </button>
 +    <button
 +     follows="left|top"
 +     height="23"
 +     label="Unlink"
 +     layout="topleft"
 +     left_pad="2"
 +     name="unlink_btn"
 +     width="50">
 +	  <button.commit_callback
 +	     function="BuildTool.UnlinkObjects"/>
 +    </button>
 +    <text
 +	   text_color="LtGray_50"
 +	   follows="top|left"
 +	   halign="left"
 +	   left_pad="3"
 +	   name="RenderingCost"
 +	   tool_tip="Shows the rendering cost calculated for this object"
 +	   top_delta="11"
 +	   type="string"
 +	   width="100">
 +	   þ: [COUNT]
 +	   </text>
 +    <check_box
 +     control_name="ScaleUniform"
 +     height="19"
 +     label=""
 +     layout="topleft"
 +     left="143"
 +     name="checkbox uniform"
 +     top="50"
 +     width="20" />
 +    <text
 +     height="19"
 +     label="Stretch Both Sides"
 +     left_delta="20"
 +     name="checkbox uniform label"
 +     top_delta="2"
 +     width="120"
 +     layout="topleft"
 +     follows="top|left"
 +     wrap="true">
 +     	Stretch Both Sides
 +    </text>
 +    <check_box
 +     control_name="ScaleStretchTextures"
 +     height="19"
 +     initial_value="true"
 +     label="Stretch Textures"
 +     layout="topleft"
 +     left="143"
 +     name="checkbox stretch textures"
 +     top_pad="-6"
 +     follows="left|top"
 +     width="134" />
 +   <check_box
 +     control_name="SnapEnabled"
 +     height="18"
 +     initial_value="true"
 +     label="Snap to grid"
 +     layout="topleft"
 +     top_pad="0"
 +     name="checkbox snap to grid"
 +     width="134" />
 +    <combo_box
 +     height="23"
 +     layout="topleft"
 +     follows="left|top"
 +     name="combobox grid mode"
 +     tool_tip="Choose the type of grid ruler for positioning the object"
 +     top_pad="0"
 +     width="108">
 +        <combo_box.item
 +         label="World grid"
 +         name="World"
 +         value="World" />
 +        <combo_box.item
 +         label="Local grid"
 +         name="Local"
 +         value="Local" />
 +        <combo_box.item
 +         label="Reference grid"
 +         name="Reference"
 +         value="Reference" />
 +		 <combo_box.commit_callback
 +	     function="BuildTool.gridMode"/>
 +    </combo_box>
 +    <button
 +     left_pad="0"
 +     image_selected="ForwardArrow_Press"
 +     image_unselected="ForwardArrow_Off"
 +     layout="topleft"
 +     follows="top|left"
 +     name="Options..."
 +     tool_tip="See more grid options"
 +     top_pad="-22"
 +     right="-10"
 +     width="18"
 +     height="23" >
 +	 <button.commit_callback
 +	     function="BuildTool.gridOptions"/>
 +	</button>
 +   <button
 +     follows="left|top"
 +     height="20"
 +     image_disabled="Object_Cube"
 +     image_disabled_selected="Object_Cube"
 +     image_selected="Object_Cube_Selected"
 +     image_unselected="Object_Cube"
 +     layout="topleft"
 +     left="10"
 +     name="ToolCube"
 +     tool_tip="Cube"
 +     top="51"
 +     width="20" />
 +    <button
 +     follows="left|top"
 +     height="20"
 +     image_disabled="Object_Prism"
 +     image_disabled_selected="Object_Prism"
 +     image_selected="Object_Prism_Selected"
 +     image_unselected="Object_Prism"
 +     layout="topleft"
 +     left_delta="29"
 +     name="ToolPrism"
 +     tool_tip="Prism"
 +     top_delta="0"
 +     width="20" />
 +    <button
 +     follows="left|top"
 +     height="20"
 +     image_disabled="Object_Pyramid"
 +     image_disabled_selected="Object_Pyramid"
 +     image_selected="Object_Pyramid_Selected"
 +     image_unselected="Object_Pyramid"
 +     layout="topleft"
 +     left_delta="29"
 +     name="ToolPyramid"
 +     tool_tip="Pyramid"
 +     top_delta="0"
 +     width="20" />
 +    <button
 +     follows="left|top"
 +     height="20"
 +     image_disabled="Object_Tetrahedron"
 +     image_disabled_selected="Object_Tetrahedron"
 +     image_selected="Object_Tetrahedron_Selected"
 +     image_unselected="Object_Tetrahedron"
 +     layout="topleft"
 +     left_delta="29"
 +     name="ToolTetrahedron"
 +     tool_tip="Tetrahedron"
 +     top_delta="0"
 +     width="20" />
 +    <button
 +     follows="left|top"
 +     height="20"
 +     image_disabled="Object_Cylinder"
 +     image_disabled_selected="Object_Cylinder"
 +     image_selected="Object_Cylinder_Selected"
 +     image_unselected="Object_Cylinder"
 +     layout="topleft"
 +     left_delta="29"
 +     name="ToolCylinder"
 +     tool_tip="Cylinder"
 +     top_delta="0"
 +     width="20" />
 +    <button
 +     follows="left|top"
 +     height="20"
 +     image_disabled="Object_Hemi_Cylinder"
 +     image_disabled_selected="Object_Hemi_Cylinder"
 +     image_selected="Object_Hemi_Cylinder_Selected"
 +     image_unselected="Object_Hemi_Cylinder"
 +     layout="topleft"
 +     left_delta="29"
 +     name="ToolHemiCylinder"
 +     tool_tip="Hemicylinder"
 +     top_delta="0"
 +     width="20" />
 +    <button
 +     follows="left|top"
 +     height="20"
 +     image_disabled="Object_Cone"
 +     image_disabled_selected="Object_Cone"
 +     image_selected="Object_Cone_Selected"
 +     image_unselected="Object_Cone"
 +     layout="topleft"
 +     left_delta="29"
 +     name="ToolCone"
 +     tool_tip="Cone"
 +     top_delta="0"
 +     width="20" />
 +    <button
 +     follows="left|top"
 +     height="20"
 +     image_disabled="Object_Hemi_Cone"
 +     image_disabled_selected="Object_Hemi_Cone"
 +     image_selected="Object_Hemi_Cone_Selected"
 +     image_unselected="Object_Hemi_Cone"
 +     layout="topleft"
 +     left_delta="29"
 +     name="ToolHemiCone"
 +     tool_tip="Hemicone"
 +     top_delta="0"
 +     width="20" />
 +    <button
 +     follows="left|top"
 +     height="20"
 +     image_disabled="Object_Sphere"
 +     image_disabled_selected="Object_Sphere"
 +     image_selected="Object_Sphere_Selected"
 +     image_unselected="Object_Sphere"
 +     layout="topleft"
 +     left_delta="29"
 +     name="ToolSphere"
 +     tool_tip="Sphere"
 +     top_delta="0"
 +     width="20" />
 +    <button
 +     follows="left|top"
 +     height="20"
 +     image_disabled="Object_Hemi_Sphere"
 +     image_disabled_selected="Object_Hemi_Sphere"
 +     image_selected="Object_Hemi_Sphere_Selected"
 +     image_unselected="Object_Hemi_Sphere"
 +     layout="topleft"
 +     left_delta="29"
 +     name="ToolHemiSphere"
 +     tool_tip="Hemisphere"
 +     top_delta="0"
 +     width="20" />
 +    <button
 +     follows="left|top"
 +     height="20"
 +     image_disabled="Object_Torus"
 +     image_disabled_selected="Object_Torus"
 +     image_selected="Object_Torus_Selected"
 +     image_unselected="Object_Torus"
 +     layout="topleft"
 +     left="10"
 +     name="ToolTorus"
 +     tool_tip="Torus"
 +     top="77"
 +     width="20" />
 +    <button
 +     follows="left|top"
 +     height="20"
 +     image_disabled="Object_Tube"
 +     image_disabled_selected="Object_Tube"
 +     image_selected="Object_Tube_Selected"
 +     image_unselected="Object_Tube"
 +     layout="topleft"
 +     left_delta="29"
 +     name="ToolTube"
 +     tool_tip="Tube"
 +     top_delta="0"
 +     width="20" />
 +    <button
 +     follows="left|top"
 +     height="20"
 +     image_disabled="Object_Ring"
 +     image_disabled_selected="Object_Ring"
 +     image_selected="Object_Ring_Selected"
 +     image_unselected="Object_Ring"
 +     layout="topleft"
 +     left_delta="29"
 +     name="ToolRing"
 +     tool_tip="Ring"
 +     top_delta="0"
 +     width="20" />
 +    <button
 +     follows="left|top"
 +     height="20"
 +     image_disabled="Object_Tree"
 +     image_disabled_selected="Object_Tree"
 +     image_selected="Object_Tree_Selected"
 +     image_unselected="Object_Tree"
 +     layout="topleft"
 +     left_delta="29"
 +     name="ToolTree"
 +     tool_tip="Tree"
 +     top_delta="0"
 +     width="20" />
 +    <button
 +     follows="left|top"
 +     height="20"
 +     image_disabled="Object_Grass"
 +     image_disabled_selected="Object_Grass"
 +     image_selected="Object_Grass_Selected"
 +     image_unselected="Object_Grass"
 +     image_overlay_color="Red"
 +     layout="topleft"
 +     left_delta="29"
 +     name="ToolGrass"
 +     tool_tip="Grass"
 +     top_delta="0"
 +     width="20" />
 +    <check_box
 +     control_name="CreateToolKeepSelected"
 +     height="19"
 +     label="Keep Tool selected"
 +     layout="topleft"
 +     left="4"
 +     name="checkbox sticky"
 +     top="101"
 +     width="128" />
 +    <check_box
 +     control_name="CreateToolCopySelection"
 +     height="19"
 +     label="Copy selection"
 +     layout="topleft"
 +     left_delta="0"
 +     name="checkbox copy selection"
 +     top_delta="15"
 +     width="134" />
 +    <check_box
 +     control_name="CreateToolCopyCenters"
 +     height="19"
 +     initial_value="true"
 +     label="Center Copy"
 +     layout="topleft"
 +     left_delta="18"
 +     name="checkbox copy centers"
 +     top="132"
 +     width="134" />
 +    <check_box
 +     control_name="CreateToolCopyRotates"
 +     height="19"
 +     label="Rotate Copy"
 +     layout="topleft"
 +     left_delta="0"
 +     name="checkbox copy rotates"
 +     top_delta="16"
 +     width="134" />
 +    <radio_group
 +     height="105"
 +     layout="topleft"
 +     left="4"
 +     name="land_radio_group"
 +     top="54"
 +     width="114">
 +        <radio_item
 +         height="19"
 +         label="Select Land"
 +         layout="topleft"
 +         left="0"
 +         name="radio select land"
 +         top="-106"
 +         width="134" />
 +        <radio_item
 +         height="19"
 +         label="Flatten"
 +         layout="topleft"
 +         left_delta="0"
 +         name="radio flatten"
 +         top_delta="15"
 +         width="114" />
 +        <radio_item
 +         height="19"
 +         label="Raise"
 +         layout="topleft"
 +         left_delta="0"
 +         name="radio raise"
 +         top_delta="15"
 +         width="114" />
 +        <radio_item
 +         height="19"
 +         label="Lower"
 +         layout="topleft"
 +         left_delta="0"
 +         name="radio lower"
 +         top_delta="15"
 +         width="114" />
 +        <radio_item
 +         height="19"
 +         label="Smooth"
 +         layout="topleft"
 +         left_delta="0"
 +         name="radio smooth"
 +         top_delta="15"
 +         width="114" />
 +        <radio_item
 +         height="19"
 +         label="Roughen"
 +         layout="topleft"
 +         left_delta="0"
 +         name="radio noise"
 +         top_delta="15"
 +         width="114" />
 +        <radio_item
 +         height="19"
 +         label="Revert"
 +         layout="topleft"
 +         left_delta="0"
 +         name="radio revert"
 +         top_delta="15"
 +         width="114" />
 +		 <radio_group.commit_callback
 +	     function="BuildTool.commitRadioLand"/>
 +    </radio_group>
 +    <text
 +     type="string"
 +     length="1"
 +     follows="left|top"
 +     height="12"
 +     layout="topleft"
 +     left="135"
 +     name="Bulldozer:"
 +     top="57"
 +     width="100">
 +        Bulldozer:
 +    </text>
 +    <text
 +     type="string"
 +     length="1"
 +     follows="left|top"
 +     height="12"
 +     layout="topleft"
 +     name="Dozer Size:"
 +     left="135"
 +     top_pad="5"
 +     width="50">
 +        Size
 +    </text>
 +    <slider_bar
 +	 control_name ="LandBrushSize"
 +     follows="left|top"
 +     height="19"
 +     initial_value="2.0"
 +     layout="topleft"
 +     max_val="11"
 +     min_val="1"
 +     left_pad="0"
 +     name="slider brush size"
 +     top_delta="-3"
 +     width="80" />
 +    <text
 +     type="string"
 +     length="1"
 +     follows="left|top"
 +     height="12"
 +     layout="topleft"
 +     name="Strength:"
 +     left="135"
 +     top_pad="5"
 +     width="50">
 +        Strength
 +    </text>
 +    <slider_bar
 +     follows="left|top"
 +     height="19"
 +     left_pad="0"
 +     initial_value="0.00"
 +     layout="topleft"
 +     max_val="2"
 +     min_val="-1"
 +     name="slider force"
 +     top_delta="-3"
 +     width="80" >
 +	  <slider_bar.commit_callback
 +	     function="BuildTool.LandBrushForce"/>
 +    </slider_bar>
 +    <button
 +     follows="left|top"
 +     height="23"
 +     label="Apply"
 +     label_selected="Apply"
 +     top_pad="5"
 +     layout="topleft"
 +     left="135"
 +     name="button apply to selection"
 +     tool_tip="Modify selected land"
 +     width="82">
 +	  <button.commit_callback
 +	     function="BuildTool.applyToSelection"/>
 +    </button>
 +	<text
 +	 text_color="LtGray_50"
 +	  type="string"
 +	  length="1"
 +	  height="10"
 +	  follows="left|top"
 +	  halign="right"
 +	  layout="topleft"
 +	  right="-10"
 +	  name="obj_count"
 +	  top_pad="5"
 +	  width="143">
 +		Objects: [COUNT]
 +	</text>
 +	<text
 +    text_color="LtGray_50"
 +     type="string"
 +     length="1"
 +	height="10" 
 +     follows="left|top"
 +     halign="right"
 +     layout="topleft"
 +     right="-10"
 +     name="prim_count"
 +     width="143">
 +		Prims: [COUNT]
 +	</text>
 +    <text
 +    text_color="LtGray_50"
 +     type="string"
 +     length="1"
 +     height="10"
 +     follows="left|top"
 +     halign="right"
 +     layout="topleft"
 +     right="-120"
 +     name="linked_set_count"
 +     top="144"
 +     width="80">
 +        Linked Sets: [COUNT]
 +    </text>
 +    <text
 +    text_color="LtGray_50"
 +     type="string"
 +     length="1"
 +     height="10"
 +     follows="left|top"
 +     halign="right"
 +     layout="topleft"
 +     top_delta="0"
 +     right="-8"
 +     name="linked_set_cost"
 +     tool_tip="Cost of currently selected linked sets as [prims],[physics complexity]" 
 +     width="80">
 +        Cost: [COST] / [PHYSICS]
 +    </text>
 +    <text
 +    text_color="LtGray_50"
 +     type="string"
 +     length="1"
 +     follows="left|top"
 +     halign="right"
 +     layout="topleft"
 +     top_pad="5"
 +     right="-120"
 +     name="object_count"
 +     width="80">
 +        Objects: [COUNT]
 +    </text>
 +    <text
 +    text_color="LtGray_50"
 +     type="string"
 +     length="1"
 +     follows="left|top"
 +     halign="right"
 +     layout="topleft"
 +	 top_delta="0"
 +     right="-8"
 +     name="object_cost"
 +     tool_tip="Cost of currently selected objects as [prims] / [physics complexity]"
 +     width="80">
 +        Cost: [COST] / [PHYSICS]
 +    </text>
 +    <!-- <text -->
 +    <!-- text_color="LtGray_50" -->
 +    <!--  type="string" -->
 +    <!--  length="1" -->
 +    <!--  height="10" -->
 +    <!--  follows="left|top" -->
 +    <!--  halign="right" -->
 +    <!--  layout="topleft" -->
 +    <!--  right="-10" -->
 +    <!--  name="obj_count" -->
 +    <!--  top_pad="5" -->
 +    <!--  width="143"> -->
 +    <!--     Objects: [COUNT] -->
 +    <!-- </text> -->
 +    <!-- <text -->
 +    <!-- text_color="LtGray_50" -->
 +    <!--  type="string" -->
 +    <!--  length="1" -->
 +    <!--  follows="left|top" -->
 +    <!--  halign="right" -->
 +    <!--  layout="topleft" -->
 +    <!--  right="-10" -->
 +    <!--  name="prim_count" -->
 +    <!--  width="143"> -->
 +    <!--     Prims: [COUNT] -->
 +    <!-- </text> -->
 +    <tab_container
 +     follows="left|top"
 +     height="410"
 +     halign="center"
 +     left="0"
 +     name="Object Info Tabs"
 +     tab_max_width="100"
 +     tab_min_width="40"
 +     tab_position="top"
 +     tab_height="25"
 +     top="173"
 +     width="295">
 +	
 +<panel
 +	 border="false"
 +	 follows="all"
 +	 label="General"
 +	 layout="topleft"
 +	 mouse_opaque="false"
 +	 help_topic="toolbox_general_tab"
 +	 name="General"
 +	 top="16"
 +	 width="295">
 +	 <panel.string
 +	  name="text deed continued">
 +		Deed
 +	 </panel.string>
 +	<panel.string
 +	 name="text deed">
 +		Deed
 +	</panel.string>
 +            <panel.string
 +             name="text modify info 1">
 +                You can modify this object
 +            </panel.string>
 +            <panel.string
 +             name="text modify info 2">
 +                You can modify these objects
 +            </panel.string>
 +            <panel.string
 +             name="text modify info 3">
 +                You can't modify this object
 +            </panel.string>
 +            <panel.string
 +             name="text modify info 4">
 +                You can't modify these objects
 +            </panel.string>
 +            <panel.string
 +             name="text modify warning">
 +                You must select entire object to set permissions
 +            </panel.string>
 +            <panel.string
 +             name="Cost Default">
 +                Price: L$
 +            </panel.string>
 +            <panel.string
 +             name="Cost Total">
 +                Total Price: L$
 +            </panel.string>
 +            <panel.string
 +             name="Cost Per Unit">
 +                Price Per: L$
 +            </panel.string>
 +            <panel.string
 +             name="Cost Mixed">
 +                Mixed Price
 +            </panel.string>
 +            <panel.string
 +             name="Sale Mixed">
 +                Mixed Sale
 +            </panel.string>
 +            <text
 +             follows="left|top"
 +             height="10"
 +             left="10"
 +             name="Name:"
 +             top="5"
 +             width="90">
 +                Name:
 +            </text>
 +            <line_editor
 +             follows="left|top|right"
 +             height="19"
 +             left_pad="0"
 +             max_length_bytes="63"
 +             name="Object Name"
 +             select_on_focus="true"
 +             top_delta="0"
 +             width="170" />
 +            <text
 +             follows="left|top"
 +             height="10"
 +             left="10"
 +             name="Description:"
 +             top_pad="3"
 +             width="90">
 +                Description:
 +            </text>
 +            <line_editor
 +             follows="left|top|right"
 +             height="19"
 +             left_pad="0"
 +             max_length_bytes="127"
 +             name="Object Description"
 +             select_on_focus="true"
 +             top_delta="0"
 +             width="170" />
 +            <text
 +             type="string"
 +             left="10"
 +             length="1"
 +             follows="left|top"
 +             height="19"
 +             layout="topleft"
 +             name="Creator:"
 +             top_pad="7"
 +             width="90">
 +                Creator:
 +            </text>
 +            <!-- *NOTE: Intentionally wide for long names -->
 +            <text
 +             type="string"
 +             length="1"
 +             follows="left|top"
 +             left_pad="0"
 +             height="20"
 +             layout="topleft"
 +             name="Creator Name"
 +             top_delta="0"
 +             translate="false"
 +             width="190"
 +             word_wrap="true"
 +             use_ellipses="true">
 +                TestString PleaseIgnore (please.ignore)
 +            </text>
 +            <text
 +             type="string"
 +             length="1"
 +             left="10"
 +             follows="left|top"
 +             height="19"
 +             layout="topleft"
 +             name="Owner:"
 +             top_pad="13"
 +             width="90">
 +                Owner:
 +            </text>
 +            <!-- *NOTE: Intentionally wide for long names -->
 +            <text
 +             type="string"
 +             length="1"
 +             follows="left|top"
 +             height="20"
 +             layout="topleft"
 +             name="Owner Name"
 +             left_pad="0"
 +             top_delta="0"
 +             translate="false"
 +             width="190"
 +             word_wrap="true"
 +             use_ellipses="true">
 +                TestString PleaseIgnore (please.ignore)
 +            </text>
 +           <text
 +             type="string"
 +             length="1"
 +             follows="left|top"
 +             layout="topleft"
 +             left="10"
 +             height="18"
 +             name="Group:"
 +             top_pad="17"
 +             width="75">
 +                Group:
 +            </text>
 +            <name_box
 +             follows="left|top"
 +             height="18"
 +             initial_value="Loading..."
 +             layout="topleft"
 +             left_pad="23"
 +             name="Group Name Proxy"
 +             width="142" />
 +            <button
 +			 follows="top|left"
 +			 height="23"
 +			 image_overlay="Edit_Wrench"
 +			 layout="topleft"
 +			 left_pad="13"
 +			 name="button set group"
 +			 tab_stop="false"
 +			 tool_tip="Choose a group to share this object's permissions"
 +			 width="23" />
 +            <check_box
 +             height="19"
 +             follows="left|top"
 +             label="Share"
 +             layout="topleft"
 +             name="checkbox share with group"
 +             tool_tip="Allow all members of the set group to share your modify permissions for this object. You must Deed to enable role restrictions."
 +             top_pad="10"
 +             left="100"
 +             width="87" />
 +            <button
 +             follows="top|left"
 +             height="23"
 +             label="Deed"
 +             label_selected="Deed"
 +             layout="topleft"
 +             name="button deed"
 +             left_pad="19"
 +             tool_tip="Deeding gives this item away with next owner permissions. Group shared objects can be deeded by a group officer."
 +             width="80" />
 +            <text
 +             type="string"
 +             length="1"
 +             follows="left|top"
 +             height="16"
 +             layout="topleft"
 +             top_pad="10"
 +             left="10"
 +             name="label click action"
 +             width="118">
 +                Click to:
 +            </text>
 +            <combo_box
 +             follows="left|top"
 +             height="23"
 +             layout="topleft"
 +             name="clickaction"
 +             width="148"
 +             left_pad="10">
 +                <combo_box.item
 +                 label="Touch  (default)"
 +                 name="Touch/grab(default)"
 +                 value="Touch" />
 +                <combo_box.item
 +                 label="Sit on object"
 +                 name="Sitonobject"
 +                 value="Sit" />
 +                <combo_box.item
 +                 label="Buy object"
 +                 name="Buyobject"
 +                 value="Buy" />
 +                <combo_box.item
 +                 label="Pay object"
 +                 name="Payobject"
 +                 value="Pay" />
 +                <combo_box.item
 +                 label="Open"
 +                 name="Open"
 +                 value="Open" />
 +				 <combo_box.item
 +                 label="Zoom"
 +                 name="Zoom"
 +                 value="Zoom" />
 +            </combo_box>
 +            <check_box
 +             height="23"
 +             label="For Sale:"
 +             layout="topleft"
 +             name="checkbox for sale"
 +             left="7"
 +             width="100" />
 +<!-- NEW SALE TYPE COMBO BOX -->
 +      <combo_box
 +            left_pad="10"
 +            layout="topleft"
 +            follows="left|top"
 +            allow_text_entry="false"
 +            height="23"
 +            initial_value="2"
 +            max_chars="20"
 +            mouse_opaque="true"
 +            name="sale type"
 +            width="168">
 +        <combo_box.item
 +           name="Copy"
 +           label="Copy"
 +           value="2" />
 +        <combo_box.item
 +           name="Contents"
 +           label="Contents"
 +           value="3" />
 +        <combo_box.item
 +           name="Original"
 +           label="Original"
 +           value="1" />
 +      </combo_box>
 +<!-- NEW PRICE SPINNER
 +Objects are allowed to be for sale for L$0 to invoke buy UI behavior
 +even though the user gets a free copy.
 +-->
 +    <spinner
 +        follows="left|top"
 +        decimal_digits="0"
 +        increment="1"
 +        top_pad="8"
 +        left="118"
 +        control_name="Edit Cost"
 +        name="Edit Cost"
 +        label="Price: L$"
 +        label_width="65"
 +        width="165"
 +        min_val="0"
 +        height="20"
 +        max_val="999999999" />
 +      <check_box
 +	   height="15"
 +	   width="110"
 +	   top_pad="5"
 +	   label="Show in search"
 +       layout="topleft"
 +	   left="100"
 +       name="search_check"
 +       tool_tip="Let people see this object in search results" />
 +		<panel
 +         border="false"
 +         follows="left|top"
 +         layout="topleft"
 +         mouse_opaque="false"
 +         background_visible="true"
 +         bg_alpha_color="DkGray"
 +         name="perms_build"
 +         left="0"
 +         top_pad="4"
 +         height="105"
 +         width="290">
 +            <text
 +             type="string"
 +             length="1"
 +             left="10"
 +             top_pad="9"
 +             text_color="EmphasisColor"
 +             height="16"
 +             follows="left|top|right"
 +             layout="topleft"
 +             name="perm_modify"
 +             width="264">
 +                You can modify this object
 +            </text>
 +            <text
 +               type="string"
 +               follows="left|top"
 +               name="Anyone can:"
 +               width="250"
 +               left="10">
 +                 Anyone:
 +            </text>
 +            <check_box
 +             height="19"
 +             label="Move"
 +             layout="topleft"
 +             name="checkbox allow everyone move"
 +             left="10"
 +             width="85" />
 +            <check_box
 +             height="19"
 +             label="Copy"
 +             layout="topleft"
 +             left_pad="0"
 +             name="checkbox allow everyone copy"
 +             width="90" />
 +            <text
 +               type="string"
 +               follows="left|top"
 +               height="19"
 +               name="Next owner can:"
 +               width="250"
 +               left="10">
 +                  Next owner:
 +            </text>
 +            <check_box
 +             follows="left|top|right"
 +             label="Modify"
 +             layout="topleft"
 +             left="10"
 +             name="checkbox next owner can modify"
 +             width="85" />
 +            <check_box
 +             follows="left|top|right"
 +             height="19"
 +             label="Copy"
 +             layout="topleft"
 +             left_pad="0"
 +             name="checkbox next owner can copy"
 +             width="80" />
 +            <check_box
 +             follows="left|top|right"
 +             height="19"
 +             label="Transfer"
 +             layout="topleft"
 +             name="checkbox next owner can transfer"
 +             left_pad="0"
 +             top_delta="0"
 +             tool_tip="Next owner can give away or resell this object"
 +             width="100" />
 +<!-- *NOTE: These "B/O/G/E/N/F fields may overlap "perm_modify" above, 
 +     but that's OK, this is used only for debugging. -->
 +            <text
 +             type="string"
 +             text_color="EmphasisColor"
 +             length="1"
 +             top="9"
 +             follows="left|top"
 +             layout="topleft"
 +             left="230"
 +             name="B:"
 +             height="10"
 +             width="80">
 +                B:
 +            </text>
 +            <text
 +             type="string"
 +             text_color="White"
 +             length="1"
 +             follows="left|top"
 +             layout="topleft"
 +             left_delta="0"
 +             top_pad="2"
 +             name="O:"
 +             height="10"
 +             width="80">
 +                O:
 +            </text>
 +            <text
 +             type="string"
 +             text_color="EmphasisColor"
 +             length="1"
 +             follows="left|top"
 +             layout="topleft"
 +             left_delta="0"
 +             top_pad="2"
 +             name="G:"
 +             height="10"
 +             width="80">
 +                G:
 +            </text>
 +            <text
 +             type="string"
 +             text_color="White"
 +             length="1"
 +             follows="left|top"
 +             left_delta="0"
 +             top_pad="2"
 +             layout="topleft"
 +             name="E:"
 +             height="10"
 +             width="80">
 +                E:
 +            </text>
 +            <text
 +             type="string"
 +             text_color="EmphasisColor"
 +             length="1"
 +             follows="left|top"
 +             layout="topleft"
 +             left_delta="0"
 +             top_pad="2"
 +             name="N:"
 +             height="10"
 +             width="80">
 +                N:
 +            </text>
 +            <text
 +             type="string"
 +             text_color="White"
 +             length="1"
 +             follows="left|top"
 +             layout="topleft"
 +             left_delta="0"
 +             top_pad="2"
 +             name="F:"
 +             height="10"
 +             width="80">
 +                F:
 +            </text>
 +        </panel>
 +      </panel>
 +      <!-- Object tab -->
 +      <panel
 +         border="false"
 +         follows="all"
 +         height="567"
 +         label="Object"
 +         layout="topleft"
 +         left_delta="0"
 +         mouse_opaque="false"
 +         help_topic="toolbox_object_tab"
 +         name="Object"
 +         top="16"
 +         width="295">
 +            <check_box
 +             height="19"
 +             label="Locked"
 +             layout="topleft"
 +             name="checkbox locked"
 +             tool_tip="Prevents object from being moved or deleted. Frequently useful during building to avoid unintended edits."
 +             top_pad="5"
 +             left="10"
 +             width="123" />
 +            <check_box
 +             height="19"
 +             label="Physical"
 +             layout="topleft"
 +             name="Physical Checkbox Ctrl"
 +             tool_tip="Allows object to be pushed and affected by gravity"
 +             top_pad="0"
 +             width="123" />
 +            <check_box
 +             height="19"
 +             label="Temporary"
 +             layout="topleft"
 +             name="Temporary Checkbox Ctrl"
 +             tool_tip="Causes object to be deleted 1 minute after creation"
 +             top_pad="0"
 +             width="123" />
 +            <check_box
 +             height="19"
 +             label="Phantom"
 +             layout="topleft"
 +             name="Phantom Checkbox Ctrl"
 +             tool_tip="Causes object to not collide with other objects or avatars"
 +             top_pad="0"
 +             width="123" />
 +
 +            <text
 +             type="string"
 +             length="1"
 +             follows="left|top"
 +             height="10"
 +             layout="topleft"
 +             name="label position"
 +             top_pad="10"
 +             width="121">
 +                Position (meters)
 +            </text>
 +            <spinner
 +             follows="left|top"
 +             height="19"
 +             increment="0.01"
 +             initial_value="0"
 +             label="X"
 +             label_width="10"
 +             layout="topleft"
 +             left_delta="0"
 +             max_val="512"
 +             min_val="-256"
 +             name="Pos X"
 +             text_enabled_color="1 0 0.3 .7"
 +             top_pad="5"
 +             width="87" />
 +            <spinner
 +             follows="left|top"
 +             height="19"
 +             increment="0.01"
 +             initial_value="0"
 +             label="Y"
 +             label_width="10"
 +             layout="topleft"
 +             left_delta="0"
 +             max_val="512"
 +             min_val="-256"
 +             name="Pos Y"
 +             text_enabled_color="EmphasisColor"
 +             top_pad="3"
 +             width="87" />
 +            <spinner
 +             follows="left|top"
 +             height="19"
 +             increment="0.01"
 +             initial_value="0"
 +             label="Z"
 +             label_width="10"
 +             layout="topleft"
 +             left_delta="0"
 +             max_val="4096"
 +             name="Pos Z"
 +             text_enabled_color="0 0.8 1 .65"
 +             top_pad="3"
 +             width="87" />
 +            <text
 +             type="string"
 +             length="1"
 +             follows="left|top"
 +             height="10"
 +             layout="topleft"
 +             left_delta="0"
 +             name="label size"
 +             top_pad="6"
 +             width="121">
 +                Size (meters)
 +            </text>
 +            <spinner
 +             follows="left|top"
 +             height="19"
 +             increment="0.01"
 +             initial_value="0"
 +             label="X"
 +             label_width="10"
 +             layout="topleft"
 +             left_delta="0"
 +             max_val="64"
 +             min_val="0.01"
 +             name="Scale X"
 +             text_enabled_color="1 1 1 1"
 +             top_pad="5"
 +             width="87" />
 +            <spinner
 +             follows="left|top"
 +             height="19"
 +             increment="0.01"
 +             initial_value="0"
 +             label="Y"
 +             label_width="10"
 +             layout="topleft"
 +             left_delta="0"
 +             max_val="64"
 +             min_val="0.01"
 +             name="Scale Y"
 +             text_enabled_color="1 1 1 1"
 +             top_pad="3"
 +             width="87" />
 +            <spinner
 +             follows="left|top"
 +             height="19"
 +             increment="0.01"
 +             initial_value="0"
 +             label="Z"
 +             label_width="10"
 +             layout="topleft"
 +             left_delta="0"
 +             max_val="64"
 +             min_val="0.01"
 +             name="Scale Z"
 +             text_enabled_color="1 1 1 1"
 +             top_pad="3"
 +             width="87" />
 +            <text
 +             type="string"
 +             length="1"
 +             follows="left|top"
 +             height="10"
 +             layout="topleft"
 +             left_delta="0"
 +             name="label rotation"
 +             top_pad="10"
 +             width="121">
 +                Rotation (degrees)
 +            </text>
 +            <spinner
 +             decimal_digits="2"
 +             follows="left|top"
 +             height="19"
 +             increment="1"
 +             initial_value="0"
 +             label="X"
 +             label_width="10"
 +             layout="topleft"
 +             left_delta="0"
 +             max_val="9999"
 +             min_val="-9999"
 +             name="Rot X"
 +             text_enabled_color="1 1 1 1"
 +             top_pad="5"
 +             width="87" />
 +            <spinner
 +             decimal_digits="2"
 +             follows="left|top"
 +             height="19"
 +             increment="1"
 +             initial_value="0"
 +             label="Y"
 +             label_width="10"
 +             layout="topleft"
 +             left_delta="0"
 +             max_val="9999"
 +             min_val="-9999"
 +             name="Rot Y"
 +             text_enabled_color="1 1 1 1"
 +             top_pad="3"
 +             width="87" />
 +            <spinner
 +             decimal_digits="2"
 +             follows="left|top"
 +             height="19"
 +             increment="1"
 +             initial_value="0"
 +             label="Z"
 +             label_width="10"
 +             layout="topleft"
 +             left_delta="0"
 +             max_val="9999"
 +             min_val="-9999"
 +             name="Rot Z"
 +             text_enabled_color="1 1 1 1"
 +             top_pad="3"
 +             width="87" />
 + <!--           <text
 +             type="string"
 +             length="1"
 +             follows="left|top"
 +             height="10"
 +             layout="topleft"
 +             left="125"
 +             name="label basetype"
 +             top="5"
 +             width="150">
 +                Prim Type
 +            </text>-->
 +            <combo_box
 +             height="19"
 +             layout="topleft"
 +             name="comboBaseType"
 +             top="6"
 +             left="125"
 +             width="150">
 +                <combo_box.item
 +                 label="Box"
 +                 name="Box"
 +                 value="Box" />
 +                <combo_box.item
 +                 label="Cylinder"
 +                 name="Cylinder"
 +                 value="Cylinder" />
 +                <combo_box.item
 +                 label="Prism"
 +                 name="Prism"
 +                 value="Prism" />
 +                <combo_box.item
 +                 label="Sphere"
 +                 name="Sphere"
 +                 value="Sphere" />
 +                <combo_box.item
 +                 label="Torus"
 +                 name="Torus"
 +                 value="Torus" />
 +                <combo_box.item
 +                 label="Tube"
 +                 name="Tube"
 +                 value="Tube" />
 +                <combo_box.item
 +                 label="Ring"
 +                 name="Ring"
 +                 value="Ring" />
 +                <combo_box.item
 +                 label="Sculpted"
 +                 name="Sculpted"
 +                 value="Sculpted" />
 +            </combo_box>
 +            <text
 +             type="string"
 +             length="1"
 +             follows="left|top"
 +             height="10"
 +             layout="topleft"
 +             left_delta="0"
 +             name="text cut"
 +             top_pad="5"
 +             width="150">
 +                Path Cut (begin/end)
 +            </text>
 +            <spinner
 +             follows="left|top"
 +             height="16"
 +             increment="0.025"
 +             initial_value="0"
 +             label="B"
 +             label_width="10"
 +             layout="topleft"
 +             left_delta="0"
 +             max_val="0.98"
 +             name="cut begin"
 +             top_pad="4"
 +             width="68" />
 +            <spinner
 +             follows="left|top"
 +             height="16"
 +             increment="0.025"
 +             initial_value="1"
 +             label="E"
 +             label_width="10"
 +             layout="topleft"
 +             left_pad="10"
 +             min_val="0.02"
 +             name="cut end"
 +             top_delta="0"
 +             width="68" />
 +            <text
 +             type="string"
 +             length="1"
 +             follows="left|top"
 +             height="10"
 +             layout="topleft"
 +             left="125"
 +             name="text hollow"
 +             top_pad="6"
 +             width="68">
 +                Hollow
 +            </text>
 +            <text
 +             type="string"
 +             length="1"
 +             follows="left|top"
 +             height="10"
 +             layout="topleft"
 +             left_pad="10"
 +             name="text skew"
 +             width="63">
 +                Skew
 +            </text>
 +            <spinner
 +             decimal_digits="1"
 +             follows="left|top"
 +             height="19"
 +             increment="5"
 +             initial_value="0"
 +             layout="topleft"
 +             left="125"
 +             max_val="95"
 +             name="Scale 1"
 +             top_pad="4"
 +             width="68" />
 +            <spinner
 +             decimal_digits="2"
 +             follows="left|top"
 +             height="19"
 +             increment="0.05"
 +             initial_value="0"
 +             layout="topleft"
 +             left_pad="10"
 +             max_val="0.95"
 +             min_val="-0.95"
 +             name="Skew"
 +             top_delta="0"
 +             width="68" />
 +            <text
 +             type="string"
 +             length="1"
 +             follows="left|top"
 +             height="15"
 +             layout="topleft"
 +             left="125"
 +             name="Hollow Shape"
 +             top_pad="4"
 +             width="150">
 +                Hollow Shape
 +            </text>
 +            <combo_box
 +             height="23"
 +             layout="topleft"
 +             left_delta="0"
 +             name="hole"
 +             top_pad="-2"
 +             width="150">
 +                <combo_box.item
 +                 label="Default"
 +                 name="Default"
 +                 value="Default" />
 +                <combo_box.item
 +                 label="Circle"
 +                 name="Circle"
 +                 value="Circle" />
 +                <combo_box.item
 +                 label="Square"
 +                 name="Square"
 +                 value="Square" />
 +                <combo_box.item
 +                 label="Triangle"
 +                 name="Triangle"
 +                 value="Triangle" />
 +            </combo_box>
 +            <text
 +             type="string"
 +             length="1"
 +             follows="left|top"
 +             height="10"
 +             layout="topleft"
 +             left_delta="0"
 +             name="text twist"
 +             top_pad="5"
 +             width="150">
 +                Twist (begin/end)
 +            </text>
 +            <spinner
 +             decimal_digits="0"
 +             follows="left|top"
 +             height="19"
 +             increment="9"
 +             initial_value="0"
 +             label="B"
 +             label_width="10"
 +             layout="topleft"
 +             left_delta="0"
 +             max_val="180"
 +             min_val="-180"
 +             name="Twist Begin"
 +             top_pad="4"
 +             width="68" />
 +            <spinner
 +             decimal_digits="0"
 +             follows="left|top"
 +             height="19"
 +             increment="9"
 +             initial_value="0"
 +             label="E"
 +             label_width="10"
 +             layout="topleft"
 +             left_pad="10"
 +             max_val="180"
 +             min_val="-180"
 +             name="Twist End"
 +             top_delta="0"
 +             width="68" />
 +            <text
 +             type="string"
 +             length="1"
 +             follows="left|top"
 +             height="10"
 +             layout="topleft"
 +             left="125"
 +             name="scale_taper"
 +             top_pad="3"
 +             width="150">
 +                Taper
 +            </text>
 +            <text
 +			 visible="false"
 +             type="string"
 +             length="1"
 +             follows="left|top"
 +             height="10"
 +             layout="topleft"
 +             left_delta="0"
 +             name="scale_hole"
 +             top_delta="0"
 +             width="150">
 +                Hole Size
 +            </text>
 +            <spinner
 +             decimal_digits="2"
 +             follows="left|top"
 +             height="19"
 +             increment="0.05"
 +             initial_value="0"
 +             label="X"
 +             label_width="10"
 +             layout="topleft"
 +             left_delta="0"
 +             min_val="-1"
 +             name="Taper Scale X"
 +             top_pad="4"
 +             width="68" />
 +            <spinner
 +             decimal_digits="2"
 +             follows="left|top"
 +             height="19"
 +             increment="0.05"
 +             initial_value="0"
 +             label="Y"
 +             label_width="10"
 +             layout="topleft"
 +             left_pad="10"
 +             min_val="-1"
 +             name="Taper Scale Y"
 +             top_delta="0"
 +             width="68" />
 +            <text
 +             type="string"
 +             length="1"
 +             follows="left|top"
 +             height="10"
 +             layout="topleft"
 +             left="125"
 +             name="text topshear"
 +             top_pad="3"
 +             width="141">
 +                Top Shear
 +            </text>
 +            <spinner
 +             decimal_digits="2"
 +             follows="left|top"
 +             height="19"
 +             increment="0.05"
 +             initial_value="0"
 +             label="X"
 +             label_width="10"
 +             layout="topleft"
 +             left_delta="0"
 +             max_val="0.5"
 +             min_val="-0.5"
 +             name="Shear X"
 +             top_pad="4"
 +             width="68" />
 +            <spinner
 +             decimal_digits="2"
 +             follows="left|top"
 +             height="19"
 +             increment="0.05"
 +             initial_value="0"
 +             label="Y"
 +             label_width="10"
 +             layout="topleft"
 +             left_pad="10"
 +             max_val="0.5"
 +             min_val="-0.5"
 +             name="Shear Y"
 +             top_delta="0"
 +             width="68" />
 +            <text
 +			 visible="false"
 +             type="string"
 +             length="1"
 +             follows="left|top"
 +             height="10"
 +             layout="topleft"
 +             left="125"
 +             name="advanced_cut"
 +             top_pad="3"
 +             width="150">
 +                Profile Cut (begin/end)
 +            </text>
 +            <text
 +			 visible="false"
 +             type="string"
 +             length="1"
 +             follows="left|top"
 +             height="10"
 +             layout="topleft"
 +             left_delta="0"
 +             name="advanced_dimple"
 +             top_delta="0"
 +             width="150">
 +                Dimple (begin/end)
 +            </text>
 +            <text
 +             type="string"
 +             length="1"
 +             follows="left|top"
 +             height="10"
 +             layout="topleft"
 +             left_delta="0"
 +             name="advanced_slice"
 +             top_delta="0"
 +             width="150">
 +                Slice (begin/end)
 +            </text>
 +            <spinner
 +             follows="left|top"
 +             height="19"
 +             increment="0.02"
 +             initial_value="0"
 +             label="B"
 +             label_width="10"
 +             layout="topleft"
 +             left_delta="0"
 +             max_val="0.98"
 +             name="Path Limit Begin"
 +             top_pad="3"
 +             width="68" />
 +            <spinner
 +             follows="left|top"
 +             height="19"
 +             increment="0.02"
 +             initial_value="1"
 +             label="E"
 +             label_width="10"
 +             layout="topleft"
 +             left_pad="10"
 +             min_val="0.02"
 +             name="Path Limit End"
 +             top_delta="0"
 +             width="68" />
 +            <text
 +			 visible="false"
 +             type="string"
 +             length="1"
 +             follows="left|top"
 +             height="10"
 +             layout="topleft"
 +             left="125"
 +             name="text taper2"
 +             top_pad="3"
 +             width="150">
 +                Taper
 +            </text>
 +            <spinner
 +			 visible="false"
 +             decimal_digits="2"
 +             follows="left|top"
 +             height="19"
 +             increment="0.05"
 +             initial_value="0"
 +             label="X"
 +             label_width="10"
 +             layout="topleft"
 +             left_delta="0"
 +             min_val="-1"
 +             name="Taper X"
 +             top_pad="3"
 +             width="68" />
 +            <spinner
 +			 visible="false"
 +             decimal_digits="2"
 +             follows="left|top"
 +             height="19"
 +             increment="0.05"
 +             initial_value="0"
 +             label="Y"
 +             label_width="10"
 +             layout="topleft"
 +             left_pad="10"
 +             min_val="-1"
 +             name="Taper Y"
 +             top_delta="0"
 +             width="68" />
 +            <text
 +			 visible="false"
 +             type="string"
 +             length="1"
 +             follows="left|top"
 +             height="10"
 +             layout="topleft"
 +             left="125"
 +             name="text radius delta"
 +             top_pad="2"
 +             width="78">
 +                Radius
 +            </text>
 +            <text
 +			 visible="false"
 +             type="string"
 +             length="1"
 +             follows="left|top"
 +             height="10"
 +             layout="topleft"
 +             left_delta="78"
 +             name="text revolutions"
 +             width="68">
 +                Revolutions
 +            </text>
 +            <spinner
 +			 visible="false"
 +             follows="left|top"
 +             height="19"
 +             increment="0.05"
 +             initial_value="0"
 +             layout="topleft"
 +             left="125"
 +             min_val="-1"
 +             name="Radius Offset"
 +             top_pad="4"
 +             width="68" />
 +            <spinner
 +			 visible="false"
 +             decimal_digits="2"
 +             follows="left|top"
 +             height="19"
 +             initial_value="1"
 +             layout="topleft"
 +             left_pad="10"
 +             max_val="4"
 +             min_val="1"
 +             name="Revolutions"
 +             top_delta="0"
 +             width="68" />
 +            <texture_picker
 +             can_apply_immediately="true"
 +             default_image_name="Default"
 +             follows="left|top"
 +             height="141"
 +             label="Sculpt Texture"
 +             layout="topleft"
 +             left="125"
 +             name="sculpt texture control"
 +             tool_tip="Click to choose a picture"
 +             top="70"
 +             visible="false"
 +             width="145" />
 +            <check_box
 +             height="19"
 +             label="Mirror"
 +             layout="topleft"
 +             left_delta="0"
 +             name="sculpt mirror control"
 +             tool_tip="Flips sculpted prim along the X axis"
 +             top_pad="8"
 +             visible="false"
 +             width="130" />
 +            <check_box
 +             height="19"
 +             label="Inside-out"
 +             layout="topleft"
 +             left_delta="0"
 +             name="sculpt invert control"
 +             tool_tip="Inverts the sculpted prims normals, making it appear inside-out"
 +             top_pad="4"
 +             visible="false"
 +             width="121" />
 +            <text
 +             type="string"
 +             length="1"
 +             follows="left|top"
 +             height="10"
 +             layout="topleft"
 +             left_delta="0"
 +             name="label sculpt type"
 +             top_pad="10"
 +             visible="false"
 +             width="130">
 +                Stitching type
 +            </text>
 +            <combo_box
 +             height="19"
 +             layout="topleft"
 +             left_delta="0"
 +             name="sculpt type control"
 +             top_pad="4"
 +             visible="false"
 +             width="150">
 +                <combo_box.item
 +                 label="(none)"
 +                 name="None"
 +                 value="None" />
 +                <combo_box.item
 +                 label="Sphere"
 +                 name="Sphere"
 +                 value="Sphere" />
 +                <combo_box.item
 +                 label="Torus"
 +                 name="Torus"
 +                 value="Torus" />
 +                <combo_box.item
 +                 label="Plane"
 +                 name="Plane"
 +                 value="Plane" />
 +                <combo_box.item
 +                 label="Cylinder"
 +                 name="Cylinder"
 +                 value="Cylinder" />
 +              <combo_box.item
 +                 label="Mesh"
 +                 name="Mesh"
 +                 value="Mesh" />
 +            </combo_box>
 +        </panel>
 +        <panel
 +         border="false"
 +         follows="all"
 +         height="367"
 +         label="Features"
 +         layout="topleft"
 +         left_delta="0"
 +         mouse_opaque="false"
 +         help_topic="toolbox_features_tab"
 +         name="Features"
 +         top_delta="0"
 +         width="295">
 +	<panel.string name="None">None</panel.string>
 +	<panel.string name="Prim">Prim</panel.string>
 +	<panel.string name="Convex Hull">Convex Hull</panel.string>
 +            <text
 +             type="string"
 +             length="1"
 +             follows="left|top"
 +             height="20"
 +             layout="topleft"
 +             left="10"
 +             name="select_single"
 +             top="5"
 +             width="252"
 +             word_wrap="true">
 +                Select only one primitive to edit features.
 +            </text>
 +            <text
 +             type="string"
 +             length="1"
 +             follows="left|top"
 +             height="10"
 +             layout="topleft"
 +             left="10"
 +             name="edit_object"
 +             top="5"
 +             width="252">
 +                Edit object features:
 +            </text>
 +            <check_box
 +             height="19"
 +             label="Flexible Path"
 +             layout="topleft"
 +             left="10"
 +             name="Flexible1D Checkbox Ctrl"
 +             tool_tip="Allows object to flex about the Z axis (Client-side only)"
 +             top_pad="20"
 +             width="121" />
 +            <spinner
 +             follows="left|top"
 +             height="19"
 +             increment="1"
 +             initial_value="2"
 +             label="Softness"
 +             label_width="70"
 +             layout="topleft"
 +             left_delta="0"
 +             max_val="3"
 +             name="FlexNumSections"
 +             top_pad="10"
 +             width="128" />
 +            <spinner
 +             follows="left|top"
 +             height="19"
 +             increment="0.5"
 +             initial_value="0.3"
 +             label="Gravity"
 +             label_width="70"
 +             layout="topleft"
 +             left_delta="0"
 +             max_val="10"
 +             min_val="-10"
 +             name="FlexGravity"
 +             top_pad="4"
 +             width="128" />
 +            <spinner
 +             follows="left|top"
 +             height="19"
 +             increment="0.5"
 +             initial_value="2"
 +             label="Drag"
 +             label_width="70"
 +             layout="topleft"
 +             left_delta="0"
 +             max_val="10"
 +             name="FlexFriction"
 +             top_pad="4"
 +             width="128" />
 +            <spinner
 +             follows="left|top"
 +             height="19"
 +             increment="0.5"
 +             initial_value="0"
 +             label="Wind"
 +             label_width="70"
 +             layout="topleft"
 +             left_delta="0"
 +             max_val="10"
 +             name="FlexWind"
 +             top_pad="4"
 +             width="128" />
 +            <spinner
 +             follows="left|top"
 +             height="19"
 +             increment="0.5"
 +             initial_value="1"
 +             label="Tension"
 +             label_width="70"
 +             layout="topleft"
 +             left_delta="0"
 +             max_val="10"
 +             name="FlexTension"
 +             top_pad="4"
 +             width="128" />
 +            <spinner
 +             follows="left|top"
 +             height="19"
 +             increment="0.01"
 +             initial_value="0"
 +             label="Force X"
 +             label_width="70"
 +             layout="topleft"
 +             left_delta="0"
 +             max_val="10"
 +             min_val="-10"
 +             name="FlexForceX"
 +             top_pad="4"
 +             width="128" />
 +            <spinner
 +             follows="left|top"
 +             height="19"
 +             increment="0.01"
 +             initial_value="0"
 +             label="Force Y"
 +             label_width="70"
 +             layout="topleft"
 +             left_delta="0"
 +             max_val="10"
 +             min_val="-10"
 +             name="FlexForceY"
 +             top_pad="4"
 +             width="128" />
 +            <spinner
 +             follows="left|top"
 +             height="19"
 +             increment="0.01"
 +             initial_value="0"
 +             label="Force Z"
 +             label_width="70"
 +             layout="topleft"
 +             left_delta="0"
 +             max_val="10"
 +             min_val="-10"
 +             name="FlexForceZ"
 +             top_pad="4"
 +             width="128" />
 +
 +            <check_box
 +             height="16"
 +             label="Light"
 +             layout="topleft"
 +             left="10"
 +             name="Light Checkbox Ctrl"
 +             tool_tip="Causes object to emit light"
 +             top_pad="15"
 +             width="60" />
 +            <color_swatch
 +             can_apply_immediately="true"
 +             color="0.5 0.5 0.5 1"
 +	     border.border_thickness="0"
 +             follows="left|top"
 +             height="50"
 +             layout="topleft"
 +             left_pad="10"
 +             top_pad="-17"
 +             name="colorswatch"
 +             tool_tip="Click to open color picker"
 +             width="40" />
 +         <texture_picker
 +            allow_no_texture="true"
 +            top_delta="0"
 +            can_apply_immediately="true"
 +            default_image_name="Default"
 +            follows="left|top"
 +            height="48"
 +            label=""
 +            left_delta="57"
 +            mouse_opaque="true"
 +            name="light texture control"
 +            tool_tip="Click to choose a projection image (only has effect with deferred rendering enabled)"
 +            width="32" />
 +          <spinner
 +             follows="left|top"
 +             height="19"
 +             initial_value="0.5"
 +             label="Intensity"
 +             label_width="70"
 +             layout="topleft"
 +             left="10"
 +             name="Light Intensity"
 +             top_pad="3"
 +             width="128" />
 +          <spinner bottom_delta="0"
 +                   decimal_digits="3"
 +                   follows="left|top"
 +                   height="16"
 +                   increment="0.1"
 +                   initial_value="0.5"
 +                   label="FOV"
 +                   label_width="55"
 +                   left="144"
 +                   max_val="3"
 +                   min_val="0"
 +                   mouse_opaque="true"
 +                   name="Light FOV"
 +                   width="120" />
 +          <spinner follows="left|top"
 +                   height="19"
 +                   initial_value="5"
 +                   label="Radius"
 +                   label_width="70"
 +                   layout="topleft"
 +                   left="10"
 +                   max_val="20"
 +                   name="Light Radius"
 +                   top_pad="3"
 +                   width="128" />
 +          <spinner bottom_delta="0"
 +                   decimal_digits="3"
 +                   follows="left|top"
 +                   height="16"
 +                   increment="0.5"
 +                   initial_value="0.5"
 +                   label="Focus"
 +                   label_width="55"
 +                   left="144"
 +                   max_val="20"
 +                   min_val="-20"
 +                   mouse_opaque="true"
 +                   name="Light Focus"
 +                   width="120" />
 +          <spinner follows="left|top"
 +                   height="19"
 +                   increment="0.25"
 +                   initial_value="1"
 +                   label="Falloff"
 +                   label_width="70"
 +                   layout="topleft"
 +                   left="10"
 +                   max_val="2"
 +                   name="Light Falloff"
 +                   top_pad="3"
 +                   width="128" />
 +          <spinner bottom_delta="0"
 +                   decimal_digits="3"
 +                   follows="left|top"
 +                   height="16"
 +                   increment="0.05"
 +                   initial_value="1"
 +                   label="Ambiance"
 +                   label_width="55"
 +                   left="144"
 +                   max_val="1"
 +                   min_val="0"
 +                   mouse_opaque="true"
 +                   name="Light Ambiance"
 +                   width="120" />
 +            <text
 +             type="string"
 +             length="1"
 +             follows="left|top"
 +             height="10"
 +             layout="topleft"
 +             name="label physicsshapetype"
 +             top="38"
 +             width="121">
 +                Physics Shape Type:
 +            </text>
 +			<combo_box
 +			   height="19"
 +			   top_delta="15" 
 +			   layout="topleft"
 +			   follows="left|top"
 +			   name="Physics Shape Type Combo Ctrl"
 +			   tool_tip="Choose the physics shape type"
 +			   width="108"/>
 +            <combo_box
 +             height="19"
 +             layout="topleft"
 +             name="material"
 +             top_pad="5"
 +             width="150">
 +                <combo_box.item
 +                 label="Stone"
 +                 name="Stone"
 +                 value="Stone" />
 +                <combo_box.item
 +                 label="Metal"
 +                 name="Metal"
 +                 value="Metal" />
 +                <combo_box.item
 +                 label="Glass"
 +                 name="Glass"
 +                 value="Glass" />
 +                <combo_box.item
 +                 label="Wood"
 +                 name="Wood"
 +                 value="Wood" />
 +                <combo_box.item
 +                 label="Flesh"
 +                 name="Flesh"
 +                 value="Flesh" />
 +                <combo_box.item
 +                 label="Plastic"
 +                 name="Plastic"
 +                 value="Plastic" />
 +                <combo_box.item
 +                 label="Rubber"
 +                 name="Rubber"
 +                 value="Rubber" />
 +            </combo_box>
 +
 +            <spinner
 +             follows="left|top"
 +             height="19"
 +             increment="1"
 +             initial_value="1"
 +             label="Gravity"
 +             label_width="70"
 +             layout="topleft"
 +             min_val="-1"
 +             max_val="28"
 +             name="Physics Gravity"
 +             top_pad="10"
 +             width="132" />
 +
 +            <spinner
 +             follows="left|top"
 +             height="19"
 +             increment="0.1"
 +             initial_value="0"
 +             label="Friction"
 +             label_width="70"
 +             layout="topleft"
 +             left_delta="0"
 +             max_val="255"
 +             min_val="0"
 +             name="Physics Friction"
 +             top_pad="4"
 +             width="132" />
 +
 +            <spinner
 +             follows="left|top"
 +             height="19"
 +             increment="0.1"
 +             initial_value="0"
 +             label="Density"
 +             label_width="70"
 +             layout="topleft"
 +             left_delta="0"
 +             max_val="22587"
 +             min_val="1"
 +             name="Physics Density"
 +             top_pad="4"
 +             width="132" />
 +
 +            <spinner
 +             follows="left|top"
 +             height="19"
 +             increment="0.01"
 +             initial_value="0"
 +             label="Restitution"
 +             label_width="70"
 +             layout="topleft"
 +             left_delta="0"
 +             max_val="1"
 +             min_val="0"
 +             name="Physics Restitution"
 +             top_pad="4"
 +             width="132" />
 +        </panel>
 +         <panel
 +         border="false"
 +         follows="all"
 +         height="367"
 +         label="Texture"
 +         layout="topleft"
 +         left_delta="0"
 +         mouse_opaque="false"
 +         help_topic="toolbox_texture_tab"
 +         name="Texture"
 +         top_delta="0"
 +         width="295">
 +            <panel.string
 +             name="string repeats per meter">
 +                Repeats Per Meter
 +            </panel.string>
 +            <panel.string
 +             name="string repeats per face">
 +                Repeats Per Face
 +            </panel.string>
 +            <texture_picker
 +             can_apply_immediately="true"
 +             default_image_name="Default"
 +             fallback_image="locked_image.j2c"
 +             follows="left|top"
 +             height="80"
 +             label="Texture"
 +             layout="topleft"
 +             left="10"
 +             name="texture control"
 +             tool_tip="Click to choose a picture"
 +             top="8"
 +             width="64" />
 +            <color_swatch
 +             can_apply_immediately="true"
 +             follows="left|top"
 +             height="80"
 +             label="Color"
 +             layout="topleft"
 +             left_pad="15"
 +             name="colorswatch"
 +             tool_tip="Click to open color picker"
 +             top_delta="0"
 +             width="64" />
 +            <text
 +             type="string"
 +             length="1"
 +             follows="left|top"
 +             height="10"
 +             layout="topleft"
 +             left_pad="15"
 +             name="color trans"
 +             text_readonly_color="LabelDisabledColor"
 +             top="6"
 +             width="110">
 +                Transparency %
 +            </text>
 +            <spinner
 +             decimal_digits="0"
 +             follows="left|top"
 +             height="19"
 +             increment="2"
 +             initial_value="0"
 +             layout="topleft"
 +             left_delta="0"
 +             max_val="100"
 +             name="ColorTrans"
 +             top_pad="4"
 +             width="80" />
 +            <text
 +             type="string"
 +             length="1"
 +             follows="left|top"
 +             height="10"
 +             layout="topleft"
 +             left_delta="0"
 +             name="glow label"
 +             text_readonly_color="LabelDisabledColor"
 +             top_pad="8"
 +             width="80">
 +                Glow
 +            </text>
 +            <spinner
 +             decimal_digits="2"
 +             follows="left|top"
 +             height="19"
 +             initial_value="0"
 +             layout="topleft"
 +             left_delta="0"
 +             name="glow"
 +             top_pad="4"
 +             width="80" />
 +            <check_box
 +             height="19"
 +             label="Full Bright"
 +             layout="topleft"
 +             left_delta="-5"
 +             name="checkbox fullbright"
 +             top_pad="4"
 +             width="81" />
 +            <text
 +             type="string"
 +             length="1"
 +             follows="left|top"
 +             height="10"
 +             layout="topleft"
 +             left="10"
 +             name="tex gen"
 +             text_readonly_color="LabelDisabledColor"
 +             top_pad="5"
 +             width="90">
 +                Mapping
 +            </text>
 +            <combo_box
 +             height="23"
 +             layout="topleft"
 +             left_delta="0"
 +             name="combobox texgen"
 +             top_pad="4"
 +             width="90">
 +                <combo_box.item
 +                 label="Default"
 +                 name="Default"
 +                 value="Default" />
 +                <combo_box.item
 +                 label="Planar"
 +                 name="Planar"
 +                 value="Planar" />
 +            </combo_box>
 +            <text
 +             type="string"
 +             length="1"
 +             follows="left|top"
 +             height="10"
 +             layout="topleft"
 +             name="label shininess"
 +             left_pad="4"
 +             text_readonly_color="LabelDisabledColor"
 +             top_pad="-37"
 +             width="90">
 +                Shininess
 +            </text>
 +            <combo_box
 +             height="23"
 +             layout="topleft"
 +             left_delta="0"
 +             name="combobox shininess"
 +             top_pad="4"
 +             width="90">
 +                <combo_box.item
 +                 label="None"
 +                 name="None"
 +                 value="None" />
 +                <combo_box.item
 +                 label="Low"
 +                 name="Low"
 +                 value="Low" />
 +                <combo_box.item
 +                 label="Medium"
 +                 name="Medium"
 +                 value="Medium" />
 +                <combo_box.item
 +                 label="High"
 +                 name="High"
 +                 value="High" />
 +            </combo_box>
 +            <text
 +             type="string"
 +             length="1"
 +             follows="left|top"
 +             height="10"
 +             layout="topleft"
 +             left_pad="4"
 +             name="label bumpiness"
 +             text_readonly_color="LabelDisabledColor"
 +             top_pad="-37"
 +             width="90">
 +                Bumpiness
 +            </text>
 +            <combo_box
 +             height="23"
 +             layout="topleft"
 +             left_delta="0"
 +             name="combobox bumpiness"
 +             top_pad="4"
 +             width="90">
 +                <combo_box.item
 +                 label="None"
 +                 name="None"
 +                 value="None" />
 +                <combo_box.item
 +                 label="Brightness"
 +                 name="Brightness"
 +                 value="Brightness" />
 +                <combo_box.item
 +                 label="Darkness"
 +                 name="Darkness"
 +                 value="Darkness" />
 +                <combo_box.item
 +                 label="woodgrain"
 +                 name="woodgrain"
 +                 value="woodgrain" />
 +                <combo_box.item
 +                 label="bark"
 +                 name="bark"
 +                 value="bark" />
 +                <combo_box.item
 +                 label="bricks"
 +                 name="bricks"
 +                 value="bricks" />
 +                <combo_box.item
 +                 label="checker"
 +                 name="checker"
 +                 value="checker" />
 +                <combo_box.item
 +                 label="concrete"
 +                 name="concrete"
 +                 value="concrete" />
 +                <combo_box.item
 +                 label="crustytile"
 +                 name="crustytile"
 +                 value="crustytile" />
 +                <combo_box.item
 +                 label="cutstone"
 +                 name="cutstone"
 +                 value="cutstone" />
 +                <combo_box.item
 +                 label="discs"
 +                 name="discs"
 +                 value="discs" />
 +                <combo_box.item
 +                 label="gravel"
 +                 name="gravel"
 +                 value="gravel" />
 +                <combo_box.item
 +                 label="petridish"
 +                 name="petridish"
 +                 value="petridish" />
 +                <combo_box.item
 +                 label="siding"
 +                 name="siding"
 +                 value="siding" />
 +                <combo_box.item
 +                 label="stonetile"
 +                 name="stonetile"
 +                 value="stonetile" />
 +                <combo_box.item
 +                 label="stucco"
 +                 name="stucco"
 +                 value="stucco" />
 +                <combo_box.item
 +                 label="suction"
 +                 name="suction"
 +                 value="suction" />
 +                <combo_box.item
 +                 label="weave"
 +                 name="weave"
 +                 value="weave" />
 +            </combo_box>
 +          <!--
 +            <line_editor
 +             bevel_style="in"
 +             border_style="line"
 +             border_thickness="1"
 +             follows="left|top"
 +             height="16"
 +             layout="topleft"
 +             left="10"
 +             max_length_bytes="63"
 +             name="Home Url"
 +             select_on_focus="true"
 +             top="134"
 +             width="250" />
 +            <check_box
 +             height="16"
 +             label="Media Face"
 +             layout="topleft"
 +             left_delta="0"
 +             name="has media"
 +             top_pad="6"
 +             width="70" />
 +            <button
 +             follows="left|top"
 +             font="SansSerifSmall"
 +             height="20"
 +             label="Set Media Info"
 +             label_selected="Set Media Info"
 +             layout="topleft"
 +             left_pad="60"
 +             name="media info set"
 +             top_delta="-4"
 +             width="120" />
 +-->
 +            <check_box
 +             follows="top|left"
 +             height="16"
 +             initial_value="false"
 +             label="Align planar faces"
 +             layout="topleft"
 +             left="17"
 +             name="checkbox planar align"
 +             tool_tip="Align textures on all selected faces with the last selected face. Requires Planar texture mapping."
 +             top_delta="26"
 +             width="140" />
 +            <text
 +             type="string"
 +             length="1"
 +             follows="left|top"
 +             height="10"
 +             layout="topleft"
 +             left="10"
 +             name="rpt"
 +             text_readonly_color="LabelDisabledColor"
 +             top_pad="2"
 +             width="140">
 +                Repeats / Face
 +            </text>
 +            <spinner
 +             follows="left|top"
 +             height="19"
 +             initial_value="0"
 +             label="Horizontal (U)"
 +             label_width="125"
 +             layout="topleft"
 +             left="20"
 +             max_val="100"
 +             name="TexScaleU"
 +             top_pad="5"
 +             width="185" />
 +            <check_box
 +             height="19"
 +             label="Flip"
 +             layout="topleft"
 +             left_pad="5"
 +             name="checkbox flip s"
 +             top_delta="0"
 +             width="70" />
 +            <spinner
 +             follows="left|top"
 +             height="19"
 +             initial_value="0"
 +             label="Vertical (V)"
 +             label_width="125"
 +             layout="topleft"
 +             left="20"
 +             max_val="100"
 +             name="TexScaleV"
 +             width="185" />
 +            <check_box
 +             height="19"
 +             label="Flip"
 +             layout="topleft"
 +             left_pad="5"
 +             name="checkbox flip t"
 +             top_delta="0"
 +             width="70" />
 +            <spinner
 +             decimal_digits="2"
 +             follows="left|top"
 +             height="19"
 +             increment="1"
 +             initial_value="0"
 +			 label="Rotation˚"
 +             layout="topleft"
 +			 label_width="135"
 +             left="10"
 +             max_val="9999"
 +             min_val="-9999"
 +             name="TexRot"
 +             width="195" />
 +
 +            <spinner
 +             decimal_digits="1"
 +             follows="left|top"
 +             height="23"
 +             initial_value="1"
 +			 label="Repeats / Meter"
 +             layout="topleft"
 +			 label_width="135"
 +             left="10"
 +             max_val="10"
 +             min_val="0.1"
 +             name="rptctrl"
 +             width="195" />
 +            <button
 +             follows="left|top"
 +             height="23"
 +             label="Apply"
 +             label_selected="Apply"
 +             layout="topleft"
 +             left_pad="5"
 +             name="button apply"
 +             width="75" />
 +            <text
 +             type="string"
 +             length="1"
 +             follows="left|top"
 +             height="10"
 +             layout="topleft"
 +             left="10"
 +             name="tex offset"
 +             text_readonly_color="LabelDisabledColor"
 +             width="200">
 +                Texture Offset
 +            </text>
 +            <spinner
 +             follows="left|top"
 +             height="19"
 +             initial_value="0"
 +             label="Horizontal (U)"
 +             label_width="125"
 +             layout="topleft"
 +             left="20"
 +             min_val="-1"
 +             name="TexOffsetU"
 +             width="185" />
 +            <spinner
 +             follows="left|top"
 +             height="19"
 +             initial_value="0"
 +             label="Vertical (V)"
 +             label_width="125"
 +             layout="topleft"
 +             left_delta="0"
 +             min_val="-1"
 +             name="TexOffsetV"
 +             top_pad="1"
 +             width="185" />
 +        <panel
 +         border="false"
 +         follows="left|top"
 +         layout="topleft"
 +         mouse_opaque="false"
 +         background_visible="true"
 +         bg_alpha_color="DkGray"
 +         name="Add_Media"
 +         left="0"
 +         height="47"
 +         width="290">
 +            <text
 +             type="string"
 +             length="1"
 +             follows="left|top"
 +             height="18"
 +             layout="topleft"
 +             left="10"
 +             top_pad="3"
 +             name="media_tex"
 +             width="190">
 +              Media
 +			</text>
 +			<button
 +			 follows="top|left"
 +			 height="18"
 +			 image_selected="AddItem_Press"
 +			 image_unselected="AddItem_Off"
 +			 image_disabled="AddItem_Disabled"
 +			 layout="topleft"
 +			 left_pad="0"
 +			 name="add_media"
 +			 tab_stop="false"
 +			 top_delta="0"
 +			 tool_tip="Add Media"
 +			 width="18">
 +				<button.commit_callback
 +				function="BuildTool.AddMedia"/>
 +			</button>
 +			<button
 +			 follows="top|left"
 +			 height="18"
 +			 image_selected="TrashItem_Press"
 +			 image_unselected="TrashItem_Off"
 +			 layout="topleft"
 +			 left_pad="5"
 +			 name="delete_media"
 +			 tool_tip="Delete this media texture"
 +			 top_delta="0"
 +			 width="18">
 +				<button.commit_callback
 +				function="BuildTool.DeleteMedia"/>
 +			</button>
 +			<button
 +			 follows="top|left"
 +			 tool_tip="Edit this Media"
 +			 height="12"
 +             image_disabled="Icon_Gear_Background"
 +             image_selected="Icon_Gear_Press"
 +             image_unselected="Icon_Gear_Foreground"
 +			 layout="topleft"
 +			 left_pad="10"
 +			 name="edit_media"
 +			 top_delta="3"
 +			 width="12">
 +				<button.commit_callback
 +				function="BuildTool.EditMedia"/>
 +			</button>
 +      <text
 +			 follows="left|top|right"
 +			 height="9"
 +			 layout="topleft"
 +			 left="10"
 +                         use_ellipses="true"
 +			 read_only="true"
 +			 name="media_info"
 +			 width="280" />
 +      <web_browser
 +        visible="false"
 +        enabled="false"
 +        border_visible="true"
 +        bottom_delta="0"
 +        follows="top|left"
 +        left="0"
 +        name="title_media"
 +        width="4"
 +        height="4"
 +        start_url="about:blank"
 +        decouple_texture_size="true" />
 +     <button
 +			 follows="right|top"
 +			 height="22"
 +			 label="Align"
 +			 label_selected="Align Media"
 +			 layout="topleft"
 +			 right="-16"
 +			 name="button align"
 +			 top_delta="-4"
 +			 tool_tip="Align media texture (must load first)"
 +			 width="80" />
 +		</panel>
 +	   </panel>
 +       <panel
 +         border="false"
 +         follows="all"
 +         label="Content"
 +         layout="topleft"
 +         left_delta="0"
 +         mouse_opaque="false"
 +         help_topic="toolbox_contents_tab"
 +         name="Contents"
 +         top_delta="0"
 +         width="295">
 +            <button
 +             follows="left|top"
 +             height="23"
 +             label="New Script"
 +             label_selected="New Script"
 +             layout="topleft"
 +             left="10"
 +             name="button new script"
 +             top="10"
 +             width="134" />
 +            <button
 +             follows="left|top"
 +             height="23"
 +             label="Permissions"
 +             layout="topleft"
 +             left_pad="8"
 +             name="button permissions"
 +             width="134" />
 +            <panel_inventory_object
 +             border="true"
 +             border_visible="true"
 +             bevel_style="in"
 +             follows="left|top|right"
 +             height="325"
 +             layout="topleft"
 +             left="10"
 +             name="contents_inventory"
 +             top="50"
 +             width="275" />
 +		</panel>
 +        </tab_container>
 +	<panel
 +	 follows="left|top"
 +     height="384"
 +     layout="topleft"
 +     left_delta="0"
 +     name="land info panel"
 +     top_delta="0"
 +     width="295">
 +    <text
 +         type="string"
 +         length="1"
 +         font="SansSerifBig"
 +         follows="left|top"
 +         height="19"
 +         layout="topleft"
 +         left="20"
 +         name="label_parcel_info"
 +         top="24"
 +         width="240">
 +            Parcel Information
 +        </text>
 +        <text
 +         type="string"
 +         length="1"
 +         follows="left|top"
 +         height="19"
 +         layout="topleft"
 +         left="30"
 +         name="label_area_price"
 +         top="48"
 +         width="150">
 +            Price: L$[PRICE] for [AREA] m²
 +        </text>
 +        <text
 +         type="string"
 +         length="1"
 +         follows="left|top"
 +         height="19"
 +         layout="topleft"
 +         left_delta="0"
 +         name="label_area"
 +         top_delta="0"
 +         width="150">
 +            Area: [AREA] m²
 +        </text>
 +        <button
 +         follows="left|top"
 +         height="23"
 +         label="About Land"
 +         label_selected="About Land"
 +         layout="topleft"
 +         left_delta="0"
 +         name="button about land"
 +         top_pad="4"
 +         width="125" />
 +        <check_box
 +         control_name="ShowParcelOwners"
 +         height="19"
 +         label="Show owners"
 +         layout="topleft"
 +         left_delta="0"
 +         name="checkbox show owners"
 +         tool_tip="Colorize the parcels according to the type of owner: 

Green = Your land 
Aqua = Your group's land 
Red = Owned by others 
Yellow = For sale 
Purple = For auction 
Grey = Public"
 +         top_pad="8"
 +         width="205" />
 +        <text
 +         type="string"
 +         length="1"
 +         font="SansSerifBig"
 +         follows="left|top"
 +         height="19"
 +         layout="topleft"
 +         left="20"
 +         name="label_parcel_modify"
 +         top="152"
 +         width="240">
 +            Modify Parcel
 +        </text>
 +        <button
 +         follows="left|top"
 +         height="23"
 +         label="Subdivide"
 +         label_selected="Subdivide"
 +         layout="topleft"
 +         left="30"
 +         name="button subdivide land"
 +         top="172"
 +         width="125" />
 +        <button
 +         follows="left|top"
 +         height="23"
 +         label="Join"
 +         label_selected="Join"
 +         layout="topleft"
 +         left_delta="0"
 +         name="button join land"
 +         top_pad="4"
 +         width="125" />
 +        <text
 +         type="string"
 +         length="1"
 +         font="SansSerifBig"
 +         follows="left|top"
 +         height="19"
 +         layout="topleft"
 +         left="20"
 +         name="label_parcel_trans"
 +         top="256"
 +         width="240">
 +            Land Transactions
 +        </text>
 +        <button
 +         follows="left|top"
 +         height="23"
 +         label="Buy Land"
 +         label_selected="Buy Land"
 +         layout="topleft"
 +         left="30"
 +         name="button buy land"
 +         top="276"
 +         width="125" />
 +        <button
 +         follows="left|top"
 +         height="23"
 +         label="Abandon Land"
 +         label_selected="Abandon Land"
 +         layout="topleft"
 +         left_delta="0"
 +         name="button abandon land"
 +         top_pad="4"
 +         width="125" />
 + </panel>
 +<!-- end of tabs -->
 +</floater>
 diff --git a/indra/newview/skins/default/xui/en/menu_inventory_add.xml b/indra/newview/skins/default/xui/en/menu_inventory_add.xml index 484af63097..b36b82ebd8 100644 --- a/indra/newview/skins/default/xui/en/menu_inventory_add.xml +++ b/indra/newview/skins/default/xui/en/menu_inventory_add.xml @@ -42,7 +42,7 @@                      <menu_item_call.on_enable                       function="File.EnableUpload" />                  </menu_item_call> -		            <menu_item_call +		<menu_item_call                   label="Model..."                   layout="topleft"                   name="Upload Model"> @@ -54,6 +54,18 @@                  <menu_item_call.on_visible                  function="File.VisibleUploadModel"/>                  </menu_item_call> +              <menu_item_call +                label="Model Wizard..." +                layout="topleft" +                name="Upload Model Wizard"> +                <menu_item_call.on_click +                 function="Floater.Show" +                 parameter="upload_model_wizard" /> +                <menu_item_call.on_enable +                 function="File.EnableUploadModel" /> +                <menu_item_call.on_visible +                function="File.VisibleUploadModel"/> +	      </menu_item_call>                  <menu_item_call                   label="Bulk (L$[COST] per file)..."                   layout="topleft" diff --git a/indra/newview/skins/default/xui/en/panel_region_general.xml b/indra/newview/skins/default/xui/en/panel_region_general.xml index e0d9f3f714..3f9195d092 100644 --- a/indra/newview/skins/default/xui/en/panel_region_general.xml +++ b/indra/newview/skins/default/xui/en/panel_region_general.xml @@ -134,6 +134,7 @@       top="190"       width="80" />  	<check_box +     visible="FALSE"       height="20"       label="Allow Mesh Objects"       layout="topleft" | 
