515 lines
12 KiB
C
515 lines
12 KiB
C
#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 <crtdbg.h>
|
|
|
|
/* ---- 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 */
|
|
}
|
|
|