Change font size
It is currently Sat Dec 15, 2018 1:02 pm

Forum rules


{L_IMAGE}



Post a new topicPost a reply Page 1 of 1   [ 2 posts ]
Author Message
 Post subject: Particle Generator 01
PostPosted: Sun Feb 03, 2008 3:45 am 
Site Admin
User avatar

Joined: Sat Feb 02, 2008 5:27 pm
Posts: 843
{L_CODE}:
//Originally by Ama Omega
default
{
    state_entry()
    {
       llSleep(1); // Do something..     
    } 
    touch_start(integer total_number)
    {
        // mask flags - set to TRUE (or 1) to enable
        integer bounce = 0;    // Make particles bounce on Z plane of object
        integer glow = 1;        // Make the particles glow
        integer interpColor = 1;    // Go from start to end color
        integer interpSize = 1;    // Go from start to end size
        integer followSource = 1;    // Particles follow the source
        integer followVel = 1;    // Particles turn to velocity direction
        integer wind = 0;        // Particles affected by wind
        //pattern:
        //integer pattern = PSYS_SRC_PATTERN_ANGLE;
        //integer pattern = PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY;
        //integer pattern = PSYS_SRC_PATTERN_ANGLE_CONE;
        //integer pattern = PSYS_SRC_PATTERN_DROP;
        integer pattern = PSYS_SRC_PATTERN_EXPLODE;
        // Select a target for particles to go towards
        // "" for no target, "owner" will follow object owner
        //    and "self" will target this object
        //    or put the key of an object for particles to go to
        //key target = "";
        key target = "self";
        //key target = "owner";
        // particle parameters
        float age = 20;                  // Life of each particle
        float maxSpeed = 1;            // Max speed each particle is spit out at
        float minSpeed = 1;            // Min speed each particle is spit out at
        string texture = "2a69e89a-0ced-4292-9281-eed839a39904";           // Texture used for particles, default used if blank
        float startAlpha = 1;           // Start alpha (transparency) value
        float endAlpha = 1;           // End alpha (transparency) value (if interpColor = TRUE)
        vector startColor = <1,1,1>;    // Start color of particles <R,G,B>
        vector endColor = <1,1,1>;      // End color of particles <R,G,B> (if interpColor = TRUE)
        vector startSize = <1,1,0>;     // Start size of particles <x,y>
        vector endSize = <1,1,0>;       // End size of particles (if interpSize == TRUE)
        vector push = <0,0,0.05f>;          // Force pushed on particles
        // system parameters
        float life = 0;             // Life in seconds for the system to make particles
        integer count = 50;        // How many particles to emit per BURST
        float rate = 0.03f;            // How fast (rate) to emit particles
        float radius = 0.5;          // Radius to emit particles for BURST pattern
        float outerAngle = 1.54;    // Outer angle for all ANGLE patterns
        float innerAngle = 1.55;    // Inner angle for all ANGLE patterns
        vector omega = <0,0,1>;    // Rotation of ANGLE patterns around the source
        integer flags = 0;
            if (target == "owner") target = llGetOwner();
            if (target == "self") target = llGetKey();
            if (glow == 1) flags = flags | PSYS_PART_EMISSIVE_MASK;
            if (bounce == 1) flags = flags | PSYS_PART_BOUNCE_MASK;
            if (interpColor == 1) flags = flags | PSYS_PART_INTERP_COLOR_MASK;
            if (interpSize == 1) flags = flags | PSYS_PART_INTERP_SCALE_MASK;
            if (wind == 1) flags = flags | PSYS_PART_WIND_MASK;
            if (followSource == 1) flags = flags | PSYS_PART_FOLLOW_SRC_MASK;
            if (followVel == 1) flags = flags | PSYS_PART_FOLLOW_VELOCITY_MASK;
            if (target != "") flags = flags | PSYS_PART_TARGET_POS_MASK;
            llParticleSystem([  PSYS_PART_MAX_AGE,age,
                                PSYS_PART_FLAGS,flags,
                                PSYS_PART_START_COLOR, startColor,
                                PSYS_PART_END_COLOR, endColor,
                                PSYS_PART_START_SCALE,startSize,
                                PSYS_PART_END_SCALE,endSize,
                                PSYS_SRC_PATTERN, pattern,
                                PSYS_SRC_BURST_RATE,(float)rate,
                                PSYS_SRC_ACCEL, push,
                                PSYS_SRC_BURST_PART_COUNT,count,
                                PSYS_SRC_BURST_RADIUS,(float)radius,
                                PSYS_SRC_BURST_SPEED_MIN,(float)minSpeed,
                                PSYS_SRC_BURST_SPEED_MAX,(float)maxSpeed,
                                PSYS_SRC_TARGET_KEY,target,
                                PSYS_SRC_INNERANGLE,(float)innerAngle,
                                PSYS_SRC_OUTERANGLE,(float)outerAngle,
                                PSYS_SRC_OMEGA, omega,
                                PSYS_SRC_MAX_AGE, (float)life,
                                PSYS_SRC_TEXTURE, texture,
                                PSYS_PART_START_ALPHA, (float)startAlpha,
                                PSYS_PART_END_ALPHA, (float)endAlpha
                                    ]);
    }
}


Last edited by Nebadon Izumi on Wed Feb 06, 2008 3:30 pm, edited 1 time in total.

Top
 Profile  
 
 Post subject: Chimney smoke
PostPosted: Wed Feb 06, 2008 2:47 pm 

Joined: Wed Feb 06, 2008 12:00 am
Posts: 6
modified this one a little for chimney smoke. First used llGetKey to get the key of the object i wanted the particles to go to and changed the
{L_CODE}:
//key target = "owner"
to
{L_CODE}:
//key target = "UUID of Prim"
.. then set that object a few meters above the particle scripted prim.

Smoke texture used is the one in this mantis patch: http://opensimulator.org/mantis/view.php?id=436

get key of target prim:

{L_CODE}:
default
{
     state_entry()
     {
         string test = (string)llGetKey();
          llOwnerSay(test);
      }
  }


particle script (modified)
{L_CODE}:
//Originally by Ama Omega
default
{
    state_entry()
    {
       llSleep(1); // Do something..     
    } 
    touch_start(integer total_number)
    {
        // mask flags - set to TRUE (or 1) to enable
        integer bounce = 0;    // Make particles bounce on Z plane of object
        integer glow = 0;        // Make the particles glow
        integer interpColor = 1;    // Go from start to end color
        integer interpSize = 1;    // Go from start to end size
        integer followSource = 1;    // Particles follow the source
        integer followVel = 1;    // Particles turn to velocity direction
        integer wind = 1;        // Particles affected by wind
        //pattern:
        //integer pattern = PSYS_SRC_PATTERN_ANGLE;
        //integer pattern = PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY;
        //integer pattern = PSYS_SRC_PATTERN_ANGLE_CONE;
        //integer pattern = PSYS_SRC_PATTERN_DROP;
        integer pattern = PSYS_SRC_PATTERN_EXPLODE;
        // Select a target for particles to go towards
        // "" for no target, "owner" will follow object owner
        //    and "self" will target this object
        //    or put the key of an object for particles to go to
        //key target = "";
        key target = "24a85a28-46af-477f-8e9e-1932f0ba5c91";
        //key target = "owner";
        // particle parameters
        float age = 4;                  // Life of each particle
        float maxSpeed = 2;            // Max speed each particle is spit out at
        float minSpeed = 1;            // Min speed each particle is spit out at
        string texture = "dc87ee70-3d4e-4532-bdf3-57263075b85c";           // Texture used for particles, default used if blank
        float startAlpha = .5;           // Start alpha (transparency) value
        float endAlpha = 0;           // End alpha (transparency) value (if interpColor = TRUE)
        vector startColor = <173,173,173>;    // Start color of particles <R,G,B>
        vector endColor = <112,112,112>;      // End color of particles <R,G,B> (if interpColor = TRUE)
        vector startSize = <.5,.5,0>;     // Start size of particles <x,y>
        vector endSize = <2,2,0>;       // End size of particles (if interpSize == TRUE)
        vector push = <0,0,0.01f>;          // Force pushed on particles
        // system parameters
        float life = 0;             // Life in seconds for the system to make particles
        integer count = 5;        // How many particles to emit per BURST
        float rate = 0.10f;            // How fast (rate) to emit particles
        float radius = 1;          // Radius to emit particles for BURST pattern
        float outerAngle = 1.54;    // Outer angle for all ANGLE patterns
        float innerAngle = 1.55;    // Inner angle for all ANGLE patterns
        vector omega = <0,0,1>;    // Rotation of ANGLE patterns around the source
        integer flags = 0;
            if (target == "owner") target = llGetOwner();
            if (target == "self") target = llGetKey();
            if (glow == 1) flags = flags | PSYS_PART_EMISSIVE_MASK;
            if (bounce == 1) flags = flags | PSYS_PART_BOUNCE_MASK;
            if (interpColor == 1) flags = flags | PSYS_PART_INTERP_COLOR_MASK;
            if (interpSize == 1) flags = flags | PSYS_PART_INTERP_SCALE_MASK;
            if (wind == 1) flags = flags | PSYS_PART_WIND_MASK;
            if (followSource == 1) flags = flags | PSYS_PART_FOLLOW_SRC_MASK;
            if (followVel == 1) flags = flags | PSYS_PART_FOLLOW_VELOCITY_MASK;
            if (target != "") flags = flags | PSYS_PART_TARGET_POS_MASK;
            llParticleSystem([  PSYS_PART_MAX_AGE,age,
                                PSYS_PART_FLAGS,flags,
                                PSYS_PART_START_COLOR, startColor,
                                PSYS_PART_END_COLOR, endColor,
                                PSYS_PART_START_SCALE,startSize,
                                PSYS_PART_END_SCALE,endSize,
                                PSYS_SRC_PATTERN, pattern,
                                PSYS_SRC_BURST_RATE,(float)rate,
                                PSYS_SRC_ACCEL, push,
                                PSYS_SRC_BURST_PART_COUNT,count,
                                PSYS_SRC_BURST_RADIUS,(float)radius,
                                PSYS_SRC_BURST_SPEED_MIN,(float)minSpeed,
                                PSYS_SRC_BURST_SPEED_MAX,(float)maxSpeed,
                                PSYS_SRC_TARGET_KEY,target,
                                PSYS_SRC_INNERANGLE,(float)innerAngle,
                                PSYS_SRC_OUTERANGLE,(float)outerAngle,
                                PSYS_SRC_OMEGA, omega,
                                PSYS_SRC_MAX_AGE, (float)life,
                                PSYS_SRC_TEXTURE, texture,
                                PSYS_PART_START_ALPHA, (float)startAlpha,
                                PSYS_PART_END_ALPHA, (float)endAlpha
                                    ]);
    }
}


Top
 Profile  
 
Display posts from previous:  Sort by  
Post a new topicPost a reply Page 1 of 1   [ 2 posts ]


Who is online

Users browsing this forum: No registered users and 2 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
610nm Style by Daniel St. Jules of Gamexe.net