/* *********************************************/
/* Specific header file for Rayman2 PC*/
/* (c) Ubi R&D 1998*/
/* See Alain Robin for any comment or question*/
/* *********************************************/
 
#ifndef __MORPH_H__
#define __MORPH_H__
 
#ifdef __cplusplus
    extern "C" {
#endif
 
/* For DLLs who are using this module : */ 
#undef CPA_EXPORT
#if defined(CPA_WANTS_IMPORT)
 #define CPA_EXPORT __declspec(dllimport)
#elif defined(CPA_WANTS_EXPORT)
 #define CPA_EXPORT __declspec(dllexport)
#else
 #define CPA_EXPORT
#endif
 
/***********************************************
 PUBLIC STRUCTURES
 **********************************************/
typedef struct MOR_stMorphStruct_ {
	ACP_tdxBool	bInUse;                                   /* Say if this element of the list is used or not.*/
                                                          /* If not, all the other variables are unused*/
	/* Parameter part*/
	HIE_tdxHandleToSuperObject hActorSuperObject;         /* The super object of the actor*/
	ACP_tdxIndex               xStartIndexInObjectTable;  /* The index in the object table of the 'start' physical object for the morphing*/
	ACP_tdxIndex               xEndIndexInObjectTable;    /* The index in the object table of the 'end' physical object for the morphing*/
    unsigned char              ucMorphType;               /* Can be MORPH_STOPATEND, MORPH_WAITATEND or MORPH_ROLLBACKATEND*/
	int                        iNbMillisecond;            /* The duration of the morphing (if the morphing loop*/
	int                        iStart;                    /* For the moment:  = 0*/
	int                        iEnd;                      /* For the moment:  = iNbMillisecond*/
 
	/* Internal part*/
	int                        iStep;                     /* Is 1 (morph from 'start' to 'end') or -1 (morph from 'end' to 'start')*/
	int                        iCurrent;                  /* Current ratio (must be between start and end)*/
	ACP_tdxIndex               xChannelIndex;             /* The channel in the animation where the morphing takes place*/
 
	/* Specific part*/
	PO_tdxHandleToPhysicalObject    pOriginalPhysicalObject;   /* The physical object that was in the channnel before the morphing*/
	PO_tdxHandleToPhysicalObject    pMorphedPhysicalObject;    /* The created physical object*/
} MOR_tdstMorphStruct;
 
 
#ifdef __cplusplus
}/* extern "C" */
#endif
 
#endif /* __MORPH_H__*/
