/////////////////////////////////////////////////////////////// // // CClientSpatialDatabaseImpl::SphereQuery // // Return the list of entities that intersect the sphere // /////////////////////////////////////////////////////////////// void CClientSpatialDatabaseImpl::SphereQuery ( CClientEntityResult& outResult, const CSphere& sphere ) { // Do any pending updates first FlushUpdateQueue (); if ( !IsValidSphere ( sphere ) ) return; // Make a box from the sphere CBox box ( sphere.vecPosition, fabsf ( sphere.fRadius ) ); // Make everything 2D for now box.vecMin.fZ = SPATIAL_2D_Z; box.vecMax.fZ = SPATIAL_2D_Z; // Find all entiites which overlap the box m_Tree.Search( &box.vecMin.fX, &box.vecMax.fX, outResult ); #ifdef SPATIAL_DATABASE_DEBUG_OUTPUTA OutputDebugLine ( SString ( "SpatialDatabase::SphereQuery %d results for %2.0f,%2.0f,%2.0f %2.2f" ,outResult.size () ,sphere.vecPosition.fX ,sphere.vecPosition.fY ,sphere.vecPosition.fZ ,sphere.fRadius ) ); #endif }
/////////////////////////////////////////////////////////////// // // CClientSpatialDatabaseImpl::SphereQuery // // Return the list of entities that intersect the sphere // /////////////////////////////////////////////////////////////// void CClientSpatialDatabaseImpl::SphereQuery ( CClientEntityResult& outResult, const CSphere& sphere ) { // Do any pending updates first FlushUpdateQueue (); if ( !IsValidSphere ( sphere ) ) return; // Make a box from the sphere CBox box ( sphere.vecPosition, fabsf ( sphere.fRadius ) ); // Make everything 2D for now box.vecMin.fZ = SPATIAL_2D_Z; box.vecMax.fZ = SPATIAL_2D_Z; // Find all entiites which overlap the box m_Tree.Search( &box.vecMin.fX, &box.vecMax.fX, outResult ); }