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,
00089 ePROFILE = 1 << 1,
00110 eMEMORY = 1 << 2,
00111 eALL = (eDEBUG | ePROFILE | eMEMORY)
00112 };
00113 };
00114
00120 typedef PxFlags<PxPvdInstrumentationFlag::Enum, uint8_t> PxPvdInstrumentationFlags;
00121 PX_FLAGS_OPERATORS(PxPvdInstrumentationFlag::Enum, uint8_t)
00122
00123
00127 class PxPvd : public physx::PxProfilerCallback
00128 {
00129 public:
00136 virtual bool connect(PxPvdTransport& transport, PxPvdInstrumentationFlags flags) = 0;
00137
00142 virtual void disconnect() = 0;
00143
00156 virtual bool isConnected(bool useCachedStatus = true) = 0;
00157
00162 virtual PxPvdTransport* getTransport() = 0;
00163
00167 virtual PxPvdInstrumentationFlags getInstrumentationFlags() = 0;
00168
00172 virtual void release() = 0;
00173
00174 protected:
00175 virtual ~PxPvd()
00176 {
00177 }
00178 };
00179
00184 PX_PVDSDK_API PxPvd* PX_CALL_CONV PxCreatePvd(PxFoundation& foundation);
00185
00186 #if !PX_DOXYGEN
00187 }
00188 #endif
00189
00191 #endif // PXPVDSDK_PXPVD_H