diff options
author | Nat Goodspeed <nat@lindenlab.com> | 2024-05-15 12:18:31 -0400 |
---|---|---|
committer | Nat Goodspeed <nat@lindenlab.com> | 2024-05-15 12:18:31 -0400 |
commit | 7ccf02515ad3f9e3bf795d651fe4b3c0d773f353 (patch) | |
tree | c4adc897c07f652e617e91fbf41c12b823acc808 /indra/newview/llfollowcam.h | |
parent | 1abf5f18d6afc7ae9e1b1562b92e5c1ce33b722f (diff) | |
parent | e7eced3c87310b15ac20cc3cd470d67686104a14 (diff) |
Merge commit 'e7eced3' into lua-timers for whitespace fixes.
Diffstat (limited to 'indra/newview/llfollowcam.h')
-rw-r--r-- | indra/newview/llfollowcam.h | 328 |
1 files changed, 164 insertions, 164 deletions
diff --git a/indra/newview/llfollowcam.h b/indra/newview/llfollowcam.h index 7995848160..509d654fb6 100644 --- a/indra/newview/llfollowcam.h +++ b/indra/newview/llfollowcam.h @@ -1,4 +1,4 @@ -/** +/** * @file llfollowcam.h * @author Jeffrey Ventrella * @brief LLFollowCam class definition @@ -6,21 +6,21 @@ * $LicenseInfo:firstyear=2005&license=viewerlgpl$ * Second Life Viewer Source Code * Copyright (C) 2010, Linden Research, Inc. - * + * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; * version 2.1 of the License only. - * + * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. - * + * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * + * * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA * $/LicenseInfo$ */ @@ -28,12 +28,12 @@ //-------------------------------------------------------------------- // FollowCam // -// The FollowCam controls three dynamic variables which determine +// The FollowCam controls three dynamic variables which determine // a camera orientation and position for a "loose" third-person view -// (orientation being derived from a combination of focus and up -// vector). It is good for fast-moving vehicles that change -// acceleration a lot, but it can also be general-purpose, like for -// avatar navigation. It has a handful of parameters allowing it to +// (orientation being derived from a combination of focus and up +// vector). It is good for fast-moving vehicles that change +// acceleration a lot, but it can also be general-purpose, like for +// avatar navigation. It has a handful of parameters allowing it to // be tweaked to assume different styles of tracking objects. // //-------------------------------------------------------------------- @@ -52,143 +52,143 @@ class LLFollowCamParams { public: - LLFollowCamParams(); - virtual ~LLFollowCamParams(); - - //-------------------------------------- - // setty setty set set - //-------------------------------------- - virtual void setPositionLag ( F32 ); - virtual void setFocusLag ( F32 ); - virtual void setFocusThreshold ( F32 ); - virtual void setPositionThreshold ( F32 ); - virtual void setDistance ( F32 ); - virtual void setPitch ( F32 ); - virtual void setFocusOffset ( const LLVector3& ); - virtual void setBehindnessAngle ( F32 ); - virtual void setBehindnessLag ( F32 ); - virtual void setPosition ( const LLVector3& ); - virtual void setFocus ( const LLVector3& ); - virtual void setPositionLocked ( bool ); - virtual void setFocusLocked ( bool ); - - - //-------------------------------------- - // getty getty get get - //-------------------------------------- - virtual F32 getPositionLag() const; - virtual F32 getFocusLag() const; - virtual F32 getPositionThreshold() const; - virtual F32 getFocusThreshold() const; - virtual F32 getDistance() const; - virtual F32 getPitch() const; - virtual LLVector3 getFocusOffset() const; - virtual F32 getBehindnessAngle() const; - virtual F32 getBehindnessLag() const; - virtual LLVector3 getPosition() const; - virtual LLVector3 getFocus() const; - virtual bool getFocusLocked() const; - virtual bool getPositionLocked() const; - virtual bool getUseFocus() const { return mUseFocus; } - virtual bool getUsePosition() const { return mUsePosition; } + LLFollowCamParams(); + virtual ~LLFollowCamParams(); + + //-------------------------------------- + // setty setty set set + //-------------------------------------- + virtual void setPositionLag ( F32 ); + virtual void setFocusLag ( F32 ); + virtual void setFocusThreshold ( F32 ); + virtual void setPositionThreshold ( F32 ); + virtual void setDistance ( F32 ); + virtual void setPitch ( F32 ); + virtual void setFocusOffset ( const LLVector3& ); + virtual void setBehindnessAngle ( F32 ); + virtual void setBehindnessLag ( F32 ); + virtual void setPosition ( const LLVector3& ); + virtual void setFocus ( const LLVector3& ); + virtual void setPositionLocked ( bool ); + virtual void setFocusLocked ( bool ); + + + //-------------------------------------- + // getty getty get get + //-------------------------------------- + virtual F32 getPositionLag() const; + virtual F32 getFocusLag() const; + virtual F32 getPositionThreshold() const; + virtual F32 getFocusThreshold() const; + virtual F32 getDistance() const; + virtual F32 getPitch() const; + virtual LLVector3 getFocusOffset() const; + virtual F32 getBehindnessAngle() const; + virtual F32 getBehindnessLag() const; + virtual LLVector3 getPosition() const; + virtual LLVector3 getFocus() const; + virtual bool getFocusLocked() const; + virtual bool getPositionLocked() const; + virtual bool getUseFocus() const { return mUseFocus; } + virtual bool getUsePosition() const { return mUsePosition; } protected: - F32 mPositionLag; - F32 mFocusLag; - F32 mFocusThreshold; - F32 mPositionThreshold; - F32 mDistance; - F32 mPitch; - LLVector3 mFocusOffset; - F32 mBehindnessMaxAngle; - F32 mBehindnessLag; - F32 mMaxCameraDistantFromSubject; - - bool mPositionLocked; - bool mFocusLocked; - bool mUsePosition; // specific camera point specified by script - bool mUseFocus; // specific focus point specified by script - LLVector3 mPosition; // where the camera is (in world-space) - LLVector3 mFocus; // what the camera is aimed at (in world-space) + F32 mPositionLag; + F32 mFocusLag; + F32 mFocusThreshold; + F32 mPositionThreshold; + F32 mDistance; + F32 mPitch; + LLVector3 mFocusOffset; + F32 mBehindnessMaxAngle; + F32 mBehindnessLag; + F32 mMaxCameraDistantFromSubject; + + bool mPositionLocked; + bool mFocusLocked; + bool mUsePosition; // specific camera point specified by script + bool mUseFocus; // specific focus point specified by script + LLVector3 mPosition; // where the camera is (in world-space) + LLVector3 mFocus; // what the camera is aimed at (in world-space) }; class LLFollowCam : public LLFollowCamParams { public: - //-------------------- - // Contructor - //-------------------- - LLFollowCam(); - - //-------------------- - // Destructor - //-------------------- - virtual ~LLFollowCam(); - - //--------------------------------------------------------------------------------------- - // The following methods must be called every time step. However, if you know for - // sure that your subject matter (what the camera is looking at) is not moving, - // then you can get away with not calling "update" But keep in mind that "update" - // may still be needed after the subject matter has stopped moving because the - // camera may still need to animate itself catching up to its ideal resting place. - //--------------------------------------------------------------------------------------- - void setSubjectPositionAndRotation ( const LLVector3 p, const LLQuaternion r ); - void update(); - - // initialize from another instance of llfollowcamparams - void copyParams(LLFollowCamParams& params); - - //----------------------------------------------------------------------------------- - // this is how to bang the followCam into a specific configuration. Keep in mind - // that it will immediately try to adjust these values according to its attributes. - //----------------------------------------------------------------------------------- - void reset( const LLVector3 position, const LLVector3 focus, const LLVector3 upVector ); - - void setMaxCameraDistantFromSubject ( F32 m ); // this should be determined by llAgent - bool isZoomedToMinimumDistance(); - LLVector3 getUpVector(); - void zoom( S32 ); - - // overrides for setters and getters - virtual void setPitch( F32 ); - virtual void setDistance( F32 ); - virtual void setPosition(const LLVector3& pos); - virtual void setFocus(const LLVector3& focus); - virtual void setPositionLocked ( bool ); - virtual void setFocusLocked ( bool ); - - LLVector3 getSimulatedPosition() const; - LLVector3 getSimulatedFocus() const; - - //------------------------------------------ - // protected members of FollowCam - //------------------------------------------ + //-------------------- + // Contructor + //-------------------- + LLFollowCam(); + + //-------------------- + // Destructor + //-------------------- + virtual ~LLFollowCam(); + + //--------------------------------------------------------------------------------------- + // The following methods must be called every time step. However, if you know for + // sure that your subject matter (what the camera is looking at) is not moving, + // then you can get away with not calling "update" But keep in mind that "update" + // may still be needed after the subject matter has stopped moving because the + // camera may still need to animate itself catching up to its ideal resting place. + //--------------------------------------------------------------------------------------- + void setSubjectPositionAndRotation ( const LLVector3 p, const LLQuaternion r ); + void update(); + + // initialize from another instance of llfollowcamparams + void copyParams(LLFollowCamParams& params); + + //----------------------------------------------------------------------------------- + // this is how to bang the followCam into a specific configuration. Keep in mind + // that it will immediately try to adjust these values according to its attributes. + //----------------------------------------------------------------------------------- + void reset( const LLVector3 position, const LLVector3 focus, const LLVector3 upVector ); + + void setMaxCameraDistantFromSubject ( F32 m ); // this should be determined by llAgent + bool isZoomedToMinimumDistance(); + LLVector3 getUpVector(); + void zoom( S32 ); + + // overrides for setters and getters + virtual void setPitch( F32 ); + virtual void setDistance( F32 ); + virtual void setPosition(const LLVector3& pos); + virtual void setFocus(const LLVector3& focus); + virtual void setPositionLocked ( bool ); + virtual void setFocusLocked ( bool ); + + LLVector3 getSimulatedPosition() const; + LLVector3 getSimulatedFocus() const; + + //------------------------------------------ + // protected members of FollowCam + //------------------------------------------ protected: - F32 mPitchCos; // derived from mPitch - F32 mPitchSin; // derived from mPitch - LLGlobalVec mSimulatedPositionGlobal; // where the camera is (global coordinates), simulated - LLGlobalVec mSimulatedFocusGlobal; // what the camera is aimed at (global coordinates), simulated - F32 mSimulatedDistance; - - //--------------------- - // dynamic variables - //--------------------- - bool mZoomedToMinimumDistance; - LLFrameTimer mTimer; - LLVector3 mSubjectPosition; // this is the position of what I'm looking at - LLQuaternion mSubjectRotation; // this is the rotation of what I'm looking at - LLVector3 mUpVector; // the camera's up vector in world-space (determines roll) - LLVector3 mRelativeFocus; - LLVector3 mRelativePos; - - bool mPitchSineAndCosineNeedToBeUpdated; - - //------------------------------------------ - // protected methods of FollowCam - //------------------------------------------ + F32 mPitchCos; // derived from mPitch + F32 mPitchSin; // derived from mPitch + LLGlobalVec mSimulatedPositionGlobal; // where the camera is (global coordinates), simulated + LLGlobalVec mSimulatedFocusGlobal; // what the camera is aimed at (global coordinates), simulated + F32 mSimulatedDistance; + + //--------------------- + // dynamic variables + //--------------------- + bool mZoomedToMinimumDistance; + LLFrameTimer mTimer; + LLVector3 mSubjectPosition; // this is the position of what I'm looking at + LLQuaternion mSubjectRotation; // this is the rotation of what I'm looking at + LLVector3 mUpVector; // the camera's up vector in world-space (determines roll) + LLVector3 mRelativeFocus; + LLVector3 mRelativePos; + + bool mPitchSineAndCosineNeedToBeUpdated; + + //------------------------------------------ + // protected methods of FollowCam + //------------------------------------------ protected: - void calculatePitchSineAndCosine(); - BOOL updateBehindnessConstraint(LLVector3 focus, LLVector3& cam_position); + void calculatePitchSineAndCosine(); + BOOL updateBehindnessConstraint(LLVector3 focus, LLVector3& cam_position); };// end of FollowCam class @@ -197,36 +197,36 @@ class LLFollowCamMgr : public LLSingleton<LLFollowCamMgr> { LLSINGLETON(LLFollowCamMgr); ~LLFollowCamMgr(); -public: - void setPositionLag ( const LLUUID& source, F32 lag); - void setFocusLag ( const LLUUID& source, F32 lag); - void setFocusThreshold ( const LLUUID& source, F32 threshold); - void setPositionThreshold ( const LLUUID& source, F32 threshold); - void setDistance ( const LLUUID& source, F32 distance); - void setPitch ( const LLUUID& source, F32 pitch); - void setFocusOffset ( const LLUUID& source, const LLVector3& offset); - void setBehindnessAngle ( const LLUUID& source, F32 angle); - void setBehindnessLag ( const LLUUID& source, F32 lag); - void setPosition ( const LLUUID& source, const LLVector3 position); - void setFocus ( const LLUUID& source, const LLVector3 focus); - void setPositionLocked ( const LLUUID& source, bool locked); - void setFocusLocked ( const LLUUID& source, bool locked ); - - void setCameraActive ( const LLUUID& source, bool active ); - - LLFollowCamParams* getActiveFollowCamParams(); - LLFollowCamParams* getParamsForID(const LLUUID& source); - void removeFollowCamParams(const LLUUID& source); - bool isScriptedCameraSource(const LLUUID& source); - void dump(); +public: + void setPositionLag ( const LLUUID& source, F32 lag); + void setFocusLag ( const LLUUID& source, F32 lag); + void setFocusThreshold ( const LLUUID& source, F32 threshold); + void setPositionThreshold ( const LLUUID& source, F32 threshold); + void setDistance ( const LLUUID& source, F32 distance); + void setPitch ( const LLUUID& source, F32 pitch); + void setFocusOffset ( const LLUUID& source, const LLVector3& offset); + void setBehindnessAngle ( const LLUUID& source, F32 angle); + void setBehindnessLag ( const LLUUID& source, F32 lag); + void setPosition ( const LLUUID& source, const LLVector3 position); + void setFocus ( const LLUUID& source, const LLVector3 focus); + void setPositionLocked ( const LLUUID& source, bool locked); + void setFocusLocked ( const LLUUID& source, bool locked ); + + void setCameraActive ( const LLUUID& source, bool active ); + + LLFollowCamParams* getActiveFollowCamParams(); + LLFollowCamParams* getParamsForID(const LLUUID& source); + void removeFollowCamParams(const LLUUID& source); + bool isScriptedCameraSource(const LLUUID& source); + void dump(); protected: - typedef std::map<LLUUID, LLFollowCamParams*> param_map_t; - param_map_t mParamMap; + typedef std::map<LLUUID, LLFollowCamParams*> param_map_t; + param_map_t mParamMap; - typedef std::vector<LLFollowCamParams*> param_stack_t; - param_stack_t mParamStack; + typedef std::vector<LLFollowCamParams*> param_stack_t; + param_stack_t mParamStack; }; #endif //LL_FOLLOWCAM_H |