diff options
Diffstat (limited to 'indra/llcharacter/llmotioncontroller.h')
-rw-r--r-- | indra/llcharacter/llmotioncontroller.h | 292 |
1 files changed, 146 insertions, 146 deletions
diff --git a/indra/llcharacter/llmotioncontroller.h b/indra/llcharacter/llmotioncontroller.h index 637ee4d2bb..67193b0cf3 100644 --- a/indra/llcharacter/llmotioncontroller.h +++ b/indra/llcharacter/llmotioncontroller.h @@ -1,25 +1,25 @@ -/** +/** * @file llmotioncontroller.h * @brief Implementation of LLMotionController class. * * $LicenseInfo:firstyear=2001&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$ */ @@ -54,27 +54,27 @@ typedef LLMotion*(*LLMotionConstructor)(const LLUUID &id); class LLMotionRegistry { public: - // Constructor - LLMotionRegistry(); + // Constructor + LLMotionRegistry(); - // Destructor - ~LLMotionRegistry(); + // Destructor + ~LLMotionRegistry(); - // adds motion classes to the registry - // returns true if successfull - BOOL registerMotion( const LLUUID& id, LLMotionConstructor create); + // adds motion classes to the registry + // returns true if successfull + BOOL registerMotion( const LLUUID& id, LLMotionConstructor create); - // creates a new instance of a named motion - // returns NULL motion is not registered - LLMotion *createMotion( const LLUUID &id ); + // creates a new instance of a named motion + // returns NULL motion is not registered + LLMotion *createMotion( const LLUUID &id ); - // initialization of motion failed, don't try to create this motion again - void markBad( const LLUUID& id ); + // initialization of motion failed, don't try to create this motion again + void markBad( const LLUUID& id ); protected: - typedef std::map<LLUUID, LLMotionConstructor> motion_map_t; - motion_map_t mMotionTable; + typedef std::map<LLUUID, LLMotionConstructor> motion_map_t; + motion_map_t mMotionTable; }; //----------------------------------------------------------------------------- @@ -83,153 +83,153 @@ protected: class LLMotionController { public: - typedef std::list<LLMotion*> motion_list_t; - typedef std::set<LLMotion*> motion_set_t; - BOOL mIsSelf; - + typedef std::list<LLMotion*> motion_list_t; + typedef std::set<LLMotion*> motion_set_t; + BOOL mIsSelf; + public: - // Constructor - LLMotionController(); - - // Destructor - virtual ~LLMotionController(); - - // set associated character - // this must be called exactly once by the containing character class. - // this is generally done in the Character constructor - void setCharacter( LLCharacter *character ); - - // registers a motion with the controller - // (actually just forwards call to motion registry) - // returns true if successfull - BOOL registerMotion( const LLUUID& id, LLMotionConstructor create ); - - // creates a motion from the registry - LLMotion *createMotion( const LLUUID &id ); - - // unregisters a motion with the controller - // (actually just forwards call to motion registry) - // returns true if successfull - void removeMotion( const LLUUID& id ); - - // start motion - // begins playing the specified motion - // returns true if successful - BOOL startMotion( const LLUUID &id, F32 start_offset ); - - // stop motion - // stops a playing motion - // in reality, it begins the ease out transition phase - // returns true if successful - BOOL stopMotionLocally( const LLUUID &id, BOOL stop_immediate ); - - // Move motions from loading to loaded - void updateLoadingMotions(); - - // update motions - // invokes the update handlers for each active motion - // activates sequenced motions - // deactivates terminated motions` - void updateMotions(bool force_update = false); - - // minimal update (e.g. while hidden) - void updateMotionsMinimal(); - - void clearBlenders() { mPoseBlender.clearBlenders(); } - - // flush motions - // releases all motion instances - void flushAllMotions(); - - //Flush is a liar. - void deactivateAllMotions(); - - // pause and continue all motions - void pauseAllMotions(); - void unpauseAllMotions(); - BOOL isPaused() const { return mPaused; } + // Constructor + LLMotionController(); + + // Destructor + virtual ~LLMotionController(); + + // set associated character + // this must be called exactly once by the containing character class. + // this is generally done in the Character constructor + void setCharacter( LLCharacter *character ); + + // registers a motion with the controller + // (actually just forwards call to motion registry) + // returns true if successfull + BOOL registerMotion( const LLUUID& id, LLMotionConstructor create ); + + // creates a motion from the registry + LLMotion *createMotion( const LLUUID &id ); + + // unregisters a motion with the controller + // (actually just forwards call to motion registry) + // returns true if successfull + void removeMotion( const LLUUID& id ); + + // start motion + // begins playing the specified motion + // returns true if successful + BOOL startMotion( const LLUUID &id, F32 start_offset ); + + // stop motion + // stops a playing motion + // in reality, it begins the ease out transition phase + // returns true if successful + BOOL stopMotionLocally( const LLUUID &id, BOOL stop_immediate ); + + // Move motions from loading to loaded + void updateLoadingMotions(); + + // update motions + // invokes the update handlers for each active motion + // activates sequenced motions + // deactivates terminated motions` + void updateMotions(bool force_update = false); + + // minimal update (e.g. while hidden) + void updateMotionsMinimal(); + + void clearBlenders() { mPoseBlender.clearBlenders(); } + + // flush motions + // releases all motion instances + void flushAllMotions(); + + //Flush is a liar. + void deactivateAllMotions(); + + // pause and continue all motions + void pauseAllMotions(); + void unpauseAllMotions(); + BOOL isPaused() const { return mPaused; } S32 getPausedFrame() const { return mPausedFrame; } - void setTimeStep(F32 step); + void setTimeStep(F32 step); F32 getTimeStep() const { return mTimeStep; } - void setTimeFactor(F32 time_factor); - F32 getTimeFactor() const { return mTimeFactor; } + void setTimeFactor(F32 time_factor); + F32 getTimeFactor() const { return mTimeFactor; } F32 getAnimTime() const { return mAnimTime; } - - motion_list_t& getActiveMotions() { return mActiveMotions; } - void incMotionCounts(S32& num_motions, S32& num_loading_motions, S32& num_loaded_motions, S32& num_active_motions, S32& num_deprecated_motions); - + motion_list_t& getActiveMotions() { return mActiveMotions; } + + void incMotionCounts(S32& num_motions, S32& num_loading_motions, S32& num_loaded_motions, S32& num_active_motions, S32& num_deprecated_motions); + //protected: - bool isMotionActive( LLMotion *motion ); - bool isMotionLoading( LLMotion *motion ); - LLMotion *findMotion( const LLUUID& id ) const; + bool isMotionActive( LLMotion *motion ); + bool isMotionLoading( LLMotion *motion ); + LLMotion *findMotion( const LLUUID& id ) const; - void dumpMotions(); + void dumpMotions(); - const LLFrameTimer& getFrameTimer() { return mTimer; } + const LLFrameTimer& getFrameTimer() { return mTimer; } - static F32 getCurrentTimeFactor() { return sCurrentTimeFactor; }; - static void setCurrentTimeFactor(F32 factor) { sCurrentTimeFactor = factor; }; + static F32 getCurrentTimeFactor() { return sCurrentTimeFactor; }; + static void setCurrentTimeFactor(F32 factor) { sCurrentTimeFactor = factor; }; protected: - // internal operations act on motion instances directly - // as there can be duplicate motions per id during blending overlap - void deleteAllMotions(); - BOOL activateMotionInstance(LLMotion *motion, F32 time); - BOOL deactivateMotionInstance(LLMotion *motion); - void deprecateMotionInstance(LLMotion* motion); - BOOL stopMotionInstance(LLMotion *motion, BOOL stop_imemdiate); - void removeMotionInstance(LLMotion* motion); - void updateRegularMotions(); - void updateAdditiveMotions(); - void resetJointSignatures(); - void updateMotionsByType(LLMotion::LLMotionBlendType motion_type); - void updateIdleMotion(LLMotion* motionp); - void updateIdleActiveMotions(); - void purgeExcessMotions(); - void deactivateStoppedMotions(); + // internal operations act on motion instances directly + // as there can be duplicate motions per id during blending overlap + void deleteAllMotions(); + BOOL activateMotionInstance(LLMotion *motion, F32 time); + BOOL deactivateMotionInstance(LLMotion *motion); + void deprecateMotionInstance(LLMotion* motion); + BOOL stopMotionInstance(LLMotion *motion, BOOL stop_imemdiate); + void removeMotionInstance(LLMotion* motion); + void updateRegularMotions(); + void updateAdditiveMotions(); + void resetJointSignatures(); + void updateMotionsByType(LLMotion::LLMotionBlendType motion_type); + void updateIdleMotion(LLMotion* motionp); + void updateIdleActiveMotions(); + void purgeExcessMotions(); + void deactivateStoppedMotions(); protected: - F32 mTimeFactor; // 1.f for normal speed - static F32 sCurrentTimeFactor; // Value to use for initialization - static LLMotionRegistry sRegistry; - LLPoseBlender mPoseBlender; + F32 mTimeFactor; // 1.f for normal speed + static F32 sCurrentTimeFactor; // Value to use for initialization + static LLMotionRegistry sRegistry; + LLPoseBlender mPoseBlender; - LLCharacter *mCharacter; + LLCharacter *mCharacter; -// Life cycle of an animation: +// Life cycle of an animation: // -// Animations are instantiated and immediately put in the mAllMotions map for their entire lifetime. -// If the animations depend on any asset data, the appropriate data is fetched from the data server, -// and the animation is put on the mLoadingMotions list. -// Once an animations is loaded, it will be initialized and put on the mLoadedMotions list. -// Any animation that is currently playing also sits in the mActiveMotions list. - - typedef std::map<LLUUID, LLMotion*> motion_map_t; - motion_map_t mAllMotions; - - motion_set_t mLoadingMotions; - motion_set_t mLoadedMotions; - motion_list_t mActiveMotions; - motion_set_t mDeprecatedMotions; - - LLFrameTimer mTimer; - F32 mPrevTimerElapsed; - F32 mAnimTime; - F32 mLastTime; - BOOL mHasRunOnce; - BOOL mPaused; - S32 mPausedFrame; - F32 mTimeStep; - S32 mTimeStepCount; - F32 mLastInterp; - - U8 mJointSignature[2][LL_CHARACTER_MAX_ANIMATED_JOINTS]; +// Animations are instantiated and immediately put in the mAllMotions map for their entire lifetime. +// If the animations depend on any asset data, the appropriate data is fetched from the data server, +// and the animation is put on the mLoadingMotions list. +// Once an animations is loaded, it will be initialized and put on the mLoadedMotions list. +// Any animation that is currently playing also sits in the mActiveMotions list. + + typedef std::map<LLUUID, LLMotion*> motion_map_t; + motion_map_t mAllMotions; + + motion_set_t mLoadingMotions; + motion_set_t mLoadedMotions; + motion_list_t mActiveMotions; + motion_set_t mDeprecatedMotions; + + LLFrameTimer mTimer; + F32 mPrevTimerElapsed; + F32 mAnimTime; + F32 mLastTime; + BOOL mHasRunOnce; + BOOL mPaused; + S32 mPausedFrame; + F32 mTimeStep; + S32 mTimeStepCount; + F32 mLastInterp; + + U8 mJointSignature[2][LL_CHARACTER_MAX_ANIMATED_JOINTS]; private: - U32 mLastCountAfterPurge; //for logging and debugging purposes + U32 mLastCountAfterPurge; //for logging and debugging purposes }; //----------------------------------------------------------------------------- |