03-15-2015, 08:11 PM
Now you too can be a Lantern
PHP Code:
integer effectFlags=0;
integer running=TRUE;
integer colorInterpolation = TRUE;
//////////////////////////////////////////////
vector startColor = <0,50,0>;
//////////////////////////////////////////////
vector endColor = <0,100,0>;
//////////////////////////////////////////////
float startAlpha = .3;
/////////////////////////////////
float endAlpha = 0.01;
/////////////////////////////////
integer glowEffect = TRUE;
///////////////////////////////////
integer sizeInterpolation = TRUE;
///////////////////////////////////
vector startSize = <6,8,6>;
/////////////////////////////////////////////
vector endSize = <6,8,6>;
/////////////////////////////////////////////
integer followVelocity = TRUE;
////////////////////////////////
float particleLife = .3;
/////////////////////////////////
float SystemLife = 0.0;
/////////////////////////////////
float emissionRate = 0.01;
//////////////////////////////////
integer partPerEmission = 3;
///////////////////////////////
float radius = 0.0;
/////////////////////////////////
float innerAngle = 0;
///////////////////////////////
float outerAngle = 0;
///////////////////////////////
vector omega = <0.0, 0.0, 0.0>;
/////////////////////////////////////////////
float minSpeed = 0.01;
/////////////////////////////////
float maxSpeed = 0.01;
/////////////////////////////////
vector acceleration = <0.0, 0.0, .01>;
//////////////////////////////////////////////
integer windEffect = FALSE;
///////////////////////////////////
integer bounceEffect = FALSE;
///////////////////////////////////
integer followSource = TRUE;
///////////////////////////////////
integer followTarget = TRUE;
///////////////////////////////////
key target = "llGetKey(owner)";
///////////////////////////////////////////////////////
//NOT YET IMPLIMENTED
///////////////////////////////////////////////////////
integer randomAcceleration = FALSE;
integer randomVelocity = FALSE;
integer particleTrails = FALSE;
///////////////////////////////////////////////////////
///////////////////////////////////////////////////////
// Pattern Selection
///////////////////////////////////////////////////////
// Uncomment the pattern call you would like to use
// Drop parcles at the container objects' center
//integer pattern = PSYS_SRC_PATTERN_DROP;
// Burst pattern originating at objects' center
integer pattern = PSYS_SRC_PATTERN_EXPLODE;
// Uses 2D angle between innerAngle and outerAngle
//integer pattern = PSYS_SRC_PATTERN_ANGLE;
// Uses 3D cone spread between innerAngle and outerAngle
//integer pattern = PSYS_SRC_PATTERN_ANGLE_CONE;
//
//integer pattern = PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY;
setParticles()
{
// Here is where to set the current target
// llGetKey() targets this script's container object
// llGetOwner() targets the owner of this script
// Feel free to insert any other valid key
target="llGetKey()";
// The following block of if statements is used to construct the mask
if (colorInterpolation) effectFlags = effectFlags|PSYS_PART_INTERP_COLOR_MASK;
if (sizeInterpolation) effectFlags = effectFlags|PSYS_PART_INTERP_SCALE_MASK;
if (windEffect) effectFlags = effectFlags|PSYS_PART_WIND_MASK;
if (bounceEffect) effectFlags = effectFlags|PSYS_PART_BOUNCE_MASK;
if (followSource) effectFlags = effectFlags|PSYS_PART_FOLLOW_SRC_MASK;
if (followVelocity) effectFlags = effectFlags|PSYS_PART_FOLLOW_VELOCITY_MASK;
if (target!="") effectFlags = effectFlags|PSYS_PART_TARGET_POS_MASK;
if (glowEffect) effectFlags = effectFlags|PSYS_PART_EMISSIVE_MASK;
//Uncomment the following selections once they've been implemented
// if (randomAcceleration) effectFlags = effectFlags|PSYS_PART_RANDOM_ACCEL_MASK;
// if (randomVelocity) effectFlags = effectFlags|PSYS_PART_RANDOM_VEL_MASK;
// if (particleTrails) effectFlags = effectFlags|PSYS_PART_TRAIL_MASK;
llParticleSystem([
PSYS_PART_FLAGS, effectFlags,
PSYS_SRC_PATTERN, pattern,
PSYS_PART_START_COLOR, startColor,
PSYS_PART_END_COLOR, endColor,
PSYS_PART_START_ALPHA, startAlpha,
PSYS_PART_END_ALPHA, endAlpha,
PSYS_PART_START_SCALE, startSize,
PSYS_PART_END_SCALE, endSize,
PSYS_PART_MAX_AGE, particleLife,
PSYS_SRC_ACCEL, acceleration,
PSYS_SRC_TEXTURE, "fbd147d2-56b0-cc2c-71e0-ca2c00e34b67",
PSYS_SRC_BURST_RATE, emissionRate,
PSYS_SRC_INNERANGLE, innerAngle,
PSYS_SRC_OUTERANGLE, outerAngle,
PSYS_SRC_BURST_PART_COUNT, partPerEmission,
PSYS_SRC_BURST_RADIUS, radius,
PSYS_SRC_BURST_SPEED_MIN, minSpeed,
PSYS_SRC_BURST_SPEED_MAX, maxSpeed,
PSYS_SRC_MAX_AGE, SystemLife,
PSYS_SRC_TARGET_KEY, target,
PSYS_SRC_OMEGA, omega ]);
}
default
{
state_entry()
{
llSetTimerEvent(0.1);
}
timer()
{
if(llGetAgentInfo(llGetOwner())&AGENT_FLYING)
{
setParticles();
}
else
{
llParticleSystem([]);
}
}}