Historique des modifications - Message

Message #11669

Sujet: Système d'animation d'irrlicht


Type Date Auteur Contenu
Création du message 15-06-2015 20:23:09 jonath313
ha oui j'avais pas vue que la parenthèse était après le template, du coups je suis arrivé à un code comme ceci :

Code c++ :


class AnimationBinder
{
    public:
        virtual void bind() = 0;
        virtual void unbind() = 0;
        virtual int priority() = 0;

        bool operator < (AnimationBinder *other)
        {
            return priority() < other->priority();
        }
        bool activated;
        bool binded;
};

class RunningState : public AnimationBinder
{
    public:
        RunningState(IAnimatedMeshSceneNode* NePlayer,int AnimPriority, int FrameStart, int FrameEnd, bool Frameloop = false)
        {
            NodePlayer = NePlayer;
            Apriority = AnimPriority;
            start = FrameStart;
            end = FrameEnd;
            loop = Frameloop;
        }
        virtual void bind()
        {
           binded = true;
           NodePlayer->setAnimationSpeed(50);
           NodePlayer->setLoopMode(loop);
           NodePlayer->setFrameLoop(start,end);
        }
        virtual void unbind()
        {
           binded = false;
           NodePlayer->setAnimationSpeed(50);
           NodePlayer->setLoopMode(false);
           NodePlayer->setFrameLoop(0,0);
        }
        virtual int priority()
        {
            return Apriority;
        }

        IAnimatedMeshSceneNode* NodePlayer;
        int Apriority;
        int start;
        int end;
        bool loop;
};

class AnimationManager
{
    public:
        AnimationManager(IAnimatedMeshSceneNode* NePlayer,int priority,int start, int end, bool loop = false)
        {
            anim.push_back(new RunningState(NePlayer,1,start,end,loop));
        }
        void activate(int animNumber, bool value)
        {
            auto current = anim[animNumber];
            current->activated = value;

            if(current->binded && !value)
                current->unbind();

            current = anim[0];

                 for(int i = 0; i<anim.size(); ++i)
                    if(current < anim[i] && anim[i]->activated)
                        current = anim[i];

                    if(current->activated && !current->binded)
                        current->bind();
        }
    private:
         std::vector<AnimationBinder*> anim;
};
#endif // CPLAYERANIMATION_H


Maintenant pour l'utiliser j'ai déclaré dans ma classe PLAYER :

Code c++ :


    AnimationBinder* machin = new RunningState::RuningState (NePlayer,1,0,80,true);


Le compilateur me dit :
||=== Build: Debug in Jeu (compiler: GNU GCC Compiler) ==neutral
...
||In member function 'void CPlayer::LoadPersoPhysics(irr::video::IVideoDriver*, irr::scene::ISceneManager*, btDiscreteDynamicsWorld*, btAxisSweep3*, int)'neutral
|207|error: expected type-specifier|
|207|error: cannot convert 'int*' to 'AnimationBinder*' in initialization|
|207|error: expected ',' or ';'|
||=== Build failed: 3 error(s), 13 warning(s) (0 minute(s), 2 second(s)) ==neutral

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
158 invités en ligne
membre en ligne: -
RSS Feed