aboutsummaryrefslogtreecommitdiff
path: root/sdk/toolkit/include/NvBlastTkAsset.h
blob: 33f54c80c96a437d153b9e64609d269bc71d6f19 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
// 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-2020 NVIDIA Corporation. All rights reserved.


#ifndef NVBLASTTKASSET_H
#define NVBLASTTKASSET_H

#include "NvBlastTkIdentifiable.h"
#include "NvBlastTypes.h"
#include "PxVec3.h"

// Forward declarations
struct NvBlastAsset;


namespace Nv
{
namespace Blast
{

/**
A descriptor stored by a TkAsset for an internal joint.  Internal joints are created when a TkAsset is instanced into a TkActor.
*/
struct TkAssetJointDesc
{
	uint32_t		nodeIndices[2];		//!< The graph node indices corresponding to the support chunks joined by a joint
	physx::PxVec3	attachPositions[2];	//!< The joint's attachment positions in asset-local space
};


/**
The static data associated with a destructible actor.  TkAsset encapsulates an NvBlastAsset.  In addition to the NvBlastAsset,
the TkAsset stores joint descriptors (see TkAssetJointDesc).
*/
class TkAsset : public TkIdentifiable
{
public:
	/**
	Access to underlying low-level asset.

	\return a pointer to the (const) low-level NvBlastAsset object.
	*/
	virtual const NvBlastAsset*			getAssetLL() const = 0;

	/**
	Get the number of chunks in this asset.

	NOTE: Wrapper function over low-level function call, see NvBlastAssetGetChunkCount for details.

	\return	the number of chunks in the asset.
	*/
	virtual uint32_t					getChunkCount() const = 0;

	/**
	Get the number of leaf chunks in the given asset.

	NOTE: Wrapper function over low-level function call, see NvBlastAssetGetLeafChunkCount for details.

	\return	the number of leaf chunks in the asset.
	*/
	virtual uint32_t					getLeafChunkCount() const = 0;

	/**
	Get the number of bonds in the given asset.

	NOTE: Wrapper function over low-level function call, see NvBlastAssetGetBondCount for details.

	\return	the number of bonds in the asset.
	*/
	virtual uint32_t					getBondCount() const = 0;

	/**
	Access an array of chunks of the given asset.
		
	NOTE: Wrapper function over low-level function call, see NvBlastAssetGetChunks for details.

	\return	a pointer to an array of chunks of the asset.
	*/
	virtual const NvBlastChunk*			getChunks() const = 0;

	/**
	Access an array of bonds of the given asset.

	NOTE: Wrapper function over low-level function call, see NvBlastAssetGetBonds for details.

	\return	a pointer to an array of bonds of the asset.
	*/
	virtual const NvBlastBond*			getBonds() const = 0;

	/**
	Access an support graph for the given asset.

	NOTE: Wrapper function over low-level function call, see NvBlastAssetGetSupportGraph for details.

	\return	a struct of support graph for the given asset.
	*/
	virtual const NvBlastSupportGraph	getGraph() const = 0;

	/**
	Retrieve the size (in bytes) of the LL asset.

	NOTE: Wrapper function over low-level function call, see NvBlastAssetGetSize for details.

	\return	the size of the data block (in bytes).
	*/
	virtual uint32_t					getDataSize() const = 0;

	/**
	The number of internal TkJoint objects that will be created when this asset is instanced into a TkActor
	(see TkFramework::createActor).  These joints will not trigger TkJointUpdateEvent events
	until this actor is split into actors such that a joint connects two actors.  At this time the actor's family
	will dispatch a TkJointUpdateEvent::External event during a call to TkGroup::endProcess() (see TkGroup).

	\return the number of descriptors for internal joints.
	*/
	virtual uint32_t					getJointDescCount() const = 0;

	/**
	The descriptors for the internal joints created when this asset is instanced.  (See getJointDescCount.)

	\return a pointer to the array of descriptors for internal joints.
	*/
	virtual const TkAssetJointDesc*		getJointDescs() const = 0;
};

} // namespace Blast
} // namespace Nv


#endif // ifndef NVBLASTTKASSET_H