- Page principale
- Espaces de nommage
- Classes
- Fichiers

- Liste des fichiers
- Membres de fichier

# src/Animation/Animation.hpp

Aller à la documentation de ce fichier.

    00001 #ifndef ANIMATION_HPP
    00002 #define ANIMATION_HPP
    00003
    00004 // Détection du système cible...
    00005 #include "usgeDetectSystem.h"
    00006
    00007 #include <vector>
    00008 // Les types "USpeed Game Engine"
    00009 #include "Core/CoreTypes.hpp"
    00010
    00011 // La classe de chrono
    00012 #include "Chrono/Chrono.hpp"
    00013
    00014 namespace USpeedGameEngine
    00015 {
    00016
    00017 class Animation
    00018 {
    00019     /****************
    00020     * Les attributs *
    00021     ****************/
    00022     public :
    00023     protected :
    00024     private :
    00025         Chrono msTime;
    00026         unsigned int currentFrame;
    00027         bool running;
    00028         bool looping;
    00029         USGE_KeyFrame current;
    00030         std::vector<USGE_KeyFrame> frames;
    00031
    00032     /***************
    00033     * Les méthodes *
    00034     ***************/
    00035     public :
    00036         // Destructeur par défaut.
    00037         ~Animation();
    00038         // Constructeur par défaut.
    00039         Animation();
    00040
    00041         // Remise à zéro de l'instance de la classe.
    00042         void clear();
    00043
    00044         // Retourne la valeur actuelle en fonction du temps écoulé et de la durée de l'animation.
    00045         static double getInterpolation(unsigned long int duration, unsigned long int currentTime, double from, double to);
    00046         // Permet de minimiser les déplacements en rotation via un modulo et éventuellement une modification du sens de rotation.
    00047         static USGE_Float3 minimizeRotations(USGE_Float3 const &from, USGE_Float3 const &to);
    00048         static USGE_Float3 minimizeRotations(USGE_Float3 const &from, USGE_Float3 const &to, bool moduloOnly);
    00049         static void minimizeRotations(USGE_Float3 const &from, USGE_Float3 const &to, bool moduloOnly, USGE_Float3 &target);
    00050
    00052         // États des l'animation //
    00054         // Ajout d'une trame clé.
    00055         void addKeyFrame(USGE_KeyFrame const &keyFrame);
    00056         void addKeyFrame(USGE_KeyFrame const &keyFrame, unsigned int position);
    00057         // Retrait d'une trame clé.
    00058         void removeKeyFrame(unsigned int position);
    00059         // Suppression de toutes les trames clé.
    00060         void removeAll();
    00061
    00062         // Retourne le nombre de trames clé.
    00063         unsigned long int getKeyFramesCount();
    00064         // Récupération de la trame spécifiée.
    00065         USGE_KeyFrame *operator[](const unsigned long int index);
    00066         // Récupération des informations actuelles.
    00067         USGE_KeyFrame getInfos();
    00068         void getInfos(USGE_KeyFrame &frame);
    00069
    00071         // Contrôles de l'animation //
    00073         // Démarrage de l'animation.
    00074         void start();
    00075         // Redémarrage de l'animation depuis les informations initiales.
    00076         void restart();
    00077         // Arrêt (pause) de l'animation.
    00078         void pause();
    00079         // Arrêt et retour au début de l'animation.
    00080         void stop();
    00081         // Permet de savoir si l'animation est en cours.
    00082         bool isRunning();
    00083         // Lancement du calcul d'interpolation sur toutes les informations.
    00084         void interpolate();
    00085         // Mise en boucle de l'animation.
    00086         void loop(bool active);
    00087         // Permet de connaître l'état de mise en boucle de l'animation.
    00088         bool isLooping();
    00089
    00090     protected :
    00091     private :
    00092 };
    00093
    00094 }        // Fin "namespace USpeedGameEngine"
    00095
    00096 #endif