From 3dfe2108cfab31ba3ee5527e217d0d8e99a51162 Mon Sep 17 00:00:00 2001
From: git perforce import user
Date: Tue, 25 Oct 2016 12:29:14 -0600
Subject: Initial commit: PhysX 3.4.0 Update @ 21294896 APEX 1.4.0 Update @
21275617
[CL 21300167]
---
.../files/PxGeometryHelpers_8h-source.html | 228 +++++++++++++++++++++
1 file changed, 228 insertions(+)
create mode 100644 PhysX_3.4/Documentation/PhysXAPI/files/PxGeometryHelpers_8h-source.html
(limited to 'PhysX_3.4/Documentation/PhysXAPI/files/PxGeometryHelpers_8h-source.html')
diff --git a/PhysX_3.4/Documentation/PhysXAPI/files/PxGeometryHelpers_8h-source.html b/PhysX_3.4/Documentation/PhysXAPI/files/PxGeometryHelpers_8h-source.html
new file mode 100644
index 00000000..c5f45e49
--- /dev/null
+++ b/PhysX_3.4/Documentation/PhysXAPI/files/PxGeometryHelpers_8h-source.html
@@ -0,0 +1,228 @@
+
+
+ PxGeometryHelpers.h
Go to the documentation of this file.
00001 // This code contains NVIDIA Confidential Information and is disclosed to you +00002 // under a form of NVIDIA software license agreement provided separately to you. +00003 // +00004 // Notice +00005 // NVIDIA Corporation and its licensors retain all intellectual property and +00006 // proprietary rights in and to this software and related documentation and +00007 // any modifications thereto. Any use, reproduction, disclosure, or +00008 // distribution of this software and related documentation without an express +00009 // license agreement from NVIDIA Corporation is strictly prohibited. +00010 // +00011 // ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES +00012 // NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO +00013 // THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT, +00014 // MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE. +00015 // +00016 // Information and code furnished is believed to be accurate and reliable. +00017 // However, NVIDIA Corporation assumes no responsibility for the consequences of use of such +00018 // information or for any infringement of patents or other rights of third parties that may +00019 // result from its use. No license is granted by implication or otherwise under any patent +00020 // or patent rights of NVIDIA Corporation. Details are subject to change without notice. +00021 // This code supersedes and replaces all information previously supplied. +00022 // NVIDIA Corporation products are not authorized for use as critical +00023 // components in life support devices or systems without express written approval of +00024 // NVIDIA Corporation. +00025 // +00026 // Copyright (c) 2008-2016 NVIDIA Corporation. All rights reserved. +00027 // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. +00028 // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. +00029 +00030 +00031 #ifndef PX_PHYSICS_GEOMETRYHELPERS +00032 #define PX_PHYSICS_GEOMETRYHELPERS +00033 +00037 #include "common/PxPhysXCommonConfig.h" +00038 #include "PxGeometry.h" +00039 #include "PxBoxGeometry.h" +00040 #include "PxSphereGeometry.h" +00041 #include "PxCapsuleGeometry.h" +00042 #include "PxPlaneGeometry.h" +00043 #include "PxConvexMeshGeometry.h" +00044 #include "PxTriangleMeshGeometry.h" +00045 #include "PxHeightFieldGeometry.h" +00046 #include "foundation/PxPlane.h" +00047 #include "foundation/PxTransform.h" +00048 #include "foundation/PxUnionCast.h" +00049 +00050 #if !PX_DOXYGEN +00051 namespace physx +00052 { +00053 #endif +00054 +00064 PX_ALIGN_PREFIX(4) +00065 class PxGeometryHolder +00066 { +00067 public: +00068 PX_FORCE_INLINE PxGeometryType::Enum getType() const +00069 { +00070 return any().getType(); +00071 } +00072 +00073 PX_FORCE_INLINE PxGeometry& any() +00074 { +00075 return *PxUnionCast<PxGeometry*>(&bytes.geometry); +00076 } +00077 +00078 PX_FORCE_INLINE const PxGeometry& any() const +00079 { +00080 return *PxUnionCast<const PxGeometry*>(&bytes.geometry); +00081 } +00082 +00083 PX_FORCE_INLINE PxSphereGeometry& sphere() +00084 { +00085 return get<PxSphereGeometry, PxGeometryType::eSPHERE>(); +00086 } +00087 +00088 PX_FORCE_INLINE const PxSphereGeometry& sphere() const +00089 { +00090 return get<const PxSphereGeometry, PxGeometryType::eSPHERE>(); +00091 } +00092 +00093 PX_FORCE_INLINE PxPlaneGeometry& plane() +00094 { +00095 return get<PxPlaneGeometry, PxGeometryType::ePLANE>(); +00096 } +00097 +00098 PX_FORCE_INLINE const PxPlaneGeometry& plane() const +00099 { +00100 return get<const PxPlaneGeometry, PxGeometryType::ePLANE>(); +00101 } +00102 +00103 PX_FORCE_INLINE PxCapsuleGeometry& capsule() +00104 { +00105 return get<PxCapsuleGeometry, PxGeometryType::eCAPSULE>(); +00106 } +00107 +00108 PX_FORCE_INLINE const PxCapsuleGeometry& capsule() const +00109 { +00110 return get<const PxCapsuleGeometry, PxGeometryType::eCAPSULE>(); +00111 } +00112 +00113 PX_FORCE_INLINE PxBoxGeometry& box() +00114 { +00115 return get<PxBoxGeometry, PxGeometryType::eBOX>(); +00116 } +00117 +00118 PX_FORCE_INLINE const PxBoxGeometry& box() const +00119 { +00120 return get<const PxBoxGeometry, PxGeometryType::eBOX>(); +00121 } +00122 +00123 PX_FORCE_INLINE PxConvexMeshGeometry& convexMesh() +00124 { +00125 return get<PxConvexMeshGeometry, PxGeometryType::eCONVEXMESH>(); +00126 } +00127 +00128 PX_FORCE_INLINE const PxConvexMeshGeometry& convexMesh() const +00129 { +00130 return get<const PxConvexMeshGeometry, PxGeometryType::eCONVEXMESH>(); +00131 } +00132 +00133 PX_FORCE_INLINE PxTriangleMeshGeometry& triangleMesh() +00134 { +00135 return get<PxTriangleMeshGeometry, PxGeometryType::eTRIANGLEMESH>(); +00136 } +00137 +00138 PX_FORCE_INLINE const PxTriangleMeshGeometry& triangleMesh() const +00139 { +00140 return get<const PxTriangleMeshGeometry, PxGeometryType::eTRIANGLEMESH>(); +00141 } +00142 +00143 PX_FORCE_INLINE PxHeightFieldGeometry& heightField() +00144 { +00145 return get<PxHeightFieldGeometry, PxGeometryType::eHEIGHTFIELD>(); +00146 } +00147 +00148 PX_FORCE_INLINE const PxHeightFieldGeometry& heightField() const +00149 { +00150 return get<const PxHeightFieldGeometry, PxGeometryType::eHEIGHTFIELD>(); +00151 } +00152 +00153 PX_FORCE_INLINE void storeAny(const PxGeometry& geometry) +00154 { +00155 PX_ASSERT_WITH_MESSAGE( (geometry.getType() >= PxGeometryType::eSPHERE) && +00156 (geometry.getType() < PxGeometryType::eGEOMETRY_COUNT), +00157 "Unexpected GeometryType in PxGeometryHolder::storeAny"); +00158 +00159 switch(geometry.getType()) +00160 { +00161 case PxGeometryType::eSPHERE: put<PxSphereGeometry>(geometry); break; +00162 case PxGeometryType::ePLANE: put<PxPlaneGeometry>(geometry); break; +00163 case PxGeometryType::eCAPSULE: put<PxCapsuleGeometry>(geometry); break; +00164 case PxGeometryType::eBOX: put<PxBoxGeometry>(geometry); break; +00165 case PxGeometryType::eCONVEXMESH: put<PxConvexMeshGeometry>(geometry); break; +00166 case PxGeometryType::eTRIANGLEMESH: put<PxTriangleMeshGeometry>(geometry); break; +00167 case PxGeometryType::eHEIGHTFIELD: put<PxHeightFieldGeometry>(geometry); break; +00168 case PxGeometryType::eGEOMETRY_COUNT: +00169 case PxGeometryType::eINVALID: break; +00170 } +00171 } +00172 +00173 PX_FORCE_INLINE PxGeometryHolder() {} +00174 PX_FORCE_INLINE PxGeometryHolder(const PxGeometry& geometry){ storeAny(geometry); } +00175 +00176 private: +00177 template<typename T> void put(const PxGeometry& geometry) +00178 { +00179 static_cast<T&>(any()) = static_cast<const T&>(geometry); +00180 } +00181 +00182 template<typename T, PxGeometryType::Enum type> T& get() +00183 { +00184 PX_ASSERT(getType() == type); +00185 return static_cast<T&>(any()); +00186 } +00187 +00188 template<typename T, PxGeometryType::Enum type> T& get() const +00189 { +00190 PX_ASSERT(getType() == type); +00191 return static_cast<T&>(any()); +00192 } +00193 +00194 union { +00195 PxU8 geometry[sizeof(PxGeometry)]; +00196 PxU8 box[sizeof(PxBoxGeometry)]; +00197 PxU8 sphere[sizeof(PxSphereGeometry)]; +00198 PxU8 capsule[sizeof(PxCapsuleGeometry)]; +00199 PxU8 plane[sizeof(PxPlaneGeometry)]; +00200 PxU8 convex[sizeof(PxConvexMeshGeometry)]; +00201 PxU8 mesh[sizeof(PxTriangleMeshGeometry)]; +00202 PxU8 heightfield[sizeof(PxHeightFieldGeometry)]; +00203 } bytes; +00204 } +00205 PX_ALIGN_SUFFIX(4); +00206 +00207 +00208 +00209 +00210 #if !PX_DOXYGEN +00211 } // namespace physx +00212 #endif +00213 +00215 #endif +