#ifndef _TN_ANIMATION_H
#define _TN_ANIMATION_H

typedef
	struct AnimCommand
	{
		ULONG Command;
		LONG Parameter;
	} ANIM_COMMAND;

// animation commands

#define AC_MOVEX			0x00000100			// move object
#define AC_MOVEY			0x00000101
#define AC_MOVEZ			0x00000102

#define AC_RMOVEX			0x00000200			// relative move object
#define AC_RMOVEY			0x00000201
#define AC_RMOVEZ			0x00000202

#define AC_ROTATIONX	0x00000300			// rotation around object axis
#define AC_ROTATIONY	0x00000301
#define AC_ROTATIONZ	0x00000302

#define AC_RROTATIONX	0x00000400			// relative rotation around object axis
#define AC_RROTATIONY	0x00000401
#define AC_RROTATIONZ	0x00000402

#define AC_SETPOSX		0x00000500			// set object position
#define AC_SETPOSY		0x00000501
#define AC_SETPOSZ		0x00000502

#define AC_SETROTX		0x00000600			// set object rotation
#define AC_SETROTY		0x00000601
#define AC_SETROTZ		0x00000602

#define AC_LMOVEX			0x00000700			// move logo
#define AC_LMOVEY			0x00000701

#define AC_LRMOVEX		0x00000800			// relative move logo
#define AC_LRMOVEY		0x00000801

#define AC_LSETPOSX		0x00000900			// set logo position
#define AC_LSETPOSY		0x00000901

#define AC_FADE_FROM_BLACK	0x00001000
#define AC_FADE_TO_BLACK	0x00002000
#define AC_FADE_FROM_WHITE	0x00001001
#define AC_FADE_TO_WHITE	0x00002001

#define AC_ILLEGAL		0x00000000			// in future only this command may be
																			// legal illegal command
#define AC_DO					0x00000ff0			// do anim sequence
#define AC_QUIT				0x00000fff			// quit

#define SEC 709379

typedef
	struct AnimCamera
	{
		DOUBLE cPosX, cPosY, cPosZ;
		DOUBLE cRotX, cRotY, cRotZ;
		DOUBLE dPosX, dPosY, dPosZ;
		DOUBLE dRotX, dRotY, dRotZ;
		DOUBLE ePosX, ePosY, ePosZ;
		DOUBLE eRotX, eRotY, eRotZ;
	} ANIM_CAMERA;

LONG TN_DoAnim(DVIEW *DView, SCENE *Scene, ANIM_COMMAND *AnimList,
							 LONG (*RenderFrame)(DVIEW *DView, SCENE *Scene));
LONG TN_InterpreteAnimList(ANIM_COMMAND **AnimCommand, ANIM_CAMERA *AnimCamera,
													 DOUBLE *Time2Go);

#define NO_FADE					0
#define FADE_FROM_BLACK	1
#define FADE_TO_BLACK		2
#define FADE_FROM_WHITE	3
#define FADE_TO_WHITE		4

#define IAL_OK								 1
#define DA_NORMAL_TERMINATION	 0
#define DA_MEMORY_PROBLEM			-13
#define DA_ILLEGAL_COMMAND		-666

#endif
