Jump to content
Sign in to follow this  
Rydygier

CfgCloudlets - weird particle effect misbehavior (1.52 stable)

Recommended Posts

I've configured some particle effect this way:

class CfgPatches 
	{
	class RYD_PE_TEST
		{
		units[] = {};
		weapons[] = {};
		requiredAddons[] = {};
		requiredVersion = 0.1;
		};
	};


class CfgCloudlets
	{
	class parteffectest
		{
		interval = 0.5;      //interval of particle's creation
		circleRadius = 0;			     //radius around emitter where particles are created
		circleVelocity[] = {0, 0, 0};	     //direction and speed of movement of particle's circle
		particleShape = \A3\data_f\ParticleEffects\Universal\Universal;		//path and name of file
		particleFSNtieth = 16;		     //coef; size of one particle's texture in pixels = 2048/coef
		particleFSIndex = 12;		     //index of start line on texture
		particleFSFrameCount = 8;		     //count of pictures in animation (starts on first picture in defined line - particleFSIndex)
		particleFSLoop = 1;		             //loop of animation (0 - false, 1 - true)
		angle = 0;				     //angle of particle
		angleVar = 0;			     //variability in angle of particle

		animationName = "";
		particleType = "Billboard";	             //type of animation (Billboard (2D), Spaceobject (3D))
		timerPeriod = 1;			     //interval of timer (how often is called script defined in parameter onTimerScript)
		lifeTime = 5;			     //life time of particle in seconds
		moveVelocity[] = {0, 0, 0};	             //direction and speed of movement of particle [x,z,y]
		rotationVelocity = 0;		     //direction and speed of rotation of particle [x,z,y]
		weight = 1;			             //weight of particle (kg)
		volume = 1;			             //volume of particle (m3)
		rubbing = 1;			     //how much is particle affected by wind/air resistance
		size[] = {1};			     //size of particle during the life
		color[] = {{1,1,1,1}};	     //color of particle during the life (r,g,b,a)
		animationSpeed[] = {1};		     //speed of animation (number of animation cycles in 1s)
		randomDirectionPeriod = 0;		     //interval of random speed change
		randomDirectionIntensity = 0;	     //intensity of random speed change
		onTimerScript = "";		             //script triggered by timer (in variable "this" is stored position of particle)
		beforeDestroyScript = "";		     //script triggered before destroying of particle (in variable "this" is stored position of particle)
		lifeTimeVar = 0;			     //variability in lifetime of particle
		position[] = {0, 0, 0};                  //defines position of effect
		positionVar[] = {0, 0, 0};		     //variability in position of particle (each part of vector has it's own variability)
		positionVarConst[] = {0, 0, 0};	     //variability in position of particle (variablity of all parts of vector is the same)
		moveVelocityVar[] = {0, 0, 0};	     //variability in direction and speed of particle (each part of vector has it's own variability)
		moveVelocityVarConst[] = {0, 0, 0};      //variability in direction and speed of particle (variablity of all parts of vector is the same)
		rotationVelocityVar = 0;		     //variability in rotation of particle
		sizeVar = 0;			     //variability in size of particle
		colorVar[] = {0, 0, 0, 0};		     //variability in color of particle
		randomDirectionPeriodVar = 0;	     //variability in interval of random speed change
		randomDirectionIntensityVar = 0;	     //variability in intensity of random speed change
		sizeCoef = 1;                            //size of particle = size parameter value * this coef (works only in some effects)
		colorCoef[]={1,1,1,1};                   //color of particle = color parameter value * this coef (works only in some effects)
		animationSpeedCoef = 1;                  //animation speed of particle = animationSpeed parameter value * this coef (works only in some effects)

		destroyOnWaterSurface = 1;               //particle can exist - only underwater (-1), only above the water (1), everywhere (0)
		destroyOnWaterSurfaceOffset = 0;         //offset of water surface in destroyOnWaterSurface parameter
		onSurface = 0;                        //placing of particle on (water) surface on start of it's existence, default value is true, works only if circleRadius > 0
		keepOnSurface = 1;                   //true for particle is stay on water surface - see notes bellow
		surfaceOffset = 0;                       //offset of water surface in keepOnSurface parameter
		bounceOnSurface = -1;                   //coef of speed's loosing in collision with ground, 0-1 for collisions, -1 disable collision
		bounceOnSurfaceVar = 0.0;                //variability in speed's loosing in collision with ground
		postEffects = "";            //effect triggered before destroying of particle
		particleEffects = ""; //emitter of effect defined in this parameter is attached to each particle
		blockAIVisibility = 0;                //sets if particles are in the AI visibility tests (default true) - false for better performance but AI is able to see through particles
		emissiveColor[] = {{0,0,0,0}};  //sets emissivity of particle, 4th number has no meaning for now

		//--- fire damage related parameters (optional)
		//damageType="Fire";                       //damage type, only available option is "Fire" so far
		//coreIntensity = 1.25;                    //damage coeficient in the center of fire
		//coreDistance = 3.0;                      //how far can unit get damage
		//damageTime = 0.1;                        //how often is unit getting damage 
		};		
	};

and ran it via:

sleep 1;

_pe = "#particlesource" createVehicleLocal (getPosATL player);
_pe setParticleClass "parteffectest";			
_pe attachTo [player,[2,10,2]];

But instead of expected column of particles going vertically up, I got just blinking twice per second particle shape at spawn position. No other mods, except the above. Then I added second effect this way:

_pe = "#particlesource" createVehicleLocal (getPosATL player);
_pe setParticleParams [["\a3\Data_f\ParticleEffects\Universal\Universal",16,12,8,1],"","Billboard",1,5,[0,0,0],[0,0,0],1,1,1,1,[1],[[1,1,1,1]],[1],0,0,"","",_pe,0,false,1,[[0,0,0,0]]];
_pe setDropInterval 0.5;		
_pe attachTo [player,[-2,10,2]];

and this time all was OK. So, what makes such a difference? What's the problem with configured particle effect life time? Did I missed something, or there is some problem with this feature? AFAIR it was working fine 1-2 years ago...

 

Here is short footage with both effects together for optimal comparison:

 

https://youtu.be/iN2wqB13I70

 

Left - scripted pe; right - misbehaving configured pe. 

 

All the repro stuff here

 

Tried also to overwrite via setParticleParams values for configured pe, but no visible change as for life time. 

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

×