/*========================================================================= * PlayAnim.h : Contain the CPA's animations player functions. * * * Version 0.0 * Creation date 21/10/96 Sebastien DAVID * Revision date * * That file needs to be compatible for all platforms. * * (c) Ubi Studios 1996 *=======================================================================*/ #ifndef _PLAYANIM_H_ #define _PLAYANIM_H_ /******************************************/ #if _MSC_VER >= 1000 #pragma once #endif /* _MSC_VER >= 1000 */ /******************************************/ #include "GAM\STRUCTUR\anim_s.h" #if defined(__cplusplus) extern "C" { #endif /* __cplusplus */ #include "GAM/Header.h" /*============*/ /* CONSTANTES */ /*============*/ #define PLA_C_NbClocks 16 /*ANNECY CT 17/02/98{*/ #define PLA_C_wRandomFrame -32768 /*ENDANNECY CT}*/ /*====================*/ /* EXTERNs of GLOBALs */ /*====================*/ /**** Put here all globals variables : ****/ /**** EXTERN typeofvar variable; ****/ #ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */ EXTERN short PLA_g_a_wClock[PLA_C_NbClocks]; #endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */ #define __PLA_NB_MAX_SUPOBJ__ 512L /* used in release to allocate heap, and in debug to set limit*/ #define __PLA_LIM_SUPOBJ_ALLOC__ 512L /* used in debug to allocate heap*/ /*===========*/ /* FONCTIONS */ /*===========*/ /* Olivier Didelot le 1 juillet 1998*/ /*void PLA_fn_vDesInitAllChildOfCharacterByEngineobject(struct tdstEngineObject_ * p_stEngineObject);*/ extern tdstFrame3d *fn_p_GetFramesAddress(tdstAnim3d *_p_stAnim3d, unsigned short _uwNumFrame, unsigned long _ulFrame,void *p_stSuperObject); extern ACP_tdxBool PLA_fn_bDoAnimPlayerForCharacter(HIE_tdxHandleToSuperObject p_stSuperObject, ACP_tdxBool bNoDisplay , ACP_tdxBool _bHandleSkippedEventsIfRelevant); extern CPA_EXPORT void PLA_fn_vInitAllChildInHeapNewAnim(HIE_tdxHandleToSuperObject p_stSuperObject , struct tdstAnim3d_ *p_stCurrentAnim , unsigned short _uwFrameNumber ); extern CPA_EXPORT void PLA_fn_vDesInitAllChildOfCharacter(HIE_tdxHandleToSuperObject p_stSuperObject,struct tdstEngineObject_ * p_stObject); extern void PLA_fn_vRefreshGlobalMatrixUnderCharacter(HIE_tdxHandleToSuperObject _hSprObj); extern void PLA_fn_vRefreshGlobalMatrixOfAnimsHierarchy(HIE_tdxHandleToSuperObject _hSprObj); extern CPA_EXPORT ACP_tdxBool PLA_fn_bSetNewStateWithRandom(HIE_tdxHandleToSuperObject p_stSuperObject,tdxHandleToState h_WantedState); extern CPA_EXPORT ACP_tdxBool PLA_fn_bSetNewState(HIE_tdxHandleToSuperObject p_stSuperObject,tdxHandleToState h_WantedState, ACP_tdxBool _bForce , ACP_tdxBool _bHandleSkippedEventsIfRelevant); /*ANNECY CT 17/02/98{*/ extern CPA_EXPORT void PLA_fn_vSetCurrFrame(HIE_tdxHandleToSuperObject p_stSuperObject,short _wFrame); extern CPA_EXPORT unsigned short PLA_fn_uwGetNbFrameInCurrAnim(HIE_tdxHandleToSuperObject p_stSuperObject); extern CPA_EXPORT unsigned short PLA_fn_uwGetCurrFrameOfAnim(HIE_tdxHandleToSuperObject p_stSuperObject); /*ENDANNECY CT}*/ /*ANNECY CT 06/02/98{*/ extern CPA_EXPORT BOOL PLA_fn_bSetNewStateFluid(HIE_tdxHandleToSuperObject p_stSuperObject,tdxHandleToState h_WantedState); /*ENDANNECY CT}*/ extern CPA_EXPORT BOOL PLA_fn_bInitNewStateWithRandom(HIE_tdxHandleToSuperObject p_stSuperObject,tdxHandleToState h_WantedState); extern CPA_EXPORT BOOL PLA_fn_vInitNewState(HIE_tdxHandleToSuperObject p_stSuperObject,tdxHandleToState h_State); extern CPA_EXPORT BOOL PLA_fn_bTestNewState(HIE_tdxHandleToSuperObject p_stSuperObject,tdxHandleToState h_WantedState); extern CPA_EXPORT BOOL PLA_fn_bTestCurrentAction(HIE_tdxHandleToSuperObject p_stSuperObject,tdxHandleToState h_FirsStateOfAction); extern CPA_EXPORT void PLA_fn_vModifyCurrentState(HIE_tdxHandleToSuperObject p_stSuperObject,tdxHandleToState h_State); /* tmp DVD*/ extern void PLA_fn_vInitNewAction(HIE_tdxHandleToSuperObject p_stSuperObject,unsigned short wAction); void PLA_fn_vSetNewSubAnim(HIE_tdxHandleToSuperObject p_stSuperObject ,unsigned char ucElement3D ,tdxHandleToState h_TmpState); void PLA_fn_vKillSubAnim(HIE_tdxHandleToSuperObject p_stSuperObject); void PLA_fn_vAllocateSubAnimObjHeap(void); extern void PLA_fn_vCreateSupObjHeap(void); /*ANNECY BBB: fonctions privées qui n'ont rien à foutre ici!*/ /*unsigned long PLA_fn_ulFindNextFreeSupObj(void);*/ unsigned long PLA_fn_vInitNewSubAnimInHeap( unsigned char ucElement , struct tdstState_ *p_stCurrentState ); /*void PLA_fn_vDesInitOneSubAnimInHeap(struct tdstSubAnim3d_ *p_stSubAnim);*/ void PLA_fn_vInitControlMatrix(HIE_tdxHandleToSuperObject p_stSuperObject); /* void PLA_fn_vAbsoluteTranslationOfModule( HIE_tdxHandleToSuperObject p_stSuperObject , MTH3D_tdstVector *p_stControlTranslationVertex ); */ /* tmp DVD*/ extern BOOL PLA_fn_bTestIfEndOfAction(HIE_tdxHandleToSuperObject p_stSuperObject); BOOL PLA_fn_bTestIfEndOfAnim(HIE_tdxHandleToSuperObject p_stSuperObject); /* Access Function to Speed. CGHT 12/02/97*/ struct MTH3D_tdstVector_ * PLA_fn_stGetLinearSpeedVector(HIE_tdxHandleToSuperObject p_stSuperObject,short sLastFrame); struct MTH3D_tdstMatrix_ * PLA_fn_stGetAngularSpeedMatrix(HIE_tdxHandleToSuperObject p_stSuperObject,short sLastFrame); void PLA_fn_vComputeNextFrame(HIE_tdxHandleToSuperObject p_stSuperObject); ACP_tdxBool PLA_fn_bSkipCurrentFrame(HIE_tdxHandleToSuperObject p_stSuperObject); /* MR1306*/ void PLA_fn_vMoveTakenObject(HIE_tdxHandleToSuperObject p_stSuperObject); extern CPA_EXPORT void PLA_fn_vDoFrame(tdstAnim3d *p_stCurrentAnim,unsigned short uwCurrentFrame, HIE_tdxHandleToSuperObject p_stSuperObject); extern CPA_EXPORT void PLA_fn_vOverWriteMatrixWithUCC(HIE_tdxHandleToSuperObject p_stSuperObject); extern CPA_EXPORT void PLA_fn_vUpdateTransparencyForModules(HIE_tdxHandleToSuperObject p_stSuperObject) ; /* MR3108*/ /*extern CPA_EXPORT tdstAnimLights *PLA_fn_pstGetLightsOfAnim(HIE_tdxHandleToSuperObject hCharacter);*/ extern void fn_vRemoveAllAnimLightsFromSectorList(HIE_tdxHandleToSuperObject hCharacter); /* ONLY FOR EDITOR*/ extern CPA_EXPORT BOOL PLA_fn_bDoFirstInitOfAnimPlayerForCharacter(HIE_tdxHandleToSuperObject p_stSuperObject, tdstAnim3d *p_stNewanim); extern CPA_EXPORT void PLA_fn_bDoOffsetFirstInitForCharacter(HIE_tdxHandleToSuperObject p_stSuperObject); /*----------------*/ /*ANNECY BBB: fonctions privées qui n'ont rien à foutre ici!*/ /*void PLA_fn_vCreateMatrixHeap(void);*/ /*unsigned long PLA_fn_ulFindNextFreeMatrix(void);*/ extern CPA_EXPORT void GAM_fn_vAddMorphData(tdstAnim3d *_p_stAnim, unsigned long _ulChannelNumber, unsigned short _uwFrameNumber,unsigned char _ucMorphingAmount,unsigned char _ucTarget); /*AR980325 For PC compilation*/ tdstFrame3d *fn_p_GetFramesAddress(tdstAnim3d *_p_stAnim3d, unsigned short _uwNumFrame, unsigned long _ulFrame,void *p_stSuperObject); unsigned char GAM_fn_ucGetMorphAmount(tdstAnim3d *_p_stAnim, unsigned long _ulChannelNumber, unsigned short _uwFrameNumber) ; unsigned char GAM_fn_ucGetMorphTarget(tdstAnim3d *_p_stAnim, unsigned long _ulChannelNumber, unsigned short _uwFrameNumber) ; void PLA_fn_vForceRegenerationWhenBlockInNoState_EndOfAction(HIE_tdxHandleToSuperObject p_stSuperObject); /*AR9805*/ void PLA_fn_vForceRegenerationWhenSkip(HIE_tdxHandleToSuperObject p_stSuperObject); /*AR9805*/ #ifdef ACTIVE_EDITOR void fn_vCheckModuleAccessGam(HIE_tdxHandleToSuperObject hPerso, unsigned char cChannel); #endif /*AR9806 New heap management by gizmo*/ void PLA_fn_vInitMatrixHeap(void); void PLA_fn_vCreateMatrixHeap(void); void PLA_fn_vInitSupObjHeap(void); void PLA_fn_vCreateSupObjHeap(void); void PLA_fn_vInitHeaps(void); void PLA_fn_vCreateAndInitHeaps(void); #if defined(__cplusplus) } #endif /* __cplusplus */ #endif /* _PLAYANIM_H_ */