Historique des modifications - Message

Message #11669

Sujet: Système d'animation d'irrlicht


TypeDateAuteurContenu
Création du message15-06-2015 20:23:09jonath313
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

OptionsLiens officielsCaractéristiquesStatistiquesCommunauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1441 sujets
11339 messages
Dernier membre inscrit: Saidov17
90 invités en ligne
membre en ligne: -
RSS Feed