00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef NVBLASTEXTAUTHORINGBONDGENERATOR_H
00030 #define NVBLASTEXTAUTHORINGBONDGENERATOR_H
00031
00032 #include "NvBlastExtAuthoringTypes.h"
00033
00034 namespace physx
00035 {
00036 class PxPlane;
00037 class PxCooking;
00038 class PxPhysicsInsertionCallback;
00039 }
00040
00041 struct NvBlastBondDesc;
00042 struct NvBlastChunkDesc;
00043 struct NvBlastBond;
00044
00045 namespace Nv
00046 {
00047 namespace Blast
00048 {
00049
00050
00051 class FractureTool;
00052 class TriangleProcessor;
00053 struct PlaneChunkIndexer;
00054
00061 struct BondGenerationConfig
00062 {
00063 enum BondGenMode { EXACT, AVERAGE };
00064 float maxSeparation;
00065 BondGenMode bondMode;
00066 };
00067
00068
00069 struct PlaneChunkIndexer
00070 {
00071 PlaneChunkIndexer(int32_t chunkId, int32_t trId, physx::PxPlane pl) : chunkId(chunkId), trId(trId), plane(pl) {}
00072 int32_t chunkId;
00073 int32_t trId;
00074 physx::PxPlane plane;
00075 };
00076
00077
00082 class BlastBondGenerator
00083 {
00084 public:
00085 virtual ~BlastBondGenerator() {}
00086
00090 virtual void release() = 0;
00091
00101 virtual int32_t buildDescFromInternalFracture(FractureTool* tool, const bool* chunkIsSupport,
00102 NvBlastBondDesc*& resultBondDescs, NvBlastChunkDesc*& resultChunkDescriptors) = 0;
00103
00104
00115 virtual int32_t createBondBetweenMeshes(uint32_t meshACount, const Triangle* meshA, uint32_t meshBCount, const Triangle* meshB,
00116 NvBlastBond& resultBond, BondGenerationConfig conf = BondGenerationConfig()) = 0;
00117
00132 virtual int32_t createBondBetweenMeshes(uint32_t meshCount, const uint32_t* geometryOffset, const Triangle* geometry,
00133 uint32_t overlapsCount, const uint32_t* overlapsA, const uint32_t* overlapsB,
00134 NvBlastBondDesc*& resultBond, BondGenerationConfig cfg) = 0;
00135
00136
00150 virtual int32_t bondsFromPrefractured(uint32_t meshCount, const uint32_t* geometryOffset, const Triangle* geometry,
00151 const bool* chunkIsSupport, NvBlastBondDesc*& resultBondDescs,
00152 BondGenerationConfig conf = BondGenerationConfig()) = 0;
00153
00168 virtual int32_t bondsFromPrefractured(uint32_t meshCount, const uint32_t* convexHullOffset, const CollisionHull** chunkHulls,
00169 const bool* chunkIsSupport, const uint32_t* meshGroups, NvBlastBondDesc*& resultBondDescs, float maxSeparation) = 0;
00170 };
00171
00172 }
00173 }
00174
00175 #endif // NVBLASTEXTAUTHORINGBONDGENERATOR_H