
///////////////////////////////////////////////////////////////////////////////
//
// File   : Asura_FacialAnimation_BoneDataModifier.h
// Author : Will Plano
// Date   : 09/10/2008
//
// Copyright (C) 2008 Rebellion, All Rights Reserved.
//
///////////////////////////////////////////////////////////////////////////////

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

#ifndef __ASURA_FACIALANIMATION_BONEDATAMODIFIER_H__
#define __ASURA_FACIALANIMATION_BONEDATAMODIFIER_H__

#if defined(ASURA_USE_FACIAL_ANIMATION_SYSTEM)

#include "Animation/Asura_Animation_BoneDataModifier.h"
#include "Core/Asura_Maths.h"

class Asura_Animation;

class Asura_FacialAnimation_BoneDataModifier : public Asura_Animation_BoneDataModifier
{
public:
	Asura_FacialAnimation_BoneDataModifier( Asura_Animation* pxAnimation, const Asura_Hash_ID uFaceHash );
	virtual ~Asura_FacialAnimation_BoneDataModifier() {}

	// Parent functions
	virtual void UpdateBoneData( const int iFirstBone, const int iLastBone );
	
	void SetAnimatedParameters(	const float fEyeBlend,
								const float fLeftRight,
								const float fUpDown,
								const float fFocus,
								const float fClose,
								const float fSquint,
								const float fBalance );
private:
	typedef Asura_Animation_BoneDataModifier PARENT;

	Asura_Hash_ID	m_uFaceHash;
	Asura_Quat		m_xEyeParentRestPoseQuatOS;
	float 			m_fEyeBlend;
	float 			m_fLeftRight;
	float 			m_fUpDown;
	float 			m_fFocus;
	float 			m_fClose;
	float 			m_fSquint;
	float 			m_fBalance;
};

#endif // ASURA_USE_FACIAL_ANIMATION_SYSTEM

#endif // __ASURA_FACIALANIMATION_BONEDATAMODIFIER_H__
