aboutsummaryrefslogtreecommitdiff
path: root/APEX_1.4/common/include/ApexSDKCachedDataImpl.h
blob: 73f8c6d75fdae08d42549f198fbb80617083da60 (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
/*
 * Copyright (c) 2008-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 __APEX_SCENE_CACHED_DATA_H__

#define __APEX_SCENE_CACHED_DATA_H__

#include "ApexUsingNamespace.h"
#include "PxSimpleTypes.h"
#include "PxFileBuf.h"
#include "PsUserAllocated.h"
#include "PsArray.h"

#include "ApexSDKCachedData.h"

namespace nvidia
{
namespace apex
{

class ApexScene;
class ModuleSceneIntl;

/**
	Cached data is stored per-module.
*/
class ModuleCachedDataIntl : public ModuleCachedData
{
public:
	virtual AuthObjTypeID				getModuleID() const = 0;

	virtual NvParameterized::Interface*	getCachedDataForAssetAtScale(Asset& asset, const PxVec3& scale) = 0;
	virtual PxFileBuf&			serialize(PxFileBuf& stream) const = 0;
	virtual PxFileBuf&			deserialize(PxFileBuf& stream) = 0;
	virtual void						clear(bool force = true) = 0;	// If force == false, data in use by actors will not be deleted
};

//**************************************************************************************************************************
//**************************************************************************************************************************
//**** APEX SCENE CACHED DATA
//**************************************************************************************************************************
//**************************************************************************************************************************

class ApexSDKCachedDataImpl : public ApexSDKCachedData, public UserAllocated
{
public:
	bool							registerModuleDataCache(ModuleCachedDataIntl* cache);
	bool							unregisterModuleDataCache(ModuleCachedDataIntl* cache);

	// ApexSDKCachedData interface
	ApexSDKCachedDataImpl();
	virtual							~ApexSDKCachedDataImpl();

	virtual ModuleCachedData*	getCacheForModule(AuthObjTypeID moduleID);
	virtual PxFileBuf&		serialize(PxFileBuf& stream) const;
	virtual PxFileBuf&		deserialize(PxFileBuf& stream);
	virtual void					clear(bool force = true);

	struct Version
	{
		enum Enum
		{
			First = 0,

			Count,
			Current = Count - 1
		};
	};

	// Data
	physx::Array<ModuleCachedDataIntl*>	mModuleCaches;
};

}
} // end namespace nvidia::apex

#endif	// __APEX_SCENE_CACHED_DATA_H__