/*
 *=======================================================================================
 * Name        : MecBase.c
 * Author      : J Thénoz               Date : 01/05/98
 * Description : Mechanic functions for Base model
 *=======================================================================================
 */
 
 
#ifndef _MECBASE_H_
#define _MECBASE_H_
 
 
#ifdef __cplusplus
extern "C" {
#endif
 
/*XB 05/05/99*/
struct DNM_stParsingDatas;
/*End XB 05/05/99*/

extern MTH_tdxReal MEC_g_xClimbSpeedLimit;
	
struct DNM_stDynamics *MEC_p_stDynamicsBaseMechanics
(
	struct DNM_stDynamics *p_stDynamic,
    HIE_tdxHandleToSuperObject hSupObj,
    struct DNM_stParsingDatas *p_stParsingDatas,
    DNM_tdxHandleToMecIdentityCard h_MecIdCard,
    MTH_tdxReal _xDT
);
 
 
void MEC_vImposeRotationMatrix 
(
	struct DNM_stDynamics *p_stDynamic,
	POS_tdxHandleToPosition hRotationMatrix 
);
 
 
void MEC_vImposeRotationVector 
(
	struct DNM_stDynamics *p_stDynamic,
	MTH3D_tdstVector *p_stX, 
	MTH3D_tdstVector *p_stY, 
	MTH3D_tdstVector *p_stZ 
);
 
void MEC_vImposeRelativeRotation
(
	struct DNM_stDynamics *p_stDynamic,
	MTH3D_tdstMatrix *p_stRotationMatrix
);
 
void MEC_vImposeTranslation
(
	struct DNM_stDynamics *p_stDynamic,
	MTH3D_tdstVector* p_stVector 
);
 
void MEC_vInitTranslation
(
	struct DNM_stDynamics *p_stDynamic,
	HIE_tdxHandleToSuperObject hSupObj,
	MTH3D_tdstVector* p_stVector 
);
 
void MEC_fn_vImposeActorMatrix
(
	HIE_tdxHandleToSuperObject hSupObj
);
 
void MEC_vTurnAroundZAxis 
( 	
	struct DNM_stDynamics *p_stDynamic,
	MTH_tdxReal xAngle
);
 
void MEC_vTurnAbsolute
( 	
	struct DNM_stDynamics *p_stDynamic,
	MTH3D_tdstVector* p_stVector 
);
 
void DNM_fn_vSetHangingLimit 
(
	struct DNM_stDynamics *p_stDynamic,
	MTH_tdxReal xValue
);

void MEC_fn_vUpdateSpeed (HIE_tdxHandleToSuperObject hSupObj);

INLINE
void MEC_fn_vSetClimbSpeedLimit ( MTH_tdxReal xSpeedLimit )
{
	MEC_g_xClimbSpeedLimit = xSpeedLimit;
}

 
#ifdef __cplusplus
}
#endif
 
 
#endif /*_MECBASE_H_*/
 
