Neurocam Particle Engine

From Second Life Wiki
Revision as of 06:07, 4 October 2013 by Kireji Haiku (talk | contribs) (added line breaks for better readability on mobile screens and removed deprecated LSL code)
Jump to navigation Jump to search

<lsl> // Written By Draconis Neurocam // // You are free: // // * to Share — to copy, distribute and transmit the work // * to Remix — to adapt the work // // Under the following conditions: // // * Attribution: // You must attribute the work in the manner specified by the author or // licensor (but not in any way that suggests that they endorse you or // your use of the work). // Attribute this work: // What does "Attribute this work" mean? // The page you came from contained embedded licensing metadata, // including how the creator wishes to be attributed for re-use. You // can use the HTML here to cite the work. // Doing so will also include metadata on your page so that others can find // the original work as well. // * For any reuse or distribution, you must make clear to others the license // terms of this work. The best way to do this is with a link to this web // page. // * Any of the above conditions can be waived if you get permission from the // copyright holder. // * Nothing in this license impairs or restricts the author's moral rights. // // http://creativecommons.org/licenses/by/3.0/

float burst_radius = 1.0; float angle_begin = PI_BY_TWO; float angle_end = PI_BY_TWO; key target = "";

vector start_color = <0.5, 0.0, 1.0>; vector end_color = ZERO_VECTOR; // black float start_alpha = 1.0; // opaque float end_alpha = 0.1; vector start_scale = <0.5, 0.5, 0.5>; vector end_scale = <1.0, 1.0, 1.0>; key texture = "dcab6cc4-172f-e30d-b1d0-f558446f20d4"; float start_glow = 0.0; // none float end_glow = 0.0; // none

float source_max_age = 0.0; float particle_max_age = 2.0; float burst_rate = 0.02; integer burst_particle_count = 2;

vector acceleration = <0.0, 1.0, 1.0>; vector omega = <2.0, 0.0, 0.0>; float speed_min = 1.0; float speed_max = 1.0;

Particles() {

   llParticleSystem([

// System Behaviour

       PSYS_PART_FLAGS,

// PSYS_PART_BOUNCE_MASK

                       PSYS_PART_EMISSIVE_MASK

// | PSYS_PART_FOLLOW_SRC_MASK

                       | PSYS_PART_FOLLOW_VELOCITY_MASK
                       | PSYS_PART_INTERP_COLOR_MASK
                       | PSYS_PART_INTERP_SCALE_MASK

// | PSYS_PART_RIBBON_MASK // | PSYS_PART_TARGET_LINEAR_MASK // | PSYS_PART_TARGET_POS_MASK // | PSYS_PART_WIND_MASK

                       ,

// System Presentation

       PSYS_SRC_PATTERN,

// PSYS_SRC_PATTERN_ANGLE // PSYS_SRC_PATTERN_ANGLE_CONE // PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY

                       PSYS_SRC_PATTERN_DROP

// PSYS_SRC_PATTERN_EXPLODE

                       ,
       PSYS_SRC_BURST_RADIUS, burst_radius,
       PSYS_SRC_ANGLE_BEGIN,  angle_begin,     //Either or
       PSYS_SRC_ANGLE_END,    angle_end,
       PSYS_SRC_TARGET_KEY,   target,

// Particle appearance

       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_TEXTURE,      texture,
       PSYS_PART_START_GLOW,  start_glow,
       PSYS_PART_END_GLOW,    end_glow,

// Particle Blending

       PSYS_PART_BLEND_FUNC_SOURCE,

// PSYS_PART_BF_ONE // PSYS_PART_BF_ZERO // PSYS_PART_BF_DEST_COLOR // PSYS_PART_BF_SOURCE_COLOR // PSYS_PART_BF_ONE_MINUS_DEST_COLOR // PSYS_PART_BF_ONE_MINUS_SOURCE_COLOR

                                   PSYS_PART_BF_SOURCE_ALPHA

// PSYS_PART_BF_ONE_MINUS_SOURCE_ALPHA

                                  ,
       PSYS_PART_BLEND_FUNC_DEST,

// PSYS_PART_BF_ONE // PSYS_PART_BF_ZERO // PSYS_PART_BF_DEST_COLOR // PSYS_PART_BF_SOURCE_COLOR // PSYS_PART_BF_ONE_MINUS_DEST_COLOR // PSYS_PART_BF_ONE_MINUS_SOURCE_COLOR // PSYS_PART_BF_SOURCE_ALPHA

                                   PSYS_PART_BF_ONE_MINUS_SOURCE_ALPHA
                                   ,

// Particle Flow

       PSYS_SRC_MAX_AGE,          source_max_age,
       PSYS_PART_MAX_AGE,         particle_max_age,
       PSYS_SRC_BURST_RATE,       burst_rate,
       PSYS_SRC_BURST_PART_COUNT, burst_particle_count,

// Particle Motion

       PSYS_SRC_ACCEL,           acceleration,
       PSYS_SRC_OMEGA,           omega,
       PSYS_SRC_BURST_SPEED_MIN, speed_min,
       PSYS_SRC_BURST_SPEED_MAX, speed_max
       ]);

}

default {

   state_entry()
   {
       Particles();
   }

} </lsl>