/*========================================================================= * CollSet.h : CollSet's functions * * * CollSet MUST BE REPLACE BY THE HEADER FILENAME * * * Version 1.0 * Creation date 01/10/96 * Revision date * * That file needs to be compatible for all platforms. * * (c) Ubi Studios 1996 *=======================================================================*/ #if !defined(__CollSet_H__) #define __CollSet_H__ /******************************************/ #if _MSC_VER >= 1000 #pragma once #endif /* _MSC_VER >= 1000 */ /******************************************/ #include "GAM/Header.h" #undef EXTERN #undef extern #if !defined(D_CollSet_VariableDefine) #define EXTERN extern #else #define EXTERN #endif /* D_CollSet_VariableDefine */ #if defined(__cplusplus) extern "C" { #endif /* __cplusplus */ /* various parameters set by the collisionning actor, used in the AI of the collided actor*/ #define C_wCollsetNbCollisionVectors 2 #define C_wCollsetNbCollisionReals 2 #if defined(D_CollSet_StructureDefine) typedef struct tdstCollSet_ { ZDX_tdxHandleToZdxList hZddList; ZDX_tdxHandleToZdxList hZdeList; ZDX_tdxHandleToZdxList hZdmList; ZDX_tdxHandleToZdxList hZdrList; ZDX_tdxHandleToCsaList hZddActivationList; ZDX_tdxHandleToCsaList hZdeActivationList; ZDX_tdxHandleToCsaList hZdmActivationList; ZDX_tdxHandleToCsaList hZdrActivationList; /* Only to optimize call to GetCurrentZoneSet function*/ ZDX_tdxHandleToZoneSetList hZddCurrentActivation; ZDX_tdxHandleToZoneSetList hZdeCurrentActivation; ZDX_tdxHandleToZoneSetList hZdrCurrentActivation; ZDX_tdxHandleToZoneSetList hZdmCurrentActivation; #ifdef MAY_BE_SUPPRESSED ZDX_tdxHandleToZdxList hInitialZddList; ZDX_tdxHandleToZdxList hInitialZdeList; ZDX_tdxHandleToZdxList hInitialZdmList; ZDX_tdxHandleToZdxList hInitialZdrList; ZDX_tdxHandleToCsaList hZddInitialActivationList; ZDX_tdxHandleToCsaList hZdeInitialActivationList; ZDX_tdxHandleToCsaList hZdmInitialActivationList; ZDX_tdxHandleToCsaList hZdrInitialActivationList; #endif /* MAY_BE_SUPPRESSED */ unsigned long ulFBZddPriviligedZones; unsigned long ulFBZdePriviligedZones; unsigned long ulFBZdmPriviligedZones; unsigned long ulFBZdrPriviligedZones; unsigned char ucCollComputeFrequency; unsigned char ucCharacterPriority; unsigned char ucCollisionFlag; /* 0 : collide only with map*/ /*ANNECY BBB {*/ /*internal variables for collision parameter management and communication*/ struct stColliderInfo_ { MTH3D_tdstVector a_stColliderVectors[C_wCollsetNbCollisionVectors]; MTH_tdxReal a_xColliderReals[C_wCollsetNbCollisionReals]; unsigned char ucColliderType; /* if a collision is already registered, only higher a higher priority collision may replace it*/ unsigned char ucColliderPriority; /* 0 means that no collision is recorded*/ unsigned char a2_ucUnused[2]; /* alignment*/ } stColliderInfo; /*ANNECY BBB }*/ } tdstCollSet; #endif /* D_CollSet_StructureDefine */ M_BeginDeclareEnumerate(tdeCollSetPrivilegedActivation) edmPriviligedDefault = 0x00, edmPriviligedActivated = 0x01, edmPriviligedDisactivated = 0x02, edmNumberOfPrivilegedActivation M_EndDeclareEnumerate(tdeCollSetPrivilegedActivation,unsigned char) /***********************/ /**** Handle define ****/ /***********************/ typedef struct tdstCollSet_ * MS_tdxHandleToCollSet; /**** Put here all globals variables : ****/ /**** EXTERN typeofvar variable; ****/ /* CollSet Section*/ #define C_SectionCollSetDescription "CollSet" /* CollSet Entries*/ #define C_EntryZdmTable "ZdmTable" #define C_EntryZddTable "ZddTable" #define C_EntryZdeTable "ZdeTable" #define C_EntryZdrTable "ZdrTable" #define C_EntryZddActivationTable "ZddActivationTable" #define C_EntryZdeActivationTable "ZdeActivationTable" #define C_EntryZdmActivationTable "ZdmActivationTable" #define C_Entry_CharacterPriority "CharacterPriority" #define C_EntryZdrActivationTable "ZdrActivationTable" #define C_EntryCollisionFlag "CollisionFlag" #define C_EntryCollComputeFrequency "CollComputeFrequency" /* Macros*/ /* Macros*/ #define CS_M_GetZdxList(ZoneType,p_stCollSet) ((p_stCollSet)->h##ZoneType##List) #define CS_M_SetZdxList(ZoneType,p_stCollSet,p_stZdxList) ((p_stCollSet)->h##ZoneType##List=p_stZdxList) #ifdef MAY_BE_SUPPRESSED #define CS_M_GetZdxInitialList(ZoneType,p_stCollSet) ((p_stCollSet)->hInitial##ZoneType##List) #define CS_M_SetZdxInitialList(ZoneType,p_stCollSet,p_stZdxList) ((p_stCollSet)->hInitial##ZoneType##List=p_stZdxList) #endif /* MAY_BE_SUPPRESSED */ #define CS_M_GetActivationList(ZoneType,p_stCollSet) ((p_stCollSet)->h##ZoneType##ActivationList) #define CS_M_SetActivationList(ZoneType,p_stCollSet,hCsaList) ((p_stCollSet)->h##ZoneType##ActivationList=hCsaList) #ifdef MAY_BE_SUPPRESSED #define CS_M_GetActivationInitialList(ZoneType,p_stCollSet) ((p_stCollSet)->h##ZoneType##InitialActivationList) #define CS_M_SetActivationInitialList(ZoneType,p_stCollSet,hCsaList) ((p_stCollSet)->h##ZoneType##InitialActivationList=hCsaList) #endif /* MAY_BE_SUPPRESSED */ #define CS_M_GetPrivilegedZone(ZoneType,p_stCollSet) ((p_stCollSet)->ulFB##ZoneType##PriviligedZones) #define CS_M_SetPrivilegedZone(ZoneType,p_stCollSet,ulValue) ((p_stCollSet)->ulFB##ZoneType##PriviligedZones=ulValue) #define CS_M_IsAllDefaultPrivilegedZones(ZoneType,p_stCollSet) (CS_M_GetPrivilegedZone(ZoneType,p_stCollSet) == 0) /*******************************/ /**** Base functions define ****/ /*******************************/ #if !defined(U64) extern CPA_EXPORT SCR_tde_Anl_ReturnValue fn_eCollSetScriptCallBack(SCR_tdst_File_Description *_p_stFile,char *_p_szName,char *_ap_szParams[],SCR_tde_Anl_Action _eAction); #endif /* U64 */ /*extern CPA_EXPORT void fn_vCollSetSaveMiniStructure(SCRIPT_tdstSaveFile *p_stFile,struct tdstEngineObject_ *p_stObject);*/ extern CPA_EXPORT unsigned long fn_ulCollSetSizeOf(); extern CPA_EXPORT void fn_vCollSetAlloc(struct tdstEngineObject_ *p_stObject); extern CPA_EXPORT MS_tdxHandleToCollSet fn_h_CollSetRealAlloc(); extern CPA_EXPORT void fn_vCollSetFree(struct tdstEngineObject_ *p_stObject); extern CPA_EXPORT void fn_vCollSetInit(struct tdstEngineObject_ *p_stObject,enum tdeObjectTreeInit_ eObjectInit); extern CPA_EXPORT void fn_vCollSetDesinit(struct tdstEngineObject_ *p_stObject,enum tdeObjectTreeInit_ eObjectInit); extern CPA_EXPORT void fn_vCollSetCopyClone(struct tdstEngineObject_ * _p_stObjectDest,struct tdstEngineObject_ * _p_stObjectSrc); /*********************************/ /**** Access functions define ****/ /*********************************/ /*ANNECY BBB {*/ extern CPA_EXPORT unsigned char fn_ucCollSetGetColliderPriority(MS_tdxHandleToCollSet _hCollSet); extern CPA_EXPORT unsigned char fn_ucCollSetGetColliderPrioritySO (HIE_tdxHandleToSuperObject _hSuperObject); extern CPA_EXPORT unsigned char fn_ucCollSetGetColliderType(MS_tdxHandleToCollSet _hCollSet); extern CPA_EXPORT MTH3D_tdstVector fn_stCollSetGetColliderVector(MS_tdxHandleToCollSet _hCollSet, short _wIndex); extern CPA_EXPORT MTH_tdxReal fn_xCollSetGetColliderReal(MS_tdxHandleToCollSet _hCollSet, short _wIndex); extern CPA_EXPORT void fn_vCollSetSetColliderPriority(MS_tdxHandleToCollSet _hCollSet, unsigned char _ucPri); extern CPA_EXPORT void fn_vCollSetSetColliderType(MS_tdxHandleToCollSet _hCollSet, unsigned char _ucType); extern CPA_EXPORT void fn_vCollSetSetColliderVector(MS_tdxHandleToCollSet _hCollSet, short _wIndex, MTH3D_tdstVector *_p_stVector); extern CPA_EXPORT void fn_vCollSetSetColliderReal(MS_tdxHandleToCollSet _hCollSet, short _wIndex, MTH_tdxReal _xReal); /*ANNECY BBB }*/ /* Functions with Handles*/ extern CPA_EXPORT ZDX_tdxHandleToZdxList CS_fn_hGetZdxList(unsigned char ucZoneType,HIE_tdxHandleToSuperObject hSuperObj); extern CPA_EXPORT void CS_fn_vSetZdxList(unsigned char ucZoneType,HIE_tdxHandleToSuperObject hSuperObj,ZDX_tdxHandleToZdxList); extern CPA_EXPORT ZDX_tdxHandleToCsaList CS_fn_hGetActivationList(unsigned char ucZoneType,HIE_tdxHandleToSuperObject hSuperObj); extern CPA_EXPORT void CS_fn_vSetActivationList(unsigned char ucZoneType,HIE_tdxHandleToSuperObject hSuperObj,ZDX_tdxHandleToCsaList); extern CPA_EXPORT ZDX_tdxHandleToCsaList CS_fn_hGetActivationListInCollSet(unsigned char ucZoneType,MS_tdxHandleToCollSet hCollSet); extern CPA_EXPORT void CS_fn_vSetActivationListInCollSet(unsigned char ucZoneType,MS_tdxHandleToCollSet hCollSet,ZDX_tdxHandleToCsaList); extern CPA_EXPORT unsigned char CS_fn_ucGetCharacterPriority(MS_tdxHandleToCollSet _hCollSet); extern CPA_EXPORT void CS_fn_vSetCharacterPriority(MS_tdxHandleToCollSet hCollSet,unsigned char _ucPriority); extern CPA_EXPORT void fn_vCorrectAllActivationLists(struct tdstEngineObject_ * _p_stObject); /* ANNECY AV {*/ extern CPA_EXPORT unsigned char fn_ucCollSetGetCharacterCollisionFlag(MS_tdxHandleToCollSet _hCollSet); extern CPA_EXPORT void fn_vCollSetSetCharacterCollisionFlag(MS_tdxHandleToCollSet _hCollSet,unsigned char _ucCollisionFlag); extern CPA_EXPORT ACP_tdxBool fn_bCollSetGetCharacterNoCollisionWithMap (MS_tdxHandleToCollSet _hCollSet); extern CPA_EXPORT ACP_tdxBool fn_bCollSetGetCharacterNoCollisionWithProjectile (MS_tdxHandleToCollSet _hCollSet); extern CPA_EXPORT ACP_tdxBool fn_bCollSetGetCharacterNoCollisionWithSecondaryCharacter (MS_tdxHandleToCollSet _hCollSet); extern CPA_EXPORT ACP_tdxBool fn_bCollSetGetCharacterNoCollisionWithMainCharacter (MS_tdxHandleToCollSet _hCollSet); extern CPA_EXPORT ACP_tdxBool fn_bCollSetGetCharacterForceCollisionWhenNotMoving (MS_tdxHandleToCollSet _hCollSet); extern CPA_EXPORT ACP_tdxBool fn_bCollSetGetCharacterNoCollisionWithOtherSectors (MS_tdxHandleToCollSet _hCollSet); extern CPA_EXPORT ACP_tdxBool fn_bCollSetGetCharacterNoCollisionZdeWithProjectile (MS_tdxHandleToCollSet _hCollset); extern CPA_EXPORT void fn_vCollSetSetCharacterNoCollisionWithMap (MS_tdxHandleToCollSet _hCollSet, ACP_tdxBool _bValue); extern CPA_EXPORT void fn_vCollSetSetCharacterNoCollisionWithProjectile (MS_tdxHandleToCollSet _hCollSet, ACP_tdxBool _bValue); extern CPA_EXPORT void fn_vCollSetSetCharacterNoCollisionWithSecondaryCharacter (MS_tdxHandleToCollSet _hCollSet, ACP_tdxBool _bValue); extern CPA_EXPORT void fn_vCollSetSetCharacterNoCollisionWithMainCharacter (MS_tdxHandleToCollSet _hCollSet, ACP_tdxBool _bValue); extern CPA_EXPORT void fn_vCollSetSetCharacterForceCollisionWhenNotMoving (MS_tdxHandleToCollSet _hCollSet, ACP_tdxBool _bValue); extern CPA_EXPORT void fn_vCollSetSetCharacterNoCollisionWithOtherSectors (MS_tdxHandleToCollSet _hCollSet, ACP_tdxBool _bValue); extern CPA_EXPORT void fn_vCollSetSetCharacterNoCollisionZdeWithProjectile (MS_tdxHandleToCollSet _hCollSet, ACP_tdxBool _bValue); /* Same access functions with a super object for the DNM module*/ extern CPA_EXPORT ACP_tdxBool fn_bGetCharacterNoCollisionWithMap (HIE_tdxHandleToSuperObject _hSuperObject); extern CPA_EXPORT ACP_tdxBool fn_bGetCharacterForceCollisionWhenNotMoving (HIE_tdxHandleToSuperObject _hSuperObject); extern CPA_EXPORT void fn_vSetCharacterNoCollisionWithMap (HIE_tdxHandleToSuperObject _hSuperObject, ACP_tdxBool _bValue); /* END ANNECY AV }*/ extern CPA_EXPORT void fn_vCollSetSetCollComputeFrequency(MS_tdxHandleToCollSet _hCollSet,unsigned char _ucFrequency); extern CPA_EXPORT unsigned char fn_ucCollSetGetCollComputeFrequency(MS_tdxHandleToCollSet _hCollSet); extern CPA_EXPORT unsigned char fn_ucCollSetGetCollComputeFrequencySO(HIE_tdxHandleToSuperObject hSuperObj); extern CPA_EXPORT void GAM_fn_vChangeFather(HIE_tdxHandleToSuperObject _hSprObj, HIE_tdxHandleToSuperObject _hNewFather); /* JO 20/10/97 for optimisation*/ void fn_vSetCurrentZoneSetOfType(unsigned char _ucZoneType,MS_tdxHandleToCollSet _hCollSet,ZDX_tdxHandleToZoneSetList _hCurrentZoneSet); ZDX_tdxHandleToZoneSetList fn_hGetCurrentZoneSetOfType(unsigned char _ucZoneType,MS_tdxHandleToCollSet _hCollSet); #ifdef MAY_BE_SUPPRESSED extern CPA_EXPORT ZDX_tdxHandleToZdxList CS_fn_hGetZdxInitialList(unsigned char ucZoneType,HIE_tdxHandleToSuperObject hSuperObj); extern CPA_EXPORT void CS_fn_vSetZdxInitialList(unsigned char ucZoneType,HIE_tdxHandleToSuperObject hSuperObj,ZDX_tdxHandleToZdxList); extern CPA_EXPORT ZDX_tdxHandleToCsaList CS_fn_hGetActivationInitialList(unsigned char ucZoneType,HIE_tdxHandleToSuperObject hSuperObj); extern CPA_EXPORT void CS_fn_vSetActivationInitialList(unsigned char ucZoneType,HIE_tdxHandleToSuperObject hSuperObj,ZDX_tdxHandleToCsaList); extern CPA_EXPORT ZDX_tdxHandleToZdxList CS_fn_hGetZdxInitialListInCollSet(unsigned char ucZoneType,MS_tdxHandleToCollSet hCollSet); extern CPA_EXPORT void CS_fn_vSetZdxInitialListInCollSet(unsigned char ucZoneType,MS_tdxHandleToCollSet hCollSet,ZDX_tdxHandleToZdxList); extern CPA_EXPORT ZDX_tdxHandleToCsaList CS_fn_hGetActivationInitialListInCollSet(unsigned char ucZoneType,MS_tdxHandleToCollSet hCollSet); extern CPA_EXPORT void CS_fn_vSetActivationInitialListInCollSet(unsigned char ucZoneType,MS_tdxHandleToCollSet hCollSet,ZDX_tdxHandleToCsaList); extern CPA_EXPORT ZDX_tdxHandleToZdxList CS_fn_hGetZdxListInCollSet(unsigned char ucZoneType,MS_tdxHandleToCollSet hCollSet); extern CPA_EXPORT void CS_fn_vSetZdxListInCollSet(unsigned char ucZoneType,MS_tdxHandleToCollSet hCollSet,ZDX_tdxHandleToZdxList); #endif /* MAY_BE_SUPPRESSED */ extern CPA_EXPORT unsigned long CS_fn_ulGetPrivilegedActivationZoneInCollSet(unsigned char _ucZoneType,MS_tdxHandleToCollSet _hCollSet); extern CPA_EXPORT void CS_fn_vSetPrivilegedActivationZoneInCollSet(unsigned char _ucZoneType,MS_tdxHandleToCollSet _hCollSet, unsigned long _ulFB); extern CPA_EXPORT void CS_fn_vSetPrivilegedActivationZone(unsigned char _ucZoneType,MS_tdxHandleToCollSet _hCollSet,short _wIndex, tdeCollSetPrivilegedActivation _ePrivilege); extern CPA_EXPORT tdeCollSetPrivilegedActivation CS_fn_eGetPrivilegedActivationZone(unsigned char _ucZoneType,MS_tdxHandleToCollSet _hCollSet,short _wIndex); /**********************/ /**** SAI function ****/ /**********************/ extern CPA_EXPORT void fn_vCollSetInitValueSAI(MS_tdxHandleToCollSet _hCollSet); extern CPA_EXPORT void fn_vCollSetSavedValueSAI(MS_tdxHandleToCollSet _hCollSet); extern CPA_EXPORT void fn_vCollSetFreeInitValueSAI(MS_tdxHandleToCollSet _hCollSet); extern CPA_EXPORT void fn_vCollSetReInitCharacterCollisionFlag(MS_tdxHandleToCollSet _hCollSet); extern CPA_EXPORT void fn_vCollSetReInitCollComputeFrequency(MS_tdxHandleToCollSet _hCollSet); /**********************************/ /**** Special functions define ****/ /**********************************/ #ifdef ACTIVE_EDITOR extern CPA_EXPORT unsigned char *fn_p_ucCollSetGetCharacterCollisionFlagInit(MS_tdxHandleToCollSet _hCollSet); extern CPA_EXPORT unsigned char *fn_p_ucCollSetGetCollComputeFrequencyInit(MS_tdxHandleToCollSet _hCollSet); #endif /* ACTIVE_EDITOR */ #if defined(__cplusplus) } #endif /* __cplusplus */ #endif /* __CollSet_H__ */