reman3/Rayman_X/cpa/public/GAM/Actions/CollSet.h

280 lines
15 KiB
C

/*=========================================================================
* 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__ */