diff options
Diffstat (limited to 'indra/newview')
58 files changed, 1075 insertions, 1388 deletions
| diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index 7a34112807..3eeaacf93b 100644 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -159,11 +159,11 @@ bool handleSlowMotionAnimation(const LLSD& newvalue)  {  	if (newvalue.asBoolean())  	{ -		gAgent.getAvatarObject()->setAnimTimeFactor(0.2f); +		gAgentAvatarp->setAnimTimeFactor(0.2f);  	}  	else  	{ -		gAgent.getAvatarObject()->setAnimTimeFactor(1.0f); +		gAgentAvatarp->setAnimTimeFactor(1.0f);  	}  	return true;  } @@ -207,8 +207,6 @@ LLAgent::LLAgent() :  	mDistanceTraveled(0.F),  	mLastPositionGlobal(LLVector3d::zero), -	mAvatarObject(NULL), -  	mRenderState(0),  	mTypingTimer(), @@ -294,7 +292,6 @@ void LLAgent::init()  //-----------------------------------------------------------------------------  void LLAgent::cleanup()  { -	mAvatarObject = NULL;  	mRegionp = NULL;  } @@ -315,7 +312,7 @@ LLAgent::~LLAgent()  //-----------------------------------------------------------------------------  void LLAgent::onAppFocusGained()  { -	if (CAMERA_MODE_MOUSELOOK == gAgentCamera.mCameraMode) +	if (CAMERA_MODE_MOUSELOOK == gAgentCamera.getCameraMode())  	{  		gAgentCamera.changeCameraToDefault();  		LLToolMgr::getInstance()->clearSavedTool(); @@ -325,12 +322,12 @@ void LLAgent::onAppFocusGained()  void LLAgent::ageChat()  { -	if (mAvatarObject.notNull()) +	if (isAgentAvatarValid())  	{  		// get amount of time since I last chatted -		F64 elapsed_time = (F64)mAvatarObject->mChatTimer.getElapsedTimeF32(); +		F64 elapsed_time = (F64)gAgentAvatarp->mChatTimer.getElapsedTimeF32();  		// add in frame time * 3 (so it ages 4x) -		mAvatarObject->mChatTimer.setAge(elapsed_time + (F64)gFrameDTClamped * (CHAT_AGE_FAST_RATE - 1.0)); +		gAgentAvatarp->mChatTimer.setAge(elapsed_time + (F64)gFrameDTClamped * (CHAT_AGE_FAST_RATE - 1.0));  	}  } @@ -517,20 +514,20 @@ BOOL LLAgent::getFlying() const  //-----------------------------------------------------------------------------  void LLAgent::setFlying(BOOL fly)  { -	if (mAvatarObject.notNull()) +	if (isAgentAvatarValid())  	{  		// *HACK: Don't allow to start the flying mode if we got ANIM_AGENT_STANDUP signal  		// because in this case we won't get a signal to start avatar flying animation and  		// it will be walking with flying mode "ON" indication. However we allow to switch  		// the flying mode off if we get ANIM_AGENT_STANDUP signal. See process_avatar_animation().  		// See EXT-2781. -		if(fly && mAvatarObject->mSignaledAnimations.find(ANIM_AGENT_STANDUP) != mAvatarObject->mSignaledAnimations.end()) +		if(fly && gAgentAvatarp->mSignaledAnimations.find(ANIM_AGENT_STANDUP) != gAgentAvatarp->mSignaledAnimations.end())  		{  			return;  		}  		// don't allow taking off while sitting -		if (fly && mAvatarObject->isSitting()) +		if (fly && gAgentAvatarp->isSitting())  		{  			return;  		} @@ -583,9 +580,9 @@ void LLAgent::toggleFlying()  bool LLAgent::enableFlying()  {  	BOOL sitting = FALSE; -	if (gAgent.getAvatarObject()) +	if (isAgentAvatarValid())  	{ -		sitting = gAgent.getAvatarObject()->isSitting(); +		sitting = gAgentAvatarp->isSitting();  	}  	return !sitting;  } @@ -755,9 +752,9 @@ void LLAgent::sendReliableMessage()  //-----------------------------------------------------------------------------  LLVector3 LLAgent::getVelocity() const  { -	if (mAvatarObject.notNull()) +	if (isAgentAvatarValid())  	{ -		return mAvatarObject->getVelocity(); +		return gAgentAvatarp->getVelocity();  	}  	else  	{ @@ -776,13 +773,13 @@ void LLAgent::setPositionAgent(const LLVector3 &pos_agent)  		llerrs << "setPositionAgent is not a number" << llendl;  	} -	if (mAvatarObject.notNull() && mAvatarObject->getParent()) +	if (isAgentAvatarValid() && gAgentAvatarp->getParent())  	{  		LLVector3 pos_agent_sitting;  		LLVector3d pos_agent_d; -		LLViewerObject *parent = (LLViewerObject*)mAvatarObject->getParent(); +		LLViewerObject *parent = (LLViewerObject*)gAgentAvatarp->getParent(); -		pos_agent_sitting = mAvatarObject->getPosition() * parent->getRotation() + parent->getPositionAgent(); +		pos_agent_sitting = gAgentAvatarp->getPosition() * parent->getRotation() + parent->getPositionAgent();  		pos_agent_d.setVec(pos_agent_sitting);  		mFrameAgent.setOrigin(pos_agent_sitting); @@ -803,9 +800,9 @@ void LLAgent::setPositionAgent(const LLVector3 &pos_agent)  //-----------------------------------------------------------------------------  const LLVector3d &LLAgent::getPositionGlobal() const  { -	if (mAvatarObject.notNull() && !mAvatarObject->mDrawable.isNull()) +	if (isAgentAvatarValid() && !gAgentAvatarp->mDrawable.isNull())  	{ -		mPositionGlobal = getPosGlobalFromAgent(mAvatarObject->getRenderPosition()); +		mPositionGlobal = getPosGlobalFromAgent(gAgentAvatarp->getRenderPosition());  	}  	else  	{ @@ -820,9 +817,9 @@ const LLVector3d &LLAgent::getPositionGlobal() const  //-----------------------------------------------------------------------------  const LLVector3 &LLAgent::getPositionAgent()  { -	if(mAvatarObject.notNull() && !mAvatarObject->mDrawable.isNull()) +	if (isAgentAvatarValid() && !gAgentAvatarp->mDrawable.isNull())  	{ -		mFrameAgent.setOrigin(mAvatarObject->getRenderPosition());	 +		mFrameAgent.setOrigin(gAgentAvatarp->getRenderPosition());	  	}  	return mFrameAgent.getOrigin(); @@ -948,21 +945,21 @@ LLVector3 LLAgent::getReferenceUpVector()  {  	// this vector is in the coordinate frame of the avatar's parent object, or the world if none  	LLVector3 up_vector = LLVector3::z_axis; -	if (mAvatarObject.notNull() &&  -		mAvatarObject->getParent() && -		mAvatarObject->mDrawable.notNull()) +	if (isAgentAvatarValid() &&  +		gAgentAvatarp->getParent() && +		gAgentAvatarp->mDrawable.notNull())  	{ -		U32 camera_mode = gAgentCamera.mCameraAnimating ? gAgentCamera.mLastCameraMode : gAgentCamera.mCameraMode; +		U32 camera_mode = gAgentCamera.getCameraAnimating() ? gAgentCamera.getLastCameraMode() : gAgentCamera.getCameraMode();  		// and in third person...  		if (camera_mode == CAMERA_MODE_THIRD_PERSON)  		{  			// make the up vector point to the absolute +z axis -			up_vector = up_vector * ~((LLViewerObject*)mAvatarObject->getParent())->getRenderRotation(); +			up_vector = up_vector * ~((LLViewerObject*)gAgentAvatarp->getParent())->getRenderRotation();  		}  		else if (camera_mode == CAMERA_MODE_MOUSELOOK)  		{  			// make the up vector point to the avatar's +z axis -			up_vector = up_vector * mAvatarObject->mDrawable->getRotation(); +			up_vector = up_vector * gAgentAvatarp->mDrawable->getRotation();  		}  	} @@ -998,7 +995,7 @@ F32 LLAgent::clampPitchToLimits(F32 angle)  	F32 angle_from_skyward = acos( mFrameAgent.getAtAxis() * skyward ); -	if (mAvatarObject.notNull() && mAvatarObject->isSitting()) +	if (isAgentAvatarValid() && gAgentAvatarp->isSitting())  	{  		look_down_limit = 130.f * DEG_TO_RAD;  	} @@ -1076,17 +1073,6 @@ void LLAgent::setKey(const S32 direction, S32 &key)  //-----------------------------------------------------------------------------  U32 LLAgent::getControlFlags()  { -/* -	// HACK -- avoids maintenance of control flags when camera mode is turned on or off, -	// only worries about it when the flags are measured -	if (mCameraMode == CAMERA_MODE_MOUSELOOK)  -	{ -		if ( !(mControlFlags & AGENT_CONTROL_MOUSELOOK) ) -		{ -			mControlFlags |= AGENT_CONTROL_MOUSELOOK; -		} -	} -*/  	return mControlFlags;  } @@ -1182,10 +1168,9 @@ void LLAgent::clearAFK()  	// Gods can sometimes get into away state (via gestures)  	// without setting the appropriate control flag. JC -	LLVOAvatar* av = mAvatarObject;  	if (mControlFlags & AGENT_CONTROL_AWAY -		|| (av -			&& (av->mSignaledAnimations.find(ANIM_AGENT_AWAY) != av->mSignaledAnimations.end()))) +		|| (isAgentAvatarValid() +			&& (gAgentAvatarp->mSignaledAnimations.find(ANIM_AGENT_AWAY) != gAgentAvatarp->mSignaledAnimations.end())))  	{  		sendAnimationRequest(ANIM_AGENT_AWAY, ANIM_REQUEST_STOP);  		clearControlFlags(AGENT_CONTROL_AWAY); @@ -1246,7 +1231,7 @@ BOOL LLAgent::getBusy() const  //-----------------------------------------------------------------------------  void LLAgent::startAutoPilotGlobal(const LLVector3d &target_global, const std::string& behavior_name, const LLQuaternion *target_rotation, void (*finish_callback)(BOOL, void *),  void *callback_data, F32 stop_distance, F32 rot_threshold)  { -	if (!gAgent.getAvatarObject()) +	if (!isAgentAvatarValid())  	{  		return;  	} @@ -1307,7 +1292,7 @@ void LLAgent::startAutoPilotGlobal(const LLVector3d &target_global, const std::s  	LLViewerObject *obj;  	LLWorld::getInstance()->resolveStepHeightGlobal(NULL, target_global, traceEndPt, targetOnGround, groundNorm, &obj); -	F64 target_height = llmax((F64)gAgent.getAvatarObject()->getPelvisToFoot(), target_global.mdV[VZ] - targetOnGround.mdV[VZ]); +	F64 target_height = llmax((F64)gAgentAvatarp->getPelvisToFoot(), target_global.mdV[VZ] - targetOnGround.mdV[VZ]);  	// clamp z value of target to minimum height above ground  	mAutoPilotTargetGlobal.mdV[VZ] = targetOnGround.mdV[VZ] + target_height; @@ -1407,12 +1392,9 @@ void LLAgent::autoPilot(F32 *delta_yaw)  			mAutoPilotTargetGlobal = object->getPositionGlobal();  		} -		if (mAvatarObject.isNull()) -		{ -			return; -		} +		if (!isAgentAvatarValid()) return; -		if (mAvatarObject->mInAir) +		if (gAgentAvatarp->mInAir)  		{  			setFlying(TRUE);  		} @@ -1488,9 +1470,9 @@ void LLAgent::autoPilot(F32 *delta_yaw)  		// If we're flying, handle autopilot points above or below you.  		if (getFlying() && xy_distance < AUTOPILOT_HEIGHT_ADJUST_DISTANCE)  		{ -			if (mAvatarObject.notNull()) +			if (isAgentAvatarValid())  			{ -				F64 current_height = mAvatarObject->getPositionGlobal().mdV[VZ]; +				F64 current_height = gAgentAvatarp->getPositionGlobal().mdV[VZ];  				F32 delta_z = (F32)(mAutoPilotTargetGlobal.mdV[VZ] - current_height);  				F32 slope = delta_z / xy_distance;  				if (slope > 0.45f && delta_z > 6.f) @@ -1571,9 +1553,9 @@ void LLAgent::propagate(const F32 dt)  	pitch(PITCH_RATE * mPitchKey * dt);  	// handle auto-land behavior -	if (mAvatarObject.notNull()) +	if (isAgentAvatarValid())  	{ -		BOOL in_air = mAvatarObject->mInAir; +		BOOL in_air = gAgentAvatarp->mInAir;  		LLVector3 land_vel = getVelocity();  		land_vel.mV[VZ] = 0.f; @@ -1626,29 +1608,6 @@ std::ostream& operator<<(std::ostream &s, const LLAgent &agent)  	return s;  } - -// ------------------- Beginning of legacy LLCamera hack ---------------------- -// This section is included for legacy LLCamera support until -// it is no longer needed.  Some legacy code must exist in  -// non-legacy functions, and is labeled with "// legacy" comments. - -//----------------------------------------------------------------------------- -// setAvatarObject() -//----------------------------------------------------------------------------- -void LLAgent::setAvatarObject(LLVOAvatarSelf *avatar)			 -{  -	mAvatarObject = avatar; - -	if (!avatar) -	{ -		llinfos << "Setting LLAgent::mAvatarObject to NULL" << llendl; -		return; -	} -	 -	gAgentCamera.setAvatarObject(avatar); -	gAgentWearables.setAvatarObject(avatar); -} -  // TRUE if your own avatar needs to be rendered.  Usually only  // in third person and build.  //----------------------------------------------------------------------------- @@ -1768,14 +1727,14 @@ U8 LLAgent::getRenderState()  //-----------------------------------------------------------------------------  void LLAgent::endAnimationUpdateUI()  { -	if (gAgentCamera.mCameraMode == gAgentCamera.mLastCameraMode) +	if (gAgentCamera.getCameraMode() == gAgentCamera.getLastCameraMode())  	{  		// We're already done endAnimationUpdateUI for this transition.  		return;  	}  	// clean up UI from mode we're leaving -	if (gAgentCamera.mLastCameraMode == CAMERA_MODE_MOUSELOOK ) +	if (gAgentCamera.getLastCameraMode() == CAMERA_MODE_MOUSELOOK )  	{  		// show mouse cursor  		gViewerWindow->showCursor(); @@ -1820,26 +1779,26 @@ void LLAgent::endAnimationUpdateUI()  		}  		// Disable mouselook-specific animations -		if (mAvatarObject.notNull()) +		if (isAgentAvatarValid())  		{ -			if( mAvatarObject->isAnyAnimationSignaled(AGENT_GUN_AIM_ANIMS, NUM_AGENT_GUN_AIM_ANIMS) ) +			if( gAgentAvatarp->isAnyAnimationSignaled(AGENT_GUN_AIM_ANIMS, NUM_AGENT_GUN_AIM_ANIMS) )  			{ -				if (mAvatarObject->mSignaledAnimations.find(ANIM_AGENT_AIM_RIFLE_R) != mAvatarObject->mSignaledAnimations.end()) +				if (gAgentAvatarp->mSignaledAnimations.find(ANIM_AGENT_AIM_RIFLE_R) != gAgentAvatarp->mSignaledAnimations.end())  				{  					sendAnimationRequest(ANIM_AGENT_AIM_RIFLE_R, ANIM_REQUEST_STOP);  					sendAnimationRequest(ANIM_AGENT_HOLD_RIFLE_R, ANIM_REQUEST_START);  				} -				if (mAvatarObject->mSignaledAnimations.find(ANIM_AGENT_AIM_HANDGUN_R) != mAvatarObject->mSignaledAnimations.end()) +				if (gAgentAvatarp->mSignaledAnimations.find(ANIM_AGENT_AIM_HANDGUN_R) != gAgentAvatarp->mSignaledAnimations.end())  				{  					sendAnimationRequest(ANIM_AGENT_AIM_HANDGUN_R, ANIM_REQUEST_STOP);  					sendAnimationRequest(ANIM_AGENT_HOLD_HANDGUN_R, ANIM_REQUEST_START);  				} -				if (mAvatarObject->mSignaledAnimations.find(ANIM_AGENT_AIM_BAZOOKA_R) != mAvatarObject->mSignaledAnimations.end()) +				if (gAgentAvatarp->mSignaledAnimations.find(ANIM_AGENT_AIM_BAZOOKA_R) != gAgentAvatarp->mSignaledAnimations.end())  				{  					sendAnimationRequest(ANIM_AGENT_AIM_BAZOOKA_R, ANIM_REQUEST_STOP);  					sendAnimationRequest(ANIM_AGENT_HOLD_BAZOOKA_R, ANIM_REQUEST_START);  				} -				if (mAvatarObject->mSignaledAnimations.find(ANIM_AGENT_AIM_BOW_L) != mAvatarObject->mSignaledAnimations.end()) +				if (gAgentAvatarp->mSignaledAnimations.find(ANIM_AGENT_AIM_BOW_L) != gAgentAvatarp->mSignaledAnimations.end())  				{  					sendAnimationRequest(ANIM_AGENT_AIM_BOW_L, ANIM_REQUEST_STOP);  					sendAnimationRequest(ANIM_AGENT_HOLD_BOW_L, ANIM_REQUEST_START); @@ -1847,7 +1806,7 @@ void LLAgent::endAnimationUpdateUI()  			}  		}  	} -	else if(gAgentCamera.mLastCameraMode == CAMERA_MODE_CUSTOMIZE_AVATAR) +	else if (gAgentCamera.getLastCameraMode() == CAMERA_MODE_CUSTOMIZE_AVATAR)  	{  		// make sure we ask to save changes @@ -1858,7 +1817,7 @@ void LLAgent::endAnimationUpdateUI()  			gMorphView->setVisible( FALSE );  		} -		if (mAvatarObject.notNull()) +		if (isAgentAvatarValid())  		{  			if(mCustomAnim)  			{ @@ -1875,7 +1834,7 @@ void LLAgent::endAnimationUpdateUI()  	//---------------------------------------------------------------------  	// Set up UI for mode we're entering  	//--------------------------------------------------------------------- -	if (gAgentCamera.mCameraMode == CAMERA_MODE_MOUSELOOK) +	if (gAgentCamera.getCameraMode() == CAMERA_MODE_MOUSELOOK)  	{  		// hide menus  		gMenuBarView->setVisible(FALSE); @@ -1890,7 +1849,7 @@ void LLAgent::endAnimationUpdateUI()  		LLPanelStandStopFlying::getInstance()->setVisible(FALSE);  		// clear out camera lag effect -		gAgentCamera.mCameraLag.clearVec(); +		gAgentCamera.clearCameraLag();  		// JC - Added for always chat in third person option  		gFocusMgr.setKeyboardFocus(NULL); @@ -1918,49 +1877,49 @@ void LLAgent::endAnimationUpdateUI()  		gConsole->setVisible( TRUE ); -		if (mAvatarObject.notNull()) +		if (isAgentAvatarValid())  		{  			// Trigger mouselook-specific animations -			if( mAvatarObject->isAnyAnimationSignaled(AGENT_GUN_HOLD_ANIMS, NUM_AGENT_GUN_HOLD_ANIMS) ) +			if( gAgentAvatarp->isAnyAnimationSignaled(AGENT_GUN_HOLD_ANIMS, NUM_AGENT_GUN_HOLD_ANIMS) )  			{ -				if (mAvatarObject->mSignaledAnimations.find(ANIM_AGENT_HOLD_RIFLE_R) != mAvatarObject->mSignaledAnimations.end()) +				if (gAgentAvatarp->mSignaledAnimations.find(ANIM_AGENT_HOLD_RIFLE_R) != gAgentAvatarp->mSignaledAnimations.end())  				{  					sendAnimationRequest(ANIM_AGENT_HOLD_RIFLE_R, ANIM_REQUEST_STOP);  					sendAnimationRequest(ANIM_AGENT_AIM_RIFLE_R, ANIM_REQUEST_START);  				} -				if (mAvatarObject->mSignaledAnimations.find(ANIM_AGENT_HOLD_HANDGUN_R) != mAvatarObject->mSignaledAnimations.end()) +				if (gAgentAvatarp->mSignaledAnimations.find(ANIM_AGENT_HOLD_HANDGUN_R) != gAgentAvatarp->mSignaledAnimations.end())  				{  					sendAnimationRequest(ANIM_AGENT_HOLD_HANDGUN_R, ANIM_REQUEST_STOP);  					sendAnimationRequest(ANIM_AGENT_AIM_HANDGUN_R, ANIM_REQUEST_START);  				} -				if (mAvatarObject->mSignaledAnimations.find(ANIM_AGENT_HOLD_BAZOOKA_R) != mAvatarObject->mSignaledAnimations.end()) +				if (gAgentAvatarp->mSignaledAnimations.find(ANIM_AGENT_HOLD_BAZOOKA_R) != gAgentAvatarp->mSignaledAnimations.end())  				{  					sendAnimationRequest(ANIM_AGENT_HOLD_BAZOOKA_R, ANIM_REQUEST_STOP);  					sendAnimationRequest(ANIM_AGENT_AIM_BAZOOKA_R, ANIM_REQUEST_START);  				} -				if (mAvatarObject->mSignaledAnimations.find(ANIM_AGENT_HOLD_BOW_L) != mAvatarObject->mSignaledAnimations.end()) +				if (gAgentAvatarp->mSignaledAnimations.find(ANIM_AGENT_HOLD_BOW_L) != gAgentAvatarp->mSignaledAnimations.end())  				{  					sendAnimationRequest(ANIM_AGENT_HOLD_BOW_L, ANIM_REQUEST_STOP);  					sendAnimationRequest(ANIM_AGENT_AIM_BOW_L, ANIM_REQUEST_START);  				}  			} -			if (mAvatarObject->getParent()) +			if (gAgentAvatarp->getParent())  			{  				LLVector3 at_axis = LLViewerCamera::getInstance()->getAtAxis(); -				LLViewerObject* root_object = (LLViewerObject*)mAvatarObject->getRoot(); +				LLViewerObject* root_object = (LLViewerObject*)gAgentAvatarp->getRoot();  				if (root_object->flagCameraDecoupled())  				{  					resetAxes(at_axis);  				}  				else  				{ -					resetAxes(at_axis * ~((LLViewerObject*)mAvatarObject->getParent())->getRenderRotation()); +					resetAxes(at_axis * ~((LLViewerObject*)gAgentAvatarp->getParent())->getRenderRotation());  				}  			}  		}  	} -	else if (gAgentCamera.mCameraMode == CAMERA_MODE_CUSTOMIZE_AVATAR) +	else if (gAgentCamera.getCameraMode() == CAMERA_MODE_CUSTOMIZE_AVATAR)  	{  		LLToolMgr::getInstance()->setCurrentToolset(gFaceEditToolset); @@ -1970,23 +1929,22 @@ void LLAgent::endAnimationUpdateUI()  		}  		// freeze avatar -		if (mAvatarObject.notNull()) +		if (isAgentAvatarValid())  		{ -			mPauseRequest = mAvatarObject->requestPause(); +			mPauseRequest = gAgentAvatarp->requestPause();  		}  	} -	if (getAvatarObject()) +	if (isAgentAvatarValid())  	{ -		getAvatarObject()->updateAttachmentVisibility(gAgentCamera.mCameraMode); +		gAgentAvatarp->updateAttachmentVisibility(gAgentCamera.getCameraMode());  	}  	gFloaterTools->dirty();  	// Don't let this be called more than once if the camera  	// mode hasn't changed.  --JC -	gAgentCamera.mLastCameraMode = gAgentCamera.mCameraMode; - +	gAgentCamera.updateLastCamera();  }  //----------------------------------------------------------------------------- @@ -2055,10 +2013,10 @@ void LLAgent::setStartPosition( U32 location_id )      LLVector3 agent_pos = getPositionAgent(); -    if (mAvatarObject.notNull()) +    if (isAgentAvatarValid())      {          // the z height is at the agent's feet -        agent_pos.mV[VZ] -= 0.5f * mAvatarObject->mBodySize.mV[VZ]; +        agent_pos.mV[VZ] -= 0.5f * gAgentAvatarp->mBodySize.mV[VZ];      }      agent_pos.mV[VX] = llclamp( agent_pos.mV[VX], INSET, REGION_WIDTH - INSET ); @@ -2165,7 +2123,7 @@ void LLAgent::onAnimStop(const LLUUID& id)  		setControlFlags(AGENT_CONTROL_FINISH_ANIM);  		// now trigger dusting self off animation -		if (mAvatarObject.notNull() && !mAvatarObject->mBelowWater && rand() % 3 == 0) +		if (isAgentAvatarValid() && !gAgentAvatarp->mBelowWater && rand() % 3 == 0)  			sendAnimationRequest( ANIM_AGENT_BRUSH, ANIM_REQUEST_START );  	}  	else if (id == ANIM_AGENT_PRE_JUMP || id == ANIM_AGENT_LAND || id == ANIM_AGENT_MEDIUM_LAND) @@ -2364,9 +2322,9 @@ void LLAgent::buildFullnameAndTitle(std::string& name) const  		name.erase(0, name.length());  	} -	if (mAvatarObject.notNull()) +	if (isAgentAvatarValid())  	{ -		name += mAvatarObject->getFullname(); +		name += gAgentAvatarp->getFullname();  	}  } @@ -2512,14 +2470,14 @@ BOOL LLAgent::canJoinGroups() const  LLQuaternion LLAgent::getHeadRotation()  { -	if (mAvatarObject.isNull() || !mAvatarObject->mPelvisp || !mAvatarObject->mHeadp) +	if (!isAgentAvatarValid() || !gAgentAvatarp->mPelvisp || !gAgentAvatarp->mHeadp)  	{  		return LLQuaternion::DEFAULT;  	}  	if (!gAgentCamera.cameraMouselook())  	{ -		return mAvatarObject->getRotation(); +		return gAgentAvatarp->getRotation();  	}  	// We must be in mouselook @@ -2528,9 +2486,9 @@ LLQuaternion LLAgent::getHeadRotation()  	LLVector3 left = up % look_dir;  	LLQuaternion rot(look_dir, left, up); -	if (mAvatarObject->getParent()) +	if (gAgentAvatarp->getParent())  	{ -		rot = rot * ~mAvatarObject->getParent()->getRotation(); +		rot = rot * ~gAgentAvatarp->getParent()->getRotation();  	}  	return rot; @@ -3153,8 +3111,7 @@ void LLAgent::processAgentCachedTextureResponse(LLMessageSystem *mesgsys, void *  {  	gAgentQueryManager.mNumPendingQueries--; -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	if (!avatarp || avatarp->isDead()) +	if (!isAgentAvatarValid() || gAgentAvatarp->isDead())  	{  		llwarns << "No avatar for user in cached texture update!" << llendl;  		return; @@ -3187,27 +3144,27 @@ void LLAgent::processAgentCachedTextureResponse(LLMessageSystem *mesgsys, void *  			if (texture_id.notNull())  			{  				//llinfos << "Received cached texture " << (U32)texture_index << ": " << texture_id << llendl; -				avatarp->setCachedBakedTexture(LLVOAvatarDictionary::bakedToLocalTextureIndex((EBakedTextureIndex)texture_index), texture_id); -				//avatarp->setTETexture( LLVOAvatar::sBakedTextureIndices[texture_index], texture_id ); +				gAgentAvatarp->setCachedBakedTexture(LLVOAvatarDictionary::bakedToLocalTextureIndex((EBakedTextureIndex)texture_index), texture_id); +				//gAgentAvatarp->setTETexture( LLVOAvatar::sBakedTextureIndices[texture_index], texture_id );  				gAgentQueryManager.mActiveCacheQueries[texture_index] = 0;  				num_results++;  			}  			else  			{  				// no cache of this bake. request upload. -				avatarp->requestLayerSetUpload((EBakedTextureIndex)texture_index); +				gAgentAvatarp->requestLayerSetUpload((EBakedTextureIndex)texture_index);  			}  		}  	}  	llinfos << "Received cached texture response for " << num_results << " textures." << llendl; -	avatarp->updateMeshTextures(); +	gAgentAvatarp->updateMeshTextures();  	if (gAgentQueryManager.mNumPendingQueries == 0)  	{  		// RN: not sure why composites are disabled at this point -		avatarp->setCompositeUpdatesEnabled(TRUE); +		gAgentAvatarp->setCompositeUpdatesEnabled(TRUE);  		gAgent.sendAgentSetAppearance();  	}  } @@ -3260,11 +3217,10 @@ BOOL LLAgent::getHomePosGlobal( LLVector3d* pos_global )  void LLAgent::clearVisualParams(void *data)  { -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	if (avatarp) +	if (isAgentAvatarValid())  	{ -		avatarp->clearVisualParamWeights(); -		avatarp->updateVisualParams(); +		gAgentAvatarp->clearVisualParamWeights(); +		gAgentAvatarp->updateVisualParams();  	}  } @@ -3288,16 +3244,15 @@ bool LLAgent::teleportCore(bool is_local)  	// sync with other viewers. Discuss in DEV-14145/VWR-6744 before reenabling.  	// Stop all animation before actual teleporting  -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -        if (avatarp) +        if (isAgentAvatarValid())  	{ -		for ( LLVOAvatar::AnimIterator anim_it= avatarp->mPlayingAnimations.begin(); -		      anim_it != avatarp->mPlayingAnimations.end(); +		for ( LLVOAvatar::AnimIterator anim_it= gAgentAvatarp->mPlayingAnimations.begin(); +		      anim_it != gAgentAvatarp->mPlayingAnimations.end();  		      ++anim_it)                 { -                       avatarp->stopMotion(anim_it->first); +                       gAgentAvatarp->stopMotion(anim_it->first);                 } -               avatarp->processAnimationStateChanges(); +               gAgentAvatarp->processAnimationStateChanges();         }  #endif @@ -3490,13 +3445,11 @@ void LLAgent::stopCurrentAnimations()  {  	// This function stops all current overriding animations on this  	// avatar, propagating this change back to the server. - -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	if (avatarp) +	if (isAgentAvatarValid())  	{  		for ( LLVOAvatar::AnimIterator anim_it = -			      avatarp->mPlayingAnimations.begin(); -		      anim_it != avatarp->mPlayingAnimations.end(); +			      gAgentAvatarp->mPlayingAnimations.begin(); +		      anim_it != gAgentAvatarp->mPlayingAnimations.end();  		      anim_it++)  		{  			if (anim_it->first == @@ -3509,7 +3462,7 @@ void LLAgent::stopCurrentAnimations()  			else  			{  				// stop this animation locally -				avatarp->stopMotion(anim_it->first, TRUE); +				gAgentAvatarp->stopMotion(anim_it->first, TRUE);  				// ...and tell the server to tell everyone.  				sendAnimationRequest(anim_it->first, ANIM_REQUEST_STOP);  			} @@ -3616,7 +3569,7 @@ void LLAgent::requestLeaveGodMode()  //-----------------------------------------------------------------------------  void LLAgent::sendAgentSetAppearance()  { -	if (mAvatarObject.isNull()) return; +	if (!isAgentAvatarValid()) return;  	if (gAgentQueryManager.mNumPendingQueries > 0 && !gAgentCamera.cameraCustomizeAvatar())   	{ @@ -3624,7 +3577,7 @@ void LLAgent::sendAgentSetAppearance()  	} -	llinfos << "TAT: Sent AgentSetAppearance: " << mAvatarObject->getBakedStatusForPrintout() << llendl; +	llinfos << "TAT: Sent AgentSetAppearance: " << gAgentAvatarp->getBakedStatusForPrintout() << llendl;  	//dumpAvatarTEs( "sendAgentSetAppearance()" );  	LLMessageSystem* msg = gMessageSystem; @@ -3638,7 +3591,7 @@ void LLAgent::sendAgentSetAppearance()  	// NOTE -- when we start correcting all of the other Havok geometry   	// to compensate for the COLLISION_TOLERANCE ugliness we will have   	// to tweak this number again -	const LLVector3 body_size = mAvatarObject->mBodySize; +	const LLVector3 body_size = gAgentAvatarp->mBodySize;  	msg->addVector3Fast(_PREHASH_Size, body_size);	  	// To guard against out of order packets @@ -3648,20 +3601,20 @@ void LLAgent::sendAgentSetAppearance()  	// is texture data current relative to wearables?  	// KLW - TAT this will probably need to check the local queue. -	BOOL textures_current = mAvatarObject->areTexturesCurrent(); +	BOOL textures_current = gAgentAvatarp->areTexturesCurrent();  	for(U8 baked_index = 0; baked_index < BAKED_NUM_INDICES; baked_index++ )  	{  		const ETextureIndex texture_index = LLVOAvatarDictionary::bakedToLocalTextureIndex((EBakedTextureIndex)baked_index);  		// if we're not wearing a skirt, we don't need the texture to be baked -		if (texture_index == TEX_SKIRT_BAKED && !mAvatarObject->isWearingWearableType(WT_SKIRT)) +		if (texture_index == TEX_SKIRT_BAKED && !gAgentAvatarp->isWearingWearableType(WT_SKIRT))  		{  			continue;  		}  		// IMG_DEFAULT_AVATAR means not baked. 0 index should be ignored for baked textures -		if (!mAvatarObject->isTextureDefined(texture_index, 0)) +		if (!gAgentAvatarp->isTextureDefined(texture_index, 0))  		{  			textures_current = FALSE;  			break; @@ -3699,7 +3652,7 @@ void LLAgent::sendAgentSetAppearance()  			msg->addU8Fast(_PREHASH_TextureIndex, (U8)texture_index);  		}  		msg->nextBlockFast(_PREHASH_ObjectData); -		mAvatarObject->sendAppearanceMessage( gMessageSystem ); +		gAgentAvatarp->sendAppearanceMessage( gMessageSystem );  	}  	else  	{ @@ -3712,9 +3665,9 @@ void LLAgent::sendAgentSetAppearance()  	S32 transmitted_params = 0; -	for (LLViewerVisualParam* param = (LLViewerVisualParam*)mAvatarObject->getFirstVisualParam(); +	for (LLViewerVisualParam* param = (LLViewerVisualParam*)gAgentAvatarp->getFirstVisualParam();  		 param; -		 param = (LLViewerVisualParam*)mAvatarObject->getNextVisualParam()) +		 param = (LLViewerVisualParam*)gAgentAvatarp->getNextVisualParam())  	{  		if (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE)  		{ diff --git a/indra/newview/llagent.h b/indra/newview/llagent.h index b59a49be13..55d9b292d7 100644 --- a/indra/newview/llagent.h +++ b/indra/newview/llagent.h @@ -51,7 +51,6 @@ extern const U8 	AGENT_STATE_TYPING;  // Typing indication  extern const U8 	AGENT_STATE_EDITING; // Set when agent has objects selected  class LLChat; -class LLVOAvatarSelf;  class LLViewerRegion;  class LLMotion;  class LLToolset; @@ -109,7 +108,6 @@ public:  	virtual 		~LLAgent();  	void			init();  	void			cleanup(); -	void			setAvatarObject(LLVOAvatarSelf *avatar);  	//--------------------------------------------------------------------  	// Login @@ -173,20 +171,6 @@ private:  /********************************************************************************   **                                                                            ** - **                    GENERAL ACCESSORS - **/ - -public: - 	LLVOAvatarSelf* getAvatarObject() const		{ return mAvatarObject; } -private: -	LLPointer<LLVOAvatarSelf> mAvatarObject; 	// NULL until avatar object sent down from simulator - -/**                    General Accessors - **                                                                            ** - *******************************************************************************/ - -/******************************************************************************** - **                                                                            **   **                    POSITION   **/ diff --git a/indra/newview/llagentcamera.cpp b/indra/newview/llagentcamera.cpp index 8eee53363e..8ff55cafca 100644 --- a/indra/newview/llagentcamera.cpp +++ b/indra/newview/llagentcamera.cpp @@ -372,10 +372,9 @@ void LLAgentCamera::unlockView()  {  	if (getFocusOnAvatar())  	{ -		LLVOAvatarSelf *avatarp = gAgent.getAvatarObject(); -		if (avatarp) +		if (isAgentAvatarValid())  		{ -			setFocusGlobal(LLVector3d::zero, avatarp->mID); +			setFocusGlobal(LLVector3d::zero, gAgentAvatarp->mID);  		}  		setFocusOnAvatar(FALSE, FALSE);	// no animation  	} @@ -1092,30 +1091,25 @@ void LLAgentCamera::updateLookAt(const S32 mouse_x, const S32 mouse_y)  {  	static LLVector3 last_at_axis; -	LLVOAvatarSelf *avatarp = gAgent.getAvatarObject(); +	if (!isAgentAvatarValid()) return; -	if (!avatarp) -	{ -		return; -	} - -	LLQuaternion av_inv_rot = ~avatarp->mRoot.getWorldRotation(); -	LLVector3 root_at = LLVector3::x_axis * avatarp->mRoot.getWorldRotation(); +	LLQuaternion av_inv_rot = ~gAgentAvatarp->mRoot.getWorldRotation(); +	LLVector3 root_at = LLVector3::x_axis * gAgentAvatarp->mRoot.getWorldRotation();  	if 	((gViewerWindow->getMouseVelocityStat()->getCurrent() < 0.01f) &&  		 (root_at * last_at_axis > 0.95f))  	{ -		LLVector3 vel = avatarp->getVelocity(); +		LLVector3 vel = gAgentAvatarp->getVelocity();  		if (vel.magVecSquared() > 4.f)  		{ -			setLookAt(LOOKAT_TARGET_IDLE, avatarp, vel * av_inv_rot); +			setLookAt(LOOKAT_TARGET_IDLE, gAgentAvatarp, vel * av_inv_rot);  		}  		else  		{  			// *FIX: rotate mframeagent by sit object's rotation? -			LLQuaternion look_rotation = avatarp->isSitting() ? avatarp->getRenderRotation() : gAgent.getFrameAgent().getQuaternion(); // use camera's current rotation +			LLQuaternion look_rotation = gAgentAvatarp->isSitting() ? gAgentAvatarp->getRenderRotation() : gAgent.getFrameAgent().getQuaternion(); // use camera's current rotation  			LLVector3 look_offset = LLVector3(2.f, 0.f, 0.f) * look_rotation * av_inv_rot; -			setLookAt(LOOKAT_TARGET_IDLE, avatarp, look_offset); +			setLookAt(LOOKAT_TARGET_IDLE, gAgentAvatarp, look_offset);  		}  		last_at_axis = root_at;  		return; @@ -1125,7 +1119,7 @@ void LLAgentCamera::updateLookAt(const S32 mouse_x, const S32 mouse_y)  	if (CAMERA_MODE_CUSTOMIZE_AVATAR == getCameraMode())  	{ -		setLookAt(LOOKAT_TARGET_NONE, avatarp, LLVector3(-2.f, 0.f, 0.f));	 +		setLookAt(LOOKAT_TARGET_NONE, gAgentAvatarp, LLVector3(-2.f, 0.f, 0.f));	  	}  	else  	{ @@ -1154,7 +1148,7 @@ void LLAgentCamera::updateLookAt(const S32 mouse_x, const S32 mouse_y)  		headLookAxis = frameCamera.getAtAxis();  		// RN: we use world-space offset for mouselook and freelook  		//headLookAxis = headLookAxis * av_inv_rot; -		setLookAt(lookAtType, avatarp, headLookAxis); +		setLookAt(lookAtType, gAgentAvatarp, headLookAxis);  	}  } @@ -1175,15 +1169,13 @@ void LLAgentCamera::updateCamera()  	validateFocusObject(); -	LLVOAvatarSelf *avatarp = gAgent.getAvatarObject(); - -	if (avatarp &&  -		avatarp->isSitting() && +	if (isAgentAvatarValid() &&  +		gAgentAvatarp->isSitting() &&  		camera_mode == CAMERA_MODE_MOUSELOOK)  	{  		//Ventrella  		//changed camera_skyward to the new global "mCameraUpVector" -		mCameraUpVector = mCameraUpVector * avatarp->getRenderRotation(); +		mCameraUpVector = mCameraUpVector * gAgentAvatarp->getRenderRotation();  		//end Ventrella  	} @@ -1291,7 +1283,7 @@ void LLAgentCamera::updateCamera()  	//Ventrella  	if ( mCameraMode == CAMERA_MODE_FOLLOW )  	{ -		if (avatarp) +		if (isAgentAvatarValid())  		{  			//--------------------------------------------------------------------------------  			// this is where the avatar's position and rotation are given to followCam, and  @@ -1299,13 +1291,13 @@ void LLAgentCamera::updateCamera()  			// (2) focus, and (3) upvector. They can then be queried elsewhere in llAgent.  			//--------------------------------------------------------------------------------  			// *TODO: use combined rotation of frameagent and sit object -			LLQuaternion avatarRotationForFollowCam = avatarp->isSitting() ? avatarp->getRenderRotation() : gAgent.getFrameAgent().getQuaternion(); +			LLQuaternion avatarRotationForFollowCam = gAgentAvatarp->isSitting() ? gAgentAvatarp->getRenderRotation() : gAgent.getFrameAgent().getQuaternion();  			LLFollowCamParams* current_cam = LLFollowCamMgr::getActiveFollowCamParams();  			if (current_cam)  			{  				mFollowCam.copyParams(*current_cam); -				mFollowCam.setSubjectPositionAndRotation( avatarp->getRenderPosition(), avatarRotationForFollowCam ); +				mFollowCam.setSubjectPositionAndRotation( gAgentAvatarp->getRenderPosition(), avatarRotationForFollowCam );  				mFollowCam.update();  				LLViewerJoystick::getInstance()->setCameraNeedsUpdate(true);  			} @@ -1380,9 +1372,9 @@ void LLAgentCamera::updateCamera()  			gAgent.setShowAvatar(TRUE);  		} -		if (avatarp && (mCameraMode != CAMERA_MODE_MOUSELOOK)) +		if (isAgentAvatarValid() && (mCameraMode != CAMERA_MODE_MOUSELOOK))  		{ -			avatarp->updateAttachmentVisibility(mCameraMode); +			gAgentAvatarp->updateAttachmentVisibility(mCameraMode);  		}  	}  	else  @@ -1480,40 +1472,40 @@ void LLAgentCamera::updateCamera()  	}  	gAgent.setLastPositionGlobal(global_pos); -	if (LLVOAvatar::sVisibleInFirstPerson && avatarp && !avatarp->isSitting() && cameraMouselook()) +	if (LLVOAvatar::sVisibleInFirstPerson && isAgentAvatarValid() && !gAgentAvatarp->isSitting() && cameraMouselook())  	{ -		LLVector3 head_pos = avatarp->mHeadp->getWorldPosition() +  -			LLVector3(0.08f, 0.f, 0.05f) * avatarp->mHeadp->getWorldRotation() +  -			LLVector3(0.1f, 0.f, 0.f) * avatarp->mPelvisp->getWorldRotation(); +		LLVector3 head_pos = gAgentAvatarp->mHeadp->getWorldPosition() +  +			LLVector3(0.08f, 0.f, 0.05f) * gAgentAvatarp->mHeadp->getWorldRotation() +  +			LLVector3(0.1f, 0.f, 0.f) * gAgentAvatarp->mPelvisp->getWorldRotation();  		LLVector3 diff = mCameraPositionAgent - head_pos; -		diff = diff * ~avatarp->mRoot.getWorldRotation(); +		diff = diff * ~gAgentAvatarp->mRoot.getWorldRotation(); -		LLJoint* torso_joint = avatarp->mTorsop; -		LLJoint* chest_joint = avatarp->mChestp; +		LLJoint* torso_joint = gAgentAvatarp->mTorsop; +		LLJoint* chest_joint = gAgentAvatarp->mChestp;  		LLVector3 torso_scale = torso_joint->getScale();  		LLVector3 chest_scale = chest_joint->getScale();  		// shorten avatar skeleton to avoid foot interpenetration -		if (!avatarp->mInAir) +		if (!gAgentAvatarp->mInAir)  		{  			LLVector3 chest_offset = LLVector3(0.f, 0.f, chest_joint->getPosition().mV[VZ]) * torso_joint->getWorldRotation();  			F32 z_compensate = llclamp(-diff.mV[VZ], -0.2f, 1.f);  			F32 scale_factor = llclamp(1.f - ((z_compensate * 0.5f) / chest_offset.mV[VZ]), 0.5f, 1.2f);  			torso_joint->setScale(LLVector3(1.f, 1.f, scale_factor)); -			LLJoint* neck_joint = avatarp->mNeckp; +			LLJoint* neck_joint = gAgentAvatarp->mNeckp;  			LLVector3 neck_offset = LLVector3(0.f, 0.f, neck_joint->getPosition().mV[VZ]) * chest_joint->getWorldRotation();  			scale_factor = llclamp(1.f - ((z_compensate * 0.5f) / neck_offset.mV[VZ]), 0.5f, 1.2f);  			chest_joint->setScale(LLVector3(1.f, 1.f, scale_factor));  			diff.mV[VZ] = 0.f;  		} -		avatarp->mPelvisp->setPosition(avatarp->mPelvisp->getPosition() + diff); +		gAgentAvatarp->mPelvisp->setPosition(gAgentAvatarp->mPelvisp->getPosition() + diff); -		avatarp->mRoot.updateWorldMatrixChildren(); +		gAgentAvatarp->mRoot.updateWorldMatrixChildren(); -		for (LLVOAvatar::attachment_map_t::iterator iter = avatarp->mAttachmentPoints.begin();  -			 iter != avatarp->mAttachmentPoints.end(); ) +		for (LLVOAvatar::attachment_map_t::iterator iter = gAgentAvatarp->mAttachmentPoints.begin();  +			 iter != gAgentAvatarp->mAttachmentPoints.end(); )  		{  			LLVOAvatar::attachment_map_t::iterator curiter = iter++;  			LLViewerJointAttachment* attachment = curiter->second; @@ -1537,6 +1529,11 @@ void LLAgentCamera::updateCamera()  	}  } +void LLAgentCamera::updateLastCamera() +{ +	mLastCameraMode = mCameraMode; +} +  void LLAgentCamera::updateFocusOffset()  {  	validateFocusObject(); @@ -1600,8 +1597,6 @@ LLVector3d LLAgentCamera::calcFocusPositionTargetGlobal()  		clearFocusObject();  	} -	LLVOAvatarSelf *avatarp = gAgent.getAvatarObject(); -  	// Ventrella  	if (mCameraMode == CAMERA_MODE_FOLLOW && mFocusOnAvatar)  	{ @@ -1612,12 +1607,12 @@ LLVector3d LLAgentCamera::calcFocusPositionTargetGlobal()  	{  		LLVector3d at_axis(1.0, 0.0, 0.0);  		LLQuaternion agent_rot = gAgent.getFrameAgent().getQuaternion(); -		if (avatarp && avatarp->getParent()) +		if (isAgentAvatarValid() && gAgentAvatarp->getParent())  		{ -			LLViewerObject* root_object = (LLViewerObject*)avatarp->getRoot(); +			LLViewerObject* root_object = (LLViewerObject*)gAgentAvatarp->getRoot();  			if (!root_object->flagCameraDecoupled())  			{ -				agent_rot *= ((LLViewerObject*)(avatarp->getParent()))->getRenderRotation(); +				agent_rot *= ((LLViewerObject*)(gAgentAvatarp->getParent()))->getRenderRotation();  			}  		}  		at_axis = at_axis * agent_rot; @@ -1667,7 +1662,7 @@ LLVector3d LLAgentCamera::calcFocusPositionTargetGlobal()  		}  		return mFocusTargetGlobal;  	} -	else if (mSitCameraEnabled && avatarp && avatarp->isSitting() && mSitCameraReferenceObject.notNull()) +	else if (mSitCameraEnabled && isAgentAvatarValid() && gAgentAvatarp->isSitting() && mSitCameraReferenceObject.notNull())  	{  		// sit camera  		LLVector3 object_pos = mSitCameraReferenceObject->getRenderPosition(); @@ -1686,12 +1681,10 @@ LLVector3d LLAgentCamera::calcThirdPersonFocusOffset()  {  	// ...offset from avatar  	LLVector3d focus_offset; - -	LLVOAvatarSelf *avatarp = gAgent.getAvatarObject();  	LLQuaternion agent_rot = gAgent.getFrameAgent().getQuaternion(); -	if (avatarp && avatarp->getParent()) +	if (isAgentAvatarValid() && gAgentAvatarp->getParent())  	{ -		agent_rot *= ((LLViewerObject*)(avatarp->getParent()))->getRenderRotation(); +		agent_rot *= ((LLViewerObject*)(gAgentAvatarp->getParent()))->getRenderRotation();  	}  	focus_offset = mFocusOffsetInitial[mCameraPreset] * agent_rot; @@ -1700,12 +1693,10 @@ LLVector3d LLAgentCamera::calcThirdPersonFocusOffset()  void LLAgentCamera::setupSitCamera()  { -	LLVOAvatarSelf *avatarp = gAgent.getAvatarObject(); -  	// agent frame entering this function is in world coordinates -	if (avatarp && avatarp->getParent()) +	if (isAgentAvatarValid() && gAgentAvatarp->getParent())  	{ -		LLQuaternion parent_rot = ((LLViewerObject*)avatarp->getParent())->getRenderRotation(); +		LLQuaternion parent_rot = ((LLViewerObject*)gAgentAvatarp->getParent())->getRenderRotation();  		// slam agent coordinate frame to proper parent local version  		LLVector3 at_axis = gAgent.getFrameAgent().getAtAxis();  		at_axis.mV[VZ] = 0.f; @@ -1768,13 +1759,11 @@ F32	LLAgentCamera::calcCameraFOVZoomFactor()  //-----------------------------------------------------------------------------  LLVector3d LLAgentCamera::calcCameraPositionTargetGlobal(BOOL *hit_limit)  { -	LLVOAvatarSelf *avatarp = gAgent.getAvatarObject(); -  	// Compute base camera position and look-at points.  	F32			camera_land_height; -	LLVector3d	frame_center_global = !avatarp ?  +	LLVector3d	frame_center_global = !isAgentAvatarValid() ?   		gAgent.getPositionGlobal() : -		gAgent.getPosGlobalFromAgent(avatarp->mRoot.getWorldPosition()); +		gAgent.getPosGlobalFromAgent(gAgentAvatarp->mRoot.getWorldPosition());  	BOOL		isConstrained = FALSE;  	LLVector3d	head_offset; @@ -1789,32 +1778,32 @@ LLVector3d LLAgentCamera::calcCameraPositionTargetGlobal(BOOL *hit_limit)  	}// End Ventrella  	else if (mCameraMode == CAMERA_MODE_MOUSELOOK)  	{ -		if (!avatarp || avatarp->mDrawable.isNull()) +		if (!isAgentAvatarValid() || gAgentAvatarp->mDrawable.isNull())  		{  			llwarns << "Null avatar drawable!" << llendl;  			return LLVector3d::zero;  		}  		head_offset.clearVec(); -		if (avatarp->isSitting() && avatarp->getParent()) +		if (gAgentAvatarp->isSitting() && gAgentAvatarp->getParent())  		{ -			avatarp->updateHeadOffset(); -			head_offset.mdV[VX] = avatarp->mHeadOffset.mV[VX]; -			head_offset.mdV[VY] = avatarp->mHeadOffset.mV[VY]; -			head_offset.mdV[VZ] = avatarp->mHeadOffset.mV[VZ] + 0.1f; -			const LLMatrix4& mat = ((LLViewerObject*) avatarp->getParent())->getRenderMatrix(); +			gAgentAvatarp->updateHeadOffset(); +			head_offset.mdV[VX] = gAgentAvatarp->mHeadOffset.mV[VX]; +			head_offset.mdV[VY] = gAgentAvatarp->mHeadOffset.mV[VY]; +			head_offset.mdV[VZ] = gAgentAvatarp->mHeadOffset.mV[VZ] + 0.1f; +			const LLMatrix4& mat = ((LLViewerObject*) gAgentAvatarp->getParent())->getRenderMatrix();  			camera_position_global = gAgent.getPosGlobalFromAgent -								((avatarp->getPosition()+ -								 LLVector3(head_offset)*avatarp->getRotation()) * mat); +								((gAgentAvatarp->getPosition()+ +								 LLVector3(head_offset)*gAgentAvatarp->getRotation()) * mat);  		}  		else  		{ -			head_offset.mdV[VZ] = avatarp->mHeadOffset.mV[VZ]; -			if (avatarp->isSitting()) +			head_offset.mdV[VZ] = gAgentAvatarp->mHeadOffset.mV[VZ]; +			if (gAgentAvatarp->isSitting())  			{  				head_offset.mdV[VZ] += 0.1;  			} -			camera_position_global = gAgent.getPosGlobalFromAgent(avatarp->getRenderPosition());//frame_center_global; -			head_offset = head_offset * avatarp->getRenderRotation(); +			camera_position_global = gAgent.getPosGlobalFromAgent(gAgentAvatarp->getRenderPosition());//frame_center_global; +			head_offset = head_offset * gAgentAvatarp->getRenderRotation();  			camera_position_global = camera_position_global + head_offset;  		}  	} @@ -1824,8 +1813,8 @@ LLVector3d LLAgentCamera::calcCameraPositionTargetGlobal(BOOL *hit_limit)  		F32 camera_distance = 0.f;  		if (mSitCameraEnabled  -			&& avatarp  -			&& avatarp->isSitting()  +			&& isAgentAvatarValid()  +			&& gAgentAvatarp->isSitting()   			&& mSitCameraReferenceObject.notNull())  		{  			// sit camera @@ -1841,9 +1830,9 @@ LLVector3d LLAgentCamera::calcCameraPositionTargetGlobal(BOOL *hit_limit)  			local_camera_offset = mCameraZoomFraction * getCameraOffsetInitial() * gSavedSettings.getF32("CameraOffsetScale");  			// are we sitting down? -			if (avatarp && avatarp->getParent()) +			if (isAgentAvatarValid() && gAgentAvatarp->getParent())  			{ -				LLQuaternion parent_rot = ((LLViewerObject*)avatarp->getParent())->getRenderRotation(); +				LLQuaternion parent_rot = ((LLViewerObject*)gAgentAvatarp->getParent())->getRenderRotation();  				// slam agent coordinate frame to proper parent local version  				LLVector3 at_axis = gAgent.getFrameAgent().getAtAxis() * parent_rot;  				at_axis.mV[VZ] = 0.f; @@ -1857,7 +1846,7 @@ LLVector3d LLAgentCamera::calcCameraPositionTargetGlobal(BOOL *hit_limit)  				local_camera_offset = gAgent.getFrameAgent().rotateToAbsolute( local_camera_offset );  			} -			if (!mCameraCollidePlane.isExactlyZero() && (!avatarp || !avatarp->isSitting())) +			if (!mCameraCollidePlane.isExactlyZero() && (!isAgentAvatarValid() || !gAgentAvatarp->isSitting()))  			{  				LLVector3 plane_normal;  				plane_normal.setVec(mCameraCollidePlane.mV); @@ -1910,11 +1899,11 @@ LLVector3d LLAgentCamera::calcCameraPositionTargetGlobal(BOOL *hit_limit)  			// set the global camera position  			LLVector3d camera_offset; -			LLVector3 av_pos = !avatarp ? LLVector3::zero : avatarp->getRenderPosition(); +			LLVector3 av_pos = !isAgentAvatarValid() ? LLVector3::zero : gAgentAvatarp->getRenderPosition();  			camera_offset.setVec( local_camera_offset );  			camera_position_global = frame_center_global + head_offset + camera_offset; -			if (avatarp) +			if (isAgentAvatarValid())  			{  				LLVector3d camera_lag_d;  				F32 lag_interp = LLCriticalDamp::getInterpolant(CAMERA_LAG_HALF_LIFE); @@ -1922,8 +1911,8 @@ LLVector3d LLAgentCamera::calcCameraPositionTargetGlobal(BOOL *hit_limit)  				LLVector3 vel = gAgent.getVelocity();  				// lag by appropriate amount for flying -				F32 time_in_air = avatarp->mTimeInAir.getElapsedTimeF32(); -				if(!mCameraAnimating && avatarp->mInAir && time_in_air > GROUND_TO_AIR_CAMERA_TRANSITION_START_TIME) +				F32 time_in_air = gAgentAvatarp->mTimeInAir.getElapsedTimeF32(); +				if(!mCameraAnimating && gAgentAvatarp->mInAir && time_in_air > GROUND_TO_AIR_CAMERA_TRANSITION_START_TIME)  				{  					LLVector3 frame_at_axis = gAgent.getFrameAgent().getAtAxis();  					frame_at_axis -= projected_vec(frame_at_axis, gAgent.getReferenceUpVector()); @@ -1935,7 +1924,7 @@ LLVector3d LLAgentCamera::calcCameraPositionTargetGlobal(BOOL *hit_limit)  					lag_interp *= u; -					if (gViewerWindow->getLeftMouseDown() && gViewerWindow->getLastPick().mObjectID == avatarp->getID()) +					if (gViewerWindow->getLeftMouseDown() && gViewerWindow->getLastPick().mObjectID == gAgentAvatarp->getID())  					{  						// disable camera lag when using mouse-directed steering  						target_lag.clearVec(); @@ -2136,8 +2125,6 @@ void LLAgentCamera::changeCameraToMouselook(BOOL animate)  		return;  	} -	LLVOAvatarSelf *avatarp = gAgent.getAvatarObject(); -  	// visibility changes at end of animation  	gViewerWindow->getWindow()->resetBusyCount(); @@ -2146,10 +2133,10 @@ void LLAgentCamera::changeCameraToMouselook(BOOL animate)  	LLToolMgr::getInstance()->setCurrentToolset(gMouselookToolset); -	if (avatarp) +	if (isAgentAvatarValid())  	{ -		avatarp->stopMotion(ANIM_AGENT_BODY_NOISE); -		avatarp->stopMotion(ANIM_AGENT_BREATHE_ROT); +		gAgentAvatarp->stopMotion(ANIM_AGENT_BODY_NOISE); +		gAgentAvatarp->stopMotion(ANIM_AGENT_BREATHE_ROT);  	}  	//gViewerWindow->stopGrab(); @@ -2161,7 +2148,7 @@ void LLAgentCamera::changeCameraToMouselook(BOOL animate)  	{  		gFocusMgr.setKeyboardFocus(NULL); -		mLastCameraMode = mCameraMode; +		updateLastCamera();  		mCameraMode = CAMERA_MODE_MOUSELOOK;  		const U32 old_flags = gAgent.getControlFlags();  		gAgent.setControlFlags(AGENT_CONTROL_MOUSELOOK); @@ -2223,7 +2210,7 @@ void LLAgentCamera::changeCameraToFollow(BOOL animate)  		}  		startCameraAnimation(); -		mLastCameraMode = mCameraMode; +		updateLastCamera();  		mCameraMode = CAMERA_MODE_FOLLOW;  		// bang-in the current focus, position, and up vector of the follow cam @@ -2234,12 +2221,11 @@ void LLAgentCamera::changeCameraToFollow(BOOL animate)  			LLToolMgr::getInstance()->setCurrentToolset(gBasicToolset);  		} -		LLVOAvatarSelf *avatarp = gAgent.getAvatarObject(); -		if (avatarp) +		if (isAgentAvatarValid())  		{ -			avatarp->mPelvisp->setPosition(LLVector3::zero); -			avatarp->startMotion( ANIM_AGENT_BODY_NOISE ); -			avatarp->startMotion( ANIM_AGENT_BREATHE_ROT ); +			gAgentAvatarp->mPelvisp->setPosition(LLVector3::zero); +			gAgentAvatarp->startMotion( ANIM_AGENT_BODY_NOISE ); +			gAgentAvatarp->startMotion( ANIM_AGENT_BREATHE_ROT );  		}  		// unpause avatar animation @@ -2278,15 +2264,14 @@ void LLAgentCamera::changeCameraToThirdPerson(BOOL animate)  	mCameraZoomFraction = INITIAL_ZOOM_FRACTION; -	LLVOAvatarSelf *avatarp = gAgent.getAvatarObject(); -	if (avatarp) +	if (isAgentAvatarValid())  	{ -		if (!avatarp->isSitting()) +		if (!gAgentAvatarp->isSitting())  		{ -			avatarp->mPelvisp->setPosition(LLVector3::zero); +			gAgentAvatarp->mPelvisp->setPosition(LLVector3::zero);  		} -		avatarp->startMotion(ANIM_AGENT_BODY_NOISE); -		avatarp->startMotion(ANIM_AGENT_BREATHE_ROT); +		gAgentAvatarp->startMotion(ANIM_AGENT_BODY_NOISE); +		gAgentAvatarp->startMotion(ANIM_AGENT_BREATHE_ROT);  	}  	LLVector3 at_axis; @@ -2308,7 +2293,7 @@ void LLAgentCamera::changeCameraToThirdPerson(BOOL animate)  			mTargetCameraDistance = MIN_CAMERA_DISTANCE;  			animate = FALSE;  		} -		mLastCameraMode = mCameraMode; +		updateLastCamera();  		mCameraMode = CAMERA_MODE_THIRD_PERSON;  		const U32 old_flags = gAgent.getControlFlags();  		gAgent.clearControlFlags(AGENT_CONTROL_MOUSELOOK); @@ -2320,9 +2305,9 @@ void LLAgentCamera::changeCameraToThirdPerson(BOOL animate)  	}  	// Remove any pitch from the avatar -	if (avatarp && avatarp->getParent()) +	if (isAgentAvatarValid() && gAgentAvatarp->getParent())  	{ -		LLQuaternion obj_rot = ((LLViewerObject*)avatarp->getParent())->getRenderRotation(); +		LLQuaternion obj_rot = ((LLViewerObject*)gAgentAvatarp->getParent())->getRenderRotation();  		at_axis = LLViewerCamera::getInstance()->getAtAxis();  		at_axis.mV[VZ] = 0.f;  		at_axis.normalize(); @@ -2379,7 +2364,7 @@ void LLAgentCamera::changeCameraToCustomizeAvatar(BOOL avatar_animate, BOOL came  	if (mCameraMode != CAMERA_MODE_CUSTOMIZE_AVATAR)  	{ -		mLastCameraMode = mCameraMode; +		updateLastCamera();  		mCameraMode = CAMERA_MODE_CUSTOMIZE_AVATAR;  		const U32 old_flags = gAgent.getControlFlags();  		gAgent.clearControlFlags(AGENT_CONTROL_MOUSELOOK); @@ -2394,8 +2379,7 @@ void LLAgentCamera::changeCameraToCustomizeAvatar(BOOL avatar_animate, BOOL came  		LLVOAvatarSelf::onCustomizeStart();  	} -	LLVOAvatarSelf *avatarp = gAgent.getAvatarObject(); -	if (avatarp) +	if (isAgentAvatarValid())  	{  		if(avatar_animate)  		{ @@ -2407,8 +2391,8 @@ void LLAgentCamera::changeCameraToCustomizeAvatar(BOOL avatar_animate, BOOL came  			gAgent.sendAnimationRequest(ANIM_AGENT_CUSTOMIZE, ANIM_REQUEST_START);  			gAgent.setCustomAnim(TRUE); -			avatarp->startMotion(ANIM_AGENT_CUSTOMIZE); -			LLMotion* turn_motion = avatarp->findMotion(ANIM_AGENT_CUSTOMIZE); +			gAgentAvatarp->startMotion(ANIM_AGENT_CUSTOMIZE); +			LLMotion* turn_motion = gAgentAvatarp->findMotion(ANIM_AGENT_CUSTOMIZE);  			if (turn_motion)  			{ @@ -2511,16 +2495,15 @@ void LLAgentCamera::setFocusGlobal(const LLVector3d& focus, const LLUUID &object  	setFocusObject(gObjectList.findObject(object_id));  	LLVector3d old_focus = mFocusTargetGlobal;  	LLViewerObject *focus_obj = mFocusObject; -	LLVOAvatarSelf *avatarp = gAgent.getAvatarObject();  	// if focus has changed  	if (old_focus != focus)  	{  		if (focus.isExactlyZero())  		{ -			if (avatarp) +			if (isAgentAvatarValid())  			{ -				mFocusTargetGlobal = gAgent.getPosGlobalFromAgent(avatarp->mHeadp->getWorldPosition()); +				mFocusTargetGlobal = gAgent.getPosGlobalFromAgent(gAgentAvatarp->mHeadp->getWorldPosition());  			}  			else  			{ @@ -2563,9 +2546,9 @@ void LLAgentCamera::setFocusGlobal(const LLVector3d& focus, const LLUUID &object  	{  		if (focus.isExactlyZero())  		{ -			if (avatarp) +			if (isAgentAvatarValid())  			{ -				mFocusTargetGlobal = gAgent.getPosGlobalFromAgent(avatarp->mHeadp->getWorldPosition()); +				mFocusTargetGlobal = gAgent.getPosGlobalFromAgent(gAgentAvatarp->mHeadp->getWorldPosition());  			}  			else  			{ @@ -2702,10 +2685,9 @@ void LLAgentCamera::setFocusOnAvatar(BOOL focus_on_avatar, BOOL animate)  		if (mCameraMode == CAMERA_MODE_THIRD_PERSON)  		{  			LLVector3 at_axis; -			LLVOAvatarSelf *avatarp = gAgent.getAvatarObject(); -			if (avatarp && avatarp->getParent()) +			if (isAgentAvatarValid() && gAgentAvatarp->getParent())  			{ -				LLQuaternion obj_rot = ((LLViewerObject*)avatarp->getParent())->getRenderRotation(); +				LLQuaternion obj_rot = ((LLViewerObject*)gAgentAvatarp->getParent())->getRenderRotation();  				at_axis = LLViewerCamera::getInstance()->getAtAxis();  				at_axis.mV[VZ] = 0.f;  				at_axis.normalize(); @@ -2733,16 +2715,15 @@ void LLAgentCamera::setFocusOnAvatar(BOOL focus_on_avatar, BOOL animate)  BOOL LLAgentCamera::setLookAt(ELookAtType target_type, LLViewerObject *object, LLVector3 position)  { -	LLVOAvatarSelf *avatarp = gAgent.getAvatarObject();  	if(object && object->isAttachment())  	{  		LLViewerObject* parent = object;  		while(parent)  		{ -			if (parent == avatarp) +			if (parent == gAgentAvatarp)  			{  				// looking at an attachment on ourselves, which we don't want to do -				object = avatarp; +				object = gAgentAvatarp;  				position.clearVec();  			}  			parent = (LLViewerObject*)parent->getParent(); @@ -2751,7 +2732,7 @@ BOOL LLAgentCamera::setLookAt(ELookAtType target_type, LLViewerObject *object, L  	if(!mLookAt || mLookAt->isDead())  	{  		mLookAt = (LLHUDEffectLookAt *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_LOOKAT); -		mLookAt->setSourceObject(avatarp); +		mLookAt->setSourceObject(gAgentAvatarp);  	}  	return mLookAt->setLookAt(target_type, object, position); @@ -2774,14 +2755,13 @@ void LLAgentCamera::lookAtLastChat()  		return;  	} -	LLVOAvatarSelf *avatarp = gAgent.getAvatarObject();  	LLVector3 delta_pos;  	if (chatter->isAvatar())  	{  		LLVOAvatar *chatter_av = (LLVOAvatar*)chatter; -		if (avatarp && chatter_av->mHeadp) +		if (isAgentAvatarValid() && chatter_av->mHeadp)  		{ -			delta_pos = chatter_av->mHeadp->getWorldPosition() - avatarp->mHeadp->getWorldPosition(); +			delta_pos = chatter_av->mHeadp->getWorldPosition() - gAgentAvatarp->mHeadp->getWorldPosition();  		}  		else  		{ @@ -2793,7 +2773,7 @@ void LLAgentCamera::lookAtLastChat()  		changeCameraToThirdPerson(); -		LLVector3 new_camera_pos = avatarp->mHeadp->getWorldPosition(); +		LLVector3 new_camera_pos = gAgentAvatarp->mHeadp->getWorldPosition();  		LLVector3 left = delta_pos % LLVector3::z_axis;  		left.normalize();  		LLVector3 up = left % delta_pos; @@ -2822,7 +2802,7 @@ void LLAgentCamera::lookAtLastChat()  		changeCameraToThirdPerson(); -		LLVector3 new_camera_pos = avatarp->mHeadp->getWorldPosition(); +		LLVector3 new_camera_pos = gAgentAvatarp->mHeadp->getWorldPosition();  		LLVector3 left = delta_pos % LLVector3::z_axis;  		left.normalize();  		LLVector3 up = left % delta_pos; @@ -2847,8 +2827,7 @@ BOOL LLAgentCamera::setPointAt(EPointAtType target_type, LLViewerObject *object,  	if (!mPointAt || mPointAt->isDead())  	{  		mPointAt = (LLHUDEffectPointAt *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_POINTAT); -		LLVOAvatarSelf *avatarp = gAgent.getAvatarObject(); -		mPointAt->setSourceObject(avatarp); +		mPointAt->setSourceObject(gAgentAvatarp);  	}  	return mPointAt->setPointAt(target_type, object, position);  } diff --git a/indra/newview/llagentcamera.h b/indra/newview/llagentcamera.h index 6fe645e7d1..2074864336 100644 --- a/indra/newview/llagentcamera.h +++ b/indra/newview/llagentcamera.h @@ -92,8 +92,6 @@ class LLAgentCamera  	LOG_CLASS(LLAgentCamera);  public: -	friend class LLAgent; -  	//--------------------------------------------------------------------  	// Constructors / Destructors  	//-------------------------------------------------------------------- @@ -121,8 +119,11 @@ public:  	BOOL			cameraCustomizeAvatar() const	{ return (mCameraMode == CAMERA_MODE_CUSTOMIZE_AVATAR /*&& !mCameraAnimating*/); }  	BOOL			cameraFollow() const			{ return (mCameraMode == CAMERA_MODE_FOLLOW && mLastCameraMode == CAMERA_MODE_FOLLOW); }  	ECameraMode		getCameraMode() const 			{ return mCameraMode; } +	ECameraMode		getLastCameraMode() const 		{ return mLastCameraMode; }  	void			updateCamera();					// Call once per frame to update camera location/orientation  	void			resetCamera(); 					// Slam camera into its default position +	void			updateLastCamera();				// Set last camera to current camera +  private:  	ECameraMode		mCameraMode;					// Target mode after transition animation is done  	ECameraMode		mLastCameraMode; @@ -157,6 +158,7 @@ public:  	BOOL			calcCameraMinDistance(F32 &obj_min_distance);  	F32				calcCustomizeAvatarUIOffset(const LLVector3d& camera_pos_global);  	F32				getCurrentCameraBuildOffset() 	{ return (F32)mCameraFocusOffset.length(); } +	void			clearCameraLag() { mCameraLag.clearVec(); }  private:  	F32				mCurrentCameraDistance;	 		// Current camera offset from avatar  	F32				mTargetCameraDistance;			// Target camera offset from avatar diff --git a/indra/newview/llagentui.cpp b/indra/newview/llagentui.cpp index 4601e3241b..c4597ad6f8 100644 --- a/indra/newview/llagentui.cpp +++ b/indra/newview/llagentui.cpp @@ -49,12 +49,10 @@  void LLAgentUI::buildName(std::string& name)  {  	name.clear(); - -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	if (avatarp) +	if (isAgentAvatarValid())  	{ -		LLNameValue *first_nv = avatarp->getNVPair("FirstName"); -		LLNameValue *last_nv = avatarp->getNVPair("LastName"); +		LLNameValue *first_nv = gAgentAvatarp->getNVPair("FirstName"); +		LLNameValue *last_nv = gAgentAvatarp->getNVPair("LastName");  		if (first_nv && last_nv)  		{  			name = first_nv->printData() + " " + last_nv->printData(); @@ -73,7 +71,8 @@ void LLAgentUI::buildName(std::string& name)  //static  void LLAgentUI::buildFullname(std::string& name)  { -	if (gAgent.getAvatarObject()) name = gAgent.getAvatarObject()->getFullname(); +	if (isAgentAvatarValid()) +		name = gAgentAvatarp->getFullname();  }  //static diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp index 5eb943877a..7aed3c1fc8 100644 --- a/indra/newview/llagentwearables.cpp +++ b/indra/newview/llagentwearables.cpp @@ -56,8 +56,6 @@  #include <boost/scoped_ptr.hpp> -#define USE_CURRENT_OUTFIT_FOLDER -  //--------------------------------------------------------------------  // Classes for fetching initial wearables data  //-------------------------------------------------------------------- @@ -291,7 +289,7 @@ void LLAgentWearables::addWearableToAgentInventoryCallback::fire(const LLUUID& i  	}  	if (mTodo & CALL_RECOVERDONE)  	{ -		LLAppearanceManager::instance().addCOFItemLink(inv_item,false); +		LLAppearanceMgr::instance().addCOFItemLink(inv_item,false);  		gAgentWearables.recoverMissingWearableDone();  	}  	/* @@ -299,7 +297,7 @@ void LLAgentWearables::addWearableToAgentInventoryCallback::fire(const LLUUID& i  	 */  	if (mTodo & CALL_CREATESTANDARDDONE)  	{ -		LLAppearanceManager::instance().addCOFItemLink(inv_item,false); +		LLAppearanceMgr::instance().addCOFItemLink(inv_item,false);  		gAgentWearables.createStandardWearablesDone(mType, mIndex);  	}  	if (mTodo & CALL_MAKENEWOUTFITDONE) @@ -308,7 +306,7 @@ void LLAgentWearables::addWearableToAgentInventoryCallback::fire(const LLUUID& i  	}  	if (mTodo & CALL_WEARITEM)  	{ -		LLAppearanceManager::instance().addCOFItemLink(inv_item, true); +		LLAppearanceMgr::instance().addCOFItemLink(inv_item, true);  	}  } @@ -485,7 +483,7 @@ void LLAgentWearables::saveWearable(const EWearableType type, const U32 index, B  			return;  		} -		gAgent.getAvatarObject()->wearableUpdated( type, TRUE ); +		gAgentAvatarp->wearableUpdated( type, TRUE );  		if (send_update)  		{ @@ -783,8 +781,7 @@ U32 LLAgentWearables::pushWearable(const EWearableType type, LLWearable *wearabl  void LLAgentWearables::wearableUpdated(LLWearable *wearable)  { -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	avatarp->wearableUpdated(wearable->getType(), TRUE); +	gAgentAvatarp->wearableUpdated(wearable->getType(), TRUE);  	wearable->refreshName();  	wearable->setLabelUpdated(); @@ -825,11 +822,10 @@ void LLAgentWearables::popWearable(LLWearable *wearable)  void LLAgentWearables::popWearable(const EWearableType type, U32 index)  {  	LLWearable *wearable = getWearable(type, index); -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();  	if (wearable)  	{  		mWearableDatas[type].erase(mWearableDatas[type].begin() + index); -		avatarp->wearableUpdated(wearable->getType(), TRUE); +		gAgentAvatarp->wearableUpdated(wearable->getType(), TRUE);  		wearable->setLabelUpdated();  	}  } @@ -961,8 +957,7 @@ void LLAgentWearables::processAgentInitialWearablesUpdate(LLMessageSystem* mesgs  	LLUUID agent_id;  	gMessageSystem->getUUIDFast(_PREHASH_AgentData, _PREHASH_AgentID, agent_id); -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	if (avatarp && (agent_id == avatarp->getID())) +	if (isAgentAvatarValid() && (agent_id == gAgentAvatarp->getID()))  	{  		gMessageSystem->getU32Fast(_PREHASH_AgentData, _PREHASH_SerialNum, gAgentQueryManager.mUpdateSerialNum); @@ -1046,64 +1041,6 @@ void LLAgentWearables::processAgentInitialWearablesUpdate(LLMessageSystem* mesgs  	}  } -// A single wearable that the avatar was wearing on start-up has arrived from the database. -// static -void LLAgentWearables::onInitialWearableAssetArrived(LLWearable* wearable, void* userdata) -{ -	boost::scoped_ptr<LLInitialWearablesFetch::InitialWearableData> wear_data((LLInitialWearablesFetch::InitialWearableData*)userdata);  -	const EWearableType type = wear_data->mType; -	U32 index = 0; - -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	if (!avatarp) -	{ -		return; -	} -		 -	if (wearable) -	{ -		llassert(type == wearable->getType()); -		wearable->setItemID(wear_data->mItemID); -		index = gAgentWearables.pushWearable(type, wearable); -		gAgentWearables.mItemsAwaitingWearableUpdate.erase(wear_data->mItemID); - -		// disable composites if initial textures are baked -		avatarp->setupComposites(); - -		avatarp->setCompositeUpdatesEnabled(TRUE); -		gInventory.addChangedMask(LLInventoryObserver::LABEL, wearable->getItemID()); -	} -	else -	{ -		// Somehow the asset doesn't exist in the database. -		gAgentWearables.recoverMissingWearable(type,index); -	} -	 - -	gInventory.notifyObservers(); - -	// Have all the wearables that the avatar was wearing at log-in arrived? -	// MULTI-WEARABLE: update when multiple wearables can arrive per type. - -	gAgentWearables.updateWearablesLoaded(); -	if (gAgentWearables.areWearablesLoaded()) -	{ - -		// Can't query cache until all wearables have arrived, so calling this earlier is a no-op. -		gAgentWearables.queryWearableCache(); - -		// Make sure that the server's idea of the avatar's wearables actually match the wearables. -		gAgent.sendAgentSetAppearance(); - -		// Check to see if there are any baked textures that we hadn't uploaded before we logged off last time. -		// If there are any, schedule them to be uploaded as soon as the layer textures they depend on arrive. -		if (gAgentCamera.cameraCustomizeAvatar()) -		{ -			avatarp->requestLayerSetUploads(); -		} -	} -} -  // Normally, all wearables referred to "AgentWearablesUpdate" will correspond to actual assets in the  // database.  If for some reason, we can't load one of those assets, we can try to reconstruct it so that  // the user isn't left without a shape, for example.  (We can do that only after the inventory has loaded.) @@ -1179,7 +1116,7 @@ public:  	{  		llinfos << "All items created" << llendl;  		LLPointer<LLInventoryCallback> link_waiter = new LLUpdateAppearanceOnDestroy; -		LLAppearanceManager::instance().linkAll(LLAppearanceManager::instance().getCOF(), +		LLAppearanceMgr::instance().linkAll(LLAppearanceMgr::instance().getCOF(),  												mItemsToLink,  												link_waiter);  	} @@ -1239,13 +1176,9 @@ void LLAgentWearables::createStandardWearables(BOOL female)  	llwarns << "Creating Standard " << (female ? "female" : "male")  			<< " Wearables" << llendl; -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	if (!avatarp) -	{ -		return; -	} +	if (!isAgentAvatarValid()) return; -	avatarp->setSex(female ? SEX_FEMALE : SEX_MALE); +	gAgentAvatarp->setSex(female ? SEX_FEMALE : SEX_MALE);  	const BOOL create[WT_COUNT] =   		{ @@ -1293,11 +1226,8 @@ void LLAgentWearables::createStandardWearablesDone(S32 type, U32 index)  {  	llinfos << "type " << type << " index " << index << llendl; -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	if (avatarp) -	{ -		avatarp->updateVisualParams(); -	} +	if (!isAgentAvatarValid()) return; +	gAgentAvatarp->updateVisualParams();  }  void LLAgentWearables::createStandardWearablesAllDone() @@ -1312,8 +1242,7 @@ void LLAgentWearables::createStandardWearablesAllDone()  	updateServer();  	// Treat this as the first texture entry message, if none received yet -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	avatarp->onFirstTEMessageReceived(); +	gAgentAvatarp->onFirstTEMessageReceived();  }  // MULTI-WEARABLE: Properly handle multiwearables later. @@ -1335,11 +1264,7 @@ void LLAgentWearables::makeNewOutfit(const std::string& new_folder_name,  									 const LLDynamicArray<S32>& attachments_to_include,  									 BOOL rename_clothing)  { -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	if (!avatarp) -	{ -		return; -	} +	if (!isAgentAvatarValid()) return;  	// First, make a folder in the Clothes directory.  	LLUUID folder_id = gInventory.createNewCategory( @@ -1437,7 +1362,7 @@ void LLAgentWearables::makeNewOutfit(const std::string& new_folder_name,  		for (S32 i = 0; i < attachments_to_include.count(); i++)  		{  			S32 attachment_pt = attachments_to_include[i]; -			LLViewerJointAttachment* attachment = get_if_there(avatarp->mAttachmentPoints, attachment_pt, (LLViewerJointAttachment*)NULL); +			LLViewerJointAttachment* attachment = get_if_there(gAgentAvatarp->mAttachmentPoints, attachment_pt, (LLViewerJointAttachment*)NULL);  			if (!attachment) continue;  			for (LLViewerJointAttachment::attachedobjs_vec_t::iterator attachment_iter = attachment->mAttachedObjects.begin();  				 attachment_iter != attachment->mAttachedObjects.end(); @@ -1498,8 +1423,8 @@ public:  			tab_outfits->changeOpenClose(tab_outfits->getDisplayChildren());  		} -		LLAppearanceManager::instance().updateIsDirty(); -		LLAppearanceManager::instance().updatePanelOutfitName(""); +		LLAppearanceMgr::instance().updateIsDirty(); +		LLAppearanceMgr::instance().updatePanelOutfitName("");  	}  	virtual void fire(const LLUUID&) @@ -1512,11 +1437,7 @@ private:  LLUUID LLAgentWearables::makeNewOutfitLinks(const std::string& new_folder_name)  { -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	if (!avatarp) -	{ -		return LLUUID::null; -	} +	if (!isAgentAvatarValid()) return LLUUID::null;  	// First, make a folder in the My Outfits directory.  	const LLUUID parent_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_MY_OUTFITS); @@ -1526,8 +1447,8 @@ LLUUID LLAgentWearables::makeNewOutfitLinks(const std::string& new_folder_name)  		new_folder_name);  	LLPointer<LLInventoryCallback> cb = new LLShowCreatedOutfit(folder_id); -	LLAppearanceManager::instance().shallowCopyCategoryContents(LLAppearanceManager::instance().getCOF(),folder_id, cb); -	LLAppearanceManager::instance().createBaseOutfitLink(folder_id, cb); +	LLAppearanceMgr::instance().shallowCopyCategoryContents(LLAppearanceMgr::instance().getCOF(),folder_id, cb); +	LLAppearanceMgr::instance().createBaseOutfitLink(folder_id, cb);  	return folder_id;  } @@ -1680,7 +1601,6 @@ void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& it  										 BOOL remove)  {  	llinfos << "setWearableOutfit() start" << llendl; -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();  	BOOL wearables_to_remove[WT_COUNT];  	wearables_to_remove[WT_SHAPE]		= FALSE; @@ -1784,11 +1704,11 @@ void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& it  		}  	} -	if (avatarp) +	if (isAgentAvatarValid())  	{ -		avatarp->setCompositeUpdatesEnabled(TRUE); -		avatarp->updateVisualParams(); -		avatarp->invalidateAll(); +		gAgentAvatarp->setCompositeUpdatesEnabled(TRUE); +		gAgentAvatarp->updateVisualParams(); +		gAgentAvatarp->invalidateAll();  	}  	// Start rendering & update the server @@ -2038,12 +1958,7 @@ void LLAgentWearables::userUpdateAttachments(LLInventoryModel::item_array_t& obj  	// already wearing and in request set -> leave alone.  	// not wearing and in request set -> put on. -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	if (!avatarp) -	{ -		llwarns << "No avatar found." << llendl; -		return; -	} +	if (!isAgentAvatarValid()) return;  	std::set<LLUUID> requested_item_ids;  	std::set<LLUUID> current_item_ids; @@ -2052,8 +1967,8 @@ void LLAgentWearables::userUpdateAttachments(LLInventoryModel::item_array_t& obj  	// Build up list of objects to be removed and items currently attached.  	llvo_vec_t objects_to_remove; -	for (LLVOAvatar::attachment_map_t::iterator iter = avatarp->mAttachmentPoints.begin();  -		 iter != avatarp->mAttachmentPoints.end();) +	for (LLVOAvatar::attachment_map_t::iterator iter = gAgentAvatarp->mAttachmentPoints.begin();  +		 iter != gAgentAvatarp->mAttachmentPoints.end();)  	{  		LLVOAvatar::attachment_map_t::iterator curiter = iter++;  		LLViewerJointAttachment* attachment = curiter->second; @@ -2109,12 +2024,7 @@ void LLAgentWearables::userUpdateAttachments(LLInventoryModel::item_array_t& obj  void LLAgentWearables::userRemoveMultipleAttachments(llvo_vec_t& objects_to_remove)  { -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	if (!avatarp) -	{ -		llwarns << "No avatar found." << llendl; -		return; -	} +	if (!isAgentAvatarValid()) return;  	if (objects_to_remove.empty())  		return; @@ -2137,17 +2047,12 @@ void LLAgentWearables::userRemoveMultipleAttachments(llvo_vec_t& objects_to_remo  void LLAgentWearables::userRemoveAllAttachments()  { -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	if (!avatarp) -	{ -		llwarns << "No avatar found." << llendl; -		return; -	} +	if (!isAgentAvatarValid()) return;  	llvo_vec_t objects_to_remove; -	for (LLVOAvatar::attachment_map_t::iterator iter = avatarp->mAttachmentPoints.begin();  -		 iter != avatarp->mAttachmentPoints.end();) +	for (LLVOAvatar::attachment_map_t::iterator iter = gAgentAvatarp->mAttachmentPoints.begin();  +		 iter != gAgentAvatarp->mAttachmentPoints.end();)  	{  		LLVOAvatar::attachment_map_t::iterator curiter = iter++;  		LLViewerJointAttachment* attachment = curiter->second; @@ -2481,7 +2386,7 @@ void LLLibraryOutfitsFetch::libraryDone(void)  			continue;  		} -		if (!LLAppearanceManager::getInstance()->getCanMakeFolderIntoOutfit(src_folder_id)) +		if (!LLAppearanceMgr::getInstance()->getCanMakeFolderIntoOutfit(src_folder_id))  		{  			llinfos << "Skipping non-outfit folder name:" << cat->getName() << llendl;  			continue; @@ -2503,7 +2408,7 @@ void LLLibraryOutfitsFetch::libraryDone(void)  		LLUUID dst_folder_id = gInventory.createNewCategory(mImportedClothingID,  															LLFolderType::FT_NONE,  															cat->getName()); -		LLAppearanceManager::getInstance()->shallowCopyCategoryContents(src_folder_id, dst_folder_id, copy_waiter); +		LLAppearanceMgr::getInstance()->shallowCopyCategoryContents(src_folder_id, dst_folder_id, copy_waiter);  	}  } @@ -2625,15 +2530,15 @@ void LLInitialWearablesFetch::processContents()  	gInventory.collectDescendentsIf(mCompleteFolders.front(), cat_array, wearable_array,   									LLInventoryModel::EXCLUDE_TRASH, is_wearable); -	LLAppearanceManager::instance().setAttachmentInvLinkEnable(true); +	LLAppearanceMgr::instance().setAttachmentInvLinkEnable(true);  	if (wearable_array.count() > 0)  	{ -		LLAppearanceManager::instance().updateAppearanceFromCOF(); +		LLAppearanceMgr::instance().updateAppearanceFromCOF();  	}  	else  	{  		// if we're constructing the COF from the wearables message, we don't have a proper outfit link -		LLAppearanceManager::instance().setOutfitDirty(true); +		LLAppearanceMgr::instance().setOutfitDirty(true);  		processWearablesMessage();  	}  	delete this; @@ -2670,7 +2575,7 @@ public:  			link_inventory_item(gAgent.getID(),  								item->getLinkedUUID(), -								LLAppearanceManager::instance().getCOF(), +								LLAppearanceMgr::instance().getCOF(),  								item->getName(),  								LLAssetType::AT_LINK,  								link_waiter); @@ -2684,7 +2589,7 @@ void LLInitialWearablesFetch::processWearablesMessage()  {  	if (!mAgentInitialWearables.empty()) // We have an empty current outfit folder, use the message data instead.  	{ -		const LLUUID current_outfit_id = LLAppearanceManager::instance().getCOF(); +		const LLUUID current_outfit_id = LLAppearanceMgr::instance().getCOF();  		LLInventoryFetchObserver::item_ref_t ids;  		for (U8 i = 0; i < mAgentInitialWearables.size(); ++i)  		{ @@ -2693,16 +2598,7 @@ void LLInitialWearablesFetch::processWearablesMessage()  			if (wearable_data->mAssetID.notNull())  			{ -#ifdef USE_CURRENT_OUTFIT_FOLDER  				ids.push_back(wearable_data->mItemID); -#endif -#if 0 -// 				// Fetch the wearables -// 				LLWearableList::instance().getAsset(wearable_data->mAssetID, -// 													LLStringUtil::null, -// 													LLWearableDictionary::getAssetType(wearable_data->mType), -// 													LLAgentWearables::onInitialWearableAssetArrived, (void*)(wearable_data)); -#endif  			}  			else  			{ @@ -2713,11 +2609,10 @@ void LLInitialWearablesFetch::processWearablesMessage()  		}  		// Add all current attachments to the requested items as well. -		LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -		if(avatarp) +		if (isAgentAvatarValid())  		{ -			for (LLVOAvatar::attachment_map_t::const_iterator iter = avatarp->mAttachmentPoints.begin();  -				 iter != avatarp->mAttachmentPoints.end(); ++iter) +			for (LLVOAvatar::attachment_map_t::const_iterator iter = gAgentAvatarp->mAttachmentPoints.begin();  +				 iter != gAgentAvatarp->mAttachmentPoints.end(); ++iter)  			{  				LLViewerJointAttachment* attachment = iter->second;  				if (!attachment) continue; diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index b3dfb8f141..eb0a602e0e 100644 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -119,7 +119,7 @@ protected:  		// If the inventory callback manager goes away, we're shutting down, no longer want the callback.  		if( LLInventoryCallbackManager::is_instantiated() )  		{ -			LLAppearanceManager::instance().wearInventoryCategoryOnAvatar(gInventory.getCategory(mCatID), mAppend); +			LLAppearanceMgr::instance().wearInventoryCategoryOnAvatar(gInventory.getCategory(mCatID), mAppend);  		}  		else  		{ @@ -228,7 +228,7 @@ void LLOutfitObserver::doWearCategory()  	else  	{  		// Wear the inventory category. -		LLAppearanceManager::instance().wearInventoryCategoryOnAvatar(gInventory.getCategory(mCatID), mAppend); +		LLAppearanceMgr::instance().wearInventoryCategoryOnAvatar(gInventory.getCategory(mCatID), mAppend);  	}  	delete this;  } @@ -312,7 +312,7 @@ LLUpdateAppearanceOnDestroy::~LLUpdateAppearanceOnDestroy()  	if (!LLApp::isExiting())  	{ -		LLAppearanceManager::instance().updateAppearanceFromCOF(); +		LLAppearanceMgr::instance().updateAppearanceFromCOF();  	}  } @@ -368,6 +368,7 @@ public:  	void recoverMissingWearable(EWearableType type);  	void clearCOFLinksForMissingWearables(); +	void onWearableAssetFetch(LLWearable *wearable);  	void onAllComplete();  	typedef std::list<LLFoundData> found_list_t; @@ -450,12 +451,12 @@ void LLWearableHoldingPattern::onAllComplete()  	{  		llinfos << "Activating " << mGestItems.count() << " gestures" << llendl; -		LLGestureManager::instance().activateGestures(mGestItems); +		LLGestureMgr::instance().activateGestures(mGestItems);  		// Update the inventory item labels to reflect the fact  		// they are active.  		LLViewerInventoryCategory* catp = -			gInventory.getCategory(LLAppearanceManager::instance().getCOF()); +			gInventory.getCategory(LLAppearanceMgr::instance().getCOF());  		if (catp)  		{ @@ -466,11 +467,10 @@ void LLWearableHoldingPattern::onAllComplete()  	// Update wearables.  	llinfos << "Updating agent wearables with " << mResolved << " wearable items " << llendl; -	LLAppearanceManager::instance().updateAgentWearables(this, false); +	LLAppearanceMgr::instance().updateAgentWearables(this, false);  	// Update attachments to match those requested. -	LLVOAvatar* avatar = gAgent.getAvatarObject(); -	if( avatar ) +	if (isAgentAvatarValid())  	{  		llinfos << "Updating " << mObjItems.count() << " attachments" << llendl;  		LLAgentWearables::userUpdateAttachments(mObjItems); @@ -581,7 +581,7 @@ public:  		{  			link_inventory_item( gAgent.getID(),  					     item_id, -					     LLAppearanceManager::instance().getCOF(), +					     LLAppearanceMgr::instance().getCOF(),  					     itemp->getName(),  					     LLAssetType::AT_LINK,  					     cb); @@ -632,7 +632,7 @@ void LLWearableHoldingPattern::clearCOFLinksForMissingWearables()  		{  			// Wearable link that was never resolved; remove links to it from COF  			llinfos << "removing link for unresolved item " << data.mItemID.asString() << llendl; -			LLAppearanceManager::instance().removeCOFItemLinks(data.mItemID,false); +			LLAppearanceMgr::instance().removeCOFItemLinks(data.mItemID,false);  		}  	}  } @@ -657,11 +657,10 @@ bool LLWearableHoldingPattern::pollMissingWearables()  	return done;  } -static void onWearableAssetFetch(LLWearable* wearable, void* data) +void LLWearableHoldingPattern::onWearableAssetFetch(LLWearable *wearable)  { -	LLWearableHoldingPattern* holder = (LLWearableHoldingPattern*)data; -	holder->mResolved += 1;  // just counting callbacks, not successes. -	llinfos << "onWearableAssetFetch, resolved count " << holder->mResolved << " of requested " << holder->mFoundList.size() << llendl; +	mResolved += 1;  // just counting callbacks, not successes. +	llinfos << "onWearableAssetFetch, resolved count " << mResolved << " of requested " << mFoundList.size() << llendl;  	if (wearable)  	{  		llinfos << "wearable found, type " << wearable->getType() << " asset " << wearable->getAssetID() << llendl; @@ -671,7 +670,7 @@ static void onWearableAssetFetch(LLWearable* wearable, void* data)  		llwarns << "no wearable found" << llendl;  	} -	if (holder->mFired) +	if (mFired)  	{  		llwarns << "called after holder fired" << llendl;  		return; @@ -682,8 +681,8 @@ static void onWearableAssetFetch(LLWearable* wearable, void* data)  		return;  	} -	for (LLWearableHoldingPattern::found_list_t::iterator iter = holder->mFoundList.begin(); -		 iter != holder->mFoundList.end(); ++iter) +	for (LLWearableHoldingPattern::found_list_t::iterator iter = mFoundList.begin(); +		 iter != mFoundList.end(); ++iter)  	{  		LLFoundData& data = *iter;  		if(wearable->getAssetID() == data.mAssetID) @@ -696,6 +695,12 @@ static void onWearableAssetFetch(LLWearable* wearable, void* data)  	}  } +static void onWearableAssetFetch(LLWearable* wearable, void* data) +{ +	LLWearableHoldingPattern* holder = (LLWearableHoldingPattern*)data; +	holder->onWearableAssetFetch(wearable); +} +  static void removeDuplicateItems(LLInventoryModel::item_array_t& items)  { @@ -724,13 +729,13 @@ static void removeDuplicateItems(LLInventoryModel::item_array_t& items)  	items = new_items;  } -const LLUUID LLAppearanceManager::getCOF() const +const LLUUID LLAppearanceMgr::getCOF() const  {  	return gInventory.findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT);  } -const LLViewerInventoryItem* LLAppearanceManager::getBaseOutfitLink() +const LLViewerInventoryItem* LLAppearanceMgr::getBaseOutfitLink()  {  	const LLUUID& current_outfit_cat = getCOF();  	LLInventoryModel::cat_array_t cat_array; @@ -758,7 +763,7 @@ const LLViewerInventoryItem* LLAppearanceManager::getBaseOutfitLink()  	return NULL;  } -bool LLAppearanceManager::getBaseOutfitName(std::string& name) +bool LLAppearanceMgr::getBaseOutfitName(std::string& name)  {  	const LLViewerInventoryItem* outfit_link = getBaseOutfitLink();  	if(outfit_link) @@ -774,15 +779,15 @@ bool LLAppearanceManager::getBaseOutfitName(std::string& name)  }  // Update appearance from outfit folder. -void LLAppearanceManager::changeOutfit(bool proceed, const LLUUID& category, bool append) +void LLAppearanceMgr::changeOutfit(bool proceed, const LLUUID& category, bool append)  {  	if (!proceed)  		return; -	LLAppearanceManager::instance().updateCOF(category,append); +	LLAppearanceMgr::instance().updateCOF(category,append);  }  // Create a copy of src_id + contents as a subfolder of dst_id. -void LLAppearanceManager::shallowCopyCategory(const LLUUID& src_id, const LLUUID& dst_id, +void LLAppearanceMgr::shallowCopyCategory(const LLUUID& src_id, const LLUUID& dst_id,  											  LLPointer<LLInventoryCallback> cb)  {  	LLInventoryCategory *src_cat = gInventory.getCategory(src_id); @@ -805,7 +810,7 @@ void LLAppearanceManager::shallowCopyCategory(const LLUUID& src_id, const LLUUID  }  // Copy contents of src_id to dst_id. -void LLAppearanceManager::shallowCopyCategoryContents(const LLUUID& src_id, const LLUUID& dst_id, +void LLAppearanceMgr::shallowCopyCategoryContents(const LLUUID& src_id, const LLUUID& dst_id,  													  LLPointer<LLInventoryCallback> cb)  {  	LLInventoryModel::cat_array_t* cats; @@ -861,7 +866,7 @@ void LLAppearanceManager::shallowCopyCategoryContents(const LLUUID& src_id, cons  	}  } -BOOL LLAppearanceManager::getCanMakeFolderIntoOutfit(const LLUUID& folder_id) +BOOL LLAppearanceMgr::getCanMakeFolderIntoOutfit(const LLUUID& folder_id)  {  	// These are the wearable items that are required for considering this  	// folder as containing a complete outfit. @@ -893,7 +898,7 @@ BOOL LLAppearanceManager::getCanMakeFolderIntoOutfit(const LLUUID& folder_id)  } -void LLAppearanceManager::purgeBaseOutfitLink(const LLUUID& category) +void LLAppearanceMgr::purgeBaseOutfitLink(const LLUUID& category)  {  	LLInventoryModel::cat_array_t cats;  	LLInventoryModel::item_array_t items; @@ -915,7 +920,7 @@ void LLAppearanceManager::purgeBaseOutfitLink(const LLUUID& category)  	}  } -void LLAppearanceManager::purgeCategory(const LLUUID& category, bool keep_outfit_links) +void LLAppearanceMgr::purgeCategory(const LLUUID& category, bool keep_outfit_links)  {  	LLInventoryModel::cat_array_t cats;  	LLInventoryModel::item_array_t items; @@ -935,7 +940,7 @@ void LLAppearanceManager::purgeCategory(const LLUUID& category, bool keep_outfit  // Keep the last N wearables of each type.  For viewer 2.0, N is 1 for  // both body parts and clothing items. -void LLAppearanceManager::filterWearableItems( +void LLAppearanceMgr::filterWearableItems(  	LLInventoryModel::item_array_t& items, S32 max_per_type)  {  	// Divvy items into arrays by wearable type. @@ -971,7 +976,7 @@ void LLAppearanceManager::filterWearableItems(  }  // Create links to all listed items. -void LLAppearanceManager::linkAll(const LLUUID& category, +void LLAppearanceMgr::linkAll(const LLUUID& category,  								  LLInventoryModel::item_array_t& items,  								  LLPointer<LLInventoryCallback> cb)  { @@ -987,7 +992,7 @@ void LLAppearanceManager::linkAll(const LLUUID& category,  	}  } -void LLAppearanceManager::updateCOF(const LLUUID& category, bool append) +void LLAppearanceMgr::updateCOF(const LLUUID& category, bool append)  {  	LLViewerInventoryCategory *pcat = gInventory.getCategory(category);  	llinfos << "starting, cat " << (pcat ? pcat->getName() : "[UNKNOWN]") << llendl; @@ -1002,9 +1007,9 @@ void LLAppearanceManager::updateCOF(const LLUUID& category, bool append)  		for(S32 i = 0; i  < gest_items.count(); ++i)  		{  			LLViewerInventoryItem *gest_item = gest_items.get(i); -			if ( LLGestureManager::instance().isGestureActive( gest_item->getLinkedUUID()) ) +			if ( LLGestureMgr::instance().isGestureActive( gest_item->getLinkedUUID()) )  			{ -				LLGestureManager::instance().deactivateGesture( gest_item->getLinkedUUID() ); +				LLGestureMgr::instance().deactivateGesture( gest_item->getLinkedUUID() );  			}  		}  	} @@ -1065,7 +1070,7 @@ void LLAppearanceManager::updateCOF(const LLUUID& category, bool append)  	llinfos << "waiting for LLUpdateAppearanceOnDestroy" << llendl;  } -void LLAppearanceManager::updatePanelOutfitName(const std::string& name) +void LLAppearanceMgr::updatePanelOutfitName(const std::string& name)  {  	LLSidepanelAppearance* panel_appearance =  		dynamic_cast<LLSidepanelAppearance *>(LLSideTray::getInstance()->getPanel("sidepanel_appearance")); @@ -1075,7 +1080,7 @@ void LLAppearanceManager::updatePanelOutfitName(const std::string& name)  	}  } -void LLAppearanceManager::createBaseOutfitLink(const LLUUID& category, LLPointer<LLInventoryCallback> link_waiter) +void LLAppearanceMgr::createBaseOutfitLink(const LLUUID& category, LLPointer<LLInventoryCallback> link_waiter)  {  	const LLUUID cof = getCOF();  	LLViewerInventoryCategory* catp = gInventory.getCategory(category); @@ -1093,7 +1098,7 @@ void LLAppearanceManager::createBaseOutfitLink(const LLUUID& category, LLPointer  	updatePanelOutfitName(new_outfit_name);  } -void LLAppearanceManager::updateAgentWearables(LLWearableHoldingPattern* holder, bool append) +void LLAppearanceMgr::updateAgentWearables(LLWearableHoldingPattern* holder, bool append)  {  	lldebugs << "updateAgentWearables()" << llendl;  	LLInventoryItem::item_array_t items; @@ -1146,7 +1151,7 @@ static void remove_non_link_items(LLInventoryModel::item_array_t &items)  	items = pruned_items;  } -void LLAppearanceManager::updateAppearanceFromCOF() +void LLAppearanceMgr::updateAppearanceFromCOF()  {  	// update dirty flag to see if the state of the COF matches  	// the saved outfit stored as a folder link @@ -1160,7 +1165,7 @@ void LLAppearanceManager::updateAppearanceFromCOF()  	LLUUID current_outfit_id = getCOF();  	// Find all the wearables that are in the COF's subtree. -	lldebugs << "LLAppearanceManager::updateFromCOF()" << llendl; +	lldebugs << "LLAppearanceMgr::updateFromCOF()" << llendl;  	LLInventoryModel::item_array_t wear_items;  	LLInventoryModel::item_array_t obj_items;  	LLInventoryModel::item_array_t gest_items; @@ -1186,9 +1191,6 @@ void LLAppearanceManager::updateAppearanceFromCOF()  	// callback will be called (and this object deleted)  	// before the final getNextData(). -	// BAP future cleanup - no point having found_container when -	// mFoundList already has all the info. -	LLDynamicArray<LLFoundData> found_container;  	for(S32 i = 0; i  < wear_items.count(); ++i)  	{  		LLViewerInventoryItem *item = wear_items.get(i); @@ -1214,7 +1216,6 @@ void LLAppearanceManager::updateAppearanceFromCOF()  #endif  			holder->mFoundList.push_front(found); -			found_container.put(found);  		}  		else  		{ @@ -1229,9 +1230,10 @@ void LLAppearanceManager::updateAppearanceFromCOF()  		}  	} -	for(S32 i = 0; i < found_container.count(); ++i) +	for (LLWearableHoldingPattern::found_list_t::iterator it = holder->mFoundList.begin(); +		 it != holder->mFoundList.end(); ++it)  	{ -		LLFoundData& found = found_container.get(i); +		LLFoundData& found = *it;  		llinfos << "waiting for onWearableAssetFetch callback, asset " << found.mAssetID.asString() << llendl; @@ -1248,10 +1250,9 @@ void LLAppearanceManager::updateAppearanceFromCOF()  	{  		doOnIdleRepeating(boost::bind(&LLWearableHoldingPattern::pollFetchCompletion,holder));  	} -  } -void LLAppearanceManager::getDescendentsOfAssetType(const LLUUID& category, +void LLAppearanceMgr::getDescendentsOfAssetType(const LLUUID& category,  													LLInventoryModel::item_array_t& items,  													LLAssetType::EType type,  													bool follow_folder_links) @@ -1266,7 +1267,7 @@ void LLAppearanceManager::getDescendentsOfAssetType(const LLUUID& category,  									follow_folder_links);  } -void LLAppearanceManager::getUserDescendents(const LLUUID& category,  +void LLAppearanceMgr::getUserDescendents(const LLUUID& category,   											 LLInventoryModel::item_array_t& wear_items,  											 LLInventoryModel::item_array_t& obj_items,  											 LLInventoryModel::item_array_t& gest_items, @@ -1301,7 +1302,7 @@ void LLAppearanceManager::getUserDescendents(const LLUUID& category,  									follow_folder_links);  } -void LLAppearanceManager::wearInventoryCategory(LLInventoryCategory* category, bool copy, bool append) +void LLAppearanceMgr::wearInventoryCategory(LLInventoryCategory* category, bool copy, bool append)  {  	if(!category) return; @@ -1330,7 +1331,7 @@ void LLAppearanceManager::wearInventoryCategory(LLInventoryCategory* category, b  }  // *NOTE: hack to get from avatar inventory to avatar -void LLAppearanceManager::wearInventoryCategoryOnAvatar( LLInventoryCategory* category, bool append ) +void LLAppearanceMgr::wearInventoryCategoryOnAvatar( LLInventoryCategory* category, bool append )  {  	// Avoid unintentionally overwriting old wearables.  We have to do  	// this up front to avoid having to deal with the case of multiple @@ -1342,17 +1343,17 @@ void LLAppearanceManager::wearInventoryCategoryOnAvatar( LLInventoryCategory* ca  	if( gFloaterCustomize )  	{ -		gFloaterCustomize->askToSaveIfDirty(boost::bind(&LLAppearanceManager::changeOutfit, -														&LLAppearanceManager::instance(), +		gFloaterCustomize->askToSaveIfDirty(boost::bind(&LLAppearanceMgr::changeOutfit, +														&LLAppearanceMgr::instance(),  														_1, category->getUUID(), append));  	}  	else  	{ -		LLAppearanceManager::changeOutfit(TRUE, category->getUUID(), append); +		LLAppearanceMgr::changeOutfit(TRUE, category->getUUID(), append);  	}  } -void LLAppearanceManager::wearOutfitByName(const std::string& name) +void LLAppearanceMgr::wearOutfitByName(const std::string& name)  {  	llinfos << "Wearing category " << name << llendl;  	//inc_busy_count(); @@ -1388,7 +1389,7 @@ void LLAppearanceManager::wearOutfitByName(const std::string& name)  	if(cat)  	{ -		LLAppearanceManager::wearInventoryCategory(cat, copy_items, false); +		LLAppearanceMgr::wearInventoryCategory(cat, copy_items, false);  	}  	else  	{ @@ -1424,7 +1425,7 @@ public:  		if (item)  		{  			gInventory.removeObserver(this); -			LLAppearanceManager::instance().addCOFItemLink(item,mDoUpdate); +			LLAppearanceMgr::instance().addCOFItemLink(item,mDoUpdate);  			delete this;  		}  	} @@ -1435,7 +1436,7 @@ private:  }; -void LLAppearanceManager::addCOFItemLink(const LLUUID &item_id, bool do_update ) +void LLAppearanceMgr::addCOFItemLink(const LLUUID &item_id, bool do_update )  {  	const LLInventoryItem *item = gInventory.getItem(item_id);  	if (!item) @@ -1449,7 +1450,7 @@ void LLAppearanceManager::addCOFItemLink(const LLUUID &item_id, bool do_update )  	}  } -void LLAppearanceManager::addCOFItemLink(const LLInventoryItem *item, bool do_update ) +void LLAppearanceMgr::addCOFItemLink(const LLInventoryItem *item, bool do_update )  {		  	const LLViewerInventoryItem *vitem = dynamic_cast<const LLViewerInventoryItem*>(item);  	if (!vitem) @@ -1462,7 +1463,7 @@ void LLAppearanceManager::addCOFItemLink(const LLInventoryItem *item, bool do_up  	LLInventoryModel::cat_array_t cat_array;  	LLInventoryModel::item_array_t item_array; -	gInventory.collectDescendents(LLAppearanceManager::getCOF(), +	gInventory.collectDescendents(LLAppearanceMgr::getCOF(),  								  cat_array,  								  item_array,  								  LLInventoryModel::EXCLUDE_TRASH); @@ -1490,7 +1491,7 @@ void LLAppearanceManager::addCOFItemLink(const LLInventoryItem *item, bool do_up  	{  		if (do_update)  		{	 -			LLAppearanceManager::updateAppearanceFromCOF(); +			LLAppearanceMgr::updateAppearanceFromCOF();  		}  		return;  	} @@ -1507,7 +1508,8 @@ void LLAppearanceManager::addCOFItemLink(const LLInventoryItem *item, bool do_up  	return;  } -void LLAppearanceManager::addEnsembleLink( LLInventoryCategory* cat, bool do_update ) +// BAP remove ensemble code for 2.1? +void LLAppearanceMgr::addEnsembleLink( LLInventoryCategory* cat, bool do_update )  {  #if SUPPORT_ENSEMBLES  	// BAP add check for already in COF. @@ -1521,13 +1523,13 @@ void LLAppearanceManager::addEnsembleLink( LLInventoryCategory* cat, bool do_upd  #endif  } -void LLAppearanceManager::removeCOFItemLinks(const LLUUID& item_id, bool do_update) +void LLAppearanceMgr::removeCOFItemLinks(const LLUUID& item_id, bool do_update)  {  	gInventory.addChangedMask(LLInventoryObserver::LABEL, item_id);  	LLInventoryModel::cat_array_t cat_array;  	LLInventoryModel::item_array_t item_array; -	gInventory.collectDescendents(LLAppearanceManager::getCOF(), +	gInventory.collectDescendents(LLAppearanceMgr::getCOF(),  								  cat_array,  								  item_array,  								  LLInventoryModel::EXCLUDE_TRASH); @@ -1541,11 +1543,11 @@ void LLAppearanceManager::removeCOFItemLinks(const LLUUID& item_id, bool do_upda  	}  	if (do_update)  	{ -		LLAppearanceManager::updateAppearanceFromCOF(); +		LLAppearanceMgr::updateAppearanceFromCOF();  	}  } -void LLAppearanceManager::updateIsDirty() +void LLAppearanceMgr::updateIsDirty()  {  	LLUUID cof = getCOF();  	LLUUID base_outfit; @@ -1614,7 +1616,7 @@ void LLAppearanceManager::updateIsDirty()  	}  } -void LLAppearanceManager::onFirstFullyVisible() +void LLAppearanceMgr::onFirstFullyVisible()  {  	// If this is the very first time the user has logged into viewer2+ (from a legacy viewer, or new account)  	// then auto-populate outfits from the library into the My Outfits folder. @@ -1633,7 +1635,7 @@ void LLAppearanceManager::onFirstFullyVisible()  //#define DUMP_CAT_VERBOSE -void LLAppearanceManager::dumpCat(const LLUUID& cat_id, const std::string& msg) +void LLAppearanceMgr::dumpCat(const LLUUID& cat_id, const std::string& msg)  {  	LLInventoryModel::cat_array_t cats;  	LLInventoryModel::item_array_t items; @@ -1654,7 +1656,7 @@ void LLAppearanceManager::dumpCat(const LLUUID& cat_id, const std::string& msg)  	llinfos << msg << " count " << items.count() << llendl;  } -void LLAppearanceManager::dumpItemArray(const LLInventoryModel::item_array_t& items, +void LLAppearanceMgr::dumpItemArray(const LLInventoryModel::item_array_t& items,  										const std::string& msg)  {  	llinfos << msg << llendl; @@ -1666,17 +1668,17 @@ void LLAppearanceManager::dumpItemArray(const LLInventoryModel::item_array_t& it  	llinfos << llendl;  } -LLAppearanceManager::LLAppearanceManager(): +LLAppearanceMgr::LLAppearanceMgr():  	mAttachmentInvLinkEnabled(false),  	mOutfitIsDirty(false)  {  } -LLAppearanceManager::~LLAppearanceManager() +LLAppearanceMgr::~LLAppearanceMgr()  {  } -void LLAppearanceManager::setAttachmentInvLinkEnable(bool val) +void LLAppearanceMgr::setAttachmentInvLinkEnable(bool val)  {  	llinfos << "setAttachmentInvLinkEnable => " << (int) val << llendl;  	mAttachmentInvLinkEnabled = val; @@ -1699,7 +1701,7 @@ void dumpAttachmentSet(const std::set<LLUUID>& atts, const std::string& msg)         llinfos << llendl;  } -void LLAppearanceManager::registerAttachment(const LLUUID& item_id) +void LLAppearanceMgr::registerAttachment(const LLUUID& item_id)  {         mRegisteredAttachments.insert(item_id);  	   gInventory.addChangedMask(LLInventoryObserver::LABEL, item_id); @@ -1707,7 +1709,7 @@ void LLAppearanceManager::registerAttachment(const LLUUID& item_id)  	   if (mAttachmentInvLinkEnabled)  	   { -		   LLAppearanceManager::addCOFItemLink(item_id, false);  // Add COF link for item. +		   LLAppearanceMgr::addCOFItemLink(item_id, false);  // Add COF link for item.  	   }  	   else  	   { @@ -1715,7 +1717,7 @@ void LLAppearanceManager::registerAttachment(const LLUUID& item_id)  	   }  } -void LLAppearanceManager::unregisterAttachment(const LLUUID& item_id) +void LLAppearanceMgr::unregisterAttachment(const LLUUID& item_id)  {         mRegisteredAttachments.erase(item_id);  	   gInventory.addChangedMask(LLInventoryObserver::LABEL, item_id); @@ -1724,8 +1726,8 @@ void LLAppearanceManager::unregisterAttachment(const LLUUID& item_id)  	   if (mAttachmentInvLinkEnabled)  	   { -		   //LLAppearanceManager::dumpCat(LLAppearanceManager::getCOF(),"Removing attachment link:"); -		   LLAppearanceManager::removeCOFItemLinks(item_id, false); +		   //LLAppearanceMgr::dumpCat(LLAppearanceMgr::getCOF(),"Removing attachment link:"); +		   LLAppearanceMgr::removeCOFItemLinks(item_id, false);  	   }  	   else  	   { @@ -1733,7 +1735,7 @@ void LLAppearanceManager::unregisterAttachment(const LLUUID& item_id)  	   }  } -void LLAppearanceManager::linkRegisteredAttachments() +void LLAppearanceMgr::linkRegisteredAttachments()  {  	for (std::set<LLUUID>::iterator it = mRegisteredAttachments.begin();  		 it != mRegisteredAttachments.end(); @@ -1745,12 +1747,12 @@ void LLAppearanceManager::linkRegisteredAttachments()  	mRegisteredAttachments.clear();  } -BOOL LLAppearanceManager::getIsInCOF(const LLUUID& obj_id) const +BOOL LLAppearanceMgr::getIsInCOF(const LLUUID& obj_id) const  {  	return gInventory.isObjectDescendentOf(obj_id, getCOF());  } -BOOL LLAppearanceManager::getIsProtectedCOFItem(const LLUUID& obj_id) const +BOOL LLAppearanceMgr::getIsProtectedCOFItem(const LLUUID& obj_id) const  {  	if (!getIsInCOF(obj_id)) return FALSE; diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h index 9d6cd34ad7..199ca80658 100644 --- a/indra/newview/llappearancemgr.h +++ b/indra/newview/llappearancemgr.h @@ -43,9 +43,9 @@ class LLWearable;  class LLWearableHoldingPattern;  class LLInventoryCallback; -class LLAppearanceManager: public LLSingleton<LLAppearanceManager> +class LLAppearanceMgr: public LLSingleton<LLAppearanceMgr>  { -	friend class LLSingleton<LLAppearanceManager>; +	friend class LLSingleton<LLAppearanceMgr>;  public:  	void updateAppearanceFromCOF(); @@ -120,8 +120,8 @@ public:  	void onFirstFullyVisible();  protected: -	LLAppearanceManager(); -	~LLAppearanceManager(); +	LLAppearanceMgr(); +	~LLAppearanceMgr();  private: diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index a3d0b8d8d9..a8d69a38cd 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -79,6 +79,7 @@  #include "lllocationhistory.h"  #include "llfasttimerview.h"  #include "llvoicechannel.h" +#include "llvoavatarself.h"  #include "llsidetray.h" @@ -356,7 +357,7 @@ void request_initial_instant_messages()  	if (!requested  		&& gMessageSystem  		&& LLMuteList::getInstance()->isLoaded() -		&& gAgent.getAvatarObject()) +		&& isAgentAvatarValid())  	{  		// Auto-accepted inventory items may require the avatar object  		// to build a correct name.  Likewise, inventory offers from @@ -3619,7 +3620,7 @@ void LLAppViewer::idle()  		// Handle pending gesture processing  		static LLFastTimer::DeclareTimer ftm("Agent Position");  		LLFastTimer t(ftm); -		LLGestureManager::instance().update(); +		LLGestureMgr::instance().update();  		gAgent.updateAgentPosition(gFrameDTClamped, yaw, current_mouse.mX, current_mouse.mY);  	} diff --git a/indra/newview/llassetuploadresponders.cpp b/indra/newview/llassetuploadresponders.cpp index 2bd3728ab7..370ecc0665 100644 --- a/indra/newview/llassetuploadresponders.cpp +++ b/indra/newview/llassetuploadresponders.cpp @@ -487,10 +487,10 @@ void LLUpdateAgentInventoryResponder::uploadComplete(const LLSD& content)  	  {  		  // If this gesture is active, then we need to update the in-memory  		  // active map with the new pointer.				 -		  if (LLGestureManager::instance().isGestureActive(item_id)) +		  if (LLGestureMgr::instance().isGestureActive(item_id))  		  {  			  LLUUID asset_id = new_item->getAssetUUID(); -			  LLGestureManager::instance().replaceGesture(item_id, asset_id); +			  LLGestureMgr::instance().replaceGesture(item_id, asset_id);  			  gInventory.notifyObservers();  		  }				 diff --git a/indra/newview/llchatbar.cpp b/indra/newview/llchatbar.cpp index b32a955038..67d5d21b2a 100644 --- a/indra/newview/llchatbar.cpp +++ b/indra/newview/llchatbar.cpp @@ -107,7 +107,7 @@ LLChatBar::LLChatBar()  LLChatBar::~LLChatBar()  { -	LLGestureManager::instance().removeObserver(mObserver); +	LLGestureMgr::instance().removeObserver(mObserver);  	delete mObserver;  	mObserver = NULL;  	// LLView destructor cleans up children @@ -209,8 +209,8 @@ void LLChatBar::refreshGestures()  		// collect list of unique gestures  		std::map <std::string, BOOL> unique; -		LLGestureManager::item_map_t::const_iterator it; -		const LLGestureManager::item_map_t& active_gestures = LLGestureManager::instance().getActiveGestures(); +		LLGestureMgr::item_map_t::const_iterator it; +		const LLGestureMgr::item_map_t& active_gestures = LLGestureMgr::instance().getActiveGestures();  		for (it = active_gestures.begin(); it != active_gestures.end(); ++it)  		{  			LLMultiGesture* gesture = (*it).second; @@ -296,7 +296,7 @@ void LLChatBar::setGestureCombo(LLComboBox* combo)  		// now register observer since we have a place to put the results  		mObserver = new LLChatBarGestureObserver(this); -		LLGestureManager::instance().addObserver(mObserver); +		LLGestureMgr::instance().addObserver(mObserver);  		// refresh list from current active gestures  		refreshGestures(); @@ -377,7 +377,7 @@ void LLChatBar::sendChat( EChatType type )  			if (0 == channel)  			{  				// discard returned "found" boolean -				LLGestureManager::instance().triggerAndReviseString(utf8text, &utf8_revised_text); +				LLGestureMgr::instance().triggerAndReviseString(utf8text, &utf8_revised_text);  			}  			else  			{ @@ -516,7 +516,7 @@ void LLChatBar::onInputEditorKeystroke( LLLineEditor* caller, void* userdata )  		std::string utf8_trigger = wstring_to_utf8str(raw_text);  		std::string utf8_out_str(utf8_trigger); -		if (LLGestureManager::instance().matchPrefix(utf8_trigger, &utf8_out_str)) +		if (LLGestureMgr::instance().matchPrefix(utf8_trigger, &utf8_out_str))  		{  			if (self->mInputEditor)  			{ @@ -653,7 +653,7 @@ void LLChatBar::onCommitGesture(LLUICtrl* ctrl)  		// substitution and logging.  		std::string text(trigger);  		std::string revised_text; -		LLGestureManager::instance().triggerAndReviseString(text, &revised_text); +		LLGestureMgr::instance().triggerAndReviseString(text, &revised_text);  		revised_text = utf8str_trim(revised_text);  		if (!revised_text.empty()) diff --git a/indra/newview/lldriverparam.cpp b/indra/newview/lldriverparam.cpp index 830e975e8a..ebd767d654 100644 --- a/indra/newview/lldriverparam.cpp +++ b/indra/newview/lldriverparam.cpp @@ -118,13 +118,12 @@ void LLDriverParamInfo::toStream(std::ostream &out)  	out << std::endl; -	LLVOAvatarSelf *avatar = gAgent.getAvatarObject(); -	if(avatar) +	if(isAgentAvatarValid())  	{  		for (entry_info_list_t::iterator iter = mDrivenInfoList.begin(); iter != mDrivenInfoList.end(); iter++)  		{  			LLDrivenEntryInfo driven = *iter; -			LLViewerVisualParam *param = (LLViewerVisualParam*)avatar->getVisualParam(driven.mDrivenID); +			LLViewerVisualParam *param = (LLViewerVisualParam*)gAgentAvatarp->getVisualParam(driven.mDrivenID);  			if (param)  			{  				param->getInfo()->toStream(out); @@ -146,7 +145,7 @@ void LLDriverParamInfo::toStream(std::ostream &out)  			}  			else  			{ -				llwarns << "could not get parameter " << driven.mDrivenID << " from avatar " << avatar << " for driver parameter " << getID() << llendl; +				llwarns << "could not get parameter " << driven.mDrivenID << " from avatar " << gAgentAvatarp << " for driver parameter " << getID() << llendl;  			}  			out << std::endl;  		} @@ -626,13 +625,13 @@ F32 LLDriverParam::getDrivenWeight(const LLDrivenEntry* driven, F32 input_weight  void LLDriverParam::setDrivenWeight(LLDrivenEntry *driven, F32 driven_weight, bool upload_bake)  { -	LLVOAvatarSelf *avatar_self = gAgent.getAvatarObject(); -	if(mWearablep &&  +	if(isAgentAvatarValid() && +	   mWearablep &&   	   driven->mParam->getCrossWearable() &&  	   mWearablep->isOnTop())  	{  		// call setWeight through LLVOAvatarSelf so other wearables can be updated with the correct values -		avatar_self->setVisualParamWeight( (LLVisualParam*)driven->mParam, driven_weight, upload_bake ); +		gAgentAvatarp->setVisualParamWeight( (LLVisualParam*)driven->mParam, driven_weight, upload_bake );  	}  	else  	{ diff --git a/indra/newview/llfloateranimpreview.cpp b/indra/newview/llfloateranimpreview.cpp index feb18fe393..434c89e8ba 100644 --- a/indra/newview/llfloateranimpreview.cpp +++ b/indra/newview/llfloateranimpreview.cpp @@ -568,7 +568,7 @@ void LLFloaterAnimPreview::onBtnPlay(void* user_data)  	{  		LLVOAvatar* avatarp = previewp->mAnimPreview->getDummyAvatar(); -		if(!avatarp->isMotionActive(previewp->mMotionID)) +		if (!avatarp->isMotionActive(previewp->mMotionID))  		{  			previewp->resetMotion();  			previewp->mPauseRequest = NULL; @@ -593,7 +593,7 @@ void LLFloaterAnimPreview::onBtnPause(void* user_data)  	{  		LLVOAvatar* avatarp = previewp->mAnimPreview->getDummyAvatar(); -		if(avatarp->isMotionActive(previewp->mMotionID)) +		if (avatarp->isMotionActive(previewp->mMotionID))  		{  			if (!avatarp->areAnimationsPaused())  			{ diff --git a/indra/newview/llfloatergesture.cpp b/indra/newview/llfloatergesture.cpp index 9c1ac2631d..0f80d55b67 100644 --- a/indra/newview/llfloatergesture.cpp +++ b/indra/newview/llfloatergesture.cpp @@ -106,7 +106,7 @@ LLFloaterGesture::LLFloaterGesture(const LLSD& key)  	: LLFloater(key)  {  	mObserver = new LLFloaterGestureObserver(this); -	LLGestureManager::instance().addObserver(mObserver); +	LLGestureMgr::instance().addObserver(mObserver);  	mCommitCallbackRegistrar.add("Gesture.Action.ToogleActiveState", boost::bind(&LLFloaterGesture::onActivateBtnClick, this));  	mCommitCallbackRegistrar.add("Gesture.Action.ShowPreview", boost::bind(&LLFloaterGesture::onClickEdit, this)); @@ -165,7 +165,7 @@ void LLFloaterGesture::done()  // virtual  LLFloaterGesture::~LLFloaterGesture()  { -	LLGestureManager::instance().removeObserver(mObserver); +	LLGestureMgr::instance().removeObserver(mObserver);  	delete mObserver;  	mObserver = NULL;  	gInventory.removeObserver(this); @@ -251,8 +251,8 @@ void LLFloaterGesture::buildGestureList()  	LL_DEBUGS("Gesture")<< "Rebuilding gesture list "<< LL_ENDL;  	mGestureList->deleteAllItems(); -	LLGestureManager::item_map_t::const_iterator it; -	const LLGestureManager::item_map_t& active_gestures = LLGestureManager::instance().getActiveGestures(); +	LLGestureMgr::item_map_t::const_iterator it; +	const LLGestureMgr::item_map_t& active_gestures = LLGestureMgr::instance().getActiveGestures();  	for (it = active_gestures.begin(); it != active_gestures.end(); ++it)  	{  		addGesture(it->first,it->second, mGestureList); @@ -371,7 +371,7 @@ void LLFloaterGesture::addGesture(const LLUUID& item_id , LLMultiGesture* gestur  	LLScrollListItem* sl_item = list->addElement(element, ADD_BOTTOM);  	if(sl_item)  	{ -		LLFontGL::StyleFlags style = LLGestureManager::getInstance()->isGestureActive(item_id) ? LLFontGL::BOLD : LLFontGL::NORMAL; +		LLFontGL::StyleFlags style = LLGestureMgr::getInstance()->isGestureActive(item_id) ? LLFontGL::BOLD : LLFontGL::NORMAL;  		// *TODO find out why ["font"]["style"] does not affect font style  		((LLScrollListText*)sl_item->getColumn(0))->setFontStyle(style);  	} @@ -421,17 +421,17 @@ void LLFloaterGesture::onClickPlay()  	if(item_id.isNull()) return;  	LL_DEBUGS("Gesture")<<" Trying to play gesture id: "<< item_id <<LL_ENDL; -	if(!LLGestureManager::instance().isGestureActive(item_id)) +	if(!LLGestureMgr::instance().isGestureActive(item_id))  	{  		// we need to inform server about gesture activating to be consistent with LLPreviewGesture and  LLGestureComboList.  		BOOL inform_server = TRUE;  		BOOL deactivate_similar = FALSE; -		LLGestureManager::instance().setGestureLoadedCallback(item_id, boost::bind(&LLFloaterGesture::playGesture, this, item_id)); +		LLGestureMgr::instance().setGestureLoadedCallback(item_id, boost::bind(&LLFloaterGesture::playGesture, this, item_id));  		LLViewerInventoryItem *item = gInventory.getItem(item_id);  		llassert(item);  		if (item)  		{ -			LLGestureManager::instance().activateGestureWithAsset(item_id, item->getAssetUUID(), inform_server, deactivate_similar); +			LLGestureMgr::instance().activateGestureWithAsset(item_id, item->getAssetUUID(), inform_server, deactivate_similar);  			LL_DEBUGS("Gesture")<< "Activating gesture with inventory ID: " << item_id <<LL_ENDL;  		}  	} @@ -456,7 +456,7 @@ void LLFloaterGesture::onActivateBtnClick()  	if(ids.empty())  		return; -	LLGestureManager* gm = LLGestureManager::getInstance(); +	LLGestureMgr* gm = LLGestureMgr::getInstance();  	std::vector<LLUUID>::const_iterator it = ids.begin();  	BOOL first_gesture_state = gm->isGestureActive(*it);  	BOOL is_mixed = FALSE; @@ -558,7 +558,7 @@ void LLFloaterGesture::onCommitList()  	const LLUUID& item_id = mGestureList->getCurrentID();  	mSelectedID = item_id; -	if (LLGestureManager::instance().isGesturePlaying(item_id)) +	if (LLGestureMgr::instance().isGesturePlaying(item_id))  	{  		childSetVisible("play_btn", false);  		childSetVisible("stop_btn", true); @@ -578,7 +578,7 @@ void LLFloaterGesture::onDeleteSelected()  		return;  	const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH); -	LLGestureManager* gm = LLGestureManager::getInstance(); +	LLGestureMgr* gm = LLGestureMgr::getInstance();  	for(std::vector<LLUUID>::const_iterator it = ids.begin(); it != ids.end(); it++)  	{  		const LLUUID& selected_item = *it; @@ -612,7 +612,7 @@ void LLFloaterGesture::addToCurrentOutFit()  {  	std::vector<LLUUID> ids;  	getSelectedIds(ids); -	LLAppearanceManager* am = LLAppearanceManager::getInstance(); +	LLAppearanceMgr* am = LLAppearanceMgr::getInstance();  	for(std::vector<LLUUID>::const_iterator it = ids.begin(); it != ids.end(); it++)  	{  		am->addCOFItemLink(*it); @@ -623,12 +623,12 @@ void LLFloaterGesture::playGesture(LLUUID item_id)  {  	LL_DEBUGS("Gesture")<<"Playing gesture "<< item_id<<LL_ENDL; -	if (LLGestureManager::instance().isGesturePlaying(item_id)) +	if (LLGestureMgr::instance().isGesturePlaying(item_id))  	{ -		LLGestureManager::instance().stopGesture(item_id); +		LLGestureMgr::instance().stopGesture(item_id);  	}  	else  	{ -		LLGestureManager::instance().playGesture(item_id); +		LLGestureMgr::instance().playGesture(item_id);  	}  } diff --git a/indra/newview/llgesturemgr.cpp b/indra/newview/llgesturemgr.cpp index 0ba7bdf613..561ca68f4a 100644 --- a/indra/newview/llgesturemgr.cpp +++ b/indra/newview/llgesturemgr.cpp @@ -67,7 +67,7 @@ static const LLUUID& get_linked_uuid(const LLUUID& item_id);  // Lightweight constructor.  // init() does the heavy lifting. -LLGestureManager::LLGestureManager() +LLGestureMgr::LLGestureMgr()  :	mValid(FALSE),  	mPlaying(),  	mActive(), @@ -79,7 +79,7 @@ LLGestureManager::LLGestureManager()  // We own the data for gestures, so clean them up. -LLGestureManager::~LLGestureManager() +LLGestureMgr::~LLGestureMgr()  {  	item_map_t::iterator it;  	for (it = mActive.begin(); it != mActive.end(); ++it) @@ -93,12 +93,12 @@ LLGestureManager::~LLGestureManager()  } -void LLGestureManager::init() +void LLGestureMgr::init()  {  	// TODO  } -void LLGestureManager::changed(U32 mask)  +void LLGestureMgr::changed(U32 mask)   {   	LLInventoryFetchObserver::changed(mask); @@ -136,7 +136,7 @@ void LLGestureManager::changed(U32 mask)  // Use this version when you have the item_id but not the asset_id,  // and you KNOW the inventory is loaded. -void LLGestureManager::activateGesture(const LLUUID& item_id) +void LLGestureMgr::activateGesture(const LLUUID& item_id)  {  	LLViewerInventoryItem* item = gInventory.getItem(item_id);  	if (!item) return; @@ -152,7 +152,7 @@ void LLGestureManager::activateGesture(const LLUUID& item_id)  } -void LLGestureManager::activateGestures(LLViewerInventoryItem::item_array_t& items) +void LLGestureMgr::activateGestures(LLViewerInventoryItem::item_array_t& items)  {  	// Load up the assets  	S32 count = 0; @@ -248,7 +248,7 @@ struct LLLoadInfo  /**   * It will load a gesture from remote storage   */ -void LLGestureManager::activateGestureWithAsset(const LLUUID& item_id, +void LLGestureMgr::activateGestureWithAsset(const LLUUID& item_id,  												const LLUUID& asset_id,  												BOOL inform_server,  												BOOL deactivate_similar) @@ -257,7 +257,7 @@ void LLGestureManager::activateGestureWithAsset(const LLUUID& item_id,  	if( !gAssetStorage )  	{ -		llwarns << "LLGestureManager::activateGestureWithAsset without valid gAssetStorage" << llendl; +		llwarns << "LLGestureMgr::activateGestureWithAsset without valid gAssetStorage" << llendl;  		return;  	}  	// If gesture is already active, nothing to do. @@ -299,7 +299,7 @@ void LLGestureManager::activateGestureWithAsset(const LLUUID& item_id,  } -void LLGestureManager::deactivateGesture(const LLUUID& item_id) +void LLGestureMgr::deactivateGesture(const LLUUID& item_id)  {  	const LLUUID& base_item_id = get_linked_uuid(item_id);  	item_map_t::iterator it = mActive.find(base_item_id); @@ -338,13 +338,13 @@ void LLGestureManager::deactivateGesture(const LLUUID& item_id)  	gAgent.sendReliableMessage(); -	LLAppearanceManager::instance().removeCOFItemLinks(base_item_id, false); +	LLAppearanceMgr::instance().removeCOFItemLinks(base_item_id, false);  	notifyObservers();  } -void LLGestureManager::deactivateSimilarGestures(LLMultiGesture* in, const LLUUID& in_item_id) +void LLGestureMgr::deactivateSimilarGestures(LLMultiGesture* in, const LLUUID& in_item_id)  {  	const LLUUID& base_in_item_id = get_linked_uuid(in_item_id);  	std::vector<LLUUID> gest_item_ids; @@ -431,7 +431,7 @@ void LLGestureManager::deactivateSimilarGestures(LLMultiGesture* in, const LLUUI  } -BOOL LLGestureManager::isGestureActive(const LLUUID& item_id) +BOOL LLGestureMgr::isGestureActive(const LLUUID& item_id)  {  	const LLUUID& base_item_id = get_linked_uuid(item_id);  	item_map_t::iterator it = mActive.find(base_item_id); @@ -439,7 +439,7 @@ BOOL LLGestureManager::isGestureActive(const LLUUID& item_id)  } -BOOL LLGestureManager::isGesturePlaying(const LLUUID& item_id) +BOOL LLGestureMgr::isGesturePlaying(const LLUUID& item_id)  {  	const LLUUID& base_item_id = get_linked_uuid(item_id); @@ -452,7 +452,7 @@ BOOL LLGestureManager::isGesturePlaying(const LLUUID& item_id)  	return gesture->mPlaying;  } -BOOL LLGestureManager::isGesturePlaying(LLMultiGesture* gesture) +BOOL LLGestureMgr::isGesturePlaying(LLMultiGesture* gesture)  {  	if(!gesture)  	{ @@ -462,7 +462,7 @@ BOOL LLGestureManager::isGesturePlaying(LLMultiGesture* gesture)  	return gesture->mPlaying;  } -void LLGestureManager::replaceGesture(const LLUUID& item_id, LLMultiGesture* new_gesture, const LLUUID& asset_id) +void LLGestureMgr::replaceGesture(const LLUUID& item_id, LLMultiGesture* new_gesture, const LLUUID& asset_id)  {  	const LLUUID& base_item_id = get_linked_uuid(item_id); @@ -504,11 +504,11 @@ void LLGestureManager::replaceGesture(const LLUUID& item_id, LLMultiGesture* new  	notifyObservers();  } -void LLGestureManager::replaceGesture(const LLUUID& item_id, const LLUUID& new_asset_id) +void LLGestureMgr::replaceGesture(const LLUUID& item_id, const LLUUID& new_asset_id)  {  	const LLUUID& base_item_id = get_linked_uuid(item_id); -	item_map_t::iterator it = LLGestureManager::instance().mActive.find(base_item_id); +	item_map_t::iterator it = LLGestureMgr::instance().mActive.find(base_item_id);  	if (it == mActive.end())  	{  		llwarns << "replaceGesture for inactive gesture " << base_item_id << llendl; @@ -517,10 +517,10 @@ void LLGestureManager::replaceGesture(const LLUUID& item_id, const LLUUID& new_a  	// mActive owns this gesture pointer, so clean up memory.  	LLMultiGesture* gesture = (*it).second; -	LLGestureManager::instance().replaceGesture(base_item_id, gesture, new_asset_id); +	LLGestureMgr::instance().replaceGesture(base_item_id, gesture, new_asset_id);  } -void LLGestureManager::playGesture(LLMultiGesture* gesture) +void LLGestureMgr::playGesture(LLMultiGesture* gesture)  {  	if (!gesture) return; @@ -539,7 +539,7 @@ void LLGestureManager::playGesture(LLMultiGesture* gesture)  // Convenience function that looks up the item_id for you. -void LLGestureManager::playGesture(const LLUUID& item_id) +void LLGestureMgr::playGesture(const LLUUID& item_id)  {  	const LLUUID& base_item_id = get_linked_uuid(item_id); @@ -556,7 +556,7 @@ void LLGestureManager::playGesture(const LLUUID& item_id)  // Iterates through space delimited tokens in string, triggering any gestures found.  // Generates a revised string that has the found tokens replaced by their replacement strings  // and (as a minor side effect) has multiple spaces in a row replaced by single spaces. -BOOL LLGestureManager::triggerAndReviseString(const std::string &utf8str, std::string* revised_string) +BOOL LLGestureMgr::triggerAndReviseString(const std::string &utf8str, std::string* revised_string)  {  	std::string tokenized = utf8str; @@ -649,7 +649,7 @@ BOOL LLGestureManager::triggerAndReviseString(const std::string &utf8str, std::s  } -BOOL LLGestureManager::triggerGesture(KEY key, MASK mask) +BOOL LLGestureMgr::triggerGesture(KEY key, MASK mask)  {  	std::vector <LLMultiGesture *> matching;  	item_map_t::iterator it; @@ -683,7 +683,7 @@ BOOL LLGestureManager::triggerGesture(KEY key, MASK mask)  } -S32 LLGestureManager::getPlayingCount() const +S32 LLGestureMgr::getPlayingCount() const  {  	return mPlaying.size();  } @@ -697,7 +697,7 @@ struct IsGesturePlaying : public std::unary_function<LLMultiGesture*, bool>  	}  }; -void LLGestureManager::update() +void LLGestureMgr::update()  {  	S32 i;  	for (i = 0; i < (S32)mPlaying.size(); ++i) @@ -740,14 +740,13 @@ void LLGestureManager::update()  // Run all steps until you're either done or hit a wait. -void LLGestureManager::stepGesture(LLMultiGesture* gesture) +void LLGestureMgr::stepGesture(LLMultiGesture* gesture)  {  	if (!gesture)  	{  		return;  	} -	LLVOAvatar* avatar = gAgent.getAvatarObject(); -	if (!avatar) return; +	if (!isAgentAvatarValid()) return;  	// Of the ones that started playing, have any stopped? @@ -758,8 +757,8 @@ void LLGestureManager::stepGesture(LLMultiGesture* gesture)  	{  		// look in signaled animations (simulator's view of what is  		// currently playing. -		LLVOAvatar::AnimIterator play_it = avatar->mSignaledAnimations.find(*gest_it); -		if (play_it != avatar->mSignaledAnimations.end()) +		LLVOAvatar::AnimIterator play_it = gAgentAvatarp->mSignaledAnimations.find(*gest_it); +		if (play_it != gAgentAvatarp->mSignaledAnimations.end())  		{  			++gest_it;  		} @@ -777,8 +776,8 @@ void LLGestureManager::stepGesture(LLMultiGesture* gesture)  		 gest_it != gesture->mRequestedAnimIDs.end();  		 )  	{ -	 LLVOAvatar::AnimIterator play_it = avatar->mSignaledAnimations.find(*gest_it); -		if (play_it != avatar->mSignaledAnimations.end()) +	 LLVOAvatar::AnimIterator play_it = gAgentAvatarp->mSignaledAnimations.find(*gest_it); +		if (play_it != gAgentAvatarp->mSignaledAnimations.end())  		{  			// Hooray, this animation has started playing!  			// Copy into playing. @@ -888,7 +887,7 @@ void LLGestureManager::stepGesture(LLMultiGesture* gesture)  } -void LLGestureManager::runStep(LLMultiGesture* gesture, LLGestureStep* step) +void LLGestureMgr::runStep(LLMultiGesture* gesture, LLGestureStep* step)  {  	switch(step->getType())  	{ @@ -975,7 +974,7 @@ void LLGestureManager::runStep(LLMultiGesture* gesture, LLGestureStep* step)  // static -void LLGestureManager::onLoadComplete(LLVFS *vfs, +void LLGestureMgr::onLoadComplete(LLVFS *vfs,  									   const LLUUID& asset_uuid,  									   LLAssetType::EType type,  									   void* user_data, S32 status, LLExtStat ext_status) @@ -988,7 +987,7 @@ void LLGestureManager::onLoadComplete(LLVFS *vfs,  	delete info;  	info = NULL; -	LLGestureManager& self = LLGestureManager::instance(); +	LLGestureMgr& self = LLGestureMgr::instance();  	self.mLoadingCount--;  	if (0 == status) @@ -1094,12 +1093,12 @@ void LLGestureManager::onLoadComplete(LLVFS *vfs,  		llwarns << "Problem loading gesture: " << status << llendl; -		LLGestureManager::instance().mActive.erase(item_id);			 +		LLGestureMgr::instance().mActive.erase(item_id);			  	}  } -void LLGestureManager::stopGesture(LLMultiGesture* gesture) +void LLGestureMgr::stopGesture(LLMultiGesture* gesture)  {  	if (!gesture) return; @@ -1139,7 +1138,7 @@ void LLGestureManager::stopGesture(LLMultiGesture* gesture)  } -void LLGestureManager::stopGesture(const LLUUID& item_id) +void LLGestureMgr::stopGesture(const LLUUID& item_id)  {  	const LLUUID& base_item_id = get_linked_uuid(item_id); @@ -1153,12 +1152,12 @@ void LLGestureManager::stopGesture(const LLUUID& item_id)  } -void LLGestureManager::addObserver(LLGestureManagerObserver* observer) +void LLGestureMgr::addObserver(LLGestureManagerObserver* observer)  {  	mObservers.push_back(observer);  } -void LLGestureManager::removeObserver(LLGestureManagerObserver* observer) +void LLGestureMgr::removeObserver(LLGestureManagerObserver* observer)  {  	std::vector<LLGestureManagerObserver*>::iterator it;  	it = std::find(mObservers.begin(), mObservers.end(), observer); @@ -1171,9 +1170,9 @@ void LLGestureManager::removeObserver(LLGestureManagerObserver* observer)  // Call this method when it's time to update everyone on a new state.  // Copy the list because an observer could respond by removing itself  // from the list. -void LLGestureManager::notifyObservers() +void LLGestureMgr::notifyObservers()  { -	lldebugs << "LLGestureManager::notifyObservers" << llendl; +	lldebugs << "LLGestureMgr::notifyObservers" << llendl;  	std::vector<LLGestureManagerObserver*> observers = mObservers; @@ -1185,7 +1184,7 @@ void LLGestureManager::notifyObservers()  	}  } -BOOL LLGestureManager::matchPrefix(const std::string& in_str, std::string* out_str) +BOOL LLGestureMgr::matchPrefix(const std::string& in_str, std::string* out_str)  {  	S32 in_len = in_str.length(); @@ -1216,7 +1215,7 @@ BOOL LLGestureManager::matchPrefix(const std::string& in_str, std::string* out_s  } -void LLGestureManager::getItemIDs(std::vector<LLUUID>* ids) +void LLGestureMgr::getItemIDs(std::vector<LLUUID>* ids)  {  	item_map_t::const_iterator it;  	for (it = mActive.begin(); it != mActive.end(); ++it) @@ -1225,7 +1224,7 @@ void LLGestureManager::getItemIDs(std::vector<LLUUID>* ids)  	}  } -void LLGestureManager::done() +void LLGestureMgr::done()  {  	bool notify = false;  	for(item_map_t::iterator it = mActive.begin(); it != mActive.end(); ++it) diff --git a/indra/newview/llgesturemgr.h b/indra/newview/llgesturemgr.h index 3dd184ddc7..bda657679a 100644 --- a/indra/newview/llgesturemgr.h +++ b/indra/newview/llgesturemgr.h @@ -54,7 +54,7 @@ public:  	virtual void changed() = 0;  }; -class LLGestureManager : public LLSingleton<LLGestureManager>, public LLInventoryFetchObserver +class LLGestureMgr : public LLSingleton<LLGestureMgr>, public LLInventoryFetchObserver  {  public: @@ -63,8 +63,8 @@ public:  	typedef std::map<LLUUID, LLMultiGesture*> item_map_t;  	typedef std::map<LLUUID, gesture_loaded_callback_t> callback_map_t; -	LLGestureManager(); -	~LLGestureManager(); +	LLGestureMgr(); +	~LLGestureMgr();  	void init(); diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index da21939a61..5122f308a2 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -193,7 +193,7 @@ BOOL LLInvFVBridge::isItemRemovable() const  	}  	// Disable delete from COF folder; have users explicitly choose "detach/take off". -	if (LLAppearanceManager::instance().getIsProtectedCOFItem(mUUID)) +	if (LLAppearanceMgr::instance().getIsProtectedCOFItem(mUUID))  	{  		return FALSE;  	} @@ -260,7 +260,7 @@ void LLInvFVBridge::removeBatch(LLDynamicArray<LLFolderViewEventListener*>& batc  		{  			if(LLAssetType::AT_GESTURE == item->getType())  			{ -				LLGestureManager::instance().deactivateGesture(item->getUUID()); +				LLGestureMgr::instance().deactivateGesture(item->getUUID());  			}  		}  	} @@ -276,7 +276,7 @@ void LLInvFVBridge::removeBatch(LLDynamicArray<LLFolderViewEventListener*>& batc  			{  				if(LLAssetType::AT_GESTURE == descendent_items[j]->getType())  				{ -					LLGestureManager::instance().deactivateGesture(descendent_items[j]->getUUID()); +					LLGestureMgr::instance().deactivateGesture(descendent_items[j]->getUUID());  				}  			}  		} @@ -802,7 +802,7 @@ BOOL LLInvFVBridge::isAgentInventory() const  BOOL LLInvFVBridge::isCOFFolder() const  { -	return LLAppearanceManager::instance().getIsInCOF(mUUID); +	return LLAppearanceMgr::instance().getIsInCOF(mUUID);  }  BOOL LLInvFVBridge::isItemPermissive() const @@ -1506,11 +1506,7 @@ BOOL LLFolderBridge::isItemRemovable() const  		return FALSE;  	} -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	if(!avatarp) -	{ -		return FALSE; -	} +	if (!isAgentAvatarValid()) return FALSE;  	LLInventoryCategory* category = model->getCategory(mUUID);  	if(!category) @@ -1661,8 +1657,7 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat,  	LLInventoryModel* model = getInventoryModel();  	if(!model) return FALSE; -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	if(!avatarp) return FALSE; +	if (!isAgentAvatarValid()) return FALSE;  	// cannot drag categories into library  	if(!isAgentInventory()) @@ -1748,9 +1743,9 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat,  				{  					LLInventoryItem* item = descendent_items[i];  					if (item->getType() == LLAssetType::AT_GESTURE -						&& LLGestureManager::instance().isGestureActive(item->getUUID())) +						&& LLGestureMgr::instance().isGestureActive(item->getUUID()))  					{ -						LLGestureManager::instance().deactivateGesture(item->getUUID()); +						LLGestureMgr::instance().deactivateGesture(item->getUUID());  					}  				}  			} @@ -1763,7 +1758,7 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat,  					{  						// traverse category and add all contents to currently worn.  						BOOL append = true; -						LLAppearanceManager::instance().wearInventoryCategory(inv_cat, false, append); +						LLAppearanceMgr::instance().wearInventoryCategory(inv_cat, false, append);  					}  					else  					{ @@ -1771,7 +1766,7 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat,  						LLInventoryModel::cat_array_t cats;  						LLInventoryModel::item_array_t items;  						gInventory.collectDescendents(inv_cat->getUUID(), cats, items, LLInventoryModel::EXCLUDE_TRASH); -						LLAppearanceManager::instance().linkAll(mUUID,items,NULL); +						LLAppearanceMgr::instance().linkAll(mUUID,items,NULL);  					}  				}  				else @@ -1780,7 +1775,7 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat,  				// BAP - should skip if dup.  				if (move_is_into_current_outfit)  				{ -					LLAppearanceManager::instance().addEnsembleLink(inv_cat); +					LLAppearanceMgr::instance().addEnsembleLink(inv_cat);  				}  				else  				{ @@ -2138,7 +2133,7 @@ void LLInventoryCopyAndWearObserver::changed(U32 mask)  				    mContentsCount)  				{  					gInventory.removeObserver(this); -					LLAppearanceManager::instance().wearInventoryCategory(category, FALSE, TRUE); +					LLAppearanceMgr::instance().wearInventoryCategory(category, FALSE, TRUE);  					delete this;  				}  			} @@ -2188,7 +2183,7 @@ void LLFolderBridge::performAction(LLFolderView* folder, LLInventoryModel* model  		if(!model) return;  		LLViewerInventoryCategory* cat = getCategory();  		if(!cat) return; -		LLAppearanceManager::instance().addEnsembleLink(cat,true); +		LLAppearanceMgr::instance().addEnsembleLink(cat,true);  		return;  	}  #endif @@ -2418,9 +2413,9 @@ bool LLFolderBridge::removeItemResponse(const LLSD& notification, const LLSD& re  			const LLViewerInventoryItem* item = (*iter);  			const LLUUID& item_id = item->getUUID();  			if (item->getType() == LLAssetType::AT_GESTURE -				&& LLGestureManager::instance().isGestureActive(item_id)) +				&& LLGestureMgr::instance().isGestureActive(item_id))  			{ -				LLGestureManager::instance().deactivateGesture(item_id); +				LLGestureMgr::instance().deactivateGesture(item_id);  			}  		} @@ -2723,7 +2718,7 @@ void LLFolderBridge::buildContextMenu(LLMenuGL& menu, U32 flags)  				addDeleteContextMenuOptions(mItems, mDisabledItems);  				// EXT-4030: disallow deletion of currently worn outfit -				const LLViewerInventoryItem *base_outfit_link = LLAppearanceManager::instance().getBaseOutfitLink(); +				const LLViewerInventoryItem *base_outfit_link = LLAppearanceMgr::instance().getBaseOutfitLink();  				if (base_outfit_link && (cat == base_outfit_link->getLinkedCategory()))  				{  					mDisabledItems.push_back(std::string("Delete")); @@ -2971,7 +2966,7 @@ void LLFolderBridge::modifyOutfit(BOOL append)  	LLViewerInventoryCategory* cat = getCategory();  	if(!cat) return; -	LLAppearanceManager::instance().wearInventoryCategory( cat, FALSE, append ); +	LLAppearanceMgr::instance().wearInventoryCategory( cat, FALSE, append );  }  // helper stuff @@ -3026,8 +3021,7 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item,  		return FALSE;  	} -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	if(!avatarp) return FALSE; +	if (!isAgentAvatarValid()) return FALSE;  	LLToolDragAndDrop::ESource source = LLToolDragAndDrop::getInstance()->getSource();  	BOOL accept = FALSE; @@ -3049,7 +3043,7 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item,  		const LLUUID current_outfit_id = model->findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT);  		const BOOL move_is_into_current_outfit = (mUUID == current_outfit_id);  		const BOOL move_is_into_outfit = (getCategory() && getCategory()->getPreferredType()==LLFolderType::FT_OUTFIT); -		const BOOL move_is_outof_current_outfit = LLAppearanceManager::instance().getIsInCOF(inv_item->getUUID()); +		const BOOL move_is_outof_current_outfit = LLAppearanceMgr::instance().getIsInCOF(inv_item->getUUID());  		// Can't explicitly drag things out of the COF.  		if (move_is_outof_current_outfit) @@ -3081,9 +3075,9 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item,  		if(accept && drop)  		{  			if (inv_item->getType() == LLAssetType::AT_GESTURE -				&& LLGestureManager::instance().isGestureActive(inv_item->getUUID()) && move_is_into_trash) +				&& LLGestureMgr::instance().isGestureActive(inv_item->getUUID()) && move_is_into_trash)  			{ -				LLGestureManager::instance().deactivateGesture(inv_item->getUUID()); +				LLGestureMgr::instance().deactivateGesture(inv_item->getUUID());  			}  			// If an item is being dragged between windows, unselect  			// everything in the active window so that we don't follow @@ -3136,7 +3130,7 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item,  				// BAP - should skip if dup.  				if (move_is_into_current_outfit)  				{ -					LLAppearanceManager::instance().addCOFItemLink(inv_item); +					LLAppearanceMgr::instance().addCOFItemLink(inv_item);  				}  				else  				{ @@ -3795,7 +3789,7 @@ LLUIImagePtr LLGestureBridge::getIcon() const  LLFontGL::StyleFlags LLGestureBridge::getLabelStyle() const  { -	if( LLGestureManager::instance().isGestureActive(mUUID) ) +	if( LLGestureMgr::instance().isGestureActive(mUUID) )  	{  		return LLFontGL::BOLD;  	} @@ -3807,7 +3801,7 @@ LLFontGL::StyleFlags LLGestureBridge::getLabelStyle() const  std::string LLGestureBridge::getLabelSuffix() const  { -	if( LLGestureManager::instance().isGestureActive(mUUID) ) +	if( LLGestureMgr::instance().isGestureActive(mUUID) )  	{  		LLStringUtil::format_map_t args;  		args["[GESLABEL]"] =  LLItemBridge::getLabelSuffix(); @@ -3824,7 +3818,7 @@ void LLGestureBridge::performAction(LLFolderView* folder, LLInventoryModel* mode  {  	if (isAddAction(action))  	{ -		LLGestureManager::instance().activateGesture(mUUID); +		LLGestureMgr::instance().activateGesture(mUUID);  		LLViewerInventoryItem* item = gInventory.getItem(mUUID);  		if (!item) return; @@ -3836,7 +3830,7 @@ void LLGestureBridge::performAction(LLFolderView* folder, LLInventoryModel* mode  	}  	else if (isRemoveAction(action))  	{ -		LLGestureManager::instance().deactivateGesture(mUUID); +		LLGestureMgr::instance().deactivateGesture(mUUID);  		LLViewerInventoryItem* item = gInventory.getItem(mUUID);  		if (!item) return; @@ -3848,17 +3842,17 @@ void LLGestureBridge::performAction(LLFolderView* folder, LLInventoryModel* mode  	}  	else if("play" == action)  	{ -		if(!LLGestureManager::instance().isGestureActive(mUUID)) +		if(!LLGestureMgr::instance().isGestureActive(mUUID))  		{  			// we need to inform server about gesture activating to be consistent with LLPreviewGesture and  LLGestureComboList.  			BOOL inform_server = TRUE;  			BOOL deactivate_similar = FALSE; -			LLGestureManager::instance().setGestureLoadedCallback(mUUID, boost::bind(&LLGestureBridge::playGesture, mUUID)); +			LLGestureMgr::instance().setGestureLoadedCallback(mUUID, boost::bind(&LLGestureBridge::playGesture, mUUID));  			LLViewerInventoryItem* item = gInventory.getItem(mUUID);  			llassert(item);  			if (item)  			{ -				LLGestureManager::instance().activateGestureWithAsset(mUUID, item->getAssetUUID(), inform_server, deactivate_similar); +				LLGestureMgr::instance().activateGestureWithAsset(mUUID, item->getAssetUUID(), inform_server, deactivate_similar);  			}  		}  		else @@ -3900,7 +3894,7 @@ BOOL LLGestureBridge::removeItem()  	// This will also force close the preview window, if it exists.  	// This may actually delete *this, if mUUID is in the COF. -	LLGestureManager::instance().deactivateGesture(item_id); +	LLGestureMgr::instance().deactivateGesture(item_id);  	// If deactivateGesture deleted *this, then return out immediately.  	if (!model->getObject(item_id)) @@ -3933,7 +3927,7 @@ void LLGestureBridge::buildContextMenu(LLMenuGL& menu, U32 flags)  		getClipboardEntries(true, items, disabled_items, flags);  		items.push_back(std::string("Gesture Separator")); -		if (LLGestureManager::instance().isGestureActive(getUUID())) +		if (LLGestureMgr::instance().isGestureActive(getUUID()))  		{  			items.push_back(std::string("Deactivate"));  		} @@ -3948,13 +3942,13 @@ void LLGestureBridge::buildContextMenu(LLMenuGL& menu, U32 flags)  // static  void LLGestureBridge::playGesture(const LLUUID& item_id)  { -	if (LLGestureManager::instance().isGesturePlaying(item_id)) +	if (LLGestureMgr::instance().isGesturePlaying(item_id))  	{ -		LLGestureManager::instance().stopGesture(item_id); +		LLGestureMgr::instance().stopGesture(item_id);  	}  	else  	{ -		LLGestureManager::instance().playGesture(item_id); +		LLGestureMgr::instance().playGesture(item_id);  	}  } @@ -4155,8 +4149,7 @@ std::string LLObjectBridge::getLabelSuffix() const  {  	if (get_is_item_worn(mUUID))  	{ -		LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -		std::string attachment_point_name = avatarp->getAttachedPointName(mUUID); +		std::string attachment_point_name = gAgentAvatarp->getAttachedPointName(mUUID);  		// e.g. "(worn on ...)" / "(attached to ...)"  		LLStringUtil::format_map_t args; @@ -4175,10 +4168,10 @@ void rez_attachment(LLViewerInventoryItem* item, LLViewerJointAttachment* attach  	payload["item_id"] = item->getLinkedUUID(); // Wear the base object in case this is a link.  	S32 attach_pt = 0; -	if (gAgent.getAvatarObject() && attachment) +	if (isAgentAvatarValid() && attachment)  	{ -		for (LLVOAvatar::attachment_map_t::iterator iter = gAgent.getAvatarObject()->mAttachmentPoints.begin(); -			 iter != gAgent.getAvatarObject()->mAttachmentPoints.end(); ++iter) +		for (LLVOAvatar::attachment_map_t::iterator iter = gAgentAvatarp->mAttachmentPoints.begin(); +			 iter != gAgentAvatarp->mAttachmentPoints.end(); ++iter)  		{  			if (iter->second == attachment)  			{ @@ -4204,9 +4197,7 @@ void rez_attachment(LLViewerInventoryItem* item, LLViewerJointAttachment* attach  bool confirm_replace_attachment_rez(const LLSD& notification, const LLSD& response)  { -	LLVOAvatar *avatarp = gAgent.getAvatarObject(); - -	if (!avatarp->canAttachMoreObjects()) +	if (!gAgentAvatarp->canAttachMoreObjects())  	{  		LLSD args;  		args["MAX_ATTACHMENTS"] = llformat("%d", MAX_AGENT_ATTACHMENTS); @@ -4268,11 +4259,7 @@ void LLObjectBridge::buildContextMenu(LLMenuGL& menu, U32 flags)  		LLInventoryItem *item = getItem();  		if(item)  		{ -			LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -			if( !avatarp ) -			{ -				return; -			} +			if (!isAgentAvatarValid()) return;  			if( get_is_item_worn( mUUID ) )  			{ @@ -4288,7 +4275,7 @@ void LLObjectBridge::buildContextMenu(LLMenuGL& menu, U32 flags)  				// commented out for DEV-32347  				//items.push_back(std::string("Restore to Last Position")); -				if (!avatarp->canAttachMoreObjects()) +				if (!gAgentAvatarp->canAttachMoreObjects())  				{  					disabled_items.push_back(std::string("Object Wear"));  					disabled_items.push_back(std::string("Attach To")); @@ -4296,15 +4283,14 @@ void LLObjectBridge::buildContextMenu(LLMenuGL& menu, U32 flags)  				}  				LLMenuGL* attach_menu = menu.findChildMenuByName("Attach To", TRUE);  				LLMenuGL* attach_hud_menu = menu.findChildMenuByName("Attach To HUD", TRUE); -				LLVOAvatar *avatarp = gAgent.getAvatarObject();  				if (attach_menu  					&& (attach_menu->getChildCount() == 0)  					&& attach_hud_menu  					&& (attach_hud_menu->getChildCount() == 0) -					&& avatarp) +					&& isAgentAvatarValid())  				{ -					for (LLVOAvatar::attachment_map_t::iterator iter = avatarp->mAttachmentPoints.begin(); -						 iter != avatarp->mAttachmentPoints.end(); ) +					for (LLVOAvatar::attachment_map_t::iterator iter = gAgentAvatarp->mAttachmentPoints.begin(); +						 iter != gAgentAvatarp->mAttachmentPoints.end(); )  					{  						LLVOAvatar::attachment_map_t::iterator curiter = iter++;  						LLViewerJointAttachment* attachment = curiter->second; @@ -4354,10 +4340,9 @@ BOOL LLObjectBridge::renameItem(const std::string& new_name)  		model->notifyObservers(); -		LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -		if(avatarp) +		if (isAgentAvatarValid())  		{ -			LLViewerObject* obj = avatarp->getWornAttachment( item->getUUID() ); +			LLViewerObject* obj = gAgentAvatarp->getWornAttachment( item->getUUID() );  			if(obj)  			{  				LLSelectMgr::getInstance()->deselectAll(); @@ -4410,7 +4395,7 @@ void wear_inventory_item_on_avatar( LLInventoryItem* item )  		lldebugs << "wear_inventory_item_on_avatar( " << item->getName()  				 << " )" << llendl; -		LLAppearanceManager::instance().addCOFItemLink(item); +		LLAppearanceMgr::instance().addCOFItemLink(item);  	}  } @@ -4547,7 +4532,7 @@ void remove_inventory_category_from_avatar_step2( BOOL proceed, LLUUID category_  				LLViewerInventoryItem *gest_item = gest_item_array.get(i);  				if (get_is_item_worn(gest_item->getUUID()))  				{ -					LLGestureManager::instance().deactivateGesture( gest_item->getLinkedUUID() ); +					LLGestureMgr::instance().deactivateGesture( gest_item->getLinkedUUID() );  					gInventory.updateItem( gest_item );  					gInventory.notifyObservers();  				} @@ -4969,20 +4954,7 @@ void LLWearableBridge::onRemoveFromAvatarArrived(LLWearable* wearable,  	}  	// Find and remove this item from the COF. -	// FIXME 2.1 - call removeCOFItemLinks in llappearancemgr instead. -	LLInventoryModel::item_array_t items = gInventory.collectLinkedItems(item_id, LLAppearanceManager::instance().getCOF()); -	if (items.size() != 1) -	{ -		llwarns << "Found " << items.size() << " COF links to " << item_id.asString() << ", expected 1" << llendl; -	} -	for (LLInventoryModel::item_array_t::const_iterator iter = items.begin(); -		 iter != items.end(); -		 ++iter) -	{ -		const LLViewerInventoryItem *linked_item = (*iter); -		const LLUUID &item_id = linked_item->getUUID(); -		gInventory.purgeObject(item_id); -	} +	LLAppearanceMgr::instance().removeCOFItemLinks(item_id,false);  	gInventory.notifyObservers();  	delete on_remove_struct; @@ -5008,20 +4980,7 @@ void LLWearableBridge::removeAllClothesFromAvatar()  			continue;  		// Find and remove this item from the COF. -		LLInventoryModel::item_array_t items = gInventory.collectLinkedItems( -			item_id, LLAppearanceManager::instance().getCOF()); -		if (items.size() != 1) -		{ -			llwarns << "Found " << items.size() << " COF links to " << item_id.asString() << ", expected 1" << llendl; -		} -		for (LLInventoryModel::item_array_t::const_iterator iter = items.begin(); -			 iter != items.end(); -			 ++iter) -		{ -			const LLViewerInventoryItem *linked_item = (*iter); -			const LLUUID &item_id = linked_item->getUUID(); -			gInventory.purgeObject(item_id); -		} +		LLAppearanceMgr::instance().removeCOFItemLinks(item_id,false);  	}  	gInventory.notifyObservers(); diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp index 3553137f53..1e0abeadf1 100644 --- a/indra/newview/llinventoryfunctions.cpp +++ b/indra/newview/llinventoryfunctions.cpp @@ -352,8 +352,7 @@ BOOL get_is_item_worn(const LLUUID& id)  	{  		case LLAssetType::AT_OBJECT:  		{ -			const LLVOAvatarSelf* my_avatar = gAgent.getAvatarObject(); -			if(my_avatar && my_avatar->isWearingAttachment(item->getLinkedUUID())) +			if (isAgentAvatarValid() && gAgentAvatarp->isWearingAttachment(item->getLinkedUUID()))  				return TRUE;  			break;  		} @@ -363,7 +362,7 @@ BOOL get_is_item_worn(const LLUUID& id)  				return TRUE;  			break;  		case LLAssetType::AT_GESTURE: -			if (LLGestureManager::instance().isGestureActive(item->getLinkedUUID())) +			if (LLGestureMgr::instance().isGestureActive(item->getLinkedUUID()))  				return TRUE;  			break;  		default: diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp index 83a466a243..f88747c382 100644 --- a/indra/newview/llinventorymodel.cpp +++ b/indra/newview/llinventorymodel.cpp @@ -3774,7 +3774,6 @@ bool LLInventoryCollectFunctor::itemTransferCommonlyAllowed(LLInventoryItem* ite  		return false;  	bool allowed = false; -	LLVOAvatarSelf* my_avatar = NULL;  	switch(item->getType())  	{ @@ -3783,8 +3782,7 @@ bool LLInventoryCollectFunctor::itemTransferCommonlyAllowed(LLInventoryItem* ite  		break;  	case LLAssetType::AT_OBJECT: -		my_avatar = gAgent.getAvatarObject(); -		if(my_avatar && !my_avatar->isWearingAttachment(item->getUUID())) +		if (isAgentAvatarValid() && !gAgentAvatarp->isWearingAttachment(item->getUUID()))  		{  			allowed = true;  		} diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp index d7720b735c..9a2d76e7e2 100644 --- a/indra/newview/llinventorypanel.cpp +++ b/indra/newview/llinventorypanel.cpp @@ -723,7 +723,7 @@ void LLInventoryPanel::setSelection(const LLUUID& obj_id, BOOL take_keyboard_foc  {  	// Don't select objects in COF (e.g. to prevent refocus when items are worn).  	const LLInventoryObject *obj = gInventory.getObject(obj_id); -	if (obj && obj->getParentUUID() == LLAppearanceManager::instance().getCOF()) +	if (obj && obj->getParentUUID() == LLAppearanceMgr::instance().getCOF())  	{  		return;  	} @@ -871,10 +871,9 @@ bool LLInventoryPanel::attachObject(const LLSD& userdata)  	mFolders->getSelectionList(selected_items);  	std::string joint_name = userdata.asString(); -	LLVOAvatar *avatarp = static_cast<LLVOAvatar*>(gAgent.getAvatarObject());  	LLViewerJointAttachment* attachmentp = NULL; -	for (LLVOAvatar::attachment_map_t::iterator iter = avatarp->mAttachmentPoints.begin();  -		 iter != avatarp->mAttachmentPoints.end(); ) +	for (LLVOAvatar::attachment_map_t::iterator iter = gAgentAvatarp->mAttachmentPoints.begin();  +		 iter != gAgentAvatarp->mAttachmentPoints.end(); )  	{  		LLVOAvatar::attachment_map_t::iterator curiter = iter++;  		LLViewerJointAttachment* attachment = curiter->second; diff --git a/indra/newview/llmaniprotate.cpp b/indra/newview/llmaniprotate.cpp index 6dc0a929c8..6747bcb9c9 100644 --- a/indra/newview/llmaniprotate.cpp +++ b/indra/newview/llmaniprotate.cpp @@ -65,6 +65,7 @@  #include "lldrawable.h"  #include "llglheaders.h"  #include "lltrans.h" +#include "llvoavatarself.h"  const F32 RADIUS_PIXELS = 100.f;		// size in screen space  const F32 SQ_RADIUS = RADIUS_PIXELS * RADIUS_PIXELS; @@ -739,7 +740,7 @@ void LLManipRotate::renderSnapGuides()  	LLVector3 test_axis = constraint_axis;  	BOOL constrain_to_ref_object = FALSE; -	if (mObjectSelection->getSelectType() == SELECT_TYPE_ATTACHMENT && gAgent.getAvatarObject()) +	if (mObjectSelection->getSelectType() == SELECT_TYPE_ATTACHMENT && isAgentAvatarValid())  	{  		test_axis = test_axis * ~grid_rotation;  	} @@ -766,7 +767,7 @@ void LLManipRotate::renderSnapGuides()  	}  	LLVector3 projected_snap_axis = world_snap_axis; -	if (mObjectSelection->getSelectType() == SELECT_TYPE_ATTACHMENT && gAgent.getAvatarObject()) +	if (mObjectSelection->getSelectType() == SELECT_TYPE_ATTACHMENT && isAgentAvatarValid())  	{  		projected_snap_axis = projected_snap_axis * grid_rotation;  	} @@ -1282,7 +1283,7 @@ LLQuaternion LLManipRotate::dragConstrained( S32 x, S32 y )  	LLVector3 axis2;  	LLVector3 test_axis = constraint_axis; -	if (mObjectSelection->getSelectType() == SELECT_TYPE_ATTACHMENT && gAgent.getAvatarObject()) +	if (mObjectSelection->getSelectType() == SELECT_TYPE_ATTACHMENT && isAgentAvatarValid())  	{  		test_axis = test_axis * ~grid_rotation;  	} @@ -1306,7 +1307,7 @@ LLQuaternion LLManipRotate::dragConstrained( S32 x, S32 y )  		axis1 = LLVector3::x_axis;  	} -	if (mObjectSelection->getSelectType() == SELECT_TYPE_ATTACHMENT && gAgent.getAvatarObject()) +	if (mObjectSelection->getSelectType() == SELECT_TYPE_ATTACHMENT && isAgentAvatarValid())  	{  		axis1 = axis1 * grid_rotation;  	} diff --git a/indra/newview/llmaniptranslate.cpp b/indra/newview/llmaniptranslate.cpp index 35c4f7f787..5f0c5e1795 100644 --- a/indra/newview/llmaniptranslate.cpp +++ b/indra/newview/llmaniptranslate.cpp @@ -714,7 +714,7 @@ BOOL LLManipTranslate::handleHover(S32 x, S32 y, MASK mask)  				// in position changes even when the mouse moves  				object->setPosition(new_position_local);  				rebuild(object); -				gAgent.getAvatarObject()->clampAttachmentPositions(); +				gAgentAvatarp->clampAttachmentPositions();  				new_position_local = object->getPosition();  				if (selectNode->mIndividualSelection) diff --git a/indra/newview/llmorphview.cpp b/indra/newview/llmorphview.cpp index 47234eb773..d670eb6ffd 100644 --- a/indra/newview/llmorphview.cpp +++ b/indra/newview/llmorphview.cpp @@ -89,15 +89,14 @@ void	LLMorphView::initialize()  	mCameraYaw = 0.f;  	mCameraDist = -1.f; -	LLVOAvatar *avatarp = gAgent.getAvatarObject(); -	if (!avatarp || avatarp->isDead()) +	if (!isAgentAvatarValid() || gAgentAvatarp->isDead())  	{  		gAgentCamera.changeCameraToDefault();  		return;  	} -	avatarp->stopMotion( ANIM_AGENT_BODY_NOISE ); -	avatarp->mSpecialRenderMode = 3; +	gAgentAvatarp->stopMotion( ANIM_AGENT_BODY_NOISE ); +	gAgentAvatarp->mSpecialRenderMode = 3;  	// set up camera for close look at avatar  	mOldCameraNearClip = LLViewerCamera::getInstance()->getNear(); @@ -111,11 +110,10 @@ void	LLMorphView::shutdown()  {  	LLVOAvatarSelf::onCustomizeEnd(); -	LLVOAvatar *avatarp = gAgent.getAvatarObject(); -	if(avatarp && !avatarp->isDead()) +	if (isAgentAvatarValid())  	{ -		avatarp->startMotion( ANIM_AGENT_BODY_NOISE ); -		avatarp->mSpecialRenderMode = 0; +		gAgentAvatarp->startMotion( ANIM_AGENT_BODY_NOISE ); +		gAgentAvatarp->mSpecialRenderMode = 0;  		// reset camera  		LLViewerCamera::getInstance()->setNear(mOldCameraNearClip);  	} @@ -164,15 +162,11 @@ void LLMorphView::updateCamera()  {  	if (!mCameraTargetJoint)  	{ -		setCameraTargetJoint(gAgent.getAvatarObject()->getJoint("mHead")); -	} -	 -	LLVOAvatar* avatar = gAgent.getAvatarObject(); -	if( !avatar ) -	{ -		return; -	} -	LLJoint* root_joint = avatar->getRootJoint(); +		setCameraTargetJoint(gAgentAvatarp->getJoint("mHead")); +	}	 +	if (!isAgentAvatarValid()) return; + +	LLJoint* root_joint = gAgentAvatarp->getRootJoint();  	if( !root_joint )  	{  		return; diff --git a/indra/newview/llmoveview.cpp b/indra/newview/llmoveview.cpp index 58fac14349..0f22a50093 100644 --- a/indra/newview/llmoveview.cpp +++ b/indra/newview/llmoveview.cpp @@ -42,7 +42,7 @@  #include "llagent.h"  #include "llagentcamera.h" -#include "llvoavatarself.h" // to check gAgent.getAvatarObject()->isSitting() +#include "llvoavatarself.h" // to check gAgentAvatarp->isSitting()  #include "llbottomtray.h"  #include "llbutton.h"  #include "llfloaterreg.h" @@ -332,7 +332,7 @@ void LLFloaterMove::setMovementMode(const EMovementMode mode)  	updateButtonsWithMovementMode(mode);  	bool bHideModeButtons = MM_FLY == mode -		|| (gAgent.getAvatarObject() && gAgent.getAvatarObject()->isSitting()); +		|| (isAgentAvatarValid() && gAgentAvatarp->isSitting());  	showModeButtons(!bHideModeButtons); @@ -388,9 +388,9 @@ void LLFloaterMove::initMovementMode()  	}  	setMovementMode(initMovementMode); -	if (gAgent.getAvatarObject()) +	if (isAgentAvatarValid())  	{ -		setEnabled(!gAgent.getAvatarObject()->isSitting()); +		setEnabled(!gAgentAvatarp->isSitting());  	}  } @@ -491,7 +491,7 @@ void LLFloaterMove::onOpen(const LLSD& key)  		showModeButtons(FALSE);  	} -	if (gAgent.getAvatarObject() && gAgent.getAvatarObject()->isSitting()) +	if (isAgentAvatarValid() && gAgentAvatarp->isSitting())  	{  		setSittingMode(TRUE);  		showModeButtons(FALSE); diff --git a/indra/newview/llnearbychatbar.cpp b/indra/newview/llnearbychatbar.cpp index af711b6943..424b8c9a66 100644 --- a/indra/newview/llnearbychatbar.cpp +++ b/indra/newview/llnearbychatbar.cpp @@ -103,7 +103,7 @@ LLGestureComboList::LLGestureComboList(const LLGestureComboList::Params& p)  	setCommitCallback(boost::bind(&LLGestureComboList::onCommitGesture, this));  	// now register us as observer since we have a place to put the results -	LLGestureManager::instance().addObserver(this); +	LLGestureMgr::instance().addObserver(this);  	// refresh list from current active gestures  	refreshGestures(); @@ -244,8 +244,8 @@ void LLGestureComboList::refreshGestures()  	mList->clearRows();  	mGestures.clear(); -	LLGestureManager::item_map_t::const_iterator it; -	const LLGestureManager::item_map_t& active_gestures = LLGestureManager::instance().getActiveGestures(); +	LLGestureMgr::item_map_t::const_iterator it; +	const LLGestureMgr::item_map_t& active_gestures = LLGestureMgr::instance().getActiveGestures();  	LLSD::Integer idx(0);  	for (it = active_gestures.begin(); it != active_gestures.end(); ++it)  	{ @@ -289,7 +289,7 @@ void LLGestureComboList::refreshGestures()  			gesture = mGestures.at(index);  	} -	if(gesture && LLGestureManager::instance().isGesturePlaying(gesture)) +	if(gesture && LLGestureMgr::instance().isGesturePlaying(gesture))  	{  		return;  	} @@ -321,7 +321,7 @@ void LLGestureComboList::onCommitGesture()  		LLMultiGesture* gesture = mGestures.at(index);  		if(gesture)  		{ -			LLGestureManager::instance().playGesture(gesture); +			LLGestureMgr::instance().playGesture(gesture);  			if(!gesture->mReplaceText.empty())  			{  				LLNearbyChatBar::sendChatFromViewer(gesture->mReplaceText, CHAT_TYPE_NORMAL, FALSE); @@ -332,7 +332,7 @@ void LLGestureComboList::onCommitGesture()  LLGestureComboList::~LLGestureComboList()  { -	LLGestureManager::instance().removeObserver(this); +	LLGestureMgr::instance().removeObserver(this);  }  LLNearbyChatBar::LLNearbyChatBar()  @@ -476,7 +476,7 @@ void LLNearbyChatBar::onChatBoxKeystroke(LLLineEditor* caller, void* userdata)  		std::string utf8_trigger = wstring_to_utf8str(raw_text);  		std::string utf8_out_str(utf8_trigger); -		if (LLGestureManager::instance().matchPrefix(utf8_trigger, &utf8_out_str)) +		if (LLGestureMgr::instance().matchPrefix(utf8_trigger, &utf8_out_str))  		{  			std::string rest_of_match = utf8_out_str.substr(utf8_trigger.size());  			self->mChatBox->setText(utf8_trigger + rest_of_match); // keep original capitalization for user-entered part @@ -558,7 +558,7 @@ void LLNearbyChatBar::sendChat( EChatType type )  			if (0 == channel)  			{  				// discard returned "found" boolean -				LLGestureManager::instance().triggerAndReviseString(utf8text, &utf8_revised_text); +				LLGestureMgr::instance().triggerAndReviseString(utf8text, &utf8_revised_text);  			}  			else  			{ diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp index e7acc68b93..805016f089 100644 --- a/indra/newview/llpaneleditwearable.cpp +++ b/indra/newview/llpaneleditwearable.cpp @@ -602,7 +602,7 @@ LLPanel* LLPanelEditWearable::getPanel(EWearableType type)  void LLPanelEditWearable::getSortedParams(value_map_t &sorted_params, const std::string &edit_group)  {  	LLWearable::visual_param_vec_t param_list; -	ESex avatar_sex = gAgent.getAvatarObject()->getSex(); +	ESex avatar_sex = gAgentAvatarp->getSex();  	mWearablePtr->getVisualParams(param_list); diff --git a/indra/newview/llpaneloutfitsinventory.cpp b/indra/newview/llpaneloutfitsinventory.cpp index c2f2d32142..6bda7d1546 100644 --- a/indra/newview/llpaneloutfitsinventory.cpp +++ b/indra/newview/llpaneloutfitsinventory.cpp @@ -271,7 +271,7 @@ void LLPanelOutfitsInventory::onSave()  {  	std::string outfit_name; -	if (!LLAppearanceManager::getInstance()->getBaseOutfitName(outfit_name)) +	if (!LLAppearanceMgr::getInstance()->getBaseOutfitName(outfit_name))  	{  		outfit_name = LLViewerFolderType::lookupNewCategoryName(LLFolderType::FT_OUTFIT);  	} diff --git a/indra/newview/llpreview.cpp b/indra/newview/llpreview.cpp index 99e0b82b8f..d5ec3a36c3 100644 --- a/indra/newview/llpreview.cpp +++ b/indra/newview/llpreview.cpp @@ -179,10 +179,9 @@ void LLPreview::onCommit()  			// update the object itself.  			if( item->getType() == LLAssetType::AT_OBJECT )  			{ -				LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -				if(avatarp) +				if (isAgentAvatarValid())  				{ -					LLViewerObject* obj = avatarp->getWornAttachment( item->getUUID() ); +					LLViewerObject* obj = gAgentAvatarp->getWornAttachment( item->getUUID() );  					if( obj )  					{  						LLSelectMgr::getInstance()->deselectAll(); diff --git a/indra/newview/llpreviewanim.cpp b/indra/newview/llpreviewanim.cpp index 0cc747f789..262961b73b 100644 --- a/indra/newview/llpreviewanim.cpp +++ b/indra/newview/llpreviewanim.cpp @@ -71,7 +71,7 @@ BOOL LLPreviewAnim::postBuild()  	const LLInventoryItem* item = getItem();  	if(item)  	{ -		gAgent.getAvatarObject()->createMotion(item->getAssetUUID()); // preload the animation +		gAgentAvatarp->createMotion(item->getAssetUUID()); // preload the animation  		childSetText("desc", item->getDescription());  	} @@ -125,10 +125,7 @@ void LLPreviewAnim::playAnim( void *userdata )  		{  			self->mPauseRequest = NULL;  			gAgent.sendAnimationRequest(itemID, ANIM_REQUEST_START); -			 -			LLVOAvatar* avatar = gAgent.getAvatarObject(); -			LLMotion*   motion = avatar->findMotion(itemID); -			 +			LLMotion* motion = gAgentAvatarp->findMotion(itemID);  			if (motion)  			{  				motion->setDeactivateCallback(&endAnimCallback, (void *)(new LLHandle<LLFloater>(self->getHandle()))); @@ -136,7 +133,7 @@ void LLPreviewAnim::playAnim( void *userdata )  		}  		else  		{ -			gAgent.getAvatarObject()->stopMotion(itemID); +			gAgentAvatarp->stopMotion(itemID);  			gAgent.sendAnimationRequest(itemID, ANIM_REQUEST_STOP);  		}  	} @@ -161,10 +158,8 @@ void LLPreviewAnim::auditionAnim( void *userdata )  		if (self->childGetValue("Anim audition btn").asBoolean() )   		{  			self->mPauseRequest = NULL; -			gAgent.getAvatarObject()->startMotion(item->getAssetUUID()); -			 -			LLVOAvatar* avatar = gAgent.getAvatarObject(); -			LLMotion*   motion = avatar->findMotion(itemID); +			gAgentAvatarp->startMotion(item->getAssetUUID()); +			LLMotion* motion = gAgentAvatarp->findMotion(itemID);  			if (motion)  			{ @@ -173,7 +168,7 @@ void LLPreviewAnim::auditionAnim( void *userdata )  		}  		else  		{ -			gAgent.getAvatarObject()->stopMotion(itemID); +			gAgentAvatarp->stopMotion(itemID);  			gAgent.sendAnimationRequest(itemID, ANIM_REQUEST_STOP);  		}  	} @@ -186,11 +181,9 @@ void LLPreviewAnim::onClose(bool app_quitting)  	if(item)  	{ -		gAgent.getAvatarObject()->stopMotion(item->getAssetUUID()); +		gAgentAvatarp->stopMotion(item->getAssetUUID());  		gAgent.sendAnimationRequest(item->getAssetUUID(), ANIM_REQUEST_STOP); -					 -		LLVOAvatar* avatar = gAgent.getAvatarObject(); -		LLMotion*   motion = avatar->findMotion(item->getAssetUUID()); +		LLMotion* motion = gAgentAvatarp->findMotion(item->getAssetUUID());  		if (motion)  		{ diff --git a/indra/newview/llpreviewgesture.cpp b/indra/newview/llpreviewgesture.cpp index 57a8ca3d12..143938bcea 100644 --- a/indra/newview/llpreviewgesture.cpp +++ b/indra/newview/llpreviewgesture.cpp @@ -269,7 +269,7 @@ BOOL LLPreviewGesture::canClose()  // virtual  void LLPreviewGesture::onClose(bool app_quitting)  { -	LLGestureManager::instance().stopGesture(mPreviewGesture); +	LLGestureMgr::instance().stopGesture(mPreviewGesture);  }  // virtual @@ -293,13 +293,13 @@ bool LLPreviewGesture::handleSaveChangesDialog(const LLSD& notification, const L  	switch(option)  	{  	case 0:  // "Yes" -		LLGestureManager::instance().stopGesture(mPreviewGesture); +		LLGestureMgr::instance().stopGesture(mPreviewGesture);  		mCloseAfterSave = TRUE;  		onClickSave(this);  		break;  	case 1:  // "No" -		LLGestureManager::instance().stopGesture(mPreviewGesture); +		LLGestureMgr::instance().stopGesture(mPreviewGesture);  		mDirty = FALSE; // Force the dirty flag because user has clicked NO on confirm save dialog...  		closeFloater();  		break; @@ -784,7 +784,7 @@ void LLPreviewGesture::refresh()  	mOptionsText->setText(optionstext); -	BOOL active = LLGestureManager::instance().isGestureActive(mItemUUID); +	BOOL active = LLGestureMgr::instance().isGestureActive(mItemUUID);  	mActiveCheck->set(active);  	// Can only preview if there are steps @@ -1138,10 +1138,10 @@ void LLPreviewGesture::saveIfNeeded()  		// If this gesture is active, then we need to update the in-memory  		// active map with the new pointer. -		if (!delayedUpload && LLGestureManager::instance().isGestureActive(mItemUUID)) +		if (!delayedUpload && LLGestureMgr::instance().isGestureActive(mItemUUID))  		{  			// gesture manager now owns the pointer -			LLGestureManager::instance().replaceGesture(mItemUUID, gesture, asset_id); +			LLGestureMgr::instance().replaceGesture(mItemUUID, gesture, asset_id);  			// replaceGesture may deactivate other gestures so let the  			// inventory know. @@ -1702,13 +1702,13 @@ void LLPreviewGesture::onClickDelete(void* data)  void LLPreviewGesture::onCommitActive(LLUICtrl* ctrl, void* data)  {  	LLPreviewGesture* self = (LLPreviewGesture*)data; -	if (!LLGestureManager::instance().isGestureActive(self->mItemUUID)) +	if (!LLGestureMgr::instance().isGestureActive(self->mItemUUID))  	{ -		LLGestureManager::instance().activateGesture(self->mItemUUID); +		LLGestureMgr::instance().activateGesture(self->mItemUUID);  	}  	else  	{ -		LLGestureManager::instance().deactivateGesture(self->mItemUUID); +		LLGestureMgr::instance().deactivateGesture(self->mItemUUID);  	}  	// Make sure the (active) label in the inventory gets updated. @@ -1747,14 +1747,14 @@ void LLPreviewGesture::onClickPreview(void* data)  		self->mPreviewBtn->setLabel(self->getString("stop_txt"));  		// play it, and delete when done -		LLGestureManager::instance().playGesture(self->mPreviewGesture); +		LLGestureMgr::instance().playGesture(self->mPreviewGesture);  		self->refresh();  	}  	else  	{  		// Will call onDonePreview() below -		LLGestureManager::instance().stopGesture(self->mPreviewGesture); +		LLGestureMgr::instance().stopGesture(self->mPreviewGesture);  		self->refresh();  	} diff --git a/indra/newview/llscrollingpanelparam.cpp b/indra/newview/llscrollingpanelparam.cpp index 95e12bf46f..7980fe1945 100644 --- a/indra/newview/llscrollingpanelparam.cpp +++ b/indra/newview/llscrollingpanelparam.cpp @@ -209,7 +209,7 @@ void LLScrollingPanelParam::onSliderMoved(LLUICtrl* ctrl, void* userdata)  	if (current_weight != new_weight )  	{  		self->mWearable->setVisualParamWeight( param->getID(), new_weight, FALSE ); -		gAgent.getAvatarObject()->updateVisualParams(); +		gAgentAvatarp->updateVisualParams();  	}  } @@ -298,7 +298,7 @@ void LLScrollingPanelParam::onHintHeldDown( LLVisualParamHint* hint )  				&& new_percent < slider->getMaxValue())  			{  				mWearable->setVisualParamWeight( hint->getVisualParam()->getID(), new_weight, FALSE); -				gAgent.getAvatarObject()->updateVisualParams(); +				gAgentAvatarp->updateVisualParams();  				slider->setValue( weightToPercent( new_weight ) );  			} @@ -344,8 +344,7 @@ void LLScrollingPanelParam::onHintMaxMouseUp( void* userdata )  	F32 elapsed_time = self->mMouseDownTimer.getElapsedTimeF32(); -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	if (avatarp) +	if (isAgentAvatarValid())  	{  		LLVisualParamHint* hint = self->mHintMax; diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp index d744f097d5..6969ae5e1e 100644 --- a/indra/newview/llselectmgr.cpp +++ b/indra/newview/llselectmgr.cpp @@ -1475,7 +1475,7 @@ void LLSelectMgr::selectionSetImage(const LLUUID& imageid)  				object->sendTEUpdate();  				// 1 particle effect per object				  				LLHUDEffectSpiral *effectp = (LLHUDEffectSpiral *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_BEAM, TRUE); -				effectp->setSourceObject(gAgent.getAvatarObject()); +				effectp->setSourceObject(gAgentAvatarp);  				effectp->setTargetObject(object);  				effectp->setDuration(LL_HUD_DUR_SHORT);  				effectp->setColor(LLColor4U(gAgent.getEffectColor())); @@ -3619,7 +3619,7 @@ void LLSelectMgr::sendAttach(U8 attachment_point)  {  	LLViewerObject* attach_object = mSelectedObjects->getFirstRootObject(); -	if (!attach_object || !gAgent.getAvatarObject() || mSelectedObjects->mSelectType != SELECT_TYPE_WORLD) +	if (!attach_object || !isAgentAvatarValid() || mSelectedObjects->mSelectType != SELECT_TYPE_WORLD)  	{  		return;  	} @@ -3630,7 +3630,7 @@ void LLSelectMgr::sendAttach(U8 attachment_point)  	BOOL build_mode = LLToolMgr::getInstance()->inEdit();  	// Special case: Attach to default location for this object.  	if (0 == attachment_point || -		get_if_there(gAgent.getAvatarObject()->mAttachmentPoints, (S32)attachment_point, (LLViewerJointAttachment*)NULL)) +		get_if_there(gAgentAvatarp->mAttachmentPoints, (S32)attachment_point, (LLViewerJointAttachment*)NULL))  	{  		sendListToRegions(  			"ObjectAttach", @@ -4911,10 +4911,9 @@ void LLSelectMgr::renderSilhouettes(BOOL for_hud)  	LLGLEnable blend(GL_BLEND);  	LLGLDepthTest gls_depth(GL_TRUE, GL_FALSE); -	LLVOAvatar* avatar = gAgent.getAvatarObject(); -	if (for_hud && avatar) +	if (isAgentAvatarValid() && for_hud)  	{ -		LLBBox hud_bbox = avatar->getHUDBBox(); +		LLBBox hud_bbox = gAgentAvatarp->getHUDBBox();  		F32 cur_zoom = gAgentCamera.mHUDCurZoom; @@ -5023,7 +5022,7 @@ void LLSelectMgr::renderSilhouettes(BOOL for_hud)  		}  	} -	if (for_hud && avatar) +	if (isAgentAvatarValid() && for_hud)  	{  		glMatrixMode(GL_PROJECTION);  		gGL.popMatrix(); @@ -5399,7 +5398,7 @@ void LLSelectNode::renderOneSilhouette(const LLColor4 &color)  	if (volume)  	{  		F32 silhouette_thickness; -		if (is_hud_object && gAgent.getAvatarObject()) +		if (isAgentAvatarValid() && is_hud_object)  		{  			silhouette_thickness = LLSelectMgr::sHighlightThickness / gAgentCamera.mHUDCurZoom;  		} @@ -5609,16 +5608,16 @@ void LLSelectMgr::updateSelectionCenter()  	{  		mSelectedObjects->mSelectType = getSelectTypeForObject(object); -		if (mSelectedObjects->mSelectType == SELECT_TYPE_ATTACHMENT && gAgent.getAvatarObject()) +		if (mSelectedObjects->mSelectType == SELECT_TYPE_ATTACHMENT && isAgentAvatarValid())  		{ -			mPauseRequest = gAgent.getAvatarObject()->requestPause(); +			mPauseRequest = gAgentAvatarp->requestPause();  		}  		else  		{  			mPauseRequest = NULL;  		} -		if (mSelectedObjects->mSelectType != SELECT_TYPE_HUD && gAgent.getAvatarObject()) +		if (mSelectedObjects->mSelectType != SELECT_TYPE_HUD && isAgentAvatarValid())  		{  			// reset hud ZOOM  			gAgentCamera.mHUDTargetZoom = 1.f; @@ -5641,10 +5640,10 @@ void LLSelectMgr::updateSelectionCenter()  			LLViewerObject* object = node->getObject();  			if (!object)  				continue; -			LLViewerObject *myAvatar = gAgent.getAvatarObject(); +			  			LLViewerObject *root = object->getRootEdit();  			if (mSelectedObjects->mSelectType == SELECT_TYPE_WORLD && // not an attachment -				!root->isChild(myAvatar) && // not the object you're sitting on +				!root->isChild(gAgentAvatarp) && // not the object you're sitting on  				!object->isAvatar()) // not another avatar  			{  				mShowSelection = TRUE; diff --git a/indra/newview/llsidepanelappearance.cpp b/indra/newview/llsidepanelappearance.cpp index 9a37af4916..8364eee09d 100644 --- a/indra/newview/llsidepanelappearance.cpp +++ b/indra/newview/llsidepanelappearance.cpp @@ -206,7 +206,7 @@ void LLSidepanelAppearance::onFilterEdit(const std::string& search_string)  void LLSidepanelAppearance::onOpenOutfitButtonClicked()  { -	const LLViewerInventoryItem *outfit_link = LLAppearanceManager::getInstance()->getBaseOutfitLink(); +	const LLViewerInventoryItem *outfit_link = LLAppearanceMgr::getInstance()->getBaseOutfitLink();  	if (!outfit_link)  		return;  	if (!outfit_link->getIsLinkType()) @@ -320,11 +320,11 @@ void LLSidepanelAppearance::updateVerbs()  void LLSidepanelAppearance::refreshCurrentOutfitName(const std::string& name)  { -	mOutfitDirtyTag->setVisible(LLAppearanceManager::getInstance()->isOutfitDirty()); +	mOutfitDirtyTag->setVisible(LLAppearanceMgr::getInstance()->isOutfitDirty());  	if (name == "")  	{  		std::string outfit_name; -		if (LLAppearanceManager::getInstance()->getBaseOutfitName(outfit_name)) +		if (LLAppearanceMgr::getInstance()->getBaseOutfitName(outfit_name))  		{  				mCurrentLookName->setText(outfit_name);  				return; @@ -366,11 +366,10 @@ void LLSidepanelAppearance::fetchInventory()  		}  	} -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	if(avatarp) +	if (isAgentAvatarValid())  	{ -		for (LLVOAvatar::attachment_map_t::const_iterator iter = avatarp->mAttachmentPoints.begin();  -			 iter != avatarp->mAttachmentPoints.end(); ++iter) +		for (LLVOAvatar::attachment_map_t::const_iterator iter = gAgentAvatarp->mAttachmentPoints.begin();  +			 iter != gAgentAvatarp->mAttachmentPoints.end(); ++iter)  		{  			LLViewerJointAttachment* attachment = iter->second;  			if (!attachment) continue; diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index 59d118abe2..2910814703 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -1760,7 +1760,7 @@ bool idle_startup()  						// Could schedule and delay these for later.  						const BOOL no_inform_server = FALSE;  						const BOOL no_deactivate_similar = FALSE; -						LLGestureManager::instance().activateGestureWithAsset(item_id, asset_id, +						LLGestureMgr::instance().activateGestureWithAsset(item_id, asset_id,  											 no_inform_server,  											 no_deactivate_similar);  						// We need to fetch the inventory items for these gestures @@ -1769,7 +1769,7 @@ bool idle_startup()  					}  				}  				// no need to add gesture to inventory observer, it's already made in constructor  -				LLGestureManager::instance().fetchItems(item_ids); +				LLGestureMgr::instance().fetchItems(item_ids);  			}  		}  		gDisplaySwapBuffers = TRUE; @@ -1864,7 +1864,7 @@ bool idle_startup()  		if (gAgent.isFirstLogin()  			&& !sInitialOutfit.empty()    // registration set up an outfit  			&& !sInitialOutfitGender.empty() // and a gender -			&& gAgent.getAvatarObject()	  // can't wear clothes without object +			&& isAgentAvatarValid()	  // can't wear clothes without object  			&& !gAgent.isGenderChosen() ) // nothing already loading  		{  			// Start loading the wearables, textures, gestures @@ -1872,7 +1872,7 @@ bool idle_startup()  		}  		// wait precache-delay and for agent's avatar or a lot longer. -		if(((timeout_frac > 1.f) && gAgent.getAvatarObject()) +		if(((timeout_frac > 1.f) && isAgentAvatarValid())  		   || (timeout_frac > 3.f))  		{  			LLStartUp::setStartupState( STATE_WEARABLES_WAIT ); @@ -1928,8 +1928,8 @@ bool idle_startup()  		if (gAgent.isFirstLogin())  		{  			// wait for avatar to be completely loaded -			if (gAgent.getAvatarObject() -				&& gAgent.getAvatarObject()->isFullyLoaded()) +			if (isAgentAvatarValid() +				&& gAgentAvatarp->isFullyLoaded())  			{  				//llinfos << "avatar fully loaded" << llendl;  				LLStartUp::setStartupState( STATE_CLEANUP ); @@ -2536,7 +2536,7 @@ void LLStartUp::loadInitialOutfit( const std::string& outfit_folder_name,  	llinfos << "starting" << llendl;  	// Not going through the processAgentInitialWearables path, so need to set this here. -	LLAppearanceManager::instance().setAttachmentInvLinkEnable(true); +	LLAppearanceMgr::instance().setAttachmentInvLinkEnable(true);  	// Initiate creation of COF, since we're also bypassing that.  	gInventory.findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT); @@ -2567,13 +2567,13 @@ void LLStartUp::loadInitialOutfit( const std::string& outfit_folder_name,  		bool do_copy = true;  		bool do_append = false;  		LLViewerInventoryCategory *cat = gInventory.getCategory(cat_id); -		LLAppearanceManager::instance().wearInventoryCategory(cat, do_copy, do_append); +		LLAppearanceMgr::instance().wearInventoryCategory(cat, do_copy, do_append);  	}  	// Copy gestures  	LLUUID dst_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_GESTURE);  	LLPointer<LLInventoryCallback> cb(NULL); -	LLAppearanceManager *app_mgr = &(LLAppearanceManager::instance()); +	LLAppearanceMgr *app_mgr = &(LLAppearanceMgr::instance());  	// - Copy gender-specific gestures.  	LLUUID gestures_cat_id = findDescendentCategoryIDByName(  @@ -2582,7 +2582,7 @@ void LLStartUp::loadInitialOutfit( const std::string& outfit_folder_name,  	if (gestures_cat_id.notNull())  	{  		callAfterCategoryFetch(gestures_cat_id, -							   boost::bind(&LLAppearanceManager::shallowCopyCategory, +							   boost::bind(&LLAppearanceMgr::shallowCopyCategory,  										   app_mgr,  										   gestures_cat_id,  										   dst_id, @@ -2596,7 +2596,7 @@ void LLStartUp::loadInitialOutfit( const std::string& outfit_folder_name,  	if (common_gestures_cat_id.notNull())  	{  		callAfterCategoryFetch(common_gestures_cat_id, -							   boost::bind(&LLAppearanceManager::shallowCopyCategory, +							   boost::bind(&LLAppearanceMgr::shallowCopyCategory,  										   app_mgr,  										   common_gestures_cat_id,  										   dst_id, diff --git a/indra/newview/llstatusbar.cpp b/indra/newview/llstatusbar.cpp index 3052134d4f..58f64ff1f3 100644 --- a/indra/newview/llstatusbar.cpp +++ b/indra/newview/llstatusbar.cpp @@ -445,11 +445,9 @@ void LLStatusBar::setHealth(S32 health)  	{  		if (mHealth > (health + gSavedSettings.getF32("UISndHealthReductionThreshold")))  		{ -			LLVOAvatar *me; - -			if ((me = gAgent.getAvatarObject())) +			if (isAgentAvatarValid())  			{ -				if (me->getSex() == SEX_FEMALE) +				if (gAgentAvatarp->getSex() == SEX_FEMALE)  				{  					make_ui_sound("UISndHealthReductionF");  				} diff --git a/indra/newview/lltexlayer.cpp b/indra/newview/lltexlayer.cpp index 21c928282a..3f4dab4fea 100644 --- a/indra/newview/lltexlayer.cpp +++ b/indra/newview/lltexlayer.cpp @@ -284,8 +284,6 @@ void LLTexLayerSetBuffer::readBackAndUpload()  	llinfos << "Baked " << mTexLayerSet->getBodyRegion() << llendl;  	LLViewerStats::getInstance()->incStat(LLViewerStats::ST_TEX_BAKES); -	llassert( gAgent.getAvatarObject() == mTexLayerSet->getAvatar() ); -  	// We won't need our caches since we're baked now.  (Techically, we won't   	// really be baked until this image is sent to the server and the Avatar  	// Appearance message is received.) @@ -352,7 +350,7 @@ void LLTexLayerSetBuffer::readBackAndUpload()  			{  				// baked_upload_data is owned by the responder and deleted after the request completes  				LLBakedUploadData* baked_upload_data = -					new LLBakedUploadData(gAgent.getAvatarObject(), this->mTexLayerSet, asset_id); +					new LLBakedUploadData(gAgentAvatarp, this->mTexLayerSet, asset_id);  				mUploadID = asset_id;  				// upload the image @@ -409,12 +407,10 @@ void LLTexLayerSetBuffer::onTextureUploadComplete(const LLUUID& uuid,  {  	LLBakedUploadData* baked_upload_data = (LLBakedUploadData*)userdata; -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -  	if (0 == result && -		avatarp && -		!avatarp->isDead() && -		baked_upload_data->mAvatar == avatarp && // Sanity check: only the user's avatar should be uploading textures. +		isAgentAvatarValid() && +		!gAgentAvatarp->isDead() && +		baked_upload_data->mAvatar == gAgentAvatarp && // Sanity check: only the user's avatar should be uploading textures.  		baked_upload_data->mTexLayerSet->hasComposite()  		)  	{ @@ -439,11 +435,11 @@ void LLTexLayerSetBuffer::onTextureUploadComplete(const LLUUID& uuid,  			if (result >= 0)  			{ -				LLVOAvatarDefines::ETextureIndex baked_te = avatarp->getBakedTE(layerset_buffer->mTexLayerSet); +				LLVOAvatarDefines::ETextureIndex baked_te = gAgentAvatarp->getBakedTE(layerset_buffer->mTexLayerSet);  				// Update baked texture info with the new UUID  				U64 now = LLFrameTimer::getTotalTime();		// Record starting time  				llinfos << "Baked texture upload took " << (S32)((now - baked_upload_data->mStartTime) / 1000) << " ms" << llendl; -				avatarp->setNewBakedTexture(baked_te, uuid); +				gAgentAvatarp->setNewBakedTexture(baked_te, uuid);  			}  			else  			{	 @@ -457,7 +453,7 @@ void LLTexLayerSetBuffer::onTextureUploadComplete(const LLUUID& uuid,  			llinfos << "Received baked texture out of date, ignored." << llendl;  		} -		avatarp->dirtyMesh(); +		gAgentAvatarp->dirtyMesh();  	}  	else  	{ diff --git a/indra/newview/lltooldraganddrop.cpp b/indra/newview/lltooldraganddrop.cpp index 813b3bd22f..9d7f42a978 100644 --- a/indra/newview/lltooldraganddrop.cpp +++ b/indra/newview/lltooldraganddrop.cpp @@ -80,7 +80,7 @@ public:  	virtual bool operator()(LLInventoryCategory* cat,  							LLInventoryItem* item)  	{ -		if(cat && (cat->getPreferredType() == LLFolderType::FT_NONE)) +		if (cat && (cat->getPreferredType() == LLFolderType::FT_NONE))  		{  			return true;  		} @@ -96,8 +96,8 @@ public:  	virtual bool operator()(LLInventoryCategory* cat,  							LLInventoryItem* item)  	{ -		if(item) return true; -		if(cat && (cat->getPreferredType() == LLFolderType::FT_NONE)) +		if (item) return true; +		if (cat && (cat->getPreferredType() == LLFolderType::FT_NONE))  		{  			return true;  		} @@ -124,18 +124,18 @@ bool LLDroppableItem::operator()(LLInventoryCategory* cat,  				 LLInventoryItem* item)  {  	bool allowed = false; -	if(item) +	if (item)  	{  		allowed = itemTransferCommonlyAllowed(item); -		if(allowed +		if (allowed  		   && mIsTransfer  		   && !item->getPermissions().allowOperationBy(PERM_TRANSFER,  							       gAgent.getID()))  		{  			allowed = false;  		} -		if(allowed && !item->getPermissions().allowCopyBy(gAgent.getID())) +		if (allowed && !item->getPermissions().allowCopyBy(gAgent.getID()))  		{  			++mCountLosing;  		} @@ -155,7 +155,7 @@ bool LLUncopyableItems::operator()(LLInventoryCategory* cat,  				   LLInventoryItem* item)  {  	bool uncopyable = false; -	if(item) +	if (item)  	{  		if (itemTransferCommonlyAllowed(item) &&  		   !item->getPermissions().allowCopyBy(gAgent.getID())) @@ -180,10 +180,10 @@ bool LLDropCopyableItems::operator()(  	LLInventoryItem* item)  {  	bool allowed = false; -	if(item) +	if (item)  	{  		allowed = itemTransferCommonlyAllowed(item); -		if(allowed && +		if (allowed &&  		   !item->getPermissions().allowCopyBy(gAgent.getID()))  		{  			// whoops, can't copy it - don't allow it. @@ -212,16 +212,16 @@ bool LLGiveable::operator()(LLInventoryCategory* cat, LLInventoryItem* item)  		return true;  	bool allowed = false; -	if(item) +	if (item)  	{  		allowed = itemTransferCommonlyAllowed(item); -		if(allowed && +		if (allowed &&  		   !item->getPermissions().allowOperationBy(PERM_TRANSFER,  							    gAgent.getID()))  		{  			allowed = FALSE;  		} -		if(allowed && +		if (allowed &&  		   !item->getPermissions().allowCopyBy(gAgent.getID()))  		{  			++mCountLosing; @@ -262,7 +262,7 @@ void LLCategoryDropObserver::done()  {  	gInventory.removeObserver(this);  	LLViewerObject* dst_obj = gObjectList.findObject(mObjectID); -	if(dst_obj) +	if (dst_obj)  	{  		// *FIX: coalesce these...   		LLInventoryItem* item = NULL; @@ -271,7 +271,7 @@ void LLCategoryDropObserver::done()    		for(; it < end; ++it)    		{   			item = gInventory.getItem(*it); - 			if(item) + 			if (item)   			{   				LLToolDragAndDrop::dropInventory(   					dst_obj, @@ -318,7 +318,7 @@ void LLCategoryDropDescendentsObserver::done()  	}  	S32 count = items.count(); -	if(count) +	if (count)  	{  		std::set<LLUUID> unique_ids;  		for(S32 i = 0; i < count; ++i) @@ -331,7 +331,7 @@ void LLCategoryDropDescendentsObserver::done()  		LLCategoryDropObserver* dropper;  		dropper = new LLCategoryDropObserver(mObjectID, mSource);  		dropper->fetchItems(ids); -		if(dropper->isEverythingComplete()) +		if (dropper->isEverythingComplete())  		{  			dropper->done();  		} @@ -422,7 +422,7 @@ void LLToolDragAndDrop::beginDrag(EDragAndDropType type,  								  const LLUUID& source_id,  								  const LLUUID& object_id)  { -	if(type == DAD_NONE) +	if (type == DAD_NONE)  	{  		llwarns << "Attempted to start drag without a cargo type" << llendl;  		return; @@ -438,24 +438,24 @@ void LLToolDragAndDrop::beginDrag(EDragAndDropType type,  	setMouseCapture( TRUE );  	LLToolMgr::getInstance()->setTransientTool( this );  	mCursor = UI_CURSOR_NO; -	if((mCargoTypes[0] == DAD_CATEGORY) +	if ((mCargoTypes[0] == DAD_CATEGORY)  	   && ((mSource == SOURCE_AGENT) || (mSource == SOURCE_LIBRARY)))  	{  		LLInventoryCategory* cat = gInventory.getCategory(cargo_id);  		// go ahead and fire & forget the descendents if we are not  		// dragging a protected folder. -		if(cat) +		if (cat)  		{  			LLViewerInventoryCategory::cat_array_t cats;  			LLViewerInventoryItem::item_array_t items;  			LLNoPreferredTypeOrItem is_not_preferred;  			LLInventoryFetchComboObserver::folder_ref_t folder_ids;  			LLInventoryFetchComboObserver::item_ref_t item_ids; -			if(is_not_preferred(cat, NULL)) +			if (is_not_preferred(cat, NULL))  			{  				folder_ids.push_back(cargo_id);  			} -			gInventory.collectDescendentsIf( +			gInventory.collectDescendentsIf (  				cargo_id,  				cats,  				items, @@ -472,7 +472,7 @@ void LLToolDragAndDrop::beginDrag(EDragAndDropType type,  			{  				item_ids.push_back(items.get(i)->getUUID());  			} -			if(!folder_ids.empty() || !item_ids.empty()) +			if (!folder_ids.empty() || !item_ids.empty())  			{  				LLCategoryFireAndForget fetcher;  				fetcher.fetch(folder_ids, item_ids); @@ -493,7 +493,7 @@ void LLToolDragAndDrop::beginMultiDrag(  	std::vector<EDragAndDropType>::const_iterator types_it;  	for (types_it = types.begin(); types_it != types.end(); ++types_it)  	{ -		if(DAD_NONE == *types_it) +		if (DAD_NONE == *types_it)  		{  			llwarns << "Attempted to start drag without a cargo type" << llendl;  			return; @@ -507,7 +507,7 @@ void LLToolDragAndDrop::beginMultiDrag(  	setMouseCapture( TRUE );  	LLToolMgr::getInstance()->setTransientTool( this );  	mCursor = UI_CURSOR_NO; -	if((mSource == SOURCE_AGENT) || (mSource == SOURCE_LIBRARY)) +	if ((mSource == SOURCE_AGENT) || (mSource == SOURCE_LIBRARY))  	{  		// find categories (i.e. inventory folders) in the cargo.  		LLInventoryCategory* cat = NULL; @@ -516,16 +516,16 @@ void LLToolDragAndDrop::beginMultiDrag(  		for(S32 i = 0; i < count; ++i)  		{  			cat = gInventory.getCategory(cargo_ids[i]); -			if(cat) +			if (cat)  			{  				LLViewerInventoryCategory::cat_array_t cats;  				LLViewerInventoryItem::item_array_t items;  				LLNoPreferredType is_not_preferred; -				if(is_not_preferred(cat, NULL)) +				if (is_not_preferred(cat, NULL))  				{  					cat_ids.insert(cat->getUUID());  				} -				gInventory.collectDescendentsIf( +				gInventory.collectDescendentsIf (  					cat->getUUID(),  					cats,  					items, @@ -538,7 +538,7 @@ void LLToolDragAndDrop::beginMultiDrag(  				}  			}  		} -		if(!cat_ids.empty()) +		if (!cat_ids.empty())  		{  			LLInventoryFetchComboObserver::folder_ref_t folder_ids;  			LLInventoryFetchComboObserver::item_ref_t item_ids; @@ -570,7 +570,7 @@ void LLToolDragAndDrop::onMouseCaptureLost()  BOOL LLToolDragAndDrop::handleMouseUp( S32 x, S32 y, MASK mask )  { -	if( hasMouseCapture() ) +	if (hasMouseCapture())  	{  		EAcceptance acceptance = ACCEPT_NO;  		dragOrDrop( x, y, mask, TRUE, &acceptance ); @@ -581,7 +581,7 @@ BOOL LLToolDragAndDrop::handleMouseUp( S32 x, S32 y, MASK mask )  ECursorType LLToolDragAndDrop::acceptanceToCursor( EAcceptance acceptance )  { -	switch( acceptance ) +	switch (acceptance)  	{  	case ACCEPT_YES_MULTI:  		if (mCargoIDs.size() > 1) @@ -698,7 +698,7 @@ void LLToolDragAndDrop::dragOrDrop( S32 x, S32 y, MASK mask, BOOL drop,  	mToolTipMsg.clear(); -	if(top_view) +	if (top_view)  	{  		handled = TRUE; @@ -763,7 +763,7 @@ void LLToolDragAndDrop::dragOrDrop( S32 x, S32 y, MASK mask, BOOL drop,  		}  	} -	if(!handled) +	if (!handled)  	{  		handled = TRUE; @@ -821,7 +821,7 @@ void LLToolDragAndDrop::dragOrDrop( S32 x, S32 y, MASK mask, BOOL drop,  		}  	} -	if ( !handled ) +	if (!handled)  	{  		dragOrDrop3D( x, y, mask, drop, acceptance );  	} @@ -874,7 +874,7 @@ void LLToolDragAndDrop::pick(const LLPickInfo& pick_info)  		if (hit_obj->isAttachment() && !hit_obj->isHUDAttachment())  		{  			LLVOAvatar* avatar = LLVOAvatar::findAvatarFromAttachment( hit_obj ); -			if( !avatar ) +			if (!avatar)  			{  				mLastAccept = ACCEPT_NO;  				mCursor = UI_CURSOR_NO; @@ -886,7 +886,7 @@ void LLToolDragAndDrop::pick(const LLPickInfo& pick_info)  		if (hit_obj->isAvatar())  		{ -			if(((LLVOAvatar*) hit_obj)->isSelf()) +			if (((LLVOAvatar*) hit_obj)->isSelf())  			{  				target = DT_SELF;  				hit_face = -1; @@ -972,7 +972,7 @@ BOOL LLToolDragAndDrop::handleDropTextureProtections(LLViewerObject* hit_obj,  	// Always succeed if....  	// texture is from the library   	// or already in the contents of the object -	if(SOURCE_LIBRARY == source) +	if (SOURCE_LIBRARY == source)  	{  		// dropping a texture from the library always just works.  		return TRUE; @@ -1000,7 +1000,7 @@ BOOL LLToolDragAndDrop::handleDropTextureProtections(LLViewerObject* hit_obj,  	if (!item) return FALSE;  	LLPointer<LLViewerInventoryItem> new_item = new LLViewerInventoryItem(item); -	if(!item->getPermissions().allowOperationBy(PERM_COPY, gAgent.getID())) +	if (!item->getPermissions().allowOperationBy(PERM_COPY, gAgent.getID()))  	{  		// Check that we can add the texture as inventory to the object  		if (willObjectAcceptInventory(hit_obj,item) < ACCEPT_YES_COPY_SINGLE ) @@ -1008,20 +1008,20 @@ BOOL LLToolDragAndDrop::handleDropTextureProtections(LLViewerObject* hit_obj,  			return FALSE;  		}  		// make sure the object has the texture in it's inventory. -		if(SOURCE_AGENT == source) +		if (SOURCE_AGENT == source)  		{  			// Remove the texture from local inventory. The server  			// will actually remove the item from agent inventory.  			gInventory.deleteObject(item->getUUID());  			gInventory.notifyObservers();  		} -		else if(SOURCE_WORLD == source) +		else if (SOURCE_WORLD == source)  		{  			// *FIX: if the objects are in different regions, and the  			// source region has crashed, you can bypass these  			// permissions.  			LLViewerObject* src_obj = gObjectList.findObject(src_id); -			if(src_obj) +			if (src_obj)  			{  				src_obj->removeInventory(item->getUUID());  			} @@ -1036,7 +1036,7 @@ BOOL LLToolDragAndDrop::handleDropTextureProtections(LLViewerObject* hit_obj,   		// TODO: Check to see if adding the item was successful; if not, then  		// we should return false here.  	} -	else if(!item->getPermissions().allowOperationBy(PERM_TRANSFER, +	else if (!item->getPermissions().allowOperationBy(PERM_TRANSFER,  													 gAgent.getID()))  	{  		// Check that we can add the texture as inventory to the object @@ -1068,7 +1068,7 @@ void LLToolDragAndDrop::dropTextureAllFaces(LLViewerObject* hit_obj,  	}  	LLUUID asset_id = item->getAssetUUID();  	BOOL success = handleDropTextureProtections(hit_obj, item, source, src_id); -	if(!success) +	if (!success)  	{  		return;  	} @@ -1110,7 +1110,7 @@ void LLToolDragAndDrop::dropTextureOneFace(LLViewerObject* hit_obj,  	}  	LLUUID asset_id = item->getAssetUUID();  	BOOL success = handleDropTextureProtections(hit_obj, item, source, src_id); -	if(!success) +	if (!success)  	{  		return;  	} @@ -1133,32 +1133,32 @@ void LLToolDragAndDrop::dropScript(LLViewerObject* hit_obj,  {  	// *HACK: In order to resolve SL-22177, we need to block drags  	// from notecards and objects onto other objects. -	if((SOURCE_WORLD == LLToolDragAndDrop::getInstance()->mSource) +	if ((SOURCE_WORLD == LLToolDragAndDrop::getInstance()->mSource)  	   || (SOURCE_NOTECARD == LLToolDragAndDrop::getInstance()->mSource))  	{  		llwarns << "Call to LLToolDragAndDrop::dropScript() from world"  			<< " or notecard." << llendl;  		return;  	} -	if(hit_obj && item) +	if (hit_obj && item)  	{  		LLPointer<LLViewerInventoryItem> new_script = new LLViewerInventoryItem(item); -		if(!item->getPermissions().allowCopyBy(gAgent.getID())) +		if (!item->getPermissions().allowCopyBy(gAgent.getID()))  		{ -			if(SOURCE_AGENT == source) +			if (SOURCE_AGENT == source)  			{  				// Remove the script from local inventory. The server  				// will actually remove the item from agent inventory.  				gInventory.deleteObject(item->getUUID());  				gInventory.notifyObservers();  			} -			else if(SOURCE_WORLD == source) +			else if (SOURCE_WORLD == source)  			{  				// *FIX: if the objects are in different regions, and  				// the source region has crashed, you can bypass  				// these permissions.  				LLViewerObject* src_obj = gObjectList.findObject(src_id); -				if(src_obj) +				if (src_obj)  				{  					src_obj->removeInventory(item->getUUID());  				} @@ -1174,7 +1174,7 @@ void LLToolDragAndDrop::dropScript(LLViewerObject* hit_obj,  		// VEFFECT: SetScript  		LLHUDEffectSpiral *effectp = (LLHUDEffectSpiral *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_BEAM, TRUE); -		effectp->setSourceObject(gAgent.getAvatarObject()); +		effectp->setSourceObject(gAgentAvatarp);  		effectp->setTargetObject(hit_obj);  		effectp->setDuration(LL_HUD_DUR_SHORT);  		effectp->setColor(LLColor4U(gAgent.getEffectColor())); @@ -1198,7 +1198,7 @@ void LLToolDragAndDrop::dropObject(LLViewerObject* raycast_target,  	LLViewerInventoryItem* item;  	LLViewerInventoryCategory* cat;  	locateInventory(item, cat); -	if(!item || !item->isComplete()) return; +	if (!item || !item->isComplete()) return;  	//if (regionp  	//	&& (regionp->getRegionFlags() & REGION_FLAGS_SANDBOX)) @@ -1209,7 +1209,7 @@ void LLToolDragAndDrop::dropObject(LLViewerObject* raycast_target,  	// this will remove the object from inventory after rez. Only  	// bother with this check if we would not normally remove from  	// inventory. -	if(!remove_from_inventory +	if (!remove_from_inventory  		&& !item->getPermissions().allowCopyBy(gAgent.getID()))  	{  		remove_from_inventory = TRUE; @@ -1220,7 +1220,7 @@ void LLToolDragAndDrop::dropObject(LLViewerObject* raycast_target,  	// hitting objects that were clipped by the near plane or culled  	// on the viewer.  	LLUUID ray_target_id; -	if( raycast_target ) +	if (raycast_target)  	{  		ray_target_id = raycast_target->getID();  	} @@ -1232,7 +1232,7 @@ void LLToolDragAndDrop::dropObject(LLViewerObject* raycast_target,  	// Check if it's in the trash.  	bool is_in_trash = false;  	const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH); -	if(gInventory.isObjectDescendentOf(item->getUUID(), trash_id)) +	if (gInventory.isObjectDescendentOf(item->getUUID(), trash_id))  	{  		is_in_trash = true;  		remove_from_inventory = TRUE; @@ -1290,7 +1290,7 @@ void LLToolDragAndDrop::dropObject(LLViewerObject* raycast_target,  	pack_permissions_slam(msg, item->getFlags(), item->getPermissions());  	LLUUID folder_id = item->getParentUUID(); -	if((SOURCE_LIBRARY == mSource) || (is_in_trash)) +	if ((SOURCE_LIBRARY == mSource) || (is_in_trash))  	{  		// since it's coming from the library or trash, we want to not  		// 'take' it back to the same place. @@ -1324,7 +1324,7 @@ void LLToolDragAndDrop::dropObject(LLViewerObject* raycast_target,  		gViewerWindow->getWindow()->incBusyCount();  	} -	if(remove_from_inventory) +	if (remove_from_inventory)  	{  		// Delete it from inventory immediately so that users cannot  		// easily bypass copy protection in laggy situations. If the @@ -1335,7 +1335,7 @@ void LLToolDragAndDrop::dropObject(LLViewerObject* raycast_target,  	// VEFFECT: DropObject  	LLHUDEffectSpiral *effectp = (LLHUDEffectSpiral *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_BEAM, TRUE); -	effectp->setSourceObject(gAgent.getAvatarObject()); +	effectp->setSourceObject(gAgentAvatarp);  	effectp->setPositionGlobal(mLastHitPos);  	effectp->setDuration(LL_HUD_DUR_SHORT);  	effectp->setColor(LLColor4U(gAgent.getEffectColor())); @@ -1350,7 +1350,7 @@ void LLToolDragAndDrop::dropInventory(LLViewerObject* hit_obj,  {  	// *HACK: In order to resolve SL-22177, we need to block drags  	// from notecards and objects onto other objects. -	if((SOURCE_WORLD == LLToolDragAndDrop::getInstance()->mSource) +	if ((SOURCE_WORLD == LLToolDragAndDrop::getInstance()->mSource)  	   || (SOURCE_NOTECARD == LLToolDragAndDrop::getInstance()->mSource))  	{  		llwarns << "Call to LLToolDragAndDrop::dropInventory() from world" @@ -1362,9 +1362,9 @@ void LLToolDragAndDrop::dropInventory(LLViewerObject* hit_obj,  	time_t creation_date = time_corrected();  	new_item->setCreationDate(creation_date); -	if(!item->getPermissions().allowCopyBy(gAgent.getID())) +	if (!item->getPermissions().allowCopyBy(gAgent.getID()))  	{ -		if(SOURCE_AGENT == source) +		if (SOURCE_AGENT == source)  		{  			// Remove the inventory item from local inventory. The  			// server will actually remove the item from agent @@ -1372,13 +1372,13 @@ void LLToolDragAndDrop::dropInventory(LLViewerObject* hit_obj,  			gInventory.deleteObject(item->getUUID());  			gInventory.notifyObservers();  		} -		else if(SOURCE_WORLD == source) +		else if (SOURCE_WORLD == source)  		{  			// *FIX: if the objects are in different regions, and the  			// source region has crashed, you can bypass these  			// permissions.  			LLViewerObject* src_obj = gObjectList.findObject(src_id); -			if(src_obj) +			if (src_obj)  			{  				src_obj->removeInventory(item->getUUID());  			} @@ -1398,7 +1398,7 @@ void LLToolDragAndDrop::dropInventory(LLViewerObject* hit_obj,  	// VEFFECT: AddToInventory  	LLHUDEffectSpiral *effectp = (LLHUDEffectSpiral *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_BEAM, TRUE); -	effectp->setSourceObject(gAgent.getAvatarObject()); +	effectp->setSourceObject(gAgentAvatarp);  	effectp->setTargetObject(hit_obj);  	effectp->setDuration(LL_HUD_DUR_SHORT);  	effectp->setColor(LLColor4U(gAgent.getEffectColor())); @@ -1411,11 +1411,11 @@ void LLToolDragAndDrop::giveInventory(const LLUUID& to_agent,  {  	llinfos << "LLToolDragAndDrop::giveInventory()" << llendl; -	if(!isInventoryGiveAcceptable(item)) +	if (!isInventoryGiveAcceptable(item))  	{  		return;  	} -	if(item->getPermissions().allowCopyBy(gAgent.getID())) +	if (item->getPermissions().allowCopyBy(gAgent.getID()))  	{  		// just give it away.  		LLToolDragAndDrop::commitGiveInventoryItem(to_agent, item, im_session_id); @@ -1439,7 +1439,7 @@ bool LLToolDragAndDrop::handleCopyProtectedItem(const LLSD& notification, const  	{  	case 0:  // "Yes"  		item = gInventory.getItem(notification["payload"]["item_id"].asUUID()); -		if(item) +		if (item)  		{  			LLToolDragAndDrop::commitGiveInventoryItem(notification["payload"]["agent_id"].asUUID(),  													   item); @@ -1466,7 +1466,7 @@ void LLToolDragAndDrop::commitGiveInventoryItem(const LLUUID& to_agent,  												LLInventoryItem* item,  												const LLUUID& im_session_id)  { -	if(!item) return; +	if (!item) return;  	std::string name;  	LLAgentUI::buildFullname(name);  	LLUUID transaction_id; @@ -1496,7 +1496,7 @@ void LLToolDragAndDrop::commitGiveInventoryItem(const LLUUID& to_agent,  	// VEFFECT: giveInventory  	LLHUDEffectSpiral *effectp = (LLHUDEffectSpiral *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_BEAM, TRUE); -	effectp->setSourceObject(gAgent.getAvatarObject()); +	effectp->setSourceObject(gAgentAvatarp);  	effectp->setTargetObject(gObjectList.findObject(to_agent));  	effectp->setDuration(LL_HUD_DUR_SHORT);  	effectp->setColor(LLColor4U(gAgent.getEffectColor())); @@ -1543,21 +1543,17 @@ void LLToolDragAndDrop::giveInventoryCategory(const LLUUID& to_agent,  											  const LLUUID& im_session_id)  { -	if(!cat) return; +	if (!cat) return;  	llinfos << "LLToolDragAndDrop::giveInventoryCategory() - "  			<< cat->getUUID() << llendl; -	LLVOAvatar* my_avatar = gAgent.getAvatarObject(); -	if( !my_avatar ) -	{ -		return; -	} +	if (!isAgentAvatarValid()) return;  	// Test out how many items are being given.  	LLViewerInventoryCategory::cat_array_t cats;  	LLViewerInventoryItem::item_array_t items;  	LLGiveable giveable; -	gInventory.collectDescendentsIf(cat->getUUID(), +	gInventory.collectDescendentsIf (cat->getUUID(),  									cats,  									items,  									LLInventoryModel::EXCLUDE_TRASH, @@ -1566,31 +1562,31 @@ void LLToolDragAndDrop::giveInventoryCategory(const LLUUID& to_agent,  	bool complete = true;  	for(S32 i = 0; i < count; ++i)  	{ -		if(!gInventory.isCategoryComplete(cats.get(i)->getUUID())) +		if (!gInventory.isCategoryComplete(cats.get(i)->getUUID()))  		{  			complete = false;  			break;  		}  	} -	if(!complete) +	if (!complete)  	{  		LLNotificationsUtil::add("IncompleteInventory");  		return;  	}   	count = items.count() + cats.count(); - 	if(count > MAX_ITEMS) + 	if (count > MAX_ITEMS)    	{  		LLNotificationsUtil::add("TooManyItems");    		return;    	} - 	else if(count == 0) + 	else if (count == 0)    	{  		LLNotificationsUtil::add("NoItems");    		return;    	}  	else  	{ -		if(0 == giveable.countNoCopy()) +		if (0 == giveable.countNoCopy())  		{  			LLToolDragAndDrop::commitGiveInventoryCategory(to_agent, cat, im_session_id);  		} @@ -1616,14 +1612,14 @@ bool LLToolDragAndDrop::handleCopyProtectedCategory(const LLSD& notification, co  	{  	case 0:  // "Yes"  		cat = gInventory.getCategory(notification["payload"]["folder_id"].asUUID()); -		if(cat) +		if (cat)  		{  			LLToolDragAndDrop::commitGiveInventoryCategory(notification["payload"]["agent_id"].asUUID(),  														   cat);  			LLViewerInventoryCategory::cat_array_t cats;  			LLViewerInventoryItem::item_array_t items;  			LLUncopyableItems remove; -			gInventory.collectDescendentsIf(cat->getUUID(), +			gInventory.collectDescendentsIf (cat->getUUID(),  											cats,  											items,  											LLInventoryModel::EXCLUDE_TRASH, @@ -1654,7 +1650,7 @@ void LLToolDragAndDrop::commitGiveInventoryCategory(const LLUUID& to_agent,  													const LLUUID& im_session_id)  { -	if(!cat) return; +	if (!cat) return;  	llinfos << "LLToolDragAndDrop::commitGiveInventoryCategory() - "  			<< cat->getUUID() << llendl; @@ -1665,7 +1661,7 @@ void LLToolDragAndDrop::commitGiveInventoryCategory(const LLUUID& to_agent,  	LLViewerInventoryCategory::cat_array_t cats;  	LLViewerInventoryItem::item_array_t items;  	LLGiveable giveable; -	gInventory.collectDescendentsIf(cat->getUUID(), +	gInventory.collectDescendentsIf (cat->getUUID(),  									cats,  									items,  									LLInventoryModel::EXCLUDE_TRASH, @@ -1675,12 +1671,12 @@ void LLToolDragAndDrop::commitGiveInventoryCategory(const LLUUID& to_agent,  	// MTUBYTES or 18 * count < 1200 => count < 1200/18 =>  	// 66. I've cut it down a bit from there to give some pad.   	S32 count = items.count() + cats.count(); - 	if(count > MAX_ITEMS) + 	if (count > MAX_ITEMS)    	{  		LLNotificationsUtil::add("TooManyItems");    		return;    	} - 	else if(count == 0) + 	else if (count == 0)    	{  		LLNotificationsUtil::add("NoItems");    		return; @@ -1739,7 +1735,7 @@ void LLToolDragAndDrop::commitGiveInventoryCategory(const LLUUID& to_agent,  		// VEFFECT: giveInventoryCategory  		LLHUDEffectSpiral *effectp = (LLHUDEffectSpiral *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_BEAM, TRUE); -		effectp->setSourceObject(gAgent.getAvatarObject()); +		effectp->setSourceObject(gAgentAvatarp);  		effectp->setTargetObject(gObjectList.findObject(to_agent));  		effectp->setDuration(LL_HUD_DUR_SHORT);  		effectp->setColor(LLColor4U(gAgent.getEffectColor())); @@ -1754,35 +1750,31 @@ void LLToolDragAndDrop::commitGiveInventoryCategory(const LLUUID& to_agent,  // static  BOOL LLToolDragAndDrop::isInventoryGiveAcceptable(LLInventoryItem* item)  { -	if(!item) +	if (!item)  	{  		return FALSE;  	} -	if(!item->getPermissions().allowOperationBy(PERM_TRANSFER, gAgent.getID())) +	if (!item->getPermissions().allowOperationBy(PERM_TRANSFER, gAgent.getID()))  	{  		return FALSE;  	}  	BOOL copyable = FALSE; -	if(item->getPermissions().allowCopyBy(gAgent.getID())) copyable = TRUE; +	if (item->getPermissions().allowCopyBy(gAgent.getID())) copyable = TRUE; -	LLVOAvatarSelf* my_avatar = gAgent.getAvatarObject(); -	if(!my_avatar) -	{ -		return FALSE; -	} +	if (!isAgentAvatarValid()) return FALSE;  	BOOL acceptable = TRUE;  	switch(item->getType())  	{  	case LLAssetType::AT_OBJECT: -		if(my_avatar->isWearingAttachment(item->getUUID())) +		if (gAgentAvatarp->isWearingAttachment(item->getUUID()))  		{  			acceptable = FALSE;  		}  		break;  	case LLAssetType::AT_BODYPART:  	case LLAssetType::AT_CLOTHING: -		if(!copyable && gAgentWearables.isWearingItem(item->getUUID())) +		if (!copyable && gAgentWearables.isWearingItem(item->getUUID()))  		{  			acceptable = FALSE;  		} @@ -1796,33 +1788,29 @@ BOOL LLToolDragAndDrop::isInventoryGiveAcceptable(LLInventoryItem* item)  // Static  BOOL LLToolDragAndDrop::isInventoryGroupGiveAcceptable(LLInventoryItem* item)  { -	if(!item) +	if (!item)  	{  		return FALSE;  	}  	// These permissions are double checked in the simulator in  	// LLGroupNoticeInventoryItemFetch::result(). -	if(!item->getPermissions().allowOperationBy(PERM_TRANSFER, gAgent.getID())) +	if (!item->getPermissions().allowOperationBy(PERM_TRANSFER, gAgent.getID()))  	{  		return FALSE;  	} -	if(!item->getPermissions().allowCopyBy(gAgent.getID())) +	if (!item->getPermissions().allowCopyBy(gAgent.getID()))  	{  		return FALSE;  	} -	LLVOAvatarSelf* my_avatar = gAgent.getAvatarObject(); -	if(!my_avatar) -	{ -		return FALSE; -	} +	if (!isAgentAvatarValid()) return FALSE;  	BOOL acceptable = TRUE;  	switch(item->getType())  	{  	case LLAssetType::AT_OBJECT: -		if(my_avatar->isWearingAttachment(item->getUUID())) +		if (gAgentAvatarp->isWearingAttachment(item->getUUID()))  		{  			acceptable = FALSE;  		} @@ -1848,7 +1836,7 @@ EAcceptance LLToolDragAndDrop::willObjectAcceptInventory(LLViewerObject* obj, LL  	// help make sure that drops that are from an object to an object  	// don't have to worry about order of evaluation. Think of this  	// like check for self in assignment. -	if(obj->getID() == item->getParentUUID()) +	if (obj->getID() == item->getParentUUID())  	{  		return ACCEPT_NO;  	} @@ -1857,19 +1845,17 @@ EAcceptance LLToolDragAndDrop::willObjectAcceptInventory(LLViewerObject* obj, LL  	//							  gAgent.getGroupID())  	//			 && (obj->mPermModify || obj->mFlagAllowInventoryAdd));  	BOOL worn = FALSE; -	LLVOAvatarSelf* my_avatar = NULL;  	switch(item->getType())  	{  	case LLAssetType::AT_OBJECT: -		my_avatar = gAgent.getAvatarObject(); -		if(my_avatar && my_avatar->isWearingAttachment(item->getUUID())) +		if (isAgentAvatarValid() && gAgentAvatarp->isWearingAttachment(item->getUUID()))  		{  				worn = TRUE;  		}  		break;  	case LLAssetType::AT_BODYPART:  	case LLAssetType::AT_CLOTHING: -		if(gAgentWearables.isWearingItem(item->getUUID())) +		if (gAgentWearables.isWearingItem(item->getUUID()))  		{  			worn = TRUE;  		} @@ -1880,7 +1866,7 @@ EAcceptance LLToolDragAndDrop::willObjectAcceptInventory(LLViewerObject* obj, LL  	const LLPermissions& perm = item->getPermissions();  	BOOL modify = (obj->permModify() || obj->flagAllowInventoryAdd());  	BOOL transfer = FALSE; -	if((obj->permYouOwner() && (perm.getOwner() == gAgent.getID())) +	if ((obj->permYouOwner() && (perm.getOwner() == gAgent.getID()))  	   || perm.allowOperationBy(PERM_TRANSFER, gAgent.getID()))  	{  		transfer = TRUE; @@ -1888,15 +1874,15 @@ EAcceptance LLToolDragAndDrop::willObjectAcceptInventory(LLViewerObject* obj, LL  	BOOL volume = (LL_PCODE_VOLUME == obj->getPCode());  	BOOL attached = obj->isAttachment();  	BOOL unrestricted = ((perm.getMaskBase() & PERM_ITEM_UNRESTRICTED) == PERM_ITEM_UNRESTRICTED) ? TRUE : FALSE; -	if(attached && !unrestricted) +	if (attached && !unrestricted)  	{  		return ACCEPT_NO_LOCKED;  	} -	else if(modify && transfer && volume && !worn) +	else if (modify && transfer && volume && !worn)  	{  		return ACCEPT_YES_MULTI;  	} -	else if(!modify) +	else if (!modify)  	{  		return ACCEPT_NO_LOCKED;  	} @@ -1927,12 +1913,12 @@ bool LLToolDragAndDrop::handleGiveDragAndDrop(LLUUID dest_agent, LLUUID session_  	case DAD_CALLINGCARD:  	{  		LLViewerInventoryItem* inv_item = (LLViewerInventoryItem*)cargo_data; -		if(gInventory.getItem(inv_item->getUUID()) +		if (gInventory.getItem(inv_item->getUUID())  		   && LLToolDragAndDrop::isInventoryGiveAcceptable(inv_item))  		{  			// *TODO: get multiple object transfers working  			*accept = ACCEPT_YES_COPY_SINGLE; -			if(drop) +			if (drop)  			{  				LLToolDragAndDrop::giveInventory(dest_agent, inv_item, session_id);  			} @@ -1950,11 +1936,11 @@ bool LLToolDragAndDrop::handleGiveDragAndDrop(LLUUID dest_agent, LLUUID session_  	case DAD_CATEGORY:  	{  		LLViewerInventoryCategory* inv_cat = (LLViewerInventoryCategory*)cargo_data; -		if( gInventory.getCategory( inv_cat->getUUID() ) ) +		if (gInventory.getCategory(inv_cat->getUUID()))  		{  			// *TODO: get multiple object transfers working  			*accept = ACCEPT_YES_COPY_SINGLE; -			if(drop) +			if (drop)  			{  				LLToolDragAndDrop::giveInventoryCategory(dest_agent, inv_cat, session_id);  			} @@ -1995,7 +1981,7 @@ EAcceptance LLToolDragAndDrop::dad3dRezAttachmentFromInv(  {  	lldebugs << "LLToolDragAndDrop::dad3dRezAttachmentFromInv()" << llendl;  	// must be in the user's inventory -	if(mSource != SOURCE_AGENT && mSource != SOURCE_LIBRARY) +	if (mSource != SOURCE_AGENT && mSource != SOURCE_LIBRARY)  	{  		return ACCEPT_NO;  	} @@ -2003,25 +1989,24 @@ EAcceptance LLToolDragAndDrop::dad3dRezAttachmentFromInv(  	LLViewerInventoryItem* item;  	LLViewerInventoryCategory* cat;  	locateInventory(item, cat); -	if(!item || !item->isComplete()) return ACCEPT_NO; +	if (!item || !item->isComplete()) return ACCEPT_NO;  	// must not be in the trash  	const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH); -	if( gInventory.isObjectDescendentOf( item->getUUID(), trash_id ) ) +	if (gInventory.isObjectDescendentOf(item->getUUID(), trash_id))  	{  		return ACCEPT_NO;  	}  	// must not be already wearing it -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	if(!avatarp || avatarp->isWearingAttachment(item->getUUID()) ) +	if (!isAgentAvatarValid() || gAgentAvatarp->isWearingAttachment(item->getUUID()))  	{  		return ACCEPT_NO;  	} -	if( drop ) +	if (drop)  	{ -		if(mSource == SOURCE_LIBRARY) +		if (mSource == SOURCE_LIBRARY)  		{  			LLPointer<LLInventoryCallback> cb = new RezAttachmentCallback(0);  			copy_inventory_item( @@ -2053,10 +2038,9 @@ EAcceptance LLToolDragAndDrop::dad3dRezObjectOnLand(  	LLViewerInventoryItem* item;  	LLViewerInventoryCategory* cat;  	locateInventory(item, cat); -	if(!item || !item->isComplete()) return ACCEPT_NO; +	if (!item || !item->isComplete()) return ACCEPT_NO; -	LLVOAvatarSelf* my_avatar = gAgent.getAvatarObject(); -	if( !my_avatar || my_avatar->isWearingAttachment( item->getUUID() ) ) +	if (!isAgentAvatarValid() || gAgentAvatarp->isWearingAttachment(item->getUUID()))  	{  		return ACCEPT_NO;  	} @@ -2081,7 +2065,7 @@ EAcceptance LLToolDragAndDrop::dad3dRezObjectOnLand(  	// check if the item can be copied. If not, send that to the sim  	// which will remove the inventory item. -	if(!item->getPermissions().allowCopyBy(gAgent.getID())) +	if (!item->getPermissions().allowCopyBy(gAgent.getID()))  	{  		accept = ACCEPT_YES_SINGLE;  		remove_inventory = TRUE; @@ -2089,13 +2073,13 @@ EAcceptance LLToolDragAndDrop::dad3dRezObjectOnLand(  	// Check if it's in the trash.  	const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH); -	if(gInventory.isObjectDescendentOf(item->getUUID(), trash_id)) +	if (gInventory.isObjectDescendentOf(item->getUUID(), trash_id))  	{  		accept = ACCEPT_YES_SINGLE;  		remove_inventory = TRUE;  	} -	if(drop) +	if (drop)  	{  		dropObject(obj, TRUE, FALSE, remove_inventory);  	} @@ -2116,24 +2100,23 @@ EAcceptance LLToolDragAndDrop::dad3dRezObjectOnObject(  	LLViewerInventoryItem* item;  	LLViewerInventoryCategory* cat;  	locateInventory(item, cat); -	if(!item || !item->isComplete()) return ACCEPT_NO; -	LLVOAvatarSelf* my_avatar = gAgent.getAvatarObject(); -	if( !my_avatar || my_avatar->isWearingAttachment( item->getUUID() ) ) +	if (!item || !item->isComplete()) return ACCEPT_NO; +	if (!isAgentAvatarValid() || gAgentAvatarp->isWearingAttachment(item->getUUID()))  	{  		return ACCEPT_NO;  	} -	if((mask & MASK_CONTROL)) +	if ((mask & MASK_CONTROL))  	{  		// *HACK: In order to resolve SL-22177, we need to block drags  		// from notecards and objects onto other objects. -		if(mSource == SOURCE_NOTECARD) +		if (mSource == SOURCE_NOTECARD)  		{  			return ACCEPT_NO;  		}  		EAcceptance rv = willObjectAcceptInventory(obj, item); -		if(drop && (ACCEPT_YES_SINGLE <= rv)) +		if (drop && (ACCEPT_YES_SINGLE <= rv))  		{  			dropInventory(obj, item, mSource, mSourceID);  		} @@ -2159,7 +2142,7 @@ EAcceptance LLToolDragAndDrop::dad3dRezObjectOnObject(  	// check if the item can be copied. If not, send that to the sim  	// which will remove the inventory item. -	if(!item->getPermissions().allowCopyBy(gAgent.getID())) +	if (!item->getPermissions().allowCopyBy(gAgent.getID()))  	{  		accept = ACCEPT_YES_SINGLE;  		remove_inventory = TRUE; @@ -2167,13 +2150,13 @@ EAcceptance LLToolDragAndDrop::dad3dRezObjectOnObject(  	// Check if it's in the trash.  	const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH); -	if(gInventory.isObjectDescendentOf(item->getUUID(), trash_id)) +	if (gInventory.isObjectDescendentOf(item->getUUID(), trash_id))  	{  		accept = ACCEPT_YES_SINGLE;  		remove_inventory = TRUE;  	} -	if(drop) +	if (drop)  	{  		dropObject(obj, FALSE, FALSE, remove_inventory);  	} @@ -2188,7 +2171,7 @@ EAcceptance LLToolDragAndDrop::dad3dRezScript(  	// *HACK: In order to resolve SL-22177, we need to block drags  	// from notecards and objects onto other objects. -	if((SOURCE_WORLD == mSource) || (SOURCE_NOTECARD == mSource)) +	if ((SOURCE_WORLD == mSource) || (SOURCE_NOTECARD == mSource))  	{  		return ACCEPT_NO;  	} @@ -2196,9 +2179,9 @@ EAcceptance LLToolDragAndDrop::dad3dRezScript(  	LLViewerInventoryItem* item;  	LLViewerInventoryCategory* cat;  	locateInventory(item, cat); -	if(!item || !item->isComplete()) return ACCEPT_NO; +	if (!item || !item->isComplete()) return ACCEPT_NO;  	EAcceptance rv = willObjectAcceptInventory(obj, item); -	if(drop && (ACCEPT_YES_SINGLE <= rv)) +	if (drop && (ACCEPT_YES_SINGLE <= rv))  	{  		// rez in the script active by default, rez in inactive if the  		// control key is being held down. @@ -2226,7 +2209,7 @@ EAcceptance LLToolDragAndDrop::dad3dTextureObject(  	// *HACK: In order to resolve SL-22177, we need to block drags  	// from notecards and objects onto other objects. -	if((SOURCE_WORLD == mSource) || (SOURCE_NOTECARD == mSource)) +	if ((SOURCE_WORLD == mSource) || (SOURCE_NOTECARD == mSource))  	{  		return ACCEPT_NO;  	} @@ -2234,29 +2217,29 @@ EAcceptance LLToolDragAndDrop::dad3dTextureObject(  	LLViewerInventoryItem* item;  	LLViewerInventoryCategory* cat;  	locateInventory(item, cat); -	if(!item || !item->isComplete()) return ACCEPT_NO; +	if (!item || !item->isComplete()) return ACCEPT_NO;  	EAcceptance rv = willObjectAcceptInventory(obj, item); -	if((mask & MASK_CONTROL)) +	if ((mask & MASK_CONTROL))  	{ -		if((ACCEPT_YES_SINGLE <= rv) && drop) +		if ((ACCEPT_YES_SINGLE <= rv) && drop)  		{  			dropInventory(obj, item, mSource, mSourceID);  		}  		return rv;  	} -	if(!obj->permModify()) +	if (!obj->permModify())  	{  		return ACCEPT_NO_LOCKED;  	}  	//If texture !copyable don't texture or you'll never get it back. -	if(!item->getPermissions().allowCopyBy(gAgent.getID())) +	if (!item->getPermissions().allowCopyBy(gAgent.getID()))  	{  		return ACCEPT_NO;  	} -	if(drop && (ACCEPT_YES_SINGLE <= rv)) +	if (drop && (ACCEPT_YES_SINGLE <= rv))  	{ -		if((mask & MASK_SHIFT)) +		if ((mask & MASK_SHIFT))  		{  			dropTextureAllFaces(obj, item, mSource, mSourceID);  		} @@ -2267,7 +2250,7 @@ EAcceptance LLToolDragAndDrop::dad3dTextureObject(  		// VEFFECT: SetTexture  		LLHUDEffectSpiral *effectp = (LLHUDEffectSpiral *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_BEAM, TRUE); -		effectp->setSourceObject(gAgent.getAvatarObject()); +		effectp->setSourceObject(gAgentAvatarp);  		effectp->setTargetObject(obj);  		effectp->setDuration(LL_HUD_DUR_SHORT);  		effectp->setColor(LLColor4U(gAgent.getEffectColor())); @@ -2281,9 +2264,9 @@ EAcceptance LLToolDragAndDrop::dad3dTextureSelf(  	LLViewerObject* obj, S32 face, MASK mask, BOOL drop)  {  	lldebugs << "LLToolDragAndDrop::dad3dTextureAvatar()" << llendl; -	if(drop) +	if (drop)  	{ -		if( !(mask & MASK_SHIFT) ) +		if (!(mask & MASK_SHIFT))  		{  			dropTextureOneFaceAvatar( (LLVOAvatar*)obj, face, (LLInventoryItem*)mCargoData);  		} @@ -2299,18 +2282,18 @@ EAcceptance LLToolDragAndDrop::dad3dWearItem(  	LLViewerInventoryItem* item;  	LLViewerInventoryCategory* cat;  	locateInventory(item, cat); -	if(!item || !item->isComplete()) return ACCEPT_NO; +	if (!item || !item->isComplete()) return ACCEPT_NO; -	if(mSource == SOURCE_AGENT || mSource == SOURCE_LIBRARY) +	if (mSource == SOURCE_AGENT || mSource == SOURCE_LIBRARY)  	{  		// it's in the agent inventory  		const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH); -		if( gInventory.isObjectDescendentOf( item->getUUID(), trash_id ) ) +		if (gInventory.isObjectDescendentOf(item->getUUID(), trash_id))  		{  			return ACCEPT_NO;  		} -		if( drop ) +		if (drop)  		{  			// Don't wear anything until initial wearables are loaded, can  			// destroy clothing items. @@ -2320,7 +2303,7 @@ EAcceptance LLToolDragAndDrop::dad3dWearItem(  				return ACCEPT_NO;  			} -			if(mSource == SOURCE_LIBRARY) +			if (mSource == SOURCE_LIBRARY)  			{  				// create item based on that one, and put it on if that  				// was a success. @@ -2354,21 +2337,21 @@ EAcceptance LLToolDragAndDrop::dad3dActivateGesture(  	LLViewerInventoryItem* item;  	LLViewerInventoryCategory* cat;  	locateInventory(item, cat); -	if(!item || !item->isComplete()) return ACCEPT_NO; +	if (!item || !item->isComplete()) return ACCEPT_NO; -	if(mSource == SOURCE_AGENT || mSource == SOURCE_LIBRARY) +	if (mSource == SOURCE_AGENT || mSource == SOURCE_LIBRARY)  	{  		// it's in the agent inventory  		const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH); -		if( gInventory.isObjectDescendentOf( item->getUUID(), trash_id ) ) +		if (gInventory.isObjectDescendentOf(item->getUUID(), trash_id))  		{  			return ACCEPT_NO;  		} -		if( drop ) +		if (drop)  		{  			LLUUID item_id; -			if(mSource == SOURCE_LIBRARY) +			if (mSource == SOURCE_LIBRARY)  			{  				// create item based on that one, and put it on if that  				// was a success. @@ -2383,7 +2366,7 @@ EAcceptance LLToolDragAndDrop::dad3dActivateGesture(  			}  			else  			{ -				LLGestureManager::instance().activateGesture(item->getUUID()); +				LLGestureMgr::instance().activateGesture(item->getUUID());  				gInventory.updateItem(item);  				gInventory.notifyObservers();  			} @@ -2403,7 +2386,7 @@ EAcceptance LLToolDragAndDrop::dad3dWearCategory(  	LLViewerInventoryItem* item;  	LLViewerInventoryCategory* category;  	locateInventory(item, category); -	if(!category) return ACCEPT_NO; +	if (!category) return ACCEPT_NO;  	if (drop)  	{ @@ -2416,26 +2399,26 @@ EAcceptance LLToolDragAndDrop::dad3dWearCategory(  		}  	} -	if(mSource == SOURCE_AGENT) +	if (mSource == SOURCE_AGENT)  	{  		const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH); -		if( gInventory.isObjectDescendentOf( category->getUUID(), trash_id ) ) +		if (gInventory.isObjectDescendentOf(category->getUUID(), trash_id))  		{  			return ACCEPT_NO;  		} -		if(drop) +		if (drop)  		{  		    BOOL append = ( (mask & MASK_SHIFT) ? TRUE : FALSE ); -			LLAppearanceManager::instance().wearInventoryCategory(category, false, append); +			LLAppearanceMgr::instance().wearInventoryCategory(category, false, append);  		}  		return ACCEPT_YES_MULTI;  	} -	else if(mSource == SOURCE_LIBRARY) +	else if (mSource == SOURCE_LIBRARY)  	{ -		if(drop) +		if (drop)  		{ -			LLAppearanceManager::instance().wearInventoryCategory(category, true, false); +			LLAppearanceMgr::instance().wearInventoryCategory(category, true, false);  		}  		return ACCEPT_YES_MULTI;  	} @@ -2454,7 +2437,7 @@ EAcceptance LLToolDragAndDrop::dad3dUpdateInventory(  	// *HACK: In order to resolve SL-22177, we need to block drags  	// from notecards and objects onto other objects. -	if((SOURCE_WORLD == mSource) || (SOURCE_NOTECARD == mSource)) +	if ((SOURCE_WORLD == mSource) || (SOURCE_NOTECARD == mSource))  	{  		return ACCEPT_NO;  	} @@ -2462,7 +2445,7 @@ EAcceptance LLToolDragAndDrop::dad3dUpdateInventory(  	LLViewerInventoryItem* item;  	LLViewerInventoryCategory* cat;  	locateInventory(item, cat); -	if(!item || !item->isComplete()) return ACCEPT_NO; +	if (!item || !item->isComplete()) return ACCEPT_NO;  	LLViewerObject* root_object = obj;  	if (obj && obj->getParent())  	{ @@ -2474,7 +2457,7 @@ EAcceptance LLToolDragAndDrop::dad3dUpdateInventory(  	}  	EAcceptance rv = willObjectAcceptInventory(root_object, item); -	if(root_object && drop && (ACCEPT_YES_COPY_SINGLE <= rv)) +	if (root_object && drop && (ACCEPT_YES_COPY_SINGLE <= rv))  	{  		dropInventory(root_object, item, mSource, mSourceID);  	} @@ -2518,7 +2501,7 @@ EAcceptance LLToolDragAndDrop::dad3dUpdateInventoryCategory(  	LLDroppableItem droppable(!obj->permYouOwner());  	LLInventoryModel::cat_array_t cats;  	LLInventoryModel::item_array_t items; -	gInventory.collectDescendentsIf(cat->getUUID(), +	gInventory.collectDescendentsIf (cat->getUUID(),  					cats,  					items,  					LLInventoryModel::EXCLUDE_TRASH, @@ -2547,7 +2530,7 @@ EAcceptance LLToolDragAndDrop::dad3dUpdateInventoryCategory(  	{  		const LLViewerInventoryCategory *cat = (*cat_iter);  		rv = gInventory.isCategoryComplete(cat->getUUID()) ? ACCEPT_YES_MULTI : ACCEPT_NO; -		if(rv < ACCEPT_YES_SINGLE) +		if (rv < ACCEPT_YES_SINGLE)  		{  			lldebugs << "Category " << cat->getUUID() << "is not complete." << llendl;  			break; @@ -2590,7 +2573,7 @@ EAcceptance LLToolDragAndDrop::dad3dUpdateInventoryCategory(  		}  		LLCategoryDropObserver* dropper = new LLCategoryDropObserver(obj->getID(), mSource);  		dropper->fetchItems(ids); -		if(dropper->isEverythingComplete()) +		if (dropper->isEverythingComplete())  		{  			dropper->done();  		} @@ -2615,27 +2598,26 @@ EAcceptance LLToolDragAndDrop::dad3dGiveInventoryObject(  	lldebugs << "LLToolDragAndDrop::dad3dGiveInventoryObject()" << llendl;  	// item has to be in agent inventory. -	if(mSource != SOURCE_AGENT) return ACCEPT_NO; +	if (mSource != SOURCE_AGENT) return ACCEPT_NO;  	// find the item now.  	LLViewerInventoryItem* item;  	LLViewerInventoryCategory* cat;  	locateInventory(item, cat); -	if(!item || !item->isComplete()) return ACCEPT_NO; -	if(!item->getPermissions().allowOperationBy(PERM_TRANSFER, gAgent.getID())) +	if (!item || !item->isComplete()) return ACCEPT_NO; +	if (!item->getPermissions().allowOperationBy(PERM_TRANSFER, gAgent.getID()))  	{  		// cannot give away no-transfer objects  		return ACCEPT_NO;  	} -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	if(avatarp && avatarp->isWearingAttachment( item->getUUID() ) ) +	if (isAgentAvatarValid() && gAgentAvatarp->isWearingAttachment(item->getUUID()))  	{  		// You can't give objects that are attached to you  		return ACCEPT_NO;  	} -	if(obj && avatarp) +	if (obj && isAgentAvatarValid())  	{ -		if(drop) +		if (drop)  		{  			giveInventory(obj->getID(), item );  		} @@ -2652,16 +2634,16 @@ EAcceptance LLToolDragAndDrop::dad3dGiveInventory(  {  	lldebugs << "LLToolDragAndDrop::dad3dGiveInventory()" << llendl;  	// item has to be in agent inventory. -	if(mSource != SOURCE_AGENT) return ACCEPT_NO; +	if (mSource != SOURCE_AGENT) return ACCEPT_NO;  	LLViewerInventoryItem* item;  	LLViewerInventoryCategory* cat;  	locateInventory(item, cat); -	if(!item || !item->isComplete()) return ACCEPT_NO; -	if(!isInventoryGiveAcceptable(item)) +	if (!item || !item->isComplete()) return ACCEPT_NO; +	if (!isInventoryGiveAcceptable(item))  	{  		return ACCEPT_NO;  	} -	if(drop && obj) +	if (drop && obj)  	{  		giveInventory(obj->getID(), item);  	} @@ -2674,12 +2656,12 @@ EAcceptance LLToolDragAndDrop::dad3dGiveInventoryCategory(  	LLViewerObject* obj, S32 face, MASK mask, BOOL drop)  {  	lldebugs << "LLToolDragAndDrop::dad3dGiveInventoryCategory()" << llendl; -	if(drop && obj) +	if (drop && obj)  	{  		LLViewerInventoryItem* item;  		LLViewerInventoryCategory* cat;  		locateInventory(item, cat); -		if(!cat) return ACCEPT_NO; +		if (!cat) return ACCEPT_NO;  		giveInventoryCategory(obj->getID(), cat);  	}  	// *TODO: deal with all the issues surrounding multi-object @@ -2695,14 +2677,14 @@ EAcceptance LLToolDragAndDrop::dad3dRezFromObjectOnLand(  	LLViewerInventoryItem* item = NULL;  	LLViewerInventoryCategory* cat = NULL;  	locateInventory(item, cat); -	if(!item || !item->isComplete()) return ACCEPT_NO; +	if (!item || !item->isComplete()) return ACCEPT_NO; -	if(!gAgent.allowOperation(PERM_COPY, item->getPermissions()) +	if (!gAgent.allowOperation(PERM_COPY, item->getPermissions())  		|| !item->getPermissions().allowTransferTo(LLUUID::null))  	{  		return ACCEPT_NO_LOCKED;  	} -	if(drop) +	if (drop)  	{  		dropObject(obj, TRUE, TRUE, FALSE);  	} @@ -2716,8 +2698,8 @@ EAcceptance LLToolDragAndDrop::dad3dRezFromObjectOnObject(  	LLViewerInventoryItem* item;  	LLViewerInventoryCategory* cat;  	locateInventory(item, cat); -	if(!item || !item->isComplete()) return ACCEPT_NO; -	if((mask & MASK_CONTROL)) +	if (!item || !item->isComplete()) return ACCEPT_NO; +	if ((mask & MASK_CONTROL))  	{  		// *HACK: In order to resolve SL-22177, we need to block drags  		// from notecards and objects onto other objects. @@ -2725,19 +2707,19 @@ EAcceptance LLToolDragAndDrop::dad3dRezFromObjectOnObject(  		// *HACK: uncomment this when appropriate  		//EAcceptance rv = willObjectAcceptInventory(obj, item); -		//if(drop && (ACCEPT_YES_SINGLE <= rv)) +		//if (drop && (ACCEPT_YES_SINGLE <= rv))  		//{  		//	dropInventory(obj, item, mSource, mSourceID);  		//}  		//return rv;  	} -	if(!item->getPermissions().allowCopyBy(gAgent.getID(), +	if (!item->getPermissions().allowCopyBy(gAgent.getID(),  										   gAgent.getGroupID())  	   || !item->getPermissions().allowTransferTo(LLUUID::null))  	{  		return ACCEPT_NO_LOCKED;  	} -	if(drop) +	if (drop)  	{  		dropObject(obj, FALSE, TRUE, FALSE);  	} @@ -2753,23 +2735,23 @@ EAcceptance LLToolDragAndDrop::dad3dCategoryOnLand(  	LLInventoryItem* item;  	LLInventoryCategory* cat;  	locateInventory(item, cat); -	if(!cat) return ACCEPT_NO; +	if (!cat) return ACCEPT_NO;  	EAcceptance rv = ACCEPT_NO;  	// find all the items in the category  	LLViewerInventoryCategory::cat_array_t cats;  	LLViewerInventoryItem::item_array_t items;  	LLDropCopyableItems droppable; -	gInventory.collectDescendentsIf(cat->getUUID(), +	gInventory.collectDescendentsIf (cat->getUUID(),  									cats,  									items,  									LLInventoryModel::EXCLUDE_TRASH,  									droppable); -	if(items.count() > 0) +	if (items.count() > 0)  	{  		rv = ACCEPT_YES_SINGLE;  	} -	if((rv >= ACCEPT_YES_COPY_SINGLE) && drop) +	if ((rv >= ACCEPT_YES_COPY_SINGLE) && drop)  	{  		createContainer(items, cat->getName());  		return ACCEPT_NO; @@ -2792,19 +2774,19 @@ EAcceptance LLToolDragAndDrop::dad3dAssetOnLand(  	LLViewerInventoryItem::item_array_t items;  	LLViewerInventoryItem::item_array_t copyable_items;  	locateMultipleInventory(items, cats); -	if(!items.count()) return ACCEPT_NO; +	if (!items.count()) return ACCEPT_NO;  	EAcceptance rv = ACCEPT_NO;  	for (S32 i = 0; i < items.count(); i++)  	{  		LLInventoryItem* item = items[i]; -		if(item->getPermissions().allowCopyBy(gAgent.getID())) +		if (item->getPermissions().allowCopyBy(gAgent.getID()))  		{  			copyable_items.put(item);  			rv = ACCEPT_YES_SINGLE;  		}  	} -	if((rv >= ACCEPT_YES_COPY_SINGLE) && drop) +	if ((rv >= ACCEPT_YES_COPY_SINGLE) && drop)  	{  		createContainer(copyable_items, NULL);  	} @@ -2819,20 +2801,20 @@ LLInventoryObject* LLToolDragAndDrop::locateInventory(  {  	item = NULL;  	cat = NULL; -	if(mCargoIDs.empty()) return NULL; -	if((mSource == SOURCE_AGENT) || (mSource == SOURCE_LIBRARY)) +	if (mCargoIDs.empty()) return NULL; +	if ((mSource == SOURCE_AGENT) || (mSource == SOURCE_LIBRARY))  	{  		// The object should be in user inventory.  		item = (LLViewerInventoryItem*)gInventory.getItem(mCargoIDs[mCurItemIndex]);  		cat = (LLViewerInventoryCategory*)gInventory.getCategory(mCargoIDs[mCurItemIndex]);  	} -	else if(mSource == SOURCE_WORLD) +	else if (mSource == SOURCE_WORLD)  	{  		// This object is in some task inventory somewhere.  		LLViewerObject* obj = gObjectList.findObject(mSourceID); -		if(obj) +		if (obj)  		{ -			if((mCargoTypes[mCurItemIndex] == DAD_CATEGORY) +			if ((mCargoTypes[mCurItemIndex] == DAD_CATEGORY)  			   || (mCargoTypes[mCurItemIndex] == DAD_ROOT_CATEGORY))  			{  				cat = (LLViewerInventoryCategory*)obj->getInventoryObject(mCargoIDs[mCurItemIndex]); @@ -2843,16 +2825,16 @@ LLInventoryObject* LLToolDragAndDrop::locateInventory(  			}  		}  	} -	else if(mSource == SOURCE_NOTECARD) +	else if (mSource == SOURCE_NOTECARD)  	{  		LLPreviewNotecard* preview = LLFloaterReg::findTypedInstance<LLPreviewNotecard>("preview_notecard", mSourceID); -		if(preview) +		if (preview)  		{  			item = (LLViewerInventoryItem*)preview->getDragItem();  		}  	} -	if(item) return item; -	if(cat) return cat; +	if (item) return item; +	if (cat) return cat;  	return NULL;  } @@ -2860,8 +2842,8 @@ LLInventoryObject* LLToolDragAndDrop::locateInventory(  LLInventoryObject* LLToolDragAndDrop::locateMultipleInventory(LLViewerInventoryCategory::cat_array_t& cats,  															  LLViewerInventoryItem::item_array_t& items)  { -	if(mCargoIDs.count() == 0) return NULL; -	if((mSource == SOURCE_AGENT) || (mSource == SOURCE_LIBRARY)) +	if (mCargoIDs.count() == 0) return NULL; +	if ((mSource == SOURCE_AGENT) || (mSource == SOURCE_LIBRARY))  	{  		// The object should be in user inventory.  		for (S32 i = 0; i < mCargoIDs.count(); i++) @@ -2878,13 +2860,13 @@ LLInventoryObject* LLToolDragAndDrop::locateMultipleInventory(LLViewerInventoryC  			}  		}  	} -	else if(mSource == SOURCE_WORLD) +	else if (mSource == SOURCE_WORLD)  	{  		// This object is in some task inventory somewhere.  		LLViewerObject* obj = gObjectList.findObject(mSourceID); -		if(obj) +		if (obj)  		{ -			if((mCargoType == DAD_CATEGORY) +			if ((mCargoType == DAD_CATEGORY)  			   || (mCargoType == DAD_ROOT_CATEGORY))  			{  				// The object should be in user inventory. @@ -2910,17 +2892,17 @@ LLInventoryObject* LLToolDragAndDrop::locateMultipleInventory(LLViewerInventoryC  			}  		}  	} -	else if(mSource == SOURCE_NOTECARD) +	else if (mSource == SOURCE_NOTECARD)  	{  		LLPreviewNotecard* card;  		card = (LLPreviewNotecard*)LLPreview::find(mSourceID); -		if(card) +		if (card)  		{  			items.put((LLInventoryItem*)card->getDragItem());  		}  	} -	if(items.count()) return items[0]; -	if(cats.count()) return cats[0]; +	if (items.count()) return items[0]; +	if (cats.count()) return cats[0];  	return NULL;  }  */ diff --git a/indra/newview/lltoolfocus.cpp b/indra/newview/lltoolfocus.cpp index 1e2e7095d8..032714cabf 100644 --- a/indra/newview/lltoolfocus.cpp +++ b/indra/newview/lltoolfocus.cpp @@ -173,14 +173,12 @@ void LLToolCamera::pickCallback(const LLPickInfo& pick_info)  		BOOL good_customize_avatar_hit = FALSE;  		if( hit_obj )  		{ -			LLVOAvatar* avatar = gAgent.getAvatarObject(); -			if( hit_obj == avatar)  +			if (isAgentAvatarValid() && (hit_obj == gAgentAvatarp))  			{  				// It's you  				good_customize_avatar_hit = TRUE;  			} -			else -			if( hit_obj->isAttachment() && hit_obj->permYouOwner() ) +			else if (hit_obj->isAttachment() && hit_obj->permYouOwner())  			{  				// It's an attachment that you're wearing  				good_customize_avatar_hit = TRUE; @@ -223,8 +221,8 @@ void LLToolCamera::pickCallback(const LLPickInfo& pick_info)  			gAgentCamera.cameraThirdPerson() &&  			gViewerWindow->getLeftMouseDown() &&   			!gSavedSettings.getBOOL("FreezeTime") && -			(hit_obj == gAgent.getAvatarObject() ||  -				(hit_obj && hit_obj->isAttachment() && LLVOAvatar::findAvatarFromAttachment(hit_obj)->isSelf()))) +			(hit_obj == gAgentAvatarp ||  +			 (hit_obj && hit_obj->isAttachment() && LLVOAvatar::findAvatarFromAttachment(hit_obj)->isSelf())))  		{  			LLToolCamera::getInstance()->mMouseSteering = TRUE;  		} diff --git a/indra/newview/lltoolgrab.cpp b/indra/newview/lltoolgrab.cpp index 008cf16f2e..04d873f91b 100644 --- a/indra/newview/lltoolgrab.cpp +++ b/indra/newview/lltoolgrab.cpp @@ -708,7 +708,7 @@ void LLToolGrab::handleHoverActive(S32 x, S32 y, MASK mask)  	{  		if (!gAgentCamera.cameraMouselook() &&   			!objectp->isHUDAttachment() &&  -			objectp->getRoot() == gAgent.getAvatarObject()->getRoot()) +			objectp->getRoot() == gAgentAvatarp->getRoot())  		{  			// force focus to point in space where we were looking previously  			gAgentCamera.setFocusGlobal(gAgentCamera.calcFocusPositionTargetGlobal(), LLUUID::null); diff --git a/indra/newview/lltoolmorph.cpp b/indra/newview/lltoolmorph.cpp index c42c47c486..969049ee65 100644 --- a/indra/newview/lltoolmorph.cpp +++ b/indra/newview/lltoolmorph.cpp @@ -139,22 +139,20 @@ void LLVisualParamHint::requestHintUpdates( LLVisualParamHint* exception1, LLVis  BOOL LLVisualParamHint::needsRender()  { -	return mNeedsUpdate && mDelayFrames-- <= 0 && !gAgent.getAvatarObject()->mAppearanceAnimating && mAllowsUpdates; +	return mNeedsUpdate && mDelayFrames-- <= 0 && !gAgentAvatarp->mAppearanceAnimating && mAllowsUpdates;  }  void LLVisualParamHint::preRender(BOOL clear_depth)  { -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -  	mLastParamWeight = mVisualParam->getWeight();  	mVisualParam->setWeight(mVisualParamWeight, FALSE); -	avatarp->setVisualParamWeight(mVisualParam->getID(), mVisualParamWeight, FALSE); -	avatarp->setVisualParamWeight("Blink_Left", 0.f); -	avatarp->setVisualParamWeight("Blink_Right", 0.f); -	avatarp->updateComposites(); -	avatarp->updateVisualParams(); -	avatarp->updateGeometry(avatarp->mDrawable); -	avatarp->updateLOD(); +	gAgentAvatarp->setVisualParamWeight(mVisualParam->getID(), mVisualParamWeight, FALSE); +	gAgentAvatarp->setVisualParamWeight("Blink_Left", 0.f); +	gAgentAvatarp->setVisualParamWeight("Blink_Right", 0.f); +	gAgentAvatarp->updateComposites(); +	gAgentAvatarp->updateVisualParams(); +	gAgentAvatarp->updateGeometry(gAgentAvatarp->mDrawable); +	gAgentAvatarp->updateLOD();  	LLViewerDynamicTexture::preRender(clear_depth);  } @@ -165,7 +163,6 @@ void LLVisualParamHint::preRender(BOOL clear_depth)  BOOL LLVisualParamHint::render()  {  	LLVisualParamReset::sDirty = TRUE; -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();  	gGL.pushUIMatrix();  	gGL.loadUIIdentity(); @@ -196,7 +193,7 @@ BOOL LLVisualParamHint::render()  	const std::string& cam_target_mesh_name = mVisualParam->getCameraTargetName();  	if( !cam_target_mesh_name.empty() )  	{ -		cam_target_joint = (LLViewerJointMesh*)avatarp->getJoint( cam_target_mesh_name ); +		cam_target_joint = (LLViewerJointMesh*)gAgentAvatarp->getJoint( cam_target_mesh_name );  	}  	if( !cam_target_joint )  	{ @@ -204,11 +201,11 @@ BOOL LLVisualParamHint::render()  	}  	if( !cam_target_joint )  	{ -		cam_target_joint = (LLViewerJointMesh*)avatarp->getJoint("mHead"); +		cam_target_joint = (LLViewerJointMesh*)gAgentAvatarp->getJoint("mHead");  	}  	LLQuaternion avatar_rotation; -	LLJoint* root_joint = avatarp->getRootJoint(); +	LLJoint* root_joint = gAgentAvatarp->getRootJoint();  	if( root_joint )  	{  		avatar_rotation = root_joint->getWorldRotation(); @@ -236,17 +233,17 @@ BOOL LLVisualParamHint::render()  	LLViewerCamera::getInstance()->setPerspective(FALSE, mOrigin.mX, mOrigin.mY, mFullWidth, mFullHeight, FALSE); -	if (avatarp->mDrawable.notNull()) +	if (gAgentAvatarp->mDrawable.notNull())  	{ -		LLDrawPoolAvatar *avatarPoolp = (LLDrawPoolAvatar *)avatarp->mDrawable->getFace(0)->getPool(); +		LLDrawPoolAvatar *avatarPoolp = (LLDrawPoolAvatar *)gAgentAvatarp->mDrawable->getFace(0)->getPool();  		LLGLDepthTest gls_depth(GL_TRUE, GL_TRUE);  		gGL.setAlphaRejectSettings(LLRender::CF_ALWAYS);  		gGL.setSceneBlendType(LLRender::BT_REPLACE); -		avatarPoolp->renderAvatars(avatarp);  // renders only one avatar +		avatarPoolp->renderAvatars(gAgentAvatarp);  // renders only one avatar  		gGL.setSceneBlendType(LLRender::BT_ALPHA);  		gGL.setAlphaRejectSettings(LLRender::CF_DEFAULT);  	} -	avatarp->setVisualParamWeight(mVisualParam->getID(), mLastParamWeight); +	gAgentAvatarp->setVisualParamWeight(mVisualParam->getID(), mLastParamWeight);  	mVisualParam->setWeight(mLastParamWeight, FALSE);  	gGL.color4f(1,1,1,1);  	mGLTexturep->setGLTextureCreated(true); @@ -297,10 +294,9 @@ BOOL LLVisualParamReset::render()  {  	if (sDirty)  	{ -		LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -		avatarp->updateComposites(); -		avatarp->updateVisualParams(); -		avatarp->updateGeometry(avatarp->mDrawable); +		gAgentAvatarp->updateComposites(); +		gAgentAvatarp->updateVisualParams(); +		gAgentAvatarp->updateGeometry(gAgentAvatarp->mDrawable);  		sDirty = FALSE;  	} diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp index b7947cf4ae..84c463495b 100644 --- a/indra/newview/lltoolpie.cpp +++ b/indra/newview/lltoolpie.cpp @@ -205,15 +205,15 @@ BOOL LLToolPie::pickLeftMouseDownCallback()  			// touch behavior down below...  			break;  		case CLICK_ACTION_SIT: - -			if ((gAgent.getAvatarObject() != NULL) && (!gAgent.getAvatarObject()->isSitting())) // agent not already sitting  			{ -				handle_object_sit_or_stand(); -				// put focus in world when sitting on an object -				gFocusMgr.setKeyboardFocus(NULL); -				return TRUE; -			} // else nothing (fall through to touch) -			 +				if (isAgentAvatarValid() && !gAgentAvatarp->isSitting()) // agent not already sitting +				{ +					handle_object_sit_or_stand(); +					// put focus in world when sitting on an object +					gFocusMgr.setKeyboardFocus(NULL); +					return TRUE; +				} // else nothing (fall through to touch) +			}  		case CLICK_ACTION_PAY:  			if ((object && object->flagTakesMoney())  				|| (parent && parent->flagTakesMoney())) @@ -330,7 +330,7 @@ BOOL LLToolPie::pickLeftMouseDownCallback()  			}  			object = (LLViewerObject*)object->getParent();  		} -		if (object && object == gAgent.getAvatarObject()) +		if (object && object == gAgentAvatarp)  		{  			// we left clicked on avatar, switch to focus mode  			LLToolMgr::getInstance()->setTransientTool(LLToolCamera::getInstance()); @@ -411,9 +411,11 @@ ECursorType cursor_from_object(LLViewerObject* object)  	switch(click_action)  	{  	case CLICK_ACTION_SIT: -		if ((gAgent.getAvatarObject() != NULL) && (!gAgent.getAvatarObject()->isSitting())) // not already sitting?  		{ -			cursor = UI_CURSOR_TOOLSIT; +			if (isAgentAvatarValid() && !gAgentAvatarp->isSitting()) // not already sitting? +			{ +				cursor = UI_CURSOR_TOOLSIT; +			}  		}  		break;  	case CLICK_ACTION_BUY: diff --git a/indra/newview/lltoolplacer.cpp b/indra/newview/lltoolplacer.cpp index b10ee590e0..91f01f0b36 100644 --- a/indra/newview/lltoolplacer.cpp +++ b/indra/newview/lltoolplacer.cpp @@ -62,6 +62,7 @@  #include "llviewerobjectlist.h"  #include "llviewercamera.h"  #include "llviewerstats.h" +#include "llvoavatarself.h"  // linden library headers  #include "llprimitive.h" @@ -433,7 +434,7 @@ BOOL LLToolPlacer::addObject( LLPCode pcode, S32 x, S32 y, U8 use_physics )  	// VEFFECT: AddObject  	LLHUDEffectSpiral *effectp = (LLHUDEffectSpiral *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_BEAM, TRUE); -	effectp->setSourceObject((LLViewerObject*)gAgent.getAvatarObject()); +	effectp->setSourceObject((LLViewerObject*)gAgentAvatarp);  	effectp->setPositionGlobal(regionp->getPosGlobalFromRegion(ray_end_region));  	effectp->setDuration(LL_HUD_DUR_SHORT);  	effectp->setColor(LLColor4U(gAgent.getEffectColor())); diff --git a/indra/newview/lltoolselect.cpp b/indra/newview/lltoolselect.cpp index 6e0c6663e9..2065ba1791 100644 --- a/indra/newview/lltoolselect.cpp +++ b/indra/newview/lltoolselect.cpp @@ -169,8 +169,8 @@ LLObjectSelectionHandle LLToolSelect::handleObjectSelection(const LLPickInfo& pi  		}  		if (!gAgentCamera.getFocusOnAvatar() &&										// if camera not glued to avatar -			LLVOAvatar::findAvatarFromAttachment(object) != gAgent.getAvatarObject() &&	// and it's not one of your attachments -			object != gAgent.getAvatarObject())									// and it's not you +			LLVOAvatar::findAvatarFromAttachment(object) != gAgentAvatarp &&	// and it's not one of your attachments +			object != gAgentAvatarp)									// and it's not you  		{  			// have avatar turn to face the selected object(s)  			LLVector3d selection_center = LLSelectMgr::getInstance()->getSelectionCenterGlobal(); diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp index 5a2b901bd7..823466e33e 100644 --- a/indra/newview/llviewerdisplay.cpp +++ b/indra/newview/llviewerdisplay.cpp @@ -345,9 +345,9 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)  		const F32 TELEPORT_ARRIVAL_DELAY = 2.f; // Time to preload the world before raising the curtain after we've actually already arrived.  		S32 attach_count = 0; -		if (gAgent.getAvatarObject()) +		if (isAgentAvatarValid())  		{ -			attach_count = gAgent.getAvatarObject()->getAttachmentCount(); +			attach_count = gAgentAvatarp->getAttachmentCount();  		}  		F32 teleport_save_time = TELEPORT_EXPIRY + TELEPORT_EXPIRY_PER_ATTACHMENT * attach_count;  		F32 teleport_elapsed = gTeleportDisplayTimer.getElapsedTimeF32(); @@ -1032,11 +1032,10 @@ LLRect get_whole_screen_region()  bool get_hud_matrices(const LLRect& screen_region, glh::matrix4f &proj, glh::matrix4f &model)  { -	LLVOAvatar* my_avatarp = gAgent.getAvatarObject(); -	if (my_avatarp && my_avatarp->hasHUDAttachment()) +	if (isAgentAvatarValid() && gAgentAvatarp->hasHUDAttachment())  	{  		F32 zoom_level = gAgentCamera.mHUDCurZoom; -		LLBBox hud_bbox = my_avatarp->getHUDBBox(); +		LLBBox hud_bbox = gAgentAvatarp->getHUDBBox();  		F32 hud_depth = llmax(1.f, hud_bbox.getExtentLocal().mV[VX] * 1.1f);  		proj = gl_ortho(-0.5f * LLViewerCamera::getInstance()->getAspect(), 0.5f * LLViewerCamera::getInstance()->getAspect(), -0.5f, 0.5f, 0.f, hud_depth); @@ -1300,7 +1299,7 @@ void render_ui_2d()  	gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);  	// render outline for HUD -	if (gAgent.getAvatarObject() && gAgentCamera.mHUDCurZoom < 0.98f) +	if (isAgentAvatarValid() && gAgentCamera.mHUDCurZoom < 0.98f)  	{  		glPushMatrix();  		S32 half_width = (gViewerWindow->getWorldViewWidthScaled() / 2); diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp index 7bf7bf5e2f..a2c67abf05 100644 --- a/indra/newview/llviewerinventory.cpp +++ b/indra/newview/llviewerinventory.cpp @@ -791,7 +791,7 @@ void WearOnAvatarCallback::fire(const LLUUID& inv_item)  void ModifiedCOFCallback::fire(const LLUUID& inv_item)  { -	LLAppearanceManager::instance().updateAppearanceFromCOF(); +	LLAppearanceMgr::instance().updateAppearanceFromCOF();  	if( CAMERA_MODE_CUSTOMIZE_AVATAR == gAgentCamera.getCameraMode() )  	{  		// If we're in appearance editing mode, the current tab may need to be refreshed @@ -827,7 +827,7 @@ void ActivateGestureCallback::fire(const LLUUID& inv_item)  	if (inv_item.isNull())  		return; -	LLGestureManager::instance().activateGesture(inv_item); +	LLGestureMgr::instance().activateGesture(inv_item);  }  void CreateGestureCallback::fire(const LLUUID& inv_item) @@ -835,7 +835,7 @@ void CreateGestureCallback::fire(const LLUUID& inv_item)  	if (inv_item.isNull())  		return; -	LLGestureManager::instance().activateGesture(inv_item); +	LLGestureMgr::instance().activateGesture(inv_item);  	LLViewerInventoryItem* item = gInventory.getItem(inv_item);  	if (!item) return; diff --git a/indra/newview/llviewerkeyboard.cpp b/indra/newview/llviewerkeyboard.cpp index cbec2c890f..dd7390a907 100644 --- a/indra/newview/llviewerkeyboard.cpp +++ b/indra/newview/llviewerkeyboard.cpp @@ -877,7 +877,7 @@ EKeyboardMode LLViewerKeyboard::getMode()  	{  		return MODE_EDIT_AVATAR;  	} -	else if (gAgent.getAvatarObject() && gAgent.getAvatarObject()->isSitting()) +	else if (isAgentAvatarValid() && gAgentAvatarp->isSitting())  	{  		return MODE_SITTING;  	} diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index 61a75f7227..6f0d9cdd95 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -3199,7 +3199,7 @@ bool LLViewerMediaImpl::isObjectAttachedToAnotherAvatar(LLVOVolume *obj)  		if (NULL != object)  		{  			LLVOAvatar *avatar = object->asAvatar(); -			if (NULL != avatar && avatar != gAgent.getAvatarObject()) +			if ((NULL != avatar) && (avatar != gAgentAvatarp))  			{  				result = true;  				break; diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index d79cb85730..fe924d68a5 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -2692,11 +2692,10 @@ class LLSelfEnableRemoveAllAttachments : public view_listener_t  	bool handleEvent(const LLSD& userdata)  	{  		bool new_value = false; -		if (gAgent.getAvatarObject()) +		if (isAgentAvatarValid())  		{ -			LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -			for (LLVOAvatar::attachment_map_t::iterator iter = avatarp->mAttachmentPoints.begin();  -				 iter != avatarp->mAttachmentPoints.end(); ) +			for (LLVOAvatar::attachment_map_t::iterator iter = gAgentAvatarp->mAttachmentPoints.begin();  +				 iter != gAgentAvatarp->mAttachmentPoints.end(); )  			{  				LLVOAvatar::attachment_map_t::iterator curiter = iter++;  				LLViewerJointAttachment* attachment = curiter->second; @@ -2824,9 +2823,9 @@ bool handle_go_to()  	LLViewerParcelMgr::getInstance()->deselectLand(); -	if (gAgent.getAvatarObject() && !gSavedSettings.getBOOL("AutoPilotLocksCamera")) +	if (isAgentAvatarValid() && !gSavedSettings.getBOOL("AutoPilotLocksCamera"))  	{ -		gAgentCamera.setFocusGlobal(gAgentCamera.getFocusTargetGlobal(), gAgent.getAvatarObject()->getID()); +		gAgentCamera.setFocusGlobal(gAgentCamera.getFocusTargetGlobal(), gAgentAvatarp->getID());  	}  	else   	{ @@ -3365,7 +3364,7 @@ class LLSelfStandUp : public view_listener_t  bool enable_standup_self()  { -	bool new_value = gAgent.getAvatarObject() && gAgent.getAvatarObject()->isSitting(); +	bool new_value = isAgentAvatarValid() && gAgentAvatarp->isSitting();  	return new_value;  } @@ -3694,9 +3693,9 @@ class LLLandSit : public view_listener_t  		LLVector3d posGlobal = LLToolPie::getInstance()->getPick().mPosGlobal;  		LLQuaternion target_rot; -		if (gAgent.getAvatarObject()) +		if (isAgentAvatarValid())  		{ -			target_rot = gAgent.getAvatarObject()->getRotation(); +			target_rot = gAgentAvatarp->getRotation();  		}  		else  		{ @@ -4587,13 +4586,9 @@ BOOL sitting_on_selection()  	}  	// Need to determine if avatar is sitting on this object -	LLVOAvatar* avatar = gAgent.getAvatarObject(); -	if (!avatar) -	{ -		return FALSE; -	} +	if (!isAgentAvatarValid()) return FALSE; -	return (avatar->isSitting() && avatar->getRoot() == root_object); +	return (gAgentAvatarp->isSitting() && gAgentAvatarp->getRoot() == root_object);  }  class LLToolsSaveToInventory : public view_listener_t @@ -5846,7 +5841,7 @@ private:  			S32 index = userdata.asInteger();  			LLViewerJointAttachment* attachment_point = NULL;  			if (index > 0) -				attachment_point = get_if_there(gAgent.getAvatarObject()->mAttachmentPoints, index, (LLViewerJointAttachment*)NULL); +				attachment_point = get_if_there(gAgentAvatarp->mAttachmentPoints, index, (LLViewerJointAttachment*)NULL);  			confirm_replace_attachment(0, attachment_point);  		}  		return true; @@ -5867,8 +5862,8 @@ void near_attach_object(BOOL success, void *user_data)  		U8 attachment_id = 0;  		if (attachment)  		{ -			for (LLVOAvatar::attachment_map_t::const_iterator iter = gAgent.getAvatarObject()->mAttachmentPoints.begin(); -				 iter != gAgent.getAvatarObject()->mAttachmentPoints.end(); ++iter) +			for (LLVOAvatar::attachment_map_t::const_iterator iter = gAgentAvatarp->mAttachmentPoints.begin(); +				 iter != gAgentAvatarp->mAttachmentPoints.end(); ++iter)  			{  				if (iter->second == attachment)  				{ @@ -5993,7 +5988,7 @@ class LLAttachmentDetachFromPoint : public view_listener_t  {  	bool handleEvent(const LLSD& user_data)  	{ -		const LLViewerJointAttachment *attachment = get_if_there(gAgent.getAvatarObject()->mAttachmentPoints, user_data.asInteger(), (LLViewerJointAttachment*)NULL); +		const LLViewerJointAttachment *attachment = get_if_there(gAgentAvatarp->mAttachmentPoints, user_data.asInteger(), (LLViewerJointAttachment*)NULL);  		if (attachment->getNumObjects() > 0)  		{  			gMessageSystem->newMessage("ObjectDetach"); @@ -6021,7 +6016,7 @@ static bool onEnableAttachmentLabel(LLUICtrl* ctrl, const LLSD& data)  	LLMenuItemGL* menu = dynamic_cast<LLMenuItemGL*>(ctrl);  	if (menu)  	{ -		const LLViewerJointAttachment *attachment = get_if_there(gAgent.getAvatarObject()->mAttachmentPoints, data["index"].asInteger(), (LLViewerJointAttachment*)NULL); +		const LLViewerJointAttachment *attachment = get_if_there(gAgentAvatarp->mAttachmentPoints, data["index"].asInteger(), (LLViewerJointAttachment*)NULL);  		if (attachment)  		{  			label = data["label"].asString(); @@ -6139,7 +6134,7 @@ class LLAttachmentEnableDrop : public view_listener_t  		if (object && LLSelectMgr::getInstance()->getSelection()->contains(object,SELECT_ALL_TES ))  		{      		S32 attachmentID  = ATTACHMENT_ID_FROM_STATE(object->getState()); -			attachment = get_if_there(gAgent.getAvatarObject()->mAttachmentPoints, attachmentID, (LLViewerJointAttachment*)NULL); +			attachment = get_if_there(gAgentAvatarp->mAttachmentPoints, attachmentID, (LLViewerJointAttachment*)NULL);  			if (attachment)  			{ @@ -6271,8 +6266,8 @@ class LLAttachmentPointFilled : public view_listener_t  	bool handleEvent(const LLSD& user_data)  	{  		bool enable = false; -		LLVOAvatar::attachment_map_t::iterator found_it = gAgent.getAvatarObject()->mAttachmentPoints.find(user_data.asInteger()); -		if (found_it != gAgent.getAvatarObject()->mAttachmentPoints.end()) +		LLVOAvatar::attachment_map_t::iterator found_it = gAgentAvatarp->mAttachmentPoints.find(user_data.asInteger()); +		if (found_it != gAgentAvatarp->mAttachmentPoints.end())  		{  			enable = found_it->second->getNumObjects() > 0;  		} @@ -6468,13 +6463,13 @@ void handle_selected_texture_info(void*)  void handle_test_male(void*)  { -	LLAppearanceManager::instance().wearOutfitByName("Male Shape & Outfit"); +	LLAppearanceMgr::instance().wearOutfitByName("Male Shape & Outfit");  	//gGestureList.requestResetFromServer( TRUE );  }  void handle_test_female(void*)  { -	LLAppearanceManager::instance().wearOutfitByName("Female Shape & Outfit"); +	LLAppearanceMgr::instance().wearOutfitByName("Female Shape & Outfit");  	//gGestureList.requestResetFromServer( FALSE );  } @@ -6489,15 +6484,10 @@ void handle_toggle_pg(void*)  void handle_dump_attachments(void*)  { -	LLVOAvatar* avatar = gAgent.getAvatarObject(); -	if( !avatar ) -	{ -		llinfos << "NO AVATAR" << llendl; -		return; -	} +	if(!isAgentAvatarValid()) return; -	for (LLVOAvatar::attachment_map_t::iterator iter = avatar->mAttachmentPoints.begin();  -		 iter != avatar->mAttachmentPoints.end(); ) +	for (LLVOAvatar::attachment_map_t::iterator iter = gAgentAvatarp->mAttachmentPoints.begin();  +		 iter != gAgentAvatarp->mAttachmentPoints.end(); )  	{  		LLVOAvatar::attachment_map_t::iterator curiter = iter++;  		LLViewerJointAttachment* attachment = curiter->second; @@ -6917,7 +6907,7 @@ void reload_vertex_shader(void *)  void handle_dump_avatar_local_textures(void*)  { -	gAgent.getAvatarObject()->dumpLocalTextures(); +	gAgentAvatarp->dumpLocalTextures();  }  void handle_dump_timers() @@ -6937,86 +6927,83 @@ void handle_debug_avatar_textures(void*)  void handle_grab_texture(void* data)  {  	ETextureIndex tex_index = (ETextureIndex)((intptr_t)data); -	const LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	if (avatarp) -	{ -		// MULTI-WEARABLE: change to support an index -		const LLUUID& asset_id = avatarp->grabLocalTexture(tex_index, 0); -		LL_INFOS("texture") << "Adding baked texture " << asset_id << " to inventory." << llendl; -		LLAssetType::EType asset_type = LLAssetType::AT_TEXTURE; -		LLInventoryType::EType inv_type = LLInventoryType::IT_TEXTURE; -		const LLUUID folder_id = gInventory.findCategoryUUIDForType(LLFolderType::assetTypeToFolderType(asset_type)); -		if(folder_id.notNull()) -		{ -			std::string name = "Unknown"; -			const LLVOAvatarDictionary::TextureEntry *texture_dict = LLVOAvatarDictionary::getInstance()->getTexture(tex_index); -			if (texture_dict->mIsBakedTexture) -			{ -				EBakedTextureIndex baked_index = texture_dict->mBakedTextureIndex; -				name = "Baked " + LLVOAvatarDictionary::getInstance()->getBakedTexture(baked_index)->mNameCapitalized; -			} -			name += " Texture"; - -			LLUUID item_id; -			item_id.generate(); -			LLPermissions perm; -			perm.init(gAgentID, -					  gAgentID, -					  LLUUID::null, -					  LLUUID::null); -			U32 next_owner_perm = PERM_MOVE | PERM_TRANSFER; -			perm.initMasks(PERM_ALL, -						   PERM_ALL, -						   PERM_NONE, -						   PERM_NONE, -						   next_owner_perm); -			time_t creation_date_now = time_corrected(); -			LLPointer<LLViewerInventoryItem> item -				= new LLViewerInventoryItem(item_id, -											folder_id, -											perm, -											asset_id, -											asset_type, -											inv_type, -											name, -											LLStringUtil::null, -											LLSaleInfo::DEFAULT, -											LLInventoryItem::II_FLAGS_NONE, -											creation_date_now); - -			item->updateServer(TRUE); -			gInventory.updateItem(item); -			gInventory.notifyObservers(); - -			// Show the preview panel for textures to let -			// user know that the image is now in inventory. -			LLInventoryPanel *active_panel = LLInventoryPanel::getActiveInventoryPanel(); -			if(active_panel) -			{ -				LLFocusableElement* focus_ctrl = gFocusMgr.getKeyboardFocus(); - -				active_panel->setSelection(item_id, TAKE_FOCUS_NO); -				active_panel->openSelected(); -				//LLFloaterInventory::dumpSelectionInformation((void*)view); -				// restore keyboard focus -				gFocusMgr.setKeyboardFocus(focus_ctrl); -			} -		} -		else -		{ -			llwarns << "Can't find a folder to put it in" << llendl; +	if (!isAgentAvatarValid()) return; + +	// MULTI-WEARABLE: change to support an index +	const LLUUID& asset_id = gAgentAvatarp->grabLocalTexture(tex_index, 0); +	LL_INFOS("texture") << "Adding baked texture " << asset_id << " to inventory." << llendl; +	LLAssetType::EType asset_type = LLAssetType::AT_TEXTURE; +	LLInventoryType::EType inv_type = LLInventoryType::IT_TEXTURE; +	const LLUUID folder_id = gInventory.findCategoryUUIDForType(LLFolderType::assetTypeToFolderType(asset_type)); +	if(folder_id.notNull()) +	{ +		std::string name = "Unknown"; +		const LLVOAvatarDictionary::TextureEntry *texture_dict = LLVOAvatarDictionary::getInstance()->getTexture(tex_index); +		if (texture_dict->mIsBakedTexture) +		{ +			EBakedTextureIndex baked_index = texture_dict->mBakedTextureIndex; +			name = "Baked " + LLVOAvatarDictionary::getInstance()->getBakedTexture(baked_index)->mNameCapitalized; +		} +		name += " Texture"; + +		LLUUID item_id; +		item_id.generate(); +		LLPermissions perm; +		perm.init(gAgentID, +				  gAgentID, +				  LLUUID::null, +				  LLUUID::null); +		U32 next_owner_perm = PERM_MOVE | PERM_TRANSFER; +		perm.initMasks(PERM_ALL, +					   PERM_ALL, +					   PERM_NONE, +					   PERM_NONE, +					   next_owner_perm); +		time_t creation_date_now = time_corrected(); +		LLPointer<LLViewerInventoryItem> item +			= new LLViewerInventoryItem(item_id, +										folder_id, +										perm, +										asset_id, +										asset_type, +										inv_type, +										name, +										LLStringUtil::null, +										LLSaleInfo::DEFAULT, +										LLInventoryItem::II_FLAGS_NONE, +										creation_date_now); + +		item->updateServer(TRUE); +		gInventory.updateItem(item); +		gInventory.notifyObservers(); + +		// Show the preview panel for textures to let +		// user know that the image is now in inventory. +		LLInventoryPanel *active_panel = LLInventoryPanel::getActiveInventoryPanel(); +		if(active_panel) +		{ +			LLFocusableElement* focus_ctrl = gFocusMgr.getKeyboardFocus(); + +			active_panel->setSelection(item_id, TAKE_FOCUS_NO); +			active_panel->openSelected(); +			//LLFloaterInventory::dumpSelectionInformation((void*)view); +			// restore keyboard focus +			gFocusMgr.setKeyboardFocus(focus_ctrl);  		}  	} +	else +	{ +		llwarns << "Can't find a folder to put it in" << llendl; +	}  }  BOOL enable_grab_texture(void* data)  {  	ETextureIndex index = (ETextureIndex)((intptr_t)data); -	const LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	if (avatarp) +	if (isAgentAvatarValid())  	{  		// MULTI-WEARABLE: -		return avatarp->canGrabLocalTexture(index,0); +		return gAgentAvatarp->canGrabLocalTexture(index,0);  	}  	return FALSE;  } @@ -7227,12 +7214,11 @@ void handle_buy_currency_test(void*)  void handle_rebake_textures(void*)  { -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	if (!avatarp) return; +	if (!isAgentAvatarValid()) return;  	// Slam pending upload count to "unstick" things  	bool slam_for_debug = true; -	avatarp->forceBakeAllTextures(slam_for_debug); +	gAgentAvatarp->forceBakeAllTextures(slam_for_debug);  }  void toggle_visibility(void* user_data) diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index c2a78f20e1..85f501b2a1 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -3002,9 +3002,9 @@ void process_teleport_finish(LLMessageSystem* msg, void**)  	gAgent.setRegion(regionp);  	gObjectList.shiftObjects(shift_vector); -	if (gAgent.getAvatarObject()) +	if (isAgentAvatarValid())  	{ -		gAgent.getAvatarObject()->clearChatText(); +		gAgentAvatarp->clearChatText();  		gAgentCamera.slamLookAt(look_at);  	}  	gAgent.setPositionAgent(pos); @@ -3084,8 +3084,7 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**)  	std::string version_channel;  	msg->getString("SimData", "ChannelVersion", version_channel); -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	if (!avatarp) +	if (!isAgentAvatarValid())  	{  		// Could happen if you were immediately god-teleported away on login,  		// maybe other cases.  Continue, but warn. @@ -3139,7 +3138,7 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**)  		// know what you look like.  		gAgent.sendAgentSetAppearance(); -		if (avatarp) +		if (isAgentAvatarValid())  		{  			// Chat the "back" SLURL. (DEV-4907) @@ -3152,9 +3151,9 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**)  			LLNotificationsUtil::add("SystemMessageTip", args);  			// Set the new position -			avatarp->setPositionAgent(agent_pos); -			avatarp->clearChat(); -			avatarp->slamPosition(); +			gAgentAvatarp->setPositionAgent(agent_pos); +			gAgentAvatarp->clearChat(); +			gAgentAvatarp->slamPosition();  		}  	}  	else @@ -3214,9 +3213,9 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**)  		gAgent.clearBusy();  	} -	if (avatarp) +	if (isAgentAvatarValid())  	{ -		avatarp->mFootPlane.clearVec(); +		gAgentAvatarp->mFootPlane.clearVec();  	}  	// send walk-vs-run status @@ -4031,7 +4030,7 @@ void process_avatar_animation(LLMessageSystem *mesgsys, void **user_data)  	//clear animation flags  	avatarp = (LLVOAvatar *)gObjectList.findObject(uuid); -	if (!avatarp) +	if (!isAgentAvatarValid())  	{  		// no agent by this ID...error?  		LL_WARNS("Messaging") << "Received animation state for unknown avatar" << uuid << LL_ENDL; @@ -4117,7 +4116,7 @@ void process_avatar_appearance(LLMessageSystem *mesgsys, void **user_data)  	mesgsys->getUUIDFast(_PREHASH_Sender, _PREHASH_ID, uuid);  	LLVOAvatar* avatarp = (LLVOAvatar *)gObjectList.findObject(uuid); -	if( avatarp ) +	if (avatarp)  	{  		avatarp->processAvatarAppearance( mesgsys );  	} @@ -4165,9 +4164,7 @@ void process_avatar_sit_response(LLMessageSystem *mesgsys, void **user_data)  	BOOL force_mouselook;  	mesgsys->getBOOLFast(_PREHASH_SitTransform, _PREHASH_ForceMouselook, force_mouselook); -	LLVOAvatar* avatar = gAgent.getAvatarObject(); - -	if (avatar && dist_vec_squared(camera_eye, camera_at) > 0.0001f) +	if (isAgentAvatarValid() && dist_vec_squared(camera_eye, camera_at) > 0.0001f)  	{  		gAgentCamera.setSitCamera(sitObjectID, camera_eye, camera_at);  	} @@ -4178,7 +4175,7 @@ void process_avatar_sit_response(LLMessageSystem *mesgsys, void **user_data)  	if (object)  	{  		LLVector3 sit_spot = object->getPositionAgent() + (sitPosition * object->getRotation()); -		if (!use_autopilot || (avatar && avatar->isSitting() && avatar->getRoot() == object->getRoot())) +		if (!use_autopilot || isAgentAvatarValid() && gAgentAvatarp->isSitting() && gAgentAvatarp->getRoot() == object->getRoot())  		{  			//we're already sitting on this object, so don't autopilot  		} diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index abcb7e5452..8860b734bb 100644 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -134,7 +134,15 @@ LLViewerObject *LLViewerObject::createObject(const LLUUID &id, const LLPCode pco  	{  		if (id == gAgentID)  		{ -			res = new LLVOAvatarSelf(id, pcode, regionp); +			if (!gAgentAvatarp) +			{ +				gAgentAvatarp = new LLVOAvatarSelf(id, pcode, regionp); +			} +			else  +			{ +				gAgentAvatarp->updateRegion(regionp); +			} +			res = gAgentAvatarp;  		}  		else  		{ @@ -223,7 +231,7 @@ LLViewerObject::LLViewerObject(const LLUUID &id, const LLPCode pcode, LLViewerRe  	mClickAction(0),  	mAttachmentItemID(LLUUID::null)  { -	if(!is_global) +	if (!is_global)  	{  		llassert(mRegionp);  	} @@ -235,7 +243,7 @@ LLViewerObject::LLViewerObject(const LLUUID &id, const LLPCode pcode, LLViewerRe  	mPositionRegion = LLVector3(0.f, 0.f, 0.f); -	if(!is_global) +	if (!is_global && mRegionp)  	{  		mPositionAgent = mRegionp->getOriginAgent();  	} @@ -377,11 +385,10 @@ void LLViewerObject::markDead()  		if (flagAnimSource())  		{ -			LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -			if (avatarp && !avatarp->isDead()) +			if (isAgentAvatarValid())  			{  				// stop motions associated with this object -				avatarp->stopMotionFromSource(mID); +				gAgentAvatarp->stopMotionFromSource(mID);  			}  		} @@ -4920,7 +4927,6 @@ void LLViewerObject::setIncludeInSearch(bool include_in_search)  void LLViewerObject::setRegion(LLViewerRegion *regionp)  { -	llassert(regionp);  	mLatestRecvPacketID = 0;  	mRegionp = regionp; diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp index 64a7b2166b..5e0bd5b811 100644 --- a/indra/newview/llviewerobjectlist.cpp +++ b/indra/newview/llviewerobjectlist.cpp @@ -474,7 +474,6 @@ void LLViewerObjectList::processObjectUpdate(LLMessageSystem *mesgsys,  			if (objectp->getRegion() != regionp)  			{    // Object changed region, so update it -				objectp->setRegion(regionp);  				objectp->updateRegion(regionp); // for LLVOAvatar  			}  		} @@ -895,6 +894,13 @@ void LLViewerObjectList::removeDrawable(LLDrawable* drawablep)  BOOL LLViewerObjectList::killObject(LLViewerObject *objectp)  { +	// Don't ever kill gAgentAvatarp, just mark it as null region instead. +	if (objectp == gAgentAvatarp) +	{ +		objectp->setRegion(NULL); +		return FALSE; +	} +  	// When we're killing objects, all we do is mark them as dead.  	// We clean up the dead objects later. @@ -1210,11 +1216,10 @@ void LLViewerObjectList::generatePickList(LLCamera &camera)  		}  		// add all hud objects to pick list -		LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -		if (avatarp) +		if (isAgentAvatarValid())  		{ -			for (LLVOAvatar::attachment_map_t::iterator iter = avatarp->mAttachmentPoints.begin();  -				 iter != avatarp->mAttachmentPoints.end(); ) +			for (LLVOAvatar::attachment_map_t::iterator iter = gAgentAvatarp->mAttachmentPoints.begin();  +				 iter != gAgentAvatarp->mAttachmentPoints.end(); )  			{  				LLVOAvatar::attachment_map_t::iterator curiter = iter++;  				LLViewerJointAttachment* attachment = curiter->second; diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 6d2bbb27ee..85c961f34a 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -365,9 +365,9 @@ public:  			agent_center_text = llformat("AgentCenter  %f %f %f",  										 (F32)(tvector.mdV[VX]), (F32)(tvector.mdV[VY]), (F32)(tvector.mdV[VZ])); -			if (gAgent.getAvatarObject()) +			if (isAgentAvatarValid())  			{ -				tvector = gAgent.getPosGlobalFromAgent(gAgent.getAvatarObject()->mRoot.getWorldPosition()); +				tvector = gAgent.getPosGlobalFromAgent(gAgentAvatarp->mRoot.getWorldPosition());  				agent_root_center_text = llformat("AgentRootCenter %f %f %f",  												  (F32)(tvector.mdV[VX]), (F32)(tvector.mdV[VY]), (F32)(tvector.mdV[VZ]));  			} @@ -2272,7 +2272,7 @@ BOOL LLViewerWindow::handleKey(KEY key, MASK mask)  	}  	// Try for a new-format gesture -	if (LLGestureManager::instance().triggerGesture(key, mask)) +	if (LLGestureMgr::instance().triggerGesture(key, mask))  	{  		return TRUE;  	} @@ -3150,7 +3150,7 @@ void LLViewerWindow::renderSelections( BOOL for_gl_pick, BOOL pick_parcel_walls,  		// setup HUD render  		if (selection->getSelectType() == SELECT_TYPE_HUD && LLSelectMgr::getInstance()->getSelection()->getObjectCount())  		{ -			LLBBox hud_bbox = gAgent.getAvatarObject()->getHUDBBox(); +			LLBBox hud_bbox = gAgentAvatarp->getHUDBBox();  			// set up transform to encompass bounding box of HUD  			glMatrixMode(GL_PROJECTION); diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 54379dece3..c400e8510e 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -755,11 +755,6 @@ LLVOAvatar::~LLVOAvatar()  {  	lldebugs << "LLVOAvatar Destructor (0x" << this << ") id:" << mID << llendl; -	if (isSelf()) -	{ -		gAgent.setAvatarObject(NULL); -	} -  	mRoot.removeAllChildren();  	deleteAndClearArray(mSkeleton); @@ -965,15 +960,14 @@ void LLVOAvatar::dumpBakedStatus()  //static  void LLVOAvatar::restoreGL()  { -	LLVOAvatar* self = gAgent.getAvatarObject(); -	if (!self) -		return; -	self->setCompositeUpdatesEnabled(TRUE); -	for (U32 i = 0; i < self->mBakedTextureDatas.size(); i++) +	if (!isAgentAvatarValid()) return; + +	gAgentAvatarp->setCompositeUpdatesEnabled(TRUE); +	for (U32 i = 0; i < gAgentAvatarp->mBakedTextureDatas.size(); i++)  	{ -		self->invalidateComposite(self->mBakedTextureDatas[i].mTexLayerSet, FALSE); +		gAgentAvatarp->invalidateComposite(gAgentAvatarp->mBakedTextureDatas[i].mTexLayerSet, FALSE);  	} -	self->updateMeshTextures(); +	gAgentAvatarp->updateMeshTextures();  }  //static @@ -2085,7 +2079,7 @@ U32 LLVOAvatar::processUpdateMessage(LLMessageSystem *mesgsys,  	if(retval & LLViewerObject::INVALID_UPDATE)  	{ -		if(this == gAgent.getAvatarObject()) +		if (isSelf())  		{  			//tell sim to cancel this update  			gAgent.teleportViaLocation(gAgent.getPositionGlobal()); @@ -2254,7 +2248,7 @@ void LLVOAvatar::idleUpdateVoiceVisualizer(bool voice_enabled)  					else	{ llinfos << "oops - CurrentGesticulationLevel can be only 0, 1, or 2"  << llendl; }  					// this is the call that Karl S. created for triggering gestures from within the code. -					LLGestureManager::instance().triggerAndReviseString( gestureString ); +					LLGestureMgr::instance().triggerAndReviseString( gestureString );  				}  			} @@ -2547,7 +2541,7 @@ void LLVOAvatar::idleUpdateLoadingEffect()  				llinfos << "self isFullyLoaded, first_fully_visible" << llendl;  				first_fully_visible = false; -				LLAppearanceManager::instance().onFirstFullyVisible(); +				LLAppearanceMgr::instance().onFirstFullyVisible();  			}  		}  		if (isFullyLoaded()) @@ -6859,8 +6853,7 @@ void LLVOAvatar::useBakedTexture( const LLUUID& id )  // static  void LLVOAvatar::dumpArchetypeXML( void* )  { -	LLVOAvatar* avatar = gAgent.getAvatarObject(); -	LLAPRFile outfile ; +	LLAPRFile outfile;  	outfile.open(gDirUtilp->getExpandedFilename(LL_PATH_CHARACTER,"new archetype.xml"), LL_APR_WB );  	apr_file_t* file = outfile.getFileHandle() ;  	if (!file) @@ -6878,7 +6871,7 @@ void LLVOAvatar::dumpArchetypeXML( void* )  		const std::string& wearable_name = LLWearableDictionary::getTypeName((EWearableType)type);  		apr_file_printf( file, "\n\t\t<!-- wearable: %s -->\n", wearable_name.c_str() ); -		for (LLVisualParam* param = avatar->getFirstVisualParam(); param; param = avatar->getNextVisualParam()) +		for (LLVisualParam* param = gAgentAvatarp->getFirstVisualParam(); param; param = gAgentAvatarp->getNextVisualParam())  		{  			LLViewerVisualParam* viewer_param = (LLViewerVisualParam*)param;  			if( (viewer_param->getWearableType() == type) &&  @@ -6894,7 +6887,7 @@ void LLVOAvatar::dumpArchetypeXML( void* )  			if (LLVOAvatarDictionary::getTEWearableType((ETextureIndex)te) == type)  			{  				// MULTIPLE_WEARABLES: extend to multiple wearables? -				LLViewerTexture* te_image = avatar->getImage((ETextureIndex)te, 0); +				LLViewerTexture* te_image = ((LLVOAvatar *)(gAgentAvatarp))->getImage((ETextureIndex)te, 0);  				if( te_image )  				{  					std::string uuid_str; diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp index 15be6b23b3..d58be21910 100644 --- a/indra/newview/llvoavatarself.cpp +++ b/indra/newview/llvoavatarself.cpp @@ -67,6 +67,14 @@  #include <boost/lexical_cast.hpp> +LLVOAvatarSelf *gAgentAvatarp = NULL; +BOOL isAgentAvatarValid() +{ +	return (gAgentAvatarp && +			(gAgentAvatarp->getRegion() != NULL) && +			(!gAgentAvatarp->isDead())); +} +  using namespace LLVOAvatarDefines;  /********************************************************************************* @@ -133,7 +141,6 @@ LLVOAvatarSelf::LLVOAvatarSelf(const LLUUID& id,  	mLastRegionHandle(0),  	mRegionCrossingCount(0)  { -	gAgent.setAvatarObject(this);  	gAgentWearables.setAvatarObject(this);  	lldebugs << "Marking avatar as self " << id << llendl; @@ -513,12 +520,6 @@ BOOL LLVOAvatarSelf::buildMenus()  LLVOAvatarSelf::~LLVOAvatarSelf()  { -	// gAgents pointer might have been set to a different Avatar Self, don't get rid of it if so. -	if (gAgent.getAvatarObject() == this) -	{ -		gAgent.setAvatarObject(NULL); -		gAgentWearables.setAvatarObject(NULL); -	}  	delete mScreenp;  	mScreenp = NULL;  } @@ -611,6 +612,17 @@ BOOL LLVOAvatarSelf::updateCharacter(LLAgent &agent)  }  // virtual +BOOL LLVOAvatarSelf::idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time) +{ +	if (!isAgentAvatarValid()) +	{ +		return TRUE; +	} +	LLVOAvatar::idleUpdate(agent, world, time); +	return TRUE; +} + +// virtual  LLJoint *LLVOAvatarSelf::getJoint(const std::string &name)  {  	if (mScreenp) @@ -621,7 +633,8 @@ LLJoint *LLVOAvatarSelf::getJoint(const std::string &name)  	return LLVOAvatar::getJoint(name);  } -/*virtual*/ BOOL LLVOAvatarSelf::setVisualParamWeight(LLVisualParam *which_param, F32 weight, BOOL upload_bake ) +// virtual +BOOL LLVOAvatarSelf::setVisualParamWeight(LLVisualParam *which_param, F32 weight, BOOL upload_bake )  {  	if (!which_param)  	{ @@ -631,7 +644,8 @@ LLJoint *LLVOAvatarSelf::getJoint(const std::string &name)  	return setParamWeight(param,weight,upload_bake);  } -/*virtual*/ BOOL LLVOAvatarSelf::setVisualParamWeight(const char* param_name, F32 weight, BOOL upload_bake ) +// virtual +BOOL LLVOAvatarSelf::setVisualParamWeight(const char* param_name, F32 weight, BOOL upload_bake )  {  	if (!param_name)  	{ @@ -641,7 +655,8 @@ LLJoint *LLVOAvatarSelf::getJoint(const std::string &name)  	return setParamWeight(param,weight,upload_bake);  } -/*virtual*/ BOOL LLVOAvatarSelf::setVisualParamWeight(S32 index, F32 weight, BOOL upload_bake ) +// virtual +BOOL LLVOAvatarSelf::setVisualParamWeight(S32 index, F32 weight, BOOL upload_bake )  {  	LLViewerVisualParam *param = (LLViewerVisualParam*) LLCharacter::getVisualParam(index);  	return setParamWeight(param,weight,upload_bake); @@ -777,7 +792,8 @@ void LLVOAvatarSelf::removeMissingBakedTextures()  //virtual  void LLVOAvatarSelf::updateRegion(LLViewerRegion *regionp)  { -	if (regionp->getHandle() != mLastRegionHandle) +	setRegion(regionp); +	if (!regionp || (regionp->getHandle() != mLastRegionHandle))  	{  		if (mLastRegionHandle != 0)  		{ @@ -791,7 +807,10 @@ void LLVOAvatarSelf::updateRegion(LLViewerRegion *regionp)  			max = llmax(delta, max);  			LLViewerStats::getInstance()->setStat(LLViewerStats::ST_CROSSING_MAX, max);  		} -		mLastRegionHandle = regionp->getHandle(); +		if (regionp) +		{ +			mLastRegionHandle = regionp->getHandle(); +		}  	}  	mRegionCrossingTimer.reset();  } @@ -1036,7 +1055,7 @@ const LLViewerJointAttachment *LLVOAvatarSelf::attachObject(LLViewerObject *view  	if (attachment->isObjectAttached(viewer_object))  	{  		const LLUUID& attachment_id = viewer_object->getItemID(); -		LLAppearanceManager::instance().registerAttachment(attachment_id); +		LLAppearanceMgr::instance().registerAttachment(attachment_id);  	}  	return attachment; @@ -1069,13 +1088,13 @@ BOOL LLVOAvatarSelf::detachObject(LLViewerObject *viewer_object)  		// Make sure the inventory is in sync with the avatar.  		// Update COF contents, don't trigger appearance update. -		if (gAgent.getAvatarObject() == NULL) +		if (!isAgentAvatarValid())  		{  			llinfos << "removeItemLinks skipped, avatar is under destruction" << llendl;  		}  		else  		{ -			LLAppearanceManager::instance().unregisterAttachment(attachment_id); +			LLAppearanceMgr::instance().unregisterAttachment(attachment_id);  		}  		return TRUE; @@ -1668,7 +1687,7 @@ void LLVOAvatarSelf::onLocalTextureLoaded(BOOL success, LLViewerFetchedTexture *  void LLVOAvatarSelf::dumpTotalLocalTextureByteCount()  {  	S32 gl_bytes = 0; -	gAgent.getAvatarObject()->getLocalTextureByteCount(&gl_bytes); +	gAgentAvatarp->getLocalTextureByteCount(&gl_bytes);  	llinfos << "Total Avatar LocTex GL:" << (gl_bytes/1024) << "KB" << llendl;  } @@ -1925,9 +1944,7 @@ void LLVOAvatarSelf::processRebakeAvatarTextures(LLMessageSystem* msg, void**)  {  	LLUUID texture_id;  	msg->getUUID("TextureData", "TextureID", texture_id); - -	LLVOAvatarSelf* self = gAgent.getAvatarObject(); -	if (!self) return; +	if (!isAgentAvatarValid()) return;  	// If this is a texture corresponding to one of our baked entries,   	// just rebake that layer set. @@ -1944,13 +1961,13 @@ void LLVOAvatarSelf::processRebakeAvatarTextures(LLMessageSystem* msg, void**)  		const LLVOAvatarDictionary::TextureEntry *texture_dict = iter->second;  		if (texture_dict->mIsBakedTexture)  		{ -			if (texture_id == self->getTEImage(index)->getID()) +			if (texture_id == gAgentAvatarp->getTEImage(index)->getID())  			{ -				LLTexLayerSet* layer_set = self->getLayerSet(index); +				LLTexLayerSet* layer_set = gAgentAvatarp->getLayerSet(index);  				if (layer_set)  				{  					llinfos << "TAT: rebake - matched entry " << (S32)index << llendl; -					self->invalidateComposite(layer_set, TRUE); +					gAgentAvatarp->invalidateComposite(layer_set, TRUE);  					found = TRUE;  					LLViewerStats::getInstance()->incStat(LLViewerStats::ST_TEX_REBAKES);  				} @@ -1961,12 +1978,12 @@ void LLVOAvatarSelf::processRebakeAvatarTextures(LLMessageSystem* msg, void**)  	// If texture not found, rebake all entries.  	if (!found)  	{ -		self->forceBakeAllTextures(); +		gAgentAvatarp->forceBakeAllTextures();  	}  	else  	{  		// Not sure if this is necessary, but forceBakeAllTextures() does it. -		self->updateMeshTextures(); +		gAgentAvatarp->updateMeshTextures();  	}  } @@ -2046,10 +2063,9 @@ void LLVOAvatarSelf::onCustomizeStart()  // static  void LLVOAvatarSelf::onCustomizeEnd()  { -	LLVOAvatarSelf *avatarp = gAgent.getAvatarObject(); -	if (avatarp) +	if (isAgentAvatarValid())  	{ -		avatarp->invalidateAll(); +		gAgentAvatarp->invalidateAll();  	}  } diff --git a/indra/newview/llvoavatarself.h b/indra/newview/llvoavatarself.h index 9514abc5bc..3c7ec04fab 100644 --- a/indra/newview/llvoavatarself.h +++ b/indra/newview/llvoavatarself.h @@ -55,7 +55,7 @@ public:  	LLVOAvatarSelf(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp);  	virtual 				~LLVOAvatarSelf();  	virtual void			markDead(); -	virtual void 		initInstance(); // Called after construction to initialize the class. +	virtual void 			initInstance(); // Called after construction to initialize the class.  protected:  	/*virtual*/ BOOL		loadAvatar();  	BOOL					loadAvatarSelf(); @@ -77,6 +77,7 @@ protected:  	//--------------------------------------------------------------------  public:  	/*virtual*/ void 		updateRegion(LLViewerRegion *regionp); +	/*virtual*/ BOOL   	 	idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time);  	//--------------------------------------------------------------------  	// LLCharacter interface and related @@ -333,4 +334,8 @@ public:  }; +extern LLVOAvatarSelf *gAgentAvatarp; + +BOOL isAgentAvatarValid(); +  #endif // LL_VO_AVATARSELF_H diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp index 3bfb898a1e..d8319f3cc3 100644 --- a/indra/newview/llvoiceclient.cpp +++ b/indra/newview/llvoiceclient.cpp @@ -5948,12 +5948,10 @@ void LLVoiceClient::enforceTether(void)  void LLVoiceClient::updatePosition(void)  { -	  	if(gVoiceClient)  	{ -		LLVOAvatarSelf *avatarp = gAgent.getAvatarObject();  		LLViewerRegion *region = gAgent.getRegion(); -		if(region && avatarp) +		if(region && isAgentAvatarValid())  		{  			LLMatrix3 rot;  			LLVector3d pos; @@ -5971,9 +5969,9 @@ void LLVoiceClient::updatePosition(void)  					rot);				// rotation matrix  			// Send the current avatar position to the voice code -			rot = avatarp->getRootJoint()->getWorldRotation().getMatrix3(); +			rot = gAgentAvatarp->getRootJoint()->getWorldRotation().getMatrix3(); -			pos = avatarp->getPositionGlobal(); +			pos = gAgentAvatarp->getPositionGlobal();  			// TODO: Can we get the head offset from outside the LLVOAvatar?  //			pos += LLVector3d(mHeadOffset);  			pos += LLVector3d(0.f, 0.f, 1.f); diff --git a/indra/newview/llwearable.cpp b/indra/newview/llwearable.cpp index 589099673d..63f99273fe 100644 --- a/indra/newview/llwearable.cpp +++ b/indra/newview/llwearable.cpp @@ -62,13 +62,12 @@ class LLOverrideBakedTextureUpdate  public:  	LLOverrideBakedTextureUpdate(bool temp_state)  	{ -		mAvatar = gAgent.getAvatarObject();  		U32 num_bakes = (U32) LLVOAvatarDefines::BAKED_NUM_INDICES;  		for( U32 index = 0; index < num_bakes; ++index )  		{ -			composite_enabled[index] = mAvatar->isCompositeUpdateEnabled(index); +			composite_enabled[index] = gAgentAvatarp->isCompositeUpdateEnabled(index);  		} -		mAvatar->setCompositeUpdatesEnabled(temp_state); +		gAgentAvatarp->setCompositeUpdatesEnabled(temp_state);  	}  	~LLOverrideBakedTextureUpdate() @@ -76,13 +75,11 @@ public:  		U32 num_bakes = (U32)LLVOAvatarDefines::BAKED_NUM_INDICES;		  		for( U32 index = 0; index < num_bakes; ++index )  		{ -			mAvatar->setCompositeUpdatesEnabled(index, composite_enabled[index]); -		}		 +			gAgentAvatarp->setCompositeUpdatesEnabled(index, composite_enabled[index]); +		}  	} -  private:  	bool composite_enabled[LLVOAvatarDefines::BAKED_NUM_INDICES]; -	LLVOAvatarSelf *mAvatar;  };  // Private local functions @@ -205,10 +202,9 @@ BOOL LLWearable::exportFile(LLFILE* file) const  void LLWearable::createVisualParams()  { -	LLVOAvatar* avatar = gAgent.getAvatarObject(); -	for (LLViewerVisualParam* param = (LLViewerVisualParam*) avatar->getFirstVisualParam();  +	for (LLViewerVisualParam* param = (LLViewerVisualParam*) gAgentAvatarp->getFirstVisualParam();   		 param; -		 param = (LLViewerVisualParam*) avatar->getNextVisualParam()) +		 param = (LLViewerVisualParam*) gAgentAvatarp->getNextVisualParam())  	{  		if (param->getWearableType() == mType)  		{ @@ -228,7 +224,7 @@ void LLWearable::createVisualParams()  		param->resetDrivenParams();  		if(!param->linkDrivenParams(boost::bind(wearable_function,(LLWearable*)this, _1), false))  		{ -			if( !param->linkDrivenParams(boost::bind(avatar_function,(LLVOAvatarSelf*)avatar,_1 ), true)) +			if( !param->linkDrivenParams(boost::bind(avatar_function,gAgentAvatarp,_1 ), true))  			{  				llwarns << "could not link driven params for wearable " << getName() << " id: " << param->getID() << llendl;  				continue; @@ -464,12 +460,7 @@ BOOL LLWearable::importFile( LLFILE* file )  // since this wearable was created.  BOOL LLWearable::isOldVersion() const  { -	LLVOAvatar* avatar = gAgent.getAvatarObject(); -	llassert( avatar ); -	if( !avatar ) -	{ -		return FALSE; -	} +	if (!isAgentAvatarValid()) return FALSE;  	if( LLWearable::sCurrentDefinitionVersion < mDefinitionVersion )  	{ @@ -483,9 +474,9 @@ BOOL LLWearable::isOldVersion() const  	}  	S32 param_count = 0; -	for( LLViewerVisualParam* param = (LLViewerVisualParam*) avatar->getFirstVisualParam();  +	for( LLViewerVisualParam* param = (LLViewerVisualParam*) gAgentAvatarp->getFirstVisualParam();   		param; -		param = (LLViewerVisualParam*) avatar->getNextVisualParam() ) +		param = (LLViewerVisualParam*) gAgentAvatarp->getNextVisualParam() )  	{  		if( (param->getWearableType() == mType) && (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE ) )  		{ @@ -531,17 +522,11 @@ BOOL LLWearable::isOldVersion() const  // only if those values are the same as the defaults.  BOOL LLWearable::isDirty() const  { -	LLVOAvatar* avatar = gAgent.getAvatarObject(); -	llassert( avatar ); -	if( !avatar ) -	{ -		return FALSE; -	} - +	if (!isAgentAvatarValid()) return FALSE; -	for( LLViewerVisualParam* param = (LLViewerVisualParam*) avatar->getFirstVisualParam();  +	for( LLViewerVisualParam* param = (LLViewerVisualParam*) gAgentAvatarp->getFirstVisualParam();   		param; -		param = (LLViewerVisualParam*) avatar->getNextVisualParam() ) +		param = (LLViewerVisualParam*) gAgentAvatarp->getNextVisualParam() )  	{  		if( (param->getWearableType() == mType)   			&& (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE )  @@ -602,14 +587,9 @@ BOOL LLWearable::isDirty() const  void LLWearable::setParamsToDefaults()  { -	LLVOAvatar* avatar = gAgent.getAvatarObject(); -	llassert( avatar ); -	if( !avatar ) -	{ -		return; -	} +	if (!isAgentAvatarValid()) return; -	for( LLVisualParam* param = avatar->getFirstVisualParam(); param; param = avatar->getNextVisualParam() ) +	for( LLVisualParam* param = gAgentAvatarp->getFirstVisualParam(); param; param = gAgentAvatarp->getNextVisualParam() )  	{  		if( (((LLViewerVisualParam*)param)->getWearableType() == mType ) && (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE ) )  		{ @@ -645,18 +625,12 @@ void LLWearable::setTexturesToDefaults()  // Updates the user's avatar's appearance  void LLWearable::writeToAvatar()  { -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	llassert(avatarp); -	if(!avatarp) -	{ -		llerrs << "could not get avatar object to write to for wearable " << this->getName() << llendl; -		return; -	} +	if (!isAgentAvatarValid()) return; -	ESex old_sex = avatarp->getSex(); +	ESex old_sex = gAgentAvatarp->getSex();  	// Pull params -	for( LLVisualParam* param = avatarp->getFirstVisualParam(); param; param = avatarp->getNextVisualParam() ) +	for( LLVisualParam* param = gAgentAvatarp->getFirstVisualParam(); param; param = gAgentAvatarp->getNextVisualParam() )  	{  		// cross-wearable parameters are not authoritative, as they are driven by a different wearable. So don't copy the values to the  		// avatar object if cross wearable. Cross wearable params get their values from the avatar, they shouldn't write the other way. @@ -665,7 +639,7 @@ void LLWearable::writeToAvatar()  			S32 param_id = param->getID();  			F32 weight = getVisualParamWeight(param_id); -			avatarp->setVisualParamWeight( param_id, weight, FALSE ); +			gAgentAvatarp->setVisualParamWeight( param_id, weight, FALSE );  		}  	} @@ -686,14 +660,14 @@ void LLWearable::writeToAvatar()  			}  			LLViewerTexture* image = LLViewerTextureManager::getFetchedTexture( image_id, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE );  			// MULTI-WEARABLE: replace hard-coded 0 -			avatarp->setLocalTextureTE(te, image, 0); +			gAgentAvatarp->setLocalTextureTE(te, image, 0);  		}  	} -	ESex new_sex = avatarp->getSex(); +	ESex new_sex = gAgentAvatarp->getSex();  	if( old_sex != new_sex )  	{ -		avatarp->updateSexDependentLayerSets( FALSE ); +		gAgentAvatarp->updateSexDependentLayerSets( FALSE );  	}	  //	if( upload_bake ) @@ -707,12 +681,7 @@ void LLWearable::writeToAvatar()  // static   void LLWearable::removeFromAvatar( EWearableType type, BOOL upload_bake )  { -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	llassert(avatarp); -	if(!avatarp) -	{ -		return; -	} +	if (!isAgentAvatarValid()) return;  	// You can't just remove body parts.  	if( (type == WT_SHAPE) || @@ -724,12 +693,12 @@ void LLWearable::removeFromAvatar( EWearableType type, BOOL upload_bake )  	}  	// Pull params -	for( LLVisualParam* param = avatarp->getFirstVisualParam(); param; param = avatarp->getNextVisualParam() ) +	for( LLVisualParam* param = gAgentAvatarp->getFirstVisualParam(); param; param = gAgentAvatarp->getNextVisualParam() )  	{  		if( (((LLViewerVisualParam*)param)->getWearableType() == type) && (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE ) )  		{  			S32 param_id = param->getID(); -			avatarp->setVisualParamWeight( param_id, param->getDefaultWeight(), upload_bake ); +			gAgentAvatarp->setVisualParamWeight( param_id, param->getDefaultWeight(), upload_bake );  		}  	} @@ -738,8 +707,8 @@ void LLWearable::removeFromAvatar( EWearableType type, BOOL upload_bake )  		gFloaterCustomize->setWearable(type, NULL, PERM_ALL, TRUE);  	} -	avatarp->updateVisualParams(); -	avatarp->wearableUpdated(type, TRUE); +	gAgentAvatarp->updateVisualParams(); +	gAgentAvatarp->wearableUpdated(type, TRUE);  //	if( upload_bake )  //	{ @@ -751,12 +720,7 @@ void LLWearable::removeFromAvatar( EWearableType type, BOOL upload_bake )  // Definition version is current: removes obsolete enties and creates default values for new ones.  void LLWearable::copyDataFrom(const LLWearable* src)  { -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	llassert(avatarp); -	if(!avatarp) -	{ -		return; -	} +	if (!isAgentAvatarValid()) return;  	mDefinitionVersion = LLWearable::sCurrentDefinitionVersion; @@ -769,9 +733,9 @@ void LLWearable::copyDataFrom(const LLWearable* src)  	mSavedVisualParamMap.clear();  	// Deep copy of mVisualParamMap (copies only those params that are current, filling in defaults where needed) -	for (LLViewerVisualParam* param = (LLViewerVisualParam*) avatarp->getFirstVisualParam();  +	for (LLViewerVisualParam* param = (LLViewerVisualParam*) gAgentAvatarp->getFirstVisualParam();   		param; -		param = (LLViewerVisualParam*) avatarp->getNextVisualParam() ) +		param = (LLViewerVisualParam*) gAgentAvatarp->getNextVisualParam() )  	{  		if( (param->getWearableType() == mType) )  		{ @@ -876,14 +840,12 @@ void LLWearable::addVisualParam(LLVisualParam *param)  void LLWearable::setVisualParams()  { -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -  	for (visual_param_index_map_t::const_iterator iter = mVisualParamIndexMap.begin(); iter != mVisualParamIndexMap.end(); iter++)  	{  		S32 id = iter->first;  		LLVisualParam *wearable_param = iter->second;  		F32 value = wearable_param->getWeight(); -		avatarp->setVisualParamWeight(id, value, FALSE); +		gAgentAvatarp->setVisualParamWeight(id, value, FALSE);  	}  } @@ -1024,8 +986,7 @@ BOOL LLWearable::isOnTop() const  void LLWearable::createLayers(S32 te)  { -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	LLTexLayerSet *layer_set = avatarp->getLayerSet((ETextureIndex)te); +	LLTexLayerSet *layer_set = gAgentAvatarp->getLayerSet((ETextureIndex)te);  	if (layer_set)  	{  		layer_set->cloneTemplates(mTEMap[te], (ETextureIndex)te, this); @@ -1123,10 +1084,9 @@ void LLWearable::destroyTextures()  void LLWearable::pullCrossWearableValues()  {  	// scan through all of the avatar's visual parameters -	LLVOAvatar* avatar = gAgent.getAvatarObject(); -	for (LLViewerVisualParam* param = (LLViewerVisualParam*) avatar->getFirstVisualParam();  +	for (LLViewerVisualParam* param = (LLViewerVisualParam*) gAgentAvatarp->getFirstVisualParam();   		 param; -		 param = (LLViewerVisualParam*) avatar->getNextVisualParam()) +		 param = (LLViewerVisualParam*) gAgentAvatarp->getNextVisualParam())  	{  		if( param )  		{ diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 685be043fc..4ca251af3e 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -3856,15 +3856,14 @@ void LLPipeline::renderForSelect(std::set<LLViewerObject*>& objects, BOOL render  	}  	// pick HUD objects -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	if (avatarp && sShowHUDAttachments) +	if (isAgentAvatarValid() && sShowHUDAttachments)  	{  		glh::matrix4f save_proj(glh_get_current_projection());  		glh::matrix4f save_model(glh_get_current_modelview());  		setup_hud_matrices(screen_rect); -		for (LLVOAvatar::attachment_map_t::iterator iter = avatarp->mAttachmentPoints.begin();  -			 iter != avatarp->mAttachmentPoints.end(); ) +		for (LLVOAvatar::attachment_map_t::iterator iter = gAgentAvatarp->mAttachmentPoints.begin();  +			 iter != gAgentAvatarp->mAttachmentPoints.end(); )  		{  			LLVOAvatar::attachment_map_t::iterator curiter = iter++;  			LLViewerJointAttachment* attachment = curiter->second; @@ -3964,9 +3963,9 @@ void LLPipeline::rebuildPools()  		max_count--;  	} -	if (gAgent.getAvatarObject()) +	if (isAgentAvatarValid())  	{ -		gAgent.getAvatarObject()->rebuildHUD(); +		gAgentAvatarp->rebuildHUD();  	}  } @@ -4598,8 +4597,8 @@ void LLPipeline::setupHWLights(LLDrawPool* pool)  		glLightfv(gllight, GL_SPECULAR, LLColor4::black.mV);  	} -	if (gAgent.getAvatarObject() && -		gAgent.getAvatarObject()->mSpecialRenderMode == 3) +	if (isAgentAvatarValid() && +		gAgentAvatarp->mSpecialRenderMode == 3)  	{  		LLColor4  light_color = LLColor4::white;  		light_color.mV[3] = 0.0f; @@ -4708,15 +4707,13 @@ void LLPipeline::enableLightsDynamic()  		glColor4f(0.f, 0.f, 0.f, 1.f); // no local lighting by default  	} -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); - -	if (avatarp && getLightingDetail() <= 0) +	if (isAgentAvatarValid() && getLightingDetail() <= 0)  	{ -		if (avatarp->mSpecialRenderMode == 0) // normal +		if (gAgentAvatarp->mSpecialRenderMode == 0) // normal  		{  			gPipeline.enableLightsAvatar();  		} -		else if (avatarp->mSpecialRenderMode >= 1)  // anim preview +		else if (gAgentAvatarp->mSpecialRenderMode >= 1)  // anim preview  		{  			gPipeline.enableLightsAvatarEdit(LLColor4(0.7f, 0.6f, 0.3f, 1.f));  		} @@ -7101,15 +7098,15 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)  {  	if (LLPipeline::sWaterReflections && assertInitialized() && LLDrawPoolWater::sNeedsReflectionUpdate)  	{ -		LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); +		BOOL skip_avatar_update = FALSE;  		if (gAgentCamera.getCameraAnimating() || gAgentCamera.getCameraMode() != CAMERA_MODE_MOUSELOOK)  		{ -			avatarp = NULL; +			skip_avatar_update = TRUE;  		} -		if (avatarp) +		if (!skip_avatar_update)  		{ -			avatarp->updateAttachmentVisibility(CAMERA_MODE_THIRD_PERSON); +			gAgentAvatarp->updateAttachmentVisibility(CAMERA_MODE_THIRD_PERSON);  		}  		LLVertexBuffer::unbind(); @@ -7333,9 +7330,9 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)  		LLGLState::checkTextureChannels();  		LLGLState::checkClientArrays(); -		if (avatarp) +		if (!skip_avatar_update)  		{ -			avatarp->updateAttachmentVisibility(gAgentCamera.getCameraMode()); +			gAgentAvatarp->updateAttachmentVisibility(gAgentCamera.getCameraMode());  		}  	}  } | 
