diff options
| author | git perforce import user <a@b> | 2016-10-25 12:29:14 -0600 |
|---|---|---|
| committer | Sheikh Dawood Abdul Ajees <Sheikh Dawood Abdul Ajees> | 2016-10-25 18:56:37 -0500 |
| commit | 3dfe2108cfab31ba3ee5527e217d0d8e99a51162 (patch) | |
| tree | fa6485c169e50d7415a651bf838f5bcd0fd3bfbd /APEX_1.4/shared/general/HACD/include/ConvexDecomposition.h | |
| download | physx-3.4-3dfe2108cfab31ba3ee5527e217d0d8e99a51162.tar.xz physx-3.4-3dfe2108cfab31ba3ee5527e217d0d8e99a51162.zip | |
Initial commit:
PhysX 3.4.0 Update @ 21294896
APEX 1.4.0 Update @ 21275617
[CL 21300167]
Diffstat (limited to 'APEX_1.4/shared/general/HACD/include/ConvexDecomposition.h')
| -rw-r--r-- | APEX_1.4/shared/general/HACD/include/ConvexDecomposition.h | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/APEX_1.4/shared/general/HACD/include/ConvexDecomposition.h b/APEX_1.4/shared/general/HACD/include/ConvexDecomposition.h new file mode 100644 index 00000000..dcec8581 --- /dev/null +++ b/APEX_1.4/shared/general/HACD/include/ConvexDecomposition.h @@ -0,0 +1,112 @@ + +#ifndef CONVEX_DECOMPOSITION_H + +#define CONVEX_DECOMPOSITION_H + +#include "PlatformConfigHACD.h" + +/*! +** +** Copyright (c) 2015 by John W. Ratcliff mailto:[email protected] +** +** +** The MIT license: +** +** Permission is hereby granted, free of charge, to any person obtaining a copy +** of this software and associated documentation files (the "Software"), to deal +** in the Software without restriction, including without limitation the rights +** to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +** copies of the Software, and to permit persons to whom the Software is furnished +** to do so, subject to the following conditions: +** +** The above copyright notice and this permission notice shall be included in all +** copies or substantial portions of the Software. + +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +** FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +** AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +** WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +** CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +** +** If you find this code snippet useful; you can tip me at this bitcoin address: +** +** BITCOIN TIP JAR: "1BT66EoaGySkbY9J6MugvQRhMMXDwPxPya" +** + +*/ + +namespace CONVEX_DECOMPOSITION +{ + +class ConvexResult +{ +public: + ConvexResult(void) + { + mHullVcount = 0; + mHullVertices = 0; + mHullTcount = 0; + mHullIndices = 0; + mHullVolume = 0; + } + +// the convex hull.result + uint32_t mHullVcount; // Number of vertices in this convex hull. + float *mHullVertices; // The array of vertices (x,y,z)(x,y,z)... + uint32_t mHullTcount; // The number of triangles int he convex hull + uint32_t *mHullIndices; // The triangle indices (0,1,2)(3,4,5)... + float mHullVolume; // the volume of the convex hull. + +}; + +// just to avoid passing a zillion parameters to the method the +// options are packed into this descriptor. +class DecompDesc +{ +public: + DecompDesc(void) + { + mVcount = 0; + mVertices = 0; + mTcount = 0; + mIndices = 0; + mDepth = 10; + mCpercent = 4; + mMeshVolumePercent = 0.01f; + mMaxVertices = 32; + mCallback = NULL; + } + +// describes the input triangle. + uint32_t mVcount; // the number of vertices in the source mesh. + const float *mVertices; // start of the vertex position array. Assumes a stride of 3 doubles. + uint32_t mTcount; // the number of triangles in the source mesh. + const uint32_t *mIndices; // the indexed triangle list array (zero index based) +// options + uint32_t mDepth; // depth to split, a maximum of 10, generally not over 7. + float mCpercent; // the concavity threshold percentage. 0=20 is reasonable. + float mMeshVolumePercent; // if less than this percentage of the overall mesh volume, ignore + hacd::ICallback *mCallback; + +// hull output limits. + uint32_t mMaxVertices; // maximum number of vertices in the output hull. Recommended 32 or less. +}; + +class ConvexDecomposition +{ +public: + virtual uint32_t performConvexDecomposition(const DecompDesc &desc) = 0; // returns the number of hulls produced. + virtual void release(void) = 0; + virtual ConvexResult * getConvexResult(uint32_t index,bool takeMemoryOwnership) = 0; +protected: + virtual ~ConvexDecomposition(void) { }; +}; + +ConvexDecomposition * createConvexDecomposition(void); + +}; + +#endif |