diff options
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/newview/llpanelprimmediacontrols.cpp | 5 | ||||
| -rw-r--r-- | indra/newview/llviewermediafocus.cpp | 12 | ||||
| -rw-r--r-- | indra/newview/llviewermediafocus.h | 2 | 
3 files changed, 14 insertions, 5 deletions
| diff --git a/indra/newview/llpanelprimmediacontrols.cpp b/indra/newview/llpanelprimmediacontrols.cpp index 2dc3a62637..479769ee20 100644 --- a/indra/newview/llpanelprimmediacontrols.cpp +++ b/indra/newview/llpanelprimmediacontrols.cpp @@ -1036,8 +1036,9 @@ void LLPanelPrimMediaControls::updateZoom()  	}  	if (zoom_padding > 0.0f) -	{ -		LLViewerMediaFocus::setCameraZoom(getTargetObject(), mTargetObjectNormal, zoom_padding); +	{	 +		// since we only zoom into medium for now, always set zoom_in constraint to true +		LLViewerMediaFocus::setCameraZoom(getTargetObject(), mTargetObjectNormal, zoom_padding, true);  	}  	// Remember the object ID/face we zoomed into, so we can update the zoom icon appropriately diff --git a/indra/newview/llviewermediafocus.cpp b/indra/newview/llviewermediafocus.cpp index a0ac9c2091..f508a3462a 100644 --- a/indra/newview/llviewermediafocus.cpp +++ b/indra/newview/llviewermediafocus.cpp @@ -157,7 +157,6 @@ void LLViewerMediaFocus::setFocusFace(LLPointer<LLViewerObject> objectp, S32 fac  			mFocusedObjectFace = 0;  		}  	} -	  }  void LLViewerMediaFocus::clearFocus() @@ -198,7 +197,7 @@ bool LLViewerMediaFocus::getFocus()  }  // This function selects an ideal viewing distance based on the focused object, pick normal, and padding value -void LLViewerMediaFocus::setCameraZoom(LLViewerObject* object, LLVector3 normal, F32 padding_factor) +void LLViewerMediaFocus::setCameraZoom(LLViewerObject* object, LLVector3 normal, F32 padding_factor, bool zoom_in_only)  {  	if (object)  	{ @@ -269,7 +268,16 @@ void LLViewerMediaFocus::setCameraZoom(LLViewerObject* object, LLVector3 normal,              camera_pos += 0.01 * len * delta;          } +		// If we are not allowing zooming out and the old camera position is closer to  +		// the center then the new intended camera position, don't move camera and return +		if (zoom_in_only && +		    (dist_vec_squared(gAgent.getCameraPositionGlobal(), target_pos) < dist_vec_squared(camera_pos, target_pos))) +		{ +			return; +		} +  		gAgent.setCameraPosAndFocusGlobal(camera_pos, target_pos, object->getID() ); +  	}  	else  	{ diff --git a/indra/newview/llviewermediafocus.h b/indra/newview/llviewermediafocus.h index 89ee0ae283..002044ea2e 100644 --- a/indra/newview/llviewermediafocus.h +++ b/indra/newview/llviewermediafocus.h @@ -66,7 +66,7 @@ public:  	void update(); -	static void setCameraZoom(LLViewerObject* object, LLVector3 normal, F32 padding_factor); +	static void setCameraZoom(LLViewerObject* object, LLVector3 normal, F32 padding_factor, bool zoom_in_only = false);  	static F32 getBBoxAspectRatio(const LLBBox& bbox, const LLVector3& normal, F32* height, F32* width, F32* depth);  	bool isFocusedOnFace(LLPointer<LLViewerObject> objectp, S32 face); | 
