27-11-2007 17:13:56
- blibsnake
- Membres
- Date d'inscription:
- Messages: 6
- IP: 90.52.41.18
- Courriel
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
27-11-2007 18:11:26
- Copland
- Modérateurs
- Date d'inscription:
- Messages: 657
- IP: 90.5.156.159
- Courriel Site web
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 ?
Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.
Hors ligne
27-11-2007 18:15:48
- blibsnake
- Membres
- Date d'inscription:
- Messages: 6
- IP: 90.52.41.18
- Courriel
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
28-11-2007 10:13:38
- blibsnake
- Membres
- Date d'inscription:
- Messages: 6
- IP: 62.147.250.60
- Courriel
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
28-11-2007 11:57:37
- Kevin Leonhart
- Membres
- Date d'inscription:
- Messages: 33
- IP: 83.198.99.21
- Courriel Site web
Fais voir le code.
Hors ligne
28-11-2007 13:58:37
- blibsnake
- Membres
- Date d'inscription:
- Messages: 6
- IP: 62.147.250.60
- Courriel
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
30-11-2007 09:44:39
- blibsnake
- Membres
- Date d'inscription:
- Messages: 6
- IP: 62.147.250.60
- Courriel
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
01-12-2007 10:12:57
- Kevin Leonhart
- Membres
- Date d'inscription:
- Messages: 33
- IP: 90.34.164.137
- Courriel Site web
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
02-12-2007 10:46:27
- Willikus
- Membres

- Date d'inscription:
- Messages: 150
- IP: 86.220.133.132
- Courriel Site web
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
Athlon 3000+ / 1024Mo PC3200 /8800 GTS
Hors ligne
03-12-2007 08:50:35
- blibsnake
- Membres
- Date d'inscription:
- Messages: 6
- IP: 62.147.250.60
- Courriel
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
03-12-2007 14:50:52
- Aranoth
- Membres

- Date d'inscription:
- Messages: 242
- IP: 194.140.247.254
- Courriel Site web
gdb.exe c'est quoi comme programme..??
Le debuggeur de GCC (et donc de MinGW)
Hors ligne



