/* *======================================================================================= * Name :MGT_Proc.c * * Author : QiZeYu Date : Dec.18, 1997 * * Description : All AI Functions for the magnet *======================================================================================= * Modification -> Author : Date : * Description : *======================================================================================= */ #ifndef D_THROW_MGT #define D_CineInfo_StructureDefine #include "AIUseCPA.h" #include "specif/AIOption.h" #include "AIMacros.h" #include "AI_Erm.h" #include "Intell.h" #include "StrIntel.h" #include "EnumProc.h" #include "EnumFunc.h" #include "Convert.h" #include "AI_Struc.h" #include "DsgMem.h" /* for fn_bFindPersoInList*/ #include "specif/AITools.h" #include "EnumCond.h" #include "Operator.h" #include "WPWayPt.h" #include "GLI.h" #include "GEO.h" #include "PO.h" /*XB980821*/ #ifndef D_THROW_IPO #include "IPO.h" #endif /* D_THROW_IPO */ /*End XB*/ #include "SPO.h" #include "CAM_Base.h" #include "CAM_Tool.h" #include "CAM_Vis.h" /*XB980429*/ /*#include "incGAM.h"*/ #include "scr.h" #include "snd.h" #include "pcs.h" #include "geo.h" #include "gld.h" #include "gli.h" #include "mec.h" #include "lst.h" #ifdef USE_IPT_DX5 #include "IPT_DX5.h" /* InPuT (absolutely before GAM.h)*/ #else /* USE_IPT_WIN */ #include "IPT.h" /* InPuT (absolutely before GAM.h)*/ #endif /* USE_IPT_WIN */ /* Shaitan Clean Env {*/ /*#include "srf.h"*/ /*#include "env.h"*/ /* End Shaitan Clan Env }*/ #include "sct.h" #ifndef D_THROW_PRT #include "PRT.h" #endif /* D_THROW_PRT */ #include "gam.h" /*End XB*/ #include "mgt.h" #define _WP_D_DEFINE_WAYPOINTS_ #include "WP_Handl.h" #include "WP_Func.h" /*XB980821*/ #ifndef D_THROW_IPO #include "ISI.h" #endif /* D_THROW_IPO */ /*End XB*/ #undef _WP_D_DEFINE_WAYPOINTS_ /* *================================================================================================= * Procedure to turn the Magnet on * parameters : * PERSO : magnet reference * * Author : QiZeYu Date : Dec.18, 1997 *================================================================================================= */ #if !defined(_AI_EXCLUDE_NEVER_USED_) /* MT {*/ tdstNodeInterpret *MGT_fn_p_stActiveMagnet(HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree) { HIE_tdxHandleToSuperObject hNewSuperObjPerso; enum tdeProcedureId_ eProcedureId = M_eProcedureIdInterpret(p_stTree - 1); /********************************************************************************/ /* BEWARE THE ULTRA OPERATOR : Must be at the beginning and respect this syntax */ /********************************************************************************/ fn_vGetUltraOperatorPerso(fn_ucGetProcedureUltraOperator(eProcedureId),p_SuperObjPerso,&hNewSuperObjPerso); MGT_fn_vAddObjectToMagnetList(hNewSuperObjPerso); return (p_stTree); } #endif /* _AI_EXCLUDE_NEVER_USED_ }*/ /* *================================================================================================= * Procedure to turn the Magnet off * parameters : * PERSO : magnet reference * * Author : QiZeYu Date : Dec.18, 1997 *================================================================================================= */ tdstNodeInterpret *MGT_fn_p_stDeactiveMagnet(HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree) { HIE_tdxHandleToSuperObject hNewSuperObjPerso; MS_tdxHandleToMSMagnet hMagnet; enum tdeProcedureId_ eProcedureId = M_eProcedureIdInterpret(p_stTree - 1); /********************************************************************************/ /* BEWARE THE ULTRA OPERATOR : Must be at the beginning and respect this syntax */ /********************************************************************************/ fn_vGetUltraOperatorPerso(fn_ucGetProcedureUltraOperator(eProcedureId),p_SuperObjPerso,&hNewSuperObjPerso); hMagnet = M_GetMSHandle(hNewSuperObjPerso,MSMagnet); if( hMagnet ) { if( (fn_lMSMagnetGetStatus(hMagnet)==MAGNETGROWING)||(fn_lMSMagnetGetStatus(hMagnet)==MAGNETON) ) { fn_vMSMagnetSetStatus(hMagnet, MAGNETRECOVERING); } } return (p_stTree); } /* *================================================================================================= * Procedure to set the Magnet parameter * parameters : * PERSO : magnet reference * REAL : Range * *================================================================================================= */ #if !defined(_AI_EXCLUDE_NEVER_USED_) /* MT {*/ tdstNodeInterpret *MGT_fn_p_stSetParam(HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree) { HIE_tdxHandleToSuperObject hNewSuperObjPerso; MS_tdxHandleToMSMagnet hMagnet; MTH_tdxReal xValue; unsigned long ulDuration; enum tdeProcedureId_ eProcedureId = M_eProcedureIdInterpret(p_stTree - 1); tdstGetSetParam stValue; /********************************************************************************/ /* BEWARE THE ULTRA OPERATOR : Must be at the beginning and respect this syntax */ /********************************************************************************/ fn_vGetUltraOperatorPerso(fn_ucGetProcedureUltraOperator(eProcedureId),p_SuperObjPerso,&hNewSuperObjPerso); hMagnet = M_GetMSHandle(hNewSuperObjPerso,MSMagnet); if( hMagnet ) { M_EvalNextParameter( &stValue ); switch(eProcedureId) { case eProc_Magnet_SetStrength: xValue = M_GetSetParam_xValue(&stValue); fn_vMSMagnetSetStrength(hMagnet,xValue); break; case eProc_Magnet_SetFar: xValue = M_GetSetParam_xValue(&stValue); fn_vMSMagnetSetFar(hMagnet,xValue); break; case eProc_Magnet_SetNear: xValue = M_GetSetParam_xValue(&stValue); fn_vMSMagnetSetNear(hMagnet,xValue); break; case eProc_Magnet_SetDuration: ulDuration = M_GetSetParam_lValue(&stValue); fn_vMSMagnetSetDuration(hMagnet, ulDuration); break; default: M_AIFatalError(E_uwAIFatalNotValidProcedure); break; } } return (p_stTree); } #endif /* _AI_EXCLUDE_NEVER_USED_ }*/ /* *================================================================================================= * Get the information of the magnet * Parameter : * Perso : magnet handle *================================================================================================= */ #if !defined(_AI_EXCLUDE_NEVER_USED_) /* MT {*/ tdstNodeInterpret *MGT_fn_p_stGetInfo(HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree, tdstGetSetParam *p_stValue) { HIE_tdxHandleToSuperObject hNewSuperObjPerso; MS_tdxHandleToMSMagnet hMagnet; MTH_tdxReal xNorm; unsigned long ulDuration; enum tdeFuncId_ eFuncId=M_eFuncIdInterpret(p_stTree-1); tdstGetSetParam stValue; /********************************************************************************/ /* BEWARE THE ULTRA OPERATOR : Must be at the beginning and respect this syntax */ /********************************************************************************/ fn_vGetUltraOperatorPerso(fn_ucGetFunctionUltraOperator(eFuncId),p_SuperObjPerso,&hNewSuperObjPerso); hMagnet = M_GetMSHandle(hNewSuperObjPerso,MSMagnet); /* Get Magnet Handle */ if(hMagnet==NULL) return (p_stTree); M_EvalNextParameter(&stValue); switch(eFuncId) { case eFunc_GetMagnetStrength : xNorm = fn_xMSMagnetGetStrength(hMagnet); M_Full_GetSetParam_Float(p_stValue,xNorm); break; case eFunc_GetMagnetFar: xNorm = fn_xMSMagnetGetFar(hMagnet); M_Full_GetSetParam_Float(p_stValue,xNorm); break; case eFunc_GetMagnetNear: xNorm = fn_xMSMagnetGetNear(hMagnet); M_Full_GetSetParam_Float(p_stValue,xNorm); break; case eFunc_GetMagnetDuration: ulDuration = fn_ulMSMagnetGetDuration(hMagnet); M_Full_GetSetParam_Time(p_stValue,ulDuration); default : M_AIFatalError(E_uwAIFatalNotValidFunction); break; } return(p_stTree); } #endif /* _AI_EXCLUDE_NEVER_USED_ }*/ /********************************************************************** * Condition: Magnet_EstActif ( toto ) * * true if actor's magnet is activated * * Author : Marc Trabucato * * Date of last modification: 13/03/98 * **********************************************************************/ #if !defined(_AI_EXCLUDE_NEVER_USED_) /* MT {*/ tdstNodeInterpret *fn_p_stMagnetActivated (HIE_tdxHandleToSuperObject p_SuperObjPerso, tdstNodeInterpret *p_stTree, long *p_lValue) { HIE_tdxHandleToSuperObject hNewSuperObjPerso; MS_tdxHandleToMSMagnet hMagnet; enum tdeCondId_ eCondId = M_eCondIdInterpret(p_stTree-1); /********************************************************************************/ /* BEWARE THE ULTRA OPERATOR : Must be at the beginning and respect this syntax */ /********************************************************************************/ fn_vGetUltraOperatorPerso(fn_ucGetConditionUltraOperator(eCondId),p_SuperObjPerso,&hNewSuperObjPerso); hMagnet = M_GetMSHandle(hNewSuperObjPerso,MSMagnet); if( hMagnet ) { switch( fn_lMSMagnetGetStatus( hMagnet ) ) { case MAGNETOFF: case MAGNETRECOVERING: *p_lValue = FALSE; break; case MAGNETON: case MAGNETGROWING: *p_lValue = TRUE; break; } } return(p_stTree); } #endif /* _AI_EXCLUDE_NEVER_USED_ }*/ #endif /* D_THROW_MGT */