Historique des modifications - Message

Message #8866

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


Type Date Auteur Contenu
Création du message 01-10-2010 18:30:15 TUpac
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 " cqfd smile
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

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