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 NVBLASTTKASSETIMPL_H
00030 #define NVBLASTTKASSETIMPL_H
00031
00032
00033 #include "NvBlastTkCommon.h"
00034 #include "NvBlastTkJoint.h"
00035 #include "NvBlastTkAsset.h"
00036 #include "NvBlastTkTypeImpl.h"
00037 #include "NvBlastArray.h"
00038
00039
00040
00041 struct NvBlastAsset;
00042
00043
00044 namespace Nv
00045 {
00046 namespace Blast
00047 {
00048
00052 NVBLASTTK_IMPL_DECLARE(Asset)
00053 {
00054 public:
00055 TkAssetImpl();
00056 TkAssetImpl(const NvBlastID& id);
00057 ~TkAssetImpl();
00058
00059 NVBLASTTK_IMPL_DEFINE_IDENTIFIABLE('A', 'S', 'S', 'T');
00060
00061
00062
00070 static TkAssetImpl* create(const TkAssetDesc& desc);
00071
00082 static TkAssetImpl* create(const NvBlastAsset* assetLL, Nv::Blast::TkAssetJointDesc* jointDescs = nullptr, uint32_t jointDescCount = 0, bool ownsAsset = false);
00083
00087 const NvBlastAsset* getAssetLLInternal() const;
00088
00092 uint32_t getJointDescCountInternal() const;
00093
00097 const TkAssetJointDesc* getJointDescsInternal() const;
00098
00099
00100 virtual const NvBlastAsset* getAssetLL() const override;
00101
00102 virtual uint32_t getChunkCount() const override;
00103
00104 virtual uint32_t getLeafChunkCount() const override;
00105
00106 virtual uint32_t getBondCount() const override;
00107
00108 virtual const NvBlastChunk* getChunks() const override;
00109
00110 virtual const NvBlastBond* getBonds() const override;
00111
00112 virtual const NvBlastSupportGraph getGraph() const override;
00113
00114 virtual uint32_t getDataSize() const override;
00115
00116 virtual uint32_t getJointDescCount() const override;
00117
00118 virtual const TkAssetJointDesc* getJointDescs() const override;
00119
00120
00121 private:
00132 bool addJointDesc(uint32_t chunkIndex0, uint32_t chunkIndex1);
00133
00134 NvBlastAsset* m_assetLL;
00135 Array<TkAssetJointDesc>::type m_jointDescs;
00136 bool m_ownsAsset;
00137 };
00138
00139
00141
00142 NV_INLINE const NvBlastAsset* TkAssetImpl::getAssetLLInternal() const
00143 {
00144 return m_assetLL;
00145 }
00146
00147
00148 NV_INLINE uint32_t TkAssetImpl::getJointDescCountInternal() const
00149 {
00150 return m_jointDescs.size();
00151 }
00152
00153
00154 NV_INLINE const TkAssetJointDesc* TkAssetImpl::getJointDescsInternal() const
00155 {
00156 return m_jointDescs.begin();
00157 }
00158
00159 }
00160 }
00161
00162
00163 #endif // ifndef NVBLASTTKASSETIMPL_H