/* (c) Ubi R&D 1997*/
/* See Alain Robin for any comment or question*/
 
/****************************************************************************/
/* INCLUDES                                                                 */
/****************************************************************************/
#include "acp_base.h"
#include "cpa_std.h"
 
/*
#define BOOL ACP_tdxBool
*/
 
#include "SCR.h"
/*#include "BIN.h"*/
#include "DPT.h"
#include "SPO/Specif/HieLoad.h"
#include "GEO/GeoObj.h"
#include "GLI/LinkTab.h"
#include "GEO/LoadBin.h"
#include "Geo/GeoMem.h"
 
/****************************************************************************/
/* GLOBAL VARIABLES                                                         */
/****************************************************************************/
/*
ACP_tdxBool g_bUseMob=TRUE;
char* GEO_g_p_cLoadBuffer=NULL;
extern SCR_tdst_Link_Table stLinkTableOfGeometric;
extern ACP_tdxBool g_bUseBinaryData;
DWORD dwTotal2=0; // For Benchmark
*/
 
/*----------------------------------------------------------------------------
//  Description : GEO_fn_p_stLoadIndexedTriangle
//  Loads an indexed triangle with script  file
------------------------------------------------------------------------------
//  Methods : Nothing to say
------------------------------------------------------------------------------
//  Input :  _szSectionName
//  Output : The pointer to the indexed triangle
------------------------------------------------------------------------------
//  Creation date : Aug 97					Author: Alain Robin
------------------------------------------------------------------------------
//  Modifications :	
//  Modification date :						Modification author : 
----------------------------------------------------------------------------*/
GEO_tdstElementIndexedTriangles* GEO_fn_p_stLoadIndexedTriangle(char* _szSectionName)
{
	SCR_tdst_Cxt_Values *p_stValues ;
	SCR_tdst_Link_Value *p_stLinkValue;
	unsigned long ulResult;
    unsigned int uiPos;
 
	uiPos = 0;
	SCR_M_DyAr_GetNextElement(SCR_tdst_Link_Value, uiPos, p_stLinkValue,SCR_M_st_Link_GetDynamicArray(GLI_p_stGetLinkTableOfElementIndexedTriangle()));
	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(GLI_p_stGetLinkTableOfElementIndexedTriangle()));
	}
 
/*	p_stLinkValue=BIN_fn_p_stSearchShortKey(GLI_p_stGetLinkTableOfElementIndexedTriangle(),
											_szSectionName);*/
	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 (GEO_tdstElementIndexedTriangles*)ulResult;
		}
		else
			return NULL;
	}
	else return (GEO_tdstElementIndexedTriangles*)SCR_M_ul_Link_GetValue(p_stLinkValue);
}
 
 
 
 
 
 
/*----------------------------------------------------------------------------
//  Description : GEO_fn_hLoadGeometricObject
//  Load a geometric object from an ascii script or from a binary script
------------------------------------------------------------------------------
//  Methods : Nothing to say
------------------------------------------------------------------------------
//  Input :  _szSectionName : Name of the section to load
//  Output : Handle to the geometric element loaded
------------------------------------------------------------------------------
//  Creation date : Jul 97				Author: Alain Robin
------------------------------------------------------------------------------
//  Modifications :	
//  Modification date :						Modification author : 
----------------------------------------------------------------------------*/
ACP_tdxHandleOfObject GEO_fn_hLoadGeometricObject(char* _szSectionName, unsigned short _uwScriptMode)
{
	ACP_tdxHandleOfObject hGeometricObject=NULL;
	SCR_tdst_Cxt_Values *p_stVal=NULL;
 
	/* Use script */
	p_stVal = SCR_fnp_st_RdL0_AnalyseSection(_szSectionName, _uwScriptMode);
	hGeometricObject = (ACP_tdxHandleOfObject)SCR_M_ul_RdL0_ExtractLongValue(p_stVal,0);
 
	return hGeometricObject;
}
