235 lines
8.0 KiB
C
235 lines
8.0 KiB
C
/*=========================================================================
|
|
* Model.c : This module contain all models functions
|
|
* This is a part of the Game project.
|
|
*
|
|
* Version 1.0
|
|
* Creation date 16/10/96
|
|
* Revision date
|
|
*
|
|
* That file needs to be compatible for all platforms.
|
|
*
|
|
* (c) Ubi Studios 1996
|
|
*=======================================================================*/
|
|
/*
|
|
*=======================================================================
|
|
Modifications: New LST2_M_??? Macros / Michaël / 070297
|
|
*=======================================================================*/
|
|
|
|
/*ANNECY BBB 10/03/98 {*/
|
|
#define D_ObjsTbls_Define
|
|
/*ENDANNECY BBB 10/03/98 }*/
|
|
|
|
#include "ToolsCPA.h"
|
|
|
|
#include "Options/Options.h"
|
|
#include "Macros.h"
|
|
|
|
#include "Actions/AllActs.h"
|
|
|
|
#include "Structur/EngMode.h"
|
|
#include "Structur/ErrGame.h"
|
|
#include "Structur/MemGame.h"
|
|
#include "Structur/Objects.h"
|
|
#include "Structur/StdObjSt.h"
|
|
|
|
#include "Family.h"
|
|
#include "LoadFml.h"
|
|
#include "ZeMem.h"
|
|
|
|
#include "Structur/ObjsTbls.h"
|
|
|
|
/*-----------------------------------------------------------------------------
|
|
* Description : Desinitialize the family's structure (when the map is finish)
|
|
*-----------------------------------------------------------------------------
|
|
* Input : void
|
|
* Output : void
|
|
*-----------------------------------------------------------------------------
|
|
* Creation date : 16/10/96 Author : Francois
|
|
*-----------------------------------------------------------------------------
|
|
* Modification date : Modification Author :
|
|
* Modifications :
|
|
*---------------------------------------------------------------------------*/
|
|
|
|
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC 04/06/99 */
|
|
void fn_vLastDesinitFamilyStructure()
|
|
{
|
|
struct tdstFamilyList_ *p_stThisFamily,*p_stNextFamily;
|
|
long i;
|
|
|
|
LST2_M_DynamicForEachMovingElementOf(&g_stEngineStructure.hFamilyList,p_stThisFamily,p_stNextFamily,i)
|
|
{
|
|
LST2_M_DynamicIsolate(p_stThisFamily);
|
|
}
|
|
}
|
|
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC 04/06/99 */
|
|
|
|
|
|
|
|
void fn_vDesinitFamilyStructureForPriority(unsigned char ucPriority)
|
|
{
|
|
struct tdstFamilyList_ *p_stThisFamily,*p_stNextFamily;
|
|
long i;
|
|
|
|
LST2_M_DynamicForEachMovingElementOf(&g_stEngineStructure.hFamilyList,p_stThisFamily,p_stNextFamily,i)
|
|
{
|
|
if(p_stThisFamily->ucPriority==GAM_g_ucHLMMemoryBlock)
|
|
LST2_M_DynamicIsolate(p_stThisFamily);
|
|
}
|
|
}
|
|
|
|
|
|
/*-----------------------------------------------------------------------------
|
|
* Description : find or add a model
|
|
*-----------------------------------------------------------------------------
|
|
* Input : Family type
|
|
* Output : Family's pointer
|
|
*-----------------------------------------------------------------------------
|
|
* Creation date : 16/10/96 Author : Francois
|
|
*-----------------------------------------------------------------------------
|
|
* Modification date : Modification Author :
|
|
* Modifications :
|
|
*---------------------------------------------------------------------------*/
|
|
|
|
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
|
tdxHandleToFamilyList fn_hFindOrAddFAmily(tdObjectType otFamilyType)
|
|
{
|
|
struct tdstFamilyList_ *p_stFamily = NULL;
|
|
|
|
p_stFamily = fn_hFindFamily(otFamilyType);
|
|
|
|
/*#ifndef BIN_LoadBin // In binary mode all the families are loaded with another method*/
|
|
if (p_stFamily==NULL)
|
|
{
|
|
MMG_fn_vAddMemoryInfo( MMG_C_lTypeFamily , MMG_C_lSubTypeFamily , 0 );
|
|
p_stFamily = (struct tdstFamilyList_*)M_p_GameMallocInHLM(sizeof(struct tdstFamilyList_));
|
|
p_stFamily->otObjectFamilyType = otFamilyType;
|
|
|
|
fn_vInitObjectsTablesList(p_stFamily); /* tmp SD Gizmo 14/04/97*/
|
|
|
|
/*fn_vAllocateOneMoreObjectsTablesInList(p_stFamily,100);// tmp SD Gizmo 14/04/97*/
|
|
|
|
fn_vLoadFamily(p_stFamily);
|
|
LST2_M_DynamicAddTail(&g_stEngineStructure.hFamilyList,p_stFamily);
|
|
p_stFamily->ucPriority = GAM_g_ucHLMMemoryBlock;
|
|
}
|
|
/*#endif /*BIN_LoadBin */
|
|
|
|
return(p_stFamily);
|
|
}
|
|
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
|
|
|
|
|
/*-----------------------------------------------------------------------------
|
|
* Description : find a family
|
|
*-----------------------------------------------------------------------------
|
|
* Input : Family type
|
|
* Output : Family's pointer (NULL if not found)
|
|
*-----------------------------------------------------------------------------
|
|
* Creation date : 16/10/96 Author : Francois
|
|
*-----------------------------------------------------------------------------
|
|
* Modification date : Modification Author :
|
|
* Modifications :
|
|
*---------------------------------------------------------------------------*/
|
|
|
|
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
|
tdxHandleToFamilyList fn_hFindFamily(tdObjectType otFamilyType)
|
|
{
|
|
struct tdstFamilyList_ *p_stThisFamily;
|
|
long i;
|
|
|
|
LST2_M_DynamicForEachElementOf(&g_stEngineStructure.hFamilyList,p_stThisFamily,i)
|
|
{
|
|
if (p_stThisFamily->otObjectFamilyType==otFamilyType)
|
|
return(p_stThisFamily);
|
|
}
|
|
return(NULL);
|
|
}
|
|
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
|
|
|
|
|
|
|
GEO_tdxHandleToBoundingSphere fn_vGetBoundingVolumeOfFamily(tdxHandleToFamilyList h_Family)
|
|
{
|
|
return(h_Family->hBoundingSphere);
|
|
}
|
|
|
|
void fn_vSetBoundingVolumeOfFamily(tdxHandleToFamilyList h_Family,GEO_tdxHandleToBoundingSphere hBV)
|
|
{
|
|
h_Family->hBoundingSphere = hBV;
|
|
}
|
|
|
|
#if defined (ACTIVE_EDITOR)
|
|
ACP_tdxHandleOfObject fn_vGetGeometricSphereOfFamily(tdxHandleToFamilyList h_Family)
|
|
{
|
|
return(h_Family->hGeometricSphere);
|
|
}
|
|
|
|
void fn_vSetGeometricSphereOfFamily(tdxHandleToFamilyList h_Family, ACP_tdxHandleOfObject hGS)
|
|
{
|
|
h_Family->hGeometricSphere = hGS;
|
|
}
|
|
#endif /*ACTIVE_EDITOR*/
|
|
|
|
/* debut GIZMO NEW 07/06/97*/
|
|
tdxHandleToObjectsTablesList fn_vGetDefaultObjectsTableOfFamily(tdxHandleToFamilyList h_Family)
|
|
{
|
|
return(h_Family->h_DefaultObjectsTable);
|
|
}
|
|
|
|
void fn_vSetDefaultObjectsTableOfFamily(tdxHandleToFamilyList h_Family,tdxHandleToObjectsTablesList h_DefaultObjectsTable)
|
|
{
|
|
h_Family->h_DefaultObjectsTable = h_DefaultObjectsTable;
|
|
}
|
|
/* fin GIZMO NEW 07/06/97*/
|
|
|
|
/*ANNECY BBB {*/
|
|
|
|
tdxHandleToObjectsTablesList fn_hGetObjectsTableOfFamilyByIndex(tdxHandleToFamilyList _hFamily, ACP_tdxIndex _xIndex)
|
|
{
|
|
ACP_tdxIndex xForMacro = 0;
|
|
tdxHandleToObjectsTablesList hTable;
|
|
|
|
LST2_M_StaticGetElementNumber(&(_hFamily->hForObjectsTablesList), hTable, _xIndex, xForMacro);
|
|
|
|
return hTable;
|
|
}
|
|
/*ANNECY BBB }*/
|
|
|
|
|
|
#ifdef _TMP_FAMILY_HANDLE_
|
|
/*-----------------------------------------------------------------------------
|
|
* Description : Add a New State To StateArray Of a Family
|
|
*-----------------------------------------------------------------------------
|
|
* Input : Handle to Family, Handle to State
|
|
* Output : Nothing
|
|
*-----------------------------------------------------------------------------
|
|
* Creation date : 27/02/97 Author : Sebastien DAVID (Gizmo)
|
|
*-----------------------------------------------------------------------------
|
|
* Modification date : Modification Author :
|
|
* Modifications :
|
|
*---------------------------------------------------------------------------*/
|
|
void fn_vAddNewStateToStateArrayOfFamily(tdxHandleToFamily h_Family, tdxHandleToState h_State)
|
|
{
|
|
LST2_M_StaticAddTail(&h_Family->hForStateArray, h_State);
|
|
}
|
|
|
|
|
|
/*-----------------------------------------------------------------------------
|
|
* Description : Remove a State From StateArray Of a Family
|
|
*-----------------------------------------------------------------------------
|
|
* Input : Handle to Family, Handle to State
|
|
* Output : Nothing
|
|
*-----------------------------------------------------------------------------
|
|
* Creation date : 27/02/97 Author : Sebastien DAVID (Gizmo)
|
|
*-----------------------------------------------------------------------------
|
|
* Modification date : Modification Author :
|
|
* Modifications :
|
|
*---------------------------------------------------------------------------*/
|
|
void fn_vRemoveStateFromStateArrayOfFamily(tdxHandleToState h_State)
|
|
{
|
|
LST2_M_StaticAddTail(&h_Family->hForStateArray, h_State);
|
|
}
|
|
#endif
|
|
|
|
|