Historique des modifications - Message

Message #8866

Sujet: appuis / relachement d'un bouton de la souris


TypeDateAuteurContenu
Création du message01-10-2010 18:30:15TUpac
Le problème est la:

Code c++ :


void CEventReceiver::majPosMesh()// fonction de MAJ de la position du node
{

                f32 vitesse_deplacement = 1.f; // la y'en a un autre
        f32 vitesse_rotation = 1.2f; // la aussi :)


if(m_Nmodele != 0 && rotation == true)
    {
    
        position2d<f32> LastPos; /* ICI */
         

Ton erreur c'est de créer tes variables dans la mise à jour. LastPos est ré-instanciée à chaque boucle avec la valeur 0. et " x - 0 = x " cqfdsmile
Tu fais la même erreur (avec des conséquences différentes) sur vitesseDep et vitesseRot. Soit ils sont constants et c'est une perte de performances car tu crée & delete des variables. Le cas échéant tu devrais remplacer ces variables par des defines.
Si c'est amené à changer, c'est pareil que pour lastpos, il faut l'intégrer à la class ou ailleurs mais pas dans la fonction de mise à jour.

Code c++ :



#define vitesse_deplacement  1.f
#define vitesse_rotation  1.2f


position2d<s32> LastPos;
position2d<s32> cursor;

bool CEventReceiver::OnEvent(const irr::SEvent &event)
{
    ///////////////////// ROTATION JOUEUR ///////////////////

if (event.EventType == EET_MOUSE_INPUT_EVENT)
{
    if(event.MouseInput.Event== EMIE_RMOUSE_PRESSED_DOWN)
    {

        cursor.X = event.MouseInput.X; 
        rotation = true;
    }
    else
    rotation = false;
    return true;           

.............................

void CEventReceiver::majPosMesh()// fonction de MAJ de la position du node
{
    if(m_Nmodele != 0 && rotation == true)
    {
        irr::core::vector3df rotation = m_Nmodele->getRotation(); 
        f32 Movement = (LastPos.X - cursor.X) /sensibilite_souris;
        rotation.Y += Movement; 
       m_Nmodele->setRotation(rotation);
        
       LastPos.X = cursor.X;


     if(m_Nmodele != 0 && gauche == true)
    {
       
        irr::core::vector3df r = m_Nmodele->getRotation();    
         r.Y -= vitesse_rotation;    
        m_Nmodele->setRotation(r);    

    }
.............................................
    }

Voilà ça devrait marcher mieu comme ça.wink

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