//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose: 
//
//=============================================================================

#ifndef MDLLIB_COMMON_H
#define MDLLIB_COMMON_H

#ifdef _WIN32
#pragma once
#endif

#include "mdllib/mdllib.h"

#include "platform.h"
#pragma warning( disable : 4018 )
#pragma warning( disable : 4389 )



//-----------------------------------------------------------------------------
// Purpose: Interface to accessing P4 commands
//-----------------------------------------------------------------------------
class CMdlLib : public CBaseAppSystem< IMdlLib >
{
public:
	// Destructor
	virtual ~CMdlLib();

	//////////////////////////////////////////////////////////////////////////
	//
	// Methods of IAppSystem
	//
	//////////////////////////////////////////////////////////////////////////
public:
	virtual bool Connect( CreateInterfaceFn factory );
	virtual InitReturnVal_t Init();
	virtual void *QueryInterface( const char *pInterfaceName );
	virtual void Shutdown();
	virtual void Disconnect();


	//////////////////////////////////////////////////////////////////////////
	//
	// Methods of IMdlLib
	//
	//////////////////////////////////////////////////////////////////////////
public:
	//
	// StripModelBuffers
	//	The main function that strips the model buffers
	//		mdlBuffer			- mdl buffer, updated, no size change
	//		vvdBuffer			- vvd buffer, updated, size reduced
	//		vtxBuffer			- vtx buffer, updated, size reduced
	//		ppStripInfo			- if nonzero on return will be filled with the stripping info
	//
	virtual bool StripModelBuffers( CUtlBuffer &mdlBuffer, CUtlBuffer &vvdBuffer, CUtlBuffer &vtxBuffer, IMdlStripInfo **ppStripInfo );

	//
	// CreateNewStripInfo
	//	Creates an empty strip info so that it can be reused.
	//
	virtual bool CreateNewStripInfo( IMdlStripInfo **ppStripInfo );
};

#endif // #ifndef MDLLIB_COMMON_H