1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| ListeElementPhysique = La liste d ensemble physique à tester
ListeElementActif = Une liste dynamique utililaire à chacune des itérations de tests
DétecterCollision()
{
// Classer les éléments en ordre de grandeur des X de la position minimum des aabb englobant les éléments physique : AABB.Min.X
ClasserToutLesÉlémentsEnOrdreCroissant(ListeElementPhysique)
Effacer tout les éléments de ListeElementActif
Pour chacun des éléments I de ListeElementPhysique
{
Pour chacun des éléments J de ListeElementActif
{
// On efface l élément actif J pour les prochains tests, car les éléments suivant vont avoir un MINIMUM en X plus grand que le MAXIMUM en X du AABB de l'élément J
Si J.AABB.MAX.X < I.AABB.MIN.X
{
ListeElementActif.Effacer(J)
}
Sinon
{
Si TesterCollision( J.AABB, I.AABB)
{
TesterCollision(I,J)
}
}
ListeElementActif.Ajouter(I)
}
}
} |
Partager