Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Particle Maker
- integer menu_channel = -5000;
- list TOP_LIST = [ "textures", "flags", "pattern", "parameters", "system", "stop", "start" ];
- list SYSTEM_OPTIONS = [ "rate", "radius", "count", "outer_angle", "inner_angle", "omega", "life" ];
- list PATTERN_OPTIONS = [ "explode", "drop", "cone", "cone_empty", "angle" ];
- list MASK_OPTIONS = [ "interp_col", "interp_size", "follow_vel", "wind", "bounce", "target_pos", "follow_src", "glow", "ribbon" ];
- list TEXTURES = [ "water1", "water2", "water3", "water4" ];
- // Variables
- //FALGS
- integer glow = TRUE;
- integer bounce = FALSE;
- integer interp_col = TRUE;
- integer interp_size = TRUE;
- integer wind = TRUE;
- integer follow_src = FALSE;
- integer follow_vel = TRUE;
- integer target_pos = FALSE;
- integer ribbon = FALSE;
- float age = 8.4;
- float maxSpeed = 2.0;
- float minSpeed = 0.1;
- string texture;
- float startAlpha = 0.8;
- float endAlpha = 0;
- vector startColor = <0.75, 0.85, 1>;
- vector endColor = <0.1, 0.1, 0.1>;
- vector startSize = <0.25, 0.25, 0.0>;
- vector endSize = <0.25, 0.25, 0.0>;
- vector push = <0.0, 0.0, -2.0>;
- float rate = 1.0;
- float radius = 2.0;
- integer count = 100;
- float outerAngle = 3*PI;
- float innerAngle = 0.5;
- vector omega = <0.0, 0.0, 0.0>;
- float life = 0;
- key target = "";
- integer pattern = PSYS_SRC_PATTERN_EXPLODE;
- integer flags;
- stop_particle()
- {
- llParticleSystem([]);
- }
- start_particle()
- {
- flags = 0;
- if (glow) flags = flags | PSYS_PART_EMISSIVE_MASK;
- if (bounce) flags = flags | PSYS_PART_BOUNCE_MASK;
- if (interp_col) flags = flags | PSYS_PART_INTERP_COLOR_MASK;
- if (interp_size) flags = flags | PSYS_PART_INTERP_SCALE_MASK;
- if (wind) flags = flags | PSYS_PART_WIND_MASK;
- if (follow_src) flags = flags | PSYS_PART_FOLLOW_SRC_MASK;
- if (follow_vel) flags = flags | PSYS_PART_FOLLOW_VELOCITY_MASK;
- if (ribbon) flags = flags | PSYS_PART_RIBBON_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,rate,
- PSYS_SRC_ACCEL, push,
- PSYS_SRC_BURST_PART_COUNT,count,
- PSYS_SRC_BURST_RADIUS,radius,
- PSYS_SRC_BURST_SPEED_MIN,minSpeed,
- PSYS_SRC_BURST_SPEED_MAX,maxSpeed,
- PSYS_SRC_TARGET_KEY,target,
- PSYS_SRC_INNERANGLE,innerAngle,
- PSYS_SRC_OUTERANGLE,outerAngle,
- PSYS_SRC_OMEGA, omega,
- PSYS_SRC_MAX_AGE, life,
- PSYS_SRC_TEXTURE, texture,
- PSYS_PART_START_ALPHA, startAlpha,
- PSYS_PART_END_ALPHA, endAlpha
- ]);
- }
- default
- {
- state_entry()
- {
- start_particle();
- }
- touch_start(integer total_number)
- {
- llListen(menu_channel, "", "","");
- llDialog(llDetectedKey(0), "TOP_MENU", TOP_LIST, menu_channel);
- }
- listen(integer channel, string name, key id, string msg)
- {
- llOwnerSay(msg);
- if ( msg == "start" ) { start_particle(); llOwnerSay("Particles Started"); llDialog(id, "TOP_MENU", TOP_LIST, menu_channel); }
- if ( msg == "stop" ) { stop_particle(); llOwnerSay("Particles Stopped"); llDialog(id, "TOP_MENU", TOP_LIST, menu_channel); return; }
- if ( msg == "flags" ) { llDialog(id, "\nFLAGS", MASK_OPTIONS, menu_channel); }
- if ( msg == "pattern" ) { llDialog(id, "\nPATTERN", PATTERN_OPTIONS, menu_channel); }
- if ( msg == "system" ) { llDialog(id, "\nSYSTEM", SYSTEM_OPTIONS, menu_channel); }
- if ( msg == "textures") { llDialog(id, "\nCurrent Texture\n" + texture, TEXTURES, menu_channel); }
- if ( msg == "water1") { texture = "Water1"; } if ( msg == "water2" ) { texture = "Water2"; } if ( msg == "water3" ) { texture = "Water3"; } if ( msg == "water4" ) { texture = "Water4"; }
- // list SYSTEM_OPTIONS = [ "rate", "radius", "count", "outer_angle", "inner_angle", "omega", "life" ];
- if( msg == "rate" ) { llDialog(id, "Rate = " + (string)rate, [ "r+1", "r-1","r+0.1","r-0.1"], menu_channel); }
- 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; }
- if( msg == "radius" ) { llDialog(id, "Radius = " + (string)radius, [ "rad+1", "rad-1","rad+0.1","rad-0.1"], menu_channel); }
- 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; }
- if ( msg == "explode" ) { pattern = PSYS_SRC_PATTERN_EXPLODE; llOwnerSay("Pattern = explode"); llDialog(id, "\nPATTERN", PATTERN_OPTIONS, menu_channel); }
- if ( msg == "drop" ) { pattern = PSYS_SRC_PATTERN_DROP; llOwnerSay("Pattern = drop"); llDialog(id, "\nPATTERN", PATTERN_OPTIONS, menu_channel); }
- if ( msg == "cone" ) { pattern = PSYS_SRC_PATTERN_ANGLE_CONE; llOwnerSay("Pattern = cone"); llDialog(id, "\nPATTERN", PATTERN_OPTIONS, menu_channel);}
- if ( msg == "cone_empty" ) { pattern = PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY; llOwnerSay("Pattern = cone_empty"); llDialog(id, "\nPATTERN", PATTERN_OPTIONS, menu_channel);}
- if ( msg == "angle" ) { pattern = PSYS_SRC_PATTERN_ANGLE; llOwnerSay("Pattern = angle"); llDialog(id, "\nPATTERN", PATTERN_OPTIONS, menu_channel); }
- if ( msg == "glow" ) { glow = !glow; llOwnerSay("glow = " + (string)glow); }
- if ( msg == "wind" ) { wind = !wind; llOwnerSay("wind = " + (string)wind); }
- if ( msg == "bounce" ) { bounce = !bounce; llOwnerSay("bounce = " + (string)bounce); }
- if ( msg == "interp_col" ) { interp_col = !interp_col; llOwnerSay("interp_col = " + (string)interp_col); }
- if ( msg == "interp_size" ) { interp_size = !interp_size; llOwnerSay("interp_size = " + (string)interp_size); }
- if ( msg == "follow_src" ) { follow_src = !follow_src; llOwnerSay("follow_src = " + (string)follow_src); }
- if ( msg == "follow_vel" ) { follow_vel = !follow_vel; llOwnerSay("follow_vel = " + (string)follow_vel); }
- if ( msg == "target_pos" ) { target_pos = !target_pos; llOwnerSay("target_pos = " + (string)target_pos); }
- if ( msg == "ribbon" ) { ribbon = !ribbon; llOwnerSay("ribbon = " + (string)ribbon); }
- start_particle();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement