//===========================================================================//
// File:	AnimInterp.hpp                                                 
// Project: MechWarrior 4
// Contents: 
//		
//---------------------------------------------------------------------------//
//   Date    Who  Modification                                               //
// --------  ---  ---------------------------------------------------------- //
// 07/06/98  JSE  Initial coding, 
//---------------------------------------------------------------------------//
// Copyright (C) 1998, Fasa Interactive, Inc.
// All Rights reserved worldwide
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL
//===========================================================================//


#pragma once

#include <Stuff\Stuff.hpp>
#include <MW4\MW4AnimationSystem.hpp>
	
namespace MW4Animation {


	Stuff::Point3D 
		Point3DSnapInterpolator(
			BaseKeyframe *keyframe_from, 
			BaseKeyframe *keyframe_to, 
			BaseKeyframeTime *keyframetime_from, 
			BaseKeyframeTime *keyframetime_to, 
			Stuff::Scalar time);

	Stuff::Point3D 
		Point3DVelPosSnapInterpolator(
			BaseKeyframe *keyframe_from, 
			BaseKeyframe *keyframe_to, 
			BaseKeyframeTime *keyframetime_from, 
			BaseKeyframeTime *keyframetime_to, 
			Stuff::Scalar time);

	Stuff::Vector3D 
		AngularVelocitySnapInterpolator(
			BaseKeyframe *keyframe_from, 
			BaseKeyframe *keyframe_to, 
			BaseKeyframeTime *keyframetime_from, 
			BaseKeyframeTime *keyframetime_to, 
			Stuff::Scalar time);

	Stuff::UnitQuaternion 
		QuaternionSnapInterpolator(
			BaseKeyframe *keyframe_from, 
			BaseKeyframe *keyframe_to, 
			BaseKeyframeTime *keyframetime_from, 
			BaseKeyframeTime *keyframetime_to, 
			Stuff::Scalar time);


	Stuff::Point3D 
		Point3DLinearInterpolator(
			BaseKeyframe *keyframe_from, 
			BaseKeyframe *keyframe_to, 
			BaseKeyframeTime *keyframetime_from, 
			BaseKeyframeTime *keyframetime_to, 
			Stuff::Scalar time);

	Stuff::Point3D 
		Point3DVelPosLinearInterpolator(
			BaseKeyframe *keyframe_from, 
			BaseKeyframe *keyframe_to, 
			BaseKeyframeTime *keyframetime_from, 
			BaseKeyframeTime *keyframetime_to, 
			Stuff::Scalar time);

	Stuff::Vector3D 
		AngularVelocityLinearInterpolator(
			BaseKeyframe *keyframe_from, 
			BaseKeyframe *keyframe_to, 
			BaseKeyframeTime *keyframetime_from, 
			BaseKeyframeTime *keyframetime_to, 
			Stuff::Scalar time);

	Stuff::UnitQuaternion 
		QuaternionLinearInterpolator(
			BaseKeyframe *keyframe_from, 
			BaseKeyframe *keyframe_to, 
			BaseKeyframeTime *keyframetime_from, 
			BaseKeyframeTime *keyframetime_to, 
			Stuff::Scalar time);

	Stuff::UnitQuaternion 
		QuaternionLinearInterpolatorSlow(
			BaseKeyframe *keyframe_from, 
			BaseKeyframe *keyframe_to, 
			BaseKeyframeTime *keyframetime_from, 
			BaseKeyframeTime *keyframetime_to, 
			Stuff::Scalar time);

	int
		TriggerSnapInterpolator(
			BaseKeyframe *keyframe_from, 
			BaseKeyframe *keyframe_to, 
			BaseKeyframeTime *keyframetime_from, 
			BaseKeyframeTime *keyframetime_to, 
			Stuff::Scalar time);
}

