432 lines
19 KiB
C
432 lines
19 KiB
C
/*
|
|
0 1 2 3 4 5 6 7
|
|
01234567890123456789012345678901234567890123456789012345678901234567890123456789
|
|
--------------------------------------------------------------------------------
|
|
-- Description : Particles system
|
|
--------------------------------------------------------------------------------
|
|
-- Creation date : 12 jun 1997 Author : FPI
|
|
--------------------------------------------------------------------------------
|
|
*/
|
|
#ifndef D_THROW_PRT
|
|
|
|
#include "acp_base.h"
|
|
#include "MTH.h"
|
|
#include "RND.h"
|
|
#include "MEC.h"
|
|
#include "GMT.h"
|
|
#include "GEO.h"
|
|
#include "GLI.h"
|
|
#include "COL.h"
|
|
|
|
#include "PRT/SegmtPrt.h"
|
|
|
|
/*
|
|
--------------------------------------------------------------------------------
|
|
-- Description : Global variables
|
|
--------------------------------------------------------------------------------
|
|
*/
|
|
|
|
/*
|
|
--------------------------------------------------------------------------------
|
|
-- Description : Segment particles creation
|
|
--------------------------------------------------------------------------------
|
|
-- Creation date : 12 jun 1997 Author : FPI
|
|
--------------------------------------------------------------------------------
|
|
*/
|
|
|
|
void PRT_fn_vCreateSegmentParticles ( PRT_tdstParticlesSystem *_p_stParticlesSystem,
|
|
GMT_tdxHandleToGameMaterial _hMaterial )
|
|
{
|
|
ACP_tdxHandleOfElement hElementSegment;
|
|
ACP_tdxIndex xSegmentIndex;
|
|
GEO_tdstDoubledIndex stSegmentPoints;
|
|
GEO_tdstColor stColor;
|
|
PRT_tdstSegmentCommonData *p_stSegmentCommonData;
|
|
|
|
_p_stParticlesSystem->xParticlesType = PRT_C_xSegmentParticles;
|
|
|
|
/* Table de vitesse de particules */
|
|
GEO_M_CPAMalloc ( _p_stParticlesSystem->d_stSpeed,
|
|
MTH3D_tdstVector *,
|
|
sizeof ( MTH3D_tdstVector ) * _p_stParticlesSystem->xNbParticles,
|
|
E_uwGEONotEnoughtMemory );
|
|
|
|
GEO_M_CPAMalloc ( _p_stParticlesSystem->d_stListOfParticles,
|
|
void *,
|
|
sizeof ( PRT_tdstSegmentParticle ) * _p_stParticlesSystem->xNbParticles,
|
|
E_uwGEONotEnoughtMemory );
|
|
|
|
GEO_M_CPAMalloc ( _p_stParticlesSystem->p_stCommonData,
|
|
void *,
|
|
sizeof ( PRT_tdstSegmentCommonData ),
|
|
E_uwGEONotEnoughtMemory );
|
|
|
|
stColor.xR = 1.0f;
|
|
stColor.xG = 1.0f;
|
|
stColor.xB = 1.0f;
|
|
stColor.xA = 1.0f;
|
|
|
|
GEO_vCreateGeometricObject ( &(_p_stParticlesSystem->hParticlesSystemObject), (ACP_tdxIndex) (2*_p_stParticlesSystem->xNbParticles), (ACP_tdxIndex)1 );
|
|
GEO_xCreateElementLines ( _p_stParticlesSystem->hParticlesSystemObject, &hElementSegment, _p_stParticlesSystem->xNbParticles );
|
|
|
|
for ( xSegmentIndex = 0 ; xSegmentIndex < _p_stParticlesSystem->xNbParticles ; xSegmentIndex ++ )
|
|
{
|
|
stSegmentPoints.a2_xIndex[0] = 2*xSegmentIndex;
|
|
stSegmentPoints.a2_xIndex[1] = 2*xSegmentIndex + 1;
|
|
GEO_xSetIndexOfElementLines ( _p_stParticlesSystem->hParticlesSystemObject, hElementSegment, xSegmentIndex, &stSegmentPoints );
|
|
GEO_xSetGameMaterialOfElementLines ( _p_stParticlesSystem->hParticlesSystemObject, hElementSegment, xSegmentIndex, _hMaterial );
|
|
}
|
|
GEO_vEndCreateObject ( _p_stParticlesSystem->hParticlesSystemObject );
|
|
|
|
p_stSegmentCommonData = (PRT_tdstSegmentCommonData *)(_p_stParticlesSystem->p_stCommonData);
|
|
p_stSegmentCommonData->hMaterial = _hMaterial;
|
|
}
|
|
|
|
/*
|
|
--------------------------------------------------------------------------------
|
|
-- Description : Segment particles destruction
|
|
--------------------------------------------------------------------------------
|
|
-- Creation date : 12 jun 1997 Author : FPI
|
|
--------------------------------------------------------------------------------
|
|
*/
|
|
|
|
|
|
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
|
void PRT_fn_vDestructSegmentParticles ( PRT_tdstParticlesSystem *_p_stParticlesSystem )
|
|
{
|
|
_p_stParticlesSystem->xParticlesType = PRT_C_xNullParticles;
|
|
|
|
/* Table de vitesse de particules */
|
|
GEO_M_CPAFree ( _p_stParticlesSystem->d_stSpeed );
|
|
_p_stParticlesSystem->d_stSpeed = NULL;
|
|
|
|
GEO_M_CPAFree ( _p_stParticlesSystem->d_stListOfParticles );
|
|
_p_stParticlesSystem->d_stListOfParticles = NULL;
|
|
|
|
GEO_M_CPAFree ( _p_stParticlesSystem->p_stCommonData );
|
|
_p_stParticlesSystem->p_stCommonData = NULL;
|
|
|
|
GEO_vDeleteGeometricObject ( &(_p_stParticlesSystem->hParticlesSystemObject) );
|
|
_p_stParticlesSystem->hParticlesSystemObject = NULL;
|
|
}
|
|
|
|
/*
|
|
--------------------------------------------------------------------------------
|
|
-- Description :
|
|
--------------------------------------------------------------------------------
|
|
-- Creation date : 12 jun 1997 Author : FPI
|
|
--------------------------------------------------------------------------------
|
|
*/
|
|
|
|
void PRT_fn_vSetGameMaterialSegmentParticles ( PRT_tdstParticlesSystem *_p_stParticlesSystem,
|
|
GMT_tdxHandleToGameMaterial _hGameMaterial )
|
|
{
|
|
PRT_tdstSegmentCommonData *p_stSegmentCommonData;
|
|
|
|
p_stSegmentCommonData = (PRT_tdstSegmentCommonData *)(_p_stParticlesSystem->p_stCommonData);
|
|
p_stSegmentCommonData->hMaterial = _hGameMaterial;
|
|
}
|
|
|
|
/*
|
|
--------------------------------------------------------------------------------
|
|
-- Description :
|
|
--------------------------------------------------------------------------------
|
|
-- Creation date : 12 jun 1997 Author : FPI
|
|
--------------------------------------------------------------------------------
|
|
*/
|
|
|
|
void PRT_fn_vSetPointColorSegmentParticles ( PRT_tdstParticlesSystem *_p_stParticlesSystem,
|
|
GEO_tdstColor *_p_stColor )
|
|
{
|
|
PRT_tdstSegmentCommonData *p_stSegmentCommonData;
|
|
|
|
p_stSegmentCommonData = (PRT_tdstSegmentCommonData *)(_p_stParticlesSystem->p_stCommonData);
|
|
p_stSegmentCommonData->stPointColor = *_p_stColor;
|
|
}
|
|
|
|
/*
|
|
--------------------------------------------------------------------------------
|
|
-- Description :
|
|
--------------------------------------------------------------------------------
|
|
-- Creation date : 12 jun 1997 Author : FPI
|
|
--------------------------------------------------------------------------------
|
|
*/
|
|
|
|
void PRT_fn_vSetLastPointColorSegmentParticles ( PRT_tdstParticlesSystem *_p_stParticlesSystem,
|
|
GEO_tdstColor *_p_stColor )
|
|
{
|
|
PRT_tdstSegmentCommonData *p_stSegmentCommonData;
|
|
|
|
p_stSegmentCommonData = (PRT_tdstSegmentCommonData *)(_p_stParticlesSystem->p_stCommonData);
|
|
p_stSegmentCommonData->stLastPointColor = *_p_stColor;
|
|
}
|
|
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
|
|
|
|
|
/*
|
|
--------------------------------------------------------------------------------
|
|
-- Description :
|
|
--------------------------------------------------------------------------------
|
|
-- Creation date : 12 jun 1997 Author : FPI
|
|
--------------------------------------------------------------------------------
|
|
*/
|
|
|
|
void PRT_fn_vGenerateSegmentParticle ( MTH3D_tdstVector *_p_stParticlePosition,
|
|
MTH3D_tdstVector *_p_stParticleSpeed,
|
|
PRT_tdstSegmentParticle *_p_stSegmentParticle,
|
|
PRT_tdstSegmentCommonData *_p_stSegmentCommonData,
|
|
PRT_tdstParticlesSource *_p_stParticlesSource,
|
|
POS_tdstCompletePosition *_p_stSourceMatrix,
|
|
MTH_tdxReal _xTimeT )
|
|
{
|
|
MTH3D_tdstVector stSpeedVariation;
|
|
MTH_tdxReal xC1;
|
|
MTH_tdxReal xC2;
|
|
MTH_tdxReal xC3;
|
|
MTH_tdxReal xC4;
|
|
MTH3D_tdstVector stTrans;
|
|
|
|
/* vecteur variation de vitesse */
|
|
MTH3D_M_vSetVectorElements ( &stSpeedVariation,
|
|
RND_fn_xGetRealRandomValue ( 0, MTH_M_xNeg ( _p_stParticlesSource->xSpeedRange ), _p_stParticlesSource->xSpeedRange ),
|
|
RND_fn_xGetRealRandomValue ( 0, MTH_M_xNeg ( _p_stParticlesSource->xSpeedRange ), _p_stParticlesSource->xSpeedRange ),
|
|
RND_fn_xGetRealRandomValue ( 0, MTH_M_xNeg ( _p_stParticlesSource->xSpeedRange ), _p_stParticlesSource->xSpeedRange ) );
|
|
|
|
/* vitesse initiale */
|
|
MTH3D_M_vMullAddVector ( _p_stParticleSpeed, _p_stParticlesSource->xSpeed, &(_p_stParticlesSource->stNormal), &stSpeedVariation );
|
|
if ( (_p_stParticlesSource->ucLinkMode == PRT_C_ucRotationLink) || (_p_stParticlesSource->ucLinkMode == PRT_C_ucRotAndTransLink) )
|
|
{
|
|
POS_fn_vMulMatrixVector ( _p_stParticleSpeed, _p_stSourceMatrix, _p_stParticleSpeed );
|
|
}
|
|
|
|
/* position initiale */
|
|
if ( _p_stParticlesSource->ucGeometryMode == PRT_C_ucPoint )
|
|
{
|
|
MTH3D_M_vCopyVector ( _p_stParticlePosition, &(_p_stParticlesSource->stVertex1) );
|
|
}
|
|
else
|
|
if ( _p_stParticlesSource->ucGeometryMode == PRT_C_ucQuad )
|
|
{
|
|
/* genere les deux parametres */
|
|
xC2 = RND_fn_xGetRealRandomValue ( 0, MTH_C_ZERO, MTH_C_ONE );
|
|
xC3 = RND_fn_xGetRealRandomValue ( 0, MTH_C_ZERO, MTH_C_ONE );
|
|
xC1 = MTH_M_xSub ( MTH_M_xSub ( MTH_C_ONE, xC2 ), xC3 );
|
|
_p_stParticlePosition->xX = xC1*_p_stParticlesSource->stVertex1.xX + xC2*_p_stParticlesSource->stVertex2.xX + xC3*_p_stParticlesSource->stVertex3.xX;
|
|
_p_stParticlePosition->xY = xC1*_p_stParticlesSource->stVertex1.xY + xC2*_p_stParticlesSource->stVertex2.xY + xC3*_p_stParticlesSource->stVertex3.xY;
|
|
_p_stParticlePosition->xZ = xC1*_p_stParticlesSource->stVertex1.xZ + xC2*_p_stParticlesSource->stVertex2.xZ + xC3*_p_stParticlesSource->stVertex3.xZ;
|
|
}
|
|
else
|
|
if ( _p_stParticlesSource->ucGeometryMode == PRT_C_ucParallelepipede )
|
|
{
|
|
/* genere les deux parametres */
|
|
xC2 = RND_fn_xGetRealRandomValue ( 0, MTH_C_ZERO, MTH_C_ONE );
|
|
xC3 = RND_fn_xGetRealRandomValue ( 0, MTH_C_ZERO, MTH_C_ONE );
|
|
xC4 = RND_fn_xGetRealRandomValue ( 0, MTH_C_ZERO, MTH_C_ONE );
|
|
xC1 = MTH_M_xSub ( MTH_M_xSub ( MTH_M_xSub ( MTH_C_ONE, xC2 ), xC3 ), xC4 );
|
|
_p_stParticlePosition->xX = xC1*_p_stParticlesSource->stVertex1.xX + xC2*_p_stParticlesSource->stVertex2.xX + xC3*_p_stParticlesSource->stVertex3.xX + xC4*_p_stParticlesSource->stVertex4.xX;
|
|
_p_stParticlePosition->xY = xC1*_p_stParticlesSource->stVertex1.xY + xC2*_p_stParticlesSource->stVertex2.xY + xC3*_p_stParticlesSource->stVertex3.xY + xC4*_p_stParticlesSource->stVertex4.xY;
|
|
_p_stParticlePosition->xZ = xC1*_p_stParticlesSource->stVertex1.xZ + xC2*_p_stParticlesSource->stVertex2.xZ + xC3*_p_stParticlesSource->stVertex3.xZ + xC4*_p_stParticlesSource->stVertex4.xZ;
|
|
}
|
|
|
|
if ( _p_stParticlesSource->ucLinkMode == PRT_C_ucRotAndTransLink )
|
|
{
|
|
POS_fn_vMulMatrixVertex( _p_stParticlePosition, _p_stSourceMatrix, _p_stParticlePosition );
|
|
}
|
|
else
|
|
if ( _p_stParticlesSource->ucLinkMode == PRT_C_ucTranslationLink )
|
|
{
|
|
POS_fn_vGetTranslationVector( _p_stSourceMatrix, &stTrans );
|
|
MTH3D_M_vAddVector ( _p_stParticlePosition, &stTrans, _p_stParticlePosition );
|
|
}
|
|
else
|
|
if ( _p_stParticlesSource->ucLinkMode == PRT_C_ucRotationLink )
|
|
{
|
|
POS_fn_vMulMatrixVector ( _p_stParticlePosition, _p_stSourceMatrix, _p_stParticlePosition );
|
|
}
|
|
|
|
/* LastPos */
|
|
MTH3D_M_vCopyVector ( _p_stParticlePosition+1, _p_stParticlePosition );
|
|
|
|
/* couleur du segment */
|
|
_p_stSegmentParticle->stPointColor = _p_stSegmentCommonData->stPointColor;
|
|
_p_stSegmentParticle->stLastPointColor = _p_stSegmentCommonData->stLastPointColor;
|
|
|
|
/* DeathDate */
|
|
if ( _p_stParticlesSource->ucLifeMode == PRT_C_ucNoLifeTime )
|
|
{
|
|
_p_stSegmentParticle->xDeathDate = MTH_C_InfinitPlus;
|
|
}
|
|
else
|
|
if ( _p_stParticlesSource->ucLifeMode == PRT_C_ucConstantLifeTime )
|
|
{
|
|
_p_stSegmentParticle->xDeathDate = MTH_M_xAdd ( _xTimeT, _p_stParticlesSource->xMinTime );
|
|
}
|
|
else
|
|
if ( _p_stParticlesSource->ucLifeMode == PRT_C_ucProbabilistLifeTime )
|
|
{
|
|
_p_stSegmentParticle->xDeathDate = MTH_M_xAdd ( _xTimeT, RND_fn_xGetRealRandomValue ( 0, _p_stParticlesSource->xMinTime, _p_stParticlesSource->xMaxTime ) );
|
|
}
|
|
}
|
|
|
|
/*
|
|
--------------------------------------------------------------------------------
|
|
-- Description :
|
|
--------------------------------------------------------------------------------
|
|
-- Creation date : 12 jun 1997 Author : FPI
|
|
--------------------------------------------------------------------------------
|
|
*/
|
|
|
|
void PRT_fn_vMecaSegmentParticlesSystem ( PRT_tdstParticlesSystem *_p_stParticlesSystem,
|
|
PRT_tdstParticlesEnvironment *_p_stParticlesEnvironment,
|
|
MTH_tdxReal _xTimeT,
|
|
MTH_tdxReal _xDeltaT )
|
|
{
|
|
PRT_tdstSegmentParticle *p_stSegmentParticle;
|
|
PRT_tdstSegmentParticle *p_stLastSegmentParticle;
|
|
MTH3D_tdstVector *p_stParticlePosition;
|
|
MTH3D_tdstVector *p_stParticleLastPosition;
|
|
MTH3D_tdstVector *p_stLastParticlePosition;
|
|
MTH3D_tdstVector *p_stLastParticleLastPosition;
|
|
MTH3D_tdstVector *p_stParticleSpeed;
|
|
MTH3D_tdstVector *p_stLastParticleSpeed;
|
|
ACP_tdxBool bAlivedParticle;
|
|
MTH3D_tdstVector stAccelerationVariation;
|
|
|
|
p_stSegmentParticle = (PRT_tdstSegmentParticle *)(_p_stParticlesSystem->d_stListOfParticles);
|
|
p_stLastSegmentParticle = p_stSegmentParticle + _p_stParticlesSystem->xNbActiveParticles;
|
|
p_stParticlePosition = _p_stParticlesSystem->hParticlesSystemObject->d_stListOfPoints;
|
|
p_stParticleLastPosition = p_stParticlePosition + 1;
|
|
p_stLastParticlePosition = p_stParticlePosition + 2*_p_stParticlesSystem->xNbActiveParticles;
|
|
p_stLastParticleLastPosition = p_stLastParticlePosition + 1;
|
|
p_stParticleSpeed = _p_stParticlesSystem->d_stSpeed;
|
|
p_stLastParticleSpeed = p_stParticleSpeed + _p_stParticlesSystem->xNbActiveParticles;
|
|
|
|
while ( p_stSegmentParticle != p_stLastSegmentParticle )
|
|
{
|
|
/* LastPos */
|
|
MTH3D_M_vCopyVector ( p_stParticleLastPosition, p_stParticlePosition );
|
|
|
|
/* appliquer la meca */
|
|
/* vecteur variation de l acceleration */
|
|
MTH3D_M_vSetVectorElements ( &stAccelerationVariation,
|
|
RND_fn_xGetRealRandomValue ( 0, MTH_M_xNeg ( _p_stParticlesEnvironment->xAccelerationRange ), _p_stParticlesEnvironment->xAccelerationRange ),
|
|
RND_fn_xGetRealRandomValue ( 0, MTH_M_xNeg ( _p_stParticlesEnvironment->xAccelerationRange ), _p_stParticlesEnvironment->xAccelerationRange ),
|
|
RND_fn_xGetRealRandomValue ( 0, MTH_M_xNeg ( _p_stParticlesEnvironment->xAccelerationRange ), _p_stParticlesEnvironment->xAccelerationRange ) );
|
|
|
|
MTH3D_M_vAddVector ( &stAccelerationVariation, &(_p_stParticlesEnvironment->stAcceleration), &stAccelerationVariation );
|
|
|
|
/* Vit t = f( Vit t-1, Pos t-1, Accel t ) */
|
|
MTH3D_M_vMullAddVector ( p_stParticleSpeed, _xDeltaT, &stAccelerationVariation, p_stParticleSpeed );
|
|
/* Pos t = f( Vit t, Pos t-1, Accel t ) */
|
|
MTH3D_M_vMullAddVector ( p_stParticlePosition, _xDeltaT, p_stParticleSpeed, p_stParticlePosition );
|
|
|
|
bAlivedParticle = MTH_M_bGreater ( p_stSegmentParticle->xDeathDate, _xTimeT );
|
|
if ( bAlivedParticle )
|
|
{
|
|
bAlivedParticle = ( _p_stParticlesEnvironment->ulEnvType == PRT_C_ulAlignedBoxEnv ) ?
|
|
INT_fn_bGetInclusionPointInBox ( p_stParticlePosition,
|
|
&(_p_stParticlesEnvironment->stMinPoint),
|
|
&(_p_stParticlesEnvironment->stMaxPoint) ) :
|
|
INT_fn_bGetInclusionPointInSphere ( p_stParticlePosition,
|
|
&(_p_stParticlesEnvironment->stSphereCenter),
|
|
_p_stParticlesEnvironment->xRadius );
|
|
}
|
|
|
|
if ( bAlivedParticle )
|
|
{
|
|
p_stSegmentParticle ++;
|
|
p_stParticlePosition ++;
|
|
p_stParticlePosition ++;
|
|
p_stParticleLastPosition ++;
|
|
p_stParticleLastPosition ++;
|
|
p_stParticleSpeed ++;
|
|
}
|
|
else
|
|
{
|
|
_p_stParticlesSystem->xNbActiveParticles --;
|
|
p_stLastSegmentParticle --;
|
|
|
|
if ( p_stSegmentParticle != p_stLastSegmentParticle )
|
|
{
|
|
*p_stSegmentParticle = *p_stLastSegmentParticle;
|
|
p_stLastParticlePosition --;
|
|
p_stLastParticlePosition --;
|
|
*p_stParticlePosition = *p_stLastParticlePosition;
|
|
p_stLastParticleLastPosition --;
|
|
p_stLastParticleLastPosition --;
|
|
*p_stParticleLastPosition = *p_stLastParticleLastPosition;
|
|
p_stLastParticleSpeed --;
|
|
*p_stParticleSpeed = *p_stLastParticleSpeed;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/*
|
|
--------------------------------------------------------------------------------
|
|
-- Description :
|
|
--------------------------------------------------------------------------------
|
|
-- Creation date : 12 jun 1997 Author : FPI
|
|
--------------------------------------------------------------------------------
|
|
*/
|
|
|
|
void PRT_fn_vSourceGenerateSegmentParticle ( PRT_tdstParticlesSystem *_p_stParticlesSystem,
|
|
PRT_tdstParticlesSource *_p_stParticlesSource,
|
|
POS_tdstCompletePosition *_p_stSourceMatrix,
|
|
MTH_tdxReal _xTimeT )
|
|
{
|
|
PRT_tdstSegmentParticle *p_stSegmentParticle;
|
|
MTH3D_tdstVector *p_stParticlePosition;
|
|
MTH3D_tdstVector *p_stParticleSpeed;
|
|
long lNbParticlesToInject;
|
|
ACP_tdxIndex xIndex;
|
|
|
|
/* generation de particules ? */
|
|
if ( PRT_fn_bComputeParticlesGeneration ( _p_stParticlesSource ) )
|
|
{
|
|
lNbParticlesToInject = MTH_M_xRealToLong ( MTH_M_xMul ( MTH_M_xLongToReal ( PRT_fn_xComputeNbParticlesToInject ( _p_stParticlesSource ) ), PRT_g_xNbParticlesFactor ) );
|
|
|
|
if ( lNbParticlesToInject > 0 )
|
|
{
|
|
if ( _p_stParticlesSystem->xNbActiveParticles + lNbParticlesToInject > _p_stParticlesSystem->xNbParticles )
|
|
{
|
|
lNbParticlesToInject = _p_stParticlesSystem->xNbParticles - _p_stParticlesSystem->xNbActiveParticles;
|
|
}
|
|
|
|
p_stSegmentParticle = (PRT_tdstSegmentParticle *)(_p_stParticlesSystem->d_stListOfParticles) + _p_stParticlesSystem->xNbActiveParticles;
|
|
p_stParticlePosition = _p_stParticlesSystem->hParticlesSystemObject->d_stListOfPoints + 2*_p_stParticlesSystem->xNbActiveParticles;
|
|
p_stParticleSpeed = _p_stParticlesSystem->d_stSpeed + _p_stParticlesSystem->xNbActiveParticles;
|
|
_p_stParticlesSystem->xNbActiveParticles += (short)lNbParticlesToInject;
|
|
|
|
for ( xIndex = 0 ; xIndex < lNbParticlesToInject ; xIndex ++ )
|
|
{
|
|
/* reset meca */
|
|
PRT_fn_vGenerateSegmentParticle ( p_stParticlePosition, p_stParticleSpeed,
|
|
p_stSegmentParticle, (PRT_tdstSegmentCommonData *)(_p_stParticlesSystem->p_stCommonData),
|
|
_p_stParticlesSource, _p_stSourceMatrix, _xTimeT );
|
|
|
|
p_stSegmentParticle ++;
|
|
p_stParticlePosition ++;
|
|
p_stParticlePosition ++;
|
|
p_stParticleSpeed ++;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/*
|
|
--------------------------------------------------------------------------------
|
|
-- Description :
|
|
--------------------------------------------------------------------------------
|
|
-- Creation date : 12 jun 1997 Author : FPI
|
|
--------------------------------------------------------------------------------
|
|
*/
|
|
|
|
void PRT_fn_vPreDrawSegmentParticlesSystem ( PRT_tdstParticlesSystem *_p_stParticlesSystem )
|
|
{
|
|
_p_stParticlesSystem->hParticlesSystemObject->xNbPoints = 2*_p_stParticlesSystem->xNbActiveParticles;
|
|
((GEO_tdstElementLines *)(_p_stParticlesSystem->hParticlesSystemObject->d_stListOfElements[0]))->xNbLines = _p_stParticlesSystem->xNbActiveParticles;
|
|
}
|
|
|
|
#endif /* D_THROW_PRT */
|