/*----------------------*/ /* DNMLoadI.c */ /*----------------------*/ /* Author : F Bourbon */ /* Date : 1997-01-30 */ /* Version : 0.10 */ /* Modify : 1997-08-04 */ /* By : S Leroy */ /* (c) Ubi R&D 1997 */ /*----------------------*/ #if !defined(U64) #include "ACP_Base.h" #include "cpa_std.h" #include "MTH.h" #include "SCR.h" #include "MEC.h" #include "DPT.h" #include "LST.h" #include "MEC/DNMLoadI.h" #include "MEC/mbase.h" /*ANNECY jt {*/ /* ---- must be report in bin/binproto */ #define BIN_C_DNMMecBaseIdCardID 64 /*ENDANNECY jt }*/ /* Macro for initializing a CallBack and*/ /* initializing the associated LinkTable*/ /* for binarization purpose*/ #define DNMi_M_Register(Type) \ SCR_fn_v_RdL0_RegisterCallback( \ C_SectionIdCard##Type##, \ DNM_fn_eScriptCallBack##Type##IdCard, \ SCR_CRC_c_RdL0_ForSection); /* Macro for Reading the script file describing an Identity Card*/ /* and defining a LinkTable for this type of struct for*/ /* binarization purpose */ #define DNMi_M_CallBack(Type, Struct, Parse) \ SCR_tde_Anl_ReturnValue DNM_fn_eScriptCallBack##Type##IdCard( \ SCR_tdst_File_Description *_p_stFile, \ char *_p_szName, \ char *_ap_szParams[], \ SCR_tde_Anl_Action _eAction ) \ { SCR_tde_Anl_ReturnValue eReturnValue = SCR_ERV_Anl_NormalReturn; \ DNM_tdxHandleToMecIdentityCard h_IdCard; \ char a255_cLongName[255]; \ \ if (_eAction == SCR_EA_Anl_BeginSection) \ { h_IdCard = DNM_fn_xIdentityCardCreate(##Struct##); \ SCR_M_RdL0_SetSectionLong(0, 0, (unsigned long)(h_IdCard)); \ SCR_M_RdL0_ComputeOpenSectionNameR(0, a255_cLongName); \ SCR_M_v_Link_SetAdditionalLong \ ( SCR_fnp_st_Link_SetValue \ ( DNM_fn_p_stGetIdCardLinkTable(), \ a255_cLongName, \ (unsigned long)h_IdCard \ ), \ 1, \ strlen(a255_cLongName) - strlen(SCR_M_RdL0_GetCompleteSectionNameR(0)) \ ); \ } \ else if (_eAction == SCR_EA_Anl_Entry) \ { SCR_M_RdL0_GetSectionLong(0, 0, DNM_tdxHandleToMecIdentityCard, h_IdCard); \ return Parse##(h_IdCard, _p_szName, _ap_szParams, _eAction); \ } \ return(eReturnValue); \ } /*----------------------------- | Camera | | Script, WriteBloc, CallBack | -----------------------------*/ /* Script Parsing */ SCR_tde_Anl_ReturnValue DNM_fn_eScriptFillCameraIdentityCard ( DNM_tdxHandleToMecIdentityCard h_IdCard, char *_p_szName, char *_ap_szParams[], SCR_tde_Anl_Action _eAction ) { SCR_tde_Anl_ReturnValue eReturnValue = SCR_ERV_Anl_NormalReturn; MTH_tdxReal xTmp; if(!strcmp(_p_szName,C_EntryAngularSpeed)) { xTmp = MTH_M_xDoubleToReal(atof(_ap_szParams[0])); DNM_M_xCameraIdCardSetAngularSpeed((DNM_tdstMecCameraIdCard *)h_IdCard,MTH_M_xDegToRad(xTmp)); } else if(!strcmp(_p_szName,C_EntryLinearSpeed)) { xTmp = MTH_M_xDoubleToReal(atof(_ap_szParams[0])); DNM_M_xCameraIdCardSetLinearSpeed((DNM_tdstMecCameraIdCard *)h_IdCard,xTmp); } else if(!strcmp(_p_szName,C_EntrySpeedingUp)) { xTmp = MTH_M_xDoubleToReal(atof(_ap_szParams[0])); DNM_M_xCameraIdCardSetSpeedingUp((DNM_tdstMecCameraIdCard *)h_IdCard,xTmp); } return(eReturnValue); } /* CallBack */ DNMi_M_CallBack( Camera, DNM_eCamera, DNM_fn_eScriptFillCameraIdentityCard) /*----------------------------- | Base | | Script, WriteBloc, CallBack | -----------------------------*/ /* Script Parsing */ SCR_tde_Anl_ReturnValue DNM_fn_eScriptFillBaseIdentityCard( DNM_tdxHandleToMecIdentityCard h_IdCard, char *_p_szName, char *_ap_szParams[], SCR_tde_Anl_Action _eAction) { SCR_tde_Anl_ReturnValue eReturnValue = SCR_ERV_Anl_NormalReturn; DNM_tdstMecBaseIdCard *p_stBaseIdCard; /* Gives back the semantic of the handle */ p_stBaseIdCard = DNM_fn_p_stMecBaseIdCardGiveBackSemantic(h_IdCard); /* Default Values */ if( strcmp(_p_szName,C_EntryBaseAnimation)==0 ) { DNM_M_vBaseIdCardSetAnimation ( p_stBaseIdCard, atoi(_ap_szParams[0]) ); } if( strcmp(_p_szName,C_EntryBaseCollide)==0 ) { DNM_M_vBaseIdCardSetCollide ( p_stBaseIdCard, atoi(_ap_szParams[0]) ); } if( strcmp(_p_szName,C_EntryBaseGravity)==0 ) { DNM_M_vBaseIdCardSetGravity ( p_stBaseIdCard, atoi(_ap_szParams[0]) ); } if( strcmp(_p_szName,C_EntryBaseGi)==0 ) { DNM_M_vBaseIdCardSetGi ( p_stBaseIdCard, atoi(_ap_szParams[0]) ); } if( strcmp(_p_szName,C_EntryBaseClimb)==0 ) { DNM_M_vBaseIdCardSetClimb ( p_stBaseIdCard, atoi(_ap_szParams[0]) ); } if( strcmp(_p_szName,C_EntryBaseOnGround)==0 ) { DNM_M_vBaseIdCardSetOnGround ( p_stBaseIdCard, atoi(_ap_szParams[0]) ); } if( strcmp(_p_szName,C_EntryBaseSpider)==0 ) { DNM_M_vBaseIdCardSetSpider ( p_stBaseIdCard, atoi(_ap_szParams[0]) ); } if( strcmp(_p_szName,C_EntryBaseShoot)==0 ) { DNM_M_vBaseIdCardSetShoot ( p_stBaseIdCard, atoi(_ap_szParams[0]) ); } if( strcmp(_p_szName,C_EntryBaseSwim)==0 ) { DNM_M_vBaseIdCardSetSwim ( p_stBaseIdCard, atoi(_ap_szParams[0]) ); } if( strcmp(_p_szName,C_EntryBaseTilt)==0 ) { DNM_M_vBaseIdCardSetTilt ( p_stBaseIdCard, atoi(_ap_szParams[0]) ); } if( strcmp(_p_szName,C_EntryBaseCollisionControl)==0 ) { DNM_M_vBaseIdCardSetCollisionControl ( p_stBaseIdCard, atoi(_ap_szParams[0]) ); } if( strcmp(_p_szName,C_EntryBaseKeepWallSpeedZ)==0 ) { DNM_M_vBaseIdCardSetKeepWallSpeedZ ( p_stBaseIdCard, atoi(_ap_szParams[0]) ); } if( strcmp(_p_szName,C_EntryBaseSpeedLimit)==0 ) { DNM_M_vBaseIdCardSetSpeedLimit ( p_stBaseIdCard, atoi(_ap_szParams[0]) ); } if( strcmp(_p_szName,C_EntryBaseInertia)==0 ) { DNM_M_vBaseIdCardSetInertia ( p_stBaseIdCard, atoi(_ap_szParams[0]) ); } if( strcmp(_p_szName,C_EntryBaseStream)==0 ) { DNM_M_vBaseIdCardSetStream ( p_stBaseIdCard, atoi(_ap_szParams[0]) ); } if( strcmp(_p_szName,C_EntryBaseStickOnPlatform)==0 ) { DNM_M_vBaseIdCardSetStickOnPlatform ( p_stBaseIdCard, atoi(_ap_szParams[0]) ); } if( strcmp(_p_szName,C_EntryBaseUseScale)==0 ) { DNM_M_vBaseIdCardSetScale ( p_stBaseIdCard, atoi(_ap_szParams[0]) ); } if( strcmp(_p_szName,C_EntryBaseGravityFactor)==0 ) { DNM_M_vBaseIdCardSetGravityFactor ( p_stBaseIdCard, MTH_M_xDoubleToReal(atof(_ap_szParams[0])) ); } if( strcmp(_p_szName,C_EntryBaseSlide)==0 ) { DNM_M_vBaseIdCardSetSlide ( p_stBaseIdCard, MTH_M_xDoubleToReal(atof(_ap_szParams[0])) ); } if( strcmp(_p_szName,C_EntryBaseRebound)==0 ) { DNM_M_vBaseIdCardSetRebound ( p_stBaseIdCard, MTH_M_xDoubleToReal(atof(_ap_szParams[0])) ); } if( strcmp(_p_szName,C_EntryBaseSlopeLimit)==0 ) { DNM_M_vBaseIdCardSetSlopeLimit ( p_stBaseIdCard, MTH_M_xDoubleToReal(atof(_ap_szParams[0])) ); } if( strcmp(_p_szName,C_EntryBaseInertiaFactorX)==0 ) { DNM_M_vBaseIdCardSetInertiaFactorX ( p_stBaseIdCard, MTH_M_xDoubleToReal(atof(_ap_szParams[0])) ); } if( strcmp(_p_szName,C_EntryBaseInertiaFactorY)==0 ) { DNM_M_vBaseIdCardSetInertiaFactorY ( p_stBaseIdCard, MTH_M_xDoubleToReal(atof(_ap_szParams[0])) ); } if( strcmp(_p_szName,C_EntryBaseInertiaFactorZ)==0 ) { DNM_M_vBaseIdCardSetInertiaFactorZ ( p_stBaseIdCard, MTH_M_xDoubleToReal(atof(_ap_szParams[0])) ); } if( strcmp(_p_szName,C_EntryBaseTiltIntensity)==0 ) { DNM_M_vBaseIdCardSetTiltIntensity ( p_stBaseIdCard, MTH_M_xDoubleToReal(atof(_ap_szParams[0])) ); } if( strcmp(_p_szName,C_EntryBaseTiltInertia)==0 ) { DNM_M_vBaseIdCardSetTiltInertia ( p_stBaseIdCard, MTH_M_xDoubleToReal(atof(_ap_szParams[0])) ); } if( strcmp(_p_szName,C_EntryBaseTiltOrigin)==0 ) { DNM_M_vBaseIdCardSetTiltOrigin ( p_stBaseIdCard, MTH_M_xDoubleToReal(atof(_ap_szParams[0])) ); } if( strcmp(_p_szName,C_EntryBaseMaxSpeed)==0 ) { MTH3D_tdstVector stVector; MTH3D_M_vSetVectorElements ( &stVector, MTH_M_xDoubleToReal((double)atof(_ap_szParams[0])), MTH_M_xDoubleToReal((double)atof(_ap_szParams[1])), MTH_M_xDoubleToReal((double)atof(_ap_szParams[2])) ); DNM_M_vBaseIdCardSetMaxSpeed ( p_stBaseIdCard, &stVector ); } return(eReturnValue); } /* CallBack */ DNMi_M_CallBack( Base, DNM_eBase, DNM_fn_eScriptFillBaseIdentityCard) #endif /* U64 */ /*----------------------------------------------------------------------------- * Description : Init the load of IdCard *----------------------------------------------------------------------------- * Input : void * Output : void *----------------------------------------------------------------------------- * Creation date : 19/02/97 Author : S Leroy *----------------------------------------------------------------------------- * Modification date :01/04/97 Modification Author : S Leroy * Modifications : *---------------------------------------------------------------------------*/ void DNM_fn_vInitLoadIdCard() { DNM_fn_vInitLinkTableOfIdCard(); #if !defined(U64) /* Camera */ DNMi_M_Register(Camera) /* Base */ DNMi_M_Register(Base) #endif /* U64 */ }