1//
2// Redistribution and use in source and binary forms, with or without
3// modification, are permitted provided that the following conditions
4// are met:
5// * Redistributions of source code must retain the above copyright
6// notice, this list of conditions and the following disclaimer.
7// * Redistributions in binary form must reproduce the above copyright
8// notice, this list of conditions and the following disclaimer in the
9// documentation and/or other materials provided with the distribution.
10// * Neither the name of NVIDIA CORPORATION nor the names of its
11// contributors may be used to endorse or promote products derived
12// from this software without specific prior written permission.
13//
14// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY
15// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
18// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
20// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
21// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
22// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25//
26// Copyright (c) 2008-2021 NVIDIA Corporation. All rights reserved.
27// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
28// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.
29
30#ifndef PX_PVD_SCENE_CLIENT_H
31#define PX_PVD_SCENE_CLIENT_H
32
33/** \addtogroup pvd
34@{
35*/
36
37#include "foundation/PxFlags.h"
38
39namespace physx
40{
41 namespace pvdsdk
42 {
43 class PvdClient;
44 struct PvdDebugPoint;
45 struct PvdDebugLine;
46 struct PvdDebugTriangle;
47 struct PvdDebugText;
48 }
49}
50
51#if !PX_DOXYGEN
52namespace physx
53{
54#endif
55
56/**
57\brief PVD scene Flags. They are disabled by default, and only works if PxPvdInstrumentationFlag::eDEBUG is set.
58*/
59struct PxPvdSceneFlag
60{
61 enum Enum
62 {
63 eTRANSMIT_CONTACTS = (1 << 0), //! Transmits contact stream to PVD.
64 eTRANSMIT_SCENEQUERIES = (1 << 1), //! Transmits scene query stream to PVD.
65 eTRANSMIT_CONSTRAINTS = (1 << 2) //! Transmits constraints visualize stream to PVD.
66 };
67};
68
69/**
70\brief Bitfield that contains a set of raised flags defined in PxPvdSceneFlag.
71
72@see PxPvdSceneFlag
73*/
74typedef PxFlags<PxPvdSceneFlag::Enum, PxU8> PxPvdSceneFlags;
75PX_FLAGS_OPERATORS(PxPvdSceneFlag::Enum, PxU8)
76
77/**
78\brief Special client for PxScene.
79It provides access to the PxPvdSceneFlag.
80It also provides simple user debug services that associated scene position such as immediate rendering and camera updates.
81*/
82class PxPvdSceneClient
83{
84 public:
85 /**
86 Sets the PVD flag. See PxPvdSceneFlag.
87 \param flag Flag to set.
88 \param value value the flag gets set to.
89 */
90 virtual void setScenePvdFlag(PxPvdSceneFlag::Enum flag, bool value) = 0;
91
92 /**
93 Sets the PVD flags. See PxPvdSceneFlags.
94 \param flags Flags to set.
95 */
96 virtual void setScenePvdFlags(PxPvdSceneFlags flags) = 0;
97
98 /**
99 Retrieves the PVD flags. See PxPvdSceneFlags.
100 */
101 virtual PxPvdSceneFlags getScenePvdFlags() const = 0;
102
103 /**
104 update camera on PVD application's render window
105 */
106 virtual void updateCamera(const char* name, const PxVec3& origin, const PxVec3& up, const PxVec3& target) = 0;
107
108 /**
109 draw points on PVD application's render window
110 */
111 virtual void drawPoints(const physx::pvdsdk::PvdDebugPoint* points, PxU32 count) = 0;
112
113 /**
114 draw lines on PVD application's render window
115 */
116 virtual void drawLines(const physx::pvdsdk::PvdDebugLine* lines, PxU32 count) = 0;
117
118 /**
119 draw triangles on PVD application's render window
120 */
121 virtual void drawTriangles(const physx::pvdsdk::PvdDebugTriangle* triangles, PxU32 count) = 0;
122
123 /**
124 draw text on PVD application's render window
125 */
126 virtual void drawText(const physx::pvdsdk::PvdDebugText& text) = 0;
127
128 /**
129 get the underlying client, for advanced users
130 */
131 virtual physx::pvdsdk::PvdClient* getClientInternal() = 0;
132
133protected:
134 virtual ~PxPvdSceneClient(){}
135};
136
137#if !PX_DOXYGEN
138} // namespace physx
139#endif
140
141/** @} */
142#endif // PX_PVD_SCENE_CLIENT_H
143

source code of qtquick3dphysics/src/3rdparty/PhysX/include/pvd/PxPvdSceneClient.h