163 lines
4.6 KiB
C
163 lines
4.6 KiB
C
/*******************************************************/
|
|
/**** For the structures and variables declarations ****/
|
|
/*******************************************************/
|
|
#define D_Dynam_StructureDefine
|
|
#define D_Dynam_VariableDefine
|
|
|
|
#include "ToolsCPA.h"
|
|
|
|
#include "Options/Options.h"
|
|
#include "Macros.h"
|
|
|
|
#include "Actions/AllActs.h"
|
|
|
|
#include "Structur/MemGame.h"
|
|
#include "Structur/ErrGame.h"
|
|
#include "Structur/Objects.h"
|
|
#include "Structur/GameScpt.h"
|
|
#include "Structur/StdObjSt.h"
|
|
#include "Structur/EngMode.h"
|
|
|
|
#include "ObjInit.h"
|
|
#include "ObjType.h"
|
|
#include "ZeMem.h"
|
|
#include "ia_dnm.h"
|
|
|
|
#include "ldt.h"
|
|
|
|
#define lTagSlideFactorX 'Xrot'
|
|
#define lTagSlideFactorY 'Yrot'
|
|
#define lTagSlideFactorZ 'Zrot'
|
|
|
|
/*****************************************************************
|
|
Name:
|
|
Description: Create callback for LDT
|
|
Author: Mircea Petrescu
|
|
Date: 8/24/98
|
|
Modified: Ovidiu Scripa 01/09/98; 13/10/98
|
|
*****************************************************************/
|
|
int fn_iCreateDynam( LDT_tdst_Link *pLink )
|
|
{
|
|
MS_tdxHandleToDynam h_Dynam;
|
|
struct tdstEngineObject_ *p_stEngineObject=(struct tdstEngineObject_ *)pLink->pParent->pObject;
|
|
DNM_tdstDynamics* p_stDynamics;
|
|
ACP_tdxBool bCanHangOn;
|
|
long lObjectType;
|
|
unsigned char ucTypeOfObject;
|
|
ACP_tdxBool bIsMobile;
|
|
char *szP0;
|
|
int nNoParams;
|
|
ACP_tdxBool bBase, bAdvanced, bComplex;
|
|
ACP_tdxBool bCollision;
|
|
eDynamicSize eSize;
|
|
|
|
bBase = bAdvanced = bComplex = FALSE;
|
|
bCollision = FALSE; /* default value */
|
|
eSize = eDynamicSizeBase; /* default size */
|
|
|
|
|
|
MMG_fn_vBeginMemoryInfo (MMG_C_lTypeMiniStructure , MMG_C_lSubTypeDynamics , p_stEngineObject);
|
|
h_Dynam = fn_h_DynamRealAlloc();
|
|
nNoParams = LDT_iGetNbParams();
|
|
if (nNoParams>=2)
|
|
{
|
|
szP0 = LDT_szGetParam(1);
|
|
|
|
if (!strcmp (szP0,C_szDynamicSizeBase))
|
|
eSize=eDynamicSizeBase;
|
|
else if (!strcmp (szP0,C_szDynamicSizeAdvanced))
|
|
eSize=eDynamicSizeAdvanced;
|
|
else if (!strcmp (szP0,C_szDynamicSizeComplex))
|
|
eSize=eDynamicSizeComplex;
|
|
|
|
if (nNoParams==3)
|
|
bCollision = (ACP_tdxBool)atoi (LDT_szGetParam(2));
|
|
}
|
|
fn_v_DynamicAlloc ( h_Dynam, eSize, bCollision );
|
|
|
|
MMG_fn_vEndMemoryInfo ();
|
|
|
|
p_stEngineObject->h_Dynam=h_Dynam;
|
|
|
|
lObjectType = DNM_C_lObjectType_SolidMobile;
|
|
ucTypeOfObject = DNM_C_lObjectType_Solid;
|
|
bIsMobile = TRUE;
|
|
bCanHangOn = TRUE;
|
|
|
|
fn_vInitDynamicalFunctionPointer(h_Dynam);
|
|
p_stDynamics = fn_p_stDynamGetDynamics(h_Dynam);
|
|
if (DNM_M_bDynamicsIsAdvancedSize(p_stDynamics))
|
|
{
|
|
DNM_M_vDynamicsSetSlideFactorX ( p_stDynamics, MTH_C_ONE );
|
|
DNM_M_vDynamicsSetSlideFactorY ( p_stDynamics, MTH_C_ONE );
|
|
DNM_M_vDynamicsSetSlideFactorZ ( p_stDynamics, MTH_C_ONE );
|
|
}
|
|
pLink->pObject=(void *)h_Dynam;
|
|
return 0;
|
|
}
|
|
|
|
|
|
/*****************************************************************
|
|
Name:
|
|
Description: Load callback for LDT
|
|
Author: Mircea Petrescu
|
|
Date: 8/24/98
|
|
Modified: Ovidiu Scripa 09/01/98; 13/10/98
|
|
*****************************************************************/
|
|
int fn_iLoadDynam( LDT_tdst_Link *pLink )
|
|
{
|
|
LDT_tdeParseResult result=ParseResult_BeginSection;
|
|
MS_tdxHandleToDynam h_Dynam=(MS_tdxHandleToDynam)pLink->pObject;
|
|
struct tdstEngineObject_ *p_stEngineObject=(struct tdstEngineObject_ *)pLink->pParent->pObject;
|
|
ACP_tdxBool bCanHangOn;
|
|
long lObjectType;
|
|
unsigned char ucTypeOfObject;
|
|
ACP_tdxBool bIsMobile;
|
|
DNM_tdstDynamics* p_stDynamics = fn_p_stDynamGetDynamics(p_stEngineObject->h_Dynam);
|
|
|
|
|
|
lObjectType = DNM_C_lObjectType_SolidMobile;
|
|
ucTypeOfObject = DNM_C_lObjectType_Solid;
|
|
bIsMobile = TRUE;
|
|
bCanHangOn = TRUE;
|
|
|
|
while( result!=ParseResult_EndSection )
|
|
{
|
|
result=LDT_GetNextEntry();
|
|
/* this test is only usefull to read old .car */
|
|
if (DNM_M_bDynamicsIsAdvancedSize(p_stDynamics))
|
|
{
|
|
|
|
switch( result )
|
|
{
|
|
case ParseResult_Entry: /* an entry */
|
|
{
|
|
char *szEntry=LDT_szGetEntryName();
|
|
switch (*(long*)(szEntry+8))
|
|
{
|
|
case lTagSlideFactorX: /* */
|
|
{
|
|
DNM_M_vDynamicsSetSlideFactorX (p_stDynamics, MTH_M_xDoubleToReal(atof(LDT_szGetParam(1))));
|
|
}
|
|
break;
|
|
case lTagSlideFactorY: /* */
|
|
{
|
|
DNM_M_vDynamicsSetSlideFactorY (p_stDynamics, MTH_M_xDoubleToReal(atof(LDT_szGetParam(1))));
|
|
}
|
|
break;
|
|
case lTagSlideFactorZ: /* */
|
|
{
|
|
DNM_M_vDynamicsSetSlideFactorZ (p_stDynamics, MTH_M_xDoubleToReal(atof(LDT_szGetParam(1))));
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
return 0;
|
|
}
|
|
|