
///////////////////////////////////////////////////////////////////////////////
//
// File   : Tools_Chunk_FacialAnimation.h
// Author : Andy Tate
// Date   : 9-May-2008
//
// Copyright (C) 2008 Rebellion, All Rights Reserved.
//
///////////////////////////////////////////////////////////////////////////////

#ifdef ASURA_USE_PRAGMA_ONCE
	#pragma once
#endif   // ifdef ASURA_USE_PRAGMA_ONCE

#ifndef __TOOLS_CHUNK_FACIALANIMATION_H__
#define __TOOLS_CHUNK_FACIALANIMATION_H__

#if defined(ASURA_USE_FACIAL_ANIMATION_SYSTEM)

////////////////////////////////////////////////////////////////////////////////
// Include files...
////////////////////////////////////////////////////////////////////////////////

#include "ChunkSystem/Asura_Chunk_Loaders.h"


////////////////////////////////////////////////////////////////////////////////
// Forward class declarations...
////////////////////////////////////////////////////////////////////////////////

class Tools_FacialAnimation_Face;
class Tools_FacialAnimation_FaceAnimation;
class Tools_FacialAnimation_FacePose;
class Tools_FacialAnimation_FaceType;


////////////////////////////////////////////////////////////////////////////////
// Class declaration...
////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////
// Class        : Tools_Chunk_FacialAnimation_FaceType
// Author       : Andy Tate
// Date         : 9-May-2008
//
// Description  : Class used when chunking faces for Tools.
////////////////////////////////////////////////////////////////////////////////

class Tools_Chunk_FacialAnimation_FaceType : public Asura_Chunk_Header
{
public:
	// Public functions...
	bool		Process(const Asura_Handle iFileHandle);
	static void	Create(const Asura_Hash_ID uHash, const Tools_FacialAnimation_FaceType& xType, Asura_Chunk_Stream& xStream);


protected:
	// Protected variables...

	// Protected functions...


private:
	// Private typedefs...
	typedef Asura_Chunk_Header PARENT;

	// Private variables...
	static const u_int	s_uChunkVersion;

	// Private functions...
	Tools_Chunk_FacialAnimation_FaceType(void);
	Tools_Chunk_FacialAnimation_FaceType(const Tools_Chunk_FacialAnimation_FaceType& xOther);
	~Tools_Chunk_FacialAnimation_FaceType();

	Tools_Chunk_FacialAnimation_FaceType&	operator=(const Tools_Chunk_FacialAnimation_FaceType& xOther);

};   // End of class 'Tools_Chunk_FacialAnimation_FaceType'.



////////////////////////////////////////////////////////////////////////////////
// Class        : Tools_Chunk_FacialAnimation_Face
// Author       : Andy Tate
// Date         : 9-May-2008
//
// Description  : Class used when chunking faces for Tools.
////////////////////////////////////////////////////////////////////////////////

class Tools_Chunk_FacialAnimation_Face : public Asura_Chunk_Header
{
public:
	// Public functions...
	bool		Process(const Asura_Handle iFileHandle);
	static void	Create(const Asura_Hash_ID uHash, const Tools_FacialAnimation_Face& xFace, Asura_Chunk_Stream& xStream);


protected:
	// Protected variables...

	// Protected functions...


private:
	// Private typedefs...
	typedef Asura_Chunk_Header PARENT;

	// Private variables...
	static const u_int	s_uChunkVersion;

	// Private functions...
	Tools_Chunk_FacialAnimation_Face(void);
	Tools_Chunk_FacialAnimation_Face(const Tools_Chunk_FacialAnimation_Face& xOther);
	~Tools_Chunk_FacialAnimation_Face();

	Tools_Chunk_FacialAnimation_Face&	operator=(const Tools_Chunk_FacialAnimation_Face& xOther);

};   // End of class 'Tools_Chunk_FacialAnimation_Face'.



////////////////////////////////////////////////////////////////////////////////
// Class        : Tools_Chunk_FacialAnimation_FaceAnimation
// Author       : Andy Tate
// Date         : 9-May-2008
//
// Description  : Class used when chunking face-animations for Tools.
////////////////////////////////////////////////////////////////////////////////

class Tools_Chunk_FacialAnimation_FaceAnimation : public Asura_Chunk_Header
{
public:
	// Public functions...
	bool		Process(const Asura_Handle iFileHandle);
	static void	Create(const Asura_Hash_ID uHash, const Tools_FacialAnimation_FaceAnimation& xFaceAnimation, Asura_Chunk_Stream& xStream);


protected:
	// Protected variables...

	// Protected functions...


private:
	// Private typedefs...
	typedef Asura_Chunk_Header PARENT;

	// Private variables...
	static const u_int	s_uChunkVersion;

	// Private functions...
	Tools_Chunk_FacialAnimation_FaceAnimation(void);
	Tools_Chunk_FacialAnimation_FaceAnimation(const Tools_Chunk_FacialAnimation_FaceAnimation& xOther);
	~Tools_Chunk_FacialAnimation_FaceAnimation();

	Tools_Chunk_FacialAnimation_FaceAnimation&	operator=(const Tools_Chunk_FacialAnimation_FaceAnimation& xOther);

};   // End of class 'Tools_Chunk_FacialAnimation_FaceAnimation'.



////////////////////////////////////////////////////////////////////////////////
// Class        : Tools_Chunk_FacialAnimation_FacePose
// Author       : Andy Tate
// Date         : 3-Jun-2008
//
// Description  : Class used when chunking face-pose data for Tools.
////////////////////////////////////////////////////////////////////////////////

class Tools_Chunk_FacialAnimation_FacePose : public Asura_Chunk_Header
{
public:
	// Public functions...
	bool		Process(const Asura_Handle iFileHandle);
	static void	Create(const Asura_Hash_ID uHash, const Tools_FacialAnimation_FacePose& xFacePose, Asura_Chunk_Stream& xStream);


protected:
	// Protected variables...

	// Protected functions...


private:
	// Private typedefs...
	typedef Asura_Chunk_Header PARENT;

	// Private variables...
	static const u_int	s_uChunkVersion;

	// Private functions...
	Tools_Chunk_FacialAnimation_FacePose(void);
	Tools_Chunk_FacialAnimation_FacePose(const Tools_Chunk_FacialAnimation_FacePose& xOther);
	~Tools_Chunk_FacialAnimation_FacePose();

	Tools_Chunk_FacialAnimation_FacePose&	operator=(const Tools_Chunk_FacialAnimation_FacePose& xOther);

};   // End of class 'Tools_Chunk_FacialAnimation_FacePose'.

#endif	//defined(ASURA_USE_FACIAL_ANIMATION_SYSTEM)

#endif   // ifndef __TOOLS_CHUNK_FACIALANIMATION_H__


/// End of file. ///
