MCPcopy Create free account
hub / github.com/OGRECave/ogre-next / execute

Method execute

OgreMain/src/OgreDefaultSceneQueries.cpp:49–122  ·  view source on GitHub ↗

---------------------------------------------------------------------

Source from the content-addressed store, hash-verified

47 DefaultIntersectionSceneQuery::~DefaultIntersectionSceneQuery() {}
48 //---------------------------------------------------------------------
49 void DefaultIntersectionSceneQuery::execute( IntersectionSceneQueryListener *listener )
50 {
51 OGRE_EXCEPT( Exception::ERR_NOT_IMPLEMENTED,
52 "IntersectionSceneQuery not yet ported to Ogre 2.x!",
53 "DefaultIntersectionSceneQuery::execute" );
54#ifdef ENABLE_INCOMPATIBLE_OGRE_2_0
55 // Iterate over all movable types
56 Root::MovableObjectFactoryIterator factIt =
57 Root::getSingleton().getMovableObjectFactoryIterator();
58 while( factIt.hasMoreElements() )
59 {
60 SceneManager::MovableObjectIterator objItA =
61 mParentSceneMgr->getMovableObjectIterator( factIt.getNext()->getType() );
62 while( objItA.hasMoreElements() )
63 {
64 MovableObject *a = objItA.getNext();
65 // skip entire section if type doesn't match
66 if( !( a->getTypeFlags() & mQueryTypeMask ) )
67 break;
68
69 // Skip if a does not pass the mask
70 if( !( a->getQueryFlags() & mQueryMask ) || !a->isInScene() )
71 continue;
72
73 // Check against later objects in the same group
74 SceneManager::MovableObjectIterator objItB = objItA;
75 while( objItB.hasMoreElements() )
76 {
77 MovableObject *b = objItB.getNext();
78
79 // Apply mask to b (both must pass)
80 if( ( b->getQueryFlags() & mQueryMask ) && b->isInScene() )
81 {
82 const AxisAlignedBox &box1 = a->getWorldBoundingBox();
83 const AxisAlignedBox &box2 = b->getWorldBoundingBox();
84
85 if( box1.intersects( box2 ) )
86 {
87 if( !listener->queryResult( a, b ) )
88 return;
89 }
90 }
91 }
92 // Check against later groups
93 Root::MovableObjectFactoryIterator factItLater = factIt;
94 while( factItLater.hasMoreElements() )
95 {
96 SceneManager::MovableObjectIterator objItC =
97 mParentSceneMgr->getMovableObjectIterator( factItLater.getNext()->getType() );
98 while( objI7tC.hasMoreElements() )
99 {
100 MovableObject *c = objItC.getNext();
101 // skip entire section if type doesn't match
102 if( !( c->getTypeFlags() & mQueryTypeMask ) )
103 break;
104
105 // Apply mask to c (both must pass)
106 if( ( c->getQueryFlags() & mQueryMask ) && c->isInScene() )

Callers

nothing calls this directly

Calls 15

hasMoreElementsMethod · 0.80
queryResultMethod · 0.80
getNumRenderQueuesMethod · 0.80
getFirstObjectDataMethod · 0.80
getMinimumMethod · 0.80
getMaximumMethod · 0.80
dotProductMethod · 0.80
SetAllFunction · 0.50
AndFunction · 0.50
TestFlags4Function · 0.50

Tested by

no test coverage detected