Historique des modifications - Message

Message #10423

Sujet: Camera trackball SDZ


Type Date Auteur Contenu
Création du message 03-04-2012 12:29:10 johnplayer
Je ne vois aucune erreur mais d'après ce que j'ai compris : ton code compile, le programme tourne sans planter mais l'appui sur les touches ne fait rien.
Pour voir si c'est pas la souris qui pose problème, mets ton event en commentaire et essaie celui-ci:

bool CSceneNodeAnimatorCameraTrackball::OnEvent(const irr::SEvent& event)
{
    plog->Write("Event On");

    if (event.EventType == irr::EET_KEY_INPUT_EVENT)
    {
            switch(event.KeyInput.Key)
            {
                case irr::KEY_ESCAPE:
                    //
                return true;

                case irr::KEY_KEY_A:
                {
		    plog->Write("Le bouton 'A' a bien été actionné.");
                    //
		    if(event.KeyInput.PressedDown) this->m_isPressed = true;
		    else this->m_isPressed = false;
                }
                return true;
	        default:
	        return true;
	    }
    }


    if(event.EventType == irr::EET_MOUSE_INPUT_EVENT)
    {
        plog->Write("Mouse IN");
        switch(event.MouseInput.Event)
        {
	/**
        case irr::EMIE_LMOUSE_PRESSED_DOWN:
            {
                plog->Write("LMOUSE Down");
                this->m_isPressed = true;
                return true;
            }
        case irr::EMIE_LMOUSE_LEFT_UP:
            {
                plog->Write("LMOUSE Left");
                this->m_isPressed = false;
                return true;
            }
	**/
        case irr::EMIE_MOUSE_WHEEL:
            {
                plog->Write("MOUSE Wheel");
                if ( event.MouseInput.Wheel > 0 )
                    {
                        m_radius -= 1.0f * m_moveSpeed;
                    }
                else
                    {
                        m_radius += 1.0f * m_moveSpeed;
                    }
                this->m_wheel = true;
                return true;
            }
        case irr::EMIE_MOUSE_MOVED:
            {
                if (this->m_isPressed == false)
                {
                    this->m_cursorPos = this->m_cursorControl->getRelativePosition();
                    return true;
                }
                    // if the left button is pressed, then we get the change and
                    // set the rotation vector. And update the position
                else if (this->m_isPressed == true)
                {
                    m_cursorMove = m_cursorControl->getRelativePosition() - m_cursorPos;
                    m_rotation.X += m_cursorMove.X * m_rotateSpeed;
                    m_rotation.Y += m_cursorMove.Y * m_rotateSpeed;
                        // check the Y change to prevent vertical looping
                    if (m_rotation.Y >= MAXANGLE) { m_rotation.Y = MAXANGLE; }
                    else if (m_rotation.Y <= -MAXANGLE) { m_rotation.Y = -MAXANGLE; }
                    m_cursorPos = m_cursorControl->getRelativePosition();
                    return true;
                }
            }
        }
    }
    plog->Write("Event End");
    return false;   // event not proceeded
}

Si le bouton A n'a aucun effet, il faut peut-être voir à ce niveau du code :
"Comme nous l'avons vu plus haut, il est indispensable de redéfinir isEventReceiverEnabled pour indiquer au node auquel est attaché l'animator, que celui-ci doit bien recevoir les events."
Il en parle dans le tuto juste avant le paragraphe "Implémentation de la caméra".

Je compte me créer une camera personnelle aussi mais ce n'est pas encore au programme donc je vais avoir du mal a t'aider.

PS : Sinon tu peux aussi attacher ton animator à un ISceneNode avec un mesh et regarder comment le mesh se comporte.

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