127 lines
4.6 KiB
C++
127 lines
4.6 KiB
C++
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
|
|
// Copyright (C) 2010 Winch Gate Property Limited
|
|
//
|
|
// This program is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU Affero General Public License as
|
|
// published by the Free Software Foundation, either version 3 of the
|
|
// License, or (at your option) any later version.
|
|
//
|
|
// This program 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 Affero General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU Affero General Public License
|
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
#ifndef CL_ANIMATION_MISC_H
|
|
#define CL_ANIMATION_MISC_H
|
|
|
|
/////////////
|
|
// INCLUDE //
|
|
/////////////
|
|
// misc
|
|
#include "nel/misc/types_nl.h"
|
|
#include "nel/misc/vector.h"
|
|
#include "nel/misc/quat.h"
|
|
// 3d
|
|
#include "nel/3d/u_animation_set.h"
|
|
#include "nel/3d/animation_time.h"
|
|
#include "nel/3d/u_animation.h"
|
|
|
|
|
|
///////////
|
|
// CLASS //
|
|
///////////
|
|
/**
|
|
* <Class description>
|
|
* \author Guillaume PUZIN (GUIGUI)
|
|
* \author Nevrax France
|
|
* \date 2002
|
|
*/
|
|
class CAnimationMisc
|
|
{
|
|
public:
|
|
/// Constructor
|
|
CAnimationMisc();
|
|
|
|
/**
|
|
* Function to get the position in an animation at timeOffset.
|
|
* \param animationSet : search the animation in this set.
|
|
* \param idAnim : id of the animation.
|
|
* \param timeOffset : time for the interpolation.
|
|
* \param result : is the reference on the value to get the result (position).
|
|
* \return bool : true if the parameter result is valid.
|
|
*/
|
|
static bool interpolate(NL3D::UAnimationSet *animationSet, uint idAnim, double timeOffset, NLMISC::CVector &result);
|
|
/**
|
|
* Function to get the rotation in an animation at timeOffset.
|
|
* \param animationSet : search the animation in this set.
|
|
* \param idAnim : id of the animation.
|
|
* \param timeOffset : time for the interpolation.
|
|
* \param result : is the reference on the value to get the result (rotation).
|
|
* \return bool : true if the parameter result is valid.
|
|
*/
|
|
static bool interpolate(NL3D::UAnimationSet *animationSet, uint idAnim, double timeOffset, NLMISC::CQuat &result);
|
|
|
|
/**
|
|
* Return an animation length (in sec).
|
|
* \param animationSet : search the animation in this set.
|
|
* \param string animName : Animation Name.
|
|
* \return double : the length of the animation or 0 if any pb.
|
|
* \warning This Method is slower than the one with the animation Id instead of the animation Name.
|
|
*/
|
|
static double getAnimationLength(NL3D::UAnimationSet *animationSet, const std::string &animName);
|
|
/**
|
|
* Return an animation length (in sec).
|
|
* \param animationSet : search the animation in this set.
|
|
* \param idAnim : id of the animation.
|
|
* \return double : the length of the animation or 0 if any pb.
|
|
*/
|
|
static double getAnimationLength(NL3D::UAnimationSet *animationSet, uint idAnim);
|
|
|
|
/**
|
|
* Get the average speed of an animation (in meters/sec).
|
|
* \param animationSet : search the animation in this set.
|
|
* \param string animName : Animation Name.
|
|
* \return double : the average speed (in m/s).
|
|
*/
|
|
static double getAnimationAverageSpeed(NL3D::UAnimationSet *animationSet, const std::string &animName);
|
|
/**
|
|
* Get the average speed of an animation (in meters/sec).
|
|
* \param animationSet : search the animation in this set.
|
|
* \param idAnim : id of the animation.
|
|
* \return double : the average speed (in m/s).
|
|
*/
|
|
static double getAnimationAverageSpeed(NL3D::UAnimationSet *animationSet, uint idAnim);
|
|
|
|
/**
|
|
* Get the rotation done by the animation (in radian).
|
|
* \param animationSet : search the animation in this set.
|
|
* \param string animName : Animation Name.
|
|
* \return double : the rotation (in radian).
|
|
*/
|
|
static double getAnimationRotation(NL3D::UAnimationSet *animationSet, const std::string &animName);
|
|
/**
|
|
* Get the rotation done by the animation (in radian).
|
|
* \param animationSet : search the animation in this set.
|
|
* \param idAnim : id of the animation.
|
|
* \return double : the rotation (in radian).
|
|
*/
|
|
static double getAnimationRotation(NL3D::UAnimationSet *animationSet, uint idAnim);
|
|
|
|
/** // Get the vector covered by the given animation.
|
|
* \param animationSet : search the animation in this set.
|
|
* \param idAnim : id of the animation.
|
|
* \param move : filled with the vector of the move if possible
|
|
* \return bool : true if 'move' has been filled, else false.
|
|
*/
|
|
static bool getAnimationMove(NL3D::UAnimationSet *animationSet, uint idAnim, NLMISC::CVector &move);
|
|
};
|
|
|
|
|
|
#endif // CL_ANIMATION_MISC_H
|
|
|
|
/* End of animation_misc.h */
|