Historique des modifications - Message

Message #10641

Sujet: Test de gravité - Irrlicht + Newton


TypeDateAuteurContenu
Dernière modification11-08-2012 07:10:16Gehogor
Salut Kaze, alors j'ai vu deux trois tucs:

Déjà, pour ton code:
NewtonBodySetUserData(body, cubeNode);

Écris plutôt:
NewtonBodySetUserData(body,reinterpret_cast<void*>(cubeNode));

De cette manière, tu dis au compilo comment le pointeur de ton cubeNode doit être.

De plus, lorsque Newton désire changer la position du cube, il appelle le pointeur d'une méthode que tu peux capter, c'est la méthode:
void GrNewton::SetMeshTransformMesh(const NewtonBody* body,const float* matrix,int threadIndex)
{
    // On retransforme le pointeur dans la bonne forme.
    ISceneNode*cubeNode = reinterpret_cast<ISceneNode*>(NewtonBodyGetUserData(body));
    if(cubeNode == 0)
        return;

    // Conversion et création de la bonne matrice, ...
    cubeNode->setPosition(mat.getTranslation());
    cubeNode->setRotation(mat.getRotationDegrees());
}

Cette méthode se configure comme ça dans l'initialisation de ton code:
    ...ton code
    NewtonBodySetUserData(body, cubeNode);

    // Association d'une "Callback" (ici:SetMeshTransformMesh) à l'objet Newton,
    // elle sera appellée lorsque l'objet bougera selon le moteur Newton (il y a bcp d'exemple là dessus).
    NewtonBodySetTransformCallback(body,SetMeshTransformMesh);

Il est donc inutile d'écrire le code suivant dans la méthode "drawScene()":
NewtonBodyGetMatrix(body, mat.pointer());

Voilà, j'espère qu'il n'y avait que ça, désolé de ne pas être plus précis, ma fille pleure, il faut que j'y aille !smile
Création du message11-08-2012 07:07:57Gehogor
Salut Kaze, alors j'ai vu deux trois tucs:

Déjà, pour ton code:
NewtonBodySetUserData(body, cubeNode);

Écris plutôt:
NewtonBodySetUserData(body,reinterpret_cast<void*>(cubeNode));

De cette manière, tu dis au compilo comment le pointeur de ton cubeNode doit être.

De plus, lorsque Newton désire changer la position du cube, il appelle le pointeur d'une méthode que tu peux capter, c'est la méthode:
void GrNewton::SetMeshTransformMesh(const NewtonBody* body,const float* matrix,int threadIndex)
{
    // On retransforme le pointeur dans la bonne forme.
    ISceneNode*cubeNode = reinterpret_cast<ISceneNode*>(NewtonBodyGetUserData(body));
    if(cubeNode == 0)
        return;

    // Conversion et création de la bonne matrice, ...
    cubeNode->setPosition(mat.getTranslation());
    cubeNode->setRotation(mat.getRotationDegrees());
}

Cette méthode se configure comme ça dans l'initialisation de ton code:
    ...ton code
    NewtonBodySetUserData(body, cubeNode);

    // Association d'une "Callback" (ici:SetMeshTransformMesh) à l'objet Newton,
    // elle sera appellée lorsque l'objet bougera selon le moteur Newton (il y a bcp d'exemple là dessus).
    NewtonBodySetTransformCallback(body,SetMeshTransformMesh);

Il est donc inutile d'écrire le code suivant dans la méthode "drawScene()":
NewtonBodyGetMatrix(body, mat.pointer());

Voilà, j'espère qu'il n'y avait que ça, désolé de ne pas être plus précis, ma fille pleure, il faut que j'y aille !smile

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