aboutsummaryrefslogtreecommitdiff
path: root/sdk/extensions/import/include/NvBlastExtApexImportTool.h
diff options
context:
space:
mode:
Diffstat (limited to 'sdk/extensions/import/include/NvBlastExtApexImportTool.h')
-rwxr-xr-x[-rw-r--r--]sdk/extensions/import/include/NvBlastExtApexImportTool.h418
1 files changed, 209 insertions, 209 deletions
diff --git a/sdk/extensions/import/include/NvBlastExtApexImportTool.h b/sdk/extensions/import/include/NvBlastExtApexImportTool.h
index 2867eac..3eb4f71 100644..100755
--- a/sdk/extensions/import/include/NvBlastExtApexImportTool.h
+++ b/sdk/extensions/import/include/NvBlastExtApexImportTool.h
@@ -1,209 +1,209 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and related documentation and
-// any modifications thereto. Any use, reproduction, disclosure, or
-// distribution of this software and related documentation without an express
-// license agreement from NVIDIA Corporation is strictly prohibited.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2016-2018 NVIDIA Corporation. All rights reserved.
-
-
-#ifndef NVBLASTEXTAPEXIMPORTTOOL_H
-#define NVBLASTEXTAPEXIMPORTTOOL_H
-
-#include "NvBlast.h"
-#include <vector>
-#include <string>
-#include "NvBlastExtPxAsset.h"
-#include <nvparameterized\NvSerializer.h>
-#include <NvBlastExtExporter.h>
-
-namespace physx
-{
- class PxFoundation;
- class PxPhysics;
- class PxCooking;
-
-namespace general_PxIOStream2
-{
-class PxFileBuf;
-}
-}
-
-namespace NvParameterized
-{
- class Interface;
-}
-
-namespace nvidia
-{
-namespace apex
-{
-class ApexSDK;
-class ModuleDestructible;
-class DestructibleAsset;
-}
-using namespace physx::general_PxIOStream2;
-}
-
-
-namespace Nv
-{
-namespace Blast
-{
-
-struct CollisionHull;
-class TkFramework;
-
-namespace ApexImporter
-{
-
-struct ApexImporterConfig
-{
- /**
- Interface search mode:
-
- EXACT - - Importer tries to find triangles from two chunks which lay in common surface.
- If such triangles are found, their intersections are considered as the interface.
-
- FORCED - Bond creation is forced no matter how far chunks from each other.
-
- */
- enum InterfaceSearchMode { EXACT, FORCED, MODE_COUNT };
-
- ApexImporterConfig()
- {
- setDefaults();
- }
-
- void setDefaults()
- {
- infSearchMode = EXACT;
- }
- InterfaceSearchMode infSearchMode;
-};
-
-
-class ApexDestruction;
-
-
-/**
- ApexImportTool provides routines to create NvBlastAssets from APEX assets.
-*/
-class ApexImportTool
-{
-public:
- ApexImportTool();
- ~ApexImportTool();
-
- /**
- Method loads APEX Destruction asset from file
- \param[in] stream Pointer on PxFileBuf stream with Apex Destruction asset
- \return If not 0, pointer on DestructibleAsset object is returned.
- */
- bool loadAssetFromFile(nvidia::PxFileBuf* stream, NvParameterized::Serializer::DeserializedData& data);
-
-
- /**
- Method builds NvBlastAsset form provided DestructibleAsset. DestructibleAsset must contain support graph!
- \param[out] chunkReorderInvMap Chunk map from blast chunk to apex chunk to be filled.
- \param[in] apexAsset Pointer on DestructibleAsset object which should be converted to NvBlastAsset
- \param[out] chunkDescriptors Reference on chunk descriptors array to be filled.
- \param[out] bondDescriptors Reference on bond descriptors array to be filled.
- \param[out] flags Reference on chunk flags to be filled.
-
- \return If true, output arrays are filled.
- */
- bool importApexAsset(std::vector<uint32_t>& chunkReorderInvMap, NvParameterized::Interface* assetNvIfc,
- std::vector<NvBlastChunkDesc>& chunkDescriptors, std::vector<NvBlastBondDesc>& bondDescriptors, std::vector<uint32_t>& flags);
-
- /**
- Method builds NvBlastAsset form provided DestructibleAsset. DestructibleAsset must contain support graph!
- Parameteres of conversion could be provided with ApexImporterConfig.
- \param[out] chunkReorderInvMap Chunk map from blast chunk to apex chunk to be filled.
- \param[in] apexAsset Pointer on DestructibleAsset object which should be converted to NvBlastAsset
- \param[out] chunkDescriptors Reference on chunk descriptors array to be filled.
- \param[out] bondDescriptors Reference on bond descriptors array to be filled.
- \param[out] flags Reference on chunk flags to be filled.
- \param[in] config ApexImporterConfig object with conversion parameters, see above.
- \return If true, output arrays are filled.
- */
- bool importApexAsset(std::vector<uint32_t>& chunkReorderInvMap, NvParameterized::Interface* assetNvIfc,
- std::vector<NvBlastChunkDesc>& chunkDescriptors, std::vector<NvBlastBondDesc>& bondDescriptors, std::vector<uint32_t>& flags,
- const ApexImporterConfig& config);
-
- /**
- Method builds NvBlastAsset form provided DestructibleAsset. DestructibleAsset must contain support graph!
- */
- bool importRendermesh(const std::vector<uint32_t>& chunkReorderInvMap, const NvParameterized::Interface* assetNvIfc, Nv::Blast::ExporterMeshData* outputData, const char* materialsDir);
-
-
- /**
- Method serializes user-supplied NvBlastAsset object to user-supplied PxFileBuf stream.
- \param[in] asset Pointer on NvBlastAsset object which should be serialized
- \param[in] stream Pointer on PxFileBuf object in which NvBlastAsset should be serialized.
- \return If true, NvBlastAsset object serialized successfully.
- */
- bool saveAsset(const NvBlastAsset* asset, nvidia::PxFileBuf* stream);
-
- /**
- Method creates collision geometry from user-supplied APEX Destructible asset.
- \param[in] apexAsset Pointer on DestructibleAsset object for which collision geometry should be created.
- \param[in] chunkCount Blast asset chunk count, should be equal to number of blast chunk descriptors which are gathered at ApexImportTool::importApexAsset(...)
- \param[in] chunkReorderInvMap Chunk map from blast chunk to apex chunk filled in ApexImportTool::importApexAsset(...)
- \param[in] apexChunkFlags Chunk flags array
- \param[out] physicsChunks Chunk physics info output array
- \param[out] physicsSubchunks Chunk collision geometry and transformation data output array
- \param[out] hullsDescs Chunk collision geometry descriptors, can be used to save to some third party format
- \return If true - success, output arrays are filled.
- */
- bool getCollisionGeometry(const NvParameterized::Interface* assetPrm, uint32_t chunkCount, std::vector<uint32_t>& chunkReorderInvMap,
- const std::vector<uint32_t>& apexChunkFlags, std::vector<ExtPxAssetDesc::ChunkDesc>& physicsChunks,
- std::vector<ExtPxAssetDesc::SubchunkDesc>& physicsSubchunks, std::vector<std::vector<CollisionHull*> >& hullsDesc);
-
- //////////////////////////////////////////////////////////////////////////////
-
- bool isValid();
-
- physx::PxPhysics* getPxSdk() { return m_PhysxSDK; }
- physx::PxCooking* getCooking() { return m_Cooking; };
-
-private:
- bool importApexAssetInternal(std::vector<uint32_t>& chunkReorderInvMap, NvParameterized::Interface* assetNvIfc,
- std::vector<NvBlastChunkDesc>& chunkDescriptors, std::vector<NvBlastBondDesc>& bondDesc, std::vector<uint32_t>& flags,
- const ApexImporterConfig& configDesc);
-
-protected:
- ApexImportTool(const ApexImportTool&);
- ApexImportTool& operator=(const ApexImportTool&);
-
- physx::PxFoundation* m_Foundation;
- physx::PxPhysics* m_PhysxSDK;
- physx::PxCooking* m_Cooking;
-
-};
-
-} // namespace ApexImporter
-
-} // namespace Blast
-} // namespace Nv
-
-#endif // NVBLASTEXTAPEXIMPORTTOOL_H
+// This code contains NVIDIA Confidential Information and is disclosed to you
+// under a form of NVIDIA software license agreement provided separately to you.
+//
+// Notice
+// NVIDIA Corporation and its licensors retain all intellectual property and
+// proprietary rights in and to this software and related documentation and
+// any modifications thereto. Any use, reproduction, disclosure, or
+// distribution of this software and related documentation without an express
+// license agreement from NVIDIA Corporation is strictly prohibited.
+//
+// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
+// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
+// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
+// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
+//
+// Information and code furnished is believed to be accurate and reliable.
+// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
+// information or for any infringement of patents or other rights of third parties that may
+// result from its use. No license is granted by implication or otherwise under any patent
+// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
+// This code supersedes and replaces all information previously supplied.
+// NVIDIA Corporation products are not authorized for use as critical
+// components in life support devices or systems without express written approval of
+// NVIDIA Corporation.
+//
+// Copyright (c) 2016-2018 NVIDIA Corporation. All rights reserved.
+
+
+#ifndef NVBLASTEXTAPEXIMPORTTOOL_H
+#define NVBLASTEXTAPEXIMPORTTOOL_H
+
+#include "NvBlast.h"
+#include <vector>
+#include <string>
+#include "NvBlastExtPxAsset.h"
+#include <nvparameterized\NvSerializer.h>
+#include <NvBlastExtExporter.h>
+
+namespace physx
+{
+ class PxFoundation;
+ class PxPhysics;
+ class PxCooking;
+
+namespace general_PxIOStream2
+{
+class PxFileBuf;
+}
+}
+
+namespace NvParameterized
+{
+ class Interface;
+}
+
+namespace nvidia
+{
+namespace apex
+{
+class ApexSDK;
+class ModuleDestructible;
+class DestructibleAsset;
+}
+using namespace physx::general_PxIOStream2;
+}
+
+
+namespace Nv
+{
+namespace Blast
+{
+
+struct CollisionHull;
+class TkFramework;
+
+namespace ApexImporter
+{
+
+struct ApexImporterConfig
+{
+ /**
+ Interface search mode:
+
+ EXACT - - Importer tries to find triangles from two chunks which lay in common surface.
+ If such triangles are found, their intersections are considered as the interface.
+
+ FORCED - Bond creation is forced no matter how far chunks from each other.
+
+ */
+ enum InterfaceSearchMode { EXACT, FORCED, MODE_COUNT };
+
+ ApexImporterConfig()
+ {
+ setDefaults();
+ }
+
+ void setDefaults()
+ {
+ infSearchMode = EXACT;
+ }
+ InterfaceSearchMode infSearchMode;
+};
+
+
+class ApexDestruction;
+
+
+/**
+ ApexImportTool provides routines to create NvBlastAssets from APEX assets.
+*/
+class ApexImportTool
+{
+public:
+ ApexImportTool();
+ ~ApexImportTool();
+
+ /**
+ Method loads APEX Destruction asset from file
+ \param[in] stream Pointer on PxFileBuf stream with Apex Destruction asset
+ \return If not 0, pointer on DestructibleAsset object is returned.
+ */
+ bool loadAssetFromFile(nvidia::PxFileBuf* stream, NvParameterized::Serializer::DeserializedData& data);
+
+
+ /**
+ Method builds NvBlastAsset form provided DestructibleAsset. DestructibleAsset must contain support graph!
+ \param[out] chunkReorderInvMap Chunk map from blast chunk to apex chunk to be filled.
+ \param[in] apexAsset Pointer on DestructibleAsset object which should be converted to NvBlastAsset
+ \param[out] chunkDescriptors Reference on chunk descriptors array to be filled.
+ \param[out] bondDescriptors Reference on bond descriptors array to be filled.
+ \param[out] flags Reference on chunk flags to be filled.
+
+ \return If true, output arrays are filled.
+ */
+ bool importApexAsset(std::vector<uint32_t>& chunkReorderInvMap, NvParameterized::Interface* assetNvIfc,
+ std::vector<NvBlastChunkDesc>& chunkDescriptors, std::vector<NvBlastBondDesc>& bondDescriptors, std::vector<uint32_t>& flags);
+
+ /**
+ Method builds NvBlastAsset form provided DestructibleAsset. DestructibleAsset must contain support graph!
+ Parameteres of conversion could be provided with ApexImporterConfig.
+ \param[out] chunkReorderInvMap Chunk map from blast chunk to apex chunk to be filled.
+ \param[in] apexAsset Pointer on DestructibleAsset object which should be converted to NvBlastAsset
+ \param[out] chunkDescriptors Reference on chunk descriptors array to be filled.
+ \param[out] bondDescriptors Reference on bond descriptors array to be filled.
+ \param[out] flags Reference on chunk flags to be filled.
+ \param[in] config ApexImporterConfig object with conversion parameters, see above.
+ \return If true, output arrays are filled.
+ */
+ bool importApexAsset(std::vector<uint32_t>& chunkReorderInvMap, NvParameterized::Interface* assetNvIfc,
+ std::vector<NvBlastChunkDesc>& chunkDescriptors, std::vector<NvBlastBondDesc>& bondDescriptors, std::vector<uint32_t>& flags,
+ const ApexImporterConfig& config);
+
+ /**
+ Method builds NvBlastAsset form provided DestructibleAsset. DestructibleAsset must contain support graph!
+ */
+ bool importRendermesh(const std::vector<uint32_t>& chunkReorderInvMap, const NvParameterized::Interface* assetNvIfc, Nv::Blast::ExporterMeshData* outputData, const char* materialsDir);
+
+
+ /**
+ Method serializes user-supplied NvBlastAsset object to user-supplied PxFileBuf stream.
+ \param[in] asset Pointer on NvBlastAsset object which should be serialized
+ \param[in] stream Pointer on PxFileBuf object in which NvBlastAsset should be serialized.
+ \return If true, NvBlastAsset object serialized successfully.
+ */
+ bool saveAsset(const NvBlastAsset* asset, nvidia::PxFileBuf* stream);
+
+ /**
+ Method creates collision geometry from user-supplied APEX Destructible asset.
+ \param[in] apexAsset Pointer on DestructibleAsset object for which collision geometry should be created.
+ \param[in] chunkCount Blast asset chunk count, should be equal to number of blast chunk descriptors which are gathered at ApexImportTool::importApexAsset(...)
+ \param[in] chunkReorderInvMap Chunk map from blast chunk to apex chunk filled in ApexImportTool::importApexAsset(...)
+ \param[in] apexChunkFlags Chunk flags array
+ \param[out] physicsChunks Chunk physics info output array
+ \param[out] physicsSubchunks Chunk collision geometry and transformation data output array
+ \param[out] hullsDescs Chunk collision geometry descriptors, can be used to save to some third party format
+ \return If true - success, output arrays are filled.
+ */
+ bool getCollisionGeometry(const NvParameterized::Interface* assetPrm, uint32_t chunkCount, std::vector<uint32_t>& chunkReorderInvMap,
+ const std::vector<uint32_t>& apexChunkFlags, std::vector<ExtPxAssetDesc::ChunkDesc>& physicsChunks,
+ std::vector<ExtPxAssetDesc::SubchunkDesc>& physicsSubchunks, std::vector<std::vector<CollisionHull*> >& hullsDesc);
+
+ //////////////////////////////////////////////////////////////////////////////
+
+ bool isValid();
+
+ physx::PxPhysics* getPxSdk() { return m_PhysxSDK; }
+ physx::PxCooking* getCooking() { return m_Cooking; };
+
+private:
+ bool importApexAssetInternal(std::vector<uint32_t>& chunkReorderInvMap, NvParameterized::Interface* assetNvIfc,
+ std::vector<NvBlastChunkDesc>& chunkDescriptors, std::vector<NvBlastBondDesc>& bondDesc, std::vector<uint32_t>& flags,
+ const ApexImporterConfig& configDesc);
+
+protected:
+ ApexImportTool(const ApexImportTool&);
+ ApexImportTool& operator=(const ApexImportTool&);
+
+ physx::PxFoundation* m_Foundation;
+ physx::PxPhysics* m_PhysxSDK;
+ physx::PxCooking* m_Cooking;
+
+};
+
+} // namespace ApexImporter
+
+} // namespace Blast
+} // namespace Nv
+
+#endif // NVBLASTEXTAPEXIMPORTTOOL_H