#if !defined(__IaDnm_H__)
#define __IaDnm_H__
 
/******************************************/
#if _MSC_VER >= 1000
#pragma once
#endif /* _MSC_VER >= 1000 */
/******************************************/
 
#include "GAM/Header.h"
 
 
 
/* Mechanical function pointers */
 
typedef 
	struct DNM_stDynamics *(* tdpfnDynamicFunction)
	( 
		struct DNM_stDynamics *_p_stDynamics,
        HIE_tdxHandleToSuperObject _hSupObj,
        struct DNM_stParsingDatas *_p_stParsingDatas,
		DNM_tdxHandleToMecIdentityCard _h_MecIdCard,
		MTH_tdxReal _xDT
	);
 
 
#define C_NumberOfMechanics 2 
EXTERN tdpfnDynamicFunction g_a_pfnDynamicFunction[C_NumberOfMechanics];
 
void InitArrayOfDynamicFunction(struct DNM_stDynamics* (**)(struct DNM_stDynamics*,HIE_tdxHandleToSuperObject,struct DNM_stParsingDatas *,DNM_tdxHandleToMecIdentityCard,MTH_tdxReal) );
 
/* Links With AnimPlayer*/
DNM_tdxHandleToMecIdentityCard  fn_h_GetCurrentDNMIdCard(HIE_tdxHandleToSuperObject p_SuperObjPerso);
void fn_vTransferSpeedInformationPLA_DNM(HIE_tdxHandleToSuperObject p_stSuperObj,short sLastFrame);
 
/*Links with Intelligence*/
char fn_cCollideWithWallFunction(HIE_tdxHandleToSuperObject hSuperObjPerso);
char fn_cCollideWithGroundFunction(HIE_tdxHandleToSuperObject hSuperObjPerso);
 
/*Calls Intelligence and mechanics*/
void fn_vMakeCharacterReact(HIE_tdxHandleToSuperObject);
void fn_vMakeCharacterThink(HIE_tdxHandleToSuperObject);
void fn_vMakeCharacterMechanicallyReact(HIE_tdxHandleToSuperObject);
extern CPA_EXPORT void fn_vAverageLinearSpeed(HIE_tdxHandleToSuperObject p_stSuperObj,unsigned char NbUsedFrames,MTH3D_tdstVector *p_result);
extern CPA_EXPORT void fn_vAveragePosition(HIE_tdxHandleToSuperObject p_stSuperObj,MTH_tdxReal xTimeWindow,MTH3D_tdstVector *p_result);
extern CPA_EXPORT void fn_vAverageSpeed(HIE_tdxHandleToSuperObject p_stSuperObj,MTH_tdxReal xTimeWindow,MTH3D_tdstVector *p_result);
extern CPA_EXPORT void fn_vLinearApprochOnPosition(HIE_tdxHandleToSuperObject p_stSuperObj,MTH_tdxReal xTimeWindow,MTH3D_tdstVector *p_result);
 
/*ANNECY CT 18/02/98{*/
extern CPA_EXPORT void fn_vSuperObjectSetLastCollidedCharacter(HIE_tdxHandleToSuperObject hCharacter,
																HIE_tdxHandleToSuperObject _h_LastCollidedCharacter);
extern CPA_EXPORT HIE_tdxHandleToSuperObject fn_hSuperObjectGetLastCollidedCharacter(HIE_tdxHandleToSuperObject hCharacter);
/*ENDANNECY CT}*/
 
/*ANNECY CT 02/02/98{*/
extern CPA_EXPORT void fn_vGetScrollSpeedMatCollided(HIE_tdxHandleToSuperObject p_stSuperObj,MTH3D_tdstVector * p_stVector,unsigned long ulObstacleType);
/*ENDANNECY CT}*/
 
 
 
 
 
#endif /* !__IaDnm_H__ */
 
 
