reman3/Rayman_X/cpa/tempgrp/GAM/Micros.c

647 lines
20 KiB
C
Raw Blame History

#define D_Micros_StructureDefine
#define D_Micros_VariableDefine
#define D_Brain_StructureDefine
#include "ToolsCPA.h"
#include "SND.h"
#include "Options/Options.h"
#include "macros.h"
#include "GameEng.h"
#include "Structur/State.h"
#include "Actions/AllActs.h"
#include "Structur/Anim_s.h"
#include "Structur/GameScpt.h"
#include "Structur/ErrGame.h"
#include "Structur/MemGame.h"
#include "Structur/StdObjSt.h"
#include "Structur/EngMode.h"
#include "Structur/Objects.h"
#include "Basic.h"
#include "Zemem.h"
#include "Micros.h"
#include "always.h"
#include "mainchar.h"
/* Well, ambiant music is audible up to ten meters underwater*/
#define C_xMaxDepthForMusic MTH_M_xDoubleToReal(10.0)
#if defined (ACTIVE_EDITOR) || defined (RETAIL)
#define ENGassert(param)
#else
#define ENGassert(param) assert(param)
#endif
/*
* Temporary define; waiting for SIF module update
*/
typedef enum _SIF_eInfoTypeId
{
ENVIRONMENT_INFO,
MATERIAL_INFO,
NB_INFO_TYPES,
} SIF_eInfoTypeId;
/*-----------------------------------------------------------------------------
* Description : Return to SoundLibrary Postion and speed for an object
*-----------------------------------------------------------------------------
* Input : void
* Output : void
*-----------------------------------------------------------------------------
* Creation date : 13/02/97 Author : SOUND
*---------------------------------------------------------------------------*/
long RetObjetSonoreXAnim(long indice)
{
MTH3D_tdstVector stVertex;
POS_fn_vGetTranslationVector(HIE_fn_hGetSuperObjectGlobalMatrix((HIE_tdxHandleToSuperObject)indice),&stVertex);
return (long)M_Fixed1616ToRealSnd(MTH_M_xRealToFixed16_16(stVertex.xX));
}
long RetObjetSonoreYAnim(long indice)
{
MTH3D_tdstVector stVertex;
POS_fn_vGetTranslationVector(HIE_fn_hGetSuperObjectGlobalMatrix((HIE_tdxHandleToSuperObject)indice),&stVertex);
return (long)M_Fixed1616ToRealSnd(MTH_M_xRealToFixed16_16(stVertex.xY));
}
long RetObjetSonoreZAnim(long indice)
{
MTH3D_tdstVector stVertex;
POS_fn_vGetTranslationVector(HIE_fn_hGetSuperObjectGlobalMatrix((HIE_tdxHandleToSuperObject)indice),&stVertex);
return (long)M_Fixed1616ToRealSnd(MTH_M_xRealToFixed16_16(stVertex.xZ));
}
long RetObjetSonoreVXAnim(long indice)
{
DNM_tdstDynamics *p_stDynamics;
/* DNM_tdstReport *p_stReport;*/
MTH3D_tdstVector stVertex;
if( !M_GetMSHandle((HIE_tdxHandleToSuperObject)indice,Dynam) )
return 0;
if((p_stDynamics = fn_p_stDynamGetDynamics(M_GetMSHandle((HIE_tdxHandleToSuperObject)indice,Dynam))) == NULL)
return 0;
/* p_stReport = DNM_M_p_stDynamicsGetReport(p_stDynamics);*/
/* MTH3D_M_vCopyVector(&stVertex,MTH_M_p_stMoveGetLinear(DNM_M_p_stReportGetAbsoluteCurrSpeed(p_stReport)));*/
MTH3D_M_vCopyVector(&stVertex, DNM_M_pDynamicsGetPreviousSpeed(p_stDynamics));
return (long)M_Fixed1616ToRealSnd(MTH_M_xRealToFixed16_16(stVertex.xX));
}
long RetObjetSonoreVYAnim(long indice)
{
DNM_tdstDynamics *p_stDynamics;
/* DNM_tdstReport *p_stReport;*/
MTH3D_tdstVector stVertex;
if( !M_GetMSHandle((HIE_tdxHandleToSuperObject)indice,Dynam) )
return 0;
if((p_stDynamics = fn_p_stDynamGetDynamics(M_GetMSHandle((HIE_tdxHandleToSuperObject)indice,Dynam))) == NULL)
return 0;
/* p_stReport = DNM_M_p_stDynamicsGetReport(p_stDynamics);*/
/* MTH3D_M_vCopyVector(&stVertex,MTH_M_p_stMoveGetLinear(DNM_M_p_stReportGetAbsoluteCurrSpeed(p_stReport)));*/
MTH3D_M_vCopyVector(&stVertex, DNM_M_pDynamicsGetPreviousSpeed(p_stDynamics));
return (long)M_Fixed1616ToRealSnd(MTH_M_xRealToFixed16_16(stVertex.xY));
}
long RetObjetSonoreVZAnim(long indice)
{
DNM_tdstDynamics *p_stDynamics;
/* DNM_tdstReport *p_stReport;*/
MTH3D_tdstVector stVertex;
if( !M_GetMSHandle((HIE_tdxHandleToSuperObject)indice,Dynam) )
return 0;
if((p_stDynamics = fn_p_stDynamGetDynamics(M_GetMSHandle((HIE_tdxHandleToSuperObject)indice,Dynam))) == NULL)
return 0;
/* p_stReport = DNM_M_p_stDynamicsGetReport(p_stDynamics);*/
/* MTH3D_M_vCopyVector(&stVertex,MTH_M_p_stMoveGetLinear(DNM_M_p_stReportGetAbsoluteCurrSpeed(p_stReport)));*/
MTH3D_M_vCopyVector(&stVertex, DNM_M_pDynamicsGetPreviousSpeed(p_stDynamics));
return (long)M_Fixed1616ToRealSnd(MTH_M_xRealToFixed16_16(stVertex.xZ));
}
unsigned char RetObjetSonoreREVERBAnim(long indice)
{
return 0;
}
void RetObjetSonoreExtraCoefAnim(long indice,SND_tduRefEvt evt,SndReal* pitch,SndReal* pan,SndReal* vol)
{/**/
DNM_tdstDynamics *p_stDynamics;
/* DNM_tdstReport *p_stReport;*/
MTH3D_tdstVector stVertex;
SndReal rTmpPitch, rTmpVol, rTmpPan;
/* Extra-Pitch Sound according to speed*/
rTmpPitch = C_SNDREAL_0;
for (; pitch && rTmpPitch == C_SNDREAL_0;)
{
if( !M_GetMSHandle((HIE_tdxHandleToSuperObject)indice,Dynam) )
{
*pitch = C_SNDREAL_0;
break;
}
if((p_stDynamics = fn_p_stDynamGetDynamics(M_GetMSHandle((HIE_tdxHandleToSuperObject)indice,Dynam))) == NULL)
{
*pitch = C_SNDREAL_0;
break;
}
/* p_stReport = DNM_M_p_stDynamicsGetReport(p_stDynamics);*/
/* MTH3D_M_vCopyVector(&stVertex,MTH_M_p_stMoveGetLinear(DNM_M_p_stReportGetAbsoluteCurrSpeed(p_stReport)));*/
MTH3D_M_vCopyVector(&stVertex,DNM_M_pDynamicsGetPreviousSpeed(p_stDynamics));
rTmpPitch = M_Fixed1616ToRealSnd(MTH_M_xRealToFixed16_16(MTH3D_M_xNormVector(&stVertex)));
/* normalize speed to adapt sound frequencies to be hearable ....*/
if (rTmpPitch > M_DoubleToRealSnd(200.0))
rTmpPitch = M_DoubleToRealSnd(200.0);
else
if (rTmpPitch < M_DoubleToRealSnd(0.1))
rTmpPitch = M_DoubleToRealSnd(0.1);
*pitch = rTmpPitch >> 7;
}
/* Extra-Vol Sound according to anything*/
rTmpVol = C_SNDREAL_0;
for (; vol && rTmpVol == C_SNDREAL_0;)
{
/* set volume mult here*/
rTmpVol = C_SNDREAL_1;
/* normalize speed to adapt sound frequencies to be hearable ....*/
if (rTmpVol > M_DoubleToRealSnd(127.0))
rTmpVol = M_DoubleToRealSnd(127.0);
else
if (rTmpVol < C_SNDREAL_0)
break;
*vol = rTmpVol;
}
/* Extra-Pan Sound according to anything*/
rTmpPan = C_SNDREAL_0;
for (; pan && rTmpPan == C_SNDREAL_0;)
{
/* set pan mult here*/
rTmpPan = C_SNDREAL_1;
/* normalize speed to adapt sound frequencies to be hearable ....*/
if (rTmpPan > M_DoubleToRealSnd(127.0))
rTmpPan = M_DoubleToRealSnd(127.0);
else
if (rTmpPan < C_SNDREAL_0)
break;
*pan = rTmpPan;
}
}
long RetObjetSonoreSwitchAnim(long indice,long toto)
{
SIF_eInfoTypeId eTypeId = (SIF_eInfoTypeId)toto;
HIE_tdxHandleToSuperObject hCharacter;
hCharacter = (HIE_tdxHandleToSuperObject)indice;
switch( eTypeId )
{
/* Shaitan Clean Env {*/
/*
case ENVIRONMENT_INFO:
{
MTH3D_tdstVector stPosition;
ENV_tdxHandleToEnvironment hEnvironment;
POS_fn_vGetTranslationVector(
HIE_fn_hGetSuperObjectGlobalMatrix(hCharacter),
&stPosition);
hEnvironment = SCT_fn_hGetEnvironmentFromPosition(&stPosition,
fn_h_SectInfoGetCurrentSector(
M_GetMSHandle(hCharacter,SectInfo)) );
if( hEnvironment )
{
return (long)ENV_fn_hGetSoundEnvironment(hEnvironment);
}
else
return 0;
}
break;
*/
/* End Shaitan Clan Env }*/
case MATERIAL_INFO:
{
DNM_tdstReport * p_stReport;
struct DNM_stDynamics * p_stDynamics;
unsigned long ulSurfState;
DNM_tdstObstacle * p_stObstacle;
GMT_tdxHandleToGameMaterial hGMT;
if( M_GetMSHandle(hCharacter,Dynam) )
{
p_stDynamics = fn_p_stDynamGetDynamics(
M_GetMSHandle(hCharacter,Dynam));
if( !p_stDynamics )
return 0;
p_stReport = DNM_M_p_stDynamicsGetReport(p_stDynamics);
ulSurfState =
DNM_M_ulReportGetSurfaceState(p_stReport);
/* GI check ceiling*/
if( DNM_M_bDynamicsIsGi(p_stDynamics) && (ulSurfState&C_WOT_ulCeiling)) {
p_stObstacle = DNM_M_p_stReportGetCeil(p_stReport);
hGMT = DNM_M_hObstacleGetCollidedMaterial(p_stObstacle);
if( hGMT )
return (long)GMT_fn_hGetSoundMaterial(hGMT);
else
return 0;
}
/* Climbing Check wall*/
else if( DNM_M_bDynamicsIsClimb(p_stDynamics) && (ulSurfState&C_WOT_ulWall)) {
p_stObstacle = DNM_M_p_stReportGetWall(p_stReport);
hGMT = DNM_M_hObstacleGetCollidedMaterial(p_stObstacle);
if( hGMT )
return (long)GMT_fn_hGetSoundMaterial(hGMT);
else
return 0;
}
/* other case check ground*/
else if(ulSurfState&C_WOT_ulGround) {
p_stObstacle = DNM_M_p_stReportGetGround(p_stReport);
hGMT = DNM_M_hObstacleGetCollidedMaterial(p_stObstacle);
if( hGMT )
return (long)GMT_fn_hGetSoundMaterial(hGMT);
else
return 0;
}
else
return 0;
}
else
{
return 0;
}
}
break;
case NB_INFO_TYPES:
return 0;
break;
default:
return 0;
break;
}
}
/*
SndBool RetObjetSonoreLinkAnim(long indice,long micro)
{
return TRUE;
}
*/
/* Modif 23/07/98 MAin Character always audible - Carlos Torres*/
SndBool RetObjetSonoreLinkAnim(long objet,long micro)
{
HIE_tdxHandleToSuperObject hObjectSector,hMicroSector,hSuperObj;
unsigned long ulI;
SECT_tdxHandleOfElementLstSoundInteraction hSoundList;
hObjectSector=fn_h_SectInfoGetCurrentSector( M_GetMSHandle(((HIE_tdxHandleToSuperObject)objet),SectInfo) );
hSuperObj = M_GetSuperObject( fn_hReturnHandleMicroFromIndex(micro) );
/* main charcater always audible*/
if (((HIE_tdxHandleToSuperObject)objet) == MC_fn_hGetCharacterInMainCharacterNode(MC_fn_hGetFirstMainCharNode()))
return TRUE;
hMicroSector=fn_h_SectInfoGetCurrentSector( M_GetMSHandle(hSuperObj,SectInfo) );
if( hObjectSector==hMicroSector )
return TRUE;
SECT_M_ForEachSoundNodeInSoundInteractionList(hMicroSector,hSoundList,ulI)
{
/* If the sector is in the audibility list, it is audible if volume!=VolMin.*/
if( SECT_GetSectorInSoundList(hSoundList)==hObjectSector )
return (SCT_fn_lGetVolumeInSoundList(hSoundList)!=C_MSMicro_MinVolume);
}
return TRUE; /* if sector is not in list, it is supposed to be audible*/
}
#ifndef _FIRE_DEADCODE_U64_
void RetObjetInfoAnim(long obj,char* str,long size_str)
{
HIE_tduLinkedObject hObj;
MS_tdxHandleTo3dData h_3dData;
tdxHandleToState h_State;
#ifdef _DEBUG_STRING_FOR_PLA_
tdstAnim3d * p_stAnim;
#endif
/* treatment for ghost object - ambiance*/
if (obj == SND_C_OBJET_FANTOME) {
strncpy(str,"Ghost Object",size_str);
return;
}
hObj=((HIE_tdxHandleToSuperObject)obj)->hLinkedObject;
/* get the anim*/
h_3dData = M_GetMSHandle( (HIE_tdxHandleToSuperObject)obj, 3dData );
h_State = fn_h3dDataGetCurrentState(h_3dData);
strncpy(str,"Perso:",size_str);
if (((HIE_tdxHandleToSuperObject)obj)->ulTypeOfLinkedObject==HIE_C_ulActor)
{
if (!fn_ucIsAnAlwaysObject(hObj.p_stCharacter))
{
if (hObj.p_stCharacter->h_Brain)
strncat(str,AI_M_szGetPersoName(hObj.p_stCharacter->h_Brain->p_stMind),size_str-strlen(str));
else
strncat(str,"no intelligence",size_str-strlen(str));
}
else
{
strncat(str,"Always",size_str-strlen(str));
}
}
#ifdef _DEBUG_STRING_FOR_PLA_
strncat(str,"=",size_str-strlen(str));
if ( h_State != NULL )
{
p_stAnim = fn_p_stGetAnimInState(h_State);
if (p_stAnim)
strncat(str,p_stAnim->szAnimName,size_str-strlen(str));
}
#endif
}
#endif /* _FIRE_DEADCODE_U64_ */
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC 04/06/99 */
void RetObjetInfoLipsSync(long obj,char* str,long size_str)
{
HIE_tduLinkedObject hObj;
/* treatment for ghost object*/
if (obj == SND_C_OBJET_FANTOME) {
strncpy(str,"Ghost Object",size_str);
return;
}
hObj=((HIE_tdxHandleToSuperObject)obj)->hLinkedObject;
strncpy(str,"Lips:",size_str);
if (((HIE_tdxHandleToSuperObject)obj)->ulTypeOfLinkedObject==HIE_C_ulActor)
{
if (!fn_ucIsAnAlwaysObject(hObj.p_stCharacter))
{
strncat(str,AI_M_szGetPersoName(hObj.p_stCharacter->h_Brain->p_stMind),size_str-strlen(str));
}
else
{
strncat(str,"Always",size_str-strlen(str));
}
}
}
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC 04/06/99 */
/*-----------------------------------------------------------------------------
* Description : Return to SoundLibrary Postion and speed for an object
*-----------------------------------------------------------------------------
* Input : void
* Output : void
*-----------------------------------------------------------------------------
* Creation date : 13/02/97 Author : SOUND
*---------------------------------------------------------------------------*/
long RetObjetSonoreXMusic(long indice)
{
return 0;
}
long RetObjetSonoreYMusic(long indice)
{
return 0;
}
long RetObjetSonoreZMusic(long indice)
{
return 0;
}
long RetObjetSonoreVXMusic(long indice)
{
return 0;
}
long RetObjetSonoreVYMusic(long indice)
{
return 0;
}
long RetObjetSonoreVZMusic(long indice)
{
return 0;
}
unsigned char RetObjetSonoreREVERBMusic(long indice)
{
return 0;
}
void RetObjetSonoreExtraCoefMusic(long indice,SND_tduRefEvt evt,SndReal* pitch,SndReal* pan,SndReal* vol)
{
struct tdstEngineObject_ * p_stEngineMicro;
MTH3D_tdstVector stMicroPosition;
/* DNM_tdeFluidEnvironment eCurrentFluidEnvironment;*/
MTH_tdxReal xDepth = 0;
/* C_xMaxDepthForMusic */
if( vol==NULL )
return;
p_stEngineMicro = fn_p_stGetFirstEngineObjectInMicroList();
/* JO 22/10/97 for music during loading*/
if( !p_stEngineMicro )
{
*vol = C_SNDREAL_1;
return;
}
if( !p_stEngineMicro->h_3dData )
{
*vol = C_SNDREAL_1;
return;
}
/* eCurrentFluidEnvironment = fn_l3dDataGetEnvironmentOfCharacter(p_stEngineMicro->h_3dData);*/
/* if( eCurrentFluidEnvironment!=DNM_Fluid_Water )*/
/* {*/
/* *vol = C_SNDREAL_1;*/
/* return;*/
/* }*/
POS_fn_vGetTranslationVector(HIE_fn_hGetSuperObjectGlobalMatrix(fn_h_StandardGameGetSuperObject(p_stEngineMicro->h_StandardGame)),&stMicroPosition);
/* SECT_hGetDNMEnvironmentAndDepth(*/
/* NULL,*/
/* &stMicroPosition,*/
/* fn_h_SectInfoGetCurrentSector(p_stEngineMicro->h_SectInfo), */
/* &xDepth);*/
if( xDepth >= C_xMaxDepthForMusic )
{
*vol = C_SNDREAL_0;
}
else
{
xDepth = (C_xMaxDepthForMusic - xDepth)/C_xMaxDepthForMusic;
*vol = M_Fixed1616ToRealSnd(MTH_M_xRealToFixed16_16(xDepth));
}
}
long RetObjetSonoreSwitchMusic(long indice,long toto)
{
return 0;
}
SndBool RetObjetSonoreLinkMusic(long indice,long micro)
{
return TRUE;
}
#ifndef _FIRE_DEADCODE_U64_
void RetObjetInfoMusic(long obj,char* str,long size_str)
{
strncpy(str,"music ???",size_str);
}
#endif /* _FIRE_DEADCODE_U64_ */
#ifndef _FIRE_DEADCODE_U64_
void RetObjetInfoMenu(long obj,char* str,long size_str)
{
strncpy(str,"menu ???",size_str);
}
#endif /* _FIRE_DEADCODE_U64_ */
/*-----------------------------------------------------------------------------
* Description : init sound-object type for anim player
*-----------------------------------------------------------------------------
* Input : void
* Output : void
*-----------------------------------------------------------------------------
* Creation date : 13/02/97 Author : SOUND
*---------------------------------------------------------------------------*/
void fn_lInitSoundForAnim()
{
tdstAllRetObjectSound st_pfnRetObjectSound;
/*long lSoundObjectTypeAnim;*/
memset(&st_pfnRetObjectSound,0,sizeof(st_pfnRetObjectSound));
st_pfnRetObjectSound.X = RetObjetSonoreXAnim;
st_pfnRetObjectSound.Y = RetObjetSonoreYAnim;
st_pfnRetObjectSound.Z = RetObjetSonoreZAnim;
st_pfnRetObjectSound.VX = RetObjetSonoreVXAnim;
st_pfnRetObjectSound.VY = RetObjetSonoreVYAnim;
st_pfnRetObjectSound.VZ = RetObjetSonoreVZAnim;
st_pfnRetObjectSound.REVERB = RetObjetSonoreREVERBAnim;
st_pfnRetObjectSound.ExtraCoef = RetObjetSonoreExtraCoefAnim;
st_pfnRetObjectSound.Switch = RetObjetSonoreSwitchAnim;
st_pfnRetObjectSound.MicroLink = RetObjetSonoreLinkAnim;
g_lSoundVolumeLineSound=SND_fn_lAddVolumeLineSound();
g_lSoundObjectTypeAnim = SND_fn_lAddObjectTypeSound2(&st_pfnRetObjectSound,g_lSoundVolumeLineSound);
#ifndef _FIRE_DEADCODE_U64_
SND_fn_vSetInfoForTypeSound(g_lSoundObjectTypeAnim,RetObjetInfoAnim);
#endif /* _FIRE_DEADCODE_U64_ */
#ifdef D_USE_LIPSYNC
g_lSoundVolumeLineVoices=SND_fn_lAddVolumeLineSound();
g_lSoundObjectTypeLipsSynchro = SND_fn_lAddObjectTypeSound2(&st_pfnRetObjectSound,g_lSoundVolumeLineVoices);
SND_fn_vSetInfoForTypeSound(g_lSoundObjectTypeLipsSynchro,RetObjetInfoLipsSync);
#endif
memset(&st_pfnRetObjectSound,0,sizeof(st_pfnRetObjectSound));
st_pfnRetObjectSound.X = RetObjetSonoreXMusic;
st_pfnRetObjectSound.Y = RetObjetSonoreYMusic;
st_pfnRetObjectSound.Z = RetObjetSonoreZMusic;
st_pfnRetObjectSound.VX = RetObjetSonoreVXMusic;
st_pfnRetObjectSound.VY = RetObjetSonoreVYMusic;
st_pfnRetObjectSound.VZ = RetObjetSonoreVZMusic;
st_pfnRetObjectSound.REVERB = RetObjetSonoreREVERBMusic;
st_pfnRetObjectSound.ExtraCoef = RetObjetSonoreExtraCoefMusic;
st_pfnRetObjectSound.Switch = RetObjetSonoreSwitchMusic;
st_pfnRetObjectSound.MicroLink = RetObjetSonoreLinkMusic;
g_lSoundVolumeLineMusic=SND_fn_lAddVolumeLineSound();
g_lSoundObjectTypeMusic = SND_fn_lAddObjectTypeSound2(&st_pfnRetObjectSound,g_lSoundVolumeLineMusic);
#ifndef _FIRE_DEADCODE_U64_
SND_fn_vSetInfoForTypeSound(g_lSoundObjectTypeMusic,RetObjetInfoMusic);
#endif /* _FIRE_DEADCODE_U64_ */
/*---------------------------------------------------------------*/
memset(&st_pfnRetObjectSound,0,sizeof(st_pfnRetObjectSound));
st_pfnRetObjectSound.X = RetObjetSonoreXMusic;
st_pfnRetObjectSound.Y = RetObjetSonoreYMusic;
st_pfnRetObjectSound.Z = RetObjetSonoreZMusic;
st_pfnRetObjectSound.VX = RetObjetSonoreVXMusic;
st_pfnRetObjectSound.VY = RetObjetSonoreVYMusic;
st_pfnRetObjectSound.VZ = RetObjetSonoreVZMusic;
st_pfnRetObjectSound.REVERB = RetObjetSonoreREVERBMusic;
st_pfnRetObjectSound.ExtraCoef = RetObjetSonoreExtraCoefMusic;
st_pfnRetObjectSound.Switch = RetObjetSonoreSwitchMusic;
st_pfnRetObjectSound.MicroLink = RetObjetSonoreLinkMusic;
/* g_lSoundVolumeLineMusic=SND_fn_lAddVolumeLineSound();*/
g_lSoundObjectTypeMenu = SND_fn_lAddObjectTypeSound2(&st_pfnRetObjectSound,g_lSoundVolumeLineSound);/*<2A> changer*/
#ifndef _FIRE_DEADCODE_U64_
SND_fn_vSetInfoForTypeSound(g_lSoundObjectTypeMenu,RetObjetInfoMenu);
#endif /* _FIRE_DEADCODE_U64_ */
/*---------------------------------------------------------------*/
/* RollOff initialisation*/
SND_fn_vSetRollOffFunctionForTypeSound(g_lSoundObjectTypeAnim,fn_bRetRollOffFactor);
/*---------------------------------------------------------------*/
memset (ga_pstBlockEventSlotMemory , 0 ,GAM_C_NBLOCKEVENTSLOTNUMBER * sizeof(SND_tdstBlockEvent*));
return;
}
/*-----------------------------------------------------------------------------
* Description :
*-----------------------------------------------------------------------------
* Input :
* Output : void
*-----------------------------------------------------------------------------
* Creation date : 26/02/99 Author : MT
*---------------------------------------------------------------------------*/
void GAM_fn_lSaveBlockEventSlotMemory(SND_tdstBlockEvent *_p_stBlockEvent,unsigned long _ulIndex)
{
ENGassert(_ulIndex < GAM_C_NBLOCKEVENTSLOTNUMBER);
ga_pstBlockEventSlotMemory [_ulIndex] = _p_stBlockEvent;
}
/*-----------------------------------------------------------------------------
* Description :
*-----------------------------------------------------------------------------
* Input :
* Output :
*-----------------------------------------------------------------------------
* Creation date : 26/02/99 Author : MT
*---------------------------------------------------------------------------*/
SND_tdstBlockEvent *GAM_p_stGetBlockEventSlotMemory(unsigned long _ulIndex)
{
ENGassert(_ulIndex < GAM_C_NBLOCKEVENTSLOTNUMBER);
return ga_pstBlockEventSlotMemory [_ulIndex];
}
#undef D_Micros_StructureDefine
#undef D_Micros_VariableDefine