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.