reman3/Rayman_X/cpa/public/GAM/Actions/MSPrtSrc.h

324 lines
17 KiB
C

/*=========================================================================
* MSPrtSrc.h : MSPrtSrc's functions
*
*
* MSPrtSrc MUST BE REPLACE BY THE HEADER FILENAME
*
*
* Version 1.0
* Creation date 01/10/96
* Revision date
*
* That file needs to be compatible for all platforms.
*
* (c) Ubi Studios 1996
*=======================================================================*/
#ifndef D_THROW_PRT
#if !defined(__MSPrtSrc_H__)
#define __MSPrtSrc_H__
/******************************************/
#if _MSC_VER >= 1000
#pragma once
#endif /* _MSC_VER >= 1000*/
/******************************************/
struct tdstEngineObject_;
#include "GAM/Header.h"
#include "GAM/InitEnum.h"
#undef EXTERN
#undef extern
#if !defined(D_MSPrtSrc_VariableDefine)
#define EXTERN extern
#else
#define EXTERN
#endif /* D_MSPrtSrc_VariableDefine */
/*--------------------------------------------------------------------
* Environment masks
*--------------------------------------------------------------------*/
#define C_lAllEnvironments 0xFFFFFFFF
#define C_lEnvironmentWater 1
#define C_lEnvironmentAir 2
#if defined(__cplusplus)
extern "C"
{
#endif /* __cplusplus */
#if defined(D_MSPrtSrc_StructureDefine)
/*--------------------------------------------------------------------
* Structures definitions
*--------------------------------------------------------------------*/
typedef struct tdstParticleGenerator_
{
PRT_tdstParticlesSource * p_stPrtSrc;
PRT_tdstParticlesSystem * p_stPrtSys;
PRT_tdstParticlesEnvironment * p_stPrtEnv;
long lEnvironmentMask;
MTH3D_tdstVector stMinPoint;
MTH3D_tdstVector stMaxPoint;
unsigned char ucLinkedToEnvironment;
/*ANNECY VL PRT 18/03/98{*/
unsigned long ulLinkedPrtGenMask;
struct tdstParticleGenerator_ *p_stLinkedPrtGen;
/*ENDANNECY VL}*/
} tdstParticleGenerator;
struct tdstMSPrtSrc_
{
tdstParticleGenerator * p_stParticleGenerator;
/* Add on for water streak actualisation */
GAM_tdxHandleToWaterStreakEffect hWaterStreakGenerator;
unsigned char ucGeneratorActivation;
unsigned char ucCanGenerate;
/*ANNECY VL 25/11/97{*/
/* add on for footpath effect*/
GAM_tdxHandleToFootPathEffect hFootPath;
/*ENDANNECY VL }*/
};
#endif /* D_MSPrtSrc_StructureDefine */
/***********************/
/**** Handle define ****/
/***********************/
typedef struct tdstMSPrtSrc_ * MS_tdxHandleToMSPrtSrc;
/*--------------------------------------------------------------------
* MSPrtSrc scripts
*--------------------------------------------------------------------*/
#define C_SectionMSPrtSrcDescription "MSPrtSrc"
#define C_EntryMSPrtSrcGeneratorActivation "GeneratorActivation"
#define C_EntryMSPrtSrcParticleGenerator "ParticleGenerator"
#define C_EntryMSPrtSrcWaterStreakGenerator "WaterStreakGenerator"
/*ANNECY VL 25/11/97{*/
#define C_EntryMSPrtSrcFootPathGenerator "FootPathEffect"
/*ENDANNECY VL }*/
/*--------------------------------------------------------------------
* Particle Generator scripts
*--------------------------------------------------------------------*/
#define C_SectionParticleGenerator "ParticleGenerator"
#define C_EntryPrtGenLinkedToEnvironment "LinkedToEnvironment"
#define C_EntryPrtGenEnvironmentMask "EnvironmentMask"
#define C_EntryPrtGenLoadParticleSystem "LoadParticleSystem"
#define C_EntryPrtGenLoadParticleEnvironment "LoadParticleEnvironment"
#define C_EntryPrtGenLoadParticleSource "LoadParticleSource"
/*ANNECY VL PRT 18/03/98{*/
#define C_EntryPrtGenLinkedPrtGenMask "LinkedPrtGenMask"
#define C_EntryPrtGenLinkedPrtGen "LinkedPrtGen"
/*ENDANNECY VL}*/
#define C_szLinkedToEnvironment "Yes"
#define C_szNotLinkedToEnvironment "No"
/*--------------------------------------------------------------------
* Particle Source scripts
*--------------------------------------------------------------------*/
#define C_SectionParticleSource "PrtSrc"
#define C_EntryPrtSrcGenerationMode "GenerationMode"
#define C_EntryPrtSrcGenerationProbability "GenerationProbability"
#define C_EntryPrtSrcCrenelGeneration "CrenelGeneration"
#define C_EntryPrtSrcNbParticlesToGenerateMode "NbParticlesToGenerateMode"
#define C_EntryPrtSrcNbParticlesToGenerate "NbParticlesToGenerate"
#define C_EntryPrtSrcNbMinMax "NbMinMax"
#define C_EntryPrtSrcGeometryMode "GeometryMode"
#define C_EntryPrtSrcQuad "Quad"
#define C_EntryPrtSrcPoint "Point"
#define C_EntryPrtSrcLinkMode "LinkMode"
#define C_EntryPrtSrcSpeedAndRange "SpeedAndRange"
/* JO 10/12/97*/
#define C_EntryPrtSrcNoLifeTime "NoLifeTime"
#define C_EntryPrtSrcConstantLifeTime "ConstantLifeTime"
#define C_EntryPrtSrcProbabilistLifeTime "ProbabilistLifeTime"
#define C_szNoGeneration "NoGeneration"
#define C_szContinuousGeneration "ContinuousGeneration"
#define C_szProbabilistGeneration "ProbabilistGeneration"
#define C_szCrenelGeneration "CrenelGeneration"
#define C_szConstantNb "ConstantNb"
#define C_szProbabilistNb "ProbabilistNb"
#define C_szPoint "Point"
#define C_szQuad "Quad"
#define C_szRotationLink "RotationLink"
#define C_szTranslationLink "TranslationLink"
#define C_szRotationAndTranslationLink "RotationAndTranslationLink"
/*--------------------------------------------------------------------
* Particle System scripts
*--------------------------------------------------------------------*/
#define C_SectionPrtSysDescription "PrtSys"
#define C_EntryPrtSysCreatePoint "CreatePoint"
#define C_EntryPrtSysCreateSegment "CreateSegment"
#define C_EntryPrtSysCreateSprite "CreateSprite"
/*--------------------------------------------------------------------
* Particle Environment scripts
*--------------------------------------------------------------------*/
#define C_SectionPrtEnvDescription "PrtEnv"
#define C_EntryPrtEnvType "Type"
#define C_EntryPrtEnvMinMaxPoint "MinMaxPoint"
#define C_EntryPrtEnvSphere "Sphere"
#define C_EntryPrtEnvAcceleration "Acceleration"
#define C_szAlignedBox "AlignedBox"
#define C_szSphere "Sphere"
/*ANNECY VL 25/11/97{*/
/*--------------------------------------------------------------------
* FootPath effect scripts
*--------------------------------------------------------------------*/
#define C_szSectionFootPathEffectDescription "FootPathEffect"
#define C_szEntryNumberOfAlphaLevels "NumberOfAlphaLevels"
#define C_szEntryNumberOfPointsByAlpha "NumberOfPointsByAlpha"
#define C_szEntryAlpha "AlphaColor"
#define C_szEntryFootPrintOffsets "FootPrintOffsets"
#define C_szEntryFootPrintGameMaterial "FootPrintGameMaterial"
#define C_szEntryFootPrintDimension "FootPrintDimension"
#define C_szEntryMaterialMask "MaterialMask"
/*ENDANNECY VL }*/
/*--------------------------------------------------------------------
*
*--------------------------------------------------------------------*/
/**** Put here all globals variables : ****/
/**** EXTERN typeofvar variable; ****/
/*******************************/
/**** Base functions define ****/
/*******************************/
#if !defined(U64)
extern CPA_EXPORT SCR_tde_Anl_ReturnValue fn_eMSPrtSrcScriptCallback(SCR_tdst_File_Description *_p_stFile,char *_p_szName,char *_ap_szParams[],SCR_tde_Anl_Action _eAction);
extern CPA_EXPORT SCR_tde_Anl_ReturnValue fn_ePrtSysScriptCallback(SCR_tdst_File_Description *_p_stFile,char *_p_szName,char *_ap_szParams[],SCR_tde_Anl_Action _eAction);
extern CPA_EXPORT SCR_tde_Anl_ReturnValue fn_ePrtEnvScriptCallback(SCR_tdst_File_Description *_p_stFile,char *_p_szName,char *_ap_szParams[],SCR_tde_Anl_Action _eAction);
extern CPA_EXPORT SCR_tde_Anl_ReturnValue fn_ePrtGeneratorScriptCallBack(SCR_tdst_File_Description *_p_stFile,char *_p_szName,char *_ap_szParams[],SCR_tde_Anl_Action _eAction);
extern CPA_EXPORT SCR_tde_Anl_ReturnValue fn_ePrtSrcScriptCallBack(SCR_tdst_File_Description *_p_stFile,char *_p_szName,char *_ap_szParams[],SCR_tde_Anl_Action _eAction);
/*ANNECY VL 25/11/97{*/
extern CPA_EXPORT SCR_tde_Anl_ReturnValue fn_eFootPathScriptCallBack(SCR_tdst_File_Description *_p_stFile,char *_p_szName,char *_ap_szParams[],SCR_tde_Anl_Action _eAction);
/*ENDANNECY VL }*/
#endif /* U64 */
/*extern CPA_EXPORT void fn_vMSPrtSrcSaveMiniStructure(SCR_tdst_File_Description *p_stFile,struct tdstEngineObject_ *p_stObject);*/
extern CPA_EXPORT unsigned long fn_ulMSPrtSrcSizeOf();
extern CPA_EXPORT void fn_vMSPrtSrcAlloc(struct tdstEngineObject_ *p_stObject);
extern CPA_EXPORT MS_tdxHandleToMSPrtSrc fn_h_MSPrtSrcRealAlloc();
extern CPA_EXPORT void fn_vMSPrtSrcFree(struct tdstEngineObject_ *p_stObject);
extern CPA_EXPORT void fn_vMSPrtSrcInit(struct tdstEngineObject_ *p_stObject,enum tdeObjectTreeInit_ eObjectInit);
extern CPA_EXPORT void fn_vMSPrtSrcDesinit(struct tdstEngineObject_ *p_stObject,enum tdeObjectTreeInit_ eObjectInit);
extern CPA_EXPORT void fn_vMSPrtSrcCopyClone(struct tdstEngineObject_ * _p_stObjectDest,struct tdstEngineObject_ * _p_stObjectSrc);
/*********************************/
/**** Access functions define ****/
/*********************************/
extern CPA_EXPORT tdxHandleToParticleGenerator fn_p_stMSPrtSrcGetGenerator(MS_tdxHandleToMSPrtSrc h_MSPrtSrc);
extern CPA_EXPORT void fn_p_stMSPrtSrcSetGenerator(MS_tdxHandleToMSPrtSrc h_MSPrtSrc,tdxHandleToParticleGenerator _hPrtGenerator);
extern CPA_EXPORT unsigned char fn_ucMSPrtSrcGetGeneratorActivation(MS_tdxHandleToMSPrtSrc h_MSPrtSrc);
extern CPA_EXPORT void fn_vMSPrtSrcSetGeneratorActivation(MS_tdxHandleToMSPrtSrc h_MSPrtSrc,unsigned char _ucGeneratorActivation);
extern CPA_EXPORT GAM_tdxHandleToWaterStreakEffect fn_hMSPrtSrcGetWaterStreakGenerator(MS_tdxHandleToMSPrtSrc h_MSPrtSrc);
extern CPA_EXPORT void fn_vMSPrtSrcSetWaterStreakGenerator(MS_tdxHandleToMSPrtSrc h_MSPrtSrc,GAM_tdxHandleToWaterStreakEffect _hWaterStreakGenerator);
/*ANNECY VL 26/11/97{*/
extern CPA_EXPORT GAM_tdxHandleToFootPathEffect fn_hMSPrtSrcGetFootPath(MS_tdxHandleToMSPrtSrc h_MSPrtSrc);
extern CPA_EXPORT void fn_vMSPrtSrcSetFootPath(MS_tdxHandleToMSPrtSrc h_MSPrtSrc,GAM_tdxHandleToFootPathEffect _hfootPath );
/*ENDANNECY VL }*/
/**********************************************
*** Special functions for AI manipulations ***
**********************************************/
/* Generation Mode*/
extern CPA_EXPORT void fn_vMSPrtSrcSetGenerationModeNone(MS_tdxHandleToMSPrtSrc h_MSPrtSrc);
extern CPA_EXPORT void fn_vMSPrtSrcSetGenerationModeContinuous(MS_tdxHandleToMSPrtSrc h_MSPrtSrc);
extern CPA_EXPORT void fn_vMSPrtSrcSetGenerationModeCrenel(MS_tdxHandleToMSPrtSrc h_MSPrtSrc,ACP_tdxIndex _xNb1,ACP_tdxIndex _xNb2);
extern CPA_EXPORT void fn_vMSPrtSrcSetGenerationModeProbability(MS_tdxHandleToMSPrtSrc h_MSPrtSrc,MTH_tdxReal _xProbability);
/* Generation number*/
extern CPA_EXPORT void fn_vMSPrtSrcSetGenerationNumberConstant(MS_tdxHandleToMSPrtSrc h_MSPrtSrc,ACP_tdxIndex _xNumber);
extern CPA_EXPORT void fn_vMSPrtSrcSetGenerationNumberProbabilist(MS_tdxHandleToMSPrtSrc h_MSPrtSrc,ACP_tdxIndex _xMin,ACP_tdxIndex _xMax);
/* Speed, acceleration and range*/
extern CPA_EXPORT void fn_vMSPrtSrcSetGenerationSpeedAndSpeedRange(MS_tdxHandleToMSPrtSrc h_MSPrtSrc,MTH_tdxReal _xSpeed,MTH_tdxReal _xSpeedRange);
extern CPA_EXPORT void fn_vMSPrtSrcSetAccelerationOfEnvironment(MS_tdxHandleToMSPrtSrc h_MSPrtSrc,MTH3D_tdstVector * _p_stAcceleration,MTH_tdxReal _xAccelerationRange);
/* Generation Geometry*/
extern CPA_EXPORT void fn_vMSPrtSrcSetMiddlePointOfEnvironment(MS_tdxHandleToMSPrtSrc h_MSPrtSrc,MTH3D_tdstVector * _p_stMiddlePoint);
extern CPA_EXPORT void fn_vMSPrtSrcSetRadiusOfSphereEnvironment(MS_tdxHandleToMSPrtSrc h_MSPrtSrc,MTH_tdxReal _xRadius);
extern CPA_EXPORT void fn_vMSPrtSrcSetDimensionsOfBoxEnvironment(MS_tdxHandleToMSPrtSrc h_MSPrtSrc,MTH_tdxReal _xXSemiLength,MTH_tdxReal _xYSemiLength,MTH_tdxReal _xZSemiLength);
/* Particles life time*/
extern CPA_EXPORT void fn_vMSPrtSrcSetParticlesInfiniteLifeTime(MS_tdxHandleToMSPrtSrc h_MSPrtSrc);
extern CPA_EXPORT void fn_vMSPrtSrcSetParticlesConstantLifeTime(MS_tdxHandleToMSPrtSrc h_MSPrtSrc,MTH_tdxReal _xLifeTime);
extern CPA_EXPORT void fn_vMSPrtSrcSetParticlesProbabilistLifeTime(MS_tdxHandleToMSPrtSrc h_MSPrtSrc,MTH_tdxReal _xMinTime,MTH_tdxReal _xMaxTime);
/*************************************************/
/**** Access functions for particle generator ****/
/*************************************************/
extern CPA_EXPORT PRT_tdstParticlesSource * fn_p_stPrtGenGetSrc(tdxHandleToParticleGenerator _hPrtGenerator);
extern CPA_EXPORT void fn_vPrtGenSetSrc(tdxHandleToParticleGenerator _hPrtGenerator,PRT_tdstParticlesSource * _p_stSrc);
extern CPA_EXPORT PRT_tdstParticlesSystem * fn_p_stPrtGenGetPrtSys(tdxHandleToParticleGenerator _hPrtGenerator);
extern CPA_EXPORT void fn_vPrtGenSetPrtSys(tdxHandleToParticleGenerator _hPrtGenerator,PRT_tdstParticlesSystem * _p_stPrtSys);
extern CPA_EXPORT PRT_tdstParticlesEnvironment * fn_p_stPrtGenGetPrtEnv(tdxHandleToParticleGenerator _hPrtGenerator);
extern CPA_EXPORT void fn_vPrtGenSetPrtEnv(tdxHandleToParticleGenerator _hPrtGenerator,PRT_tdstParticlesEnvironment * _p_stPrtEnv);
extern CPA_EXPORT MTH3D_tdstVector * fn_p_stPrtGenGetMinPoint(tdxHandleToParticleGenerator _hPrtGenerator);
extern CPA_EXPORT void fn_vPrtGenSetMinPoint(tdxHandleToParticleGenerator _hPrtGenerator,MTH3D_tdstVector * _p_stMinPoint);
extern CPA_EXPORT MTH3D_tdstVector * fn_p_stPrtGenGetMaxPoint(tdxHandleToParticleGenerator _hPrtGenerator);
extern CPA_EXPORT void fn_vPrtGenSetMaxPoint(tdxHandleToParticleGenerator _hPrtGenerator,MTH3D_tdstVector * _p_stMaxPoint);
extern CPA_EXPORT unsigned char fn_ucPrtGenGetLinkValue(tdxHandleToParticleGenerator _hPrtGenerator);
extern CPA_EXPORT void fn_vPrtGenSetLinkValue(tdxHandleToParticleGenerator _hPrtGenerator,unsigned char _ucLinkValue);
extern CPA_EXPORT long fn_lPrtGenGetEnvironmentMask(tdxHandleToParticleGenerator _hPrtGenerator);
extern CPA_EXPORT void fn_vPrtGenSetEnvironmentMask(tdxHandleToParticleGenerator _hPrtGenerator,long _lEnvironmentMask);
/*ANNECY VL PRT 24/03/98{*/
extern CPA_EXPORT long fn_lPrtGenGetLinkedGenMask(tdxHandleToParticleGenerator _hPrtGenerator);
extern CPA_EXPORT void fn_vPrtGenSetLinkedGenMask(tdxHandleToParticleGenerator _hPrtGenerator,long _lLinkedGenMask);
extern CPA_EXPORT tdxHandleToParticleGenerator fn_hPrtGenGetLinkedGen(tdxHandleToParticleGenerator _hPrtGenerator);
extern CPA_EXPORT void fn_vPrtGenSetLinkedGen(tdxHandleToParticleGenerator _hPrtGenerator, tdxHandleToParticleGenerator _hLinkedGen);
/*ENDANNECY VL}*/
/**********************************/
/**** Special functions define ****/
/**********************************/
extern CPA_EXPORT void fn_vMSPrtSrcSourceGenerateParticles(HIE_tdxHandleToSuperObject _hCharacter);
extern CPA_EXPORT void fn_vMSPrtSrcInitMinMaxPoints(MS_tdxHandleToMSPrtSrc h_MSPrtSrc);
extern CPA_EXPORT void fn_vMSPrtSrcUpdateLinkedEnvironment(HIE_tdxHandleToSuperObject _hCharacter,MS_tdxHandleToMSPrtSrc h_MSPrtSrc);
extern CPA_EXPORT void fn_vRegisterAllGamParticlesCallBacks(void);
extern CPA_EXPORT void fn_vMSPrtSysPreDrawAllParticlesSystemsForCharacter(HIE_tdxHandleToSuperObject _hCharacter);
extern CPA_EXPORT void fn_vMSPrtSysTreatAllParticlesSystemsForCharacter(HIE_tdxHandleToSuperObject _hCharacter);
extern CPA_EXPORT void GAM_fn_vTreatAllParticlesGeneratorInActiveSector(HIE_tdxHandleToSuperObject _hSector);
extern CPA_EXPORT void GAM_fn_vPreDrawAllParticlesGeneratorInActiveSector(HIE_tdxHandleToSuperObject _hSector);
extern CPA_EXPORT tdxHandleToParticleGenerator fn_hParticleGeneratorAllocation(void);
/* JO 29/11/97*/
extern CPA_EXPORT tdxHandleToParticleGenerator fn_hParticleGeneratorCopyClone(tdxHandleToParticleGenerator _hPrtGen);
extern CPA_EXPORT void fn_vSetFactorForParticlesGeneration(float _fFactor);
extern CPA_EXPORT float fn_fGetFactorForParticlesGeneration(void);
/**********************/
/**** SAI function ****/
/**********************/
extern CPA_EXPORT void fn_vMSPrtSrcInitValueSAI(MS_tdxHandleToMSPrtSrc h_MSPrtSrc);
extern CPA_EXPORT void fn_vMSPrtSrcSavedValueSAI(MS_tdxHandleToMSPrtSrc h_MSPrtSrc);
extern CPA_EXPORT void fn_vMSPrtSrcFreeInitValueSAI(MS_tdxHandleToMSPrtSrc h_MSPrtSrc);
/*************************************/
/**** Access functions for Editor ****/
/*************************************/
#if defined(ACTIVE_EDITOR)
#endif /* ACTIVE_EDITOR */
/*NZO 25/09/97*/
#ifdef BIN_SaveBin
extern CPA_EXPORT unsigned long MSPtrSrc_fn_ulWriteBinaryBloc(unsigned long _ulStructAddress, char* _p_cDestBuffer);
#endif
/*No read function necessary.*/
/*PRT_fn_vCreateParticlesSource(&h_MSPrtSrc->p_stPrtSrc);*/
#if defined(__cplusplus)
}
#endif /* __cplusplus */
#endif /* __MSPrtSrc_H__ */
#endif /* D_THROW_PRT */