Pages: 1
Bonjour tout le monde
J'ai un petit souci avec la fonction getPosition() de la classe ICursorControl.
je recupere mon curseur sans probleme mon pointeur est bon...
mais quand je fais un getPosition il me ressort quelques choses du genre :
X : 49000000 et Y:11
quand je bouge le curseur le X bouge entre 3 valeurs c'est tout.
Je possede une cameraFPS, est ce qu'il peut y avoir une incompatibilité entre les deux..
merci d'avance
Hors ligne
Si mes souvenirs sont bon, la camera fps lock le curseur au milieu donc peut être que ça fou le bazard, as-tu essayé avec une camera toute simple pour voir si le getPosition renvoyai une valeur correcte ?
Hors ligne
la camera fps bloque le curseur au centre... j'ai testés avec une camera Maya, et je crois que j'avais le même souci, mais pas sur à 100%
Hors ligne
J'ai testés avec une camera classique, et même sans caméra. J'ai toujours des valeurs du getPosition qui sont fausses...
est ce quelqu'un a une idée.
j'ai la version d'irrlicht 1.3.1, si ça peut aider...
merci d'avance
Hors ligne
Fais voir le code.
Hors ligne
voila le code moins tout ce qui ne doit pas poser de soucis...
#include <irrlicht.h> #include <iostream> using namespace irr; using namespace core; using namespace scene; using namespace video; using namespace io; using namespace gui; #pragma comment(lib, "Irrlicht.lib"); IrrlichtDevice *device = 0; ISceneManager* smgr =0; IVideoDriver* driver =0; int main() { device = createDevice(EDT_OPENGL,dimension2d<s32>(800,600),16, false,true,false,0); smgr = device->getSceneManager(); driver = device->getVideoDriver(); IGUIEnvironment* env = device->getGUIEnvironment(); driver->setTextureCreationFlag(video::ETCF_ALWAYS_32_BIT, true); ISceneNode* marqueur1 = smgr->addSphereSceneNode(100,16,0,1001,vector3df(0,1000,0),vector3df(0, 0, 0),vector3df(1.0f,10.0f, 1.0f)); marqueur1->setMaterialTexture(0, driver->getTexture("Texture/rouge.bmp")); ISceneNode* marqueur2 = marqueur1->clone(0,smgr); marqueur2->setID(1002); ISceneNode* marqueur3 = marqueur1->clone(0,smgr); marqueur3->setID(1003); ISceneNode* marqueur4 = marqueur1->clone(0,smgr); marqueur4->setID(1004); ISceneNode* marqueur5 = marqueur1->clone(0,smgr); marqueur5->setID(1005); ISceneNode* marqueur6 = marqueur1->clone(0,smgr); marqueur6->setID(1006); ISceneNode* marqueur7 = marqueur1->clone(0,smgr); marqueur7->setID(1007); ISceneNode* marqueur8 = marqueur1->clone(0,smgr); marqueur8->setID(1008); ISceneNode* marqueur9 = marqueur1->clone(0,smgr); marqueur9->setID(1009); marqueur1->setPosition (vector3df(finX-404794.0f,1000,finY-342999.0f)); marqueur2->setPosition (vector3df(finX-401461.0f,1000,finY-344706.0f)); marqueur3->setPosition (vector3df(finX-407327.0f,1000,finY-344305.0f)); marqueur4->setPosition (vector3df(finX-407640.0f,1000,finY-337136.0f)); marqueur5->setPosition (vector3df(finX-401951.0f,1000,finY-335944.0f)); marqueur6->setPosition (vector3df(finX-398475.0f,1000,finY-345876.0f)); marqueur7->setPosition (vector3df(finX-406312.0f,1000,finY-348221.0f)); marqueur8->setPosition (vector3df(finX-413298.0f,1000,finY-339334.0f)); marqueur9->setPosition (vector3df(finX-398516.0f,1000,finY-336787.0f)); // add camera ICameraSceneNode* camera = smgr->addCameraSceneNodeFPS(0,100.0f,5000.0f); camera->setPosition(vector3df(0.0f,4000.0f,0.0f)); camera->setTarget(vector3df(xTarget,0.0f,zTarget); camera->setFarValue(100000.0f); while(device->run()) { if (device->isWindowActive()) { driver->beginScene(true, true, SColor (255,255,255,255) ); smgr->drawAll(); env->drawAll(); driver->drawStencilShadow (); driver->endScene(); ICursorControl * cursor = device->getCursorControl(); position2di posCursor = device->getCursorControl()->getPosition(); // position2di posCursor = position2di(400,300); --> si j'active cet ligne la détection de la ligne d'en dessous fonctionne ISceneNode *node = smgr->getSceneCollisionManager()->getSceneNodeFromScreenCoordinatesBB(posCursor); } } device->drop(); return 0; }
est ce que vous voyez quelque chose qui ferait que ça ne marche pas...
Hors ligne
Pas de réponse personne ne sait..
à priori ça ne doit pas venir de la caméra masi du cursor...
lorsque je fais :
device->getCursorControl()->setVisible(false);
qui est censés rendre le curseur invisible, le programme plante au lancement..
doit on faire autres choses avant le getCursolControl.??
Hors ligne
Oups, j'avais carrément oublié ton post, désolé...
Pour tout tes variables marqueurs, tu devrais faire un tableau.
Là tu récupère un pointeur :
ICursorControl * cursor = device->getCursorControl();
Mais tu ne t'en sers pas juste en dessous.
lorsque je fais :
device->getCursorControl()->setVisible(false);
qui est censés rendre le curseur invisible, le programme plante au lancement..
As tu essayé d'utiliser le déboggeur là dessus ?
#pragma comment(lib, "Irrlicht.lib");
Ca n'est pas portable. Selon le compilateur ça peut marcher ou pas.
Hors ligne
Salut !
Même si ce n'est pas forcément ce que tu cherche : moi ça marche avec irrlicht 1.2/1.3.1/1.4 sur DevCPP et Code::Block
Déclaration de variable :
s32 postionX, postionY;
Dans la boucle principal :
positionX = device->getCursorControl()->getPosition().X;//On recupere
positionY = device->getCursorControl()->getPosition().Y;//les position XY
C'est peut êtres "sale" et lourd, mais plus maniable je trouve. (et surtout ça marche, bien que je n'est pas essayer autre chose )
Essaye au moins voir si c'est ton compiler qui a du mal...
a+
w
EDIT : bon, mes truc ne servent a rien en faite (je vient de piger ton code ><)
Essaye de mettre ton "device->getCursorControl()->getPosition()"
device->run()
ICI
smgr->drawAll();
env->drawAll();
idem pour le setVisible
Ca changera surement rien mais moi c'est la qu'ils se trouvent et ça marche...
a+
w
Dernière modification par Willikus (02-12-2007 11:51:51)
Hors ligne
Pour la déclaration du pointeur cursor, ça ne servait que pour l'afficher, donc il est virer..
ensuite pour le setVisible, lorsqu'il plante j'ai ça
An Exception 'Unhandlel Win32 Exception' has occured il gdb.exe.
However, no debuggers are registered thaht can debug this exception. Unable to JIT debug
gdb.exe c'est quoi comme programme..??
si c'est erreur vous dit quelques choses...
Hors ligne
gdb.exe c'est quoi comme programme..??
Le debuggeur de GCC (et donc de MinGW)
Hors ligne
Pages: 1
Options | Liens officiels | Caractéristiques | Statistiques | Communauté |
---|---|---|---|---|
Corrections |
|
xhtml 1.0 css 2.1 Propulsé par FluxBB Traduit par FluxBB.fr |
882 membres 1429 sujets 11119 messages |
Dernier membre inscrit: LiseBuisson96 44 invités en ligne Aucun membre connecté RSS Feed |