#1 

26-02-2012 10:20:56

Memorial76
Membres
Date d'inscription:
Messages: 67
IP: 90.51.201.202
Courriel

Bonjour,
Afin de simplifier la gestion des collisions dans mon programme, j'ai décidé de simplement tester si deux bounding box étaient en intersection. En l'ocurence (et en attendant d'améliorer la chose) entre celle du personnage de l'utilisateur et toutes les autres.
Pour cela, je parcoure mon Scenegraph et à j'effectue le test pour tous ceux dont l'id n'est pas à -1 (caméra, lumière, terrain etc...)

Voici le code en question:

for( irr::core::list<irr::scene::ISceneNode*>::ConstIterator iterator = m_pSceneMgr->getRootSceneNode()->getChildren().begin();
iterator != m_pSceneMgr->getRootSceneNode()->getChildren().end();
iterator++)
{
irr::scene::ISceneNode* pTestSceneNode = *iterator;
if( m_pUserSceneNode->getBoundingBox().intersectsWithBox(pTestSceneNode->getBoundingBox()) && pTestSceneNode->getID() != -1)
{
(...)
}
}

Seulement voilà, le test se révèle vrai systématiquement pour tous les nodes de la scène. Je ne comprend pas bien pourquoi.

Question subsidiaire, le test ne s'effectue que pour les descendants directs du RootSceneNode, comment pourrais-je tester également et systématiquement tous les objets de la scène même s'ils sont affiliés à un autre?

Merci d'avance à tous.

Hors ligne


#2 

26-02-2012 12:33:01

Memorial76
Membres
Date d'inscription:
Messages: 67
IP: 90.51.201.202
Courriel

J'ai la solution, il faut utiliser la fonction getTransformedBoundingBox()...
Je pense que cette discussion peut être supprimée, à moins qu'elle n'aide quelqu'un.

Hors ligne


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