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 struct NvBlastBondDesc;
00035 struct NvBlastChunkDesc;
00036 struct NvBlastBond;
00037
00038 namespace Nv
00039 {
00040 namespace Blast
00041 {
00042
00043
00044 class FractureTool;
00045 class TriangleProcessor;
00046 struct PlaneChunkIndexer;
00047
00054 struct BondGenerationConfig
00055 {
00056 enum BondGenMode { EXACT, AVERAGE };
00057 float maxSeparation;
00058 BondGenMode bondMode;
00059 };
00060
00061
00062 struct PlaneChunkIndexer
00063 {
00064 int32_t chunkId;
00065 int32_t trId;
00066 NvcPlane plane;
00067 };
00068
00069
00074 class BlastBondGenerator
00075 {
00076 public:
00077 virtual ~BlastBondGenerator() {}
00078
00082 virtual void release() = 0;
00083
00093 virtual int32_t buildDescFromInternalFracture(FractureTool* tool, const bool* chunkIsSupport,
00094 NvBlastBondDesc*& resultBondDescs, NvBlastChunkDesc*& resultChunkDescriptors) = 0;
00095
00096
00107 virtual int32_t createBondBetweenMeshes(uint32_t meshACount, const Triangle* meshA, uint32_t meshBCount, const Triangle* meshB,
00108 NvBlastBond& resultBond, BondGenerationConfig conf) = 0;
00109
00124 virtual int32_t createBondBetweenMeshes(uint32_t meshCount, const uint32_t* geometryOffset, const Triangle* geometry,
00125 uint32_t overlapsCount, const uint32_t* overlapsA, const uint32_t* overlapsB,
00126 NvBlastBondDesc*& resultBond, BondGenerationConfig cfg) = 0;
00127
00128
00142 virtual int32_t bondsFromPrefractured(uint32_t meshCount, const uint32_t* geometryOffset, const Triangle* geometry,
00143 const bool* chunkIsSupport, NvBlastBondDesc*& resultBondDescs,
00144 BondGenerationConfig conf) = 0;
00145
00160 virtual int32_t bondsFromPrefractured(uint32_t meshCount, const uint32_t* convexHullOffset, const CollisionHull** chunkHulls,
00161 const bool* chunkIsSupport, const uint32_t* meshGroups, NvBlastBondDesc*& resultBondDescs, float maxSeparation) = 0;
00162
00163
00164
00165 };
00166
00167 }
00168 }
00169
00170 #endif // NVBLASTEXTAUTHORINGBONDGENERATOR_H