reman3/Rayman_X/cpa/public/GAM/ChanList.h

132 lines
4.6 KiB
C

/*=========================================================================
* ChanList.h : ChanList's functions
*
*
* ChanList MUST BE REPLACE BY THE HEADER FILENAME
*
*
* Version 1.0
* Creation date 25/03/97
* Revision date
*
* That file needs to be compatible for all platforms.
*
* (c) Ubi Studios 1997
*=======================================================================*/
#if !defined(__ChanList_H__)
#define __ChanList_H__
/******************************************/
#if _MSC_VER >= 1000
#pragma once
#endif /* _MSC_VER >= 1000 */
/******************************************/
#if defined(__cplusplus)
extern "C"
{
#endif /* __cplusplus */
struct tdstElement3d_;
#include "GAM/Header.h"
/* ANNECY AV {*/
#include "PO/POHandl.h"
/* ENDANNECY AV }*/
#define C_ucUnknownChannel (unsigned char)0xFF
#define C_wMaskForZoom ((unsigned short)0x8000)
struct tdstEngineObject_;
typedef struct tdstAChannel_
{
HIE_tdxHandleToSuperObject hSupObject;
/* POS_tdstCompletePosition stAnimMatrix; // animation matrix*/
HIE_tdxHandleToSuperObject hZoomSupObject; /* superobject used for symetric channels*/
struct tdstAChannel_ *p_stNextActiveChannel; /* link for active channels*/
struct tdstAChannel_ *p_stFatherChannel; /* hierarchy info*/
ACP_tdxBool bControlledChannel; /* channel position is modified by the AI, and should not be updated by the anim player */
ACP_tdxBool bActiveChannel; /* the AI wants the channel to be ignored */
} tdstAChannel;
EXTERN unsigned short fn_uwGetChannelOfSuperObject(CHN_tdxHandleToChannelArray hChannelArray, HIE_tdxHandleToSuperObject hSO, unsigned long ulNumberOfChannels);
extern CPA_EXPORT void fn_vInitCSOList(CHN_tdxHandleToChannelArray *p_hChannelArray, unsigned long ulNumberOfChannels);
extern CPA_EXPORT void fn_vFreeCSOList(CHN_tdxHandleToChannelArray *p_hChannelArray/*, unsigned long ulNumberOfChannels*/);
EXTERN void fn_vTakeControlOfChannel(struct tdstEngineObject_ *_hActor,unsigned short uwChannel, ACP_tdxBool _bControlled);
EXTERN void fn_vActivateChannel(HIE_tdxHandleToSuperObject _hPerso,unsigned short uwChannel,ACP_tdxBool _bActivate);
EXTERN void fn_vUpdateSPOFlagsOfChannelForActivation ( HIE_tdxHandleToSuperObject _hSOChannel, ACP_tdxBool _bActivate);
/*EXTERN void fn_vUpdateMatrixOfControledChannels(struct tdstEngineObject_ *_hActor);*/
/* ANNECY AV {*/
/* ---------------------------------------------------------------------------------------------*/
/* Definition of CHN_tdxHandleToMorphList, which is a list of Morph channels.*/
/* If a channel is morphing, it could be rotated or translated, as one wants...*/
typedef struct tdstMorphChannelList_
{
LST2_M_DynamicElementDeclaration(CHN_tdxHandleToMorphElement)
unsigned short uwChannelNumber;
ACP_tdxIndex MorphListIndex;
} tdstMorphChannelList;
tdstMorphChannelList* fn_p_stCreateMorphListElement();
void fn_vFreeMorphListElement(tdstMorphChannelList *p_stMorphList);
extern CPA_EXPORT void fn_vInitMorphList(CHN_tdxHandleToMorphList *p_hMorphList);
extern CPA_EXPORT void fn_vFreeMorphList(CHN_tdxHandleToMorphList *p_hMorphList);
EXTERN CPA_EXPORT void fn_vPutMorphElementInChannel(CHN_tdxHandleToMorphList hMorphList,unsigned short uwChannel,ACP_tdxIndex IndexOfMorphList);
EXTERN CPA_EXPORT void fn_vRemoveChannelFromMorphList(CHN_tdxHandleToMorphList hMorphList,unsigned short uwChannel);
EXTERN CPA_EXPORT ACP_tdxIndex fn_hMorphListIndex(CHN_tdxHandleToMorphList hMorphList,unsigned short uwChannel);
PO_tdxHandleToPhysicalObject fn_hGetMorphedObjectInChannel (CHN_tdxHandleToMorphList hMorphList,unsigned short uwChannel);
/* ENDANNECY AV }*/
/*****************************************/
/********** inline functions *************/
/*****************************************/
INLINE
CHN_tdxHandleToChannel fn_hGetCSOForChannel(CHN_tdxHandleToChannelArray hChannelArray,unsigned short uwChannel)
{
return &hChannelArray[uwChannel];
}
INLINE
void fn_vPutSuperObjectInChannel(CHN_tdxHandleToChannelArray hChannelArray,unsigned short uwChannelNumber,HIE_tdxHandleToSuperObject hSO)
{
/* assumes that the given channel number is good !*/
hChannelArray[uwChannelNumber].hSupObject = hSO;
}
INLINE
HIE_tdxHandleToSuperObject fn_hGetSuperObjectInChannel(CHN_tdxHandleToChannelArray hChannelArray, unsigned short uwChannelNumber)
{
return (hChannelArray) ? hChannelArray[uwChannelNumber].hSupObject : NULL;
}
INLINE
HIE_tdxHandleToSuperObject fn_hGetZoomSuperObjectInChannel(CHN_tdxHandleToChannelArray hChannelArray, unsigned short uwChannelNumber)
{
return (hChannelArray) ? hChannelArray[uwChannelNumber].hZoomSupObject : NULL;
}
#if defined(__cplusplus)
}
#endif /* __cplusplus */
#endif /* __ChanList_H__ */