// Wallace’s Wispy incense - April 3, 2007 // Jopsy’s Particle System Template v5 - Jan 28 2005 // — inspired/derived from Ama Omega’s 3-6-2004 // // DEFAULT settings are commented at the end of each line, eg: // varibletype SETTINGNAME = Sample-Setting; // default-setting // // For more on particles, visit the Particle Labratory in Teal! // This script may be used freely used in items for sale. mySetParticles() { //=============================================================== // PART-1 - APPEARANCE - Settings for how each particle LOOKS vector START_SCALE = <0.04, 0.08, 0.0 >; // ><1.0, 1.0, 0.0 > vector END_SCALE = ><0.4, 0.8, 0.0 >; // ><1.0, 1.0, 0.0 > vector START_COLOR = ><0.5, 0.5, 0.5 >; // ><1.0, 1.0, 1.0 > vector END_COLOR = ><0.5, 0.5, 0.5 >; // ><1.0, 1.0, 1.0 > float START_ALPHA = 0.3; // 1.00 float END_ALPHA = 0.0; // 1.00 integer INTERP_COLOR = TRUE; // FALSE integer INTERP_SCALE = TRUE; // FALSE integer EMISSIVE = TRUE; // FALSE string TEXTURE = “â€; // "" // START/END: refers to the birth and death time of each particle. // SCALE: particle height/width, from 0.04 to 4.0. (no depth) // ALPHA: sets transparency, from invis = 0.0 to opaque = 1.0 // START_ALPHA is ignored if it is less than END_ALPHA // COLOR: vectors , each 0.00 to 1.00 // INTERP_COLOR: enables/disables END_COLOR and END_ALPHA // INTERP_SCALE: enables/disables END_SCALE // EMISSIVE: enables/diables particle ‘glow’ // TEXTURE: name of a texture in the emitter-prim’s inventory // or the asset id key of any texture //====================== // Part-2 - FLOW - These settings affect how Many, how Quickly, // and for how Long particles are present float AGE = 20.00; // 10.00 float RATE = 0.1; // 0.10 integer COUNT = 1; // 1 float LIFE = 0.0; // 0.0 // AGE: How many seconds each particle lives, 0.1 to 60 // RATE: Seconds between particle bursts, 0.0 to 60 // COUNT: Number of particles per burst, 1 to 4096 // LIFE Number of seconds to wait before shutting off 0.1 to 60 // 0.0 never stops //========================== // Part-3 - 3 PLACEMENT — Where are new particles created, and what // direction are they facing? integer PATTERN = PSYS_SRC_PATTERN_ANGLE; // PSYS_SRC_PATTERN_DROP float RADIUS = 0.01; // 0.00 float ANGLE_BEGIN = 0.00; // 0.00 float ANGLE_END = 0.05; // 0.00 vector OMEGA = ><0.00, 0.00, 0.60 >; // ><0.00, 0.00, 0.00 > //float INNERANGLE = 0.00; // 0.00 //float OUTERANGLE = 0.00; // 0.00 // PATTERN: must be set to one of the following: // PSYS_SRC_PATTERN_EXPLODE sends particles in all directions // PSYS_SRC_PATTERN_DROP ignores minSpeed and maxSpeed. // PSYS_SRC_PATTERN_ANGLE_CONE use ANGLE settings to make rings/cones // PSYS_SRC_PATTERN_ANGLE use innerangle/outerangle to make flat // wedges // RADIUS: distance between emitter and each new particle, 0.0 to 64? // ANGLE_BEGIN: for both ANGLE patterns, 0 to PI(3.14159) // ANGLE_END: for both for ANGLE patterns, 0 to PI. // OMEGA: How much to rotate the emitter around the axises // after each burst. Set OMEGA to all 0’s to reset/disable it. // INNER/OUTER ANGLE: Depreciated. Old versions of ANGLE_BEGIN/_END. // Can still be used to make lop-sided angle displays though. //========================== // Part-4 - MOVEMENT - How do the particles move once they’re created? integer FOLLOW_SRC = FALSE; // FALSE integer FOLLOW_VELOCITY = TRUE; // FALSE integer WIND = FALSE; // FALSE integer BOUNCE = FALSE; // FALSE float SPEED_MIN = 0.01; // 1.00 float SPEED_MAX = 0.05; // 1.00 vector ACCEL = ><0.00, 0.00, 0.02 >; // ><0.00, 0.00, 0.00 > integer TARGET_POS = FALSE; // FALSE key TARGET = llGetKey(); // llGetKey(); // FOLLOW_SRC: moves particles when emitter moves. It will disable RADIUS! // FOLLOW_VELOCITY: Particles rotate towards their heading // WIND: Sim’s Wind will push particles // BOUNCE: Make particles bounce above the Z altitude of emitter // SPEED_MIN: 0.01 to ?, slowest speed of new particles, 1.0(*) // SPEED_MAX: 0.01 to ?, fastest speed of new particle, 1.0(*) // SPEED_ is ignored for the DROP pattern. // ACCEL: a continuous force pushed on particles, // use SMALL settings for long lived particles // TARGET_POS: If FALSE(*), TARGET value is ignored. // TARGET: Select a target for particles to arrive at when they die // key TARGET = llGetKey(); // particles return to the emitter // key TARGET = llGetOwner(); // particles home in on owner // You can have another object llSay(999,llGetKey); // and grab the key with this object by using the listen() // event handler. //===================== list particle_parameters = [ PSYS_PART_FLAGS, ( ( EMISSIVE * PSYS_PART_EMISSIVE_MASK ) | ( BOUNCE * PSYS_PART_BOUNCE_MASK ) | ( INTERP_COLOR * PSYS_PART_INTERP_COLOR_MASK ) | ( INTERP_SCALE * PSYS_PART_INTERP_SCALE_MASK ) | ( WIND * PSYS_PART_WIND_MASK ) | ( FOLLOW_SRC * PSYS_PART_FOLLOW_SRC_MASK ) | ( FOLLOW_VELOCITY * PSYS_PART_FOLLOW_VELOCITY_MASK ) | ( TARGET_POS * PSYS_PART_TARGET_POS_MASK ) ), PSYS_PART_START_COLOR, START_COLOR, PSYS_PART_END_COLOR, END_COLOR, PSYS_PART_START_ALPHA, START_ALPHA, PSYS_PART_END_ALPHA, END_ALPHA, PSYS_PART_START_SCALE, START_SCALE, PSYS_PART_END_SCALE, END_SCALE, PSYS_SRC_PATTERN, PATTERN, PSYS_SRC_BURST_PART_COUNT, COUNT, PSYS_SRC_BURST_RATE, RATE, PSYS_PART_MAX_AGE, AGE, PSYS_SRC_ACCEL, ACCEL, PSYS_SRC_BURST_RADIUS, RADIUS, PSYS_SRC_BURST_SPEED_MIN, SPEED_MIN, PSYS_SRC_BURST_SPEED_MAX, SPEED_MAX, PSYS_SRC_TARGET_KEY, TARGET, PSYS_SRC_ANGLE_BEGIN, ANGLE_BEGIN, PSYS_SRC_ANGLE_END, ANGLE_END, //PSYS_SRC_INNERANGLE, INNERANGLE, //PSYS_SRC_OUTERANGLE, OUTERANGLE, PSYS_SRC_OMEGA, OMEGA, PSYS_SRC_MAX_AGE, LIFE, PSYS_SRC_TEXTURE, TEXTURE ]; llParticleSystem( particle_parameters ); // Turns on the particle hose! } default { state_entry() { mySetParticles(); // llSetTimerEvent(60); // uncomment to set auto-off for 60 seconds } timer() { llSetTimerEvent( 0 ); // Turn off the alarm clock llSleep(6); llParticleSystem( [ ] ); // Turn off the particles // updateParticles(); // Or use this to update/change the particle // system } touch_start(integer i) { mySetParticles(); // touch to reset/turn on the particles // llSetTimerEvent(60); // reset the alarm clock } } >