Mercurial > MadButterfly
view include/mb_sprite.h @ 1160:1a699dc00fa3
Fix the issue of not removing node in old scene when switching scenes.
- When a timeline is playing and crossing two scenes (tween block),
nodes, for the old scene, in duplicate group must be removed. But,
it is not.
- It is fixed by checking if nodes, in the duplicate group, are also
in the key frame next to the new scene. All nodes that is not in
next key frame are remove.
author | Thinker K.F. Li <thinker@codemud.net> |
---|---|
date | Tue, 28 Dec 2010 13:35:34 +0800 |
parents | 8679b03f72e8 |
children |
line wrap: on
line source
#ifndef __MB_SPRITE_H_ #define __MB_SPRITE_H_ #include "mb_types.h" #include "mb_redraw_man.h" /*! \defgroup mb_sprite Implement sprites for animation. * @{ */ /*! \brief A sprite is a set of graphics that being an object in animation. * * A sprite include graphics comprise an object. For example, a tank, in * example tank, is comprised a set of graphics that is represented as a * sprite. */ struct _mb_sprite { void (*free)(mb_sprite_t *); mb_obj_t *(*get_obj_with_name)(mb_sprite_t *sprite, const char *id); /*! Return non-zero for error. */ int (*goto_scene)(mb_sprite_t *sprite, int scene_no); }; #define MB_SPRITE_FREE(sprite) ((mb_sprite_t *)(sprite))->free(sprite) #define MB_SPRITE_GET_OBJ(sprite, name) \ ((mb_sprite_t *)(sprite))->get_obj_with_name((mb_sprite_t *)(sprite), \ (name)) #define MB_SPRITE_GOTO_SCENE(sprite, scene_no) \ ((mb_sprite_t *)(sprite))->goto_scene((mb_sprite_t *)(sprite), scene_no) /*! \brief Load sprite dymanicly from the shared object module. * * The search path can be changed by sprite_set_search_path. The name * can have a relative path in the front of it. * This function will search the object in the current working directory * and then search the system search path. */ extern mb_sprite_t *sprite_load(const char *name, redraw_man_t *rdman, coord_t *root); /*! \brief Set the search path of dymanic object loading. * */ extern void sprite_set_search_path(const char *path); /*! \defgroup mb_sprite_lsym Sprite with linear symbol table. * @{ */ struct _mb_sprite_lsym_entry { const char *sym; const int offset; }; typedef struct _mb_sprite_lsym_entry mb_sprite_lsym_entry_t; /*! \brief A sub-type of mb_sprite_t with linear symbol table. * * This type of sprite search symbols with linear/or binary searching. */ struct _mb_sprite_lsym { mb_sprite_t sprite; int num_entries; mb_sprite_lsym_entry_t *entries; }; typedef struct _mb_sprite_lsym mb_sprite_lsym_t; /* @} */ /* @} */ #endif /* __MB_SPRITE_H_ */