//
// Asura_Animation_BoneDataModifier.h
//
// Created by Will Plano - 09/10/2008
// 
// Copyright (C) 2008 Rebellion, All Rights Reserved.
//

#ifdef ASURA_USE_PRAGMA_ONCE
#pragma once
#endif

#ifndef __ASURA_ANIMATION_BONEDATAMODIFIER_H__
#define __ASURA_ANIMATION_BONEDATAMODIFIER_H__

#define ASURA_ANIMATION_BONEDATAMODIFIER_PRIORITY_DONT_ADD 0xFFFFFFFFu

class Asura_Animation;

class Asura_Animation_BoneDataModifier
{
public:
	Asura_Animation_BoneDataModifier( Asura_Animation* pxAnimation, u_int uUpdateTimersPriority = ASURA_ANIMATION_BONEDATAMODIFIER_PRIORITY_DONT_ADD, u_int uUpdateBoneDataPriority = ASURA_ANIMATION_BONEDATAMODIFIER_PRIORITY_DONT_ADD );
	virtual ~Asura_Animation_BoneDataModifier();
	virtual void UpdateTimers( const float fTime ) {}
	virtual void UpdateBoneData( const int iFirstBone, const int iLastBone ) {}

	static int CompareUpdateTimersPriority( const Asura_Animation_BoneDataModifier& xLHS, const Asura_Animation_BoneDataModifier& xRHS ) { return xLHS.m_uUpdateTimersPriority - xRHS.m_uUpdateTimersPriority; }
	static int CompareUpdateBoneDataPriority( const Asura_Animation_BoneDataModifier& xLHS, const Asura_Animation_BoneDataModifier& xRHS ) { return xLHS.m_uUpdateBoneDataPriority - xRHS.m_uUpdateBoneDataPriority; }

protected:
	Asura_Animation*	m_pxAnimation;

private:
	u_int				m_uUpdateTimersPriority;
	u_int				m_uUpdateBoneDataPriority;
};

#endif // #ifndef __ASURA_ANIMATION_BONEDATAMODIFIER_H__
