00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef PXPVDSDK_PXPVD_H
00031 #define PXPVDSDK_PXPVD_H
00032
00036 #include "foundation/PxFlags.h"
00037 #include "foundation/PxProfiler.h"
00038
00039 #if !PX_DOXYGEN
00040 namespace physx
00041 {
00042 #endif
00043
00044 class PxPvdTransport;
00045
00046 #if PX_WINDOWS_FAMILY && !PX_ARM_FAMILY
00047 #ifndef PX_PVDSDK_DLL
00048 #define PX_PVDSDK_API PX_DLL_IMPORT
00049 #elif PX_PVDSDK_DLL
00050 #define PX_PVDSDK_API PX_DLL_EXPORT
00051 #endif
00052 #elif PX_UNIX_FAMILY
00053 #ifdef PX_PVDSDK_DLL
00054 #define PX_PVDSDK_API PX_UNIX_EXPORT
00055 #endif
00056 #endif
00057
00058 #ifndef PX_PVDSDK_API
00059 #define PX_PVDSDK_API
00060 #endif
00061
00065 struct PxPvdInstrumentationFlag
00066 {
00067 enum Enum
00068 {
00077 eDEBUG = 1 << 0,
00078
00089 ePROFILE = 1 << 1,
00090
00111 eMEMORY = 1 << 2,
00112
00113 eALL = (eDEBUG | ePROFILE | eMEMORY)
00114 };
00115 };
00116
00122 typedef PxFlags<PxPvdInstrumentationFlag::Enum, uint8_t> PxPvdInstrumentationFlags;
00123 PX_FLAGS_OPERATORS(PxPvdInstrumentationFlag::Enum, uint8_t)
00124
00125
00129 class PxPvd : public physx::PxProfilerCallback
00130 {
00131 public:
00138 virtual bool connect(PxPvdTransport& transport, PxPvdInstrumentationFlags flags) = 0;
00139
00144 virtual void disconnect() = 0;
00145
00158 virtual bool isConnected(bool useCachedStatus = true) = 0;
00159
00164 virtual PxPvdTransport* getTransport() = 0;
00165
00169 virtual PxPvdInstrumentationFlags getInstrumentationFlags() = 0;
00170
00174 virtual void release() = 0;
00175
00176 protected:
00177 virtual ~PxPvd()
00178 {
00179 }
00180 };
00181
00186 PX_PVDSDK_API PxPvd* PX_CALL_CONV PxCreatePvd(PxFoundation& foundation);
00187
00188 #if !PX_DOXYGEN
00189 }
00190 #endif
00191
00193 #endif // PXPVDSDK_PXPVD_H