Des nouvelles:
Il y a
thor::MultiResourceCache qui peut s'occuper de plusieures types de resource. Cela veut dire qu'il ne faut plus avoir des différentes managers, un pour chaque resource (mais c'est encore possible avec
thor::ResourceCache):
thor::MultiResourceCache cache;
cache.acquire( thor::Resources::fromFile<sf::Image>(...) );
cache.acquire( thor::Resources::fromFile<sf::SoundBuffer>(...) );
J'ai implementé la nouvelle API des animations. Au lieu de l'héritage et des
std::shared_ptr, il y a maintenant des functors.
thor::Animator est devenu un template pour permettre des IDs et des objets animés definis par l'utilisateur. Par exemple, on peut animer
sf::Text et utiliser des enums au lieu des strings:
thor::Animator<sf::Text, MyEnum> animator;
La classe
thor::Animation a été enlevé, maintenant tout ce qui a un
operator() avec une telle signature est considéré comme animation:
void operator() (Animated& animated, float progress) const;
Cela inclut les fonctions normales et les expressions lambda, par exemple c'est possible de definir une animation
reverse qui renverse une autre animation
anim en utilisant une seule ligne:
auto reverse = [anim] (sf::Sprite& s, float pr) { return anim(s, 1.f - pr); };
Et l'ancien code
thor::FrameAnimation::Ptr explosion = thor::FrameAnimation::create();
explosion.addFrame(1.f, sf::IntRect(...));
explosion.addFrame(1.5f, sf::IntRect(...));
thor::Animator animator;
animator.addAnimation("expl", explosion, sf::seconds(3));
est changé à
thor::FrameAnimation explosion;
explosion.addFrame(1.f, sf::IntRect(...));
explosion.addFrame(1.5f, sf::IntRect(...));
thor::Animator<sf::Sprite, std::string> animator;
animator.addAnimation("expl", explosion, sf::seconds(3));
Le module est encore assez petit, je projètte d'implementer plus des animations (e.g. des gradients de couleur) et des primitives (renverser, concaténer).