reman3/Rayman_X/cpa/tempgrp/MEC/specif/DNMLoadI.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 */
}