mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-07-15 08:34:40 +00:00
Fix memory leak (ParticleData and ParticleEmitterData) on using TypeValidator class.
This fixes issue #154
This commit is contained in:
parent
9b2caeed6a
commit
82de08b57a
2 changed files with 24 additions and 13 deletions
|
|
@ -128,16 +128,20 @@ ParticleData::~ParticleData()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FRangeValidator dragCoefFValidator(0.f, 5.f);
|
||||||
|
FRangeValidator gravCoefFValidator(-10.f, 10.f);
|
||||||
|
FRangeValidator spinRandFValidator(-1000.f, 1000.f);
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// initPersistFields
|
// initPersistFields
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
void ParticleData::initPersistFields()
|
void ParticleData::initPersistFields()
|
||||||
{
|
{
|
||||||
addFieldV( "dragCoefficient", TYPEID< F32 >(), Offset(dragCoefficient, ParticleData), new FRangeValidator(0, 5),
|
addFieldV( "dragCoefficient", TYPEID< F32 >(), Offset(dragCoefficient, ParticleData), &dragCoefFValidator,
|
||||||
"Particle physics drag amount." );
|
"Particle physics drag amount." );
|
||||||
addField( "windCoefficient", TYPEID< F32 >(), Offset(windCoefficient, ParticleData),
|
addField( "windCoefficient", TYPEID< F32 >(), Offset(windCoefficient, ParticleData),
|
||||||
"Strength of wind on the particles." );
|
"Strength of wind on the particles." );
|
||||||
addFieldV( "gravityCoefficient", TYPEID< F32 >(), Offset(gravityCoefficient, ParticleData), new FRangeValidator(-10, 10),
|
addFieldV( "gravityCoefficient", TYPEID< F32 >(), Offset(gravityCoefficient, ParticleData), &gravCoefFValidator,
|
||||||
"Strength of gravity on the particles." );
|
"Strength of gravity on the particles." );
|
||||||
addFieldV( "inheritedVelFactor", TYPEID< F32 >(), Offset(inheritedVelFactor, ParticleData), &CommonValidators::NormalizedFloat,
|
addFieldV( "inheritedVelFactor", TYPEID< F32 >(), Offset(inheritedVelFactor, ParticleData), &CommonValidators::NormalizedFloat,
|
||||||
"Amount of emitter velocity to add to particle initial velocity." );
|
"Amount of emitter velocity to add to particle initial velocity." );
|
||||||
|
|
@ -149,9 +153,9 @@ void ParticleData::initPersistFields()
|
||||||
"Variance in lifetime of particle, from 0 - lifetimeMS." );
|
"Variance in lifetime of particle, from 0 - lifetimeMS." );
|
||||||
addField( "spinSpeed", TYPEID< F32 >(), Offset(spinSpeed, ParticleData),
|
addField( "spinSpeed", TYPEID< F32 >(), Offset(spinSpeed, ParticleData),
|
||||||
"Speed at which to spin the particle." );
|
"Speed at which to spin the particle." );
|
||||||
addFieldV( "spinRandomMin", TYPEID< F32 >(), Offset(spinRandomMin, ParticleData), new FRangeValidator(-1000.f, 1000.f),
|
addFieldV( "spinRandomMin", TYPEID< F32 >(), Offset(spinRandomMin, ParticleData), &spinRandFValidator,
|
||||||
"Minimum allowed spin speed of this particle, between -1000 and spinRandomMax." );
|
"Minimum allowed spin speed of this particle, between -1000 and spinRandomMax." );
|
||||||
addFieldV( "spinRandomMax", TYPEID< F32 >(), Offset(spinRandomMax, ParticleData), new FRangeValidator(-1000.f, 1000.f),
|
addFieldV( "spinRandomMax", TYPEID< F32 >(), Offset(spinRandomMax, ParticleData), &spinRandFValidator,
|
||||||
"Maximum allowed spin speed of this particle, between spinRandomMin and 1000." );
|
"Maximum allowed spin speed of this particle, between spinRandomMin and 1000." );
|
||||||
addField( "useInvAlpha", TYPEID< bool >(), Offset(useInvAlpha, ParticleData),
|
addField( "useInvAlpha", TYPEID< bool >(), Offset(useInvAlpha, ParticleData),
|
||||||
"@brief Controls how particles blend with the scene.\n\n"
|
"@brief Controls how particles blend with the scene.\n\n"
|
||||||
|
|
|
||||||
|
|
@ -171,6 +171,13 @@ ImplementEnumType( ParticleBlendStyle,
|
||||||
{ ParticleRenderInst::BlendPremultAlpha, "PREMULTALPHA", "Color blends with the colors of the imagemap rather than the alpha.\n" },
|
{ ParticleRenderInst::BlendPremultAlpha, "PREMULTALPHA", "Color blends with the colors of the imagemap rather than the alpha.\n" },
|
||||||
EndImplementEnumType;
|
EndImplementEnumType;
|
||||||
|
|
||||||
|
IRangeValidator ejectPeriodIValidator(1, 2047);
|
||||||
|
IRangeValidator periodVarianceIValidator(0, 2047);
|
||||||
|
FRangeValidator ejectionFValidator(0.f, 655.35f);
|
||||||
|
FRangeValidator velVarianceFValidator(0.f, 163.83f);
|
||||||
|
FRangeValidator thetaFValidator(0.f, 180.f);
|
||||||
|
FRangeValidator phiFValidator(0.f, 360.f);
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// initPersistFields
|
// initPersistFields
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
@ -178,31 +185,31 @@ void ParticleEmitterData::initPersistFields()
|
||||||
{
|
{
|
||||||
addGroup( "ParticleEmitterData" );
|
addGroup( "ParticleEmitterData" );
|
||||||
|
|
||||||
addFieldV("ejectionPeriodMS", TYPEID< S32 >(), Offset(ejectionPeriodMS, ParticleEmitterData), new IRangeValidator(1, 2047),
|
addFieldV("ejectionPeriodMS", TYPEID< S32 >(), Offset(ejectionPeriodMS, ParticleEmitterData), &ejectPeriodIValidator,
|
||||||
"Time (in milliseconds) between each particle ejection." );
|
"Time (in milliseconds) between each particle ejection." );
|
||||||
|
|
||||||
addFieldV("periodVarianceMS", TYPEID< S32 >(), Offset(periodVarianceMS, ParticleEmitterData), new IRangeValidator(0, 2047),
|
addFieldV("periodVarianceMS", TYPEID< S32 >(), Offset(periodVarianceMS, ParticleEmitterData), &periodVarianceIValidator,
|
||||||
"Variance in ejection period, from 1 - ejectionPeriodMS." );
|
"Variance in ejection period, from 1 - ejectionPeriodMS." );
|
||||||
|
|
||||||
addFieldV( "ejectionVelocity", TYPEID< F32 >(), Offset(ejectionVelocity, ParticleEmitterData), new FRangeValidator(0, 655.35f),
|
addFieldV( "ejectionVelocity", TYPEID< F32 >(), Offset(ejectionVelocity, ParticleEmitterData), &ejectionFValidator,
|
||||||
"Particle ejection velocity." );
|
"Particle ejection velocity." );
|
||||||
|
|
||||||
addFieldV( "velocityVariance", TYPEID< F32 >(), Offset(velocityVariance, ParticleEmitterData), new FRangeValidator(0, 163.83f),
|
addFieldV( "velocityVariance", TYPEID< F32 >(), Offset(velocityVariance, ParticleEmitterData), &velVarianceFValidator,
|
||||||
"Variance for ejection velocity, from 0 - ejectionVelocity." );
|
"Variance for ejection velocity, from 0 - ejectionVelocity." );
|
||||||
|
|
||||||
addFieldV( "ejectionOffset", TYPEID< F32 >(), Offset(ejectionOffset, ParticleEmitterData), new FRangeValidator(0, 655.35f),
|
addFieldV( "ejectionOffset", TYPEID< F32 >(), Offset(ejectionOffset, ParticleEmitterData), &ejectionFValidator,
|
||||||
"Distance along ejection Z axis from which to eject particles." );
|
"Distance along ejection Z axis from which to eject particles." );
|
||||||
|
|
||||||
addFieldV( "thetaMin", TYPEID< F32 >(), Offset(thetaMin, ParticleEmitterData), new FRangeValidator(0, 180.0f),
|
addFieldV( "thetaMin", TYPEID< F32 >(), Offset(thetaMin, ParticleEmitterData), &thetaFValidator,
|
||||||
"Minimum angle, from the horizontal plane, to eject from." );
|
"Minimum angle, from the horizontal plane, to eject from." );
|
||||||
|
|
||||||
addFieldV( "thetaMax", TYPEID< F32 >(), Offset(thetaMax, ParticleEmitterData), new FRangeValidator(0, 180.0f),
|
addFieldV( "thetaMax", TYPEID< F32 >(), Offset(thetaMax, ParticleEmitterData), &thetaFValidator,
|
||||||
"Maximum angle, from the horizontal plane, to eject particles from." );
|
"Maximum angle, from the horizontal plane, to eject particles from." );
|
||||||
|
|
||||||
addFieldV( "phiReferenceVel", TYPEID< F32 >(), Offset(phiReferenceVel, ParticleEmitterData), new FRangeValidator(0, 360.0f),
|
addFieldV( "phiReferenceVel", TYPEID< F32 >(), Offset(phiReferenceVel, ParticleEmitterData), &phiFValidator,
|
||||||
"Reference angle, from the vertical plane, to eject particles from." );
|
"Reference angle, from the vertical plane, to eject particles from." );
|
||||||
|
|
||||||
addFieldV( "phiVariance", TYPEID< F32 >(), Offset(phiVariance, ParticleEmitterData), new FRangeValidator(0, 360.0f),
|
addFieldV( "phiVariance", TYPEID< F32 >(), Offset(phiVariance, ParticleEmitterData), &phiFValidator,
|
||||||
"Variance from the reference angle, from 0 - 360." );
|
"Variance from the reference angle, from 0 - 360." );
|
||||||
|
|
||||||
addField( "softnessDistance", TYPEID< F32 >(), Offset(softnessDistance, ParticleEmitterData),
|
addField( "softnessDistance", TYPEID< F32 >(), Offset(softnessDistance, ParticleEmitterData),
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue