Historique des modifications - Message

Message #11680

Sujet: Système d'animation d'irrlicht


Type Date Auteur Contenu
Création du message 19-06-2015 09:06:11 Magun
Est-ce que je peux Passer le AnimationManager* à GenericState ?

biensur comme tu a fait, c'est bon
tu peut envoyer ce que tu veut

Code c++ :


int getCurrentActiveAnimation()
{
       auto current = anim[animNumber];
       current->activated = value;
       return  value;
}
je ne suis pas convaincue, puisque déjà il peut y avoir plusieurs animation active, mais une seul de "binder"
et puis généralement un getter n'oppère pas de modifications, bon ça à la rigueur ...

bon ensuite en ce qui concerne ton unbind ce que tu fait reviens à

Code c++ :


void GenericState::unbind()
{
   binded = false;
   int ActiveAnimation = amgr -> getCurrentActiveAnimation();
   amgr->active(ActiveAnimation, amgr->anim[ActiveAnimation].activated);
}

or unbind est déjà appeller par amgr->activated(..), donc tu tourne en rond pour faire la même chose qui ce produit plus haut
et donc (activated = false)

Code c++ :


void GenericState::unbind()
{
   binded = false;
   if(activated) bind();
   else unbind();
}


je vais essyer d'être encore plus claire

Code c++ :


void AnimationManager::activate(int animNumber, bool value)
{
       auto current = anim[animNumber];
       // ici on active ou desactive l'animation visé
       current->activated = value;

       // si c'était une animation prioritaire et quelle n'est plus active on n'arrete de la jouer
       if(current->binded && !value)
           current->unbind();

       current = anim[0];

       // on recherche l'animation active aillent la plus grosse prioriter et active
       for(int i = 0; i<anim.size(); ++i)
            if(current < anim[i] && anim[i]->activated)
               current = anim[i];

        // si une animation est trouver c'est quelle est prioritaire et active
        // si elle n'est pas jouer alors on la joue
        if(current->activated && !current->binded)
              current->bind();
}


donc admeton que tu est 3 animation, idle, run, attack
idle est toujours active de plus faible prioriter, sans suit run et attack

si tu active run, c'est la plus forte prioriter elle ce joue
si tu active attack, c'est la plus forte prioriter elle ce joue (run est toujours activer)
si tu desactive run, rien ne ce passe attack est toujours la plus forte
si tu desactive attack, idle deviens la plus forte prioriter, elle ce joue

la fonctions bind nottify l'état "jouer l'animation" et unbind par "arreter de l'animation" ...
"binded" correspond a l'état, l'animation est en "lecture"
mais si tu arrete une animation, c'est qu'une autre va en prendre la place

c'est pas plus compilquer que ça
pour le reste, j'en reviens a mon poste précédent

Retour

Options Liens officiels Caractéristiques Statistiques Communauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
144 invités en ligne
membre en ligne: -
RSS Feed