Advertisement
Guest User

Untitled

a guest
Oct 18th, 2017
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Particle Maker
  2. integer menu_channel = -5000;
  3.  
  4. list TOP_LIST = [ "textures", "flags", "pattern", "parameters", "system", "stop", "start" ];
  5. list SYSTEM_OPTIONS = [ "rate", "radius", "count", "outer_angle", "inner_angle", "omega", "life" ];
  6.  
  7. list PATTERN_OPTIONS = [ "explode", "drop", "cone", "cone_empty", "angle" ];
  8. list MASK_OPTIONS = [ "interp_col", "interp_size", "follow_vel", "wind", "bounce", "target_pos", "follow_src", "glow", "ribbon" ];
  9. list TEXTURES = [ "water1", "water2", "water3", "water4" ];
  10.  
  11. // Variables
  12.  
  13. //FALGS
  14. integer glow = TRUE;
  15. integer bounce = FALSE;
  16. integer interp_col = TRUE;
  17. integer interp_size = TRUE;
  18. integer wind = TRUE;
  19. integer follow_src = FALSE;
  20. integer follow_vel = TRUE;
  21. integer target_pos = FALSE;
  22. integer ribbon = FALSE;
  23.  
  24.  
  25. float age = 8.4;
  26. float maxSpeed = 2.0;
  27. float minSpeed = 0.1;
  28. string texture;
  29. float startAlpha = 0.8;
  30. float endAlpha = 0;
  31. vector startColor = <0.75, 0.85, 1>;
  32. vector endColor = <0.1, 0.1, 0.1>;
  33. vector startSize = <0.25, 0.25, 0.0>;
  34. vector endSize = <0.25, 0.25, 0.0>;
  35. vector push = <0.0, 0.0, -2.0>;
  36.  
  37. float rate = 1.0;
  38. float radius = 2.0;
  39. integer count = 100;
  40. float outerAngle = 3*PI;
  41. float innerAngle = 0.5;
  42. vector omega = <0.0, 0.0, 0.0>;
  43. float life = 0;
  44.  
  45. key target = "";
  46. integer pattern = PSYS_SRC_PATTERN_EXPLODE;
  47. integer flags;
  48.  
  49. stop_particle()
  50. {
  51.         llParticleSystem([]);
  52. }
  53.  
  54. start_particle()
  55. {
  56.     flags = 0;
  57.    
  58.     if (glow) flags = flags | PSYS_PART_EMISSIVE_MASK;
  59.     if (bounce) flags = flags | PSYS_PART_BOUNCE_MASK;
  60.     if (interp_col) flags = flags | PSYS_PART_INTERP_COLOR_MASK;
  61.     if (interp_size) flags = flags | PSYS_PART_INTERP_SCALE_MASK;
  62.     if (wind) flags = flags | PSYS_PART_WIND_MASK;
  63.     if (follow_src) flags = flags | PSYS_PART_FOLLOW_SRC_MASK;
  64.     if (follow_vel) flags = flags | PSYS_PART_FOLLOW_VELOCITY_MASK;
  65.     if (ribbon) flags = flags | PSYS_PART_RIBBON_MASK;
  66.     if (target != "") flags = flags | PSYS_PART_TARGET_POS_MASK;
  67.    
  68.     llParticleSystem([  PSYS_PART_MAX_AGE,age,
  69.                         PSYS_PART_FLAGS,flags,
  70.                         PSYS_PART_START_COLOR, startColor,
  71.                         PSYS_PART_END_COLOR, endColor,
  72.                         PSYS_PART_START_SCALE,startSize,
  73.                         PSYS_PART_END_SCALE,endSize,
  74.                         PSYS_SRC_PATTERN, pattern,
  75.                         PSYS_SRC_BURST_RATE,rate,
  76.                         PSYS_SRC_ACCEL, push,
  77.                         PSYS_SRC_BURST_PART_COUNT,count,
  78.                         PSYS_SRC_BURST_RADIUS,radius,
  79.                         PSYS_SRC_BURST_SPEED_MIN,minSpeed,
  80.                         PSYS_SRC_BURST_SPEED_MAX,maxSpeed,
  81.                         PSYS_SRC_TARGET_KEY,target,
  82.                         PSYS_SRC_INNERANGLE,innerAngle,
  83.                         PSYS_SRC_OUTERANGLE,outerAngle,
  84.                         PSYS_SRC_OMEGA, omega,
  85.                         PSYS_SRC_MAX_AGE, life,
  86.                         PSYS_SRC_TEXTURE, texture,
  87.                         PSYS_PART_START_ALPHA, startAlpha,
  88.                         PSYS_PART_END_ALPHA, endAlpha
  89.                             ]);
  90.      
  91. }
  92.  
  93.    
  94.  
  95. default
  96. {
  97.     state_entry()
  98.     {
  99.        start_particle();
  100.     }
  101.  
  102.     touch_start(integer total_number)
  103.     {
  104.        llListen(menu_channel, "", "","");
  105.        llDialog(llDetectedKey(0), "TOP_MENU", TOP_LIST, menu_channel);
  106.     }
  107.    
  108.     listen(integer channel, string name, key id, string msg)
  109.     {
  110.         llOwnerSay(msg);
  111.         if ( msg == "start" )   { start_particle(); llOwnerSay("Particles Started"); llDialog(id, "TOP_MENU", TOP_LIST, menu_channel); }
  112.         if ( msg == "stop" )    { stop_particle();   llOwnerSay("Particles Stopped"); llDialog(id, "TOP_MENU", TOP_LIST, menu_channel); return; }
  113.         if ( msg == "flags" )   {   llDialog(id, "\nFLAGS", MASK_OPTIONS, menu_channel);        }
  114.         if ( msg == "pattern" ) {   llDialog(id, "\nPATTERN", PATTERN_OPTIONS, menu_channel);   }
  115.         if ( msg == "system" )  {   llDialog(id, "\nSYSTEM", SYSTEM_OPTIONS, menu_channel);     }
  116.         if ( msg == "textures") {   llDialog(id, "\nCurrent Texture\n" + texture, TEXTURES, menu_channel); }
  117.         if ( msg == "water1") { texture = "Water1"; } if ( msg == "water2" ) { texture = "Water2"; } if ( msg == "water3" ) { texture = "Water3"; } if ( msg == "water4" ) { texture = "Water4"; }
  118.  
  119.     //    list SYSTEM_OPTIONS = [ "rate", "radius", "count", "outer_angle", "inner_angle", "omega", "life" ];
  120.  
  121.         if( msg == "rate" ) { llDialog(id, "Rate = " + (string)rate, [ "r+1", "r-1","r+0.1","r-0.1"], menu_channel); }
  122.         if ( msg == "r+1" ) { rate = rate + 1; } if ( msg == "r-1" ) { rate = rate - 1; } if ( msg == "r+0.1" ) { rate = rate + 0.1; } if ( msg == "r-0.1" ) { rate = rate - 0.1; }
  123.         if( msg == "radius" ) { llDialog(id, "Radius = " + (string)radius, [ "rad+1", "rad-1","rad+0.1","rad-0.1"], menu_channel); }
  124.         if ( msg == "rad+1" ) { radius = radius + 1; } if ( msg == "rad-1" ) { radius = radius - 1; } if ( msg == "rad+0.1" ) { radius = radius + 0.1; } if ( msg == "rad-0.1" ) { radius = radius - 0.1; }    
  125.         if ( msg == "explode" ) { pattern = PSYS_SRC_PATTERN_EXPLODE; llOwnerSay("Pattern = explode");  llDialog(id, "\nPATTERN", PATTERN_OPTIONS, menu_channel); }
  126.         if ( msg == "drop" )    { pattern = PSYS_SRC_PATTERN_DROP; llOwnerSay("Pattern = drop");  llDialog(id, "\nPATTERN", PATTERN_OPTIONS, menu_channel); }
  127.         if ( msg == "cone" )    { pattern = PSYS_SRC_PATTERN_ANGLE_CONE; llOwnerSay("Pattern = cone");  llDialog(id, "\nPATTERN", PATTERN_OPTIONS, menu_channel);}
  128.         if ( msg == "cone_empty" ) { pattern = PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY; llOwnerSay("Pattern = cone_empty");  llDialog(id, "\nPATTERN", PATTERN_OPTIONS, menu_channel);}
  129.         if ( msg == "angle" ) { pattern = PSYS_SRC_PATTERN_ANGLE; llOwnerSay("Pattern = angle"); llDialog(id, "\nPATTERN", PATTERN_OPTIONS, menu_channel); }
  130.        
  131.         if ( msg == "glow" )        {   glow = !glow; llOwnerSay("glow = " + (string)glow);                             }
  132.         if ( msg == "wind" )        {   wind = !wind; llOwnerSay("wind = " + (string)wind);                             }
  133.         if ( msg == "bounce" )      {   bounce = !bounce; llOwnerSay("bounce = " + (string)bounce);                     }
  134.         if ( msg == "interp_col" )  {   interp_col = !interp_col; llOwnerSay("interp_col = " + (string)interp_col);     }
  135.         if ( msg == "interp_size" ) {   interp_size = !interp_size; llOwnerSay("interp_size = " + (string)interp_size); }
  136.         if ( msg == "follow_src" )  {   follow_src = !follow_src;  llOwnerSay("follow_src = " + (string)follow_src);    }
  137.         if ( msg == "follow_vel" )  {   follow_vel = !follow_vel;  llOwnerSay("follow_vel = " + (string)follow_vel);    }
  138.         if ( msg == "target_pos" )  {   target_pos = !target_pos;  llOwnerSay("target_pos = " + (string)target_pos);    }
  139.         if ( msg == "ribbon" )      {   ribbon = !ribbon;   llOwnerSay("ribbon = " + (string)ribbon);                   }
  140.         start_particle();
  141.     }
  142.  
  143. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement