diff options
| -rwxr-xr-x | indra/newview/app_settings/settings.xml | 11 | ||||
| -rwxr-xr-x[-rw-r--r--] | indra/newview/llviewerwearable.cpp | 7 | ||||
| -rwxr-xr-x | indra/newview/llvoavatar.cpp | 59 | 
3 files changed, 49 insertions, 28 deletions
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 674685f3bc..13bf6c18f8 100755 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -1927,6 +1927,17 @@        <key>Value</key>        <string />      </map> +  <key>DebugAvatarAppearanceMessage</key> +  <map> +    <key>Comment</key> +    <string>Dump a bunch of XML files when handling appearance messages</string> +    <key>Persist</key> +    <integer>1</integer> +    <key>Type</key> +    <string>Boolean</string> +    <key>Value</key> +    <integer>0</integer> +  </map>  	<key>DebugAvatarRezTime</key>  	<map>  		<key>Comment</key> diff --git a/indra/newview/llviewerwearable.cpp b/indra/newview/llviewerwearable.cpp index e9fa92e8be..5b74f1a976 100644..100755 --- a/indra/newview/llviewerwearable.cpp +++ b/indra/newview/llviewerwearable.cpp @@ -322,7 +322,7 @@ void LLViewerWearable::writeToAvatar(LLAvatarAppearance *avatarp)  	if (!viewer_avatar->isValid()) return; -#if 1 +#if 0 // FIXME restrict to server-bake regions.  	if (!viewer_avatar->isUsingLocalAppearance())  	{  		return; @@ -528,7 +528,10 @@ void LLViewerWearable::setVisualParams()  		S32 id = iter->first;  		LLVisualParam *wearable_param = iter->second;  		F32 value = wearable_param->getWeight(); -		gAgentAvatarp->setVisualParamWeight(id, value, FALSE); +		if (gAgentAvatarp->isUsingLocalAppearance()) +		{ +			gAgentAvatarp->setVisualParamWeight(id, value, FALSE); +		}  	}  } diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 1b185ed508..5ccd2d206d 100755 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -48,6 +48,7 @@  #include "llcallingcard.h"		// IDEVO for LLAvatarTracker  #include "lldrawpoolavatar.h"  #include "lldriverparam.h" +#include "llpolyskeletaldistortion.h"  #include "lleditingmotion.h"  #include "llemote.h"  //#include "llfirstuse.h" @@ -191,8 +192,7 @@ enum ERenderName  // Utility func - FIXME move out of avatar.  std::string get_sequential_numbered_file_name(const std::string& prefix, -											  const std::string& suffix, -											  const S32 width = 4); +											  const std::string& suffix);  //-----------------------------------------------------------------------------  // Callback data @@ -6277,6 +6277,24 @@ bool LLVOAvatar::visualParamWeightsAreDefault()  	return rtn;  } +void dump_visual_param(apr_file_t* file, LLVisualParam* viewer_param, F32 value) +{ +	std::string type_string = "unknown"; +	if (dynamic_cast<LLTexLayerParamAlpha*>(viewer_param)) +		type_string = "param_alpha"; +	if (dynamic_cast<LLTexLayerParamColor*>(viewer_param)) +		type_string = "param_color"; +	if (dynamic_cast<LLDriverParam*>(viewer_param)) +		type_string = "param_driver"; +	if (dynamic_cast<LLPolyMorphTarget*>(viewer_param)) +		type_string = "param_morph"; +	if (dynamic_cast<LLPolySkeletalDistortion*>(viewer_param)) +		type_string = "param_skeleton"; +	apr_file_printf(file, "\t\t<param id=\"%d\" name=\"%s\" value=\"%.3f\"/ type=\"%s\">\n", +					viewer_param->getID(), viewer_param->getName().c_str(), value, type_string.c_str()); +} + +  void LLVOAvatar::dumpAppearanceMsgParams( const std::string& dump_prefix,  										  const std::vector<F32>& params_for_dump,  										  const LLTEContents& tec) @@ -6306,8 +6324,7 @@ void LLVOAvatar::dumpAppearanceMsgParams( const std::string& dump_prefix,  		}  		LLViewerVisualParam* viewer_param = (LLViewerVisualParam*)param;  		F32 value = params_for_dump[i]; -		apr_file_printf(file, "\t\t<param id=\"%d\" name=\"%s\" value=\"%.3f\"/>\n", -						viewer_param->getID(), viewer_param->getName().c_str(), value); +		dump_visual_param(file, viewer_param, value);  		param = getNextVisualParam();  	}  	for (U32 i = 0; i < tec.face_count; i++) @@ -6323,14 +6340,14 @@ void LLVOAvatar::dumpAppearanceMsgParams( const std::string& dump_prefix,  //-----------------------------------------------------------------------------  void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )  { -	//std::string dump_prefix = getFullname() + " "; -	//dumpArchetypeXML(dump_prefix + "process_start"); +	bool enable_verbose_dumps = gSavedSettings.getBOOL("DebugAvatarAppearanceMessage"); +	std::string dump_prefix = getFullname() + "_" + (isSelf()?"s":"o") + "_"; +	if (enable_verbose_dumps) { dumpArchetypeXML(dump_prefix + "process_start"); }  	if (gSavedSettings.getBOOL("BlockAvatarAppearanceMessages"))  	{  		llwarns << "Blocking AvatarAppearance message" << llendl;  		return;  	} -	  	LLMemType mt(LLMemType::MTYPE_AVATAR);  	BOOL is_first_appearance_message = !mFirstAppearanceMessageReceived; @@ -6349,8 +6366,6 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )  			return;  		}  	} -	clearVisualParamWeights(); -	//dumpArchetypeXML(dump_prefix + "process_post_clear");  	ESex old_sex = getSex(); @@ -6470,12 +6485,11 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )  				}  				param = getNextVisualParam();  			} -			//dumpAppearanceMsgParams(dump_prefix + "appearance_msg", -			//						params_for_dump, -			//						tec); +			if (enable_verbose_dumps) +				dumpAppearanceMsgParams(dump_prefix + "appearance_msg", params_for_dump, tec);  		} -		//dumpArchetypeXML(dump_prefix + "process_post_set_weights"); +		if (enable_verbose_dumps) { dumpArchetypeXML(dump_prefix + "process_post_set_weights"); }  		const S32 expected_tweakable_count = getVisualParamCountInGroup(VISUAL_PARAM_GROUP_TWEAKABLE); // don't worry about VISUAL_PARAM_GROUP_TWEAKABLE_NO_TRANSMIT  		if (num_blocks != expected_tweakable_count) @@ -6541,7 +6555,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )  	updateMeshTextures(); -	//dumpArchetypeXML(dump_prefix + "process_end"); +	if (enable_verbose_dumps) dumpArchetypeXML(dump_prefix + "process_end");  //	llinfos << "processAvatarAppearance end " << mID << llendl;  } @@ -6784,8 +6798,7 @@ void LLVOAvatar::useBakedTexture( const LLUUID& id )  }  std::string get_sequential_numbered_file_name(const std::string& prefix, -											  const std::string& suffix, -											  const S32 width) +											  const std::string& suffix)  {  	typedef std::map<std::string,S32> file_num_type;  	static  file_num_type file_nums; @@ -6795,10 +6808,8 @@ std::string get_sequential_numbered_file_name(const std::string& prefix,  	{  		num = it->second;  	} -	std::ostringstream temp; -	temp << std::setw(width) << std::setfill('0') << num;  	file_nums[prefix] = num+1; -	std::string outfilename = prefix + " " + temp.str() + ".xml"; +	std::string outfilename = prefix + " " + llformat("%04d",num) + ".xml";  	std::replace(outfilename.begin(),outfilename.end(),' ','_');  	return outfilename;  } @@ -6808,7 +6819,7 @@ void LLVOAvatar::dumpArchetypeXML(const std::string& prefix, bool group_by_weara  	std::string outprefix(prefix);  	if (outprefix.empty())  	{ -		outprefix = getFullname(); +		outprefix = getFullname() + (isSelf()?"_s":"_o");  	}  	if (outprefix.empty())  	{ @@ -6846,8 +6857,7 @@ void LLVOAvatar::dumpArchetypeXML(const std::string& prefix, bool group_by_weara  				if( (viewer_param->getWearableType() == type) &&   					(viewer_param->isTweakable() ) )  				{ -					apr_file_printf(file, "\t\t<param id=\"%d\" name=\"%s\" value=\"%.3f\"/>\n", -									viewer_param->getID(), viewer_param->getName().c_str(), viewer_param->getWeight()); +					dump_visual_param(file, viewer_param, viewer_param->getWeight());  				}  			} @@ -6873,10 +6883,7 @@ void LLVOAvatar::dumpArchetypeXML(const std::string& prefix, bool group_by_weara  		for (LLVisualParam* param = getFirstVisualParam(); param; param = getNextVisualParam())  		{  			LLViewerVisualParam* viewer_param = (LLViewerVisualParam*)param; -			{ -				apr_file_printf(file, "\t\t<param id=\"%d\" name=\"%s\" value=\"%.3f\"/>\n", -								viewer_param->getID(), viewer_param->getName().c_str(), viewer_param->getWeight()); -			} +			dump_visual_param(file, viewer_param, viewer_param->getWeight());  		}  		for (U8 te = 0; te < TEX_NUM_INDICES; te++)  | 
