Index: /GTP/trunk/Lib/Vis/OnlineCullingCHC/include/HierarchyInterface.h
===================================================================
--- /GTP/trunk/Lib/Vis/OnlineCullingCHC/include/HierarchyInterface.h	(revision 2555)
+++ /GTP/trunk/Lib/Vis/OnlineCullingCHC/include/HierarchyInterface.h	(revision 2558)
@@ -21,4 +21,12 @@
 
 typedef std::vector<HierarchyNode *> HierarchyNodeContainer;
+
+
+class MultiQuery
+{
+	OcclusionQuery *mQuery;
+	HierarchyNodeContainer *mNodes;
+};
+
 
 
Index: /GTP/trunk/Lib/Vis/OnlineCullingCHC/OGRE/include/OgreVisibilityPredictor.h
===================================================================
--- /GTP/trunk/Lib/Vis/OnlineCullingCHC/OGRE/include/OgreVisibilityPredictor.h	(revision 2557)
+++ /GTP/trunk/Lib/Vis/OnlineCullingCHC/OGRE/include/OgreVisibilityPredictor.h	(revision 2558)
@@ -15,13 +15,16 @@
 {
 public:
-    
+
+	VisibilityPredictor();
+
 	void HandleProbablyVisibleObjects(GtpVisibilityPreprocessor::ViewCell *vc);
 	void UpdateVisibility(GtpVisibilityPreprocessor::ViewCell *vc);
 
-	VisibilityPredictor();
+	void IssueMultiQuery(const vector<Entity *> &mEntities);
+
 
 protected:
 
-	GtpVisibility::HierarchyNodeContainer mNodeBuffer;
+	GtpVisibility::HierarchyNodeContainer mEntityBuffer;
 };
 
Index: /GTP/trunk/Lib/Vis/OnlineCullingCHC/OGRE/include/OgrePlatformHierarchyInterface.h
===================================================================
--- /GTP/trunk/Lib/Vis/OnlineCullingCHC/OGRE/include/OgrePlatformHierarchyInterface.h	(revision 2555)
+++ /GTP/trunk/Lib/Vis/OnlineCullingCHC/OGRE/include/OgrePlatformHierarchyInterface.h	(revision 2558)
@@ -146,4 +146,7 @@
 	virtual void TraverseNode2(GtpVisibility::HierarchyNode *node) {};
 	
+	virtual GtpVisibility::OcclusionQuery *IssueMultiQuery(
+											const GtpVisibility::HierarchyNodeContainer &nodes);
+
 protected:
 
Index: /GTP/trunk/Lib/Vis/OnlineCullingCHC/OGRE/src/OgreVisibilityPredictor.cpp
===================================================================
--- /GTP/trunk/Lib/Vis/OnlineCullingCHC/OGRE/src/OgreVisibilityPredictor.cpp	(revision 2557)
+++ /GTP/trunk/Lib/Vis/OnlineCullingCHC/OGRE/src/OgreVisibilityPredictor.cpp	(revision 2558)
@@ -9,4 +9,12 @@
 namespace Ogre
 {
+	struct EntityQuery
+	{
+		GtpVisibility::OcclusionQuery *mQuery;
+		vector<Entity *> mEntities;
+	};
+
+	typedef std::queue<EntityQuery> EntityQueryQueue;
+
 	VisibilityPredictor::VisibilityPredictor()
 	{
@@ -15,6 +23,6 @@
 	void VisibilityPredictor::HandleProbablyVisibleObjects(GtpVisibilityPreprocessor::ViewCell *vc)
 	{
-		GtpVisibility::QueryQueue queryQueue;
-		GtpVisibility::HierarchyNodeContainer invisibleNodes;
+		EntityQueryQueue queryQueue;
+		vector<Entity *> invisibleEntities;
 
 		// use multiqueries for the objects that are probably invisible
@@ -37,10 +45,11 @@
 			{
 				// collect entities for multiqueries
-				//invisibleNodes.push_back(node);
+				invisibleEntities.push_back(*eit);
 
-				if ((int)invisibleNodes.size() >= maxInvisibleNodesSize)
+				if ((int)invisibleEntities.size() >= maxInvisibleNodesSize)
 				{
 					// issue the batched queries
-					//IssueBatchedQuery(invisibleNodes);
+					IssueMultiQuery(invisibleEntities);
+					invisibleEntities.clear();
 				}
 			}
@@ -52,16 +61,20 @@
 
 			// fetch multiquery result
-			queryQueue.front().second->GetQueryResult(visiblePixels, false);
+			queryQueue.front().mQuery->GetQueryResult(visiblePixels, false);
 
-			// collect nodes assoziated with current multiquery
-			GtpVisibility::HierarchyNode *node = queryQueue.front().first;
+			size_t n = queryQueue.front().mEntities.size();
 
 			// tested visible
 			if (visiblePixels > 0)
 			{
-				// render nodes
-				
-				// we have to store and test individual nodes later
-				mNodeBuffer.push_back(node);
+				// render nodes assoziated with current multiquery
+				for (size_t i = 0; i < n; ++ i)
+				{
+					Entity *ent = queryQueue.front().mEntities[i];
+					// render entity
+
+					// we have to store the entity and test it individually later
+					mEntityBuffer.push_back(ent);
+				}
 			}
 
@@ -73,8 +86,8 @@
 	void VisibilityPredictor::UpdateVisibility(GtpVisibilityPreprocessor::ViewCell *vc)
 	{
-		GtpVisibility::HierarchyNodeContainer::const_iterator nit, nit_end = mNodeBuffer.end();
+		GtpVisibility::HierarchyNodeContainer::const_iterator nit, nit_end = mEntityBuffer.end();
 
 		// test individual nodes
-		for (nit = mNodeBuffer.begin(); nit != nit_end; ++ nit)
+		for (nit = mEntityBuffer.begin(); nit != nit_end; ++ nit)
 		{
 
@@ -82,10 +95,15 @@
 
 		// fetch query results, update PVS of view cell
-		for (nit = mNodeBuffer.begin(); nit != nit_end; ++ nit)
+		for (nit = mEntityBuffer.begin(); nit != nit_end; ++ nit)
 		{
 
 		}
 
-		mNodeBuffer.clear();
+		mEntityBuffer.clear();
+	}
+
+	
+	void VisibilityPredictor::IssueMultiQuery(const vector<Entity *> &mEntities)
+	{
 	}
 }
Index: /GTP/trunk/Lib/Vis/OnlineCullingCHC/OGRE/src/OgrePlatformHierarchyInterface.cpp
===================================================================
--- /GTP/trunk/Lib/Vis/OnlineCullingCHC/OGRE/src/OgrePlatformHierarchyInterface.cpp	(revision 2556)
+++ /GTP/trunk/Lib/Vis/OnlineCullingCHC/OGRE/src/OgrePlatformHierarchyInterface.cpp	(revision 2558)
@@ -302,4 +302,31 @@
 	return mTestGeometryBounds;
 }
+//-----------------------------------------------------------------------
+GtpVisibility::OcclusionQuery *PlatformHierarchyInterface::IssueMultiQuery(
+											const GtpVisibility::HierarchyNodeContainer &nodes)
+{
+	// get next available test id
+	GtpVisibility::OcclusionQuery *query = GetNextOcclusionQuery();
+
+	//-- the actual query test
+	query->BeginQuery();	
+
+	GtpVisibility::HierarchyNodeContainer::const_iterator nit, nit_end = nodes.end();
+
+	mIsBoundingBoxQuery = true;
+
+	for (nit = nodes.begin(); nit != nodes.end(); ++ nit)
+	{
+		// this information is used e.g., by the scene graph, because the bounding box
+		// must be treated differently to the scene geometry during rendering
+		RenderBoundingBox(GetBoundingBox(*nit));
+	}	
+	
+	mIsBoundingBoxQuery = false;
+
+	query->EndQuery();
+
+	return query;
+}
 
 } // namespace Ogre
