2210 lines
63 KiB
C
2210 lines
63 KiB
C
/* (c) Ubi Studios 1996*/
|
||
/* See Vincent Greco or Christophe Durand for any comment or question*/
|
||
|
||
|
||
/*For game material*/
|
||
#include "GMT/GmtHandl.h"
|
||
|
||
#include "ACP_base.h"
|
||
/*memory management of geometry.*/
|
||
#include "GEO.h"
|
||
#include "GLI.h"
|
||
#include "SCR.h"
|
||
|
||
/*Include For "Sector.h"*/
|
||
#include "MTH.h"
|
||
#include "COL.h"
|
||
#include "SPO.h"
|
||
#include "LST.h"
|
||
|
||
#include "VIG.h"
|
||
|
||
/*For the sound*/
|
||
#include "SND.h"
|
||
|
||
#include "SCT.h"
|
||
|
||
/*PATH NAME*/
|
||
#include "DPT.h"
|
||
|
||
/* binarization*/
|
||
/*#include "BIN.h"*/
|
||
|
||
#include "SNA.h"
|
||
|
||
SCR_tdst_Link_Table SECT_stLinkTable;
|
||
|
||
#define SCT_C_MAXBINSIZE 128*1024
|
||
|
||
|
||
// FBF N64-format pour coords, et logfile dans x:\exe\geodump.log{
|
||
#ifdef U64CONVERTETLOG
|
||
extern float fScale;
|
||
extern FILE *dump;
|
||
|
||
#endif //U64CONVERTLOG
|
||
// } fin N64-format
|
||
/*Prototypes*/
|
||
|
||
SCR_tde_Anl_ReturnValue SECT_fn_xLoadSector(SCR_tdst_File_Description *_p_stFile,char *_p_szName, char *_ap_szParams[],SCR_tde_Anl_Action _eAction);
|
||
SCR_tde_Anl_ReturnValue SCT_fn_xLoadSectorBorder(SCR_tdst_File_Description *_p_stFile, char *_p_szName, char *_ap_szParams[], SCR_tde_Anl_Action _eAction);
|
||
SCR_tde_Anl_ReturnValue SCT_fn_xLoadSectorsLink(SCR_tdst_File_Description *_p_stFile, char *_p_szName, char *_ap_szParams[], SCR_tde_Anl_Action _eAction);
|
||
SCR_tde_Anl_ReturnValue SCT_fn_xLoadStaticLightsSector(SCR_tdst_File_Description *_p_stFile, char *_p_szName, char *_ap_szParams[], SCR_tde_Anl_Action _eAction);
|
||
|
||
/*BEGIN OS 06-Mar-98*/
|
||
/*
|
||
SCR_tde_Anl_ReturnValue SECT_fn_xLoadBinSector(SCR_tdst_File_Description *_p_stFile,char *_p_szName, char *_ap_szParams[],SCR_tde_Anl_Action _eAction);
|
||
SCR_tde_Anl_ReturnValue SCT_fn_xLoadBinSectorBorder(SCR_tdst_File_Description *_p_stFile, char *_p_szName, char *_ap_szParams[], SCR_tde_Anl_Action _eAction);
|
||
SCR_tde_Anl_ReturnValue SCT_fn_xLoadBinSectorsLink(SCR_tdst_File_Description *_p_stFile, char *_p_szName, char *_ap_szParams[], SCR_tde_Anl_Action _eAction);
|
||
SCR_tde_Anl_ReturnValue SCT_fn_xLoadBinStaticLightsSector(SCR_tdst_File_Description *_p_stFile, char *_p_szName, char *_ap_szParams[], SCR_tde_Anl_Action _eAction);
|
||
*/
|
||
/*END OS 06-Mar-98*/
|
||
|
||
/*End prototypes*/
|
||
|
||
|
||
|
||
/*Function*/
|
||
BOOL SECT_fn_bInitSectorLoading(void)
|
||
{
|
||
SCR_fn_v_RdL0_RegisterCallback("Sector", SECT_fn_xLoadSector, SCR_CRC_c_RdL0_ForSection);
|
||
SCR_fn_v_RdL0_RegisterCallback("SectorsLink", SCT_fn_xLoadSectorsLink, SCR_CRC_c_RdL0_ForSection);
|
||
SCR_fn_v_RdL0_RegisterCallback("Border", SCT_fn_xLoadSectorBorder, SCR_CRC_c_RdL0_ForSection);
|
||
SCR_fn_v_RdL0_RegisterCallback("StaticLights", SCT_fn_xLoadStaticLightsSector, SCR_CRC_c_RdL0_ForSection);
|
||
|
||
/*BEGIN OS 06-Mar-98*/
|
||
/*
|
||
SCR_fn_v_RdL0_RegisterCallback("Sector", SECT_fn_xLoadBinSector, SCR_CRC_c_RdL0_ForBinSection);
|
||
SCR_fn_v_RdL0_RegisterCallback("SectorsLink", SCT_fn_xLoadBinSectorsLink, SCR_CRC_c_RdL0_ForBinSection);
|
||
SCR_fn_v_RdL0_RegisterCallback("Border", SCT_fn_xLoadBinSectorBorder, SCR_CRC_c_RdL0_ForBinSection);
|
||
SCR_fn_v_RdL0_RegisterCallback("StaticLights", SCT_fn_xLoadBinStaticLightsSector, SCR_CRC_c_RdL0_ForBinSection);
|
||
*/
|
||
/*END OS 06-Mar-98*/
|
||
|
||
|
||
SCR_fn_v_Link_InitTable(&SECT_stLinkTable);
|
||
|
||
|
||
return TRUE;
|
||
}
|
||
/*End of */
|
||
|
||
|
||
/*Function */
|
||
/*void SECT_fn_vLoadSectorFile(char *szLoadPath, char *szFileName)
|
||
{
|
||
char szOldPath[C_MaxLenPath];
|
||
|
||
// Deplacement dans le repertoire des datas
|
||
getcwd(szOldPath,C_MaxLenPath);
|
||
chdir(szLoadPath);
|
||
|
||
SCRIPT_vRegisterPath(szLoadPath);
|
||
|
||
SCRIPT_vSetResultSubSection((unsigned long)NULL);
|
||
SCRIPT_ulAnalyseFile(szFileName);
|
||
//M_CheckScriptError();
|
||
chdir(szOldPath);
|
||
}
|
||
//End of
|
||
*/
|
||
|
||
/*Function*/
|
||
SCR_tde_Anl_ReturnValue SECT_fn_xLoadSector(SCR_tdst_File_Description *_p_stFile, char *_p_szName, char *_ap_szParams[], SCR_tde_Anl_Action _eAction)
|
||
{
|
||
SECT_tdxHandleOfSectorObject hSector;
|
||
SECT_tdxHandleOfSectorObject hNewSector;
|
||
HIE_tdxHandleToSuperObject hSuperObjectSector;
|
||
SECT_tdxHandleOfElementLstGraphicInteraction hGElement;
|
||
SECT_tdxHandleOfElementLstCollisionInteraction hColElement;
|
||
SECT_tdxHandleOfElementLstActivityInteraction hActElement;
|
||
SECT_tdxHandleOfElementLstSoundInteraction hSoundElement;
|
||
SECT_tdxHandleOfElementLstStaticLights hStaticLightsElement;
|
||
SCR_tdst_Cxt_Values *p_stValues;
|
||
/*char a255_cTempName[255];*/
|
||
|
||
switch (_eAction)
|
||
{
|
||
case SCR_EA_Anl_BeginSection:
|
||
VIG_fn_vAddToProgressBar(1);
|
||
/* new Sector for that section*/
|
||
hNewSector=SECT_fn_hCreateSector();
|
||
/*I return my own handle*/
|
||
SCR_M_RdL0_SetSectionLong (0,0,hNewSector);
|
||
SCR_M_RdL0_SetContextLong (0,0,hNewSector);
|
||
/* LinkTable management*/
|
||
{
|
||
char a255_cLinkKey[255];
|
||
|
||
SCR_M_RdL0_ComputeOpenSectionNameR(0,a255_cLinkKey);
|
||
|
||
/* JO 09/12/97*/
|
||
#ifdef _DEBUG
|
||
strcpy(hNewSector->szSectorName,a255_cLinkKey);
|
||
#endif /* _DEBUG */
|
||
|
||
SCR_M_v_Link_SetAdditionalLong(
|
||
SCR_fnp_st_Link_SetValue(&SECT_stLinkTable,
|
||
a255_cLinkKey,(unsigned long)hNewSector),
|
||
1,
|
||
strlen(a255_cLinkKey)-strlen(SCR_M_RdL0_GetCompleteSectionNameR(0)));
|
||
}
|
||
/* //Get Path
|
||
strcpy(a255_cTempName,fn_szGetLevelsDataPath());
|
||
strcat(a255_cTempName,"\\");
|
||
strcat(a255_cTempName,SCR_M_RdL0_GetCompleteSectionNameR(0));
|
||
|
||
SCR_fnp_st_Link_SetValue(
|
||
&SECT_stLinkTable,
|
||
a255_cTempName,
|
||
(unsigned long)hNewSector
|
||
);
|
||
*/
|
||
hNewSector->pSkyVisualMaterial = NULL;
|
||
hNewSector->FogIntensity = 0;
|
||
break;
|
||
|
||
case SCR_EA_Anl_Entry:
|
||
/* Here is my own handle*/
|
||
SCR_M_RdL0_GetContextLong(0,0,SECT_tdxHandleOfSectorObject,hSector);
|
||
|
||
/* do the link with the hierarchy*/
|
||
if (strcmp(_p_szName,"LinkedSuperObject")==0)
|
||
{
|
||
p_stValues = SCR_fnp_st_RdL0_AnalyseSection(_ap_szParams[0], SCR_CDF_uw_Anl_Normal);
|
||
|
||
if(p_stValues)
|
||
{
|
||
hSuperObjectSector = ( HIE_tdxHandleToSuperObject )SCR_M_ul_RdL0_ExtractLongValue(p_stValues,0);
|
||
HIE_fn_vSetSuperObjectObjectAndType(hSuperObjectSector,hSector,HIE_C_ulSector);
|
||
}
|
||
}
|
||
|
||
/* Add a Element to the activity interaction list*/
|
||
else if (strcmp(_p_szName,"AddLstActivity")==0)
|
||
{
|
||
p_stValues = SCR_fnp_st_RdL0_AnalyseSection(_ap_szParams[0], SCR_CDF_uw_Anl_Normal);
|
||
|
||
if(p_stValues)
|
||
{
|
||
hActElement=SECT_fn_hCreateElementLstActivityInteraction();
|
||
SECT_fn_vSetSectorPointedElementLSTActivityInt(hActElement,
|
||
(HIE_tdxHandleToSuperObject)SCR_M_ul_RdL0_ExtractLongValue(p_stValues,0));
|
||
LST2_M_StaticAddTail(&(hSector->stListOfSectorsInActivityInteraction),hActElement);
|
||
}
|
||
|
||
}
|
||
/* Add a Element to the graphic interaction list*/
|
||
else if (strcmp(_p_szName,"AddLstGraphic")==0)
|
||
{
|
||
p_stValues = SCR_fnp_st_RdL0_AnalyseSection(_ap_szParams[0], SCR_CDF_uw_Anl_Normal);
|
||
|
||
if(p_stValues)
|
||
{
|
||
hGElement=SECT_fn_hCreateElementLstGraphicInteraction();
|
||
SECT_fn_vSetSectorPointedElementLSTGraphicInt(hGElement,
|
||
(HIE_tdxHandleToSuperObject)SCR_M_ul_RdL0_ExtractLongValue(p_stValues,0));
|
||
SECT_fn_vSetLevelElementLSTGraphicInt(hGElement, (short)atoi(_ap_szParams[1]));
|
||
/* Begin Shaitan ModeLook*/
|
||
SECT_fn_vSetModeElementLSTGraphicInt(hGElement, (char)atoi(_ap_szParams[2]));
|
||
/* End Shaitan ModeLook*/
|
||
LST2_M_StaticAddTail(&(hSector->stListOfSectorsInGraphicInteraction),hGElement);
|
||
}
|
||
|
||
}
|
||
|
||
|
||
/* Add a Element to the collision interaction list*/
|
||
else if (strcmp(_p_szName,"AddLstCollision")==0)
|
||
{
|
||
p_stValues = SCR_fnp_st_RdL0_AnalyseSection(_ap_szParams[0], SCR_CDF_uw_Anl_Normal);
|
||
|
||
if(p_stValues)
|
||
{
|
||
hColElement=SECT_fn_hCreateElementLstCollisionInteraction();
|
||
SECT_fn_vSetSectorPointedElementLSTCollisionInt(hColElement,
|
||
(HIE_tdxHandleToSuperObject)SCR_M_ul_RdL0_ExtractLongValue(p_stValues,0));
|
||
LST2_M_StaticAddTail(&(hSector->stListOfSectorsInCollisionInteraction),hColElement);
|
||
}
|
||
|
||
}
|
||
|
||
/* Add a Element to the Sound interaction list*/
|
||
else if (strcmp(_p_szName,"AddLstSound")==0)
|
||
{
|
||
p_stValues = SCR_fnp_st_RdL0_AnalyseSection(_ap_szParams[0], SCR_CDF_uw_Anl_Normal);
|
||
|
||
if(p_stValues)
|
||
{
|
||
hSoundElement=SECT_fn_hCreateElementLstSoundInteraction();
|
||
SECT_fn_vSetSectorPointedElementLSTSoundInt(hSoundElement,
|
||
(HIE_tdxHandleToSuperObject)SCR_M_ul_RdL0_ExtractLongValue(p_stValues,0));
|
||
SCT_fn_vSetVolumeLSTSoundInt(hSoundElement,atol(_ap_szParams[1]));
|
||
LST2_M_StaticAddTail(&(hSector->stListOfSectorsInSoundInteraction),hSoundElement);
|
||
}
|
||
|
||
}
|
||
|
||
/* Add a Element to the static lights list*/
|
||
else if (strcmp(_p_szName,"AddLstStaticLights")==0)
|
||
{
|
||
p_stValues = SCR_fnp_st_RdL0_AnalyseSection(_ap_szParams[0], SCR_CDF_uw_Anl_Normal);
|
||
|
||
if(p_stValues)
|
||
{
|
||
hStaticLightsElement=SECT_fn_hCreateElementLstStaticLights();
|
||
SECT_fn_vSetHandleOfLightsInStaticLightsList(hStaticLightsElement,(GLI_tdxHandleToLight)SCR_M_ul_RdL0_ExtractLongValue(p_stValues,0));
|
||
LST2_M_StaticAddTail(&(hSector->stListOfStaticLights),hStaticLightsElement);
|
||
}
|
||
|
||
}
|
||
|
||
/* Virtual or not virtual*/
|
||
else if (strcmp(_p_szName,"Virtual")==0)
|
||
{
|
||
SECT_fn_vSetOnVirtualSector(hSector);
|
||
}
|
||
|
||
/* Priority*/
|
||
else if (strcmp(_p_szName,"Priority")==0)
|
||
{
|
||
SECT_fn_vSetSectorPriority(hSector, (char)atoi(_ap_szParams[0]));
|
||
}
|
||
|
||
/* Sky( ScrollX, ScrollY, FogCoef, Material )*/
|
||
else if (strcmp(_p_szName,"Sky")==0)
|
||
{
|
||
hSector->FogIntensity = (char)atoi(_ap_szParams[2]);
|
||
p_stValues = SCR_fnp_st_RdL0_AnalyseSection(_ap_szParams[3], SCR_CDF_uw_Anl_Normal);
|
||
hSector->pSkyVisualMaterial = (void *)SCR_M_ul_RdL0_ExtractLongValue(p_stValues,0);
|
||
GLI_xSetMaterialTextureScrollingCoef( hSector->pSkyVisualMaterial, 0, 1, (float)atof(_ap_szParams[0]), (float)atof(_ap_szParams[1]) );
|
||
}
|
||
|
||
break;
|
||
|
||
case SCR_EA_Anl_EndSection:
|
||
break;
|
||
}
|
||
return SCR_ERV_Anl_NormalReturn;
|
||
}
|
||
/*End of */
|
||
|
||
|
||
/*ANNECY Shaitan Add {*/
|
||
|
||
/*Function*/
|
||
SCR_tde_Anl_ReturnValue SCT_fn_xLoadSectorBorder (SCR_tdst_File_Description *_p_stFile, char *_p_szName, char *_ap_szParams[], SCR_tde_Anl_Action _eAction)
|
||
{
|
||
SECT_tdxHandleOfSectorObject hSector;
|
||
MTH3D_tdstVector stMaxPoint, stMinPoint;
|
||
|
||
if (_eAction == SCR_EA_Anl_Entry)
|
||
{
|
||
/* Get the handle of the section*/
|
||
SCR_M_RdL0_GetContextLong(-1,0,SECT_tdxHandleOfSectorObject,hSector);
|
||
|
||
/* loading min point of border*/
|
||
if (strcmp(_p_szName,"MinPointOfBorder")==0)
|
||
{
|
||
MTH3D_M_vSetVectorElements(&stMinPoint,
|
||
GLI_M_FloatToValue(atof(_ap_szParams[0])),
|
||
GLI_M_FloatToValue(atof(_ap_szParams[1])),
|
||
GLI_M_FloatToValue(atof(_ap_szParams[2])));
|
||
SECT_fn_vSetMinPointInBorder(hSector, &stMinPoint);
|
||
}
|
||
|
||
/* loading max point of border*/
|
||
if (strcmp(_p_szName,"MaxPointOfBorder")==0)
|
||
{
|
||
MTH3D_M_vSetVectorElements(&stMaxPoint,
|
||
GLI_M_FloatToValue(atof(_ap_szParams[0])),
|
||
GLI_M_FloatToValue(atof(_ap_szParams[1])),
|
||
GLI_M_FloatToValue(atof(_ap_szParams[2])));
|
||
SECT_fn_vSetMaxPointInBorder(hSector, &stMaxPoint);
|
||
}
|
||
|
||
/* loading of Zmax border*/
|
||
if (strcmp(_p_szName,"ZmaxOfBorder")==0)
|
||
{
|
||
stMaxPoint.xX = stMaxPoint.xY = MTH_C_InfinitMinus;
|
||
stMaxPoint.xZ = GLI_M_FloatToValue(atof(_ap_szParams[0]));
|
||
SECT_fn_vSetMaxPointInBorder(hSector, &stMaxPoint);
|
||
|
||
#ifdef ACTIVE_EDITOR
|
||
SECT_fn_vSetZmaxOfBorder(hSector, GLI_M_FloatToValue(atof(_ap_szParams[0])));
|
||
#endif /*ACTIVE_EDITOR*/
|
||
}
|
||
|
||
}
|
||
return SCR_ERV_Anl_NormalReturn;
|
||
}
|
||
/*End of */
|
||
|
||
/*ENDANNECY Shaitan Add }*/
|
||
|
||
/* fbolefeysot - 07/05/98{cleanage*/
|
||
/*Function*/
|
||
/*SCR_tde_Anl_ReturnValue SCT_fn_xLoadGoThroughSector(SCR_tdst_File_Description *_p_stFile, char *_p_szName, char *_ap_szParams[], SCR_tde_Anl_Action _eAction)
|
||
{
|
||
SECT_tdxHandleOfSectorObject hSector;
|
||
ACP_tdxHandleOfObject hBorderGeometric;
|
||
|
||
|
||
if (_eAction==SCR_EA_Anl_Entry)
|
||
{
|
||
// Get the handle of the section
|
||
SCR_M_RdL0_GetContextLong(-1,0,SECT_tdxHandleOfSectorObject,hSector);
|
||
|
||
|
||
// Loading of border object
|
||
if (strcmp(_p_szName,"GoThrough")==0)
|
||
{
|
||
hBorderGeometric =GLI_pLoadGeometricInFile(_ap_szParams[0]);
|
||
// Connect Sector with its BorderGeometric
|
||
SECT_fn_vSetBorderObjectInSector(hSector,hBorderGeometric);
|
||
}
|
||
|
||
}
|
||
return SCR_ERV_Anl_NormalReturn;
|
||
}
|
||
*/
|
||
/*End of */
|
||
/*END fbolefeysot}*/
|
||
|
||
|
||
/*Function*/
|
||
SCR_tde_Anl_ReturnValue SCT_fn_xLoadSectorsLink(SCR_tdst_File_Description *_p_stFile, char *_p_szName, char *_ap_szParams[], SCR_tde_Anl_Action _eAction)
|
||
{
|
||
SECT_tdxHandleOfSectorObject hSector;
|
||
SECT_tdxHandleOfElementLstGraphicInteraction hGElement;
|
||
SECT_tdxHandleOfElementLstCollisionInteraction hColElement;
|
||
SECT_tdxHandleOfElementLstActivityInteraction hActElement;
|
||
SECT_tdxHandleOfElementLstSoundInteraction hSoundElement;
|
||
SCT_tdxHandleOfLstSoundEvent hSoundEventElement;
|
||
SCR_tdst_Cxt_Values *p_stValues ;
|
||
|
||
if (_eAction==SCR_EA_Anl_Entry)
|
||
{
|
||
/* Get the handle of the section*/
|
||
SCR_M_RdL0_GetContextLong(-1,0,SECT_tdxHandleOfSectorObject,hSector);
|
||
|
||
|
||
/* Add a Element to the activity interaction list*/
|
||
if (strcmp(_p_szName,"AddLstActivity")==0)
|
||
{
|
||
p_stValues = SCR_fnp_st_RdL0_AnalyseSection(_ap_szParams[0], SCR_CDF_uw_Anl_Normal);
|
||
|
||
if(p_stValues)
|
||
{
|
||
hActElement=SECT_fn_hCreateElementLstActivityInteraction();
|
||
SECT_fn_vSetSectorPointedElementLSTActivityInt(hActElement,
|
||
(HIE_tdxHandleToSuperObject)SCR_M_ul_RdL0_ExtractLongValue(p_stValues,0));
|
||
LST2_M_StaticAddTail(&(hSector->stListOfSectorsInActivityInteraction),hActElement);
|
||
}
|
||
|
||
}
|
||
/* Add a Element to the graphic interaction list*/
|
||
if (strcmp(_p_szName,"AddLstGraphic")==0)
|
||
{
|
||
p_stValues = SCR_fnp_st_RdL0_AnalyseSection(_ap_szParams[0], SCR_CDF_uw_Anl_Normal);
|
||
|
||
if(p_stValues)
|
||
{
|
||
hGElement=SECT_fn_hCreateElementLstGraphicInteraction();
|
||
SECT_fn_vSetSectorPointedElementLSTGraphicInt(hGElement,
|
||
(HIE_tdxHandleToSuperObject)SCR_M_ul_RdL0_ExtractLongValue(p_stValues,0));
|
||
SECT_fn_vSetLevelElementLSTGraphicInt(hGElement, (short)atoi(_ap_szParams[1]));
|
||
/* Begin Shaitan ModeLook*/
|
||
SECT_fn_vSetModeElementLSTGraphicInt(hGElement, (char)atoi(_ap_szParams[2]));
|
||
/* End Shaitan ModeLook*/
|
||
LST2_M_StaticAddTail(&(hSector->stListOfSectorsInGraphicInteraction),hGElement);
|
||
}
|
||
|
||
}
|
||
|
||
|
||
/* Add a Element to the collision interaction list*/
|
||
if (strcmp(_p_szName,"AddLstCollision")==0)
|
||
{
|
||
p_stValues = SCR_fnp_st_RdL0_AnalyseSection(_ap_szParams[0], SCR_CDF_uw_Anl_Normal);
|
||
|
||
if(p_stValues)
|
||
{
|
||
hColElement=SECT_fn_hCreateElementLstCollisionInteraction();
|
||
SECT_fn_vSetSectorPointedElementLSTCollisionInt(hColElement,
|
||
(HIE_tdxHandleToSuperObject)SCR_M_ul_RdL0_ExtractLongValue(p_stValues,0));
|
||
LST2_M_StaticAddTail(&(hSector->stListOfSectorsInCollisionInteraction),hColElement);
|
||
}
|
||
|
||
}
|
||
|
||
/* Add a Element to the Sound interaction list*/
|
||
if (strcmp(_p_szName,"AddLstSound")==0)
|
||
{
|
||
p_stValues = SCR_fnp_st_RdL0_AnalyseSection(_ap_szParams[0], SCR_CDF_uw_Anl_Normal);
|
||
|
||
if(p_stValues)
|
||
{
|
||
hSoundElement=SECT_fn_hCreateElementLstSoundInteraction();
|
||
SECT_fn_vSetSectorPointedElementLSTSoundInt(hSoundElement,
|
||
(HIE_tdxHandleToSuperObject)SCR_M_ul_RdL0_ExtractLongValue(p_stValues,0));
|
||
SCT_fn_vSetVolumeLSTSoundInt(hSoundElement,atol(_ap_szParams[1]));
|
||
LST2_M_StaticAddTail(&(hSector->stListOfSectorsInSoundInteraction),hSoundElement);
|
||
}
|
||
|
||
}
|
||
|
||
/* Add a Element to the Sound Event list*/
|
||
if (strcmp(_p_szName,"AddLstSoundEvent")==0)
|
||
{
|
||
/* JO 04/08/97*/
|
||
if( strcmp(_ap_szParams[0],"FromAllSectors")==0 )
|
||
{
|
||
hSoundEventElement = SCT_fn_hCreateElementLstSoundEvent();
|
||
SCT_fn_vSetSectorPointedElementLSTSoundEvent(hSoundEventElement,NULL);
|
||
p_stValues = SCR_fnp_st_RdL0_AnalyseSection(_ap_szParams[1], SCR_CDF_uw_Anl_Normal);
|
||
if( p_stValues )
|
||
{
|
||
/* CGHT SNA*/
|
||
if (SNA_fn_ucGetLoadType()==SNA_SAVE_SNAPSHOT) /* MR0110*/
|
||
SNA_fn_vWriteSoundEntryInSoundTableFile(SND_fn_ulGetEventBinIdFromPointer((SND_tdxHandleToSoundEvent)SCR_M_ul_RdL0_ExtractLongValue(p_stValues,0)) ,(unsigned long)&(hSoundEventElement->uSoundEvent.pstPtr));
|
||
|
||
SCT_fn_vSetEventListElementLSTSoundEvent(hSoundEventElement,(SND_tdstBlockEvent *)SCR_M_ul_RdL0_ExtractLongValue(p_stValues,0));
|
||
}
|
||
LST2_M_StaticAddTail(&(hSector->stListOfSoundEvent),hSoundEventElement);
|
||
}
|
||
else
|
||
{
|
||
p_stValues = SCR_fnp_st_RdL0_AnalyseSection(_ap_szParams[0], SCR_CDF_uw_Anl_Normal);
|
||
if(p_stValues)
|
||
{
|
||
hSoundEventElement=SCT_fn_hCreateElementLstSoundEvent();
|
||
SCT_fn_vSetSectorPointedElementLSTSoundEvent(hSoundEventElement,
|
||
(HIE_tdxHandleToSuperObject)SCR_M_ul_RdL0_ExtractLongValue(p_stValues,0));
|
||
p_stValues = SCR_fnp_st_RdL0_AnalyseSection(_ap_szParams[1], SCR_CDF_uw_Anl_Normal);
|
||
if(p_stValues)
|
||
{
|
||
/* CGHT SNA*/
|
||
if (SNA_fn_ucGetLoadType()==SNA_SAVE_SNAPSHOT) /* MR0110*/
|
||
SNA_fn_vWriteSoundEntryInSoundTableFile(SND_fn_ulGetEventBinIdFromPointer((SND_tdxHandleToSoundEvent)SCR_M_ul_RdL0_ExtractLongValue(p_stValues,0)) ,(unsigned long)&(hSoundEventElement->uSoundEvent.pstPtr));
|
||
|
||
SCT_fn_vSetEventListElementLSTSoundEvent(hSoundEventElement,(SND_tdstBlockEvent *)SCR_M_ul_RdL0_ExtractLongValue(p_stValues,0));
|
||
}
|
||
LST2_M_StaticAddTail(&(hSector->stListOfSoundEvent),hSoundEventElement);
|
||
}
|
||
}
|
||
}
|
||
|
||
/* Virtual or not virtual*/
|
||
if (strcmp(_p_szName,"Virtual")==0)
|
||
{
|
||
SECT_fn_vSetOnVirtualSector(hSector);
|
||
}
|
||
|
||
/* Priority*/
|
||
if (strcmp(_p_szName,"Priority")==0)
|
||
{
|
||
SECT_fn_vSetSectorPriority(hSector, (char)atoi(_ap_szParams[0]));
|
||
}
|
||
|
||
if (strcmp(_p_szName,"CameraType")==0)
|
||
{
|
||
hSector->cCameraType = atoi(_ap_szParams[0]);
|
||
}
|
||
|
||
if (strcmp(_p_szName,"ZFar")==0)
|
||
{
|
||
hSector->xZFar = (MTH_tdxReal) atof(_ap_szParams[0]);
|
||
|
||
// FBF N64-format pour coords, et logfile dans x:\exe\geodump.log{
|
||
#ifdef U64CONVERTETLOG
|
||
hSector->xZFar = (float) (( (long)( (hSector->xZFar*fScale) + 0.5) ) / fScale);
|
||
fprintf(dump,"sector : %s ZFar = %f\n",hSector->szSectorName,hSector->xZFar);
|
||
fflush(dump);
|
||
|
||
#endif //U64CONVERTLOG
|
||
// } fin N64-format
|
||
}
|
||
}
|
||
return SCR_ERV_Anl_NormalReturn;
|
||
}
|
||
/*End of */
|
||
|
||
|
||
|
||
|
||
/*Function*/
|
||
SCR_tde_Anl_ReturnValue SCT_fn_xLoadStaticLightsSector(SCR_tdst_File_Description *_p_stFile, char *_p_szName, char *_ap_szParams[], SCR_tde_Anl_Action _eAction)
|
||
{
|
||
SECT_tdxHandleOfSectorObject hSector;
|
||
SECT_tdxHandleOfElementLstStaticLights hStaticLightsElement;
|
||
SCR_tdst_Cxt_Values *p_stValues ;
|
||
|
||
if (_eAction==SCR_EA_Anl_Entry)
|
||
{
|
||
/* Get the handle of the section*/
|
||
SCR_M_RdL0_GetContextLong(-1,0,SECT_tdxHandleOfSectorObject,hSector);
|
||
|
||
|
||
/* Add a Element to the static lights list*/
|
||
if (strcmp(_p_szName,"AddLstStaticLights")==0)
|
||
{
|
||
p_stValues = SCR_fnp_st_RdL0_AnalyseSection(_ap_szParams[0], SCR_CDF_uw_Anl_Normal);
|
||
|
||
if(p_stValues)
|
||
{
|
||
hStaticLightsElement=SECT_fn_hCreateElementLstStaticLights();
|
||
SECT_fn_vSetHandleOfLightsInStaticLightsList(hStaticLightsElement,(GLI_tdxHandleToLight)SCR_M_ul_RdL0_ExtractLongValue(p_stValues,0));
|
||
LST2_M_StaticAddTail(&(hSector->stListOfStaticLights),hStaticLightsElement);
|
||
}
|
||
|
||
}
|
||
}
|
||
|
||
return SCR_ERV_Anl_NormalReturn;
|
||
}
|
||
/*End of */
|
||
|
||
|
||
|
||
|
||
|
||
|
||
/*Function*/
|
||
SECT_tdxHandleOfSectorObject SECT_fn_hCreateSector (void)
|
||
{
|
||
MTH3D_tdstVector stMin, stMax;
|
||
SECT_tdxHandleOfSectorObject hNewSector;
|
||
|
||
/*hNewSector=(SECT_tdxHandleOfSectorObject)malloc(sizeof(struct SECT_tdstSector_));*/
|
||
MMG_fn_vAddMemoryInfo( MMG_C_lTypeSector , MMG_C_lSubTypeSector , 0 );
|
||
GEO_M_CPAMalloc( hNewSector, SECT_tdxHandleOfSectorObject, sizeof(struct SECT_tdstSector_), E_uwGEONotEnoughtMemory);
|
||
|
||
SECT_fn_vSetOffVirtualSector(hNewSector);
|
||
SECT_fn_vSetSectorPriority(hNewSector, C_SectorNormalPriority);
|
||
LST2_M_DynamicInitAnchor(&(hNewSector->stListOfCharacters));
|
||
LST2_M_DynamicInitAnchor(&(hNewSector->stListOfDNMLights));
|
||
LST2_M_StaticInitAnchor(&(hNewSector->stListOfStaticLights));
|
||
LST2_M_StaticInitAnchor(&(hNewSector->stListOfSectorsInGraphicInteraction));
|
||
LST2_M_StaticInitAnchor(&(hNewSector->stListOfSectorsInCollisionInteraction));
|
||
LST2_M_StaticInitAnchor(&(hNewSector->stListOfSectorsInActivityInteraction));
|
||
LST2_M_StaticInitAnchor(&(hNewSector->stListOfSectorsInSoundInteraction));
|
||
LST2_M_StaticInitAnchor(&(hNewSector->stListOfSoundEvent));
|
||
|
||
/* init min&max*/
|
||
stMin.xX = stMin.xY = stMin.xZ = MTH_C_InfinitPlus;
|
||
stMax.xX = stMax.xY = stMax.xZ = MTH_C_InfinitMinus;
|
||
/* set border*/
|
||
SECT_fn_vSetMinPointInBorder(hNewSector, &stMin);
|
||
SECT_fn_vSetMaxPointInBorder(hNewSector, &stMax);
|
||
#ifdef ACTIVE_EDITOR
|
||
SECT_fn_vSetZmaxOfBorder(hNewSector, MTH_C_InfinitMinus);
|
||
SECT_fn_vSetRealZmax(hNewSector, MTH_C_InfinitMinus);
|
||
#endif /*ACTIVE_EDITOR*/
|
||
|
||
hNewSector->cCameraType = 0;
|
||
hNewSector->xZFar = MTH_C_ZERO;
|
||
|
||
hNewSector->cCounter = 0;
|
||
|
||
return hNewSector;
|
||
}
|
||
/*End of */
|
||
|
||
/*Function*/
|
||
void SECT_fn_vSetOnVirtualSector(SECT_tdxHandleOfSectorObject hSector)
|
||
{
|
||
hSector->xVirtual=TRUE;
|
||
}
|
||
/*End of*/
|
||
|
||
/*Function*/
|
||
void SECT_fn_vSetOffVirtualSector(SECT_tdxHandleOfSectorObject hSector)
|
||
{
|
||
hSector->xVirtual=FALSE;
|
||
}
|
||
/*End of*/
|
||
|
||
/*Function*/
|
||
void SECT_fn_vSetSectorPriority(SECT_tdxHandleOfSectorObject hSector, char cPriority)
|
||
{
|
||
hSector->cPriority=cPriority;
|
||
}
|
||
/*End of*/
|
||
|
||
/*Function*/
|
||
char SECT_fn_cGetSectorPriority(SECT_tdxHandleOfSectorObject hSector)
|
||
{
|
||
return hSector->cPriority;
|
||
}
|
||
/*End of*/
|
||
/*ANNECY Shaitan Add {*/
|
||
/*Function*/
|
||
void SECT_fn_vSetMinPointInBorder (SECT_tdxHandleOfSectorObject _hSector,
|
||
MTH3D_tdstVector *_p_stMinPoint)
|
||
{
|
||
MTH3D_M_vCopyVector(&_hSector->stMinMaxPoints[0], _p_stMinPoint);
|
||
}
|
||
/*End of*/
|
||
|
||
/*Function*/
|
||
void SECT_fn_vSetMaxPointInBorder (SECT_tdxHandleOfSectorObject _hSector,
|
||
MTH3D_tdstVector *_p_stMaxPoint)
|
||
{
|
||
MTH3D_M_vCopyVector(&_hSector->stMinMaxPoints[1], _p_stMaxPoint);
|
||
}
|
||
/*End of*/
|
||
|
||
|
||
#ifdef ACTIVE_EDITOR
|
||
/*Function*/
|
||
MTH_tdxReal SECT_fn_xGetZmaxOfBorder (SECT_tdxHandleOfSectorObject _hSector)
|
||
{
|
||
return _hSector->xZmaxOfBorder;
|
||
}
|
||
/*End of*/
|
||
|
||
/*Function*/
|
||
void SECT_fn_vSetZmaxOfBorder (SECT_tdxHandleOfSectorObject _hSector, MTH_tdxReal _xZmaxOfBorder)
|
||
{
|
||
_hSector->xZmaxOfBorder = _xZmaxOfBorder;
|
||
}
|
||
/*End of*/
|
||
|
||
/*Function*/
|
||
MTH_tdxReal SECT_fn_xGetRealZmax (SECT_tdxHandleOfSectorObject _hSector)
|
||
{
|
||
return _hSector->xRealZmax;
|
||
}
|
||
/*End of*/
|
||
|
||
/*Function*/
|
||
void SECT_fn_vSetRealZmax (SECT_tdxHandleOfSectorObject _hSector, MTH_tdxReal _xRealZmax)
|
||
{
|
||
_hSector->xRealZmax = _xRealZmax;
|
||
}
|
||
/*End of*/
|
||
#endif /*ACTIVE_EDITOR*/
|
||
|
||
/*ENDANNECY Shaitan Add }*/
|
||
|
||
/* fbolefeysot - 07/05/98{cleanage*/
|
||
/*Function*/
|
||
/*void SECT_fn_vSetBorderObjectInSector(SECT_tdxHandleOfSectorObject hSector,
|
||
ACP_tdxHandleOfObject hBorderGeometric)
|
||
{
|
||
hSector->hBorderBoundsObject=hBorderGeometric;
|
||
}
|
||
*//*End of */
|
||
/*END fbolefeysot}*/
|
||
|
||
|
||
/*Function*/
|
||
SECT_tdxHandleOfElementLstGraphicInteraction SECT_fn_hCreateElementLstGraphicInteraction(void)
|
||
{
|
||
SECT_tdxHandleOfElementLstGraphicInteraction hGElement;
|
||
|
||
/*hGElement=(SECT_tdxHandleOfElementLstGraphicInteraction)malloc( sizeof(SECT_tdstListOfSOSectorsInGraphicInteraction));*/
|
||
MMG_fn_vAddMemoryInfo( MMG_C_lTypeSector , MMG_C_lSubTypeGraphicElement , 0 );
|
||
GEO_M_CPAMalloc( hGElement, SECT_tdxHandleOfElementLstGraphicInteraction, sizeof(SECT_tdstListOfSOSectorsInGraphicInteraction), E_uwGEONotEnoughtMemory);
|
||
|
||
LST2_M_StaticInitElement(hGElement);
|
||
return hGElement;
|
||
}
|
||
/*End of */
|
||
|
||
|
||
/*Function*/
|
||
void SECT_fn_vSetSectorPointedElementLSTGraphicInt(SECT_tdxHandleOfElementLstGraphicInteraction hGElement,
|
||
HIE_tdxHandleToSuperObject hSectorSuperObject)
|
||
{
|
||
hGElement->hPointerOfSectorSO = hSectorSuperObject;
|
||
}
|
||
/*End of */
|
||
|
||
|
||
/*Function*/
|
||
void SECT_fn_vSetLevelElementLSTGraphicInt(SECT_tdxHandleOfElementLstGraphicInteraction hGElement,
|
||
short wLevelOfDetail)
|
||
{
|
||
hGElement->wLevelOfDetail = wLevelOfDetail;
|
||
}
|
||
/*End of */
|
||
|
||
/* Begin Shaitan ModeLook*/
|
||
/*Function*/
|
||
void SECT_fn_vSetModeElementLSTGraphicInt(SECT_tdxHandleOfElementLstGraphicInteraction hGElement,
|
||
char cDisplayMode)
|
||
{
|
||
hGElement->cDisplayMode = cDisplayMode;
|
||
}
|
||
/*End of */
|
||
/* End Shaitan ModeLook*/
|
||
|
||
/*Function*/
|
||
SECT_tdxHandleOfElementLstCollisionInteraction SECT_fn_hCreateElementLstCollisionInteraction(void)
|
||
{
|
||
SECT_tdxHandleOfElementLstCollisionInteraction hColElement;
|
||
|
||
/*hColElement=(SECT_tdxHandleOfElementLstCollisionInteraction)malloc( sizeof(SECT_tdstListOfSOSectorsInCollisionInteraction));*/
|
||
MMG_fn_vAddMemoryInfo( MMG_C_lTypeSector , MMG_C_lSubTypeCollisionElement , 0 );
|
||
GEO_M_CPAMalloc( hColElement, SECT_tdxHandleOfElementLstCollisionInteraction, sizeof(SECT_tdstListOfSOSectorsInCollisionInteraction), E_uwGEONotEnoughtMemory);
|
||
|
||
LST2_M_StaticInitElement(hColElement);
|
||
return hColElement;
|
||
}
|
||
/*End of */
|
||
|
||
|
||
/*Function*/
|
||
void SECT_fn_vSetSectorPointedElementLSTCollisionInt(SECT_tdxHandleOfElementLstCollisionInteraction hColElement,
|
||
HIE_tdxHandleToSuperObject hSectorSuperObject)
|
||
{
|
||
hColElement->hPointerOfSectorSO = hSectorSuperObject;
|
||
}
|
||
/*End of */
|
||
|
||
|
||
/*Function*/
|
||
SECT_tdxHandleOfElementLstActivityInteraction SECT_fn_hCreateElementLstActivityInteraction(void)
|
||
{
|
||
SECT_tdxHandleOfElementLstActivityInteraction hActElement;
|
||
|
||
/*hActElement=(SECT_tdxHandleOfElementLstActivityInteraction)malloc( sizeof(SECT_tdstListOfSOSectorsInActivityInteraction));*/
|
||
MMG_fn_vAddMemoryInfo( MMG_C_lTypeSector , MMG_C_lSubTypeActiveElement , 0 );
|
||
GEO_M_CPAMalloc( hActElement, SECT_tdxHandleOfElementLstActivityInteraction, sizeof(SECT_tdstListOfSOSectorsInActivityInteraction), E_uwGEONotEnoughtMemory);
|
||
|
||
LST2_M_StaticInitElement(hActElement);
|
||
return hActElement;
|
||
}
|
||
/*End of */
|
||
|
||
|
||
/*Function*/
|
||
void SECT_fn_vSetSectorPointedElementLSTActivityInt(SECT_tdxHandleOfElementLstActivityInteraction hActElement,
|
||
HIE_tdxHandleToSuperObject hSectorSuperObject)
|
||
{
|
||
hActElement->hPointerOfSectorSO = hSectorSuperObject;
|
||
}
|
||
/*End of */
|
||
|
||
/*Function*/
|
||
SECT_tdxHandleOfElementLstSoundInteraction SECT_fn_hCreateElementLstSoundInteraction(void)
|
||
{
|
||
SECT_tdxHandleOfElementLstSoundInteraction hSndElement;
|
||
|
||
/*hSndElement=(SECT_tdxHandleOfElementLstSoundInteraction)malloc( sizeof(SECT_tdstListOfSOSectorsInSoundInteraction));*/
|
||
MMG_fn_vAddMemoryInfo( MMG_C_lTypeSector , MMG_C_lSubTypeSoundElement , 0 );
|
||
GEO_M_CPAMalloc( hSndElement, SECT_tdxHandleOfElementLstSoundInteraction, sizeof(SECT_tdstListOfSOSectorsInSoundInteraction), E_uwGEONotEnoughtMemory);
|
||
|
||
LST2_M_StaticInitElement(hSndElement);
|
||
return hSndElement;
|
||
}
|
||
/*End of */
|
||
|
||
|
||
/*Function*/
|
||
SCT_tdxHandleOfLstSoundEvent SCT_fn_hCreateElementLstSoundEvent(void)
|
||
{
|
||
SCT_tdxHandleOfLstSoundEvent hSndEventElement;
|
||
|
||
MMG_fn_vAddMemoryInfo( MMG_C_lTypeSector , MMG_C_lSubTypeSoundEvent , 0 );
|
||
GEO_M_CPAMalloc( hSndEventElement, SCT_tdxHandleOfLstSoundEvent, sizeof(SCT_tdstListOfSoundEvent), E_uwGEONotEnoughtMemory);
|
||
|
||
LST2_M_StaticInitElement(hSndEventElement);
|
||
return hSndEventElement;
|
||
}
|
||
/*End of */
|
||
|
||
|
||
|
||
/*Function*/
|
||
void SECT_fn_vSetSectorPointedElementLSTSoundInt(SECT_tdxHandleOfElementLstSoundInteraction hSndElement,
|
||
HIE_tdxHandleToSuperObject hSectorSuperObject)
|
||
{
|
||
hSndElement->hPointerOfSectorSO = hSectorSuperObject;
|
||
}
|
||
/*End of */
|
||
|
||
/*Function*/
|
||
void SCT_fn_vSetVolumeLSTSoundInt(SECT_tdxHandleOfElementLstSoundInteraction hSndElement,long lVolume)
|
||
{
|
||
hSndElement->lVolume = lVolume;
|
||
}
|
||
/*End of*/
|
||
|
||
|
||
/*Function*/
|
||
void SCT_fn_vSetSectorPointedElementLSTSoundEvent(SCT_tdxHandleOfLstSoundEvent hSndEventElement,
|
||
HIE_tdxHandleToSuperObject hSectorSuperObject)
|
||
{
|
||
hSndEventElement->hPointerOfSectorSO = hSectorSuperObject;
|
||
}
|
||
/*End of */
|
||
|
||
/*Function*/
|
||
void SCT_fn_vSetEventListElementLSTSoundEvent(SCT_tdxHandleOfLstSoundEvent hSndEventElement,SND_tdxHandleToSoundEvent p_stSoundEvent)
|
||
{
|
||
hSndEventElement->uSoundEvent.pstPtr = p_stSoundEvent;
|
||
}
|
||
/*End of*/
|
||
|
||
/*Function*/
|
||
SECT_tdxHandleOfElementLstStaticLights SECT_fn_hCreateElementLstStaticLights(void)
|
||
{
|
||
SECT_tdxHandleOfElementLstStaticLights hStaticLightsElement;
|
||
|
||
/*hStaticLightsElement=(SECT_tdxHandleOfElementLstStaticLights)malloc( sizeof(struct SECT_tdstListOfStaticLights_));*/
|
||
MMG_fn_vAddMemoryInfo( MMG_C_lTypeSector , MMG_C_lSubTypeStaticLightElement , 0 );
|
||
GEO_M_CPAMalloc( hStaticLightsElement, SECT_tdxHandleOfElementLstStaticLights, sizeof(struct SECT_tdstListOfStaticLights_), E_uwGEONotEnoughtMemory);
|
||
|
||
LST2_M_StaticInitElement(hStaticLightsElement);
|
||
return hStaticLightsElement;
|
||
}
|
||
/*End of*/
|
||
|
||
/*Function*/
|
||
void SECT_fn_vSetHandleOfLightsInStaticLightsList(
|
||
SECT_tdxHandleOfElementLstStaticLights hStaticLightsElement,
|
||
GLI_tdxHandleToLight hStaticLights
|
||
)
|
||
{
|
||
hStaticLightsElement->hStaticLights= hStaticLights;
|
||
}
|
||
/* End of*/
|
||
|
||
|
||
|
||
SCR_tdst_Link_Table *SECT_fn_pGetLinkTable(void)
|
||
{
|
||
return &SECT_stLinkTable;
|
||
}
|
||
|
||
void SECT_fn_vDisinit(void)
|
||
{
|
||
SCR_fn_v_Link_CloseTable(&SECT_stLinkTable);
|
||
}
|
||
|
||
|
||
/* Binarisation */
|
||
|
||
SECT_tdxHandleOfSectorObject SCT_fn_hLoadSector(
|
||
char* _szSectionName)
|
||
{
|
||
SCR_tdst_Cxt_Values *p_stValues ;
|
||
SCR_tdst_Link_Value *p_stLinkValue;
|
||
unsigned long ulResult;
|
||
unsigned int uiPos;
|
||
|
||
/* p_stLinkValue = BIN_fn_p_stSearchShortKey(
|
||
SECT_fn_pGetLinkTable(),
|
||
_szSectionName);
|
||
*/
|
||
uiPos = 0;
|
||
SCR_M_DyAr_GetNextElement(SCR_tdst_Link_Value, uiPos, p_stLinkValue,SCR_M_st_Link_GetDynamicArray(SECT_fn_pGetLinkTable()));
|
||
while(p_stLinkValue)
|
||
{
|
||
if(!strcmpi(SCR_M_p_sz_Link_GetKey(p_stLinkValue) + SCR_M_ul_Link_GetAdditionalLong(p_stLinkValue,1),_szSectionName))
|
||
break;
|
||
uiPos++;
|
||
SCR_M_DyAr_GetNextElement(SCR_tdst_Link_Value, uiPos, p_stLinkValue,SCR_M_st_Link_GetDynamicArray(SECT_fn_pGetLinkTable()));
|
||
}
|
||
|
||
if (p_stLinkValue == NULL)
|
||
{
|
||
p_stValues = SCR_fnp_st_RdL0_AnalyseSection(
|
||
_szSectionName,
|
||
SCR_CDF_uw_Anl_Normal);
|
||
if (p_stValues)
|
||
{
|
||
ulResult = SCR_M_ul_RdL0_ExtractLongValue(p_stValues,0);
|
||
return (SECT_tdxHandleOfSectorObject) ulResult;
|
||
}
|
||
else
|
||
return (SECT_tdxHandleOfSectorObject) NULL;
|
||
}
|
||
else return (SECT_tdxHandleOfSectorObject) p_stLinkValue->ulValue;
|
||
}
|
||
/*
|
||
void SCT_fn_vPrepareSaveBinaryBloc()
|
||
{
|
||
BIN_fn_vCreateBinaryIds(
|
||
SECT_fn_pGetLinkTable(),
|
||
BIN_C_SCTID);
|
||
GLI_fn_vPrepareSaveLightBinaryBloc();
|
||
}
|
||
// Macro for saving a LST2Anchor (of any type)
|
||
|
||
#define BIN_SCT_M_SaveLST2( \
|
||
Type, \
|
||
StructPtr) \
|
||
p_cBufferPointer = BIN_fn_p_cPutLong( \
|
||
p_cBufferPointer, \
|
||
0L); \
|
||
p_cBufferPointer = BIN_fn_p_cPutLong( \
|
||
p_cBufferPointer, \
|
||
0L); \
|
||
p_cBufferPointer = BIN_fn_p_cPutLong( \
|
||
p_cBufferPointer, \
|
||
(unsigned long) LST2_M_##Type##GetNumberOfElements(##StructPtr##));
|
||
|
||
// Macro for saving a LST2Element (of any type)
|
||
|
||
#define BIN_SCT_M_SaveLST2Elt() \
|
||
// NextBrother \
|
||
p_cBufferPointer = BIN_fn_p_cPutLong( \
|
||
p_cBufferPointer, \
|
||
0L); \
|
||
// PrevBrother \
|
||
p_cBufferPointer = BIN_fn_p_cPutLong( \
|
||
p_cBufferPointer, \
|
||
0L); \
|
||
// Father \
|
||
p_cBufferPointer = BIN_fn_p_cPutLong( \
|
||
p_cBufferPointer, \
|
||
0L);
|
||
|
||
|
||
// fbolefeysot - 07/05/98{cleanage
|
||
//extern CPA_EXPORT ACP_tdxHandleOfObject BIN_SECT_fn_hGetGeoObjOfSector(
|
||
// SECT_tdstSector *_pSector);
|
||
//END fbolefeysot}
|
||
extern CPA_EXPORT SECT_tdxHandleOfElementLstDNMLights BIN_SECT_fn_hGetFirstDNMLightsListInSector(
|
||
SECT_tdstSector *_pSector);
|
||
extern CPA_EXPORT SECT_tdxHandleOfElementLstStaticLights BIN_SECT_fn_hGetFirstStaticLightsListInSector(
|
||
SECT_tdstSector *_pSector);
|
||
extern CPA_EXPORT SECT_tdxHandleOfElementLstCharacter BIN_SECT_fn_hGetFirstCharListInSector(
|
||
SECT_tdstSector *_pSector);
|
||
extern CPA_EXPORT SECT_tdxHandleOfElementLstCollisionInteraction BIN_SECT_fn_hGetFirstCollisionNodeInCollisionList(
|
||
SECT_tdstSector *_pSector);
|
||
extern CPA_EXPORT SECT_tdxHandleOfElementLstActivityInteraction BIN_SECT_fn_hGetFirstActivityNodeInActivityList(
|
||
SECT_tdstSector *_pSector);
|
||
extern CPA_EXPORT SECT_tdxHandleOfElementLstGraphicInteraction BIN_SECT_fn_hGetFirstGraphicNodeInGraphicList(
|
||
SECT_tdstSector *_pSector);
|
||
extern CPA_EXPORT SECT_tdxHandleOfElementLstSoundInteraction BIN_SECT_fn_hGetFirstSoundNodeInSoundList(
|
||
SECT_tdstSector *_pSector);
|
||
extern CPA_EXPORT SCT_tdxHandleOfLstSoundEvent BIN_SCT_fn_hGetFirstSoundEventNodeInSoundEventList(
|
||
SECT_tdstSector *_pSector);
|
||
|
||
extern CPA_EXPORT void BIN_SECT_fn_vAddTailCharListNode(
|
||
SECT_tdstSector *_pSector,
|
||
SECT_tdxHandleOfElementLstCharacter hNode);
|
||
extern CPA_EXPORT void BIN_SECT_fn_vAddTailCollisionListNode(
|
||
SECT_tdstSector *_pSector,
|
||
SECT_tdxHandleOfElementLstCollisionInteraction hNode);
|
||
extern CPA_EXPORT void BIN_SECT_fn_vAddTailActivityListNode(
|
||
SECT_tdstSector *_pSector,
|
||
SECT_tdxHandleOfElementLstActivityInteraction hNode);
|
||
extern CPA_EXPORT void BIN_SECT_fn_vAddTailGraphicListNode(
|
||
SECT_tdstSector *_pSector,
|
||
SECT_tdxHandleOfElementLstGraphicInteraction hNode);
|
||
extern CPA_EXPORT void BIN_SECT_fn_vAddTailSoundListNode(
|
||
SECT_tdstSector *_pSector,
|
||
SECT_tdxHandleOfElementLstSoundInteraction hNode);
|
||
extern CPA_EXPORT void BIN_SCT_fn_vAddTailSoundEventListNode(
|
||
SECT_tdstSector *_pSector,
|
||
SCT_tdxHandleOfLstSoundEvent hNode);
|
||
extern CPA_EXPORT void BIN_SECT_fn_vAddTailDNMLightsListNode(
|
||
SECT_tdstSector *_pSector,
|
||
SECT_tdxHandleOfElementLstDNMLights hNode);
|
||
extern CPA_EXPORT void BIN_SECT_fn_vAddTailStaticLightsListNode(
|
||
SECT_tdstSector *_pSector,
|
||
SECT_tdxHandleOfElementLstStaticLights hNode);
|
||
*/
|
||
/*
|
||
unsigned long SCT_fn_ulWriteBinaryBloc(
|
||
unsigned long _ulStructAddress,
|
||
char* _p_cDestBuffer)
|
||
{
|
||
SECT_tdxHandleOfSectorObject hSCT = (SECT_tdxHandleOfSectorObject) _ulStructAddress;
|
||
char *p_cBufferPointer =_p_cDestBuffer;
|
||
int iCnt;
|
||
p_cBufferPointer = BIN_fn_p_cPutBool(
|
||
p_cBufferPointer,
|
||
hSCT->xVirtual);
|
||
// Save LST2 Anchor
|
||
BIN_SCT_M_SaveLST2(
|
||
Dynamic,
|
||
&hSCT->stListOfCharacters)
|
||
|
||
// Save LST2 Anchor
|
||
BIN_SCT_M_SaveLST2(
|
||
Static,
|
||
&hSCT->stListOfStaticLights)
|
||
|
||
// Save LST2 Anchor
|
||
BIN_SCT_M_SaveLST2(
|
||
Dynamic,
|
||
&hSCT->stListOfDNMLights)
|
||
|
||
// Save LST2 Anchor
|
||
BIN_SCT_M_SaveLST2(
|
||
Static,
|
||
&hSCT->stListOfSectorsInGraphicInteraction)
|
||
|
||
// Save LST2 Anchor
|
||
BIN_SCT_M_SaveLST2(
|
||
Static,
|
||
&hSCT->stListOfSectorsInCollisionInteraction)
|
||
|
||
// Save LST2 Anchor
|
||
BIN_SCT_M_SaveLST2(
|
||
Static,
|
||
&hSCT->stListOfSectorsInActivityInteraction)
|
||
|
||
// Save LST2 Anchor
|
||
BIN_SCT_M_SaveLST2(
|
||
Static,
|
||
&hSCT->stListOfSectorsInSoundInteraction)
|
||
|
||
// Save LST2 Anchor
|
||
BIN_SCT_M_SaveLST2(
|
||
Static,
|
||
&hSCT->stListOfSoundEvent)
|
||
|
||
|
||
// Save LST2 List
|
||
{ SECT_tdxHandleOfElementLstCharacter hCur;
|
||
|
||
BIN_SECT_M_ForEachCharListInSector(hSCT, hCur, iCnt)
|
||
{
|
||
p_cBufferPointer = BIN_fn_p_cPutPointer(
|
||
p_cBufferPointer,
|
||
(unsigned long) hCur->hPointerOfCharacter,
|
||
HIE_fn_p_stGetSuperObjectLinkTable());
|
||
BIN_SCT_M_SaveLST2Elt()
|
||
}
|
||
}
|
||
|
||
// Save LST2 List
|
||
{ SECT_tdxHandleOfElementLstStaticLights hCur;
|
||
|
||
BIN_SECT_M_ForEachStaticLightsListInSector(hSCT, hCur, iCnt)
|
||
{
|
||
p_cBufferPointer = BIN_fn_p_cPutPointer(
|
||
p_cBufferPointer,
|
||
(unsigned long) hCur->hStaticLights,
|
||
LGT_fn_p_stGetLightLinkTable());
|
||
BIN_SCT_M_SaveLST2Elt()
|
||
}
|
||
}
|
||
|
||
// Save LST2 List
|
||
{ SECT_tdxHandleOfElementLstDNMLights hCur;
|
||
|
||
BIN_SECT_M_ForEachDNMLightsListInSector(hSCT, hCur, iCnt)
|
||
{
|
||
p_cBufferPointer = BIN_fn_p_cPutPointer(
|
||
p_cBufferPointer,
|
||
(unsigned long) hCur->hDNMLights,
|
||
LGT_fn_p_stGetLightLinkTable());
|
||
BIN_SCT_M_SaveLST2Elt()
|
||
}
|
||
}
|
||
|
||
// Save LST2 List
|
||
{ SECT_tdxHandleOfElementLstGraphicInteraction hCur;
|
||
|
||
BIN_SECT_M_ForEachGraphicNodeInGraphicInteractionList(hSCT, hCur, iCnt)
|
||
{
|
||
p_cBufferPointer = BIN_fn_p_cPutLong(
|
||
p_cBufferPointer,
|
||
(unsigned long) hCur->wLevelOfDetail);
|
||
p_cBufferPointer = BIN_fn_p_cPutPointer(
|
||
p_cBufferPointer,
|
||
(unsigned long) hCur->hPointerOfSectorSO,
|
||
HIE_fn_p_stGetSuperObjectLinkTable());
|
||
BIN_SCT_M_SaveLST2Elt()
|
||
}
|
||
}
|
||
|
||
// Save LST2 List
|
||
{ SECT_tdxHandleOfElementLstCollisionInteraction hCur;
|
||
|
||
BIN_SECT_M_ForEachCollisionNodeInCollisionInteractionList(hSCT, hCur, iCnt)
|
||
{
|
||
p_cBufferPointer = BIN_fn_p_cPutPointer(
|
||
p_cBufferPointer,
|
||
(unsigned long) hCur->hPointerOfSectorSO,
|
||
HIE_fn_p_stGetSuperObjectLinkTable());
|
||
BIN_SCT_M_SaveLST2Elt()
|
||
}
|
||
}
|
||
|
||
// Save LST2 List
|
||
{ SECT_tdxHandleOfElementLstActivityInteraction hCur;
|
||
|
||
BIN_SECT_M_ForEachActivityNodeInActivityInteractionList(hSCT, hCur, iCnt)
|
||
{
|
||
p_cBufferPointer = BIN_fn_p_cPutPointer(
|
||
p_cBufferPointer,
|
||
(unsigned long) hCur->hPointerOfSectorSO,
|
||
HIE_fn_p_stGetSuperObjectLinkTable());
|
||
BIN_SCT_M_SaveLST2Elt()
|
||
}
|
||
}
|
||
|
||
// Save LST2 List
|
||
{ SECT_tdxHandleOfElementLstSoundInteraction hCur;
|
||
|
||
BIN_SECT_M_ForEachSoundNodeInSoundInteractionList(hSCT, hCur, iCnt)
|
||
{
|
||
p_cBufferPointer = BIN_fn_p_cPutPointer(
|
||
p_cBufferPointer,
|
||
(unsigned long) hCur->hPointerOfSectorSO,
|
||
HIE_fn_p_stGetSuperObjectLinkTable());
|
||
p_cBufferPointer = BIN_fn_p_cPutLong(
|
||
p_cBufferPointer,
|
||
(unsigned long) hCur->lVolume);
|
||
BIN_SCT_M_SaveLST2Elt()
|
||
}
|
||
}
|
||
|
||
// Save LST2 List
|
||
{ SCT_tdxHandleOfLstSoundEvent hCur;
|
||
unsigned long ulSoundID;
|
||
|
||
BIN_SCT_M_ForEachSoundEventNodeInSoundEventList(hSCT, hCur, iCnt)
|
||
{
|
||
p_cBufferPointer = BIN_fn_p_cPutPointer(
|
||
p_cBufferPointer,
|
||
(unsigned long) hCur->hPointerOfSectorSO,
|
||
HIE_fn_p_stGetSuperObjectLinkTable());
|
||
|
||
ulSoundID=SND_fn_ulGetEventBinIdFromPointer((SND_tdstBlockEvent*)hCur->uSoundEvent.pstPtr);
|
||
|
||
p_cBufferPointer = BIN_fn_p_cPutLong(
|
||
p_cBufferPointer,
|
||
ulSoundID);
|
||
BIN_SCT_M_SaveLST2Elt()
|
||
}
|
||
}
|
||
|
||
return p_cBufferPointer - _p_cDestBuffer;
|
||
}
|
||
*/
|
||
/*
|
||
void SCT_fn_vWriteAllSectorBinaryBlocs(
|
||
char *_szBinaryFileName)
|
||
{
|
||
SCT_fn_vPrepareSaveBinaryBloc();
|
||
BIN_fn_vPutBinaryDataIntoFileFromLinkTable(
|
||
_szBinaryFileName,
|
||
SECT_fn_pGetLinkTable(),
|
||
SCT_C_MAXBINSIZE,
|
||
SCT_fn_ulWriteBinaryBloc);
|
||
}
|
||
*/
|
||
|
||
/* Restores real pointer*/
|
||
/*
|
||
#define BIN_M_ResetPointer( \
|
||
LinkTable, \
|
||
Pointer, \
|
||
Struct) \
|
||
ulAddress = BIN_fn_ulGetAddressFromId( \
|
||
LinkTable, \
|
||
(unsigned long)##Pointer##); \
|
||
if (ulAddress != 0) \
|
||
Pointer = (##Struct##) ulAddress; \
|
||
else \
|
||
{ BIN_fn_vGetScriptSectionNameFromIdAndRemoveIt( \
|
||
szSectionName, \
|
||
LinkTable, \
|
||
(unsigned long)##Pointer##); \
|
||
if ( (*szSectionName!='#') \
|
||
&& (*szSectionName!=0) ) \
|
||
{ SCR_tdst_Cxt_Values *p_stValues; \
|
||
p_stValues = SCR_fnp_st_RdL0_AnalyseSection( \
|
||
szSectionName, \
|
||
SCR_CDF_uw_Anl_Normal); \
|
||
if (p_stValues) \
|
||
Pointer = (##Struct##) p_stValues->a_ulValues[0]; \
|
||
} \
|
||
}
|
||
*/
|
||
/*
|
||
#define BIN_M_ResetPointer( \
|
||
LinkTable, \
|
||
Pointer, \
|
||
Struct) \
|
||
(##Struct##)BIN_fn_p_cGetPointer((char*)&Pointer,(unsigned long*)&Pointer,LinkTable);
|
||
|
||
#define BIN_M_ResetPointerSuperObject( \
|
||
LinkTable, \
|
||
Pointer, \
|
||
Struct) \
|
||
(void) BIN_fn_p_cGetBinaryId((unsigned char *) (&##Pointer##), &ulAddress); \
|
||
*((unsigned long *)&##Pointer##) = (unsigned long) (ulAddress);
|
||
|
||
#define BIN_M_ResetPointerSuperObject2ndPass( \
|
||
LinkTable, \
|
||
Pointer, \
|
||
Struct) \
|
||
ulAddress = BIN_fn_ulGetAddressFromId( \
|
||
LinkTable, \
|
||
(unsigned long)##Pointer##); \
|
||
Pointer = (##Struct##) ulAddress;
|
||
|
||
|
||
#define BIN_SCT_M_NewLST2( \
|
||
Type, \
|
||
Pointer, \
|
||
LST2Type) \
|
||
//iNb = LST2_M_##Type##GetNumberOfElements(Pointer); \
|
||
// Clean function, but not working \
|
||
iNb = ((long *) Pointer)[2]; \
|
||
memset( \
|
||
Pointer, \
|
||
0, \
|
||
sizeof(LST2_M_##Type##AnchorDeclaration(LST2Type)));
|
||
|
||
// Adds an item to a LST2
|
||
#define BIN_SCT_M_AddLST2( \
|
||
Type, \
|
||
Pointer, \
|
||
LST2Type) \
|
||
LST2_M_##Type##AddTail( \
|
||
Pointer, \
|
||
(LST2Type) p_xLST2pos);
|
||
|
||
// Sets current buffer position
|
||
#define BIN_SCT_M_GetPtr( \
|
||
Struct) \
|
||
Struct *p_stCur = (Struct *) p_xLST2pos;
|
||
|
||
// Go to next entry
|
||
#define BIN_SCT_M_AddPtr( \
|
||
Struct) \
|
||
p_xLST2pos += sizeof(Struct);
|
||
*/
|
||
/*
|
||
unsigned long SCT_fn_ulReadSectorBinaryBloc(
|
||
char *_p_cLoadedBuffer,
|
||
unsigned long _ulLoadedBufferSize)
|
||
{
|
||
SECT_tdxHandleOfSectorObject hSCT = NULL;
|
||
// unsigned long ulAddress;
|
||
// char szSectionName[256];
|
||
char *p_xLST2pos = NULL;
|
||
int iCnt, iNb;
|
||
|
||
GEO_M_CPAMalloc(
|
||
hSCT,
|
||
SECT_tdxHandleOfSectorObject,
|
||
_ulLoadedBufferSize,
|
||
E_uwGEONotEnoughtMemory);
|
||
memcpy(
|
||
(char *) hSCT,
|
||
_p_cLoadedBuffer,
|
||
_ulLoadedBufferSize);
|
||
|
||
|
||
// Ajout d'une nouvelle liste: (Ronan Bel)
|
||
// - Remplir la macro BIN_SCT_M_NewLST2
|
||
// - La recopier en M_BIN_AddLST2
|
||
// - Remplir la macro M_BIN_GetPTr
|
||
// - La recoper en M_BIN_AddPtr
|
||
// - Faire des BIN_M_ResetPointer si n<>cessaire
|
||
|
||
{
|
||
BIN_SCT_M_NewLST2(
|
||
Dynamic,
|
||
&hSCT->stListOfCharacters,
|
||
SECT_tdxHandleOfElementLstCharacter)
|
||
|
||
for (iCnt = 0; iCnt < iNb; iCnt++)
|
||
{
|
||
BIN_SCT_M_GetPtr(
|
||
SECT_tdstListOfSOCharacters)
|
||
|
||
BIN_SCT_M_AddLST2(
|
||
Dynamic,
|
||
&hSCT->stListOfCharacters,
|
||
SECT_tdxHandleOfElementLstCharacter)
|
||
|
||
|
||
BIN_SCT_M_AddPtr(
|
||
SECT_tdstListOfSOCharacters)
|
||
}
|
||
}
|
||
|
||
{
|
||
BIN_SCT_M_NewLST2(
|
||
Static,
|
||
&hSCT->stListOfStaticLights,
|
||
SECT_tdxHandleOfElementLstStaticLights)
|
||
|
||
for (iCnt = 0; iCnt < iNb; iCnt++)
|
||
{
|
||
BIN_SCT_M_GetPtr(
|
||
SECT_tdstListOfStaticLights)
|
||
|
||
BIN_SCT_M_AddLST2(
|
||
Static,
|
||
&hSCT->stListOfStaticLights,
|
||
SECT_tdxHandleOfElementLstStaticLights)
|
||
|
||
BIN_M_ResetPointer(
|
||
LGT_fn_p_stGetLightLinkTable(),
|
||
p_stCur->hStaticLights,
|
||
GLI_tdxHandleToLight)
|
||
|
||
BIN_SCT_M_AddPtr(
|
||
SECT_tdstListOfStaticLights)
|
||
}
|
||
}
|
||
|
||
{
|
||
BIN_SCT_M_NewLST2(
|
||
Dynamic,
|
||
&hSCT->stListOfDNMLights,
|
||
SECT_tdxHandleOfElementLstDNMLights)
|
||
|
||
for (iCnt = 0; iCnt < iNb; iCnt++)
|
||
{
|
||
BIN_SCT_M_GetPtr(
|
||
SECT_tdstListOfDNMLights)
|
||
|
||
BIN_SCT_M_AddLST2(
|
||
Dynamic,
|
||
&hSCT->stListOfDNMLights,
|
||
SECT_tdxHandleOfElementLstDNMLights)
|
||
|
||
BIN_M_ResetPointer(
|
||
LGT_fn_p_stGetLightLinkTable(),
|
||
p_stCur->hDNMLights,
|
||
GLI_tdxHandleToLight)
|
||
|
||
BIN_SCT_M_AddPtr(
|
||
SECT_tdstListOfDNMLights)
|
||
}
|
||
}
|
||
|
||
{
|
||
BIN_SCT_M_NewLST2(
|
||
Static,
|
||
&hSCT->stListOfSectorsInGraphicInteraction,
|
||
SECT_tdxHandleOfElementLstGraphicInteraction)
|
||
|
||
for (iCnt = 0; iCnt < iNb; iCnt++)
|
||
{
|
||
BIN_SCT_M_GetPtr(
|
||
SECT_tdstListOfSOSectorsInGraphicInteraction)
|
||
|
||
BIN_SCT_M_AddLST2(
|
||
Static,
|
||
&hSCT->stListOfSectorsInGraphicInteraction,
|
||
SECT_tdxHandleOfElementLstGraphicInteraction)
|
||
|
||
|
||
BIN_SCT_M_AddPtr(
|
||
SECT_tdstListOfSOSectorsInGraphicInteraction)
|
||
}
|
||
}
|
||
|
||
{
|
||
BIN_SCT_M_NewLST2(
|
||
Static,
|
||
&hSCT->stListOfSectorsInCollisionInteraction,
|
||
SECT_tdxHandleOfElementLstCollisionInteraction)
|
||
|
||
for (iCnt = 0; iCnt < iNb; iCnt++)
|
||
{
|
||
BIN_SCT_M_GetPtr(
|
||
SECT_tdstListOfSOSectorsInCollisionInteraction)
|
||
|
||
BIN_SCT_M_AddLST2(
|
||
Static,
|
||
&hSCT->stListOfSectorsInCollisionInteraction,
|
||
SECT_tdxHandleOfElementLstCollisionInteraction)
|
||
|
||
|
||
BIN_SCT_M_AddPtr(
|
||
SECT_tdstListOfSOSectorsInCollisionInteraction)
|
||
}
|
||
}
|
||
|
||
{
|
||
BIN_SCT_M_NewLST2(
|
||
Static,
|
||
&hSCT->stListOfSectorsInActivityInteraction,
|
||
SECT_tdxHandleOfElementLstActivityInteraction)
|
||
|
||
for (iCnt = 0; iCnt < iNb; iCnt++)
|
||
{
|
||
BIN_SCT_M_GetPtr(
|
||
SECT_tdstListOfSOSectorsInActivityInteraction)
|
||
|
||
BIN_SCT_M_AddLST2(
|
||
Static,
|
||
&hSCT->stListOfSectorsInActivityInteraction,
|
||
SECT_tdxHandleOfElementLstActivityInteraction)
|
||
|
||
|
||
BIN_SCT_M_AddPtr(
|
||
SECT_tdstListOfSOSectorsInActivityInteraction)
|
||
}
|
||
}
|
||
|
||
{
|
||
BIN_SCT_M_NewLST2(
|
||
Static,
|
||
&hSCT->stListOfSectorsInSoundInteraction,
|
||
SECT_tdxHandleOfElementLstSoundInteraction)
|
||
|
||
for (iCnt = 0; iCnt < iNb; iCnt++)
|
||
{
|
||
BIN_SCT_M_GetPtr(
|
||
SECT_tdstListOfSOSectorsInSoundInteraction)
|
||
|
||
BIN_SCT_M_AddLST2(
|
||
Static,
|
||
&hSCT->stListOfSectorsInSoundInteraction,
|
||
SECT_tdxHandleOfElementLstSoundInteraction)
|
||
|
||
|
||
BIN_SCT_M_AddPtr(
|
||
SECT_tdstListOfSOSectorsInSoundInteraction)
|
||
}
|
||
}
|
||
|
||
{
|
||
SND_tdstBlockEvent *p_stSoundEvent;
|
||
BIN_SCT_M_NewLST2(
|
||
Static,
|
||
&hSCT->stListOfSoundEvent,
|
||
SCT_tdxHandleOfLstSoundEvent)
|
||
|
||
for (iCnt = 0; iCnt < iNb; iCnt++)
|
||
{
|
||
BIN_SCT_M_GetPtr(
|
||
SCT_tdstListOfSoundEvent)
|
||
|
||
BIN_SCT_M_AddLST2(
|
||
Static,
|
||
&hSCT->stListOfSoundEvent,
|
||
SCT_tdxHandleOfLstSoundEvent)
|
||
|
||
|
||
p_stSoundEvent = SND_fn_pGetBinEvent((unsigned long)p_stCur->uSoundEvent.Id);
|
||
p_stCur->uSoundEvent.pstPtr = p_stSoundEvent;
|
||
|
||
BIN_SCT_M_AddPtr(
|
||
SCT_tdstListOfSoundEvent)
|
||
}
|
||
}
|
||
|
||
return (unsigned long) hSCT;
|
||
}
|
||
*/
|
||
/* AR 970913 */
|
||
/* Read function without allocation and direct resolving of pointers */
|
||
/*
|
||
void SCT_fn_vResolveSectorBinaryBloc2(unsigned long _ulAddress)
|
||
{
|
||
SECT_tdxHandleOfSectorObject hSCT = NULL;
|
||
// unsigned long ulAddress;
|
||
// char szSectionName[256];
|
||
char *p_xLST2pos;
|
||
int iCnt, iNb;
|
||
|
||
hSCT=(SECT_tdxHandleOfSectorObject)_ulAddress;
|
||
|
||
// fbolefeysot - 07/05/98{cleanage
|
||
//END fbolefeysot}
|
||
p_xLST2pos = ((char *) hSCT) + sizeof(SECT_tdstSector);
|
||
|
||
|
||
// Ajout d'une nouvelle liste: (Ronan Bel)
|
||
// Remplir la macro BIN_SCT_M_NewLST2
|
||
// La recopier en M_BIN_AddLST2
|
||
// Remplir la macro M_BIN_GetPTr
|
||
// La recoper en M_BIN_AddPtr
|
||
// Faire des BIN_M_ResetPointer si n<>cessaire
|
||
{
|
||
BIN_SCT_M_NewLST2(
|
||
Dynamic,
|
||
&hSCT->stListOfCharacters,
|
||
SECT_tdxHandleOfElementLstCharacter)
|
||
|
||
for (iCnt = 0; iCnt < iNb; iCnt++)
|
||
{
|
||
BIN_SCT_M_GetPtr(
|
||
SECT_tdstListOfSOCharacters)
|
||
|
||
BIN_SCT_M_AddLST2(
|
||
Dynamic,
|
||
&hSCT->stListOfCharacters,
|
||
SECT_tdxHandleOfElementLstCharacter)
|
||
|
||
BIN_M_ResetPointer(
|
||
HIE_fn_p_stGetSuperObjectLinkTable(),
|
||
p_stCur->hPointerOfCharacter,
|
||
HIE_tdxHandleToSuperObject)
|
||
|
||
BIN_SCT_M_AddPtr(
|
||
SECT_tdstListOfSOCharacters)
|
||
}
|
||
}
|
||
|
||
{
|
||
BIN_SCT_M_NewLST2(
|
||
Static,
|
||
&hSCT->stListOfStaticLights,
|
||
SECT_tdxHandleOfElementLstStaticLights)
|
||
|
||
for (iCnt = 0; iCnt < iNb; iCnt++)
|
||
{
|
||
BIN_SCT_M_GetPtr(
|
||
SECT_tdstListOfStaticLights)
|
||
|
||
BIN_SCT_M_AddLST2(
|
||
Static,
|
||
&hSCT->stListOfStaticLights,
|
||
SECT_tdxHandleOfElementLstStaticLights)
|
||
|
||
BIN_M_ResetPointer(
|
||
LGT_fn_p_stGetLightLinkTable(),
|
||
p_stCur->hStaticLights,
|
||
GLI_tdxHandleToLight)
|
||
|
||
BIN_SCT_M_AddPtr(
|
||
SECT_tdstListOfStaticLights)
|
||
}
|
||
}
|
||
|
||
{
|
||
BIN_SCT_M_NewLST2(
|
||
Dynamic,
|
||
&hSCT->stListOfDNMLights,
|
||
SECT_tdxHandleOfElementLstDNMLights)
|
||
|
||
for (iCnt = 0; iCnt < iNb; iCnt++)
|
||
{
|
||
BIN_SCT_M_GetPtr(
|
||
SECT_tdstListOfDNMLights)
|
||
|
||
BIN_SCT_M_AddLST2(
|
||
Dynamic,
|
||
&hSCT->stListOfDNMLights,
|
||
SECT_tdxHandleOfElementLstDNMLights)
|
||
|
||
BIN_M_ResetPointer(
|
||
LGT_fn_p_stGetLightLinkTable(),
|
||
p_stCur->hDNMLights,
|
||
GLI_tdxHandleToLight)
|
||
|
||
BIN_SCT_M_AddPtr(
|
||
SECT_tdstListOfDNMLights)
|
||
}
|
||
}
|
||
|
||
{
|
||
BIN_SCT_M_NewLST2(
|
||
Static,
|
||
&hSCT->stListOfSectorsInGraphicInteraction,
|
||
SECT_tdxHandleOfElementLstGraphicInteraction)
|
||
|
||
for (iCnt = 0; iCnt < iNb; iCnt++)
|
||
{
|
||
BIN_SCT_M_GetPtr(
|
||
SECT_tdstListOfSOSectorsInGraphicInteraction)
|
||
|
||
BIN_SCT_M_AddLST2(
|
||
Static,
|
||
&hSCT->stListOfSectorsInGraphicInteraction,
|
||
SECT_tdxHandleOfElementLstGraphicInteraction)
|
||
|
||
BIN_M_ResetPointer(
|
||
HIE_fn_p_stGetSuperObjectLinkTable(),
|
||
p_stCur->hPointerOfSectorSO,
|
||
HIE_tdxHandleToSuperObject)
|
||
|
||
BIN_SCT_M_AddPtr(
|
||
SECT_tdstListOfSOSectorsInGraphicInteraction)
|
||
}
|
||
}
|
||
|
||
{
|
||
BIN_SCT_M_NewLST2(
|
||
Static,
|
||
&hSCT->stListOfSectorsInCollisionInteraction,
|
||
SECT_tdxHandleOfElementLstCollisionInteraction)
|
||
|
||
for (iCnt = 0; iCnt < iNb; iCnt++)
|
||
{
|
||
BIN_SCT_M_GetPtr(
|
||
SECT_tdstListOfSOSectorsInCollisionInteraction)
|
||
|
||
BIN_SCT_M_AddLST2(
|
||
Static,
|
||
&hSCT->stListOfSectorsInCollisionInteraction,
|
||
SECT_tdxHandleOfElementLstCollisionInteraction)
|
||
|
||
BIN_M_ResetPointer(
|
||
HIE_fn_p_stGetSuperObjectLinkTable(),
|
||
p_stCur->hPointerOfSectorSO,
|
||
HIE_tdxHandleToSuperObject)
|
||
|
||
BIN_SCT_M_AddPtr(
|
||
SECT_tdstListOfSOSectorsInCollisionInteraction)
|
||
}
|
||
}
|
||
|
||
{
|
||
BIN_SCT_M_NewLST2(
|
||
Static,
|
||
&hSCT->stListOfSectorsInActivityInteraction,
|
||
SECT_tdxHandleOfElementLstActivityInteraction)
|
||
|
||
for (iCnt = 0; iCnt < iNb; iCnt++)
|
||
{
|
||
BIN_SCT_M_GetPtr(
|
||
SECT_tdstListOfSOSectorsInActivityInteraction)
|
||
|
||
BIN_SCT_M_AddLST2(
|
||
Static,
|
||
&hSCT->stListOfSectorsInActivityInteraction,
|
||
SECT_tdxHandleOfElementLstActivityInteraction)
|
||
|
||
BIN_M_ResetPointer(
|
||
HIE_fn_p_stGetSuperObjectLinkTable(),
|
||
p_stCur->hPointerOfSectorSO,
|
||
HIE_tdxHandleToSuperObject)
|
||
|
||
BIN_SCT_M_AddPtr(
|
||
SECT_tdstListOfSOSectorsInActivityInteraction)
|
||
}
|
||
}
|
||
|
||
{
|
||
BIN_SCT_M_NewLST2(
|
||
Static,
|
||
&hSCT->stListOfSectorsInSoundInteraction,
|
||
SECT_tdxHandleOfElementLstSoundInteraction)
|
||
|
||
for (iCnt = 0; iCnt < iNb; iCnt++)
|
||
{
|
||
BIN_SCT_M_GetPtr(
|
||
SECT_tdstListOfSOSectorsInSoundInteraction)
|
||
|
||
BIN_SCT_M_AddLST2(
|
||
Static,
|
||
&hSCT->stListOfSectorsInSoundInteraction,
|
||
SECT_tdxHandleOfElementLstSoundInteraction)
|
||
|
||
BIN_M_ResetPointer(
|
||
HIE_fn_p_stGetSuperObjectLinkTable(),
|
||
p_stCur->hPointerOfSectorSO,
|
||
HIE_tdxHandleToSuperObject)
|
||
|
||
BIN_SCT_M_AddPtr(
|
||
SECT_tdstListOfSOSectorsInSoundInteraction)
|
||
}
|
||
}
|
||
|
||
{
|
||
SND_tdstBlockEvent *p_stSoundEvent;
|
||
BIN_SCT_M_NewLST2(
|
||
Static,
|
||
&hSCT->stListOfSoundEvent,
|
||
SCT_tdxHandleOfLstSoundEvent)
|
||
|
||
for (iCnt = 0; iCnt < iNb; iCnt++)
|
||
{
|
||
BIN_SCT_M_GetPtr(
|
||
SCT_tdstListOfSoundEvent)
|
||
|
||
BIN_SCT_M_AddLST2(
|
||
Static,
|
||
&hSCT->stListOfSoundEvent,
|
||
SCT_tdxHandleOfLstSoundEvent)
|
||
|
||
BIN_M_ResetPointer(
|
||
HIE_fn_p_stGetSuperObjectLinkTable(),
|
||
p_stCur->hPointerOfSectorSO,
|
||
HIE_tdxHandleToSuperObject)
|
||
|
||
p_stSoundEvent = SND_fn_pGetBinEvent((unsigned long)p_stCur->uSoundEvent.Id);
|
||
p_stCur->uSoundEvent.pstPtr = p_stSoundEvent;
|
||
|
||
BIN_SCT_M_AddPtr(
|
||
SCT_tdstListOfSoundEvent)
|
||
}
|
||
}
|
||
}
|
||
*/
|
||
|
||
|
||
|
||
/*
|
||
structures dans SECTOR.H
|
||
fonctions dans SECTEXT.H (public)
|
||
*/
|
||
|
||
|
||
/*
|
||
void SCT_fn_vResolveSectorBinaryBloc(
|
||
unsigned long _ulStructAdr)
|
||
{
|
||
SECT_tdxHandleOfSectorObject hSCT = (SECT_tdxHandleOfSectorObject) _ulStructAdr;
|
||
unsigned long ulAddress;
|
||
int iCnt;
|
||
|
||
|
||
{ SECT_tdxHandleOfElementLstCharacter hCur;
|
||
|
||
BIN_SECT_M_ForEachCharListInSector(hSCT, hCur, iCnt)
|
||
{
|
||
BIN_M_ResetPointerSuperObject2ndPass(
|
||
HIE_fn_p_stGetSuperObjectLinkTable(),
|
||
hCur->hPointerOfCharacter,
|
||
HIE_tdxHandleToSuperObject)
|
||
}
|
||
}
|
||
|
||
{ SECT_tdxHandleOfElementLstGraphicInteraction hCur;
|
||
|
||
BIN_SECT_M_ForEachGraphicNodeInGraphicInteractionList(hSCT, hCur, iCnt)
|
||
{
|
||
BIN_M_ResetPointerSuperObject2ndPass(
|
||
HIE_fn_p_stGetSuperObjectLinkTable(),
|
||
hCur->hPointerOfSectorSO,
|
||
HIE_tdxHandleToSuperObject)
|
||
}
|
||
}
|
||
|
||
{ SECT_tdxHandleOfElementLstCollisionInteraction hCur;
|
||
|
||
BIN_SECT_M_ForEachCollisionNodeInCollisionInteractionList(hSCT, hCur, iCnt)
|
||
{
|
||
BIN_M_ResetPointerSuperObject2ndPass(
|
||
HIE_fn_p_stGetSuperObjectLinkTable(),
|
||
hCur->hPointerOfSectorSO,
|
||
HIE_tdxHandleToSuperObject)
|
||
}
|
||
}
|
||
|
||
{ SECT_tdxHandleOfElementLstActivityInteraction hCur;
|
||
|
||
BIN_SECT_M_ForEachActivityNodeInActivityInteractionList(hSCT, hCur, iCnt)
|
||
{
|
||
BIN_M_ResetPointerSuperObject2ndPass(
|
||
HIE_fn_p_stGetSuperObjectLinkTable(),
|
||
hCur->hPointerOfSectorSO,
|
||
HIE_tdxHandleToSuperObject)
|
||
}
|
||
}
|
||
|
||
{ SECT_tdxHandleOfElementLstSoundInteraction hCur;
|
||
|
||
BIN_SECT_M_ForEachSoundNodeInSoundInteractionList(hSCT, hCur, iCnt)
|
||
{
|
||
BIN_M_ResetPointerSuperObject2ndPass(
|
||
HIE_fn_p_stGetSuperObjectLinkTable(),
|
||
hCur->hPointerOfSectorSO,
|
||
HIE_tdxHandleToSuperObject)
|
||
}
|
||
}
|
||
|
||
{ SCT_tdxHandleOfLstSoundEvent hCur;
|
||
|
||
BIN_SCT_M_ForEachSoundEventNodeInSoundEventList(hSCT, hCur, iCnt)
|
||
{
|
||
BIN_M_ResetPointerSuperObject2ndPass(
|
||
HIE_fn_p_stGetSuperObjectLinkTable(),
|
||
hCur->hPointerOfSectorSO,
|
||
HIE_tdxHandleToSuperObject)
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
|
||
void SCT_fn_vReadAllSectorBinaryBlocs(
|
||
char *_szBinaryFileName)
|
||
{
|
||
BIN_fn_vReadDataFromLinkTable(
|
||
SECT_fn_pGetLinkTable(),
|
||
SCT_fn_ulReadSectorBinaryBloc,
|
||
SCT_C_MAXBINSIZE,
|
||
_szBinaryFileName);
|
||
}
|
||
|
||
char* SCT_fn_p_cGenericAllocationFunction(unsigned long _ulSize)
|
||
{
|
||
char* p_cBuffer;
|
||
GEO_M_CPAMalloc(p_cBuffer,char*,_ulSize,E_uwGEONotEnoughtMemory);
|
||
return p_cBuffer;
|
||
}
|
||
|
||
void SCT_fn_vReadAllSectorBinaryBlocs2(char *_szBinaryFileName)
|
||
{
|
||
BIN_fn_vReadDataFromLinkTableWithoutAllocation(SECT_fn_pGetLinkTable(),
|
||
SCT_fn_vResolveSectorBinaryBloc2,
|
||
SCT_C_MAXBINSIZE,
|
||
_szBinaryFileName,
|
||
SCT_fn_p_cGenericAllocationFunction);
|
||
}
|
||
|
||
void SCT_fn_vResolveAllSectorBinaryBlocs(
|
||
void)
|
||
{
|
||
BIN_fn_vResolvePointersFromLinkTable(
|
||
SECT_fn_pGetLinkTable(),
|
||
SCT_fn_vResolveSectorBinaryBloc);
|
||
}
|
||
*/
|
||
/*
|
||
BEGIN OS 06-Mar-98
|
||
Callbacks for bin files.
|
||
*/
|
||
|
||
/*
|
||
NOTE : the 'Sector' section has only subsections so I've commented out some code converted from previous version.
|
||
*/
|
||
/*
|
||
SCR_tde_Anl_ReturnValue SECT_fn_xLoadBinSector(SCR_tdst_File_Description *_p_stFile, char *_p_szName, char *_ap_szParams[], SCR_tde_Anl_Action _eAction)
|
||
{
|
||
SECT_tdxHandleOfSectorObject hSector;
|
||
SECT_tdxHandleOfSectorObject hNewSector;
|
||
|
||
if( _eAction != SCR_EA_Anl_BeginSection )
|
||
{
|
||
//do whatever ...
|
||
return SCR_ERV_Anl_NormalReturn;
|
||
}
|
||
|
||
SCR_fn_v_Bin_BeginSection(_p_stFile);
|
||
|
||
|
||
VIG_fn_vAddToProgressBar(1);
|
||
|
||
|
||
// new Sector for that section
|
||
hSector = hNewSector=SECT_fn_hCreateSector();
|
||
//I return my own handle
|
||
SCR_M_RdL0_SetSectionLong (0,0,hNewSector);
|
||
SCR_M_RdL0_SetContextLong (0,0,hNewSector);
|
||
// LinkTable management
|
||
{
|
||
char a255_cLinkKey[255];
|
||
|
||
SCR_M_RdL0_ComputeOpenSectionNameR(0,a255_cLinkKey);
|
||
|
||
// JO 09/12/97
|
||
#if (defined(_DEBUG) || defined(USE_PROFILER))
|
||
strcpy(hNewSector->szSectorName,a255_cLinkKey);
|
||
#endif /* _DEBUG || USE_PROFILER
|
||
|
||
SCR_M_v_Link_SetAdditionalLong(
|
||
SCR_fnp_st_Link_SetValue(&SECT_stLinkTable,
|
||
a255_cLinkKey,(unsigned long)hNewSector),
|
||
1,
|
||
strlen(a255_cLinkKey)-strlen(SCR_M_RdL0_GetCompleteSectionNameR(0)));
|
||
}
|
||
|
||
|
||
|
||
SCR_fn_v_Bin_EndSection(_p_stFile);
|
||
|
||
return SCR_ERV_Anl_NormalReturn;
|
||
}
|
||
*/
|
||
/*-----------------------------------------*/
|
||
/*
|
||
SCR_tde_Anl_ReturnValue SCT_fn_xLoadBinSectorsLink(SCR_tdst_File_Description *_p_stFile, char *_p_szName, char *_ap_szParams[], SCR_tde_Anl_Action _eAction)
|
||
{
|
||
SECT_tdxHandleOfSectorObject hSector;
|
||
SECT_tdxHandleOfElementLstGraphicInteraction hGElement;
|
||
SECT_tdxHandleOfElementLstCollisionInteraction hColElement;
|
||
SECT_tdxHandleOfElementLstActivityInteraction hActElement;
|
||
SECT_tdxHandleOfElementLstSoundInteraction hSoundElement;
|
||
SCT_tdxHandleOfLstSoundEvent hSoundEventElement;
|
||
SCR_tdst_Cxt_Values *p_stValues ;
|
||
char szP0[MAX_PATH], szP1[MAX_PATH], chTag;
|
||
unsigned short usQ, i;
|
||
|
||
|
||
if( _eAction != SCR_EA_Anl_BeginSection )
|
||
{
|
||
//do whatever ...
|
||
return SCR_ERV_Anl_NormalReturn;
|
||
}
|
||
|
||
SCR_fn_v_Bin_BeginSection(_p_stFile);
|
||
|
||
// Get the handle of the section
|
||
SCR_M_RdL0_GetContextLong(-1,0,SECT_tdxHandleOfSectorObject,hSector);
|
||
|
||
do{
|
||
chTag=SCR_fn_ch_Bin_GetCHAR( _p_stFile );
|
||
switch (chTag)
|
||
{
|
||
case 0: //AddLstActivity
|
||
{
|
||
usQ = SCR_fn_us_Bin_GetUSHORT( _p_stFile );
|
||
for (i=0; i<usQ; i++)
|
||
{
|
||
SCR_fn_sz_Bin_GetREFERENCE2Buffer( _p_stFile, szP0 );
|
||
p_stValues = SCR_fnp_st_Bin_GetREFERENCE( szP0 );
|
||
|
||
if(p_stValues)
|
||
{
|
||
hActElement=SECT_fn_hCreateElementLstActivityInteraction();
|
||
SECT_fn_vSetSectorPointedElementLSTActivityInt(hActElement,
|
||
(HIE_tdxHandleToSuperObject)SCR_M_ul_RdL0_ExtractLongValue(p_stValues,0));
|
||
LST2_M_StaticAddTail(&(hSector->stListOfSectorsInActivityInteraction),hActElement);
|
||
}
|
||
|
||
}
|
||
|
||
|
||
}
|
||
break;
|
||
case 1: //AddLstGraphic
|
||
{
|
||
usQ = SCR_fn_us_Bin_GetUSHORT( _p_stFile );
|
||
for (i=0; i<usQ; i++)
|
||
{
|
||
SCR_fn_sz_Bin_GetREFERENCE2Buffer( _p_stFile, szP0 );
|
||
p_stValues = SCR_fnp_st_Bin_GetREFERENCE( szP0 );
|
||
|
||
if(p_stValues)
|
||
{
|
||
hGElement=SECT_fn_hCreateElementLstGraphicInteraction();
|
||
SECT_fn_vSetSectorPointedElementLSTGraphicInt(hGElement,
|
||
(HIE_tdxHandleToSuperObject)SCR_M_ul_RdL0_ExtractLongValue(p_stValues,0));
|
||
SECT_fn_vSetLevelElementLSTGraphicInt(hGElement, SCR_fn_s_Bin_GetSHORT( _p_stFile ));
|
||
LST2_M_StaticAddTail(&(hSector->stListOfSectorsInGraphicInteraction),hGElement);
|
||
}
|
||
|
||
}
|
||
|
||
|
||
}
|
||
break;
|
||
case 2: //AddLstCollision
|
||
{
|
||
usQ = SCR_fn_us_Bin_GetUSHORT( _p_stFile );
|
||
for (i=0; i<usQ; i++)
|
||
{
|
||
SCR_fn_sz_Bin_GetREFERENCE2Buffer( _p_stFile, szP0 );
|
||
p_stValues = SCR_fnp_st_Bin_GetREFERENCE( szP0 );
|
||
|
||
|
||
if(p_stValues)
|
||
{
|
||
hColElement=SECT_fn_hCreateElementLstCollisionInteraction();
|
||
SECT_fn_vSetSectorPointedElementLSTCollisionInt(hColElement,
|
||
(HIE_tdxHandleToSuperObject)SCR_M_ul_RdL0_ExtractLongValue(p_stValues,0));
|
||
LST2_M_StaticAddTail(&(hSector->stListOfSectorsInCollisionInteraction),hColElement);
|
||
}
|
||
|
||
}
|
||
|
||
|
||
}
|
||
break;
|
||
case 3: //AddLstSound
|
||
{
|
||
usQ = SCR_fn_us_Bin_GetUSHORT( _p_stFile );
|
||
for (i=0; i<usQ; i++)
|
||
{
|
||
SCR_fn_sz_Bin_GetREFERENCE2Buffer( _p_stFile, szP0 );
|
||
p_stValues = SCR_fnp_st_Bin_GetREFERENCE( szP0 );
|
||
|
||
if(p_stValues)
|
||
{
|
||
hSoundElement=SECT_fn_hCreateElementLstSoundInteraction();
|
||
SECT_fn_vSetSectorPointedElementLSTSoundInt(hSoundElement,
|
||
(HIE_tdxHandleToSuperObject)SCR_M_ul_RdL0_ExtractLongValue(p_stValues,0));
|
||
SCT_fn_vSetVolumeLSTSoundInt(hSoundElement, SCR_fn_l_Bin_GetLONG( _p_stFile ));
|
||
LST2_M_StaticAddTail(&(hSector->stListOfSectorsInSoundInteraction),hSoundElement);
|
||
}
|
||
|
||
|
||
}
|
||
|
||
}
|
||
break;
|
||
case 4: //AddLstSoundEvent
|
||
{
|
||
usQ = SCR_fn_us_Bin_GetUSHORT( _p_stFile );
|
||
for (i=0; i<usQ; i++)
|
||
{
|
||
SCR_fn_sz_Bin_GetREFERENCE2Buffer( _p_stFile, szP0 );
|
||
if (strcmp(szP0,"FromAllSectors")==0 )
|
||
{
|
||
hSoundEventElement = SCT_fn_hCreateElementLstSoundEvent();
|
||
SCT_fn_vSetSectorPointedElementLSTSoundEvent(hSoundEventElement,NULL);
|
||
SCR_fn_sz_Bin_GetREFERENCE2Buffer( _p_stFile, szP1 );
|
||
p_stValues = SCR_fnp_st_Bin_GetREFERENCE( szP1 );
|
||
if( p_stValues )
|
||
{
|
||
if (SNA_fn_ucGetLoadType()==SNA_SAVE_SNAPSHOT) // MR0110
|
||
SNA_fn_vWriteSoundEntryInSoundTableFile(SND_fn_ulGetEventBinIdFromPointer((SND_tdxHandleToSoundEvent)SCR_M_ul_RdL0_ExtractLongValue(p_stValues,0)) ,(unsigned long)&(hSoundEventElement->uSoundEvent.pstPtr));
|
||
SCT_fn_vSetEventListElementLSTSoundEvent(hSoundEventElement,(SND_tdstBlockEvent *)SCR_M_ul_RdL0_ExtractLongValue(p_stValues,0));
|
||
}
|
||
LST2_M_StaticAddTail(&(hSector->stListOfSoundEvent),hSoundEventElement);
|
||
}
|
||
else
|
||
{
|
||
p_stValues = SCR_fnp_st_Bin_GetREFERENCE( szP0 );
|
||
|
||
if(p_stValues)
|
||
{
|
||
hSoundEventElement=SCT_fn_hCreateElementLstSoundEvent();
|
||
SCT_fn_vSetSectorPointedElementLSTSoundEvent(hSoundEventElement,
|
||
(HIE_tdxHandleToSuperObject)SCR_M_ul_RdL0_ExtractLongValue( p_stValues, 0 ));
|
||
SCR_fn_sz_Bin_GetREFERENCE2Buffer( _p_stFile, szP1 );
|
||
p_stValues = SCR_fnp_st_Bin_GetREFERENCE( szP1 );
|
||
if(p_stValues)
|
||
{
|
||
if (SNA_fn_ucGetLoadType()==SNA_SAVE_SNAPSHOT) // MR0110
|
||
SNA_fn_vWriteSoundEntryInSoundTableFile(SND_fn_ulGetEventBinIdFromPointer((SND_tdxHandleToSoundEvent)SCR_M_ul_RdL0_ExtractLongValue(p_stValues,0)) ,(unsigned long)&(hSoundEventElement->uSoundEvent.pstPtr));
|
||
SCT_fn_vSetEventListElementLSTSoundEvent(hSoundEventElement,(SND_tdstBlockEvent *)SCR_M_ul_RdL0_ExtractLongValue(p_stValues,0));
|
||
}
|
||
LST2_M_StaticAddTail(&(hSector->stListOfSoundEvent),hSoundEventElement);
|
||
}
|
||
|
||
}
|
||
|
||
}
|
||
|
||
|
||
}
|
||
break;
|
||
case 7: //Virtual
|
||
{
|
||
|
||
unsigned short usVirtual;
|
||
|
||
usVirtual = SCR_fn_us_Bin_GetUSHORT( _p_stFile );
|
||
if (usVirtual > 0)
|
||
SECT_fn_vSetOnVirtualSector(hSector);
|
||
|
||
}
|
||
break;
|
||
}
|
||
}while (chTag!=-1);
|
||
|
||
SCR_fn_v_Bin_EndSection(_p_stFile);
|
||
|
||
return SCR_ERV_Anl_NormalReturn;
|
||
}
|
||
*/
|
||
|
||
/*-----------------------------------------*/
|
||
|
||
/*
|
||
SCR_tde_Anl_ReturnValue SCT_fn_xLoadBinSectorBorder(SCR_tdst_File_Description *_p_stFile, char *_p_szName, char *_ap_szParams[], SCR_tde_Anl_Action _eAction)
|
||
{
|
||
SECT_tdxHandleOfSectorObject hSector;
|
||
MTH3D_tdstVector stMaxPoint, stMinPoint;
|
||
float xZ;
|
||
float f0, f1, f2;
|
||
char chTag;
|
||
|
||
if( _eAction != SCR_EA_Anl_BeginSection )
|
||
{
|
||
//do whatever ...
|
||
return SCR_ERV_Anl_NormalReturn;
|
||
}
|
||
|
||
SCR_fn_v_Bin_BeginSection(_p_stFile);
|
||
|
||
SCR_M_RdL0_GetContextLong(-1,0,SECT_tdxHandleOfSectorObject,hSector);
|
||
|
||
do{
|
||
chTag=SCR_fn_ch_Bin_GetCHAR( _p_stFile );
|
||
switch (chTag)
|
||
{
|
||
case 0: //ZmaxOfBorder
|
||
{
|
||
xZ = SCR_fn_f_Bin_GetFLOAT( _p_stFile );
|
||
|
||
stMaxPoint.xX = stMaxPoint.xY = MTH_C_InfinitMinus;
|
||
stMaxPoint.xZ = xZ;
|
||
SECT_fn_vSetMaxPointInBorder(hSector, &stMaxPoint);
|
||
|
||
#ifdef ACTIVE_EDITOR
|
||
SECT_fn_vSetZmaxOfBorder(hSector, xZ);
|
||
#endif //ACTIVE_EDITOR
|
||
|
||
}
|
||
break;
|
||
case 1: //MinPointOfBorder
|
||
{
|
||
f0 = SCR_fn_f_Bin_GetFLOAT( _p_stFile );
|
||
f1 = SCR_fn_f_Bin_GetFLOAT( _p_stFile );
|
||
f2 = SCR_fn_f_Bin_GetFLOAT( _p_stFile );
|
||
|
||
MTH3D_M_vSetVectorElements(&stMinPoint, f0, f1, f2);
|
||
SECT_fn_vSetMinPointInBorder(hSector, &stMinPoint);
|
||
|
||
}
|
||
break;
|
||
case 2: //MaxPointOfBorder
|
||
{
|
||
f0 = SCR_fn_f_Bin_GetFLOAT( _p_stFile );
|
||
f1 = SCR_fn_f_Bin_GetFLOAT( _p_stFile );
|
||
f2 = SCR_fn_f_Bin_GetFLOAT( _p_stFile );
|
||
|
||
MTH3D_M_vSetVectorElements(&stMaxPoint, f0, f1, f2);
|
||
SECT_fn_vSetMaxPointInBorder(hSector, &stMaxPoint);
|
||
|
||
}
|
||
break;
|
||
}
|
||
}while (chTag!=-1);
|
||
|
||
SCR_fn_v_Bin_EndSection(_p_stFile);
|
||
|
||
return SCR_ERV_Anl_NormalReturn;
|
||
}
|
||
*/
|
||
/*-----------------------------------------*/
|
||
/*
|
||
SCR_tde_Anl_ReturnValue SCT_fn_xLoadBinStaticLightsSector(SCR_tdst_File_Description *_p_stFile, char *_p_szName, char *_ap_szParams[], SCR_tde_Anl_Action _eAction)
|
||
{
|
||
SECT_tdxHandleOfSectorObject hSector;
|
||
SECT_tdxHandleOfElementLstStaticLights hStaticLightsElement;
|
||
SCR_tdst_Cxt_Values *p_stValues ;
|
||
char szP0[MAX_PATH];
|
||
unsigned short usQ, i;
|
||
|
||
|
||
if( _eAction != SCR_EA_Anl_BeginSection )
|
||
{
|
||
//do whatever ...
|
||
return SCR_ERV_Anl_NormalReturn;
|
||
}
|
||
|
||
SCR_fn_v_Bin_BeginSection(_p_stFile);
|
||
|
||
// Get the handle of the section
|
||
SCR_M_RdL0_GetContextLong(-1,0,SECT_tdxHandleOfSectorObject,hSector);
|
||
|
||
usQ = SCR_fn_us_Bin_GetUSHORT( _p_stFile );
|
||
|
||
for (i = 0; i < usQ; i++)
|
||
{
|
||
SCR_fn_sz_Bin_GetREFERENCE2Buffer( _p_stFile, szP0 );
|
||
p_stValues = SCR_fnp_st_Bin_GetREFERENCE( szP0 );
|
||
if(p_stValues)
|
||
{
|
||
hStaticLightsElement=SECT_fn_hCreateElementLstStaticLights();
|
||
SECT_fn_vSetHandleOfLightsInStaticLightsList(hStaticLightsElement,(GLI_tdxHandleToLight)SCR_M_ul_RdL0_ExtractLongValue(p_stValues,0));
|
||
LST2_M_StaticAddTail(&(hSector->stListOfStaticLights),hStaticLightsElement);
|
||
}
|
||
}
|
||
|
||
SCR_fn_v_Bin_EndSection(_p_stFile);
|
||
|
||
return SCR_ERV_Anl_NormalReturn;
|
||
}
|
||
*/
|
||
|