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

179 lines
7.8 KiB
C
Raw Blame History

/*=========================================================================
* 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<69>es qui n'ont rien <20> 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<69>es qui n'ont rien <20> 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_ */