Main Page Class List Class Members

# sdk/extensions/physx/include/NvBlastExtPxAsset.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) 2016-2020 NVIDIA Corporation. All rights reserved.
    00027
    00028
    00029 #ifndef NVBLASTEXTPXASSET_H
    00030 #define NVBLASTEXTPXASSET_H
    00031
    00032 #include "NvBlastTkFramework.h"
    00033 #include "PxConvexMeshGeometry.h"
    00034 #include "PxTransform.h"
    00035 #include "NvBlastPreprocessor.h"
    00036
    00037
    00038 // Forward declarations
    00039 namespace physx
    00040 {
    00041 class PxCooking;
    00042
    00043 namespace general_PxIOStream2
    00044 {
    00045 class PxFileBuf;
    00046 }
    00047 }
    00048
    00049 class NvBlastExtDamageAccelerator;
    00050
    00051
    00052 namespace Nv
    00053 {
    00054 namespace Blast
    00055 {
    00056
    00057
    00064 struct ExtPxAssetDesc : public TkAssetDesc
    00065 {
    00071     struct SubchunkDesc
    00072     {
    00073         physx::PxTransform          transform;
    00074         physx::PxConvexMeshGeometry geometry;
    00075     };
    00076
    00082     struct ChunkDesc
    00083     {
    00084         SubchunkDesc*   subchunks;
    00085         uint32_t        subchunkCount;
    00086         bool            isStatic;
    00087     };
    00088
    00089     ChunkDesc*  pxChunks;
    00090 };
    00091
    00092
    00098 struct ExtPxSubchunk
    00099 {
    00100     physx::PxTransform          transform;
    00101     physx::PxConvexMeshGeometry geometry;
    00102 };
    00103
    00104
    00110 struct ExtPxChunk
    00111 {
    00112     uint32_t    firstSubchunkIndex;
    00113     uint32_t    subchunkCount;
    00114     bool        isStatic;
    00115 };
    00116
    00117
    00123 class NV_DLL_EXPORT ExtPxAsset
    00124 {
    00125 public:
    00126
    00135     static ExtPxAsset*              create(const ExtPxAssetDesc& desc, TkFramework& framework);
    00136
    00145     static ExtPxAsset*              create(const TkAssetDesc& desc, ExtPxChunk* pxChunks, ExtPxSubchunk* pxSubchunks, TkFramework& framework);
    00146
    00147
    00148     /*
    00149         Factory method for deserialization
    00150
    00151         Doesn't specify chunks or subchunks as they'll be fed in during deserialization to avoid copying stuff around.
    00152
    00153     */
    00154     static ExtPxAsset*              create(TkAsset* asset);
    00155
    00156     /*
    00157     Create a new ExtPxAsset.
    00158
    00159     \param[in]  asset           TkAsset from which ExtPxAsset will be created
    00160     \param[in]  chunks          Array of physics chunks descriptors
    00161     \param[in]  chunkCount      Size of chunks descriptors array
    00162
    00163
    00164     \return the new ExtPxAsset if successful, NULL otherwise.
    00165
    00166     */
    00167     static ExtPxAsset*              create(TkAsset* asset, ExtPxAssetDesc::ChunkDesc* chunks, uint32_t chunkCount);
    00168
    00172     virtual void                    release() = 0;
    00173
    00179     virtual const TkAsset&          getTkAsset() const = 0;
    00180
    00186     virtual uint32_t                getChunkCount() const = 0;
    00187
    00193     virtual const ExtPxChunk*       getChunks() const = 0;
    00194
    00201     virtual uint32_t                getSubchunkCount() const = 0;
    00202
    00208     virtual const ExtPxSubchunk*    getSubchunks() const = 0;
    00209
    00223     virtual NvBlastActorDesc&       getDefaultActorDesc() = 0;
    00224
    00225     virtual const NvBlastActorDesc& getDefaultActorDesc() const = 0;
    00226
    00230     virtual void                    setUniformHealth(bool enabled) = 0;
    00231
    00235     virtual void                    setAccelerator(NvBlastExtDamageAccelerator* accelerator) = 0;
    00236
    00240     virtual NvBlastExtDamageAccelerator* getAccelerator() const = 0;
    00241
    00245     void*   userData;
    00246 };
    00247
    00248
    00249
    00250 } // namespace Blast
    00251 } // namespace Nv
    00252
    00253
    00254 #endif // ifndef NVBLASTEXTPXASSET_H