Added isAgentAvatarValid() helper function from v2
Nullchecks Flight-state tweaks
This commit is contained in:
@@ -258,6 +258,13 @@ const F32 LLAgent::TYPING_TIMEOUT_SECS = 5.f;
|
||||
std::map<std::string, std::string> LLAgent::sTeleportErrorMessages;
|
||||
std::map<std::string, std::string> LLAgent::sTeleportProgressMessages;
|
||||
|
||||
BOOL isAgentAvatarValid()
|
||||
{
|
||||
return (gAgent.getAvatarObject() &&
|
||||
(gAgent.getAvatarObject()->getRegion() != NULL) &&
|
||||
(!gAgent.getAvatarObject()->isDead()));
|
||||
}
|
||||
|
||||
class LLAgentFriendObserver : public LLFriendObserver
|
||||
{
|
||||
public:
|
||||
@@ -546,8 +553,11 @@ void LLAgent::resetView(BOOL reset_camera, BOOL change_camera)
|
||||
LLSelectMgr::getInstance()->deselectAll();
|
||||
}
|
||||
|
||||
// Hide all popup menus
|
||||
gMenuHolder->hideMenus();
|
||||
if (gMenuHolder != NULL)
|
||||
{
|
||||
// Hide all popup menus
|
||||
gMenuHolder->hideMenus();
|
||||
}
|
||||
}
|
||||
|
||||
static const LLCachedControl<bool> freeze_time("FreezeTime",false);
|
||||
@@ -586,6 +596,8 @@ void LLAgent::resetView(BOOL reset_camera, BOOL change_camera)
|
||||
}
|
||||
|
||||
setFocusOnAvatar(TRUE, ANIMATE);
|
||||
|
||||
mCameraFOVZoomFactor = 0.f;
|
||||
}
|
||||
|
||||
mHUDTargetZoom = 1.f;
|
||||
@@ -608,7 +620,7 @@ 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();
|
||||
@@ -625,7 +637,7 @@ void LLAgent::unlockView()
|
||||
{
|
||||
if (getFocusOnAvatar())
|
||||
{
|
||||
if (mAvatarObject.notNull())
|
||||
if (isAgentAvatarValid())
|
||||
{
|
||||
setFocusGlobal( LLVector3d::zero, mAvatarObject->mID );
|
||||
}
|
||||
@@ -842,7 +854,7 @@ void LLAgent::resetClientTag()
|
||||
//-----------------------------------------------------------------------------
|
||||
void LLAgent::setFlying(BOOL fly)
|
||||
{
|
||||
if (mAvatarObject.notNull())
|
||||
if (isAgentAvatarValid())
|
||||
{
|
||||
if(mAvatarObject->mSignaledAnimations.find(ANIM_AGENT_STANDUP) != mAvatarObject->mSignaledAnimations.end())
|
||||
{
|
||||
@@ -879,13 +891,15 @@ void LLAgent::setFlying(BOOL fly)
|
||||
LLViewerStats::getInstance()->incStat(LLViewerStats::ST_FLY_COUNT);
|
||||
}
|
||||
setControlFlags(AGENT_CONTROL_FLY);
|
||||
gSavedSettings.setBOOL("FlyBtnState", TRUE);
|
||||
}
|
||||
else
|
||||
{
|
||||
clearControlFlags(AGENT_CONTROL_FLY);
|
||||
gSavedSettings.setBOOL("FlyBtnState", FALSE);
|
||||
}
|
||||
|
||||
|
||||
gSavedSettings.setBOOL("FlyBtnState",fly);
|
||||
|
||||
mbFlagsDirty = TRUE;
|
||||
}
|
||||
|
||||
@@ -1064,6 +1078,7 @@ void LLAgent::sendMessage()
|
||||
if (!mRegionp)
|
||||
{
|
||||
llerrs << "No region for agent yet!" << llendl;
|
||||
return;
|
||||
}
|
||||
gMessageSystem->sendMessage(mRegionp->getHost());
|
||||
}
|
||||
@@ -1092,7 +1107,7 @@ void LLAgent::sendReliableMessage()
|
||||
//-----------------------------------------------------------------------------
|
||||
LLVector3 LLAgent::getVelocity() const
|
||||
{
|
||||
if (mAvatarObject.notNull())
|
||||
if (isAgentAvatarValid())
|
||||
{
|
||||
return mAvatarObject->getVelocity();
|
||||
}
|
||||
@@ -1113,7 +1128,7 @@ void LLAgent::setPositionAgent(const LLVector3 &pos_agent)
|
||||
llerrs << "setPositionAgent is not a number" << llendl;
|
||||
}
|
||||
|
||||
if (mAvatarObject.notNull() && mAvatarObject->getParent())
|
||||
if (isAgentAvatarValid() && mAvatarObject->getParent())
|
||||
{
|
||||
LLVector3 pos_agent_sitting;
|
||||
LLVector3d pos_agent_d;
|
||||
@@ -1151,7 +1166,7 @@ void LLAgent::slamLookAt(const LLVector3 &look_at)
|
||||
//-----------------------------------------------------------------------------
|
||||
const LLVector3d &LLAgent::getPositionGlobal() const
|
||||
{
|
||||
if (mAvatarObject.notNull() && !mAvatarObject->mDrawable.isNull())
|
||||
if (isAgentAvatarValid() && !mAvatarObject->mDrawable.isNull())
|
||||
{
|
||||
mPositionGlobal = getPosGlobalFromAgent(mAvatarObject->getRenderPosition());
|
||||
}
|
||||
@@ -1296,7 +1311,7 @@ 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() &&
|
||||
if (isAgentAvatarValid() &&
|
||||
mAvatarObject->getParent() &&
|
||||
mAvatarObject->mDrawable.notNull())
|
||||
{
|
||||
@@ -1346,7 +1361,7 @@ F32 LLAgent::clampPitchToLimits(F32 angle)
|
||||
|
||||
F32 angle_from_skyward = acos( mFrameAgent.getAtAxis() * skyward );
|
||||
|
||||
if (mAvatarObject.notNull() && mAvatarObject->mIsSitting)
|
||||
if (isAgentAvatarValid() && mAvatarObject->mIsSitting)
|
||||
{
|
||||
look_down_limit = 130.f * DEG_TO_RAD;
|
||||
}
|
||||
@@ -2238,10 +2253,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()
|
||||
&& (mAvatarObject->mSignaledAnimations.find(ANIM_AGENT_AWAY) != mAvatarObject->mSignaledAnimations.end())))
|
||||
{
|
||||
sendAnimationRequest(ANIM_AGENT_AWAY, ANIM_REQUEST_STOP);
|
||||
clearControlFlags(AGENT_CONTROL_AWAY);
|
||||
@@ -2305,7 +2319,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;
|
||||
}
|
||||
@@ -2351,7 +2365,10 @@ void LLAgent::startAutoPilotGlobal(const LLVector3d &target_global, const std::s
|
||||
if ( distance > 1.f && heightDelta > (sqrtf(mAutoPilotStopDistance) + 1.f))
|
||||
{
|
||||
setFlying(TRUE);
|
||||
mAutoPilotFlyOnStop = TRUE;
|
||||
// Do not force flying for "Sit" behavior to prevent flying after pressing "Stand"
|
||||
// from an object. See EXT-1655.
|
||||
if ("Sit" != mAutoPilotBehaviorName)
|
||||
mAutoPilotFlyOnStop = TRUE;
|
||||
}
|
||||
|
||||
mAutoPilot = TRUE;
|
||||
@@ -2420,6 +2437,13 @@ void LLAgent::stopAutoPilot(BOOL user_cancel)
|
||||
{
|
||||
resetAxes(mAutoPilotTargetFacing);
|
||||
}
|
||||
// Restore previous flying state before invoking mAutoPilotFinishedCallback to allow
|
||||
// callback function to change the flying state (like in near_sit_down_point()).
|
||||
// If the user cancelled, don't change the fly state
|
||||
if (!user_cancel)
|
||||
{
|
||||
setFlying(mAutoPilotFlyOnStop);
|
||||
}
|
||||
//NB: auto pilot can terminate for a reason other than reaching the destination
|
||||
if (mAutoPilotFinishedCallback)
|
||||
{
|
||||
@@ -2427,11 +2451,6 @@ void LLAgent::stopAutoPilot(BOOL user_cancel)
|
||||
}
|
||||
mLeaderID = LLUUID::null;
|
||||
|
||||
// If the user cancelled, don't change the fly state
|
||||
if (!user_cancel)
|
||||
{
|
||||
setFlying(mAutoPilotFlyOnStop);
|
||||
}
|
||||
setControlFlags(AGENT_CONTROL_STOP);
|
||||
|
||||
if (user_cancel && !mAutoPilotBehaviorName.empty())
|
||||
@@ -2466,10 +2485,7 @@ void LLAgent::autoPilot(F32 *delta_yaw)
|
||||
mAutoPilotTargetGlobal = object->getPositionGlobal();
|
||||
}
|
||||
|
||||
if (mAvatarObject.isNull())
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (!isAgentAvatarValid()) return;
|
||||
|
||||
if (mAvatarObject->mInAir)
|
||||
{
|
||||
@@ -2547,7 +2563,7 @@ 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];
|
||||
F32 delta_z = (F32)(mAutoPilotTargetGlobal.mdV[VZ] - current_height);
|
||||
@@ -2682,11 +2698,7 @@ void LLAgent::updateLookAt(const S32 mouse_x, const S32 mouse_y)
|
||||
{
|
||||
static LLVector3 last_at_axis;
|
||||
|
||||
|
||||
if (mAvatarObject.isNull())
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (!isAgentAvatarValid()) return;
|
||||
|
||||
LLQuaternion av_inv_rot = ~mAvatarObject->mRoot.getWorldRotation();
|
||||
LLVector3 root_at = LLVector3::x_axis * mAvatarObject->mRoot.getWorldRotation();
|
||||
@@ -2958,7 +2970,7 @@ void LLAgent::endAnimationUpdateUI()
|
||||
}
|
||||
|
||||
// Disable mouselook-specific animations
|
||||
if (mAvatarObject.notNull())
|
||||
if (isAgentAvatarValid())
|
||||
{
|
||||
if( mAvatarObject->isAnyAnimationSignaled(AGENT_GUN_AIM_ANIMS, NUM_AGENT_GUN_AIM_ANIMS) )
|
||||
{
|
||||
@@ -3004,7 +3016,7 @@ void LLAgent::endAnimationUpdateUI()
|
||||
gMorphView->setVisible( FALSE );
|
||||
}
|
||||
|
||||
if (mAvatarObject.notNull())
|
||||
if (isAgentAvatarValid())
|
||||
{
|
||||
if(mCustomAnim)
|
||||
{
|
||||
@@ -3046,7 +3058,7 @@ 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) )
|
||||
@@ -3107,7 +3119,7 @@ void LLAgent::endAnimationUpdateUI()
|
||||
}
|
||||
|
||||
// freeze avatar
|
||||
if (mAvatarObject.notNull())
|
||||
if (isAgentAvatarValid())
|
||||
{
|
||||
// <edit>
|
||||
//mPauseRequest = mAvatarObject->requestPause();
|
||||
@@ -3115,9 +3127,9 @@ void LLAgent::endAnimationUpdateUI()
|
||||
}
|
||||
}
|
||||
|
||||
if (getAvatarObject())
|
||||
if (isAgentAvatarValid())
|
||||
{
|
||||
getAvatarObject()->updateAttachmentVisibility(mCameraMode);
|
||||
mAvatarObject->updateAttachmentVisibility(mCameraMode);
|
||||
}
|
||||
|
||||
gFloaterTools->dirty();
|
||||
@@ -3143,7 +3155,7 @@ void LLAgent::updateCamera()
|
||||
|
||||
validateFocusObject();
|
||||
|
||||
if (mAvatarObject.notNull() &&
|
||||
if (isAgentAvatarValid() &&
|
||||
mAvatarObject->mIsSitting &&
|
||||
camera_mode == CAMERA_MODE_MOUSELOOK)
|
||||
{
|
||||
@@ -3257,7 +3269,7 @@ void LLAgent::updateCamera()
|
||||
//Ventrella
|
||||
if ( mCameraMode == CAMERA_MODE_FOLLOW )
|
||||
{
|
||||
if ( mAvatarObject.notNull() )
|
||||
if (isAgentAvatarValid())
|
||||
{
|
||||
//--------------------------------------------------------------------------------
|
||||
// this is where the avatar's position and rotation are given to followCam, and
|
||||
@@ -3273,6 +3285,7 @@ void LLAgent::updateCamera()
|
||||
mFollowCam.copyParams(*current_cam);
|
||||
mFollowCam.setSubjectPositionAndRotation( mAvatarObject->getRenderPosition(), avatarRotationForFollowCam );
|
||||
mFollowCam.update();
|
||||
LLViewerJoystick::getInstance()->setCameraNeedsUpdate(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -3502,6 +3515,11 @@ void LLAgent::updateCamera()
|
||||
}
|
||||
}
|
||||
|
||||
void LLAgent::updateLastCamera()
|
||||
{
|
||||
mLastCameraMode = mCameraMode;
|
||||
}
|
||||
|
||||
void LLAgent::updateFocusOffset()
|
||||
{
|
||||
validateFocusObject();
|
||||
@@ -3652,7 +3670,7 @@ LLVector3d LLAgent::calcThirdPersonFocusOffset()
|
||||
focus_offset.setVec(gSavedSettings.getVector3("FocusOffsetDefault"));
|
||||
|
||||
LLQuaternion agent_rot = mFrameAgent.getQuaternion();
|
||||
if (!mAvatarObject.isNull() && mAvatarObject->getParent())
|
||||
if (isAgentAvatarValid() && mAvatarObject->getParent())
|
||||
{
|
||||
agent_rot *= ((LLViewerObject*)(mAvatarObject->getParent()))->getRenderRotation();
|
||||
}
|
||||
@@ -3664,7 +3682,7 @@ LLVector3d LLAgent::calcThirdPersonFocusOffset()
|
||||
void LLAgent::setupSitCamera()
|
||||
{
|
||||
// agent frame entering this function is in world coordinates
|
||||
if (mAvatarObject.notNull() && mAvatarObject->getParent())
|
||||
if (isAgentAvatarValid() && mAvatarObject->getParent())
|
||||
{
|
||||
LLQuaternion parent_rot = ((LLViewerObject*)mAvatarObject->getParent())->getRenderRotation();
|
||||
// slam agent coordinate frame to proper parent local version
|
||||
@@ -3732,7 +3750,7 @@ LLVector3d LLAgent::calcCameraPositionTargetGlobal(BOOL *hit_limit)
|
||||
{
|
||||
// Compute base camera position and look-at points.
|
||||
//F32 camera_land_height;
|
||||
LLVector3d frame_center_global = mAvatarObject.isNull() ? getPositionGlobal()
|
||||
LLVector3d frame_center_global = !isAgentAvatarValid() ? getPositionGlobal()
|
||||
: getPosGlobalFromAgent(mAvatarObject->mRoot.getWorldPosition());
|
||||
|
||||
LLVector3 upAxis = getUpAxis();
|
||||
@@ -3749,7 +3767,7 @@ LLVector3d LLAgent::calcCameraPositionTargetGlobal(BOOL *hit_limit)
|
||||
}// End Ventrella
|
||||
else if (mCameraMode == CAMERA_MODE_MOUSELOOK)
|
||||
{
|
||||
if (mAvatarObject.isNull() || mAvatarObject->mDrawable.isNull())
|
||||
if (!isAgentAvatarValid() || mAvatarObject->mDrawable.isNull())
|
||||
{
|
||||
llwarns << "Null avatar drawable!" << llendl;
|
||||
return LLVector3d::zero;
|
||||
@@ -3784,7 +3802,7 @@ LLVector3d LLAgent::calcCameraPositionTargetGlobal(BOOL *hit_limit)
|
||||
F32 camera_distance = 0.f;
|
||||
|
||||
if (mSitCameraEnabled
|
||||
&& mAvatarObject.notNull()
|
||||
&& isAgentAvatarValid()
|
||||
&& mAvatarObject->mIsSitting
|
||||
&& mSitCameraReferenceObject.notNull())
|
||||
{
|
||||
@@ -3801,7 +3819,7 @@ LLVector3d LLAgent::calcCameraPositionTargetGlobal(BOOL *hit_limit)
|
||||
local_camera_offset = mCameraZoomFraction * mCameraOffsetDefault * gSavedSettings.getF32("CameraOffsetScale");
|
||||
|
||||
// are we sitting down?
|
||||
if (mAvatarObject.notNull() && mAvatarObject->getParent())
|
||||
if (isAgentAvatarValid() && mAvatarObject->getParent())
|
||||
{
|
||||
LLQuaternion parent_rot = ((LLViewerObject*)mAvatarObject->getParent())->getRenderRotation();
|
||||
// slam agent coordinate frame to proper parent local version
|
||||
@@ -3817,7 +3835,7 @@ LLVector3d LLAgent::calcCameraPositionTargetGlobal(BOOL *hit_limit)
|
||||
local_camera_offset = mFrameAgent.rotateToAbsolute( local_camera_offset );
|
||||
}
|
||||
|
||||
if (!mCameraCollidePlane.isExactlyZero() && (mAvatarObject.isNull() || !mAvatarObject->mIsSitting))
|
||||
if (!mCameraCollidePlane.isExactlyZero() && (!isAgentAvatarValid() || !mAvatarObject->mIsSitting))
|
||||
{
|
||||
LLVector3 plane_normal;
|
||||
plane_normal.setVec(mCameraCollidePlane.mV);
|
||||
@@ -3870,11 +3888,11 @@ LLVector3d LLAgent::calcCameraPositionTargetGlobal(BOOL *hit_limit)
|
||||
// set the global camera position
|
||||
LLVector3d camera_offset;
|
||||
|
||||
LLVector3 av_pos = mAvatarObject.isNull() ? LLVector3::zero : mAvatarObject->getRenderPosition();
|
||||
LLVector3 av_pos = !isAgentAvatarValid() ? LLVector3::zero : mAvatarObject->getRenderPosition();
|
||||
camera_offset.setVec( local_camera_offset );
|
||||
camera_position_global = frame_center_global + head_offset + camera_offset;
|
||||
|
||||
if (mAvatarObject.notNull())
|
||||
if (isAgentAvatarValid())
|
||||
{
|
||||
LLVector3d camera_lag_d;
|
||||
F32 lag_interp = LLCriticalDamp::getInterpolant(CAMERA_LAG_HALF_LIFE);
|
||||
@@ -4075,7 +4093,7 @@ void LLAgent::changeCameraToMouselook(BOOL animate)
|
||||
gFocusMgr.setKeyboardFocus( NULL );
|
||||
if (gSavedSettings.getBOOL("AONoStandsInMouselook")) LLFloaterAO::stopMotion(LLFloaterAO::getCurrentStandId(), FALSE,TRUE);
|
||||
|
||||
mLastCameraMode = mCameraMode;
|
||||
updateLastCamera();
|
||||
mCameraMode = CAMERA_MODE_MOUSELOOK;
|
||||
U32 old_flags = mControlFlags;
|
||||
setControlFlags(AGENT_CONTROL_MOUSELOOK);
|
||||
@@ -4137,7 +4155,7 @@ void LLAgent::changeCameraToFollow(BOOL animate)
|
||||
}
|
||||
startCameraAnimation();
|
||||
|
||||
mLastCameraMode = mCameraMode;
|
||||
updateLastCamera();
|
||||
mCameraMode = CAMERA_MODE_FOLLOW;
|
||||
|
||||
// bang-in the current focus, position, and up vector of the follow cam
|
||||
@@ -4148,7 +4166,7 @@ void LLAgent::changeCameraToFollow(BOOL animate)
|
||||
LLToolMgr::getInstance()->setCurrentToolset(gBasicToolset);
|
||||
}
|
||||
|
||||
if (mAvatarObject.notNull())
|
||||
if (isAgentAvatarValid())
|
||||
{
|
||||
mAvatarObject->mPelvisp->setPosition(LLVector3::zero);
|
||||
mAvatarObject->startMotion( ANIM_AGENT_BODY_NOISE );
|
||||
@@ -4206,7 +4224,7 @@ void LLAgent::changeCameraToThirdPerson(BOOL animate)
|
||||
|
||||
mCameraZoomFraction = INITIAL_ZOOM_FRACTION;
|
||||
|
||||
if (mAvatarObject.notNull())
|
||||
if (isAgentAvatarValid())
|
||||
{
|
||||
if (!mAvatarObject->mIsSitting)
|
||||
{
|
||||
@@ -4240,7 +4258,7 @@ void LLAgent::changeCameraToThirdPerson(BOOL animate)
|
||||
mTargetCameraDistance = MIN_CAMERA_DISTANCE;
|
||||
animate = FALSE;
|
||||
}
|
||||
mLastCameraMode = mCameraMode;
|
||||
updateLastCamera();
|
||||
mCameraMode = CAMERA_MODE_THIRD_PERSON;
|
||||
U32 old_flags = mControlFlags;
|
||||
clearControlFlags(AGENT_CONTROL_MOUSELOOK);
|
||||
@@ -4252,7 +4270,7 @@ void LLAgent::changeCameraToThirdPerson(BOOL animate)
|
||||
}
|
||||
|
||||
// Remove any pitch from the avatar
|
||||
if (mAvatarObject.notNull() && mAvatarObject->getParent())
|
||||
if (isAgentAvatarValid() && mAvatarObject->getParent())
|
||||
{
|
||||
LLQuaternion obj_rot = ((LLViewerObject*)mAvatarObject->getParent())->getRenderRotation();
|
||||
at_axis = LLViewerCamera::getInstance()->getAtAxis();
|
||||
@@ -4336,7 +4354,7 @@ void LLAgent::changeCameraToCustomizeAvatar(BOOL avatar_animate, BOOL camera_ani
|
||||
LLVOAvatar::onCustomizeStart();
|
||||
}
|
||||
|
||||
if (mAvatarObject.notNull())
|
||||
if (isAgentAvatarValid())
|
||||
{
|
||||
if(avatar_animate)
|
||||
{
|
||||
@@ -4456,7 +4474,7 @@ void LLAgent::setFocusGlobal(const LLVector3d& focus, const LLUUID &object_id)
|
||||
{
|
||||
if (focus.isExactlyZero())
|
||||
{
|
||||
if (mAvatarObject.notNull())
|
||||
if (isAgentAvatarValid())
|
||||
{
|
||||
mFocusTargetGlobal = getPosGlobalFromAgent(mAvatarObject->mHeadp->getWorldPosition());
|
||||
}
|
||||
@@ -4501,7 +4519,7 @@ void LLAgent::setFocusGlobal(const LLVector3d& focus, const LLUUID &object_id)
|
||||
{
|
||||
if (focus.isExactlyZero())
|
||||
{
|
||||
if (mAvatarObject.notNull())
|
||||
if (isAgentAvatarValid())
|
||||
{
|
||||
mFocusTargetGlobal = getPosGlobalFromAgent(mAvatarObject->mHeadp->getWorldPosition());
|
||||
}
|
||||
@@ -4639,7 +4657,7 @@ void LLAgent::setFocusOnAvatar(BOOL focus_on_avatar, BOOL animate)
|
||||
if (mCameraMode == CAMERA_MODE_THIRD_PERSON)
|
||||
{
|
||||
LLVector3 at_axis;
|
||||
if (mAvatarObject.notNull() && mAvatarObject->getParent())
|
||||
if (isAgentAvatarValid() && mAvatarObject->getParent())
|
||||
{
|
||||
LLQuaternion obj_rot = ((LLViewerObject*)mAvatarObject->getParent())->getRenderRotation();
|
||||
at_axis = LLViewerCamera::getInstance()->getAtAxis();
|
||||
@@ -4706,7 +4724,7 @@ void LLAgent::lookAtLastChat()
|
||||
if (chatter->isAvatar())
|
||||
{
|
||||
LLVOAvatar *chatter_av = (LLVOAvatar*)chatter;
|
||||
if (mAvatarObject.notNull() && chatter_av->mHeadp)
|
||||
if (isAgentAvatarValid() && chatter_av->mHeadp)
|
||||
{
|
||||
delta_pos = chatter_av->mHeadp->getWorldPosition() - mAvatarObject->mHeadp->getWorldPosition();
|
||||
}
|
||||
@@ -4895,13 +4913,13 @@ void LLAgent::setStartPosition( U32 location_id )
|
||||
const F32 REGION_WIDTH = LLWorld::getInstance()->getRegionWidthInMeters();
|
||||
|
||||
LLVector3 agent_pos = getPositionAgent();
|
||||
LLVector3 agent_look_at = mFrameAgent.getAtAxis();
|
||||
LLVector3 agent_look_at = mFrameAgent.getAtAxis();
|
||||
|
||||
if (mAvatarObject.notNull())
|
||||
if (isAgentAvatarValid())
|
||||
{
|
||||
// the z height is at the agent's feet
|
||||
agent_pos.mV[VZ] -= 0.5f * mAvatarObject->mBodySize.mV[VZ];
|
||||
}
|
||||
// the z height is at the agent's feet
|
||||
agent_pos.mV[VZ] -= 0.5f * mAvatarObject->mBodySize.mV[VZ];
|
||||
}
|
||||
|
||||
agent_pos.mV[VX] = llclamp( agent_pos.mV[VX], INSET, REGION_WIDTH - INSET );
|
||||
agent_pos.mV[VY] = llclamp( agent_pos.mV[VY], INSET, REGION_WIDTH - INSET );
|
||||
@@ -5018,7 +5036,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() && !mAvatarObject->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)
|
||||
@@ -5125,6 +5143,9 @@ int LLAgent::convertTextToMaturity(char text)
|
||||
|
||||
bool LLAgent::sendMaturityPreferenceToServer(int preferredMaturity)
|
||||
{
|
||||
if (!getRegion())
|
||||
return false;
|
||||
|
||||
// Update agent access preference on the server
|
||||
std::string url = getRegion()->getCapability("UpdateAgentInformation");
|
||||
if (!url.empty())
|
||||
@@ -5187,7 +5208,7 @@ const LLAgentAccess& LLAgent::getAgentAccess()
|
||||
|
||||
void LLAgent::buildFullname(std::string& name) const
|
||||
{
|
||||
if (mAvatarObject.notNull())
|
||||
if (isAgentAvatarValid())
|
||||
{
|
||||
name = mAvatarObject->getFullname();
|
||||
}
|
||||
@@ -5205,7 +5226,7 @@ void LLAgent::buildFullnameAndTitle(std::string& name) const
|
||||
name.erase(0, name.length());
|
||||
}
|
||||
|
||||
if (mAvatarObject.notNull())
|
||||
if (isAgentAvatarValid())
|
||||
{
|
||||
name += mAvatarObject->getFullname();
|
||||
}
|
||||
@@ -5404,7 +5425,7 @@ void LLAgent::buildLocationString(std::string& str)
|
||||
|
||||
LLQuaternion LLAgent::getHeadRotation()
|
||||
{
|
||||
if (mAvatarObject.isNull() || !mAvatarObject->mPelvisp || !mAvatarObject->mHeadp)
|
||||
if (!isAgentAvatarValid() || !mAvatarObject->mPelvisp || !mAvatarObject->mHeadp)
|
||||
{
|
||||
return LLQuaternion::DEFAULT;
|
||||
}
|
||||
@@ -6049,8 +6070,7 @@ void LLAgent::processAgentCachedTextureResponse(LLMessageSystem *mesgsys, void *
|
||||
{
|
||||
gAgent.mNumPendingQueries--;
|
||||
|
||||
LLVOAvatar* avatarp = gAgent.getAvatarObject();
|
||||
if (!avatarp || avatarp->isDead())
|
||||
if (!isAgentAvatarValid())
|
||||
{
|
||||
llwarns << "No avatar for user in cached texture update!" << llendl;
|
||||
return;
|
||||
@@ -6082,7 +6102,7 @@ void LLAgent::processAgentCachedTextureResponse(LLMessageSystem *mesgsys, void *
|
||||
&& gAgent.mActiveCacheQueries[ texture_index ] == query_id)
|
||||
{
|
||||
//llinfos << "Received cached texture " << (U32)texture_index << ": " << texture_id << llendl;
|
||||
avatarp->setCachedBakedTexture(getTextureIndex((EBakedTextureIndex)texture_index), texture_id);
|
||||
gAgent.getAvatarObject()->setCachedBakedTexture(getTextureIndex((EBakedTextureIndex)texture_index), texture_id);
|
||||
//avatarp->setTETexture( LLVOAvatar::sBakedTextureIndices[texture_index], texture_id );
|
||||
gAgent.mActiveCacheQueries[ texture_index ] = 0;
|
||||
num_results++;
|
||||
@@ -6091,20 +6111,19 @@ void LLAgent::processAgentCachedTextureResponse(LLMessageSystem *mesgsys, void *
|
||||
|
||||
llinfos << "Received cached texture response for " << num_results << " textures." << llendl;
|
||||
|
||||
avatarp->updateMeshTextures();
|
||||
gAgent.getAvatarObject()->updateMeshTextures();
|
||||
|
||||
if (gAgent.mNumPendingQueries == 0)
|
||||
{
|
||||
// RN: not sure why composites are disabled at this point
|
||||
avatarp->setCompositeUpdatesEnabled(TRUE);
|
||||
gAgent.getAvatarObject()->setCompositeUpdatesEnabled(TRUE);
|
||||
gAgent.sendAgentSetAppearance();
|
||||
}
|
||||
}
|
||||
|
||||
BOOL LLAgent::anyControlGrabbed() const
|
||||
{
|
||||
U32 i;
|
||||
for (i = 0; i < TOTAL_CONTROLS; i++)
|
||||
for (U32 i = 0; i < TOTAL_CONTROLS; i++)
|
||||
{
|
||||
if (gAgent.mControlsTakenCount[i] > 0)
|
||||
return TRUE;
|
||||
@@ -6150,11 +6169,10 @@ BOOL LLAgent::getHomePosGlobal( LLVector3d* pos_global )
|
||||
|
||||
void LLAgent::clearVisualParams(void *data)
|
||||
{
|
||||
LLVOAvatar* avatarp = gAgent.getAvatarObject();
|
||||
if (avatarp)
|
||||
if (isAgentAvatarValid())
|
||||
{
|
||||
avatarp->clearVisualParamWeights();
|
||||
avatarp->updateVisualParams();
|
||||
gAgent.getAvatarObject()->clearVisualParamWeights();
|
||||
gAgent.getAvatarObject()->updateVisualParams();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6181,9 +6199,9 @@ bool LLAgent::teleportCore(bool is_local)
|
||||
// sync with other viewers. Discuss in DEV-14145/VWR-6744 before reenabling.
|
||||
|
||||
// Stop all animation before actual teleporting
|
||||
LLVOAvatar* avatarp = gAgent.getAvatarObject();
|
||||
if (avatarp)
|
||||
if (isAgentAvatarValid())
|
||||
{
|
||||
LLVOAvatar* avatarp = gAgent.getAvatarObject();
|
||||
for ( LLVOAvatar::AnimIterator anim_it= avatarp->mPlayingAnimations.begin();
|
||||
anim_it != avatarp->mPlayingAnimations.end();
|
||||
++anim_it)
|
||||
@@ -6475,10 +6493,9 @@ void LLAgent::stopCurrentAnimations()
|
||||
{
|
||||
// This function stops all current overriding animations on this
|
||||
// avatar, propagating this change back to the server.
|
||||
|
||||
LLVOAvatar* avatarp = gAgent.getAvatarObject();
|
||||
if (avatarp)
|
||||
if (isAgentAvatarValid())
|
||||
{
|
||||
LLVOAvatar* avatarp = gAgent.getAvatarObject();
|
||||
for ( LLVOAvatar::AnimIterator anim_it =
|
||||
avatarp->mPlayingAnimations.begin();
|
||||
anim_it != avatarp->mPlayingAnimations.end();
|
||||
@@ -7575,7 +7592,7 @@ void LLAgent::addWearableToAgentInventory(
|
||||
//-----------------------------------------------------------------------------
|
||||
void LLAgent::sendAgentSetAppearance()
|
||||
{
|
||||
if (mAvatarObject.isNull()) return;
|
||||
if (!isAgentAvatarValid()) return;
|
||||
|
||||
if (mNumPendingQueries > 0 && !gAgent.cameraCustomizeAvatar())
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user