aboutsummaryrefslogtreecommitdiff
path: root/NvBlast/sdk/toolkit/include/NvBlastTkAsset.h
blob: 987da7d72d672814062752b3163e217214fdbd06 (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
/*
* Copyright (c) 2016-2017, NVIDIA CORPORATION.  All rights reserved.
*
* NVIDIA CORPORATION and its licensors retain all intellectual property
* and proprietary rights in and to this software, 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.
*/

#ifndef NVBLASTTKASSET_H
#define NVBLASTTKASSET_H

#include "NvBlastTkSerializable.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 TkSerializable
{
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::sync() (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