RavEngine
Loading...
Searching...
No Matches
BpBroadPhaseABP.h
1// Redistribution and use in source and binary forms, with or without
2// modification, are permitted provided that the following conditions
3// are met:
4// * Redistributions of source code must retain the above copyright
5// notice, this list of conditions and the following disclaimer.
6// * Redistributions in binary form must reproduce the above copyright
7// notice, this list of conditions and the following disclaimer in the
8// documentation and/or other materials provided with the distribution.
9// * Neither the name of NVIDIA CORPORATION nor the names of its
10// contributors may be used to endorse or promote products derived
11// from this software without specific prior written permission.
12//
13// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY
14// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
17// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24//
25// Copyright (c) 2008-2022 NVIDIA Corporation. All rights reserved.
26// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
27// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.
28
29#ifndef BP_BROADPHASE_ABP_H
30#define BP_BROADPHASE_ABP_H
31
32#include "foundation/PxArray.h"
33#include "BpBroadPhase.h"
34#include "PxPhysXConfig.h"
35#include "BpBroadPhaseUpdate.h"
36
37#define ABP_MT2
38
39namespace internalABP{
40 class ABP;
41}
42
43namespace physx
44{
45namespace Bp
46{
48 {
49 PX_NOCOPY(BroadPhaseABP)
50 public:
51 BroadPhaseABP( PxU32 maxNbBroadPhaseOverlaps,
52 PxU32 maxNbStaticShapes,
53 PxU32 maxNbDynamicShapes,
54 PxU64 contextID,
55 bool enableMT);
56 virtual ~BroadPhaseABP();
57
58 // BroadPhase
59 virtual PxBroadPhaseType::Enum getType() const PX_OVERRIDE { return mEnableMT ? PxBroadPhaseType::ePABP : PxBroadPhaseType::eABP; }
60 virtual void release() PX_OVERRIDE { PX_DELETE_THIS; }
61 virtual void update(PxcScratchAllocator* scratchAllocator, const BroadPhaseUpdateData& updateData, physx::PxBaseTask* continuation) PX_OVERRIDE;
64 virtual const BroadPhasePair* getCreatedPairs(PxU32&) const PX_OVERRIDE;
65 virtual const BroadPhasePair* getDeletedPairs(PxU32&) const PX_OVERRIDE;
66 virtual void freeBuffers() PX_OVERRIDE;
67 virtual void shiftOrigin(const PxVec3& shift, const PxBounds3* boundsArray, const PxReal* contactDistances) PX_OVERRIDE;
68#if PX_CHECKED
69 virtual bool isValid(const BroadPhaseUpdateData& updateData) const PX_OVERRIDE;
70#endif
71 //~BroadPhase
72
73 internalABP::ABP* mABP; // PT: TODO: aggregate
74 PxU32 mNbAdded;
75 PxU32 mNbUpdated;
76 PxU32 mNbRemoved;
77 const BpHandle* mCreatedHandles;
78 const BpHandle* mUpdatedHandles;
79 const BpHandle* mRemovedHandles;
82
83 const Bp::FilterGroup::Enum*mGroups;
84 const BpFilter* mFilter;
85
86 const PxU64 mContextID;
87 const bool mEnableMT;
88
89 void addObjects();
90 void removeObjects();
91 void updateObjects();
92 };
93
94} //namespace Bp
95
96} //namespace physx
97
98#endif // BP_BROADPHASE_ABP_H
Definition BpBroadPhaseABP.cpp:1912
Definition BpFiltering.h:119
Definition BpBroadPhaseABP.h:48
virtual void freeBuffers() PX_OVERRIDE
After the broadphase has completed its update() function and the created/deleted pairs have been quer...
Definition BpBroadPhaseABP.cpp:4267
virtual void shiftOrigin(const PxVec3 &shift, const PxBounds3 *boundsArray, const PxReal *contactDistances) PX_OVERRIDE
Adjust internal structures after all bounds have been adjusted due to a scene origin shift.
Definition BpBroadPhaseABP.cpp:4324
virtual void release() PX_OVERRIDE
Shutdown of the broadphase.
Definition BpBroadPhaseABP.h:60
virtual void preBroadPhase(const Bp::BroadPhaseUpdateData &) PX_OVERRIDE
prepare broad phase data.
Definition BpBroadPhaseABP.h:62
virtual void fetchBroadPhaseResults() PX_OVERRIDE
Fetch the results of any asynchronous broad phase work.
Definition BpBroadPhaseABP.h:63
virtual void update(PxcScratchAllocator *scratchAllocator, const BroadPhaseUpdateData &updateData, physx::PxBaseTask *continuation) PX_OVERRIDE
Updates the broadphase and computes the lists of created/deleted pairs.
Definition BpBroadPhaseABP.cpp:4006
virtual const BroadPhasePair * getDeletedPairs(PxU32 &) const PX_OVERRIDE
Get deleted pairs.
Definition BpBroadPhaseABP.cpp:4247
Definition BpBroadPhaseUpdate.h:47
Definition BpBroadPhase.h:99
Definition PxArray.h:53
Base class of all task types.
Definition PxTask.h:45
Class representing 3D range or axis aligned bounding box.
Definition PxBounds3.h:58
3 Element vector class.
Definition PxVec3.h:50
Definition PxcScratchAllocator.h:42
#define PX_OVERRIDE
Definition PxPreprocessor.h:375
Sorts an array of objects in ascending order, assuming that the predicate implements the < operator:
Definition PxBoxController.h:39
Definition BpBroadPhase.h:82
Enum
Definition PxBroadPhase.h:79
@ eABP
Automatic box pruning.
Definition PxBroadPhase.h:82
@ ePABP
Parallel automatic box pruning.
Definition PxBroadPhase.h:83