aboutsummaryrefslogtreecommitdiff
path: root/PhysX_3.4/Source/PhysX/src/NpPvdSceneQueryCollector.cpp
diff options
context:
space:
mode:
authorsschirm <[email protected]>2016-12-23 14:20:36 +0100
committersschirm <[email protected]>2016-12-23 14:56:17 +0100
commitef6937e69e8ee3f409cf9d460d5ad300a65d5924 (patch)
tree710426e8daa605551ce3f34b581897011101c30f /PhysX_3.4/Source/PhysX/src/NpPvdSceneQueryCollector.cpp
parentInitial commit: (diff)
downloadphysx-3.4-ef6937e69e8ee3f409cf9d460d5ad300a65d5924.tar.xz
physx-3.4-ef6937e69e8ee3f409cf9d460d5ad300a65d5924.zip
PhysX 3.4 / APEX 1.4 release candidate @21506124
Diffstat (limited to 'PhysX_3.4/Source/PhysX/src/NpPvdSceneQueryCollector.cpp')
-rw-r--r--PhysX_3.4/Source/PhysX/src/NpPvdSceneQueryCollector.cpp27
1 files changed, 25 insertions, 2 deletions
diff --git a/PhysX_3.4/Source/PhysX/src/NpPvdSceneQueryCollector.cpp b/PhysX_3.4/Source/PhysX/src/NpPvdSceneQueryCollector.cpp
index 2756f1a1..a4f2cc55 100644
--- a/PhysX_3.4/Source/PhysX/src/NpPvdSceneQueryCollector.cpp
+++ b/PhysX_3.4/Source/PhysX/src/NpPvdSceneQueryCollector.cpp
@@ -34,6 +34,29 @@ using namespace physx;
using namespace Sq;
using namespace Vd;
+static const char* gName_PvdRaycast[2] = { "SceneQueries.Raycasts", "BatchedQueries.Raycasts" };
+static const char* gName_PvdSweep[2] = { "SceneQueries.Sweeps", "BatchedQueries.Sweeps" };
+static const char* gName_PvdOverlap[2] = { "SceneQueries.Overlaps", "BatchedQueries.Overlaps" };
+static const char* gName_PvdSqHit[2] = { "SceneQueries.Hits", "BatchedQueries.Hits" };
+static const char* gName_PxTransform[2] = { "SceneQueries.PoseList", "BatchedQueries.PoseList" };
+static const char* gName_PxFilterData[2] = { "SceneQueries.FilterDataList", "BatchedQueries.FilterDataList" };
+static const char* gName_PxGeometryHolder[2] = { "SceneQueries.GeometryList", "BatchedQueries.GeometryList" };
+
+PvdSceneQueryCollector::PvdSceneQueryCollector(Scb::Scene& scene, bool isBatched) :
+ mAccumulatedRaycastQueries (gName_PvdRaycast),
+ mAccumulatedSweepQueries (gName_PvdSweep),
+ mAccumulatedOverlapQueries (gName_PvdOverlap),
+ mPvdSqHits (gName_PvdSqHit),
+ mPoses (gName_PxTransform),
+ mFilterData (gName_PxFilterData),
+ mScene (scene),
+ mGeometries0 (gName_PxGeometryHolder),
+ mGeometries1 (gName_PxGeometryHolder),
+ mInUse (0),
+ mIsBatched (isBatched)
+{
+}
+
void PvdSceneQueryCollector::release()
{
physx::pvdsdk::PvdDataStream* stream = mScene.getScenePvdClient().getDataStream();
@@ -122,7 +145,7 @@ void PvdSceneQueryCollector::sweep(const PxGeometry& geometry, const PxTransform
Ps::Mutex::ScopedLock lock(mMutex);
PvdSweep sweepQuery;
- pushBackT(mGeometries[mInUse], PxGeometryHolder(geometry), sweepQuery.mGeometries, getArrayName(mGeometries[mInUse])); // PT: TODO: optimize this. We memcopy once to the stack, then again to the array....
+ pushBackT(getGeometries(mInUse), PxGeometryHolder(geometry), sweepQuery.mGeometries, getArrayName(getGeometries(mInUse))); // PT: TODO: optimize this. We memcopy once to the stack, then again to the array....
pushBackT(mPoses, pose, sweepQuery.mPoses, getArrayName(mPoses));
pushBackT(mFilterData, fd.data, sweepQuery.mFilterData, getArrayName(mFilterData));
@@ -143,7 +166,7 @@ void PvdSceneQueryCollector::overlapMultiple(const PxGeometry& geometry, const P
Ps::Mutex::ScopedLock lock(mMutex);
PvdOverlap overlapQuery;
- pushBackT(mGeometries[mInUse], PxGeometryHolder(geometry), overlapQuery.mGeometries, getArrayName(mGeometries[mInUse])); // PT: TODO: optimize this. We memcopy once to the stack, then again to the array....
+ pushBackT(getGeometries(mInUse), PxGeometryHolder(geometry), overlapQuery.mGeometries, getArrayName(getGeometries(mInUse))); // PT: TODO: optimize this. We memcopy once to the stack, then again to the array....
const PxGeometryType::Enum type = geometry.getType();
if(type==PxGeometryType::eBOX) overlapQuery.mType = pose.q.isIdentity() ? QueryID::QUERY_OVERLAP_AABB_ALL_OBJECTS : QueryID::QUERY_OVERLAP_OBB_ALL_OBJECTS;