#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" #include "ldt.h" #include /* ---- must be report in bin/binproto */ #define BIN_C_DNMMecBaseIdCardID 64 #define lTagAngularSpeed 'ugnA' #define lTagLinearSpeed 'eniL' #define lTagSpeedingUp 'eepS' #define lTagGi 'iG' #define lTagIx 'xI' #define lTagIy 'yI' #define lTagIz 'zI' #define lTagAnimation 'minA' #define lTagGravity 'varG' #define lTagTilt 'tliT' /*#define lTagTiltIntensity 13*/ /*#define lTagTiltInertia 11*/ /*#define lTagTiltOrigin 10*/ #define lTagClimb 'milC' #define lTagOnGround 'rGnO' #define lTagSpider 'dipS' #define lTagShoot 'oohS' #define lTagCollide 'lloC' #define lTagKeepSpeedZ 'peeK' #define lTagSpeedLimit 'eepS' #define lTagInertia 'renI' #define lTagStream 'ertS' #define lTagStickOnPlatform 'citS' #define lTagSlide 'dilS' #define lTagScale 'lacS' #define lTagRebound 'obeR' #define lTagSlopeLimit 'polS' #define lTagMaxSpeed 'SxaM' /* Macro for initializing a CallBack and*/ /* initializing the associated LinkTable*/ /* for binarization purpose*/ #define DNMi_M_RegisterLDT(Type) \ LDT_RegisterType(C_SectionIdCard##Type##, CreateIdCard##Type##, LoadIdCard##Type##, LDT_REG_SECTION); /* 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_CallBackLDT(Type, Struct, Parse) \ int CreateIdCard##Type##( LDT_tdst_Link* pLink ) \ { \ DNM_tdxHandleToMecIdentityCard h_IdCard; \ \ h_IdCard = DNM_fn_xIdentityCardCreate(##Struct##); \ pLink->pObject = (void *)h_IdCard; \ return 0; \ } \ int LoadIdCard##Type##( LDT_tdst_Link* pLink ) \ { \ int nLen;\ char a255_cLongName[255]; \ DNM_tdxHandleToMecIdentityCard h_IdCard = pLink->pObject; \ nLen = LDT_ComputeSectionName(pLink, a255_cLongName); \ SCR_M_v_Link_SetAdditionalLong( SCR_fnp_st_Link_SetValue (DNM_fn_p_stGetIdCardLinkTable(), a255_cLongName, (unsigned long)h_IdCard ), 1, nLen); \ return Parse##(h_IdCard, pLink); \ } /* -> OS : THIS CODE SHOULD BE DELETED 25-Aug-98*/ /* _CrtSetReportMode( _CRT_WARN, _CRTDBG_MODE_WNDW ); \*/ /* _RPT2( _CRT_WARN, "Name:%s.\nnLen=%d ", a255_cLongName, nLen); \*/ /* DebugBreak(); \*/ /* <- OS : THIS CODE SHOULD BE DELETED 25-Aug-98*/ /*----------------------------- | Camera | | Script, WriteBloc, CallBack | -----------------------------*/ /* Script Parsing */ /***************************************************************** Function name : DNM_fn_eLDTFillCameraIdentityCard Description : Author : Ovidiu Scripa (oscripa@ubisoft.ro) - ROMTEAM Creation Date : 14-Oct-98 Modified : Return type : int Argument : DNM_tdxHandleToMecIdentityCard h_IdCard Argument : LDT_tdst_Link* pLink *****************************************************************/ int DNM_fn_eLDTFillCameraIdentityCard( DNM_tdxHandleToMecIdentityCard h_IdCard, LDT_tdst_Link* pLink) { LDT_tdeParseResult result=ParseResult_BeginSection; MTH_tdxReal xTmp; while( result!=ParseResult_EndSection ) { result=LDT_GetNextEntry(); switch( result ) { case ParseResult_Entry: /* an entry */ { char *szEntry=LDT_szGetEntryName(); switch (*(long*)szEntry) { case lTagAngularSpeed : /* AngularSpeed */ { xTmp = MTH_M_xDoubleToReal(atof(LDT_szGetParam(1))); DNM_M_xCameraIdCardSetAngularSpeed((DNM_tdstMecCameraIdCard *)h_IdCard,MTH_M_xDegToRad(xTmp)); } break; case lTagLinearSpeed : /* LinearSpeed */ { xTmp = MTH_M_xDoubleToReal(atof(LDT_szGetParam(1))); DNM_M_xCameraIdCardSetLinearSpeed((DNM_tdstMecCameraIdCard *)h_IdCard,xTmp); } break; case lTagSpeedingUp : /* SpeedingUp */ { xTmp = MTH_M_xDoubleToReal(atof(LDT_szGetParam(1))); DNM_M_xCameraIdCardSetSpeedingUp((DNM_tdstMecCameraIdCard *)h_IdCard,xTmp); } break; } } } } return 0; } /* CallBack */ DNMi_M_CallBackLDT( Camera, DNM_eCamera, DNM_fn_eLDTFillCameraIdentityCard) /*----------------------------- | Base | | Script, WriteBloc, CallBack | -----------------------------*/ /* Script Parsing */ /***************************************************************** Function name : DNM_fn_eLDTFillBaseIdentityCard Description : Author : Ovidiu Scripa (oscripa@ubisoft.ro) - ROMTEAM Creation Date : 14-Oct-98 Modified : Return type : int Argument : DNM_tdxHandleToMecIdentityCard h_IdCard Argument : LDT_tdst_Link* pLink *****************************************************************/ int DNM_fn_eLDTFillBaseIdentityCard( DNM_tdxHandleToMecIdentityCard h_IdCard, LDT_tdst_Link* pLink) { LDT_tdeParseResult result=ParseResult_BeginSection; DNM_tdstMecBaseIdCard *p_stBaseIdCard; /* Gives back the semantic of the handle */ p_stBaseIdCard = DNM_fn_p_stMecBaseIdCardGiveBackSemantic(h_IdCard); while( result!=ParseResult_EndSection ) { result=LDT_GetNextEntry(); switch( result ) { case ParseResult_Entry: /* an entry */ { char *szEntry=LDT_szGetEntryName(); if (strlen(szEntry) == 1) /* G*/ { DNM_M_vBaseIdCardSetGravityFactor ( p_stBaseIdCard, MTH_M_xDoubleToReal(atof(LDT_szGetParam(1))) ); break; } if (strlen(szEntry) == 2) { switch (*(short*)szEntry) { case lTagGi : /* */ { DNM_M_vBaseIdCardSetGi ( p_stBaseIdCard, atoi(LDT_szGetParam(1)) ); } break; case lTagIx : /* */ { DNM_M_vBaseIdCardSetInertiaFactorX ( p_stBaseIdCard, MTH_M_xDoubleToReal(atof(LDT_szGetParam(1))) ); } break; case lTagIy : /* */ { DNM_M_vBaseIdCardSetInertiaFactorY ( p_stBaseIdCard, MTH_M_xDoubleToReal(atof(LDT_szGetParam(1))) ); } break; case lTagIz : /* */ { DNM_M_vBaseIdCardSetInertiaFactorZ ( p_stBaseIdCard, MTH_M_xDoubleToReal(atof(LDT_szGetParam(1))) ); } break; } break; } switch (*(long*)szEntry) { case lTagAnimation : /* */ { DNM_M_vBaseIdCardSetAnimation ( p_stBaseIdCard, atoi(LDT_szGetParam(1)) ); } break; case lTagCollide : /* Collide, CollisionControl*/ { if (strlen(szEntry)==7) /* Collide*/ { DNM_M_vBaseIdCardSetCollide ( p_stBaseIdCard, atoi(LDT_szGetParam(1)) ); } else /* CollisionControl*/ { DNM_M_vBaseIdCardSetCollisionControl ( p_stBaseIdCard, atoi(LDT_szGetParam(1)) ); } } break; case lTagGravity : /* */ { DNM_M_vBaseIdCardSetGravity ( p_stBaseIdCard, atoi(LDT_szGetParam(1)) ); } break; case lTagTilt : /* */ { switch (strlen(szEntry)) { case 4: /* Tilt*/ { DNM_M_vBaseIdCardSetTilt ( p_stBaseIdCard, atoi(LDT_szGetParam(1)) ); } break; case 10: /*TiltOrigin*/ { DNM_M_vBaseIdCardSetTiltOrigin ( p_stBaseIdCard, MTH_M_xDoubleToReal(atof(LDT_szGetParam(1))) ); } break; case 11: /*TiltInertia*/ { DNM_M_vBaseIdCardSetTiltInertia ( p_stBaseIdCard, MTH_M_xDoubleToReal(atof(LDT_szGetParam(1))) ); } break; case 13: /*TiltIntensity*/ { DNM_M_vBaseIdCardSetTiltIntensity ( p_stBaseIdCard, MTH_M_xDoubleToReal(atof(LDT_szGetParam(1))) ); } break; } } break; case lTagClimb : /* */ { DNM_M_vBaseIdCardSetClimb ( p_stBaseIdCard, atoi(LDT_szGetParam(1)) ); } break; case lTagOnGround : /* */ { DNM_M_vBaseIdCardSetOnGround ( p_stBaseIdCard, atoi(LDT_szGetParam(1)) ); } break; case lTagSpider : /* */ { DNM_M_vBaseIdCardSetSpider ( p_stBaseIdCard, atoi(LDT_szGetParam(1)) ); } break; case lTagShoot : /* */ { DNM_M_vBaseIdCardSetShoot ( p_stBaseIdCard, atoi(LDT_szGetParam(1)) ); } break; case lTagKeepSpeedZ : /* */ { DNM_M_vBaseIdCardSetKeepWallSpeedZ ( p_stBaseIdCard, atoi(LDT_szGetParam(1)) ); } break; case lTagSpeedLimit : /* */ { DNM_M_vBaseIdCardSetSpeedLimit ( p_stBaseIdCard, atoi(LDT_szGetParam(1)) ); } break; case lTagInertia : /* */ { DNM_M_vBaseIdCardSetInertia ( p_stBaseIdCard, atoi(LDT_szGetParam(1)) ); } break; case lTagStream : /* */ { DNM_M_vBaseIdCardSetStream ( p_stBaseIdCard, atoi(LDT_szGetParam(1)) ); } break; case lTagStickOnPlatform : /* */ { DNM_M_vBaseIdCardSetStickOnPlatform ( p_stBaseIdCard, atoi(LDT_szGetParam(1)) ); } break; case lTagSlide : /* */ { DNM_M_vBaseIdCardSetSlide ( p_stBaseIdCard, MTH_M_xDoubleToReal(atof(LDT_szGetParam(1))) ); } break; case lTagRebound : /* */ { DNM_M_vBaseIdCardSetRebound ( p_stBaseIdCard, MTH_M_xDoubleToReal(atof(LDT_szGetParam(1))) ); } break; case lTagSlopeLimit : /* */ { DNM_M_vBaseIdCardSetSlopeLimit ( p_stBaseIdCard, MTH_M_xDoubleToReal(atof(LDT_szGetParam(1))) ); } break; case lTagMaxSpeed : /* */ { MTH3D_tdstVector stVector; MTH3D_M_vSetVectorElements ( &stVector, MTH_M_xDoubleToReal((double)atof(LDT_szGetParam(1))), MTH_M_xDoubleToReal((double)atof(LDT_szGetParam(2))), MTH_M_xDoubleToReal((double)atof(LDT_szGetParam(3))) ); DNM_M_vBaseIdCardSetMaxSpeed ( p_stBaseIdCard, &stVector ); } break; } } } } return 0; } /* CallBack */ DNMi_M_CallBackLDT( Base, DNM_eBase, DNM_fn_eLDTFillBaseIdentityCard) #endif /* U64 */ /*#define LDT_REG_SECTION 0 /* registers section callbacks */ /*#define LDT_REG_FILE 1 /* registers file callbacks */ /*----------------------------------------------------------------------------- * Description : Init the load of IdCard *----------------------------------------------------------------------------- * Input : void * Output : void *---------------------------------------------------------------------------*/ void DNM_fn_vInitLoadIdCardLDT() { DNM_fn_vInitLinkTableOfIdCard(); #if !defined(U64) /* Camera */ DNMi_M_RegisterLDT(Camera) /* Base */ DNMi_M_RegisterLDT(Base) #endif /* U64 */ }