132 lines
4.6 KiB
C
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__ */
|