#0 

26-02-2012 11:20:56

Memorial76
Membre
Date d'inscription: 19-02-2010
Messages: 67

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


#1 

26-02-2012 13:33:01

Memorial76
Membre
Date d'inscription: 19-02-2010
Messages: 67

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é
Corrections
irrlicht
irrklang
irredit
irrxml
xhtml 1.0
css 2.1
Propulsé par FluxBB
Traduit par FluxBB.fr
881 membres
1426 sujets
11116 messages
Dernier membre inscrit: Bidule
11 invités en ligne
Aucun membre connecté
RSS Feed