Pages: 1
- Accueil forums
- » Aide Irrlicht C++
- » Problème avec getSceneNodesFromType()
20-01-2009 13:52:37
- bubix
- Membres
- Date d'inscription:
- Messages: 9
- IP: 193.170.124.190
- Courriel
Salut,
J'ai a nouveau un probleme avec ce code:
irr::core::array<irr::scene::ISceneNode*> list;
SDevice::GetInstance()->getSceneManager()->getSceneNodesFromType(ESNT_EMPTY,list);
Est-ce que quelqu'un sait pourquoi la methode getSceneNodesFromType() ne me rertourne rien (list tjs vide)? Quelles peuvent être les raisons?
Où je peux chercher pour résoudre ce problème?
Merci.
Salutations.
bubix
Hors ligne
20-01-2009 14:30:02
- hardcpp
- Membres

- Date d'inscription:
- Messages: 229
- IP: 86.196.119.95
- Courriel
remplace ESNT_EMPTY par ESNT_ANY
Hors ligne
20-01-2009 16:07:56
- bubix
- Membres
- Date d'inscription:
- Messages: 9
- IP: 193.170.135.27
- Courriel
Salut hardcpp,
Alors j'ai essayé cela:
SDevice::GetInstance()->getSceneManager()->getSceneNodesFromType(irr::scene::ESNT_ANY,list);
Erreur de compilation. Il ne trouve pas le type ESNT_ANY. J'ai la version 1.4-2 de Irrlicht!
Hors ligne
20-01-2009 18:58:21
- johnplayer
- Membres

- Date d'inscription:
- Messages: 431
- IP: 83.198.225.71
- Courriel
Il faut mette une valeur de type ESCENE_NODE_TYPE selon le type de node que tu veux trouver. Et encore, il faut que le type que tu cherches existe au moins en un exemplaire. Car si tu mets getSceneNodesFromType(ESNT_LIGHT ,list) il faut que tu es créer un ILightSceneNode. Enfin, tu avais peut-etre compris mais on ne sait jamais. De plus, es-tu sur que list contient des valeurs adéquates?
core i7 4970K @ 4GHz - 32GB ddr3 19200(2400MHz) - ssd samsung 840 evo 250GB - GTX1080Ti (4K) - Cooler master storm stryker blanc.
"L'alcool, c'est comme Activia, c'est actif à l'intérieur et ça se voit à l'extérieur."
Hors ligne
20-01-2009 19:40:56
- bubix
- Membres
- Date d'inscription:
- Messages: 9
- IP: 193.170.135.27
- Courriel
J'ai le message d'erreur suivant:
error C2275: 'irr::scene::ESCENE_NODE_TYPE' : illegal use of this type as an expression
Pour ce code:
SDevice::GetInstance()->getSceneManager()->getSceneNodesFromType(ESCENE_NODE_TYPE,list);
ou celui-là
SDevice::GetInstance()->getSceneManager()->getSceneNodesFromType(irr::scene::ESCENE_NODE_TYPE,list);
Hors ligne
21-01-2009 08:13:03
- johnplayer
- Membres

- Date d'inscription:
- Messages: 431
- IP: 83.198.225.71
- Courriel
ESCENE_NODE_TYPE n'est que le nom de l'énumération.
SDevice::GetInstance()->getSceneManager()->getSceneNodesFromType(ESCENE_NODE_TYPE,list); est erroné. Une variable de type ESCENE_NODE_TYPE peut prendre différentes valeur. Voici la page de la doc : http://irrlicht.sourceforge.net/docu/namespaceirr_1_1scene.html#cad3d7ef92a9807d391ba29120f3b7bd
Exemple 1:
// tu déclares une variable
ESCENE_NODE_TYPE node_type = ESNT_CAMERA ; // pour détecter le premier node de camera
// ou
ESCENE_NODE_TYPE node_type = ESNT_BILLBOARD ; // pour obtenir le premier IBillboardSceneNode
// ect.
//puis tu l'utilises :
SDevice::GetInstance()->getSceneManager()->getSceneNodesFromType(node_type,list);Exemple 2:
Tu utilise directement une valeur de l'énumération
SDevice::GetInstance()->getSceneManager()->getSceneNodesFromType(ESNT_BILLBOARD,list); // pour obtenir le premier IBillboardSceneNodeJ'espère avoir étais assez clair car je ne maîtrise pas le C++ et j'ai encore du mal avec le vocabulaire associés.
Par contre, pour les premiers essais, si j'étais toi je mettrais NULL à la place de list comme ça il scrutera l'intégralité des noeuds de ta scène. Ca permettra de n'avoir qu'une source de problème. Ensuite, lorsque ça marcheras tu pourras voir pour list.
core i7 4970K @ 4GHz - 32GB ddr3 19200(2400MHz) - ssd samsung 840 evo 250GB - GTX1080Ti (4K) - Cooler master storm stryker blanc.
"L'alcool, c'est comme Activia, c'est actif à l'intérieur et ça se voit à l'extérieur."
Hors ligne
21-01-2009 10:25:41
- hardcpp
- Membres

- Date d'inscription:
- Messages: 229
- IP: 86.196.52.86
- Courriel
ou passe a la v1.5 de irrlicht
Hors ligne
23-01-2009 09:08:29
- bubix
- Membres
- Date d'inscription:
- Messages: 9
- IP: 193.170.124.190
- Courriel
Salut,
Alors j'aimerais seulement apporter encore quelques précisions au sujet de mon problème.
Je travail sur un projet dont le but est de développer un jeu. Pour cela on utilise irredit1.4 afin de créer l'environnement. Dans l'environnement on a ajoutté plusieurs "empty scenenode" à l'aide de l'icone qui figure dans la barre d'outils.
On a utilisé cette méthode pour avoir des points dans l'envirronement.
Apres cet ajout, dans le fichier .irr figure une ligne du genre pour chaque "empty scenenode":
<node type="empty">
<attributes>
<string name="emPNode" value="test" />
<int name="Id" value="0" />
...
Mais lorsque dans mon code C++ j'essaie de recuperer ces "empty scenenode":
getSceneNodesFromType(ESNT_EMPTY,list);
J'ai ma liste qui est tjs vide!
Dois-je modifier qqch dans le fichier .irr? Est-ce que la méthode utilisée est correcte?
Hors ligne
23-01-2009 09:21:57
- johnplayer
- Membres

- Date d'inscription:
- Messages: 431
- IP: 83.198.225.71
- Courriel
Sinon ne serait-il pas mieux d'utiliser les ID des nodes?
core i7 4970K @ 4GHz - 32GB ddr3 19200(2400MHz) - ssd samsung 840 evo 250GB - GTX1080Ti (4K) - Cooler master storm stryker blanc.
"L'alcool, c'est comme Activia, c'est actif à l'intérieur et ça se voit à l'extérieur."
Hors ligne
23-01-2009 13:15:21
- bubix
- Membres
- Date d'inscription:
- Messages: 9
- IP: 193.170.135.34
- Courriel
Eureka...!!!
Problème: Communication dans le groupe de projet.
Solution: En mode debug...il ne trouvait pas le fichier .irr.
Dans les propriétés du projet:
champs debbuging ->Working directory->ajoutter le path du fichier Debug du projet VStudio.
Donc désolé pour toutes les bêtises que j'ai notèes.
Merci.
Salutations.
bubix
Hors ligne



