aboutsummaryrefslogtreecommitdiff
path: root/PhysX_3.4/Source/PhysX/src/buffering/ScbScenePvdClient.h
diff options
context:
space:
mode:
Diffstat (limited to 'PhysX_3.4/Source/PhysX/src/buffering/ScbScenePvdClient.h')
-rw-r--r--PhysX_3.4/Source/PhysX/src/buffering/ScbScenePvdClient.h223
1 files changed, 223 insertions, 0 deletions
diff --git a/PhysX_3.4/Source/PhysX/src/buffering/ScbScenePvdClient.h b/PhysX_3.4/Source/PhysX/src/buffering/ScbScenePvdClient.h
new file mode 100644
index 00000000..a7461571
--- /dev/null
+++ b/PhysX_3.4/Source/PhysX/src/buffering/ScbScenePvdClient.h
@@ -0,0 +1,223 @@
+// This code contains NVIDIA Confidential Information and is disclosed to you
+// under a form of NVIDIA software license agreement provided separately to you.
+//
+// Notice
+// NVIDIA Corporation and its licensors retain all intellectual property and
+// proprietary rights in and to this software and related documentation and
+// any modifications thereto. Any use, reproduction, disclosure, or
+// distribution of this software and related documentation without an express
+// license agreement from NVIDIA Corporation is strictly prohibited.
+//
+// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
+// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
+// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
+// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
+//
+// Information and code furnished is believed to be accurate and reliable.
+// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
+// information or for any infringement of patents or other rights of third parties that may
+// result from its use. No license is granted by implication or otherwise under any patent
+// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
+// This code supersedes and replaces all information previously supplied.
+// NVIDIA Corporation products are not authorized for use as critical
+// components in life support devices or systems without express written approval of
+// NVIDIA Corporation.
+//
+// Copyright (c) 2008-2016 NVIDIA Corporation. All rights reserved.
+// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
+// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.
+
+#ifndef SCB_SCENE_PVD_CLIENT_H
+#define SCB_SCENE_PVD_CLIENT_H
+
+#include "PxPhysXConfig.h"
+
+#if PX_SUPPORT_PVD
+
+#include "foundation/PxStrideIterator.h"
+#include "pvd/PxPvdTransport.h"
+
+#include "PxPvdSceneClient.h"
+#include "PvdMetaDataPvdBinding.h"
+
+#include "CmBitMap.h"
+
+#include "PxPvdClient.h"
+#include "PxPvdUserRenderer.h"
+#include "PsPvd.h"
+
+namespace physx
+{
+class PxScene;
+class PxActor;
+class PxShape;
+class PxGeometryHolder;
+class PxArticulationLink;
+class PxRenderBuffer;
+
+namespace Scb
+{
+class Scene;
+class Actor;
+class Body;
+class RigidStatic;
+class RigidObject;
+class Shape;
+class ParticleSystem;
+class Constraint;
+class Articulation;
+class ArticulationJoint;
+class Cloth;
+class Aggregate;
+}
+
+namespace Sc
+{
+class MaterialCore;
+class ConstraintCore;
+class ParticleSystemCore;
+}
+
+namespace Vd
+{
+
+class ScbScenePvdClient : public PxPvdSceneClient, public PvdClient, public PvdVisualizer
+{
+ PX_NOCOPY(ScbScenePvdClient)
+ public:
+ ScbScenePvdClient(Scb::Scene& scene);
+ virtual ~ScbScenePvdClient();
+
+ // PxPvdSceneClient
+ virtual void setScenePvdFlag(PxPvdSceneFlag::Enum flag, bool value);
+ virtual void setScenePvdFlags(PxPvdSceneFlags flags);
+ virtual PxPvdSceneFlags getScenePvdFlags() const;
+ virtual void updateCamera(const char* name, const PxVec3& origin, const PxVec3& up, const PxVec3& target);
+ virtual void drawPoints(const PvdDebugPoint* points, PxU32 count);
+ virtual void drawLines(const PvdDebugLine* lines, PxU32 count);
+ virtual void drawTriangles(const PvdDebugTriangle* triangles, PxU32 count);
+ virtual void drawText(const PvdDebugText& text);
+ virtual PvdClient* getClientInternal();
+ //~PxPvdSceneClient
+
+ // pvdClient
+ virtual PvdDataStream* getDataStream();
+ virtual PvdMetaDataBinding* getMetaDataBinding();
+ virtual PvdUserRenderer* getUserRender();
+ virtual bool isConnected() const ;
+ virtual void onPvdConnected();
+ virtual void onPvdDisconnected();
+ virtual void flush();
+ //~pvdClient
+
+ PsPvd* getPsPvd();
+ void setPsPvd(PsPvd* pvd);
+
+ PX_INLINE bool checkPvdDebugFlag()
+ {
+ return mIsConnected && (mPvd->getInstrumentationFlags() & PxPvdInstrumentationFlag::eDEBUG);
+ }
+
+ void frameStart(PxReal simulateElapsedTime);
+ void frameEnd();
+
+ void updatePvdProperties();
+ void releasePvdInstance();
+
+ void createPvdInstance (const PxActor* actor); // temporary for deformables and particle systems
+ void updatePvdProperties(const PxActor* actor);
+ void releasePvdInstance (const PxActor* actor); // temporary for deformables and particle systems
+
+ void createPvdInstance (const Scb::Actor* actor); // temporary for deformables and particle systems
+ void updatePvdProperties(const Scb::Actor* actor);
+ void releasePvdInstance (const Scb::Actor* actor); // temporary for deformables and particle systems
+
+ void createPvdInstance (const Scb::Body* body);
+ void updatePvdProperties (const Scb::Body* body);
+ void updateKinematicTarget (const Scb::Body* body, const PxTransform& p);
+
+ void createPvdInstance (const Scb::RigidStatic* rigidStatic);
+ void updatePvdProperties (const Scb::RigidStatic* rigidStatic);
+
+ void releasePvdInstance (const Scb::RigidObject* rigidObject);
+
+ void createPvdInstance (const Scb::Constraint* constraint);
+ void updatePvdProperties(const Scb::Constraint* constraint);
+ void releasePvdInstance (const Scb::Constraint* constraint);
+
+ void createPvdInstance (const Scb::Articulation* articulation);
+ void updatePvdProperties(const Scb::Articulation* articulation);
+ void releasePvdInstance (const Scb::Articulation* articulation);
+
+ void createPvdInstance (const Scb::ArticulationJoint* articulationJoint);
+ void updatePvdProperties(const Scb::ArticulationJoint* articulationJoint);
+ void releasePvdInstance (const Scb::ArticulationJoint* articulationJoint);
+
+ void createPvdInstance (const Sc::MaterialCore* materialCore);
+ void updatePvdProperties(const Sc::MaterialCore* materialCore);
+ void releasePvdInstance (const Sc::MaterialCore* materialCore);
+
+ void createPvdInstance (const Scb::Shape* shape, PxActor& owner);
+ void updateMaterials (const Scb::Shape* shape);
+ void updatePvdProperties (const Scb::Shape* shape);
+ void releaseAndRecreateGeometry (const Scb::Shape* shape);
+ void releasePvdInstance (const Scb::Shape* shape, PxActor& owner);
+ void addBodyAndShapesToPvd (Scb::Body& b);
+ void addStaticAndShapesToPvd (Scb::RigidStatic& s);
+
+ void createPvdInstance (const Scb::Aggregate* aggregate);
+ void updatePvdProperties (const Scb::Aggregate* aggregate);
+ void attachAggregateActor (const Scb::Aggregate* aggregate, Scb::Actor* actor);
+ void detachAggregateActor (const Scb::Aggregate* aggregate, Scb::Actor* actor);
+ void releasePvdInstance (const Scb::Aggregate* aggregate);
+
+ void createPvdInstance (const Scb::Cloth* cloth);
+ void sendSimpleProperties (const Scb::Cloth* cloth);
+ void sendMotionConstraints (const Scb::Cloth* cloth);
+ void sendCollisionSpheres (const Scb::Cloth* cloth);
+ void sendCollisionCapsules (const Scb::Cloth* cloth);
+ void sendCollisionTriangles (const Scb::Cloth* cloth);
+ void sendVirtualParticles (const Scb::Cloth* cloth);
+ void sendSeparationConstraints (const Scb::Cloth* cloth);
+ void sendParticleAccelerations (const Scb::Cloth* cloth);
+ void sendSelfCollisionIndices (const Scb::Cloth* cloth);
+ void sendRestPositions (const Scb::Cloth* cloth);
+ void releasePvdInstance (const Scb::Cloth* cloth);
+
+ void originShift(PxVec3 shift);
+ void updateJoints();
+ void updateContacts();
+ void updateSceneQueries();
+
+ // PvdVisualizer
+ void visualize(PxArticulationLink& link);
+ void visualize(const PxRenderBuffer& debugRenderable);
+
+ private:
+
+ template <typename TPropertyType>
+ void sendArray( const void* instance, const char* propName, const Cm::BitMap* bitMap, PxU32 nbValidParticles,
+ PxStrideIterator<const TPropertyType>& iterator);
+
+ void sendStateDatas(Sc::ParticleSystemCore* psCore);
+ void sendEntireScene();
+ void updateConstraint(const Sc::ConstraintCore& scConstraint, PxU32 updateType);
+ void setCreateContactReports(bool b);
+
+ PxPvdSceneFlags mFlags;
+ PsPvd* mPvd;
+ Scb::Scene& mScbScene;
+
+ PvdDataStream* mPvdDataStream;
+ PvdMetaDataBinding mMetaDataBinding;
+ PvdUserRenderer* mUserRender;
+ RendererEventClient* mRenderClient;
+ bool mIsConnected;
+};
+
+} // pvd
+
+} // physx
+#endif // PX_SUPPORT_PVD
+
+#endif // SCB_SCENE_PVD_CLIENT_H