FIFE
be64c707dea6b3250bd4355bf5c825d25920087d
|
#include <animation.h>
Classes | |
struct | FrameInfo |
Contains information about one animation frame (duration + frame index + frame pointer) More... | |
Public Member Functions | |
Animation (IResourceLoader *loader=0) | |
Constructor. More... | |
Animation (const std::string &name, IResourceLoader *loader=0) | |
~Animation () | |
Destructor. More... | |
virtual size_t | getSize () |
virtual void | load () |
virtual void | free () |
void | invalidate () |
void | addFrame (ImagePtr image, uint32_t duration) |
Adds new frame into animation Frames must be added starting from first frame. More... | |
int32_t | getFrameIndex (uint32_t timestamp) |
Get the frame index that matches given timestamp. More... | |
ImagePtr | getFrame (int32_t index) |
Gets the frame iamge that matches the given index. More... | |
ImagePtr | getFrameByTimestamp (uint32_t timestamp) |
Gets the frame image that matches the given timestamp. More... | |
std::vector< ImagePtr > | getFrames () |
Gets all frame images. More... | |
int32_t | getFrameDuration (int32_t index) const |
Gets the frame duration for given (indexed) frame. More... | |
uint32_t | getFrameCount () const |
Get the number of frames. More... | |
void | setActionFrame (int32_t num) |
Sets the action frame. More... | |
int32_t | getActionFrame () const |
Gets the action frame. More... | |
void | setDirection (uint32_t direction) |
Animation direction tells how this animation is associated with movement when played starting from frame 0 E.g. More... | |
uint32_t | getDirection () const |
Gets the animation direction. More... | |
uint32_t | getDuration () const |
Gets the total duration for the whole animation. More... | |
Public Member Functions inherited from FIFE::IResource | |
IResource (const std::string &name, IResourceLoader *loader=0) | |
virtual | ~IResource () |
virtual const std::string & | getName () |
ResourceHandle | getHandle () |
virtual ResourceState | getState () |
virtual void | setState (const ResourceState &state) |
Private Member Functions | |
std::string | createUniqueAnimationName () |
bool | isValidIndex (int32_t index) const |
Checks for animation frame index overflows. More... | |
Private Attributes | |
std::map< uint32_t, FrameInfo > | m_framemap |
std::vector< FrameInfo > | m_frames |
int32_t | m_action_frame |
int32_t | m_animation_endtime |
uint32_t | m_direction |
Additional Inherited Members | |
Public Types inherited from FIFE::IResource | |
enum | ResourceState { RES_INVALID = 0, RES_NOT_LOADED, RES_LOADED } |
Protected Attributes inherited from FIFE::IResource | |
std::string | m_name |
IResourceLoader * | m_loader |
ResourceState | m_state |
A container of Images describing an animation. Animation itself does not take care of animating the images. Instead it contains images having associated timestamps. It is the responsibility of the animation user to query frames based on current timestamp and show returned images on screen.
Definition at line 53 of file animation.h.
FIFE::Animation::Animation | ( | IResourceLoader * | loader = 0 | ) |
Constructor.
Definition at line 40 of file animation.cpp.
FIFE::Animation::Animation | ( | const std::string & | name, |
IResourceLoader * | loader = 0 |
||
) |
Definition at line 47 of file animation.cpp.
FIFE::Animation::~Animation | ( | ) |
Destructor.
Decreases the reference count of all referred images.
Definition at line 54 of file animation.cpp.
void FIFE::Animation::addFrame | ( | ImagePtr | image, |
uint32_t | duration | ||
) |
Adds new frame into animation Frames must be added starting from first frame.
Increases the reference count of the given image.
image | Pointer to Image. Does not transfer the ownership |
duration | Duration for given frame in the animation |
Definition at line 104 of file animation.cpp.
References FIFE::Animation::FrameInfo::duration, FIFE::Animation::FrameInfo::image, FIFE::Animation::FrameInfo::index, m_animation_endtime, m_framemap, and m_frames.
Referenced by FIFE::ObjectLoader::load(), and FIFE::AnimationLoader::loadAnimation().
|
private |
Definition at line 90 of file animation.cpp.
|
virtual |
Implements FIFE::IResource.
Definition at line 73 of file animation.cpp.
References m_frames, FIFE::IResource::m_state, and FIFE::IResource::RES_NOT_LOADED.
Referenced by invalidate().
|
inline |
Gets the action frame.
Definition at line 119 of file animation.h.
References m_action_frame, and setDirection().
Referenced by FIFE::LayerCache::updateVisual().
|
inline |
Gets the animation direction.
Definition at line 134 of file animation.h.
References m_direction.
Referenced by FIFE::ObjectLoader::load().
|
inline |
Gets the total duration for the whole animation.
Definition at line 138 of file animation.h.
References m_animation_endtime.
Referenced by FIFE::Cursor::draw(), FIFE::ObjectLoader::load(), fcn::AnimationIcon::logic(), FIFE::LightRendererAnimationInfo::render(), FIFE::OffRendererAnimationInfo::render(), FIFE::GenericRendererAnimationInfo::render(), FIFE::Camera::renderOverlay(), and FIFE::LayerCache::updateVisual().
ImagePtr FIFE::Animation::getFrame | ( | int32_t | index | ) |
Gets the frame iamge that matches the given index.
If no matches found, returns an invalid ImagePtr
Definition at line 139 of file animation.cpp.
References FIFE::IResource::getState(), isValidIndex(), FIFE::Image::load(), m_frames, and FIFE::IResource::RES_NOT_LOADED.
Referenced by fcn::AnimationIcon::AnimationIcon(), fcn::AnimationIcon::logic(), fcn::AnimationIcon::setAnimation(), and fcn::AnimationIcon::stop().
ImagePtr FIFE::Animation::getFrameByTimestamp | ( | uint32_t | timestamp | ) |
Gets the frame image that matches the given timestamp.
Definition at line 150 of file animation.cpp.
References FIFE::IResource::getState(), FIFE::Image::load(), m_animation_endtime, m_framemap, and FIFE::IResource::RES_NOT_LOADED.
Referenced by FIFE::Cursor::draw(), FIFE::LightRendererAnimationInfo::render(), FIFE::OffRendererAnimationInfo::render(), FIFE::GenericRendererAnimationInfo::render(), FIFE::Camera::renderOverlay(), FIFE::Cursor::set(), and FIFE::LayerCache::updateVisual().
uint32_t FIFE::Animation::getFrameCount | ( | ) | const |
Get the number of frames.
Definition at line 178 of file animation.cpp.
References m_frames.
Referenced by fcn::AnimationIcon::AnimationIcon(), FIFE::AnimationLoader::loadAnimation(), fcn::AnimationIcon::setAnimation(), fcn::AnimationIcon::stop(), and FIFE::LayerCache::updateVisual().
int32_t FIFE::Animation::getFrameDuration | ( | int32_t | index | ) | const |
Gets the frame duration for given (indexed) frame.
Returns negative value in case of incorrect index
Definition at line 171 of file animation.cpp.
References isValidIndex(), and m_frames.
int32_t FIFE::Animation::getFrameIndex | ( | uint32_t | timestamp | ) |
Get the frame index that matches given timestamp.
In case there is no exact match, correct frame is calculated. E.g. if there are frames for timestamps 50 and 100 and frame for 75 is asked, frame associated with value 50 is given back. In case the timestamp is past the sequence, negative value is returned
Definition at line 124 of file animation.cpp.
References m_animation_endtime, and m_framemap.
Referenced by fcn::AnimationIcon::logic(), and FIFE::LayerCache::updateVisual().
std::vector< ImagePtr > FIFE::Animation::getFrames | ( | ) |
Gets all frame images.
Definition at line 163 of file animation.cpp.
References m_frames.
Referenced by FIFE::ResourceAnimationLoader::load().
|
virtual |
Implements FIFE::IResource.
Definition at line 59 of file animation.cpp.
void FIFE::Animation::invalidate | ( | ) |
Definition at line 81 of file animation.cpp.
References free(), m_action_frame, m_animation_endtime, m_direction, m_framemap, and m_frames.
|
private |
Checks for animation frame index overflows.
Definition at line 134 of file animation.cpp.
References m_frames.
Referenced by getFrame(), and getFrameDuration().
|
virtual |
Implements FIFE::IResource.
Definition at line 63 of file animation.cpp.
References FIFE::ResourceAnimationLoader::load(), FIFE::IResourceLoader::load(), FIFE::IResource::m_loader, FIFE::IResource::m_state, and FIFE::IResource::RES_LOADED.
Referenced by FIFE::AnimationManager::load().
|
inline |
Sets the action frame.
Action frame is the frame when the related action actually happens. E.g. in case of punch animation, action frame is the frame when punch hits the target. In case there is no associated action frame, value is negative
num | index of the action frame. |
Definition at line 114 of file animation.h.
References m_action_frame.
Referenced by FIFE::ObjectLoader::load(), and FIFE::AnimationLoader::loadAnimation().
void FIFE::Animation::setDirection | ( | uint32_t | direction | ) |
Animation direction tells how this animation is associated with movement when played starting from frame 0 E.g.
in walking animation there should be direction assigned so that engine can choose the correct animation when characters are moved around the map area
direction | direction to set |
Definition at line 182 of file animation.cpp.
References m_direction.
Referenced by getActionFrame(), and FIFE::AnimationLoader::loadAnimation().
|
private |
Definition at line 160 of file animation.h.
Referenced by getActionFrame(), invalidate(), and setActionFrame().
|
private |
Definition at line 162 of file animation.h.
Referenced by addFrame(), getDuration(), getFrameByTimestamp(), getFrameIndex(), and invalidate().
|
private |
Definition at line 164 of file animation.h.
Referenced by getDirection(), invalidate(), and setDirection().
|
private |
Definition at line 156 of file animation.h.
Referenced by addFrame(), getFrameByTimestamp(), getFrameIndex(), and invalidate().
|
private |
Definition at line 158 of file animation.h.
Referenced by addFrame(), free(), getFrame(), getFrameCount(), getFrameDuration(), getFrames(), invalidate(), and isValidIndex().