A number of unsubstantiated claims have been made in this thread regarding particle size limits.
Some of these claims directly contradict the information given on the
http://wiki.secondlife.com/wiki/LlParticleSystem and
http://rpgstats.com/wiki/index.php?title=LlParticleSystem wiki's.
As far as I can see, no maximum dimension is given on the wiki's for PSYS_SRC_BURST_RADIUS. The only reference I can remember seeing was of 30m in documentation for a Particle Generator. But perhaps that was a limitation of the product itself, rather than the particle system.
The following script tests the maximum values that can be passed to PSYS_PART_START/END_SCALE and PSYS_SRC_BURST_RADIUS and still make a difference to the particle emission. To be clear, a script may indeed compile and run if an out-of-bounds value is passed, but does it actually affect the particle emission?
This script gradiently increases the values passed to these parameters, and the tester can then observe that actual affect on the particle emission. The results of my observations are given after the code.
// ~ PARTICLE SIZE LIMITS TESTER ~
// *** This script gradiently increases the values being passed to
// PSYS_PART_START_SCALE, PSYS_PART_END_SCALE and PSYS_SRC_BURST_RADIUS
// so that the tester can observe at what point increasing the values stops making a
// difference to the emitted particle effect ***
// see http://forums.secondlife.com/showthread.php?t=226722.
// Various unsubstanstiated claims are made for the maximum values that can be passed
// to PSYS_PART_START_SCALE,PSYS_PART_END_SCALE and
// PSYS_SRC_BURST_RADIUS and still continue to affect the particle emmision.
// Some of these claims directly contradict the information given in the llParticleSystem
// pages on both the http://wiki.secondlife.com/wiki/LlParticleSystem and
// http://rpgstats.com/wiki/index.php?title=LlParticleSystem wiki's
//TOUCH to switch ON and OFF
integer Power = FALSE;
float Size = 1.00;
float Height = 5.00;
key ObjectOwner = "";
string TestType = "Testing _START/END_SCALE";
ParticleRadius()
{
llInstantMessage(ObjectOwner, TestType + ":_RADIUS_BURST is set to " + (string)llFloor(Height) + "m.");
llParticleSystem( [
PSYS_PART_START_SCALE,<3.0, 3.0, 0.0>,
PSYS_PART_END_SCALE,<3.0, 3.0, 0.0>,
PSYS_PART_START_COLOR,<1.0,0.0,0.0>,
PSYS_PART_END_COLOR,<1.0,0.0,0.0>,
PSYS_PART_START_ALPHA,1.0,
PSYS_PART_END_ALPHA,1.0,
PSYS_SRC_BURST_PART_COUNT,30,
PSYS_SRC_BURST_RATE,0.09,
PSYS_PART_MAX_AGE,5.0,
PSYS_SRC_MAX_AGE,0.0,
PSYS_SRC_PATTERN,4,
PSYS_SRC_BURST_RADIUS, Height,
PSYS_SRC_ANGLE_BEGIN,0.0,
PSYS_SRC_ANGLE_END,3.14,
PSYS_SRC_OMEGA,<0.0, 0.0, 0.0>,
PSYS_SRC_ACCEL,<0.0, 0.0, 0.0>,
PSYS_SRC_BURST_SPEED_MIN,0.01,
PSYS_SRC_BURST_SPEED_MAX,0.02,
PSYS_SRC_TARGET_KEY,llGetKey(),
PSYS_PART_FLAGS, ( 295 ) ]);
}
ParticleSize()
{
llInstantMessage(ObjectOwner, TestType + ": _START_SCALE_ & _END_SCALE_ are set to " + (string)llFloor(Size) + "m.");
llParticleSystem([
PSYS_PART_FLAGS, 0,
PSYS_SRC_PATTERN, 4,
PSYS_PART_START_ALPHA, 0.50,
PSYS_PART_END_ALPHA, 0.50,
PSYS_PART_START_COLOR, <1.0,1.0,1.0>,
PSYS_PART_END_COLOR, <1.0,1.0,1.0>,
PSYS_PART_START_SCALE, <Size,Size,0.00>,
PSYS_PART_END_SCALE, <Size,Size,0.00>,
PSYS_PART_MAX_AGE, 1.20,
PSYS_SRC_MAX_AGE, 0.00,
PSYS_SRC_ACCEL, <0.0,0.0,0.0>,
PSYS_SRC_ANGLE_BEGIN, 0.00,
PSYS_SRC_ANGLE_END, 0.00,
PSYS_SRC_BURST_PART_COUNT, 8,
PSYS_SRC_BURST_RADIUS, 5.0,
PSYS_SRC_BURST_RATE, 0.10,
PSYS_SRC_BURST_SPEED_MIN, 0.00,
PSYS_SRC_BURST_SPEED_MAX, 0.00,
PSYS_SRC_OMEGA, <0.00,0.00,0.00>,
PSYS_SRC_TEXTURE, (key)"d02531dd-491c-45b5-2cab-2e47ec81ec0d"]);
}
ShutDown()
{
Power = FALSE;
llParticleSystem([]);
llSetTimerEvent(0.00);
Size = 1.00;
Height = 5.00;
}
default
{
on_rez(integer start_param)
{
// reset script on rez
llResetScript();
}
state_entry()
{
//initialise system
ShutDown();
ObjectOwner = llGetOwner();
llInstantMessage(ObjectOwner, "TOUCH to switch ON and OFF.");
}
touch_start(integer total_number)
{
if (Power)
{
// touch to OFF
ShutDown();
llInstantMessage(ObjectOwner, "Switched OFF");
}
else
{
// touch to ON
Power = TRUE;
llInstantMessage(ObjectOwner, "Switched ON");
ParticleSize();
llSetTimerEvent(15.0);
}
}
timer()
{
// every 15 seconds:
if (TestType == "Testing _START/END_SCALE")
{
// increase the value passed to _START_SCALE & _END_SCALE by 1.00m
Size = Size + 1.00;
ParticleSize();
if (Size > 9.0)
{
TestType = "Testing _BURST_RADIUS";
}
}
else
{
// increase the value passed to _BURST_RADIUS by 5.0m
Height = Height + 5.00;
ParticleRadius();
}
}
//default end
}
OBSERVATIONS:
The maximum vector passed to PSYS_PART_START_SCALE and PSYS_PART_END_SCALE that actually affected a change on the particle emission was <4.0, 4.0, 0.0 > (as stated in both wiki's)
The maximum float passed to PSYS_SRC_BURST_RADIUS that actually affected a change on the particle emission was 50.00.
Would be happy if others could verify or refute these findings
