summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
Diffstat (limited to 'indra')
-rw-r--r--indra/newview/llagentcamera.cpp74
-rw-r--r--indra/newview/llagentcamera.h3
-rw-r--r--indra/newview/llmorphview.cpp2
-rw-r--r--indra/newview/llmorphview.h7
-rw-r--r--indra/newview/llvoavatar.cpp2
5 files changed, 43 insertions, 45 deletions
diff --git a/indra/newview/llagentcamera.cpp b/indra/newview/llagentcamera.cpp
index 9cf0a659c1..70f9fa03e4 100644
--- a/indra/newview/llagentcamera.cpp
+++ b/indra/newview/llagentcamera.cpp
@@ -156,7 +156,6 @@ LLAgentCamera::LLAgentCamera() :
mFocusObjectOffset(),
mFocusDotRadius( 0.1f ), // meters
mTrackFocusObject(TRUE),
- mUIOffset(0.f),
mAtKey(0), // Either 1, 0, or -1... indicates that movement-key is pressed
mWalkKey(0), // like AtKey, but causes less forward thrust
@@ -1407,13 +1406,6 @@ void LLAgentCamera::updateCamera()
// llinfos << "Current FOV Zoom: " << mCameraCurrentFOVZoomFactor << " Target FOV Zoom: " << mCameraFOVZoomFactor << " Object penetration: " << mFocusObjectDist << llendl;
- F32 ui_offset = 0.f;
- if( CAMERA_MODE_CUSTOMIZE_AVATAR == mCameraMode )
- {
- ui_offset = calcCustomizeAvatarUIOffset( camera_pos_global );
- }
-
-
LLVector3 focus_agent = gAgent.getPosAgentFromGlobal(mFocusGlobal);
mCameraPositionAgent = gAgent.getPosAgentFromGlobal(camera_pos_global);
@@ -1424,9 +1416,6 @@ void LLAgentCamera::updateCamera()
LLViewerCamera::getInstance()->updateCameraLocation(mCameraPositionAgent, mCameraUpVector, focus_agent);
//LLViewerCamera::getInstance()->updateCameraLocation(mCameraPositionAgent, camera_skyward, focus_agent);
//end Ventrella
-
- //RN: translate UI offset after camera is oriented properly
- LLViewerCamera::getInstance()->translate(LLViewerCamera::getInstance()->getLeftAxis() * ui_offset);
// Change FOV
LLViewerCamera::getInstance()->setView(LLViewerCamera::getInstance()->getDefaultFOV() / (1.f + mCameraCurrentFOVZoomFactor));
@@ -1532,18 +1521,6 @@ void LLAgentCamera::validateFocusObject()
}
//-----------------------------------------------------------------------------
-// calcCustomizeAvatarUIOffset()
-//-----------------------------------------------------------------------------
-F32 LLAgentCamera::calcCustomizeAvatarUIOffset(const LLVector3d& camera_pos_global)
-{
- F32 ui_offset = 0.f;
-
- F32 range = (F32)dist_vec(camera_pos_global, getFocusGlobal());
- mUIOffset = lerp(mUIOffset, ui_offset, LLCriticalDamp::getInterpolant(0.05f));
- return mUIOffset * range;
-}
-
-//-----------------------------------------------------------------------------
// calcFocusPositionTargetGlobal()
//-----------------------------------------------------------------------------
LLVector3d LLAgentCamera::calcFocusPositionTargetGlobal()
@@ -2332,6 +2309,18 @@ void LLAgentCamera::changeCameraToCustomizeAvatar(BOOL avatar_animate, BOOL came
LLVOAvatarSelf::onCustomizeStart();
}
+
+ // default focus point for customize avatar
+ LLVector3 focus_target;
+ if (isAgentAvatarValid())
+ {
+ focus_target = gAgentAvatarp->mHeadp->getWorldPosition();
+ }
+ else
+ {
+ focus_target = gAgent.getPositionAgent();
+ }
+
if (isAgentAvatarValid())
{
if(avatar_animate)
@@ -2339,7 +2328,7 @@ void LLAgentCamera::changeCameraToCustomizeAvatar(BOOL avatar_animate, BOOL came
// slamming the avatar's axis to the camera so that when the rotation
// completes it correctly points to the front of the avatar
// Remove any pitch or rotation from the avatar
- LLVector3 at = LLViewerCamera::getInstance()->getAtAxis();
+ LLVector3 at = gAgent.getAtAxis();
at.mV[VZ] = 0.f;
at.normalize();
gAgent.resetAxes(at);
@@ -2351,17 +2340,25 @@ void LLAgentCamera::changeCameraToCustomizeAvatar(BOOL avatar_animate, BOOL came
if (turn_motion)
{
- mAnimationDuration = turn_motion->getDuration() + CUSTOMIZE_AVATAR_CAMERA_ANIM_SLOP;
+ setAnimationDuration(turn_motion->getDuration() + CUSTOMIZE_AVATAR_CAMERA_ANIM_SLOP);
}
else
{
- mAnimationDuration = gSavedSettings.getF32("ZoomTime");
+ setAnimationDuration(gSavedSettings.getF32("ZoomTime"));
}
}
- // this is what sets the avatar as the mFocusTargetGlobal
- setFocusGlobal(LLVector3d::zero);
+ LLVector3 agent_at = gAgent.getAtAxis();
+ agent_at.mV[VZ] = 0.f;
+ agent_at.normalize();
+
+ LLVector3d camera_offset(agent_at * -1.0);
+ // push camera up and out from avatar
+ camera_offset.mdV[VZ] = 0.1f;
+ camera_offset *= 3.5f;
+ LLVector3d focus_target_global = gAgent.getPosGlobalFromAgent(focus_target);
+ setCameraPosAndFocusGlobal(focus_target_global + camera_offset, focus_target_global, gAgent.getID());
gAgentAvatarp->updateMeshTextures();
}
@@ -2391,6 +2388,19 @@ void LLAgentCamera::switchCameraPreset(ECameraPreset preset)
// Focus point management
//
+void LLAgentCamera::setAnimationDuration(F32 duration)
+{
+ if (mCameraAnimating)
+ {
+ F32 animation_left = llmax(0.f, mAnimationDuration - mAnimationTimer.getElapsedTimeF32());
+ mAnimationDuration = llmax(duration, animation_left);
+ }
+ else
+ {
+ mAnimationDuration = duration;
+ }
+}
+
//-----------------------------------------------------------------------------
// startCameraAnimation()
//-----------------------------------------------------------------------------
@@ -2398,9 +2408,9 @@ void LLAgentCamera::startCameraAnimation()
{
mAnimationCameraStartGlobal = getCameraPositionGlobal();
mAnimationFocusStartGlobal = mFocusGlobal;
+ setAnimationDuration(gSavedSettings.getF32("ZoomTime"));
mAnimationTimer.reset();
mCameraAnimating = TRUE;
- mAnimationDuration = gSavedSettings.getF32("ZoomTime");
}
//-----------------------------------------------------------------------------
@@ -2546,12 +2556,6 @@ void LLAgentCamera::setCameraPosAndFocusGlobal(const LLVector3d& camera_pos, con
if (focus_delta_squared > ANIM_EPSILON_SQUARED)
{
startCameraAnimation();
-
- if (CAMERA_MODE_CUSTOMIZE_AVATAR == mCameraMode)
- {
- // Compensate for the fact that the camera has already been offset to make room for LLFloaterCustomize.
- mAnimationCameraStartGlobal -= LLVector3d(LLViewerCamera::getInstance()->getLeftAxis() * calcCustomizeAvatarUIOffset( mAnimationCameraStartGlobal ));
- }
}
//LLViewerCamera::getInstance()->setOrigin( gAgent.getPosAgentFromGlobal( camera_pos ) );
diff --git a/indra/newview/llagentcamera.h b/indra/newview/llagentcamera.h
index 7afb5c0ed9..aba8b0b67f 100644
--- a/indra/newview/llagentcamera.h
+++ b/indra/newview/llagentcamera.h
@@ -184,7 +184,7 @@ private:
public:
void setCameraAnimating(BOOL b) { mCameraAnimating = b; }
BOOL getCameraAnimating() { return mCameraAnimating; }
- void setAnimationDuration(F32 seconds) { mAnimationDuration = seconds; }
+ void setAnimationDuration(F32 seconds);
void startCameraAnimation();
void stopCameraAnimation();
private:
@@ -225,7 +225,6 @@ private:
LLVector3 mFocusObjectOffset;
F32 mFocusDotRadius; // Meters
BOOL mTrackFocusObject;
- F32 mUIOffset;
//--------------------------------------------------------------------
// Lookat / Pointat
diff --git a/indra/newview/llmorphview.cpp b/indra/newview/llmorphview.cpp
index 4c28e98e62..61fc932bab 100644
--- a/indra/newview/llmorphview.cpp
+++ b/indra/newview/llmorphview.cpp
@@ -75,7 +75,6 @@ LLMorphView::LLMorphView(const LLMorphView::Params& p)
mOldCameraNearClip( 0.f ),
mCameraPitch( 0.f ),
mCameraYaw( 0.f ),
- mCameraDist( -1.f ),
mCameraDrivenByKeys( FALSE )
{}
@@ -86,7 +85,6 @@ void LLMorphView::initialize()
{
mCameraPitch = 0.f;
mCameraYaw = 0.f;
- mCameraDist = -1.f;
if (!isAgentAvatarValid() || gAgentAvatarp->isDead())
{
diff --git a/indra/newview/llmorphview.h b/indra/newview/llmorphview.h
index 493f906c6b..f0f04dfda3 100644
--- a/indra/newview/llmorphview.h
+++ b/indra/newview/llmorphview.h
@@ -53,7 +53,6 @@ public:
};
LLMorphView(const LLMorphView::Params&);
- void initialize();
void shutdown();
// inherited methods
@@ -64,12 +63,13 @@ public:
void setCameraOffset(const LLVector3d& camera_offset) {mCameraOffset = camera_offset;}
void setCameraTargetOffset(const LLVector3d& camera_target_offset) {mCameraTargetOffset = camera_target_offset;}
- void setCameraDistToDefault() { mCameraDist = -1.f; }
void updateCamera();
void setCameraDrivenByKeys( BOOL b );
protected:
+ void initialize();
+
LLJoint* mCameraTargetJoint;
LLVector3d mCameraOffset;
LLVector3d mCameraTargetOffset;
@@ -82,9 +82,6 @@ protected:
F32 mCameraPitch;
F32 mCameraYaw;
- // camera zoom
- F32 mCameraDist;
-
BOOL mCameraDrivenByKeys;
};
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 4ef166fb71..f2f91dcc4a 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -3201,7 +3201,7 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)
visible = (LLDrawable::getCurrentFrame()+mID.mData[0])%mUpdatePeriod == 0 ? TRUE : FALSE;
}
- if (!visible)
+ if (!visible && !isSelf())
{
updateMotions(LLCharacter::HIDDEN_UPDATE);
return FALSE;