PhysX SDK 3.2 API Reference: PxBatchQuery.h Source File

PhysX SDK 3.2 API

PxBatchQuery.h

Go to the documentation of this file.
00001 // This code contains NVIDIA Confidential Information and is disclosed to you 
00002 // under a form of NVIDIA software license agreement provided separately to you.
00003 //
00004 // Notice
00005 // NVIDIA Corporation and its licensors retain all intellectual property and
00006 // proprietary rights in and to this software and related documentation and 
00007 // any modifications thereto. Any use, reproduction, disclosure, or 
00008 // distribution of this software and related documentation without an express 
00009 // license agreement from NVIDIA Corporation is strictly prohibited.
00010 // 
00011 // ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
00012 // NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
00013 // THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
00014 // MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
00015 //
00016 // Information and code furnished is believed to be accurate and reliable.
00017 // However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
00018 // information or for any infringement of patents or other rights of third parties that may
00019 // result from its use. No license is granted by implication or otherwise under any patent
00020 // or patent rights of NVIDIA Corporation. Details are subject to change without notice.
00021 // This code supersedes and replaces all information previously supplied.
00022 // NVIDIA Corporation products are not authorized for use as critical
00023 // components in life support devices or systems without express written approval of
00024 // NVIDIA Corporation.
00025 //
00026 // Copyright (c) 2008-2012 NVIDIA Corporation. All rights reserved.
00027 // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
00028 // Copyright (c) 2001-2004 NovodeX AG. All rights reserved.  
00029 
00030 
00031 #ifndef PX_PHYSICS_NX_SCENEQUERY
00032 #define PX_PHYSICS_NX_SCENEQUERY
00033 
00036 #include "PxPhysX.h"
00037 #include "PxShape.h"
00038 #include "PxBatchQueryDesc.h"
00039 #include "PxSceneQueryReport.h"
00040 #include "PxSceneQueryFiltering.h"
00041 
00042 #ifndef PX_DOXYGEN
00043 namespace physx
00044 {
00045 #endif
00046 
00047 class PxBoxGeometry;
00048 class PxSphereGeometry;
00049 class PxSweepCache;
00050 struct PxSceneQueryCache;
00051 
00057 class PxBatchQuery
00058     {
00059     public:
00060 
00064     virtual void                            execute()                       = 0;
00065 
00073     virtual PxBatchQueryPreFilterShader getPreFilterShader() const          = 0;
00074 
00082     virtual PxBatchQueryPostFilterShader getPostFilterShader() const        = 0;
00083 
00084 
00092     virtual const void*                     getFilterShaderData() const     = 0;
00093 
00101     virtual PxU32                           getFilterShaderDataSize() const = 0;
00102 
00103 
00111     virtual PxClientID                      getOwnerClient() const = 0;
00112 
00118     virtual void                            release()                       = 0;
00119 
00137     virtual void raycastAny( const PxVec3& origin, const PxVec3& unitDir, PxReal distance = PX_MAX_F32,
00138                              const PxSceneQueryFilterData& filterData = PxSceneQueryFilterData(), 
00139                              void* userData = NULL,
00140                              const PxSceneQueryCache* cache = NULL) const = 0;
00141 
00163     virtual void raycastSingle( const PxVec3& origin, const PxVec3& unitDir, PxReal distance = PX_MAX_F32,
00164                                 const PxSceneQueryFilterData& filterData = PxSceneQueryFilterData(), 
00165                                 PxSceneQueryFlags outputFlags = PxSceneQueryFlag::eIMPACT|PxSceneQueryFlag::eNORMAL|PxSceneQueryFlag::eDISTANCE|PxSceneQueryFlag::eUV,
00166                                 void* userData = NULL,
00167                                 const PxSceneQueryCache* cache = NULL) const = 0;
00168 
00169 
00190     virtual void raycastMultiple( const PxVec3& origin, const PxVec3& unitDir, PxReal distance = PX_MAX_F32,
00191                                   const PxSceneQueryFilterData& filterData = PxSceneQueryFilterData(), 
00192                                   PxSceneQueryFlags outputFlags = PxSceneQueryFlag::eIMPACT|PxSceneQueryFlag::eNORMAL|PxSceneQueryFlag::eDISTANCE|PxSceneQueryFlag::eUV,
00193                                   void* userData = NULL,
00194                                   const PxSceneQueryCache* cache = NULL) const = 0;
00195 
00196 
00214     virtual void overlapMultiple( const PxGeometry& geometry,
00215                                   const PxTransform& pose,
00216                                   const PxSceneQueryFilterData& filterData = PxSceneQueryFilterData(),
00217                                   void* userData=NULL,
00218                                   const PxSceneQueryCache* cache = NULL, 
00219                                   PxU32 maxShapes=0) const = 0;
00220 
00237     PX_INLINE void overlapAny( const PxGeometry& geometry,
00238                                   const PxTransform& pose,
00239                                   const PxSceneQueryFilterData& filterData = PxSceneQueryFilterData(),
00240                                   void* userData=NULL,
00241                                   const PxSceneQueryCache* cache = NULL ) 
00242     { overlapMultiple(geometry, pose, filterData, userData, cache,1); }
00243 
00263     virtual void sweepSingle( const PxGeometry& geometry, const PxTransform& pose, const PxVec3& unitDir, const PxReal distance,
00264                               PxSceneQueryFlags outputFlags = PxSceneQueryFlag::eIMPACT|PxSceneQueryFlag::eNORMAL|PxSceneQueryFlag::eDISTANCE|PxSceneQueryFlag::eUV,
00265                               const PxSceneQueryFilterData& filterData = PxSceneQueryFilterData(),
00266                               void* userData=NULL,
00267                               const PxSceneQueryCache* cache = NULL) const = 0;
00268 
00293     virtual void linearCompoundGeometrySweepSingle( const PxGeometry** geometryList, 
00294                                                     const PxTransform* poseList, 
00295                                                     const PxFilterData* filterDataList, 
00296                                                     PxU32 geometryCount, 
00297                                                     const PxVec3& unitDir, 
00298                                                     const PxReal distance, 
00299                                                     PxSceneQueryFilterFlags filterFlags, 
00300                                                     PxSceneQueryFlags outputFlags = PxSceneQueryFlag::eIMPACT|PxSceneQueryFlag::eNORMAL|PxSceneQueryFlag::eDISTANCE|PxSceneQueryFlag::eUV,
00301                                                     void* userData=NULL,
00302                                                     const PxSweepCache* cache = NULL) const = 0;
00303 
00304 
00305 
00327     virtual void sweepMultiple( const PxGeometry& geometry, const PxTransform& pose, const PxVec3& unitDir, const PxReal distance,
00328                                 PxSceneQueryFlags outputFlags = PxSceneQueryFlag::eIMPACT|PxSceneQueryFlag::eNORMAL|PxSceneQueryFlag::eDISTANCE|PxSceneQueryFlag::eUV,
00329                                 const PxSceneQueryFilterData& filterData = PxSceneQueryFilterData(),
00330                                 void* userData=NULL,
00331                                 const PxSceneQueryCache* cache = NULL) const = 0;
00332 
00333 
00334     
00359     virtual void linearCompoundGeometrySweepMultiple( const PxGeometry** geometryList, 
00360                                                       const PxTransform* poseList, 
00361                                                       const PxFilterData* filterDataList, 
00362                                                       PxU32 geometryCount, 
00363                                                       const PxVec3& unitDir, 
00364                                                       const PxReal distance, 
00365                                                       PxSceneQueryFilterFlags filterFlags, 
00366                                                       PxSceneQueryFlags outputFlags = PxSceneQueryFlag::eIMPACT|PxSceneQueryFlag::eNORMAL|PxSceneQueryFlag::eDISTANCE|PxSceneQueryFlag::eUV,
00367                                                       void* userData=NULL, 
00368                                                       const PxSweepCache* cache=NULL) const = 0;
00369 
00370 
00371     protected:
00372     virtual ~PxBatchQuery(){}
00373     };
00374 
00375 #ifndef PX_DOXYGEN
00376 } // namespace physx
00377 #endif
00378 
00380 #endif


Copyright © 2008-2012 NVIDIA Corporation, 2701 San Tomas Expressway, Santa Clara, CA 95050 U.S.A. All rights reserved. www.nvidia.com