#ifndef _RUINSTANCEMANAGER_NULL_H_
#define _RUINSTANCEMANAGER_NULL_H_

#include "../Engine/Base/RuInstanceManagerBase.h"

#include "../NULL/RuEngine_NULL.h"

#pragma unmanaged

// ************************************************************************************************************************************************************

class CRuInstanceManager_NULL : public IRuInstanceManager
{
public:
														CRuInstanceManager_NULL();
	virtual												~CRuInstanceManager_NULL();

	virtual UINT32										GetCacheSize();

	virtual IRuEngine*									GetEngine();

	// Mesh instantiator registration
	virtual BOOL										RegisterMeshInstantiator(IRuMeshInstantiator *meshInstantiator);

	virtual IRuVertexBuffer*							GetInstancedVertexBuffer(IRuMesh *mesh, IRuShader *shader);
	virtual IRuIndexBuffer*								GetInstancedIndexBuffer(IRuMesh *mesh);

	// Instance retrieval for textures
	virtual IRuBaseTexture*								GetInstance(IRuBaseTexture *texture);

	virtual BOOL										ClearCache();

	// Metrics
	virtual INT32										GetNumMetricStrings();
	virtual const char*									GetMetricString(INT32 stringIndex);

	// Debugging
	virtual BOOL										OutputInstantiationManifest();
};

// ************************************************************************************************************************************************************

#pragma managed

#endif
