493 lines
9.5 KiB
C
493 lines
9.5 KiB
C
/*----------------------*/
|
|
/* 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 */
|
|
}
|
|
|